<?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.0.6
*/namespace
Adminer;$ia="5.0.6";error_reporting(6135);set_error_handler(function($yc,$_c){return!!preg_match('~^(Trying to access array offset on( value of type)? null|Undefined (array key|property))~',$_c);},E_WARNING);$Uc=!preg_match('~^(unsafe_raw)?$~',ini_get("filter.default"));if($Uc||ini_get("filter.default_flags")){foreach(array('_GET','_POST','_COOKIE','_SERVER')as$X){$Gi=filter_input_array(constant("INPUT$X"),FILTER_UNSAFE_RAW);if($Gi)$$X=$Gi;}}if(function_exists("mb_internal_encoding"))mb_internal_encoding("8bit");function
connection(){global$g;return$g;}function
adminer(){global$b;return$b;}function
driver(){global$m;return$m;}function
version(){global$ia;return$ia;}function
idf_unescape($w){if(!preg_match('~^[`\'"[]~',$w))return$w;$ne=substr($w,-1);return
str_replace($ne.$ne,$ne,substr($w,1,-1));}function
q($Q){global$g;return$g->quote($Q);}function
escape_string($X){return
substr(q($X),1,-1);}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($rg,$Uc=false){if(function_exists("get_magic_quotes_gpc")&&get_magic_quotes_gpc()){while(list($z,$X)=each($rg)){foreach($X
as$ee=>$W){unset($rg[$z][$ee]);if(is_array($W)){$rg[$z][stripslashes($ee)]=$W;$rg[]=&$rg[$z][stripslashes($ee)];}else$rg[$z][stripslashes($ee)]=($Uc?$W:stripslashes($W));}}}}function
bracket_escape($w,$Ea=false){static$qi=array(':'=>':1',']'=>':2','['=>':3','"'=>':4');return
strtr($w,($Ea?array_flip($qi):$qi));}function
min_version($Xi,$Ae="",$h=null){global$g;if(!$h)$h=$g;$jh=$h->server_info;if($Ae&&preg_match('~([\d.]+)-MariaDB~',$jh,$B)){$jh=$B[1];$Xi=$Ae;}return$Xi&&version_compare($jh,$Xi)>=0;}function
charset($g){return(min_version("5.5.3",0,$g)?"utf8mb4":"utf8");}function
ini_bool($Qd){$X=ini_get($Qd);return(preg_match('~^(on|true|yes)$~i',$X)||(int)$X);}function
sid(){static$J;if($J===null)$J=(SID&&!($_COOKIE&&ini_bool("session.use_cookies")));return$J;}function
set_password($Wi,$N,$V,$F){$_SESSION["pwds"][$Wi][$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,$o=0){global$g;return$g->result($H,$o);}function
get_vals($H,$d=0){global$g;$J=array();$I=$g->query($H);if(is_object($I)){while($K=$I->fetch_row())$J[]=$K[$d];}return$J;}function
get_key_vals($H,$h=null,$mh=true){global$g;if(!is_object($h))$h=$g;$J=array();$I=$h->query($H);if(is_object($I)){while($K=$I->fetch_row()){if($mh)$J[$K[0]]=$K[1];else$J[]=$K[0];}}return$J;}function
get_rows($H,$h=null,$n="<p class='error'>"){global$g;$rb=(is_object($h)?$h:$g);$J=array();$I=$rb->query($H);if(is_object($I)){while($K=$I->fetch_assoc())$J[]=$K;}elseif(!$I&&!is_object($h)&&$n&&(defined('Adminer\PAGE_HEADER')||$n=="-- "))echo$n.error()."\n";return$J;}function
unique_array($K,$y){foreach($y
as$x){if(preg_match("~PRIMARY|UNIQUE~",$x["type"])){$J=array();foreach($x["columns"]as$z){if(!isset($K[$z]))continue
2;$J[$z]=$K[$z];}return$J;}}}function
escape_key($z){if(preg_match('(^([\w(]+)('.str_replace("_",".*",preg_quote(idf_escape("_"))).')([ \w)]+)$)',$z,$B))return$B[1].idf_escape(idf_unescape($B[2])).$B[3];return
idf_escape($z);}function
where($Z,$p=array()){global$g;$J=array();foreach((array)$Z["where"]as$z=>$X){$z=bracket_escape($z,1);$d=escape_key($z);$Sc=$p[$z]["type"];$J[]=$d.(JUSH=="sql"&&$Sc=="json"?" = CAST(".q($X)." AS JSON)":(JUSH=="sql"&&is_numeric($X)&&preg_match('~\.~',$X)?" LIKE ".q($X):(JUSH=="mssql"&&strpos($Sc,"datetime")===false?" LIKE ".q(preg_replace('~[_%[]~','[\0]',$X)):" = ".unconvert_field($p[$z],q($X)))));if(JUSH=="sql"&&preg_match('~char|text~',$Sc)&&preg_match("~[^ -@]~",$X))$J[]="$d = ".q($X)." COLLATE ".charset($g)."_bin";}foreach((array)$Z["null"]as$z)$J[]=escape_key($z)." IS NULL";return
implode(" AND ",$J);}function
where_check($X,$p=array()){parse_str($X,$Va);remove_slashes(array(&$Va));return
where($Va,$p);}function
where_link($u,$d,$Y,$uf="="){return"&where%5B$u%5D%5Bcol%5D=".urlencode($d)."&where%5B$u%5D%5Bop%5D=".urlencode(($Y!==null?$uf:"IS NULL"))."&where%5B$u%5D%5Bval%5D=".urlencode($Y);}function
convert_fields($e,$p,$M=array()){$J="";foreach($e
as$z=>$X){if($M&&!in_array(idf_escape($z),$M))continue;$ya=convert_field($p[$z]);if($ya)$J.=", $ya AS ".idf_escape($z);}return$J;}function
cookie($C,$Y,$ve=2592000){global$ba;return
header("Set-Cookie: $C=".urlencode($Y).($ve?"; expires=".gmdate("D, d M Y H:i:s",time()+$ve)." GMT":"")."; path=".preg_replace('~\?.*~','',$_SERVER["REQUEST_URI"]).($ba?"; secure":"")."; HttpOnly; SameSite=lax",false);}function
get_settings($zb){parse_str($_COOKIE[$zb],$nh);return$nh;}function
get_setting($z,$zb="adminer_settings"){$nh=get_settings($zb);return$nh[$z];}function
save_settings($nh,$zb="adminer_settings"){return
cookie($zb,http_build_query($nh+get_settings($zb)));}function
restart_session(){if(!ini_bool("session.use_cookies"))session_start();}function
stop_session($bd=false){$Oi=ini_bool("session.use_cookies");if(!$Oi||$bd){session_write_close();if($Oi&&@ini_set("session.use_cookies",false)===false)session_start();}}function&get_session($z){return$_SESSION[$z][DRIVER][SERVER][$_GET["username"]];}function
set_session($z,$X){$_SESSION[$z][DRIVER][SERVER][$_GET["username"]]=$X;}function
auth_url($Wi,$N,$V,$k=null){global$bc;preg_match('~([^?]*)\??(.*)~',remove_from_uri(implode("|",array_keys($bc))."|username|".($k!==null?"db|":"").session_name()),$B);return"$B[1]?".(sid()?SID."&":"").($Wi!="server"||$N!=""?urlencode($Wi)."=".urlencode($N)."&":"")."username=".urlencode($V).($k!=""?"&db=".urlencode($k):"").($B[2]?"&$B[2]":"");}function
is_ajax(){return($_SERVER["HTTP_X_REQUESTED_WITH"]=="XMLHttpRequest");}function
redirect($xe,$Me=null){if($Me!==null){restart_session();$_SESSION["messages"][preg_replace('~^[^?]*~','',($xe!==null?$xe:$_SERVER["REQUEST_URI"]))][]=$Me;}if($xe!==null){if($xe=="")$xe=".";header("Location: $xe");exit;}}function
query_redirect($H,$xe,$Me,$_g=true,$Ec=true,$Nc=false,$di=""){global$g,$n,$b;if($Ec){$Ch=microtime(true);$Nc=!$g->query($H);$di=format_time($Ch);}$xh="";if($H)$xh=$b->messageQuery($H,$di,$Nc);if($Nc){$n=error().$xh.script("messagesPrint();");return
false;}if($_g)redirect($xe,$Me.$xh);return
true;}function
queries($H){global$g;static$vg=array();static$Ch;if(!$Ch)$Ch=microtime(true);if($H===null)return
array(implode("\n",$vg),format_time($Ch));$vg[]=(preg_match('~;$~',$H)?"DELIMITER ;;\n$H;\nDELIMITER ":$H).";";return$g->query($H);}function
apply_queries($H,$T,$Ac='Adminer\table'){foreach($T
as$R){if(!queries("$H ".$Ac($R)))return
false;}return
true;}function
queries_redirect($xe,$Me,$_g){list($vg,$di)=queries(null);return
query_redirect($vg,$xe,$Me,$_g,false,!$_g,$di);}function
format_time($Ch){return
lang(0,max(0,microtime(true)-$Ch));}function
relative_uri(){return
str_replace(":","%3a",preg_replace('~^[^?]*/([^?]*)~','\1',$_SERVER["REQUEST_URI"]));}function
remove_from_uri($Qf=""){return
substr(preg_replace("~(?<=[?&])($Qf".(SID?"":"|".session_name()).")=[^&]*&~",'',relative_uri()."&"),0,-1);}function
get_file($z,$Ob=false,$Sb=""){$Tc=$_FILES[$z];if(!$Tc)return
null;foreach($Tc
as$z=>$X)$Tc[$z]=(array)$X;$J='';foreach($Tc["error"]as$z=>$n){if($n)return$n;$C=$Tc["name"][$z];$li=$Tc["tmp_name"][$z];$vb=file_get_contents($Ob&&preg_match('~\.gz$~',$C)?"compress.zlib://$li":$li);if($Ob){$Ch=substr($vb,0,3);if(function_exists("iconv")&&preg_match("~^\xFE\xFF|^\xFF\xFE~",$Ch))$vb=iconv("utf-16","utf-8",$vb);elseif($Ch=="\xEF\xBB\xBF")$vb=substr($vb,3);}$J.=$vb;if($Sb)$J.=(preg_match("($Sb\\s*\$)",$vb)?"":$Sb)."\n\n";}return$J;}function
upload_error($n){$Ie=($n==UPLOAD_ERR_INI_SIZE?ini_get("upload_max_filesize"):0);return($n?lang(1).($Ie?" ".lang(2,$Ie):""):lang(3));}function
repeat_pattern($ag,$te){return
str_repeat("$ag{0,65535}",$te/65535)."$ag{0,".($te%65535)."}";}function
is_utf8($X){return(preg_match('~~u',$X)&&!preg_match('~[\0-\x8\xB\xC\xE-\x1F]~',$X));}function
shorten_utf8($Q,$te=80,$Ih=""){if(!preg_match("(^(".repeat_pattern("[\t\r\n -\x{10FFFF}]",$te).")($)?)u",$Q,$B))preg_match("(^(".repeat_pattern("[\t\r\n -~]",$te).")($)?)",$Q,$B);return
h($B[1]).$Ih.(isset($B[2])?"":"<i>…</i>");}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,$Oc=false){$J=table_status($R,$Oc);return($J?:array("Name"=>$R));}function
column_foreign_keys($R){global$b;$J=array();foreach($b->foreignKeys($R)as$r){foreach($r["source"]as$X)$J[$X][]=$r;}return$J;}function
fields_from_edit(){global$m;$J=array();foreach((array)$_POST["field_keys"]as$z=>$X){if($X!=""){$X=bracket_escape($X);$_POST["function"][$X]=$_POST["field_funs"][$z];$_POST["fields"][$X]=$_POST["field_vals"][$z];}}foreach((array)$_POST["fields"]as$z=>$X){$C=bracket_escape($z,1);$J[$C]=array("field"=>$C,"privileges"=>array("insert"=>1,"update"=>1,"where"=>1,"order"=>1),"null"=>1,"auto_increment"=>($z==$m->primary),);}return$J;}function
dump_headers($Ed,$Ue=false){global$b;$J=$b->dumpHeaders($Ed,$Ue);$Mf=$_POST["output"];if($Mf!="text")header("Content-Disposition: attachment; filename=".$b->dumpFilename($Ed).".$J".($Mf!="file"&&preg_match('~^[0-9a-z]+$~',$Mf)?".$Mf":""));session_write_close();ob_flush();flush();return$J;}function
dump_csv($K){foreach($K
as$z=>$X){if(preg_match('~["\n,;\t]|^0|\.\d*0$~',$X)||$X==="")$K[$z]='"'.str_replace('"','""',$X).'"';}echo
implode(($_POST["format"]=="csv"?",":($_POST["format"]=="tsv"?"\t":";")),$K)."\r\n";}function
apply_sql_function($t,$d){return($t?($t=="unixepoch"?"DATETIME($d, '$t')":($t=="count distinct"?"COUNT(DISTINCT ":strtoupper("$t("))."$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{$q=@tempnam("","");if(!$q)return
false;$J=dirname($q);unlink($q);}}return$J;}function
file_open_lock($q){if(is_link($q))return;$s=@fopen($q,"c+");if(!$s)return;chmod($q,0660);if(!flock($s,LOCK_EX)){fclose($s);return;}return$s;}function
file_write_unlock($s,$Ib){rewind($s);fwrite($s,$Ib);ftruncate($s,strlen($Ib));file_unlock($s);}function
file_unlock($s){flock($s,LOCK_UN);fclose($s);}function
password_file($i){$q=get_temp_dir()."/adminer.key";if(!$i&&!file_exists($q))return
false;$s=file_open_lock($q);if(!$s)return
false;$J=stream_get_contents($s);if(!$J){$J=rand_string();file_write_unlock($s,$J);}else
file_unlock($s);return$J;}function
rand_string(){return
md5(uniqid(mt_rand(),true));}function
select_value($X,$A,$o,$ci){global$b;if(is_array($X)){$J="";foreach($X
as$ee=>$W)$J.="<tr>".($X!=array_values($X)?"<th>".h($ee):"")."<td>".select_value($W,$A,$o,$ci);return"<table>$J</table>";}if(!$A)$A=$b->selectLink($X,$o);if($A===null){if(is_mail($X))$A="mailto:$X";if(is_url($X))$A=$X;}$J=$b->editVal($X,$o);if($J!==null){if(!is_utf8($J))$J="\0";elseif($ci!=""&&is_shortable($o))$J=shorten_utf8($J,max(0,+$ci));else$J=h($J);}return$b->selectVal($J,$A,$o,$X);}function
is_mail($oc){$za='[-a-z0-9!#$%&\'*+/=?^_`{|}~]';$ac='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';$ag="$za+(\\.$za+)*@($ac?\\.)+$ac";return
is_string($oc)&&preg_match("(^$ag(,\\s*$ag)*\$)i",$oc);}function
is_url($Q){$ac='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';return
preg_match("~^(https?)://($ac?\\.)+$ac(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i",$Q);}function
is_shortable($o){return
preg_match('~char|text|json|lob|geometry|point|linestring|polygon|string|bytea~',$o["type"]);}function
count_rows($R,$Z,$Yd,$pd){$H=" FROM ".table($R).($Z?" WHERE ".implode(" AND ",$Z):"");return($Yd&&(JUSH=="sql"||count($pd)==1)?"SELECT COUNT(DISTINCT ".implode(", ",$pd).")$H":"SELECT COUNT(*)".($Yd?" FROM (SELECT 1$H GROUP BY ".implode(", ",$pd).") x":$H));}function
slow_query($H){global$b,$mi,$m;$k=$b->database();$ei=$b->queryTimeout();$rh=$m->slowQuery($H,$ei);$h=null;if(!$rh&&support("kill")&&is_object($h=connect($b->credentials()))&&($k==""||$h->select_db($k))){$he=$h->result(connection_id());echo
script("var timeout = setTimeout(function () { ajax('".js_escape(ME)."script=kill', function () {}, 'kill=$he&token=$mi'); }, 1000 * $ei);");}ob_flush();flush();$J=@get_key_vals(($rh?:$H),$h,false);if($h){echo
script("clearTimeout(timeout);");ob_flush();flush();}return$J;}function
get_token(){$yg=rand(1,1e6);return($yg^$_SESSION["token"]).":$yg";}function
verify_token(){list($mi,$yg)=explode(":",$_POST["token"]);return($yg^$_SESSION["token"])==$mi;}function
lzw_decompress($Ja){$Wb=256;$Ka=8;$eb=array();$Jg=0;$Kg=0;for($u=0;$u<strlen($Ja);$u++){$Jg=($Jg<<8)+ord($Ja[$u]);$Kg+=8;if($Kg>=$Ka){$Kg-=$Ka;$eb[]=$Jg>>$Kg;$Jg&=(1<<$Kg)-1;$Wb++;if($Wb>>$Ka)$Ka++;}}$Vb=range("\0","\xFF");$J="";foreach($eb
as$u=>$db){$nc=$Vb[$db];if(!isset($nc))$nc=$gj.$gj[0];$J.=$nc;if($u)$Vb[]=$gj.$nc[0];$gj=$nc;}return$J;}function
script($uh,$pi="\n"){return"<script".nonce().">$uh</script>$pi";}function
script_src($Li){return"<script src='".h($Li)."'".nonce()."></script>\n";}function
nonce(){return' nonce="'.get_nonce().'"';}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($C,$Y,$Ya,$je="",$tf="",$cb="",$ke=""){$J="<input type='checkbox' name='$C' value='".h($Y)."'".($Ya?" checked":"").($ke?" aria-labelledby='$ke'":"").">".($tf?script("qsl('input').onclick = function () { $tf };",""):"");return($je!=""||$cb?"<label".($cb?" class='$cb'":"").">$J".h($je)."</label>":$J);}function
optionlist($yf,$bh=null,$Pi=false){$J="";foreach($yf
as$ee=>$W){$zf=array($ee=>$W);if(is_array($W)){$J.='<optgroup label="'.h($ee).'">';$zf=$W;}foreach($zf
as$z=>$X)$J.='<option'.($Pi||is_string($z)?' value="'.h($z).'"':'').($bh!==null&&($Pi||is_string($z)?(string)$z:$X)===$bh?' selected':'').'>'.h($X);if(is_array($W))$J.='</optgroup>';}return$J;}function
html_select($C,$yf,$Y="",$sf="",$ke=""){return"<select name='".h($C)."'".($ke?" aria-labelledby='$ke'":"").">".optionlist($yf,$Y)."</select>".($sf?script("qsl('select').onchange = function () { $sf };",""):"");}function
html_radios($C,$yf,$Y=""){$J="";foreach($yf
as$z=>$X)$J.="<label><input type='radio' name='".h($C)."' value='".h($z)."'".($z==$Y?" checked":"").">".h($X)."</label>";return$J;}function
confirm($Me="",$ch="qsl('input')"){return
script("$ch.onclick = function () { return confirm('".($Me?js_escape($Me):lang(6))."'); };","");}function
print_fieldset($v,$se,$aj=false){echo"<fieldset><legend>","<a href='#fieldset-$v'>$se</a>",script("qsl('a').onclick = partial(toggle, 'fieldset-$v');",""),"</legend>","<div id='fieldset-$v'".($aj?"":" class='hidden'").">\n";}function
bold($Ma,$cb=""){return($Ma?" class='active $cb'":($cb?" class='$cb'":""));}function
js_escape($Q){return
addcslashes($Q,"\r\n'\\/");}function
pagination($E,$Fb){return" ".($E==$Fb?$E+1:'<a href="'.h(remove_from_uri("page").($E?"&page=$E".($_GET["next"]?"&next=".urlencode($_GET["next"]):""):"")).'">'.($E+1)."</a>");}function
hidden_fields($rg,$Hd=array(),$kg=''){$J=false;foreach($rg
as$z=>$X){if(!in_array($z,$Hd)){if(is_array($X))hidden_fields($X,array(),$z);else{$J=true;echo'<input type="hidden" name="'.h($kg?$kg."[$z]":$z).'" value="'.h($X).'">';}}}return$J;}function
hidden_fields_get(){echo(sid()?'<input type="hidden" name="'.session_name().'" value="'.h(session_id()).'">':''),(SERVER!==null?'<input type="hidden" name="'.DRIVER.'" value="'.h(SERVER).'">':""),'<input type="hidden" name="username" value="'.h($_GET["username"]).'">';}function
enum_input($U,$_a,$o,$Y,$rc=null){global$b;preg_match_all("~'((?:[^']|'')*)'~",$o["length"],$De);$J=($rc!==null?"<label><input type='$U'$_a value='$rc'".((is_array($Y)?in_array($rc,$Y):$Y===$rc)?" checked":"")."><i>".lang(7)."</i></label>":"");foreach($De[1]as$u=>$X){$X=stripcslashes(str_replace("''","'",$X));$Ya=(is_array($Y)?in_array($X,$Y):$Y===$X);$J.=" <label><input type='$U'$_a value='".h($X)."'".($Ya?' checked':'').'>'.h($b->editVal($X,$o)).'</label>';}return$J;}function
input($o,$Y,$t,$Da=false){global$m,$b;$C=h(bracket_escape($o["field"]));echo"<td class='function'>";if(is_array($Y)&&!$t){$Y=json_encode($Y,128);$t="json";}$Ig=(JUSH=="mssql"&&$o["auto_increment"]);if($Ig&&!$_POST["save"])$t=null;$kd=(isset($_GET["select"])||$Ig?array("orig"=>lang(8)):array())+$b->editFunctions($o);$Xb=stripos($o["default"],"GENERATED ALWAYS AS ")===0?" disabled=''":"";$_a=" name='fields[$C]'$Xb".($Da?" autofocus":"");$xc=$m->enumLength($o);if($xc){$o["type"]="enum";$o["length"]=$xc;}echo$m->unconvertFunction($o)." ";if($o["type"]=="enum")echo
h($kd[""])."<td>".$b->editInput($_GET["edit"],$o,$_a,$Y);else{$wd=(in_array($t,$kd)||isset($kd[$t]));echo(count($kd)>1?"<select name='function[$C]'$Xb>".optionlist($kd,$t===null||$wd?$t:"")."</select>".on_help("getTarget(event).value.replace(/^SQL\$/, '')",1).script("qsl('select').onchange = functionChange;",""):h(reset($kd))).'<td>';$Sd=$b->editInput($_GET["edit"],$o,$_a,$Y);if($Sd!="")echo$Sd;elseif(preg_match('~bool~',$o["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($o["type"]=="set"){preg_match_all("~'((?:[^']|'')*)'~",$o["length"],$De);foreach($De[1]as$u=>$X){$X=stripcslashes(str_replace("''","'",$X));$Ya=in_array($X,explode(",",$Y),true);echo" <label><input type='checkbox' name='fields[$C][$u]' value='".h($X)."'".($Ya?' checked':'').">".h($b->editVal($X,$o)).'</label>';}}elseif(preg_match('~blob|bytea|raw|file~',$o["type"])&&ini_bool("file_uploads"))echo"<input type='file' name='fields-$C'>";elseif(($ai=preg_match('~text|lob|memo~i',$o["type"]))||preg_match("~\n~",$Y)){if($ai&&JUSH!="sqlite")$_a.=" cols='50' rows='12'";else{$L=min(12,substr_count($Y,"\n")+1);$_a.=" cols='30' rows='$L'".($L==1?" style='height: 1.2em;'":"");}echo"<textarea$_a>".h($Y).'</textarea>';}elseif($t=="json"||preg_match('~^jsonb?$~',$o["type"]))echo"<textarea$_a cols='50' rows='12' class='jush-js'>".h($Y).'</textarea>';else{$Ai=$m->types();$Ke=(!preg_match('~int~',$o["type"])&&preg_match('~^(\d+)(,(\d+))?$~',$o["length"],$B)?((preg_match("~binary~",$o["type"])?2:1)*$B[1]+($B[3]?1:0)+($B[2]&&!$o["unsigned"]?1:0)):($Ai[$o["type"]]?$Ai[$o["type"]]+($o["unsigned"]?0:1):0));if(JUSH=='sql'&&min_version(5.6)&&preg_match('~time~',$o["type"]))$Ke+=7;echo"<input".((!$wd||$t==="")&&preg_match('~(?<!o)int(?!er)~',$o["type"])&&!preg_match('~\[\]~',$o["full_type"])?" type='number'":"")." value='".h($Y)."'".($Ke?" data-maxlength='$Ke'":"").(preg_match('~char|binary~',$o["type"])&&$Ke>20?" size='40'":"")."$_a>";}echo$b->editHint($_GET["edit"],$o,$Y);$Vc=0;foreach($kd
as$z=>$X){if($z===""||!$X)break;$Vc++;}if($Vc)echo
script("mixin(qsl('td'), {onchange: partial(skipOriginal, $Vc), oninput: function () { this.onchange(); }});");}}function
process_input($o){global$b,$m;if(stripos($o["default"],"GENERATED ALWAYS AS ")===0)return
null;$w=bracket_escape($o["field"]);$t=$_POST["function"][$w];$Y=$_POST["fields"][$w];if($o["type"]=="enum"||$m->enumLength($o)){if($Y==-1)return
false;if($Y=="")return"NULL";}if($o["auto_increment"]&&$Y=="")return
null;if($t=="orig")return(preg_match('~^CURRENT_TIMESTAMP~i',$o["on_update"])?idf_escape($o["field"]):false);if($t=="NULL")return"NULL";if($o["type"]=="set")$Y=implode(",",(array)$Y);if($t=="json"){$t="";$Y=json_decode($Y,true);if(!is_array($Y))return
false;return$Y;}if(preg_match('~blob|bytea|raw|file~',$o["type"])&&ini_bool("file_uploads")){$Tc=get_file("fields-$w");if(!is_string($Tc))return
false;return$m->quoteBinary($Tc);}return$b->processInput($o,$Y,$t);}function
search_tables(){global$b,$g;$_GET["where"][0]["val"]=$_POST["query"];$eh="<ul>\n";foreach(table_status('',true)as$R=>$S){$C=$b->tableName($S);if(isset($S["Engine"])&&$C!=""&&(!$_POST["tables"]||in_array($R,$_POST["tables"]))){$I=$g->query("SELECT".limit("1 FROM ".table($R)," WHERE ".implode(" AND ",$b->selectSearchProcess(fields($R),array())),1));if(!$I||$I->fetch_row()){$ng="<a href='".h(ME."select=".urlencode($R)."&where[0][op]=".urlencode($_GET["where"][0]["op"])."&where[0][val]=".urlencode($_GET["where"][0]["val"]))."'>$C</a>";echo"$eh<li>".($I?$ng:"<p class='error'>$ng: ".error())."\n";$eh="";}}}echo($eh?"<p class='message'>".lang(9):"</ul>")."\n";}function
on_help($lb,$ph=0){return
script("mixin(qsl('select, input'), {onmouseover: function (event) { helpMouseover.call(this, event, $lb, $ph) }, onmouseout: helpMouseout});","");}function
edit_form($R,$p,$K,$Ji){global$b,$mi,$n;$Oh=$b->tableName(table_status1($R,true));page_header(($Ji?lang(10):lang(11)),$n,array("select"=>array($R,$Oh)),$Oh);$b->editRowPrint($R,$p,$K,$Ji);if($K===false){echo"<p class='error'>".lang(12)."\n";return;}echo"<form action='' method='post' enctype='multipart/form-data' id='form'>\n";if(!$p)echo"<p class='error'>".lang(13)."\n";else{echo"<table class='layout'>".script("qsl('table').onkeydown = editingKeydown;");$Da=!$_POST;foreach($p
as$C=>$o){echo"<tr><th>".$b->fieldName($o);$l=$_GET["set"][bracket_escape($C)];if($l===null){$l=$o["default"];if($o["type"]=="bit"&&preg_match("~^b'([01]*)'\$~",$l,$Fg))$l=$Fg[1];if(JUSH=="sql"&&preg_match('~binary~',$o["type"]))$l=bin2hex($l);}$Y=($K!==null?($K[$C]!=""&&JUSH=="sql"&&preg_match("~enum|set~",$o["type"])&&is_array($K[$C])?implode(",",$K[$C]):(is_bool($K[$C])?+$K[$C]:$K[$C])):(!$Ji&&$o["auto_increment"]?"":(isset($_GET["select"])?false:$l)));if(!$_POST["save"]&&is_string($Y))$Y=$b->editVal($Y,$o);$t=($_POST["save"]?(string)$_POST["function"][$C]:($Ji&&preg_match('~^CURRENT_TIMESTAMP~i',$o["on_update"])?"now":($Y===false?null:($Y!==null?'':'NULL'))));if(!$_POST&&!$Ji&&$Y==$o["default"]&&preg_match('~^[\w.]+\(~',$Y))$t="SQL";if(preg_match("~time~",$o["type"])&&preg_match('~^CURRENT_TIMESTAMP~i',$Y)){$Y="";$t="now";}if($o["type"]=="uuid"&&$Y=="uuid()"){$Y="";$t="uuid";}if($Da!==false)$Da=($o["auto_increment"]||$t=="now"||$t=="uuid"?null:true);input($o,$Y,$t,$Da);if($Da)$Da=false;echo"\n";}if(!support("table"))echo"<tr>"."<th><input name='field_keys[]'>".script("qsl('input').oninput = fieldChange;")."<td class='function'>".html_select("field_funs[]",$b->editFunctions(array("null"=>isset($_GET["select"]))))."<td><input name='field_vals[]'>"."\n";echo"</table>\n";}echo"<p>\n";if($p){echo"<input type='submit' value='".lang(14)."'>\n";if(!isset($_GET["select"]))echo"<input type='submit' name='insert' value='".($Ji?lang(15):lang(16))."' title='Ctrl+Shift+Enter'>\n",($Ji?script("qsl('input').onclick = function () { return !ajaxForm(this.form, '".lang(17)."…', this); };"):"");}echo($Ji?"<input type='submit' name='delete' value='".lang(18)."'>".confirm()."\n":"");if(isset($_GET["select"]))hidden_fields(array("check"=>(array)$_POST["check"],"clone"=>$_POST["clone"],"all"=>$_POST["all"]));echo'<input type="hidden" name="referer" value="',h(isset($_POST["referer"])?$_POST["referer"]:$_SERVER["HTTP_REFERER"]),'">
<input type="hidden" name="save" value="1">
<input type="hidden" name="token" value="',$mi,'">
</form>
';}if(isset($_GET["file"])){if(substr($ia,-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");}if($_GET["file"]=="favicon.ico"){header("Content-Type: image/x-icon");echo
lzw_decompress("\0\0\0` \0\0\n @\0C\"\0`EQ?tvM'Jdd\\b0\0\"fӈs5AXPaJ08#RTz`#.cXȀ?-\0Im?.M\0ȯ(̉/(%\0");}elseif($_GET["file"]=="default.css"){header("Content-Type: text/css; charset=utf-8");echo
lzw_decompress("b7'o9c`a1#ydC1tFQx\\2\nSn0'#I,\$Mc)c1iXi3ͦn)Tid:FcI[c	Févt2+C,aGF:;Nu)Ǜ!tlF|,`pwS-oQk nEO+,=4mMƋGSZh6. uOMC@M'(b5ҩHa2)qиpe6?t#Z-ox<s;H4\$䥍ۚa4\"(!C,DN;Jj@@!K6jX\r@ 2@b(ZApl8h.=*H4q3AЂ.K!fqr!1Ȏc*+ (\n2j(dYADtϑm*H9+00\n0tJ,EER Xu[&@0A7=;K;0D7Ajm*`3:v`ūkƱ.xXv(ecEmz\\0CG2Jt2(àcN<s^26Z̅?cXmϥ(d9?>/Y^I%5=H==\0T 6\"ح\rmH-Cz\nQj<<Z6v>~LHťp,YpP9{}g߻5Y	>g5@8o\n>-nҩԐR)J#j<7(ĸN%}*2\rAјF0XވCp:ZƬ:Gԏv=j[C\rz/:@B<(z.PYh7\"j/܉]\\6`Ҋ4=x^1\0C0q!4%lSP[K}v#@g\rh=RGaTTRNv:\"u\\e4	U\rtWZ CF,@1\r\r0p!OY4:!hV\n`	pnϚ\0Y+20ZanYq5p\"a|pn#U\08HbIp(sYtHI&zN0ؖ@tAf)ƙZFՂlKr/C`CB1*&thWI0C\\*)mJ[âdi3K\0)dϘJ261\n-o٫0ߤXb\rqpԆOY0X֟C`SaZ[t#x@2\rZ̲ b-]C\\l \"5,RjtKP`,s\r1xО@K\"d'F.6,T	[M֦XBx2jиɃC(Mmd\"Wt8sDYZ \"VS暙D2+%?VD#9GrSbe,\rSk	(]a\r1P䀛iɓu\$	sbA>TTne7nR<xf'C5^)\n`-\"gQy\rת`BN\nAd#@)\$R}@yte&r@+[T\nX셜vAGU.]j`r*xXQp-BCyr<.\0#:K)lNHxWP8<s6ȮʅwʒypcEJwQA+4/02dmÐf \$ţ4vvy`I\$d5U\0Pj(%K47La^zM\0xmхRTy!wmj[F{camV <s,9T]guH/V+yjMݨMG;%mW\rђ80ϴ6KW{k]Z]ÈO*(`#tA6{%OaqHErUC(b\ret%IX\\0XYQ	(T-2HrEqdwAKYW ܹ<1Gpz\$h6X*f\"<:;V6;@@wrKѽ@o<\0}vM=<GDwᷴYpTs?~==Fn?x=w_(7R'Y| \\yzn}=%p0j?B!\nTolkGHu`4J/G]@	~=N&H%jK|\0pj8NpxׯK5+*Lb\$kI\rv휎Pz~Q0o=\riYկД\nmްp`p:&&۰Hp	-P\npU\n`I6&di<)xhs4pJq4@7\0Z\0HJg˥F5N*!r¥@a®]`EHcG@&fFZːHv	4/\0&ąqH.H?b-a7@Ƙ1iS曑qQKbE\0RŃ8Q 4ZQ.8\n\r!(?>sK#gQ\$r0/P8\"rW#Ds1%U&Ì'2@y%Pkc'Re&2Z6\0)Rꒋ\"%&Q:OR\"ҍ%\rc,2'a)f&%Q,R -c 	.hI..2-\r*\"*qlXI%!.R+1o)!-S0)\r6`R2Y)Y,3552) SDIDB/4f~D0R#118\"4282?SR,Ӟ5RI:(ө;s 1b012ss9`:<21::s;@3;S<bm&3?3892s9ҳ(>3>eb\033AQ%>qCt;.c?;ӡ<B\0踓Bq>T];<T/4w3s8ѡK;GR~t\$y &4T8{#nsAID'DgJTF5r &S.&t62g@sM05O4ObOQHP7UQKPP\0ژ5#N3U/Qu+O+&cPeRU7SUGT51t\"-4'+r+9E3Uk(&2SW3;.K#/(ѵA@؞Tk=ѴX@LE8(\0 &SMu'uW\\RC&5y]U*W]00`;ZKK 9R[SCN5SV	QR,s_Ĺ6C6@6';hIb1,61aV/^cV=N\0U(6R~Il\\3e00\raBDd:\"4,");}elseif($_GET["file"]=="dark.css"){header("Content-Type: text/css; charset=utf-8");echo
lzw_decompress("b7'o9cbFr7MHP`2\r\"'\r\rF#s1p;Ɠe2IY.GFI:4S3㔚Yu(Ìc(`h#%0[LhC!Eb5Úyfbw	z#1P6Xt4alt4gEB#ja Kq8ڝh]a2ƼP yi23)Uol\0}vٛr7ϸ N2)3M#)PKjx8C(\\5S\n?v޷邊8\\ [8x#G!a^>qh]#L\\6#2<&7G1Hr`*7*#@-6D:;S:*l<!ʹ1\r.-5+?T\0@1?n\n\$	60,ڎAlK=P0ʉ1\neQ%\$2	eGRK0RV{.Ĩ>s0,b0͹3\noertej18Ģ+ /[Aâ7584A@d74*0,8c+ibˌY#.7GhV`7!cTdy\n?F3gƃ	eu։h:+<6Gf\\4X>*`0LϰMzZB#{*x27eo}xޛ:\rC:&`fMpձCLT1H`G<_pdAjr[@2\r#hVD>u%3b:hkA1\\ɀGC0Zsa;SL0L'Yk]i\r)v m*'7Ʋ[>@Hpzf)`l`׫hwf|7!i⥀Ƞtw\0p'sҿb`Mgx\")=I\$CwǩPrl!5 phc@2 ^48(\$dlAQ,	EA:CPE\"!Fh3\$hCa\r2ȹ'PmPI>bEƸ΁ln@Ʃ~kD?9Qq\r8LC,L\0");}elseif($_GET["file"]=="functions.js"){header("Content-Type: text/javascript; charset=utf-8");echo
lzw_decompress("f:gCI\n83)781x:\nOg#)r7\n\"`|2gSiH)NS\r\"0@)`(\$s6O!V/=' T4=iS6IOG#XVCsZ1.hp8,[H~Cz2lc3sIb4\nF8TIU*fzr0EyfY.:I(c΋!_l^^(N{S)rqYl٦33\n+GyixV3wuh^ra۔c\r(.Ch<\r)ѣ`743'm5\nP:2Pq C}ī38B0hRr(0b\\0Hr44B!p\$rZZ2܉.Ƀ(\\5|\nC(\"P.NRTΓ>HN8HP\\7Jp~2%OC1.C8·H*jS(i!LrD# ȗ`Bγu\\iB!x\\cm-KX38A\rXcH7#R*/-̋p;B \n3!z^pΎmRtmI-\r\0H@k,4{.JȬoVӷb?[Q#>=ۖ~#\$%wB>9d0zWwJD29y*z,NjIh\\9N49Ax^;^m\nr\"3z7N\$w62Hv9g2kG\n-Ůp1C{\n762ۭ;Y4q? !pdoW*rR;Àf,00M0\" \"ħoF2:SH /;٩ri9=^z͵W*Zdx՛֡ITqA1zY!u~.P(p43#hg-	'Fp0C+P, eN~y@fZKO3v\$`C	N`!zpdh\$6EJcBDc8LP 66OHd	.Y#tH62e@~]C[&=G\\P(2(յ̐q2xnÁJ|2)((eRGQTy\n!pΪ\0Q]&ޜS^N`_(\0R	'\r*qPx9,-);]/wC.ey\0,	S7875Hlj( \0մqI/=S àD<\r!2+A Je !\rmNiD^ڈl7zgK6-ӵe!\rEJ\ni*\$@RU0,\$U6 ?6:un(kp!d`>5\n<\rp9|ɹ^fNg(rTZUSjQ8nyd\r4:Ow>[͞44G\"7%\\PhnBi.0۬*js	Ho^}J2*	JWGjxS8F͊e6s*\r<0wi-00o`^k*A,ɸ䍺inj2索A\"[;nB^0-\n:<Ԉe2h-2n/A\r6[o-cR@U3\n\nT=Rj7s\"Y+\"u<fH`azE^7syo:!Vkmifۻ/ڦ8;<eN2ͱSW?e`C*B͔ZB]:K_7ĊqQ)/:diZ^3tꃥt*\$fz50tUJgS\rcX\rw7ZN^`oxPIx?Tke Jim)x;XC=V=<U!0n;~AZ7+Z=n{HPURY4Hǋ6'g2K~|hTA1V>/^l.SI.9g~O%ئ̾)A|\n;-n[t,Y<>j\nNePO< q(G!~`_\r~`.>'HO2yKd:(,<3:+0nUYZ^)ww!1!mGַgd=X[ޢ<ߩW7`oҭG~`i`*@v\0)ꐜ\$R#Ud)KLM*@@O\0H\\jF\r]gKi\$D*g\0\n	s \$K0&	`{6W`x`8DG*eHV8\nmTO#P@.\r8Y/&:D	Q&%E.]Я.\"%&n\ny\0-RSOB0	vD@݂:;\nDT< Q.\nc2Ry@m@	W\nL\r\0}V#-jEZt\\mFvFJpB(1 LX	%t\nMDZrKg´C[ʴ	 \0ЯR*-n#j#4IW\r\",*fx/^5&L2pL7^` V`bSvi(ev\n|RNj/%M%+ƫ߯'R'''W(r()2Қ%-%6ˀJ@,ֿNQ\n0ꆐg	\$*L.nQ%m\"n*h\0wBO\0\\FJWg f\$C5dK55aC4H(.GBF8 E.k3m*)-*[g,%	7.!\n+ O<ȼC+ϫ%O=Rf(nYϲ%s163;ObE@NSl#|4\0UG\"@_ [7S@\$DGD5=K>r\r Zֱ@HDsn\\e)b'BPGkxZ#TK:w:a2+aeKKR)\"(4qGTxi	HH@&@%bZܪ)3P3f `\rI6G%/4v\\~4ݤ0p,E)PH8k\0i\$3I4PV'F^ 'DR+Q`8\nD[V5,#qW@W0O2 t\rC6sY_6 ZkZ@z3ryI<5.Wҷ@5Ģ#ꎄ5N ~ȥu\r)3S]*g7ҕ_ˉ_ĸV\nY)a1PFI\r;u@/!![e (CUOaSKPt3=5O[f:Q,_]o_<J*\rg:_ \r\"ZC8XV}V23s8ePsFSN~S5U5zae	knfOLJV5jZlE&]1\rĢم5\rG uo8<U]32%nַpr5\n\$\"O\rqr)f7/YpI#`Kk;\"!thusYj[R\n{N5t#NΜo6X)c6e+.!ߗ\n	bʒtҮ\nj(\024erEJd@+x\"\\@ %v{``\n 	oRi-IB-Nm\\q@,`Kz#\r?՘6<jf!N7:/Tł\0K\\0*_8Lm^rVw\"кBQ:5Knv\0xt;`[	B9!nv<ۢSҏ{:Ppr	~1i*B.tY>\rS*nJ涨7{=|R]ռ4iU22Y3c>a,X39\$<AQ&2wӭ31/ijsO& M@\\گ8&Imx\0	jkۛE^	&lQ\\\"c	\rBsɉ	BN`7*Co<	 \nνhC9#˙ UeWXz0Y7}c8?hm\$.#\n`\nyD@Ry@|ǍP\0xK w5ELe@Ou|R2%aAcZ:<dkZy{9Ȑ@ޕ\"B<R`	\nQW(<ʎ革qj}`N\$[@ibfV%(Wj:2(zśN`< [Bښ:kʚ]piuC,9ej&Slh~Ns;;9u@.<1|P!zC		{`Q!54edGhrP}{FZrV:ĿZ|PWZ:d~!}XV)p4.\$\0CV󁺩{@\n`	<f;dc'\r,\0t~xNy ˽kECFK\"Z@\\CeD.GfI8ͤCĥYq9TCU[z^*JKVD؊&b̷KK+Ĳ,C,N!\r3YP9\$Zn\$S5\raKEn71Z3eJ؜x5Q.\n@ǣpPѡֽn\rr|*r% R蔊)#=W\0Bz*WMC_`PT5ۦWU(\0\\W&`aj)VWʧbfOrUǼ~#cUr5`GdPfWYj`ǌ\nG>Khǿ[Mfg̗|\"@s\r ӶiUm~fK.xtXP׬-!û~+Rw*©ܞK\\-F/bNsRui8r\$\"8jRn5gf@FSMSc5C*yCcU@oesIH9QoCQ=c{c8Sv!;gL5<	#z#qLV\r2\$J/{zminG?~ĕVu0wʹ=pIHĀX=t -MJTP#U`/3\\?Ly*p8:0{k2&P\0p8Y\\'%.\r,ƁJ/_,4~,!Rn%x@0Fdt\04\nK\nG\$Y	 \0@,)%:\r]L2\0PV C\\Ѧ,B\r0W\0Rr<UHQAl'\0 T)(c\\I;/ikjV^p-PP)Hx	Np&\0d8':#Q\$Q=\0Wnk,aSqbj\\<g9&e1eb:N|#φ nhwJ<8p.9yA41auf4u\nL%/:\r5%HjA^s\n|xX &f얐@hESЕ^@:8@\rn^H\"&\rCbq!:&ACJj&	&\rN<	p4Tiw-2)ȫ5OB3#\$ eVUBvdxS7e!DFO`f.Q0D#\\%J|\"N\0l`EW\ntUR(LgCcRyT챞:jWE.Y\"*25X\\)d\"lo'zJDJYX\"#	G>)Y&2,'ڄM6hZN2ȷ@).#Bn;GaR+O!|Ê\rܓ:v[qD¨WrcG\\\0'WYؤ{ׄ~2n\\\$<XQ2DwDDxCfH,~厏T\n(+A\".B`ǘL[E	\"Y\rC֐`,zXȔ?oEK\"}&@`i<Uڹ\$OS1Yj^8\n8X_	 z'ȥQs+cXL-ß\rjD5}QCL&.=P0>H8HGK20BP7Q%iGh^&55Q\"9ъ)PBS\n3&ʐ\rJ!HJ4\n.{W\"#Z\0R\r9+2DE+ie2Yiy&%pK(srp%`/65b2T<a#]-Ի.!KmaJ[KT\0lPY'4&膗~1t42j'\0V(\n*+Wci4cʭӞ<X/~ɢL&2b23RҐFTR%b<UXV \"Z p\"[@mA1ck˔ p-|lf4ю\07]OI@3r\\Dd9*\r3>sV}U,y0g\0\"&\0PBHCrhi_ `-pЅ6J/1j.kYÎ9(} rP\\gu@\0w-0'<Ώ\r-\r˖9r+Iޙ+&-=|yeж(	\rHz>N{0V-!t;ກ|\r@R\n\0Y\"\0}s\r\rAV }dH'8 0918\n؍@	P&:\nF\0d\053r\rDC138	kN='70QP%S\\:BpzoD6BHR(4͐A1Ivq]joD\r#)#%cɱ%%_'BO )xca=/6Hj>,ro)Gu)#&#Is	I~_OJ~՞Yb%*?\$yP0(	%㠋c<0	kPtB3\"EX2qy-:@ʀ.!qDW0* (Z+/d_g=(`fPib1xb>pddTE<[e)y(}Ev|]OCQrH\0AWJ`V3@BI\rmIuISrҐx	 rIHJSUB\$@ت\"<pe|1́DD*DZeT5%GO\00I(4Dmפ	V,{+PAU]UesI+@\$CMM]->a@ZМ53*v֪yUCebjӈ\rHN6iZ>V)7u@ZH־D|5БJMA)SЕ,iflPS:EM삩52p:{ii_jp6.>H(n\$1iIK֪3V\r]^ĳꮧ\n)0I`B@bj6>hFg/ y2A3YG z4k=RZAYΪaW*	(5!O2ss'xgx\0\"\n@Ek\0Rֳ%Ց'B*fBnfSfצ5+ʶ#Bݯ%RX¶g@R4`\$ie;	%ʸ(|ȇ\0]:gԵ>m~\"+)?]C0\$S<Ѕ+\0֭3r;HiR>hvg%YRhT%Nlcd+aE?<}Tfŉ욢\n\nJUG	svkPu!s'\$;0E@&Lo\$ mUM&\"fw匄\0\"1M;Y`WB\0Tf)XtTx\0000V,!s0G\"eQڏT4\$[E/eO<-H-0,d?R,r@gG<`sqeۢmHL.]HB\"\0XB7bs\nL7ZZ\$\rפ5wҞg/]h;b7M]4	ҫdFD1zcaoՊ\0r;P 8U!5c#]R@ƅ{'i@:ʴɧnkX©ֱ8\ns|A\rQIbM'PU28#;KO_}#wi=#fc֞ݞz/&gwmX	`d[i`mXb},|+ts+iiԇt\n>8()6f2#d˴IH(\0.#v/9j!2КE/:H/Aybj\rzV,pwE}^``?X-\nz*UD~?\\HcUWXz\\0!rJAo`Ba!C!W(լXP.È`@ovf in@UU<pGNU𩆙c87O-ABXrvų,H؍58ո?cbCʸ5q&>!4 ͅ(q	I-Jm\0>5IDmBmD\0`2yND4NL`0x_~1\07khRO`j_ŭ m{p0!9'K-\$\nj~hQN\0q{x\"2/qiTF/*V@*g- bc0	H0\0]@HU:U,VGd?uL}L9u:\"\$Tleɐ;V\nL!+ǆT1j,}R\r-[26Ui\0d/Ҏ@r.PF	g<S&i\r\$R72>fs#37UNȵ\"ϱH+9[8	B 	A!3_Z53%rW9y\n3K|o5gh;d\r	D3RgL\\v	IGB_8`<a?sq䘬b2N(u`LӦ!U>\re~_!St1'=\rCQr\rC*᠗f3`{ G|U\$nJ3H;R5ؖ}Qw9B=k0FǺ\$1sb-L3C\0w!ʹP&[#0طPS\"%r{ZA]DE%)T{@sueRԈ53#><\"A:t\"zKH78}k3'N^Vh\rPj;֯uf.\$yW|U\$:qĪMSŞ8m2İP.'c,R\0KXЎ]q|ZP,\r\rCŘ}u̟5?z	Nk͉lIpw3KMj9[{È1isyNÝzqveGÖq\"r媩W\rμN7C+@FJ.2ElA8{Q;n]&H\\>Nd\0ctʄЎ?t%%v}@ƴZL| yX/鳍nքSRmxW/Hrloԩ[# Fk*~滓tW;X\0~ri颃\$V7;4;F\$B`;6\\nTwj:pt\$	7iֿ7+Y!5.#ۇUۻGv۞(W*_Sjc]`enySmܹ#i52s~G;s?FV̈́ۋ\0N,H@T'Li@/Y\r\0xUxd>漂@3\0yH^o\"uā&͇x?Ti\$/nT5ŉ	ΰ<d1ȋ)y|92T98a/SX)QH}.gK5Z=pߎ0ôkJ\nLfR	EFPd2 +ȥq9d ܎yZ!<	j\$IW\") \n.4N3	7|暇td\ne{ӡzThanx,%/39rw=\"]t<1|\\nW~XAhd( ޚvLoc8l9W7}w8Chw\"PZ]uH Nk,.&@\$w/<On|<HRKt6H2OD!Ds¾0A4Fӣu(x]q3M;^Rt )\r09ޟ2g3r=L\"	¾pe0H-=ㄊb6a,h,[k{[E3-I,ҹךP	c:u\r]MؤD (^eƿ,iG^<6HjBWK<ڸ%⫎w؂l.PTFK+f&v0]@Qx/bvc'\nA9xbXԧ]yM}'\\)/Hgm	fϣUz6]Sŗ ߬&<nztoNz+f\r>Y{n~\$Ԇ̳0yg%) =&{@twirK濺zٴ)y42Y>V3^m|IxT֣zwkʉ,<k\$+1< _d}g9F]k)|e}iΨgB\0ڃ?۳)HBHDEeVmPyP((1}W05;\\\$+@<v_\"2@bM۶:XV]꾼(g\"s\$B3\\xDp@D'X*N\$2/VeMyr\0WVLeLdӸ~[Kp_@^c%)wߩsHl\nw?VOHj&l_YŮׅ9b'Q?2[}{M\n2\\xmlPѦ3.fD(+%D\rr)@h^IfMlux\0	ڿe>55S-;_@X%,ɿf|@+O|J4P|	-Śuh8`~5lQ;o@GDA_\0ӄF_ZٱD+: Mu}L\"J(L_dao	?|sD\\1A^\\\\Ga-\\nˣ)3e܄'Qzfv}qP7\0'e\r:Upyx;_YTYl@ղ+Mz6d)`5{0W\0B	 *UZ@}l՘-8pXR`8nG( \$%MT\\ڪFEdc3	\n<&-9Jow\0)?Ƥ0x:j|ivAT;IQAX&C裡M@JlL(LP3 0\0H+\0	<; N(;6HF e p6/sJ`*ڐ	L32<9\"	^lFF(B @P܇;Fv5l\0ݠ00tk>\0OU<Xq07BF8K#44 %wPNAQ1DO`AHBpp`2^c	P,=bFC\r2`8@Ud1IAT3\\\0p1)5)F@D\r%VAd\r^ Âh	#A`\rA\0>b	\\pAK<w\0\rB%Wf}mHjadt\"0P|?Ԇ6#?O\n\rR\$od}	S䟩\no[\0	?dr\$o+`X-Y.VIG>\0VPM\0WGz]\0TVd܀_a@-<\r\0Y+H-ftu'b4OP*fRy*98:GD3 345.FV/0RЙHaCF`g+־\0<h\0\$#m/㐞xCASXҋpbc24|gD7IJ8@|6-p*B=%ԯr	^CJ`\0sEpih3`HpU`e&1%\0VV'X(W`\riFkWnqDQ#tKt\$Q\n\0BX<Cp\0K(\0C1BFIq)q C~q\rC\rؘK\"jZZBv#< C\ru3	+D钲Ԍ;-");}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؝&7\0RN!01WyCP!i|gn.\r09Aݸ۶^8vl\"b|yHY290߅.:y6:ؿn\0Q7bk<\0湸-B{;W&/nw2A׵A0yu)kLƹtk\0;d=%m.ŏc5f*@4 cƸ܆|\"맳h\\fPNqsf~PpHp\n~>T_QOQ\$VSpn1ʚ}=LJeucaA|;ȓN-Z@Rͳ 	.2`RE^iP1&ވ(\$CY5؃axh@=Ʋ+>`ע\r!br2p(=!esX4GHhc MS.|YjHzBSV0j\nf\rDo%\\1MI`(:!-3=0SgWe5z(hdrӫKi@Y.\$@sѱEI&DfSR}rڽ?x\"@ngPI\\U<5X\"E0t8Y=`=>Q4Bk+p`(8/NqSKriO*[JRJY&u7#>Xû?APCDD\$Y<X[dd:a\$ΠW/ɂ!+eYIw=9i;q\r\n1x0]Q<zI9~W9RDKI6LCz\"0NWWzH4xgתx&FaӃ\\x=^ԓKHxٓ0EÝ҂ɚXk,R~	̛NySz6\0D	؏hs|.=Ix}/uN'[R`N95\0CXْ6w1PuL\0VʲO9[O>PKtÈu\r|̮RpOUDrf9LcSvnQo@o(ްàpa*^O>Oɹ<e\"ٓP>H^	psTO\r0d{Z\$	2,7C!u}B^?DڃFݱHΙ`'@J3|OܹBMbf1n@1(ղ!oowf)IL\\[8[1)!)u~c-6-y*	>\"m61ӕ.~*x諍qǚG |rlO*%݅AbRAxgDfV\\R5lޤ`5`w|SgOB;Ϯ^LÖW?5 ac}sݏIArݺO0;wxP(bmL'~wh\0c¨pE߲:C{g&ܾ/Ƒ>[ۜ)	a}n͡wN˼x]V^ye&@A	P\" E?P>@|!8 ЊH	\\`@E	Â4\0Da!nr쯜\\8o`Hf&̒<r(jNeN)6EO4.n06\r \$\$ N<|αNjOY\0Rn`omkH*-Ϙw	OzNZ*ʛnO\n#n⏓p[P_bjPPГ\0}\n/ӐП	o}S'`b\nPdp ?Po0sq\n:bLUu\r.L`SP1mq~]%&ʚQ \rDpqpV|f8\$p&ׂF&mOwG	1/elրD\0`~`K\\b&QQ`ʾAVEWn: ؓBƌ\r*l\0NDr뭦[&GhrH4A'bP>VƱM~R%2rm\$\02cMhʇvc}cjgs%lDȺ2D+A9#\$\0\$RHl@Q!%\$RFVNy+F\n	 %fz*ֿMɾR%@ڝ6\"TN kփ~@F@LQBv6OD^hhm|6nL7`zr֍Z@ր@܇3h\$@ѫt7zI P\rkf D\"b`E@\$\0RZ1&\"~0`\nbG)	c>[>ήe\"6N4@dn9ɴD4&2\"/|7u:ӱ;T3 ԓi<TO`ZB؃90S>Qhr\0A28\0W!ttwHOA\0eIFJT4xsAAGJ2i%:=#^ g7cr7s%MsD vsZ5\rb\$@P\r\$=%4nX\\Xd,lpOx9bm\"&g4O\\(ൔ5&rs M8.IY5U5IP3db/M\03y^u^\"UbIgT?U4Nh`5t\r2}5-2W(f7@e/\rJKd7- Sli3qUz\0)\$coF?@]LJbDҿ0s?[gʜ%\rjUn^R5,֪tFE\"xzm\n`-W#S(l	p%CU辚F&T|jbZ8	/4L*nɦyB:(8^98U K{`Z\nF\0Cl\r'(`meR6MBC6vn%#nvDjGo,^:``sl\r_X5CoV-8RZ@y13q GSBtvѢt#bB]#pfZCĲOZN]slԂEL,+Q@Yw~9I\"8!մV5&r\\7W&ܼ[\r\ri\r~L|dܷ,|i@,\0\"g\$B~!)5v0V b|M\$Df\r8;}fficԄV0,Fx\rR`a&nȧQB.# Y>wgE[ƗX~ROY]8]rK}-?8vL@~A*fJMtג-v[#xL'L>l8Pg\n\rQѱ\rM\":xw\$b-=kRXoQ乇9;ˈ過sՃ͋)~geBBt,,Ky-,mӀ+07yC˃IzƍY^GGWuv0#kXRJ\$JP+6x18Yg{?\0X\r	XFWהV/̓dIg9߆іy1-GX@ORy!GuY5ZF\r㕵-\$Oeu-ZFZdi9+쵘`Mz\rҫIyAVp:OJ:V:#::c{klZsWP0#9g@Mczw[9U\\k69Ӆ y,f6n-Zufًc,[o[gd :w#!W\\@n`߱\rɡ\$۟\$%ߡ۷z#\$imYcɂkI_yLϹ\$`V[F2C8\$ؼG[¼=Uυ[qKY݋Q?8aXm*G\\?U\0ϢKĤ|CR͓-|ɜaeRYƺ饘ܒPJE=u\${8X{ŏٓٗՙ\rͰ٬&Yҹ(ټM2)V u7\0S Z_o]\\|٩Ec7S΄[<<;-i }l!,}%-۬=Ӭ=Y8PV|zE.\rbLfƸh*;	ַ;؇Q{9\n_b\$5lUzXnz\0xbkM	2 Z\rc|ג/}%`NA\0*=`F^Q3WX<tR>r`uģ>izNاÝi\$\0rs^C>U5^a)	J+>uB@?J-HOJ'-TʀToUhF{ԏJ[NVoJ&SB\"I^5I2T龽]\0\rkL%}t۷~I0H|PkL5_T<w=<x\"esaK\"JH+Ua'Y~7)W<6=_Nh?6ܘy,aw\rİ#-V@k?ib*%޺p?yЀΆp-p|nCaf8A8+#\rR@npm~ۈ{`H?v*%Ǽv%G``Z.,6zU8|yV/p^פm]zcӞ\$IB0|@pR\nj9 G7읤#p߭?'=6Hlψ.YOY_VGO]I=x\$=|Ϫ{\n<;{:f^L'SA1%8*^p75W\n\0S⟕\02\nX(u[rpB0ڭx:n	ZI3C{[&C(@}rw2闌nt{CɆY!\0He>P\"9t5o!\$@\\7SS\rC P㄄@InhG	IS`x70b+v5^gr%bpU%)<+S/Z@ 4!j8\0vN-6a[>X,e\ned/PX`}kORN+1O\$πF6B-:wڨNTD>xY)n1&7}&xZ\nޖW:U@a⺃@.RhbcT\"x\n E|߈\r-\0\"QAIh\0	 FP\0MHFSB؎@\0*9s\00'	@EtOCx@\"G81`ϾP(G=1ˏ\0\"f>Qꎸ@`'>;l82>zI IG\nRH	c\"\0;1ێn)8B`(V@Q8c\"2E4r\09\rԑ \0'GzH5E!#\rAJЉJ(FC&d I\"IV솣GSAXZ~`'UA@+A\npi%ѿGZ`\$>~?E\0} <Q'Ewئ#\rɂ7rQ }'iMIO0dm% Hʰ\"-h#XFMt\$!Rt,(H88!J5Ixr\nThړ~Pe@&eg\"[hؖ4|2zDlw#9	v{lb/~\0&I8%,IKA\0/GYK*>O/2teھفP93=\$Xd-&|#154LUG.i2`M.B\00036ISJ-~쩦jF\\3	o4u	(@a3A\0c`P( 0\$\\}/d\0-3%b0\ncz`))%*6\"ٖE4FqJd(Ӏ1iLm2A.)&q@\$`L2Lrse .vss\riKQ󤙬 0()|MbtU9!ED	(	`8*pa<80s\r N8O0Ξd0OVx@'<OlJ)	~}\0U=O'Ňd~\0OfXH	LҠ(]'@EPLWE'=\0'\nN\$iIZy	>iOH6f'߁x.\"}@-wa2vӅAL><0/PB͢T\n<sSQ~|ӂPfiOφlq9T\rѕgÄFӧ%O(1h⺶nmv;|gSaFRȤNr9z%&X\0007\"2t-\rh%fŦֽ3!\"(7I\$s/ -7*J\rΕCLxw֗铴(ҪB,+h\nf\rF7Rf*:\"Δ4tPiX*\0P.(#+HoJAGq.57+N	:-m`&HJOUvi\0\nGN:gRn2i)}#	F駩>d`qHƕe5J);HQ\nHϓGRWԞ/Jj)K*URib8za.RG!4ͣ@9c: E.F|T*s<Z]_Oi\r@2qTlVUkCQ\rOe\"\n.TEUZԠ@i^ܪLaMUBV'U+Q VWmGԺu0*PT+!u\\kVy@Ƥj+H䁐\"EP,`<HՔpğ%	l\nK \0\$T!8@@2h4Lŝ+&,|\"TQ霋b#w)umŵ[ޒ)E}[Exd)p	n-AK1}W\\IUnF^\n` \$m)oZ	PDPVD r%R)bұl^w)JB-KD.18\0; le,L(\"mN\nZKgHe\0\0t7]Kk\$yNX\06(Yf\\\rK1y,`0qo\0h\$\n_dRzECh<Yp!\0ro;'g'*!YXv%K4RV\rZ}Z\rompN]N5xUay\rjWkb~+medyٯʰZksO4;Tal@4[]M7n 7>6ϓ=h*0HΫj\$[`,y	>7pD\$u9H ;R~0[DH삕6ܐ>-LxjZkNȢndg;C\\\nPb[h)3McD40uR#bP5:aEqH: :.X?c9%nKa5J`7X\nq=ȿvrE<(~CȷPQxHbKܪ-]\"QCU.aQv& 7]Ĩ媻>.9\0=K=)T _OX5!bUhAP-\r%zPޔ߀<xc7|4qpC<NY5ь)澈}AN_RCTxF*3g.`*B`&T:**7ƷEWR\\cW[Kb\roHru 2~/խ	@aI ,%b \0¡+{[,`_67.@̆)?mmba\nv]`W8!W`:Fpo-`7	\reXXzKI:bD_5>ŗf+<Yvg,%H\\  d\$@q\nA \n68F'|IRT{sm38b)	@LcMF@#Y`NDXCxzYc0y3hDZ6\"t\\7SE;U#R^ީs\0CfbܚrrI\"Y	tå8ZB/.`EK|b\n|_}KC. p1:#Y\nTC	%,,\r#@+dqŁ\${D	\\J\0񒫇-`m!|gdzVIvv&A`MH\\I|EjB0ۊ@ѡnUKތ>]ݸhiX9upra\$7vQCA>1xifR7*;8%\"ɄwPTByH'\n攏bظvT5xcH\$\\ۏXlKa`#tEwgh1 zp4:\nC2HK<X	(!J;㏨,u3ysMC9pwz\0ՠ9ǈxǃ1Bي`r)=hLƂ`?z9E?J1QR<\rL\n8(#rp>LQ|\"4(*8fpiWaQ\nQ*\\0@H;VYΆOZx<F'IA\n<]dP_NT!\r˧@*~ІB=%z;:AB}&lch`TO))\0yIۦ8NyјG\r\0T\"hn5W@}ՆB}ZkVФy=s	zӔ;\r쌚,hTi|jza&ր\$iS°Hi>IB{Z*UӘInO}XMsQ8IЊ	v&! k@#<TZ.jZ:	^B}YvO3BTC6=keS~?]ijOѦm,\0}!mF![J.gUlZP٦O[;&]Oht	`aILAkbkiNvYm:vvkg7)>b&؞p\05I]dp=+:;) Dx@^oѸAL't w&Ug3B`/='d>/dbF\0w\0y9nZ[6TubZ~~\nzd'@Ra\n\n@G0;vS={~\0@_c0ov1~xe\0po>83|pp<Ilo˄O; %8Gx.>oO=^uLG\rN7ݶq8~&n5l]ڀI..4ओ_ۼ=xPI5][\0_\0̓  <:eo By/Eq瑻f'Jw#7NxF(yD7\\'Y2˕?߯)9enGrvQ	./.Yܪ<zkMޠcMB+\"ہ\rgl\0^\0B@-	T61\nP@ \"\"@F0tU\04!_|(B\0Oc<'t\"m)TWF P?f9CMmkDސ|	&3`dΞ\0O8y@\n\0I?@@@/O\n0<d\r\n\0HC>knm_:Gb\$\0ђ|(vI60\"KB JrK`|6FT'9Y9>r@y@%ʄd7<\$p>t\r\0|yr́k9+6#\"97 NڮͪEnp{s^_;\"I\0J <w6ejc%85րL&F{2/w;&CD+p%#BYo:d4#H!A,݃\nsα8#=gjl:UBYX\0eտtmd(v@k\\9vQ2-{&/¶A<%N`EKJPպ,s&8+-1T@W8lDx76@\$v\"tXvj@tH'Ey@5ك<ɏ{vOY{LWr:(,̗\n+:(5䏤02%DQB{x-(*~.CJ\nSў#K|䆮ɨ2C@aBbCqyL7K4OfQ='<!ٙfP+`gNDUҡ!\$\$-/3Az_@d~Q3'>\n\011>J5Tk8;dY^ƥ\0Ӈ(F왕`kQ+I}Zg0>0MW{z_BkП;`(-wJe&ؤ;FA%L\r?!̋\"V_5G3s?-eتQ,Ys?24~l\$߱eؤ޷G\rrHA~O,G@ldϲYlbЂ?#:Sߒknü,3Jy\rgfπv/4ݒkdA}OY|tKAޗ?|ށ-&W`_\0S\"os~Gr\$Dr{#'Eͽg/?<?:0'Zn79h@?b@(3o(.,o>{I\"䑂\"`9ډ^-F7%hҰ*֬@|	\0i@@~C\0XX\r,3\0ZT 6.<;C;2b\0K=1#! 5:T\nꙪMtᵀil@9Sb@(81iA @\r+8KB6~\r8-RL\n*`61wB[Oٻ:t A\n@J\"A8kl[Co<_#AFXnl(W,ꮈZ6ȭXn\0J3Pu>>d!=V{KGecF龪Ɍm/0LXOi*˻\0B/3z(}0+IBPp\nBשIui,)0%f	ShϜ{:P#_'Tk2h Ⱦi¸B\r 0kΐOn#>l	\nB\n2̐VOiаYbs\0dIſ	16B[,\\+2(&\0\0\rp^Z)@<ALzɐU\r\rtdH\rl0DV1 9d0Lt@[5P	P/+<Bzzn;f \"\nxgj`T24X @;7\"ț9hۮ>c<C-a\nD\np9bZk *2Bʡ\\1XC'ɁDD6; 9;+Ȯ`ʃJC\0002oPH>\rc`2A@F`ۂ%\$\"D8+A\\`սy&74x\0ºtѢp iZHeHRD#LZp).bɀ,pB\$%xB&TɈ`E(Rb\0;F1ioTⲀ4/k<U*\0K\rQZe]\0ɑLEK:),Xc(?N,WVGBʯRqhŀih<SoŗYEM_YYE]Q]ųWKŻ45qvzEB^r4.9\nal*+,`SUb/QEkQ5XcmTPT{`%=	P\n\0x{HqB!R5P`]	i>¤hF\nN<<| hOjᝐtڝC)F88(18NRi\0߯i蓀-@'2!K@%X\0Dk(Z\0\0룆#ii(/-\$ػ`t\$[;^ ׃;O/:Θӽ]\nJaL9FRS劣\$TdՃ~`62	jD2\\OGQ8 XE4nlCfA\0@bX	bXd4bk#V\rt~W5ћFEN`m#HFOX\08\$%\n;()0\n:D@@)p	r)0jM\n\08\0(\n#!`QQ\r(8J5R?M(X)(<~QG졀Rѹ6䀑 dmǴ]\"b\rȵʁ &>A\$h?c(\n\0>	}R~\rhH{,G<m(VN\"\0_h7:،2A_>R\$1\"\\27\"z#Gl~rDGml[I-#Srr@u ;d* I/\"1']<\nHwAI 8#	[v\0001^l#27\\}ɒ3#7E&|i9l&v\r9'zC./3'@j+h农*r@hY;'2~(96{A(9HCTD[҅](,0u(}3Q)<R2(RL\rd'\nF2{J|u((SAȱ(o%( °\0[.ʐ3򙆚J1(T2\"jʫ*7ү]*I:0.!H\n+C`(P?ҸLaF+2ʀ9 +σ*AFL60\0+c\$@cP?R# RXy:6pD ,G5(QQԤcP\r+į'JB8,m8-PpMx̥BV}|G,< 6\n\rҲJS 9ZĻ2.E1K8:ՌG*A &5-ĸ!jKAe-9'#/U's0'\nLUJN.mĶ\nK049Lcp\0<L0t2B\$<LBLsLJxhs1ln'|WdLm,\"w*tLo-Yhߤ\"Z1ȥx焨Ĥ /1U9̤ʒK2s.'(̂vI|̇.cS\r\$a3r3\rJ#i<\r 1+΀J4\$N#-4jjM\no/34tHʘlȒ8L/4SN0Q4ҳRM0]K3>%0')L?*Ts|3`̋6|Rͅ3aJ&rMxs92<s+̅6(l͑1>9͟5ۉT6<x\0\\slM/}GJ\0006M7j7;3gM7C+\"K7s#~<ˑ8di\"\$+, 08Y&67xb/}#3\08L	29Mu9K1*-/䲟\n54qKœwD栏o1She~#slr:ӜN|\"4L79?O}\0[KӉ7eE(\raN)3ܳJ.k2BFKL)I2o9%|2fsI'D̒u'pSBy>/|-\0sʖr|O8DH-N<uJm:=X%)0Y32o\nդt	M,lDͣ=K=+ق6OU>I>\0MR\nгOY'ASOM=DSϫ=r;ssO=2?N[.D3ɣ?O=\0\"LO[?u\07@T4v+p+\$9L.1,HJ̎GP7F5>U'A5P?A\\%?Y@MC4LAhd<P'TN?4%̢\roBE\nҁqALLaPDT	T.B\nЯ.422؈)\rP?UT1P@D54\0ԶL9II}'M*3\$`6ɫ'Hrv9\nPP?lP<QUC_QGB悌P4J2|q,}菦>0\$f`)PY(+\00 ޕbWQ0p\0\ne\$rPs\nQQFn0(@#J@&ў3\0*FZ9\"#>	(Qn	FmhEF\n`(N?r;\0\\R&>`'\0x	cꎮ(\n@F&\0n\nƏR/rD#đ(cQG\n>ďTFRGќ%	ѥGxtjѮkTJpArGJ,-Ү(ԁ#!e+HH*4RK04Ar>tGRJ}'QG	rQGE0\0H\0eF6ҍJ9Km)nPGJ8tK,R .tSHT\0L+n((1Gu|G\"H5t!@>S?M5\"4RN4H#`#ԐI5c#I=%4IIl?6RL%0ԂILQ3S@(\nTұN`0kM\0I&'qIT\rI0NR52rE7  G, RoI{Pe(5Ҋe5%#>2`\"UKe?heK\\\0	X*7kTH(#ѻKM2#	R\n%*-!TQ= UT?T1O\r.T\\% ,UR]K!Q%+MQp\ni[\0JJ!SQT^}47JTS5HMSO9KQ`\\WS+\0+%MPaQM`GG?.Q㨉@#p*='RtӬ>USPPrR\$\0%UC0?\\.UuL(u7(\0U7dNIfME\$5K?쎃?0jJ\rT@\"Hx5oUVUW)yS)M]TS\$p>FcOZU.?S5mU8%<(QFuFV\nMTK_U@=\\5qL?\rbusY\r4wgY!1#eXa@U>d4\0\0#p	>\0=  h?	?L.՜Ԩ	@'nX	5`\$J4eK@V-nֱKuV]WիDUZm6hVX[\rVM-DվYui;uU)BU[\$ģsTMG4kH!]uWR}oHOoI\$?EqH; \nTԙG:#\0tTMncT-DVJuق?T%vCʏeG2;y]hh\$W:)CWs^wuuV`M^E\\W^*ՙWRRWVzNן_Jtא>׿WgV5wG\0S}FZUV)ZuhWK	4qHUU7XhUD_y6F\\T`MV\n`}4XS݃e`H\nGpGU&#%}r	eW\"?=1IZe*֞饄ܣT,Xdt	\0&kTbMP-TN`%^BU\0!\0a<&GH?D%eM9=Le}Q6=֤k@R\ne(AWWu WB]oY']8U@єVԢ-L5yb kHWh\rVO\0Vj?UPOhӫQ	#\rmWcb}\$Le?4jVk!Q`'U%^hREN\0Tn휂u\rT_*\0-\$]76mٻY4TmfU&8;p?5RU\"F*?g-x4X쏅IuSRfi[RSb8	4ٽg56g*Yb͠VUE n6t}O5l#M+\"i5+t#yV ] QԆQMZoFե=Zl魥6'Zi͇YZgQucUQ/5sZ T0>&cU@Q!ZMU\0.\$YP8R?}kiցNMITDK#x'TRH7G卵Tގ-p\niUltU|VV0l\0D[+lݎc[ πcM5|\0l:ҤfG6і\r1=m] \\TmQg1ہX᣺>fuebkam ݣkmQ:\0>##sn}'g\0ñZU\"XukT>2URO %\\b\$\0`%78[:mm7mH\\H=vKL\$pKFm\$SHZ=W%c0>cto%X}L\0\"S%Zo7\0#Hw\n{*i	nh?]\rqHT`VmeUꀿKi#v	 \"\0Ű#PM7Ihԝ\n?gT7PEATRPrM5`S\n5x@69hE!6xTZ4\r;Qr(-K;` tUK/VN@S PVm@nvbTt>E5;jC?#rLcT[` yT\0p-W38-IS+T]\"::=N)XOo:9\0q6ݯr@! Waۑ]e#@/?2tT]wUv%mܒQ'o\\շ֑H<4\\YxSaYU\$0XqHŔSb W)! >Yyb-\0>UYKG\0kwדSEy-nck-	؟P@\0WY`\rgtUD1=M޳!u<ĦCר\$t`d9́\0z}cJD@b;\$.{iTP#\\ɑȍxTk|&e<<D,B'|8WBzk-^p!Pf%:\r\r.\\_1z\r\$=0G|BŢ{z|Շ#='ڭ*Rź}._nF7C}kP10ZJ/_eJ 7 <n?-!X],\n`+UQy]6Tr8UfӏNMDRO0&ӑm=5i6׍];@=KTj]5YY]\rwhԑRP0]u2Ӏ#_iG*?	\n_Qn̔}40m 0\0t*: ,7.; UX*\00049e. J	%\nMX>;!Bz@MtHa>1[?\0N\\<,+ЖAv8D	Dv\r(ujƔ2(܃nIjH\$/^!s@a\nv&d/A{lNƠ`'Tn,!<k:݄S@]c`،hTT`^ T?;{p5x4Dx=XkA\nA M\$S Nìo& ȕ:kN[	nҙB߮/Hz:,t0+2;a)vPLz)	{#ڂ63b/};) *Qb,pb&5pPΕY1\rX\r!%a<O\$h\0006/oi{)[*'4Gpa!Vh@-bH? JxJc->*fb&A_\"%-=W{JYb~%;%X/ \$QbG8f,\rxc(\ra:v1`>c&aa%b@qLHkWt\n	7ɤ+V|?NcQ` cgh 6F086xߝA]9\088JՃcη1@ 0ab7x\$?82NS\$J'D\\5A%1v3O3!7Nrh#;7{&%Aw\$:;pK8c5ܘLn,ȔȀ#	\0@:RNEB3˯.hS=.3\"ELscRv)ǭ\$iOFImљn!Jb\rTd|`On;(h5wd;kNʪ73T-78\nUY7Ds7@\n5.	Tsf~kn)	mA7BNdͦ>@E&P@ ツbҝ:ҜAE\0<\"Qk7X:\0atl;\rq\0)|\\S;(Ys_^c&(|Yj^~ZDƸK+\0܄;=ї +A(6\\iBz2mXB_}6߉.}_ӛe [B2e|(fzZcf}ن\0P@2AdbyfbYNmA2×d93f\rvde9dYfnace/fٓf9fe~4?_{f-l~7ں}bYvMLLveш\n9EuUY\\	#\$ngB< ~w\ruCW-d|ǬyTz	1,k9QVpRO,hCB~nY˸QpjY#NXWumZ(g3VL^oygq!gz!]p.:q)	gtJa|u܃a6	/燃4d\$6\n2#1.gsž\\&u+,gwyYK1 09:מۭf6˞xY9Qb\$~tX'6z.m`19s@4̓hDy2☾vqζVD.\06<\"\0綊k>P91vzϏ\rN՟FYV}\$:6`::';OOd\$yF~8\"턚.5y6O,Q!=t%e\0\0yf6}R\nA`Pr,C\0k@SzBQCX!I\0.vN\$@TcFHiZ2֑K\n)]i>77߀MbŸ?ŽC;CޓcI4#0hTMD=zMXCYi@`,yCݑic;zV%,M%~:ENY.NYN/N7h<A j\\\naW-x`ډdi~KP0M*i\$Fz|QAVI=j!,:tB0-zNV?@KAzxDbVK\08KD^;GgjeÝF|oC9un(\0*4A1j\nBf=nQzxb܂D47i,!vJP!XΎxP{ZvUӀjB^!dj\rK:4z4bplCCܢyAo\$)6zQ?A\r`\\zEיִ\r݃s:Ehe>Ќnfnڥ;B管jn~wThoM[(KKɮt!ˤTx4oyƝEKR6:KG#.\$t&7c-@]QQ:ʊ߾Ҩi-,lQnéqO+GH:f:ꓯID_BoMAj9\nW3F~/f9	0>GdD\\A]bK\"\rF~[c\r˸BOs1d!y/Ѕn\r07\r	%h\n2lJבց8\" hBhjJ7-b*K!FCV4SKًF-~2;FKÛ4nZ1vR9\"L:.νdQhkank#9N9ƲdU\0N6OV5+iǢd]{جc	gAM^=U{vl\$P5/(\r):`F_:Ɨ=	!yV9ϟEQ5>:5<cƓz	M1[ndn/F9F#`vX<BFjdN`Q5󞾴K5o	h;#BZ>o@ck*@֓D\\S)pۭsC6pU[G4?.e\na	>W@{.£훭̵\\9ژ>CAץ`0d]fM1I7[\n],qVJۑ?tz]um*p+틽.\0HW;+Bzox;^nEtKhqꟓE!+n=T瓗xkj6{#h#[o}qPDղÝo1xc8D\0񲆜J	v=WFzzmkhOޓ5j\$X}<A>n{~h]\"\rGDxQ)=:5G:PD8p	sH2pzt\\ڀk|)Yt	PE\\D0¾|p1Ɛs=&`hIO\n,M틂>Ae\\}\\>գG7Nl\\L4!5c,T!p}Ĭ<QH艞89!=F1jːA@o6ۏU9Ĺq\nM<_}3q\0\$no>\$z/	+q}1o\0F8?Pr;<NGEc\$*qU}sF8bC6\rkGm 4K<~4H!jm8Nkr	f.Uzh#SrU(	Zsnz!/%\0/&}ں6rxW`5cGObW\$bM]\$?z\rޭ\"qJΘnـA&}#[%ɸ-'gt\$ƕjLwNre\0\$8Z#:;s\0M\\s\nDMeAf4IBԾp`@%Z\00040}O.\"L4]\"'Hfי1nыRetFޮ.MY6ȏlc>h5ӂ}<Ɍ(7FLrm2(%b7C\0[͸Ms#V6Χ5M	&v797@!\0|N6\$ݔvn!TȠ<WD@M؀_(;'hLd+rQˤHiʱ3,)t]+p=<tq1o3	Fe}%\0001R,SO_Iͥҍ)lt8LIt:&\0Ҥ!?_^}0d\0i\r'gA)4?/LtθIE|4W?mi7g	Уu/C1IyI?C{SZMemKP \0~\0A5#.\$sY)|ҊM9yd]ϫA =9	h^rE@SO#>0LHKHE%t.mOfѸR{~F%8sKBYw]/#Qcc)HT_GX\\pr>ՕFlXcVnu@ud85lB -hETV\0h=`-TuvrTg^5Q=b4lZMUYxu'vC^McٓUESU1#d&ven@Rn%?d_vOeŗWiTwf[)?a=_/iVMX]VodeڏfEI'j,mpRcj͍8?^Vg5Zc+}sk\nWueVZ۽vTlU^UU[S=÷kٝ\\ݛ;W7guxҿU86vv(vUOsէ۽ow_U?iY׳\\utyQuVM^]cknW5eYG^%]P_[cWs|Vo=XwuY\$ݕXYq:w]fd=CUd=v=Va]H`\n]w?wiQlOjzguI{Yx4ViHFVl+{FÕ>\\sErVrܟwY}\\uuŮyd<cptq]9]!j=Uc;ybGSREהT?s'ׇQ̅TwF}=Umw-6SC.ag&x{-;߁i^1|\0u	Z^(I7c;VU%h͜Yg\rt\0Qhv9cPHy?8axDg-!3Yg\$Yݯj7P>eeXbshaYD/fnn=	^μﳞ:V[LNax+w9/x>+a\$L;(SFto;lyxs\"	Eߍ-@׿5>~=!\01BUSb\0O8L}ѫ4q8L:.63.YroɀYz[_+Qp?62/xb2ځ~-0+r~mCX!b\0A89&Rh	H?ɖ^WdE梾bϟz?\\<j. Jc;\$);N[yj	_HI:B*ļ3:S.lfPQöhF[6Ý@p\r{ӝe;|VsFNP+kog̝6[>֘{l+7{+f\ncl=ypy;B\nìmǒy%h@L4``{cnF{kz^[OU|\0.dwy(gnJdϼAOQF_:bPPha,	1:']Pg}66XЗŘ/P/-I>Mx1b޷ U#`d3zŔ?6Ctxǻ:L׻#,?0|SmwTi68/˰%*hwç,@`2M}E %oa)_QNM׿\"Yά)PwRMƇ?ա.B\r5TbX\$X/t!)	)I7Ľ[1}n`o`~AΪbtoʒwڟhn/{Iԟ}<v b(>8	\r3\"(\rp\r7ޟ{l:o^.}~ݯ/.m7\0s?T~?><|oMN:ƠyJq\0o\r,<}2	PJL~?;W-i_ݼ\\}:\"PA;5\r @+8~fDߤr\rٟ,t_\"ƿY?'ߣ}cٯ4\"l]efȐy[ILNa2!fPS#	4_J?߽Ġ[~EN箒4*ÂU\0%8ʇQ`SH??h\\@P2 J[xLG?\0ȁ>ü/R\"3HB{<.~܄l}}<|_^w/_J:ަ&whklN[T@(z~M0#h+ܓ6GEThckѝ tS2(q[ŠZ_>Y\nTTE\r\";(Xs-@D kSJ{(p a^\0bZf{#diDL<2lĈ_vP擯	\0%S0*D!ֽgЅ;v4dP'1qZXb.Yfմ[<cS['+Ђ|^p Vbn1(p\n\02*ge G} -/;1^\ntqzP[ 	p\"%Z\0d\"9+.FOL1o}jOPhCDE\\d_j9Lc&9xV75|te16P5B\0}*2Jn=fBQ'rR	}RɎB8>KưMC>Qɪ`P3inկwPa	#c3YHEh1_k0\npeGǟ1eh=\n29t*\0h(!sQV\0{j&+@D[ַ0ula#M;\rtXǁjhQε4CM3SM_w6;A0n{l֠Xxz	zfHBrl	K!dO# n~ps].1jh0!!r0ppd9iD%rf\0P4	3g7>J\rLM2k+8*ZhFߌґ1ZhdFٌ.Aй. mNY\0փKXAx6Q|h8fc/%}帠qcnWA``PBL惁ɂj`+\\f;gݘ,<C;>gS:8\n,۳XA	c}H?òS=*8@7R(č^ˁ7gj߀W8z8Y|CܰAFD}#PxE\n#8P5nMFX 6rݟOzB_`LԐbENMZȁ\nP>Am7PGGx91\09B^kt97P<7VqJN)_u-daG`<oĳ\$'JMM	yp܍B4i(@8Uhb~<(\"Yw4X7fzPA \"āAbTTmT!9.PBLh.UM_ĕ#VpB([e^	zG- 9gtEd?C 2VɈSO'<Zu(ҍ{e=C\0vpO&Ki Cಷ4n|,/'MPU~lxv(֛(NQP۰d\\TsΑڨȢˀ@\0HN\$xNo_)wYxq<8\\9sN͖'HC\"b !RIN \"KG8	\$sKDF!&i @b7;hC{HQ(=5q0TOK4+{pO%\n	m>JWlCRr\$5)VLp JE\rؐԤB8i\\6nb&\r2<8mۇ%\$ࣧ_f!_7\r+63pǴ:V#d'dMt9jJ#CYr䔾L:u~=:t!)A]if%Up)V.J9nyGnn{ȇW\nU;w^G*\n\$ޣLrgixdte:bݎ>\0Ku%S*xݫ7^ ^%)V\\LbrT6T\$M\nD<,cS죉LA?KaDT2 @!.U\$}#ۮUT.6vj巎Cvⵍp֕WK[	\\'p.ߖ;ZbiRKV-_inQ#}nU|ZfrG]v˶ՀU[Yoj8V*w\"y*E+YHZ9Re p#aZ8}Ek+xhMx1L'P	:v_eAփu=Qx@h+ܝ\\I\"\$nC&\0t4@b p[\"KDVMMKY^A?d)X!lIDk~?Kg7\nF (,,l9'Q8DoX j`մhryMn\0<ǵsF6;Bugs׶\0yl|2\r]sj2B+у=p DO~2++!^H{_li\\ˆ`\nK&/j 9ݢcdD'o@cD/?P\n.Y\r%\0(LEDGәҹ|xkA!Ic4Aeoq '9XXxCsWґ\"{Ӏ\rY!u)\"5fFNEPHHl	&Ӭ\"mQtZʑW+Ų\$ .Ǌ-`a	F8oX#ឺ&R>> }\\X9v~.o/#xS,4c>pC4hg\rE1@O|4(e\\6*	d!ҋxMp`\0007D4)cdPZV\nɸ)@\0001\0na\04\0ga\05P@\rF\0l\0XƱ#wxƥ,\0dƱ@FH\01dd(8Zx@F.:1Xhш6\0a2a@\rӂ`\0g2\\ac(F7wepc53LbQ7\0sV2\\b`1cF8\0d\02<eF\0aB4\$b`эM [\0l\03f8Z:hXȱOF4ɑF\0ir5eQ@\0001\0m0iq`+g@\000520kQPF;\0o4dk \0\rcbFna3|kHQciF0{1e#(Fj|\"qFepdj7dqGF7nhQ9B2\\k1#OFM>3Lj5\05gq=݌T\02g1ǣ(FP!5Hhѯ#^<\01\$p@\r@FbI8ccFHۑCG1HѺ\r\0i.2;QclƂI^9Td \rFFe2\$bq7[f8\\lߑqGe񇣧3,exőGAoX \rcFPaϠ#Ƅ5<q QF6lѡcH<,h`ck2/gadȱc;q3lF8j44{qc8O<c-Ƈ~8sьF1F8lfiǌ92lxqc]\0g8aʀ53lQG\$A?mqLNZz6uc=܍G68sıG@D~0QXfGs=|gq\$G}oz?dCFSF6oc<9*9hhvGG]4e\0001G\0c3YэH.!9qIH=U;hbQˣGWAq(\\ B,s(\$ƁlqҤY]2x/%дpaM&7m1GNBt&֏4<e1#O8QOFCR9{1dF~25c,E=LlQ+E\"2|ȱ#AGIaHČDdXбcƍc=4QcL3= 9Tj#*C\"Ffxѡ#3G#\"?͑VG#28}XcB;fy#1GZe2\$^{9c(GCoHDc&73R=b9ңHy=x#v@O R:|Ѳ#&\$\"3܅L#F#3Lñ,G/3eNc=ȭI v4,q(1%HБ*F<|1cIQ?lQ.I\$3<\ncvGu\"*GY<Ԍ(ױdGJ(YFSA\$1dS5#6ܒH(Ix\"Z8q#\$ǯ; Z6LtģGJ\0e\$34n1I\"GHݑ#^qY3|bY3#nH-<>i1#גFY\0QFFDMdc?HLJBbIT3I@T|(U5\0bLJBs	4>ǌm:b@r HAW1̇pcˑu'BTa.#3GzW4ĲG#>>u4&?\\dFK#cI2KJ}r`Ɉ#=bi?q#5m(^:k#R6dVI'3<yҒ_.G4&:x2G\$G{r:pZHmv?c9Cqc\"H!v3wq\$H(KLY	3#4?1)\$ǣ'7k*d\nHWr2X#Ex23e!k(b988<v44u뒓A*6OI%GH	<GI'RKlhcW)<d	?iRǌ%L1)KqZb?fGtz9RcГF=}RKnII!F?<Gqj~%\"3Č(;\$Jō>09*3I؍e\"&St(Ų#ܓM!6Bԡ01УYHVAtpZ]ʤw&\"G2jG#5kNҥdƹ X	,`RdGC3\";zO2#b\r'>mkI_'1<91xc\\t\"%jV,ΣbC@')\ngV݇\$ڻQJ͉hk\rU*`M-<EdBcMUU-<BiY(wؚ娋GeoJŕ^BQKZ\"[b^>(Y`LM?%?% -fTZ<[p Ľ]v-Jmrѫv-an` ,pqs:%PאWb\0hGc%˷%|z0Gސya)4p#\nTO0}2/p?e;W&0ĶE^nT3zc[v%<]Q4A}ԁVT}R<.\$4쿷Fܗ#0NY\ri\0kGZIk\$kNms\n5!KB%K``\0'\n}Df\0֢<,-@ǍiK_,fe/Zu`S0jX5@WDQgp\nubZx=-\"a:\0J\$x1m` \\@!-ZHJ)Ց	4M\neke5zb|@P09ZFf\0\n/=˞dRCK-atlJ-iT\0GDUƬ\n]Gjŕ\n;fGKW!2eX}j%L_2\$+c&U+Xd\nƕ\n_\$N]\$0%z-^2s\0VIKY\$D?Iv?Lt,εRUmJf\\(P#֖L\$cwjg<~bPi>Գ\$s <<fg%~pZf@kKʁ,%Q0d,MT\0(^jvhϐ*ȘVJWY\"hB&k)v.]YC-gU\\C\$4]dYu%W+w&>[M7v-sR)K\$04Zɇ˴\"S8!P\n@!\0tDWe#)Kve[E<C1j\n5MWO.k9#)YR.fk4+Df/3Fl+*lR6%ZE23	i lЇrf͙%-ayZMqQj^seՍΚ-Zekx	5s{c温v`1^ԹJWLx2^%A̳RZ]_UĪ^VMY_kY+UUMjm7)ZBuZDm6:jxf`7d`\nM,HY9J[ȯfmܥrM}XF{W	L&	f;Ηﰍq1L8q!TU&O2Zod \\5qb9'efJVN'wa)UgVM^r3٭fy.?tMsJkk&-5\$\0\nf8m,ɱ&;~wl9Q'3͞%6mOE:	Xz'3A]:![I3\$XֲՆnWͻT:A`aMM^V,s<܉ԫCf<K2]t)Ө&ꉌQedwa3UN:o	 ҪRo4s'.;^s:fӴfm:Rvtsc\0Y.s:8{PN8.vY'V0u&˯g<2xqz;Yh6iNfNMy1wºb3\\4RQ8r4ߪ*KG<5Sc;Y5br\\˖g(OU)9NxÀ*윳;-ewjS0NI4:Sg9<	TIK>O)SBlyѝNxnt3\09\nO<~v{6y2՝M=UTi<'Y|Va<YI=Xb'Ϊ7-eS\0N\0=uuTW!QtiveR=q,sg+\"<o<YygNʚ9ntsNϖ&ty%Cʈ)=MWd+;[igy;&pM,\nCGDӬU%?(:ũ(\0_VH?x	3'GќS<I}*GKT³6Y	gKFJ:zCʤ+O~O9r\0&&y\rZ/*fK1<0+W,˖`H- Yj_gH,*dr-B[өM_#p<Eɓԥ\nT@%g*@)·.]jhP\$\$S%͟Y8h i,ʂz%'I\0(rgFW]aYiE\0)q֣QwDD|3I)[,ftPS(7;/HuYݢ9l:3ԯT*P_Ab:!O֡BQjZgNc#BlZSVО>Gʦ'gPIBqtCJSW)ZҐq!Tղ8Yg5o^#uA*eNkUn-,ЬC.E04(R=y q4LO\rm(W?YRB}8\"kC*`hnP]C*lb9kR*'Cb?Q\0Xgt%vLXTDf,Hȵr*?h_!1Dvl9Ћ(D)Czr)tIX>'.SJ6a&k29uدS5b&,#YPa*i4RrPYE5eKJV<-QTEMHZh)|`\$!kH}J*d(0;X,,EQ}A>奡ԃLCS5?:/.h,^TniZ/y,,1Ewa!Q\0Ef9I41]˪SћDq碼:,\$Vmd&6pjf[Q@iKZeͼ^BB\n ֒wG߼@Tf<`-E*\\X*\0\$Gv* t]Hpz0h?{Vvuq-fHN]rȴL*#\\BJU&4	O]@J0\rTu=bʣu*N<\"EFV\\ϛ\n@E/WR\rhI\" qb?T(YZBՋ2ΩNB;{kLWJeJFJԾ)HJҺGhQr%ZS/+1bʛ\n64whݢ\n_%=''vI~rSi/.ĩabE@ -Y2?Q螰RZUJR^:3`KUѐTHjQ?f\0RXYjl'Y~,Y}Z\n(R8Y)Td\0Qs@H\n\"-DTJJJU4|?O\\]IySUƢe;ɩ\nh-[ʖ(!&/'6JVjVk4gخHvQ#I(Ι:}%u1Dy	nԙ~Ҝ7Jf*1>G\\\r!tRKQe/4YXRo\0Pp(*)\"#\$Si)ra\\/(O\$jF3f挀(t\0`dU	>hecH\rp`gPc[=Lf\0002\0/\05\0b!`&\0]*px)gCZud-<\$k%AzdҾY\0֛5k\0006Қc@@\rx7Zn4@zM5\noiSTtF5\"U8@Ɣd]M]5pg)bMڜ\\r`n/M7Js)SyGN*7t\$ρ\$6ʜjuiӍsN&dZvt#PFvҝ;jqG}N<jxT)SƦNޞ%<\$\r)߀_ME;\nxS=otS!OU>jxiGO2tzyt)ӒMf:==J~#اNR:==xtSPP@juF~eP0@~tiFfOZtSϨM?*S?NB@*~	)Sը-O=:jӔoN\nz}*Gq]N̕Jj!*yMf0Az*\$Q&B-wPRډ\$QMImB*uiT[Q5%j1jQBEZ}*#PE5*!TtMQJkQA0\0CCJT8QKG(˵\$=Sސ#RJE*ITl \"5I0j+ޑQnD`b#Gƒ0j4T[PBF\rJU(8ԸR>kڔ+\$-%'~5Gژ/*\"TS:J*.[F&~L:r`%TRMʕu6ӖSr=ꛕ-iܩ\03Am<c3KQRuOJ5=*4TSҥOJITSƣPz)UT\"uPDő{%[TV-HJ5BS§MuEH#RN5Q8F*UATRHj!;T0\r1cCF9S2ZQcƿWS5RrujsU4\rܭJ\0}USUZ3}UE*X?S<\rUh5X	`S:UV*5E[bT2MV*=?UVeUګ=Qhĵ]	Uګ}Q8]UZ:X=OՈ]S1XuaKoV\"-PXU6UTZ2Yʱ=k՜'VjTug*UZ0[\nAcհGTZ1%[\nkQeV­mTUUEīgTN4=\\JAcīwW\nUHq*UL	%Etr*TR	%\\Œ*ϫ֮St@I*ꁻC\rR:R_0vWE]TͪW֦}_UFU9WlbUj%WE`JU'Wb6maՅD1X&N_}daX^5YXUbXk\n)X֚]ՎUXcjõ\\kGOUֱsJ}GXmbڼ_\$l\0F|EuvB2k\n˕/%cu*8Ye^걵(VrWZ4]55VxAVnY5cV)ZZ5cVWZqmkGۭ'Yޯtcuj8Zz%4kQ֘Z2i4*ɟ	&~2c93CQFۭ[2]3@ɟWP.kڡ5Z[Wj*dVYKk*kV̬W1eھkLYv˵#.ΌgZ3]nׁ֖T b<jKl>+a+<]7\0><s+=LR5S+]\rH2Ȅ[:%cs*OviL<5V@בwC25S'v|i\0^n{jfVJHduBs;W8Yt'y6xBDʤ'WN|ً.P-q@	fsr͟8*í`1C=o5Y%\r5idE&ѻ8B\$5m:k+iƋI&W\r,Jڸq%<k\"!qUf ^\nrYUV^#6Uz9S+)W7*eD)f2v\\f:)On3 \nk\$;piՔˮ8+*\nث}9QSzh\"UاBo;ripPw]vjUkLҥߧ;;eLpzU&]ed5W0=UF@}Wә\$;^uZ:tj݇&(\\?{\rkNН_pSUX͝_>='ikPw;Ey:ja񬮉Y0AE\n浾rh53hWw\ri:i+R@FVx|W1^Njx\\IfGpa,TN|zcs0ELxm5*5ά@Dg(Q\0\"HX:Ɍ4\"1u(.`Ӂ屑y,0R`5A-	~v	+XqMs;[0Bf((&hq_Fڃ8~6Ob8'	Xdfu`42\nؿ|.KuPH3:^/G|<Y(<\nb>	Z;'zc\r3b2\rNL2xU:\r6X-b\0tT%PXSX!kćQua?vg.SS:ldtH\0=/`_3mF%lbуB0 ڦk5ň(PO??Ί<\nЋS=5j\n{*\03b!eTF3<bʃ*	5Fc	N	H=ga6e\r 6;\0&ĚaQe4ЂhYadL	\nդl*G_ׅ	yH1e.XjtY2Mw46J]MȐϽș\n,jxFG@*g\0_ XY	f\rm9yà߇>o(jG;8\"yA3׃f9	LmgQ[{ds(Y~~@@:	Y6Fa\$l)Ob=<VxYuvxč5YYjuh\r/c^x \rA,m*yw\0٫hu7U̫HA{#S{>Lh]Ђ&~fÞѸxm].B&emelH+6ZĿ(\0ǅٝ,:YPZakQ.~	[-a_:ɜbPcA/\rheh'uiӬ\0=m\0i\0JPh-6`rfi=mCR\"'^õTqlSUݐ^Q3T.A=&gvlM3@-T+P ƏQA.!\0jD[\"W,Z'QRݫU&vYX[i0\"՗{Y l{\"{P\"aWZd\0BPV.mm=0kv\r55Zൾh24lOZܵOɖ.,:FZ('`-NBڅխ6,§aal<6ܽ\0000@lM4ZcRՕaloڝ|&GIb3\n\r0(5[/fH\rŮZ`L^d\$LΐU(5-[;(8*v̓~|a64dl\n/Ly*>2?d!|'O(kP6!itx\"I\0A ,7bzJ2EC\nB5@!Fh+-:\0NMCsHہ=nA;so*:qB\0ۨNnnV܄4}k6Zʗ_tv3>w9\nL(Yy-B{G\$6ye̋td]2");}else{header("Content-Type: image/gif");switch($_GET["file"]){case"plus.gif":echo"GIF89a\0\0\0001\0\0\0\0\0!\0\0\0,\0\0\0\0\0\0!M*)o) qe#L\0;";break;case"cross.gif":echo"GIF89a\0\0\0001\0\0\0\0\0!\0\0\0,\0\0\0\0\0\0##\naFo~y._wa1JGL6]\0\0;";break;case"up.gif":echo"GIF89a\0\0\0001\0\0\0\0\0!\0\0\0,\0\0\0\0\0\0 MQN\n}a8yaŶ\0\0;";break;case"down.gif":echo"GIF89a\0\0\0001\0\0\0\0\0!\0\0\0,\0\0\0\0\0\0 M*)[W\\L&ٜƶ\0\0;";break;case"arrow.gif":echo"GIF89a\0\n\0\0\0!\0\0\0,\0\0\0\0\0\n\0\0iӲ޻\0\0;";break;}}exit;}if($_GET["script"]=="version"){$q=get_temp_dir()."/adminer.version";unlink($q);$s=file_open_lock($q);if($s)file_write_unlock($s,serialize(array("signature"=>$_POST["signature"],"version"=>$_POST["version"])));exit;}global$b,$g,$m,$bc,$n,$ba,$ca,$me,$cg,$yd,$mi,$si,$ia;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"];$ba=($_SERVER["HTTPS"]&&strcasecmp($_SERVER["HTTPS"],"off"))||ini_bool("session.cookie_secure");@ini_set("session.use_trans_sid",false);if(!defined("SID")){session_cache_limiter("");session_name("adminer_sid");session_set_cookie_params(0,preg_replace('~\?.*~','',$_SERVER["REQUEST_URI"]),"",$ba,true);session_start();}remove_slashes(array(&$_GET,&$_POST,&$_COOKIE),$Uc);if(function_exists("get_magic_quotes_runtime")&&get_magic_quotes_runtime())set_magic_quotes_runtime(false);@set_time_limit(0);@ini_set("precision",15);$me=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'=>'עברית','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'=>'Українська','vi'=>'Tiếng Việt','zh'=>'简体中文','zh-tw'=>'繁體中文',);function
get_lang(){global$ca;return$ca;}function
lang($w,$gf=null){if(is_string($w)){$fg=array_search($w,get_translations("en"));if($fg!==false)$w=$fg;}global$ca,$si;$ri=($si[$w]?:$w);if(is_array($ri)){$fg=($gf==1?0:($ca=='cs'||$ca=='sk'?($gf&&$gf<5?1:2):($ca=='fr'?(!$gf?0:1):($ca=='pl'?($gf%10>1&&$gf%10<5&&$gf/10%10!=1?1:2):($ca=='sl'?($gf%100==1?0:($gf%100==2?1:($gf%100==3||$gf%100==4?2:3))):($ca=='lt'?($gf%10==1&&$gf%100!=11?0:($gf%10>1&&$gf/10%10!=1?1:2)):($ca=='lv'?($gf%10==1&&$gf%100!=11?0:($gf?1:2)):(in_array($ca,array('bs','ru','sr','uk'))?($gf%10==1&&$gf%100!=11?0:($gf%10>1&&$gf%10<5&&$gf/10%10!=1?1:2)):1))))))));$ri=$ri[$fg];}$wa=func_get_args();array_shift($wa);$fd=str_replace("%d","%s",$ri);if($fd!=$ri)$wa[0]=format_number($gf);return
vsprintf($fd,$wa);}function
switch_lang(){global$ca,$me;echo"<form action='' method='post'>\n<div id='lang'>",lang(19).": ".html_select("lang",$me,$ca,"this.form.submit();")," <input type='submit' value='".lang(20)."' class='hidden'>\n","<input type='hidden' name='token' value='".get_token()."'>\n","</div>\n</form>\n";}if(isset($_POST["lang"])&&verify_token()){cookie("adminer_lang",$_POST["lang"]);$_SESSION["lang"]=$_POST["lang"];$_SESSION["translations"]=array();redirect(remove_from_uri());}$ca="en";if(isset($me[$_COOKIE["adminer_lang"]])){cookie("adminer_lang",$_COOKIE["adminer_lang"]);$ca=$_COOKIE["adminer_lang"];}elseif(isset($me[$_SESSION["lang"]]))$ca=$_SESSION["lang"];else{$la=array();preg_match_all('~([-a-z]+)(;q=([0-9.]+))?~',str_replace("_","-",strtolower($_SERVER["HTTP_ACCEPT_LANGUAGE"])),$De,PREG_SET_ORDER);foreach($De
as$B)$la[$B[1]]=(isset($B[3])?$B[3]:1);arsort($la);foreach($la
as$z=>$ug){if(isset($me[$z])){$ca=$z;break;}$z=preg_replace('~-.*~','',$z);if(!isset($la[$z])&&isset($me[$z])){$ca=$z;break;}}}$si=$_SESSION["translations"];if($_SESSION["translations_version"]!=3062950237){$si=array();$_SESSION["translations_version"]=3062950237;}function
get_translations($le){switch($le){case"en":$f="%(n0Q :\r	@a0p(a<MSl\\;bѨ\\zNb)̅#FCyfn7Y	h5\rQ<ΰC\\~\n2NC(r40`(:Bag8i:&㙔yFY\r2 8Zӣ<'Ha2܌Ҟ0\nb豌n:ZΰUQŭwDmfpQqacqw7PX3to	ZB9Nzs;̑҄/:|<4j'J:0rH1/+7(jDӊc栢0K(25B87\$B/h8'@,-BƎQEP#O7Ct\r`j[z0c|9h\$>\0\r\n҄=Û\0x\r\nC@:t\"~8_)9xDjΘ2(-xx!H㌣.-D;W+863@Ɍ^F+u\0ᠡ*,1,i8cxؒI¤fۣlZ*/cs.00~0YWB07U\":3xuc@#пC`2'3XIl*83ʮ߷ 553#\r9{5Uwxj0B͡.'(ǧh\$FJŋļC.!n(hڂ߂\"d&Ρjjn{)*:&&P`^GB?06K{9Bއ#p/;׬&7s5˺\ntu4`O%b2W+t(lB?Ruv3Ji^źE_?3H,c@x}=SAP5EgGԍ&7R}a.mOTsJlGJZG\nK\$WP.OI(T:Qj5꾐䤔{@fM)Ƶ\0\"<ȲJ!ԠodOBB\r7\"Ȼ';)EX0f杫8ؐk4LدC;-za*@\$3rEó\ro	2A*E34\"^tq1\0S怌3ܙA?8. n36eɉ4HC\naH#xhSJp\$E'xA\$O0ȍpL\"f%PF9cZt!2V˹E@UÉ(dW+;!3<hqyNMlTh	\"THVaΆACw{h&k\$`&4fhs\"Rp@ّA&L`kfOXA~'\n|hQ\$'P*PU\0D0\"֒)!h\\R	+ӞG\0TDk'`Qe<ceM\$Ӽ31f%3`MWХ(76LaFAYIAPɛ? )va0a3c|d%XxĢ6jr&ȋ%iɳj\$`f,Le>M%{'a0\"a`ҰnǓ`<#VK]FL\$t\$g,pe,\r0ַ-*d8XʣС\rTqVU-PcM<\r'xUBT!\$	_y3q/ֿ%)ۣg\";|a(Q6n*XExKO+c*ww 	EǗay\\`͚\"1fVoȼɹBX.->a.1ԴP'\$2*PNy\n?vx0F 9#(b7۔!wס60C,,#QWm	&pgeN9_ixu3-2#m;&]ה7NزD`7_\nKv[C-;wXj[8yR&ų\rįbe\$\$A䂗dXb4puчiЙ<|K1l{R!zͣ_<#,KD~D`SnԷ͢vؤF{Gٸ%Yl(vi\nX\nܠ4Ι3SKsbSAOSԿ<\n}_QPK(UIp2G>iމ\$hSD&Wր_~b9Q>#T\"yF3O|r}Zޭ<_>ޒ_|Ʒb].x?8\r__ƆBP\"Xx,k92\"|.6..~.p4\0).|s\0PPLW0\0lpTPfB#.*\nDEGL~.	0F,	ni6or%л	oFlpEZ\rpFoЦfhg\"ÄcyPWQ\0-,:P#0wQB\07+I\nB;1#<F&H7NL]\n,ކN`#b>m+N2Rqj\$.b&7bt.\"	qmo\nY`(\$4\rVzMN 3(\0./%fN\nZ59Ώ&\$L\r-Hnmk/zg j/12(b(LG\re̞g'\"ZS&Ib*c:)@N\"Z\"El`	&Qx.hc\\~O&qzFr6\$N&j`lKύ˨r\n9J,Nhj*z*Nc\ndH*0ª-&z=ee	F?|D0[,\n@-\$snȢ\"-L`BĂ[\0#o&sG4jsP";break;case"ar":$f="%)l*C(Xl\"qd+aN.6d^\"(<elV&,lS\nA#RNd|X\nFC1l7`ӄ\$F`!2\rl'E<>!!%9J*\rrSUTe#}J*d*V́il(nTIdu'c(oFe3Nbp2NSӳ:LZ&\\b\\uZuJ+ωBHdNl#d2ޯR\n)&<:\\%7%aSpl|0~(7\rm87(9\r@\"7N9 4x6x;#\"~2ѰW,\nNlERv9j\nV:Οh\\pO*Xs')ir*&V3J;l1B+l>j\\z1,t*4܅NA/ډH%-=lLHBPG)\n\$R2Et,]4R25 k(3\r1C351A(4.00@9`@Y@2D49Ax^;܁pVT3(ã?x\rKJH\r#x|1mNR*))U8I\"TL\"8I[R3Qӌ>,j\$WB9\r\n0!VPH9CMyRSDBY({*QT:0E\$D)*0)0kZJJI16HRY.\nGKk\$#kch5 05+\$&-k[96]MTlZT=&gNĈX[1r/tّQ!oݏ#ۦRJBǕ{!LP!N}sYt\"7JL\n7~Q9C(nr`HEt\r(fiCxfWS4E1 y_<\0\0CW\09kH:(JC8a=`@pu7`9\nIciDFtfm*\$\0lY2p4E`\r\n[+mn¸*9.Гw }X`!\n4\$4\rRD3cAD^/)R@Pyy\niZiXԶ\\ru̺r˭v\0 }^\$6^Wpt`LM?!}\rK.ʑFR.d#\r*l,p,̆rC4CyB%XNf@ rd\nF⼈bDBhOA'`jC@p\0ZI#F l\n\\8f5VrI7Ue?a:.&hБ΁ٳYx\r\r!,w74C 4ҹxIL#05QE1%E-NY6{#-C\"U`5\$QBJSLGHGYL	4&)<EKFo)&M \0I aϫQ\"٭p׃ 6p+\npPZM#(2xS\nX0MKZ'0^sH&dDw)U,>]146ٴe\0rΰCox&\0OY*ridapCAG㣒+d%,5/(ظ\n	8PT\"@.JOq!20r}v=_.lx(bE)f><5_,FE\$4Lk*U&(F^Fi%-&YaIuU6L`1uI4/aQhF_2:eYU'N=xI!Yw2#II`>?@tY\".&4=Sx;Uvv~I6}u6QAG)ňM|)S_M!M<KlS| j7;95;kf1Il\nGíN#hrĦD鸒YqyfETR&aH:k \rkZwp=?;O\$챍RrlAhMAd+2\r_uϩ,C	\0)\0ݢ\$ʥ&%\0|\\φUC,?~B/iTy}dC1Uyzt_kF3XhGFK`Bv^Y`\$\0V{>FTkS|:bFB)W@PLXr\nD*(}Jִ,F<KamO_hBU\$SʄCSi+\$\$XFXpbb\"xF9Ap)Io2G|dwC2\"BǄ@dHP@\r#kHeBd%8e'o~F{!Y0H0M\"yFLTL08%v0{x|I|E/.PK,\$f*Nk\\SLsP-ļ|Bxh&D΂pgL0\nJD\npH-H/pQDhͰK%\0-m&a`iqbERT!Xƭ!0L0#lFPdF8nprPwqNcpqpz\$HohlCZGLXo<Pp\nTFGP{vGѰ\$P#j8S)lv \":J0EH!P8fpZB# nGcqZL-`e\0a+\"R `UqnX<M#?eF̮)='g.̫)p\rF*f<8AWtdb-*1k*kE+w*,d9F0-*}\"c;:L8208걐)\$i11R.'m,G/2R|1l0\"\\K.3;	b+fc1F1S?E-	7so)PFk6A-83K-s.33P_6PDDpR:2ғ543\"Ӣ!n\\BAV0n36i<渔J<3\rs<Ρ`߮&V\n>8O1s~yTHs#94o3cA7,B!-2@fTP!AP'F쳧E\$:(14hl\$wc<N-<\nF216DVs\0mFzoV:>&n\\k\r3ܝkf7D\r\r ̄\$\0\0ڋd.hv\nZt=LGO/n\"/6g!Լd; NT&~&v0o(0r\0E82LU'\nmX\$\0\r._%XC5uP.(BM\"ob&S`\$Ĥw\rͲĽ#	2Iĝ'\"[0[̃6cD4@UGZQ\$\"a\"KR3SH0\"A\$1'nw,\0v6P}(.G5XQ@W@d\"G#t\"Fq'DnD.>5<:c#KWQHk0\"Le0\rdV7d6ϒ`QdnFJ\"dGCF`	\0@	t\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(g+8]*OqJ_\rGiTh~McN\\4P򂞴[1UkINq呺6}rZ״)\"Qr#Y]7O㬸2]f,D5(7'1|F'7QLs*ns0,{ ī(H4ʴ\0\np7\r7I00c(@2\r(D:Q;\">P!\$p9r낏02Pb&٩;BҫC2izꤨRF-\"؅-KAOłJ<\$i؃,ߚJ)(fl ĚhQ̴-r:Hz-;RƵ*4l\nԍK\$6h=?TavW)\n7(OƁ\"OLf\$hii̝;P;l# 4,gw\01qpTgEфd;#7H#\"Ɂ4C(C@:t,6@p_cJ|63ElX4px!\\&Nze7iCT.)>6N8:bztjJh4Sbʰ((B9\rׂ\nO4N%*M)뎕THhpңH1 )<SHd6t,m?\"h&I%.gх\"⊿	qYKo<\"Ups봷4IrA,4K-htz֋ s;j)Ϋ;z%v|kչ(İh925=mdƢZwBgTuZk@T\nsV`Ԅw\$b\n9BA'4T<A;'	<(~ BVP6z!<P\r!dV(D.o\0eѐjqN'ۆ)(1<^BPx0a\"`S08GF9)&\"	d*L)iL}kh>i8aO.*JJIi,a\n6GMd(ʽ<Jq-ŤFXveLTND9bq%H>&aP4<ـrwVI01!0b݌1Cd F@\"5nJN(#M`iC(,(R]/䔕&E\")n6M*}OX{blU dQ6DYR\nBfDEejzcH(U{:)u	`-#ʗgة<2pGLZ8&CEZB0Ќ]f|2tCf9Uػ0u7uehE<	99		!u-wVZ@P)TZAA[%Ĥ3lp:;o`4`=`ŴpD6|P\$CU=U+DZr\"V\\sH+ZiCpp_!\$FMe@ivovfav\\\nQ:L\$/pw[&#DG*%t}&S\"mT%\r𒌔-9GsbC)}SstE6;?/r:Hi-2De1[+=,^Hwkrf,8uۮtT[	f-<#JZuz/ܹ}&8:Ki\$diMxJBj·a,Ϟ	D`.93zʸx'hST,HKp7?USIW\$Z0`vRG0\02,KoY,ڕ؅sytSg2Nfơ,]V90uk\\	O'fr	2~a8HA*f02'M'kT(|Шsd\n:ʤשF8.A#0 YEcZ:JuMd܂j@q.aЖt#*܋۵9{C6kkur!`4 Vnut}AF{DQjlrc4IoۀEb?<(BIfؙU0z)Z=#6<_`\"ӣ@-^{2lN)Ul8<0jp|[蹄S- Xv)<!\rb\nfEd`ARb/3B\"VxhhmHG\\{\"(Lq+4h~8\nڨ*8OhHHNHz@C< \n`\0J\r\$l]FtHH2Ң&g<Euo`^\0oe*nC*v̔6I>9!)O<#\"w'֑Aa\rB:).#Y'O.Q\"3\n|ÓZ1Idoh'\0P\ri 6'.Fen	Gv%`\"T.umN+<ҺejqGMx,\$ekQMN~\$	80_D*Y1\"0Bpў3eBt|{L\$iGTɊD7BInmDʸ0b+(G2(z\$\"R,6O'jt(d+`/d믅&bpRE-҄(xއr&kȘ<h\"ʅedsB	lP1[`DL\\uIQ(=.O.1*H%(+,#0|Aq*Բ \\z)7'NHXE.vSJl)ֲ4Vzn*=4#\$r>\$'.4'^3`dNf5E5c62' 7(Fu4H.,(U192M8s3~ӝ)TXӸb;F*iA8{p(X>(<,iS5qo:3:5sC\$ߔ5=#C;r3*rqB⮬NB<PscDЃc^'\$tpĘi~72Gĥ|rBhmӆ{EEN2'34o]Jg.|Ԋ:7DxjY4'C:Pt{t;]*R%E2&j_|'sOC(SSɹ:Sf\"ULٱTIR,%8j`HRw0]+RQwW\"ǰq#pxr\$ZJ.p^&PSD4YT07:ICA0WDtP[*5< N5-<&4vm?2\ns^[2N_v`~S\\]<,CP9\0')QU:04}c5[g^U%^KZcleDeW<]Pmc.cfRw~h`VH/6s)KTp+#V;^L5_8MGai)lo\0֟d`BFrسpm/mn6޷Fn֜޷ \0(\\P\r3VQdVRmqrC9q7rW/VQ83kpUt~-RՂkRV>AR}tR]0Ct<vGQvcwkjgWIo?xe}xVy!K(AoJoxs)0\r#PyBq`\"PδY07}BBp!U?FKy~\",׍?&P1N:#CBQrkԎbK?Adޒf><)ExLuIjD\0\npN\0\\&pZݨz6z8?v1aJz&}uեlȖ(KNpأJ\n6@c.BEDlhs{R./IY>2xXz!bxQі+R+Mt̲_J\$)0mMm8ؙ~R|_xSxxQo);MSriMY[㟔㪓-m1Y(xoSGǂV՜6%7m:UXSOjN'Ji%Bl\$1/CQb8Obn9VpbpJ-%\"y2}}qdpC{Bϟ!*=7yȂRnq9e@J荖ce,I63+>EZע	\";WdQl";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΢Jhj_\rmyioCZNr,N%Dn৮еU8O2nŭr`(:NS7]|􆇵82ɼ 4NQ 8'cIg2Oy2#:\rK:#:E3nm ;KB+M	Ь#G.S9h6ԫmTd\nQD\rIlj'@Ep{LDЦ\r#pΝ2*b+\nDNtɨÄ+H*[;\09Cx0o`7/h: AR9C7KOêx߫N%4譖}4k[Ư#mq8	CP{]G:\rQ-R(1T47AMc4	ҚDa*;6Bj(c֍etZ-QElLt}CEX'J]6\nY4]f'1OQa\nB*9z,ilKL6JvP;B6˳AEѯu 9T@0c9ˣ>LRK#4C(C@:t9sAC8^2},9^,A=A\r7^0SeCIxɵ|EY@ BYQM^\$Lp^2be쳕 EcxRCݥm4C.4ˌ'4B9\rJ\nMr>Ǵ-.ϊWk*/zN9]c_u/asIN*k/PDlA: lq/p-S*:r|E\0:*HNL'e喺d؄.\"mUK!C\\@>S2CCB|/&e,FAa\r()QG+Ck6!ABC2eb\\	%;g?]\$XDt.\\Q1\$Y0ˉcʔxPFy*\"A@q'xF'BC<FT.1	i+ZnMZC\r!7\$ѩqvɺ yO;=3`\\'\"\$yq!<\06ëEh\0:]mp:)C8aKp\"xVQ\n+q̍!LfDDY\ndqT=)8p?B^ڋi+gm-O[rn[y@8㜅LY3/X#frV5/k{+JJAٚxh`✀7om'KaSmuvٛCjm;.nݼ͉7*Ӂ	!8``PZvO!©T>EbbPYH`M:pbqB'\"ƉV` j!*#6d0kh|RДP!\r9Nh<MTU7:.@\${,H<-^%^d=~ؕ;VGrSb|O>0QVD\$zXX񃹭ԳF8P(Woet\nE\r!zdY%-#8 aL)c|w-)ٛL7G 5rs^twhVby1)	F3/TdA2^1WP)CL*VϢ &W1׵prI',fAŰ@鰇ԀfP!vuSc&c%,~DXrO\naP75 ڈ*Ew(b#3ex6WmsgDn|kȲOn-,1eAB` بFOd4FԸ2tVIzCG,Flβ%,W,tm\njyqďBb6)d-Uɝ\rI՚x)ĭ2IY'7L\n-pںbR>jU֑ĆRR9&cw4@Y7F\nDƊ޵H:+nG圿Zns[<_2|߰]3j:r`et\\K_8Q:5(y?%5]0:qVL\retPWS̵RqU\05SFXB\$c|҈gLxZdH+H(\n`>Hń^LO;4blO{#'GXu\0)BZ%C.|`{2VIwxN\",Ln:̓Б4NҏPJ~k` l0B\rpZ#T얍Rߣ\n*P*uO~-441J}Ξ+iJv>bfh\"\n#/\\[Neg`x	xfj\n 	\0@DQ\\@E6'Mx)h->B/D{ ^~Ee4{\$5Q%v-CÚtT\nZBG^)@#TVXaH(RQ\"9_,16EGvjWzW1FJ>d<*0\$-CQl_Ej@^ 6J1/\"#(\$q#,FbJsNQ\$f	J\nWGj3#.^Wc*J4B	,\rg x.&r\"t\$,\$)!*rWY&YOOJ-bC.zxDТ/i0,v*/bGPG	Vp,ބ8S-*.9(#n^'TR})0H-]'\"6/N,<_,2^d皐oa\n\n\\{r0\\8sp*Sݓ};|)j0z5P3X3-o{)#=,S=snG3%uN)DSpu(P Y5n/Jψ#0c4^(-Dt2.*@[@}N3&a/?5L [>s@hR.}D('N΢EXmh{;G*󄪬HxT鐂D4y?Y=tJJG)/=cMJΘCTGԩ7O Pj݉s3;P]}@4M'4s5=L\"SbtVKO#Oe4v\0QF42mqGQ..TOtUTKUU|d%VXQRꒆ<ON2\n#\nI wOOSY[d!QLQZ\0\"8AUtHîbt݉*+T#oDbj%BZ_G04^zL&BM+6K_ps3(i,+k=u;p(\$w,=	p}Ie\rO5DV\\b\\N6\\i7DRtkYjk5ؗpA+dt!Z[l+ t07LvPMq[]l=v=r	SDc4So4-mto(G&6!;2ttUn;e4r(HD%iPT)}CG:5<	kw(5G;\\hlS@s5ySjd\$7chhy2hqtGxVv䂗mw{WVew]p5q_{>bs\n\"qdJӂG<ovmUPי#	}YzYq*Wu=qf\$!oaMRK\rx=Go'sx}SV^Q:((wτSzH?Uu82}8wjigUEm=owB8c?K,pX\rx0(gLP\rG_F{ZqX[8\r|{wm[8\r)!\\7vaJ}~nq\nQ,0<Zw\rYb\\gY(X_zUq9_R9~\\Xl1zxCoiwu2\\Z4t\"+s@gXwY,uc?+W3W9yѾ9'yF5b{T+w٥x(*9VN*EDqUwIpa5sfV0x\\ywOm\r8&@i\r\r ̟Ae &\nZ	^KVeY\"㸕U[Bq%Y]Asږ5ɠy?+Vyam	]\0(EטttY`4^:5v2J?S1o^!2]GX/T&	gȄ\0A\0Fi9\\ۮH>YAC?2Y8ڣ/8#e𐜬٢NKOo:dB;{~=^8z琹'ਙ=#׋\rq%@rAcϪuF[Yg*M*DI}QJI5Ԏ	FR3}-5ѳ3?b%/Vd`\nƈ\rb35Cz:32+@}΢/Bt&;eH`\\i&!\$HYh[}yǨ]'.|ے@>D9W@FÜj91|	\0@	t\n`";break;case"bs":$f="%(l0FQt7aNg).&0M磱7JdKia20%9IH)7C@iCf4* A\"PCIrGn7+,lbdѶ.e)zCy\n,΢AJ -e3Nw|d\r]ŧ3cXݣw1@ay2Go7X搳\$eiMpVtbM Uk{Cn59.jc(4:\nX:4N@;c\"@&H\ro4n\r#8@@H;*\0ߨ\rò腱P.\"k\$b#{:Gshl5ϪҠϠ6J9>0Fî,&%iJ3*5'-I)#U.AЀ1mPS<P(@;C5IB#'\n\0xC@:tt4:p˘x	BJ\0|6hbp3.cj4px!=/;=ʃC ɋ8?C;N2^w|6'2LQ9\nL ,MNC!>ãdvCH4r4# kkҿG(0d c	pP:\rpb^p58ɤ&!\"V:5;#'֜M5T5HChӱfӠJHJnz]_^:=3w\"9|kwjĆF)A1<zsખO*X#\n/<]GkCMg#h[Vn(%茣\$7R	M7!x3&J@'t\$7<>JR6j\r:pJT~eA0RHUe\0T3խEF P *IQJ*`W\n;|VrXkV`>\\񭵺H,rRFk!\nA9p%\\%2DT8/s&RYUnUڽðܱ{1f0|[d#DBD'r~F :!rC*,ĝ.4JKEDCARp*\0J?x\"`\nK<j/;4w^K*O	'r*2&`H\nIԒPPI0䨦H)!3Xh4)VmJ;rBLL;*5lcX0֐nRu͘c3)cF&C4'P/aL)g\0\0;SYE*keu\$\r)k9FkRX6f*S% 4B&lޝ4&xI aS@e(nfՙ MR\r5~z,L:\0MC2D`TNrC#)'XR^b\$1MbS\\\0nŔ5Rk1]撰JOF\rM1R~RRpIHZ]%(rL*6)B#H<<'\0 A\nFM\$d&(BAH\n\"Po)T{\"F1R]D2W0.86;fNtaˡh㬸uIlZmtŹ3.slͼ#{g4vFƩ'8l\rW(.zaq/#j>P`CIfP\"~AWD;\$0P/xH]keQ\n7x'vyyAwΒuE7MлtLiC(wɤ'tMjH)9JgN43Loܪk`s{](!ʐR!#c\0q6=zWpS#'\$pR6m!()2~Wj?HLMGy@BHq Zz\r.dI\$(QQAy1@^\0SL`L&S1Q5H\\5	TeSČ #\\BD3~DqIdsồn,֭l&s.=4<{L}kH~AJNzot(i J|r)q߯OId  h\"&yIMt0va'˔!E(JJgICk72TYis.5~PZ\0}i!evzˆ{7- 1SsLSuQ0#BN,~34J1_`F<\r|\r~N8G&+\0-P00.0&!fu\n=mR%.ꨃ&DI,'D蔋*pi-CC`dulguɏtM(w	.\$ZОbV,<%e➠nX^'\"1\r\"\r&0s-'Yc(2M~C&\\ˑ\r`&!	epP8Ƅ%Pc>!O6i8dP֙\rn'1PSgJXP%#mk\$\"qL/qmmRodgPr\rHDЩ\n\n_q<Q\"\$LbjÉ\n (m\r_'W_U Kl<G&>\$ R=ogL\$FIF3Κܑܿ.ܰß2I%o	Rr^F\"2E+)%!Rlmq(_x2bc*-fFQ\$'iiY*\$t_,v2wd0!*\$ A&mt+d'\0=\$dM٣89	bI\r͊/V0\n.03 ʓ\n&l?͙0͜-O}s=%\"R82+!M5\"m(]4`H2FJh\"rM\$7X1\"C=W 0.2TgVC	Pb5n<KĒ);n]peN\0ʏ<&n\\EABai~bnD!Z(`qJh9M#\ngMB4B\0\npyN\$Qh`1.TcEЂT6gw/^C\r`p@)`=sxCL/c6&62fFOjT\rdKoL\$o-bp@mJ.rlo#ǭ.4y4Ԑ&}MLt:F\0АM\n>\r;R:iK]lk7GpwU\$'\"q#DC\$ v0x@\0d\0g&\"hr.n-B2LOJT~^\"ȧ!LWZQK@\"RSC\nCAJ\n>OMD) ";break;case"ca":$f="%(m8g3IeLa9t<NBQ0 6Lsk\r@x4d	s#q2T\0Bc@n7Ʀ3xCf4(TPfS9?Qi3M`(Q4D9pEΦ\r\$0ֳX~`6#+yedya;D*i+p4(8\$\"M<kXXēYNT^y=E\n)joM|*u4r9]֡횠: 9@9Ȓ\nl`6=:*z2\n&4욊9*Zz\rI<H4H*̈;I!/HȈ+2\"*\r#&!<&:Oh\"D׌06r0.Pʯ<\".(r\"\n\$H4bfQM&P2%434C|	7<0c7>44Y8ʌD49Ax^;r%LAr3_!uJ0|6Ȃ3.ɓxBR j:`Nʣ:-̍ǣ5ꓵ7\nLc0]I+\rP @1*x9ڽRĴx/8+\"0З=22ш}\"2+A((3%Ei\$6-cގ\r`ߝ	0ܝ9aV474#KK]Pl,H 0l#*\nbZ%81Oj\"WxWӀзHϲo=+?Y`x2sr06dh!.C7vK7G,a/|\"#>I!jH&C\n6JSH#3&&SIrިCpSzQůP^LJ0p^1d\ne\rPPKo7)2`߱]d\\C|#(L.0r`X	b,eR/K5gI{\\q\\9R9]qP*&Lk?TD\\<Cuv!XkcEZO|>:tR)McAַJRdX\$28T/H\"Z*\nKe+HdXCAT,*4P1bD.6t7D@c8e[a/!0fht](^\0J7u8[%\rc61;ℍ\nz\"-7x'fڌrb\\%..ET˂)iHc\r,6D\$0L߲%ϰC\naH#PJp \n k)kŤ 	k~Pri/&)X3R@@ɥivntP>#@Q|f@¡QGؙNW\nQ͡u_ւ,Ef;̪\r-\"<[bQuV'Po\"J1Ԩ\0#IΤ1TGjܡÑ\$iB+!5\$%p \n@\"\\E&[k왔#GPr%@ʒSq+q5,a#\\sxMi12ٮf^p)ԅ%:Lb+'Z56'ݑsI&7`k[!@(+\$9RX(f(ztK!bD')P%\"9&ػ|R75|zh4Dъd<W\\#&DbcF2|iECFHXCaU6e2tgeV7*dB\r6V;WF|Gn:B!5Pni\rm4v9DT٭\\(nl!ayJTwĩd\",1cuAa :BlmSPr~v0͟@\0\nd8ІV>ƷUdm7v%ֆO!(.:̞D8]|pPRo\\pLw|\r!|Wq8w.ߏ:6e'pJLja8R.IMDTcŊ!L'Ȍ\nN5).rT2/{	\\0bxQ\"]{\$VGS^FZPta?:0ŒVx\$ps-VJS60^G-W|C{\$X\"B-i<U͍ؼzf0މe)ܒO-a)R_m\"QF6w5h\n\ncQ7PYwbl'aHZJK)V'C.lEP#Dpt4lTv麧8ϞÇi#ɞo0>^.Gc=DV-ogtokbd\rFdؐJM/n@PVCUpv0=@\$w\n./OOxP<4TRPz%#\nB@0ԯb~Jd/\r0G4_QNO(P=VC̼fNvFrtF^0#ز%x\$JP Ƌ;e\0=RC^Ӆ20T.v&\nbp\"\rpq\rU4^EOJsAM\$׭001+(h\"2KF_0!	0ѽ\r\$PIΐv(\rq'l`TeMlQ!qN\"CeD2Q'b-`; P\r%y%c PY%`Vm'#'R's%0f BrgC\0I_\"F'r4>ҶNMF\rcN(IpG\rB,2Ƥ/-R0.x#-RԒNk6\"Cvȳ\n^0+C1_)2\nJXbOXK0XM.ȳE5?bM\0Rk/C_d*(X/\".S|?%L!bF4I(\"347q8L,0XdlbHBրJjPETֆϱ hlSw\"PBd\n2\nZ~UnG}8Мy;@Avz-lB]Pǎ>-#f2Bw==jCפ\$+>0# ­f/\nnkV[7#GT;1P%hD\\oGmpuH60Cfao^*ׁO4I.t7QLL1f70S--%,1df'+\"IJbJnnB8npnɿ\0\0ǔACl -ƈ,ƮVdN:ƌt,/d9E#\"k2\"3tڌ'P\\g88gK.*(~\r\$	N fR	\0t	@\n`";break;case"cs":$f="%(e8̆*dl7qraNCyo9D	m\r5hv7e6MflTLJs!Ht	PeONY0cAn8d:VH+TتX\nbc7eHa1M̈dNA^/J{HLlPDܮZe2bclu:Do\rbʻP.7Dn[6j1F7761T7r{āE3iǓ^0b穦p@c4{2\"&\0cr!*\r(\$B%k:CP艨z=	1c((R99*^F!Ac~()LH=c(!\r)<iaRB874BB`5k<<񌣒n99ZBDFo\0B4B9*MCI l4HhL\rx[f!\02ÐLb~0z\r8a^\\04Bx9r9\0J8|;%A\"1^00n=EC{P#57CkH77L^w޶l:[\\d+0}P(S0bc*:.o :(\n\0%	F P\"\"L>9Ŋz^d\rzW@:\\HWQCX&#H4!#A*CFMBbNȈ@WZt.z' LB&%̹[@V23:-{4;#Ӝ(^?6<\rЕ/-C;O0@6X<w/wJvbWr=Å1H9\r=;RQ3G%?ĳC06	I<3	%?38V.@Z(h\"\$%2 O4*^ա~n6XI\0\r@XHsA'vȑ`a`놄\03`0B!l@\$F80M~\"}\"!s(,0Lߐ(nZ):\\²V\\+xkXabp^y@\0|HsUg5\$	6LF«\$B}!tEd +PMAx:4Rz\$%UI4Y\$U85jʻW_*\\7Iܴɝ\"/#G(uX`.<QBLsҙwl*IAnʘ:LM8\0aipBR*iJQ+J\"'<v2ܕ\nIy/sZC_H8\n\\j\$~\0P	@RSIBCSb\r	FC(g愐ɢ+'uteQ*PlWPH63DtU8y]\nA	̉O*fL\0C\naH#@C)&OIl `hȑ \"\"\"ARLg	SBj8^I=	,i坧Y%:|q0.=`dDI'45,)>ߑDٴ,^sxBO\naQחfΔk\\	YI\0{F(hx3Nƥ/8_(V'	rָ'OM\"*EͰ\r\0)\$I_Ȓj!S#BFRCTҚD!,VdY\r<'c\\_BR`TLCbJםsit@\nfPCdYAF^SkBuTySYBavfӾt?GEhZH1<ڗOk9bzSJ>X2#~!<1YIIQCN	<1aLBX_XO| ɞ\\*NY)\"\$])lMTj&AyvQQ6ka)9F.LAh2 Ai?n'%xFW Wq1LKߺt;xl`tӔ]54\nwi\nq16PѸP_o3Ln<2ts3LF=` @BH)4T?,xH#YES}^[!Jh&!=Ỵh1L]_ۈfEnu\r|\0}=߱qO~xb6(痻:Bd̪\\=-\nc!;Wsոg8}h~Ƕ{F'D1kxm֠'1_Qzj\\̉,D^	EpGJɭkȔQ>G:I|=l]%sK`@N)6\$j82#,7a#~~lts4C~y^B*Abr&|P8&p&kփhaPH\r]^jrKok>:Hph3L`#LJ\n7lzgF\$͐7-@^4r\0LL!PDhLM*	JφRS*嬚aL}\rA,j.b\nB\rFuQ v'p1%0gtO-M\"\"	5\nqYg{AH-\"̶& ނqFo:NKb<ш^\r8qkр\"jNs-PߡQQđlR8\rQq;	@\$M/~B \"dl%P|B\"g`ZKU*oh?#\n(&H9igîV\$E\r7tq\n&ֲL4Tñq>aޣc\$FJd8jpY)vq&e	'_(FnX_w*p|0ZuQr,B7Hs7.\r+7/2g:=X@FN	b[\n̤<؆<KFH1y,23k12s+-@&95q2`c{5F9g/M6\r>20/T\ndD&?im*P{3s\rsZ99pB*'ӊ&sY7.PS;Ý9Re*0Y.\\eSВ4v31=>ћ;E03H3M(>bdE, ., ƣJ\$NA)+S[;bA/nt<M\\G2/tMĳ<%=\$2'-)FmFtA\"5SxFG8{\"yĸs#г@qnJIJ؏7d\"44th5\0\"6=0og#J#JH:F1Kq5br4QOL>\"5	O3^ą\rV;tlcvUM*b?zSD\$NcKf%\np0j%R POwW@6-eL5ZqWmeR!\\PIn\\	41/FI\"	b'BK\$K&BN\\c4-|^;\nLϣ_&^&+AcPI\0',Z{ao1yc@-CkbvSlăDcV&O'`%cvI34'evGH	<s5dG&\r5&\\9IAP#Pw_cBsi% d &)\"\"z\r1k\"6h\$PíCm@\"gvUigc\r,:\"r,hamc?ecƒs8O1^p ";break;case"da":$f="%(u7I:\r	f4is4N2l\"ц9Ü,r	Nd(2e7Lo7C\0(`1ƃQp9gC9GCyo9Lq\n\$	)36Me#)76遹NXZQ6DL7+dtD 0\\AΗk6G2ٶCy@f0as܁[1Z7bm8rGS8(n5z߯47cNo2-\"p܈ә2#nӸ\0ص%0h&i'#z(!BrFOKB7L2B.C+02b5,h.ۀ:#<0-܃\r5c	2\n	\$\r&6@>O#1)4\\H4\rD0O9`@PBd3t4\"B-8^xDjЅ\$x|(X+(\$V:cd3JH;Vmx<M\n&(J227=uXމ P אL7\0 Q\"1W\"0:uzSWPY#Ml7ځu;-ͦraCcPBbC?^Z64>h\$2c\$b\"k,5ڤ*'v24+V懲@PF&0ʏbk;`+	#k9%Ql>x!E;]**®*pqZur#(\rmf4C\"4x3hj^j@7Ē!:`A10:stSaJ7,d*P荊C&Gq;65<C>4QM#I/LtPUHj\rʨ@Bº#iSPñg໚ Z\rr\$CI#%IHD\nT{RYL);ʅQ74Ua7\$lJ} Y']YD{]m)	Y8ӬM܁lR<٠p'g˹&.S{TϼS%!͎gi-pp&JGHC%@@PL\n	)ŁL`j؅G5IQ!\r-25OMŸrF¨g,ȿ`)HQaPGՀn\n	Buh\r!4DԤI-,:Y4g4A) K!(0\\MPD|5pDI3ᘙXoI-6.`A\$荄]9~]	̈́Iqb(\$3rH܊.n|sTVSɫtC8|+Мzj\rk֓Q(Ɂ2e4XJgYpWCYwHEK_Si I\$0T\n7_ri f,cʀT	#	8PT@-J0Qo5'ʾċqݷs	S\rrlܫB@F\rD'onuǩRlNy@钧OMƞss\r5['Dլ|NEhIQ*cU׆r*\r1\nXF\rdw:!=\"vޞrø,@\rmu-\$WBZn/`H0YN1f4aRߑ	#!of횳͆2>242;.ZpqGA*QIv.[|>4бbЭ\0PRPOI&Em\$| T!\$\nuhO!t8Z\0Ń(j3YKKb1J]X[Cͭ𖢵y!&C		zKEE#S])j-(-E}N\r͋.wW	`Y\rͮC&׻Ej\"Dȫ8ד[M=\$K(BeHI\$KB\\Y6e@莡-mŠb^YIkF^m\nIo\rx~|BHCOZyyFsg̿T[=Xt#/!)WDB\nĿ\0Pb\r?F\$\n&FQIu.l8\0V.L'[f|:MJ[Ϣ\\F߄m}릵MySwKHMķA:\nmw=߶)g}̴xovc07˂?4OK#eɖQO3~z/%X.8ʼƢD@c\$HE}3lL.gO̚\rK\0QCb,za\"&C3\"(BtG\\<6/\"9d&fȬͬ\0ixbEφkX:OXh[f-\n\\0p0J	#l!`\nTч\rjE PM\nI%/naC.D/M0\"OPﴛ0Pr4ìbYd]\rG{lZ?CN\"YF\rd\ns\nt(qRnO\nikk	q^^0D/|\"5O!\rPˀD>B.Ḏ)<aQ{ѨBTp8WE++{EQD1lEB\rTIq;.h\03c\\Ɇ'D,1h\r.mV>\$ekBJ%є	e%)@ &t[گ%(Bq(E``@\"oH5.ƌVJ\n\nJ%#m-)Bp.ݒ1g.+(.g\nA\"f>C|Dz@s8\0ZhrcN(S/&9\n0\0K<}	f!pPaFokjj+@D&3f+Sr2()z4F	76.9cDBL2DBOi96tfHk!0\0\rm\$g8B?=&h3\"%>úl-0\0dp\"ڹl/&DC'l07J4 (+l[9\0ҹ1O4\$iɠ@-j@P!@";break;case"de":$f="%(o1\r! ;C	i9	MQ4x4L&:Xg904@i9S\nI5eLn4NA\0(`1ƃQp9& >9M(e)V\n%⡄e6[`rbQfa\$Wn9ԇCіIg/* )jFQ`M94x 0·Y]rgxLSڸ@wŎBx(6nBh:KC%-|iz9#A:W7/X7=p@##kx䣩*P@ȳL9Cx䩰Rfʡk1Cˆ:)J\0ߨHЉ\$6(R[74ã!,l	+8CX#x-.+	ƣ3,q=#(,6)p츰th@;Co&\r:PQF;O[ j9.^C-sH-3 cꁴ\$\rBhx0.\0CD8a^H\\SKz	5LcC\$4DGh|\r\":Ct:p:;K`%&K(2*=B?\r̘JC,a: BV`r1Losƃx[p\rn[C\nփG.(H҂lA}H\$kt4ԸΜ:+/n8ⱘ:1&ժK~,>76\n2ف#,/5N/33N-&^Y~ô\"4\\	QSXNϭ}\n\\-*T5-X\$\n߽(D}:- V8X,lb7Mǝ4\rz|\"Npm'ꨉ =eK7e6#6!eH)zZl7@pnYӵr&'7\\i\r'ƍ	n!2Tp	o<]\0`' q`TJPL9AW`d0y?AL%\rН?c\0\0.Ġk\rrz\$L,HB4EvC*X+\rbuZSk<9-܈njdIlC\r&5WB3)pR/tkZ;ѱ`0T(H)(z4\"Y)fG0\\#eZM>vw}\"A[5JQԴiHQ0JB65Ht224@PLLc19̣7()3bXd\\nd<;Ϭ\$ECEM'lCddH<y6:O2JߑN2ׄFʔM ((0aXhfݿq\n\nQ T0&SԿ(!p8I Ej8D\\k\$2h֪PHJ7%Rt\$aL)`@y;^Vp`'qRia	f\$䤕TLhHdꠇaoC1%q{&܆cުh>.0@GMFKB@SIAjOGIO\naP'Yg8\r>z{ɥ nF(qMod5%W.&\n@2 NY@\$O@傫Gp\\flo2[ːN@\"rI40\"aLic-`(4cS-&`+`	c&Jr\$cOql\n:8:̎BHu Hq8ȓ>!:@)zgQ<`(+p_STN\n3!i^HzZѸ\rZoKN</4Sgp!: )i0!H>͞4Qt^]73{ʈi*ZqfW̲0\n!Ϳ4@Pcdr!,\rU&Xc\rd&A\nѧ6MmwT@aJ4b*M*z4Sy*~fltOqAa\"+Z*\\;y\nNpA:xQ<Jz{qd \"eb&i~u FF̢FKK;tn;apT#jLCpmFԗgo\0PƠZs<!.C{#~'fQlulr\0&\$#',\"FsSqv!8ס0'/dl\" R ꘊ}f+9tG:)1nDc\0ODHx\\-\$(',\0d2p\ng}BHp.̏㔔\$g(gb'|mƢ=\r-GlzR=T	#j+-H4#@DmZ\nT	ˌP:,\0'4U:H@c-NBO\rBp;ty/\"3Q\rpB?Uc\nNrGegFB\$`uW1:A\"}/.\nù\$%\rj\rn!Qr0wF\rP҄H\n&0 ZI @Gߌ!oLK-E/CZ@ڟ.@Ʈжr)yWxrq<o\$}  \0mLLB_?ϝ#0:ڑwB`w.zrG\$\n%\"#P%+%Qd&Uy&r_\$dF=@zo+.q902ҧEDIұ\$pqiL\n\r/('F,Q',\r:.D`2.\$jBg<O a#FE30bR1c0S	1؞%10S=*00'.L#%oHz52m1m6\"sw82V1|::s)#58d\r&9@@S94*Iq,%\nd8\$Pa9Έ:L\$CSsC\nEEd2.I\rJ,\0@/lBE/;B'z4YNF^`~S^6Đ0\"dbGD\np4GʠP:%,tGC1jdI)`pYb2A+\$T.#Rؐk#ǾԽL!NTdT:H5F\"<\$[Ԕ^=\0!^KJrLb@:NbpDu4)@\r\rASP\\N!(*F6!\nQcQ;\0ȇRLеBV%5KS_ͨd'9S-`c32pB{\nXL7ܡ#2j>Ge4R23\"VN͢5%\nRu*\"Rމ<EC,ue^D|keSnqHK_Hs52;I@d#b!FI,`";break;case"el":$f="%)g-Vrg/x\"ZАzgcLK=[QeDXŢJr͜F1z#@Cf+Y.SD,ZO.DS\nlΜ/*	D+9YXfad3\rFqck[)>Hj!uq*?#BWe<\$]b^2n>z< TM5'Q+^rJU)qs+4,er5-3J7g?g+1]_CFx|-UtLꢻ)9n?O+;)IjtP#0\nQ!s'\n|W+IHsH<?5RP9~%3ٞG(-4COT\np7\r7I00c(@2\r(K:9@;\"P#K[Dr())JNO1~+LR0=8*ªqt.:Mcδizbm\n:ĺQnIr\"MUqљĤ E>FH	>!dhӷkAFv%PQwKjOzިOT:gE[4L]DӃhTAr,֍	z]jh2N)uw.Jb6#t5ͳ|9γ@0c9#>g5̓45H4\r0=ϡ`@i@2D49Ax^;pÓ2]0x7V9xDl5e#46̃H7x6+]|\"ᇬ1A^œEz/{&DTFͼ|/t^'<	C[j3W(1;r|PH+#ݜ(C2>7Mإ\$^d=b\$}Vv5ʍæ)v6ޥ۔F̊\"\$ap\n'|he]y(AM):E\"32vfE'/hL0GM*2.\n78!\\,\\=J\$Ԓu`i[!°1(fP{L(\r~Kd@QuGϠgBȳ	YՕXUGĆIA{RL#af5ZH%҅q(\"FqHr9#~Dx BzQwW8D\r!3Y`KV,e,73鉍F-A9(a2bȍLX1^sPlSe|.q^Q4\nH#R@נ\\&)M9v>\\dƩ9`q#Ȓ\"̢) :؝&w9]jG]>i^De1P6+BEx3-},l@aJɽ @YngL2Ӄ\r!\0@ԚVk\ri5d͜96d }\\[Rp.tC	\\\nXQ\$.ӨzD%%HME.E>a\"Ž.B;\"`ڋSj]c6.侮HN2B1u'TJaʔw\0!(J\\/Q4LxLG%:+u\$0|WYA~g(53JA\r&jhm0gSuf3\\xge8@T@1:a\r\0g, D	k1R|*BN+Pz=e\0\0(,BQ)^%P(.-ɰCo1:{IA;\\[INU\0Yn5\$b (H*]zLC޺2iu&6oi03IOI`Ce`\\?1 ae?&2*` FaLœ\${Xs#Ā2-dgcr\nREs\$R-%>h#]1're\0KTP\\*\rAr?^G&q-|*f\0cUǑ UFU	^*ƦOP-bKԦ3h@xS\n)K3Ld(b=ݪK`&,d[,:iu[BDgb0K-AomVD2\$*eOD#sC\ryliy.xӯi`\n8\rAA\"]	,B!KrN8	>U|#kIH0E9R9^0w##&7uXtOwTb\$A?\\#k1}QOoזa._{qTYȓ#\$'tP,X7(!LB6o\nZx2ut^(!:*̜zKq|R\$Wh~O܇'fPhxd\"k=n^w8a'(AG\\/t,0\r(u;(a:ދh%\n\$pbaP~>U	ċXrJ<Nw!dHì*@\rb\nfL hf#ȁJ~9*}X]`cXcl\"*Q@eNwд#\"#gge%a[90&E,_Й \n`\0\r\$ff&bGOǤHΰ-0X7g@Gb)!Xy!u\" d ,SèE5,40%.?\"%D( B]\"/#(ק.#\$D.H&02%.'!~b+3&μ5&HɨT+&&\0_g2''RA%q#2#U+&2\$#ZjL]E\02&0 #>t|ζ-!k,drp=~*\"ˎ0\$,yOPCb+ԠJP Cy.Y/n.XR)h~-Ϫ@vh!(\"+-NT(1zb-{:6l*M\"IMW,wd\\E2w҄>s#WbE?s~3HҠF9#&)>?,b1B:\$812c??<vP#8Z1#@ X^i9EI<vUJ!\rg(wIʝ/RCKT~|-<cFL\"HPH-'dLq(ƩEMC(9L\0 Ը^OWK%45?TPW-wOnE\"RO6 \\jSEEteQQiDPMU\"5ҵ:qJRUKQC4Fr^AHͯM\$\rD3Cj(R3s,L9.1''P=!rW(pWW-ҏXAkX]\$(u9Bu6\$Q.&Z!_>xESH1 Q++)\\=Rd<iDU-3\\7]\"'T1U4c_mLSzjjnl1\n>U8Q=+B%)P,:=M~9<콳/, M0ރ>&,+d/E\\V\\fHc7F6\nsEcV}	OބEY\rO7bA?wm'M\rUT_r܉BQaRW3nu⹴:2OCuXUHWm_9nV!1oQFsDkAt8KQq-tH^/ⒾI?|ŪA2.T)2QЇs52GDv{i7!oazi4sKV={qWEgp6u;uGZ\0TY}/JPC+ID7q/\0	7k+!%vVtkOłp1C\$#-~\$vT81cB)C7#o7N.ASUWA89w3UuFVk8?WXcgE4[TG{7=0sOrxu}XI-}7%ۋA@֫Mt1W*MLxώxՎKlJQWQY`GԵW},VwrbE~y39.<Y]T?LtB[2bѫt(8nT)]#SmmsyC_wŅXkϙb0 Ѡ.5s<ZJ4*A].Y;n'*x;2S?\n'֧++95YF8JugNoC%[2#?A]%gXMU}\\r:1`\rA#R~Թq{'{#:3Z`Axv\np&I%UB4dA\$@M)⾼G\rs/0Et+EixyоF9E՞CX#氼jyRac/BBәIdt\"83Nd	\"mq֖~h0/&)ZL7b-;E{߭&b1r Xp4=33oajWoc%aɺ?I΂4!A۶A8^;([	rpStÜ ՀAQb%l\"h%\"aGhWZ\\)fǫzb.=izL,piz RSS6k0؃0s/T(д䮘HΜc8v(4䁓S \rKgO#v<.jSn<[%]F4\$` ";break;case"es":$f="%(oNbi1Ir:NP`4c4Np(L,5 P\"\$N?!abS\nJE9͎R	 2̎gC,@\nFC1l7AL%\00LS~\n7M:8(r4FdJ%&̆1L+\"	oX˕.MQv\$g^SLawȔuk@4 <fqոpqq߼n1Cu19*`(ȭvI@U7{єe9IH	J: b/;\"J(-\0ϭ`@:00	@6/̂򇸍Jx)CHҥ1]\r*A8#B0B`P\r.x7+2V҆i\nZ.B㛑\$L35:\n)+ݽ!H\r|n&\r7ۆSc # ڵ>\r\$8@1Hz֏CԉH\$9p\\D49Ax^;؁tIϰ\\{\$2x\rz&zT8^0( kLtè:,:6ҩw0i 	èʜlҵ(Cʘ4H#x:,1LH1TΏUR`8`P2c˦x@:MLk4e9 	\$&A;(&<C/)gC =<%Nj)\"`lT7\n]7q%8S!̌Z%T1?͔\n(42\$J,-؊<@G82܀\"I0H_\$_iA菚>rLрv3&73dFj\nޗ#sLTB3g\nZJ'0pZ c!VPPI%N!\"溒Q`ad(T3ą6 R+ !eCɩVu\\+xXc)%(~Vb\rAE8ŭq.H\$Bz0{A,Й#^!pt3\0_aZ(1i\0Lb[lUXkcjzID5ID}Z5UfT>:vteUHZ !oB	i@T;(aՋP+V/^J6-h0SNi.`Ǚ άQ ǅ!=*,(A{5,S(d4'qLTl8:Nrc!h 2=-xw9D:Ayq\0K@Aj8g^}%P@VppU1F.	 ^1'IaCIRP;sp \n(64Hd)e(;.'P3\\8ƹbEf0/ITuIBn,t̞%	\$<:*,'4C\nZ,CF<RtRPxS\nTCx 1oԚԔчLמ+`2YT<)cQ(J)z5!@\\A	YU@約Qّ(5,!E\\Hl4Aoa!@B`IA)^@xR\nWлc5d\0&Hs\\dA<8[JY7fW?5NyPٻr4VFH,<\\O\"ȕ<7So[MAιQ+۳z~.³,y4/DIH(ƶleM9g9<ōz~]I.쐥o<\n7ٜ*;%Ӷxni(j9\$LM%@\r(e]W|jT]ʯ~ k3zr!gȝHX0A]ޔ8Z5^Tjsd{\rל	6[). eS(nMFl7CK!P*^p5/(Y&>؎PԎj8:{xX7/C!:nFMrNGZx.-GqO!\\_<M%1,ǹba#i4('[9rO/0hyWJl%^0'jH ,YF|vAT=1s3FSr\0':ȷN	ZN5Р\$	7f7Ô]FR/\$<6dD\n;U.(lr1F5R99H\nl觤y\0r\r%F,7_!LşUu3r1zhF(pWqH?j\rD0j.Se/J8\0lɌm\"'RMϔ.oLC\$=K\"KZ';/<xG6Tя'Gzp\\	FwNZNdf|Hpvᮢp5,]ei0j(+Esϱ\nq\n7mpH5o	BFJD\$<-X/Cl-`P	@/Cfe/pBj\\)hCH8R!%\"i\rK-JL0p\"bR:\rf>L ԧ1,2٬dpӆlp:f},\0#\"L&g/'%Ϡ`\\\r0\\ML#qD1nf\\p-D##\"\$g/#\"ʫPX-'0j-%msBF .ɱ;qi+!rnfNGLʙQR:aNO\$r>Cϱ ðS'x}`\"BM%%!d`Ҁׄt\riH!i@ -AĂؒB.2ң)(s\$g*\$'#B2V,B1qr.\r#r\0Be9I2=ġi%0%m\$	\rtUJi܃vc\"\0]ʐFj0ƳD+\0cBL2.wS:bpt1\n3l̤NO\n0d\rVcL.B-!/`I\$u,C\nZ8c-bKj.3Il\\\"5NvKǬ,+d/t=<JڇLܒP]TP[,?Hc\"`PĀFf~&sCJ\rfωISc\"e\"/I`0ҝ)o/0Z/Ԃ\"B3+GRl)x!cbH0r솼\"GELvml m̄uLC0(\nI0S	\nd'I]cv\"?v\$6vIm7oZO>GOGNrPB1O1\0޻.\r&\$5L>:[&d-F	\0t	@\n`";break;case"et":$f="%(a4\r\"e9&!i7D|<@vabQ\\\n&Mg92 3B!G3u92	apIdCf4(aLA0d2ࣤ4iF<b&l&+\r\nBQ(ԉDa'89\rfupNI9du'hѸ&S<@@tϝNhgP9NI9;|)@jjC,@m\"ٳq|F=ZqF̶`*y㹸@e9Rr!eX\rl#8+/H:Zh,\$4k§C|7[־Hēè1-i5N;:*-\"#HKp9BB9\ra\0P<B87走\n0)xQ >\"xHH.1>H2:\n&\rjP¹*+2;@?[8@/1hX\rX\04p|4C(C@:t㽄\"-C8_\n#Wv\rR4P\r#x|țR'8j+|ܦZ-j2h\"죷͒䚭`P5P!΂>8A@ˊ\n*41\rhB\"V뜣^*%L\0^IdՌzHBxL}jDk#,r\nH90ycH5J;nX64<9lc(h@Pvf-h(7-b\r3z\$^xm\08Zm=<5chabq#lB*Wݭ8@+\"LGH'\r4SPϪ9{C(֍wȌ1!Cx3!H@iH68㱃φCSUW3F	ҋ#2\nW!)-Cq7\$FJɃ'h FkxʵV]~Vņdәdyh蒷\\FO-ռOr90d-S\n e\$ܩ%A\\U:W\n^+倰ąf\"h|KEiCـt@%S^R6|f1Pf'z@!Q+[T!%Nl\$Wf5p@#lTydҨ j԰3Iӽ(eC!0)8G!f}@PQFrA\roi\$p4&ҘNL ?\reZҶWI|kށ=ƽk lq1[Թisj\n(!0=qheŶKeP\$hCHy/qFթNlLG)KC3J1{calRT9a+d(jimBDrdE#,d#a8.*a)B`h*O%']`%B	9:E\$)SED(AP(klP*Vw E	VPfm	0ĮBwnMЂRJQs7T퐁\"q5(a=ކUqABWфDdur!w.BHB~aaAjV_B6dQ9N\r9o2rsy-Y0q;011RH(UՉ]]r	+?d>Z\"S7a\rLvD4h(wHbLj<LNlx{nEc-&.NBg[d}SM5PkmWE9%o%@B8GI(8qxKH5a69MfpLCS++PPRpWO17*sDVtp␵D!J-@k<2CL)8VZ;djLGCĝl	19hv*,	qsRWye[E\"S5V8p,#bËgVЃ! `肐4g,L@e?iMֳ9zb'0ELӕ.s\"w^dO%S͐أӇ!&!Qa,	z<PAG_~Էm`6W^ʅ'`q&VM-'bYe!\" Kxd^S'tcPh@+HDkq=ް_3n4^2nf	όln+V~o^/O!VRL|sAO\$ćD^'J!oH<F,FP,6t\\h8\"gI~r,ʹm{6\$|h\"!j˜!pz\"d\njN+6Cp/v/\n\$MPp|.5ZFXWC8>&.DJ[djf|deV:tov.iVF؛,2TDGApM%[p\nP0Etc\0>e\\IE`\0S\rÏ\rB4_`1yPbqoQunƥ򪑔`# P`\0ÐE*Nx\"p\r;	nq' P܍\nԌ	Bct	(aC8!\n\ntېyP +r\$lN^\r+	\"r:{҂`iis#x,h=RZ[ڌ\$(1\"}Q\0(љa)g9RBrTȑbreD#/x\$%'C(h'r c3\0B&v/2'2ދ&r.2n5/gN֦JI2+Ml}oiJ5`I2S)%N]12rk3os:\r\rلGQKc+Q2t\$N\0֢ΛP	k`ٲ|as,*'\$'9\\+;k;wS\0e\0>5	ӸbF(GH3R@Q#(Pd\rV\rbJan,\"|?K\npzf\"\$A!n#JN^PP\0`ۀ\0.qz<Q#9m\r'EV'>Lf\"	knh!ûBb]Nhl,spbĲ-f.ivD~!TTr17/zBr3C90\rd.CKj_3j+4>M B'Xf\0\n\$ESd>\"j@\n-uRj\"P-\0[Į#ObHOmL240MM]N\r5/p0\r:8yțg`.\0	\0t	@\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ᶹ![vM@2ka>\nl+2H#0\n]SPU!uxd)cZ\"%zB1C2o\r*u\\o1g{-PsW㤵>--#JK<֋TsFT/\nS0&>l`Q\r{US!\\8(7\rcp;\09Cx䗈0C2 2a: 8AP	c2)d\"rԢŒ>_%,r6N\"|%mT\$͊S%楨J>BM[&%ES<HPW;'ﲲZ%nS,+>'.r%!R@ȩbҥҡ',2Ϣ8N\$#F0ҒЪ@XO,P2\r\\\n7@0c09c=o\nЄ%\nH4\r80`@Y@2D49Ax^;܁pVU\\3(ր2d\rT(P\r#x})ǒCHIAhHS,sH3\$̻8~Ƒ	#\0Q%<^\n7W(J2<nTSB?9+2KʨLZ)3TD%D2嶘HQ,O/,kJ,/EM\r/,.j\n+bMyjV.2E˭<8ڟy2oA*(p(*Ll3#u-'NXdK--'⭦0Н߇S1sa%3wY̐P!x7ǸZ!\r# 6BA@w?Ct]\$r! (9@`B!∐B^0tf|UjFt H9w%r<Lh\$b6C**!N1ˁp	PЉ3u,(P5X6 ؅8j+Q=\$Z1~kKhzd\0@P_Ux{U CHdUP-e\\ru̺#Kw,]Iv\0{#)e2%fn\n-60=G<J\r _MR\$dECg(ƨjB.!ꐨ7쎤\$[+mn¸*h.ڻ\rMvJkF\$vPeP	b2=Q,G<b1!<rnKhhBL @C`l\nheg3@(êWa:Ѡ94!k &Cl;4#'R=O9RtuY\\O'䅿CHP	BSP0L SN*B	xC`Q1ɘzA?@Hj!C/\rFP\"JjU(dF(*&(_:C+095t)78,24:jC:ܣhR0-q\naH#S`t%6'ÉJS\$Jrj\\	>pR(\$Շ;b4>qG],<	\$<+ l*Ba,{ÈuCp3 d1'MbDufn2TǨF\rɅ\\ǮHNtF&cZ94H.DQiF`Z0h'I\\LdbC:!*U˖܈cQv'Iը\"Ka0I7%N*!\n	8PT:@.z LΦP4ϔ6%b9*J0RC5>SԱy0D]3 TñyxcT*^vIHj{ooNֳĩ>]up\"S5\nr7.(]dg\nF!vG3YH{bE0d[)#cMmkD^vGB\\|]6Ym`e~`7O3Z!|bEK\n8:ۙ>`\"%'\"ba5-,\rW@Kuhn}۽aTA֯00.ZḰ{/K!P 00\n\r(a[{\r]ӜRnCQX3^W!!*yFǓdXd2sIgnkӫGǏoMMTQ{=eb|=\\\"j(jǕ|24+}*-'W>~l,4>eꛬJ.lw/'KmbrNdyͰLVCT\$6ȍ*C-e-\nCdQ*9#8CpsN\rPH08B2LPy\$&|\0000DZc\$4ВMnjІV\"0|g.f'NX)vRnf\$g\n\0mj709͑'-3p-dS&X?pSE<:ǐ`x&./_xPgH1\"q6!{,\rb062oR'xk &ߑXbTk\"geQ_]095:B\"*;D|G8rte6d(60Qb\$tX#6i*w0^3\nǐQ2Ia!!~],İZw\"5\"Q ?\$,J{<PSNtF1>RdN*j?A\n\n)CqV8r2#j5)'}rxnp<)%\n͙*%Q\nIyO:n\r,122I&9\$!\$R⢼'\$0*&C#0,.`֐\$kPS*s0C*8*43.H> ؤv@0`Ȳk/r821S8ο02D>Dղ7%,q.b_;%)K-lQӓ\$ /0BQNz-ZJ`:gJ{&zͰNb1\$T%(q\"zR1z+?CzJa\n61dON'BQB#°!@l.)T\$(.8q\npb̍^-{iGKh=#}%)nlDV8c@(/FO{LP{D?\"4]C,SlBE*!ATBNKϰ0ChQkbcȄoh)_gRϺ*\$QmS1.u=TB#z).,\$ :r3xMXmVFTqV'ʉd\r_\r8\"&r53\02GD\"UZ.lP sK'SASQ>a\"Ssƭ8Y9]]G]\r@hPRIpM+7<3`";break;case"fi":$f="%(i2\r3 2Dcy6bHyl;MlegSnGgC@tB\\ 72	aR,#!j6 |=NFt<\rL5 *>k:+dnbQéj0IYa\r';eHmjIIN_}\"F=\0k2f۩4Ʃ&ånap0i݈*mMqza͸C^m6>㞄;n7F,px(Ea\\\"F\n%:iPn:lنhA7*bn%#\rCz8\nZ#Sl:c٨&0p*R'(BJm@0@L7E^ԥ+G	#zJ:%#`#N	K`!\nBKJI ҕ#\$;<`2PI<c\\53D C93I\rM'&Hز&,	!`@~M\0G4C(CBh8a^\\Q˘\\7C8^J; ^(aض\r`x!R+#;#l@'λ@݌S!r52^ر\r&\\[O:x:8fMU*2II++-æ`\nH	p7hiX =j3LY=ݬ3?B#P\nN9+Mb*q?`Ұvidd5XT(j{!s#cm%2Nl=ݼ6İ;?s1{>Sܠ\"	* [ÁNfůAMil5^Ta;7w#S̻TYlYS42	=+\0:#Ho(ҥ\"79/{E}CN7P2jP)r2zSY~\$. \\LS&x(n|=1a(32҄`F0[zpi!\"CiAh7{:(ŊKb\"X5jʻW`uKrX%e^B6kP\rq-DTj#[ktp|	\r>`&Бsr7^M\"DMAV]ExXf-C\rh5q#;Zxd\"GU)Sbګ\0O;/45c\rmvT95^Ù~Gtêda.XnM`*/n˨LɓWrg@<ke\$wa@\$&м@#\$'J@Ue.DR*h\r!M,&Fb23&oSIDPerRP͜(PI,CЦ6U?OO900-iq#\\al?3@&Q!vKI&ܒ/cѮ\$!_L;g\nOཔJuQ,(6lB|ܛ\$\0 -\\ RC)Bܹ5˔=Hg%U<BހV(K0\nmrvL0T\n\0h&1 <H	\$\$Dr6HaD|Wp \n@\"p@ &\\C	ů`ZX9H8q5\"ֲAB	au쾣TuIk2.3X6SӃ|0<I(J:jTقon)9Qj+:OdN#,-+ӻt6Z\"ujsx\nuSC-eZrLsaB88s4'K,?꜑dy\"^эI/E88ܛCs_)|_15ɯλun-5\$Ltcx\ng1N{5G^RLh4rA0h87\nzW7\$y]\".'g<C	\r%k1qc1h2j@ a5pLTs\"X@Z\r(i4i|	|x<qȕ8o䜿/L1nMi6䥉/Nˉ:<;!̬4! ާ͸ݼڒK_Lw':X1_Jݲd%EoPػq&!,+-X\$Bʑi=	Jz-|((\riO?:PD\"<ʉaA pZh	gøf\n%ཪP}f]s(djR=]OпM~a&u5CIvseȊ0`(e'%e*q\\+﷉BEX^/R#Nc cd&	J(_O.|SFɌ:k\n ʏ̃PG\0000*Aɯhdp)/>C0`4I|OFNhbNnBU0K	N6\0פHh\\OrMP0 i*nd'n@JbQ\"3\$\n,q\$.8~c@MBj\$@FKT\r8SL=c06pLdr/O-r1L\\&&,D^w-BcUl\0qsvd2';h݉{--LOpZ5	@  NBT.>>~\r)W{q\rM	m10G\0\0fl9Q!+!'Б!\"h2P6\nf\$)V`y\$@\$ɒ\n%RF.ϡ %rdCCs%4 @\"P((pI	^o(rzsRM0L6W\"%-*c*h+r+,\0A,B`m> %1ʑ @r͠%{RS `ͣ_m/M0k1vI5ҋd2Ģq3S*.5Pc eܫ\$z\"L&#``.PVsh4#doΊFr70a@(JnU99:)D\rV6x+Prl2htJdQ\$\n p'G\nLRPj.0ldR(&&f^TBŃ0LAX\$&5T;`خw#k1+STJdUmb['hɂ-ClCLiGdF|`z/G31tD '	IXFQ^F\$ơ2\r8k \0%\n\\`,\nN61f\"J\"H\"h#nTMfNOGCwNe0<L6e79t8JH#F%RdjsdЩsM\"";break;case"fr":$f="%(m8g3IeAt2c4c\"Q0 :M&xcC);fSF %9ȄzA\"Oqo:0,X\nFC1l7AL4T`-;T&8̦(2DQ4E&zdA:Φ脦\$&̆fn9',vnG3RtBpv262S'I\$6N\r@ 5T#VMKxrrB@c7iXȃ%:{=_SL\n|Tns\r<36΄3P\"Ln7;N15h#s\$88!(V֣p7FP2Z\$\r;C(2 (\n)`Ep6L\n\"(ê(c@a\"\n!/L\nL0PI쒜B8CVʲ).qT7326l9ϴKdXPT2C0\n˴J\r@-Z20hʿj \"ҵ\$A`B9}42OH\"N420z\r\r9Ax^;܁pXn,3(C,2`\"cp̋%@|/pŔTa;^ılj51Hؓx'*#(#c\$Pv6h @7h 6C5|<K~hKbL9A6}B8\"e-Dh?Q!:3;4Ϭ)M*)y\\ΣlH!vnj&\"^&;02D|/)vlUƨN8~eT)\"bN>vI#p-dS8A2h' E]]a׌\nR>\"8ֹM^!V6ۚxYD&AP}wPϙfFx%w\rXIiBR0!\"@T&0<oqP5	lU#\0`\n*GB6ar0I[\"3CsP`@S^\r/>C +-DC	ZlU\\K;hHZ]%.Da?@J	\rEiqRS-M,T'GmHc}p5ʹKw.R^5FԔV(6@a#a(Uk6ga(\rS\r0b	 C7IZu*x\rذ 'v&ւd٨hbnMXB%BÓ1\n)::Fe;9!\0\",iJQd\$7ӐII=+իjY/lrz=(NJUO&bt0b\$&CԆKQD5ְ\0i|:(#t@p aL)dT)4:m7L5G֨J\$WJRV(Cl)K \"dsN١HJ\"liM<6WkЃ\$8#mrZW\r/Q\"lxS\nIa	TjYn9e6Ö́\\Gd 	U&\nћcPo\\@7rM9v1\0)Aց+#N4E͉,Π=#!hxNT(@.0A\"ZO{4奴܃f\\e48TJN	)lY=x\0BOf済%՗9d\$S~xhZWd]{f:^hSYt|E5%c}`Mj=/sr~CG<LI`!M\\\\S L϶^\"*\02I&b@%Ff{%D5a@Mj|&toL먶|KtSoC`9):Y\r	ܲRr\ny@CC3{'[6cf*S\0UYV')BK6<֕c\ryzMV*%Xr<%YN˗%Tՙb\$;(3}KUNf߅@BHCw·:(%\"Onz[h\0C9h&\$mVGvKZNCJ*-+Pl7e\ro`Q\$h¤?m3OG;\n=^#ta:>(K\r|		\"ɔ.QLRRx,pdD7jtpt_!ńJItbk1Xt2 \"#j*q`FbfimqJ\"	kBOS\0BK\$)*=\$puHc?o\$`#?pBtp^~Pd݃kI̐uFPŞO!Bm&j\np.\".cffE	1P~FBߦ?:*ϧCw	nxJX0U)jQX{mЁj-zPC-\rBKPBq%\"g\$U\r:a@e|pVf\"#n`OQy/L:\$M.#CrN)q9!.đqgS8;LDTmŠ\$0p&k(*Cr%e0ʮ4ތǢ߄|V-lA'a2mZ!PIK.!Ɯu\\\r)#c	D11(1(1(Eb\r&d\$\$P'qI07*|(qҨ2+\r)[r貽*>-y%V]\$KiC 4lR\nR11eg3s-d[-V_`M*qs.r4D2E=cD!dT2P?,2M~A31 x;}73HGv3G6:\"m+S;92:,;;ơ5N=N\$K.4H@ʯ#b>\0>Bm>&M/)?ŉ>2@3ú.6.LR#SD,,P1,PGC>q-D=KC>OoB>O,ny+_(t0AsDp7GHC1\$?q@Ujoүgӂq4vKDsLӬ'L3lB;#hxkRLKa1*|mNE.DPޞ\"\rVŀT36ӥGQ 2WMdP1J \npO%QWTd\"\$.='mJ~SFK4FdQ1OeT\$C0U@Dcq=d&6#ESR\\Rf|#*j\$3c:3</|CVvHm_f~qk`Pr\r3Cq_ME`3RSVZVJ*:҂ o`mQsfGâlA=-1V\\`ʇ*]\n/&E1˸5)\"_:S@k)G]&ci8Pb \",a\0NkIqp#";break;case"gl":$f="%(o7js4Q9'!@f4SI.iXjZ<dH\$RI44r6N\$z 2U:c@59\0(`1ƃQp9k38!uF#N\n73Sue7[ƃfb7eS%\n6\n\$s-]BNFS z;bsX|670·[VpL>&PG1\n9llhE]PӒq^k0&uQT*uC&&9JӐ: @9c2%#&:¸M22CIYJP#\n*4*\r?hҬ\r!)!:C*p(V҇4@7(j6#ç#B`%*~ԨJ0\\6<Z(Co9+dǊ	[@i@1@#\"@M:64L0ȠG8As\n43c0z\r8a^] i\\{\0UlJX|6.3/)jx%ʉcүn ڏz8J#d=hƧMRW\rB=<,\"q?B7.0((J28+T6jJv='#7O\rU'j\nˬ&)(G<ws!x\r\\\$#;631lzqjRzp9.~R2BdbxDN\\8\"y`lNOC☢&U\"7j\r78!OYu \$܎#4l۪9صto-Rn(5\rT_(6ǈ#.޽ u/c'aR\"q2;w(t>\"DOXQ\nkB4\"Tq\"L-jUaac\nnE\n0))6fHD~VR?_\rڅ\$AC\ndj\$oD\$N!4`!@V(rV8V]~CRG]c,yE/n( }[|\$\0ȼ\"-7+xS)@7SN@Nu2\nV/J]+|ĉ',HBZNվ9Rb>#\nޢ\n<QD|P%BIbk@jr%Pd\rYJxhXah%<1	3y	\\=Ep`l{o`#!=Hh9t=9į4@\$\0rB0!ļ8BAC0\$bD:J!mpާ&o*.\0\n0i8`_c玅pLb]{rcM	RekTj!I\"^XK.xka) x&PKj{9G9N&,<(ʚ4FpU嚫4C*e XB2گv>fҽ)7\$YVam(\$]dCuH\0£=%ŷI܎l30aY -睤¢W3O	Z@KIy#IugVT&ay; 3q&b\n2aŒ\nZa*!*PHZ!J}P*\\\0IPB	H)` E	\n7d, @3JRXOcNʁ\r6^Di1P21E(rfI¡4ʖxAbCErnU>9<^UCzF<:Z{8'n=/6sN(Rg)l46I!ͷt/5ʚkTQPuq0c1֤Д<˄Y\"PU.	tg'63\0\nb4:J{UO5 QY:l_r`R	˳׷FFc\rdCZ8F6ѐ(sME7|\n!3kB2]@()*AB-ah+iP*`0)z@\$n7 C:-!ȞVgLc@1)\0S\$0S73諨%TC\nF3pB0<tA`'GAjuUL i/׈(cPzzj@ҹFwKOw^2AdHF㖹J9mLi_?FrЗSpFI^{G(bD'y2v]z\n-ihsDn:#/LotZNk^?.HK&drCG0F?KIv'^D\roI\\ݼDe.pEOg\$ӣNI@ʙ(\nLL.OrlԢdBB\r\0u 3~\"ZcSvJ3ͬ{lmůob\0e0XͰwuǶ{!H	OsEϿLm`M-F(nN0Z\r\nxÐ0\"/ķqݫc7	q,dDk/NGfGBΓ8!`1+Q6̱Bdv@jܤ gH\$ݑ,Ov*f\rnw\rMPebu	e#Q{\$q\nȣ|#q	DqH_Cp'2h@m\"<Q.opPЮ4ĕpP\$к\nQR/\$5#phSq\$pRF%#e\$Cd2g,3p2mjRҔm{)=%*&)2W1',Pe%pe+cGƖH&!-\rr`ʀb2/jf\\wµ.N/2-MR_2.M2\r<52:4S%3d>dsjHer\"bH76C6	\$`ҒBMĒBcRLj\r'4.9#Z9c]bO4O\"4'\$<6~HJ `Ʀ ƞ3i7(vĔ1E6't7%F| \npP*#,1!(xry+\0G*3\\cb:?TMv.?2i9+^)?C`q*E	Ԁj@FF3>&Єm-\"	*a'T.b\n4ԸDACLMLM[,LVTMClt(bKTp47Kw\njm<d<4ZȐƠmpԌmU\"hQ&A@&\rzR.x1׃o\r\$Ml1dJJ1hĄ	j'OL`/C\\RL룞`<M^j *";break;case"he":$f="%)kƺAAvUkb*m(]'mu]2וC!ɘ2\nAB)̅E\"ш6\\׎%b1I|:\nh5\r;*bJu<UBk0i]?F'1eTk&G~_&0EAd4U¤MBi~ŕ\"U hn2\\+][vGbҥE(ŷMƳqnNG#y\\\n\"Ne\rStN/c2<\$\rC6\"iJ\$\"k'*V*Z9гw3rk(@s5K%L-LRk{0ͬ<Z\$\$3iH/4v-ry0b>%zZHiR[!1S3i|ľ# 4\01o<=s;#7?\0yK3:xW<<As3(42z\r+<(\r#x}z6\"ݡRT#Ap+\$4ɲ#J9\rB\nr!MrO!B&hBHJ9f9/s4(%z	|dkw!S#\$),\$ˋ5E\nH0P,ȢZL]JJdlN]6ͧ7R,H(L7mJ{\"#\rs[c78R!\$2Kf\"z^2_8q9CjI[t\rH\rz<sϯCό]Pp;\\CخƺBHfi*,O8-8%IzN8¢,#AS4mkRB7\"T'6c\r8!{!X#RJS9a\\\nQUNUZUX7W@:0U\"Ą:,IPeJ&d?֙ۉ (l-psGn'Mt@\"U\nV*`UV]VlXoKE D!'MH<7%Զ͞Y:qSBfyZH\0T\rAul\r1\0xHr\r~sC` `o@)sr,5D!טf%H,\0P	@z\nc+.(!nQ!7CisF)}\\\rZA[3I6I	G),sÙPNJS+\0Hc3y|'c!WJ1,7S9@1B(g)Ľ\nN\$֍r#!r̊1'*&XU:\rޙSODIܛ^G8!t7%x5ItqDDX[KBO(-zO\naR\"(YLd&jaU4E-bL-iU9dM`/	)рۛ_,cs1ID9h\rR'ftFSwL4\rjXl:*0J͂T!\r\$Ō;.7sb(ӈ+ɒi]ZH[adUR̍\$THMn40^;[Hl^rr!\$fb9xn;Ĝor%Լd5ףk!Dq!BE,ZC]V<2\"^DWhѽ%JK߃]>>\npD2G\"DDvrѧQ.&I,XBVzգ^c\rd!#|(eVu8,y%Ⱥ2r7|Ƒ\nZG\$YvN]Lef\0cNjpC	9ܠ,JRpurkgӌmd`'XHwV	o5nkEH.sv5JZBKB}d)iz\r\nt\\\n#w{6ĸʷ|9@f:CFUb2oݼQGӘ a&&HX4`L1+#aDlJ.[sm#^XeF6ۤK\"s%t3-ksfI	b<0Kћc2ZzGn#-=HN/9*bF8sv/\rڼgx֌[u}[֦/y{w9mϛQW|\\]7\\j+-n7~hBd^m-}9){te.foq^~Xsۑ/sS ){7ͥLiImJrQ{Zn	_޵rh&\"_i1+)dFn\$̮+䯚H>slvAObzVm3]\"Jnc0BL\"D/046Pc'MBJf4yj\"CЦcP-:oe'M\nPrhD-\08fkq͘nGJ\$\"à/0g.P)lz\rB\$KW8]Fc#qɄLÁI րcܠt>.	 iV	LCB ؒ	K~lzxF({A Ώ% JAxIQ~8Q\"\$d\r:q	m:OR6\ncZB¢Zi`#t!z:^/-D:\0`VT8Ќ.wD7*bp(*B߯Rq \\Ϭq\rN٢##{\$\r`'m!ʊ%|3D1FTC&Bn!C2\$DD**`CEJæbp1vd<p&#PB-l.+,O/.J}+.-\nCT,r2p,\$ezrlĆ,oNf\rb+vZd\0(hqHTc͘x,D%l;iR.2a0\"BM\rx\r<@Vgdl:!.*Ӟ!";break;case"hu":$f="%k\rBs7SN2DC3MF6e7DjD!iMNlNFSK5!Je@n\r5Iz4B\0Pb2ar\n!OGC| L5\nLL<n1c*))`k56Lԁ:'Td2ɼ 4NZ9@p9NƓfKNC\r:&hD7, *msw&kLxtl<7cVAgb=U\n*GNTT<;16B5x73Ð7IP޸oX6*z9C;\"TʑR&XҧLlR*\nh\" Ȣ\$\r##9EV/BحCacz*.6.51*e,\$HZ8x-\nձ2RYBR4{{93\"=A\0 mk\rI1l(\$t 1BA\0\r5L\02\0x\r	C@:t㽜4ґ8^!xDl.46H7x%BR#b/5c')zh˯n/&	aaCR'@Py#pη#ΓNC.OD\rC'װsk28>]6V- 3#6ר2B[dì12֕:v3>9V\0V@zl %pbP5+ktr80&W0LEL󛃇\njeЂK1GH_#-juD:=(6-3#ű#mHkx<zxZGJjw ܕ7@gŁ\r{XC2\npܪXs%A0Fi4H%MYF(r4@!P3N)A?zC#ᄻZiwg0R`\nl\njP5\\6Vp\$~jX!e,Ŝւ!jpȳhKoºX]dJA=6*Uze\rRjT1t?\\-tȟp\r\$+V*Y+-f\"][@Ø>z!\02&dZa!r!h#`cy 'KA\rUR\rȬrSO5p#HN)3D14b9,9D3\"ȃfyTC3\$-VfdߚúdA\0c 4Xc;E152Pf{\\P,p@@PH~PPOXs\"\$!5Uad5\$fDɩT{rJOT\"Ip\r*w\$huTfW nMq\\dph 3ck*DijS*iMaL)bF[v\0[`ddGVp@OaCHԕ^LI)pOh):)58zAAO\"THy4u\$.'aũ2zYmT׵\$eb\rj()ɽ !qlN@s\nUhbrNHtWE4[8g?-ېz7KhU\0Ssd	0TNa,I-T)-\\2\rm9P2jp\nуsLia^Cxp(ռu)t\$8Ã`lMU&gJ E'2}\0PLiv%G-ƙN.kQ\$С'q\rቨSkW&Me\r{0uo7cYPlc@͚sOA,YR~hPż!Xj\\J7Vua\r2(҆hRHb-u{#¨]ԂFԙ&Dl(w!wHn.a^_tYu .ڂ;am&-Gpc\re!zk*eGضR*[Sg\rp9	t˳8r&)&~]`EF<&~KcGBT!\$HCIyP7Kin^Pft;d༪2r3\"PsI'9J@\ncfw{˟.9c_&)UN|)B5=0~eIK'קwUm:1>JvRGsߗsnmz97wq0EYM)X5B1:siL( \0CҦjpb~=?;[x7Sim\0\\Pn\" [p|pɎ,/	%ق:&9Gk#L_	jѷG8-me_ä!?ؖ&i{zl駴#l\"Q#C\"`BzÒ0B~-@^flm\"j)@FTL]6ìmz%*.vD}\"dGrf.f `%kǈ/0t HFI\n@Р\0,0u\nLb|vGbw'fu0%&n.?-hDt@.([61c%ZcN(vPʏS~`؟0\rk[lm9vi~L0CDέ\"2`ujgIt\rez\$|\$r,fJvz#w)*5\rLN0O2h1^ۑ~ͬ̏v.ݧp%`PphS \r!R\r;P\"0w e*	/#nԲP#E\"P\"2EL;W#|	b	x\$##(o, C8BR=!!m)%kl/%˺a@\rJc ^r2rg#'+pl;9%.9BEBҤ̃!T0.rr'ҟFAs+M1rR/&>0)ko2O2ѓ,R;<h6dʪ~>!dDMSP?TAFA6-5h,~@_I-S03Sc%9*\nS0s(%\$*jࢆO<\$+3:3=s,/?5'2Q<>Ͳ5PNmFN\\ðH&)TB3	d@N#d.oCdOGCXcsE[N6\rV^eU\rRETږL\0\np~I<%QǤCcʮhztA&O\"\$\",\"G}BsD\$H!4ࠤC\0O0HO:8J+\$A/) ~`޼ħ;S=7\0g`\0o:PR`f~;nbo>#B-CRcp4385ҕb!X-'X3cT5|A2hHbn{u<R\nf&<TZaB\re`s l	rj'T\$Vq2\nN^?z2@2\"4	CTa\r{_(ΊYY⢸0e`-act\0b&\rb)0a8)@#b,Ē3R-afϥF@\r";break;case"id":$f="%(i2MbItL9(g0#)a9D#)rc1M'I>na&ȀJs!H\0Na2)b2ar\n 2T~\n5f*@l4цa\$E8S4'	ldu'c(oFe3htƝ\ry/s4aUU/l'Q!7nS>S/W95&n/x\n\$NX)\n3 Щx(6ǝӑ\"\"CiߚyӇ!9c\$9:A*7;#I0X\r|iR(ڑ+#:>%:068!\0AmhɬjBS;87QZ%\"m N}kZ(H)\"8m	\05Rڗj6>1`3XƎKDâs?`@-@2D49Ax^;ru4\r\\z&o2~\r34ƣ^0\r(	Er%\n5+Ldtt+sx\"7?9X6Gzį%	)w\$H@'B%0b ;@%׃@#\":Z1q,MXJ(Q\n:}i#.#ㄖ4)\"`1Knb׵4J\rr+!mni%~(2l/=BKTZs%jh6_C~+/	0@Lj<B\n=#5`RS\$h3E:	y%\n{!1!,s̀@Κt4V<(jv\n\"(P9*:/Q&6s&eb:@ HC|Z5QMF'J7SCQ%h7U!}p1/47X_uג\$h	B?<7eT:{9H)%(wSOUNu@q!*Vك]7rz_,aG]!-`БcA!c,#<. SNճ`}4E\$@D\0c4t(Pt#(Ŭ\n (`\$=&\0_\"eNǥ̑2`2&	aMty*q( GU|D 9:;phxn:gܐ(ENc#I3Shc`	NS\nACJ\0K\r&L6cfT`3LT2C+W6@J*cAƦrG鰔5&@CY7Bd\$0aɊMFCHËAdWT't'Kq=\0£+DLy!D+<b	E@n\$O-\0DήtNWh2l0@eKpF\n(~\$<YkzROxO	*\0BEU@-qA:3κkc2\$3XB!jLHβA.A:'LRYKe#%\n%fת\$JF*+i\$mT5?lj2' \0`˃5ED<[;Oԣ|\02?KhH`Z,mn=0yjG22JqB[V8KE\\FT2t@M Zkd	 6sIzʿ@NSq\$1`|Éq&&ƶv\r'-IRLIՑAHUc\raJa.T!\$\nӕ1'\n'PG@p@rY\nw@f%``L'e3dke1~)%3z]R1e&ylױ42_Q;4)DD㒶vEiyg>	}͉9\$*Q	fI(pݭ#2 \"6Oժ[>:\nAPh/k=\$ZZٳEZck\"Z_nRcLVi[l4=e/zۢB՚}yWndy\"%\$!ЈyC+재y/lip]8[ĳ2bK/\$vTks1Lu}9vإ~]8D;}6x\r-KZEй.9'\"8c2R5h8`fuw<-Y0]{V/\0?YxQOQs<J!B\"Uk^uiлT 8IaMJik6BX<ee7o7'#blh;}CdB >yxL~D_֞ro&-z/\nv6&~&f-.vvǢp.c0^.4ub(a2BĒBP4aĦwIDxh\"0BP(_.bi/kCIopb fP_6:1\"#0GP'%/@!p&A `DԗPď@J\r0	00LZLYŴ[l[OL	m\01'.\nLl P.^#<׭R\$ft_\$n\rxڢwHt͎FDV\rV!bȩyBthbhODʜ\n'n\nZў\"DN#~<DDFfWJ@,vfCڢ;DC\$\"LZ7*'&X\0ިZQkM\"t9'HH!CFIOyLn,\"gc\$n^RV\$4m	N%(\r25*͊Z˩᠚#XFR&9eNjҦHiv+|`꜋'/L+-g`0I-%%\$<;w%l)#-@|\r&4db'DNnN+dODBR1";break;case"it":$f="%(a9Lfit7S`i6DyA	:fL0č0qL'9t%F#L5@Js!I1Xf7e3M&FC1l7AE8QoS|@o&dN&(fLM7\r1xX(-2dF}(uG&s4M\"vZgZ-(J.WCa[;fʒ 1Ņƭg<	 gJerKDSd׳&ZQT\"H&9:oS!W3G#sѩ8Lg{AL%,BRP%&J\"tjh@e:H\"=@7c4PBʦB87f*\r#&rI`Nb(?\rã2#^7D`޵#Ll2\r[: #1Ȍ*\"=%/i(`@%#CH3:xK7Ar3 _A?o^'laL3-	x\$³޺\0=%tíM|:+͚/K0Y.5Kى 숢,7/ġ(CʚWeܥ x؎Th^jXK(\\1+-B4֒\\Y\"30@1J!+ޱ4J'N\$Hr'5;3lX&1<IcME ^Z9%-]~#pȈb,ﶶl={YĒ0Yl,I̻2	#k9.NˢMkf\"J#8)˚0%)>\\[S\r謁q:[/)3\"NX#30&zL\"wҾrbݳpeR\"\\Cwxc!,F8H6OT|mj_u2d-i=<#(3Evd:)<<£\"Xs\"Š\0ASi9(cKrP%ETRL!vGU8>UnI4]M¡\nZ7d,9;F\$(6BCq#?%ah!.`E?(,RaM<>t<\$:n!>F䆂b^Hf#6`SBA)ĜHd#@Gu]%yxB\$HwϤVFHЍ0F+HnD'qم&T! \n ('qv\$T:F	amQMŜYb9dq\"-.6\rWH<Le4HF\$&*C\0C\naH#NJZ\\REEB[0i512ܜ30ȎP\"di=:SHE\"Z3\"5ThDDLʽ6d	L*Q0WB7n>ѤRCED0\nnB\\<\$3FF)i2HF0T4R\"6K`Pii@0\0rߙO	*\0BEV@--Ve-Ha,jdib'ڡrs\rIj()alӶ!]|\nIy8d[oW+5CG\r\0Bdy\nn̓r_g0)?K.0(p\ncF0s=\nauOH#b;NΝeAME4:ta\r\\_Q\n0uhHڟVȿZع2\"\\J5`iY\"@\0H3dBM/V\r7ftv`)s2H7:RL&dm@T!\$LBJTdvy&2]YaSݿhN/W-(Pd<<\061dPrhAp	uXC=dJu3g)M1D)l/Ru:SvֻN=ɹ&}= !6#LL,HIA\\2+)J~\nrw IF-:hߢ!H%v:(%\$PBh̷=X|sK\\ƋYhҍb5:fieaWل+;pD B~XR{tXמq^U3Orn5\"%#Pn!Rtcz#Q!xo|'׼ۂlY;t:H?J1ahk}LۡsZ\$ rgAuLke ->{\nwԚmWnzN#nDa!E.	Xy5)x#n\$i@#Cӫ>x`6GQj\r/ˎӠɪ[!\"6l͐CfXcR5\\8/f&\nZf\rx:m`P`Wb\"(壃	ob	MVF2\"ξD\r\$A.\\kb㯾D	S01m\nxYEb##8HMhbQWCO0,,lGF=ZG􎎈E\"1Fb\$Gt	phD~F{Уv>n1yf˭\\\rh&e a,є2(. *?ѐ#SD9c:̀@3'%%	Q2gGIFP.c	1=R\n2Ip &dHJp̳e/m4\r]r<R@+ֲ6e}\" .B/+P=c\"y-\\&\"&'(x^2|H'\$#\rVc9<6R(+\0#<k\npۯxbV~Mܐf\$φ\\)@~'8n}x\"2q.CJ4\"2ېJC6\r%XM*N\\nܪ`(bV6rd0\"\"0R/\"ꐭ( \" ,0X&eBI7i\$#NS_7Fk5s5u627o8S7dX#PxcB[9J/NL/pk%ȷ͜gO2c.R-n s,.!g匸+}6f\nkׂ<\"KDrtM&ƈ\$F6`DtZ\$g&#HZb\0#";break;case"ja":$f="%:\$\nqҮ4(b*JqTl}!M`2q\0RHPr\n  b@%98lq!WU*qQ! dJ\nV,#!j6 *>P*i\nfBw:udBhh%-ڐ((b*T8+PM\nZ0X,\"\rRJEy@h0q@p9NƓae9a:jΆNa1mE\";JLs9ZL[&{	>qG*)A9\n\"%L3*T/Wt*[Z;\09Cx刎0mX7\r`:z8APc29i	HcE%qE')xZJA\$%BS\$\$zBP\$(YB'㚆\0@1.%[\n)a*X)DXK12ı0DĄ\n3AJJAZAaTU\n h[#)4sMA!\$<_+u\"'9PW%'uHQlrjHԓA*=QUQREʆEYpO*he'v`2\rH*P1mo\0p ՎKM|AC X90z\r8a^\\0ۖAC8^2|>91^(5v\r\07^0)_EXSgI\0\$RĒ`Dhk@^%\nset[1X\n7^PJ2D,rG!g9+:E,r@1\$DsK#Zn1HNDeBsWnSim̐d6MiJ*E\0#`9\r21#p)\"fꄓ?aйN\\zA9W\\U<<6iaPT)r ˤj\n\$	>2< cqG\"Wj\0 AH7At:P	74ɄAcgK!kaT\r湘&wgz`ox98ag+xEn0Sֱ!\0CPM/!w\n`aȸ)a)0 Ęc>P͐ }\$Yvf!vEcdɻ5BZ'ߪmS_Zk*&A5B+@8#l-\"بwbeoǙVRChp6I6_m\0j@r>%		LZG\\cq]rM\0b5a)ff%IQh|3t\rXs399CHa\r#dG>Tʩ+\n (\"^Q5F\\IP!<E*)0KeP\rCf|18nq6FVغ8Yu;q=B4s\n| T8.6҈k\\טsC.SCppk0 c\r4vDN(:Z.+~\$\"!0J{X	l9D3u H])e0xH^LHJLGʸ+ Đ}=~'{%TeBR#`Hya?WD2'a7, 8Sp2	\r<1Cc(c(F4>mXP	L*=0\$b Dq-ҹtO{\$k[p|t\nZ×\\Aᑦx0 &\0[^a*`i(v.}ÑAeR	a .SGP9Eӡ	8PT+9\0B`EMKEl9DxGmq;s\"`PGR-mM,,%Xom8uJQ.xYDq..ZuUMR)>diDsl9*(\r`(YFvT0QJi%cmP\n!bVJ(͙PlHI|EAKТ&9pADU\0o<vp=1!eCCh\r))tsHJ'/3U1FTRBP7͙36h!tA]ǥ@PC59-a(WyuQd3橥q	Wvמr,0/y\0(@Mo8]X)`F!P 0/!BծJ8yPiA_Z!\"mk/>Qf3ZM|OdZKiE	j)0cI	s&eHwIWDh\r%UD\rW迩]9\$8m.vN%F/~\nOU\0Ij&VݏI {\nPo<j@()&64Ƽ!~-PH.\$lv!<\$*\0:2\$k&kZ=dofk馮M%j(2Ƒ\nz&0t!З(tf	OH\raN`\"-PLpnWbD|)DU&[-ps.nI\rhE6ѧjV\n֭V\rX-W&&\$֪+-lqUx{h}Qw	1hXqиd\n푏\r,\"Ⴀ(ku\"BS<i.'	/{ }/!З\"N1X'B芲v!)! 0A1*P/bBW	X\$0j~4\"њnPqX-I2)d:2h0Rnk+0\"pFЂ'Th\"hp,nZRP9\"}-.6=ow7/(?2z.jAC\$^c,lag:Wq3:0ISBq#)^E\$Qz]\na]/3dq\$ۢ6lI>3E8%\$.!Mq:::#;HXȅ|e RE(R+S%70=dR\$Ξ<==?sP3?\r?E/@/.4 @\\1H.BrT.I|T#BcQCB\\AC`T\$-F4ttx#FqscH{%`LqV(/=J3r!4Rm0`B\nPG~a0=A~G28jlċ~Y:xT1b<KherjLePAuu1\nQh`\rV@Bj^`K\rȎ_C̠\rC\n\$\np9r-N~\0RP\rMrMx\$BHD9\\t92-/8U1\",b.lE,wT#T||>u\$!~=C!\$RۢX%1-j9&xX\naw\r/A:pYS8.7#P5T,@	&[ICpf\\/SMY\\vanihB.H3\"Һ\n\rSA&B0DV2ShT,`PDĬ/1q#bnkngpPfcN\\\rb8%69pq\0vc&Mm%JdMr!\0";break;case"ka":$f="%)RAt5BPt2'K¢:R>5-%A(:<PSsE,I5AdNi=	  2i?cXM\")v@\nFC1l7fIɥ	'\"1UdJ	.eiJ\"|:\r]GR1tYg0<SWµK{!feMs'Im&K=e\"r'Q+˿}-<^}nnZ,:K<թ;SV\"zq=o۳*#\0LDζS:-JsL\"4Mi(N\".@9Z7BŴϻ&Vl7RRrF\nKt-Y(˰KpDLΣ*x#	Sj2S!RL,*ʐiDO/ۊj\r1ЧK(N#VJsR(TOTS)HHE:1	%iRՎM%jtfG,>C*^͵LYP\\t6\$\$5;b6#p9J:'TtYRoe\\]J[@4C(C@:tD7{x3(9PJ|(W||MQjxTӧ dwmN	=kRzM;cڮ@CMHh<McJrө*m\"+q(!1lmNQ/O.U/]03a\$?VͭsDj6j7ZNC-]%:o;먿yoGں(Ḩt=I,	Bh!f ĥiEJV{5fоꚋtzܥBb-<u:ގ!?<+\$L\$j(6TUs샇jfnYVS^!+q5|I2#%	^7&	[Z-,̦!8mFX0eD 7\nQ4gnIY(7'i+L>/DȺe8h5sLl8~	d(](G1 !4xf^1>NbN+K%gܕWT\n6|CWƄ*fW *N	DI/-\nroan}\n8i)vJr2qqJ+z/e-2maVI_-W%1&XcluFfk(eLpa|3va[6eo:*MĩE=\rɷi*mr.	;mRIrWSL\$&M\"\$b\$A\r͚u)g3ba1<wdg2VYxeї9s9(@>%eE̔GM|=6qCo{@5DV\"5:n \n!S*ł&o1TV\"Y8])L>(R_Ez57!b\r%\$)u&Qӡ&?GwQv\"nO\0L_>mLk<C*뙪V+M׼uw`6թe[elBd	:FA\nʲ{u\rb\"AֵĜNHE'(C\naH#/ {#*;ƺGv&B&!hTgm+)G\nX('5:ީb<J	`++!jƇ)&𣿕;J Йg	}GV46md4(\0ĭjAc+\"bKtX=J,m!Y_9e\nϹ@\nj%+J\$ڒJws3M2e5ON;M҈`ͷV%\\Q!%BPQr+D3wj_Z;q|UduzBE&.(I5/l8{\$QqI7BVj6J%\\pwJr0ᑄ)7Sm)yČoDfb]\0Ȳ/=UIg]W%ʝ^nB{NAn{`ySQ(7-j^1ADݐm;!Uʙ2N/!8L`qm޾+/tjWgJM\n6ސ6f/n.+~4=Ƚș#| At]#%)unw\\&m\\C\r1\nج1?jLfy9ѳ#~3݉gii25:~XLgaτ-X57St8~Y?_ 8E4A\0\n 	´#VyInZ+xbVEnG\rm)`G\0^->Ł\04E\"~#(:fJFlt>X(z&0iog._m;\$/#|i\\=ȮhlD<\$*?08bJz\rr=F¯.BRp\rL¶OpO&h\0jkKvߐ=k/(k~PA\\+j*np8.Lpd4i	pndji(/	z1棈jNNRGjj(<Nn^*Qv%ݯ舢t.t~X&I;t('\"0Xd-Dz\"/Зi 㨭Lr(~!IOӰHL2<	x\$2Lq.Dq\rht̅n#_##,ZA1\$5\02cNP_(b=K^p*(r̮n%p\",ҺAr:	+r3)V⑏	+ÊMiݯYr(	-(W/T+D@(\ng{.`Wk% &ZH,2i\\#2lEB2PK,3@I2g`Q\"_BT\"dQf\$C#j4Љ\$?%Nl+k3jNi\0M#'(N\"	sp#tѰSvn0/r7`@	>>fA3?Ep-SS%r2S@vM8xBXЇ01&Qo'114+	fD.1t3D>~yh6ms&Ta:ToBTxݯ=:!H%!\\MԐX.k-e0tr-Rڔ2IJK4YQ|LJMEGFfQtFe+2:Be;LOKPTI\"Mq&P7R34+ٯ\$|5'QpR25uG	?UCS3gOP+NxQiNUG?Vq))'X4W)M;UVuy+=3Q\"|Odbfd\0\\\0@\0&5u\\\0\0E]ն\r[orOy_XsS*L]D\nMs+EҜ4Q1cV4%Y.@OqCuFgB(?CTbLkUb?4e0#;A`:hr%ԽJM- 3VW1p	eI-.-.Qi^	Wj	gh=k+.3/0t?3Fa`d\"F|\"UMsg5!9Q8B*qb\nàpWz\$4OhѮ8܌:L97I\"t1=+meK\\vnZ&+ÃBqq\$X.xodL-g!x4llޥӮ`.^{-}1O)&GJ1:͌ѿuQ\\eppQ;SpF@֔rD+aT7gܑ v¬\"WVxxLwu'uX+88*9'OFGQ\"iWĻS|3w{9؆؉Q'sFVU&WLXq:g&XBA6n ,w8xfZ.,LBvR=юۧ W{ \r*SqSх&alJQdh\",";break;case"ko":$f="%b\nv%Ю\nq֓NU)ЈT2;db4V:\0BapbZ;aا;O)Cf4)؋R;RȘVN:J\n\\ZKRSȈb2̛H:kBuY\r֯h!a/\"]dێri؆&XQ]n:[##i.-(Y\nRO)igC#cYNw	NL-\0S0&>yZP',l<VR\np7\r7IX00c(@2\r(A@9DC09Ƞ\$aHHAGE)xPv	RX3bW#gaUD̸=\"V3d bSYa6'0JI`SA\0<7D!`uj*FRO+9:e/T-M4[Di0t#ZvBk*u:I	Zv(d# ;1KQ1p\0\r1\rH4\r㭤ECY\0ym3:x\rdB0p_tcI|63Bl(4px!WR5=S !@vdE\$:aB/i;<\0kh:eeiU/!NF\"\$:n@#X6ewZ-E:BQG(!LNpy#:WQ+1NHpdJUY@V,ĻD?OÈJ\\Lb@VS*δ`P\r,6CC0x&<R&P<\\年KU4MXEQVgiRe97{UCOVo:.;!Z^̓RjM\0-/]qʙb9t4OA#H2`eфv:P\"=\"̒Gh+3BjJV%Ho\rnDQkf`o98ab!\\0R|;AR,N-FԙtC\rh}'Ϡ X7 8i%wת_+~X`Ƀ^ tc(@ϣd\$\nSlb	%V9ΰ#Je!\"}a JEx/%轗_0)Asa*BH(؃	!8;Czw0׃CcA\"gܘ͢@HB*m0;46;PĆr2VtL]Q9\nOYҞBNi5蔀DRiSX([ʁ*iP6;!C3t |gyhD?\0oZTuֹX'ЪcHLՙ+5!RՋ-q`2Es1pCh!{\n?Lӻᖻך_A\0C\naH#	N;z)%A2/)FD)t&DЛfF=G1y'XGB\0003IXI ar\\Q\rˡ\\\0sDA&VMAa(g\\Uj%a@'0y3\rBP+\rpR2GM;LRZ:GzہApȅwb^lA\0SwhRlPv9L+\"\\N\$A/ z/]1s@)s0[\\ׯpӜ6yS|y)0M%ל^15MNՅhN#=\n*۩f̊h:¿9Em3^**n-`͘IU(ԩ?7b:˶GnQz2هy#dڗW=_2WE&(T{qAX~/ QHb}\"`z%v[v2QRʹcbd!P\$[pbvob\$ǵ\r\n&X >A;~wPDYK, PgO0<Fc(H:,\nk\nZAτN>	C|Zj[XalEl8\n1P;D[b6*MqK25pAa _P^Wg\"dQ]0WבDwL`CFKSK\nAG֕csh0:TG.^\"Q1sP+k|zK鉏-~ӌgcH!*M3<G*&aBĪ*C)|~Hx7)B%ѻz/.)eih|#FtsCrg*#qg\niƠLiS\n=b,WMj5h1*%*4fl2P-\\5nS#f&pH!J{(SE(&MC=\$h/brжp&,a\nmpvipj90\n'[\0mHէ\0+E\$Mrد+	bl7|gk4ؐoez*|\"PQ\0qBF`IYg`!Fcn(TC6`44zqn̌Ϣӄ0_N}iJ-2J1Ap:~bjޡ\"\"lm2%Æ\"Pa:QC*J Íg+u, \")B\$a.Wl |k>Na3(rgMan'RS&2G(sa	6.lnbt\$:D\"ihǢH\"b#A66:.+Q\$(+6p#D8(-A&&.r0B@q.!?.\"0δnɳ'rU('@ ٲ!8edq'4R-.Rs+0:	C<CpP\$^N7>oɒy79sn&Y+37\ra1S-<,Sy3b<\$+5U==i>7R.!`R6<r>t@F\$Q=S%ƫ'@C\n,,8K<;a:b҃s0d?\"	)gCB  rm~tbTi)+<\"AQnh\rV0\rh2AeoCJb\r ̈%`\r'pDK>\npiKO<1\r~ 22r(#aצ\\\r4ʆ#0Nhhc!#)ic\nQ^)4{R5*a'Nm~HlTx{!!@\$̵fbF(=grFr&7dk\"d6<xR bP5Cj\\.BZЕ[G-#Q\n,C59\rE[ֺ&uUky!M}drE	M5`Zf}qxkoB,d>PnNVKTm*aj}U)\$Z,%+NCbngv%ʬ&r2\"t*M\$";break;case"lt":$f="%(e8NǓY@W̦á@f0Mp(a5&	scb!iDS\n:Fe)zQ: #!j6 rT&*4AFi7IgPf\"^ 6MHC	1Պ\0NE\r:Y7DQ@n,h(:C@t4L4:I'S9P춛hb&NqQ}H؈PVuof,k49`\$gYnfQ.JbfM(n5rGHt=. 9c2#P;\r389aPCbڊ˱fir'5*?o4ߍ`*B 2C+&\n5((2lP0MB5.8҄2!,,\")#bz_ r.\nH5\0('MTkX2\rC\r1p4#ϤN@?#AxXD49Ax^;pJRÐ\\zu2h\r#,\"Hpx!: \$S]bc/x2_>.+&͚1c\nB(=t239&?\rKX(O갂#B	#pOC\"`(2We(1c~x3F*#*:9B4\"I:-RF(BbGG#K<2ÚH`յ1#s(\0:Id?J9:T6罸ϸ8h4Lا}d1k\"uS?Gg2,T.+8խ9l,b*Cq.Ly%\"`.1 @>O~	<.rErĮc\n\"\$exfK.Hxg0P7H˖AQ*@ˀo,[2rB>J|A@s\$t%/P |BHdkDt*CJ	\$3'Oo)urdX	b,eR'9h- ai\\N](ϵP aDR\$÷Ap yPWL#yDuLZX+\rbudKEiW\\l[a%JF;x,H	fA	G%X<sNHb_Aq*)I]\r27檮4D% @9,!ܬT4=̻`8	0QK@\$:B]IӉF:\nA)@xw#;E0Pp鹺qE>~BT[83f\$*بST#Ki'@!0-('\"KPDNċ&MѪs%GB0DI	1(..y:ڗQ[1.t#a TA/%C^@ɑ%yA8ŧ2.~lNJ\\)F\\5D&РᴐA<)J\\p v_\$\ro]t*\0zƘYXk31P͖PCFFZE9B.ghRVt4ٴD&skdIdyqB[i.g4|\$т0fQY['AXghlpD1`a띓m۹\"˱\"Y:&@CJ.Cxǆ[IA	--5\0N\"ƛ& [^U'Czv!aB͋AR(l\\M@0.\r7\\ht:8\$%\rf&\0&`NZcޟD1Eޔ/Li 9RI4f>úV`>hn\0fovS~\$(bJIU\$)5ۤCX\\ҰCvc݇dg1|\n(gaAB݋\\JF.0D,@MΤ{g%vT\n!Ai7uJ\\/Y#NQ%!V.QӀ,w5sJȈqBZl(5oLNp	\n(_ӌ1F]Ju^zؾs=tȗS&l[u\nDn_sl^\0S%v7A}a^<~oh\$wJq^bpF-85I~N_r^o2Evشt,g܊	s.{fmU2-a%Bn(lt;96m`\$§gd?e;^}+=`\\3yEY#a.@Ĭ>* *ºwǊVhL^FwØH+D^7Æ^h\$;\0dB0GdB3\"B\"\rp&\rbB*5\$&f\np\$Q<̬xfc	w	phu..OL\0p~v\ng\$\r0VPz]/\r,t./kNdJ03N.Ԑ?*L/#pDB%\rί#ĴLp\01Eޫpp~\"IFfd	\"~!\"*@B*@JpOH1\$&MɌ-x6JH7ON3'mcqIi\0fQ<dKb Mzؑ\nJί\ra 6B,`;n&!g *;4(5Qn`o!\$P%?,C 6QF6c-\rK#+m'-^ 2-F#^(/jƾ;reަ/\0>9T85);`_\nkLa(R)?*vD}+ 9Ar#*s	'*{-\rc&`'>fD '23\nN\nV@ݓ@\\\r3\".@ލ\"P\0,k#3tǍ!/cO7{R88GB#dMn<bm,,M)0DKr\0`ڠ/0{L+,b0K,h\\]g>~6B-?\">q)?Ҙ?p%JF̟g>76α'C1 )B\rC]`ƁP\\N&%̃#&\rZHR\nZk&;n~:lCLu@DGJ(\"\".J%d?\"\0B\n	<m +8,/*8`cABw3D(98[,\r[UPh<\0\$I\$-MGF@p*@\r:/:d>ԗUU@'e\r&PUc0'@C(HsT>h\"*W#\"R<lfkDtfMpI0Z\$4Dh1pآ2uH%.42l\"@\r	ou8=<-(^U\"`t T@P]J#C	 4<hc\r.zқ¬-t&2I /@";break;case"lv":$f="%(e4SsLq:I :SHaa@m0fl:ZiBf3AĀJ2WYCf4(#Y9\"F3It9GCF\"67C8'ab:ǥ%#)DdHobٸuN21	i@ S0Mө_ni2|9q#{o5Mat5_6̆Q32b)V,HC%À9\rRR\$I7Lsu		jCj\$6C\"\nbf*\r40mZ 	d\r#֥ Pbc\\7(轶O5Lh׷r.7\"LL(	²l:& H̢H`7Gb)CAЂL#Nb\\4C(C@:t\\4Zڒp_	cxDò89!Z\"7j@ x!.=!(PNP+(#/p于(U/\n	ݲ%.RrK!YPa(A؂8:\r8!\n%ʞ@c]C,07C̡9)\\x[0%NPhsPv|)C(5˻-!P3A	CV*FLp@3qx90(#UȶaJ~(8Mvn3_qGxCW4LC@I4 <ѐ#h`*e睥~B ϢК 1Z/As*G{C(:W)7E/cdQ݈?<#3vKHBPuE\r|9rqj\"f.j,L1&E%>\0%\0S 1BP\$(Z,^\nX08.y57ĜƮ1xT-8I5×*ȁ&̚ DCM!\"	Na)K3t(I\r,ʞ\nQ*ELRUX+%CW 0>?FUDEIHS,i\$8LR2I\ryd&+3#KOu8Il+N\$ѐrSQUNUZU;)!\$|4ɅDK:>%\"8M|\"IqK&|JFTe<@2gs[\n۪\rLR	JaPqy=)^c\\Q(aD\r4v\0P	@ěa\"fKX C,MJQZͧ⠘`1Ĥ²_dKSD9GK0h@8xkB#~xxjᕣa01ɽLfYżΈn#ꄄBl}PęnmEG,1E5&5bFJ)`*CWAH.![Mc퇑~ge9\n<)I?eq,RX̕oZ&@jQzO⸰0i+!hJFnJ0s܊,F\"LMXG	#\$\\\"1A\0h+~.-L*ȉ'\"\$f5cԗ\"'\"][m<Ii\\~\r`\n\$1W&ݠZٟ9\$r費(&TAxӐLdOA\$D%iB<x0>o\\;\nQA8	)_%/#~c!\nĐ\$ZHTҞҪ~.9C3dN!JZvIvPb[gOQ=Lype/h8D(S~@i^:PLƃIu-ÜriRnZT* (cHa\rP4I3Mw,;+6NChb=UƎ2-FUR\0fhC416OT\n!D%E1bWEk7\r\\YkT&*iO4:7D#\"T>sPѸ{YvsSW;`b2ka,NJXH?ߙ7yط`:^\"LLGJC/@1-M뗅u84iu:Qwk><2Q'^Cڑ6G]AF#W[E-t).w/ˋ@?MgY=a&hjh./\0 0mk\rV`{OopQZ%`׈wX4AB\rnPBۢ cRjf0kMg~=oE8\"..*ggR di-M&B]\nn+	cs\$lz>Mdxk'?\rUp&ym\rp`y02=аJmf'=m\rn\$!1(1,naڴ8l\rOĬN6&rlY!QVG6zqpL% \$Ė\$X#*^\"VSBC\"&r%g1ee\nB\\m~艍0Dr nj\$lq^IBu͵lh tO81\0A!E\"N\\\nk#(h#(t@Y&NŭtRTH~r#O-% 06`PQ#B?\"rm'qs4iHtM')'nM'Er\rƏ)r!2' ib\$B3DH'F;ΒH(-RG.IE 'd%S0#ER\r%\rRr\\D(\02R1)cAT 2s72 4\$}BH3.N/&Msm6Sq#m[r<Ksy/8N/f<n[\"ڬ@6|'2^9ӭ-G8	l\rf\r'RCP\ned!/ރ0a,=c>\"fDF,K?&>\"#\rnH,N0D1NAӯ>3Ε.B>qdBf#td\r@b\"gXJH>.^#J\nZR<D.#\\AԀCfgHyIIn/D\$A&%S@:	KMȲЈg:h~sTsE/F-3IB@txk'!1p8oEIL>/(t%5(ײqJ\\zcT=3Q:F:	G2'\"s\r\">3pĒa*ʳ>p4ƒ+ TM@n1BT6,DlR\$s\\G>\r[l>R\r]Iq,Hff,dL	.";break;case"ms":$f="%(u0	 3CM9*lpB\$ 6Mg3ImL&8i1a#\\@a2M@Js!FHs;MGS\$dX\nFC1l7ADt@p0Qs7VaT4\"TLS5ki9k-@e6Q@k2()6ɝ/fBk4S%A4Jr[gNMC	œofs6!e9NyCdy`#h(<H>Tk7r!&.7Np|+8zc*v<vhH7lH\"p=xÍit<(íBSV3#ÁBRd+3*BʝLޮc\"!P	؄;QjiꉃzZT3{1/c Ժ?ì&\$bn>o;#7T@X90z\r8a^(\\Ncs=8^%\"9xDk#3ސHx!2(\r+lL#\n&5CtF'@P0\nT (C˞ׅJ|R\n%L!`FPdt6HI\$H0lI|P)L\rë		Ĭ2X9K|rZ9<\rئ(S~I#p/Vka\rB!{K<ǙI+:ϰY9P{\\[m\"H\"1`?|2xܒ-,J5ipj7Ih3mTlZ£-BkۨCn9H|&A}rJz4OaGx:T:Bˬ8eod`Ӕ9R}7k\rBҡ.TڝSQPߒ>\nW^I	\r%[+d!Xk,szYOJ5Ǆ+g崌tÞLo-d.RYL)8TT?5Xrsi@n!\r@۔쇾ʗ	6A3sv}\"AIlC1|ưMڈ\rLƥ|!\"SԉjAQ@Et\"g\"<\\7FEMP	@0@\n	)2HJ)d,n_Oז&gF8D1D4G3ۧ,	כ+7a@ZIC=NaN	)\"a:AFBdS\nAiK\r1`{qKX21ΤC2\rwI# %̢s=!̕ɕR}ުM0 )\"OOil@Q@'0%:w'æILT1:J9ڹC闂\nGM\"iA#!2*JNmyFY)\$WLX&3ƾxA<'\0 A\nPB`El)(uI#JHņq5Fkqd,%2ޘB#HM1[.&	{3!%v2`P[nj-ohD϶ڏ7:thcT(V:`ٖJXOSMZb@SVC5[@PCH%(iIX4t*ׁiu[O&rdk:.<߱\0I+|ɻ(7BRu?'ęgZtl!}He`(\$ܟI stj&ɽp`قMK0TzskJD:\0\"2FQ[%x8@RPb\0VA2^N+\$DI]N~(jOJX)[W\$#>wUcn7;\rS1r[upxDk/tDa&\"g	Mdn@tdVj9|;퉭 dB\\BNCl\\fC]i5DgEcn rTLnu;'`KyF~BHO|p}a}\nP!n&	CjvK(XSg^p??y\$S1l'e\rbU;ڽ];TI{0+G>~z-sl7^y3toyވlֻoA\r\rZw=3^Uf[zߌRz5>KȝЙ2&LʗN-PRfs8s,C	{1m:%,K}-]-vrkN;Yp0.\0O:ڙ+ML@(9#,w6:-Т'm>PI:\rzqbF:.B\$ljJ<,ME.,\",-V 5	]бDz0@e\r#c#\nP\rn,Zl\rF;e	珿\n.\nmt_!QBc&)@#1j`ʞt2,\"|	l9'FNlNu0fqbe\nhQ/\"PZcXJDlvAfbh.\0GLl@^,(^vCKcM&BE`/psE``-8\"M4J`U\"rC*3PxhL,N\nZ2͸\0nxNkl7n\"kՍ:tͲ8I~KE_!FO.cT*{bpK*0}J\"pjz\$IZbMg%dư.xpL~B'\\Rr6\$g,DN6R[>nzczoᄻ0\\Rd%fl%ȍS\0;͸@\0HR.\rMb:'C!3&&brGdlO#(##g\\@à92+Ǭ7꺠";break;case"nl":$f="%(n6Sak3do0p(a<MSlde1tF'#yNb)̅%!MуqtBK%FC1l7AEs->8 4YFSY?,pQi3MS`(ebF˔I;ۍ`0߰\n*͍\nmm0K`-Z&.O8Qh6w5m9[Mֿ5!uYqoEkqȕ5u4.T@f7NR\$Y8C)6,ûBю)ϛ\$=b6h9ØtjBȣ^K(HȾX8- 21b(ïC,7 r1kN,+rt2C24e[Qkc2P8cs_2Ѥ1?\0P\rbDHhԁ=jԜ?ʂ:,3ʀO\0@=Q4Np0´D0z4crx[\rAr3^ٶ,J(}>ы94\r |FːƍD[ o+)û\\X!xx\"r:J585_Ӱ8B#˂Xޏ̢%m<37rY>r)YZD	p#?dLK0p2\"̏h2nLj5\n3Sm.f#V1.H \nbF 9.K\"7tN?mUP2;\r{;80BR2\"H8hks\"\"^mkEͻ4\0Pיo\n6CF7Mz°3ԍb9ce3Jki.>jޯ8w2rLxQc;~\"+\"=s{77}p_)z>F\\)PȘs:&3(gIBh\"A`0 *%E%Pʢ8UZՊV;8rX2BfJ7FL%\n0!6PniX#]8ظe9TI: xY\$2`ORW\nf\n[p8,qLv:{:\0*\r4>2PLِpHY42/7a e5Rh)ꃡR%yc'C	K0s\"17ɬ2cBbM`D-m\$d݌sIEL'H\n9\$fD1O\nI)OBj{A;^K*6Hgdz)DXrb&|IaIB+\"l֓@QELPQFk\"z5@O׮K aL)b\\rp DQtbTy+8E\"JII+%9DpH%='ΙB\r:˹F\n	8AUvHbRI@*b٩6A*6`Hٺ=В\0 -SdV{ERvOjd\reȽKci\r\$bkzET7`d>\r&ٰH\$v&ǹVuqMbK5-B	\rʡ	*\0BE@\"Pn0bft&P-tFQZD+14&t9a<6MtM_:O@\\n`2'	~6IלO%FYH. 4d7 4Ѷ3V#!5OH/DVr9<'TVz_(%)pޟ2Wik#2sqA\$N	nfK{^y3;ple8Q2ڀ\nh+aw-h3\nF6CCq\nǦ|\nEԗ*?/&N]\n!@CWυUX\"Q-p[\nal0eXn!D(뜪8U:ڻ\"Tm6&np[cfNG]:evY8Nh}ۀif42!KiR\$YIDHBdx)ޖXsp`Ke\\4PQZ_#{@K\rO\0^kRMHc(Y D#_#' rJzX+&Go֦׳\n[h2\n2^uK#yaE.}˯&ef/Do\"qeٜH_̤eBro)|&-!707{7psw#A_?aӞ,05>;lnzz+bTp8?OߞsA_<\\?,*ZF\n>\0ֻ`cg%`\r|#S\rPQ,*&/O:Ȩm!p-k809!JN9,!!-b:\"]Ɯ%L\nO*T	(HJ##\0?·''7\nPo\0mJid8F&\r&Hxϊ~OGzf#\rcjO ^9fh\rʱ\r{15b\nEiĔLZ;^\$\\1`\$LG4iqm~;j\$qz#bq.<1Lqb N2f\$6l'|rN1&Ђ4\\\r\nh!%MqvQ8,αz\nTIP\\\"\0<!?\nbBF}1\$n̅-zaz\"}`.&&:\r(-͜N~fi2_	Mಘ\r \0\\k=&ȡj5	x1C.	A*\0\nq\0@8\r	>lv&C\$!#a^.n	//0S ke([LqBdi8A S>\r`DQ5RK7c	eV/BdyLsnJG\"Dc;f&.L\0002&|.'L&9#Ӏ:Cӝ\0)П9ss;Bk;{&Th0:s]\ngrR>ΌdKƤ̐Bjf?2⣶4%L=6҄c#6'(@MLIR0|ðS&i`#\\(DDvk;\rJ4C*GuL.Cz##B\$`";break;case"no":$f="%(u7I6NgHYp&p(a5&ө@tNHn&\\FSae92t2Y	'8C!X0cAn8!	\r࣡\n7&sIlMzb'ґkfY\\2qNF%DL7;g+0Y'qH16:]40gۈHr:Mqt醡B傽JG\n!n7S:D0LQ(Ye93^;#\":+(#pصa\0\rmH@0j&i#M|:	((@\$H-L܉ ;'2\"B	<<;9Gp7B7Nc|p!Cs69h jڤ@ c\$K&ϚlH4\r㫞0`@RBf3ЕtL19H!}%JC ^'aڴkh̴I@7x@|2KP :52հ6Cb'.+\n7-:\np7 X65P\$2WS z5x ǌ0:x췎6P\$#U%#n	b&;-,&x5R0Xc&\"'h\$2c\$\\Ah1l&^SN8!@R\"[[B̂\rcPBz.˿{n0˯9ۀ[K#l0\"*Ci!gvg\"PV<<\"rEabb:UjP6B`<\"	c0ͥQ7Eʄ?\0003bضuTcr\n'WUG@\ryq*X莊F~@ӅTNcu@SP5JJsUX^}rAV*#La0<dbkLGAH@ܼߙ\"N4\nPOK7T;hrUӺW˅B',4߹i@g\rD\0̙A05 L	Y\r;#cXd^!ӿC4`҈%(8Q:!'ޠlzɴ(I8sd,1hKz#.EС(cIe\n;y@\$\0[+\$C`Xn1(,ІPc%\n	C)tgѭ[`w/Ϥ3_d}@\$ȃt)0ѩ\0SQj7PV 4i9PJF&M\$!0og`3U\r&Fi)\$\$LشMJ(A(I!k5:Hywx4TZ&aŌ{I3T44ءI@35R&iVa`^Dap /tĽXr6d枒bL5524֬uiZy^\rfMC*EЕ_'!M5&ҐP(\"m.>{I3\r!PgAjea<'\0 A\nPB`El	~&dWTv	Y,Yqoc9̄~\r{wR/͹u9g9kP7['!PvH9ck-f܅alY\n˪T_DlV4tx=fAX(rvLal>Q<Ў\r]pC]8!מ.vⶖ[kt*cScI[,VF0M4oE\\d2f|e&rũ㔃u1-h3\$Ah1SWt6\nJ:	d/q7=*{tC	\0=MeFOL1Fa?bཁyN^,2/UK\0GhsxKRW{;	l]6N0AK?1%	2fRN&&/{X611,kA8czhLM#QGR~\"xσ4AJ! CSiR\n1Vԣe	{taq~#:9YhL	5!n*s8Rۇtub:bc!IF2?Lj]zU!yP[49Ϣ]{5)]ҌJDZ8xx(};ZVl,g:߇>;0s0N+䃯P(b00#z9MzS{#M3z<9,=߽'؍\\4;xl}wt\0ųXd͹oǿO!{y\"}Yo~ЖjǚjcP~dNc`,5Fn(B˪gpkP\r,Ed8\")f4l(&omV\"h#>G\$̦<4otEbdOh#vN.o0nB6#;aJ%I2\r/.:M)/)1PlXze=lx`'n2d K2rx0H0BvD50`Kdm\" >W`\\I.qQ\$, h\"I.VIάF/	hbձ.JՠBrm)σ\nѓ\rϣ f\n\\hC&Jb	1\"Q\nDӰƐc4a` \r%\"ppcB'n>f^B\r&(PBj_^ʥ2h\r(--\r-&ۯ)Τb\rV\rd!6.\$8c?h\\\npvɲ<ޢb:م)\"FqȘ(rP0)nRc뢃QJOC2B39\0Zh,#Q,c\\5RjN6D6#^u	h!pRb 0i16QEƴq6]OA72oel-\"7&3B8#\n\"P2Lfp\n\n\njzMc:\r:92dCC=[p獸:&h:nS-IF!-˶@#Mt?02pOMA_@J -Kz02\"\$8؏\$ZE\r ";break;case"pl":$f="%(g9MƓ(l4΢劂7!fSi̢Q4k9Ma ;\rmD\"BdJs!I\n0@i9#f(@\nFC1l7AD35/8Nxp:L =M0Q\nkm!y:M@!aݤhr20gy&*u8Blp*@do3Qxe5^of!hp[73qiy7pB\rHL>\ry\r+ry;¡\\b@t0.\"D)*a=KS拎;A*7N@@n) 2Mt'5B:p6n3޵藴򂊌r7KҗP)#|h:K*#\n0	65 P?-H6FN?.Ȉ[\$AH޺\rP7H4¹92cU\n 69?;+CMpAcXxƌD49Ax^;ׁpH\\7C8^P;؃ ^'bmB7\"V\r!^00#)ʃ-Pʈ6J,#n\n-^L6Pt1x	LH\\\0:8\$⸌ωC%dfJ?)a#z̫z#zb@6[0B07\rm\" çIcC8=!ؘ]iX>&\r+@yrɹ2V3)\rètH9#_K;Hh(P:V/]38	?s 9;4}Va%Q@0̌,sx/NX\$.tB*Qlo2YW\n!9>[JޟĘ>d,|\r|gEI)-ؕ\nnK`D\$|i@ErMqBdWJɒ}p1\"TA ȳG\r6\\	{RLC\$?YQCaʭ{(5	|&(1Vot0PVh}L9qeCxlDI@YhI#\\9H4PPS!AI\"8>UX+%hºWQ_P*\rb\nƁq2\$MJ4pJ?004%	Sgg}NP` ]B3'AWGfUWjB2Ẇ\$Vsƹ8Lϱ0}S0HKPȹM|mRTn\$9JL\0P	@Á+PzB{=HtbJMQfm70Dىj>;IFq.?G~F(WlRD\nLB\\s~Ce0pD@\n	)R:)tH\nTu>dųuIj4f'{C+&!;%CiAsR2D`agmI\rL5A}=4z6\$¹F\$<\\l400.N+<PA:r[CA5}H+%M\nCJ>R@%@DYxFꠒA+ž:Lh>~Chk!fkڌEZH~u>Tpgr?p^MpP1	a5\\gB\"'\$D908H܄.K\"kDtE)b'j8tCi\$	lOY\$;Fw1]\n4AJYɄLGN?d5Fml,CU&8'aL9%p`(\\fDYsD!dˀOPEFVQ3S*TMzNۺHj;pj7jGftG''}1OROh`tAB}tmdͬrȡBZcɴ'\" Qjt)%󢫉ԯ;\rk0DëPW7d\roWȐ_:.b}N\rwuay\rx&l{xX|yTn1Iy囍+( <H[]fVӬPW0fim4cq!H	r0 @BH uzz}G=ηGS=0ULaYwc!oHEܢrBw^d\"ODDc#B8(0y)k?\nC|<ef#ߴ!AOS^^Syo;oM{5</Ʌ,`cn,#XNCȈu #!uXkLSͣ(Or)S_\"CJ%k\\,vC(b%xh>Gl	'L'Ƴyl`7@) ;nx`fD&;Q/DLOpX\"P]`%\$RYw\\4J\$/b^,,A	PVb<%Аp^eŘ=O,l%v5`q	t4gt&<9ϊܰ`>.'\nrf*qG\"߰8Κ,fuG\n	.	h)᣼K>P?D	[`wI1N[M&OCBg0X\nQD+0\ngjMPgvѓēQqq/\r߫|0O.O,O:(cqrѺJQQgj@e0\n%1&N8^Llvn:L']Ck!-!5Pܐf 2N\$˃L4OhB+pn\ndhp~-Vhb#`EIpᄄX]Z`?	-'F2#d.?bVFa&¢\"m	%?N%β_)r	h.l#QQ\"QV߲_,Eh\n\\0mPp#1h2J\$=/\r93HO3JL3@;szgR-mGnd6c7mMˤ8s\\^,FRLnQR3/\n\$/e09s0ѧ44@F,_3:NPVԓ1g<< \$rzIc\$@4R#\nM@?S:5?2#-S@t=Xv?ld13K2C@;=3>l	RQ0E.EErpU@w;uNS Ce\"gC9nWH-D4s\$v^ncID[HX悸AN8B6M*xiR/9Hf\nx#\$4\$LtL!~9EQ6wc5(D3d!Of1~nmQ&g#QoR\nxf:0'Gb;\$&+\\a!+_/hVc>+d\rVb\"baf*C	8z;\"nCQTRPb(Bp-\$v&1*\np\$@Y,k\r2\n\\ǒ24Cz\n?6(hN!2kqMZ鵔yi&8X'fBC\rK0QB`@d/;eAI<~F+L;rl4+ބ)X,h{6f]&`V~/vT;3s`7v9^7FjT\n`\ruLG.Fsq2HLd*h^@v\"m%`lh,k+ާ4teJaxU\n@Z6LBU#fxd`y\\;?%CNfJ\rw+G;b6";break;case"pt":$f="%(Q5Ho9jӱ 2Ɠ	A\n3Lf)oihXj\n2H\$RI4* R4K',t2D\0d3\rFqTe6\"P=Gࣱi7#In0 Ը:a:LQc	RM7\r2tI7k&i#-ڟMQHٳ:e9al])#cs+Î,qX̸q9W|=:IE==\n\"&|q'o<qTk7N9%\"#p0(@\rH6z·0H3O@:;\nZ*\n'\0ԙRCj̈P&cȒ錮0\n8\r({c!#pҜ#,9RҜCfHa\03o.<k272 ҄#Lƹ)|6M3|p\"ʰ.sӒS j@|ccƲ/20#;#`:Ӱ#	C XD49Ax^;؁tI\r0\\z2`2&@˚Z9^0HMp)21xՃ|1Sj||i<7'\r%͘+3(Cʠ4Hx:l1pe-@ Տfk2CsS#ӥ(w8CfJ\r{	2Hy{`h	RX&dZH؋ԭrƍB\\&L_hP7r`Ha\"過|~\"#<7rV4b	#l(۱8T\$r!=/N3lp\"3\r1oބ1nuV 473d\"d9,\"늃zb0\": kȫ3Cg%m:`eg_\nr~4(%FGR +6rdRڔV\\+xXc)&b\r>.%)\$ ¬rCoHR9*	!BVz\nXV{ن1jwj\rs1lI~*q Dm\"([^T\$1p@@x9Btlfp~@/\0bUFDlY#L#s,z\"M'ЈB#M0؅\0c6Râ01Ȧ*	HC9&R&dj݀i58lM,M2R{n(bfz\$h(ŢY`lVFE)#\nH3UDj*\$7R6\nJ#g\$-|GK_%JsRB@ȚgPk\">\r*Rie1Ip.G\n:(HY@ɣ@mB2Q3lNXa\\?1=ZR	a@'0*9-{kt|UIa:>oIi/!U0ҨQBQ)B\\\0oHJ1W\n@`6۩H>GjY@	\0Sb,<s\0PO	*\0BE7L\"PnurD~/\nta)x]&D85b2!a2jM	REJn4.\nuIAO5A	)uI]%0zمu&SIkjpLȩxYY\n( B#ibW:A5+.|PTxtk*(Πhn0y|4gS)Ţ\0Y7.R0NcyeⒼƏ9GTDO@ڎX!w.:84rB@ \\WHk x2Ik%ZVz\"+օIs`wGvqjx3ENku'qnT!\$]K欪h8;yz\n/uM3~AySc\$68g3vUdVV{R,R&u?_x<|p]X7	g\":Q|D;\$_^\$r	f%G{|`d++sL3%.V֤Y'?Òc	饟0c,zGiYHQNi>ܻO#2,9XE#4ca\nw,ǉxdr=y\$\$o[]Rv8\":fDX^U1,v2~_CL?b0^._sއXot8\n&MZL0mp!K_ug{_γQ^lL:I8jU'H߄[qK\",=1T͑cżNo4:.xBtBehPt.&˭Fnn*.ǂP2Z0:yCc/NeԢ:LA0	PԆ'&_nwpzf	*9fF/8z\"##냜?)43CnDlbn6OVdb\$>,/т0PDk	(0|V#8e\nb9ˇPd^bL\0M:\rd~\n,os1'ڀ@_=\rpn!bpi\$!Q08#s] \"fo\"lHuϲNECƨ:bm1)(Dj_qٱhEjiNqLs+ّa4qbwdo|My/\$kPP]Bps0 \n\n1D\"Y!c9OR@.-P#JDc\n\0ļB2N62R?-\$&)U\n\\&~R-f.k#(('b=<\nQh*ܩQ=#sQC) ,D!-1*@	\n\r\rGMx8:H@!ON/\"*01D{kF;\nf0\"cR3P\\k2\"44< j\r&`D [Bh\$0Ef\r:Ac \nqr1F&?BlPFXS'{iάI+EG1\n1`,),)}rs<6I.J{Tbu:	<\\&htglRpF#b`\\@164C\"%4NlDC\\6-E'j\rx,B|ʛoTzCf#9%5R]Bgs`yA,(uDx:m`30\nƪDF&r%/1ė6M\nFI<#P0N@. \r\"\0004.MhB";break;case"pt-br":$f="%(Q5Ho9jӱ 2Ɠ	A\nN\\\n*MqmaOl( 9Hm4\r3x\\4Js!I3@nB3'h5\rQXcach>#Qz4Fi7MjblLQc	NE2PcI>41e!',΢A+O_cfkNC\rZhbL[I9OvqŸnD,\\(ǵGM7k]3c/_4Iț`&U7094ÒN\"7S`: 9A9ȓ@35˄V72k(RRbγ:]\r @j\\9. \0Ф2(#ھ\"҇h(h7#\$/.<H\"|12KPĐ@+ 3B`޿~#* \0ܟD|Ʒ/@@0Đ(<\n\\:(t'\nC X\0D49Ax^;tG'r3_	\"5`J8|N3/Z燁x8`Ƽ(y>Bj :T6*\0@HMzݭ-y	z%\"+t @1*lcx:)Dc1ˡ2/LdC bkt\\n{&#cOb`ӡh(w&0I 6,'ը'&IbhJV<eT^}hb.n1!B&LS>[& މ;mCtq<jO*rc+ sd=]ZH4b#m0Ɉ^r=1Ps	q\\1M@5Dr1VĪU5-Z:060\n̥z^1,:m3fBu{#8`a9TPPI\$L0@Ky7*mCyF,@ى(jAXhºW`u_*X\$7n`V5@зV\"&2\nAmAj ?eٔ`cWYXDcDՂ\\z\nÆ+9,aZIևhb\0>yB\\ÙT|!y8@e+K!׮kC2D\n THx2Xpae1?\"\n?J]I@ǪAhFqD)\$H\n5̰PQI*ȇ2T\$d7(tC9!V\rR}ĘIς\r)m6`1|LIpdz-?HPDZBp;\0#~W0T\r02֠\"`@!RCaK\n'N^.sL	4R%P\n|0E.順%#~*@ɪD\rB3 4MHL[`11DA\n(	O\$駲\0nI\$K1-ʟfds~i\0GjI߂b܎\0&;κF=^DU1ZEQ1%#Vbܡ	8PT^@- IP6X\n9@1EO+f%\$Ygu1fLɪ`JAMT+o\r!%f\\zP\"JP .;Tr<=\";v-<aJA^zq?\$vG\$T;ǰvB>_\$(oR)ePLC4fGzkPAM'hƠ[C_DņǲHzĬ(vg:LQxh;>0m,K+Y{ReܲJSb68Q\"zChR0㡰 v\"y5W.M칓5r D	\n\n`5iƁ#-zy{!vF##ɽ(C	\0S `lb^\r4Moi1UQ~4{ܐc_p	\"u޼ҥU6rtHC q\"@P'ojuͻ|;ăo,l?oa:ӨHJk%C,W	ܓ>er#\n!G6qDtpk觸tIu]pƶyWU#)6Bgbi֞'^(O&ӈf巕3F*f'yc1'X ˆ3,\r>@k=uPzܕ(%OG	ܓVTfT4F	@OQ4^D!A/(S\"yz1AUWc>IîObKό,4P¯~4CG,7\0J,,N#H\n4pDsH2Rso~0O6%C&\nM0n\"@@*S\rN{#n:zw^0J'\n-8\0ʈbq0@c\nM;4ctbd\"<\"l&c^I*02D\";Zd#90V|#%ɱ\r?\n\0CC\"M3F:`90`Aw0\r{Eڜg0vQ10D٩Pf\$O<]Q^écF2&ghcQbdp-10P1PZQv#*ҒbIiv6h2\"Œ\"2&R/D.Ϥ(/Zd\$B\r?RVLaU%Z&@%k%0!/'lH-҉?\$1'Odc*^!4v>H51b2D'/+Y+o,Q;,G,[- ,&2*mZc&e/!'A0R/'Ҫ:4֍32-b%A+/O*ڄ/3˚LJm0E3ē*o`	\r\0 9\"(\"C4b8SQޒ!7P/7t@jaT:&b-s:\$-<j\r& E!RHCN@ȣ ZjO\r>A \np#\\\r\"JoB984!\"\$\".2:+\$l3^1 \$=(L|\r~?#2OH@27ڷOCd=\rt&%H!E&\nႉO8҃oDP]\\J{J-jMAP-C\r1-;0||DnoM2?(,Dц.D>ouOLORK-lBF!FEDDFOL1&0'>4Is3Rc!=]%+WL/'ri(fkH/vG8rH'8";break;case"ro":$f="%(uM0r1DcK!2i2a	!;HE4v?!\ra2M'1\0@%9dtˤ!eұ`(`1ƃQp9Φ㡕4\r&sQFsyo9Z&\rن7Fh&2lAH:LFSaVE2lH(n9Lf;̄+,o^NƜ :nN,h2YYYN)Xy3XAK׬eNZ>A#\ry۳qLYN[Q2lBz2B5x#𕈌S\$0!\07J;\"V#.x掭/qp6JҠDR`*	0P.B,Դ?JD229#\nH/q),#x2h2J`¸+#j\$-4.ύ/\0P!03@ΉxÂB*Έ)y\r <9)\n9oBL*;CCe\\H9`@#CC3:xouTAr3P_זXJ\0|6	23/	퇁x91:d#*:E1-7(*c=UOɇ#N&2cbF/XKҊܽ(J2~:9k,H!#H럼hƍ(t3 3j#b;/)X##,c{#;Qy,T?[ƴ3cѳ-	\r#\"1G-^\"`@8Ðo#n\r8cuVP	Ixu*=t&|\$ǝ`O&J|4vSBODi2WʟVi[6(EHC0fOʤGhT\rT\\hcWa3بzN804bY!0RP \$`3O1+\nSV2B=01h֪[+mnUr\\t^EIXVX*-s:DdaI0,(~JD64L֊Ӊ+am-ż\\*⪟[^O08TY#>}k^ȁS&2c;/G)2'I#2	LAL\$09@\n\nH.\n8`Uk\r%dt\$k8:̼1p V9PP!;F\rʦanCI@lÒ&TSQ:RPpl#S6fw{4	EF`CQʐa:\"dZּɛyVRҞUL\r&M&-EbDI	5!i2cZeHQJU4R?aJ@3<\$,Y4!sx#h8%PcVBoF!\0¤1lY3Uyp	2CYX.*-z7!IүGb`g\n9JQ\":¿0)MP(	\njE 3XNJgpπ@QڤLE,c}_~mj8|UK>I	d	IWS>\0ƕ|kQZ0IsԂ= `4f,)N0N[CN\$5\03]rz#xYOF#LYc(BI2O p\0>]:g\n\"\nKu1W32Pu0FU_2}`I`J\r4g;,B:\\fTy/vCkF4v3<|XCW.]o}:bipugO(C{5Wo\riA Gq;πA\0(0Im\nPdogYS#9\\*Q1ړQPA2jF+g ?%RRPY-ѤGA\nP 0 Բ+d?E\0PGidц9lKLV++zeNkPQs806s:<ޖ_|Ft	D|dz?浘zĔV7=@Szyӌt[?Kн]~X)8;VJ;	\r&F/IhRJf~B*ޒXTUDu/mL) {iQfQr8m\"ŜΙd#&\nY[VA&l9y/\n#\n\"VTJ+o'g\nA\$3jc/C󑿒LIO8?i=vDdF|Jv(.\"jL.Ll,\rgg&ximVւG&ΰLb/mXq&|dL&Ne,LdE.LO`SKg	UOr6z	P0PP'&eFGkw\nR%L20.ݍ<.CE\r\"\n P^ʍ.5.5}	\0+xJF:-#	Q:q>\ngbl-)r!*	ʃC)p;1g^Q5F:ðfՂJ\nU*D18͐Bm`Ͷ3ԆE\roQ	4bp\n18wbTpoz!!\022pmG\"xc\"2zGRDOb, aDHXn#<JߠtLߤ12}22	̥1-\rp'ᒤ\"+ChX\$!@/&|AV4 !r!2-r.QoR`r/qSr*02UOxr+A1R\"L.c6ꏳ826}(%TBTMsR6x2sZ/63P\rsU65hل#*OSHs\"-s\"PA\$93grQ\$y @Q9P}!=.!=)2==6R{/	({)r3T3\$.(	\\lgR~A1t!h.U#dN2\"Hfd@0Nl-Br'>n5~Nk\$cxcpˠL,DWG ڇ\"2jf\0\npGB(ףhJfW픸\"r=LT !jp\"Ǩdv'>MG<4n0	H)xǢ9>nγfl8\"\0\"q2v~ˠf襃*f\$BFJfN`UB1FFC(\\Ow/PUU_unrUl2q-*'h6l0-uTM965\$џ UNc+ngaN+mvfJpw[\\2#D04\nQ&K(\\	ZF0:&Hπ/ϑF:ots7Vɕ	&-tg\rR'!O4M\$c\$`	\0t	@\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%Gf\nb֬{R\r%m5!s,kPtv_hn]#Pօ'[\$!&chK'FAIE\$e6jllѬ2\"\\횩mKV7ťs6PhNCh@zP<l:\n,c;jA0p9m#)Đ~ZĎc(1^Ӕ07Ϛ8ŪGHE *8C`*c	..80	9\"\\ҫZH8M\"?>jRʴvȚkKLd ģEQc*\$|z2qR*JC<h|5J~͑o\"ء(SςZ9Ԫ#A	 Y*Wzi8(vI>6\r.רOOJ/=N9w#П4# 4(B5'k֢D_ERs/C\rS,[ӅG\0x0@2D49Ax^;pÇb\\7C8^2x0cxDMF*+~%H2~\\x-|%H&RũD	pv,Q׊zֳ9@7&IK.QiP/U(ɑ	0v\nKb=՟-OzhKb?IxNp&RӋ3yRRFrhq̷\$J+d)#;R\$Iz{>uYfj[9漱J(nd<JK\\J\$P+l\rR6`Q[01#Yd+]\"pv؋AL(Zu\\I\"zHDZK')9U[A/J8pLDhMstrm4jSiLK-7g\r3Yv 0I\0IE.^l\$@)y\0='ʠMހRq\\&IUh*I(Tz5:Q0Gb'r&	}4HMuIJX@q_LE+\\LIya4F=dcre\rzn);B|2\$\02+ph\"5bY\"Ɇot-⤔I&`VG{ 	3Οi5_3nMaBcšc3L[ZwQќ\\A+d%u,92>fi%U!:ь`؈rf)((b&.T.{[fl՛vYAhmsP7MkMu;hWKm	9ʶF*Ԛ'=[Gqh'j!~ЪzК͙:g4&3H--Ctjĵ2мjBl>і@X=՗\$RoJ\$TG2/V\ndlA-1EhTЦ#S5,.HϢ&G^Sh:\"F!Laj\nXCig|WӼ3Y\nDF2!ǈiר?B?qqR@Cع4MvF5RPYAIh?\\y6J*37C֎Y-2M 0\\jo>kB\$\\m.Ah-Nf4N3^w8fʈcP-~dS?/g|}i]F-a&	EuT4TPocvv]:|]Sƞkk%vУ[Z\nm,F'KK.U˕J>ݍxn &m:g*9pC/x̎H (!43MFl\n(N1Tlr_%2g Hsܩr#!-3&;(㣂LnS:\$[]QM!%E0@PU'Uf zq;dgIP<i]ru0v-q]+S߅_Eɑښ	d\"[B%v6J/;QV/y6Kָg}Iq܃n\$[YtyW^e7\0q.?ϱ\$ɇ2~ȖLuBZ7#U&Nڪ(`b%3/)%k@ؠ(iP,Gi,tV<@tk\$FEHLqŔ?g20&+H1AnG`|(D0,AϏJ^'EG滄#^-UgO/{tq:sp%VnC\$b\rtr+}[LZp6nL.nt@\r\0` f@pBG-\rg,q\$g>9b.)&o0J/O \"צ\$'\0En~)'@PTȱj~&\$g<Ч \n`BC,L[̦l\$.`HK\"`&&:v^0Ghॶ\"p.oI1o{íNވf*BK/GB!QCQ LoY#fa!\"&\"r\rDtGH)###6LJxus%R-&r(Zbf|u#'}&\0L8l#(s(q&'J*(&B@8K-\":\"D#RE\$=.)-B#-#-+.C\"	+d.oR.Ri\\D2Ē&D~G#C8,req\"/@1h-J\$&VEe\0`n(L.Cq:\"#.D9fϢJB#\$39GF,+7/	\\-Ц=S.E(;B:5sr²\r<7S\n'*8SFJssPYG??{ϊeb(ӢW\nzO#\"3!7bCC03I0RO>^V\nr+ P0|Z(\\I.^JR3<0a=oM=#)VP3Ioԟ>BoHQKNX9=RM)PuIJD.bs4M\"Ӑ}Dd4SdԣQ`t~\"c(HOe;)P:P(E!p5#jLF3ؙS&92U<7@u*r5%K=)=rOUEG2QT& .XXIGXPUWUXRP/NBF^+2M8AFxOdƴUkO.{nS)cX,̽\n,lB&Ώ2ĿS4ҫ cYuqB}^^3_(@SmTtAP		UyMRfUe	j|Vn6vnMg?u\$[ң44g:~6mWTjjWk3Wt+ViVK֝lU\rbQKrNI*⁏,R Ǌ8#U*ckppFW{QP<vx\"?rVn=Vslq1r\$su3ma	;5u Cgvs;u}Vn-QWDpEE:\",4WAV-VMlB0U8ֹO6t\$y1gbO*c{s|N:}7ԗ{MWOlt7|L/|~w@ױwp%~MW}}sA@ykg1^'8ExN-4xwnQYp`f\0\0@\0'08N\rSxZ)nbXiM\0XX\r˥8~bq%0sR';X-)ZU(eJ^8SpIN8\no!/mukJ-]́uhxÏzOs[B73֌Emn<)8XXRq\$R(	UWl7+%'sKu/N%EV/Dx'o71,-i8WKM!'GExWKnqOvuVZ}`\0a0WU*F\$tag:@!.&9\\c`3|UЂ.\nd8\n0&cc\"+vG<Ek!ţPdi-b\$bE36`PIA9B/ᗧXGL'H&vMNӫOhQNFy.6+ds}/F-*qE-f/)GGTe}pŬ4[\$Sf^Ed#md=9\"m_CK=?㱅:2|7	shsfi{G˳X42ݢ]hii08	hڀ8x8#?\"Lh«`DkʨOkU:S\"3{cO-bŁtJC{iPSbpi6BP]0S{eb=_+6)8{DTcG\$}8Xc8beH\rۺ/l@";break;case"sk":$f="%(](!@n2\rC	l7&P\rl25q\$\"r:\rFQ\0B0y%990cAn8yj)AB&sLR\nbM&}a1f̄k01QZ0_bԷ  _0qN:Q\rA n4%b	a6OR5#7\n\n*8	!\"Fo;GA#v8.D8ܞ1*͗ə\n-L6la+y5O&(3:=.ϐ@1xȂ\$2\"J\r(\$\"<jhBz=	1\rH֢jJ|)J	F<\"%\n<9\n\n)1P),`2h:3. -\nn9fR<ʣ3\r4B@P7[0\$Be\n;\"@ؔnC\nEXEQR# ں*lRVR\"(C,Q\n`@!3:xc>Ar30;c ^(0a3!ljx\$\"UdC{,:BKMBx\r	SIx'&h5*-C\0ĳN9dEˠ!t8!5B\\8:A\0LqDDr`B7x107\rm /o\n_/5*r.5##\$IҤ8.bL4\\bB櫮YЉc*`5M S<r,&.Z-t=`4t	8aw2'VTp]Ķ͂{HP\$\"3n wxw֥F5:zoc-B6/ƣ\$7\0000`.e\$!<2)BLb<DKxk20sSA[&BTK@`bV[<[`ϒ	A@2Qp\r.hM,RJiC&\r &#g\"htp*L*#0i5:\$/5 NBUB^+倰\"Y)P,՞ /@%>R͘ʺWY&^RP|S`U*d8+P\\@FNΚ1\$Tt(NjRnd\"WaUJ89-1Am׈	*RzP@d(%[\0r#2UI\0*bN&^y`obB\\]13فihzY)d+H!:2?f6\\t4QtER\$%7wkSa:=9&h)2*2	@jrLO8 ,DUjX\0R%%!fU&KI}P&p,3jԺ#\\!4yVƸ2N-GL\nӜ]Sl* LA\0C\naH#LqKx(9;XvC%!D3#j䐓U=ȑKo[ď<G`^Z~nA\"8ȶ\\ȁ'GX6d2-zTK`jD@IL(@h|/\\KK{L((30smm~r²})\"	v _%TFK!\$ɌH\"sD2![Y7!TsLicMCT֚bl	\r*\"O9b-TxNqG[кoUě2Y<'6Sڙ/%4LS%:ϯs! 4!WtނPiq΋GC93OJI٢PDID!`tJ(\n#zNypfؚs0\n	\"6;*Ad`ь\nvFrc{SeM-zyr М%#4&g'd0d}MNnl6_Ӑ]xl5\0jI`FO8Ǐ 1]k%/MUCcR%3E\"POݖȉc)H\n˕ XWl\nP/.;ǔL>*@Aā>D!kI&_x\nd`233\$['3wN\\.rѝXpu#iz:cYP~%ZGx˻g%TX[叟66yPt\"`64BxKЦfTAZ姹S\$گX~>%d}Ww~+/M_RN*lMONfYc#\$I~+Y=OԌ\$Fb|V%<mi,v0>/`b,@nI^h'?d	lg!fKܱ89\0<'+bbi>B.2%ol̜6J0w㾺7\0Ҥ\$-	|%pu	C\nP*ypM;\rz\$ܭd`- ,ʁTܦqDP̆'nROig̫2\n\\N)n'P \nKM=mU=psPD\nKvvg\n-\nk|tzt{flD4_тѦ.lqvc\$+ѱQQ/mgѪIB;%\0z\nl<чb\$2\$RN;!\n!1 \$9Qm\"`\rF Ljo\$Ę!'HUbdM VVcPpej@xlN)%FƢ@2R6Gu((f`fD߆P(w.Щ\$2:2>0G`R8#/P0\$)	}\"8Z'}3B{k&ff@#};DU\"ƪ\"@0o1281\";93Q3'jgaӦU8E4jj\rE#&tN@&Vl6#&329-S@lSKAAq,UQ81/gBO:4,tMi;Ñ=\\13FCqi9s,D3qCOENTnk/tMBGC\"GYG30t-;\$GDI@Gd1SDOD'GrOdO97JKί044~6#C*΍mLlO4U7kddko%Z_tcBϯ\r;hl\$ #1FI'\$\nOx82:	'\$	!ĸ\rV=@\rcPDcVrct-@Do@2Dd\\2:hnLfc@\nZfm\r[[\$E*ոu#xYG[rЬ\$!D\"b*IXj?@}AJ#d>ↃnTM'Ȏ*Q`;,cL(+c\r(C\nqj\"J-H&e#?i-tg;g}is*-QuBhF޵V0F2^6@;qB'6'3)* uڠ>Bt@P2g}jaCTk2`%`1@lG}b]~-&3q&\\-rf֐=͵?=ࠇ`ܮc#ؤ ";break;case"sl":$f="%(eM#)@n0\rUi'Cyk2QF\"	1k7Αv?5B25fA2dB\0Pb2ar\n)Ǆep(0#Upz7PI6AC	laCH(H;_Iуdi1ȋ&aCl2̧1p@u8FGCA9t1f\$E3A}kB|<6?&Ʒ_7K08ʱDы*PIFSԼU8Bҩi;L#.}Np!7c2\$B9#hXϿ2:V7(@	T<ˌ R~:sj Kx9,@P\"Ȏ2h:IDr<C\rk86\r2<+1|\rn%\r2c'T~9QJT\rH)52H2\r{>Ki1l7V>/@;CA+p9Xx(C@:tT6ʈ9X{90^'a926cH7x\$NʫpBޡ\"3 ĵ\nj#!6mB	|5qO+ĒM_R_\0ӄ`#`2`P'B\\.,ɼ)2P2\nsS6&yH:6s־ë1S2CnPi%4+n\r8&A(R\"\re9(*FXy630k7&-c\"n4spb1Wr B\nSho<;|:+;\rF|HŮk\\}\r.o4Rt!a!C}C<7A8ջf(3%\"D'Z0{'b\r?%3e\$w\\0jupSZV:x\$ByvZn4nqSQUNUZOJY+@ϩ\"]BTBYo\0rJl)@Y-!ش\"	ȏ;unTùJ `TT*V!YP9C]p\"3\\0h[c\n zJϜ/WD;UeR\r&BB3DRT*|\rU ia!\0^i\".|}M x[\r!KH\n\0RCrs7 \$xs2PpxwQ\$,Y,	 9ԪRT;P1gTRV~J\\|c(.^@rBS\nA&cnH,Bk5vFLJHADᤉ!iNK<&Ib|Ȣxr8`f0c\r7!SI9H`qfcC<\$1%U3O҉`f2D(\"hZ{TL(i5bcR!@y\0Sǡ\$#n!m\r&UhB	+Re*gw}6\"L#܇VPeI-KdhgZpg!ɮti5\"HM\"i\\{F]̦Mcr0}K&FVS9\"E:aj:nw⑻a(o7R\0\nͻ/Ǭv2fY;ZSÒL A<9ebW:#0VJa]ء]!h\$g;hNN5bD\"60z4PdB/S\"UNipf̷AW%\$t݂hnFsp72vK-D_Z sFİcaceк\0`&i5j֗'-@Rv\nP 0*7>&:(DhL1SXf\"lmv:p/}0rHdx]b\nP	Z۷s(C+Kg'.m\nAv\r@S?8o)N/%B#t(aMy\$#ոL|O&s`2GqH9F:5*SkOwQ݀>ǿo(/a<3яm[\$D_M5|QTd夑R/ke\09f %fPt\"\n1Ek-*A%a\")j䍳G0(\"\\iVb&ppPɎce9`KJyvS?	+}e+Wv?\\lV,->\"vZ\\FB%Ţ\0,\$ˠ\0d\nkAh\\I\$R\$c^DLv,/pTjRKtx\0Pt5 Bt\\%9(^F8b`nvoͮ0!к#Pn 0\n\r\rp\r\rBCc,00\rlɬCyQ	}L:gsp#jgr6kbF(!#6C	B)\"/C]#6\\α뜘i(%Q`2h\$=d HqAq%oE,&o7b\\q?%1pq	1L@Z1]&?)2\nHg>K'=2%!lp&N(&2XrkD1oOX!W {!e\r\\!#gdpMg\"k't\rfyq15Β]0\$m* R	P*ұ,kq\\#zr+bq1&&-!*)\"m1䒩zhbdF(3엢\"00\$z&`Oj1Ҥ(kw m[-,%=&O6S/ry(n5\"3xK! KMq6H_5d5Kso, d5Ĺ'0ɂ`/d-E(bz\0GcNPcڔ.#=Bn3pXznܜ3A?Sn\"E\nL\nrN?x_;=bH(D26%sCBC}?DPCu?D^IHki6I\08v\$@	\n6\npvRB/'00ԟ ND!qnEJN\nEt\"!~!4:Ŋm/L+/ \nBPdm[Gi<#~dOd2^-!G\$@\r/M.E5\"6be# 8DRbmRKN\nULmkC%<@4K`m5VOUah381#2c.O,1Z\\hBdpZpM\r\"`Zf[jG,9ZD2)(@P`E	XSA\"^Z0\"BH콕b6d4h\0&p/a\"cUpʐ@2=+L\"BF\0H";break;case"sr":$f="%)h.i4	|Ez\\4S֊\rh/PHPnv0G h\r\n)EȄ:%9>/M}H`(`1ƃQp9WhtuO`J\re;ьF\rgKB`X42]nG<^PdeCRFtɼ 4NQ 8'cIg2N9d08CAt0ոD1%Co-'3Do8eAZA)@{b0*;p&\0\r#p΃4\rY] s(>X7\rn07(9\r\\\";/9 踣x:Äk!;ƣ\"N\"\\:C*	zE<E-¶-н\"#JҐ+d*{^@51DK0jF9AhuPڬXD**L@2^@-8R6U45z'QƎT8ЧVG3RD=Oi1 l+Hc#1#*3ݷ,r1Gn 40T9`@`@2D49Ax^;ppqj3(#&\r\nѨ#x|2\rGYA,¯*77ҰeýM:	+YJ\"oVˡMƦۢZS:'Oږx0Cu悄\"\"ѽHiѻM=5(T2_Mz01 *jSO1a=b&0d;#`26fH#IKCDj?3N%Ѱib\"ˢpOI2k+Cf\$L4#L[/_bE-Fu2٣פ6D*zk0Z&JS/k*n\nTFyY9j))I\$/L*/#O ПhM`k!pt^ck&jǶvԂ B ЉB-S]:A\n F7DbQ̓[&ʸ\0<].)`[IO;3\rXWztШs`9G\nI. N(`\"PJ)::\\\n,:L9G䅁Ƀ8C\"aXbe6<\"*Fj>3tVXC\rRd ?nI.	JJ\"14LaA1F,c>Y[~h2C\r:M`}_fzHFQ\$K\"J&F22ե#QCЈ7.́\r#m0i\$&u2CH`Ө0Ѱ@\r.0DBS0vkT>Xc)gHD( \n (WS\n(+\01hNNZ[!jt\$Ӟ[FA䂿XoԱB6%Pѓ/:L\09\$сe8Iɘrt1LC;n78-iA03L Ps]K%U\0_\$\$nB2)RV%zhHQni5ZO@(,iHP'D(lW\$%ŧ ӤËi3#@,hZH1dyX2I:JTGP	L*WcRT?e,;5y+q&-(&DԂN.cE\"Q#<5ƜR- %d`u3^\0\0f0\0,(a\r4хؿ4.acE^|Bd^YE\0U\n @D)xQ4)1~Ԥ,N E	Wk\rdJ[PiQq!7L6P4;83V9~d)0^E2u	tN񷊽kkBkH6Pܣ%}d%tg*cŹ\r7q	S;k3Ȑ]\\DAh0B\\)%\\+k\"0žŔ\r;iEtT0&e#ID\nú+PNK#@Ok4:ԇ<eϟ\n\na=:K+F\$ä\naYAaHC\"_~+tO#\\pP)bIxA,^{j41H0\\P3KwiDL!PC5P}gaG<\nJW0*W,Xd94)P9\r񽻾!dyp_&q\nhT!\$Rm]D;Dzgm0@j62fʂ\"K.A#\"B`jF\r?B\"F0>&D\"PjuhN`+cK[\"MpLR~i>pc	c\"֫,hb]%OB\n}\rpRiPn4-PPPm	(cT%@ѭ F )`Xez'Jh&+\"PF*NvJ~1hZ*M#b#Ac%f&*}&L|NJ.\"Hv[c*xeFxH.8ѹdx0QGŚLgRC'NxB>fN4٪7nN+&AC/ 17.^+nt'Q 1(,25R6Zz4}(r4-'?\$<cBV. O (O\n\$dh\n@1rrhrb\"/Fk'J5&'H'(JntDQH[ 5BpTW*h hG\r6YO\$e\rL..2#!E/U.PkU/...'1rRA,1+o\n20\r3s*R24RN6(KJ\"y6\n)j\"LU#P47^jpj+k/0s7\no7p7/81S]8shLm7-Ɯӗ73:1*<0f;#3/<y&33Q3!sL>s^}51Zy,@Mڌ,.Zx\nn\$0^UB`\$\"gBA*o+>oS+<D ŴH}C^A1B.\\h,32=>/|)\"45E&2>OpF&N@4T3K2ݤ3%L\r23@4>4\$,NqX\"?Ji:c74GlhpQN\$OT`YJ\$L ѧFjh\$觥\r#Ks5G;UKNUUELl%ohKu/Lp1rtuaXQV7J)B-tqM 5YNHo\\r5t]\rPK4/RI,K9]1V_6TBR/8vfD\\@ :JbgBYa2\rv7bLh%sȹFz[3\\6`eJ@/)vsLTvh\"ug5/h Ҭk\n+ld#viN\"D֬6uUJDv?K25S9'jL<ܳi6P-O\nF5oM#B\0nn&	p+\$(i\rnm3G30:Lt*	3	tqTOwSodցtނ*5gb\\\rk\rR\npl-07O0;@s\$Q9rlׯ{jf奙:R-H䠚\r@f,=xٴlZ[w7[&#2kjx! o?P1LXb(}9Hl#@\"9E\$am]gtJ.B.;{zcrHt/Tgr:\$\\J#7H42R'8CR'{x-\$% Ġ6hM'@ߓ-DڣFhq,ZA\n\ra◊1=qAJN^Y@OzyJı*=\nhI`HҳSV\r*;UӊY7#̾5<y⽄ǌ`";break;case"sv":$f="%(e:5)@i7	 6ELp&)\\\n\$0s8t!CtrZo9I\rb%9iC7,X\nFC1l7AL4\$8uOMfSt7ASI a6&<b2\$)9Hd7#qu]D(ND0(r4\$U0!1n%(Ɖ:]xId3O\r3Dpt9tQN!ݾr#-+/5&d~hI':4Td5gb(ī7'\"N+<c7\"#̋죦E#μj(\n\$Crů\nL	è63C7M@=9<˫!\"\rh8C*҄3	#c<H<*)C&p&?,5ñH(,lD(4\r̫2\r:/I8LD9]!>JU\r?\0\0x\r0CCD8a^(\\#szJ;!xDlSr`7^0z6\rMK\nHFc:¸򭐖.\"p/-7`Aw\"H(7в&WO8]B\r6rvF :R\\c\$95Ve5B07ZcM#8.)O\nU+.dv)3X2o0<d(腧F4E6c\\E9BkL,mn[Tʂ\0 M4m%9t3I#8	#hᘹ\"(Yz!9[,tjAء	Hd0i5>B9e/C;x7C0UI84#62τj#d6#)sE2ac<[N	l\"M\"7'gPOS9zC3?{\\8C12kA# #^S4pAO	!cf2:hHJ\nd2:\nTS5T_b\r2,\n>0%l*c d-JPB\$ :`\":b\"5#`P)Tʢ\nb)1\r[+	\"()2FB(-]=EB5D%&DM7(DJ0XܺJI+G55T13y\0FQy<9}<ʇ3H[k.mzȌIAƤ\0l7}d)@fkH.`0sơ3<Q\r0˙6Lq@D0\"AГˋl\r=K?0\r9u҃#!\"a#,d% nQ\$FL(C\naH#MX0 qaxC8E2TK;O.#.[%ff\$Z@JTP{p6{@M\\A\nR+*JΜJ(,	I#h(jAUG\\Bij2*.:RkXv4f:\n@gzGy7!MD i#*ZsP䕑Fa2	FNY,'`B  \n@(@(R	!8#ːO\nAP*^2^bSu=κv/\"2\rwRvݤ(|σg,^\"p0JJX%dr(#w%1YN\"ÑYsU:!ΚJ	\r4GJ_fvNu3v\rĔzg(!-&NM\r.:xePq\rAΫcHaqZߚ(	\rko07>tyD!ls<A>Q(;N]>\$r\"'	T_\0\nc r2a]E3rqaJZYk:\"mEW1q߽MY5A/-{bV}a>-Ͷ7M5{q'ޓ&5j\$9zom}w^\\:l	'	f*RHNIԴ]O%cK%tyCrtd=fnz(uA;k5]MUMpa+/YՉAf05氭6N뤟94Ē;'^\rc d0ɹ ydJ!fIL&u<WB/|py仭\"M\\^~S1]޳>	DHڽ/>zs*Ӹ~lܗo)Kܘ|bԮ;#?!&~ݿ;j\"myM¯Oc/,nHfxэ:ϠZ)ib\"c\$lBIK|ظDL.9@=ÌJj''\0*5cEF\nOŘ\\n/[Mtׂ\njpNNpnp#M~Pv\\?,\r\"5Ji4\"ПmlQЎ1p[F8d5.;6c /+fJd\rmx)P\nrP0p\$uХ&>)1T&b\n\n\n1\$Em\"2N>/O>eD.O NB(\$e:#-8M<\"qw)!2n!JjC푾Ԓ͉R9!c\r#\rzK\r\"*!.W%%H%4!/I D&\r&	2CFOD0e,_+ZVC:²Q	dl\"%ʔ]72%r~('.%-BƱ}%Uf\rV\rdQC\"&@16.P/pxj>+\nZLփB\$\"*\r+bq2'*E.)3NgP(\rG1>^CmFe&CDlXhJ`,bwNHEYlI\$Z%bD	|eGn+r(k\$1§n;3D&q!=\r33l[De0PspnTd&K\rl,6=39l<bJd/í6;\0PAAFSq@o}rGR1AF\0U@";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U_\\dj?&JGFMSIXrJ΢_'JuC^ʽp i4=xS/Q*Adu'c(oFe3NbNd0;CAt0l,WKɨNCR,H\0k7S*RޢjMY`,#esrʢ\rBB4;2)(|\nD@\0P7\rn7(9\r㒐\">/9 ;x\$9X;̣#wI@k6G\"I uW(R0,d\rØ7j*+]!1%n,Lk\n.uHY3V7drڱĪ\\)Kz0\\W+q1ezwv櫖J)ӮdBH=Ͷ\nZ̫kF87-8l2=u@)uLWbDh:a	;@@<orR\nh)R_9dMtFa@6f\nMilƪl\"֫\n@ۓa۷J*4I+qj8Jښ#A5kEy# \"LA8;:\01oU=\"t1Mn4039`@q@2D49Ax^;rW]2x7=ϡxDlȃ464}?MV=*bZv±SXUU+c0_Y䀫F@2x2y.lP*V-	VdҐW!7\$@AA(dE͍v#޸zi4W[U5\"jW`=sͅKDav!:WƵ\"8/8WunaT4̉` p;TAAe+`:i-qlRH'oƵ\r]t]R}KU\$x{l9b\0a<1ܐBL%z3YHFF\"HsP2ƞB*GP+\"N~ZCꗏ_FygF:c\0rq	GdL+Y03|.cCW)xuHt+402VP(	&;Hi3!ѡtAO-_RMו\\,A!4Ltŝ3V#zPIS*a\rصrC*ujyP3wߌ+K\0Q;,cl7fjJ\0PT\r\"so\r3C@JC:Dn9hx: PM[O YHQMDڻ\0jKEj\\=n9Vit:C#mreɹW.\\۝sѶSM**d۽H\$-٢3K؍5k\0#s6el8Qg ArI\nM8UsU~1H]Rjk>Vu;Cp\r.M?8#k\\sNq:\0UtԺUPvN҅Då0n!'YpƱºecqeVy&\n;Bzsva\"{zg!JlCُ a` 1L bF3%jX\n*\ngDW(bCz:F.Kq,gQ\nj8{<X\$t=g8y.þ?5r(>\r496a1;yo50Gp}q. }Ch¡3|ĝ01.6\nW(Oy^\"%>WlWcqAda*y6DO=-`CoRXV[OhN6~6Q#eg^	@Yˋ-1V-2EVkOwY8-+T6ltI']Z:A^>ɇA\0fLKgu`d6e}8OIDU ;`\n<)G[,V<(ѱw3\".1/gJɠ7mCbL]w3˰tӫ\$`\$䤕ų\0S='J0T2z	ksL&_`}QUOUKGDo/0\0U\n @8 &_zxܥNPΆ]`&g\n/-0\$Ŝ3bF+~+QΧ|kn:GD*X/([C>!Zai.)jjn^0ߤhDj	 Ȯpx)CybbH6Dc.wԌ8\$GWpg	)\0қ\n<(d\"0\$+K~g l?CdVj\ny<?\0cNV tL٠@*wz`fɸ\"Î9N(\"J\nG(r`\rH#p'pR ,G \r 4jΊm-麤Pd\nV\n.;,J\rȄ(\$\nm4@° +\n\$<)*)5gЭHL^\$\rR[̩\"mq)HdI'N)\"+ \nIOZj7\0^`ǀ\rb\ng&>#2Bݫ 7VLpDj\nRf`3b6!D)!AFm	rv>&HQ9%x0b1	,P+alj:F#O\n`L@N\n\r0>Dh:N,\"B-ÔH.(PR-3JCÞ)li\nKMVP;XЂz-'30g|6Rˮ17%,\n\$n83iA6<\rG(ZcFPҤURB\\26r1ؠI\r3p-1H5R^9SS3/?ds?G@3nP3\rE9p9=d8@BEfN,Dr\$6%BX||&PI;KFbV)ATUb3g@f)	M<3p;؎^82k3dZ3@1ԩ<EjSt'k#F%si|it@&	Is]H┐iVSz@&\0<dlt@C\n5>|B0B(8YF)Q.:w.(INTbH<8i-]UuJedM\n@1UJ7qa<T%6A7eYiNWM>l~QZg@շZO[GTpZ\\uW]s(tGt8\"!<,ԒnW,ȞṖȀ-Ly\r妤d\nz3'SkO5\nuct@J4#K*0\nXUF6;;V[0[7AU[PfC3f!'\0,-_Rc?C.T{W5gSq1_2Gr\"13WU^Vh\rv`jAk^3jʖvmUCּ-5BYvVw@Wolts/䛔BUq\nM.;+p%^Cq!\\B+@݌OGNOS餔IbC:և4wg}me^h3K467iW3qsvcw4ׅ73zwK\$m{S\$/qF&BmzoU\\ܙ&OxSr4'8V}~]u|Y7t!v]ng~6i e7PGW!sկ\n_Q֨Ϥ)I&UP뤜=T+.BZ3V.4JcW ֲMϺYZ3jj`mi\0\n\0,v>8PʕX	\"\rhW|9^!Igm7(x-;I,nD\rU|;u}wWwuϓɁ.yA8}@1sCWrҿ@P\r5w7U43])If! ?WCrfM_×٥LnyWx+uz9\rY)5']m Cy%\"uHЉDWyOPE^f\"{y@%vYz4~v9m@Em3\\v:5QE5ۘF)]ltSyg8B8Z|AqJ*gHoEk7\"⥸h8/suW{us~YZ۬w:PzwmӭwEZx.s	4&v\$(פzÃ]R{;%ծ[C.>;\$Vm&CțvkM\$n;[vˠ\$(mP\rrUEAvkYW5k\r&xo7	\$}x97nOzIeM߼y;ZXzڳ{#i^RP9_ĳCiF-Ӿ1)a-(F\\.2||@(<KzOdxyG[@MlxeUS(ma)QjC\ns.^yp(uyZWc>ʹkJF|lT-41V\rKRAB56/QQnܯ\nZ_2sY3V/Ųg}[o!\$cT4ͪ\\ n\r;*\rpJ\rNl׏\npKL)[ן%uq3|&͝Q<j<=5\\Z	tbjTݽ?/q\0U{mz=fx_T	~'z%PUwz/9LSYqd<(|WV)\0FNrf?\0VEù\$`~š¼pϨ\nŮ\0xIQٮ);0ѹy^quՙv	5ZٽE#(eSzpU\"6XdzCUchGYM*¦;CD\rIDuչܓE>ا(|5lG^<JU (\$H،ØDv:*FM @&3v? \r{wXy	mqnf=.NP޷VR:\rVjQln8\0^\$I4Y3%|⩽ye^e<cZn5\n5y𿒘aZnܕ4	\0H@)L";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=UW	8{#+&\\K#[[=-O5,%&ݶ\\&TJ}'[AC\\k%'TLWȽg+!'MbC ɼ 4NQ 8'cI3@:>2#:\rL:#-ڀ EM˘a9~NsL^\\.-R\\\"CCEÚΩMR:()E<)CH3srR7!pbLB5ø7I#|@9ÄC;\$(θ(34#mSAJsت,pA\0b)>֪m/:\$JR\n;~&uU*9l\\S,?#NDN\\MGR\\Ə6\nH#\nj&4ŵ̝{8R!*L1	pNY52-SR<+/օ\\f)i_H.!؜ϊ8؅P'VŶeJ)7z)zx4/cWzF7ȢR2\rP4CQ9P1#3>S;0cݶu 9`@n@2D49Ax^;pðlS3(ѣH\r-#x|:RJ3+|ΩɃX\\铎TKS{a2I7=nzfLÑnW쳺\\;`P0Cv9A(A\r!씂#ȗF1H%	#ʜ#.IGgu/4∅*d!hO	݄ GClP0W]>[iLd&h4bh#2IN9ZdAҬ0WEᄣv|(MJ~D׼P(gtJX')2@\nI(#C؀ЉP0 A`ND0ߍmDGoedd[k__;f^S\"Q\"@evd.%aJ\\5`x-	<YxBB\"tQS;Ch}*\$^hBsa1tDA\$@@n\n{)C\n\r,7P߁P9\\\\66\$(y_	1:oBo>7@hum3C@xgKA@Ig)hSn(0SE#P2fxIT>);[[\r~W(i\\{rnU˹7Y\\rt@;D<\nm%ѝ+Xϫ\n.eZj:a\nfE:i'5? ];N8;99'(wsNp7'P\\\nX'VChp?KoT\0zNZΓ	eM%lc2庆;\0|\r1@j3ZJS\$b0@@\r0փANlP+UFE:X._R; \0 ,tpG^*E'`(!k}>_k	(F~xwRf3`v\"F4p^sV@M9OSu8T76bT\0܀ HH]n8=B\0C\naH#@jS@3џKrZ.Z,UNl	NF [o@Yh[\nBKBd6#; ,*a\$MD2'\$+V^P Ì7j3'pX#cI1@De#d-c\nE-\r4\n2\$K\0ڪdAkPp?#t3q'恩n+CY.6V`dk\r7EEٻr>iGNS	Z+,JL95\0U\n @ٻ@D0\"\rQx;ư:@՝Ӭt)d{a	Ba6`+|#!=TGbp9ll(WD\\LAwP\rIPgW%{!HHZWF~bg2~>̇@o\\\$LJ5JLPGbdrw\$El@fN&2o.|'DidB+\\z`\r *?7i-<DtBdN6:5 .\0(\"\"Ĕih5^>dx~)NXPd^P._DdH|讏2dNδx\$v^ \rgg/@'8:Bl-\"?@@\nFEH-*)diMVx]}Ɓc:9.c,ׯ:%dH<VYTSN`\n`\rlmEnMh~pF^0~Djú\\FTFBe	&yoZe`X^JcZ#da\0nQ-L/cFFDKVy3\\3֏-NBah f]?p6g\$\"S\nd&Eijl~QhWvB69c4dOlnP(<bA'rJZO4G2G%)ú҆@:J0G\nMtyBpr(ª2({V:&ID,R9Wp-dQdC`H\$}H.0{\$\"'ԲRjIa0s+013%S2/F\$&B~s,E5/5Q3sb (dFsl9!|/pU㍮p{-I)T2~yH&	:~<<S';N!;pb\"5P{iO^D7e8n 	Њ\"4?sg3q-&0`g\"3;-|e/gqU?(^\n7?5yB	aqCЬgSE\npV\nDIzy6+2t;!0T2|Ka13e9DlFVƀA3ä31\0003Hb!BҪb%\rQBD46OJ`\"rL>FeGŐ00uoQ..M	]=o`Ͱ-@5Cn:GJ3:E8s\nu?FE\$_HgV(T́EO45DUSPTRPtcZ0sTeYFD{O4H4\r[	T^TOZdUM)SdU)D/H143el2aR_aH)5蔵T_6&\\*J#'U6HK_I|9^NEb[Z2fLarQf\\K:V)ì7ש6+*G+Rz-hfj->@oIre41kjkZI_QtlK\0Bv}v\$0mƔ@mE7nl?n\0fio*Qo6tKp@pab\naTu8J.>b4thotJ✵1uGDnQ5mV?G tiOPvԝw?4pJ{uwde7r;sOGw1fz)y-nVZ2Ew1qS^F|I&%&f0>@tF:kRLW@K~jэ}>7~@Fp@u|B1mkc_w7H5&__4xVZ׋p8GW\0A^,\\CgvF}B/T'8=o	eؽ`RqYf)X	\rBaȴrPz\"`／ļTyL{Ad)+\$dUa='pqWa00J4ǎT܏2vͅjl\rVޠ~6\n&@35W\"x΄\rP\np* qZ4x:(9%Mt\$XW*3gu,d@	\04#ú)<:PQS{V_ˊq'M4ESXS=31xv]oYbx	GZ\$B\06nh\"UDi܉x.H87a?t9-(h'eD)<-H=F՚=6<!z2>#~\r+d\"FF5]#>VWe@^Cݤ霍<XO9ZZ{	:E=C5/c,@m\\ĔF'X6aɦ{(a<imt<iZF4%'`/C:c@a֋[z8}|FzBd<~{2@\rAWw;PW*-dħGc:E	\0t	@\n`";break;case"tr":$f="%(o9L\";\rln2NFai<BS`z4hP\"2B!Bu:`Ehr2r	LcAb'\0(`1ƃQp9b(Bi=R*|4&`(a1\rɮ|^ZɮK0fK\n!Lx7̦ȭ 4k|\"tit3-z7eLlDa63ڜI7FӺAE=FqH7PuMn7Q#j|aŘ'=sx03=g3hȎ'a\0=;Ch6)j2;I`҉\0A	j%H\\:\$&0@A#H :#\04B\n(ޡS\n;IƜB9Ãk:ê!0XB7\0P{GxҲ	;4=	 \$σ>#\$9p!pc:\rzT#9`@!c@2D49Ax^;Ձp:(\\zNүI|6MjB3#Qx4!^0Ɖ+4#Dym(\"Q92ڼ(*5<O31,U7BL!PTL\"XM-@08+tj#C'4PH{DmnvN֯#-L,b43%8Ô)fd &\r(P&&:X,Pܽ+@Ÿqx9b	Gh0c[Y=B-xQO\"x];纄\0x>ӫ)b,.#cn z,Jsrbp8!n[^='l7CwZ>2ܯ8#9[`6H QCh2si9㦃_0@3##D3Q}7ek@ab`WbXz5cl	b2~쨈B8BiehL3qĆ֒\"fN<TʡU*#j[^J]8*,,K+lBYW\r)f@'ÚJ=Tl/3!8IMQ-t.])AObEE}QV+@`bF')jg!,'T*RuRj*9+UnӼ9PLWJ0!\$\"t7\$En.stg|-H0-neٸl䘉[0\$n[ }TBњ슷&ELAp*@܁9u Ǿ/WHH\n\"s,tHH\"fjւ(wrPPcbĿ|'Ь>&Ţh.B:,I5ȹ\"hA^8AXG\$f	XA8erwfpΩ	a@SG(ӣŀF(r\r)\nvH㍢Ės;^>qŨ2x 	n.\$Y%B(&p GI(Ab<[D@I0{1Dɍ[1=^x2@'0k^ST\\w[,(-\0hHyFjPң}D! s+`Ruo^Kpx(i.Y>TDMikT\"OjvJ{^\$ӄP*ZrҘ0@3x]WxE	|\\wc'#sG.`ȑ*ɞS!.xk9lEbH\ro-@}@a(	*<Ǖ,Zrb\$8rzLF#tE7[zq>~mNM :Igۄn\$\"q\"WI.7__m,Âad0j+#RHMԎIKa`9#q\"}dl;ۺ^FcDC6uM\"_oȡ6Nr㠨NJGkRNҐY?}1%KW{&>\n!#N\\p2yZ2dyM`m0弇/wXݡW00lI	\n|LE?;tiz 0\nL:}ˆa\0_ߚ	1:1z靻{/_kEQCC6.xNqvlDIQ+r4`CeITe܆\\_(gJG&ŕNa=I\"wwr&yH!sGosj~xu=f?5Usq`1ƘnIbWh,L\n !ȴ\"P\\Gm\0Ƭ )/r`Ę٢\"IBD\0)&NZ,p؂\"0mZPUB;&GJop|ڀ#|Љ/NE07\"b΄N	0ArPt_βpkͻ0|PERńLQ\0mI(2\"D^e5ADH9%J6'#~\0	(Tp/`.MFcޅM4eP1|Q..01\n1#OofJfN;l\\FEl7ď\r0	/G .71J;YŨ!ɾ\"ȩ 2dLe\"D'Em\0F# ubA\$]\"&`&tJ+&քXA!/1.!(@C<99)N*lZxT?ݲ\$:mC2y)r-\nrl(Ni)M.2Q;qgKq>1c1REƲ^iP3@Hc]*82&~^5sLBG5 L&\"0_C5.z_o.뮓58Fpu,#6\$C^CZd\rVc8\nZJI4g3L\r0Ն^9\r:in,D!>L:h%6E)*y.'(&~d!l#âDF{Pa27(H,xV1\"1kkGH%6rH@\"\$:ˀ\$D\"i3!H7P[䌬\0	:GI͓\0c>iƖ&_`8L ZPxPpg1\0s'tEHHM:E`pg΢\"d9%G-ƊF&fc";break;case"uk":$f="%)h-ZƂh. h-mhĆ& h#˘.(.<h#v_Ps94R\\h%p	NmcL4PҒ\0(`1ƃQp9\$&;dH5}Q\$C˩ZB	D8(iyA~Gt(ygY1~Қ(BdׯKmJI\r.(VV1>#\$:-r%CǴ)/tp^\r>[73'6SP5dZ{h>/Ѡz0)28?v(P|\"oKB\"i{* 5ϲ:㹉вH8ޣ\"JBZ薉(F)ZY(\$&Y6,X\\Nz#DZ9)ĵ+;DLh1(3 (1@ݷlhQɠMH>K X Ě!аqQ&1d3WH\\C%PnTxH\$D-hU͋^5OR\"\"9#:hƁGQ8mn#NO*# 4(&Ԥ!rްX_ܥ0\\kUsɐ;(~\r3:x\r`Ap9x79cv2Fn=,@Mn;GB^0jXƐ/Q Ѭ+\rbe^V8<\nvxZnz	\nO[D_qNliRI!7`PJ2biZBʫ\rs5hZ~H(5h|\$`K ąDUDΐ':)Y:%<N3u^j\"Se#Yj/pf<Ǒr\rAS\0Zޖ|)zP8FFVTz\$,bdÛV.5'EJ,4V@PS\n!11hA>&IF_:НnB\\1%!DBIUġ35b<NX+x[*S]HaM2[\n׍*o\$+\$-hj\"((k@b\r?vrC?a7\0ZeE:'vIPbuVc\$Iѷ+EQ&?'DA0i?~\n}8㺨rdteZ\$hJOe[d-,lLIxX˘\nӎa&F9Й&Feg;3ɩ솳NjYT&6Yy-\$s_0qƞ	y73IDCRI\nG	=8*7LxLQ6ɜhxaG(&rLvt 71	N,I2FLS,e3FmP;gI*Ch\0c\0;Zkyb/c	M2\$Q1ڇ0bRXSEztIbQ*\n0e\rJV1N+ha:`TtJXfʓX2,MdZً3՛t@BIV&Ɓ!T觔DEjuWKM)ND>O<,9vR[:q,ҫwGdj\$#%moFoMCgyPPɥjЪBm-;RlŲr=gEPG+eKt*}\\@ 	IH\n\052	 h܂y}&¯a(h#\n o\0Ӥ_L^A\\m= ;@')s<]r1,Jhy	邆9@_/H0cث4J2viKɩIH60I-sC.\0R) z[;D\"U\nJl!SZٺFiiC&5gH&.@1\\uiV:.tӨHS(p`IZ+¾4\\Э\rӟ4 4&\$4\\\"<&JnNĞ-)T^j<^\0T~q]tNg6>7[̅=+6#LԲGk\\6je*; D9<\$wwORe\n`BIF\nBh#_٘BF\nTr.52\n[:dۘ2|}KpӉ0uI_!0^MdoͻWەƮ|9e\\r/o)Ap% QVnZϑ%QnD]BMXCY1Yꤼ%<@8^:66(N[{tɗMt0X:h}wJThOZ\\e;bGpFz>k\$\n`]}4a`r;^k=P|ba\"\nl\nPFÆFm>0O@l6PyMʏ6+`mO8x84+I|'A0ofh4d'*n*d2ONJDB Lج6f\$;#(Ŵ`\rb\nfL	p\n\\GT6\$^d&*((K-DeDYBPlj6irlơF59(\$lCpWG[#\"U\0\n 	'nJd,vj诌\0m-t,s\0^-m'tt#u%5ałA9/bI,C\0	C1&7ьoY!,qpS*X@uqq1<&%R\rwlcv%;ܿ0;  1q\rM 	;\"ˏAhʀn3iHNe4%nbLZ̴<!j=T{bPRx0(#li(Šlb^©'a<\nz΅n0[}m\"\\oDEq,1XHZHG*d&jt\$[/&^l/^/bQQs\n'o0e4*Dþkܓ+01?3h=711~<\$SK3d:jXˮ4pC(mSyI'Dzꮄ\0\n+C/OD/cDV.7E#S*2Lh'pr Sb5A5Q!v}\"=\"Gb,d`FrU-3E*\r24\n4F36L^æ8\nQT̉AGO~OC!C]D2F舱t(T5E1BmEToED=ty0M+\\34KhL qSH2zASgIn]I(gJGE\"+GW5sGKTHKRTJʣ6;JѡKJA\n44GP+\r_P!PFQQΣPTMGRE<r@VEz' d[]h@UCT~;L0q?j&Tw7J_WP]uG+P=鐛PU1\n.jsv	5%.?#HNoB{RTRP4S9iMU8ZS;\"P^Tl3c0_V!I.^b\n	DV\rQUba\"_PRE2^GP1\$>o#+곑a(8ǅB]Nxn5FkbI7HVKVub6Gu]k+pi\rLGOB	kel/a5lVv\\D^T-G\rȕab5F7/?v?mTI\$\0[wOOVIqW*լe3stEs(\"sG_u7dsV&u]th\rjP\nd\0~\0@\0%\nwx\0yס\rxp7_`pxa*T_'vZEW7gr)v\r.:ZumhFZaQD6,VGR-l/ueR#ydp'A2ZkrAJ?\$[vNc%46FԷ2KgL/)s 1+1\$\$n8'd%0[ 0N!mgI˳I15tJSH7\"1jS3ߏ|n8)u.)&yg(K]\$:pP\"joϮYQ9,\nZGau`0E7W-\\QK1Tk^&ۗQЬ\"	/b{Rp5lVF*^cx#E4D\$ERHw]U8:Y'\$*8y&d̒b\$g?.@&L.q>Gv53Mp\0Gi5{qŉT,awv9Vq4>|3V(#koiyv.!Pm΅5M']%/8\0n޵`]J\noې#a-n-X@ \rMհiG8|T!7,6rO/\$	jܼB.jF0ЕE\rV;Uhl)t*R;=H/4QUV\\";break;case"vi":$f="%(ha\rq]Ҍ]c\rTnAjhc,\"	b5H؉q	Nd)	R!/5!PäA&n&0cAn8QE\r Y\$Eyt9D0Q(Vh<&b-[no\n(U`+~daH8iD\\Pnpu<4k{C3	2Rum]/tUږ[]7;qqwN(a;m{\rB\n'ٻ_2[aTk7)o9HH0c+767 88@@ \\j L+@ƻl7)vOIvL:I枧fakjc]/P!\0d! K P k<M\0\r@h4AN!c3(7\$Xb,(R-2j]2<!iJ NA1[(Rf1B\"\rAZ8B<&u=SI#qtI>(0P2\r<9ph#n\0@C҇\r㭘B%\n\0x3:x{\ra?/p_pcI|63?k4^02T.́BED\",9e9):&Y^\";\n7ZH(J2/C2S)cs2R̩JVJ\"!7\"]q:V6qJćeJZ7k,2 JGV\n5Hƈ3Q7tWcéVI~;U6Ê4J4YfBΓF\n#TĮ@-џR|[46'h(PCcn\r)+uߢ\$\n)C4{au!FTz~ص%WhUH*]RTs/5ux \"lb'@:\rPrDZHhy%\r3*Ih;\\F BnEP.)],\\ Qz^Qfi.Hn2T	3Õx3hu~ar\\Ȱ8 ]+vת}ǐ\\vnbd-1B&~KQAC:E4ċY3oČEғKTuK\$t.ػ^|/}dxr_A	`Þ(I,\rt=\$O3Ie9,\"o\"] 	@K4:O@`l/H8XC+D!Őf6R\$	PĺnRC)uN^K+nBH\n%IH\$,c:> Iق!rƆP{:g\r#sÐ15hAgFpnyp!&+3\\7@\$-\0D- Y%tUjZŠĚ\"B:×bʫN,FdPh&t9hS\"vdM}N!tBK՘l:BHy?U!+ӠTҎ*iBPV>FSl&|\0¤L;]%zN8bLC,%nSb[iAd:P	I)hJ\")\$[2˸F\nY9rFsjiN\"{	Bͺ\$߲\nYmg1/\n3E%NIr/#<tBITDsaPb5^t\nJ;BsY%,̢Beds=M*Y`(\n,3&}	hJ	4(fPPBӦB2\r2sE9pzM^ҀPV/>7:H͙u]%bOK3}ϑڡ|J;ol#6PكHzd2s\rfxy%B \"iaef}qV`(*3HT^o|ԟ c	MunVx\ntiLK|&j3jRi	֙MLݩh#FUD\niCnjWP*\"fX,WaIa/ڑt\0́Lv\\[:bPJywMEByh!Y9ood`ҿ7b\$ B&+MiX(\$r\n1!%^fE[Qhs \rG[3qe^P;B7o~~\n_m_-)eܠ%r	c(_IsFQ 2Ir:~ª6BE.{~;B/z\0Bf!F3mLfSo*8922p6KPN-ڀ>6'@~BBt^\"b-@qb6D5nU<FAڡv\\8|N8\\6\"\0k2˧KDВd\0|m\0Ă(@O\0H{pS`(̀g{!n/mĲ*c[ń\\'&1hv<\"B *m	0ƣ	n0C<Bf9|pbqN/QvEd:o\n\rQnGrŦ<+\rc\${B0(4H8P{DѢif&gYPeL	f°0 Nq[!WѬjGg'9x0Hm\".~F,dl<aN7\\8\$JR!v̜nR:T\\~ rF.tXRo'{'z(3\"ڐSp>p6\"5HJ,pAL\rOZ-H)2I*'2-Rk~M(e˕.R\$\"%0 ֐D\0f=PP*s11'@l2s20+*h\"&Xg2B-\r55dѓhns	7byWMf015nQ`e9o6Q33,\0}&FJ#cN~#V0͠W*oH#q&:deX'Os\nV(	8bРLZpJd12k%-\$xZ\";k/pf4R\nZkDLn1TqLB\"Gre0n}W-2H&-\rrBrC6&hmF8j0F@Tx6BU-vpˎQ\$0,\r#FA/:p\0,QZFv`bZtQN&.6/Ŧ_o\$84tTPLJli27j<E,KST\"V%\n-?\$35:\$q%?\"ro|	dֱ@0kӾjPa^0J]%\"gU0*ƥ<u`4Iu)fK3m@h.B)mfC:WWlmƺ4B";break;case"zh":$f="%:\$\nr.r/dȻ[8 S8rNT*Ю\\9HHZ1!SVJ@%9Ql]m	FU*qQ;Cf4usUUt w:t\nrU:.:PǑ.\r7d^%u)cxU`Fjrs'PnA̛ZEf]EvitUλSծ{Pg5	EPN1	V\nW]\n!zsΟRRVI:(s#.UzΠ@:w'_T\$pVLD')bJ\$pŢ[MZ\n.>sKAZKaLHAtF3D!zHC*re^K#sXg)<v׬hE')2Anrj\n:1'+ֲ2izJsͲ h7]	9HN_esK?	RY4=DF@4C(C@:tT3>x3(9I|1B:LΝ\$=0!tIE'5(RMy&s#SE͒CH]K:KC%um0KV)\"EA(CGAFpܗ&fTYCG)\0DGSW)\0^cTewa D#8s*.]\"h^9zW#s\0]c9a Dj<V]2gC\$CCm8)\"entI4}|=3Q''1Q,g^nKsSL̋&eȜ:ϿC34;.Ml,caKLNuDA-uPDJO66ҙt_No-6MHX:V.,38C\$.fC\$HjWDʗLYOD=O+Ÿt	\"MRDbL:\nTTZV@t\r0}`e`,\" tbKGHN\"\"AZE܈iC[c4yH!)52&,<TʡUuXVj[Psj`5\0:	AphB(E\$\$W1,\"r,E)4H:a>ŊH9kdvgń?M#\$#ȁ9t,ǨzZ) @@Pv*!Y8(BLJ8R1`9Ky2CU#0hDJbʹ{mRʘ NAr@a(3|WT&&LZ((ĩ-I\0PN#\n\"\0C\naH#.)&ĳ#g#/I\$V&.F8:E39)%hhs\nj;?ca@ˉ\\p Z琻W*?HO\"\n\"Af\\0TuJPQH)\0r<	\nES`:D+=g힋΄1`y'	/5\\G%f,RrS܊A,xK\"\\\0U\n @i@D0\"L%騵L	o%nS2Qm)8Rޘ	B Y89P39fKCִټ8sE7,(&i6eEژB[P]I89nf蠴vfsp\r\"NAʼg:M(vuӞ)bA9ɚ\n&ڜ\r\"8t\$ QBC:-mu\$6|J4\0(c\rxT!BA\0ck\$R۽dlЖ@EpM&/O&!0Ip##drP 09F/L|`,\rF%ӢXK\"#3RT\n7ĺC#LIu_HMDlR5.:'۫v;غ{a.@D@m}bHc'E+VY,f(bݖ`TYmGC\rB5Vav!Z\\z-E^B^]\"5^snD1Ef5rUW4\\'fd9/RzFK@`G1\0\$G5bI7W.\":s\$!Nlr'Byg&\n,::wzt|5j/~=.c9ۙ^|`?BAPOʝfZFW^*9<\$r)QDȲIlBTْz(cdC/,F3:!\"S%wM7H_YArXs~<WKƩ/wĹpȞM#/Т|%B0P]0kP&\"@-e`|.CJ*P(M2E0ha[-Hy!rrTmOFVg86ϐ-Za0r0\0W\nwpnd90\np^\re6W@@@V@\r\0\\PPu0@w1\r ,@,\rn\0LڣlPDoZИ\0DdK\r\rLq{\rQ.WL/Fl2BA>mh3bM5:(\$h-\nzB{7\$ipFקPgz\rv~p 3F)d OOC\nZh@C!Nd%H.!.6ì\"6dgrT3&p*\\J.&͂RnBҭk+nƒ.B`tcB&dǲx++.KDdZ[Ah V\n`چ,	\n:r<\\\"BLR)143F:js)6c{HL";break;case"zh-tw":$f="%:\$\ns.eUȸE9PK72(Ph)ʅ@:i	aJe R)ܫ{	Nd(vQDCѮUjaʜTOABPb2ar\nr/TuʮM9Rz?Tא9>SNeI̜Dhw2Y2PcмW*=s7B9J\"XQ2M/J2@\"WrTD{utspS\\=\0Vp\"R )ЪOHΔT\\ӊ:}JF+JV*rEZs!ZyV꽯yPA.yZ6YI)\ns	Z̢[2̒KdJ12A\$&Y+;ZY+\$j[GAn%Jst)P)<?\0Uw*x].2ft+<Kd(A2]*X!rB\n# 4(tE\rl	Tr{:OpbJBO:F@4C(C@:t㽄4)Kx3(9PI|t(B1֯B|\$	q/9H]D̸et\\K6?஋LQ\\1H@PJ2:@ea	&s2So1Qd0ם3Mewd:<C)xGdrBHreBi^1I@\"ZP@fg1pM	j^B<JLf*83(ڰ:s (&^)Dr\n淘1(\\մ	_ܾ7&]>Tt734ҥr</hCHHs,o7|u+wx!1	EAD!?'^wG\"\n(:K6teMQ'qAo'1*K\\jDq0Jt r\"@:D8[̈^\"wdB	+YKBH5*#Bl@6EX5jʻW`5	BY8@t\r1l#WЬŔDDAL\"WB)AL28R08\"jߊ)D=B Ŕk|UhºW`, 4'Y+-fpsam@T<(=,hL5+ю2(^TQ\nȭ|Ff!9ÖB\$\$96 a\$P~/r'Ź30\"&E@.ҺpU\0ΛnqHNsS|3Z(ХBs\0i~)W3\$̙(Uj>\$\r-#P^\rbs	^Lp!Rpt*nP+C0 aL)`@xkYKA<bh5Q,+K\0AF( MfhΔa93HL\\\neN^&9U%0Qtq8DHQttDRO\naP*Hɉ=ll|\"]\"*UV9 \0P(\$,c'p09zqΘG#L(FR(	3I<'\0 A\n]@(L1zPĀ䌏ZEͺa18cvYe`\\B;'n^9<!SǄb^rzm\0<dJq @k#NH@B+\\\"DAwM=SZ#N(TVaJdX\$NG3h\nq<8\nSꀫuS*GU0!LsADВÛsBqynB@0H&\\UR]:n\na20!=I0FLLlNjDO0FΒƄ/2MQv-wNB4!pb@@@>r˘=)w%Q=|TyX 1G4H\\^'26\0Hv))Lכ&]ơ@Fw&^cN7lF/2\\E	IAN<E&:%\"r\\\\|tHNG-Ǒ@ nBpZזķ-#,]n| z-轺?dӈD.b/a3aAASјh[#E5F-Lsу\nWO,<\rh:4RTao76>#Ȋh7d/B<ZsFᡴB_L>7b=ýxb]u~O˞b}AH/9\\quE#~*8wΠ2\0.\n\$kKg/m>ڐ%-&|CP5,bS#n2IJnOd^/Jj>\n֤/!(	\$[N({;@g,c4I`cllngxCl٦p+\r0C\r\$.t!:,战\"%7#vp_*[Lbkr2S^(7eT7ZD\"p^<fB:A|/-Pzo1%!I/mFqOl.MFԠVec Y@\r\0\\M_('RqѼq@F9E!ձemf-Nqs\rs!kP+\"Mv#2>.H\$viKd!N0SPB2P	Ԁ!Bb̂4tCޮ<iƕPRjDcaz!ph!\n.:CCAB1\n2g\r-:%bg\$OEV\nZuh.:J!bxz[M2^kK)9C[0lPE42H>Jցí5bt*FQz,7:tjo*A*\0!`^/ϸFO@w;0)VƘi<N\"!zfFNAp.a*^ \r6ρDd\r(I.7s8*C	Jx4(9R<Lg'-'a\$\"<),BHO";break;}$si=array();foreach(explode("\n",lzw_decompress($f))as$X)$si[]=(strpos($X,"\t")?explode("\t",$X):$X);return$si;}if(!$si){$si=get_translations($ca);$_SESSION["translations"]=$si;}if(extension_loaded('pdo')){abstract
class
PdoDb{var$server_info,$affected_rows,$errno,$error;protected$pdo;private$result;function
dsn($hc,$V,$F,$yf=array()){$yf[\PDO::ATTR_ERRMODE]=\PDO::ERRMODE_SILENT;$yf[\PDO::ATTR_STATEMENT_CLASS]=array('Adminer\PdoDbStatement');try{$this->pdo=new
\PDO($hc,$V,$F,$yf);}catch(Exception$Cc){auth_error(h($Cc->getMessage()));}$this->server_info=@$this->pdo->getAttribute(\PDO::ATTR_SERVER_VERSION);}abstract
function
select_db($Kb);function
quote($Q){return$this->pdo->quote($Q);}function
query($H,$Bi=false){$I=$this->pdo->query($H);$this->error="";if(!$I){list(,$this->errno,$this->error)=$this->pdo->errorInfo();if(!$this->error)$this->error=lang(21);return
false;}$this->store_result($I);return$I;}function
multi_query($H){return$this->result=$this->query($H);}function
store_result($I=null){if(!$I){$I=$this->result;if(!$I)return
false;}if($I->columnCount()){$I->num_rows=$I->rowCount();return$I;}$this->affected_rows=$I->rowCount();return
true;}function
next_result(){if(!$this->result)return
false;$this->result->_offset=0;return@$this->result->nextRowset();}function
result($H,$o=0){$I=$this->query($H);if(!$I)return
false;$K=$I->fetch();return$K[$o];}}class
PdoDbStatement
extends
\PDOStatement{var$_offset=0,$num_rows;function
fetch_assoc(){return$this->fetch(\PDO::FETCH_ASSOC);}function
fetch_row(){return$this->fetch(\PDO::FETCH_NUM);}function
fetch_field(){$K=(object)$this->getColumnMeta($this->_offset++);$K->orgtable=$K->table;$K->orgname=$K->name;$K->charsetnr=(in_array("blob",(array)$K->flags)?63:0);return$K;}function
seek($D){for($u=0;$u<$D;$u++)$this->fetch();}}}$bc=array();function
add_driver($v,$C){global$bc;$bc[$v]=$C;}function
get_driver($v){global$bc;return$bc[$v];}abstract
class
SqlDriver{static$ig=array();static$de;protected$conn;protected$types=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$inout="IN|OUT|INOUT";var$enumLength="'(?:''|[^'\\\\]|\\\\.)*'";var$generated=array();function
__construct($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($o){}function
unconvertFunction($o){}function
select($R,$M,$Z,$pd,$_f=array(),$_=1,$E=0,$ng=false){global$b;$Yd=(count($pd)<count($M));$H=$b->selectQueryBuild($M,$Z,$pd,$_f,$_,$E);if(!$H)$H="SELECT".limit(($_GET["page"]!="last"&&$_!=""&&$pd&&$Yd&&JUSH=="sql"?"SQL_CALC_FOUND_ROWS ":"").implode(", ",$M)."\nFROM ".table($R),($Z?"\nWHERE ".implode(" AND ",$Z):"").($pd&&$Yd?"\nGROUP BY ".implode(", ",$pd):"").($_f?"\nORDER BY ".implode(", ",$_f):""),($_!=""?+$_:null),($E?$_*$E:0),"\n");$Ch=microtime(true);$J=$this->conn->query($H);if($ng)echo$b->selectQuery($H,$Ch,!$J);return$J;}function
delete($R,$wg,$_=0){$H="FROM ".table($R);return
queries("DELETE".($_?limit1($R,$H,$wg):" $H$wg"));}function
update($R,$O,$wg,$_=0,$fh="\n"){$Ui=array();foreach($O
as$z=>$X)$Ui[]="$z = $X";$H=table($R)." SET$fh".implode(",$fh",$Ui);return
queries("UPDATE".($_?limit1($R,$H,$wg,$fh):" $H$wg"));}function
insert($R,$O){return
queries("INSERT INTO ".table($R).($O?" (".implode(", ",array_keys($O)).")\nVALUES (".implode(", ",$O).")":" DEFAULT VALUES"));}function
insertUpdate($R,$L,$G){return
false;}function
begin(){return
queries("BEGIN");}function
commit(){return
queries("COMMIT");}function
rollback(){return
queries("ROLLBACK");}function
slowQuery($H,$ei){}function
convertSearch($w,$X,$o){return$w;}function
convertOperator($uf){return$uf;}function
value($X,$o){return(method_exists($this->conn,'value')?$this->conn->value($X,$o):(is_resource($X)?stream_get_contents($X):$X));}function
quoteBinary($Tg){return
q($Tg);}function
warnings(){return'';}function
tableHelp($C,$be=false){}function
hasCStyleEscapes(){return
false;}function
supportsIndex($S){return!is_view($S);}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
WHERE c.CONSTRAINT_SCHEMA = ".q($_GET["ns"]!=""?$_GET["ns"]:DB)."
AND t.TABLE_NAME = ".q($R)."
AND CHECK_CLAUSE NOT LIKE '% IS NOT NULL'");}}$bc["sqlite"]="SQLite";if(isset($_GET["sqlite"])){define('Adminer\DRIVER',"sqlite");if(class_exists("SQLite3")){class
SqliteDb{var$extension="SQLite3",$server_info,$affected_rows,$errno,$error;private$link;function
__construct($q){$this->link=new
\SQLite3($q);$Xi=$this->link->version();$this->server_info=$Xi["versionString"];}function
query($H){$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'".reset(unpack('H*',$Q))."'");}function
store_result(){return$this->result;}function
result($H,$o=0){$I=$this->query($H);if(!is_object($I))return
false;$K=$I->fetch_row();return$K?$K[$o]:false;}}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,"charsetnr"=>($U==SQLITE3_BLOB?63:0),);}function
__destruct(){return$this->result->finalize();}}}elseif(extension_loaded("pdo_sqlite")){class
SqliteDb
extends
PdoDb{var$extension="PDO_SQLite";function
__construct($q){$this->dsn(DRIVER.":$q","","");}function
select_db($k){return
false;}}}if(class_exists('Adminer\SqliteDb')){class
Db
extends
SqliteDb{function
__construct(){parent::__construct(":memory:");$this->query("PRAGMA foreign_keys = 1");}function
select_db($q){if(is_readable($q)&&$this->query("ATTACH ".$this->quote(preg_match("~(^[/\\\\]|:)~",$q)?$q:dirname($_SERVER["SCRIPT_FILENAME"])."/$q")." AS a")){parent::__construct($q);$this->query("PRAGMA foreign_keys = 1");$this->query("PRAGMA busy_timeout = 500");return
true;}return
false;}function
multi_query($H){return$this->result=$this->query($H);}function
next_result(){return
false;}}}class
Driver
extends
SqlDriver{static$ig=array("SQLite3","PDO_SQLite");static$de="sqlite";protected$types=array(array("integer"=>0,"real"=>0,"numeric"=>0,"text"=>0,"blob"=>0));var$editFunctions=array(array(),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");function
__construct($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,$L,$G){$Ui=array();foreach($L
as$O)$Ui[]="(".implode(", ",$O).")";return
queries("REPLACE INTO ".table($R)." (".implode(", ",array_keys(reset($L))).") VALUES\n".implode(",\n",$Ui));}function
tableHelp($C,$be=false){if($C=="sqlite_sequence")return"fileformat2.html#seqtab";if($C=="sqlite_master")return"fileformat2.html#$C";}function
checkConstraints($R){preg_match_all('~ CHECK *(\( *(((?>[^()]*[^() ])|(?1))*) *\))~',$this->conn->result("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".q($R)),$De);return
array_combine($De[2],$De[2]);}}function
idf_escape($w){return'"'.str_replace('"','""',$w).'"';}function
table($w){return
idf_escape($w);}function
connect($Cb){list(,,$F)=$Cb;if($F!="")return
lang(22);return
new
Db;}function
get_databases(){return
array();}function
limit($H,$Z,$_,$D=0,$fh=" "){return" $H$Z".($_!==null?$fh."LIMIT $_".($D?" OFFSET $D":""):"");}function
limit1($R,$H,$Z,$fh="\n"){return(preg_match('~^INTO~',$H)||get_val("SELECT sqlite_compileoption_used('ENABLE_UPDATE_DELETE_LIMIT')")?limit($H,$Z,1,0,$fh):" $H WHERE rowid = (SELECT rowid FROM ".table($R).$Z.$fh."LIMIT 1)");}function
db_collation($k,$ib){return
get_val("PRAGMA encoding");}function
engines(){return
array();}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($C=""){$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') ".($C!=""?"AND name = ".q($C):"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",null,"")as$K)$J[$K["name"]]["Auto_increment"]=$K["seq"];return($C!=""?$J[$C]:$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){$C=$K["name"];$U=strtolower($K["type"]);$l=$K["dflt_value"];$J[$C]=array("field"=>$C,"type"=>(preg_match('~int~i',$U)?"integer":(preg_match('~char|clob|text~i',$U)?"text":(preg_match('~blob~i',$U)?"blob":(preg_match('~real|floa|doub~i',$U)?"real":"numeric")))),"full_type"=>$U,"default"=>(preg_match("~^'(.*)'$~",$l,$B)?str_replace("''","'",$B[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[$C]["auto_increment"]=true;$G=$C;}}$xh=get_val("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".q($R));$w='(("[^"]*+")+|[a-z0-9_]+)';preg_match_all('~'.$w.'\s+text\s+COLLATE\s+(\'[^\']+\'|\S+)~i',$xh,$De,PREG_SET_ORDER);foreach($De
as$B){$C=str_replace('""','"',preg_replace('~^"|"$~','',$B[1]));if($J[$C])$J[$C]["collation"]=trim($B[3],"'");}preg_match_all('~'.$w.'\s.*GENERATED ALWAYS AS \((.+)\) (STORED|VIRTUAL)~i',$xh,$De,PREG_SET_ORDER);foreach($De
as$B){$C=str_replace('""','"',preg_replace('~^"|"$~','',$B[1]));$J[$C]["default"]=$B[3];$J[$C]["generated"]=strtoupper($B[4]);}return$J;}function
indexes($R,$h=null){global$g;if(!is_object($h))$h=$g;$J=array();$xh=$h->result("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".q($R));if(preg_match('~\bPRIMARY\s+KEY\s*\((([^)"]+|"[^"]*"|`[^`]*`)++)~i',$xh,$B)){$J[""]=array("type"=>"PRIMARY","columns"=>array(),"lengths"=>array(),"descs"=>array());preg_match_all('~((("[^"]*+")+|(?:`[^`]*+`)+)|(\S+))(\s+(ASC|DESC))?(,\s*|$)~i',$B[1],$De,PREG_SET_ORDER);foreach($De
as$B){$J[""]["columns"][]=idf_unescape($B[2]).$B[4];$J[""]["descs"][]=(preg_match('~DESC~i',$B[5])?'1':null);}}if(!$J){foreach(fields($R)as$C=>$o){if($o["primary"])$J[""]=array("type"=>"PRIMARY","columns"=>array($C),"lengths"=>array(),"descs"=>array(null));}}$Ah=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){$C=$K["name"];$x=array("type"=>($K["unique"]?"UNIQUE":"INDEX"));$x["lengths"]=array();$x["descs"]=array();foreach(get_rows("PRAGMA index_info(".idf_escape($C).")",$h)as$Sg){$x["columns"][]=$Sg["name"];$x["descs"][]=null;}if(preg_match('~^CREATE( UNIQUE)? INDEX '.preg_quote(idf_escape($C).' ON '.idf_escape($R),'~').' \((.*)\)$~i',$Ah[$C],$Fg)){preg_match_all('/("[^"]*+")+( DESC)?/',$Fg[2],$De);foreach($De[2]as$z=>$X){if($X)$x["descs"][$z]='1';}}if(!$J[""]||$x["type"]!="UNIQUE"||$x["columns"]!=$J[""]["columns"]||$x["descs"]!=$J[""]["descs"]||!preg_match("~^sqlite_~",$C))$J[$C]=$x;}return$J;}function
foreign_keys($R){$J=array();foreach(get_rows("PRAGMA foreign_key_list(".table($R).")")as$K){$r=&$J[$K["id"]];if(!$r)$r=$K;$r["source"][]=$K["from"];$r["target"][]=$K["to"];}return$J;}function
view($C){return
array("select"=>preg_replace('~^(?:[^`"[]+|`[^`]*`|"[^"]*")* AS\s+~iU','',get_val("SELECT sql FROM sqlite_master WHERE type = 'view' AND name = ".q($C))));}function
collations(){return(isset($_GET["create"])?get_vals("PRAGMA collation_list",1):array());}function
information_schema($k){return
false;}function
error(){global$g;return
h($g->error);}function
check_sqlite_name($C){global$g;$Kc="db|sdb|sqlite";if(!preg_match("~^[^\\0]*\\.($Kc)\$~",$C)){$g->error=lang(23,str_replace("|",", ",$Kc));return
false;}return
true;}function
create_database($k,$hb){global$g;if(file_exists($k)){$g->error=lang(24);return
false;}if(!check_sqlite_name($k))return
false;try{$A=new
SqliteDb($k);}catch(Exception$Cc){$g->error=$Cc->getMessage();return
false;}$A->query('PRAGMA encoding = "UTF-8"');$A->query('CREATE TABLE adminer (i)');$A->query('DROP TABLE adminer');return
true;}function
drop_databases($j){global$g;$g->__construct(":memory:");foreach($j
as$k){if(!@unlink($k)){$g->error=lang(24);return
false;}}return
true;}function
rename_database($C,$hb){global$g;if(!check_sqlite_name($C))return
false;$g->__construct(":memory:");$g->error=lang(24);return@rename(DB,$C);}function
auto_increment(){return" PRIMARY KEY AUTOINCREMENT";}function
alter_table($R,$C,$p,$cd,$nb,$sc,$hb,$Ba,$Wf){global$g;$Ni=($R==""||$cd);foreach($p
as$o){if($o[0]!=""||!$o[1]||$o[2]){$Ni=true;break;}}$c=array();$Kf=array();foreach($p
as$o){if($o[1]){$c[]=($Ni?$o[1]:"ADD ".implode($o[1]));if($o[0]!="")$Kf[$o[0]]=$o[1][0];}}if(!$Ni){foreach($c
as$X){if(!queries("ALTER TABLE ".table($R)." $X"))return
false;}if($R!=$C&&!queries("ALTER TABLE ".table($R)." RENAME TO ".table($C)))return
false;}elseif(!recreate_table($R,$C,$c,$Kf,$cd,$Ba))return
false;if($Ba){queries("BEGIN");queries("UPDATE sqlite_sequence SET seq = $Ba WHERE name = ".q($C));if(!$g->affected_rows)queries("INSERT INTO sqlite_sequence (name, seq) VALUES (".q($C).", $Ba)");queries("COMMIT");}return
true;}function
recreate_table($R,$C,$p,$Kf,$cd,$Ba=0,$y=array(),$dc="",$na=""){global$m;if($R!=""){if(!$p){foreach(fields($R)as$z=>$o){if($y)$o["auto_increment"]=0;$p[]=process_field($o,$o);$Kf[$z]=idf_escape($z);}}$mg=false;foreach($p
as$o){if($o[6])$mg=true;}$fc=array();foreach($y
as$z=>$X){if($X[2]=="DROP"){$fc[$X[1]]=true;unset($y[$z]);}}foreach(indexes($R)as$fe=>$x){$e=array();foreach($x["columns"]as$z=>$d){if(!$Kf[$d])continue
2;$e[]=$Kf[$d].($x["descs"][$z]?" DESC":"");}if(!$fc[$fe]){if($x["type"]!="PRIMARY"||!$mg)$y[]=array($x["type"],$fe,$e);}}foreach($y
as$z=>$X){if($X[0]=="PRIMARY"){unset($y[$z]);$cd[]="  PRIMARY KEY (".implode(", ",$X[2]).")";}}foreach(foreign_keys($R)as$fe=>$r){foreach($r["source"]as$z=>$d){if(!$Kf[$d])continue
2;$r["source"][$z]=idf_unescape($Kf[$d]);}if(!isset($cd[" $fe"]))$cd[]=" ".format_foreign_key($r);}queries("BEGIN");}foreach($p
as$z=>$o){if(preg_match('~GENERATED~',$o[3]))unset($Kf[array_search($o[0],$Kf)]);$p[$z]="  ".implode($o);}$p=array_merge($p,array_filter($cd));foreach($m->checkConstraints($R)as$Va){if($Va!=$dc)$p[]="  CHECK ($Va)";}if($na)$p[]="  CHECK ($na)";$Yh=($R==$C?"adminer_$C":$C);if(!queries("CREATE TABLE ".table($Yh)." (\n".implode(",\n",$p)."\n)"))return
false;if($R!=""){if($Kf&&!queries("INSERT INTO ".table($Yh)." (".implode(", ",$Kf).") SELECT ".implode(", ",array_map('Adminer\idf_escape',array_keys($Kf)))." FROM ".table($R)))return
false;$yi=array();foreach(triggers($R)as$wi=>$fi){$vi=trigger($wi);$yi[]="CREATE TRIGGER ".idf_escape($wi)." ".implode(" ",$fi)." ON ".table($C)."\n$vi[Statement]";}$Ba=$Ba?0:get_val("SELECT seq FROM sqlite_sequence WHERE name = ".q($R));if(!queries("DROP TABLE ".table($R))||($R==$C&&!queries("ALTER TABLE ".table($Yh)." RENAME TO ".table($C)))||!alter_indexes($C,$y))return
false;if($Ba)queries("UPDATE sqlite_sequence SET seq = $Ba WHERE name = ".q($C));foreach($yi
as$vi){if(!queries($vi))return
false;}queries("COMMIT");}return
true;}function
index_sql($R,$U,$C,$e){return"CREATE $U ".($U!="INDEX"?"INDEX ":"").idf_escape($C!=""?$C:uniqid($R."_"))." ON ".table($R)." $e";}function
alter_indexes($R,$c){foreach($c
as$G){if($G[0]=="PRIMARY")return
recreate_table($R,$R,array(),array(),array(),0,$c);}foreach(array_reverse($c)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($Zi){return
apply_queries("DROP VIEW",$Zi);}function
drop_tables($T){return
apply_queries("DROP TABLE",$T);}function
move_tables($T,$Zi,$Wh){return
false;}function
trigger($C){if($C=="")return
array("Statement"=>"BEGIN\n\t;\nEND");$w='(?:[^`"\s]+|`[^`]*`|"[^"]*")+';$xi=trigger_options();preg_match("~^CREATE\\s+TRIGGER\\s*$w\\s*(".implode("|",$xi["Timing"]).")\\s+([a-z]+)(?:\\s+OF\\s+($w))?\\s+ON\\s*$w\\s*(?:FOR\\s+EACH\\s+ROW\\s)?(.*)~is",get_val("SELECT sql FROM sqlite_master WHERE type = 'trigger' AND name = ".q($C)),$B);$if=$B[3];return
array("Timing"=>strtoupper($B[1]),"Event"=>strtoupper($B[2]).($if?" OF":""),"Of"=>idf_unescape($if),"Trigger"=>$C,"Statement"=>$B[4],);}function
triggers($R){$J=array();$xi=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("|",$xi["Timing"]).')\s*(.*?)\s+ON\b~i',$K["sql"],$B);$J[$K["name"]]=array($B[1],$B[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(){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,$Gh){$J=get_val("SELECT sql FROM sqlite_master WHERE type IN ('table', 'view') AND name = ".q($R));foreach(indexes($R)as$C=>$x){if($C=='')continue;$J.=";\n\n".index_sql($R,$x['type'],$C,"(".implode(", ",array_map('Adminer\idf_escape',$x['columns'])).")");}return$J;}function
truncate_sql($R){return"DELETE FROM ".table($R);}function
use_sql($Kb){}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){$C=$K["name"];if($C!="pragma_list"&&$C!="compile_options"){foreach(get_rows("PRAGMA $C")as$K)$J[$C].=implode(", ",$K)."\n";}}return$J;}function
show_status(){$J=array();foreach(get_vals("PRAGMA compile_options")as$xf){list($z,$X)=explode("=",$xf,2);$J[$z]=$X;}return$J;}function
convert_field($o){}function
unconvert_field($o,$J){return$J;}function
support($Pc){return
preg_match('~^(check|columns|database|drop_col|dump|indexes|descidx|move_col|sql|status|table|trigger|variables|view|view_trigger)$~',$Pc);}}$bc["pgsql"]="PostgreSQL";if(isset($_GET["pgsql"])){define('Adminer\DRIVER',"pgsql");if(extension_loaded("pgsql")){class
Db{var$extension="PgSQL",$server_info,$affected_rows,$error,$timeout;private$link,$result,$string,$database=true;function
_error($yc,$n){if(ini_bool("html_errors"))$n=html_entity_decode(strip_tags($n));$n=preg_replace('~^[^:]*: ~','',$n);$this->error=$n;}function
connect($N,$V,$F){global$b;$k=$b->database();set_error_handler(array($this,'_error'));$this->string="host='".str_replace(":","' port='",addcslashes($N,"'\\"))."' user='".addcslashes($V,"'\\")."' password='".addcslashes($F,"'\\")."'";$Bh=$b->connectSsl();if(isset($Bh["mode"]))$this->string.=" sslmode='".$Bh["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){$Xi=pg_version($this->link);$this->server_info=$Xi["server"];pg_set_client_encoding($this->link,"UTF8");}return(bool)$this->link;}function
quote($Q){return(function_exists('pg_escape_literal')?pg_escape_literal($this->link,$Q):"'".pg_escape_string($this->link,$Q)."'");}function
value($X,$o){return($o["type"]=="bytea"&&$X!==null?pg_unescape_bytea($X):$X);}function
select_db($Kb){global$b;if($Kb==$b->database())return$this->database;$J=@pg_connect("$this->string dbname='".addcslashes($Kb,"'\\")."'",PGSQL_CONNECT_FORCE_NEW);if($J)$this->link=$J;return$J;}function
close(){$this->link=@pg_connect("$this->string dbname='postgres'");}function
query($H,$Bi=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
multi_query($H){return$this->result=$this->query($H);}function
store_result(){return$this->result;}function
next_result(){return
false;}function
result($H,$o=0){$I=$this->query($H);return($I?$I->fetch_column($o):false);}function
warnings(){return
h(pg_last_notice($this->link));}}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_column($o){return($this->num_rows?pg_fetch_result($this->result,0,$o):false);}function
fetch_field(){$d=$this->offset++;$J=new
\stdClass;if(function_exists('pg_field_table'))$J->orgtable=pg_field_table($this->result,$d);$J->name=pg_field_name($this->result,$d);$J->orgname=$J->name;$J->type=pg_field_type($this->result,$d);$J->charsetnr=($J->type=="bytea"?63:0);return$J;}function
__destruct(){pg_free_result($this->result);}}}elseif(extension_loaded("pdo_pgsql")){class
Db
extends
PdoDb{var$extension="PDO_PgSQL",$timeout;function
connect($N,$V,$F){global$b;$k=$b->database();$hc="pgsql:host='".str_replace(":","' port='",addcslashes($N,"'\\"))."' client_encoding=utf8 dbname='".($k!=""?addcslashes($k,"'\\"):"postgres")."'";$Bh=$b->connectSsl();if(isset($Bh["mode"]))$hc.=" sslmode='".$Bh["mode"]."'";$this->dsn($hc,$V,$F);return
true;}function
select_db($Kb){global$b;return($b->database()==$Kb);}function
query($H,$Bi=false){$J=parent::query($H,$Bi);if($this->timeout){$this->timeout=0;parent::query("RESET statement_timeout");}return$J;}function
warnings(){return'';}function
close(){}}}class
Driver
extends
SqlDriver{static$ig=array("PgSQL","PDO_PgSQL");static$de="pgsql";var$operators=array("=","<",">","<=",">=","!=","~","!~","LIKE","LIKE %%","ILIKE","ILIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL");var$functions=array("char_length","lower","round","to_hex","to_timestamp","upper");var$grouping=array("avg","count","count distinct","max","min","sum");function
__construct($g){parent::__construct($g);$this->types=array(lang(25)=>array("smallint"=>5,"integer"=>10,"bigint"=>19,"boolean"=>1,"numeric"=>0,"real"=>7,"double precision"=>16,"money"=>20),lang(26)=>array("date"=>13,"time"=>17,"timestamp"=>20,"timestamptz"=>21,"interval"=>0),lang(27)=>array("character"=>0,"character varying"=>0,"text"=>0,"tsquery"=>0,"tsvector"=>0,"uuid"=>0,"xml"=>0),lang(28)=>array("bit"=>0,"bit varying"=>0,"bytea"=>0),lang(29)=>array("cidr"=>43,"inet"=>43,"macaddr"=>17,"macaddr8"=>23,"txid_snapshot"=>0),lang(30)=>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(27)]["json"]=4294967295;if(min_version(9.4,0,$g))$this->types[lang(27)]["jsonb"]=4294967295;}$this->editFunctions=array(array("char"=>"md5","date|time"=>"now",),array(number_type()=>"+/-","date|time"=>"+ interval/- interval","char|text"=>"||",));if(min_version(12,0,$g))$this->generated=array("STORED");}function
enumLength($o){$uc=$this->types[lang(31)][$o["type"]];return($uc?type_values($uc):"");}function
setUserTypes($Ai){$this->types[lang(31)]=array_flip($Ai);}function
insertUpdate($R,$L,$G){global$g;foreach($L
as$O){$Ji=array();$Z=array();foreach($O
as$z=>$X){$Ji[]="$z = $X";if(isset($G[idf_unescape($z)]))$Z[]="$z = $X";}if(!(($Z&&queries("UPDATE ".table($R)." SET ".implode(", ",$Ji)." WHERE ".implode(" AND ",$Z))&&$g->affected_rows)||queries("INSERT INTO ".table($R)." (".implode(", ",array_keys($O)).") VALUES (".implode(", ",$O).")")))return
false;}return
true;}function
slowQuery($H,$ei){$this->conn->query("SET statement_timeout = ".(1000*$ei));$this->conn->timeout=1000*$ei;return$H;}function
convertSearch($w,$X,$o){$bi="char|text";if(strpos($X["op"],"LIKE")===false)$bi.="|date|time(stamp)?|boolean|uuid|inet|cidr|macaddr|".number_type();return(preg_match("~$bi~",$o["type"])?$w:"CAST($w AS text)");}function
quoteBinary($Tg){return"'\\x".bin2hex($Tg)."'";}function
warnings(){return$this->conn->warnings();}function
tableHelp($C,$be=false){$we=array("information_schema"=>"infoschema","pg_catalog"=>($be?"view":"catalog"),);$A=$we[$_GET["ns"]];if($A)return"$A-".str_replace("_","-",$C).".html";}function
supportsIndex($S){return$S["Engine"]!="view";}function
hasCStyleEscapes(){static$Qa;if($Qa===null)$Qa=($this->conn->result("SHOW standard_conforming_strings")=="off");return$Qa;}}function
idf_escape($w){return'"'.str_replace('"','""',$w).'"';}function
table($w){return
idf_escape($w);}function
connect($Cb){global$bc;$g=new
Db;if($g->connect($Cb[0],$Cb[1],$Cb[2])){if(min_version(9,0,$g))$g->query("SET application_name = 'Adminer'");$_b=$g->result("SHOW crdb_version");$g->server_info.=($_b?"-".preg_replace('~ \(.*~','',$_b):"");$g->cockroach=preg_match('~CockroachDB~',$g->server_info);if($g->cockroach)$bc[DRIVER]="CockroachDB";return$g;}return$g->error;}function
get_databases(){return
get_vals("SELECT datname FROM pg_database
WHERE datallowconn = TRUE AND has_database_privilege(datname, 'CONNECT')
ORDER BY datname");}function
limit($H,$Z,$_,$D=0,$fh=" "){return" $H$Z".($_!==null?$fh."LIMIT $_".($D?" OFFSET $D":""):"");}function
limit1($R,$H,$Z,$fh="\n"){return(preg_match('~^INTO~',$H)?limit($H,$Z,1,0,$fh):" $H".(is_view(table_status1($R))?$Z:$fh."WHERE ctid = (SELECT ctid FROM ".table($R).$Z.$fh."LIMIT 1)"));}function
db_collation($k,$ib){return
get_val("SELECT datcollate FROM pg_database WHERE datname = ".q($k));}function
engines(){return
array();}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){global$g;$J=array();foreach($j
as$k){if($g->select_db($k))$J[$k]=count(tables_list());}return$J;}function
table_status($C=""){static$xd;if($xd===null)$xd=get_val("SELECT 'pg_table_size'::regproc");$J=array();foreach(get_rows("SELECT
	c.relname AS \"Name\",
	CASE c.relkind WHEN 'r' THEN 'table' WHEN 'm' THEN 'materialized view' ELSE 'view' END AS \"Engine\"".($xd?",
	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 c.relhasoids THEN 'oid' ELSE '' END")." AS \"Oid\",
	c.reltuples as \"Rows\",
	n.nspname
FROM pg_class c
JOIN pg_namespace n ON(n.nspname = current_schema() AND n.oid = c.relnamespace)
WHERE relkind IN ('r', 'm', 'v', 'f', 'p')
".($C!=""?"AND relname = ".q($C):"ORDER BY relname"))as$K)$J[$K["Name"]]=$K;return($C!=""?$J[$C]:$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();$ua=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,
	col_description(c.oid, a.attnum) AS comment".(min_version(10)?",
	a.attidentity".(min_version(12)?",
	a.attgenerated":""):"")."
FROM pg_class c
JOIN pg_namespace n ON c.relnamespace = n.oid
JOIN pg_attribute a ON c.oid = a.attrelid
LEFT JOIN pg_attrdef d ON c.oid = d.adrelid AND a.attnum = d.adnum
WHERE c.relname = ".q($R)."
AND n.nspname = current_schema()
AND NOT a.attisdropped
AND a.attnum > 0
ORDER BY a.attnum")as$K){preg_match('~([^([]+)(\((.*)\))?([a-z ]+)?((\[[0-9]*])*)$~',$K["full_type"],$B);list(,$U,$te,$K["length"],$oa,$xa)=$B;$K["length"].=$xa;$Xa=$U.$oa;if(isset($ua[$Xa])){$K["type"]=$ua[$Xa];$K["full_type"]=$K["type"].$te.$xa;}else{$K["type"]=$U;$K["full_type"]=$K["type"].$te.$oa.$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(preg_match('~(.+)::[^,)]+(.*)~',$K["default"],$B))$K["default"]=($B[1]=="NULL"?null:idf_unescape($B[1]).$B[2]);$J[$K["field"]]=$K;}return$J;}function
indexes($R,$h=null){global$g;if(!is_object($h))$h=$g;$J=array();$Ph=$h->result("SELECT oid FROM pg_class WHERE relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = current_schema()) AND relname = ".q($R));$e=get_key_vals("SELECT attnum, attname FROM pg_attribute WHERE attrelid = $Ph AND attnum > 0",$h);foreach(get_rows("SELECT relname, indisunique::int, indisprimary::int, indkey, indoption, (indpred IS NOT NULL)::int as indispartial
FROM pg_index i, pg_class ci
WHERE i.indrelid = $Ph AND ci.oid = i.indexrelid
ORDER BY indisprimary DESC, indisunique DESC",$h)as$K){$Gg=$K["relname"];$J[$Gg]["type"]=($K["indispartial"]?"INDEX":($K["indisprimary"]?"PRIMARY":($K["indisunique"]?"UNIQUE":"INDEX")));$J[$Gg]["columns"]=array();$J[$Gg]["descs"]=array();if($K["indkey"]){foreach(explode(" ",$K["indkey"])as$Nd)$J[$Gg]["columns"][]=$e[$Nd];foreach(explode(" ",$K["indoption"])as$Od)$J[$Gg]["descs"][]=($Od&1?'1':null);}$J[$Gg]["lengths"]=array();}return$J;}function
foreign_keys($R){global$m;$J=array();foreach(get_rows("SELECT conname, condeferrable::int AS deferrable, pg_get_constraintdef(oid) AS definition
FROM pg_constraint
WHERE conrelid = (SELECT pc.oid FROM pg_class AS pc INNER JOIN pg_namespace AS pn ON (pn.oid = pc.relnamespace) WHERE pc.relname = ".q($R)." AND pn.nspname = current_schema())
AND contype = 'f'::char
ORDER BY conkey, conname")as$K){if(preg_match('~FOREIGN KEY\s*\((.+)\)\s*REFERENCES (.+)\((.+)\)(.*)$~iA',$K['definition'],$B)){$K['source']=array_map('Adminer\idf_unescape',array_map('trim',explode(',',$B[1])));if(preg_match('~^(("([^"]|"")+"|[^"]+)\.)?"?("([^"]|"")+"|[^"]+)$~',$B[2],$Be)){$K['ns']=idf_unescape($Be[2]);$K['table']=idf_unescape($Be[4]);}$K['target']=array_map('Adminer\idf_unescape',array_map('trim',explode(',',$B[3])));$K['on_delete']=(preg_match("~ON DELETE ($m->onActions)~",$B[4],$Be)?$Be[1]:'NO ACTION');$K['on_update']=(preg_match("~ON UPDATE ($m->onActions)~",$B[4],$Be)?$Be[1]:'NO ACTION');$J[$K['conname']]=$K;}}return$J;}function
view($C){return
array("select"=>trim(get_val("SELECT pg_get_viewdef(".get_val("SELECT oid FROM pg_class WHERE relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = current_schema()) AND relname = ".q($C)).")")));}function
collations(){return
array();}function
information_schema($k){return
get_schema()=="information_schema";}function
error(){global$g;$J=h($g->error);if(preg_match('~^(.*\n)?([^\n]*)\n( *)\^(\n.*)?$~s',$J,$B))$J=$B[1].preg_replace('~((?:[^&]|&[^;]*;){'.strlen($B[3]).'})(.*)~','\1<b>\2</b>',$B[2]).$B[4];return
nl_br($J);}function
create_database($k,$hb){return
queries("CREATE DATABASE ".idf_escape($k).($hb?" ENCODING ".idf_escape($hb):""));}function
drop_databases($j){global$g;$g->close();return
apply_queries("DROP DATABASE",$j,'Adminer\idf_escape');}function
rename_database($C,$hb){global$g;$g->close();return
queries("ALTER DATABASE ".idf_escape(DB)." RENAME TO ".idf_escape($C));}function
auto_increment(){return"";}function
alter_table($R,$C,$p,$cd,$nb,$sc,$hb,$Ba,$Wf){$c=array();$vg=array();if($R!=""&&$R!=$C)$vg[]="ALTER TABLE ".table($R)." RENAME TO ".table($C);$gh="";foreach($p
as$o){$d=idf_escape($o[0]);$X=$o[1];if(!$X)$c[]="DROP $d";else{$Ti=$X[5];unset($X[5]);if($o[0]==""){if(isset($X[6]))$X[1]=($X[1]==" bigint"?" big":($X[1]==" smallint"?" small":" "))."serial";$c[]=($R!=""?"ADD ":"  ").implode($X);if(isset($X[6]))$c[]=($R!=""?"ADD":" ")." PRIMARY KEY ($X[0])";}else{if($d!=$X[0])$vg[]="ALTER TABLE ".table($C)." RENAME $d TO $X[0]";$c[]="ALTER $d TYPE$X[1]";$hh=$R."_".idf_unescape($X[0])."_seq";$c[]="ALTER $d ".($X[3]?"SET".preg_replace('~GENERATED ALWAYS(.*) STORED~','EXPRESSION\1',$X[3]):(isset($X[6])?"SET DEFAULT nextval(".q($hh).")":"DROP DEFAULT"));if(isset($X[6]))$gh="CREATE SEQUENCE IF NOT EXISTS ".idf_escape($hh)." OWNED BY ".idf_escape($R).".$X[0]";$c[]="ALTER $d ".($X[2]==" NULL"?"DROP NOT":"SET").$X[2];}if($o[0]!=""||$Ti!="")$vg[]="COMMENT ON COLUMN ".table($C).".$X[0] IS ".($Ti!=""?substr($Ti,9):"''");}}$c=array_merge($c,$cd);if($R=="")array_unshift($vg,"CREATE TABLE ".table($C)." (\n".implode(",\n",$c)."\n)");elseif($c)array_unshift($vg,"ALTER TABLE ".table($R)."\n".implode(",\n",$c));if($gh)array_unshift($vg,$gh);if($nb!==null)$vg[]="COMMENT ON TABLE ".table($C)." IS ".q($nb);foreach($vg
as$H){if(!queries($H))return
false;}return
true;}function
alter_indexes($R,$c){$i=array();$cc=array();$vg=array();foreach($c
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")$cc[]=idf_escape($X[1]);else$vg[]="CREATE INDEX ".idf_escape($X[1]!=""?$X[1]:uniqid($R."_"))." ON ".table($R)." (".implode(", ",$X[2]).")";}if($i)array_unshift($vg,"ALTER TABLE ".table($R).implode(",",$i));if($cc)array_unshift($vg,"DROP INDEX ".implode(", ",$cc));foreach($vg
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($Zi){return
drop_tables($Zi);}function
drop_tables($T){foreach($T
as$R){$P=table_status($R);if(!queries("DROP ".strtoupper($P["Engine"])." ".table($R)))return
false;}return
true;}function
move_tables($T,$Zi,$Wh){foreach(array_merge($T,$Zi)as$R){$P=table_status($R);if(!queries("ALTER ".strtoupper($P["Engine"])." ".table($R)." SET SCHEMA ".idf_escape($Wh)))return
false;}return
true;}function
trigger($C,$R){if($C=="")return
array("Statement"=>"EXECUTE PROCEDURE ()");$e=array();$Z="WHERE trigger_schema = current_schema() AND event_object_table = ".q($R)." AND trigger_name = ".q($C);foreach(get_rows("SELECT * FROM information_schema.triggered_update_columns $Z")as$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){$vi=trigger($K["trigger_name"],$R);$J[$vi["Trigger"]]=array($vi["Timing"],$vi["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($C,$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($C));$J=$L[0];$J["returns"]=array("type"=>$J["type_udt_name"]);$J["fields"]=get_rows('SELECT parameter_name 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($C).'
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($C,$K){$J=array();foreach($K["fields"]as$o)$J[]=$o["type"];return
idf_escape($C)."(".implode(", ",$J).")";}function
last_id(){return
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):"")),$Fg))return$Fg[1];return
false;}function
types(){return
get_key_vals("SELECT oid, typname
FROM pg_type
WHERE typnamespace = (SELECT oid FROM pg_namespace WHERE nspname = current_schema())
AND typtype IN ('b','d','e')
AND typelem = 0");}function
type_values($v){$xc=get_vals("SELECT enumlabel FROM pg_enum WHERE enumtypid = $v ORDER BY enumsortorder");return($xc?"'".implode("', '",array_map('addslashes',$xc))."'":"");}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($Vg,$h=null){global$g,$m;if(!$h)$h=$g;$J=$h->query("SET search_path TO ".idf_escape($Vg));$m->setUserTypes(types());return$J;}function
foreign_keys_sql($R){$J="";$P=table_status($R);$Zc=foreign_keys($R);ksort($Zc);foreach($Zc
as$Yc=>$Xc)$J.="ALTER TABLE ONLY ".idf_escape($P['nspname']).".".idf_escape($P['Name'])." ADD CONSTRAINT ".idf_escape($Yc)." $Xc[definition] ".($Xc['deferrable']?'DEFERRABLE':'NOT DEFERRABLE').";\n";return($J?"$J\n":$J);}function
create_sql($R,$Ba,$Gh){global$m;$Lg=array();$ih=array();$P=table_status($R);if(is_view($P)){$Yi=view($R);return
rtrim("CREATE VIEW ".idf_escape($R)." AS $Yi[select]",";");}$p=fields($R);if(!$P||empty($p))return
false;$J="CREATE TABLE ".idf_escape($P['nspname']).".".idf_escape($P['Name'])." (\n    ";foreach($p
as$o){$Tf=idf_escape($o['field']).' '.$o['full_type'].default_value($o).($o['attnotnull']?" NOT NULL":"");$Lg[]=$Tf;if(preg_match('~nextval\(\'([^\']+)\'\)~',$o['default'],$De)){$hh=$De[1];$wh=reset(get_rows((min_version(10)?"SELECT *, cache_size AS cache_value FROM pg_sequences WHERE schemaname = current_schema() AND sequencename = ".q(idf_unescape($hh)):"SELECT * FROM $hh"),null,"-- "));$ih[]=($Gh=="DROP+CREATE"?"DROP SEQUENCE IF EXISTS $hh;\n":"")."CREATE SEQUENCE $hh INCREMENT $wh[increment_by] MINVALUE $wh[min_value] MAXVALUE $wh[max_value]".($Ba&&$wh['last_value']?" START ".($wh["last_value"]+1):"")." CACHE $wh[cache_value];";}}if(!empty($ih))$J=implode("\n\n",$ih)."\n\n$J";$G="";foreach(indexes($R)as$Ld=>$x){if($x['type']=='PRIMARY'){$G=$Ld;$Lg[]="CONSTRAINT ".idf_escape($Ld)." PRIMARY KEY (".implode(', ',array_map('Adminer\idf_escape',$x['columns'])).")";}}foreach($m->checkConstraints($R)as$sb=>$ub)$Lg[]="CONSTRAINT ".idf_escape($sb)." CHECK $ub";$J.=implode(",\n    ",$Lg)."\n) WITH (oids = ".($P['Oid']?'true':'false').");";if($P['Comment'])$J.="\n\nCOMMENT ON TABLE ".idf_escape($P['nspname']).".".idf_escape($P['Name'])." IS ".q($P['Comment']).";";foreach($p
as$Rc=>$o){if($o['comment'])$J.="\n\nCOMMENT ON COLUMN ".idf_escape($P['nspname']).".".idf_escape($P['Name']).".".idf_escape($Rc)." IS ".q($o['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_status($R);$J="";foreach(triggers($R)as$ui=>$ti){$vi=trigger($ui,$P['Name']);$J.="\nCREATE TRIGGER ".idf_escape($vi['Trigger'])." $vi[Timing] $vi[Event] ON ".idf_escape($P["nspname"]).".".idf_escape($P['Name'])." $vi[Type] $vi[Statement];;\n";}return$J;}function
use_sql($Kb){return"\connect ".idf_escape($Kb);}function
show_variables(){return
get_key_vals("SHOW ALL");}function
process_list(){return
get_rows("SELECT * FROM pg_stat_activity ORDER BY ".(min_version(9.2)?"pid":"procpid"));}function
convert_field($o){}function
unconvert_field($o,$J){return$J;}function
support($Pc){global$g;return
preg_match('~^(check|database|table|columns|sql|indexes|descidx|comment|view|'.(min_version(9.3)?'materializedview|':'').'scheme|routine|sequence|trigger|type|variables|drop_col'.($g->cockroach?'':'|processlist').'|kill|dump)$~',$Pc);}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");}}$bc["oracle"]="Oracle (beta)";if(isset($_GET["oracle"])){define('Adminer\DRIVER',"oracle");if(extension_loaded("oci8")){class
Db{var$extension="oci8",$server_info,$affected_rows,$errno,$error;var$_current_db;private$link,$result;function
_error($yc,$n){if(ini_bool("html_errors"))$n=html_entity_decode(strip_tags($n));$n=preg_replace('~^[^:]*: ~','',$n);$this->error=$n;}function
connect($N,$V,$F){$this->link=@oci_new_connect($V,$F,$N,"AL32UTF8");if($this->link){$this->server_info=oci_server_version($this->link);return
true;}$n=oci_error();$this->error=$n["message"];return
false;}function
quote($Q){return"'".str_replace("'","''",$Q)."'";}function
select_db($Kb){$this->_current_db=$Kb;return
true;}function
query($H,$Bi=false){$I=oci_parse($this->link,$H);$this->error="";if(!$I){$n=oci_error($this->link);$this->errno=$n["code"];$this->error=$n["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
multi_query($H){return$this->result=$this->query($H);}function
store_result(){return$this->result;}function
next_result(){return
false;}function
result($H,$o=0){$I=$this->query($H);return(is_object($I)?$I->fetch_column($o):false);}}class
Result{var$num_rows;private$result,$offset=1;function
__construct($I){$this->result=$I;}private
function
convert($K){foreach((array)$K
as$z=>$X){if(is_a($X,'OCI-Lob'))$K[$z]=$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_column($o){return(oci_fetch($this->result)?oci_result($this->result,$o+1):false);}function
fetch_field(){$d=$this->offset++;$J=new
\stdClass;$J->name=oci_field_name($this->result,$d);$J->orgname=$J->name;$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
connect($N,$V,$F){$this->dsn("oci:dbname=//$N;charset=AL32UTF8",$V,$F);return
true;}function
select_db($Kb){$this->_current_db=$Kb;return
true;}}}class
Driver
extends
SqlDriver{static$ig=array("OCI8","PDO_OCI");static$de="oracle";var$editFunctions=array(array("date"=>"current_date","timestamp"=>"current_timestamp",),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($g){parent::__construct($g);$this->types=array(lang(25)=>array("number"=>38,"binary_float"=>12,"binary_double"=>21),lang(26)=>array("date"=>10,"timestamp"=>29,"interval year"=>12,"interval day"=>28),lang(27)=>array("char"=>2000,"varchar2"=>4000,"nchar"=>2000,"nvarchar2"=>4000,"clob"=>4294967295,"nclob"=>4294967295),lang(28)=>array("raw"=>2000,"long raw"=>2147483648,"blob"=>4294967295,"bfile"=>4294967296),);}function
begin(){return
true;}function
insertUpdate($R,$L,$G){global$g;foreach($L
as$O){$Ji=array();$Z=array();foreach($O
as$z=>$X){$Ji[]="$z = $X";if(isset($G[idf_unescape($z)]))$Z[]="$z = $X";}if(!(($Z&&queries("UPDATE ".table($R)." SET ".implode(", ",$Ji)." WHERE ".implode(" AND ",$Z))&&$g->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($w){return'"'.str_replace('"','""',$w).'"';}function
table($w){return
idf_escape($w);}function
connect($Cb){$g=new
Db;if($g->connect($Cb[0],$Cb[1],$Cb[2]))return$g;return$g->error;}function
get_databases(){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,$_,$D=0,$fh=" "){return($D?" * FROM (SELECT t.*, rownum AS rnum FROM (SELECT $H$Z) t WHERE rownum <= ".($_+$D).") WHERE rnum > $D":($_!==null?" * FROM (SELECT $H$Z) WHERE rownum <= ".($_+$D):" $H$Z"));}function
limit1($R,$H,$Z,$fh="\n"){return" $H$Z";}function
db_collation($k,$ib){return
get_val("SELECT value FROM nls_database_parameters WHERE parameter = 'NLS_CHARACTERSET'");}function
engines(){return
array();}function
logged_user(){return
get_val("SELECT USER FROM DUAL");}function
get_current_db(){global$g;$k=$g->_current_db?:DB;unset($g->_current_db);return$k;}function
where_owner($kg,$Nf="owner"){if(!$_GET["ns"])return'';return"$kg$Nf = sys_context('USERENV', 'CURRENT_SCHEMA')";}function
views_table($e){$Nf=where_owner('');return"(SELECT $e FROM all_views WHERE ".($Nf?:"rownum < 0").")";}function
tables_list(){$Yi=views_table("view_name");$Nf=where_owner(" AND ");return
get_key_vals("SELECT table_name, 'table' FROM all_tables WHERE tablespace_name = ".q(DB)."$Nf
UNION SELECT view_name, 'view' FROM $Yi
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($C=""){$J=array();$Yg=q($C);$k=get_current_db();$Yi=views_table("view_name");$Nf=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).$Nf.($C!=""?" AND table_name = $Yg":"")."
UNION SELECT view_name, 'view', 0, 0 FROM $Yi".($C!=""?" WHERE view_name = $Yg":"")."
ORDER BY 1")as$K){if($C!="")return$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();$Nf=where_owner(" AND ");foreach(get_rows("SELECT * FROM all_tab_columns WHERE table_name = ".q($R)."$Nf ORDER BY column_id")as$K){$U=$K["DATA_TYPE"];$te="$K[DATA_PRECISION],$K[DATA_SCALE]";if($te==",")$te=$K["CHAR_COL_DECL_LENGTH"];$J[$K["COLUMN_NAME"]]=array("field"=>$K["COLUMN_NAME"],"full_type"=>$U.($te?"($te)":""),"type"=>strtolower($U),"length"=>$te,"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();$Nf=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)."$Nf
ORDER BY ac.constraint_type, aic.column_position",$h)as$K){$Ld=$K["INDEX_NAME"];$kb=$K["DATA_DEFAULT"];$kb=($kb?trim($kb,'"'):$K["COLUMN_NAME"]);$J[$Ld]["type"]=($K["CONSTRAINT_TYPE"]=="P"?"PRIMARY":($K["CONSTRAINT_TYPE"]=="U"?"UNIQUE":"INDEX"));$J[$Ld]["columns"][]=$kb;$J[$Ld]["lengths"][]=($K["CHAR_LENGTH"]&&$K["CHAR_LENGTH"]!=$K["COLUMN_LENGTH"]?$K["CHAR_LENGTH"]:null);$J[$Ld]["descs"][]=($K["DESCEND"]&&$K["DESCEND"]=="DESC"?'1':null);}return$J;}function
view($C){$Yi=views_table("view_name, text");$L=get_rows('SELECT text "select" FROM '.$Yi.' WHERE view_name = '.q($C));return
reset($L);}function
collations(){return
array();}function
information_schema($k){return
get_schema()=="INFORMATION_SCHEMA";}function
error(){global$g;return
h($g->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,$C,$p,$cd,$nb,$sc,$hb,$Ba,$Wf){$c=$cc=array();$Gf=($R?fields($R):array());foreach($p
as$o){$X=$o[1];if($X&&$o[0]!=""&&idf_escape($o[0])!=$X[0])queries("ALTER TABLE ".table($R)." RENAME COLUMN ".idf_escape($o[0])." TO $X[0]");$Ff=$Gf[$o[0]];if($X&&$Ff){$kf=process_field($Ff,$Ff);if($X[2]==$kf[2])$X[2]="";}if($X)$c[]=($R!=""?($o[0]!=""?"MODIFY (":"ADD ("):"  ").implode($X).($R!=""?")":"");else$cc[]=idf_escape($o[0]);}if($R=="")return
queries("CREATE TABLE ".table($C)." (\n".implode(",\n",$c)."\n)");return(!$c||queries("ALTER TABLE ".table($R)."\n".implode("\n",$c)))&&(!$cc||queries("ALTER TABLE ".table($R)." DROP (".implode(", ",$cc).")"))&&($R==$C||queries("ALTER TABLE ".table($R)." RENAME TO ".table($C)));}function
alter_indexes($R,$c){$cc=array();$vg=array();foreach($c
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($vg,"ALTER TABLE ".table($R).$i);}elseif($X[2]=="DROP")$cc[]=idf_escape($X[1]);else$vg[]="CREATE INDEX ".idf_escape($X[1]!=""?$X[1]:uniqid($R."_"))." ON ".table($R)." (".implode(", ",$X[2]).")";}if($cc)array_unshift($vg,"DROP INDEX ".implode(", ",$cc));foreach($vg
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($Zi){return
apply_queries("DROP VIEW",$Zi);}function
drop_tables($T){return
apply_queries("DROP TABLE",$T);}function
last_id(){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($Xg,$h=null){global$g;if(!$h)$h=$g;return$h->query("ALTER SESSION SET CURRENT_SCHEMA = ".idf_escape($Xg));}function
show_variables(){return
get_key_vals('SELECT name, display_value FROM v$parameter');}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
show_status(){$L=get_rows('SELECT * FROM v$instance');return
reset($L);}function
convert_field($o){}function
unconvert_field($o,$J){return$J;}function
support($Pc){return
preg_match('~^(columns|database|drop_col|indexes|descidx|processlist|scheme|sql|status|table|variables|view)$~',$Pc);}}$bc["mssql"]="MS SQL";if(isset($_GET["mssql"])){define('Adminer\DRIVER',"mssql");if(extension_loaded("sqlsrv")){class
Db{var$extension="sqlsrv",$server_info,$affected_rows,$errno,$error;private$link,$result;private
function
get_error(){$this->error="";foreach(sqlsrv_errors()as$n){$this->errno=$n["code"];$this->error.="$n[message]\n";}$this->error=rtrim($this->error);}function
connect($N,$V,$F){global$b;$tb=array("UID"=>$V,"PWD"=>$F,"CharacterSet"=>"UTF-8");$Bh=$b->connectSsl();if(isset($Bh["Encrypt"]))$tb["Encrypt"]=$Bh["Encrypt"];if(isset($Bh["TrustServerCertificate"]))$tb["TrustServerCertificate"]=$Bh["TrustServerCertificate"];$k=$b->database();if($k!="")$tb["Database"]=$k;$this->link=@sqlsrv_connect(preg_replace('~:~',',',$N),$tb);if($this->link){$Pd=sqlsrv_server_info($this->link);$this->server_info=$Pd['SQLServerVersion'];}else$this->get_error();return(bool)$this->link;}function
quote($Q){$Ci=strlen($Q)!=strlen(utf8_decode($Q));return($Ci?"N":"")."'".str_replace("'","''",$Q)."'";}function
select_db($Kb){return$this->query(use_sql($Kb));}function
query($H,$Bi=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):null;}function
result($H,$o=0){$I=$this->query($H);if(!is_object($I))return
false;$K=$I->fetch_row();return$K[$o];}}class
Result{var$num_rows;private$result,$offset=0,$fields;function
__construct($I){$this->result=$I;}private
function
convert($K){foreach((array)$K
as$z=>$X){if(is_a($X,'DateTime'))$K[$z]=$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);$o=$this->fields[$this->offset++];$J=new
\stdClass;$J->name=$o["Name"];$J->orgname=$o["Name"];$J->type=($o["Type"]==1?254:0);return$J;}function
seek($D){for($u=0;$u<$D;$u++)sqlsrv_fetch($this->result);}function
__destruct(){sqlsrv_free_stmt($this->result);}}}elseif(extension_loaded("pdo_sqlsrv")){class
Db
extends
PdoDb{var$extension="PDO_SQLSRV";function
connect($N,$V,$F){$this->dsn("sqlsrv:Server=".str_replace(":",",",$N),$V,$F);return
true;}function
select_db($Kb){return$this->query(use_sql($Kb));}}}elseif(extension_loaded("pdo_dblib")){class
Db
extends
PdoDb{var$extension="PDO_DBLIB";function
connect($N,$V,$F){$this->dsn("dblib:charset=utf8;host=".str_replace(":",";unix_socket=",preg_replace('~:(\d)~',';port=\1',$N)),$V,$F);return
true;}function
select_db($Kb){return$this->query(use_sql($Kb));}}}class
Driver
extends
SqlDriver{static$ig=array("SQLSRV","PDO_SQLSRV","PDO_DBLIB");static$de="mssql";var$editFunctions=array(array("date|time"=>"getdate",),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$onActions="NO ACTION|CASCADE|SET NULL|SET DEFAULT";var$generated=array("PERSISTED","VIRTUAL");function
__construct($g){parent::__construct($g);$this->types=array(lang(25)=>array("tinyint"=>3,"smallint"=>5,"int"=>10,"bigint"=>20,"bit"=>1,"decimal"=>0,"real"=>12,"float"=>53,"smallmoney"=>10,"money"=>20),lang(26)=>array("date"=>10,"smalldatetime"=>19,"datetime"=>19,"datetime2"=>19,"time"=>8,"datetimeoffset"=>10),lang(27)=>array("char"=>8000,"varchar"=>8000,"text"=>2147483647,"nchar"=>4000,"nvarchar"=>4000,"ntext"=>1073741823),lang(28)=>array("binary"=>8000,"varbinary"=>8000,"image"=>2147483647),);}function
insertUpdate($R,$L,$G){$p=fields($R);$Ji=array();$Z=array();$O=reset($L);$e="c".implode(", c",range(1,count($O)));$Pa=0;$Td=array();foreach($O
as$z=>$X){$Pa++;$C=idf_unescape($z);if(!$p[$C]["auto_increment"])$Td[$z]="c$Pa";if(isset($G[$C]))$Z[]="$z = c$Pa";else$Ji[]="$z = c$Pa";}$Ui=array();foreach($L
as$O)$Ui[]="(".implode(", ",$O).")";if($Z){$Fd=queries("SET IDENTITY_INSERT ".table($R)." ON");$J=queries("MERGE ".table($R)." USING (VALUES\n\t".implode(",\n\t",$Ui)."\n) AS source ($e) ON ".implode(" AND ",$Z).($Ji?"\nWHEN MATCHED THEN UPDATE SET ".implode(", ",$Ji):"")."\nWHEN NOT MATCHED THEN INSERT (".implode(", ",array_keys($Fd?$O:$Td)).") VALUES (".($Fd?$e:implode(", ",$Td)).");");if($Fd)queries("SET IDENTITY_INSERT ".table($R)." OFF");}else$J=queries("INSERT INTO ".table($R)." (".implode(", ",array_keys($O)).") VALUES\n".implode(",\n",$Ui));return$J;}function
begin(){return
queries("BEGIN TRANSACTION");}function
tableHelp($C,$be=false){$we=array("sys"=>"catalog-views/sys-","INFORMATION_SCHEMA"=>"information-schema-views/",);$A=$we[get_schema()];if($A)return"relational-databases/system-$A".preg_replace('~_~','-',strtolower($C))."-transact-sql";}}function
idf_escape($w){return"[".str_replace("]","]]",$w)."]";}function
table($w){return($_GET["ns"]!=""?idf_escape($_GET["ns"]).".":"").idf_escape($w);}function
connect($Cb){$g=new
Db;if($Cb[0]=="")$Cb[0]="localhost:1433";if($g->connect($Cb[0],$Cb[1],$Cb[2]))return$g;return$g->error;}function
get_databases(){return
get_vals("SELECT name FROM sys.databases WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb')");}function
limit($H,$Z,$_,$D=0,$fh=" "){return($_!==null?" TOP (".($_+$D).")":"")." $H$Z";}function
limit1($R,$H,$Z,$fh="\n"){return
limit($H,$Z,1,0,$fh);}function
db_collation($k,$ib){return
get_val("SELECT collation_name FROM sys.databases WHERE name = ".q($k));}function
engines(){return
array();}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){global$g;$J=array();foreach($j
as$k){$g->select_db($k);$J[$k]=get_val("SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES");}return$J;}function
table_status($C=""){$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') ".($C!=""?"AND name = ".q($C):"ORDER BY name"))as$K){if($C!="")return$K;$J[$K["Name"]]=$K;}return$J;}function
is_view($S){return$S["Engine"]=="VIEW";}function
fk_support($S){return
true;}function
fields($R){$pb=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();$Nh=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, CAST(d.definition as text) [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($Nh))as$K){$U=$K["type"];$te=(preg_match("~char|binary~",$U)?$K["max_length"]/($U[0]=='n'?2:1):($U=="decimal"?"$K[precision],$K[scale]":""));$J[$K["name"]]=array("field"=>$K["name"],"full_type"=>$U.($te?"($te)":""),"type"=>$U,"length"=>$te,"default"=>(preg_match("~^\('(.*)'\)$~",$K["default"],$B)?str_replace("''","'",$B[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"=>$pb[$K["name"]],);}foreach(get_rows("SELECT * FROM sys.computed_columns WHERE object_id = ".q($Nh))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){$C=$K["name"];$J[$C]["type"]=($K["is_primary_key"]?"PRIMARY":($K["is_unique"]?"UNIQUE":"INDEX"));$J[$C]["lengths"]=array();$J[$C]["columns"][$K["key_ordinal"]]=$K["column_name"];$J[$C]["descs"][$K["key_ordinal"]]=($K["is_descending_key"]?'1':null);}return$J;}function
view($C){return
array("select"=>preg_replace('~^(?:[^[]|\[[^]]*])*\s+AS\s+~isU','',get_val("SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_SCHEMA = SCHEMA_NAME() AND TABLE_NAME = ".q($C))));}function
collations(){$J=array();foreach(get_vals("SELECT name FROM fn_helpcollations()")as$hb)$J[preg_replace('~_.*~','',$hb)][]=$hb;return$J;}function
information_schema($k){return
get_schema()=="INFORMATION_SCHEMA";}function
error(){global$g;return
nl_br(h(preg_replace('~^(\[[^]]*])+~m','',$g->error)));}function
create_database($k,$hb){return
queries("CREATE DATABASE ".idf_escape($k).(preg_match('~^[a-z0-9_]+$~i',$hb)?" COLLATE $hb":""));}function
drop_databases($j){return
queries("DROP DATABASE ".implode(", ",array_map('Adminer\idf_escape',$j)));}function
rename_database($C,$hb){if(preg_match('~^[a-z0-9_]+$~i',$hb))queries("ALTER DATABASE ".idf_escape(DB)." COLLATE $hb");queries("ALTER DATABASE ".idf_escape(DB)." MODIFY NAME = ".idf_escape($C));return
true;}function
auto_increment(){return" IDENTITY".($_POST["Auto_increment"]!=""?"(".number($_POST["Auto_increment"]).",1)":"")." PRIMARY KEY";}function
alter_table($R,$C,$p,$cd,$nb,$sc,$hb,$Ba,$Wf){$c=array();$pb=array();$Gf=fields($R);foreach($p
as$o){$d=idf_escape($o[0]);$X=$o[1];if(!$X)$c["DROP"][]=" COLUMN $d";else{$X[1]=preg_replace("~( COLLATE )'(\\w+)'~",'\1\2',$X[1]);$pb[$o[0]]=$X[5];unset($X[5]);if(preg_match('~ AS ~',$X[3]))unset($X[1],$X[2]);if($o[0]=="")$c["ADD"][]="\n  ".implode("",$X).($R==""?substr($cd[$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'");$c["ALTER COLUMN ".implode("",$X)][]="";$Ff=$Gf[$o[0]];if(default_value($Ff)!=$l){if($Ff["default"]!==null)$c["DROP"][]=" ".idf_escape($Ff["default_constraint"]);if($l)$c["ADD"][]="\n $l FOR $d";}}}}if($R=="")return
queries("CREATE TABLE ".table($C)." (".implode(",",(array)$c["ADD"])."\n)");if($R!=$C)queries("EXEC sp_rename ".q(table($R)).", ".q($C));if($cd)$c[""]=$cd;foreach($c
as$z=>$X){if(!queries("ALTER TABLE ".table($C)." $z".implode(",",$X)))return
false;}foreach($pb
as$z=>$X){$nb=substr($X,9);queries("EXEC sp_dropextendedproperty @name = N'MS_Description', @level0type = N'Schema', @level0name = ".q(get_schema()).", @level1type = N'Table', @level1name = ".q($C).", @level2type = N'Column', @level2name = ".q($z));queries("EXEC sp_addextendedproperty
@name = N'MS_Description',
@value = $nb,
@level0type = N'Schema',
@level0name = ".q(get_schema()).",
@level1type = N'Table',
@level1name = ".q($C).",
@level2type = N'Column',
@level2name = ".q($z));}return
true;}function
alter_indexes($R,$c){$x=array();$cc=array();foreach($c
as$X){if($X[2]=="DROP"){if($X[0]=="PRIMARY")$cc[]=idf_escape($X[1]);else$x[]=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(!$x||queries("DROP INDEX ".implode(", ",$x)))&&(!$cc||queries("ALTER TABLE ".table($R)." DROP ".implode(", ",$cc)));}function
last_id(){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;}function
found_rows($S,$Z){}function
foreign_keys($R){$J=array();$rf=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){$r=&$J[$K["FK_NAME"]];$r["db"]=$K["PKTABLE_QUALIFIER"];$r["ns"]=$K["PKTABLE_OWNER"];$r["table"]=$K["PKTABLE_NAME"];$r["on_update"]=$rf[$K["UPDATE_RULE"]];$r["on_delete"]=$rf[$K["DELETE_RULE"]];$r["source"][]=$K["FKCOLUMN_NAME"];$r["target"][]=$K["PKCOLUMN_NAME"];}return$J;}function
truncate_tables($T){return
apply_queries("TRUNCATE TABLE",$T);}function
drop_views($Zi){return
queries("DROP VIEW ".implode(", ",array_map('Adminer\table',$Zi)));}function
drop_tables($T){return
queries("DROP TABLE ".implode(", ",array_map('Adminer\table',$T)));}function
move_tables($T,$Zi,$Wh){return
apply_queries("ALTER SCHEMA ".idf_escape($Wh)." TRANSFER",array_merge($T,$Zi));}function
trigger($C){if($C=="")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($C));$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($Vg){$_GET["ns"]=$Vg;return
true;}function
create_sql($R,$Ba,$Gh){global$m;if(is_view(table_status($R))){$Yi=view($R);return"CREATE VIEW ".table($R)." AS $Yi[select]";}$p=array();$G=false;foreach(fields($R)as$C=>$o){$X=process_field($o,$o);if($X[6])$G=true;$p[]=implode("",$X);}foreach(indexes($R)as$C=>$x){if(!$G||$x["type"]!="PRIMARY"){$e=array();foreach($x["columns"]as$z=>$X)$e[]=idf_escape($X).($x["descs"][$z]?" DESC":"");$C=idf_escape($C);$p[]=($x["type"]=="INDEX"?"INDEX $C":"CONSTRAINT $C ".($x["type"]=="UNIQUE"?"UNIQUE":"PRIMARY KEY"))." (".implode(", ",$e).")";}}foreach($m->checkConstraints($R)as$C=>$Va)$p[]="CONSTRAINT ".idf_escape($C)." CHECK ($Va)";return"CREATE TABLE ".table($R)." (\n\t".implode(",\n\t",$p)."\n)";}function
foreign_keys_sql($R){$p=array();foreach(foreign_keys($R)as$cd)$p[]=ltrim(format_foreign_key($cd));return($p?"ALTER TABLE ".table($R)." ADD\n\t".implode(",\n\t",$p).";\n\n":"");}function
truncate_sql($R){return"TRUNCATE TABLE ".table($R);}function
use_sql($Kb){return"USE ".idf_escape($Kb);}function
trigger_sql($R){$J="";foreach(triggers($R)as$C=>$vi)$J.=create_trigger(" ON ".table($R),trigger($C)).";";return$J;}function
convert_field($o){}function
unconvert_field($o,$J){return$J;}function
support($Pc){return
preg_match('~^(check|comment|columns|database|drop_col|dump|indexes|descidx|scheme|sql|table|trigger|view|view_trigger)$~',$Pc);}}class
Adminer{var$operators;function
name(){return"<a href='https://www.adminer.org/'".target_blank()." id='h1'>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($ad=true){return
get_databases($ad);}function
schemas(){return
schemas();}function
queryTimeout(){return
2;}function
headers(){}function
csp(){return
csp();}function
head($Hb=null){return
true;}function
css(){$J=array();foreach(array("","-dark")as$Te){$q="adminer$Te.css";if(file_exists($q))$J[]="$q?v=".crc32(file_get_contents($q));}return$J;}function
loginForm(){global$bc;echo"<table class='layout'>\n",$this->loginFormField('driver','<tr><th>'.lang(32).'<td>',html_select("auth[driver]",$bc,DRIVER,"loginDriver(this);")),$this->loginFormField('server','<tr><th>'.lang(33).'<td>','<input name="auth[server]" value="'.h(SERVER).'" title="hostname[:port]" placeholder="localhost" autocapitalize="off">'),$this->loginFormField('username','<tr><th>'.lang(34).'<td>','<input name="auth[username]" id="username" autofocus value="'.h($_GET["username"]).'" autocomplete="username" autocapitalize="off">'.script("qs('#username').form['auth[driver]'].onchange();")),$this->loginFormField('password','<tr><th>'.lang(35).'<td>','<input type="password" name="auth[password]" autocomplete="current-password">'),$this->loginFormField('db','<tr><th>'.lang(36).'<td>','<input name="auth[db]" value="'.h($_GET["db"]).'" autocapitalize="off">'),"</table>\n","<p><input type='submit' value='".lang(37)."'>\n",checkbox("auth[permanent]",1,$_COOKIE["adminer_permanent"],lang(38))."\n";}function
loginFormField($C,$_d,$Y){return$_d.$Y."\n";}function
login($ye,$F){if($F=="")return
lang(39,target_blank());return
true;}function
tableName($Mh){return
h($Mh["Name"]);}function
fieldName($o,$_f=0){return'<span title="'.h($o["full_type"].($o["comment"]!=""?" : $o[comment]":'')).'">'.h($o["field"]).'</span>';}function
selectLinks($Mh,$O=""){global$m;echo'<p class="links">';$we=array("select"=>lang(40));if(support("table")||support("indexes"))$we["table"]=lang(41);$be=false;if(support("table")){$be=is_view($Mh);if($be)$we["view"]=lang(42);else$we["create"]=lang(43);}if($O!==null)$we["edit"]=lang(44);$C=$Mh["Name"];foreach($we
as$z=>$X)echo" <a href='".h(ME)."$z=".urlencode($C).($z=="edit"?$O:"")."'".bold(isset($_GET[$z])).">$X</a>";echo
doc_link(array(JUSH=>$m->tableHelp($C,$be)),"?"),"\n";}function
foreignKeys($R){return
foreign_keys($R);}function
backwardKeys($R,$Lh){return
array();}function
backwardKeysPrint($Fa,$K){}function
selectQuery($H,$Ch,$Nc=false){global$m;$J="</p>\n";if(!$Nc&&($cj=$m->warnings())){$v="warnings";$J=", <a href='#$v'>".lang(45)."</a>".script("qsl('a').onclick = partial(toggle, '$v');","")."$J<div id='$v' class='hidden'>\n$cj</div>\n";}return"<p><code class='jush-".JUSH."'>".h(str_replace("\n"," ",$H))."</code> <span class='time'>(".format_time($Ch).")</span>".(support("sql")?" <a href='".h(ME)."sql=".urlencode($H)."'>".lang(10)."</a>":"").$J;}function
sqlCommandQuery($H){return
shorten_utf8(trim($H),1000);}function
rowDescription($R){return"";}function
rowDescriptions($L,$dd){return$L;}function
selectLink($X,$o){}function
selectVal($X,$A,$o,$Jf){$J=($X===null?"<i>NULL</i>":(preg_match("~char|binary|boolean~",$o["type"])&&!preg_match("~var~",$o["type"])?"<code>$X</code>":(preg_match('~json~',$o["type"])?"<code class='jush-js'>$X</code>":$X)));if(preg_match('~blob|bytea|raw|file~',$o["type"])&&!is_utf8($X))$J="<i>".lang(46,strlen($Jf))."</i>";return($A?"<a href='".h($A)."'".(is_url($A)?target_blank():"").">$J</a>":$J);}function
editVal($X,$o){return$X;}function
tableStructurePrint($p){global$m;echo"<div class='scrollable'>\n","<table class='nowrap odds'>\n","<thead><tr><th>".lang(47)."<td>".lang(48).(support("comment")?"<td>".lang(49):"")."</thead>\n";$Fh=$m->structuredTypes();foreach($p
as$o){echo"<tr><th>".h($o["field"]);$U=h($o["full_type"]);echo"<td><span title='".h($o["collation"])."'>".(in_array($U,(array)$Fh[lang(31)])?"<a href='".h(ME.'type='.urlencode($U))."'>$U</a>":$U)."</span>",($o["null"]?" <i>NULL</i>":""),($o["auto_increment"]?" <i>".lang(50)."</i>":"");$l=h($o["default"]);echo(isset($o["default"])?" <span title='".lang(51)."'>[<b>".($o["generated"]?"<code class='jush-".JUSH."'>$l</code>":$l)."</b>]</span>":""),(support("comment")?"<td>".h($o["comment"]):""),"\n";}echo"</table>\n","</div>\n";}function
tableIndexesPrint($y){echo"<table>\n";foreach($y
as$C=>$x){ksort($x["columns"]);$ng=array();foreach($x["columns"]as$z=>$X)$ng[]="<i>".h($X)."</i>".($x["lengths"][$z]?"(".$x["lengths"][$z].")":"").($x["descs"][$z]?" DESC":"");echo"<tr title='".h($C)."'><th>$x[type]<td>".implode(", ",$ng)."\n";}echo"</table>\n";}function
selectColumnsPrint($M,$e){global$m;print_fieldset("select",lang(52),$M);$u=0;$M[""]=array();foreach($M
as$z=>$X){$X=$_GET["columns"][$z];$d=select_input(" name='columns[$u][col]'",$e,$X["col"],($z!==""?"selectFieldChange":"selectAddRow"));echo"<div>".($m->functions||$m->grouping?html_select("columns[$u][fun]",array(-1=>"")+array_filter(array(lang(53)=>$m->functions,lang(54)=>$m->grouping)),$X["fun"]).on_help("getTarget(event).value && getTarget(event).value.replace(/ |\$/, '(') + ')'",1).script("qsl('select').onchange = function () { helpClose();".($z!==""?"":" qsl('select, input', this.parentNode).onchange();")." };","")."($d)":$d)."</div>\n";$u++;}echo"</div></fieldset>\n";}function
selectSearchPrint($Z,$e,$y){print_fieldset("search",lang(55),$Z);foreach($y
as$u=>$x){if($x["type"]=="FULLTEXT")echo"<div>(<i>".implode("</i>, <i>",array_map('Adminer\h',$x["columns"]))."</i>) AGAINST"," <input type='search' name='fulltext[$u]' value='".h($_GET["fulltext"][$u])."'>",script("qsl('input').oninput = selectFieldChange;",""),checkbox("boolean[$u]",1,isset($_GET["boolean"][$u]),"BOOL"),"</div>\n";}$Ta="this.parentNode.firstChild.onchange();";foreach(array_merge((array)$_GET["where"],array(array()))as$u=>$X){if(!$X||("$X[col]$X[val]"!=""&&in_array($X["op"],$this->operators)))echo"<div>".select_input(" name='where[$u][col]'",$e,$X["col"],($X?"selectFieldChange":"selectAddRow"),"(".lang(56).")"),html_select("where[$u][op]",$this->operators,$X["op"],$Ta),"<input type='search' name='where[$u][val]' value='".h($X["val"])."'>",script("mixin(qsl('input'), {oninput: function () { $Ta }, onkeydown: selectSearchKeydown, onsearch: selectSearchSearch});",""),"</div>\n";}echo"</div></fieldset>\n";}function
selectOrderPrint($_f,$e,$y){print_fieldset("sort",lang(57),$_f);$u=0;foreach((array)$_GET["order"]as$z=>$X){if($X!=""){echo"<div>".select_input(" name='order[$u]'",$e,$X,"selectFieldChange"),checkbox("desc[$u]",1,isset($_GET["desc"][$z]),lang(58))."</div>\n";$u++;}}echo"<div>".select_input(" name='order[$u]'",$e,"","selectAddRow"),checkbox("desc[$u]",1,false,lang(58))."</div>\n","</div></fieldset>\n";}function
selectLimitPrint($_){echo"<fieldset><legend>".lang(59)."</legend><div>","<input type='number' name='limit' class='size' value='".h($_)."'>",script("qsl('input').oninput = selectFieldChange;",""),"</div></fieldset>\n";}function
selectLengthPrint($ci){if($ci!==null)echo"<fieldset><legend>".lang(60)."</legend><div>","<input type='number' name='text_length' class='size' value='".h($ci)."'>","</div></fieldset>\n";}function
selectActionPrint($y){echo"<fieldset><legend>".lang(61)."</legend><div>","<input type='submit' value='".lang(52)."'>"," <span id='noindex' title='".lang(62)."'></span>","<script".nonce().">\n","var indexColumns = ";$e=array();foreach($y
as$x){$Gb=reset($x["columns"]);if($x["type"]!="FULLTEXT"&&$Gb)$e[$Gb]=1;}$e[""]=1;foreach($e
as$z=>$X)json_row($z);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($pc,$e){}function
selectColumnsProcess($e,$y){global$m;$M=array();$pd=array();foreach((array)$_GET["columns"]as$z=>$X){if($X["fun"]=="count"||($X["col"]!=""&&(!$X["fun"]||in_array($X["fun"],$m->functions)||in_array($X["fun"],$m->grouping)))){$M[$z]=apply_sql_function($X["fun"],($X["col"]!=""?idf_escape($X["col"]):"*"));if(!in_array($X["fun"],$m->grouping))$pd[]=$M[$z];}}return
array($M,$pd);}function
selectSearchProcess($p,$y){global$g,$m;$J=array();foreach($y
as$u=>$x){if($x["type"]=="FULLTEXT"&&$_GET["fulltext"][$u]!="")$J[]="MATCH (".implode(", ",array_map('Adminer\idf_escape',$x["columns"])).") AGAINST (".q($_GET["fulltext"][$u]).(isset($_GET["boolean"][$u])?" IN BOOLEAN MODE":"").")";}foreach((array)$_GET["where"]as$z=>$X){if("$X[col]$X[val]"!=""&&in_array($X["op"],$this->operators)){$kg="";$qb=" $X[op]";if(preg_match('~IN$~',$X["op"])){$Jd=process_length($X["val"]);$qb.=" ".($Jd!=""?$Jd:"(NULL)");}elseif($X["op"]=="SQL")$qb=" $X[val]";elseif($X["op"]=="LIKE %%")$qb=" LIKE ".$this->processInput($p[$X["col"]],"%$X[val]%");elseif($X["op"]=="ILIKE %%")$qb=" ILIKE ".$this->processInput($p[$X["col"]],"%$X[val]%");elseif($X["op"]=="FIND_IN_SET"){$kg="$X[op](".q($X["val"]).", ";$qb=")";}elseif(!preg_match('~NULL$~',$X["op"]))$qb.=" ".$this->processInput($p[$X["col"]],$X["val"]);if($X["col"]!="")$J[]=$kg.$m->convertSearch(idf_escape($X["col"]),$X,$p[$X["col"]]).$qb;else{$jb=array();foreach($p
as$C=>$o){if(isset($o["privileges"]["where"])&&(preg_match('~^[-\d.'.(preg_match('~IN$~',$X["op"])?',':'').']+$~',$X["val"])||!preg_match('~'.number_type().'|bit~',$o["type"]))&&(!preg_match("~[\x80-\xFF]~",$X["val"])||preg_match('~char|text|enum|set~',$o["type"]))&&(!preg_match('~date|timestamp~',$o["type"])||preg_match('~^\d+-\d+-\d+~',$X["val"])))$jb[]=$kg.$m->convertSearch(idf_escape($C),$X,$o).$qb;}$J[]=($jb?"(".implode(" OR ",$jb).")":"1 = 0");}}}return$J;}function
selectOrderProcess($p,$y){$J=array();foreach((array)$_GET["order"]as$z=>$X){if($X!="")$J[]=(preg_match('~^((COUNT\(DISTINCT |[A-Z0-9_]+\()(`(?:[^`]|``)+`|"(?:[^"]|"")+")\)|COUNT\(\*\))$~',$X)?$X:idf_escape($X)).(isset($_GET["desc"][$z])?" DESC":"");}return$J;}function
selectLimitProcess(){return(isset($_GET["limit"])?$_GET["limit"]:"50");}function
selectLengthProcess(){return(isset($_GET["text_length"])?$_GET["text_length"]:"100");}function
selectEmailProcess($Z,$dd){return
false;}function
selectQueryBuild($M,$Z,$pd,$_f,$_,$E){return"";}function
messageQuery($H,$di,$Nc=false){global$m;restart_session();$Ad=&get_session("queries");if(!$Ad[$_GET["db"]])$Ad[$_GET["db"]]=array();if(strlen($H)>1e6)$H=preg_replace('~[\x80-\xFF]+$~','',substr($H,0,1e6))."\n…";$Ad[$_GET["db"]][]=array($H,time(),$di);$zh="sql-".count($Ad[$_GET["db"]]);$J="<a href='#$zh' class='toggle'>".lang(63)."</a>\n";if(!$Nc&&($cj=$m->warnings())){$v="warnings-".count($Ad[$_GET["db"]]);$J="<a href='#$v' class='toggle'>".lang(45)."</a>, $J<div id='$v' class='hidden'>\n$cj</div>\n";}return" <span class='time'>".@date("H:i:s")."</span>"." $J<div id='$zh' class='hidden'><pre><code class='jush-".JUSH."'>".shorten_utf8($H,1000)."</code></pre>".($di?" <span class='time'>($di)</span>":'').(support("sql")?'<p><a href="'.h(str_replace("db=".urlencode(DB),"db=".urlencode($_GET["db"]),ME).'sql=&history='.(count($Ad[$_GET["db"]])-1)).'">'.lang(10).'</a>':'').'</div>';}function
editRowPrint($R,$p,$K,$Ji){}function
editFunctions($o){global$m;$J=($o["null"]?"NULL/":"");$Ji=isset($_GET["select"])||where($_GET);foreach($m->editFunctions
as$z=>$kd){if(!$z||(!isset($_GET["call"])&&$Ji)){foreach($kd
as$ag=>$X){if(!$ag||preg_match("~$ag~",$o["type"]))$J.="/$X";}}if($z&&!preg_match('~set|blob|bytea|raw|file|bool~',$o["type"]))$J.="/SQL";}if($o["auto_increment"]&&!$Ji)$J=lang(50);return
explode("/",$J);}function
editInput($R,$o,$_a,$Y){if($o["type"]=="enum")return(isset($_GET["select"])?"<label><input type='radio'$_a value='-1' checked><i>".lang(8)."</i></label> ":"").($o["null"]?"<label><input type='radio'$_a value=''".($Y!==null||isset($_GET["select"])?"":" checked")."><i>NULL</i></label> ":"").enum_input("radio",$_a,$o,$Y,$Y===0?0:null);return"";}function
editHint($R,$o,$Y){return"";}function
processInput($o,$Y,$t=""){if($t=="SQL")return$Y;$C=$o["field"];$J=q($Y);if(preg_match('~^(now|getdate|uuid)$~',$t))$J="$t()";elseif(preg_match('~^current_(date|timestamp)$~',$t))$J=$t;elseif(preg_match('~^([+-]|\|\|)$~',$t))$J=idf_escape($C)." $t $J";elseif(preg_match('~^[+-] interval$~',$t))$J=idf_escape($C)." $t ".(preg_match("~^(\\d+|'[0-9.: -]') [A-Z_]+\$~i",$Y)?$Y:$J);elseif(preg_match('~^(addtime|subtime|concat)$~',$t))$J="$t(".idf_escape($C).", $J)";elseif(preg_match('~^(md5|sha1|password|encrypt)$~',$t))$J="$t($J)";return
unconvert_field($o,$J);}function
dumpOutput(){$J=array('text'=>lang(64),'file'=>lang(65));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,$Gh,$be=0){if($_POST["format"]!="sql"){echo"\xef\xbb\xbf";if($Gh)dump_csv(array_keys(fields($R)));}else{if($be==2){$p=array();foreach(fields($R)as$C=>$o)$p[]=idf_escape($C)." $o[full_type]";$i="CREATE TABLE ".table($R)." (".implode(", ",$p).")";}else$i=create_sql($R,$_POST["auto_increment"],$Gh);set_utf8mb4($i);if($Gh&&$i){if($Gh=="DROP+CREATE"||$be==1)echo"DROP ".($be==2?"VIEW":"TABLE")." IF EXISTS ".table($R).";\n";if($be==1)$i=remove_definer($i);echo"$i;\n\n";}}}function
dumpData($R,$Gh,$H){global$g;if($Gh){$Fe=(JUSH=="sqlite"?0:1048576);$p=array();$Gd=false;if($_POST["format"]=="sql"){if($Gh=="TRUNCATE+INSERT")echo
truncate_sql($R).";\n";$p=fields($R);if(JUSH=="mssql"){foreach($p
as$o){if($o["auto_increment"]){echo"SET IDENTITY_INSERT ".table($R)." ON;\n";$Gd=true;break;}}}}$I=$g->query($H,1);if($I){$Td="";$Oa="";$ge=array();$ld=array();$Ih="";$Qc=($R!=''?'fetch_assoc':'fetch_row');while($K=$I->$Qc()){if(!$ge){$Ui=array();foreach($K
as$X){$o=$I->fetch_field();if($p[$o->name]['generated']){$ld[$o->name]=true;continue;}$ge[]=$o->name;$z=idf_escape($o->name);$Ui[]="$z = VALUES($z)";}$Ih=($Gh=="INSERT+UPDATE"?"\nON DUPLICATE KEY UPDATE ".implode(", ",$Ui):"").";\n";}if($_POST["format"]!="sql"){if($Gh=="table"){dump_csv($ge);$Gh="INSERT";}dump_csv($K);}else{if(!$Td)$Td="INSERT INTO ".table($R)." (".implode(", ",array_map('Adminer\idf_escape',$ge)).") VALUES";foreach($K
as$z=>$X){if($ld[$z]){unset($K[$z]);continue;}$o=$p[$z];$K[$z]=($X!==null?unconvert_field($o,preg_match(number_type(),$o["type"])&&!preg_match('~\[~',$o["full_type"])&&is_numeric($X)?$X:q(($X===false?0:$X))):"NULL");}$Tg=($Fe?"\n":" ")."(".implode(",\t",$K).")";if(!$Oa)$Oa=$Td.$Tg;elseif(strlen($Oa)+4+strlen($Tg)+strlen($Ih)<$Fe)$Oa.=",$Tg";else{echo$Oa.$Ih;$Oa=$Td.$Tg;}}}if($Oa)echo$Oa.$Ih;}elseif($_POST["format"]=="sql")echo"-- ".str_replace("\n"," ",$g->error)."\n";if($Gd)echo"SET IDENTITY_INSERT ".table($R)." OFF;\n";}}function
dumpFilename($Ed){return
friendly_url($Ed!=""?$Ed:(SERVER!=""?SERVER:"localhost"));}function
dumpHeaders($Ed,$Ue=false){$Mf=$_POST["output"];$Ic=(preg_match('~sql~',$_POST["format"])?"sql":($Ue?"tar":"csv"));header("Content-Type: ".($Mf=="gz"?"application/x-gzip":($Ic=="tar"?"application/x-tar":($Ic=="sql"||$Mf!="file"?"text/plain":"text/csv")."; charset=utf-8")));if($Mf=="gz"){ob_start(function($Q){return
gzencode($Q);},1e6);}return$Ic;}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(66)."</a>\n":""),(support("scheme")?"<a href='".h(ME)."scheme='>".($_GET["ns"]!=""?lang(67):lang(68))."</a>\n":""),($_GET["ns"]!==""?'<a href="'.h(ME).'schema=">'.lang(69)."</a>\n":""),(support("privileges")?"<a href='".h(ME)."privileges='>".lang(70)."</a>\n":"");return
true;}function
navigation($Se){global$ia,$bc,$g;echo'<h1>
',$this->name(),'<span class="version">
',$ia,' <a href="https://www.adminer.org/#download"',target_blank(),' id="version">',(version_compare($ia,$_COOKIE["adminer_version"])<0?h($_COOKIE["adminer_version"]):""),'</a>
</span>
</h1>
';switch_lang();if($Se=="auth"){$Mf="";foreach((array)$_SESSION["pwds"]as$Wi=>$kh){foreach($kh
as$N=>$Ri){$C=h(get_setting("vendor-$N")?:$bc[$Wi]);foreach($Ri
as$V=>$F){if($F!==null){$Nb=$_SESSION["db"][$Wi][$N][$V];foreach(($Nb?array_keys($Nb):array(""))as$k)$Mf.="<li><a href='".h(auth_url($Wi,$N,$V,$k))."'>($C) ".h($V.($N!=""?"@".$this->serverName($N):"").($k!=""?" - $k":""))."</a>\n";}}}}if($Mf)echo"<ul id='logins'>\n$Mf</ul>\n".script("mixin(qs('#logins'), {onmouseover: menuOver, onmouseout: menuOut});");}else{$T=array();if($_GET["ns"]!==""&&!$Se&&DB!=""){$g->select_db(DB);$T=table_status('',true);}$this->syntaxHighlighting($T);$this->databasesPrint($Se);$ma=array();if(DB==""||!$Se){if(support("sql")){$ma[]="<a href='".h(ME)."sql='".bold(isset($_GET["sql"])&&!isset($_GET["import"])).">".lang(63)."</a>";$ma[]="<a href='".h(ME)."import='".bold(isset($_GET["import"])).">".lang(71)."</a>";}$ma[]="<a href='".h(ME)."dump=".urlencode(isset($_GET["table"])?$_GET["table"]:$_GET["select"])."' id='dump'".bold(isset($_GET["dump"])).">".lang(72)."</a>";}$Kd=$_GET["ns"]!==""&&!$Se&&DB!="";if($Kd)$ma[]='<a href="'.h(ME).'create="'.bold($_GET["create"]==="").">".lang(73)."</a>";echo($ma?"<p class='links'>\n".implode("\n",$ma)."\n":"");if($Kd){if($T)$this->tablesPrint($T);else
echo"<p class='message'>".lang(9)."</p>\n";}}}function
syntaxHighlighting($T){global$g;echo
script_src(preg_replace("~\\?.*~","",ME)."?file=jush.js&version=5.0.6");if(support("sql")){echo"<script".nonce().">\n";if($T){$we=array();foreach($T
as$R=>$U)$we[]=preg_quote($R,'/');echo"var jushLinks = { ".JUSH.": [ '".js_escape(ME).(support("table")?"table=":"select=")."\$&', /\\b(".implode("|",$we).")\\b/g ] };\n";foreach(array("bac","bra","sqlite_quo","mssql_bra")as$X)echo"jushLinks.$X = jushLinks.".JUSH.";\n";}echo"</script>\n";}echo
script("bodyLoad('".(is_object($g)?preg_replace('~^(\d\.?\d).*~s','\1',$g->server_info):"")."'".($g->maria?", true":"").");");}function
databasesPrint($Se){global$b,$g;$j=$this->databases();if(DB&&$j&&!in_array(DB,$j))array_unshift($j,DB);echo'<form action="">
<p id="dbs">
';hidden_fields_get();$Lb=script("mixin(qsl('select'), {onmousedown: dbMouseDown, onchange: dbChange});");echo"<span title='".lang(36)."'>".lang(74).":</span> ".($j?html_select("db",array(""=>"")+$j,DB).$Lb:"<input name='db' value='".h(DB)."' autocapitalize='off' size='19'>\n"),"<input type='submit' value='".lang(20)."'".($j?" class='hidden'":"").">\n";if(support("scheme")){if($Se!="db"&&DB!=""&&$g->select_db(DB)){echo"<br><span>".lang(75).":</span> ".html_select("ns",array(""=>"")+$b->schemas(),$_GET["ns"]).$Lb;if($_GET["ns"]!="")set_schema($_GET["ns"]);}}foreach(array("import","sql","schema","dump","privileges")as$X){if(isset($_GET[$X])){echo"<input type='hidden' name='$X' value=''>";break;}}echo"</p></form>\n";}function
tablesPrint($T){echo"<ul id='tables'>".script("mixin(qs('#tables'), {onmouseover: menuOver, onmouseout: menuOut});");foreach($T
as$R=>$P){$C=$this->tableName($P);if($C!="")echo'<li><a href="'.h(ME).'select='.urlencode($R).'"'.bold($_GET["select"]==$R||$_GET["edit"]==$R,"select")." title='".lang(40)."'>".lang(76)."</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"])),(is_view($P)?"view":"structure"))." title='".lang(41)."'>$C</a>":"<span>$C</span>")."\n";}echo"</ul>\n";}}$b=(function_exists('adminer_object')?adminer_object():new
Adminer);$bc=array("server"=>"MySQL / MariaDB")+$bc;if(!defined('Adminer\DRIVER')){define('Adminer\DRIVER',"server");if(extension_loaded("mysqli")){class
Db
extends
\MySQLi{var$extension="MySQLi";function
__construct(){parent::init();}function
connect($N="",$V="",$F="",$Kb=null,$eg=null,$sh=null){global$b;mysqli_report(MYSQLI_REPORT_OFF);list($Cd,$eg)=explode(":",$N,2);$Bh=$b->connectSsl();if($Bh)$this->ssl_set($Bh['key'],$Bh['cert'],$Bh['ca'],'','');$J=@$this->real_connect(($N!=""?$Cd:ini_get("mysqli.default_host")),($N.$V!=""?$V:ini_get("mysqli.default_user")),($N.$V.$F!=""?$F:ini_get("mysqli.default_pw")),$Kb,(is_numeric($eg)?$eg:ini_get("mysqli.default_port")),(!is_numeric($eg)?$eg:$sh),($Bh?($Bh['verify']!==false?2048:64):0));$this->options(MYSQLI_OPT_LOCAL_INFILE,false);return$J;}function
set_charset($Ua){if(parent::set_charset($Ua))return
true;parent::set_charset('utf8');return$this->query("SET NAMES $Ua");}function
result($H,$o=0){$I=$this->query($H);if(!$I)return
false;$K=$I->fetch_array();return$K[$o];}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{var$extension="MySQL",$server_info,$affected_rows,$errno,$error;private$link,$result;function
connect($N,$V,$F){if(ini_bool("mysql.allow_local_infile")){$this->error=lang(77,"'mysql.allow_local_infile'","MySQLi","PDO_MySQL");return
false;}$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)$this->server_info=mysql_get_server_info($this->link);else$this->error=mysql_error();return(bool)$this->link;}function
set_charset($Ua){if(function_exists('mysql_set_charset')){if(mysql_set_charset($Ua,$this->link))return
true;mysql_set_charset('utf8',$this->link);}return$this->query("SET NAMES $Ua");}function
quote($Q){return"'".mysql_real_escape_string($Q,$this->link)."'";}function
select_db($Kb){return
mysql_select_db($Kb,$this->link);}function
query($H,$Bi=false){$I=@($Bi?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);}function
multi_query($H){return$this->result=$this->query($H);}function
store_result(){return$this->result;}function
next_result(){return
false;}function
result($H,$o=0){$I=$this->query($H);return($I?$I->fetch_column($o):false);}}class
Result{var$num_rows;private$result,$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_column($o){return($this->num_rows?mysql_result($this->result,0,$o):false);}function
fetch_field(){$J=mysql_fetch_field($this->result,$this->offset++);$J->orgtable=$J->table;$J->orgname=$J->name;$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
connect($N,$V,$F){global$b;$yf=array(\PDO::MYSQL_ATTR_LOCAL_INFILE=>false);$Bh=$b->connectSsl();if($Bh){if($Bh['key'])$yf[\PDO::MYSQL_ATTR_SSL_KEY]=$Bh['key'];if($Bh['cert'])$yf[\PDO::MYSQL_ATTR_SSL_CERT]=$Bh['cert'];if($Bh['ca'])$yf[\PDO::MYSQL_ATTR_SSL_CA]=$Bh['ca'];if(isset($Bh['verify']))$yf[\PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT]=$Bh['verify'];}$this->dsn("mysql:charset=utf8;host=".str_replace(":",";unix_socket=",preg_replace('~:(\d)~',';port=\1',$N)),$V,$F,$yf);return
true;}function
set_charset($Ua){$this->query("SET NAMES $Ua");}function
select_db($Kb){return$this->query("USE ".idf_escape($Kb));}function
query($H,$Bi=false){$this->pdo->setAttribute(\PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,!$Bi);return
parent::query($H,$Bi);}}}class
Driver
extends
SqlDriver{static$ig=array("MySQLi","MySQL","PDO_MySQL");static$de="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");function
__construct($g){parent::__construct($g);$this->types=array(lang(25)=>array("tinyint"=>3,"smallint"=>5,"mediumint"=>8,"int"=>10,"bigint"=>20,"decimal"=>66,"float"=>12,"double"=>21),lang(26)=>array("date"=>10,"datetime"=>19,"timestamp"=>19,"time"=>10,"year"=>4),lang(27)=>array("char"=>255,"varchar"=>65535,"tinytext"=>255,"text"=>65535,"mediumtext"=>16777215,"longtext"=>4294967295),lang(78)=>array("enum"=>65535,"set"=>64),lang(28)=>array("bit"=>20,"binary"=>255,"varbinary"=>65535,"tinyblob"=>255,"blob"=>65535,"mediumblob"=>16777215,"longblob"=>4294967295),lang(30)=>array("geometry"=>0,"point"=>0,"linestring"=>0,"polygon"=>0,"multipoint"=>0,"multilinestring"=>0,"multipolygon"=>0,"geometrycollection"=>0),);$this->editFunctions=array(array("char"=>"md5/sha1/password/encrypt/uuid","binary"=>"md5/sha1","date|time"=>"now",),array(number_type()=>"+/-","date"=>"+ interval/- interval","time"=>"addtime/subtime","char|text"=>"concat",));if(min_version('5.7.8',10.2,$g))$this->types[lang(27)]["json"]=4294967295;if(min_version('',10.7,$g)){$this->types[lang(27)]["uuid"]=128;$this->editFunctions[0]['uuid']='uuid';}if(min_version(9,'',$g)){$this->types[lang(25)]["vector"]=16383;$this->editFunctions[0]['vector']='string_to_vector';}if(min_version(5.7,10.2,$g))$this->generated=array("STORED","VIRTUAL");}function
unconvertFunction($o){return(preg_match("~binary~",$o["type"])?"<code class='jush-sql'>UNHEX</code>":($o["type"]=="bit"?doc_link(array('sql'=>'bit-value-literals.html'),"<code>b''</code>"):(preg_match("~geometry|point|linestring|polygon~",$o["type"])?"<code class='jush-sql'>GeomFromText</code>":"")));}function
insert($R,$O){return($O?parent::insert($R,$O):queries("INSERT INTO ".table($R)." ()\nVALUES ()"));}function
insertUpdate($R,$L,$G){$e=array_keys(reset($L));$kg="INSERT INTO ".table($R)." (".implode(", ",$e).") VALUES\n";$Ui=array();foreach($e
as$z)$Ui[$z]="$z = VALUES($z)";$Ih="\nON DUPLICATE KEY UPDATE ".implode(", ",$Ui);$Ui=array();$te=0;foreach($L
as$O){$Y="(".implode(", ",$O).")";if($Ui&&(strlen($kg)+$te+strlen($Y)+strlen($Ih)>1e6)){if(!queries($kg.implode(",\n",$Ui).$Ih))return
false;$Ui=array();$te=0;}$Ui[]=$Y;$te+=strlen($Y)+2;}return
queries($kg.implode(",\n",$Ui).$Ih);}function
slowQuery($H,$ei){if(min_version('5.7.8','10.1.2')){if($this->conn->maria)return"SET STATEMENT max_statement_time=$ei FOR $H";elseif(preg_match('~^(SELECT\b)(.+)~is',$H,$B))return"$B[1] /*+ MAX_EXECUTION_TIME(".($ei*1000).") */ $B[2]";}}function
convertSearch($w,$X,$o){return(preg_match('~char|text|enum|set~',$o["type"])&&!preg_match("~^utf8~",$o["collation"])&&preg_match('~[\x80-\xFF]~',$X['val'])?"CONVERT($w USING ".charset($this->conn).")":$w);}function
warnings(){$I=$this->conn->query("SHOW WARNINGS");if($I&&$I->num_rows){ob_start();select($I);return
ob_get_clean();}}function
tableHelp($C,$be=false){$_e=$this->conn->maria;if(information_schema(DB))return
strtolower("information-schema-".($_e?"$C-table/":str_replace("_","-",$C)."-table.html"));if(DB=="mysql")return($_e?"mysql$C-table/":"system-schema.html");}function
hasCStyleEscapes(){static$Qa;if($Qa===null){$_h=$this->conn->result("SHOW VARIABLES LIKE 'sql_mode'",1);$Qa=(strpos($_h,'NO_BACKSLASH_ESCAPES')===false);}return$Qa;}}function
idf_escape($w){return"`".str_replace("`","``",$w)."`";}function
table($w){return
idf_escape($w);}function
connect($Cb){global$bc;$g=new
Db;if($g->connect($Cb[0],$Cb[1],$Cb[2])){$g->set_charset(charset($g));$g->query("SET sql_quote_show_create = 1, autocommit = 1");$g->maria=preg_match('~MariaDB~',$g->server_info);$bc[DRIVER]=($g->maria?"MariaDB":"MySQL");return$g;}$J=$g->error;if(function_exists('iconv')&&!is_utf8($J)&&strlen($Tg=iconv("windows-1250","utf-8",$J))>strlen($J))$J=$Tg;return$J;}function
get_databases($ad){$J=get_session("dbs");if($J===null){$H="SELECT SCHEMA_NAME FROM information_schema.SCHEMATA ORDER BY SCHEMA_NAME";$J=($ad?slow_query($H):get_vals($H));restart_session();set_session("dbs",$J);stop_session();}return$J;}function
limit($H,$Z,$_,$D=0,$fh=" "){return" $H$Z".($_!==null?$fh."LIMIT $_".($D?" OFFSET $D":""):"");}function
limit1($R,$H,$Z,$fh="\n"){return
limit($H,$Z,1,0,$fh);}function
db_collation($k,$ib){$J=null;$i=get_val("SHOW CREATE DATABASE ".idf_escape($k),1);if(preg_match('~ COLLATE ([^ ]+)~',$i,$B))$J=$B[1];elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$i,$B))$J=$ib[$B[1]][-1];return$J;}function
engines(){$J=array();foreach(get_rows("SHOW ENGINES")as$K){if(preg_match("~YES|DEFAULT~",$K["Support"]))$J[]=$K["Engine"];}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($j){$J=array();foreach($j
as$k)$J[$k]=count(get_vals("SHOW TABLES IN ".idf_escape($k)));return$J;}function
table_status($C="",$Oc=false){$J=array();foreach(get_rows($Oc?"SELECT TABLE_NAME AS Name, ENGINE AS Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ".($C!=""?"AND TABLE_NAME = ".q($C):"ORDER BY Name"):"SHOW TABLE STATUS".($C!=""?" LIKE ".q(addcslashes($C,"%_\\")):""))as$K){if($K["Engine"]=="InnoDB")$K["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\1',$K["Comment"]);if(!isset($K["Engine"]))$K["Comment"]="";if($C!=""){$K["Name"]=$C;return$K;}$J[$K["Name"]]=$K;}return$J;}function
is_view($S){return$S["Engine"]===null;}function
fk_support($S){return
preg_match('~InnoDB|IBMDB2I~i',$S["Engine"])||(preg_match('~NDB~i',$S["Engine"])&&min_version(5.6));}function
fields($R){global$g;$_e=$g->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){$o=$K["COLUMN_NAME"];$U=$K["COLUMN_TYPE"];$md=$K["GENERATION_EXPRESSION"];$Lc=$K["EXTRA"];preg_match('~^(VIRTUAL|PERSISTENT|STORED)~',$Lc,$ld);preg_match('~^([^( ]+)(?:\((.+)\))?( unsigned)?( zerofill)?$~',$U,$Ce);$l=$K["COLUMN_DEFAULT"];if($l!=""){$ae=preg_match('~text|json~',$Ce[1]);if(!$_e&&$ae)$l=preg_replace("~^(_\w+)?('.*')$~",'\2',stripslashes($l));if($_e||$ae){$l=($l=="NULL"?null:preg_replace_callback("~^'(.*)'$~",function($B){return
stripslashes(str_replace("''","'",$B[1]));},$l));}if(!$_e&&preg_match('~binary~',$Ce[1])&&preg_match('~^0x(\w*)$~',$l,$B))$l=pack("H*",$B[1]);}$J[$o]=array("field"=>$o,"full_type"=>$U,"type"=>$Ce[1],"length"=>$Ce[2],"unsigned"=>ltrim($Ce[3].$Ce[4]),"default"=>($ld?($_e?$md:stripslashes($md)):$l),"null"=>($K["IS_NULLABLE"]=="YES"),"auto_increment"=>($Lc=="auto_increment"),"on_update"=>(preg_match('~\bon update (\w+)~i',$Lc,$B)?$B[1]:""),"collation"=>$K["COLLATION_NAME"],"privileges"=>array_flip(explode(",","$K[PRIVILEGES],where,order")),"comment"=>$K["COLUMN_COMMENT"],"primary"=>($K["COLUMN_KEY"]=="PRI"),"generated"=>($ld[1]=="PERSISTENT"?"STORED":$ld[1]),);}return$J;}function
indexes($R,$h=null){$J=array();foreach(get_rows("SHOW INDEX FROM ".table($R),$h)as$K){$C=$K["Key_name"];$J[$C]["type"]=($C=="PRIMARY"?"PRIMARY":($K["Index_type"]=="FULLTEXT"?"FULLTEXT":($K["Non_unique"]?($K["Index_type"]=="SPATIAL"?"SPATIAL":"INDEX"):"UNIQUE")));$J[$C]["columns"][]=$K["Column_name"];$J[$C]["lengths"][]=($K["Index_type"]=="SPATIAL"?null:$K["Sub_part"]);$J[$C]["descs"][]=null;}return$J;}function
foreign_keys($R){global$m;static$ag='(?:`(?:[^`]|``)+`|"(?:[^"]|"")+")';$J=array();$Ab=get_val("SHOW CREATE TABLE ".table($R),1);if($Ab){preg_match_all("~CONSTRAINT ($ag) FOREIGN KEY ?\\(((?:$ag,? ?)+)\\) REFERENCES ($ag)(?:\\.($ag))? \\(((?:$ag,? ?)+)\\)(?: ON DELETE ($m->onActions))?(?: ON UPDATE ($m->onActions))?~",$Ab,$De,PREG_SET_ORDER);foreach($De
as$B){preg_match_all("~$ag~",$B[2],$uh);preg_match_all("~$ag~",$B[5],$Wh);$J[idf_unescape($B[1])]=array("db"=>idf_unescape($B[4]!=""?$B[3]:$B[4]),"table"=>idf_unescape($B[4]!=""?$B[4]:$B[3]),"source"=>array_map('Adminer\idf_unescape',$uh[0]),"target"=>array_map('Adminer\idf_unescape',$Wh[0]),"on_delete"=>($B[6]?:"RESTRICT"),"on_update"=>($B[7]?:"RESTRICT"),);}}return$J;}function
view($C){return
array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\s+AS\s+~isU','',get_val("SHOW CREATE VIEW ".table($C),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$z=>$X)asort($J[$z]);return$J;}function
information_schema($k){return($k=="information_schema")||(min_version(5.5)&&$k=="performance_schema");}function
error(){global$g;return
h(preg_replace('~^You have an error.*syntax to use~U',"Syntax error",$g->error));}function
create_database($k,$hb){return
queries("CREATE DATABASE ".idf_escape($k).($hb?" COLLATE ".q($hb):""));}function
drop_databases($j){$J=apply_queries("DROP DATABASE",$j,'Adminer\idf_escape');restart_session();set_session("dbs",null);return$J;}function
rename_database($C,$hb){$J=false;if(create_database($C,$hb)){$T=array();$Zi=array();foreach(tables_list()as$R=>$U){if($U=='VIEW')$Zi[]=$R;else$T[]=$R;}$J=(!$T&&!$Zi)||move_tables($T,$Zi,$C);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$x){if(in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"],$x["columns"],true)){$Ca="";break;}if($x["type"]=="PRIMARY")$Ca=" UNIQUE";}}return" AUTO_INCREMENT$Ca";}function
alter_table($R,$C,$p,$cd,$nb,$sc,$hb,$Ba,$Wf){global$g;$c=array();foreach($p
as$o){if($o[1]){$l=$o[1][3];if(preg_match('~ GENERATED~',$l)){$o[1][3]=($g->maria?"":$o[1][2]);$o[1][2]=$l;}$c[]=($R!=""?($o[0]!=""?"CHANGE ".idf_escape($o[0]):"ADD"):" ")." ".implode($o[1]).($R!=""?$o[2]:"");}else$c[]="DROP ".idf_escape($o[0]);}$c=array_merge($c,$cd);$P=($nb!==null?" COMMENT=".q($nb):"").($sc?" ENGINE=".q($sc):"").($hb?" COLLATE ".q($hb):"").($Ba!=""?" AUTO_INCREMENT=$Ba":"");if($R=="")return
queries("CREATE TABLE ".table($C)." (\n".implode(",\n",$c)."\n)$P$Wf");if($R!=$C)$c[]="RENAME TO ".table($C);if($P)$c[]=ltrim($P);return($c||$Wf?queries("ALTER TABLE ".table($R)."\n".implode(",\n",$c).$Wf):true);}function
alter_indexes($R,$c){foreach($c
as$z=>$X)$c[$z]=($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(",",$c));}function
truncate_tables($T){return
apply_queries("TRUNCATE TABLE",$T);}function
drop_views($Zi){return
queries("DROP VIEW ".implode(", ",array_map('Adminer\table',$Zi)));}function
drop_tables($T){return
queries("DROP TABLE ".implode(", ",array_map('Adminer\table',$T)));}function
move_tables($T,$Zi,$Wh){global$g;$Hg=array();foreach($T
as$R)$Hg[]=table($R)." TO ".idf_escape($Wh).".".table($R);if(!$Hg||queries("RENAME TABLE ".implode(", ",$Hg))){$Rb=array();foreach($Zi
as$R)$Rb[table($R)]=view($R);$g->select_db($Wh);$k=idf_escape(DB);foreach($Rb
as$C=>$Yi){if(!queries("CREATE VIEW $C AS ".str_replace(" $k."," ",$Yi["select"]))||!queries("DROP VIEW $k.$C"))return
false;}return
true;}return
false;}function
copy_tables($T,$Zi,$Wh){queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");foreach($T
as$R){$C=($Wh==DB?table("copy_$R"):idf_escape($Wh).".".table($R));if(($_POST["overwrite"]&&!queries("\nDROP TABLE IF EXISTS $C"))||!queries("CREATE TABLE $C LIKE ".table($R))||!queries("INSERT INTO $C SELECT * FROM ".table($R)))return
false;foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$K){$vi=$K["Trigger"];if(!queries("CREATE TRIGGER ".($Wh==DB?idf_escape("copy_$vi"):idf_escape($Wh).".".idf_escape($vi))." $K[Timing] $K[Event] ON $C FOR EACH ROW\n$K[Statement];"))return
false;}}foreach($Zi
as$R){$C=($Wh==DB?table("copy_$R"):idf_escape($Wh).".".table($R));$Yi=view($R);if(($_POST["overwrite"]&&!queries("DROP VIEW IF EXISTS $C"))||!queries("CREATE VIEW $C AS $Yi[select]"))return
false;}return
true;}function
trigger($C){if($C=="")return
array();$L=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($C));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($C,$U){global$m;$ua=array("bool","boolean","integer","double precision","real","dec","numeric","fixed","national char","national varchar");$vh="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$uc=$m->enumLength;$_i="((".implode("|",array_merge(array_keys($m->types()),$ua)).")\\b(?:\\s*\\(((?:[^'\")]|$uc)++)\\))?"."\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?)(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s,]+)['\"]?)?";$ag="$vh*(".($U=="FUNCTION"?"":$m->inout).")?\\s*(?:`((?:[^`]|``)*)`\\s*|\\b(\\S+)\\s+)$_i";$i=get_val("SHOW CREATE $U ".idf_escape($C),2);preg_match("~\\(((?:$ag\\s*,?)*)\\)\\s*".($U=="FUNCTION"?"RETURNS\\s+$_i\\s+":"")."(.*)~is",$i,$B);$p=array();preg_match_all("~$ag\\s*,?~is",$B[1],$De,PREG_SET_ORDER);foreach($De
as$Qf)$p[]=array("field"=>str_replace("``","`",$Qf[2]).$Qf[3],"type"=>strtolower($Qf[5]),"length"=>preg_replace_callback("~$uc~s",'Adminer\normalize_enum',$Qf[6]),"unsigned"=>strtolower(preg_replace('~\s+~',' ',trim("$Qf[8] $Qf[7]"))),"null"=>1,"full_type"=>$Qf[4],"inout"=>strtoupper($Qf[1]),"collation"=>strtolower($Qf[9]),);return
array("fields"=>$p,"comment"=>get_val("SELECT ROUTINE_COMMENT FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = DATABASE() AND ROUTINE_NAME = ".q($C)),)+($U!="FUNCTION"?array("definition"=>$B[11]):array("returns"=>array("type"=>$B[12],"length"=>$B[13],"unsigned"=>$B[15],"collation"=>$B[16]),"definition"=>$B[17],"language"=>"SQL",));}function
routines(){return
get_rows("SELECT ROUTINE_NAME AS SPECIFIC_NAME, ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = DATABASE()");}function
routine_languages(){return
array();}function
routine_id($C,$K){return
idf_escape($C);}function
last_id(){return
get_val("SELECT LAST_INSERT_ID()");}function
explain($g,$H){return$g->query("EXPLAIN ".(min_version(5.1)&&!min_version(5.7)?"PARTITIONS ":"").$H);}function
found_rows($S,$Z){return($Z||$S["Engine"]!="InnoDB"?null:$S["Rows"]);}function
create_sql($R,$Ba,$Gh){$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($Kb){return"USE ".idf_escape($Kb);}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_key_vals("SHOW VARIABLES");}function
process_list(){return
get_rows("SHOW FULL PROCESSLIST");}function
show_status(){return
get_key_vals("SHOW STATUS");}function
convert_field($o){if(preg_match("~binary~",$o["type"]))return"HEX(".idf_escape($o["field"]).")";if($o["type"]=="bit")return"BIN(".idf_escape($o["field"])." + 0)";if(preg_match("~geometry|point|linestring|polygon~",$o["type"]))return(min_version(8)?"ST_":"")."AsWKT(".idf_escape($o["field"]).")";}function
unconvert_field($o,$J){if(preg_match("~binary~",$o["type"]))$J="UNHEX($J)";if($o["type"]=="bit")$J="CONVERT(b$J, UNSIGNED)";if(preg_match("~geometry|point|linestring|polygon~",$o["type"])){$kg=(min_version(8)?"ST_":"");$J=$kg."GeomFromText($J, $kg"."SRID($o[field]))";}return$J;}function
support($Pc){return!preg_match("~scheme|sequence|type|view_trigger|materializedview".(min_version(8)?"":"|descidx".(min_version(5.1)?"":"|event|partitioning")).(min_version('8.0.16','10.2.1')?"":"|check")."~",$Pc);}function
kill_process($X){return
queries("KILL ".number($X));}function
connection_id(){return"SELECT CONNECTION_ID()";}function
max_connections(){return
get_val("SELECT @@max_connections");}}define('Adminer\JUSH',Driver::$de);define('Adminer\SERVER',$_GET[DRIVER]);define('Adminer\DB',$_GET["db"]);define('Adminer\ME',preg_replace('~\?.*~','',relative_uri()).'?'.(sid()?SID.'&':'').(SERVER!==null?DRIVER."=".urlencode(SERVER).'&':'').(isset($_GET["username"])?"username=".urlencode($_GET["username"]).'&':'').(DB!=""?'db='.urlencode(DB).'&'.(isset($_GET["ns"])?"ns=".urlencode($_GET["ns"])."&":""):''));if(!ob_get_level())ob_start(null,4096);function
page_header($gi,$n="",$Na=array(),$hi=""){global$ca,$ia,$b,$bc;page_headers();if(is_ajax()&&$n){page_messages($n);exit;}$ii=$gi.($hi!=""?": $hi":"");$ji=strip_tags($ii.(SERVER!=""&&SERVER!="localhost"?h(" - ".SERVER):"")." - ".$b->name());echo'<!DOCTYPE html>
<html lang="',$ca,'" dir="',lang(79),'">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="robots" content="noindex">
<meta name="viewport" content="width=device-width">
<title>',$ji,'</title>
<link rel="stylesheet" href="',h(preg_replace("~\\?.*~","",ME)."?file=default.css&version=5.0.6"),'">
';$Eb=$b->css();$Hb=(count($Eb)==1?!!preg_match('~-dark~',$Eb[0]):null);if($Hb!==false)echo"<link rel='stylesheet'".($Hb?"":" media='(prefers-color-scheme: dark)'")." href='".h(preg_replace("~\\?.*~","",ME)."?file=dark.css&version=5.0.6")."'>\n";echo"<meta name='color-scheme' content='".($Hb===null?"light dark":($Hb?"dark":"light"))."'>\n",script_src(preg_replace("~\\?.*~","",ME)."?file=functions.js&version=5.0.6");if($b->head($Hb))echo"<link rel='shortcut icon' type='image/x-icon' href='".h(preg_replace("~\\?.*~","",ME)."?file=favicon.ico&version=5.0.6")."'>\n","<link rel='apple-touch-icon' href='".h(preg_replace("~\\?.*~","",ME)."?file=favicon.ico&version=5.0.6")."'>\n";foreach($Eb
as$X)echo"<link rel='stylesheet'".(preg_match('~-dark~',$X)&&!$Hb?" media='(prefers-color-scheme: dark)'":"")." href='".h($X)."'>\n";echo"\n<body class='".lang(79)." nojs'>\n";$q=get_temp_dir()."/adminer.version";if(!$_COOKIE["adminer_version"]&&function_exists('openssl_verify')&&file_exists($q)&&filemtime($q)+86400>time()){$Xi=unserialize(file_get_contents($q));$tg="-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwqWOVuF5uw7/+Z70djoK
RlHIZFZPO0uYRezq90+7Amk+FDNd7KkL5eDve+vHRJBLAszF/7XKXe11xwliIsFs
DFWQlsABVZB3oisKCBEuI71J4kPH8dKGEWR9jDHFw3cWmoH3PmqImX6FISWbG3B8
h7FIx3jEaw5ckVPVTeo5JRm/1DZzJxjyDenXvBQ/6o9DgZKeNDgxwKzH+sw9/YCO
jHnq1cFpOIISzARlrHMa/43YfeNRAm/tsBXjSxembBPo7aQZLAWHmaj5+K19H10B
nCpz9Y++cipkVEiKRGih4ZEvjoFysEOdRLj6WiD/uUNky4xGeA6LaJqh5XpkFkcQ
fQIDAQAB
-----END PUBLIC KEY-----
";if(openssl_verify($Xi["version"],base64_decode($Xi["signature"]),$tg)==1)$_COOKIE["adminer_version"]=$Xi["version"];}echo
script("mixin(document.body, {onkeydown: bodyKeydown, onclick: bodyClick".(isset($_COOKIE["adminer_version"])?"":", onload: partial(verifyVersion, '$ia', '".js_escape(ME)."', '".get_token()."')")."});
document.body.className = document.body.className.replace(/ nojs/, ' js');
var offlineMessage = '".js_escape(lang(80))."';
var thousandsSeparator = '".js_escape(lang(4))."';"),"<div id='help' class='jush-".JUSH." jsonly hidden'></div>\n",script("mixin(qs('#help'), {onmouseover: function () { helpOpen = 1; }, onmouseout: helpMouseout});"),"<div id='content'>\n";if($Na!==null){$A=substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1);echo'<p id="breadcrumb"><a href="'.h($A?:".").'">'.$bc[DRIVER].'</a> » ';$A=substr(preg_replace('~\b(db|ns)=[^&]*&~','',ME),0,-1);$N=$b->serverName(SERVER);$N=($N!=""?$N:lang(33));if($Na===false)echo"$N\n";else{echo"<a href='".h($A)."' accesskey='1' title='Alt+Shift+1'>$N</a> » ";if($_GET["ns"]!=""||(DB!=""&&is_array($Na)))echo'<a href="'.h($A."&db=".urlencode(DB).(support("scheme")?"&ns=":"")).'">'.h(DB).'</a> » ';if(is_array($Na)){if($_GET["ns"]!="")echo'<a href="'.h(substr(ME,0,-1)).'">'.h($_GET["ns"]).'</a> » ';foreach($Na
as$z=>$X){$Tb=(is_array($X)?$X[1]:h($X));if($Tb!="")echo"<a href='".h(ME."$z=").urlencode(is_array($X)?$X[0]:$X)."'>$Tb</a> » ";}}echo"$gi\n";}}echo"<h2>$ii</h2>\n","<div id='ajaxstatus' class='jsonly hidden'></div>\n";restart_session();page_messages($n);$j=&get_session("dbs");if(DB!=""&&$j&&!in_array(DB,$j,true))$j=null;stop_session();define('Adminer\PAGE_HEADER',1);}function
page_headers(){global$b;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($b->csp()as$Db){$zd=array();foreach($Db
as$z=>$X)$zd[]="$z $X";header("Content-Security-Policy: ".implode("; ",$zd));}$b->headers();}function
csp(){return
array(array("script-src"=>"'self' 'unsafe-inline' 'nonce-".get_nonce()."' 'strict-dynamic'","connect-src"=>"'self'","frame-src"=>"https://www.adminer.org","object-src"=>"'none'","base-uri"=>"'none'","form-action"=>"'self'",),);}function
get_nonce(){static$df;if(!$df)$df=base64_encode(rand_string());return$df;}function
page_messages($n){$Ki=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$Qe=$_SESSION["messages"][$Ki];if($Qe){echo"<div class='message'>".implode("</div>\n<div class='message'>",$Qe)."</div>".script("messagesPrint();");unset($_SESSION["messages"][$Ki]);}if($n)echo"<div class='error'>$n</div>\n";}function
page_footer($Se=""){global$b,$mi;echo'</div>

<div id="menu">
';$b->navigation($Se);echo'</div>

';if($Se!="auth")echo'<form action="" method="post">
<p class="logout">
<span>',h($_GET["username"])."\n",'</span>
<input type="submit" name="logout" value="',lang(81),'" id="logout">
<input type="hidden" name="token" value="',$mi,'">
</p>
</form>
';echo
script("setupSubmitHighlight(document);");}function
int32($We){while($We>=2147483648)$We-=4294967296;while($We<=-2147483649)$We+=4294967296;return(int)$We;}function
long2str($W,$bj){$Tg='';foreach($W
as$X)$Tg.=pack('V',$X);if($bj)return
substr($Tg,0,end($W));return$Tg;}function
str2long($Tg,$bj){$W=array_values(unpack('V*',str_pad($Tg,4*ceil(strlen($Tg)/4),"\0")));if($bj)$W[]=strlen($Tg);return$W;}function
xxtea_mx($ij,$hj,$Jh,$ee){return
int32((($ij>>5&0x7FFFFFF)^$hj<<2)+(($hj>>3&0x1FFFFFFF)^$ij<<4))^int32(($Jh^$hj)+($ee^$ij));}function
encrypt_string($Eh,$z){if($Eh=="")return"";$z=array_values(unpack("V*",pack("H*",md5($z))));$W=str2long($Eh,true);$We=count($W)-1;$ij=$W[$We];$hj=$W[0];$ug=floor(6+52/($We+1));$Jh=0;while($ug-->0){$Jh=int32($Jh+0x9E3779B9);$jc=$Jh>>2&3;for($Of=0;$Of<$We;$Of++){$hj=$W[$Of+1];$Ve=xxtea_mx($ij,$hj,$Jh,$z[$Of&3^$jc]);$ij=int32($W[$Of]+$Ve);$W[$Of]=$ij;}$hj=$W[0];$Ve=xxtea_mx($ij,$hj,$Jh,$z[$Of&3^$jc]);$ij=int32($W[$We]+$Ve);$W[$We]=$ij;}return
long2str($W,false);}function
decrypt_string($Eh,$z){if($Eh=="")return"";if(!$z)return
false;$z=array_values(unpack("V*",pack("H*",md5($z))));$W=str2long($Eh,false);$We=count($W)-1;$ij=$W[$We];$hj=$W[0];$ug=floor(6+52/($We+1));$Jh=int32($ug*0x9E3779B9);while($Jh){$jc=$Jh>>2&3;for($Of=$We;$Of>0;$Of--){$ij=$W[$Of-1];$Ve=xxtea_mx($ij,$hj,$Jh,$z[$Of&3^$jc]);$hj=int32($W[$Of]-$Ve);$W[$Of]=$hj;}$ij=$W[$We];$Ve=xxtea_mx($ij,$hj,$Jh,$z[$Of&3^$jc]);$hj=int32($W[0]-$Ve);$W[0]=$hj;$Jh=int32($Jh-0x9E3779B9);}return
long2str($W,true);}$g='';$yd=$_SESSION["token"];if(!$yd)$_SESSION["token"]=rand(1,1e6);$mi=get_token();$cg=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$X){list($z)=explode(":",$X);$cg[$z]=$X;}}function
add_invalid_login(){global$b;$Ha=get_temp_dir()."/adminer.invalid";foreach(glob("$Ha*")?:array($Ha)as$q){$s=file_open_lock($q);if($s)break;}if(!$s)$s=file_open_lock("$Ha-".rand_string());if(!$s)return;$Wd=unserialize(stream_get_contents($s));$di=time();if($Wd){foreach($Wd
as$Xd=>$X){if($X[0]<$di)unset($Wd[$Xd]);}}$Vd=&$Wd[$b->bruteForceKey()];if(!$Vd)$Vd=array($di+30*60,0);$Vd[1]++;file_write_unlock($s,serialize($Wd));}function
check_invalid_login(){global$b;$Wd=array();foreach(glob(get_temp_dir()."/adminer.invalid*")as$q){$s=file_open_lock($q);if($s){$Wd=unserialize(stream_get_contents($s));file_unlock($s);break;}}$Vd=($Wd?$Wd[$b->bruteForceKey()]:array());$cf=($Vd[1]>29?$Vd[0]-time():0);if($cf>0)auth_error(lang(82,ceil($cf/60)));}$Aa=$_POST["auth"];if($Aa){session_regenerate_id();$Wi=$Aa["driver"];$N=$Aa["server"];$V=$Aa["username"];$F=(string)$Aa["password"];$k=$Aa["db"];set_password($Wi,$N,$V,$F);$_SESSION["db"][$Wi][$N][$V][$k]=true;if($Aa["permanent"]){$z=implode("-",array_map('base64_encode',array($Wi,$N,$V,$k)));$og=$b->permanentLogin(true);$cg[$z]="$z:".base64_encode($og?encrypt_string($F,$og):"");cookie("adminer_permanent",implode(" ",$cg));}if(count($_POST)==1||DRIVER!=$Wi||SERVER!=$N||$_GET["username"]!==$V||DB!=$k)redirect(auth_url($Wi,$N,$V,$k));}elseif($_POST["logout"]&&(!$yd||verify_token())){foreach(array("pwds","db","dbs","queries")as$z)set_session($z,null);unset_permanent();redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1),lang(83).' '.lang(84));}elseif($cg&&!$_SESSION["pwds"]){session_regenerate_id();$og=$b->permanentLogin();foreach($cg
as$z=>$X){list(,$bb)=explode(":",$X);list($Wi,$N,$V,$k)=array_map('base64_decode',explode("-",$z));set_password($Wi,$N,$V,decrypt_string(base64_decode($bb),$og));$_SESSION["db"][$Wi][$N][$V][$k]=true;}}function
unset_permanent(){global$cg;foreach($cg
as$z=>$X){list($Wi,$N,$V,$k)=array_map('base64_decode',explode("-",$z));if($Wi==DRIVER&&$N==SERVER&&$V==$_GET["username"]&&$k==DB)unset($cg[$z]);}cookie("adminer_permanent",implode(" ",$cg));}function
auth_error($n){global$b,$yd;$lh=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$lh]||$_GET[$lh])&&!$yd)$n=lang(85);else{restart_session();add_invalid_login();$F=get_password();if($F!==null){if($F===false)$n.=($n?'<br>':'').lang(86,target_blank(),'<code>permanentLogin()</code>');set_password(DRIVER,SERVER,$_GET["username"],null);}unset_permanent();}}if(!$_COOKIE[$lh]&&$_GET[$lh]&&ini_bool("session.use_only_cookies"))$n=lang(87);$Rf=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?:rand_string()),$Rf["lifetime"]);page_header(lang(37),$n,null);echo"<form action='' method='post'>\n","<div>";if(hidden_fields($_POST,array("auth")))echo"<p class='message'>".lang(88)."\n";echo"</div>\n";$b->loginForm();echo"</form>\n";page_footer("auth");exit;}if(isset($_GET["username"])&&!class_exists('Adminer\Db')){unset($_SESSION["pwds"][DRIVER]);unset_permanent();page_header(lang(89),lang(90,implode(", ",Driver::$ig)),false);page_footer("auth");exit;}stop_session(true);if(isset($_GET["username"])&&is_string(get_password())){list($Cd,$eg)=explode(":",SERVER,2);if(preg_match('~^\s*([-+]?\d+)~',$eg,$B)&&($B[1]<1024||$B[1]>65535))auth_error(lang(91));check_invalid_login();$g=connect($b->credentials());if(is_object($g)){$m=new
Driver($g);if($b->operators===null)$b->operators=$m->operators;if(isset($g->maria)||$g->cockroach)save_settings(array("vendor-".SERVER=>$bc[DRIVER]));}}$ye=null;if(!is_object($g)||($ye=$b->login($_GET["username"],get_password()))!==true){$n=(is_string($g)?nl_br(h($g)):(is_string($ye)?$ye:lang(92)));auth_error($n.(preg_match('~^ | $~',get_password())?'<br>'.lang(93):''));}if($_POST["logout"]&&$yd&&!verify_token()){page_header(lang(81),lang(94));page_footer("db");exit;}if($Aa&&$_POST["token"])$_POST["token"]=$mi;$n='';if($_POST){if(!verify_token()){$Qd="max_input_vars";$Je=ini_get($Qd);if(extension_loaded("suhosin")){foreach(array("suhosin.request.max_vars","suhosin.post.max_vars")as$z){$X=ini_get($z);if($X&&(!$Je||$X<$Je)){$Qd=$z;$Je=$X;}}}$n=(!$_POST["token"]&&$Je?lang(95,"'$Qd'"):lang(94).' '.lang(96));}}elseif($_SERVER["REQUEST_METHOD"]=="POST"){$n=lang(97,"'post_max_size'");if(isset($_GET["sql"]))$n.=' '.lang(98);}function
select($I,$h=null,$Df=array(),$_=0){$we=array();$y=array();$e=array();$La=array();$Ai=array();$J=array();for($u=0;(!$_||$u<$_)&&($K=$I->fetch_row());$u++){if(!$u){echo"<div class='scrollable'>\n","<table class='nowrap odds'>\n","<thead><tr>";for($ce=0;$ce<count($K);$ce++){$o=$I->fetch_field();$C=$o->name;$Cf=$o->orgtable;$Bf=$o->orgname;$J[$o->table]=$Cf;if($Df&&JUSH=="sql")$we[$ce]=($C=="table"?"table=":($C=="possible_keys"?"indexes=":null));elseif($Cf!=""){if(!isset($y[$Cf])){$y[$Cf]=array();foreach(indexes($Cf,$h)as$x){if($x["type"]=="PRIMARY"){$y[$Cf]=array_flip($x["columns"]);break;}}$e[$Cf]=$y[$Cf];}if(isset($e[$Cf][$Bf])){unset($e[$Cf][$Bf]);$y[$Cf][$Bf]=$ce;$we[$ce]=$Cf;}}if($o->charsetnr==63)$La[$ce]=true;$Ai[$ce]=$o->type;echo"<th".($Cf!=""||$o->name!=$Bf?" title='".h(($Cf!=""?"$Cf.":"").$Bf)."'":"").">".h($C).($Df?doc_link(array('sql'=>"explain-output.html#explain_".strtolower($C),'mariadb'=>"explain/#the-columns-in-explain-select",)):"");}echo"</thead>\n";}echo"<tr>";foreach($K
as$z=>$X){$A="";if(isset($we[$z])&&!$e[$we[$z]]){if($Df&&JUSH=="sql"){$R=$K[array_search("table=",$we)];$A=ME.$we[$z].urlencode($Df[$R]!=""?$Df[$R]:$R);}else{$A=ME."edit=".urlencode($we[$z]);foreach($y[$we[$z]]as$fb=>$ce)$A.="&where".urlencode("[".bracket_escape($fb)."]")."=".urlencode($K[$ce]);}}elseif(is_url($X))$A=$X;if($X===null)$X="<i>NULL</i>";elseif($La[$z]&&!is_utf8($X))$X="<i>".lang(46,strlen($X))."</i>";else{$X=h($X);if($Ai[$z]==254)$X="<code>$X</code>";}if($A)$X="<a href='".h($A)."'".(is_url($A)?target_blank():'').">$X</a>";echo"<td".($Ai[$z]<=9||$Ai[$z]==246?" class='number'":"").">$X";}}echo($u?"</table>\n</div>":"<p class='message'>".lang(12))."\n";return$J;}function
referencable_primary($dh){$J=array();foreach(table_status('',true)as$Oh=>$R){if($Oh!=$dh&&fk_support($R)){foreach(fields($Oh)as$o){if($o["primary"]){if($J[$Oh]){unset($J[$Oh]);break;}$J[$Oh]=$o;}}}}return$J;}function
textarea($C,$Y,$L=10,$jb=80){echo"<textarea name='".h($C)."' rows='$L' cols='$jb' 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,$yf,$Y="",$sf="",$dg=""){$Vh=($yf?"select":"input");return"<$Vh$_a".($yf?"><option value=''>$dg".optionlist($yf,$Y,true)."</select>":" size='10' value='".h($Y)."' placeholder='$dg'>").($sf?script("qsl('$Vh').onchange = $sf;",""):"");}function
json_row($z,$X=null){static$Vc=true;if($Vc)echo"{";if($z!=""){echo($Vc?"":",")."\n\t\"".addcslashes($z,"\r\n\t\"\\/").'": '.($X!==null?'"'.addcslashes($X,"\r\n\"\\/").'"':'null');$Vc=false;}else{echo"\n}\n";$Vc=true;}}function
edit_type($z,$o,$ib,$ed=array(),$Mc=array()){global$m;$U=$o["type"];echo"<td><select name='".h($z)."[type]' class='type' aria-labelledby='label-type'>";if($U&&!array_key_exists($U,$m->types())&&!isset($ed[$U])&&!in_array($U,$Mc))$Mc[]=$U;$Fh=$m->structuredTypes();if($ed)$Fh[lang(99)]=$ed;echo
optionlist(array_merge($Mc,$Fh),$U),"</select><td>","<input name='".h($z)."[length]' value='".h($o["length"])."' size='3'".(!$o["length"]&&preg_match('~var(char|binary)$~',$U)?" class='required'":"")." aria-labelledby='label-length'>","<td class='options'>",($ib?"<input list='collations' name='".h($z)."[collation]'".(preg_match('~(char|text|enum|set)$~',$U)?"":" class='hidden'")." value='".h($o["collation"])."' placeholder='(".lang(100).")'>":''),($m->unsigned?"<select name='".h($z)."[unsigned]'".(!$U||preg_match(number_type(),$U)?"":" class='hidden'").'><option>'.optionlist($m->unsigned,$o["unsigned"]).'</select>':''),(isset($o['on_update'])?"<select name='".h($z)."[on_update]'".(preg_match('~timestamp|datetime~',$U)?"":" class='hidden'").'>'.optionlist(array(""=>"(".lang(101).")","CURRENT_TIMESTAMP"),(preg_match('~^CURRENT_TIMESTAMP~i',$o["on_update"])?"CURRENT_TIMESTAMP":$o["on_update"])).'</select>':''),($ed?"<select name='".h($z)."[on_delete]'".(preg_match("~`~",$U)?"":" class='hidden'")."><option value=''>(".lang(102).")".optionlist(explode("|",$m->onActions),$o["on_delete"])."</select> ":" ");}function
get_partitions_info($R){global$g;$id="FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = ".q(DB)." AND TABLE_NAME = ".q($R);$I=$g->query("SELECT PARTITION_METHOD, PARTITION_EXPRESSION, PARTITION_ORDINAL_POSITION $id ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1");$J=array();list($J["partition_by"],$J["partition"],$J["partitions"])=$I->fetch_row();$Xf=get_key_vals("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $id AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION");$J["partition_names"]=array_keys($Xf);$J["partition_values"]=array_values($Xf);return$J;}function
process_length($te){global$m;$wc=$m->enumLength;return(preg_match("~^\\s*\\(?\\s*$wc(?:\\s*,\\s*$wc)*+\\s*\\)?\\s*\$~",$te)&&preg_match_all("~$wc~",$te,$De)?"(".implode(",",$De[0]).")":preg_replace('~^[0-9].*~','(\0)',preg_replace('~[^-0-9,+()[\]]~','',$te)));}function
process_type($o,$gb="COLLATE"){global$m;return" $o[type]".process_length($o["length"]).(preg_match(number_type(),$o["type"])&&in_array($o["unsigned"],$m->unsigned)?" $o[unsigned]":"").(preg_match('~char|text|enum|set~',$o["type"])&&$o["collation"]?" $gb ".(JUSH=="mssql"?$o["collation"]:q($o["collation"])):"");}function
process_field($o,$zi){if($o["on_update"])$o["on_update"]=str_ireplace("current_timestamp()","CURRENT_TIMESTAMP",$o["on_update"]);return
array(idf_escape(trim($o["field"])),process_type($zi),($o["null"]?" NULL":" NOT NULL"),default_value($o),(preg_match('~timestamp|datetime~',$o["type"])&&$o["on_update"]?" ON UPDATE $o[on_update]":""),(support("comment")&&$o["comment"]!=""?" COMMENT ".q($o["comment"]):""),($o["auto_increment"]?auto_increment():null),);}function
default_value($o){global$m;$l=$o["default"];$ld=$o["generated"];return($l===null?"":(in_array($ld,$m->generated)?(JUSH=="mssql"?" AS ($l)".($ld=="VIRTUAL"?"":" $ld")."":" GENERATED ALWAYS AS ($l) $ld"):" DEFAULT ".(!preg_match('~^GENERATED ~i',$l)&&(preg_match('~char|binary|text|json|enum|set~',$o["type"])||preg_match('~^(?![a-z])~i',$l))?(JUSH=="sql"&&preg_match('~text|json~',$o["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$z=>$X){if(preg_match("~$z|$X~",$U))return" class='$z'";}}function
edit_fields($p,$ib,$U="TABLE",$ed=array()){global$m;$p=array_values($p);$Pb=(($_POST?$_POST["defaults"]:get_setting("defaults"))?"":" class='hidden'");$ob=(($_POST?$_POST["comments"]:get_setting("comments"))?"":" class='hidden'");echo'<thead><tr>
',($U=="PROCEDURE"?"<td>":""),'<th id="label-name">',($U=="TABLE"?lang(103):lang(104)),'<td id="label-type">',lang(48),'<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(105),'<td>',lang(106);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(50)."'>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'$Pb>".lang(51),(support("comment")?"<td id='label-comment'$ob>".lang(49):"");echo"<td><input type='image' class='icon' name='add[".(support("move_col")?0:count($p))."]' src='".h(preg_replace("~\\?.*~","",ME)."?file=plus.gif&version=5.0.6")."' alt='+' title='".lang(107)."'>".script("row_count = ".count($p).";"),"</thead>\n<tbody>\n",script("mixin(qsl('tbody'), {onclick: editingClick, onkeydown: editingKeydown, oninput: editingInput});");foreach($p
as$u=>$o){$u++;$Ef=$o[($_POST?"orig":"field")];$Yb=(isset($_POST["add"][$u-1])||(isset($o["field"])&&!$_POST["drop_col"][$u]))&&(support("drop_col")||$Ef=="");echo"<tr".($Yb?"":" style='display: none;'").">\n",($U=="PROCEDURE"?"<td>".html_select("fields[$u][inout]",explode("|",$m->inout),$o["inout"]):"")."<th>";if($Yb)echo"<input name='fields[$u][field]' value='".h($o["field"])."' data-maxlength='64' autocapitalize='off' aria-labelledby='label-name'>\n";echo"<input type='hidden' name='fields[$u][orig]' value='".h($Ef)."'>";edit_type("fields[$u]",$o,$ib,$ed);if($U=="TABLE")echo"<td>".checkbox("fields[$u][null]",1,$o["null"],"","","block","label-null"),"<td><label class='block'><input type='radio' name='auto_increment_col' value='$u'".($o["auto_increment"]?" checked":"")." aria-labelledby='label-ai'></label>","<td$Pb>".($m->generated?html_select("fields[$u][generated]",array_merge(array("","DEFAULT"),$m->generated),$o["generated"])." ":checkbox("fields[$u][generated]",1,$o["generated"],"","","","label-default")),"<input name='fields[$u][default]' value='".h($o["default"])."' aria-labelledby='label-default'>",(support("comment")?"<td$ob><input name='fields[$u][comment]' value='".h($o["comment"])."' data-maxlength='".(min_version(5.5)?1024:255)."' aria-labelledby='label-comment'>":"");echo"<td>",(support("move_col")?"<input type='image' class='icon' name='add[$u]' src='".h(preg_replace("~\\?.*~","",ME)."?file=plus.gif&version=5.0.6")."' alt='+' title='".lang(107)."'> "."<input type='image' class='icon' name='up[$u]' src='".h(preg_replace("~\\?.*~","",ME)."?file=up.gif&version=5.0.6")."' alt='↑' title='".lang(108)."'> "."<input type='image' class='icon' name='down[$u]' src='".h(preg_replace("~\\?.*~","",ME)."?file=down.gif&version=5.0.6")."' alt='↓' title='".lang(109)."'> ":""),($Ef==""||support("drop_col")?"<input type='image' class='icon' name='drop_col[$u]' src='".h(preg_replace("~\\?.*~","",ME)."?file=cross.gif&version=5.0.6")."' alt='x' title='".lang(110)."'>":"");}}function
process_fields(&$p){$D=0;if($_POST["up"]){$ne=0;foreach($p
as$z=>$o){if(key($_POST["up"])==$z){unset($p[$z]);array_splice($p,$ne,0,array($o));break;}if(isset($o["field"]))$ne=$D;$D++;}}elseif($_POST["down"]){$gd=false;foreach($p
as$z=>$o){if(isset($o["field"])&&$gd){unset($p[key($_POST["down"])]);array_splice($p,$D,0,array($gd));break;}if(key($_POST["down"])==$z)$gd=$o;$D++;}}elseif($_POST["add"]){$p=array_values($p);array_splice($p,key($_POST["add"]),0,array(array()));}elseif(!$_POST["drop_col"])return
false;return
true;}function
normalize_enum($B){return"'".str_replace("'","''",addcslashes(stripcslashes(str_replace($B[0][0].$B[0][0],$B[0][0],substr($B[0],1,-1))),'\\'))."'";}function
grant($nd,$qg,$e,$pf){if(!$qg)return
true;if($qg==array("ALL PRIVILEGES","GRANT OPTION"))return($nd=="GRANT"?queries("$nd ALL PRIVILEGES$pf WITH GRANT OPTION"):queries("$nd ALL PRIVILEGES$pf")&&queries("$nd GRANT OPTION$pf"));return
queries("$nd ".preg_replace('~(GRANT OPTION)\([^)]*\)~','\1',implode("$e, ",$qg).$e).$pf);}function
drop_create($cc,$i,$ec,$Zh,$gc,$xe,$Pe,$Ne,$Oe,$mf,$af){if($_POST["drop"])query_redirect($cc,$xe,$Pe);elseif($mf=="")query_redirect($i,$xe,$Oe);elseif($mf!=$af){$Bb=queries($i);queries_redirect($xe,$Ne,$Bb&&queries($cc));if($Bb)queries($ec);}else
queries_redirect($xe,$Ne,queries($Zh)&&queries($gc)&&queries($cc)&&queries($i));}function
create_trigger($pf,$K){$fi=" $K[Timing] $K[Event]".(preg_match('~ OF~',$K["Event"])?" $K[Of]":"");return"CREATE TRIGGER ".idf_escape($K["Trigger"]).(JUSH=="mssql"?$pf.$fi:$fi.$pf).rtrim(" $K[Type]\n$K[Statement]",";").";";}function
create_routine($Pg,$K){global$m;$O=array();$p=(array)$K["fields"];ksort($p);foreach($p
as$o){if($o["field"]!="")$O[]=(preg_match("~^($m->inout)\$~",$o["inout"])?"$o[inout] ":"").idf_escape($o["field"]).process_type($o,"CHARACTER SET");}$Qb=rtrim($K["definition"],";");return"CREATE $Pg ".idf_escape(trim($K["name"]))." (".implode(", ",$O).")".($Pg=="FUNCTION"?" RETURNS".process_type($K["returns"],"CHARACTER SET"):"").($K["language"]?" LANGUAGE $K[language]":"").(JUSH=="pgsql"?" AS ".q($Qb):"\n$Qb;");}function
remove_definer($H){return
preg_replace('~^([A-Z =]+) DEFINER=`'.preg_replace('~@(.*)~','`@`(%|\1)',logged_user()).'`~','\1',$H);}function
format_foreign_key($r){global$m;$k=$r["db"];$ef=$r["ns"];return" FOREIGN KEY (".implode(", ",array_map('Adminer\idf_escape',$r["source"])).") REFERENCES ".($k!=""&&$k!=$_GET["db"]?idf_escape($k).".":"").($ef!=""&&$ef!=$_GET["ns"]?idf_escape($ef).".":"").idf_escape($r["table"])." (".implode(", ",array_map('Adminer\idf_escape',$r["target"])).")".(preg_match("~^($m->onActions)\$~",$r["on_delete"])?" ON DELETE $r[on_delete]":"").(preg_match("~^($m->onActions)\$~",$r["on_update"])?" ON UPDATE $r[on_update]":"");}function
tar_file($q,$ki){$J=pack("a100a8a8a8a12a12",$q,644,0,0,decoct($ki->size),decoct(time()));$ab=8*32;for($u=0;$u<strlen($J);$u++)$ab+=ord($J[$u]);$J.=sprintf("%06o",$ab)."\0 ";echo$J,str_repeat("\0",512-strlen($J));$ki->send();echo
str_repeat("\0",511-($ki->size+511)%512);}function
ini_bytes($Qd){$X=ini_get($Qd);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
doc_link($Zf,$ai="<sup>?</sup>"){global$g;$jh=$g->server_info;$Xi=preg_replace('~^(\d\.?\d).*~s','\1',$jh);$Mi=array('sql'=>"https://dev.mysql.com/doc/refman/$Xi/en/",'sqlite'=>"https://www.sqlite.org/",'pgsql'=>"https://www.postgresql.org/docs/$Xi/",'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',$jh)."&id=",);if($g->maria){$Mi['sql']="https://mariadb.com/kb/en/";$Zf['sql']=(isset($Zf['mariadb'])?$Zf['mariadb']:str_replace(".html","/",$Zf['sql']));}return($Zf[JUSH]?"<a href='".h($Mi[JUSH].$Zf[JUSH].(JUSH=='mssql'?"?view=sql-server-ver$Xi":""))."'".target_blank().">$ai</a>":"");}function
db_size($k){global$g;if(!$g->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){global$g;static$O=false;if(!$O&&preg_match('~\butf8mb4~i',$i)){$O=true;echo"SET NAMES ".charset($g).";\n\n";}}if(isset($_GET["status"]))$_GET["variables"]=$_GET["status"];if(isset($_GET["import"]))$_GET["sql"]=$_GET["import"];if(!(DB!=""?$g->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(36).": ".h(DB),lang(111),true);}else{if($_POST["db"]&&!$n)queries_redirect(substr(ME,0,-1),lang(112),drop_databases($_POST["db"]));page_header(lang(113),$n,false);echo"<p class='links'>\n";foreach(array('database'=>lang(114),'privileges'=>lang(70),'processlist'=>lang(115),'variables'=>lang(116),'status'=>lang(117),)as$z=>$X){if(support($z))echo"<a href='".h(ME)."$z='>$X</a>\n";}echo"<p>".lang(118,$bc[DRIVER],"<b>".h($g->server_info)."</b>","<b>$g->extension</b>")."\n","<p>".lang(119,"<b>".h(logged_user())."</b>")."\n";$j=$b->databases();if($j){$Xg=support("scheme");$ib=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(36).(get_session("dbs")!==null?" - <a href='".h(ME)."refresh=1'>".lang(120)."</a>":"")."<td>".lang(121)."<td>".lang(122)."<td>".lang(123)." - <a href='".h(ME)."dbsize=1'>".lang(124)."</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){$Og=h(ME)."db=".urlencode($k);$v=h("Db-".$k);echo"<tr>".(support("database")?"<td>".checkbox("db[]",$k,in_array($k,(array)$_POST["db"]),"","","",$v):""),"<th><a href='$Og' id='$v'>".h($k)."</a>";$hb=h(db_collation($k,$ib));echo"<td>".(support("database")?"<a href='$Og".($Xg?"&amp;ns=":"")."&amp;database=' title='".lang(66)."'>$hb</a>":$hb),"<td align='right'><a href='$Og&amp;schema=' id='tables-".h($k)."' title='".lang(69)."'>".($_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(125)." <span id='selected'></span></legend><div>\n"."<input type='hidden' name='all' value=''>".script("qsl('input').onclick = function () { selectCount('selected', formChecked(this, /^db/)); };")."<input type='submit' name='drop' value='".lang(126)."'>".confirm()."\n"."</div></fieldset>\n"."</div></div>\n":""),"<input type='hidden' name='token' value='$mi'>\n","</form>\n",script("tableCheck();");}}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(75).": ".h($_GET["ns"]),lang(127),true);page_footer("ns");exit;}}}class
TmpFile{private$handler,$size;function
__construct(){$this->handler=tmpfile();}function
write($wb){$this->size+=strlen($wb);fwrite($this->handler,$wb);}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"];$p=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=$m->select($a,$M,array(where($_GET,$p)),$M);$K=($I?$I->fetch_row():array());echo$m->value($K[0],$p[$_GET["field"]]);exit;}elseif(isset($_GET["table"])){$a=$_GET["table"];$p=fields($a);if(!$p)$n=error();$S=table_status1($a,true);$C=$b->tableName($S);page_header(($p&&is_view($S)?$S['Engine']=='materialized view'?lang(128):lang(129):lang(130)).": ".($C!=""?$C:h($a)),$n);$Ng=array();foreach($p
as$z=>$o)$Ng+=$o["privileges"];$b->selectLinks($S,(isset($Ng["insert"])||!support("table")?"":null));$nb=$S["Comment"];if($nb!="")echo"<p class='nowrap'>".lang(49).": ".h($nb)."\n";if($p)$b->tableStructurePrint($p);if(support("indexes")&&$m->supportsIndex($S)){echo"<h3 id='indexes'>".lang(131)."</h3>\n";$y=indexes($a);if($y)$b->tableIndexesPrint($y);echo'<p class="links"><a href="'.h(ME).'indexes='.urlencode($a).'">'.lang(132)."</a>\n";}if(!is_view($S)){if(fk_support($S)){echo"<h3 id='foreign-keys'>".lang(99)."</h3>\n";$ed=foreign_keys($a);if($ed){echo"<table>\n","<thead><tr><th>".lang(133)."<td>".lang(134)."<td>".lang(102)."<td>".lang(101)."<td></thead>\n";foreach($ed
as$C=>$r){echo"<tr title='".h($C)."'>","<th><i>".implode("</i>, <i>",array_map('Adminer\h',$r["source"]))."</i>";$A=($r["db"]!=""?preg_replace('~db=[^&]*~',"db=".urlencode($r["db"]),ME):($r["ns"]!=""?preg_replace('~ns=[^&]*~',"ns=".urlencode($r["ns"]),ME):ME));echo"<td><a href='".h($A."table=".urlencode($r["table"]))."'>".($r["db"]!=""&&$r["db"]!=DB?"<b>".h($r["db"])."</b>.":"").($r["ns"]!=""&&$r["ns"]!=$_GET["ns"]?"<b>".h($r["ns"])."</b>.":"").h($r["table"])."</a>","(<i>".implode("</i>, <i>",array_map('Adminer\h',$r["target"]))."</i>)","<td>".h($r["on_delete"]),"<td>".h($r["on_update"]),'<td><a href="'.h(ME.'foreign='.urlencode($a).'&name='.urlencode($C)).'">'.lang(135).'</a>',"\n";}echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'foreign='.urlencode($a).'">'.lang(136)."</a>\n";}if(support("check")){echo"<h3 id='checks'>".lang(137)."</h3>\n";$Wa=$m->checkConstraints($a);if($Wa){echo"<table>\n";foreach($Wa
as$z=>$X)echo"<tr title='".h($z)."'>","<td><code class='jush-".JUSH."'>".h($X),"<td><a href='".h(ME.'check='.urlencode($a).'&name='.urlencode($z))."'>".lang(135)."</a>","\n";echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'check='.urlencode($a).'">'.lang(138)."</a>\n";}}if(support(is_view($S)?"view_trigger":"trigger")){echo"<h3 id='triggers'>".lang(139)."</h3>\n";$yi=triggers($a);if($yi){echo"<table>\n";foreach($yi
as$z=>$X)echo"<tr valign='top'><td>".h($X[0])."<td>".h($X[1])."<th>".h($z)."<td><a href='".h(ME.'trigger='.urlencode($a).'&name='.urlencode($z))."'>".lang(135)."</a>\n";echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'trigger='.urlencode($a).'">'.lang(140)."</a>\n";}}elseif(isset($_GET["schema"])){page_header(lang(69),"",array(),h(DB.($_GET["ns"]?".$_GET[ns]":"")));$Qh=array();$Rh=array();$ea=($_GET["schema"]?:$_COOKIE["adminer_schema-".str_replace(".","_",DB)]);preg_match_all('~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~',$ea,$De,PREG_SET_ORDER);foreach($De
as$u=>$B){$Qh[$B[1]]=array($B[2],$B[3]);$Rh[]="\n\t'".js_escape($B[1])."': [ $B[2], $B[3] ]";}$ni=0;$Ia=-1;$Vg=array();$Dg=array();$re=array();foreach(table_status('',true)as$R=>$S){if(is_view($S))continue;$fg=0;$Vg[$R]["fields"]=array();foreach(fields($R)as$C=>$o){$fg+=1.25;$o["pos"]=$fg;$Vg[$R]["fields"][$C]=$o;}$Vg[$R]["pos"]=($Qh[$R]?:array($ni,0));foreach($b->foreignKeys($R)as$X){if(!$X["db"]){$pe=$Ia;if($Qh[$R][1]||$Qh[$X["table"]][1])$pe=min(floatval($Qh[$R][1]),floatval($Qh[$X["table"]][1]))-1;else$Ia-=.1;while($re[(string)$pe])$pe-=.0001;$Vg[$R]["references"][$X["table"]][(string)$pe]=array($X["source"],$X["target"]);$Dg[$X["table"]][$R][(string)$pe]=$X["target"];$re[(string)$pe]=true;}}$ni=max($ni,$Vg[$R]["pos"][0]+2.5+$fg);}echo'<div id="schema" style="height: ',$ni,'em;">
<script',nonce(),'>
qs(\'#schema\').onselectstart = function () { return false; };
var tablePos = {',implode(",",$Rh)."\n",'};
var em = qs(\'#schema\').offsetHeight / ',$ni,';
document.onmousemove = schemaMousemove;
document.onmouseup = partialArg(schemaMouseup, \'',js_escape(DB),'\');
</script>
';foreach($Vg
as$C=>$R){echo"<div class='table' style='top: ".$R["pos"][0]."em; left: ".$R["pos"][1]."em;'>",'<a href="'.h(ME).'table='.urlencode($C).'"><b>'.h($C)."</b></a>",script("qsl('div').onmousedown = schemaMousedown;");foreach($R["fields"]as$o){$X='<span'.type_class($o["type"]).' title="'.h($o["full_type"].($o["null"]?" NULL":'')).'">'.h($o["field"]).'</span>';echo"<br>".($o["primary"]?"<i>$X</i>":$X);}foreach((array)$R["references"]as$Xh=>$Eg){foreach($Eg
as$pe=>$Ag){$qe=$pe-$Qh[$C][1];$u=0;foreach($Ag[0]as$uh)echo"\n<div class='references' title='".h($Xh)."' id='refs$pe-".($u++)."' style='left: $qe"."em; top: ".$R["fields"][$uh]["pos"]."em; padding-top: .5em;'>"."<div style='border-top: 1px solid gray; width: ".(-$qe)."em;'></div></div>";}}foreach((array)$Dg[$C]as$Xh=>$Eg){foreach($Eg
as$pe=>$e){$qe=$pe-$Qh[$C][1];$u=0;foreach($e
as$Wh)echo"\n<div class='references' title='".h($Xh)."' id='refd$pe-".($u++)."'"." style='left: $qe"."em; top: ".$R["fields"][$Wh]["pos"]."em; height: 1.25em; background: url(".h(preg_replace("~\\?.*~","",ME)."?file=arrow.gif) no-repeat right center;&version=5.0.6")."'>"."<div style='height: .5em; border-bottom: 1px solid gray; width: ".(-$qe)."em;'></div>"."</div>";}}echo"\n</div>\n";}foreach($Vg
as$C=>$R){foreach((array)$R["references"]as$Xh=>$Eg){foreach($Eg
as$pe=>$Ag){$Re=$ni;$He=-10;foreach($Ag[0]as$z=>$uh){$gg=$R["pos"][0]+$R["fields"][$uh]["pos"];$hg=$Vg[$Xh]["pos"][0]+$Vg[$Xh]["fields"][$Ag[1][$z]]["pos"];$Re=min($Re,$gg,$hg);$He=max($He,$gg,$hg);}echo"<div class='references' id='refl$pe' style='left: $pe"."em; top: $Re"."em; padding: .5em 0;'><div style='border-right: 1px solid gray; margin-top: 1px; height: ".($He-$Re)."em;'></div></div>\n";}}}echo'</div>
<p class="links"><a href="',h(ME."schema=".urlencode($ea)),'" id="schema-link">',lang(141),'</a>
';}elseif(isset($_GET["dump"])){$a=$_GET["dump"];if($_POST&&!$n){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"]);$Ic=dump_headers((count($T)==1?key($T):DB),(DB==""||count($T)>1));$Zd=preg_match('~sql~',$_POST["format"]);if($Zd){echo"-- Adminer $ia ".$bc[DRIVER]." ".str_replace("\n"," ",$g->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';
":"")."
";$g->query("SET time_zone = '+00:00'");$g->query("SET sql_mode = ''");}}$Gh=$_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){$b->dumpDatabase($k);if($g->select_db($k)){if($Zd&&preg_match('~CREATE~',$Gh)&&($i=get_val("SHOW CREATE DATABASE ".idf_escape($k),1))){set_utf8mb4($i);if($Gh=="DROP+CREATE")echo"DROP DATABASE IF EXISTS ".idf_escape($k).";\n";echo"$i;\n";}if($Zd){if($Gh)echo
use_sql($k).";\n\n";$Lf="";if($_POST["types"]){foreach(types()as$v=>$U){$xc=type_values($v);if($xc)$Lf.=($Gh!='DROP+CREATE'?"DROP TYPE IF EXISTS ".idf_escape($U).";;\n":"")."CREATE TYPE ".idf_escape($U)." AS ENUM ($xc);\n\n";else$Lf.="-- Could not export type $U\n\n";}}if($_POST["routines"]){foreach(routines()as$K){$C=$K["ROUTINE_NAME"];$Pg=$K["ROUTINE_TYPE"];$i=create_routine($Pg,array("name"=>$C)+routine($K["SPECIFIC_NAME"],$Pg));set_utf8mb4($i);$Lf.=($Gh!='DROP+CREATE'?"DROP $Pg IF EXISTS ".idf_escape($C).";;\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);$Lf.=($Gh!='DROP+CREATE'?"DROP EVENT IF EXISTS ".idf_escape($K["Name"]).";;\n":"")."$i;;\n\n";}}echo($Lf&&JUSH=='sql'?"DELIMITER ;;\n\n$Lf"."DELIMITER ;\n\n":$Lf);}if($_POST["table_style"]||$_POST["data_style"]){$Zi=array();foreach(table_status('',true)as$C=>$S){$R=(DB==""||in_array($C,(array)$_POST["tables"]));$Ib=(DB==""||in_array($C,(array)$_POST["data"]));if($R||$Ib){if($Ic=="tar"){$ki=new
TmpFile;ob_start(array($ki,'write'),1e5);}$b->dumpTable($C,($R?$_POST["table_style"]:""),(is_view($S)?2:0));if(is_view($S))$Zi[]=$C;elseif($Ib){$p=fields($C);$b->dumpData($C,$_POST["data_style"],"SELECT *".convert_fields($p,$p)." FROM ".table($C));}if($Zd&&$_POST["triggers"]&&$R&&($yi=trigger_sql($C)))echo"\nDELIMITER ;;\n$yi\nDELIMITER ;\n";if($Ic=="tar"){ob_end_flush();tar_file((DB!=""?"":"$k/")."$C.csv",$ki);}elseif($Zd)echo"\n";}}if(function_exists('Adminer\foreign_keys_sql')){foreach(table_status('',true)as$C=>$S){$R=(DB==""||in_array($C,(array)$_POST["tables"]));if($R&&!is_view($S))echo
foreign_keys_sql($C);}}foreach($Zi
as$Yi)$b->dumpTable($Yi,$_POST["table_style"],1);if($Ic=="tar")echo
pack("x512");}}}$b->dumpFooter();exit;}page_header(lang(72),$n,($_GET["export"]!=""?array("table"=>$_GET["export"]):array()),h(DB));echo'
<form action="" method="post">
<table class="layout">
';$Mb=array('','USE','DROP+CREATE','CREATE');$Sh=array('','DROP+CREATE','CREATE');$Jb=array('','TRUNCATE+INSERT','INSERT');if(JUSH=="sql")$Jb[]='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(142)."<td>".html_radios("output",$b->dumpOutput(),$K["output"])."\n","<tr><th>".lang(143)."<td>".html_radios("format",$b->dumpFormat(),$K["format"])."\n",(JUSH=="sqlite"?"":"<tr><th>".lang(36)."<td>".html_select('db_style',$Mb,$K["db_style"]).(support("type")?checkbox("types",1,$K["types"],lang(31)):"").(support("routine")?checkbox("routines",1,$K["routines"],lang(144)):"").(support("event")?checkbox("events",1,$K["events"],lang(145)):"")),"<tr><th>".lang(122)."<td>".html_select('table_style',$Sh,$K["table_style"]).checkbox("auto_increment",1,$K["auto_increment"],lang(50)).(support("trigger")?checkbox("triggers",1,$K["triggers"],lang(139)):""),"<tr><th>".lang(146)."<td>".html_select('data_style',$Jb,$K["data_style"]),'</table>
<p><input type="submit" value="',lang(72),'">
<input type="hidden" name="token" value="',$mi,'">

<table>
',script("qsl('table').onclick = dumpClick;");$lg=array();if(DB!=""){$Ya=($a!=""?"":" checked");echo"<thead><tr>","<th style='text-align: left;'><label class='block'><input type='checkbox' id='check-tables'$Ya>".lang(122)."</label>".script("qs('#check-tables').onclick = partial(formCheck, /^tables\\[/);",""),"<th style='text-align: right;'><label class='block'>".lang(146)."<input type='checkbox' id='check-data'$Ya></label>".script("qs('#check-data').onclick = partial(formCheck, /^data\\[/);",""),"</thead>\n";$Zi="";$Th=tables_list();foreach($Th
as$C=>$U){$kg=preg_replace('~_.*~','',$C);$Ya=($a==""||$a==(substr($a,-1)=="%"?"$kg%":$C));$ng="<tr><td>".checkbox("tables[]",$C,$Ya,$C,"","block");if($U!==null&&!preg_match('~table~i',$U))$Zi.="$ng\n";else
echo"$ng<td align='right'><label class='block'><span id='Rows-".h($C)."'></span>".checkbox("data[]",$C,$Ya)."</label>\n";$lg[$kg]++;}echo$Zi;if($Th)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(36)."</label>",script("qs('#check-databases').onclick = partial(formCheck, /^databases\\[/);",""),"</thead>\n";$j=$b->databases();if($j){foreach($j
as$k){if(!information_schema($k)){$kg=preg_replace('~_.*~','',$k);echo"<tr><td>".checkbox("databases[]",$k,$a==""||$a=="$kg%",$k,"","block")."\n";$lg[$kg]++;}}}else
echo"<tr><td><textarea name='databases' rows='10' cols='20'></textarea>";}echo'</table>
</form>
';$Vc=true;foreach($lg
as$z=>$X){if($z!=""&&$X>1){echo($Vc?"<p>":" ")."<a href='".h(ME)."dump=".urlencode("$z%")."'>".h($z)."</a>";$Vc=false;}}}elseif(isset($_GET["privileges"])){page_header(lang(70));echo'<p class="links"><a href="'.h(ME).'user=">'.lang(147)."</a>";$I=$g->query("SELECT User, Host FROM mysql.".(DB==""?"user":"db WHERE ".q(DB)." LIKE Db")." ORDER BY Host, User");$nd=$I;if(!$I)$I=$g->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 type='hidden' name='db' value='".h(DB)."'>\n",($nd?"":"<input type='hidden' name='grant' value=''>\n"),"<table class='odds'>\n","<thead><tr><th>".lang(34)."<th>".lang(33)."<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(10)."</a>\n";if(!$nd||DB!="")echo"<tr><td><input name='user' autocapitalize='off'><td><input name='host' value='localhost' autocapitalize='off'><td><input type='submit' value='".lang(10)."'>\n";echo"</table>\n","</form>\n";}elseif(isset($_GET["sql"])){if(!$n&&$_POST["export"]){save_settings(array("output"=>$_POST["output"],"format"=>$_POST["format"]),"adminer_import");dump_headers("sql");$b->dumpTable("","");$b->dumpData("","table",$_POST["query"]);$b->dumpFooter();exit;}restart_session();$Bd=&get_session("queries");$Ad=&$Bd[DB];if(!$n&&$_POST["clear"]){$Ad=array();redirect(remove_from_uri("history"));}page_header((isset($_GET["import"])?lang(71):lang(63)),$n);if(!$n&&$_POST){$s=false;if(!isset($_GET["import"]))$H=$_POST["query"];elseif($_POST["webfile"]){$yh=$b->importServerPath();$s=@fopen((file_exists($yh)?$yh:"compress.zlib://$yh.gz"),"rb");$H=($s?fread($s,1e6):false);}else$H=get_file("sql_file",true,";");if(is_string($H)){if(function_exists('memory_get_usage')&&($Le=ini_bytes("memory_limit"))!="-1")@ini_set("memory_limit",max($Le,2*strlen($H)+memory_get_usage()+8e6));if($H!=""&&strlen($H)<1e6){$ug=$H.(preg_match("~;[ \t\r\n]*\$~",$H)?"":";");if(!$Ad||reset(end($Ad))!=$ug){restart_session();$Ad[]=array($ug,time());set_session("queries",$Bd);stop_session();}}$vh="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$Sb=";";$D=0;$rc=true;$h=connect($b->credentials());if(is_object($h)&&DB!=""){$h->select_db(DB);if($_GET["ns"]!="")set_schema($_GET["ns"],$h);}$mb=0;$zc=array();$Sf='[\'"'.(JUSH=="sql"?'`#':(JUSH=="sqlite"?'`[':(JUSH=="mssql"?'[':''))).']|/\*|-- |$'.(JUSH=="pgsql"?'|\$[^$]*\$':'');$oi=microtime(true);$pa=get_settings("adminer_import");$ic=$b->dumpFormat();unset($ic["sql"]);while($H!=""){if(!$D&&preg_match("~^$vh*+DELIMITER\\s+(\\S+)~i",$H,$B)){$Sb=$B[1];$H=substr($H,strlen($B[0]));}else{preg_match('('.preg_quote($Sb)."\\s*|$Sf)",$H,$B,PREG_OFFSET_CAPTURE,$D);list($gd,$fg)=$B[0];if(!$gd&&$s&&!feof($s))$H.=fread($s,1e5);else{if(!$gd&&rtrim($H)=="")break;$D=$fg+strlen($gd);if($gd&&rtrim($gd)!=$Sb){$Ra=$m->hasCStyleEscapes()||(JUSH=="pgsql"&&($fg>0&&strtolower($H[$fg-1])=="e"));$ag=($gd=='/*'?'\*/':($gd=='['?']':(preg_match('~^-- |^#~',$gd)?"\n":preg_quote($gd).($Ra?"|\\\\.":""))));while(preg_match("($ag|\$)s",$H,$B,PREG_OFFSET_CAPTURE,$D)){$Tg=$B[0][0];if(!$Tg&&$s&&!feof($s))$H.=fread($s,1e5);else{$D=$B[0][1]+strlen($Tg);if(!$Tg||$Tg[0]!="\\")break;}}}else{$rc=false;$ug=substr($H,0,$fg);$mb++;$ng="<pre id='sql-$mb'><code class='jush-".JUSH."'>".$b->sqlCommandQuery($ug)."</code></pre>\n";if(JUSH=="sqlite"&&preg_match("~^$vh*+ATTACH\\b~i",$ug,$B)){echo$ng,"<p class='error'>".lang(148)."\n";$zc[]=" <a href='#sql-$mb'>$mb</a>";if($_POST["error_stops"])break;}else{if(!$_POST["only_errors"]){echo$ng;ob_flush();flush();}$Ch=microtime(true);if($g->multi_query($ug)&&is_object($h)&&preg_match("~^$vh*+USE\\b~i",$ug))$h->query($ug);do{$I=$g->store_result();if($g->error){echo($_POST["only_errors"]?$ng:""),"<p class='error'>".lang(149).($g->errno?" ($g->errno)":"").": ".error()."\n";$zc[]=" <a href='#sql-$mb'>$mb</a>";if($_POST["error_stops"])break
2;}else{$di=" <span class='time'>(".format_time($Ch).")</span>".(strlen($ug)<1000?" <a href='".h(ME)."sql=".urlencode(trim($ug))."'>".lang(10)."</a>":"");$ra=$g->affected_rows;$cj=($_POST["only_errors"]?"":$m->warnings());$dj="warnings-$mb";if($cj)$di.=", <a href='#$dj'>".lang(45)."</a>".script("qsl('a').onclick = partial(toggle, '$dj');","");$Gc=null;$Hc="explain-$mb";if(is_object($I)){$_=$_POST["limit"];$Df=select($I,$h,array(),$_);if(!$_POST["only_errors"]){echo"<form action='' method='post'>\n";$ff=$I->num_rows;echo"<p>".($ff?($_&&$ff>$_?lang(150,$_):"").lang(151,$ff):""),$di;if($h&&preg_match("~^($vh|\\()*+SELECT\\b~i",$ug)&&($Gc=explain($h,$ug)))echo", <a href='#$Hc'>Explain</a>".script("qsl('a').onclick = partial(toggle, '$Hc');","");$v="export-$mb";echo", <a href='#$v'>".lang(72)."</a>".script("qsl('a').onclick = partial(toggle, '$v');","")."<span id='$v' class='hidden'>: ".html_select("output",$b->dumpOutput(),$pa["output"])." ".html_select("format",$ic,$pa["format"])."<input type='hidden' name='query' value='".h($ug)."'>"." <input type='submit' name='export' value='".lang(72)."'><input type='hidden' name='token' value='$mi'></span>\n"."</form>\n";}}else{if(preg_match("~^$vh*+(CREATE|DROP|ALTER)$vh++(DATABASE|SCHEMA)\\b~i",$ug)){restart_session();set_session("dbs",null);stop_session();}if(!$_POST["only_errors"])echo"<p class='message' title='".h($g->info)."'>".lang(152,$ra)."$di\n";}echo($cj?"<div id='$dj' class='hidden'>\n$cj</div>\n":"");if($Gc){echo"<div id='$Hc' class='hidden explain'>\n";select($Gc,$h,$Df);echo"</div>\n";}}$Ch=microtime(true);}while($g->next_result());}$H=substr($H,$D);$D=0;}}}}if($rc)echo"<p class='message'>".lang(153)."\n";elseif($_POST["only_errors"])echo"<p class='message'>".lang(154,$mb-count($zc))," <span class='time'>(".format_time($oi).")</span>\n";elseif($zc&&$mb>1)echo"<p class='error'>".lang(149).": ".implode("",$zc)."\n";}else
echo"<p class='error'>".upload_error($H)."\n";}echo'
<form action="" method="post" enctype="multipart/form-data" id="form">
';$Ec="<input type='submit' value='".lang(155)."' title='Ctrl+Enter'>";if(!isset($_GET["import"])){$ug=$_GET["sql"];if($_POST)$ug=$_POST["query"];elseif($_GET["history"]=="all")$ug=$Ad;elseif($_GET["history"]!="")$ug=$Ad[$_GET["history"]][0];echo"<p>";textarea("query",$ug,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>$Ec\n",lang(156).": <input type='number' name='limit' class='size' value='".h($_POST?$_POST["limit"]:$_GET["limit"])."'>\n";}else{echo"<fieldset><legend>".lang(157)."</legend><div>";$td=(extension_loaded("zlib")?"[.gz]":"");echo(ini_bool("file_uploads")?"SQL$td (&lt; ".ini_get("upload_max_filesize")."B): <input type='file' name='sql_file[]' multiple>\n$Ec":lang(158)),"</div></fieldset>\n";$Id=$b->importServerPath();if($Id)echo"<fieldset><legend>".lang(159)."</legend><div>",lang(160,"<code>".h($Id)."$td</code>"),' <input type="submit" name="webfile" value="'.lang(161).'">',"</div></fieldset>\n";echo"<p>";}echo
checkbox("error_stops",1,($_POST?$_POST["error_stops"]:isset($_GET["import"])||$_GET["error_stops"]),lang(162))."\n",checkbox("only_errors",1,($_POST?$_POST["only_errors"]:isset($_GET["import"])||$_GET["only_errors"]),lang(163))."\n","<input type='hidden' name='token' value='$mi'>\n";if(!isset($_GET["import"])&&$Ad){print_fieldset("history",lang(164),$_GET["history"]!="");for($X=end($Ad);$X;$X=prev($Ad)){$z=key($Ad);list($ug,$di,$mc)=$X;echo'<a href="'.h(ME."sql=&history=$z").'">'.lang(10)."</a>"." <span class='time' title='".@date('Y-m-d',$di)."'>".@date("H:i:s",$di)."</span>"." <code class='jush-".JUSH."'>".shorten_utf8(ltrim(str_replace("\n"," ",str_replace("\r","",preg_replace('~^(#|-- ).*~m','',$ug)))),80,"</code>").($mc?" <span class='time'>($mc)</span>":"")."<br>\n";}echo"<input type='submit' name='clear' value='".lang(165)."'>\n","<a href='".h(ME."sql=&history=all")."'>".lang(166)."</a>\n","</div></fieldset>\n";}echo'</form>
';}elseif(isset($_GET["edit"])){$a=$_GET["edit"];$p=fields($a);$Z=(isset($_GET["select"])?($_POST["check"]&&count($_POST["check"])==1?where_check($_POST["check"][0],$p):""):where($_GET,$p));$Ji=(isset($_GET["select"])?$_POST["edit"]:$Z);foreach($p
as$C=>$o){if(!isset($o["privileges"][$Ji?"update":"insert"])||$b->fieldName($o)==""||$o["generated"])unset($p[$C]);}if($_POST&&!$n&&!isset($_GET["select"])){$xe=$_POST["referer"];if($_POST["insert"])$xe=($Ji?null:$_SERVER["REQUEST_URI"]);elseif(!preg_match('~^.+&select=.+$~',$xe))$xe=ME."select=".urlencode($a);$y=indexes($a);$Ei=unique_array($_GET["where"],$y);$xg="\nWHERE $Z";if(isset($_POST["delete"]))queries_redirect($xe,lang(167),$m->delete($a,$xg,!$Ei));else{$O=array();foreach($p
as$C=>$o){$X=process_input($o);if($X!==false&&$X!==null)$O[idf_escape($C)]=$X;}if($Ji){if(!$O)redirect($xe);queries_redirect($xe,lang(168),$m->update($a,$O,$xg,!$Ei));if(is_ajax()){page_headers();page_messages($n);exit;}}else{$I=$m->insert($a,$O);$oe=($I?last_id():0);queries_redirect($xe,lang(169,($oe?" $oe":"")),$I);}}}$K=null;if($_POST["save"])$K=(array)$_POST["fields"];elseif($Z){$M=array();foreach($p
as$C=>$o){if(isset($o["privileges"]["select"])){$ya=($_POST["clone"]&&$o["auto_increment"]?"''":convert_field($o));$M[]=($ya?"$ya AS ":"").idf_escape($C);}}$K=array();if(!support("table"))$M=array("*");if($M){$I=$m->select($a,$M,array($Z),$M,array(),(isset($_GET["select"])?2:1));if(!$I)$n=error();else{$K=$I->fetch_assoc();if(!$K)$K=false;}if(isset($_GET["select"])&&(!$K||$I->fetch_assoc()))$K=null;}}if(!support("table")&&!$p){if(!$Z){$I=$m->select($a,array("*"),$Z,array("*"));$K=($I?$I->fetch_assoc():false);if(!$K)$K=array($m->primary=>"");}if($K){foreach($K
as$z=>$X){if(!$Z)$K[$z]=null;$p[$z]=array("field"=>$z,"null"=>($z!=$m->primary),"auto_increment"=>($z==$m->primary));}}}edit_form($a,$p,$K,$Ji);}elseif(isset($_GET["create"])){$a=$_GET["create"];$Uf=array();foreach(array('HASH','LINEAR HASH','KEY','LINEAR KEY','RANGE','LIST')as$z)$Uf[$z]=$z;$Cg=referencable_primary($a);$ed=array();foreach($Cg
as$Oh=>$o)$ed[str_replace("`","``",$Oh)."`".str_replace("`","``",$o["field"])]=$Oh;$Gf=array();$S=array();if($a!=""){$Gf=fields($a);$S=table_status($a);if(!$S)$n=lang(9);}$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"])&&!$n){if($_POST["drop"])queries_redirect(substr(ME,0,-1),lang(170),drop_tables(array($a)));else{$p=array();$va=array();$Ni=false;$cd=array();$Ff=reset($Gf);$ta=" FIRST";foreach($K["fields"]as$z=>$o){$r=$ed[$o["type"]];$zi=($r!==null?$Cg[$r]:$o);if($o["field"]!=""){if(!$o["generated"])$o["default"]=null;$sg=process_field($o,$zi);$va[]=array($o["orig"],$sg,$ta);if(!$Ff||$sg!==process_field($Ff,$Ff)){$p[]=array($o["orig"],$sg,$ta);if($o["orig"]!=""||$ta)$Ni=true;}if($r!==null)$cd[idf_escape($o["field"])]=($a!=""&&JUSH!="sqlite"?"ADD":" ").format_foreign_key(array('table'=>$ed[$o["type"]],'source'=>array($o["field"]),'target'=>array($zi["field"]),'on_delete'=>$o["on_delete"],));$ta=" AFTER ".idf_escape($o["field"]);}elseif($o["orig"]!=""){$Ni=true;$p[]=array($o["orig"]);}if($o["orig"]!=""){$Ff=next($Gf);if(!$Ff)$ta="";}}$Wf="";if(support("partitioning")){if(isset($Uf[$K["partition_by"]])){$Rf=array();foreach($K
as$z=>$X){if(preg_match('~^partition~',$z))$Rf[$z]=$X;}foreach($Rf["partition_names"]as$z=>$C){if($C==""){unset($Rf["partition_names"][$z]);unset($Rf["partition_values"][$z]);}}if($Rf!=get_partitions_info($a)){$Xf=array();if($Rf["partition_by"]=='RANGE'||$Rf["partition_by"]=='LIST'){foreach($Rf["partition_names"]as$z=>$C){$Y=$Rf["partition_values"][$z];$Xf[]="\n  PARTITION ".idf_escape($C)." VALUES ".($Rf["partition_by"]=='RANGE'?"LESS THAN":"IN").($Y!=""?" ($Y)":" MAXVALUE");}}$Wf.="\nPARTITION BY $Rf[partition_by]($Rf[partition])";if($Xf)$Wf.=" (".implode(",",$Xf)."\n)";elseif($Rf["partitions"])$Wf.=" PARTITIONS ".(+$Rf["partitions"]);}}elseif(preg_match("~partitioned~",$S["Create_options"]))$Wf.="\nREMOVE PARTITIONING";}$Me=lang(171);if($a==""){cookie("adminer_engine",$K["Engine"]);$Me=lang(172);}$C=trim($K["name"]);queries_redirect(ME.(support("table")?"table=":"select=").urlencode($C),$Me,alter_table($a,$C,(JUSH=="sqlite"&&($Ni||$cd)?$va:$p),$cd,($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"]):""),$Wf));}}page_header(($a!=""?lang(43):lang(73)),$n,array("table"=>$a),h($a));if(!$_POST){$Ai=$m->types();$K=array("Engine"=>$_COOKIE["adminer_engine"],"fields"=>array(array("field"=>"","type"=>(isset($Ai["int"])?"int":(isset($Ai["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($Gf
as$o){$o["generated"]=$o["generated"]?:(isset($o["default"])?"DEFAULT":"");$K["fields"][]=$o;}if(support("partitioning")){$K+=get_partitions_info($a);$K["partition_names"][]="";$K["partition_values"][]="";}}}$ib=collations();$tc=engines();foreach($tc
as$sc){if(!strcasecmp($sc,$K["Engine"])){$K["Engine"]=$sc;break;}}echo'
<form action="" method="post" id="form">
<p>
';if(support("columns")||$a==""){echo
lang(173)."<input name='name'".($a==""&&!$_POST?" autofocus":"")." data-maxlength='64' value='".h($K["name"])."' autocapitalize='off'>\n",($tc?html_select("Engine",array(""=>"(".lang(174).")")+$tc,$K["Engine"]).on_help("getTarget(event).value",1).script("qsl('select').onchange = helpClose;")."\n":"");if($ib)echo"<datalist id='collations'>".optionlist($ib)."</datalist>",(preg_match("~sqlite|mssql~",JUSH)?"":"<input list='collations' name='Collation' value='".h($K["Collation"])."' placeholder='(".lang(100).")'>");echo"<input type='submit' value='".lang(14)."'>\n";}if(support("columns")){echo"<div class='scrollable'>\n","<table id='edit-fields' class='nowrap'>\n";edit_fields($K["fields"],$ib,"TABLE",$ed);echo"</table>\n",script("editFields();"),"</div>\n<p>\n",lang(50).": <input type='number' name='Auto_increment' class='size' value='".h($K["Auto_increment"])."'>\n",checkbox("defaults",1,($_POST?$_POST["defaults"]:get_setting("defaults")),lang(175),"columnShow(this.checked, 5)","jsonly");$pb=($_POST?$_POST["comments"]:get_setting("comments"));echo(support("comment")?checkbox("comments",1,$pb,lang(49),"editingCommentsClick(this, true);","jsonly").' '.(preg_match('~\n~',$K["Comment"])?"<textarea name='Comment' rows='2' cols='20'".($pb?"":" class='hidden'").">".h($K["Comment"])."</textarea>":'<input name="Comment" value="'.h($K["Comment"]).'" data-maxlength="'.(min_version(5.5)?2048:60).'"'.($pb?"":" class='hidden'").'>'):''),'<p>
<input type="submit" value="',lang(14),'">
';}echo'
';if($a!="")echo'<input type="submit" name="drop" value="',lang(126),'">',confirm(lang(176,$a));if(support("partitioning")){$Vf=preg_match('~RANGE|LIST~',$K["partition_by"]);print_fieldset("partition",lang(177),$K["partition_by"]);echo"<p>".html_select("partition_by",array(""=>"")+$Uf,$K["partition_by"]).on_help("getTarget(event).value.replace(/./, 'PARTITION BY \$&')",1).script("qsl('select').onchange = partitionByChange;"),"(<input name='partition' value='".h($K["partition"])."'>)\n",lang(178).": <input type='number' name='partitions' class='size".($Vf||!$K["partition_by"]?" hidden":"")."' value='".h($K["partitions"])."'>\n","<table id='partition-table'".($Vf?"":" class='hidden'").">\n","<thead><tr><th>".lang(179)."<th>".lang(180)."</thead>\n";foreach($K["partition_names"]as$z=>$X)echo'<tr>','<td><input name="partition_names[]" value="'.h($X).'" autocapitalize="off">',($z==count($K["partition_names"])-1?script("qsl('input').oninput = partitionNameChange;"):''),'<td><input name="partition_values[]" value="'.h($K["partition_values"][$z]).'">';echo"</table>\n</div></fieldset>\n";}echo'<input type="hidden" name="token" value="',$mi,'">
</form>
';}elseif(isset($_GET["indexes"])){$a=$_GET["indexes"];$Md=array("PRIMARY","UNIQUE","INDEX");$S=table_status($a,true);if(preg_match('~MyISAM|M?aria'.(min_version(5.6,'10.0.5')?'|InnoDB':'').'~i',$S["Engine"]))$Md[]="FULLTEXT";if(preg_match('~MyISAM|M?aria'.(min_version(5.7,'10.2.2')?'|InnoDB':'').'~i',$S["Engine"]))$Md[]="SPATIAL";$y=indexes($a);$G=array();if(JUSH=="mongo"){$G=$y["_id_"];unset($Md[0]);unset($y["_id_"]);}$K=$_POST;if($K)save_settings(array("index_options"=>$K["options"]));if($_POST&&!$n&&!$_POST["add"]&&!$_POST["drop_col"]){$c=array();foreach($K["indexes"]as$x){$C=$x["name"];if(in_array($x["type"],$Md)){$e=array();$ue=array();$Ub=array();$O=array();ksort($x["columns"]);foreach($x["columns"]as$z=>$d){if($d!=""){$te=$x["lengths"][$z];$Tb=$x["descs"][$z];$O[]=idf_escape($d).($te?"(".(+$te).")":"").($Tb?" DESC":"");$e[]=$d;$ue[]=($te?:null);$Ub[]=$Tb;}}$Fc=$y[$C];if($Fc){ksort($Fc["columns"]);ksort($Fc["lengths"]);ksort($Fc["descs"]);if($x["type"]==$Fc["type"]&&array_values($Fc["columns"])===$e&&(!$Fc["lengths"]||array_values($Fc["lengths"])===$ue)&&array_values($Fc["descs"])===$Ub){unset($y[$C]);continue;}}if($e)$c[]=array($x["type"],$C,$O);}}foreach($y
as$C=>$Fc)$c[]=array($Fc["type"],$C,"DROP");if(!$c)redirect(ME."table=".urlencode($a));queries_redirect(ME."table=".urlencode($a),lang(181),alter_indexes($a,$c));}page_header(lang(131),$n,array("table"=>$a),h($a));$p=array_keys(fields($a));if($_POST["add"]){foreach($K["indexes"]as$z=>$x){if($x["columns"][count($x["columns"])]!="")$K["indexes"][$z]["columns"][]="";}$x=end($K["indexes"]);if($x["type"]||array_filter($x["columns"],'strlen'))$K["indexes"][]=array("columns"=>array(1=>""));}if(!$K){foreach($y
as$z=>$x){$y[$z]["name"]=$z;$y[$z]["columns"][]="";}$y[]=array("columns"=>array(1=>""));$K["indexes"]=$y;}$ue=(JUSH=="sql"||JUSH=="mssql");$oh=($_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(182),'<th><input type="submit" class="wayoff">',lang(47).($ue?"<span class='idxopts".($oh?"":" hidden")."'> (".lang(183).")</span>":"");if($ue||support("descidx"))echo
checkbox("options",1,$oh,lang(106),"indexOptionsShow(this.checked)","jsonly")."\n";echo'<th id="label-name">',lang(184),'<th><noscript>',"<input type='image' class='icon' name='add[0]' src='".h(preg_replace("~\\?.*~","",ME)."?file=plus.gif&version=5.0.6")."' alt='+' title='".lang(107)."'>",'</noscript>
</thead>
';if($G){echo"<tr><td>PRIMARY<td>";foreach($G["columns"]as$z=>$d)echo
select_input(" disabled",$p,$d),"<label><input disabled type='checkbox'>".lang(58)."</label> ";echo"<td><td>\n";}$ce=1;foreach($K["indexes"]as$x){if(!$_POST["drop_col"]||$ce!=key($_POST["drop_col"])){echo"<tr><td>".html_select("indexes[$ce][type]",array(-1=>"")+$Md,$x["type"],($ce==count($K["indexes"])?"indexesAddRow.call(this);":""),"label-type"),"<td>";ksort($x["columns"]);$u=1;foreach($x["columns"]as$z=>$d){echo"<span>".select_input(" name='indexes[$ce][columns][$u]' title='".lang(47)."'",($p?array_combine($p,$p):$p),$d,"partial(".($u==count($x["columns"])?"indexesAddColumn":"indexesChangeColumn").", '".js_escape(JUSH=="sql"?"":$_GET["indexes"]."_")."')"),"<span class='idxopts".($oh?"":" hidden")."'>",($ue?"<input type='number' name='indexes[$ce][lengths][$u]' class='size' value='".h($x["lengths"][$z])."' title='".lang(105)."'>":""),(support("descidx")?checkbox("indexes[$ce][descs][$u]",1,$x["descs"][$z],lang(58)):""),"</span> </span>";$u++;}echo"<td><input name='indexes[$ce][name]' value='".h($x["name"])."' autocapitalize='off' aria-labelledby='label-name'>\n","<td><input type='image' class='icon' name='drop_col[$ce]' src='".h(preg_replace("~\\?.*~","",ME)."?file=cross.gif&version=5.0.6")."' alt='x' title='".lang(110)."'>".script("qsl('input').onclick = partial(editingRemoveRow, 'indexes\$1[type]');");}$ce++;}echo'</table>
</div>
<p>
<input type="submit" value="',lang(14),'">
<input type="hidden" name="token" value="',$mi,'">
</form>
';}elseif(isset($_GET["database"])){$K=$_POST;if($_POST&&!$n&&!isset($_POST["add_x"])){$C=trim($K["name"]);if($_POST["drop"]){$_GET["db"]="";queries_redirect(remove_from_uri("db|database"),lang(185),drop_databases(array(DB)));}elseif(DB!==$C){if(DB!=""){$_GET["db"]=$C;queries_redirect(preg_replace('~\bdb=[^&]*&~','',ME)."db=".urlencode($C),lang(186),rename_database($C,$K["collation"]));}else{$j=explode("\n",str_replace("\r","",$C));$Hh=true;$ne="";foreach($j
as$k){if(count($j)==1||$k!=""){if(!create_database($k,$K["collation"]))$Hh=false;$ne=$k;}}restart_session();set_session("dbs",null);queries_redirect(ME."db=".urlencode($ne),lang(187),$Hh);}}else{if(!$K["collation"])redirect(substr(ME,0,-1));query_redirect("ALTER DATABASE ".idf_escape($C).(preg_match('~^[a-z0-9_]+$~i',$K["collation"])?" COLLATE $K[collation]":""),substr(ME,0,-1),lang(188));}}page_header(DB!=""?lang(66):lang(114),$n,array(),h(DB));$ib=collations();$C=DB;if($_POST)$C=$K["name"];elseif(DB!="")$K["collation"]=db_collation(DB,$ib);elseif(JUSH=="sql"){foreach(get_vals("SHOW GRANTS")as$nd){if(preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\.\*)?~',$nd,$B)&&$B[1]){$C=stripcslashes(idf_unescape("`$B[2]`"));break;}}}echo'
<form action="" method="post">
<p>
',($_POST["add_x"]||strpos($C,"\n")?'<textarea autofocus name="name" rows="10" cols="40">'.h($C).'</textarea><br>':'<input name="name" autofocus value="'.h($C).'" data-maxlength="64" autocapitalize="off">')."\n".($ib?html_select("collation",array(""=>"(".lang(100).")")+$ib,$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(14),'">
';if(DB!="")echo"<input type='submit' name='drop' value='".lang(126)."'>".confirm(lang(176,DB))."\n";elseif(!$_POST["add_x"]&&$_GET["db"]=="")echo"<input type='image' class='icon' name='add' src='".h(preg_replace("~\\?.*~","",ME)."?file=plus.gif&version=5.0.6")."' alt='+' title='".lang(107)."'>\n";echo'<input type="hidden" name="token" value="',$mi,'">
</form>
';}elseif(isset($_GET["scheme"])){$K=$_POST;if($_POST&&!$n){$A=preg_replace('~ns=[^&]*&~','',ME)."ns=";if($_POST["drop"])query_redirect("DROP SCHEMA ".idf_escape($_GET["ns"]),$A,lang(189));else{$C=trim($K["name"]);$A.=urlencode($C);if($_GET["ns"]=="")query_redirect("CREATE SCHEMA ".idf_escape($C),$A,lang(190));elseif($_GET["ns"]!=$C)query_redirect("ALTER SCHEMA ".idf_escape($_GET["ns"])." RENAME TO ".idf_escape($C),$A,lang(191));else
redirect($A);}}page_header($_GET["ns"]!=""?lang(67):lang(68),$n);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(14),'">
';if($_GET["ns"]!="")echo"<input type='submit' name='drop' value='".lang(126)."'>".confirm(lang(176,$_GET["ns"]))."\n";echo'<input type="hidden" name="token" value="',$mi,'">
</form>
';}elseif(isset($_GET["call"])){$da=($_GET["name"]?:$_GET["call"]);page_header(lang(192).": ".h($da),$n);$Pg=routine($_GET["call"],(isset($_GET["callf"])?"FUNCTION":"PROCEDURE"));$Jd=array();$Lf=array();foreach($Pg["fields"]as$u=>$o){if(substr($o["inout"],-3)=="OUT")$Lf[$u]="@".idf_escape($o["field"])." AS ".idf_escape($o["field"]);if(!$o["inout"]||substr($o["inout"],0,2)=="IN")$Jd[]=$u;}if(!$n&&$_POST){$Sa=array();foreach($Pg["fields"]as$z=>$o){if(in_array($z,$Jd)){$X=process_input($o);if($X===false)$X="''";if(isset($Lf[$z]))$g->query("SET @".idf_escape($o["field"])." = $X");}$Sa[]=(isset($Lf[$z])?"@".idf_escape($o["field"]):$X);}$H=(isset($_GET["callf"])?"SELECT":"CALL")." ".table($da)."(".implode(", ",$Sa).")";$Ch=microtime(true);$I=$g->multi_query($H);$ra=$g->affected_rows;echo$b->selectQuery($H,$Ch,!$I);if(!$I)echo"<p class='error'>".error()."\n";else{$h=connect($b->credentials());if(is_object($h))$h->select_db(DB);do{$I=$g->store_result();if(is_object($I))select($I,$h);else
echo"<p class='message'>".lang(193,$ra)." <span class='time'>".@date("H:i:s")."</span>\n";}while($g->next_result());if($Lf)select($g->query("SELECT ".implode(", ",$Lf)));}}echo'
<form action="" method="post">
';if($Jd){echo"<table class='layout'>\n";foreach($Jd
as$z){$o=$Pg["fields"][$z];$C=$o["field"];echo"<tr><th>".$b->fieldName($o);$Y=$_POST["fields"][$C];if($Y!=""){if($o["type"]=="set")$Y=implode(",",$Y);}input($o,$Y,(string)$_POST["function"][$C]);echo"\n";}echo"</table>\n";}echo'<p>
<input type="submit" value="',lang(192),'">
<input type="hidden" name="token" value="',$mi,'">
</form>

<pre>
';function
pre_tr($Tg){return
preg_replace('~^~m','<tr>',preg_replace('~\|~','<td>',preg_replace('~\|$~m',"",rtrim($Tg))));}$R='(\+--[-+]+\+\n)';$K='(\| .* \|\n)';echo
preg_replace_callback("~^$R?$K$R?($K*)$R?~m",function($B){$Wc=pre_tr($B[2]);return"<table>\n".($B[1]?"<thead>$Wc</thead>\n":$Wc).pre_tr($B[4])."\n</table>";},preg_replace('~(\n(    -|mysql)&gt; )(.+)~',"\\1<code class='jush-sql'>\\3</code>",preg_replace('~(.+)\n---+\n~',"<b>\\1</b>\n",h($Pg['comment']))));echo'</pre>
';}elseif(isset($_GET["foreign"])){$a=$_GET["foreign"];$C=$_GET["name"];$K=$_POST;if($_POST&&!$n&&!$_POST["add"]&&!$_POST["change"]&&!$_POST["change-js"]){if(!$_POST["drop"]){$K["source"]=array_filter($K["source"],'strlen');ksort($K["source"]);$Wh=array();foreach($K["source"]as$z=>$X)$Wh[$z]=$K["target"][$z];$K["target"]=$Wh;}if(JUSH=="sqlite")$I=recreate_table($a,$a,array(),array(),array(" $C"=>($K["drop"]?"":" ".format_foreign_key($K))));else{$c="ALTER TABLE ".table($a);$I=($C==""||queries("$c DROP ".(JUSH=="sql"?"FOREIGN KEY ":"CONSTRAINT ").idf_escape($C)));if(!$K["drop"])$I=queries("$c ADD".format_foreign_key($K));}queries_redirect(ME."table=".urlencode($a),($K["drop"]?lang(194):($C!=""?lang(195):lang(196))),$I);if(!$K["drop"])$n="$n<br>".lang(197);}page_header(lang(198),$n,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($C!=""){$ed=foreign_keys($a);$K=$ed[$C];$K["source"][]="";}else{$K["table"]=$a;$K["source"]=array("");}echo'
<form action="" method="post">
';$uh=array_keys(fields($a));if($K["db"]!="")$g->select_db($K["db"]);if($K["ns"]!=""){$Hf=get_schema();set_schema($K["ns"]);}$Bg=array_keys(array_filter(table_status('',true),'Adminer\fk_support'));$Wh=array_keys(fields(in_array($K["table"],$Bg)?$K["table"]:reset($Bg)));$sf="this.form['change-js'].value = '1'; this.form.submit();";echo"<p>".lang(199).": ".html_select("table",$Bg,$K["table"],$sf)."\n";if(support("scheme")){$Wg=array_filter($b->schemas(),function($Vg){return!preg_match('~^information_schema$~i',$Vg);});echo
lang(75).": ".html_select("ns",$Wg,$K["ns"]!=""?$K["ns"]:$_GET["ns"],$sf);if($K["ns"]!="")set_schema($Hf);}elseif(JUSH!="sqlite"){$Nb=array();foreach($b->databases()as$k){if(!information_schema($k))$Nb[]=$k;}echo
lang(74).": ".html_select("db",$Nb,$K["db"]!=""?$K["db"]:$_GET["db"],$sf);}echo'<input type="hidden" name="change-js" value="">
<noscript><p><input type="submit" name="change" value="',lang(200),'"></noscript>
<table>
<thead><tr><th id="label-source">',lang(133),'<th id="label-target">',lang(134),'</thead>
';$ce=0;foreach($K["source"]as$z=>$X){echo"<tr>","<td>".html_select("source[".(+$z)."]",array(-1=>"")+$uh,$X,($ce==count($K["source"])-1?"foreignAddRow.call(this);":""),"label-source"),"<td>".html_select("target[".(+$z)."]",$Wh,$K["target"][$z],"","label-target");$ce++;}echo'</table>
<p>
',lang(102),': ',html_select("on_delete",array(-1=>"")+explode("|",$m->onActions),$K["on_delete"]),' ',lang(101),': ',html_select("on_update",array(-1=>"")+explode("|",$m->onActions),$K["on_update"]),doc_link(array('sql'=>"innodb-foreign-key-constraints.html",'mariadb'=>"foreign-keys/",'pgsql'=>"sql-createtable.html#SQL-CREATETABLE-REFERENCES",'mssql'=>"t-sql/statements/create-table-transact-sql",'oracle'=>"SQLRF01111",)),'<p>
<input type="submit" value="',lang(14),'">
<noscript><p><input type="submit" name="add" value="',lang(201),'"></noscript>
';if($C!="")echo'<input type="submit" name="drop" value="',lang(126),'">',confirm(lang(176,$C));echo'<input type="hidden" name="token" value="',$mi,'">
</form>
';}elseif(isset($_GET["view"])){$a=$_GET["view"];$K=$_POST;$If="VIEW";if(JUSH=="pgsql"&&$a!=""){$P=table_status($a);$If=strtoupper($P["Engine"]);}if($_POST&&!$n){$C=trim($K["name"]);$ya=" AS\n$K[select]";$xe=ME."table=".urlencode($C);$Me=lang(202);$U=($_POST["materialized"]?"MATERIALIZED VIEW":"VIEW");if(!$_POST["drop"]&&$a==$C&&JUSH!="sqlite"&&$U=="VIEW"&&$If=="VIEW")query_redirect((JUSH=="mssql"?"ALTER":"CREATE OR REPLACE")." VIEW ".table($C).$ya,$xe,$Me);else{$Yh=$C."_adminer_".uniqid();drop_create("DROP $If ".table($a),"CREATE $U ".table($C).$ya,"DROP $U ".table($C),"CREATE $U ".table($Yh).$ya,"DROP $U ".table($Yh),($_POST["drop"]?substr(ME,0,-1):$xe),lang(203),$Me,lang(204),$a,$C);}}if(!$_POST&&$a!=""){$K=view($a);$K["name"]=$a;$K["materialized"]=($If!="VIEW");if(!$n)$n=error();}page_header(($a!=""?lang(42):lang(205)),$n,array("table"=>$a),h($a));echo'
<form action="" method="post">
<p>',lang(184),': <input name="name" value="',h($K["name"]),'" data-maxlength="64" autocapitalize="off">
',(support("materializedview")?" ".checkbox("materialized",1,$K["materialized"],lang(128)):""),'<p>';textarea("select",$K["select"]);echo'<p>
<input type="submit" value="',lang(14),'">
';if($a!="")echo'<input type="submit" name="drop" value="',lang(126),'">',confirm(lang(176,$a));echo'<input type="hidden" name="token" value="',$mi,'">
</form>
';}elseif(isset($_GET["event"])){$aa=$_GET["event"];$Ud=array("YEAR","QUARTER","MONTH","DAY","HOUR","MINUTE","WEEK","SECOND","YEAR_MONTH","DAY_HOUR","DAY_MINUTE","DAY_SECOND","HOUR_MINUTE","HOUR_SECOND","MINUTE_SECOND");$Dh=array("ENABLED"=>"ENABLE","DISABLED"=>"DISABLE","SLAVESIDE_DISABLED"=>"DISABLE ON SLAVE");$K=$_POST;if($_POST&&!$n){if($_POST["drop"])query_redirect("DROP EVENT ".idf_escape($aa),substr(ME,0,-1),lang(206));elseif(in_array($K["INTERVAL_FIELD"],$Ud)&&isset($Dh[$K["STATUS"]])){$Ug="\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(207):lang(208)),queries(($aa!=""?"ALTER EVENT ".idf_escape($aa).$Ug.($aa!=$K["EVENT_NAME"]?"\nRENAME TO ".idf_escape($K["EVENT_NAME"]):""):"CREATE EVENT ".idf_escape($K["EVENT_NAME"]).$Ug)."\n".$Dh[$K["STATUS"]]." COMMENT ".q($K["EVENT_COMMENT"]).rtrim(" DO\n$K[EVENT_DEFINITION]",";").";"));}}page_header(($aa!=""?lang(209).": ".h($aa):lang(210)),$n);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(184),'<td><input name="EVENT_NAME" value="',h($K["EVENT_NAME"]),'" data-maxlength="64" autocapitalize="off">
<tr><th title="datetime">',lang(211),'<td><input name="STARTS" value="',h("$K[EXECUTE_AT]$K[STARTS]"),'">
<tr><th title="datetime">',lang(212),'<td><input name="ENDS" value="',h($K["ENDS"]),'">
<tr><th>',lang(213),'<td><input type="number" name="INTERVAL_VALUE" value="',h($K["INTERVAL_VALUE"]),'" class="size"> ',html_select("INTERVAL_FIELD",$Ud,$K["INTERVAL_FIELD"]),'<tr><th>',lang(117),'<td>',html_select("STATUS",$Dh,$K["STATUS"]),'<tr><th>',lang(49),'<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(214)),'</table>
<p>';textarea("EVENT_DEFINITION",$K["EVENT_DEFINITION"]);echo'<p>
<input type="submit" value="',lang(14),'">
';if($aa!="")echo'<input type="submit" name="drop" value="',lang(126),'">',confirm(lang(176,$aa));echo'<input type="hidden" name="token" value="',$mi,'">
</form>
';}elseif(isset($_GET["procedure"])){$da=($_GET["name"]?:$_GET["procedure"]);$Pg=(isset($_GET["function"])?"FUNCTION":"PROCEDURE");$K=$_POST;$K["fields"]=(array)$K["fields"];if($_POST&&!process_fields($K["fields"])&&!$n){$Ef=routine($_GET["procedure"],$Pg);$Yh="$K[name]_adminer_".uniqid();drop_create("DROP $Pg ".routine_id($da,$Ef),create_routine($Pg,$K),"DROP $Pg ".routine_id($K["name"],$K),create_routine($Pg,array("name"=>$Yh)+$K),"DROP $Pg ".routine_id($Yh,$K),substr(ME,0,-1),lang(215),lang(216),lang(217),$da,$K["name"]);}page_header(($da!=""?(isset($_GET["function"])?lang(218):lang(219)).": ".h($da):(isset($_GET["function"])?lang(220):lang(221))),$n);if(!$_POST&&$da!=""){$K=routine($_GET["procedure"],$Pg);$K["name"]=$da;}$ib=get_vals("SHOW CHARACTER SET");sort($ib);$Qg=routine_languages();echo($ib?"<datalist id='collations'>".optionlist($ib)."</datalist>":""),'
<form action="" method="post" id="form">
<p>',lang(184),': <input name="name" value="',h($K["name"]),'" data-maxlength="64" autocapitalize="off">
',($Qg?lang(19).": ".html_select("language",$Qg,$K["language"])."\n":""),'<input type="submit" value="',lang(14),'">
<div class="scrollable">
<table class="nowrap">
';edit_fields($K["fields"],$ib,$Pg);if(isset($_GET["function"])){echo"<tr><td>".lang(222);edit_type("returns",$K["returns"],$ib,array(),(JUSH=="pgsql"?array("void","trigger"):array()));}echo'</table>
',script("editFields();"),'</div>
<p>';textarea("definition",$K["definition"]);echo'<p>
<input type="submit" value="',lang(14),'">
';if($da!="")echo'<input type="submit" name="drop" value="',lang(126),'">',confirm(lang(176,$da));echo'<input type="hidden" name="token" value="',$mi,'">
</form>
';}elseif(isset($_GET["sequence"])){$fa=$_GET["sequence"];$K=$_POST;if($_POST&&!$n){$A=substr(ME,0,-1);$C=trim($K["name"]);if($_POST["drop"])query_redirect("DROP SEQUENCE ".idf_escape($fa),$A,lang(223));elseif($fa=="")query_redirect("CREATE SEQUENCE ".idf_escape($C),$A,lang(224));elseif($fa!=$C)query_redirect("ALTER SEQUENCE ".idf_escape($fa)." RENAME TO ".idf_escape($C),$A,lang(225));else
redirect($A);}page_header($fa!=""?lang(226).": ".h($fa):lang(227),$n);if(!$K)$K["name"]=$fa;echo'
<form action="" method="post">
<p><input name="name" value="',h($K["name"]),'" autocapitalize="off">
<input type="submit" value="',lang(14),'">
';if($fa!="")echo"<input type='submit' name='drop' value='".lang(126)."'>".confirm(lang(176,$fa))."\n";echo'<input type="hidden" name="token" value="',$mi,'">
</form>
';}elseif(isset($_GET["type"])){$ga=$_GET["type"];$K=$_POST;if($_POST&&!$n){$A=substr(ME,0,-1);if($_POST["drop"])query_redirect("DROP TYPE ".idf_escape($ga),$A,lang(228));else
query_redirect("CREATE TYPE ".idf_escape(trim($K["name"]))." $K[as]",$A,lang(229));}page_header($ga!=""?lang(230).": ".h($ga):lang(231),$n);if(!$K)$K["as"]="AS ";echo'
<form action="" method="post">
<p>
';if($ga!=""){$Ai=$m->types();$xc=type_values($Ai[$ga]);if($xc)echo"<code class='jush-".JUSH."'>ENUM (".h($xc).")</code>\n<p>";echo"<input type='submit' name='drop' value='".lang(126)."'>".confirm(lang(176,$ga))."\n";}else{echo
lang(184).": <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(14)."'>\n";}echo'<input type="hidden" name="token" value="',$mi,'">
</form>
';}elseif(isset($_GET["check"])){$a=$_GET["check"];$C=$_GET["name"];$K=$_POST;if($K&&!$n){if(JUSH=="sqlite")$I=recreate_table($a,$a,array(),array(),array(),0,array(),$C,($K["drop"]?"":$K["clause"]));else{$I=($C==""||queries("ALTER TABLE ".table($a)." DROP CONSTRAINT ".idf_escape($C)));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(232):($C!=""?lang(233):lang(234))),$I);}page_header(($C!=""?lang(235).": ".h($C):lang(138)),$n,array("table"=>$a));if(!$K){$Za=$m->checkConstraints($a);$K=array("name"=>$C,"clause"=>$Za[$C]);}echo'
<form action="" method="post">
<p>';if(JUSH!="sqlite")echo
lang(184).': <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(14),'">
';if($C!="")echo'<input type="submit" name="drop" value="',lang(126),'">',confirm(lang(176,$C));echo'<input type="hidden" name="token" value="',$mi,'">
</form>
';}elseif(isset($_GET["trigger"])){$a=$_GET["trigger"];$C=$_GET["name"];$xi=trigger_options();$K=(array)trigger($C,$a)+array("Trigger"=>$a."_bi");if($_POST){if(!$n&&in_array($_POST["Timing"],$xi["Timing"])&&in_array($_POST["Event"],$xi["Event"])&&in_array($_POST["Type"],$xi["Type"])){$pf=" ON ".table($a);$cc="DROP TRIGGER ".idf_escape($C).(JUSH=="pgsql"?$pf:"");$xe=ME."table=".urlencode($a);if($_POST["drop"])query_redirect($cc,$xe,lang(236));else{if($C!="")queries($cc);queries_redirect($xe,($C!=""?lang(237):lang(238)),queries(create_trigger($pf,$_POST)));if($C!="")queries(create_trigger($pf,$K+array("Type"=>reset($xi["Type"]))));}}$K=$_POST;}page_header(($C!=""?lang(239).": ".h($C):lang(240)),$n,array("table"=>$a));echo'
<form action="" method="post" id="form">
<table class="layout">
<tr><th>',lang(241),'<td>',html_select("Timing",$xi["Timing"],$K["Timing"],"triggerChange(/^".preg_quote($a,"/")."_[ba][iud]$/, '".js_escape($a)."', this.form);"),'<tr><th>',lang(242),'<td>',html_select("Event",$xi["Event"],$K["Event"],"this.form['Timing'].onchange();"),(in_array("UPDATE OF",$xi["Event"])?" <input name='Of' value='".h($K["Of"])."' class='hidden'>":""),'<tr><th>',lang(48),'<td>',html_select("Type",$xi["Type"],$K["Type"]),'</table>
<p>',lang(184),': <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(14),'">
';if($C!="")echo'<input type="submit" name="drop" value="',lang(126),'">',confirm(lang(176,$C));echo'<input type="hidden" name="token" value="',$mi,'">
</form>
';}elseif(isset($_GET["user"])){$ha=$_GET["user"];$qg=array(""=>array("All privileges"=>""));foreach(get_rows("SHOW PRIVILEGES")as$K){foreach(explode(",",($K["Privilege"]=="Grant option"?"":$K["Context"]))as$xb)$qg[$xb][$K["Privilege"]]=$K["Comment"];}$qg["Server Admin"]+=$qg["File access on server"];$qg["Databases"]["Create routine"]=$qg["Procedures"]["Create routine"];unset($qg["Procedures"]["Create routine"]);$qg["Columns"]=array();foreach(array("Select","Insert","Update","References")as$X)$qg["Columns"][$X]=$qg["Tables"][$X];unset($qg["Server Admin"]["Usage"]);foreach($qg["Tables"]as$z=>$X)unset($qg["Databases"][$z]);$Ze=array();if($_POST){foreach($_POST["objects"]as$z=>$X)$Ze[$X]=(array)$Ze[$X]+(array)$_POST["grants"][$z];}$od=array();$nf="";if(isset($_GET["host"])&&($I=$g->query("SHOW GRANTS FOR ".q($ha)."@".q($_GET["host"])))){while($K=$I->fetch_row()){if(preg_match('~GRANT (.*) ON (.*) TO ~',$K[0],$B)&&preg_match_all('~ *([^(,]*[^ ,(])( *\([^)]+\))?~',$B[1],$De,PREG_SET_ORDER)){foreach($De
as$X){if($X[1]!="USAGE")$od["$B[2]$X[2]"][$X[1]]=true;if(preg_match('~ WITH GRANT OPTION~',$K[0]))$od["$B[2]$X[2]"]["GRANT OPTION"]=true;}}if(preg_match("~ IDENTIFIED BY PASSWORD '([^']+)~",$K[0],$B))$nf=$B[1];}}if($_POST&&!$n){$of=(isset($_GET["host"])?q($ha)."@".q($_GET["host"]):"''");if($_POST["drop"])query_redirect("DROP USER $of",ME."privileges=",lang(243));else{$bf=q($_POST["user"])."@".q($_POST["host"]);$Yf=$_POST["pass"];if($Yf!=''&&!$_POST["hashed"]&&!min_version(8)){$Yf=get_val("SELECT PASSWORD(".q($Yf).")");$n=!$Yf;}$Bb=false;if(!$n){if($of!=$bf){$Bb=queries((min_version(5)?"CREATE USER":"GRANT USAGE ON *.* TO")." $bf IDENTIFIED BY ".(min_version(8)?"":"PASSWORD ").q($Yf));$n=!$Bb;}elseif($Yf!=$nf)queries("SET PASSWORD FOR $bf = ".q($Yf));}if(!$n){$Mg=array();foreach($Ze
as$hf=>$nd){if(isset($_GET["grant"]))$nd=array_filter($nd);$nd=array_keys($nd);if(isset($_GET["grant"]))$Mg=array_diff(array_keys(array_filter($Ze[$hf],'strlen')),$nd);elseif($of==$bf){$lf=array_keys((array)$od[$hf]);$Mg=array_diff($lf,$nd);$nd=array_diff($nd,$lf);unset($od[$hf]);}if(preg_match('~^(.+)\s*(\(.*\))?$~U',$hf,$B)&&(!grant("REVOKE",$Mg,$B[2]," ON $B[1] FROM $bf")||!grant("GRANT",$nd,$B[2]," ON $B[1] TO $bf"))){$n=true;break;}}}if(!$n&&isset($_GET["host"])){if($of!=$bf)queries("DROP USER $of");elseif(!isset($_GET["grant"])){foreach($od
as$hf=>$Mg){if(preg_match('~^(.+)(\(.*\))?$~U',$hf,$B))grant("REVOKE",array_keys($Mg),$B[2]," ON $B[1] FROM $bf");}}}queries_redirect(ME."privileges=",(isset($_GET["host"])?lang(244):lang(245)),!$n);if($Bb)$g->query("DROP USER $bf");}}page_header((isset($_GET["host"])?lang(34).": ".h("$ha@$_GET[host]"):lang(147)),$n,array("privileges"=>array('',lang(70))));$K=$_POST;if($K)$od=$Ze;else{$K=$_GET+array("host"=>get_val("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', -1)"));$K["pass"]=$nf;if($nf!="")$K["hashed"]=true;$od[(DB==""||$od?"":idf_escape(addcslashes(DB,"%_\\"))).".*"]=array();}echo'<form action="" method="post">
<table class="layout">
<tr><th>',lang(33),'<td><input name="host" data-maxlength="60" value="',h($K["host"]),'" autocapitalize="off">
<tr><th>',lang(34),'<td><input name="user" data-maxlength="80" value="',h($K["user"]),'" autocapitalize="off">
<tr><th>',lang(35),'<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(246),"typePassword(this.form['pass'], this.checked);")),'</table>

',"<table class='odds'>\n","<thead><tr><th colspan='2'>".lang(70).doc_link(array('sql'=>"grant.html#priv_level"));$u=0;foreach($od
as$hf=>$nd){echo'<th>'.($hf!="*.*"?"<input name='objects[$u]' value='".h($hf)."' size='10' autocapitalize='off'>":"<input type='hidden' name='objects[$u]' value='*.*' size='10'>*.*");$u++;}echo"</thead>\n";foreach(array(""=>"","Server Admin"=>lang(33),"Databases"=>lang(36),"Tables"=>lang(130),"Columns"=>lang(47),"Procedures"=>lang(247),)as$xb=>$Tb){foreach((array)$qg[$xb]as$pg=>$nb){echo"<tr><td".($Tb?">$Tb<td":" colspan='2'").' lang="en" title="'.h($nb).'">'.h($pg);$u=0;foreach($od
as$hf=>$nd){$C="'grants[$u][".h(strtoupper($pg))."]'";$Y=$nd[strtoupper($pg)];if($xb=="Server Admin"&&$hf!=(isset($od["*.*"])?"*.*":".*"))echo"<td>";elseif(isset($_GET["grant"]))echo"<td><select name=$C><option><option value='1'".($Y?" selected":"").">".lang(248)."<option value='0'".($Y=="0"?" selected":"").">".lang(249)."</select>";else
echo"<td align='center'><label class='block'>","<input type='checkbox' name=$C value='1'".($Y?" checked":"").($pg=="All privileges"?" id='grants-$u-all'>":">".($pg=="Grant option"?"":script("qsl('input').onclick = function () { if (this.checked) formUncheck('grants-$u-all'); };"))),"</label>";$u++;}}}echo"</table>\n",'<p>
<input type="submit" value="',lang(14),'">
';if(isset($_GET["host"]))echo'<input type="submit" name="drop" value="',lang(126),'">',confirm(lang(176,"$ha@$_GET[host]"));echo'<input type="hidden" name="token" value="',$mi,'">
</form>
';}elseif(isset($_GET["processlist"])){if(support("kill")){if($_POST&&!$n){$ie=0;foreach((array)$_POST["kill"]as$X){if(kill_process($X))$ie++;}queries_redirect(ME."processlist=",lang(250,$ie),$ie||!$_POST["kill"]);}}page_header(lang(115),$n);echo'
<form action="" method="post">
<div class="scrollable">
<table class="nowrap checkable odds">
',script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});");$u=-1;foreach(process_list()as$u=>$K){if(!$u){echo"<thead><tr lang='en'>".(support("kill")?"<th>":"");foreach($K
as$z=>$X)echo"<th>$z".doc_link(array('sql'=>"show-processlist.html#processlist_".strtolower($z),'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$z=>$X)echo"<td>".((JUSH=="sql"&&$z=="Info"&&preg_match("~Query|Killed~",$K["Command"])&&$X!="")||(JUSH=="pgsql"&&$z=="current_query"&&$X!="<IDLE>")||(JUSH=="oracle"&&$z=="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(251).'</a>':h($X));echo"\n";}echo'</table>
</div>
<p>
';if(support("kill"))echo($u+1)."/".lang(252,max_connections()),"<p><input type='submit' value='".lang(253)."'>\n";echo'<input type="hidden" name="token" value="',$mi,'">
</form>
',script("tableCheck();");}elseif(isset($_GET["select"])){$a=$_GET["select"];$S=table_status1($a);$y=indexes($a);$p=fields($a);$ed=column_foreign_keys($a);$jf=$S["Oid"];$qa=get_settings("adminer_import");$Ng=array();$e=array();$Zg=array();$Af=array();$ci=null;foreach($p
as$z=>$o){$C=$b->fieldName($o);$Xe=html_entity_decode(strip_tags($C),ENT_QUOTES);if(isset($o["privileges"]["select"])&&$C!=""){$e[$z]=$Xe;if(is_shortable($o))$ci=$b->selectLengthProcess();}if(isset($o["privileges"]["where"])&&$C!="")$Zg[$z]=$Xe;if(isset($o["privileges"]["order"])&&$C!="")$Af[$z]=$Xe;$Ng+=$o["privileges"];}list($M,$pd)=$b->selectColumnsProcess($e,$y);$M=array_unique($M);$pd=array_unique($pd);$Yd=count($pd)<count($M);$Z=$b->selectSearchProcess($p,$y);$_f=$b->selectOrderProcess($p,$y);$_=$b->selectLimitProcess();if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$Fi=>$K){$ya=convert_field($p[key($K)]);$M=array($ya?:idf_escape(key($K)));$Z[]=where_check($Fi,$p);$J=$m->select($a,$M,$Z,$M);if($J)echo
reset($J->fetch_row());}exit;}$G=$Hi=null;foreach($y
as$x){if($x["type"]=="PRIMARY"){$G=array_flip($x["columns"]);$Hi=($M?$G:array());foreach($Hi
as$z=>$X){if(in_array(idf_escape($z),$M))unset($Hi[$z]);}break;}}if($jf&&!$G){$G=$Hi=array($jf=>0);$y[]=array("type"=>"PRIMARY","columns"=>array($jf));}if($_POST&&!$n){$fj=$Z;if(!$_POST["all"]&&is_array($_POST["check"])){$Za=array();foreach($_POST["check"]as$Va)$Za[]=where_check($Va,$p);$fj[]="((".implode(") OR (",$Za)."))";}$fj=($fj?"\nWHERE ".implode(" AND ",$fj):"");if($_POST["export"]){save_settings(array("output"=>$_POST["output"],"format"=>$_POST["format"]),"adminer_import");dump_headers($a);$b->dumpTable($a,"");$id=($M?implode(", ",$M):"*").convert_fields($e,$p,$M)."\nFROM ".table($a);$rd=($pd&&$Yd?"\nGROUP BY ".implode(", ",$pd):"").($_f?"\nORDER BY ".implode(", ",$_f):"");$H="SELECT $id$fj$rd";if(is_array($_POST["check"])&&!$G){$Di=array();foreach($_POST["check"]as$X)$Di[]="(SELECT".limit($id,"\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$p).$rd,1).")";$H=implode(" UNION ALL ",$Di);}$b->dumpData($a,"table",$H);$b->dumpFooter();exit;}if(!$b->selectEmailProcess($Z,$ed)){if($_POST["save"]||$_POST["delete"]){$I=true;$ra=0;$O=array();if(!$_POST["delete"]){foreach($_POST["fields"]as$C=>$X){$X=process_input($p[$C]);if($X!==null&&($_POST["clone"]||$X!==false))$O[idf_escape($C)]=($X!==false?$X:idf_escape($C));}}if($_POST["delete"]||$O){if($_POST["clone"])$H="INTO ".table($a)." (".implode(", ",array_keys($O)).")\nSELECT ".implode(", ",$O)."\nFROM ".table($a);if($_POST["all"]||($G&&is_array($_POST["check"]))||$Yd){$I=($_POST["delete"]?$m->delete($a,$fj):($_POST["clone"]?queries("INSERT $H$fj"):$m->update($a,$O,$fj)));$ra=$g->affected_rows;}else{foreach((array)$_POST["check"]as$X){$ej="\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$p);$I=($_POST["delete"]?$m->delete($a,$ej,1):($_POST["clone"]?queries("INSERT".limit1($a,$H,$ej)):$m->update($a,$O,$ej,1)));if(!$I)break;$ra+=$g->affected_rows;}}}$Me=lang(254,$ra);if($_POST["clone"]&&$I&&$ra==1){$oe=last_id();if($oe)$Me=lang(169," $oe");}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page":""),$Me,$I);if(!$_POST["delete"]){$jg=(array)$_POST["fields"];edit_form($a,array_intersect_key($p,$jg),$jg,!$_POST["clone"]);page_footer();exit;}}elseif(!$_POST["import"]){if(!$_POST["val"])$n=lang(255);else{$I=true;$ra=0;foreach($_POST["val"]as$Fi=>$K){$O=array();foreach($K
as$z=>$X){$z=bracket_escape($z,1);$O[idf_escape($z)]=(preg_match('~char|text~',$p[$z]["type"])||$X!=""?$b->processInput($p[$z],$X):"NULL");}$I=$m->update($a,$O," WHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($Fi,$p),!$Yd&&!$G," ");if(!$I)break;$ra+=$g->affected_rows;}queries_redirect(remove_from_uri(),lang(254,$ra),$I);}}elseif(!is_string($Tc=get_file("csv_file",true)))$n=upload_error($Tc);elseif(!preg_match('~~u',$Tc))$n=lang(256);else{save_settings(array("output"=>$qa["output"],"format"=>$_POST["separator"]),"adminer_import");$I=true;$jb=array_keys($p);preg_match_all('~(?>"[^"]*"|[^"\r\n]+)+~',$Tc,$De);$ra=count($De[0]);$m->begin();$fh=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$L=array();foreach($De[0]as$z=>$X){preg_match_all("~((?>\"[^\"]*\")+|[^$fh]*)$fh~",$X.$fh,$Ee);if(!$z&&!array_diff($Ee[1],$jb)){$jb=$Ee[1];$ra--;}else{$O=array();foreach($Ee[1]as$u=>$fb)$O[idf_escape($jb[$u])]=($fb==""&&$p[$jb[$u]]["null"]?"NULL":q(preg_match('~^".*"$~s',$fb)?str_replace('""','"',substr($fb,1,-1)):$fb));$L[]=$O;}}$I=(!$L||$m->insertUpdate($a,$L,$G));if($I)$m->commit();queries_redirect(remove_from_uri("page"),lang(257,$ra),$I);$m->rollback();}}}$Oh=$b->tableName($S);if(is_ajax()){page_headers();ob_start();}else
page_header(lang(52).": $Oh",$n);$O=null;if(isset($Ng["insert"])||!support("table")){$Rf=array();foreach((array)$_GET["where"]as$X){if(isset($ed[$X["col"]])&&count($ed[$X["col"]])==1&&($X["op"]=="="||(!$X["op"]&&(is_array($X["val"])||!preg_match('~[_%]~',$X["val"])))))$Rf["set"."[".bracket_escape($X["col"])."]"]=$X["val"];}$O=$Rf?"&".http_build_query($Rf):"";}$b->selectLinks($S,$O);if(!$e&&support("table"))echo"<p class='error'>".lang(258).($p?".":": ".error())."\n";else{echo"<form action='' id='form'>\n","<div style='display: none;'>";hidden_fields_get();echo(DB!=""?'<input type="hidden" name="db" value="'.h(DB).'">'.(isset($_GET["ns"])?'<input type="hidden" name="ns" value="'.h($_GET["ns"]).'">':""):""),'<input type="hidden" name="select" value="'.h($a).'">',"</div>\n";$b->selectColumnsPrint($M,$e);$b->selectSearchPrint($Z,$Zg,$y);$b->selectOrderPrint($_f,$Af,$y);$b->selectLimitPrint($_);$b->selectLengthPrint($ci);$b->selectActionPrint($y);echo"</form>\n";$E=$_GET["page"];if($E=="last"){$hd=get_val(count_rows($a,$Z,$Yd,$pd));$E=floor(max(0,$hd-1)/$_);}$ah=$M;$qd=$pd;if(!$ah){$ah[]="*";$yb=convert_fields($e,$p,$M);if($yb)$ah[]=substr($yb,2);}foreach($M
as$z=>$X){$o=$p[idf_unescape($X)];if($o&&($ya=convert_field($o)))$ah[$z]="$ya AS $X";}if(!$Yd&&$Hi){foreach($Hi
as$z=>$X){$ah[]=idf_escape($z);if($qd)$qd[]=idf_escape($z);}}$I=$m->select($a,$ah,$Z,$qd,$_f,$_,$E,true);if(!$I)echo"<p class='error'>".error()."\n";else{if(JUSH=="mssql"&&$E)$I->seek($_*$E);$qc=array();echo"<form action='' method='post' enctype='multipart/form-data'>\n";$L=array();while($K=$I->fetch_assoc()){if($E&&JUSH=="oracle")unset($K["RNUM"]);$L[]=$K;}if($_GET["page"]!="last"&&$_!=""&&$pd&&$Yd&&JUSH=="sql")$hd=get_val(" SELECT FOUND_ROWS()");if(!$L)echo"<p class='message'>".lang(12)."\n";else{$Ga=$b->backwardKeys($a,$Oh);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>".(!$pd&&$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(259)."</a>");$Ye=array();$kd=array();reset($M);$zg=1;foreach($L[0]as$z=>$X){if(!isset($Hi[$z])){$X=$_GET["columns"][key($M)];$o=$p[$M?($X?$X["col"]:current($M)):$z];$C=($o?$b->fieldName($o,$zg):($X["fun"]?"*":h($z)));if($C!=""){$zg++;$Ye[$z]=$C;$d=idf_escape($z);$Dd=remove_from_uri('(order|desc)[^=]*|page').'&order%5B0%5D='.urlencode($z);$Tb="&desc%5B0%5D=1";$th=isset($o["privileges"]["order"]);echo"<th id='th[".h(bracket_escape($z))."]'>".script("mixin(qsl('th'), {onmouseover: partial(columnMouse), onmouseout: partial(columnMouse, ' hidden')});","");$jd=apply_sql_function($X["fun"],$C);echo($th?'<a href="'.h($Dd.($_f[0]==$d||$_f[0]==$z||(!$_f&&$Yd&&$pd[0]==$d)?$Tb:'')).'">'."$jd</a>":$jd),"<span class='column hidden'>";if($th)echo"<a href='".h($Dd.$Tb)."' title='".lang(58)."' class='text'> ↓</a>";if(!$X["fun"]&&isset($o["privileges"]["where"]))echo'<a href="#fieldset-search" title="'.lang(55).'" class="text jsonly"> =</a>',script("qsl('a').onclick = partial(selectSearch, '".js_escape($z)."');");echo"</span>";}$kd[$z]=$X["fun"];next($M);}}$ue=array();if($_GET["modify"]){foreach($L
as$K){foreach($K
as$z=>$X)$ue[$z]=max($ue[$z],min(40,strlen(utf8_decode($X))));}}echo($Ga?"<th>".lang(260):"")."</thead>\n";if(is_ajax())ob_end_clean();foreach($b->rowDescriptions($L,$ed)as$We=>$K){$Ei=unique_array($L[$We],$y);if(!$Ei){$Ei=array();foreach($L[$We]as$z=>$X){if(!preg_match('~^(COUNT\((\*|(DISTINCT )?`(?:[^`]|``)+`)\)|(AVG|GROUP_CONCAT|MAX|MIN|SUM)\(`(?:[^`]|``)+`\))$~',$z))$Ei[$z]=$X;}}$Fi="";foreach($Ei
as$z=>$X){if((JUSH=="sql"||JUSH=="pgsql")&&preg_match('~char|text|enum|set~',$p[$z]["type"])&&strlen($X)>64){$z=(strpos($z,'(')?$z:idf_escape($z));$z="MD5(".(JUSH!='sql'||preg_match("~^utf8~",$p[$z]["collation"])?$z:"CONVERT($z USING ".charset($g).")").")";$X=md5($X);}$Fi.="&".($X!==null?urlencode("where[".bracket_escape($z)."]")."=".urlencode($X===false?"f":$X):"null%5B%5D=".urlencode($z));}echo"<tr>".(!$pd&&$M?"":"<td>".checkbox("check[]",substr($Fi,1),in_array(substr($Fi,1),(array)$_POST["check"])).($Yd||information_schema(DB)?"":" <a href='".h(ME."edit=".urlencode($a).$Fi)."' class='edit'>".lang(261)."</a>"));foreach($K
as$z=>$X){if(isset($Ye[$z])){$o=$p[$z];$X=$m->value($X,$o);if($X!=""&&(!isset($qc[$z])||$qc[$z]!=""))$qc[$z]=(is_mail($X)?$Ye[$z]:"");$A="";if(preg_match('~blob|bytea|raw|file~',$o["type"])&&$X!="")$A=ME.'download='.urlencode($a).'&field='.urlencode($z).$Fi;if(!$A&&$X!==null){foreach((array)$ed[$z]as$r){if(count($ed[$z])==1||end($r["source"])==$z){$A="";foreach($r["source"]as$u=>$uh)$A.=where_link($u,$r["target"][$u],$L[$We][$uh]);$A=($r["db"]!=""?preg_replace('~([?&]db=)[^&]+~','\1'.urlencode($r["db"]),ME):ME).'select='.urlencode($r["table"]).$A;if($r["ns"])$A=preg_replace('~([?&]ns=)[^&]+~','\1'.urlencode($r["ns"]),$A);if(count($r["source"])==1)break;}}}if($z=="COUNT(*)"){$A=ME."select=".urlencode($a);$u=0;foreach((array)$_GET["where"]as$W){if(!array_key_exists($W["col"],$Ei))$A.=where_link($u++,$W["col"],$W["val"],$W["op"]);}foreach($Ei
as$ee=>$W)$A.=where_link($u++,$ee,$W);}$X=select_value($X,$A,$o,$ci);$v=h("val[$Fi][".bracket_escape($z)."]");$Y=$_POST["val"][$Fi][bracket_escape($z)];$lc=!is_array($K[$z])&&is_utf8($X)&&$L[$We][$z]==$K[$z]&&!$kd[$z]&&!$o["generated"];$ai=preg_match('~text|json|lob~',$o["type"]);echo"<td id='$v'".(preg_match(number_type(),$o["type"])&&is_numeric(strip_tags($X))?" class='number'":"");if(($_GET["modify"]&&$lc)||$Y!==null){$ud=h($Y!==null?$Y:$K[$z]);echo">".($ai?"<textarea name='$v' cols='30' rows='".(substr_count($K[$z],"\n")+1)."'>$ud</textarea>":"<input name='$v' value='$ud' size='$ue[$z]'>");}else{$ze=strpos($X,"<i>…</i>");echo" data-text='".($ze?2:($ai?1:0))."'".($lc?"":" data-warning='".h(lang(262))."'").">$X";}}}if($Ga)echo"<td>";$b->backwardKeysPrint($Ga,$L[$We]);echo"</tr>\n";}if(is_ajax())exit;echo"</table>\n","</div>\n";}if(!is_ajax()){if($L||$E){$Dc=true;if($_GET["page"]!="last"){if($_==""||(count($L)<$_&&($L||!$E)))$hd=($E?$E*$_:0)+count($L);elseif(JUSH!="sql"||!$Yd){$hd=($Yd?false:found_rows($S,$Z));if($hd<max(1e4,2*($E+1)*$_))$hd=reset(slow_query(count_rows($a,$Z,$Yd,$pd)));else$Dc=false;}}$Pf=($_!=""&&($hd===false||$hd>$_||$E));if($Pf)echo(($hd===false?count($L)+1:$hd-$E*$_)>$_?'<p><a href="'.h(remove_from_uri("page")."&page=".($E+1)).'" class="loadmore">'.lang(263).'</a>'.script("qsl('a').onclick = partial(selectLoadMore, ".(+$_).", '".lang(264)."…');",""):''),"\n";}echo"<div class='footer'><div>\n";if($L||$E){if($Pf){$Ge=($hd===false?$E+(count($L)>=$_?2:1):floor(($hd-1)/$_));echo"<fieldset>";if(JUSH!="simpledb"){echo"<legend><a href='".h(remove_from_uri("page"))."'>".lang(265)."</a></legend>",script("qsl('a').onclick = function () { pageClick(this.href, +prompt('".lang(265)."', '".($E+1)."')); return false; };"),pagination(0,$E).($E>5?" …":"");for($u=max(1,$E-4);$u<min($Ge,$E+5);$u++)echo
pagination($u,$E);if($Ge>0)echo($E+5<$Ge?" …":""),($Dc&&$hd!==false?pagination($Ge,$E):" <a href='".h(remove_from_uri("page")."&page=last")."' title='~$Ge'>".lang(266)."</a>");}else
echo"<legend>".lang(265)."</legend>",pagination(0,$E).($E>1?" …":""),($E?pagination($E,$E):""),($Ge>$E?pagination($E+1,$E).($Ge>$E+1?" …":""):"");echo"</fieldset>\n";}echo"<fieldset>","<legend>".lang(267)."</legend>";$Zb=($Dc?"":"~ ").$hd;$tf="var checked = formChecked(this, /check/); selectCount('selected', this.checked ? '$Zb' : checked); selectCount('selected2', this.checked || !checked ? '$Zb' : checked);";echo
checkbox("all",1,0,($hd!==false?($Dc?"":"~ ").lang(151,$hd):""),$tf)."\n","</fieldset>\n";if($b->selectCommandPrint())echo'<fieldset',($_GET["modify"]?'':' class="jsonly"'),'><legend>',lang(259),'</legend><div>
<input type="submit" value="',lang(14),'"',($_GET["modify"]?'':' title="'.lang(255).'"'),'>
</div></fieldset>
<fieldset><legend>',lang(125),' <span id="selected"></span></legend><div>
<input type="submit" name="edit" value="',lang(10),'">
<input type="submit" name="clone" value="',lang(251),'">
<input type="submit" name="delete" value="',lang(18),'">',confirm(),'</div></fieldset>
';$fd=$b->dumpFormat();foreach((array)$_GET["columns"]as$d){if($d["fun"]){unset($fd['sql']);break;}}if($fd){print_fieldset("export",lang(72)." <span id='selected2'></span>");$Mf=$b->dumpOutput();echo($Mf?html_select("output",$Mf,$qa["output"])." ":""),html_select("format",$fd,$qa["format"])," <input type='submit' name='export' value='".lang(72)."'>\n","</div></fieldset>\n";}$b->selectEmailPrint(array_filter($qc,'strlen'),$e);}echo"</div></div>\n";if($b->selectImportPrint())echo"<div>","<a href='#import'>".lang(71)."</a>",script("qsl('a').onclick = partial(toggle, 'import');",""),"<span id='import'".($_POST["import"]?"":" class='hidden'").">: ","<input type='file' name='csv_file'> ",html_select("separator",array("csv"=>"CSV,","csv;"=>"CSV;","tsv"=>"TSV"),$qa["format"])," <input type='submit' name='import' value='".lang(71)."'>","</span>","</div>";echo"<input type='hidden' name='token' value='$mi'>\n","</form>\n",(!$pd&&$M?"":script("tableCheck();"));}}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["variables"])){$P=isset($_GET["status"]);page_header($P?lang(117):lang(116));$Vi=($P?show_status():show_variables());if(!$Vi)echo"<p class='message'>".lang(12)."\n";else{echo"<table>\n";foreach($Vi
as$z=>$X)echo"<tr>","<th><code class='jush-".JUSH.($P?"status":"set")."'>".h($z)."</code>","<td>".nl_br(h($X));echo"</table>\n";}}elseif(isset($_GET["script"])){header("Content-Type: text/javascript; charset=utf-8");if($_GET["script"]=="db"){$Kh=array("Data_length"=>0,"Index_length"=>0,"Data_free"=>0);foreach(table_status()as$C=>$S){json_row("Comment-$C",h($S["Comment"]));if(!is_view($S)){foreach(array("Engine","Collation")as$z)json_row("$z-$C",h($S[$z]));foreach($Kh+array("Auto_increment"=>0,"Rows"=>0)as$z=>$X){if($S[$z]!=""){$X=format_number($S[$z]);if($X>=0)json_row("$z-$C",($z=="Rows"&&$X&&$S["Engine"]==(JUSH=="pgsql"?"table":"InnoDB")?"~ $X":$X));if(isset($Kh[$z]))$Kh[$z]+=($S["Engine"]!="InnoDB"||$z!="Data_free"?$S[$z]:0);}elseif(array_key_exists($z,$S))json_row("$z-$C","?");}}}foreach($Kh
as$z=>$X)json_row("sum-$z",format_number($X));json_row("");}elseif($_GET["script"]=="kill")$g->query("KILL ".number($_POST["kill"]));else{foreach(count_tables($b->databases())as$k=>$X){json_row("tables-$k",$X);json_row("size-$k",db_size($k));}json_row("");}exit;}else{$Uh=array_merge((array)$_POST["tables"],(array)$_POST["views"]);if($Uh&&!$n&&!$_POST["search"]){$I=true;$Me="";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"]);$Me=lang(268);}elseif($_POST["move"]){$I=move_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$Me=lang(269);}elseif($_POST["copy"]){$I=copy_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$Me=lang(270);}elseif($_POST["drop"]){if($_POST["views"])$I=drop_views($_POST["views"]);if($I&&$_POST["tables"])$I=drop_tables($_POST["tables"]);$Me=lang(271);}elseif(JUSH=="sqlite"&&$_POST["check"]){foreach((array)$_POST["tables"]as$R){foreach(get_rows("PRAGMA integrity_check(".q($R).")")as$K)$Me.="<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"]));$Me=lang(272);}elseif(!$_POST["tables"])$Me=lang(9);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())$Me.="<b>".h($K["Table"])."</b>: ".h($K["Msg_text"])."<br>";}queries_redirect(substr(ME,0,-1),$Me,$I);}page_header(($_GET["ns"]==""?lang(36).": ".h(DB):lang(75).": ".h($_GET["ns"])),$n,true);if($b->homepage()){if($_GET["ns"]!==""){echo"<h3 id='tables-views'>".lang(273)."</h3>\n";$Th=tables_list();if(!$Th)echo"<p class='message'>".lang(9)."\n";else{echo"<form action='' method='post'>\n";if(support("table")){echo"<fieldset><legend>".lang(274)." <span id='selected2'></span></legend><div>","<input type='search' name='query' value='".h($_POST["query"])."'>",script("qsl('input').onkeydown = partialArg(bodyKeydown, 'search');","")," <input type='submit' name='search' value='".lang(55)."'>\n","</div></fieldset>\n";if($_POST["search"]&&$_POST["query"]!=""){$_GET["where"][0]["op"]=$m->convertOperator("LIKE %%");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(130),'<td>'.lang(275).doc_link(array('sql'=>'storage-engines.html')),'<td>'.lang(121).doc_link(array('sql'=>'charset-charsets.html','mariadb'=>'supported-character-sets-and-collations/')),'<td>'.lang(276).doc_link(array('sql'=>'show-table-status.html','pgsql'=>'functions-admin.html#FUNCTIONS-ADMIN-DBOBJECT','oracle'=>'REFRN20286')),'<td>'.lang(277).doc_link(array('sql'=>'show-table-status.html','pgsql'=>'functions-admin.html#FUNCTIONS-ADMIN-DBOBJECT')),'<td>'.lang(278).doc_link(array('sql'=>'show-table-status.html')),'<td>'.lang(50).doc_link(array('sql'=>'example-auto-increment.html','mariadb'=>'auto_increment/')),'<td>'.lang(279).doc_link(array('sql'=>'show-table-status.html','pgsql'=>'catalog-pg-class.html#CATALOG-PG-CLASS','oracle'=>'REFRN20286')),(support("comment")?'<td>'.lang(49).doc_link(array('sql'=>'show-table-status.html','pgsql'=>'functions-info.html#FUNCTIONS-INFO-COMMENT-TABLE')):''),"</thead>\n";$T=0;foreach($Th
as$C=>$U){$Yi=($U!==null&&!preg_match('~table|sequence~i',$U));$v=h("Table-".$C);echo'<tr><td>'.checkbox(($Yi?"views[]":"tables[]"),$C,in_array($C,$Uh,true),"","","",$v),'<th>'.(support("table")||support("indexes")?"<a href='".h(ME)."table=".urlencode($C)."' title='".lang(41)."' id='$v'>".h($C).'</a>':h($C));if($Yi)echo'<td colspan="6"><a href="'.h(ME)."view=".urlencode($C).'" title="'.lang(42).'">'.(preg_match('~materialized~i',$U)?lang(128):lang(129)).'</a>','<td align="right"><a href="'.h(ME)."select=".urlencode($C).'" title="'.lang(40).'">?</a>';else{foreach(array("Engine"=>array(),"Collation"=>array(),"Data_length"=>array("create",lang(43)),"Index_length"=>array("indexes",lang(132)),"Data_free"=>array("edit",lang(44)),"Auto_increment"=>array("auto_increment=1&create",lang(43)),"Rows"=>array("select",lang(40)),)as$z=>$A){$v=" id='$z-".h($C)."'";echo($A?"<td align='right'>".(support("table")||$z=="Rows"||(support("indexes")&&$z!="Data_length")?"<a href='".h(ME."$A[0]=").urlencode($C)."'$v title='$A[1]'>?</a>":"<span$v>?</span>"):"<td id='$z-".h($C)."'>");}$T++;}echo(support("comment")?"<td id='Comment-".h($C)."'>":""),"\n";}echo"<tr><td><th>".lang(252,count($Th)),"<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$z)echo"<td align='right' id='sum-$z'>";echo"\n","</table>\n","</div>\n";if(!information_schema(DB)){echo"<div class='footer'><div>\n";$Si="<input type='submit' value='".lang(280)."'> ".on_help("'VACUUM'");$wf="<input type='submit' name='optimize' value='".lang(281)."'> ".on_help(JUSH=="sql"?"'OPTIMIZE TABLE'":"'VACUUM OPTIMIZE'");echo"<fieldset><legend>".lang(125)." <span id='selected'></span></legend><div>".(JUSH=="sqlite"?$Si."<input type='submit' name='check' value='".lang(282)."'> ".on_help("'PRAGMA integrity_check'"):(JUSH=="pgsql"?$Si.$wf:(JUSH=="sql"?"<input type='submit' value='".lang(283)."'> ".on_help("'ANALYZE TABLE'").$wf."<input type='submit' name='check' value='".lang(282)."'> ".on_help("'CHECK TABLE'")."<input type='submit' name='repair' value='".lang(284)."'> ".on_help("'REPAIR TABLE'"):"")))."<input type='submit' name='truncate' value='".lang(285)."'> ".on_help(JUSH=="sqlite"?"'DELETE'":"'TRUNCATE".(JUSH=="pgsql"?"'":" TABLE'")).confirm()."<input type='submit' name='drop' value='".lang(126)."'>".on_help("'DROP TABLE'").confirm()."\n";$j=(support("scheme")?$b->schemas():$b->databases());if(count($j)!=1&&JUSH!="sqlite"){$k=(isset($_POST["target"])?$_POST["target"]:(support("scheme")?$_GET["ns"]:DB));echo"<p>".lang(286).": ",($j?html_select("target",$j,$k):'<input name="target" value="'.h($k).'" autocapitalize="off">')," <input type='submit' name='move' value='".lang(287)."'>",(support("copy")?" <input type='submit' name='copy' value='".lang(288)."'> ".checkbox("overwrite",1,$_POST["overwrite"],lang(289)):""),"\n";}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);":"")." }"),"<input type='hidden' name='token' value='$mi'>\n","</div></fieldset>\n","</div></div>\n";}echo"</form>\n",script("tableCheck();");}echo'<p class="links"><a href="'.h(ME).'create=">'.lang(73)."</a>\n",(support("view")?'<a href="'.h(ME).'view=">'.lang(205)."</a>\n":"");if(support("routine")){echo"<h3 id='routines'>".lang(144)."</h3>\n";$Rg=routines();if($Rg){echo"<table class='odds'>\n",'<thead><tr><th>'.lang(184).'<td>'.lang(48).'<td>'.lang(222)."<td></thead>\n";foreach($Rg
as$K){$C=($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"]).$C).'">'.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"]).$C).'">'.lang(135)."</a>";}echo"</table>\n";}echo'<p class="links">'.(support("procedure")?'<a href="'.h(ME).'procedure=">'.lang(221).'</a>':'').'<a href="'.h(ME).'function=">'.lang(220)."</a>\n";}if(support("sequence")){echo"<h3 id='sequences'>".lang(290)."</h3>\n";$ih=get_vals("SELECT sequence_name FROM information_schema.sequences WHERE sequence_schema = current_schema() ORDER BY sequence_name");if($ih){echo"<table class='odds'>\n","<thead><tr><th>".lang(184)."</thead>\n";foreach($ih
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(227)."</a>\n";}if(support("type")){echo"<h3 id='user-types'>".lang(31)."</h3>\n";$Qi=types();if($Qi){echo"<table class='odds'>\n","<thead><tr><th>".lang(184)."</thead>\n";foreach($Qi
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(231)."</a>\n";}if(support("event")){echo"<h3 id='events'>".lang(145)."</h3>\n";$L=get_rows("SHOW EVENTS");if($L){echo"<table>\n","<thead><tr><th>".lang(184)."<td>".lang(291)."<td>".lang(211)."<td>".lang(212)."<td></thead>\n";foreach($L
as$K)echo"<tr>","<th>".h($K["Name"]),"<td>".($K["Execute at"]?lang(292)."<td>".$K["Execute at"]:lang(213)." ".$K["Interval value"]." ".$K["Interval field"]."<td>$K[Starts]"),"<td>$K[Ends]",'<td><a href="'.h(ME).'event='.urlencode($K["Name"]).'">'.lang(135).'</a>';echo"</table>\n";$Bc=get_val("SELECT @@event_scheduler");if($Bc&&$Bc!="ON")echo"<p class='error'><code class='jush-sqlset'>event_scheduler</code>: ".h($Bc)."\n";}echo'<p class="links"><a href="'.h(ME).'event=">'.lang(210)."</a>\n";}if($Th)echo
script("ajaxSetHtml('".js_escape(ME)."script=db');");}}}page_footer();