1696 lines
No EOL
314 KiB
PHP
1696 lines
No EOL
314 KiB
PHP
<?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.2.0
|
||
*/namespace
|
||
Adminer;const
|
||
VERSION="5.2.0";error_reporting(24575);set_error_handler(function($_c,$Bc){return!!preg_match('~^Undefined (array key|offset|index)~',$Bc);},E_WARNING|E_NOTICE);$Wc=!preg_match('~^(unsafe_raw)?$~',ini_get("filter.default"));if($Wc||ini_get("filter.default_flags")){foreach(array('_GET','_POST','_COOKIE','_SERVER')as$X){$Wi=filter_input_array(constant("INPUT$X"),FILTER_UNSAFE_RAW);if($Wi)$$X=$Wi;}}if(function_exists("mb_internal_encoding"))mb_internal_encoding("8bit");function
|
||
connection($g=null){return($g?:Db::$ee);}function
|
||
adminer(){return
|
||
Adminer::$ee;}function
|
||
driver(){return
|
||
Driver::$ee;}function
|
||
connect(){$Cb=adminer()->credentials();$J=Driver::connect($Cb[0],$Cb[1],$Cb[2]);return(is_object($J)?$J:null);}function
|
||
idf_unescape($u){if(!preg_match('~^[`\'"[]~',$u))return$u;$xe=substr($u,-1);return
|
||
str_replace($xe.$xe,$xe,substr($u,1,-1));}function
|
||
q($Q){return
|
||
connection()->quote($Q);}function
|
||
escape_string($X){return
|
||
substr(q($X),1,-1);}function
|
||
idx($va,$x,$k=null){return($va&&array_key_exists($x,$va)?$va[$x]:$k);}function
|
||
number($X){return
|
||
preg_replace('~[^0-9]+~','',$X);}function
|
||
number_type(){return'((?<!o)int(?!er)|numeric|real|float|double|decimal|money)';}function
|
||
remove_slashes(array$Eg,$Wc=false){if(function_exists("get_magic_quotes_gpc")&&get_magic_quotes_gpc()){while(list($x,$X)=each($Eg)){foreach($X
|
||
as$pe=>$W){unset($Eg[$x][$pe]);if(is_array($W)){$Eg[$x][stripslashes($pe)]=$W;$Eg[]=&$Eg[$x][stripslashes($pe)];}else$Eg[$x][stripslashes($pe)]=($Wc?$W:stripslashes($W));}}}}function
|
||
bracket_escape($u,$Ca=false){static$Fi=array(':'=>':1',']'=>':2','['=>':3','"'=>':4');return
|
||
strtr($u,($Ca?array_flip($Fi):$Fi));}function
|
||
min_version($nj,$Ie="",$g=null){$g=connection($g);$zh=$g->server_info;if($Ie&&preg_match('~([\d.]+)-MariaDB~',$zh,$B)){$zh=$B[1];$nj=$Ie;}return$nj&&version_compare($zh,$nj)>=0;}function
|
||
charset(Db$f){return(min_version("5.5.3",0,$f)?"utf8mb4":"utf8");}function
|
||
ini_bool($Zd){$X=ini_get($Zd);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($mj,$N,$V,$F){$_SESSION["pwds"][$mj][$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,$m=0,$qb=null){$qb=connection($qb);$I=$qb->query($H);if(!is_object($I))return
|
||
false;$K=$I->fetch_row();return($K?$K[$m]:false);}function
|
||
get_vals($H,$d=0){$J=array();$I=connection()->query($H);if(is_object($I)){while($K=$I->fetch_row())$J[]=$K[$d];}return$J;}function
|
||
get_key_vals($H,$g=null,$Bh=true){$g=connection($g);$J=array();$I=$g->query($H);if(is_object($I)){while($K=$I->fetch_row()){if($Bh)$J[$K[0]]=$K[1];else$J[]=$K[0];}}return$J;}function
|
||
get_rows($H,$g=null,$l="<p class='error'>"){$qb=connection($g);$J=array();$I=$qb->query($H);if(is_object($I)){while($K=$I->fetch_assoc())$J[]=$K;}elseif(!$I&&!$g&&$l&&(defined('Adminer\PAGE_HEADER')||$l=="-- "))echo$l.error()."\n";return$J;}function
|
||
unique_array($K,array$w){foreach($w
|
||
as$v){if(preg_match("~PRIMARY|UNIQUE~",$v["type"])){$J=array();foreach($v["columns"]as$x){if(!isset($K[$x]))continue
|
||
2;$J[$x]=$K[$x];}return$J;}}}function
|
||
escape_key($x){if(preg_match('(^([\w(]+)('.str_replace("_",".*",preg_quote(idf_escape("_"))).')([ \w)]+)$)',$x,$B))return$B[1].idf_escape(idf_unescape($B[2])).$B[3];return
|
||
idf_escape($x);}function
|
||
where(array$Z,array$n=array()){$J=array();foreach((array)$Z["where"]as$x=>$X){$x=bracket_escape($x,true);$d=escape_key($x);$m=idx($n,$x,array());$Uc=$m["type"];$J[]=$d.(JUSH=="sql"&&$Uc=="json"?" = CAST(".q($X)." AS JSON)":(JUSH=="sql"&&is_numeric($X)&&preg_match('~\.~',$X)?" LIKE ".q($X):(JUSH=="mssql"&&strpos($Uc,"datetime")===false?" LIKE ".q(preg_replace('~[_%[]~','[\0]',$X)):" = ".unconvert_field($m,q($X)))));if(JUSH=="sql"&&preg_match('~char|text~',$Uc)&&preg_match("~[^ -@]~",$X))$J[]="$d = ".q($X)." COLLATE ".charset(connection())."_bin";}foreach((array)$Z["null"]as$x)$J[]=escape_key($x)." IS NULL";return
|
||
implode(" AND ",$J);}function
|
||
where_check($X,array$n=array()){parse_str($X,$Va);remove_slashes(array(&$Va));return
|
||
where($Va,$n);}function
|
||
where_link($s,$d,$Y,$Ff="="){return"&where%5B$s%5D%5Bcol%5D=".urlencode($d)."&where%5B$s%5D%5Bop%5D=".urlencode(($Y!==null?$Ff:"IS NULL"))."&where%5B$s%5D%5Bval%5D=".urlencode($Y);}function
|
||
convert_fields(array$e,array$n,array$M=array()){$J="";foreach($e
|
||
as$x=>$X){if($M&&!in_array(idf_escape($x),$M))continue;$wa=convert_field($n[$x]);if($wa)$J
|
||
.=", $wa AS ".idf_escape($x);}return$J;}function
|
||
cookie($C,$Y,$De=2592000){header("Set-Cookie: $C=".urlencode($Y).($De?"; expires=".gmdate("D, d M Y H:i:s",time()+$De)." GMT":"")."; path=".preg_replace('~\?.*~','',$_SERVER["REQUEST_URI"]).(HTTPS?"; secure":"")."; HttpOnly; SameSite=lax",false);}function
|
||
get_settings($zb){parse_str($_COOKIE[$zb],$Ch);return$Ch;}function
|
||
get_setting($x,$zb="adminer_settings"){$Ch=get_settings($zb);return$Ch[$x];}function
|
||
save_settings(array$Ch,$zb="adminer_settings"){$Y=http_build_query($Ch+get_settings($zb));cookie($zb,$Y);$_COOKIE[$zb]=$Y;}function
|
||
restart_session(){if(!ini_bool("session.use_cookies")&&(!function_exists('session_status')||session_status()==1))session_start();}function
|
||
stop_session($ed=false){$ej=ini_bool("session.use_cookies");if(!$ej||$ed){session_write_close();if($ej&&@ini_set("session.use_cookies",'0')===false)session_start();}}function&get_session($x){return$_SESSION[$x][DRIVER][SERVER][$_GET["username"]];}function
|
||
set_session($x,$X){$_SESSION[$x][DRIVER][SERVER][$_GET["username"]]=$X;}function
|
||
auth_url($mj,$N,$V,$j=null){$aj=remove_from_uri(implode("|",array_keys(SqlDriver::$dc))."|username|ext|".($j!==null?"db|":"").($mj=='mssql'||$mj=='pgsql'?"":"ns|").session_name());preg_match('~([^?]*)\??(.*)~',$aj,$B);return"$B[1]?".(sid()?SID."&":"").($mj!="server"||$N!=""?urlencode($mj)."=".urlencode($N)."&":"").($_GET["ext"]?"ext=".urlencode($_GET["ext"])."&":"")."username=".urlencode($V).($j!=""?"&db=".urlencode($j):"").($B[2]?"&$B[2]":"");}function
|
||
is_ajax(){return($_SERVER["HTTP_X_REQUESTED_WITH"]=="XMLHttpRequest");}function
|
||
redirect($A,$Ve=null){if($Ve!==null){restart_session();$_SESSION["messages"][preg_replace('~^[^?]*~','',($A!==null?$A:$_SERVER["REQUEST_URI"]))][]=$Ve;}if($A!==null){if($A=="")$A=".";header("Location: $A");exit;}}function
|
||
query_redirect($H,$A,$Ve,$Ng=true,$Gc=true,$Pc=false,$ti=""){if($Gc){$Rh=microtime(true);$Pc=!connection()->query($H);$ti=format_time($Rh);}$Lh=($H?adminer()->messageQuery($H,$ti,$Pc):"");if($Pc){adminer()->error
|
||
.=error().$Lh.script("messagesPrint();")."<br>";return
|
||
false;}if($Ng)redirect($A,$Ve.$Lh);return
|
||
true;}class
|
||
Queries{static$Ig=array();static$Rh=0;}function
|
||
queries($H){if(!Queries::$Rh)Queries::$Rh=microtime(true);Queries::$Ig[]=(preg_match('~;$~',$H)?"DELIMITER ;;\n$H;\nDELIMITER ":$H).";";return
|
||
connection()->query($H);}function
|
||
apply_queries($H,array$T,$Cc='Adminer\table'){foreach($T
|
||
as$R){if(!queries("$H ".$Cc($R)))return
|
||
false;}return
|
||
true;}function
|
||
queries_redirect($A,$Ve,$Ng){$Ig=implode("\n",Queries::$Ig);$ti=format_time(Queries::$Rh);return
|
||
query_redirect($Ig,$A,$Ve,$Ng,false,!$Ng,$ti);}function
|
||
format_time($Rh){return
|
||
sprintf('%.3f s',max(0,microtime(true)-$Rh));}function
|
||
relative_uri(){return
|
||
str_replace(":","%3a",preg_replace('~^[^?]*/([^?]*)~','\1',$_SERVER["REQUEST_URI"]));}function
|
||
remove_from_uri($cg=""){return
|
||
substr(preg_replace("~(?<=[?&])($cg".(SID?"":"|".session_name()).")=[^&]*&~",'',relative_uri()."&"),0,-1);}function
|
||
get_file($x,$Ob=false,$Tb=""){$Vc=$_FILES[$x];if(!$Vc)return
|
||
null;foreach($Vc
|
||
as$x=>$X)$Vc[$x]=(array)$X;$J='';foreach($Vc["error"]as$x=>$l){if($l)return$l;$C=$Vc["name"][$x];$Ai=$Vc["tmp_name"][$x];$vb=file_get_contents($Ob&&preg_match('~\.gz$~',$C)?"compress.zlib://$Ai":$Ai);if($Ob){$Rh=substr($vb,0,3);if(function_exists("iconv")&&preg_match("~^\xFE\xFF|^\xFF\xFE~",$Rh))$vb=iconv("utf-16","utf-8",$vb);elseif($Rh=="\xEF\xBB\xBF")$vb=substr($vb,3);}$J
|
||
.=$vb;if($Tb)$J
|
||
.=(preg_match("($Tb\\s*\$)",$vb)?"":$Tb)."\n\n";}return$J;}function
|
||
upload_error($l){$Qe=($l==UPLOAD_ERR_INI_SIZE?ini_get("upload_max_filesize"):0);return($l?'Unable to upload a file.'.($Qe?" ".sprintf('Maximum allowed file size is %sB.',$Qe):""):'File does not exist.');}function
|
||
repeat_pattern($mg,$y){return
|
||
str_repeat("$mg{0,65535}",$y/65535)."$mg{0,".($y%65535)."}";}function
|
||
is_utf8($X){return(preg_match('~~u',$X)&&!preg_match('~[\0-\x8\xB\xC\xE-\x1F]~',$X));}function
|
||
format_number($X){return
|
||
strtr(number_format($X,0,".",','),preg_split('~~u','0123456789',-1,PREG_SPLIT_NO_EMPTY));}function
|
||
friendly_url($X){return
|
||
preg_replace('~\W~i','-',$X);}function
|
||
table_status1($R,$Qc=false){$J=table_status($R,$Qc);return($J?reset($J):array("Name"=>$R));}function
|
||
column_foreign_keys($R){$J=array();foreach(adminer()->foreignKeys($R)as$p){foreach($p["source"]as$X)$J[$X][]=$p;}return$J;}function
|
||
fields_from_edit(){$J=array();foreach((array)$_POST["field_keys"]as$x=>$X){if($X!=""){$X=bracket_escape($X);$_POST["function"][$X]=$_POST["field_funs"][$x];$_POST["fields"][$X]=$_POST["field_vals"][$x];}}foreach((array)$_POST["fields"]as$x=>$X){$C=bracket_escape($x,true);$J[$C]=array("field"=>$C,"privileges"=>array("insert"=>1,"update"=>1,"where"=>1,"order"=>1),"null"=>1,"auto_increment"=>($x==driver()->primary),);}return$J;}function
|
||
dump_headers($Md,$ff=false){$J=adminer()->dumpHeaders($Md,$ff);$Yf=$_POST["output"];if($Yf!="text")header("Content-Disposition: attachment; filename=".adminer()->dumpFilename($Md).".$J".($Yf!="file"&&preg_match('~^[0-9a-z]+$~',$Yf)?".$Yf":""));session_write_close();if(!ob_get_level())ob_start(null,4096);ob_flush();flush();return$J;}function
|
||
dump_csv(array$K){foreach($K
|
||
as$x=>$X){if(preg_match('~["\n,;\t]|^0|\.\d*0$~',$X)||$X==="")$K[$x]='"'.str_replace('"','""',$X).'"';}echo
|
||
implode(($_POST["format"]=="csv"?",":($_POST["format"]=="tsv"?"\t":";")),$K)."\r\n";}function
|
||
apply_sql_function($r,$d){return($r?($r=="unixepoch"?"DATETIME($d, '$r')":($r=="count distinct"?"COUNT(DISTINCT ":strtoupper("$r("))."$d)"):$d);}function
|
||
get_temp_dir(){$J=ini_get("upload_tmp_dir");if(!$J){if(function_exists('sys_get_temp_dir'))$J=sys_get_temp_dir();else{$o=@tempnam("","");if(!$o)return'';$J=dirname($o);unlink($o);}}return$J;}function
|
||
file_open_lock($o){if(is_link($o))return;$q=@fopen($o,"c+");if(!$q)return;chmod($o,0660);if(!flock($q,LOCK_EX)){fclose($q);return;}return$q;}function
|
||
file_write_unlock($q,$Ib){rewind($q);fwrite($q,$Ib);ftruncate($q,strlen($Ib));file_unlock($q);}function
|
||
file_unlock($q){flock($q,LOCK_UN);fclose($q);}function
|
||
first(array$va){return
|
||
reset($va);}function
|
||
password_file($h){$o=get_temp_dir()."/adminer.key";if(!$h&&!file_exists($o))return'';$q=file_open_lock($o);if(!$q)return'';$J=stream_get_contents($q);if(!$J){$J=rand_string();file_write_unlock($q,$J);}else
|
||
file_unlock($q);return$J;}function
|
||
rand_string(){return
|
||
md5(uniqid(strval(mt_rand()),true));}function
|
||
select_value($X,$_,array$m,$si){if(is_array($X)){$J="";foreach($X
|
||
as$pe=>$W)$J
|
||
.="<tr>".($X!=array_values($X)?"<th>".h($pe):"")."<td>".select_value($W,$_,$m,$si);return"<table>$J</table>";}if(!$_)$_=adminer()->selectLink($X,$m);if($_===null){if(is_mail($X))$_="mailto:$X";if(is_url($X))$_=$X;}$J=adminer()->editVal($X,$m);if($J!==null){if(!is_utf8($J))$J="\0";elseif($si!=""&&is_shortable($m))$J=shorten_utf8($J,max(0,+$si));else$J=h($J);}return
|
||
adminer()->selectVal($J,$_,$m,$X);}function
|
||
is_mail($qc){$xa='[-a-z0-9!#$%&\'*+/=?^_`{|}~]';$cc='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';$mg="$xa+(\\.$xa+)*@($cc?\\.)+$cc";return
|
||
is_string($qc)&&preg_match("(^$mg(,\\s*$mg)*\$)i",$qc);}function
|
||
is_url($Q){$cc='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';return
|
||
preg_match("~^(https?)://($cc?\\.)+$cc(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i",$Q);}function
|
||
is_shortable(array$m){return
|
||
preg_match('~char|text|json|lob|geometry|point|linestring|polygon|string|bytea~',$m["type"]);}function
|
||
count_rows($R,array$Z,$je,array$sd){$H=" FROM ".table($R).($Z?" WHERE ".implode(" AND ",$Z):"");return($je&&(JUSH=="sql"||count($sd)==1)?"SELECT COUNT(DISTINCT ".implode(", ",$sd).")$H":"SELECT COUNT(*)".($je?" FROM (SELECT 1$H GROUP BY ".implode(", ",$sd).") x":$H));}function
|
||
slow_query($H){$j=adminer()->database();$ui=adminer()->queryTimeout();$Gh=driver()->slowQuery($H,$ui);$g=null;if(!$Gh&&support("kill")){$g=connect();if($g&&($j==""||$g->select_db($j))){$se=get_val(connection_id(),0,$g);echo
|
||
script("const timeout = setTimeout(() => { ajax('".js_escape(ME)."script=kill', function () {}, 'kill=$se&token=".get_token()."'); }, 1000 * $ui);");}}ob_flush();flush();$J=@get_key_vals(($Gh?:$H),$g,false);if($g){echo
|
||
script("clearTimeout(timeout);");ob_flush();flush();}return$J;}function
|
||
get_token(){$Lg=rand(1,1e6);return($Lg^$_SESSION["token"]).":$Lg";}function
|
||
verify_token(){list($Bi,$Lg)=explode(":",$_POST["token"]);return($Lg^$_SESSION["token"])==$Bi;}function
|
||
lzw_decompress($Ia){$Yb=256;$Ja=8;$eb=array();$Yg=0;$Zg=0;for($s=0;$s<strlen($Ia);$s++){$Yg=($Yg<<8)+ord($Ia[$s]);$Zg+=8;if($Zg>=$Ja){$Zg-=$Ja;$eb[]=$Yg>>$Zg;$Yg&=(1<<$Zg)-1;$Yb++;if($Yb>>$Ja)$Ja++;}}$Xb=range("\0","\xFF");$J="";$wj="";foreach($eb
|
||
as$s=>$db){$pc=$Xb[$db];if(!isset($pc))$pc=$wj.$wj[0];$J
|
||
.=$pc;if($s)$Xb[]=$wj.$pc[0];$wj=$pc;}return$J;}function
|
||
script($Ih,$Ei="\n"){return"<script".nonce().">$Ih</script>$Ei";}function
|
||
script_src($bj,$Qb=false){return"<script src='".h($bj)."'".nonce().($Qb?" defer":"")."></script>\n";}function
|
||
nonce(){return' nonce="'.get_nonce().'"';}function
|
||
input_hidden($C,$Y=""){return"<input type='hidden' name='".h($C)."' value='".h($Y)."'>\n";}function
|
||
input_token(){return
|
||
input_hidden("token",get_token());}function
|
||
target_blank(){return' target="_blank" rel="noreferrer noopener"';}function
|
||
h($Q){return
|
||
str_replace("\0","�",htmlspecialchars($Q,ENT_QUOTES,'utf-8'));}function
|
||
nl_br($Q){return
|
||
str_replace("\n","<br>",$Q);}function
|
||
checkbox($C,$Y,$Ya,$ue="",$Ef="",$cb="",$we=""){$J="<input type='checkbox' name='$C' value='".h($Y)."'".($Ya?" checked":"").($we?" aria-labelledby='$we'":"").">".($Ef?script("qsl('input').onclick = function () { $Ef };",""):"");return($ue!=""||$cb?"<label".($cb?" class='$cb'":"").">$J".h($ue)."</label>":$J);}function
|
||
optionlist($Jf,$rh=null,$fj=false){$J="";foreach($Jf
|
||
as$pe=>$W){$Kf=array($pe=>$W);if(is_array($W)){$J
|
||
.='<optgroup label="'.h($pe).'">';$Kf=$W;}foreach($Kf
|
||
as$x=>$X)$J
|
||
.='<option'.($fj||is_string($x)?' value="'.h($x).'"':'').($rh!==null&&($fj||is_string($x)?(string)$x:$X)===$rh?' selected':'').'>'.h($X);if(is_array($W))$J
|
||
.='</optgroup>';}return$J;}function
|
||
html_select($C,array$Jf,$Y="",$Df="",$we=""){static$ue=0;$ve="";if(!$we&&substr($Jf[""],0,1)=="("){$ue++;$we="label-$ue";$ve="<option value='' id='$we'>".h($Jf[""]);unset($Jf[""]);}return"<select name='".h($C)."'".($we?" aria-labelledby='$we'":"").">".$ve.optionlist($Jf,$Y)."</select>".($Df?script("qsl('select').onchange = function () { $Df };",""):"");}function
|
||
html_radios($C,array$Jf,$Y="",$vh=""){$J="";foreach($Jf
|
||
as$x=>$X)$J
|
||
.="<label><input type='radio' name='".h($C)."' value='".h($x)."'".($x==$Y?" checked":"").">".h($X)."</label>$vh";return$J;}function
|
||
confirm($Ve="",$sh="qsl('input')"){return
|
||
script("$sh.onclick = () => confirm('".($Ve?js_escape($Ve):'Are you sure?')."');","");}function
|
||
print_fieldset($t,$Be,$qj=false){echo"<fieldset><legend>","<a href='#fieldset-$t'>$Be</a>",script("qsl('a').onclick = partial(toggle, 'fieldset-$t');",""),"</legend>","<div id='fieldset-$t'".($qj?"":" class='hidden'").">\n";}function
|
||
bold($La,$cb=""){return($La?" 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(array$Eg,array$Pd=array(),$yg=''){$J=false;foreach($Eg
|
||
as$x=>$X){if(!in_array($x,$Pd)){if(is_array($X))hidden_fields($X,array(),$x);else{$J=true;echo
|
||
input_hidden(($yg?$yg."[$x]":$x),$X);}}}return$J;}function
|
||
hidden_fields_get(){echo(sid()?input_hidden(session_name(),session_id()):''),(SERVER!==null?input_hidden(DRIVER,SERVER):""),input_hidden("username",$_GET["username"]);}function
|
||
enum_input($U,$ya,array$m,$Y,$tc=null){preg_match_all("~'((?:[^']|'')*)'~",$m["length"],$Le);$J=($tc!==null?"<label><input type='$U'$ya value='$tc'".((is_array($Y)?in_array($tc,$Y):$Y===$tc)?" checked":"")."><i>".'empty'."</i></label>":"");foreach($Le[1]as$s=>$X){$X=stripcslashes(str_replace("''","'",$X));$Ya=(is_array($Y)?in_array($X,$Y):$Y===$X);$J
|
||
.=" <label><input type='$U'$ya value='".h($X)."'".($Ya?' checked':'').'>'.h(adminer()->editVal($X,$m)).'</label>';}return$J;}function
|
||
input(array$m,$Y,$r,$Ba=false){$C=h(bracket_escape($m["field"]));echo"<td class='function'>";if(is_array($Y)&&!$r){$Y=json_encode($Y,128|64|256);$r="json";}$Xg=(JUSH=="mssql"&&$m["auto_increment"]);if($Xg&&!$_POST["save"])$r=null;$nd=(isset($_GET["select"])||$Xg?array("orig"=>'original'):array())+adminer()->editFunctions($m);$Zb=stripos($m["default"],"GENERATED ALWAYS AS ")===0?" disabled=''":"";$ya=" name='fields[$C]'$Zb".($Ba?" autofocus":"");$zc=driver()->enumLength($m);if($zc){$m["type"]="enum";$m["length"]=$zc;}echo
|
||
driver()->unconvertFunction($m)." ";$R=$_GET["edit"]?:$_GET["select"];if($m["type"]=="enum")echo
|
||
h($nd[""])."<td>".adminer()->editInput($R,$m,$ya,$Y);else{$_d=(in_array($r,$nd)||isset($nd[$r]));echo(count($nd)>1?"<select name='function[$C]'$Zb>".optionlist($nd,$r===null||$_d?$r:"")."</select>".on_help("event.target.value.replace(/^SQL\$/, '')",1).script("qsl('select').onchange = functionChange;",""):h(reset($nd))).'<td>';$be=adminer()->editInput($R,$m,$ya,$Y);if($be!="")echo$be;elseif(preg_match('~bool~',$m["type"]))echo"<input type='hidden'$ya value='0'>"."<input type='checkbox'".(preg_match('~^(1|t|true|y|yes|on)$~i',$Y)?" checked='checked'":"")."$ya value='1'>";elseif($m["type"]=="set"){preg_match_all("~'((?:[^']|'')*)'~",$m["length"],$Le);foreach($Le[1]as$s=>$X){$X=stripcslashes(str_replace("''","'",$X));$Ya=in_array($X,explode(",",$Y),true);echo" <label><input type='checkbox' name='fields[$C][$s]' value='".h($X)."'".($Ya?' checked':'').">".h(adminer()->editVal($X,$m)).'</label>';}}elseif(preg_match('~blob|bytea|raw|file~',$m["type"])&&ini_bool("file_uploads"))echo"<input type='file' name='fields-$C'>";elseif($r=="json"||preg_match('~^jsonb?$~',$m["type"]))echo"<textarea$ya cols='50' rows='12' class='jush-js'>".h($Y).'</textarea>';elseif(($qi=preg_match('~text|lob|memo~i',$m["type"]))||preg_match("~\n~",$Y)){if($qi&&JUSH!="sqlite")$ya
|
||
.=" cols='50' rows='12'";else{$L=min(12,substr_count($Y,"\n")+1);$ya
|
||
.=" cols='30' rows='$L'";}echo"<textarea$ya>".h($Y).'</textarea>';}else{$Qi=driver()->types();$Se=(!preg_match('~int~',$m["type"])&&preg_match('~^(\d+)(,(\d+))?$~',$m["length"],$B)?((preg_match("~binary~",$m["type"])?2:1)*$B[1]+($B[3]?1:0)+($B[2]&&!$m["unsigned"]?1:0)):($Qi[$m["type"]]?$Qi[$m["type"]]+($m["unsigned"]?0:1):0));if(JUSH=='sql'&&min_version(5.6)&&preg_match('~time~',$m["type"]))$Se+=7;echo"<input".((!$_d||$r==="")&&preg_match('~(?<!o)int(?!er)~',$m["type"])&&!preg_match('~\[\]~',$m["full_type"])?" type='number'":"")." value='".h($Y)."'".($Se?" data-maxlength='$Se'":"").(preg_match('~char|binary~',$m["type"])&&$Se>20?" size='".($Se>99?60:40)."'":"")."$ya>";}echo
|
||
adminer()->editHint($R,$m,$Y);$Xc=0;foreach($nd
|
||
as$x=>$X){if($x===""||!$X)break;$Xc++;}if($Xc&&count($nd)>1)echo
|
||
script("qsl('td').oninput = partial(skipOriginal, $Xc);");}}function
|
||
process_input(array$m){if(stripos($m["default"],"GENERATED ALWAYS AS ")===0)return;$u=bracket_escape($m["field"]);$r=idx($_POST["function"],$u);$Y=$_POST["fields"][$u];if($m["type"]=="enum"||driver()->enumLength($m)){if($Y==-1)return
|
||
false;if($Y=="")return"NULL";}if($m["auto_increment"]&&$Y=="")return
|
||
null;if($r=="orig")return(preg_match('~^CURRENT_TIMESTAMP~i',$m["on_update"])?idf_escape($m["field"]):false);if($r=="NULL")return"NULL";if($m["type"]=="set")$Y=implode(",",(array)$Y);if($r=="json"){$r="";$Y=json_decode($Y,true);if(!is_array($Y))return
|
||
false;return$Y;}if(preg_match('~blob|bytea|raw|file~',$m["type"])&&ini_bool("file_uploads")){$Vc=get_file("fields-$u");if(!is_string($Vc))return
|
||
false;return
|
||
driver()->quoteBinary($Vc);}return
|
||
adminer()->processInput($m,$Y,$r);}function
|
||
search_tables(){$_GET["where"][0]["val"]=$_POST["query"];$uh="<ul>\n";foreach(table_status('',true)as$R=>$S){$C=adminer()->tableName($S);if(isset($S["Engine"])&&$C!=""&&(!$_POST["tables"]||in_array($R,$_POST["tables"]))){$I=connection()->query("SELECT".limit("1 FROM ".table($R)," WHERE ".implode(" AND ",adminer()->selectSearchProcess(fields($R),array())),1));if(!$I||$I->fetch_row()){$Ag="<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"$uh<li>".($I?$Ag:"<p class='error'>$Ag: ".error())."\n";$uh="";}}}echo($uh?"<p class='message'>".'No tables.':"</ul>")."\n";}function
|
||
on_help($kb,$Eh=0){return
|
||
script("mixin(qsl('select, input'), {onmouseover: function (event) { helpMouseover.call(this, event, $kb, $Eh) }, onmouseout: helpMouseout});","");}function
|
||
edit_form($R,array$n,$K,$Zi,$l=''){$di=adminer()->tableName(table_status1($R,true));page_header(($Zi?'Edit':'Insert'),$l,array("select"=>array($R,$di)),$di);adminer()->editRowPrint($R,$n,$K,$Zi);if($K===false){echo"<p class='error'>".'No rows.'."\n";return;}echo"<form action='' method='post' enctype='multipart/form-data' id='form'>\n";if(!$n)echo"<p class='error'>".'You have no privileges to update this table.'."\n";else{echo"<table class='layout'>".script("qsl('table').onkeydown = editingKeydown;");$Ba=!$_POST;foreach($n
|
||
as$C=>$m){echo"<tr><th>".adminer()->fieldName($m);$k=idx($_GET["set"],bracket_escape($C));if($k===null){$k=$m["default"];if($m["type"]=="bit"&&preg_match("~^b'([01]*)'\$~",$k,$Ug))$k=$Ug[1];if(JUSH=="sql"&&preg_match('~binary~',$m["type"]))$k=bin2hex($k);}$Y=($K!==null?($K[$C]!=""&&JUSH=="sql"&&preg_match("~enum|set~",$m["type"])&&is_array($K[$C])?implode(",",$K[$C]):(is_bool($K[$C])?+$K[$C]:$K[$C])):(!$Zi&&$m["auto_increment"]?"":(isset($_GET["select"])?false:$k)));if(!$_POST["save"]&&is_string($Y))$Y=adminer()->editVal($Y,$m);$r=($_POST["save"]?idx($_POST["function"],$C,""):($Zi&&preg_match('~^CURRENT_TIMESTAMP~i',$m["on_update"])?"now":($Y===false?null:($Y!==null?'':'NULL'))));if(!$_POST&&!$Zi&&$Y==$m["default"]&&preg_match('~^[\w.]+\(~',$Y))$r="SQL";if(preg_match("~time~",$m["type"])&&preg_match('~^CURRENT_TIMESTAMP~i',$Y)){$Y="";$r="now";}if($m["type"]=="uuid"&&$Y=="uuid()"){$Y="";$r="uuid";}if($Ba!==false)$Ba=($m["auto_increment"]||$r=="now"||$r=="uuid"?null:true);input($m,$Y,$r,$Ba);if($Ba)$Ba=false;echo"\n";}if(!support("table")&&!fields($R))echo"<tr>"."<th><input name='field_keys[]'>".script("qsl('input').oninput = fieldChange;")."<td class='function'>".html_select("field_funs[]",adminer()->editFunctions(array("null"=>isset($_GET["select"]))))."<td><input name='field_vals[]'>"."\n";echo"</table>\n";}echo"<p>\n";if($n){echo"<input type='submit' value='".'Save'."'>\n";if(!isset($_GET["select"]))echo"<input type='submit' name='insert' value='".($Zi?'Save and continue edit':'Save and insert next')."' title='Ctrl+Shift+Enter'>\n",($Zi?script("qsl('input').onclick = function () { return !ajaxForm(this.form, '".'Saving'."…', this); };"):"");}echo($Zi?"<input type='submit' name='delete' value='".'Delete'."'>".confirm()."\n":"");if(isset($_GET["select"]))hidden_fields(array("check"=>(array)$_POST["check"],"clone"=>$_POST["clone"],"all"=>$_POST["all"]));echo
|
||
input_hidden("referer",(isset($_POST["referer"])?$_POST["referer"]:$_SERVER["HTTP_REFERER"])),input_hidden("save",1),input_token(),"</form>\n";}function
|
||
shorten_utf8($Q,$y=80,$Xh=""){if(!preg_match("(^(".repeat_pattern("[\t\r\n -\x{10FFFF}]",$y).")($)?)u",$Q,$B))preg_match("(^(".repeat_pattern("[\t\r\n -~]",$y).")($)?)",$Q,$B);return
|
||
h($B[1]).$Xh.(isset($B[2])?"":"<i>…</i>");}function
|
||
icon($Ld,$C,$Kd,$wi){return"<button type='submit' name='$C' title='".h($wi)."' class='icon icon-$Ld'><span>$Kd</span></button>";}if(isset($_GET["file"])){if(substr(VERSION,-4)!='-dev'){if($_SERVER["HTTP_IF_MODIFIED_SINCE"]){header("HTTP/1.1 304 Not Modified");exit;}header("Expires: ".gmdate("D, d M Y H:i:s",time()+365*24*60*60)." GMT");header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");header("Cache-Control: immutable");}@ini_set("zlib.output_compression",1);if($_GET["file"]=="default.css"){header("Content-Type: text/css; charset=utf-8");echo
|
||
lzw_decompress("h:M<><4D>h<EFBFBD><68>g<08>б<EFBFBD><14><11>\"P<EFBFBD>i<EFBFBD><EFBFBD>m<EFBFBD><EFBFBD>cC<EFBFBD><EFBFBD><EFBFBD><EFBFBD>d<<3C><>f<EFBFBD>a<EFBFBD><61>:;NB<4E>q<EFBFBD>R;1Lf<4C>9<EFBFBD><39>u7%<12>d\\;3<1B><>A<EFBFBD><41>`%<17>E<EFBFBD>!<21><><EFBFBD>e9&<26><08><>r4<72>M<EFBFBD><4D>A<EFBFBD><41>v2<76>\r&:<3A>Φs<16><><06>0<EFBFBD><30>*3<>Má<4D><C3A1><EFBFBD>-;<3B>L<EFBFBD>C@<40><>i:dt3-8a<38>I\$ã<11><>e<1D><0C><> <09><>#9lT!Ѻ<><D1BA>><3E>e<06><>\0<EFBFBD>d<EFBFBD><EFBFBD>d<EFBFBD>C<EFBFBD><EFBFBD>:6\\<EFBFBD>c<EFBFBD>A<EFBFBD><EFBFBD>rh<><68>M4<4D>k<EFBFBD><6B><EFBFBD><EFBFBD>Z|<7C>O+<2B><>f<EFBFBD>9<EFBFBD><39>X<EFBFBD><58>7h\"<EFBFBD><EFBFBD>Si<EFBFBD><EFBFBD><1E><>|<7C>+9<><39><EFBFBD><EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD>-4W<34>~<04>T:<3A>zkH<><48>b{<EFBFBD><EFBFBD><EFBFBD>&<26>єt<18><>:ܸ.K<>v8#\",7!pp2<70><32>\0\\<06><> <20>\$<EFBFBD>r7<><37><EFBFBD>ތ#<23><>i\"<EFBFBD>a<>T<EFBFBD>(L<08>2<EFBFBD>#:\0Τ<EFBFBD>x<EFBFBD><1D><>XFlj<>d<EFBFBD>&<26>jv<6A><76><EFBFBD><EFBFBD>ڗ<EFBFBD><DA97>@d<>E<EFBFBD><45><EFBFBD><EFBFBD><EFBFBD>!,9.+<2B>`J<><4A>ahbDP<<05><>|\"<18><><EFBFBD><EFBFBD><EFBFBD>Cp<43>><3E>ˑ+b2 L<><16><>{<EFBFBD>F<11><><EFBFBD>Q<>|<7C><><EFBFBD><EFBFBD>r<EFBFBD><72>Kl<4B>ɏ<>_<18>t=<3D><><EFBFBD>b<19>K|<7C><02><10><><EFBFBD><EFBFBD><EFBFBD>\r=<3D>R<EFBFBD>><3E><><EFBFBD><EFBFBD>0<EFBFBD><30>(<28><><EFBFBD>k<EFBFBD>b<EFBFBD>JU,PUumI.t<>A-K<><4B>X<EFBFBD>4<EFBFBD>z<EFBFBD>)MP<4D><50>k<><10><>3e`<60>N>D#<23>9\\<EFBFBD><EFBFBD>(YT<59><54>@<40>h<EFBFBD>L<14><>1]ȴ<><C8B4>ͺNKն2\\73i/V<><56>l<EFBFBD><0C>Y<>җBA<42>/[J<><4A>ĘВ\r;'<27>2^텪<>b<EFBFBD>ۣ3<DBA3>T=0H<30>8\r<EFBFBD>+6<><36>kf<>C<EFBFBD>]q<><71>W)<29><0C><><EFBFBD>²C<C2B2><43>2`A<><06><>82<38>!<05><>hm<>вGD<47><44><EFBFBD><EFBFBD>2-C<><43><EFBFBD>Yc`<60><<3C>s<><73>6<EFBFBD>2<EFBFBD><32><EFBFBD>9<EFBFBD>u<EFBFBD><75><EFBFBD>y<><79>ҝMgy<67>=,CZO~^3<><33><1C>0<EFBFBD>2<EFBFBD><<3C><>k0<6B><30><EFBFBD>wM<77>{d#`Zۀ<5A><DB80><EFBFBD><EFBFBD><EFBFBD><DEBA><EFBFBD><EFBFBD><EFBFBD>6<EFBFBD>C%<25><><EFBFBD>=Rq<><71><EFBFBD><EFBFBD>_+<2B><>-<2D>K><3E><>\n'G<><0E><>A<EFBFBD>\$<EFBFBD><EFBFBD><EFBFBD><EFBFBD>^<5E>j><<3C>gf<67>h<EFBFBD>m<0C>b*/\$\$l<EFBFBD><1A>ش<EFBFBD>g)Aj<><6A> w<>#ᣃ<><E1A383><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TN<54><4E>]<5D>T<EFBFBD><15><>%Z<07><><EFBFBD>jJ<6A><4A><EFBFBD><EFBFBD>Cf4<13><><EFBFBD>zF<1D>'<27>*<0E> x<><78><EFBFBD><06><>ho&k\r<EFBFBD><1F>,<2C><08>r<01>:>s(<28>LAs<><15><><EFBFBD>5Ct<13><><EFBFBD>n<EFBFBD>6<EFBFBD><36><EFBFBD> ll\\9D<14><>\\!<21><>mv<6D>\0<EFBFBD>A{9`<60>.<2E><><EFBFBD>סS<D7A1>lg6<><36><EFBFBD>!.2<EFBFBD><EFBFBD>0<EFBFBD>P<EFBFBD>Ԡ<EFBFBD>i\r\$7<EFBFBD>w<EFBFBD><EFBFBD><17>;G<><47>\$<EFBFBD>0<EFBFBD>CI<43>^<5E>J\n<02>L<EFBFBD>Pc<50><63>'<27>*Eh<45><68><17>b<EFBFBD><11>;<3B>p<EFBFBD>B<EFBFBD><42>(<28>x<EFBFBD>:D<0E>L<01>.j<>9AC@<0B>I3jf<6A>5sI`X}<05><>Ҕ#<23><><11>7<EFBFBD><37>T`d<><64><EFBFBD>jhH49S\nq<><71>HJQ <20>H`,F<><46>P<EFBFBD>0\\{<EFBFBD><EFBFBD>m\r<EFBFBD>~@20u! \$<EFBFBD>PoQ<EFBFBD>4ǚ<EFBFBD>\nZL<>M<EFBFBD><4D>B<EFBFBD><42>k)@<40>d<EFBFBD><64>SL<>pv<70><76><EFBFBD>y<>ЃB<D083><0C>^o<10><03><><EFBFBD>*<2A>R<EFBFBD>\"<EFBFBD><EFBFBD><01><>#<23><>rͥS;\r4<EFBFBD>&G<>I<15><>T <09>r<EFBFBD><72><EFBFBD>9=6<><36><EFBFBD>Q<1B>T\0<EFBFBD>\0<EFBFBD><EFBFBD>f#<><7F>=\$<EFBFBD><1E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>H6<48>P<EFBFBD>Y<EFBFBD>:<3A>G\$<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>9:a<>3Hz;G<>\r!hJ<68>n<EFBFBD>7<EFBFBD><37> <09>oY<6F><13><1C><0C><><EFBFBD><EFBFBD>WLv<4C>ې<EFBFBD>i|<7C><><EFBFBD>%<25>-<2D><><02>d\$<EFBFBD>p<>D<EFBFBD><44>R2T\r<1D>paU<61><55>n<EFBFBD>5r<35><72>j<EFBFBD>\$<EFBFBD>r%D<><44><EFBFBD>)\$GڃBu<EFBFBD><EFBFBD>:<1A><>`<60>(l<0C><><06>SD)I <08><><EFBFBD><EFBFBD>9<EFBFBD>*ꁗ\rt<EFBFBD>2<EFBFBD> <20>zI<7A><49><EFBFBD>g<EFBFBD>[X<>c,u<>\rvJ5?<3F><><EFBFBD><EFBFBD>\"<EFBFBD>:<3A>^<5E>.u<>J<>P<EFBFBD>o\$t\$<EFBFBD>18<EFBFBD><EFBFBD>\nnK<EFBFBD><EFBFBD>T%EZ,6<><36>DH<44>V<13>i<F386AAB9>&z<><7A>xpdr<64>x*<0B>}ʐR<CA90>25+<2B><0E>ѓ<EFBFBD>f<EFBFBD>2<EFBFBD>w<EFBFBD><77>q<>0X1<58>2dX<64>ߢ<>̏W<CC8F><57>ËV8f\"냐q(u<><75>E<1D><>G<EFBFBD>qM<>#а<>#K<>3WA<57>v<EFBFBD>Y<EFBFBD><59><EFBFBD><EFBFBD>Þe<C39E>K]t<><74>]E<18><>j<EFBFBD>=SX<53><19><>@<40><>Ӈ\r<EFBFBD>Ә\$<EFBFBD><EFBFBD>9<16><>ܬ0<05>P7\"D.匎<;<3B><05>Nj<4E>=<3D><><EFBFBD><EFBFBD><EFBFBD>^<5E>mmڒG<DA92>68 <20>C<>%v'<27>y<EFBFBD><79>k/<14>^<0C>5<EFBFBD><35><11>3<EFBFBD>@<40>.ڛ<><1B>k<EFBFBD>a<EFBFBD>*<2A>D<EFBFBD><44><EFBFBD><1A><><0E>:<3A>7<EFBFBD><37>C}<7D><>`<60>`<60>`)<29>7<EFBFBD><37><19><>| <09>3<EFBFBD> i<>騽<EFBFBD><E9A8BD>4<EFBFBD>\0.:<01>Q<EFBFBD>L<1B><><EFBFBD>ͨ<D89C><CDA8>f<>'<27>%<0C>ݩM <09><><EFBFBD>Y3<59>\0<EFBFBD>##tP6<50>(<28>B<EFBFBD>d<1A><><EFBFBD><EFBFBD>o<EFBFBD>y<EFBFBD>6<EFBFBD>|<7C>5<><35>IH7<48><37><EFBFBD><EFBFBD><EFBFBD><EFBFBD>z?<3F>(<11><>Ŗ\$<0E>RWT<57>谦<EFBFBD>:<3A><>(<28><>`r϶i<CFB6><0E><>s<EFBFBD>=D\\<EFBFBD><EFBFBD>,kr<6B>1<EFBFBD><31>ٓ2<D993>`<60><>A<>9<EFBFBD><1B>&n<><6E>~<11><>Ҭ<>6;<3B>vp <20>M#<23>]<5D><><1D><>ɴ<EFBFBD><C9B4><EFBFBD>A<><41><EFBFBD>iJ<69><4A>.<2E><><EFBFBD><EFBFBD>t<EFBFBD><74><1C><><EFBFBD>Ys<59>OPwĸ<77>m<EFBFBD><6D>Z<EFBFBD><5A><EFBFBD><EFBFBD><EFBFBD>AU<>ʷJ<CAB7>N?<3F><><EFBFBD><EFBFBD>z<EFBFBD>3\$P<EFBFBD>qs<EFBFBD>U9,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>#<23><>5Pnb<6E><62>uNѐ{N`<60>饙<EFBFBD><E9A599><06>i<EFBFBD><69>w\rb<EFBFBD>&E<>\\tg<EFBFBD><EFBFBD>b<EFBFBD>a<EFBFBD>1<EFBFBD>+m<>pw#<23>vl<76><6C>U<EFBFBD><55><EFBFBD><EFBFBD><EFBFBD>\0<EFBFBD>e.<2E><>(<28>wb@<40><0C><><EFBFBD>\\<EFBFBD>w<EFBFBD>(<28>)<29><>E<EFBFBD><45><EFBFBD>;<3B>Z<EFBFBD>]/&<0B><><EFBFBD>|>Q<15>\"c <F<>\r<EFBFBD>7<><37><EFBFBD><EFBFBD>ϵ\\<EFBFBD>'<14>S<>fe<66>\rR<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Vlo/.<2E><>\n<EFBFBD><EFBFBD><EFBFBD>F<1C><>o<EFBFBD> <20>eh<><68>e<EFBFBD><65>jנ<6A>T<>sa4<61>2<05>2<EFBFBD> <20>`o<>\\<EFBFBD>A?<3F><>]<5D>IoB[<5B>{7'<27><>Q%<25>6<EFBFBD>s7\$Ó<EFBFBD><EFBFBD><EFBFBD>~%<25><>u)<>5i<35><69><EFBFBD>0<>#<23><><EFBFBD><EFBFBD>\r<EFBFBD>f<EFBFBD><0F><>MX<4D>N\\ɇ\0<EFBFBD><EFBFBD><EFBFBD>,T<><54><EFBFBD>ETo\0<EFBFBD>{o<><6F>R<EFBFBD><52>r<EFBFBD>^<5E><><EFBFBD><EFBFBD>C @Z.C,<03><>c<06>'<02>J-<2D>BL<>\r<EFBFBD>P<EFBFBD>CD\"<EFBFBD>b<0C>^.\"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><06>h<05><>\0<EFBFBD><08><><08><>\r\0<EFBFBD><0C><>\n`<60> <20> <20><0C>n<0E>o <09><><0C><>\r<EFBFBD><EFBFBD>\r<EFBFBD><EFBFBD>0<>`<60><06><>0<><10> <09><>\rp<EFBFBD> <20> 0<>\n <20>F@<40>`<60> V\0<EFBFBD>\n<EFBFBD><EFBFBD>\r\0<EFBFBD>\n<EFBFBD>j<0E><>\n@<40>\0<EFBFBD>\r<EFBFBD><EFBFBD>\n<EFBFBD><EFBFBD> <20>\n@<40>@<40>\r\0<EFBFBD>& <20>\n@<40> <20>@<40> <20><0E>z<07><>Ƃ*<2A><>w<05>q0g<06>5<06>aPxG<78><47><10><08><> <10> <09><>\n<10>\n<EFBFBD><EFBFBD><10><0B><>\rp<EFBFBD><0C><>\rp<EFBFBD>\r<EFBFBD><EFBFBD> <09><>0<>\r<10><0E><>`<60>\r@<40>@<40><> <20><><EFBFBD><EFBFBD><05>^\r <20>\0<EFBFBD>\r<EFBFBD>d@<40><0C><>3 <20><12>1Q9<13>AB<><05><<3C>t<EFBFBD>1N?<3F>S<06><><15>v-<2D>a<07><>p<><08><> p<>P<>\n<EFBFBD><EFBFBD><0B><>0<><0C><><18><><11>\0<EFBFBD>@<40><19><><10><0F><>Ѱ\r<EFBFBD>^<06><>\"i@<40>\n<EFBFBD><EFBFBD> <20>6 <20>\0<EFBFBD> p\n<EFBFBD><EFBFBD>\n<EFBFBD><EFBFBD>`<60> <20>qޒQD<51><44>B<EFBFBD>M<15>d9<64>TUq<55>1<><07><>2<16> <16>\n2<17>rR#<18><>2+\r<EFBFBD>/<19><>#<23><>@<40><0E>\" <20>Q\r<EFBFBD><EFBFBD><08><>\r<EFBFBD><EFBFBD><0C><>@<40>\n<EFBFBD>h\n<EFBFBD><EFBFBD>〪<EFBFBD><EFBFBD><EFBFBD>\0<EFBFBD>`<60> <09><>@<40>!<21>;<13>Co<>Uҋ2<><06><><1E><><1F>e Qk <20>p <20><0C><>!P<>3с!<21><>r%<18><><10>p<> <20>,<2C><>`<60><0C><>\n<EFBFBD>`\n@<40><0C>ff <20><06><>`<60> <20>\n<EFBFBD><EFBFBD>@<40> <09><>F#<23>`p<0C><># <20><06><><EFBFBD>o<EFBFBD><6F><EFBFBD>\\%Bl<42><6C>?<3F><>M-jP<6A><50>r<><72>3/<07>3*Qlp<> p<>\r`<60>=<3D><>\n\0_><3E>1<18>'<18><>#\0<EFBFBD>>\0<EFBFBD>\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><08><><EFBFBD> <20>\n@<40><0E><> f<>0<EFBFBD>'<27>@Ā<><C480><EFBFBD><EFBFBD><EFBFBD>\0<EFBFBD>\rd<EFBFBD>Fh<EFBFBD>I\$<EFBFBD>`<60><04><>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>C<EFBFBD>ȕPݔT<0E>><05>7\0]ẸʉDG<44><47><EFBFBD>AC<41>\\BMDԈ<EFBFBD><EFBFBD><EFBFBD>fmd<6D><64>(\r<EFBFBD>OG<EFBFBD>F<EFBFBD><EFBFBD>iDN<EFBFBD><EFBFBD>ɜn2<>4tΔwFt<46><74>F<EFBFBD><46><EFBFBD><EFBFBD><EFBFBD>H<EFBFBD>CԈu+<2B><><EFBFBD>\$K<EFBFBD>6蔓E<EFBFBD><10>.AKԏL*1JK><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD><4D>H<EFBFBD><48>\"GN<>Pj<50>E<>><3E> <20>H&5H<35><48>LM#E<07>P<06>c<EFBFBD><63>c8<63><38>l<0F><><EFBFBD><EFBFBD>,<2C><><EFBFBD>C<EFBFBD><43>N<EFBFBD>Pt<50>@V t<14>\n<EFBFBD><05><>ݴ<EFBFBD>I kG<6B>H <09>)D(<28>JPl<7F>1jn<6A>lԍ<6C><D48D>J<EFBFBD>~<7E>*&<26>n\\<EFBFBD><EFBFBD><01>HUfLk<>K<EFBFBD><4B>r<EFBFBD>F<EFBFBD><46><EFBFBD><|HNx\\<EFBFBD> Nl<4E>N<EFBFBD><4E><EFBFBD>I<EFBFBD><49>\0rzMt<EFBFBD>U|Z<><5A><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD>Ԙ<EFBFBD>\r<EFBFBD>HC<EFBFBD>B\"<EFBFBD>@<40>b<EFBFBD>cn<63>A<EFBFBD><41><EFBFBD><EFBFBD>J9Ort<>A4<41>\r<EFBFBD><1E>@h<><68>A^`<60>^<5E>V0<56>^!L<>jU<6A><55><EFBFBD><1C>.<2E>^\r\"<EFBFBD><0C><><EFBFBD>ka<><61><EFBFBD>lp<6C><70>d<EFBFBD> <20><><EFBFBD>}\0<EFBFBD><EFBFBD><EFBFBD>N<><4E><EFBFBD><06><><EFBFBD>IGP<47><50><EFBFBD>U<EFBFBD>YtyMPr<50><14>Y<EFBFBD><59>E<15>ԥx<D4A5><78><EFBFBD><EFBFBD>6`<0E>`jg<><67><0F>1SB<53>܂<EFBFBD><DC82><15><0C><>X<EFBFBD>8<EFBFBD>V?Id[I<><49>Q.<2E><><EFBFBD><02><><EFBFBD>`<60><10>i<EFBFBD><69><EFBFBD>̲vԞ<76><D49E>U)Ԝ<><D49C><EFBFBD>\n2PV<EFBFBD>~<7E><> <20><><EFBFBD><EFBFBD><EFBFBD>\"\"&<26><>r]-<2D> <20>p*<2A>\0f\"<EFBFBD>Kj`<60>q\nJ<EFBFBD>\"q<><71>F<>.<2E><>\"@r<><72>(<28>`<60><0E>3q>\"<EFBFBD><EFBFBD>f<EFBFBD><EFBFBD>\r\$ح<EFBFBD><EFBFBD> <20>R1<52><1C>h&H<0C>`Z<>V u+Moʬ<6F>\n3J<EFBFBD>\r Đ<>2I<32> <20>D'<27>!S0W0J?y<16>pjZ.<2E>\n\r <20><>pw<70>\"<EFBFBD>-+<2B>zr!`<60>|v2\nl<EFBFBD>f(<28>m<EFBFBD><<3C><>=<0B>F\r<EFBFBD>Q}<7D><>~7<><05>\r<EFBFBD><EFBFBD>#<23><>o<03>3<EFBFBD><33>}<7D><0B><>x<<3C>~<7E><>W<><0B><01>iE<69>ã<EFBFBD><C3A3>[<5B>8\n<EFBFBD>bjj<EFBFBD>\r<EFBFBD><EFBFBD>: <20><><EFBFBD><1A>)v<><76>'{<EFBFBD><EFBFBD>V<EFBFBD>q\no{<EFBFBD><EFBFBD><EFBFBD>)C<><43><1A><>߂<EFBFBD>i<EFBFBD><69><EFBFBD>\r<EFBFBD>%<>遀<EFBFBD><0B><>C<EFBFBD>(<28><>k<EFBFBD>k<EFBFBD><0B><><EFBFBD><EFBFBD><EFBFBD>4ؐd<18><> <20><><EFBFBD><EFBFBD><EFBFBD><18>jXLN<4C>(A<>}xe<78><65><EFBFBD>|<7C><>w<EFBFBD><77><EFBFBD>G<><17>xh<0B><><EFBFBD>X<58>x<EFBFBD>\r<EFBFBD><EFBFBD>%K<><4B><EFBFBD>oq<6F>x<05><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>8s<38>4e<34><65><07>xρ<78><CF81><EFBFBD>n<16>*4F<34>c<EFBFBD>8~<7E>h<EFBFBD>Ip]<5D><>{<EFBFBD><EFBFBD><EFBFBD>%<25>( <20>Ӓ<EFBFBD><D392><<3C>V<0C><><EFBFBD><EFBFBD><EFBFBD>C<EFBFBD>B<EFBFBD><42>{w<EFBFBD><EFBFBD><EFBFBD><EFBFBD>O<EFBFBD><EFBFBD>ƣ<EFBFBD><EFBFBD>}<7D>Q<EFBFBD>8<17>[<5B><><EFBFBD><EFBFBD>[<5B>{<EFBFBD>cT%<25>&<26><>o<EFBFBD><6F><EFBFBD><EFBFBD><EFBFBD>:<3A>*b<0B>E<EFBFBD>`<60><>m<>I<>YW<59>k<11>8<EFBFBD><38>Yo<59><6F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>u<EFBFBD>)<29><><EFBFBD><EFBFBD>Y5o<35>9<EFBFBD><39>ަ<EFBFBD><DEA6><EFBFBD>ى<EFBFBD><D989><<3C>8(<0B>?<3F>\0[s<>@*8<><38><EFBFBD>}<7D><>ߟ9g<39>\rӟ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><0B>\0<0E><><EFBFBD>\n'w±x)٩<DD8C><19><><EFBFBD><07>92<05>Z1<5A><31><EFBFBD>@[I<>+<2B><>_<EFBFBD><5F>5<EFBFBD>7=<3D><>D<0C>q<EFBFBD>z!}<7D>K<EFBFBD><4B>Nd<19><><EFBFBD>3<EFBFBD>\0<EFBFBD><0B><>q<EFBFBD>+<2B><>C<EFBFBD><43><EFBFBD><EFBFBD>Y_<59>g<>8<EFBFBD><0B>y<EFBFBD><79><EFBFBD><EFBFBD>ډ<EFBFBD>K<EFBFBD>4<EFBFBD>{<EFBFBD><EFBFBD>S<EFBFBD>8<EFBFBD>2Z<EFBFBD><EFBFBD>z<EFBFBD><EFBFBD>X\0Ϩz<EFBFBD><EFBFBD><EFBFBD>S<EFBFBD><EFBFBD><EFBFBD>ڱ<EFBFBD><EFBFBD>e<EFBFBD> <20>\r<EFBFBD>><3E>:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǭ<EFBFBD>_<EFBFBD>ZÏ<5A><C38F>e<><65><EFBFBD><EFBFBD><EFBFBD><1A><>:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>u<EFBFBD><75><EFBFBD>{<EFBFBD>U<EFBFBD>M<><4D><EFBFBD>a<EFBFBD><61><EFBFBD><EFBFBD><16>B<EFBFBD><42>zɈ<7A><15><>b2YS<59>WJ(wOwӁwm<77><6D>تZN<>l<EFBFBD><6C>˧C<CBA7><43>9<EFBFBD><39><19><><EFBFBD><EFBFBD><EFBFBD>8BD<42><0C>6<EFBFBD><36><EFBFBD>Zy<5A>x{<EFBFBD><EFBFBD><06>;!<21>[m<><6D><EFBFBD><EFBFBD><EFBFBD>{}<7D><1B>)<29><1B>#<23>4<EFBFBD>[<5B><1F><>(<28>b<EFBFBD><62><EFBFBD>ɘ<EFBFBD><07><>Ն<EFBFBD>u<EFBFBD><75><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,O<>\"F<EFBFBD>7<EFBFBD>y?<3F>9<EFBFBD><39><EFBFBD>nd<1B>}<7D><><EFBFBD><1A><>{ݍs<>{<EFBFBD><EFBFBD><EFBFBD>e<EFBFBD>ʦ>\"<EFBFBD>cc<EFBFBD><EFBFBD><EFBFBD><EFBFBD>d<EFBFBD><EFBFBD><EFBFBD>cs<EFBFBD>{<EFBFBD><EFBFBD>vdCN<43>[<5B><><EFBFBD>GM<>C瓭<43>DE@");}elseif($_GET["file"]=="dark.css"){header("Content-Type: text/css; charset=utf-8");echo
|
||
lzw_decompress("h:M<><4D>h<EFBFBD><68>g<08><01><>h0<1D>LЁ<18>d91<18>S!<21><> <18>F<EFBFBD>!<21><>v}0<><30>f<EFBFBD>a<EFBFBD><61> G2<10>Na<1D>'3I<33><49>d<EFBFBD>K%<25> <09><>m(\r&<26>X<EFBFBD><58>o;NB<4E><42><EFBFBD>y>2S<32>*<0C>^#<23><18>Q<><51><EFBFBD>1=<3D><><EFBFBD>J<EFBFBD><4A>W^<5E><>L<EFBFBD><4C><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD><6F><EFBFBD><EFBFBD>c!<21><>f<EFBFBD><0C>6<EFBFBD>m<EFBFBD><6D>a<19><><EFBFBD>l4&1Lf<4C>9<EFBFBD><39>u7VDc3<18>n82IΆ<11><>,:5<06><19><>r<EFBFBD>P<EFBFBD><50>1<EFBFBD><31>m<EFBFBD>><3E>5<EFBFBD><1C>W/<2F><>Fc<46><63><EFBFBD>Dh2<68>L<EFBFBD>\rN<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Wo&<11>hk<68><6B>e2ٌ<32><D98C>b12Ƽ~0<7F> <20><>D}N<>\0<EFBFBD>f4<EFBFBD>M<EFBFBD>C<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>n=<3D><>p<EFBFBD><0F>Zش<5A>N<EFBFBD>~<7E>;<3B><1B><>-C <20><>%<25>z<EFBFBD>99<39>P<EFBFBD><06><><EFBFBD>\"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>;<3B>\0f<EFBFBD><06>8<EFBFBD>9<0C>p<EFBFBD>:<3A>m<EFBFBD>8<0F><><EFBFBD>@\nX<EFBFBD>:<3A><>r<EFBFBD>3#<23><><EFBFBD><EFBFBD>C<EFBFBD>[<16>Cx<43>#<23><>I2\\<EFBFBD>\"<EFBFBD><EFBFBD>p<EFBFBD><EFBFBD><EFBFBD><EFBFBD>]#<23><>5R<35>r6<72>#<23>L7<0C><><EFBFBD>!H<>\$<EFBFBD>\$IRd<EFBFBD>'ˉ8] <09><>x<EFBFBD><78>+<2B><><EFBFBD>><3E>C<EFBFBD>@-<2D><><EFBFBD>;<3B><><EFBFBD>b<EFBFBD><<14><>2Ô<32>N4,<0E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-Mr<4D>6Ic<49>X4<58>a<18><1B><>5KE<4B>Th@1@<40><><0C>R<EFBFBD>K<EFBFBD>9\r<EFBFBD>(<28>9<EFBFBD>#8<>G<EFBFBD>CpwID5<10>2<EFBFBD>l\"_'<27><>UB<1B><>U<EFBFBD>9c@<40>G=C\n<EFBFBD><1C>S<EFBFBD><53>0<EFBFBD><30><EFBFBD>j<1C><>7PU<50><55><1A><><1D>9J]<5D><\nƲσz<EFBFBD>?B<><42>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD>4\r/<2F>P\r<EFBFBD>M[X<><58>F<EFBFBD>_<13><>j<EFBFBD><6A><EFBFBD>H<EFBFBD>bnC&<26>¡f%@cC^.2<EFBFBD>8<EFBFBD>C<EFBFBD>}^<5E><01>sw<73>L<EFBFBD><4C>/<1C>5O<35>M<><4D><EFBFBD>ڳ *X<>?<3F>b<EFBFBD>.I<>g<EFBFBD><67>&<26>aq<61>݊><3E><><EFBFBD><EFBFBD>FN<46><4E>-<2D>`<1B>y<EFBFBD><79>4<EFBFBD>s<EFBFBD><73><1F>j\\&:<01>Sa<53>P;<3B><><EFBFBD><01>H<EFBFBD><48><EFBFBD><0E><>X<EFBFBD><58>ޯ<EFBFBD><DEAF><12>d<0F>kt?.<2E><><EFBFBD>,ZO<5A><0C>@@8<05>Z3<5A>c<EFBFBD>\"<EFBFBD><EFBFBD>ß\n<EFBFBD>=A<>H1\\<EFBFBD>Z<EFBFBD>^/k<><6B><EFBFBD>L<CE83>uC\\<1B>c<EFBFBD>)0O<30><4F>M<EFBFBD><4D>lpr<19><>7<02>\r<EFBFBD><EFBFBD>q<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>WRa<18><1B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>c@<40><><EFBFBD>wm<77>k/<2F>8<1B>*?<19>̐<>4<EFBFBD>5<EFBFBD>\\m<16><><EFBFBD>k<EFBFBD><6B>><3E>d1n<><6E>UQ#<23><><EFBFBD><EFBFBD><EFBFBD>w<EFBFBD>憟<EFBFBD>Lo&hĪPrnR,5<><14><07><>z<EFBFBD>\"\$3<><33>dYH(p\r<01>ALAC<41>)pT<70>Pl<50>!\"L<EFBFBD><EFBFBD>8<06><>R<EFBFBD><52>&<26>\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Z0P8<50><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD><0C>J <09>`<60><03>e<EFBFBD>0<EFBFBD> <09><><EFBFBD><18>1<EFBFBD><05> <09>D<18><>Js<4A>H<EFBFBD><48><EFBFBD>)<05>k<EFBFBD> <20><>[<5B><><EFBFBD>C<EFBFBD>y<0B>pjx,\rA<EFBFBD><1B><>m!<21><10><19><h1<68><31>");}elseif($_GET["file"]=="functions.js"){header("Content-Type: text/javascript; charset=utf-8");echo
|
||
lzw_decompress("':<3A>̢<03><><EFBFBD>i1<69><04><>1<EFBFBD><31> 4<><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Q6a&<26><><EFBFBD><EFBFBD>:OAI<41><49>e:NF<4E>D|<7C>!<21><><0F>Cy<43><79>m2<6D><32>\"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>r<<3C>̱<EFBFBD><CCB1><EFBFBD>/C<>#<23><><EFBFBD><EFBFBD>:DbqSe<1E>J<EFBFBD>˦Cܺ\n\n<EFBFBD><EFBFBD>DZS\rZ<EFBFBD><1C>H\$RAܞS+XKvtd<74>g:<05><12>6<EFBFBD><10>EvXŞ<58>j<EFBFBD><6A>mҩej<65>2<EFBFBD>M<EFBFBD><13><><EFBFBD><EFBFBD>B<EFBFBD><42>&ʮ<16>L<EFBFBD>C<EFBFBD>3<><33><EFBFBD>Q0<51>L<EFBFBD><4C>-x<>\n<EFBFBD><19>D<13><><EFBFBD>yNa<>Pn:<3A><05><19><><EFBFBD>s<EFBFBD><73>͐<EFBFBD>(<28>cL<63><4C>/<2F><18><>(<28>5{<EFBFBD><EFBFBD><EFBFBD>Qy4<EFBFBD><EFBFBD>g-<2D><><EFBFBD><EFBFBD><EFBFBD>i4ڃf<DA83><66>(<28><>bU<62><55><EFBFBD>k<EFBFBD><6B>o7<6F>&<26><>ä<>*ACb<43><62><EFBFBD><EFBFBD>`.<2E><><EFBFBD><EFBFBD>\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><03><><EFBFBD><EFBFBD>\n<EFBFBD><EFBFBD>Ch<43><\r)`<60>إ`<60>7<EFBFBD>Cʒ<><CA92><EFBFBD>Z<EFBFBD><5A><EFBFBD>X<EFBFBD><<3C>Q<13>1X<31><11><>@<40>0dp9EQ<45>f<EFBFBD><66><EFBFBD><EFBFBD>F<EFBFBD>\r<EFBFBD><08>!<21><><08><>(h<><68>)<29><>\np'#Č<><C48C>H<EFBFBD>(i*<2A>r<><72>&<#<23><>7K<37><4B>~<13># <20><13>A:N6<4E><36><EFBFBD><EFBFBD><13><>l<EFBFBD>,<2C>\r<04><><EFBFBD>JP<4A>3<EFBFBD>!@<40>2>Cr<43><72><EFBFBD>h<EFBFBD>N<11><>]<1E>(a0M3<4D>2<EFBFBD><32>6<EFBFBD><36>U<18><><EFBFBD>E2'!<<02><>#3R<33><<3C><><02><><EFBFBD>X<EFBFBD><58><EFBFBD>CH<43>7<05>#n<>+<2B><>a\$!<21><>2<EFBFBD><32>P<EFBFBD>0<EFBFBD>.<2E>wd<0C>r:Y<><59><EFBFBD><0C>E<EFBFBD><45><EFBFBD>!]<5D><<3C><16>j<EFBFBD><6A><EFBFBD>@<40>\\<EFBFBD>pl<EFBFBD>_\r<EFBFBD>Z<16><><03>ғ<EFBFBD>TͩZ<CDA9>s<EFBFBD>3\"<EFBFBD>~9<><39><EFBFBD>j<EFBFBD><05>P<EFBFBD>)Q<>YbݕD<DD95>Yc<59><63>`<60><>z<04>c<EFBFBD><1D>Ѩ<EFBFBD><D1A8>'<01>#t<0E>BOh<0C>*2<><32><ŒO<C592>fg-Z<><5A><EFBFBD><1E>#<23><>8a<>^<17><>+r2b<32><62>\\<EFBFBD><0C>~0<><05><><0C><><EFBFBD><EFBFBD>W<EFBFBD><57><EFBFBD><EFBFBD>n<EFBFBD><05>p!#<23>`<60><><EFBFBD>Z<EFBFBD><5A>6<EFBFBD>1<08>2<EFBFBD><32>@<40><>ky<6B><79>9\r<EFBFBD><EFBFBD>B3<EFBFBD><EFBFBD>pޅ<EFBFBD>6<EFBFBD><EFBFBD><<3C>!p<>G<EFBFBD>9<EFBFBD>n<EFBFBD>o<EFBFBD>6s<36><73>#F<>3<EFBFBD><33><EFBFBD>bA<><41>6<EFBFBD>9<EFBFBD><39><EFBFBD>Z<EFBFBD>#<23><>6<EFBFBD><36>%?<3F>s<EFBFBD><73>\"<EFBFBD><EFBFBD>|<>)<29>b<EFBFBD>Jc\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD>N<EFBFBD>s<14><>ih8<68><10><><EFBFBD>ݟ<EFBFBD>:<1E>;<3B><>H<EFBFBD>ތ<EFBFBD>u<EFBFBD>I5<49>@<40>1<EFBFBD><>A<EFBFBD>PaH^\$H<EFBFBD>v<EFBFBD><05>@ÛL~<7E><><EFBFBD>b9<62>'<10><><EFBFBD><EFBFBD><EFBFBD>S?P<>-<2D><><EFBFBD><EFBFBD>0<EFBFBD>C<08>\nR<>m<>4<EFBFBD><06><>ȓ:<3A><><EFBFBD>Ը<>2<><04>4<EFBFBD><34>h(k\njI<05><>6\"<EFBFBD>EY<EFBFBD>#<23><01>W<1F>r<1A>\r<EFBFBD><EFBFBD>G8<EFBFBD>@t<><74><EFBFBD><0E>Xԓ<58><D493>BS\nc0<>k<14>C I\rʰ<u`A!<21>)<0E><>2<EFBFBD><32>C<0C>\0=<3D><><EFBFBD> <20><16><>P<EFBFBD>1<0C>ӢK!<21>!<0C><><EFBFBD>p<>Is<05>,6<13>d<1E><><EFBFBD>i1+<2B><><0F><>k<EFBFBD><6B><EFBFBD><<3C><>^<5E> <09>\n<EFBFBD><EFBFBD>20<EFBFBD>Fԉ_\$<EFBFBD>)f\0<EFBFBD><EFBFBD>C8E^<5E><>/3W!א)<04>u<EFBFBD>*<2A><11><>&\$<EFBFBD><EFBFBD>2<EFBFBD>Y\n<EFBFBD>]<5D><>Ek<45>DV<>\$<19>J<EFBFBD><1C><>xTse!<21>RY<> R<><52>`=L<><4C><EFBFBD><04>ޫ\nl_.!<21>V!<21>\r\nH<EFBFBD>k<EFBFBD><EFBFBD>\$א`{1 |<7C><><EFBFBD><EFBFBD><13>i<jRrPTG|<7C><>w<EFBFBD>4b<03>\r<EFBFBD><EFBFBD><EFBFBD>4d<34>,<2C>E<EFBFBD><45>6<EFBFBD><36><EFBFBD><<3C>h[N<>q@Oi<4F>>'ѩ\r<EFBFBD><01><><EFBFBD><EFBFBD>;<3B>]#<23><>}<7D>0<EFBFBD>ASI<08>Jd<10>A/Q<><51><EFBFBD><EFBFBD>⸵<EFBFBD>@t\r<EFBFBD>UG<EFBFBD><EFBFBD>_G<EFBFBD><<04><><y-I<>z<7A>\"<EFBFBD>P<0B><>B\0<EFBFBD><EFBFBD><05><><1E><>q`<60><>vA<><41>a̡J<CCA1><4A>R<EFBFBD>ʮ)<29><>JB.<2E>T<EFBFBD><54>L<EFBFBD><4C>y<EFBFBD><79><EFBFBD><EFBFBD>Cpp<70>\0(7<>cYY<59>a<EFBFBD><13>M<><4D>1<EFBFBD>em4<6D>c<><63>r<EFBFBD><72>S)o<><6F><EFBFBD><EFBFBD>p<EFBFBD>C!I<><49><EFBFBD>Sb<C29C>0m<30><6D><EFBFBD>(d<>EH<45><48><EFBFBD><13>߳<EFBFBD>X<EFBFBD><58><EFBFBD>/<2F><><EFBFBD>P<><50><EFBFBD>y<>X<EFBFBD><58>85<38><35>\$+<2B>֖<><07><>gd<67><0C><><EFBFBD><EFBFBD>y<EFBFBD><01>ϝ<EFBFBD>J<EFBFBD><4A><EFBFBD> <20>lE<6C><45>ur<75>,dCX<43>}e<><65><EFBFBD><11><><EFBFBD>m<EFBFBD>]<5D><01>2<03>̽<EFBFBD>(-z<><7A><15><0B>Z<EFBFBD><5A>;I<><49><EFBFBD>\\<EFBFBD>) ,<2C>\n<EFBFBD>><3E>)<29><><EFBFBD><EFBFBD>\rVS\njx*w`ⴷSFi<46><69>d<><64>,<2C><><EFBFBD>Z<>JFM}Њ <20><>\\Z<EFBFBD>P<EFBFBD><EFBFBD>`<60>z<>Z<EFBFBD>E]<5D>d<EFBFBD><64>ɟO<>cmԁ]<5D> <20><15><><EFBFBD><EFBFBD><EFBFBD>%<25>\"w4<EFBFBD><EFBFBD>\n\$<EFBFBD><EFBFBD>zV<EFBFBD>SQD<EFBFBD>:<3A>6<EFBFBD><36><EFBFBD>G<EFBFBD>wM<><4D>S0B<30>-s<><73>)<29><>Z<EFBFBD><5A>cǁ2<><32>δA;<3B><05>n<EFBFBD>Wz/A<>Zh<5A>G~<7E>c<EFBFBD>c%<25>[<0C>D<EFBFBD>&l<>FR<0E><>77|<7C>I<EFBFBD><49><19>3<EFBFBD><33>g0<67>L<EFBFBD><0B><>a<EFBFBD><61>c<EFBFBD>0RJ<52>2<EFBFBD><32>%<02><><EFBFBD>F<0C><> S<> <20>L<EFBFBD>^<5E> tr<><72><1C>t<1C><><0B><>ʩ;<3B><>.喚Ł<E5969A>><10><><EFBFBD><EFBFBD>[<5B>a<EFBFBD>N<EFBFBD><4E><EFBFBD>^<5E>(!g<>@1<06><><EFBFBD><EFBFBD><EFBFBD>N<EFBFBD>z<EFBFBD><b<>ݖ<EFBFBD><DD96><EFBFBD><EFBFBD><EFBFBD>O,<03><>Cu<EE8E9D><75>D<EFBFBD>tjI;)<29>݀<EFBFBD>\nn<EFBFBD>c<EFBFBD><EFBFBD>Ȃ<EFBFBD><EFBFBD>W<s<> <09>\0<EFBFBD>hN<EFBFBD>P<0E>9<12><>{ue<EFBFBD><EFBFBD>ut뵕<74><EBB595><05><><EFBFBD><EFBFBD><EFBFBD><0B>3<EFBFBD><33><EFBFBD>=<3D><>g<EFBFBD><67><EFBFBD><0F><><02>J<EFBFBD><4A><03><05>WQ<57>0<EFBFBD><1D><>w9p-<2D><><EFBFBD> <1E><><EFBFBD><EFBFBD><1A><><1B>'5<><05>\nO<07><>e)M<>)_k<5F>z\0V<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;j<>l<><06>\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>x<1C>Pf<0E>-<19>`C<>.@&]#\0ڶp<EFBFBD>y͖ƛ<EFBFBD>t<>d<0F><> <20><><EFBFBD>b}<7D> G1<47>m<EFBFBD>ru<72><75><EFBFBD>*<2A>_<EFBFBD>xD<78>3<06>q<EFBFBD><71>B<EFBFBD>sQ<73><51>u<EFBFBD><75>s%<25>\n<EFBFBD>5s<EFBFBD>ut<1B><><EFBFBD>{<EFBFBD>s<EFBFBD>y<EFBFBD><EFBFBD><EFBFBD>N<EFBFBD><EFBFBD>4<EFBFBD>,J{4@<40><>\0<EFBFBD><EFBFBD>P<EFBFBD><EFBFBD><EFBFBD>^<5E><>=<3D><>l<EFBFBD><6C><EFBFBD>`<60>e~F١h3o<33>\"<EFBFBD><EFBFBD>q<EFBFBD>R<iUT<55>[Q<><51>U<><55>M<12>6<05>T. <20><0B>0'<0B>pe\\<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>5<EFBFBD><EFBFBD><EFBFBD><15>pCe ٕ<>\"*<02>M <09><><EFBFBD><EFBFBD>D<><44><EFBFBD>?<3F>h<1E><>2<EFBFBD><32><EFBFBD>zU<7A>@7<>C<EFBFBD>4<EFBFBD>a<1F><>iE!f<16>\$<EFBFBD>B<EFBFBD><EFBFBD><<3C>9o*\$<EFBFBD><EFBFBD>lH<6C>\$ <06>@<14><><EFBFBD><EFBFBD><EFBFBD>P\rN<0C>Y<01>n<\$<EFBFBD> <09>Q<02>=<02>F&<26><>*@]\0<EFBFBD><0C><> W'd<> z\$<EFBFBD><04>j<>P[<5B><>\$<EFBFBD><EFBFBD><EFBFBD><EFBFBD>0#&<0E><>_<EFBFBD>`+<2B>B)<29>w<EFBFBD>v% <09><><0C><>LcJ<63><4A>RS<52><53>i`<60>Ů <09>F<0E>W <09><>\nBP\n<EFBFBD>\r\0} 瑩0<EFA6AE>Z<EFBFBD><5A><0C><>/`j\$<EFBFBD>: <20>8ie<69><0C><>φx<CF86><08><><16><>a <20><><03>Gn<47>sgO<><10>U%VU<56><14>@<40>N<EFBFBD><4E>ϐ<EFBFBD>d+<2B>(oJ<6F><4A>@X<><58><0E>zM'F٣<46>WhV<68>I^٢<>1><3E>@<40>\"<EFBFBD><0C><><EFBFBD> <20><13>Q<14>R!<21>\\<EFBFBD>`[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<2E>0fb<66>F;<12><EFBFBD><C287>Fp<05>p/t`<60><05><><0B>(<28><>V<05><><EFBFBD><EFBFBD>b<EFBFBD>Ȳ<EFBFBD>(<28><>H<EFBFBD>l<EFBFBD><6C><EFBFBD><EFBFBD>ԯ1v<31><0E><05><><EFBFBD>H<EFBFBD><48>1T<31>3<18><>q<><19><>1<>Ѫf<D1AA>\nT\$<EFBFBD><EFBFBD><EFBFBD>Nq+<2B><1C>`ލv<DE8D>ǜ<EFBFBD>\r<EFBFBD>Vm<EFBFBD><EFBFBD><EFBFBD>r<EFBFBD><EFBFBD><EFBFBD>'ϸ<><CFB8>g%<25>\"L<>m<EFBFBD><6D><EFBFBD><EFBFBD>(<28>(CLz<4C><7A>\"h<0E>X<EFBFBD>m=<07>\\H\n0U<EFBFBD><EFBFBD> f&M\$<EFBFBD>g\$<EFBFBD>U`a\rP<EFBFBD>>`<60>#g<><67>h<1A><>`<60>R4H<34><48>'<27><><0F><><EFBFBD><EFBFBD>GK;\"M<EFBFBD>ۨT<EFBFBD>h<EFBFBD>BE<1B>n\"b><3E><><EFBFBD>\r<EFBFBD><EFBFBD><EFBFBD>#<23>\0<EFBFBD><EFBFBD>N:<3A>#_ QQ1{ f:B<><42><EFBFBD>R<EFBFBD>&<26><><EFBFBD>)J<><12>Br<42>+<2B>K.\$<EFBFBD>Pq<EFBFBD>-r<>S%TIT&Q<><51><EFBFBD>{#2o(*P<><50>5<EFBFBD>`<60>1H<0C><><05>' <T<12>d<EFBFBD><64><12><>s<EFBFBD><73>,N<><4E> <20><0E><><EFBFBD>^\r%<25>3<EFBFBD><33>\r&<26><07>4<EFBFBD>B<EFBFBD>/\0<EFBFBD>kLH\$<EFBFBD>4d<EFBFBD>><3E><><EFBFBD>/<2F>ඵ<>H<EFBFBD><48><EFBFBD>*<2A><><EFBFBD>3J<0E>А<EFBFBD><<3C>Hh<48><68>p<EFBFBD>'<27><>O/&<26>2I.<2E>x3V.<2E>s5<73>e3<65><33>ێZ<DB8E>(<28>9E<39>g<05>;R<>;<3B>J<EFBFBD><4A>Q<16>@<40><>vgz@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'dZ&<26>,U<><55><EFBFBD><EFBFBD><EFBFBD>F<EFBFBD><46>b*<2A>D<EFBFBD><44>H! <20>\r<EFBFBD>;%<25>x'G#<23><>͠w<CDA0><77>#<23>֠<>2;#<23>Bv<42>X<EFBFBD><58><EFBFBD>a<EFBFBD>\nb<EFBFBD>{4K<EFBFBD>G<EFBFBD><EFBFBD>%<25><><EFBFBD>GuE`\\\rB\r\0<EFBFBD>-mW\rM\"<EFBFBD><EFBFBD>#E<>cFbF<62>nz<6E><7A><EFBFBD>@4J<34><4A>[\$<EFBFBD><EFBFBD>%2V<0F><>%<25><>&T<08>V<EFBFBD><56>d<EFBFBD>4hemN<6D>-;Eľ%E<>E<EFBFBD>r<EFBFBD><\"@<40>F<EFBFBD>P<50>L <20>߭<EFBFBD>4E<><45><EFBFBD><EFBFBD><EFBFBD>z`<60>u<03>7<EFBFBD>N<>4<EFBFBD><34>\0<EFBFBD>F:h<>K<>h/:<3A>\"<EFBFBD>M<EFBFBD>Z<><5A>\r+P4\r?<05><>S<EFBFBD><53>O;B<><42>0\$FCEp<EFBFBD><EFBFBD>M\"<EFBFBD>%H4D<>|<7C><>LN<4C>FtE<><45>g<EFBFBD><67><EFBFBD>5<04>=J\r\"<EFBFBD><EFBFBD>5<0C><>4<04><>K<EFBFBD>P\rbZ<><5A>\r\"pEQ'DwK<77>W0<57><05>g'<27>l\"h<EFBFBD>QF<EFBFBD>C,<2C>Cc<43><63><EFBFBD>IH<49>P<07>hF]5<>& f<14>T<04><>iSTUS<55><53><EFBFBD><EFBFBD><EFBFBD>[4<>[u<>Ne<4E>\$o<EFBFBD>K<EFBFBD><EFBFBD>O <20><>b\" 5<>\0<07>D<EFBFBD>)E<>%\"<08>]<5D><>/<2F><><EFBFBD>ЌJ<D08C>6U<36>d<EFBFBD><02>`<60><>a)V-0<><30>DӔbM<62>)<29><><EFBFBD><EFBFBD><EFBFBD><0C><><EFBFBD><EFBFBD>`<60><>%<25>ELt<4C><74>+<2B><>6C7j<37>d<EFBFBD><64>:<3A>V4ơ3<C6A1> -<2D>R\rG<EFBFBD>IT<EFBFBD><EFBFBD>#<23><4-CgCP{V<EFBFBD>\$'<27><06><><EFBFBD>g<EFBFBD><67>R@<40>'<27><14>S=%<25><><EFBFBD>F<EFBFBD>k:<3A><0E>k<EFBFBD><6B>9<EFBFBD><16><11><04>e]aO<14><>G9<08>;<3B><>-6<><1C>8W<38><57>*<2A>x\"U<><55>YlB<6C><16><0C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><06><><EFBFBD> <09><>\n<EFBFBD><EFBFBD>p<EFBFBD><EFBFBD><EFBFBD>l<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Z<11>m\0<EFBFBD>5<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Oq̨<><CCA8>b<>W1s@<40><>K<1F><>-p<><70><EFBFBD>E<1F>Spw\nGWoQ<6F>qG}vp<76>w}q<><71>q<EFBFBD>\\<07>7<1C>RZ<52>@<40><><EFBFBD>t<EFBFBD><74>t<EFBFBD>;pG}w׀/%\"L<15>E\0t<EFBFBD>h<EFBFBD>)<29>\r<EFBFBD><EFBFBD>J<0F>\\W@<40> <09>|D#S<13><>ƃV<C683><56>R<>z<EFBFBD>2<EFBFBD><0F><>v<EFBFBD><76><EFBFBD><EFBFBD><10> <09>}<7D><><EFBFBD><EFBFBD><EFBFBD>(<28>\0y<<3C>X\r<EFBFBD><EFBFBD>x<EFBFBD><EFBFBD><EFBFBD>q<EFBFBD><<3C><>Isk1S<11>-Q4Yq8<71>#<23><>v<1E><><EFBFBD>d.ֹS;q<>!,'(<28><1B><16><.<2E><>J7H<37>\"<EFBFBD><EFBFBD>.<2E><><EFBFBD><EFBFBD>u<EFBFBD><0F><><7F><EFBFBD>#<23>Q<>\re<EFBFBD>r<EFBFBD>Xv[<5B>h\$<EFBFBD>{-<2D>Y<><59><EFBFBD>JBg<42><1F>iM8<4D><38>'<27>\nƘtDZ~/<2F>b<0B><><EFBFBD>8<EFBFBD><38>\$<><7F>DbR<62>O<EFBFBD>O<><4F>`O5S><12><><EFBFBD><EFBFBD>[<5B>D<07>ꔸ<EFBFBD><0C><><07>_3X<33>)<29><>'<27><>Jd\r<EFBFBD>X<EFBFBD><EFBFBD><EFBFBD><EFBFBD>UD<EFBFBD>U<EFBFBD>X8<><38>x<EFBFBD>-旅<>P<07>N`<60> <09><>\n<EFBFBD>Z<08><><EFBFBD>@Ra48<><38>:<3A><><EFBFBD>\0<EFBFBD><EFBFBD>x<EFBFBD><0E><>N<EFBFBD>\\<04>0%<25><><05>f<EFBFBD><66>\\<EFBFBD><EFBFBD>>\"@^\0Zx<EFBFBD>Z<EFBFBD>\0ZaBr#<23>X<EFBFBD><58>\r<EFBFBD><EFBFBD>{<EFBFBD><EFBFBD>˕<EFBFBD>flFb\0[<5B>ވ\0[<0B>6<EFBFBD><36><EFBFBD> <09><><19> <20>=<3D><>\n<EFBFBD><EFBFBD>WB<EFBFBD><EFBFBD>\$'<27>kG<6B>(\$y<EFBFBD>e9<EFBFBD>(8<>& h<><68>Rܔ<52><DC94>o<EFBFBD>ȼ LJ<><C787><EFBFBD>Y<EFBFBD><59>4<EFBFBD><34>7_<37><5F>d<EFBFBD><64>9<EFBFBD>'<27><><EFBFBD><02><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>z\r<EFBFBD><EFBFBD><EFBFBD> <><7F><EFBFBD><EFBFBD>v<EFBFBD>G<EFBFBD><47>O8<4F><0E><>MOh'<27><>X<>S0<53>\0\0<EFBFBD> <09><>9<03>s?<3F><><EFBFBD>I<EFBFBD>MY<17>8<EFBFBD> 9<10><><EFBFBD><EFBFBD><1F>HO<48><4F>,4 <09><>xs<78><73>P<EFBFBD>*G<><47><EFBFBD><EFBFBD>c8<><38>Qɠ<51><C9A0>wB|<7C>z @<40> <09><><05>9c<18>K<EFBFBD><05>QG<1B>bFj<46>X<EFBFBD><58>oS<6F>\$<EFBFBD><EFBFBD>dFHĂP<EFBFBD>@ѧ<嶴<>,<2C>}<7D><>m<EFBFBD><6D>r<04><>\"<EFBFBD>'k<6B>`<60><>c<EFBFBD><63>x<EFBFBD><78>e<EFBFBD>C<EFBFBD><43>C<EFBFBD><0E>:<3A><><EFBFBD>:X<> <20>T<EFBFBD><54><EFBFBD>^<5E>d<EFBFBD>Æqh<71><68>s<EFBFBD><06><>Lv<4C>Ү0\r,4<>\r_v<EFBFBD>L<><4C>j<03>jM<6A><4D>b[ <20><0F>ls<6C><73><0F>Z<EFBFBD>@<40><><EFBFBD><EFBFBD><EFBFBD>;f<><66>`2Yc<59>e<EFBFBD>'<27>Mer<65><72>F\$<EFBFBD>!<21><>\n<EFBFBD><EFBFBD> *0\r<EFBFBD>AN<EFBFBD>LP<EFBFBD><EFBFBD>jٓ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>;ƣV<1A>Q|(<28><>3<EFBFBD><33><EFBFBD><EFBFBD>[p<><70>8<EFBFBD><38><EFBFBD>|<7C>^\r<EFBFBD>Bf/<2F>D<EFBFBD><14><>Ҟ B<05><0E>_<EFBFBD>N5M<35><18> \$<EFBFBD>\naZЦ<EFBFBD><EFBFBD><0B>~<05>Ule<EF8EA5>rŧr<C5A7><1A>Z<EFBFBD>aZ<61><5A><EFBFBD><EFBFBD><07>գs8R<38>G<EFBFBD>Z<5A><7F>w<EFBFBD><77><EFBFBD>N<EFBFBD>_Ʊ<C6B1>Yϣ<59>m<EFBFBD><6D><EFBFBD><EFBFBD><EFBFBD>]<5D><>;ƚL<><4C><EFBFBD><05><>c<EFBFBD><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ű<EFBFBD><C5B0>I<EFBFBD>Q3<51><33>O<EFBFBD><4F><EFBFBD>|<7C>y*`<60> <20>5<EFBFBD><18>4<1A>;&v8<76>#<02>R<EFBFBD>8+`X<>bV<62>6<EFBFBD>ƫi<12>3F<33><46>E<14><><EFBFBD><EFBFBD>oc82<38>M<EFBFBD>\"<EFBFBD><EFBFBD><EFBFBD><14>G<EFBFBD>Wb\rO<EFBFBD>C<EFBFBD>Vd<EFBFBD>ӭ<EFBFBD>w\\<EFBFBD>ͯ*cSi<53>Qү<02><><EFBFBD>R`<60>d7} <09><><EFBFBD>)<29>ϴ<EFBFBD>,<2C>+bd<62>۹<>FN<0F>3<11><>L\\<EFBFBD><EFBFBD>eRn\$&\\r<EFBFBD><EFBFBD>+d<><64>]O5kq,&\"D<EFBFBD>CU6j<EFBFBD>p<EFBFBD><EFBFBD><EFBFBD>\\'<27>@o<>~<7E>5N=<3D>|<7C>&<26><>!<21><>B<EFBFBD>w<EFBFBD>H<>yyz7<7A><10>(Ǎ<><C78D><07>b5(3փ_\0`z<>b<EFBFBD>Уr<D0A3><72>8 <09><>Z<EFBFBD>v<EFBFBD>8L˓<4C>)<29><>S<EFBFBD>M<<3C>*7\$<EFBFBD><EFBFBD>\rR<EFBFBD>b<EFBFBD><EFBFBD><EFBFBD>B%<25><>ƴDs<44>z<EFBFBD>R>[<5B>Q<EFBFBD><51><EFBFBD><0C>&Q<><51><EFBFBD><EFBFBD><EFBFBD><1E>'\r<EFBFBD>pp<70>z<EFBFBD>/<<3C><>}L<>#<23><0C>Ε<EFBFBD><08><>Z<0C><><EFBFBD>\"t<EFBFBD><EFBFBD>\n<EFBFBD><EFBFBD>.4<>g<EFBFBD><67>P<EFBFBD><50>p<EFBFBD>D<EFBFBD>n<EFBFBD><6E>ʹN<CAB9><4E>F<07>d\0`^<5E><><EFBFBD><EFBFBD>\rnȂ׳#_<12><> w(<28>2<EFBFBD><7-<2D><>X\0<EFBFBD><EFBFBD>s<EFBFBD><EFBFBD>,^<5E>hC,<2C>!:<3A>\rK<><4B>.<2E><>Ӣ<EFBFBD>Ţ<EFBFBD><C5A2><EFBFBD><EFBFBD>\\<EFBFBD><EFBFBD>+v<02>Z<EFBFBD><5A>\0<EFBFBD>Q9eʛ˞E<1C>w?><3E>\$}<7D><>D#<23><><EFBFBD><EFBFBD>c<EFBFBD>0MV3<>%Y<><59><EFBFBD>\r<EFBFBD><EFBFBD>tj5<EFBFBD><EFBFBD>7<EFBFBD><EFBFBD>{ŝ<EFBFBD>Lz=<3D><<3C><>8I<1C>M<EFBFBD><4D><EFBFBD><EFBFBD><EFBFBD>G<EFBFBD><47><EFBFBD><EFBFBD>L<7F>\$<EFBFBD><EFBFBD>2<14><>{(<28>pe?u<>,R<>d*X<>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\0\"@<40><><EFBFBD>}<.@<40><08> <09><>N<EFBFBD><4E>\$<EFBFBD><EFBFBD>XU<05>js<6A>/<07><><>\"* <20>#\$<1B><><EFBFBD><EFBFBD>&CPI <09><>t<EFBFBD><74><EFBFBD><1E><><EFBFBD><EFBFBD><EFBFBD>?<3F> <20><> <09>O<EFBFBD><4F>\\<EFBFBD><EFBFBD>_<EFBFBD><EFBFBD>Q5Y<35>H@<40><><EFBFBD>b<EFBFBD><62>c<01>h<EFBFBD><68><0C><><06>뱖<EFBFBD><EBB196>O0T<>'<27>8<EFBFBD>w<EFBFBD><77><EFBFBD><EFBFBD><EFBFBD>j+H<>v_#<23><><EFBFBD><EFBFBD><EFBFBD>06<30>w֎<77>X<0F><><EFBFBD>d+<1A>ܓ\\<03><><EFBFBD>\n\0 \\<EFBFBD><EFBFBD><EFBFBD>>s<73><0F>A PF<50>d8m'@<40>\nH<02>\0<EFBFBD>c<EFBFBD>OwS<EFBFBD><1F><11><0C><>Y<EFBFBD>`<1D><><EFBFBD><EFBFBD><EFBFBD>R<EFBFBD><1C>Dna\"<EFBFBD><EFBFBD><EFBFBD>~<12>?<3F>m<EFBFBD><6D><EFBFBD>|@6<><12>+<2B>GxV<78><56>\0<EFBFBD><EFBFBD>W<>Ӱ<EFBFBD>nw<05><><EFBFBD>.<2E>b<D883><62>9Í<><C38D>E<EFBFBD>|E<06><><EFBFBD>\rЈr<EFBFBD>\"<EFBFBD><EFBFBD>x<EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><03><>\rN6<EFBFBD>n<EFBFBD>\$Ҭ<EFBFBD>-B<>H<EFBFBD>^<11>)<29><14>y&<26><>ךW<D79A>ǧ<EFBFBD>bv<62>R<EFBFBD> <09><><EFBFBD>N\0<EFBFBD><EFBFBD>n<EFBFBD> T<16><>`8X<38><58>A\r:{O<16>@\" <20>!<21><03>\$K<>qo<71><6F>jY֪J<D6AA><4A><EFBFBD><EFBFBD><EFBFBD>h}d<1I<31>xd<78><64><19><>TT4NeeC0䥿<30>:D<>F<>5L<35>*::H<>jZ<6A><5A><13>F<10>R<EFBFBD>MրnS\n>PO<0B>[<5B>\$V8;#<23>K\\'<27>B<EFBFBD><42><EFBFBD>R<>د<EFBFBD><D8AF>R<>_<EFBFBD>8<EFBFBD>j<EFBFBD><6A>*Ej<45>\\~v<><76><EFBFBD>v<EFBFBD><76>p@T<>X<EFBFBD>\0002dE <09>H<EFBFBD><48>V<EFBFBD><56><EFBFBD>D<EFBFBD>\"Q'EDJB~A<><41>A<EFBFBD>Il*'\n<EFBFBD>Y<EFBFBD><1F>.<2E><>+<2B>9<0E><>pg<70><03><>/<2F>\"<EFBFBD>1<EFBFBD>8<EFBFBD>0<EFBFBD>IA<>FCȨ<>V*a<><08>P<EFBFBD>d<EFBFBD>У5H\"<EFBFBD>A<EFBFBD><05>6<03>s<EFBFBD>Y<EFBFBD><59>;訞<>/<2F><>0<><1A>v}y<>\r<EFBFBD><02><><EFBFBD>ץ1<D7A5>u\"ˋ<EFBFBD>m<EFBFBD><16>_<0C>0焄`<60><18><>\\B1^\nk\r]lh<6C>}]HBW`<60><>0<EFBFBD>rFf<46>)<29>W,<02>ҧ]sm9'O<14>xԽ<78>,<2C>9J8<4A><38>?<1A>4<1A><><EFBFBD><04><>\"҅<EFBFBD>۽<EFBFBD><<3C>-S<><53><EFBFBD><EFBFBD>M<EFBFBD>;<0E>v<EFBFBD><76>6y|<7C>Z<06><><EFBFBD><EFBFBD>%<25>a<08>#8<><38>TC<11>!<16>p<EFBFBD><70>\n<EFBFBD><EFBFBD>CZ(<28><>w<EFBFBD><77>a<EFBFBD><14><><EFBFBD><EFBFBD><EFBFBD>?9|<1A><>0<BL\r<10>\n<EFBFBD>]<5D>PB0<0E>&<26>+t<>H<EFBFBD><48><12>օ<04>Dx^<1F><><EFBFBD>,<2C>L<EFBFBD>}[<5B><>B<EFBFBD>x}<7D><>ru<><75>\0<EFBFBD><EFBFBD>\0005<EFBFBD><EFBFBD>S@\"Uؔ@<40><06>\0<EFBFBD>\$<EFBFBD><EFBFBD>ސ\"Ҡ<EFBFBD><EFBFBD>]l/ <09><>I<EFBFBD>B4<42><34>.<2E>6<EFBFBD><36>
<EFBFBD>d7<><37>\r@=<3D><><EFBFBD>߬<EFBFBD><DFAC><EFBFBD>*G j<><01><><EFBFBD>f`<60><>:Hn<48><6E><EFBFBD>bĀ71<><31>)C<@A<>Y#<13><><EFBFBD><EFBFBD><EFBFBD>e<EFBFBD>o<><6F>Y!<21><>I<EFBFBD>DM<44>\nlt<10><><EFBFBD><EFBFBD>/)<29>\\43)<29><>2<11><19>ɸ<02>)<1A><><EFBFBD>f[ ppp1<70><31><EFBFBD>#<23><>Ð<>p\0<EFBFBD><05>œl<C593><6C>^{<EFBFBD><EFBFBD>A<EFBFBD><05>TH<1C>6<><36><01><13><>\n\0P<>H<EFBFBD>.\r<0C><><EFBFBD>|<7C>T<EFBFBD>FD0<16><>S<EFBFBD>y<EFBFBD><79><1B><>'1<><01><05>K<EFBFBD><4B><EFBFBD>d<EFBFBD><13><><EFBFBD><EFBFBD>B<><42><EFBFBD>C<>&<26>)<04>W<EFBFBD>s Hee+@4<> r<><72><EFBFBD>ۚ*Lp1<<3C>f<EFBFBD>N<EFBFBD>Y'<0F>- XKVa<56><61>L<EFBFBD><4C><1A>\"<EFBFBD><EFBFBD><EFBFBD>\"<EFBFBD>l<EFBFBD><EFBFBD>q<EFBFBD><EFBFBD>.YJH<0B>m HV<02>/<2F>lC<>&<26><08>H)o<>&\\2<EFBFBD><03><>%<25><><EFBFBD>z\n^Q(6<03><>D<EFBFBD> <20><><EFBFBD><EFBFBD>Jq<4A><71><EFBFBD><EFBFBD>\00a#<23>6\0vr,<2C>M<EFBFBD><4D>&A<><41><05><><03><><EFBFBD>9%Yd<59><64>B<>h<0B><>!W\0<EFBFBD>b\r{<EFBFBD><EFBFBD><EFBFBD>@<40>1<EFBFBD><31>I<EFBFBD>22<32>A<18><12>)<29>H<>a@r<>0G<30><47>7Dd.<2E>LM<><<3C><>2<><32><EFBFBD>,k/<2F><>Me<4D><02><><EFBFBD>}Ғ3<>=\0<EFBFBD>&<26><0F>B<><42>\nPd.\"<0C><>F3X<33><58>Sd(*<2A>J6 <0B><><19><>F:<3A><>)1<>1<EFBFBD>?lQ&<26><18><><EFBFBD>h<J͋<4A>f<EFBFBD>d<EFBFBD>Eպ*<0F>x\n\0<EFBFBD><07>.\"B -<2D>#<23><>Ηt<CE97>IΫ<49><CEAB><11> I8 <20><>8dh <09><><EFBFBD>x<12><><EFBFBD>~<7E><> L!K(<28>BX<42><13>-<2D><><EFBFBD>h<EFBFBD><68>c/<2F>r<EFBFBD><72>P<>I<0E><><EFBFBD>N<EFBFBD>2<EFBFBD>|<10><><EFBFBD><D7B6>|\"<EFBFBD>M<>'<27><>K,\\H<EFBFBD><EFBFBD>e5*o]4<><34>FP 2<><32><)<29>T<EFBFBD><54><EFBFBD>o<03><1A>\n<02><03><>I<EFBFBD>ڢ<EFBFBD>!<21>(<10><><EFBFBD>_8Xr<58>;u<><75><EFBFBD><EFBFBD><EFBFBD>NJ<4E><4A><EFBFBD><EFBFBD><EFBFBD>[r<><72>DC:<3A>@<40>ͳ<EFBFBD>l<EFBFBD>\0<EFBFBD>e\\*x@Aȡ&<26>(<28>5<EFBFBD><35>,<2C><><EFBFBD><EFBFBD>#1x<> <08>!T<>D<EFBFBD><44><EFBFBD>(Q<><51><0B>DJ|D D:\0<EFBFBD>A<EFBFBD>й<EFBFBD> <20>baE<07>?rn<72><6E>Wkx<6B><78>X=i<><69>,\$3<EFBFBD>[<5B>r<EFBFBD>9B<08>Ʊ<EFBFBD>d<EFBFBD><64><18>\0<EFBFBD><EFBFBD>H<><48>4<EFBFBD><34><08><(z<17><06><>?<3F>sIbJ<62>g U<>\n(}<0B><><EFBFBD>J\"<16><0F>A<EFBFBD><12>B<>19<31>~<7E>I<01>#<23>\$<EFBFBD><EFBFBD>%d e\"<EFBFBD>`<60><><EFBFBD>t<EFBFBD><74><EFBFBD>'O=<3D><13><>@\$<EFBFBD><EFBFBD>O<>\nmT<03>o+<2B>Z<EFBFBD><5A><EFBFBD><18><>-<2D><><0C><01><>PF?<10>_<>I<EFBFBD>J<1F>X ģ2<11><1C><>-V<>;<3B>?2<><0F><>0<EFBFBD>*P3<50><0E><><0E>_T<E<05>J<EFBFBD>\\(<28>2<EFBFBD><32><17><>)<29>IQ<49><51><14>鬩<1C><><EFBFBD>R<EFBFBD><52>L&<26><>!ȯK<C8AF>iц<69>t<EFBFBD><74><EFBFBD><EFBFBD>K<>HRl<52>ȬEs<45><16><><02><><EFBFBD><EFBFBD>D<EFBFBD><44>xǴ<>i<EFBFBD><69><EFBFBD>!faB<><42><10><>F<EFBFBD><04>e><3E>V<EFBFBD><1A><><EFBFBD>-Qj<51>I<EFBFBD><49>7<EFBFBD><37><EFBFBD>\"%Rh<52> g<1B><>M<EFBFBD><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D>b<EFBFBD>58R<52><C28B><EFBFBD><EFBFBD>*<2A><1D>9<EFBFBD><39>ꊰ<EFBFBD><EA8AB0><EFBFBD>9<EFBFBD>2Q0<51><30><EFBFBD>IR[<04>Z<EFBFBD><5A>N\0<EFBFBD><EFBFBD><EFBFBD>20<32><30><EFBFBD><EFBFBD><EFBFBD>\\[@<40>Q\0<EFBFBD><EFBFBD>Jx<EFBFBD><EFBFBD><1F><0F><>EC{<EFBFBD><EFBFBD><EFBFBD>\$lp1=\0<EFBFBD>Rо<0B>>E~<11><><EFBFBD><EFBFBD><07><><EFBFBD>:0<0B><><04>%<25><0F>R+)\0<EFBFBD> ƑQ<C691>@(\"<EFBFBD>_j<EFBFBD>T<EFBFBD>X\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\r1<EFBFBD>\0P<EFBFBD>9#\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>H;B<>|<06><><11>L<14>Z<EFBFBD><5A><04><02><>6<EFBFBD>/B<><1E>\nB<EFBFBD>{<EFBFBD><EFBFBD><01>|H<>,<2C> *;<01><0F>(<28>`<60>2@6<>><3E> <03>?P\0/<2F><><EFBFBD>\0|\\<EFBFBD>eB<>`<60><>jq<6A>U/\rc<EFBFBD><EFBFBD><EFBFBD><01><>҆<EFBFBD>6(N\0<EFBFBD>/\$<EFBFBD>\n8<>j*U<>\$<EFBFBD><EFBFBD><EFBFBD><EFBFBD>y*<2A>=<3D>;<3B><><EFBFBD><EFBFBD>\$<15>f<EFBFBD><66><EFBFBD>8X<38>BCE<43><45>r\"/<2F><><EFBFBD><EFBFBD><EFBFBD>kځ%\\9k<><6B><EFBFBD>B<EFBFBD><42><EFBFBD>0<EFBFBD>F<EFBFBD><46>(<28><>'<27>U<EFBFBD><55><EFBFBD>Ʈm<C6AE>@k<>T\0<EFBFBD><0E>E<EFBFBD><15>sEhy<68>e\n<EFBFBD>)<29>)<16><>b7<62><37><EFBFBD>(W%,<13>J<>r<EFBFBD><72>2D<32>rhE<68><45>\n0Q<EFBFBD>3<EFBFBD> U<>9TPO<50><4F><13><><EFBFBD><EFBFBD>8j|<7C>}<7D>R<0<><30><0B><>Zl <20><15>T<EFBFBD><54><17><><EFBFBD><EFBFBD><EFBFBD>*<2A>\$<EFBFBD><EFBFBD>U\r<EFBFBD>\"<04>.<0C> Ts~<7E>~(<28>3<14>a<EFBFBD><61><EFBFBD>@<40><>+<2B><17><>l<EFBFBD>`:<3A>`<60>:O<08>i<EFBFBD><69>BX<02>?ʄ<><CA84>7<EFBFBD><37>Lj|<7C>:n<>K:ز}<7D>\0<EFBFBD><EFBFBD>UMc`P%nn\n,<2C>4<EFBFBD><34>Q'%+H.<2E><>\"#G<><47>3`<60><><EFBFBD><EFBFBD><EFBFBD>\n1fg\0<EFBFBD>М'<27>k<><6B>qxD<\"<04><>,a|{~<1A><><EFBFBD><EFBFBD>C<S<>i<1D>B<EFBFBD>\nkN<EFBFBD><EFBFBD><EFBFBD>G<EFBFBD>}<7D><><EFBFBD>k:<3A><><EFBFBD><EFBFBD><12><><EFBFBD><EFBFBD>g<EFBFBD>)<29>JD<4A><44><EFBFBD>hÛf<C39B>\"<EFBFBD>kV~<7E><12>mM`HO<48>kD<1C><>^<5E>0/tj<15>l<EFBFBD>\r<07>!<21>f<<3C><>G<><14>T<EFBFBD><54><EFBFBD>v<EFBFBD>#@<0E>ek@2<>w<><77><EFBFBD>0<19>ܭt<DCAD><74><1E>į1<C4AF>u<EFBFBD>yvː%8<>?1<><31><EFBFBD>l<EFBFBD><6C>xt<78><14>mp<6D><70>fK3Z<33>J<EFBFBD>=\0@<40>^p<><70>ۑ<EFBFBD><DB91><EFBFBD><EFBFBD><EFBFBD>]Ҳ'<27>t١@C<0B>b<EFBFBD><62><05>\r[<5B><>V<EFBFBD><56>-<2D><><EFBFBD>o<EFBFBD>-<2D><>ݠe<DDA0>}<7D><06>Y<04><> -<2D><>-m<>I\0+<2B><>V<EFBFBD>D<EFBFBD>[B+<2B><>(<28>-<2D>4<EFBFBD><34>><3E>q<EFBFBD><1D>i>=<3D><><EFBFBD>/0-<2D>cL<63>pJ b\nd<><64>)<29><>#<23><>G<EFBFBD>s<EFBFBD><73><EFBFBD><EFBFBD><EFBFBD>\"<EFBFBD>Q<EFBFBD>N<EFBFBD><EFBFBD><02><>`.<1F>ȍ<EFBFBD>yȐEtP<74>q<>I]<5D><><EFBFBD>J8<4A><38><EFBFBD>rWT<57><54>I<EFBFBD><49><EFBFBD><EFBFBD>f<>aG<61>.떄7y<37><79>l<7F><6C>A<EFBFBD><41>7'<27>1<EFBFBD> <09>S<EFBFBD>-<2D>xI<78><17>m<EFBFBD><6D><EFBFBD>L:e<>ΉA<CE89>W<EFBFBD><57>ζEI<><49><EFBFBD>Wz<57><7A>3W<33><57><1F>)*/)C<><43><EFBFBD>x*c]<5D>%<25>}<0B><><08><11>_<EFBFBD><5F>IvͲ<76>'<27>\$U<EFBFBD><EFBFBD>S4k<EFBFBD>5WʏJC<0C><><05>7*<2A>b%<WC@<> <09><><EFBFBD><12>c{<EFBFBD><EFBFBD><EFBFBD><11>3)X<><58>&&<26><>eL<65>I<><49><1D>,N<> 2k#p5<70><16><>f4<66><34><EFBFBD>Ǻ<0B>z<>#<23><><EFBFBD>\\<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>N<>b<EFBFBD>U<EFBFBD><55>oy<1B><16><>S<EFBFBD>4<EFBFBD>`q<>~1<>=<3D>8厉<>*<2A>OOJ<4F>C<><43><EFBFBD><0C><07><>'Dd,@kL<6B><1A><><1A><><EFBFBD><01>\\<EFBFBD>j2ͩ<32><CDA9><EFBFBD><1D><<3C>@_q<5F>2<>\0<EFBFBD>ձ<EFBFBD>)`<60><><18><><EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><73><EFBFBD><EFBFBD>F\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n<EFBFBD><EFBFBD><EFBFBD>F<16><><*<2A>x*<03><><EFBFBD><EFBFBD>`<60><><EFBFBD><EFBFBD>-<2D><0C>\r<EFBFBD><EFBFBD><EFBFBD>|@<40><><EFBFBD><EFBFBD>7<EFBFBD>H@w<><13><><EFBFBD><08>H]<5D><><EFBFBD>\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>_w<EFBFBD><EFBFBD>h0!<21>s<EFBFBD>1Ϗ<><CF8F>Ǭ<02>hW<68><0B>.<2E><0F>=W<><57>R*<2A>A_<03><02><>EDԷ<01>?1,Ub<55>9=t<>4è<34><05><>W<EFBFBD><57>^<5E><><EFBFBD>;<3B><><0E><><EFBFBD>@<40><>(1<D<>ÊHx<48>T()0z<30>`<14>_<EFBFBD>;<3B><>AL<41><0C>)\n<EFBFBD>K[f<>H<EFBFBD><48><EFBFBD>Wo<57>@bBK<42>iM<69><4D><EFBFBD>d+<2B>><3E>vI<76>(z:<3A><>.݀<><05>9uiѤDY<44><59><EFBFBD><EFBFBD><EFBFBD>O`<08><><EFBFBD>]I\0<EFBFBD><EFBFBD>R<13>Ć,K,<03><><EFBFBD>6L<36><4C>\"\"<EFBFBD>1g<15>(<28><><1C>|T.,<2C>9vb+\rk]u<>&<26><>|<7C><>b<EFBFBD>S<><53>d[<14>,g<1D><>aJ<61>(C<><43>k<><6B>\rF<EFBFBD>+ <09><><EFBFBD>9<><39>L<EFBFBD><05>))UA<55>B<EFBFBD>U<>h<68>g<0E><>c3x<>-n9<6E><39><EFBFBD><07><>x<><18>2<EFBFBD><32>q<EFBFBD>ib<69>rY7<><37>k<EFBFBD>y<EFBFBD>f<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)<29>٪<>J:<3A>N<08>8<1C>Rcly\n<EFBFBD><EFBFBD>2<EFBFBD>W<EFBFBD>;<3B>.><3E>v6Q#A0<41><30>{έi<EFBFBD><EFBFBD><EFBFBD>7~@VX<56><58><EFBFBD>^<5E><>11-<2D>+<2B>v|<7C><>]Vf<56><66><EFBFBD>.<2E>{ <09><><EFBFBD>\r<EFBFBD><EFBFBD>;<3B>1lp<05>/<1B><04>uF<75><46>d<>\$PЮ0=@kS<14>0h<30><68>Ɉ@<07><>/*(O<>V.<0B><>G><15>(r<><72>!<21>6<EFBFBD><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Y=XZ@<14>:<3A>'&0<>6kE|<7C><><EFBFBD>'|H;<3B><1B><>N<EFBFBD><4E>g<01>%<25>W<EFBFBD>+<2B><><EFBFBD>4<EFBFBD>;̓<><CD83>'x|<7C>f<EFBFBD>9<7F><39><EFBFBD>(O<><4F>d<EFBFBD><64><EFBFBD><EFBFBD>w%9]<5D><>f}<7D><>G<EFBFBD><47><EFBFBD>s<EFBFBD><73><EFBFBD>¾<EFBFBD><C2BE><EFBFBD><0C><>XM0<4D><30><02><01>gQ<18><><01>8̄<38>+O}<7D>͝0}<7D>9<><39><EFBFBD><EFBFBD><16><><EFBFBD>Nh<4E>/mgD<67><44><EFBFBD><EFBFBD>s<EFBFBD><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n<EFBFBD>74勳P~}O)<29>Ug<55>9<><39><03>j<EFBFBD>8P<38><50>ݸ<EFBFBD>(<28>%<25><><EFBFBD><EFBFBD>j<EFBFBD>7oAB<41><42>i)<29><>K<EFBFBD><4B><EFBFBD><EFBFBD>u<EFBFBD><75><EFBFBD> <20>}s<>1<EFBFBD>=od<6F>V[Ĵ\n<EFBFBD><EFBFBD><EFBFBD>zl<EFBFBD>Mзr:F#{<EFBFBD><EFBFBD>*#<23>x<><1E>ܰ<10><Ds<44><73>k/mw :^<5E><><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31>ύD<CF8D><44>2<EFBFBD>z*<2A><>n<EFBFBD><6E>%<10><><EFBFBD><EFBFBD><11>i<EFBFBD>Ù *<2A>!8-<2D><><EFBFBD>tH<14>'<27><05><><EFBFBD>\r<EFBFBD>к<EFBFBD>4<EFBFBD><EFBFBD><EFBFBD><EFBFBD>8`<60><>\"<06><><EFBFBD><1D><>i]<5D>ZZ<5A>>Z\0ަ9<EFBFBD><EFBFBD><EFBFBD><EFBFBD>+䟂~<10><>\$ޭ<08><16>L<EFBFBD>P\\쇁<EFBFBD>XA<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<><69><EFBFBD>z<EFBFBD>h<16>\$<05>SM<53>T'<1E><><EFBFBD>1<EFBFBD><05><>D<EFBFBD><44> <09><>5E<35>\0Ğ\$<EFBFBD>ttԮ<EFBFBD><EFBFBD>:\rMƷS<EFBFBD><EFBFBD>Ӗ<EFBFBD>ls<EFBFBD><EFBFBD>Af<>K<EFBFBD>k,N<>l<>D^zz<>dS<06><>/rt<72>N<EFBFBD>><3E><>o%i<><69>\0J<EFBFBD>B<EFBFBD>po<EFBFBD><EFBFBD>R<EFBFBD><EFBFBD><EFBFBD><EFBFBD>/֘٫x\ny<EFBFBD>+<2B><>,e4<16><>q5Q'JD<4A>]<5D>B@m<><0E><><EFBFBD>R<EFBFBD>Ski~<7E><><EFBFBD><01>t0<74>[ 1<>z <09><><EFBFBD>&<26><>^<5E>\nO<EFBFBD><08><><EFBFBD>V<EFBFBD><56><12><>GV@T*<1F>H9<48>ωG0\0'<1B>`<60>Ѱ\r<EFBFBD><EFBFBD><EFBFBD>bQKsLd<02>*;\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.ĔUNp<>,L<>@TR<54>e<><65>b<EFBFBD><62>F<18><><EFBFBD>y<>n> IK<0C><1E>rG<0E> @<40><0C>?cI<63>ݓu%G<>O<10>1<EFBFBD><31><EFBFBD>C<EFBFBD>h<EFBFBD>5T<35>y<EFBFBD><15>I<EFBFBD><49>:\\0<05><06>X<EFBFBD><58>><18>ʊ<EFBFBD>0<18><EFBFBD>QB<51><1B><>EI/-LBT<>!b<><62><EFBFBD>6<EFBFBD><36><EFBFBD>k`jp\0K<0F><><EFBFBD>>k<>d<EFBFBD><64><EFBFBD><EFBFBD>/<02><><EFBFBD>ISk.+*<2A><><EFBFBD>R<EFBFBD>|gR<67><52><EFBFBD>W\\w<EFBFBD><EFBFBD><EFBFBD>t<05>.)<29>^Zc8<63>Z<EFBFBD>~F<><11>Sǵ<14>S<>m̕;b>\0jz=<3D><>T'<27>><1E><>q<EFBFBD>y}:<3A>u<EFBFBD><75>&<26><1E>W<EFBFBD>DQ<44><51>c-<2D><><EFBFBD><EFBFBD>6<[<5B><>e<EFBFBD>x<EFBFBD>ؠ<><D8A0><EFBFBD>[<5B><><EFBFBD>L<EFBFBD>\0wm<EFBFBD>l<EFBFBD>t<EFBFBD>z<EFBFBD><EFBFBD><S<>&<26><0B>db<>x<EFBFBD><78>oi<6F>gK<67>\r`<14>µ<EFBFBD>?D5u@b<><62><EFBFBD>N<EFBFBD><4E>O<EFBFBD>𤷤<EFBFBD><F0A4B7A4><EFBFBD>Y<15>[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{<EFBFBD>Nr鉞<EFBFBD>t<EFBFBD><EFBFBD><EFBFBD>\0<EFBFBD><EFBFBD>tMs<>cBW?<3F>*D<>.p<><70><EFBFBD>'2<><0F>Ge\rp*#<23>e<EFBFBD><65><EFBFBD><1B><>C<EFBFBD><43><EFBFBD>\"<EFBFBD>QI\n<02><07>hi<68>Q<EFBFBD>@<40><><EFBFBD>\rl <09><><08><>_.<13><><EFBFBD>t*<2A>^<5E><>s<EFBFBD>9<EFBFBD><39><EFBFBD>Whq<68><71><02>~,<2C><>Yθ<59><CEB8>dQs¦\r<EFBFBD>Bj<EFBFBD><EFBFBD>D<EFBFBD>ǡ<><1D><<T)C<>\n<EFBFBD><12><><16><>&<26>D{\r<EFBFBD>l<><6C><EFBFBD>-R<><0B>\r@rk<><1B><>Ϣ<0F><>+Z<><5A><EFBFBD>P<EFBFBD><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>u8Ȩ<38><C8A8><1F><>s<EFBFBD>و<13><><EFBFBD>o<><6F>#<23><>g<02><>u\$F<EFBFBD>&\n-v\"P<13><><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD>nnt<6E>1<EFBFBD><31>V<EFBFBD><56><14><><EFBFBD><EFBFBD>Awbx߄<78>D<EFBFBD>5<EFBFBD><35>-<2D>0<EFBFBD>a<EFBFBD>\0\r<EFBFBD>/!<21>I<EFBFBD><02><><EFBFBD>|/<2F><><EFBFBD><EFBFBD>h<EFBFBD><68>n<EFBFBD>Gf-Mdna<6E>^(e<>a<EFBFBD><61>¨<EFBFBD>Y<EFBFBD><59>Z,<2C>S<EFBFBD>E<EFBFBD>N<EFBFBD><4E>\\<13><><EFBFBD><03><>=<3D>4~Mʹ<4D>\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ft<>Ŧ<15>u\"|`<60><>E<EFBFBD><45><EFBFBD>R<>z<><7A>D<EFBFBD>`<60>{<EFBFBD><EFBFBD>@<40>k/K<1C>Y<1A><><EFBFBD><EFBFBD>3sJ<73>䃿5XGͪ<47>%<16>9)Q<><51> <13>Q<1A><><EFBFBD><EFBFBD>1t<31>h<EFBFBD><0F>!TR<54><52><EFBFBD><11>H<02><><EFBFBD>Q<EFBFBD>\r<03>C<EFBFBD><10>E<EFBFBD>0<EFBFBD>#w<>G2<><32>/<2F><07><>/<2F><><EFBFBD>=^ <20>/Ժ<>ΐ<><02><><EFBFBD>E<EFBFBD><1C>\0{+<2B><><EFBFBD>t<1B>+<2B><>q<EFBFBD>б<EFBFBD><D0B1><EFBFBD>I<EFBFBD>t<EFBFBD>|<7C><><EFBFBD><EFBFBD>v<EFBFBD><76>q<EFBFBD><71>Ԉƌ&<26>\r\\<EFBFBD>Vߠ=<3D><><EFBFBD>Eb<45><62>nO<6E>rn<12><><EFBFBD>X({<EFBFBD>ɹuzK<EFBFBD><EFBFBD>`=:<10>\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>[<5B>%<25>:p<><70><08>q+<2B><>R<08>ldY<64><02><>\"<EFBFBD><EFBFBD>[V<>u{H-<2D><>H<EFBFBD>_<EFBFBD><5F><EFBFBD>8j<7F><6A>V<EFBFBD><56>5<><08><><04>\"\0\"N?E;+<11>O~<7E>wN<77>];L<14>'<27><><EFBFBD>SOF<15><><EFBFBD><EFBFBD>䁻<EFBFBD><E481BB>D<EFBFBD>-<2D>!#sN<73><<3C><><EFBFBD> ¯<><C2AF>mu<6D><75><EFBFBD><EFBFBD>G<EFBFBD>8<EFBFBD><38><EFBFBD>Tn]<5D><><EFBFBD><EFBFBD><EFBFBD>:<3A>zIMn<4D> O<>8<EFBFBD><38><EFBFBD>z5<7A><35><EFBFBD>o\\5<EFBFBD>7<><<16><>Ų#8<><38><EFBFBD><EFBFBD>?sN<4E>L<EFBFBD><4C> }<7D>x<1E><07>&4<><34>?<3F>[<5B>z<EFBFBD><7A><EFBFBD><EFBFBD><F3B3B7B6><EFBFBD><EFBFBD><*W<><57><EFBFBD><15><><EFBFBD>e}{HZ<48><5A><EFBFBD>,(<o<>o<EFBFBD>xW<>t<>2<><32><EFBFBD>#<23>A*<18><><EFBFBD><EFBFBD><EFBFBD>o\\<EFBFBD><EFBFBD>R<>}xH>NP<4E>|Qɚ|x<>'<27>-<2D> <20><>2\0<EFBFBD><15>?ƾ2*\r|]t<><74>p<0B>\"<EFBFBD>ڲJuuXyb<>D\n<EFBFBD>Z|<17>H7<48>_<EFBFBD>W<EFBFBD><57><EFBFBD>GuXyH>T\r<EFBFBD>G<1E><><EFBFBD><19>Ql<51><6C><EFBFBD><EFBFBD><EFBFBD><1F><><EFBFBD>n!<21>u'<27>*<2A>C5<43><35>>U<>2!b <1F><>9Pw<50><77>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD>}y<>W<EFBFBD>|<7C><><EFBFBD><0B>a\$<EFBFBD>g<EFBFBD><EFBFBD><EFBFBD><EFBFBD><18><>T<EFBFBD>U<EFBFBD><16>&~9(\\*<2A>!b_<><5F><EFBFBD><EFBFBD>w<EFBFBD>7\\<EFBFBD><EFBFBD><EFBFBD><EFBFBD>]=<3D>\\*<2A><1E><>@<04>#N7ͪ<37><CDAA><EFBFBD>5QN`@<\0<EFBFBD>6!<21>9<EFBFBD><39>l<EFBFBD><6C>\$<EFBFBD>wI\$4<EFBFBD><EFBFBD><15>2<EFBFBD><32>\$<EFBFBD>&<26><><EFBFBD>.RZ<52><5A><EFBFBD><EFBFBD>Y<EFBFBD><59>uyᤳ<01>p<EFBFBD><70>&SI<53><49>@<40>EJiL<>c<EFBFBD><63><EFBFBD>V<EFBFBD>1F<31>1<EFBFBD><31>Z\r\r<EFBFBD><EFBFBD><EFBFBD>h<11><>k<><02><>HH<><02>˿<EFBFBD><CBBF><EFBFBD><05><>K<EFBFBD><4B><EFBFBD>?x<01><>-0\n<10><>d<>N3K<33><16>C<EFBFBD>59)ľ:B#<23><><EFBFBD>dN5A1<>Ɖ<EFBFBD><C689><EFBFBD><EFBFBD>Od[3ڠ<33><DAA0>h<11>[s~)<29>9<EFBFBD>DN<44>y<EFBFBD><79><EFBFBD><EFBFBD>><3E><><EFBFBD>X<EFBFBD><58>'Ƚ<>ϐH<CF90><48><EFBFBD>,<2C><>)ڂ<>\"<EFBFBD>e<EFBFBD>0;\0<EFBFBD>qeo><3E><>=<3D>|<7C>2<EFBFBD>G+B<>@z<17><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><02>@]}<7D><16>rQ<1D><1F><> k/<2F>|<7C>G<>:ѯ<18>W\0<EFBFBD>a4><3E><>^|<7C><><EFBFBD><EFBFBD>g<EFBFBD>o<>XE<>9p<39><70><1F>Lrg<72>A<EFBFBD><41>6<EFBFBD><36>p<EFBFBD>e<EFBFBD><65><EFBFBD><EFBFBD>1<EFBFBD><31>*<2A><07><><14>7<EFBFBD><37>[<5B>>]<5D>#<23>?jB<6A>~<7E>/<2F>}<7D>3<EFBFBD>:<3A><>U\$<05>?<3F><<3C><0B>G<EFBFBD><EFBFBD>a<EFBFBD><61><EFBFBD>\n>0#!i<>>.{A}'hQ<68>Lw<>~<7E>W_<57><5F><EFBFBD>Th#d<><64>û<0F><>d<EFBFBD><64>FQ<18><><EFBFBD><EFBFBD><EFBFBD>*{<EFBFBD><EFBFBD>\"<EFBFBD>\"<EFBFBD>P{<EFBFBD><EFBFBD><EFBFBD>}<03>4<EFBFBD>N<EFBFBD><4E><EFBFBD>i<EFBFBD><69><EFBFBD><15>\r_<EFBFBD><EFBFBD><EFBFBD><EFBFBD>e?l4<6C>2<EFBFBD>?\n<0F><>F<EFBFBD><46> <09><>q<EFBFBD>U<01><>Ľ<EFBFBD>_<EFBFBD><5F>`_<><5F><16><><EFBFBD>j<><6A>{_k_<>o<7F>~<7E><>c*#<23>(<28>/<1A>!Dn<44>F<>`<04><>?@s<>B<EFBFBD>!<21>?;<3B>E<EFBFBD><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><02><>\0k<EFBFBD> <09>*N<><4E>D;<3B><08><>+d\nZZdB<EFBFBD><EFBFBD><1A> <20><>`B5<1B>P\n8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><15><>c#ou<6F><75>k<>ˊM<01>ݯw<DDAF>.<0B><01>F<EFBFBD>J<EFBFBD><4A><EFBFBD>!|<7C>Ĉ2Fc<15>Y).<2E><><EFBFBD><EFBFBD>XHy<04>[<5B><>~<7E><><EFBFBD><EFBFBD>#/<2F>&<0E><><EFBFBD><EFBFBD>[<5B><><EFBFBD><EFBFBD><>Y@<40><><EFBFBD>(|\r\0,O<05><1A>0Yb<59><08>βŬ<CEB2>\$0<EFBFBD><EFBFBD><EFBFBD>aˑ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>A\$<0E><>0,<2C>@<07>Ӱ>>9<><39>\\t<18>i<01><<3C>\0<EFBFBD><EFBFBD>q\0<EFBFBD>}@`<60>\0fVj<EFBFBD><EFBFBD><EFBFBD><EFBFBD>dߠ'(<28><><EFBFBD><03> !_<>n<EFBFBD><6E>0+c<><63><EFBFBD>iig8a]'=-<2D>B!(<28><>8<EFBFBD>_<08><><04>x<EFBFBD>j<EFBFBD><08><><EFBFBD><EFBFBD>)\rH5H<EFBFBD><EFBFBD>Yn ,f<17>r<72><12>}-d\$<EFBFBD><EFBFBD>H<10><>2n鴆ܛ<E9B486>=<3D>-<2D>d<EFBFBD><64><EFBFBD>FE-d<><64><EFBFBD>a<EFBFBD><61>N_z4@<40><06>[<5B>n<EFBFBD><03>\$x!!i0T<><02><><07>u<EFBFBD>8<EFBFBD>ɸ<EFBFBD><04><02><>\0PZ8Z<EFBFBD><EFBFBD><EFBFBD><EFBFBD>c<><63><15><>+Њ<>AAF(<07><07><><EFBFBD>`mg*<2A>vS, dž<><1E>KcA<63>۬ &<26><1E>9<><39><EFBFBD><EFBFBD><EFBFBD><EFBFBD>c<EFBFBD>0w<30>+<07>n<EFBFBD><6E>=<3D><07>)\$<EFBFBD><0E><07>Q<EFBFBD>~A<><41>a<EFBFBD>\0004\0u<07>{<EFBFBD>(<10><03>\$<EFBFBD><EFBFBD><EFBFBD>y !<0B><>B<08><> A<<3C>a<0F><>Az <20><><EFBFBD>ZA4\$ZY9.aX\r<12><>d<EFBFBD>A<EFBFBD>L<EFBFBD>v|oOz|<02>Z<C29A>(<28>e<1C>Z<EFBFBD>Ć<EFBFBD>");}elseif($_GET["file"]=="jush.js"){header("Content-Type: text/javascript; charset=utf-8");echo
|
||
lzw_decompress("v0<EFBFBD><EFBFBD>F<EFBFBD><EFBFBD><EFBFBD><EFBFBD>==<3D><>FS <09><>_6MƳ<4D><C6B3><EFBFBD>r:<3A>E<EFBFBD>CI<43><49>o:<3A>C<11><>Xc<58><63>\r<EFBFBD>J(:=<3D>E<EFBFBD><13><>a28<03>x<EFBFBD><78>?<0F>'<27>i<EFBFBD>SANN<02><><EFBFBD>xs<78>NB<><42>Vl0<6C><30><EFBFBD>S <09><>Ul<14>(D|҄<><D284>P<EFBFBD><50>><17>E<EFBFBD>㩶yHch<><68>-3Eb<45><62> <20>b<EFBFBD><62>pE<70>p<EFBFBD>9.<2E><><EFBFBD><EFBFBD>~\n<EFBFBD>?Kb<4B>iw|<7C>`<60><>d.<2E>x8EN<45><4E>!<21><>2<><05>3<EFBFBD><33><EFBFBD>\r<EFBFBD><1C><>Y<EFBFBD><59><EFBFBD>y6GFmY<6D>8o7\n\r<10>0<EFBFBD><d4<64>E'<27>\n#<1E>\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<2E>C!<21>^t<>(<13><>bqH<71><48>.<2E><><07>s<EFBFBD><73><EFBFBD>2<>N<EFBFBD>q٤<71>9<39><EE8BA6>#{<02>c<EFBFBD><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3nӸ2<D3B8><32>r<EFBFBD>:<<3C>+<2B>9<EFBFBD>CȨ<43><C8A8><EFBFBD>\n<<3C>\r`<60><>/b<>\\<EFBFBD><10><>!<21>H<>2SڙF#8Ј<38>I<13>78<37>K<EFBFBD><1A>*ں<>!<21><><EFBFBD>鎑<EFBFBD><E98E91>+<0F><>:+<2B><><EFBFBD>&<26>2|<7C>:<0B><1C>9<EFBFBD><39><EFBFBD>:<0E><>N<EFBFBD><4E><EFBFBD>pA/#<23><> <20>0D<04>\\<EFBFBD>'<27>1<EFBFBD><31><1E><><EFBFBD>2<>a@<40><>+J<><4A>.<2E>c,<2C><><0C><><EFBFBD>1<EFBFBD><31>@^.B<><42>ь<EFBFBD>`OK=<3D>`B<17><>P<EFBFBD>6<EFBFBD><36><EFBFBD><EFBFBD>>(<28>eK%! ^!Ϭ<>B<EFBFBD><42>HS<14>s8^9<>3<EFBFBD>O1<4F><31>.Xj+<2B><><EFBFBD><EFBFBD>M #+<2B>F<>:<3A>7<>S<EFBFBD>\$0<EFBFBD>V(<28>FQ<46>\r!I<07><10>*<2A>X<EFBFBD>/̊<><CC8A><0C><>67=<3D>۪X3݆؇<DD86><D887><EFBFBD>^<5E><>gf#W<><57>g<EFBFBD><67><EFBFBD>8ߋ<38>h<EFBFBD>7<EFBFBD><37>E<EFBFBD>k\r<EFBFBD>ŹG<EFBFBD>)<29><>t<EFBFBD>We4<65>V؝<56><D89D><EFBFBD><02>&7<0F>\0R<05><>N!0<>1W<31><57><EFBFBD>y<EFBFBD>CP<43><50>!<03><>i|<7C>gn<67><6E>.\r<EFBFBD>0<EFBFBD>9<EFBFBD>Aݸ<EFBFBD><EFBFBD><EFBFBD>۶<EFBFBD>^<04>8v<38>l\"<EFBFBD>b<>|<14>yHY<1F>2<1B>9<05>0<EFBFBD>߅<EFBFBD>.<2E><>:y<><79><1E><>6<EFBFBD>:<05>ؿ<EFBFBD>n<EFBFBD>\0Q<EFBFBD>7<EFBFBD><EFBFBD>bk<><\0<EFBFBD><EFBFBD>湸<EFBFBD>-<2D>B<EFBFBD>{<EFBFBD><EFBFBD>;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>W<EFBFBD><57><10><>&<26>/n<><6E>w<><77>2A<41><D7B5><0C><><EFBFBD>A<0B>0yu)<1A><><EFBFBD>kLƹtk<74>\0<EFBFBD>;<16>d<EFBFBD>=%m.<2E><>ŏc5<63>f<><66><EFBFBD><EFBFBD><EFBFBD>*<2A>@4<><34> <20><16><>c<EFBFBD>Ƹ܆|<15>\"맳<EFBFBD>h<EFBFBD>\\<EFBFBD>f<08>P<05>N<EFBFBD><4E>q<EFBFBD><71><EFBFBD><EFBFBD>s<EFBFBD>f<EFBFBD>~P<><50>pHp\n~<7E><><EFBFBD>>T_<><5F>QOQ<4F>\$<EFBFBD>V<EFBFBD><EFBFBD>S<EFBFBD>pn1<1F>ʚ<EFBFBD><CA9A>}=<3D><><0B>L<><15>Jeuc<75><07><><EFBFBD><EFBFBD>aA|;<3B><>ȓN<C893><4E>-<2D><1B>Z<EFBFBD>@R<><07>ͳ<EFBFBD> <20> <09><>.<2E><1F>2<EFBFBD><32><EFBFBD><0C><><11>`RE<52><45><EFBFBD>^iP1&<17><>ވ(<28><><EFBFBD>\$<EFBFBD>C<0E>Y<EFBFBD>5<EFBFBD><35><EFBFBD><D883>axh@<40><>=Ʋ<1E><>+>`<60><>ע<><17><07>\r!<1C>b<EFBFBD><62><EFBFBD>r<0E><>2p<13>(=<3D><><18><17>!<21>es<65>X4G<34>Hhc <20>M<EFBFBD>S.<0E><>|YjH<><48>zB<>SV<53><56>0<>j<>\nf\r<EFBFBD><EFBFBD><EFBFBD><14><>D<EFBFBD>o<><6F>%<25><>\\1<EFBFBD><EFBFBD><01>MI`(<28>:<07>!<21>-<2D>3=0<><30><EFBFBD><0B><><13>S<EFBFBD><53><EFBFBD>gW<67>e5<65><35>z<EFBFBD>(h<05><>d<15>r<EFBFBD>ӫ<02>Ki<69>@Y.<2E><><12><><EFBFBD>\$@<40>s<0B>ѱEI&<26><>Df<44>SR}<7D><>rڽ?<3F>x\"<EFBFBD>@ng<6E><67><04><>PI\\U<><55><<3C>5X\"E0<1B><0B>t8<74><38>Y<EFBFBD>=<3D>`=<3D><>><3E>Q<19>4B<>k<EFBFBD><6B><EFBFBD>+p`<60>(8/N<>qSK<53>r<EFBFBD><72><EFBFBD><EFBFBD>i<01><>O*[J<1C><>RJY<4A>&u<><75><13>7<0F><><15><><EFBFBD><EFBFBD>#<23>><3E><><EFBFBD>Xû<>?AP<41><50><EFBFBD>CD<43>D<EFBFBD><44><EFBFBD>\$<14><><02><><EFBFBD>Y<EFBFBD><59><<3C><><EFBFBD><EFBFBD>X[<5B>d<EFBFBD>d<EFBFBD><64>:<3A><>a\$<EFBFBD><EFBFBD><EFBFBD><EFBFBD><06>Π<><CEA0>W<EFBFBD><57>/ɂ<><C982>!+eYIw=9<><39><EFBFBD>i<EFBFBD>;q\r\n<EFBFBD><14><11>1<EFBFBD><31><01>x<EFBFBD>0]Q<><<3C>zI9~W<><57>9RD<0B>KI6<49><36>L<EFBFBD><4C><01>C<EFBFBD>z<EFBFBD>\"0NW<>WzH4<48><34>x<EFBFBD>g<EFBFBD>ת<EFBFBD>x&<26>F<EFBFBD>aӃ<61><D383>\\<EFBFBD>x<EFBFBD><EFBFBD>=<3D>^ԓ<><D493><EFBFBD>KH<4B><48>x<EFBFBD><78>ٓ0<D993>EÝ҂ɚ<D282><C99A>X<EFBFBD>k,<2C><0E>R<><52><EFBFBD>~ <09><>̛<EFBFBD><CC9B><EFBFBD>Ny<4E><79>Sz<53><05><>6\0D <09><><EFBFBD><EFBFBD><EFBFBD>؏<EFBFBD>hs|.<2E><>=I<>x}/<2F>uN<75><4E><08><>'R<><02><05>n'<27>|so8r<38><72><EFBFBD>t<><74><EFBFBD><EFBFBD>a<EFBFBD>\0<EFBFBD>5<EFBFBD>P<EFBFBD>֠dẘ<77><CC8A>̕q<><71><EFBFBD><EFBFBD>5(X<>Hp|K<>2`<02>]FU<46>~!<21><>=<3D> <20>|<7C>,up<75><70>\\<EFBFBD><EFBFBD><EFBFBD>C<>o<0B>T<EFBFBD>e╙C<E29599>}*<2A><>f<EFBFBD>#<23>shp<0C><>5<EFBFBD><35><1A><><EFBFBD>mZ<6D>x<EFBFBD><78>fn~v)DH4<48>e<EFBFBD><03>v<EFBFBD><08>V<EFBFBD><56>by<62><79>T<EFBFBD><54>̥,<2C><EFBFBD><7F><<3C>y,̫֞<D69E>2<EFBFBD><32><EFBFBD>z^<5E><><EFBFBD><EFBFBD>K<EFBFBD><4B>2<EFBFBD>xo <09> <20><><EFBFBD>2<EFBFBD> I<><49>a<EFBFBD>h<1C>~<7E><0B>c<><63>ej<65>6<EFBFBD><36>)<29>]<5D><04><><18>5<EFBFBD>͍dGE<D78A>t<EFBFBD>'N<>=V<><56>ɜ@<40><><EFBFBD><EFBFBD>b^<5E><><EFBFBD><EFBFBD>p:k<><6B>1<EFBFBD>StTԙ<>F<>F<EFBFBD><46>`<60><18>`<60><0E>{{<EFBFBD><1F><><EFBFBD>4<EFBFBD><34>7<EFBFBD>pcP<63>ط<EFBFBD><D8B7>V<EFBFBD><56>9<EFBFBD>ىLt<4C> M<><4D><EFBFBD><03><>{<EFBFBD>C<1F>l<EFBFBD><6C>n47s<37>PL<50><14>!<21>9{l a<><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!pG%<25><0F>)<29><<3C><>2*<2A><<3C>9rV<72><56><EFBFBD><EFBFBD>)<29>|<7C>A<EFBFBD><41><EFBFBD><EFBFBD>Ip=<3D>\n7d<EFBFBD>>j<14>^6<>\09<EFBFBD>#<19>7<D597>T<EFBFBD>[<03><><EFBFBD>i:<3A><><EFBFBD>X<06>D<1D>'&8<>/<2F><><EFBFBD><EFBFBD><EFBFBD>;<3B><>#<23>f<EFBFBD>%<25><0E>Kj3<6A><33><EFBFBD>;<3B><>Z<EFBFBD>^<0B>]<5D><>NQw<51>tȬ\$<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǎ<EFBFBD>-<2D><>;<3B>L<EFBFBD>X<EFBFBD>+<2B><>P<0B>̄<>:<3A>N<EFBFBD><4E><1E><> \0Dz<EFBFBD>P<EFBFBD><EFBFBD>y<EFBFBD>jt><1E><>.[<5B><w<>\"|<7C><>so-<2D>;';<3B>ǟ<><11><><EFBFBD>t\r<EFBFBD><EFBFBD><EFBFBD>t<EFBFBD> <09>I<EFBFBD><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>T<EFBFBD><54>\nL\n<EFBFBD>)<07><><14>(A<>a<EFBFBD>\" <20><03><> <09>&<26>P<EFBFBD><14>@O\n師0<>(M&<11><>b\0<EFBFBD><EFBFBD>@<40>@<40>\n`<60>=<3D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*̔<><CC94>8<EFBFBD>/<2F><>kH<6B>F<EFBFBD><46><EFBFBD>\"<EFBFBD>F<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B&<26>,<2C><<3C><><EFBFBD><EFBFBD>4b<34><62>eN<65>)<29>FEO<45><05>NSN<53><4E>O<EFBFBD><4F>\r<EFBFBD>.x<><78>\"<EFBFBD><EFBFBD>k<02>D\r<EFBFBD><EFBFBD> <20>0<EFBFBD>p[<03>2RI0Z<30><5A><0C><><EFBFBD><03><>'<27><><EFBFBD>f<EFBFBD>ix<69>P0d<30><64><EFBFBD>|<7C>h<EFBFBD>O<EFBFBD><02><>mkH<6B>Β<EFBFBD><CE92>7<08><><0E>\nn<EFBFBD><06><><01><>eP\"<EFBFBD>0x<EFBFBD>P<EFBFBD><02><><EFBFBD>02<30>n6<6E>Wχ<0E>N[<0E>!<21><><0E><0C>6ﰣ\r.u\rp<EFBFBD><EFBFBD>P<EFBFBD><EFBFBD>.(<28>mGt\rox<EFBFBD><EFBFBD><EFBFBD><EFBFBD>1!\n<EFBFBD>\r<EFBFBD>:<3A><>z+<2B><>lV<>'<0B><><12>|?P<>P<><11>:<3A>0<EFBFBD><05> <20>bT<62><54>au<0B>x`<60><0C>co}<16><>O<>1W<07><><14>q8<71>l<><6C>\\<EFBFBD><EFBFBD>u<17><0C>@<40><0E><>\$NePKq<><71>g<EFBFBD>A(<28>mc<6D>L'`Bh\r-<2D>!<21>b`<60><><1D>k <20><0B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>`N<>0<EFBFBD> <09><0F><>nN<6E>`<60><>D\0<EFBFBD>@~<7E><06><><EFBFBD>`K<><4B><EFBFBD>]<03><><0C><>|<7C><><1E>ʾ<EFBFBD>A#<23><>i<>Y<EFBFBD>xf<78><66>\r<EFBFBD>4 ,v<>\0ދQ<EFBFBD>ɠN<EFBFBD><EFBFBD>Ro<EFBFBD><EFBFBD><EFBFBD>m<EFBFBD><05><> 1<>&Ǫ<>p<>r <20><>np<6E>6%<03>%ly\rb<EFBFBD>ʕ(<28>S)')@<40>ޯD<DEAF>M<EFBFBD>I<>s {&<26>KH<1A>@d<>l<EFBFBD>wf0<66><30>x<><78>6<EFBFBD><36>~3OP<4F>h0\"<EFBFBD><12>D<EFBFBD>+<2B>A<EFBFBD>\$I<EFBFBD>`b<>\$<EFBFBD><EFBFBD>\$<EFBFBD>R<EFBFBD>L<EFBFBD><EFBFBD> Q\"R<EFBFBD>%<25><><EFBFBD>R<>FV<04>Ny+F\n<EFBFBD><EFBFBD> <20>%fz<66><7A><EFBFBD>*<2A>T<EFBFBD><54><EFBFBD>Mɾ<4D>R<EFBFBD>%@ڝ6\"<EFBFBD>bN<EFBFBD>5.r<>\0<EFBFBD>W<EFBFBD><EFBFBD><0E>d<0C><>4<EFBFBD>'l|9.#`<60><><EFBFBD>憀<EFBFBD>أj6<6A>Τ<EFBFBD>v<07><><EFBFBD><EFBFBD>vڥ<76>\rh\r<EFBFBD>s7i<EFBFBD>\"@<40>\\DŰi8#q8<71><38> <09>\0ֶbL. <20>\rdTb@E <20>c2`P( B'<27><0B><><0F><>0<EFBFBD><30>/<2F><>|<>3<EFBFBD><05><><EFBFBD><EFBFBD>R.So*<2A><><EFBFBD><EFBFBD>cA)4K<>}<06>:S<><53><EFBFBD><EFBFBD><EFBFBD>\0O8<EFBFBD><EFBFBD>B@<40>@<40>CC@<40>A'B\0N=<07>;S<>7S<37>;<3B><>D <09><>MW7s<37>ED<45>\rŨ<0C>p<EFBFBD><70><<3C>DȺ<44>9 <20>}4<><34><EFBFBD><EFBFBD>_o.<2E><>rԉI\r<EFBFBD>HQz<EFBFBD>EsB<EFBFBD><1E>\0e<14><>J<EFBFBD><4A> <20><>KwHt<48>J4,^25h2<68>i%;<3B>=<03><><03>LL6}<7D><>7#w<<3C>lrT<72>;tPl76<37>P<EFBFBD>rJ<72>\n@<40><0C><>5\0P!`\\\r@<40>\"C<EFBFBD>-\0RSH~F倵ņO<C586>@ǭ<><C7AD><EFBFBD><EFBFBD>g<><67><13>)F<>*h<>\0<EFBFBD>p<EFBFBD>COu6<>ҎYO<59>Rg w9B<04>Ӛ<EFBFBD><D39A>L\"䘵<EFBFBD>_63gU5\r7,6\"<EFBFBD><EFBFBD>1<><0F><><15><>y<EFBFBD><79>V<EFBFBD>%VğWX<><58>]O<><4F>J<06> #XQGIXɰ<58><07>Sq<53>+<2B>(<28><><EFBFBD>q<15>R<>GH.l6[R<>0\0<EFBFBD>%H<><48>C}Sr7<><37>7<EFBFBD>cYK<59><14><>)<29>.<2E>C<EFBFBD><43>r<EFBFBD>;<3B>Ц)<29>M+<2B>3<EFBFBD><33> <20><>4<EFBFBD><34>|<7C>Ϊ1<CEAA>ZJ`5W<35><57>L<15><>-Smx<6D><78>H<EFBFBD><48>dR*<2A><07><><EFBFBD>JЦ\r<EFBFBD><EFBFBD><EFBFBD>|52<35><32><EFBFBD><EFBFBD><EFBFBD>-C-1R<31>R<EFBFBD><52><EFBFBD>T`N<>e@'Ʀ*<05>*`<60>><3E><><EFBFBD>\0|<7C><>C!nE,<2C>ag<61>.<2E><>b<EFBFBD>f<EFBFBD>Ý8ӓ_<D393><04><>a`G<><05><>p<EFBFBD>`<60>m<EFBFBD>6<><36>Rz<52>\0<EFBFBD><EFBFBD><EFBFBD>[-#mO<14>1H\rd<EFBFBD>M<>MNMqnM<6E><4D>nq<><71><0F><>R6<52>m<EFBFBD>On-t<>v<EFBFBD><76>æ\r<EFBFBD>]`<60><><EFBFBD>-<2D>`j<><0F><>X<EFBFBD>Mo<4D>]`OU<4F>AF<41><46><07><>37<>p<>>'J'm<>('M=j9jV<6A>ZbBn<42><<15>@<40><<3C><1F><>fe<66>:\0<EFBFBD>K(<28><>N<1E><><EFBFBD>uN<75><0B><><1B>-!<21><>1vҍH(<28>Qg<51><67>µ<1F><05><>xC<78><@<14> <20>c<EFBFBD>[<5B>c\\2o,5<>˃q0m}<7D>i~+<2B><>e<EFBFBD>Ѷ<EFBFBD><D1B6>*<2A>}<7D><>Ƞ<EFBFBD>}<7D><>M<EFBFBD><4D>~<7E><><12>|<7C>̘\r<EFBFBD><EFBFBD> <20>@<40>\"hB<68>\$B<EFBFBD>2<EFBFBD>c\$g<EFBFBD>\$<EFBFBD>5b?<3F>6!w<><77>+~<7E>l1<6C><31><EFBFBD><EFBFBD>`<60><> s<><1F><><EFBFBD><0B><> <09><>.<16>v7m<37>Ec`Q<>ecb6<62><36><EFBFBD>`<60>\"&f<><66>x<EFBFBD>\"<EFBFBD>2<EFBFBD>E~Fz<46><15>\$<EFBFBD>[/<2F><>0,w~`u<1F><>>w<>%<25><><EFBFBD>X<EFBFBD>\$دv<EFBFBD>V<EFBFBD>\"-<2D>R<EFBFBD><52><EFBFBD><EFBFBD>%W<><0B><>D<12>@ʀVo<1F><><EFBFBD><0C><><EFBFBD>E@<40>y<EFBFBD><79><02>h<EFBFBD><68><EFBFBD>1<EFBFBD><31>\"tЙ<07>O<EFBFBD><4F><EFBFBD>/<2F><><07><><EFBFBD><EFBFBD><EFBFBD>!<21>[<5B><><EFBFBD><02>`:x}<7D>@]<5D><>b<0C> <20>@<0B><><0B><04><><0C><>5<EFBFBD>U(K<>y<EFBFBD><79><EFBFBD>S<EFBFBD><53><EFBFBD><18><15><>>8D<44><CDB8><EFBFBD><EFBFBD>yw<79>=<3D>|T,<2C>'L<><4C>Y<EFBFBD><0B><><EFBFBD><EFBFBD>\\<EFBFBD>L<EFBFBD>͌<EFBFBD><EFBFBD>d<EFBFBD><0C><05>.<2E><><EFBFBD><02>@<40>ђ<EFBFBD><D192><10>9<<3C><>`9E<39><45>Z<0C>C<EFBFBD>ײ\\h<EFBFBD>=<3D>qR<71>`GGW<47>X{<EFBFBD><EFBFBD>5<EFBFBD>-L<><4C>RJ\$JP+<2B>7X<37><58><EFBFBD><EFBFBD>ulӘh̵<68><CCB5><EFBFBD>Y<EFBFBD>P<18>g<EFBFBD><67><EFBFBD><EFBFBD>z<1B><><EFBFBD><EFBFBD>u<EFBFBD>iwyL<79>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD>cY<63>7yF<<3C>v\r<EFBFBD><EFBFBD><EFBFBD>57<EFBFBD>d<EFBFBD>O<EFBFBD>g<EFBFBD>k<>Yq<59>8<EFBFBD>p<EFBFBD> <09><18><>\n<04><>*'<27>9\"<EFBFBD>`<60><><1E>w[<5B>G<><47>HD<48>y<EFBFBD>_]<5D>c<EFBFBD><63>iR<69>˖<EFBFBD>o<EFBFBD><6F>w<EFBFBD><77><EFBFBD><EFBFBD>9 <09>{<EFBFBD><EFBFBD>]<5D>Oݍ8<DD8D><38>C<EFBFBD>67<36>:I<>v<>S<><53><EFBFBD><EFBFBD>:_<>U7<55><37>1<EFBFBD>z<EFBFBD><7A>ڵyy<79><7F><EFBFBD><EFBFBD><CDB9><EFBFBD>M<EFBFBD>0ͬ<30><CDAC>c0<>z<EFBFBD><7A>?<3F><>z<04>7}W<>'<27><><EFBFBD><EFBFBD>5<EFBFBD><13>_eƸ<65><C6B8>zm<7A>l\nC<EFBFBD>X_<EFBFBD>(<0C><>Ý<EFBFBD><C39D>{@<40>}<7D>X`SgBլD<><44>u<EFBFBD><75>ñ<EFBFBD>!<21>k~<7E><><EFBFBD>Y<EFBFBD>O<EFBFBD>vK<76>\0<EFBFBD>c<EFBFBD>r<EFBFBD>r<EFBFBD>(<28>^`<60>n<EFBFBD><16>;y<>7<EFBFBD>z+<2B>{<EFBFBD><EFBFBD><EFBFBD>W<EFBFBD>:\$<0C>M<><4D><EFBFBD><EFBFBD>\"I<EFBFBD><EFBFBD><EFBFBD><EFBFBD>%<25>om<6F><6D><EFBFBD><EFBFBD>Š <09><>,PK<50><4B><EFBFBD><05>9<03><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʅ<EFBFBD><0C><>g\n<EFBFBD>a~<7E><><EFBFBD><04><>x<EFBFBD>%<18>~<1B><><EFBFBD>W<EFBFBD>ؽ<EFBFBD><D8BD><EFBFBD><EFBFBD>R<EFBFBD><07>ٌ<EFBFBD>X<DD8B><58>x<EFBFBD><78><EFBFBD><EFBFBD>%<25><><EFBFBD>z<EFBFBD>SzթX?<3F>y#}<7D><1F>L);<3B>!<21><>yߕ<79>s<EFBFBD><19><><EFBFBD><EFBFBD><EFBFBD><1A><><EFBFBD>و<EFBFBD><0F><><15>:<03><><EFBFBD>x<EFBFBD>z+UԺ<55><D4BA><EFBFBD>|<7C><0C>1<EFBFBD><31>u<EFBFBD><75>HO<48>'<27><>c<EFBFBD><63><EFBFBD><EFBFBD>ϩ{<EFBFBD><EFBFBD><EFBFBD>c<EFBFBD><g<><67>/<2F><><EFBFBD>V:퉠<>Ɋ<EFBFBD><<3C><><EFBFBD>\\3<EFBFBD><18><><19>e\0<EFBFBD><EFBFBD>Z<07><>Tx<54>Zq\nl<><6C><EFBFBD><EFBFBD>_<EFBFBD><1C><><EFBFBD><EFBFBD><EFBFBD>I_<49>Z<EFBFBD><5A><EFBFBD><EFBFBD><EFBFBD>y<03><19><>,ۙ]<1F><><EFBFBD><EFBFBD>9<EFBFBD>ۚ͠,회<><ED9A8C><EFBFBD><01><>k<EFBFBD>:;<3B>}-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><02><>E\0S~2<11><><EFBFBD><EFBFBD>\\ <09><>UͺTV3<56>o<EFBFBD>E<EFBFBD>|<7C>E<EFBFBD><45><EFBFBD> C<>m<EFBFBD>Ϡ<EFBFBD><CFA0><EFBFBD>I<EFBFBD>=<04>\0<EFBFBD>Н<12>z<EFBFBD><7A>kGٹ\0<EFBFBD><18>ّ<EFBFBD>9<EFBFBD><39>1 <09>y<EFBFBD><79><0C><><EFBFBD><EFBFBD><EFBFBD>=5ۛ<35><DB9B><EFBFBD><Й<><D099>]G<>Й<EFBFBD><D099>S<EFBFBD><53>cՇ<63>!\r<EFBFBD><EFBFBD>DR<EFBFBD>]<5D>P'<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pLtǚ<08>H+`Ӿ<>=<3D>e9ڇ<39>Q{<EFBFBD><EFBFBD>9_b\$5<EFBFBD><EFBFBD>l<EFBFBD>Uzy<EFBFBD>n<EFBFBD>z`xb<>k<>M <09>3<EFBFBD><02> Z\r<EFBFBD><0C><>q]<5D>)ֽ{#<23>c<EFBFBD><63><EFBFBD>WI<57>\r<EFBFBD><EFBFBD>8<>\r<EFBFBD><EFBFBD>3<EFBFBD>䩽a<E4A9BD><61><EFBFBD>SI<53><49>'<27>^a<>~e<>D稟<><E7A89F><14>>o<>2 N<><4E><EFBFBD>ސP>cΞ<63><CE9E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>^G<><47><17><><1D><>Y<EFBFBD><59><EFBFBD>͞<EFBFBD><CD9E>~x<><78><EFBFBD><EFBFBD>^<5E><>Rg\\<EFBFBD><EFBFBD>\$+<2B>ՍP<D58D>kY*4<><34>~<7E><>,<2C><0B>Mݶ<4D>W-<2D>hhG<68>_Iԉv-<2D><>?iv<69><76>e>T\"\$<EFBFBD><EFBFBD>[Ը+,<2C>)<29>K<><4B><EFBFBD><EFBFBD>u<EFBFBD>q?KW<4B>\rk<EFBFBD>L%<25>}<7D>tԻ<74>~<7E>0<EFBFBD><30>|Pk<50><04>՟T<>=<3D>?hE<68>n=Es<45>~<7E><><EFBFBD><EFBFBD><EFBFBD>xJH<4A><48>K<EFBFBD>Vuk<75><6B>?X?<3F><>7<1F>B)<29><>ci<69><7F>D<EFBFBD><44><08><>\rא>D'<27>,ʟ<>>v<1F>@<40>X<7F>+\rr<EFBFBD><EFBFBD><EFBFBD>@\r<EFBFBD><EFBFBD>U<EFBFBD>X<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ׯ<EFBFBD><EFBFBD><EFBFBD><05><EFBFBD>Ӏ<EFBFBD><D380>1P>U,<2C><>3<>G<EFBFBD><1B>>>tѥ}<01><><14><>\"=<17>D}<T<><54><EFBFBD><1B><><EFBFBD>%<25>9<><39><EFBFBD>i<EFBFBD>ʫ<18>o<EFBFBD>1<EFBFBD>e]<5D><><EFBFBD>h<EFBFBD>i<EFBFBD><69>&]<5D>|<7C><>*<11><01><0C>l<08><><EFBFBD><06>1<EFBFBD>D\r)XZRY<52>l<03><>\"<EFBFBD>E<EFBFBD><EFBFBD>/<2F><><EFBFBD>8<EFBFBD>ײ<EFBFBD>*<06>ByK<79><4B>4<EFBFBD><34>5<EFBFBD><35><EFBFBD>Nrz\\<1E>p<EFBFBD>ӽ9<D3BD><39>Yz<59>JH<4A><48>S<0E><>>/<2F>4C<34><43><04><1F><><EFBFBD>&<26><03><0F><>sC<73><18>I<>;Z,ۆb3<62><33><EFBFBD>\rϖ<EFBFBD><EFBFBD>{<EFBFBD>|v<>D\nٟNpÁ^<5E><><EFBFBD><EFBFBD>Ay<41>0az<61><<08><>Ԝ<EFBFBD><D49C>MPS0ڠ<>jew=<3D>Ooz<6F>4<EFBFBD><34>>h1<68><31>L%R<1A>S<EFBFBD> <09><><EFBFBD>}<7D>u82<38><32>𦴮9o<39><6F>n<EFBFBD>cM<<3C>uƶ0\r<EFBFBD>p<17>~<7E>A<>\nj<14>Q<EFBFBD><51><EFBFBD>3z<33><7A>(<28>;<01>3E<33>a<EFBFBD>]<5D>eU<65><55>l40<34>,u<05><><EFBFBD><EFBFBD>f<0F><>f<><66><EFBFBD>H0݆\$1<EFBFBD><EFBFBD><0E><>C<EFBFBD>A<EFBFBD>fi<66><1D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嬇<>><1B>Xc<58><63><EFBFBD>ʂT\"<EFBFBD><EFBFBD>6pHg<EFBFBD>D<EFBFBD>H<EFBFBD>?<3F>\"p<>l&<26>K/<2F><>?<3F><><EFBFBD><EFBFBD>`2l<32>m<EFBFBD>*<2A><>TB<54>K\"<EFBFBD><EFBFBD>ϋ<12>ɠ<EFBFBD><06><>\$P\"o<EFBFBD>eV<>k<EFBFBD><<18><>o<EFBFBD><12>I<EFBFBD>r<02>:<3A>=<3D>(<28>x2<78><32><10><><EFBFBD>*Ȁ@=hCE<43><06>F6u+<2B>,Z<>Y<EFBFBD><02>i<EFBFBD><69><EFBFBD><05>r<EFBFBD>^lP<6C>x,g<><67>*<2A>Ȗ<EFBFBD><C896>QE)1i<31>hJ<68><4A>\"<EFBFBD>IF<EFBFBD><EFBFBD><0F><>l<EFBFBD>Y<EFBFBD>|<7C><>T<06>f<06>V<EFBFBD>}U<><55>eo<65> 5Q?)<29><><EFBFBD>\0c<EFBFBD><1D>M<EFBFBD><4D>F<EFBFBD>ʼ<EFBFBD>ڑj<DA91>l<EFBFBD><6C><EFBFBD>lP<6C><50>m<EFBFBD>4<EFBFBD><01>\r<EFBFBD>*<2A>`⨸<><E2A8B8><EFBFBD><EFBFBD>LMiqb<><62><05>V<EFBFBD>)Q<>W<><57>R^a.><3E><><EFBFBD>g <09>o<EFBFBD>x<06><16>\n\0P`@<40><>`\$<EFBFBD>4鏍r<E98F8D><72>Z<04>#H<><48>&<26>ncv)<29>lF<6C> N<02>coX<>F<EFBFBD>9 g<><67><13><><04>\"<EFBFBD>9<>'<27>4t<34>^<02>!<21>< <09><02>#<23><1B><><EFBFBD>0<08><><02>#<23>h<>G|\n<EFBFBD>Bx\0<EFBFBD><1E><><EFBFBD>P<05>T0<13><><1D><><EFBFBD><EFBFBD>6\0TD~#<23><1B><1F><<3C>Ԑ<0C><><EFBFBD>@)H<04>b1<62>I<EFBFBD>[h<>Gj7<11><14>_<EFBFBD><02>!0 <09>CX@<40><1F><>\0<EFBFBD>\n1<EFBFBD><EFBFBD><EFBFBD>@Z@\"ǎ8<EFBFBD>N<02><>\0<EFBFBD><06>jH<6A>\0<EFBFBD>E<EFBFBD><EFBFBD><13><>#<23>ۊi:<><C290><01><><EFBFBD>i#<23>hD<68><EFBFBD><7F>s#<23>!<21><><EFBFBD>T<0C>L<EFBFBD><0C>\$\$<EFBFBD>)<29><>B<EFBFBD><EFBFBD>v<EFBFBD><76>)<29><><01><EFBFBD>-?h<13><><EFBFBD>c<EFBFBD><63>P Oto\$p<15>օB7<42><37><EFBFBD><1C>#<23>~<7E><>D#<23>-0dbDH<> <09>Rl<>J?<1F>\"<EFBFBD>`\n<EFBFBD>A?\0T,(<28>RM<52><4D><EFBFBD><EFBFBD>p\$<EFBFBD>\"<EFBFBD>:I<>SRz<52>t<EFBFBD>\$<EFBFBD><1B>'I><3E>쓜<EFBFBD><EC939C><EFBFBD>'QM262<36>P<EFBFBD><50><EFBFBD>R<07><16><> <09><>\\<EFBFBD>cxF<EFBFBD>&<26>69<36>^<5E><> <09>pN)OHj:Q<><51>~<7E>y\0<EFBFBD>G<0E>yz<79>Fc<46>Ĺ)s*<mQ<6D>\n(2<><08>2<><32>8<EFBFBD>zT<7A>#~[<5B> <18><>G?-<2D><10>1<EFBFBD>.P;<3B>\\<EFBFBD>&<26><><EFBFBD>5֍\0mT<EFBFBD>Qn)p\$<EFBFBD><0E><><EFBFBD>\\<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>v<EFBFBD><EFBFBD>Zr<EFBFBD>K<EFBFBD>(c\n<EFBFBD>Yw<18><04><><0C>s/<2F>gK<67>]nb<><62>e<EFBFBD>.<2E>K<><4B>P<EFBFBD>p:K<12>C<EFBFBD>{6arؘl<D898><6C><EFBFBD>1<1C>)<29><><EFBFBD>/<11><><EFBFBD>04<30>KU<05><><EFBFBD><EFBFBD>S@x<><78><EFBFBD>˜<EFBFBD><CB9C>Q<EFBFBD><51><EFBFBD><EFBFBD>vT<76>̄<>c.<19><>ʚ<05>:<3A><> 0<>ķ<EFBFBD>L1چT0b<30>h<02>ZL<5A>]<5D>A<EFBFBD>q<EFBFBD>VN<56>L<>\nr<EFBFBD>0<1C>V#\0<EFBFBD><EFBFBD>Ta<EFBFBD><EFBFBD><01><><EFBFBD><C292>2<EFBFBD>`<60>`2,\r<EFBFBD><EFBFBD>-imMhSI<53>T<EFBFBD>xC<78>,<2C><>L<EFBFBD><4C>.IOt<4F><74> 7<>_<EFBFBD><5F><EFBFBD><EFBFBD>T<>rg<04>I<EFBFBD>Kxq8gI<><04>qM<71>cDŦA3 <09> <20>r`\\<14><>U<10><>L<EFBFBD><4C><EFBFBD>Ӝ<EFBFBD><D39C>'A9[<5B>8PQ08<30><38><EFBFBD>2<EFBFBD>1<0C><> rBK`<14>P%<25>Tq <09>C<EFBFBD>F<05><><EFBFBD><EFBFBD>_<13>h<EFBFBD>Qu<<10>C\n<EFBFBD><1C>@<40><y<><79>,&C<0B><><EFBFBD>v0%PO\"x<EFBFBD>*<2A><>綔<>2<07>&<13><02><>X)=p.\0<EFBFBD>{<13><>(N'<27>y<><79><EFBFBD>.2<>\$<EFBFBD><1F>>a<><61><EFBFBD>&<13><1A>)<29><>@\0<EFBFBD>Ov<EFBFBD><EFBFBD><EFBFBD><EFBFBD>#X<><07><>\nNz<EFBFBD>,<02>xbi<62><69>ꁦ<EFBFBD><EA81A6><EFBFBD><02>=i<><69>ZyR<79><52><EFBFBD><EFBFBD>g<EFBFBD>3M<33>V<EFBFBD>s<EFBFBD>\n\nq<EFBFBD><EFBFBD><05>\0<EFBFBD>?<3F>Ah<16>A;`<60>;m<><6D><EFBFBD><EFBFBD>(KAz\r<EFBFBD><EFBFBD>!<21><1D><>O\0EBJP<>BޡXO\0<EFBFBD>@<04>Q4<05><>V0<0E>kuX<08>tYK٫h<D9AB>=n<><6E>{<EFBFBD><EFBFBD><0F>@<40>f<EFBFBD>=<3D>6d)}<7D>*<06><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><0F><02><><EFBFBD> 9<>5<><35>F<EFBFBD>B\0N<05>'\0ѵ<EFBFBD>Ц<EFBFBD><EFBFBD><EFBFBD>`)P˔<>o#ڀ<13><><EFBFBD>F<11>><3E>#<23><04>B<EFBFBD>jQ1<51>r<>*)<29>/Rl <09><>qXzA<7A>|Q<>9<EFBFBD>)H<18> ҃@=*<2A><>J<EFBFBD>D<EFBFBD><44><05>+<2B>p<EFBFBD><70>`<03>+d\n<EFBFBD>E<EFBFBD><EFBFBD><EFBFBD><EFBFBD><08><><EFBFBD>g<>(\0<EFBFBD>P,<2C><><EFBFBD><EFBFBD>̤<EFBFBD><1F><>IX<49><01>t<><74>m<><6D><05>k<EFBFBD>6<EFBFBD>4۔\r.<2E><>K<EFBFBD>+<2B><><EFBFBD>ߤ<>m<EFBFBD><6D>Ip&<26><><EFBFBD>t<EFBFBD>=:O<>KQM\0<EFBFBD> @O<>]<<3C><>M<EFBFBD>zJLS@U<02>r<EFBFBD>wJ<77><4A><01><>1ڧ<31>\n<EFBFBD>\$<04>)ɨ <09><1A>@a<>H<>]<5D><><07><><EFBFBD><EFBFBD>Bj.<04>\0<EFBFBD>U <20><><EFBFBD>\0<EFBFBD><1E>'Ǵ\0B<02>\0<EFBFBD>+T<0F><><EFBFBD><EFBFBD><14>WR<57>Y<EFBFBD>4 T9<><39><EFBFBD>O\nsS<EFBFBD>9`N><3E>><3E><>&<26>MF<4D>Ԋ<><D48A>'<27>4<03><><EFBFBD><EFBFBD> <20>\n<EFBFBD><EFBFBD><EFBFBD>j@*<2A>T<EFBFBD><54><EFBFBD>1p<11>f*<2A><><EFBFBD><0F>9<EFBFBD><39>L<EFBFBD><4C>i@<40><><EFBFBD>5@<40><>/<2F>QR<51><52>Tv<54><76>U<EFBFBD>eHjF<02><>U<16><>c<EFBFBD><63>Y@<40>Vz<56><7A><EFBFBD><EFBFBD>g槍[iN<03><><EFBFBD><1A>UT<55>%\"<EFBFBD><EFBFBD>R\n<EFBFBD>R<><52>h<EFBFBD><68>Z<EFBFBD>XJ<58><4A><EFBFBD><EFBFBD>56<35><36>EkUj<55><6A><EFBFBD><EFBFBD><15><>e<>1Y<31><59><EFBFBD>F7<46>?<3F><>e#oJ<6F>Vn<56><6E>W\rV@QY<1A><><06><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>>3<>ۀ*<2A>!<21>L<EFBFBD>\0Lj\0I<><49><EFBFBD>)\nLd1P<EFBFBD>!<21><><EFBFBD>Z)<29><><EFBFBD>]Z!8u<38>̥o<CCA5><6F><EFBFBD>b <20><>(<28><07><>TB<10>&<02><>CV|<7C>/%p<><05>)`ȅ<>\\<EFBFBD><EFBFBD>Ȯ<>Hb\n<EFBFBD>L<EFBFBD>S<EFBFBD><10>PGf<47><><F387B6B9>J<EFBFBD>s<EFBFBD><73><EFBFBD><EFBFBD>Ԋ<><D48A>AZ<41>L<>R`<5<D78C>5]<5D><>Lw*:Ҹ@l`<60><><EFBFBD><EFBFBD><EFBFBD>'<27><>f<EFBFBD><66>q<><71>EJ7Hގ/\n<EFBFBD>m<EFBFBD><EFBFBD>\no<15><><EFBFBD>\0Q`<60>9.<2E><01><>qѬF<><15><><EFBFBD>V-!<21>\n<EFBFBD><EFBFBD>-3X<><0C>5U]<5D><>2\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\r<EFBFBD><EFBFBD>!Ŋd)<29><><EFBFBD>Ʊ\rXlb<7F>,<2C>n<EFBFBD>4q<1C><><15>dK1<4B>d<07>!<21>w<>Lof<>rW-<2D>Cvm<76>\0<EFBFBD>p<EFBFBD> <09><05>צ<EFBFBD><D7A6><EFBFBD><EFBFBD>*ɖx==<3D><>yd[<0F> V<><56>0<EFBFBD>(<28>e+;<3B>:<3A><>7<EFBFBD>͑ \"b<>,u\0{<EFBFBD><EFBFBD>\n)<29><07>F<<0F><><02>\$<0F>T<EFBFBD>'R<><52>V<1C>`<60><>2\\VJ<EFBFBD><EFBFBD>8<><38>P<19><0E><><EFBFBD>+`ɋ<><03>;W<>d4<64><34><0C>FJJd<4A>R<EFBFBD><52>Φ<EFBFBD>4<EFBFBD>KL<4B><4C>d矵富l|<7C><><EFBFBD>5.<2E><>L<EFBFBD><4C><04>\"U~<7E>`N<03>mUm<55><6D>Q<EFBFBD><51>TzN<7A>7<EFBFBD>U:<3A><><EFBFBD>\0<10><>v<EFBFBD><76>[J<><4A>\0(<28><><EFBFBD><EFBFBD>S'*[k><3E><><EFBFBD><01><1E><><EFBFBD><EFBFBD>T<EFBFBD>8<EFBFBD>=<13><03>AN<41><06><>W<EFBFBD><57><EFBFBD><02>p<EFBFBD>Ԋ<><D48A><EFBFBD><EFBFBD>toL<><4C><EFBFBD><EFBFBD>Y<>sX<73><58>숲<EFBFBD><EC88B2>,<05>0<EFBFBD><30><EFBFBD>\0<EFBFBD>\nq<EFBFBD><EFBFBD><EFBFBD><EFBFBD><0E><>V<>L<EFBFBD><4C><01><><EFBFBD><EFBFBD>u<>l<EFBFBD>s<EFBFBD><73><EFBFBD>n\0]<5D> <0E>/i<>ا1<><31><13><> <20>c<EFBFBD><<3C>K<>u<EFBFBD><75>֝z<7A><7F><EFBFBD>fTŇm\$<EFBFBD>+<2B>[<5B>1hXB<><1E>`<60><><EFBFBD>7c.kv<6B><76>0<><30>6<EFBFBD>7j<16>؉5v<35>2]<5D>F<EFBFBD>D<16><><EFBFBD><EFBFBD>dKu<01><><03>e<>exvQ<76><0E><><EFBFBD>5B<16>[<5B><>2<EFBFBD>\"<EFBFBD><EFBFBD>e<EFBFBD>E#^Yo<0C>t<EFBFBD><74><EFBFBD>l<EFBFBD>i<EFBFBD><05>7<EFBFBD>j<EFBFBD>t<EFBFBD>]<5D><>[qM dc<64><63>}ȭ<>h<EFBFBD><68>Ɓ%̷P<CCB7>Q<EFBFBD>_p<5F>ۨ<07><>qkj<6B><6A><EFBFBD>\\<EFBFBD><EFBFBD>ei<EFBFBD><02> <0C><>D8*д1<D0B4><31>@<40>+<2B><>\n<EFBFBD><EFBFBD>7<EFBFBD><EFBFBD><EFBFBD><EFBFBD>B2@x<12>4<EFBFBD>&<26>\"<EFBFBD><EFBFBD>W<EFBFBD><EFBFBD><EFBFBD><EFBFBD><\n<EFBFBD><EFBFBD><EFBFBD>me<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>7<EFBFBD>mKD;<3B><><EFBFBD><14>G;C<>f<EFBFBD>봿 <09><>d9+<2B>Z@<40>w<EFBFBD>]<5D>.<2E><EFBFBD><01>Xw<58> }<7D><>n_u<11><><EFBFBD>Q<><51><EFBFBD>T<EFBFBD>cԋxA5<41><35>(T<0B><06>-X *f<06><><07><>\0<EFBFBD><EFBFBD>\"<EFBFBD>n<19><>*<2A><><<3C>W3<57><11>po,<2C>p<EFBFBD><01>+s<><73>2\"<0C><>\"މ<EFBFBD>P<EFBFBD>M<><4D><EFBFBD>r<EFBFBD><72>Q +<2B><><EFBFBD><EFBFBD>A<EFBFBD><41><EFBFBD>82r<32><18><13>pFp<46><70><EFBFBD><EFBFBD><EFBFBD>@}<7D> <18><>u<EFBFBD><1B>f<EFBFBD>7<EFBFBD><37><EFBFBD>L<1D>|<12>×-<14><>m?j>S<><0F><>p<>E<EFBFBD>z@><01><>`?\0\ncx.<2E><08>!a<><61>꾯a<><61>Z+ʫ<>%<25><><EFBFBD>M<14><>Xw<02>0<>z<EFBFBD><13>DĊ<44><C48A><EFBFBD><EFBFBD><15>h<EFBFBD>X<EFBFBD><58><EFBFBD><EFBFBD>U<EFBFBD><55><EFBFBD>J<EFBFBD><4A>lM#|<7C>S<18>`<60><>Jck<13>~<7E><>EM^(e<><07><>ю<EFBFBD><D18E>.yP<79>;<3B>+<2B>ᕕ<14><01><>@ۈ)<29>Gbjōqh<71> <20>+%<25>zp=0\nmIƀ+\n<EFBFBD>S<1F>|Βc@<40><07>ƠpR<70><1C><>H<EFBFBD>6 \0w<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>_\"<02>8<EFBFBD>r><3E>aw\n<EFBFBD><EFBFBD>:<3A><> \"\\q<EFBFBD><EFBFBD>J<EFBFBD><EFBFBD>L<EFBFBD>w<EFBFBD><EFBFBD>O<|c<>V\0x݆<78>@|*<2A>W<1E>k6p<36><70>OpL<4C><7F>m<EFBFBD>[<5B><>FTA<54><12>\n<19>C<03><> <20><18>R9]vDF<44>9<EFBFBD>w<EFBFBD><77>%<25><1B><>F}<7D><h<><68>#<23><><EFBFBD>\0<EFBFBD>N~<7E><><EFBFBD><EFBFBD><EFBFBD>6'ȦJUV8v\0<EFBFBD>F<EFBFBD><EFBFBD><02><>\n<EFBFBD><EFBFBD>R<EFBFBD><EFBFBD><EFBFBD><EFBFBD>;<3B>.N<><4E>3<EFBFBD><33>\r<EFBFBD>s/ <20>-<2D><13><><04>zx<7A>p<>[<<3C>F]<5D>.<2E>:'<27><><08><>ѠFG*q<>6<EFBFBD>G1<47>Gܚ<47><DC9A><EFBFBD>3]<5D>l@<40>dÜ<64><C39C>J<EFBFBD>;Ș<><C898>\0007,Vc\r#<23>we<77>P<EFBFBD>\n<02>qA<0E>Z^V<>zR<0C>'t|k<><6B>qq<71><71><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>k<EFBFBD>>L<>ߑ<EFBFBD><DF91><EFBFBD><EFBFBD>R9<52>g&fE\0R<<3C>d<EFBFBD>/<2F>w<EFBFBD><77><EFBFBD>S<>e<EFBFBD><07><><EFBFBD>E7<45>c<EFBFBD><63>Q<EFBFBD>*ec2e<32><65>Hk2<0B><><EFBFBD><EFBFBD>c00¶o<C2B6><6F><EFBFBD><13><>;2!I<19>jp<6A><70><17><>?Y<><59>93[<5B><><EFBFBD><EFBFBD><EFBFBD>(`e<>(<28>Hw<48><77><EFBFBD>3<EFBFBD><33>\"J<EFBFBD><EFBFBD><17>=<3D><>*<2A><>W<EFBFBD><57><EFBFBD><큝a<ED819D><61>32@s<19>2<>7 <16><><Y[<5B>&y<><79><EFBFBD><0C><><EFBFBD><07><>˶^37g<67>6<EFBFBD><36><EFBFBD> <20><>L|Ǭ<>q<19><><EFBFBD>Ssݓ<73><DD93><EFBFBD><EFBFBD>><3E><>#r<><72><EFBFBD>Q4Rh4<0C>I<><49><EFBFBD>סb<D7A1>g<EFBFBD>69<36><0F><0E>4@w<><77><EFBFBD><0F><><EFBFBD>.E3<45><33><EFBFBD><EFBFBD><EFBFBD>;/<19><><02>q]1<>WX<><58><1B>7q<37>Μ<EFBFBD><CE9C>3%O<>Y<16>s<EFBFBD><73>}<1E>~<7E><18><>f<>&Y<><0E><>1<><31>Αq<CE91>]<5D>A<07>\"|+~-2(<28>,mcp<70><7F>6s<<07>(<28>6<EFBFBD><36><0E>e<EFBFBD>4<><15>@<40><>[mӽ<><D3BD><EFBFBD>U,<2C><>=9<>y ^<5E><07><<3C>2<1B>H<EFBFBD><48><03><><EFBFBD><1F><><EFBFBD>x e#c<><63>XI<58>W|<7C>%<25>+i,<2C>*<2A><>3<EFBFBD>Q\$<EFBFBD><02><02><>K<EFBFBD>\0<12>=<3D><>x<EFBFBD>2נ<32><EFBFBD>P<EFBFBD><50>7#ȳ<><C8B3>0VX<56><58>S<EFBFBD>B@<40><1B>l.%<25>\rܥ<EFBFBD>HҧuZ<DEBC><5A>7p@<40><1A><01><><EFBFBD><0E><><0E><>2=<3D>]jn<6A><12>ϴ<EFBFBD><CFB4>YQ<59><51>ZCƎ<43><C68E>Q<EFBFBD>Ag<41>8d<38>^1<<3C>\\ <20>g<EFBFBD>Q[<5B>~<7E>PR<50>yH_Z<5F>V<>ۆ<11><><EFBFBD><EFBFBD>H<EFBFBD><48>ƾ<EFBFBD>2U<32>\rAQ<EFBFBD><EFBFBD><EFBFBD>wK:<3A>\r<EFBFBD><EFBFBD>\r<0E>t<EFBFBD>qgB.<06>%<25><><EFBFBD><EFBFBD><0E>G<EFBFBD><47><EFBFBD><EFBFBD>*<2A>c<EFBFBD>+F<><46><0B><1D><01><>b<EFBFBD>&-<02>G<EFBFBD>qb\0\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>)<29>1\n<EFBFBD>( r<>0<1D><>Vx\0<EFBFBD>(<28>M<EFBFBD>Z<EFBFBD>6X-<2D><>'f2<66>P^<5E><>ō<EFBFBD><C58D>E<EFBFBD>,&<26>b<EFBFBD><62><EFBFBD>u<EFBFBD>°<1E><>C<>8@<40><>ͧl<CDA7>8<EFBFBD><38>ڐ\r<EFBFBD>D<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<0F><04><><EFBFBD>;<3B>k<>ENӶ<4E><D3B6>\r<12><>{-<2D><16>W<EFBFBD>a]<5D><>l<EFBFBD><6C>z&<06>vՊ{<08><>H<EFBFBD>Z<EFBFBD>Q<><51><EFBFBD><EFBFBD><EFBFBD>m<EFBFBD>M{c&<26>@[<5B>4<><10><>t<EFBFBD><74>c!y<>0:|<7C><><EFBFBD><16>䶡<EFBFBD>E<EFBFBD><45>OtTr6<72><36><EFBFBD>e<EFBFBD>\"<EFBFBD>x<EFBFBD><EFBFBD>|<7C><>}e<>e<EFBFBD>>cdn\"<EFBFBD>2<EFBFBD>CvR`:k><3E>X<EFBFBD>֠<EFBFBD><D6A0>V&<26><>\"<EFBFBD><EFBFBD>Jعs7q<37><71><0C>OY<4F><59><EFBFBD>\"<EFBFBD><EFBFBD><EFBFBD><11>&<26><><18><>Ş<EFBFBD>D:V<><56><EFBFBD>L<EFBFBD>[<>Y<EFBFBD><59>؝<EFBFBD><D89D><EFBFBD>B<><08>m<EFBFBD> <20>=<3D><>y[<5B>\r<EFBFBD>c<EFBFBD>v<EFBFBD>]<5D>SZ<53><5A><EFBFBD>&X3v<>Q<EFBFBD><51>g{=`k<><6B><EFBFBD>-<2D><01>\nE<EFBFBD>pJ٭<EFBFBD>D<>o~;9\\S'<27>p4<70><34>kG|Z<><5A>[v/<2F><>Ë`<0E><><19><1C><>U<EFBFBD><55><EFBFBD><EFBFBD><EFBFBD><EFBFBD>jh(W<>\\@9<>;\\)<29><>xXC<58>\0<EFBFBD><EFBFBD><EFBFBD><13>_\r<EFBFBD><EFBFBD>C<EFBFBD>O~<7E><1E>ʹD<CAB9><44>p<EFBFBD><1B>K<2h<32>v8<76>&<26><10><><EFBFBD><EFBFBD>@<1B><>ൔqL<71><U<>uFn*<2A>\\<EFBFBD><EFBFBD><EFBFBD>#<1B><><EFBFBD>B<EFBFBD><42><EFBFBD><EFBFBD>\\`*<2A>=\r<EFBFBD>V=B<><42><05>e<EFBFBD>`8<>\"<EFBFBD><14><19>:<3A><>X8<>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD>|h<0E>=<08><>Nr<0F>|i<>W9\n3<EFBFBD><EFBFBD><EFBFBD><EFBFBD>b<>0J<30>L3<>B )<29>\\s*<2A>a<17><>?r3<72><33>\n<EFBFBD><EFBFBD>rH,<2C><><EFBFBD>u<EFBFBD>zV@<40><><EFBFBD>4=#<23><18><>|<7C><0E><><EFBFBD>aȔ<61><C894><EFBFBD><EFBFBD>}<17><>7<03>\0<EFBFBD>i<EFBFBD>&%<25><>Q<><1A><07>l!<21>S>L׆[<5B><>X<EFBFBD>!<21><><EFBFBD>><3E><><02>=m<>_<EFBFBD>v\0D@<40>x<EFBFBD>E\0<EFBFBD>۾A <20>3<EFBFBD>jDF<44><46>n<><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>kw<6B><1B><>渣<1B>\0<EFBFBD>W<EFBFBD>Z<EFBFBD><EFBFBD>~<7E><>L<EFBFBD><1D><04>&L+D<03><>#\0>@<40><1B>>v<>;<3B>p<EFBFBD>6\$+<2B>?C<><43>Q<EFBFBD><51><RC!<21>ɀ<EFBFBD><C980>M<EFBFBD><4D><EFBFBD>0y<>\$!<21><03><>r<EFBFBD>/d覫<><10>1Wz{<EFBFBD><EFBFBD><EFBFBD>:B<17>5<EFBFBD>ctq<74><71>۶<EFBFBD><DBB6>蟾j<E89FBE><6A>u<16>7<05><><EFBFBD>N\rݢ<EFBFBD><EFBFBD>i<0F>N<EFBFBD><4E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32>Ȯ<1E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>w]J<>8<EFBFBD><38><EFBFBD><EFBFBD>A@<40><><EFBFBD>tu4<75>4<EFBFBD>@<40>}.<2E>+<2B>&<26><03>/<2F>G[<5B><>#\\FV'z<>Q<><51><EFBFBD><EFBFBD>5{c<EFBFBD><EFBFBD>]I%<25>{<EFBFBD>u<EFBFBD><EFBFBD>y<EFBFBD>o^)lIf<49>o<1D><>P<07><><EFBFBD>GI<47><49>_9V<39><56><EFBFBD>}<7D><><EFBFBD><1C>[<07><><05>)h@O<>qx<07><>\0.<2E><><EFBFBD>ż<05><><1A><>y<EFBFBD>ݐw<DD90>{|<7C>asTE<54>.wO<77><4F><EFBFBD><DEBE><EFBFBD>6-<2D><>p<EFBFBD>8<EFBFBD><38>^<5E>v<EFBFBD><76>#<23><>V<><56><EFBFBD>\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>7N<EFBFBD>+<2B><><EFBFBD><EFBFBD><1B><><EFBFBD><EFBFBD>><3E>K̾k<CCBE>@W<>X<EFBFBD><58><EFBFBD><EFBFBD><EFBFBD>\\<11>d{Y\\<EFBFBD><EFBFBD>Oevh?<3F>m<EFBFBD>7tm<><6D>8<EFBFBD><38><EFBFBD>0<EFBFBD>l<EFBFBD><6C><EFBFBD><EFBFBD><EFBFBD>ON}c>|<7C><>Z<EFBFBD>V<EFBFBD>Nꅷ<4E>έcìv<1A>@W<><EFBFBD>RIkt<6B><74>}<7D><>:@dV :W<><57>]h<>[<5B>ח<D797>cr\n<EFBFBD>)<29><><EFBFBD>!<21>t<EFBFBD>iI<69><49>+<2B><><EFBFBD>&<26>̑\"|<7C>C<><43><EFBFBD><EFBFBD><EFBFBD><07>ox<19>(<28>p<03><>fu<><75><EFBFBD>N<><4E><EFBFBD><EFBFBD>VR\n<EFBFBD>\0x槎9<EFBFBD><12>873ǣ<33><02>ʀV!<21><>ȇ<0C><>B<EFBFBD><42><EFBFBD>2<EFBFBD>l\r<EFBFBD>G<EFBFBD>6<14>Y+(u<1B><>5A<35><1E>E<EFBFBD><45>?<3F><03><01>wv<77><76><EFBFBD><EFBFBD><11><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>9<EFBFBD><39>\\llw<EFBFBD><EFBFBD><EFBFBD><11>X<EFBFBD><58><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><1D><03>D<EFBFBD><44>M>㼂<><E3BC82><EFBFBD>F<EFBFBD><46><EFBFBD>H?3<><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)Έ<17> }<7D>+[<5B><>or:<3A><><EFBFBD><EFBFBD>w?<3F><><EFBFBD><16><>Ȯ)\0'D<0B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><04><>N<EFBFBD><01>H<EFBFBD>鸘<><E9B898><EFBFBD><EFBFBD>/<2F>Sþ<16>@<3<><33><EFBFBD>x#<23><> yN<79><4E><EFBFBD>D.<2E>?<3F>2<EFBFBD>m,p<>\0O<EFBFBD><EFBFBD><EFBFBD>&?<3F><1A>h<7F><68><EFBFBD>>\r<EFBFBD><EFBFBD>\\<EFBFBD> <09>w,=h<>G'E<><0E><>#<02>H<EFBFBD><16><><EFBFBD><EFBFBD>_<>߷ʤܡjz<6A><7A>\\<EFBFBD><EFBFBD>%pKέ&i|<7C>Z<EFBFBD><5A><EFBFBD>k}]<5D><><1E><>5<EFBFBD><35>!<21>5<EFBFBD>T<EFBFBD>{<01>]<5D>(<28>7<37>Or/<2F><>><3E>.&0<><30>c<EFBFBD>><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>>Z.9\0<EFBFBD>>+@)<29><><EFBFBD>T<EFBFBD> <20><><0E>_O<5F><4F>5<>!<21>t4<74><1A>pk<03>\"忞<EFBFBD>x<>]<5D>Z<><5A><EFBFBD>t<EFBFBD>\0<<3C>@<1C><16><><0E>c?/}<7D>N<EFBFBD>4A<34><41><EFBFBD><EFBFBD><EFBFBD>p<02>C<<11>N<EFBFBD>W<EFBFBD>Z\05ь<35><D18C>)<29>^<5E>H<EFBFBD><06><><EFBFBD>N}o<>P<7F><50><EFBFBD>\\p6<70>O<EFBFBD>.#<23><>o<EFBFBD><6F>!T!<21>\$K*n<02><><EFBFBD><EFBFBD>Pqr<71><72><EFBFBD><EFBFBD>'<15><>\0<EFBFBD><EFBFBD><EFBFBD><0C><><03>V<><56>NE<4E>h<EFBFBD>F<EFBFBD><46><EFBFBD>#<23><>xM}~G<><47>sP<><50>E<18><>*#<23><><EFBFBD>A<16><>̄<1B><1A><>(F<><46><EFBFBD><EFBFBD>/<2F>!<21><EFBFBD><7F>gM<><4D>o<EFBFBD>g<>ɩ<EFBFBD><C9A9>(yb<>~<7E><>|3<><33>a@<40><><1F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><DEA4><EFBFBD><EFBFBD><EFBFBD>Ɵ<EFBFBD><C69F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>k3y<33><10>'z<><<3C><><EFBFBD>,<2C><>,<2C><><EFBFBD>\${j<EFBFBD>v<EFBFBD>ļ)\n<0C><><12>q\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>z<EFBFBD><EFBFBD><EFBFBD>A=<3D> [٠<>=)s<>Mm\0X<EFBFBD><EFBFBD><EFBFBD><07>?<3F><08><0F><><04><>\"\"<EFBFBD><EFBFBD>\0<EFBFBD>=<01><>V<EFBFBD><56>p<EFBFBD><70><0C>J<EFBFBD><4A>q<EFBFBD><71><EFBFBD>kދ뽶<DE8B><03><>o<EFBFBD>x.c<><63><EFBFBD>6.<2E>cmö<d<>!7<0E><>B<EFBFBD><42>\\ޓ<EFBFBD><EFBFBD><14>h<0F><06>2<EFBFBD>瓨<>\r<<3C><11><>BH<42><48><EFBFBD><EFBFBD><EFBFBD>E<EFBFBD><45><EFBFBD><EFBFBD>&+.<2E><>P <09>,<2C><>)0==<3D>2-#'<27><>=<3D><>3x<33><78>1<EFBFBD><31>X<EFBFBD><58><EFBFBD><EFBFBD>f<66>3<EFBFBD><08>°@\$<EFBFBD>菩w<EFBFBD><EFBFBD>J<><4A>3@<40>_<\092<EFBFBD>!<21><><EFBFBD>,9r<39><72>3 <20><><17>]<5D><><EFBFBD>R<0E>̫A%<25><><EFBFBD><05><><EFBFBD>#<23>\\<EFBFBD>2'?<3F>v<16><>bB<62><42>\nL<0F>/!<21>@<40><>s<EFBFBD><11><><04>%DA&\$<EFBFBD>W<EFBFBD>E zH`<60>+<2B><>C<>PP<50>%_<>,<2C><>3<><33><EFBFBD>\0<EFBFBD><05>s@<40><><EFBFBD><04><> ۛ<>!<21>>`<19><>s<><73>64<36>)3B<><18>ք<18>X@<40><><EFBFBD>Bha<68><61><EFBFBD>{8 <1A> <09>gA<67>\r=<05><><EFBFBD><EFBFBD><02>}<7D>P<EFBFBD>\"l<1A>A@<40><><EFBFBD>T<EFBFBD><54>A<14><03><><EFBFBD>A<EFBFBD><41><EFBFBD><EFBFBD>z?\0@<40>͆/v<>[hy<><79>s<>@<1E><> @ۃ<>2<EFBFBD> @<40>A<EFBFBD>(<28><><EFBFBD>?\0<EFBFBD><EFBFBD>5<EFBFBD>bxx<78>n<EFBFBD>&<26><>ƍ7<C68D>Jk<><6B><EFBFBD><03><>y\$<EFBFBD> 4<19><><EFBFBD><1D><><EFBFBD>L#<23>B@<40><>yEc<45>\\<EFBFBD><EFBFBD>Z<EFBFBD>7<EFBFBD>X<EFBFBD>9<EFBFBD>p<<3C><><16>#<23>9<EFBFBD>t!<21>Ot<4F><74>J0<4A>M<EFBFBD><05><>+Y<>k<EFBFBD><6B><14><>LX:<3A><><EFBFBD>y<EFBFBD><79>.<2E>[<5B>@ئ<>Z;<0B><03><01>#<23><1C><><EFBFBD><EFBFBD>>o8<6F>H<EFBFBD>`MP#3<>\n8=<3D>݅`<60>z{<EFBFBD><EFBFBD><05>\nRwLe<14>2(! <09>'<27> <09>\0<EFBFBD><1D>L<EFBFBD>)<29><><EFBFBD><EFBFBD>䜘<05>'m<0B>okB<><42> c<11><16>`ja<6A><61>Ҟ<EFBFBD>}P<><50>,-<2D><><EFBFBD>|<7C>P<EFBFBD>f-(5<0B><>I<EFBFBD><49>&|0C<1D>%<0C>~)<29><>F<EFBFBD><46>3<EFBFBD><33><02><0B>,̡<02><0B><><EFBFBD><EFBFBD><02><><EFBFBD>ԉJ8<4A><38><EFBFBD><1F><>⁐<>\r<EFBFBD>\rX<EFBFBD>⳦*<2A>Lݛ<1D>@.D<16>\$<EFBFBD><EFBFBD>\$6<EFBFBD>/<2F>f<0B><07>مv\n<EFBFBD>*`<60><><EFBFBD><0B><><EFBFBD>s<EFBFBD>\\<02>|<7C>><3E>H<EFBFBD><48><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD>D-gg<1A>jy<6A><79><EFBFBD><EFBFBD><0B>Rp<52><70>\n/<10>Bt1<74>&<02>4;<3B>}<7D>1<>ݐ<EFBFBD>'<27><>.<03><><EFBFBD>.<2E><>C<EFBFBD><0B><>GjC<08>d0<64><30>C<EFBFBD>2<>\"<EFBFBD><EFBFBD><0F>1<EFBFBD>4C <09><>ɏ<0C>2<EFBFBD><32><EFBFBD><0B>C0<43>(\r*<2A>0<EFBFBD><1A><>(RJ\n\0d<EFBFBD>(<28>0<EFBFBD><30><0E>;`;<3B><><EFBFBD><EFBFBD>><3E>u<0F><>b<EFBFBD><62><EFBFBD>\r)TǨI<0C>ap<61>(<10>3\r<EFBFBD>B1C<><43>DC('aI<61>J<EFBFBD>@Rq<14><><EFBFBD>|E<><45>DaB<>2Do2<><32><EFBFBD>()Xjp<6A><70><EFBFBD>yha%<25>Q<0E>A1C<>TJ<>'<27><><<3C>A<EFBFBD><41>P<EFBFBD>x<EFBFBD>-<2D>2<EFBFBD><32>@\$<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|J<><4A>D<EFBFBD>N<EFBFBD>M)视<><E8A786><EFBFBD>JħTFc<46>5<EFBFBD><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>c<0F><>\r<EFBFBD>D<EFBFBD><.C#<10>G<EFBFBD>*<2A><>3<><33>ć\r.<2E>#CN<[q8<71>3<0B>\rI<EFBFBD><EFBFBD><02><><EFBFBD>p<EFBFBD>D<EFBFBD>\$Q<EFBFBD><EFBFBD>D}<14>@<10><>3<10>V0<56>B<EFBFBD>n'<27><>EP\0<0F>Q<EFBFBD>\r<0F>UQBnU<><1C>%<11>R<EFBFBD>Q<EFBFBD>0<EFBFBD><30>H0<48>D;\$4<EFBFBD>O><3E>g<>QC)<0B>RqS<71>`0<>S5<B<><42>|O<>Hŏ<14>\r<EFBFBD> E_<0C>Y<EFBFBD>ME<4D><14>DӨ%0`\0<EFBFBD><EFBFBD><EFBFBD>F#[<5B>\rp>hAxx5<78>9<EFBFBD>p=<3D><>`7<><37><11>+Z,xB<78><42><03><03><05>\")0x<><78>(bn?<3F>+<2B>],?&<26><>S<17><0E><><EFBFBD><EFBFBD><01>a@3<>^<5E><><05>, <09>A<>%ACz'<27>a&<26>\\!<21>`<16>*<03>c\$<EFBFBD><EFBFBD><EFBFBD>a8<61>C1<>Z<EFBFBD><5A>ӌ`<60>@\"<16>dц<64>n<EFBFBD><6E> F\0<EFBFBD><02>:~<04><>!a \0<EFBFBD>x<08>(<28>q˰<71>r<EFBFBD>(<01>i<EFBFBD><69>F<EFBFBD><05><><EFBFBD>L<10>R\0<17><><10><><11><><EFBFBD>lf <09><>\rtl<EFBFBD><EFBFBD>F<EFBFBD>5\0Cq<EFBFBD>.{<06><><EFBFBD>,\0Oln<11><><EFBFBD><1A>m<11><><EFBFBD><1B>?ѽ<><D1BD>|i<><69>F<EFBFBD><1A>m1<6D><31><EFBFBD><08><>+<2B><>X8|q<><71><EFBFBD><EFBFBD>n<><6E><EFBFBD><EFBFBD>=<3D>!<21>jF!<01>1<EFBFBD>5<18> <09><>4<EFBFBD><0E>w<11><>&<26>[<5B>QրODa<44><61><EFBFBD>e<1D><><EFBFBD><EFBFBD>Go<18><><EFBFBD><18><>tu04<30><34><1D>g<EFBFBD><17>B+<0E><>F<EFBFBD>8\nQ<EFBFBD><EFBFBD>Wl7<6C><37><EFBFBD><EFBFBD>)<29>SQ<53>G\$q<EFBFBD><EFBFBD>Ʊ<1A>[\0/ƻ<18><>l<0F>}<1C>qѺG!<1A>k 7Ʒ<1E><>A<EFBFBD>G<EFBFBD><47><EFBFBD><03><>G<EFBFBD><1C>jQ<6A>G<EFBFBD>L}q<><71>\"<13>~Q<>G<EFBFBD>\$n<EFBFBD><EFBFBD>G<EFBFBD><1F><08><><EFBFBD><EFBFBD>{<11>H<1E>k<EFBFBD><6B><EFBFBD><EFBFBD><18> <09><><EFBFBD><EFBFBD><03><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>́q<CC81>H tk<74><6B><EFBFBD>Q <20>~<7E><>G<EFBFBD>܃R<06><><19>I<EFBFBD>\rw<18><07>B<EFBFBD>\$N4c<EFBFBD><EFBFBD><EFBFBD>0-<2D>\r<EFBFBD>7<EFBFBD><EFBFBD><EFBFBD>b{<EFBFBD><17><>xȡ \0Z RF<52>5<EFBFBD><35>0\r2!FN\n<EFBFBD>iaMGd<EFBFBD>qCf<EFBFBD>4<>{<EFBFBD><03>#y!TF#<0F><>_:Ӑ<>2<>5<EFBFBD>>C\\c<><63>WD<57>\"<EFBFBD>F<EFBFBD>D(<28><><EFBFBD><EFBFBD><13>x<EFBFBD><78>7q<37>Ê\rk<EFBFBD><EFBFBD><EFBFBD><EFBFBD>x<EFBFBD><EFBFBD><0C>7<EFBFBD><37>#<14><>_Df<01>jp<6A>&Ɩ<>1<EFBFBD><31><EFBFBD><EFBFBD>]<5D><><EFBFBD><EFBFBD><04>`)\0۲D<EFBFBD>H\n<EFBFBD>!<21><08><><EFBFBD>\0<EFBFBD><0F>` <09>*<2A>p\$<EFBFBD><EFBFBD><EFBFBD><EFBFBD>8RI<52>6 <20><>(\0<EFBFBD>?x\n*D<>b<EFBFBD>4<EFBFBD><34>D<EFBFBD>,!Q<>ᅜ<EFBFBD>:<3A>d<EFBFBD><64><EFBFBD><EFBFBD>`+2K <11><>a<EFBFBD>\0<EFBFBD>M<EFBFBD><0F>d<EFBFBD><64>%<14><>><5&\"@<40>\n<EFBFBD><03>\0<EFBFBD>H<>0<EFBFBD>%<25>Ɋ3<C98A><33>AR<41><52>\$| <<3C><><14><><EFBFBD><EFBFBD>f<EFBFBD><66><EFBFBD><EFBFBD><EFBFBD>><3E> +PL5Ɲ&<26><>@<40>\0<EFBFBD><12><><EFBFBD>0ƻ'Km<4B>o<EFBFBD><6F><03>k<EFBFBD>>H\"l<>j<EFBFBD><6A>8<EFBFBD>K}<7D>#<23>_ <20><>2?<3F>|<7C>cB~<7E>X\ni6I<EFBFBD>\n<EFBFBD>=<3D> <0F>\"ɽ(i<>r<EFBFBD>&<26><>3O<33><4F>I <20>R<12>><3E><02>,\0<EFBFBD>(<28>v<EFBFBD><76>J@L<>O҇<4F>z\rl<EFBFBD><EFBFBD><08><>)A2p<32>+<2B><0E><>a <0C>)Lm<12><>ZL<5A><4C><EFBFBD><03><><16><0F>,<2C><>(<11><>,<2C>B<EFBFBD>\$<EFBFBD>A<EFBFBD>\0<EFBFBD><EFBFBD><EFBFBD>!<21>2D<32><44>0<EFBFBD><30>Ir<49><72><EFBFBD><EFBFBD>+<2B>z<EFBFBD>l<EFBFBD><04><16>8p<38>AR<41><52>&8̅<38>ȼX<><58><EFBFBD><1A>?<3F>]<5D>^<1A>r<EFBFBD>e<EFBFBD><65>%<25>Z<EFBFBD>+Mc\$Ɋ|<7C>J<EFBFBD><4A><06><03><><EFBFBD><EFBFBD><04>+(һ<><D2BB>T[Q £<><08><><EFBFBD>_<EFBFBD><5F>l<EFBFBD><6C>E<EFBFBD><45>^ \0<EFBFBD><EFBFBD>1\0<EFBFBD>,+<2B><>\n\0<EFBFBD>&<26>00<30>\nLƣ<EFBFBD><EFBFBD>1<EFBFBD>hɒ<68><C992><EFBFBD><03>;<3B><><EFBFBD>k\"<11><>n-<2D><02>\0;<3B>T:<3A>:<3A><>Z<><5A>;cKa[<5B>R<EFBFBD>\r CI1u%<25><><EFBFBD><1B>ȕ<>%<25>{)<29><>\r<K<><4B> <<3C><><EFBFBD><EFBFBD>%hr<68><03>D<><44><EFBFBD>K %<10>\0<EFBFBD>(<28>h<>譀<EFBFBD><03>4Ҫƨ[<5B><>Q<EFBFBD><51>(?BW<42>8,<2C> <20>K<EFBFBD>,<2C>2@&\0<EFBFBD><03><>R<EFBFBD>><3E><><EFBFBD><EFBFBD>rm><3E>H<EFBFBD>w#^2I\"m<EFBFBD><EFBFBD>V1Cr(<28>`<60>\\<0F>̌:<3A><>F<EFBFBD>e<EFBFBD><0E>T<EFBFBD>H<EFBFBD><48>hT=@64<36>/<2F>K,q<><13>\"<EFBFBD><EFBFBD><EFBFBD>&X<0C>+<2B><>1<EFBFBD><31>ҝ<EFBFBD><D29D><13><>e<EFBFBD><65><EFBFBD><EFBFBD>[٠>q0(C<>\$<EFBFBD>1\\m<EFBFBD><EFBFBD>:%<25><><EFBFBD>j\0<EFBFBD>.<2E><>\0002\0<EFBFBD>0<EFBFBD><EFBFBD><EFBFBD>>.<2E>1@++<2B><>\"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><1F>2j@܅I23ٓ <20><>1<EFBFBD>NL<>\r`\n<EFBFBD><EFBFBD>ȼj\$<EFBFBD><EFBFBD>0H<EFBFBD><1A>7j<><6A><01>lҲ<6C>/<2F>U\"<EFBFBD><EFBFBD><EFBFBD>@;<3B>[<5B><05>;<3B> K2<08>`<60>&<26>3`<0E>U҂<13><>T<03>!<21><19>{(c<><63><EFBFBD><02>.`><3E>>ˢ<0E>[%9+<2B><><EFBFBD>m<EFBFBD>!)H<><48>%\0<EFBFBD>J<><4A><EFBFBD><7F>4Pɒ<50><C992><EFBFBD>2dʯ<64><CAAF><EFBFBD><1C><>R<EFBFBD><52>33t<33><74><EFBFBD>H<EFBFBD><48><EFBFBD>ɇ<EFBFBD>MJ<4D><4A><EFBFBD><EFBFBD>&<26>>ۈ<><DB88><EFBFBD>\r<EFBFBD>*P`<60><><EFBFBD>.H\0<EFBFBD>@ <20>I<EFBFBD>+4hI<1B><>5Xe<58><65>6ԓ`<60>Y5T<35>@6MZA<><41><EFBFBD>ɤl<>i: f<><66><EFBFBD>ϗ<EFBFBD>x`<60>(<28>'<27><>Nv<4E>^g <0F>6<EFBFBD><36>3;<3B><><EFBFBD><EFBFBD><EFBFBD>.<2E><><EFBFBD>e<EFBFBD><65>0d'`<60><>TԿ3/\nK7<EFBFBD>x#<14>(),<2C>!<0B><>7<EFBFBD>!<21><><EFBFBD><EFBFBD>7<EFBFBD><37><EFBFBD><EFBFBD>M<EFBFBD>\"4<EFBFBD><EFBFBD>݈<EFBFBD>1<EFBFBD><EFBFBD>\$y6<79><36>%x<><78>7<EFBFBD><37><EFBFBD>>N%8<>߀)<29>,l<>X<>6<EFBFBD><36><EFBFBD>I8<49>z<EFBFBD><7A><EFBFBD>@!,&\\<EFBFBD><EFBFBD><EFBFBD>HQ<48>BL\"<EFBFBD>\$<EFBFBD><EFBFBD>+<2B><>8\$<EFBFBD><EFBFBD>+A<>8<EFBFBD><38>s<EFBFBD>NlӜ<6C><12><>vQ<76>ܓ<EFBFBD><DC93><EFBFBD>6<EFBFBD>\nA\n7f<<3C><><EFBFBD>c&̰<>n@7<>P<EFBFBD>h<>zNh2Hn<48><6E><EFBFBD>5:<3A><>o<EFBFBD><6F>;:ĿS~<0C>0H6<48><36><EFBFBD>l%x9s><3E>A%,t<>><3E><>\0005<EFBFBD><EFBFBD>BQ%oN<6F>D<>3<EFBFBD>'<07>n3<6E><33>\$<EFBFBD><EFBFBD>Pzm.<2E><>m8<6D><38><EFBFBD><04> <20><06>9<EFBFBD><39><EFBFBD><17><>D<>A<EFBFBD>A<EFBFBD>;8\r<EFBFBD>ƀ<EFBFBD><\09g<>.kd<6B><64>^<12><>ƂB Pd<50><64>F<EFBFBD>`@ڬ?+T<>kF<6B><46>0Ճ<><D583>ke02C<1A><>k<><6B>)S/aU68<02><>Fkj<><6A>m`'<27><>h[<0F>-=<3D><>E<EFBFBD>˘Ȥ<>ֻ<EFBFBD>)2<><32><17>Xd<><64><EFBFBD>.<2E><>+<2B>փn\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD><03><><0F>\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD><10><><EFBFBD><EFBFBD>65ۀ<><DB80>(<28><12>ZR<5A>[/|<7C>2/c*̠S<CCA0><53>a(d<13>8(<14><><17><>9m`*<2A><>0a(<28><>&<26>>ܹ@<40>Mt<4D><74><03>o<EFBFBD><6F><1D><>F<_<><13>F<EFBFBD><46>c4<63><34><EFBFBD>K<EFBFBD>D<>R<EFBFBD><52><EFBFBD>4<1C><01><16>\r<EFBFBD>)<03><><1B>0<EFBFBD>9<05>,<2C><>R<EFBFBD><52>!<21>B<>K<EFBFBD>&<26>:0#<23>\$<EFBFBD><EFBFBD><EFBFBD><EFBFBD>+#<23><>a<EFBFBD><61><EFBFBD>h\\<EFBFBD><EFBFBD>H,9\0[<5B><EFBFBD><7F>30#\0<EFBFBD><EFBFBD>O2j<EFBFBD>2<EFBFBD><EFBFBD><EFBFBD><08>'Ψʐ D<><0B><1C><><06><>+<2B>B<EFBFBD>t-l <09><05>+9+<2B>ӑ<EFBFBD><D391><EFBFBD>D<EFBFBD><44>3\0<EFBFBD><02><><01>A3{[҆]:X82Ă<14><>%R<>-<2D>F<EFBFBD><46>Sy<03>X8<58><38><EFBFBD><EFBFBD> <09><><EFBFBD>&<26><>-<2D> `<60>K<EFBFBD><02>Z<EFBFBD>k5<6B><05><>by͟&r<><72><EFBFBD>qD<71>저Ʉ<10>6<EFBFBD>OM<18>x 3<>C;;<3B><>يX'<27><12>U<EFBFBD>/><3E><0C>,<A><3E><0C>,<2C>g\$R<07><><13>r<>o<EFBFBD>\0<EFBFBD>Y<> <18>c:T<><54><EFBFBD><EFBFBD>\0<11><>TcI5\$i<EFBFBD>M<><4D>=<19>gAW%<25>G\09(<28>\n<EFBFBD><EFBFBD><12>M<EFBFBD> <09><><EFBFBD>Mp<1F><1A>W<<3C>B<EFBFBD><42><EFBFBD>f<EFBFBD>z%|٨<><D9A8><EFBFBD>?4<><34>Q<>?M<1D>6Q<36>C<EFBFBD><43>!<21><>v:<3A>5<EFBFBD>^<5E><>7<EFBFBD><07>9<EFBFBD><39>\"\0\r<EFBFBD>}G<>_<EFBFBD>4hTܭ<>M<EFBFBD> P2<><02>-m<> ^f<> )<29>\nLn<1C><><EFBFBD>\0<EFBFBD>+Ь<>:<06>*|<7C>AR\0<EFBFBD><0B><>'<27><><EFBFBD>\rd<EFBFBD><EFBFBD>j\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><12><><EFBFBD>@t)d<>\nJ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|@<40>@p<><0B>d<10><>Pc<50><63>4<EFBFBD><34><EFBFBD><EFBFBD>(!\$<EFBFBD>`<60>f<08><><EFBFBD>5<>ASMc<4D><63><EFBFBD>%|<7C>ԞO-I<>ٳ<EFBFBD>M<EFBFBD>I<EFBFBD>١<0E><><EFBFBD>M*<2A>:<3A>t<EFBFBD><74>fҨ<0F>\"<EFBFBD>9R0+Ȯ`<60>ɜ<EFBFBD>#ɯL 5P5t<35>K<EFBFBD> O<> Y;<3B><>SN<><04><>\0<EFBFBD><EFBFBD>@\\<EFBFBD>kL<EFBFBD>~D<>3<EFBFBD><33>oJD<4A>t<15><0E><>3<><33><EFBFBD>Lu<01><><EFBFBD>\r\\<EFBFBD>!<21>FTde<64>DF]<1E>I`4<C29E>@0<>H<EFBFBD><48>tp<74>2<EFBFBD><32>'H<><48>E<EFBFBD><45><EFBFBD><EFBFBD><EFBFBD>k<1C>,<2C><><12><>D!<21><>ֆ<EFBFBD>MB<>nM<6E>\$D<EFBFBD><EFBFBD><0B>\n<EFBFBD><EFBFBD>4<>M<EFBFBD>A=bW<62>.la,<2C><>K<EFBFBD><4B><14><02>8<EFBFBD>8<EFBFBD><38>M<EFBFBD><4D>Qj݄/H<><48><14>\0<EFBFBD><EFBFBD><EFBFBD>a<0B><>7T<37>IM<><4D><14><>~e84OS<4F>?<3F>8<EFBFBD><38><EFBFBD>NBÔ<42>S<EFBFBD>N0?T<>Ӝ)-><3E>:S<>N<EFBFBD>=<3D>!<21><>O<EFBFBD><4F>0 <09>H<1B><<3C><><EFBFBD><EFBFBD><0F>8<EFBFBD><38>TO<>\"!<21>T\0<1B>><3E><>T!O<>`u<07><>+-@4<><34>t<1B><<3C><>T\rP̑<EFBFBD><04>P<>=<3D><><EFBFBD>D<>u\0<EFBFBD>P<EFBFBD><EFBFBD>K8<0E><>S<>QD<51><44>7ɹ'<27><>c<EFBFBD><63>X\rF<EFBFBD><EFBFBD>K<EFBFBD>9Gl<47>\n<EFBFBD>Q<EFBFBD>T<EFBFBD><EFBFBD>R9R\$<EFBFBD><14>Ԉ<15>4 <02>`\r<EFBFBD><EFBFBD>.<2E>R`\\<EFBFBD>'0 RR<><52>O/D<><44><EFBFBD><EFBFBD> P\nB<17><><EFBFBD>6<EFBFBD>+310T<30><54>T<EFBFBD>\nA0%<25><>Hɕ7<16><1C><>g<EFBFBD>24 <0E><><EFBFBD><EFBFBD>D<EFBFBD>[r5<72><35><EFBFBD><EFBFBD>R<EFBFBD><52>%:<3A> 2<><32>j<14>h<EFBFBD>GS\$gm<04><><EFBFBD><EFBFBD>Q<EFBFBD><51>\0<EFBFBD><EFBFBD><EFBFBD>A<EFBFBD>R <20><>T<EFBFBD><10><><EFBFBD><EFBFBD>FYArB<72>@w<><77>H<EFBFBD>@<40><><EFBFBD><EFBFBD><EFBFBD>^\$<EFBFBD>jy/<0C>R<EFBFBD>\0'<27>`l[<5B><> VI<>:<3A>7)<><7F><EFBFBD>,<2C>Z<EFBFBD><5A><EFBFBD>''BŠ<42><C5A0>`<60><>#B<><42><EFBFBD><EFBFBD>X<EFBFBD>\\KLF<EFBFBD><EFBFBD>BH<EFBFBD>.\r<EFBFBD><EFBFBD>q<EFBFBD><EFBFBD>?0`QIm<0C>\rx<EFBFBD><EFBFBD>^<0C>t<EFBFBD><74><EFBFBD>M<EFBFBD><4D><EFBFBD><EFBFBD>kD<6B>va<76><61>v<08><><EFBFBD><EFBFBD>T<EFBFBD>EѰpʔ<14>O<EFBFBD>LHaP<61><12><><EFBFBD>4<EFBFBD> <20><><EFBFBD><EFBFBD><1C><02>Q<EFBFBD>̙ѫ ~<7E>I<>_O<5F>f<EFBFBD>4<EFBFBD>6<EFBFBD>\n\0<EFBFBD><EFBFBD><EFBFBD>\0<EFBFBD> XE<58><45><EFBFBD>B<03>CfTP<54><0F>DC<01>\0@<03>bX b<>0d<30><64>D6k,40<34>(oUb<55>qY<71>6di<64><69>\nU<P(<28><><EFBFBD><]T\$<EFBFBD><0F>?h\n`Ï<><C38F>z8H<38><0F>Y<EFBFBD>\n<02><><02><><EFBFBD><EFBFBD><02>:DD\0<EFBFBD>(<28><>b*\n<EFBFBD>`\\<EFBFBD><EFBFBD>\$ <20><>\n` <20><><EFBFBD>X ՟\0<EFBFBD>8<04><><EFBFBD><02>=<3D><>\0<EFBFBD>`x <20><><3E><>\r7<11>ʪ<EFBFBD>E<EFBFBD><45>A<EFBFBD>1I+<2B><>`<05><1D>:mc<6D><63><EFBFBD><EFBFBD><EFBFBD>hR<68>P<EFBFBD>gYDC<44><43>YdCQg'<27>\r<11><>&hE:K<>D*\0v<0C><><EFBFBD><04>ȑ<EFBFBD>\0<EFBFBD>M<0F>?H<08>(¬<>bO<62><02>(}U<><0C><1B>c<EFBFBD><1F>=YdU<64>VJ=\rqJ<EFBFBD><EFBFBD>GY<EFBFBD>~<7E>6y#<23>U<15><><EFBFBD>[q<15><><05>B<>չ<EFBFBD>[<5B><>i<EFBFBD><69><EFBFBD>1ou<6F><75>cY%pQ!E<><16>x<EFBFBD><13>_]<5D>rQx<51><78>]AH5<48><35><10>,b<>pD]uc ^<5E><>U<EFBFBD><55><08>en\n<05><><19>cu<63>W<EFBFBD><17><><EFBFBD><EFBFBD><02>X#<23>4<EFBFBD>lu@<17><>_<EFBFBD><5F>q<EFBFBD>5}\\_5<EFBFBD><EFBFBD><EFBFBD><19>~<7E><><EFBFBD><EFBFBD>_<EFBFBD>R<1C>%_<><5F>\0006X<18><><EFBFBD><EFBFBD>rkdamX,<2C><>w<EFBFBD>\r#<23>`<60>x(<28>\"<EFBFBD><EFBFBD>i<EFBFBD><<3C> !<21>Ѷ<11>:0<><30>\r<EFBFBD><EFBFBD><9\"`<60>'aU<61>T<14>\$eDX_a<EFBFBD>,\0<Xia<69><61><EFBFBD>g<EFBFBD>Ya`<60><>3<EFBFBD><33>R\r<EFBFBD>vXB+\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Tm<><6D>X<><03><><0F>h<EFBFBD>i<>Ya<59>n<EFBFBD><6E>XOb(<28><><06>f<EFBFBD>V*<2A><>axn<78><1F><><03><03><>Xh0<>\0<16><>c@<40>\0;شhP7<><37>b<EFBFBD>x<EFBFBD>=X<>a<EFBFBD>Pڃ<>c<EFBFBD><63><EFBFBD>~<7E> c5<63>6:X<><0E>:3<><33>he<><65><18><><1B><><EFBFBD><17><>d<EFBFBD>O<EFBFBD><4F>X^<1A><VLNUd<55><64>IT<49>0\0O<EFBFBD>DX\0\0mv7<EFBFBD> iQb<51>XiD<69>\rvD!>ZC<5A><06>Z<EFBFBD><5A><EFBFBD><EFBFBD>Xh<58>y<EFBFBD>(<28>RGTUY<55><03><><EFBFBD>zb<7A>R4\$Ն<EFBFBD>j<EFBFBD><EFBFBD>ܻZ><03>dՔ6,K <20> <20>)5<14>Y<EFBFBD>G<14>/<2F>e,<2C>Z<EFBFBD>]ٮP<D9AE>%C\"6<>oG~-<2D>\r<EFBFBD><<3C><>+s<>·j<><6A>Y<><59>e<>@1Y<31>dM<64>!E@<40><03>r<EFBFBD><72>\0Z\\<EFBFBD><EFBFBD>\0<Y<>g͟v{!&e<><65>1Y<31>ӈ:lY<6C>cA<63>V5f՛<66>r<EFBFBD>Ը<EFBFBD><D4B8><EFBFBD>pY<70><59><EFBFBD>6<EFBFBD><36>GAh<41>vEWY<57>h<EFBFBD>Z<EFBFBD><5A><EFBFBD>5i0[Vm<56>GiIU<49>7Hl<48>\0[qٳi=<3D><>9ZUf<55>;ӥ<>\0<EFBFBD>Ŏ<EFBFBD>qfŤ<EFBFBD>u٨kc<6B> Z,,<2C><>V<EFBFBD>ZSf<53>hv<68><76><EFBFBD>j<1D><><EFBFBD><EFBFBD><EFBFBD>K<EFBFBD>C<EFBFBD> <20>~+-<2D>M<EFBFBD>Z[gLvV<76>\$]j<><6A>֮<EFBFBD><D6AE>g=<3D>6<EFBFBD>7.n<>7<EFBFBD><<3C><><16>r<1F><>+t<><74>*X}bm<62><6D><EFBFBD>Z<EFBFBD><5A>Pv<><76><EFBFBD>c}<7D><><EFBFBD>Z<EFBFBD>k<EFBFBD><6B>5<EFBFBD><35><EFBFBD>+q8D<38><44>[j<>!<21><>Z8<>a<12><>i<EFBFBD><69><16>Z<EFBFBD><5A>m<EFBFBD>`<60>Gs@m<> <09>ٵk<05>a<EFBFBD>Y&3<>+<2B>;<3B>aa<61>#<23><><EFBFBD>G0\nE<EFBFBD><EFBFBD>[Oa|<7C>A<EFBFBD><41><EFBFBD>!<21><05>a[`<60><03>V<EFBFBD>T<0E><><EFBFBD>A[r\nՎK<EFBFBD><EFBFBD>{m<EFBFBD>9<16>N\$ݸv߀<76><1B>6\0<EFBFBD><EFBFBD>n冖<6E>۔iv<69>٧g\r<EFBFBD>֔Z&}<7D><16>Y<EFBFBD><59>%<25><>dڃl<DA83><6C><16>Y<EFBFBD>rM<72><4D>;<3B>.<2E><15>v<EFBFBD>Z=g<15><><EFBFBD>[@<40><><EFBFBD>!\rK<EFBFBD>Qݽ6<EFBFBD><EFBFBD>̍<EFBFBD><EFBFBD>V<EFBFBD>\$<EFBFBD>o<EFBFBD>(<28><><EFBFBD><EFBFBD>j<EFBFBD>><3E><><EFBFBD><EFBFBD>p<1D>aT<61>\roX<EFBFBD>V<EFBFBD><EFBFBD><EFBFBD>]<5D>v<EFBFBD>[<5B><14>m<1C>mp<6D><70>6<EFBFBD><36>RFZ<><5A>٭p\0\r<EFBFBD>\\<1D>)\0<EFBFBD>P<EFBFBD>\nȬր\\AqY6<59><36><EFBFBD>h`<05><>\\1q\r<EFBFBD>@<13>C!<21>\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>o\0<EFBFBD>80<>P<18><>;@B<><42>\\:m<>V<EFBFBD><04>pxb+<1C>yq<79>%W\\xm<>͏<05>r\nL@:\\<EFBFBD>i<05><>r<EFBFBD>pk<70>MG\$<EFBFBD>l<EFBFBD><EFBFBD><EFBFBD>2<EFBFBD>m<><6D>`<60>Zk><3E>iW!\\<EFBFBD>?%ʀ<>ܭjT}RܿqlvW(<15>e<EFBFBD><65><EFBFBD>B<EFBFBD><42>q<EFBFBD><71><EFBFBD>&<26>m<><6D>)[h<><68><EFBFBD>7<11><>r<EFBFBD>?K<1C>[W<>xw\\Wq<EFBFBD>]<5D><>\0<EFBFBD>XoI<>1p-<2D><>8<EFBFBD><38>hM<68>M<EFBFBD>Y<EFBFBD>EP<45><50>\\%o`<60> <09><>!m{<EFBFBD> <20>_<EFBFBD><5F>v<EFBFBD><0C>_<EFBFBD><EFBFBD>YX%U<><55>\r<EFBFBD><EFBFBD><15><><EFBFBD><EFBFBD>>\r͛V<EFBFBD><EFBFBD><EFBFBD><0E><>w[X䣄 v2<76>UqxDH*<2A><>u<EFBFBD>u<EFBFBD><75><EFBFBD>@,m<>\$<EFBFBD>\\I`<60><><EFBFBD><EFBFBD><EFBFBD>,6E<36><45>d<EFBFBD>t<EFBFBD><74><01>0<EFBFBD>搏<EFBFBD><E6908F>\\[v<>طl.<2E>vM<76><4D><EFBFBD>]<5D>#<23><>Џ<EFBFBD>1mE<6D>WdX/v<><13><>\n<EFBFBD>!<21>ޖ<EFBFBD><DE96><EFBFBD>`<60><>S<EFBFBD>\0[db<64><62>s݅v%<25><>w]<5D>vsf<18><>trG\0003<EFBFBD><EFBFBD>#<23>ڃ<EFBFBD>]<5D>g]<5D><16>^<18><><EFBFBD><EFBFBD>&<26><>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD>x<><78>W<EFBFBD>;<3B>h<>d<>Cv 6<><36>3v<33><76><EFBFBD><EFBFBD>4<EFBFBD>x<EFBFBD>9<17><><EFBFBD>M<EFBFBD><4D>\"<EFBFBD><02>Ә<05><><EFBFBD>7c䷘;<3B>yՕw<D595>\0<EFBFBD>y<EFBFBD><EFBFBD>7<EFBFBD>فy5<EFBFBD>w<EFBFBD> %im<69><6D><EFBFBD>ޔ<EFBFBD><DE94>閩ݤ<E996A9><DDA4><EFBFBD><17><>=H<>B<EFBFBD><42>^<5E>z<EFBFBD>:a=<3D>ez<65>,<><D7AE>z<EFBFBD><7A><11>9<EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD> x%<25>ר^Ez<45><7A><EFBFBD><EFBFBD>X<EFBFBD>xCW<43>٩x-<2D>W<EFBFBD>Zuj<01>!j<>E<><45>X<EFBFBD><58>{e<EFBFBD><17><><EFBFBD>{<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>t<EFBFBD><EFBFBD>ضV<EFBFBD><EFBFBD><02><><EFBFBD>_{<EFBFBD> <17>\\|u<><75><EFBFBD>^7oU<6F><55>i<EFBFBD><69>'<27>{<EFBFBD>*HXy<02><>9!<21><>\0;Xu<><75><EFBFBD><EFBFBD><EFBFBD> >U<>r\$<EFBFBD><EFBFBD>{<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1dh><3E><><0C>v#<23>`/<2F><>~<1D><><EFBFBD><EFBFBD>U}<7D><><EFBFBD><EFBFBD><EFBFBD>{<EFBFBD><EFBFBD>J-\rQ_!<21>5<EFBFBD>-9cH<63><48>hX<68>@l21<32><31>X<58><DC8F><0F>><3E><><EFBFBD><EFBFBD><02><><EFBFBD>O<EFBFBD><4F>\0<EFBFBD>\0,P<><50>f\n`\\<EFBFBD>\"<EFBFBD><EFBFBD>*G<><EFBFBD>><3E>\nW<EFBFBD>\0V<EFBFBD>bVj<EFBFBD> ]<><7F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\ne<EFBFBD><EFBFBD>\$<EFBFBD>d<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%<16>\r<EFBFBD><EFBFBD><EFBFBD>_<EFBFBD><EFBFBD>3r<><72>:Pj<50><6A><EFBFBD>m<>\0<EFBFBD><EFBFBD>0<02><> #<23>*<2A>#<23><><EFBFBD>8<><38>퀚<02>\0<EFBFBD>ڎ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\r<EFBFBD><EFBFBD>`m<>)<29>_<EFBFBD>\n<01><><EFBFBD><EFBFBD>Zx<5A><78><EFBFBD><EFBFBD>H<02>,71<>M<EFBFBD><4D>P\0<EFBFBD><02> <09>g<EFBFBD><67>:<3A>\\<EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><>C<EFBFBD><43><EFBFBD><02>@\"<EFBFBD>쥘<0B>+<2B>&><3E><0B>I\0<EFBFBD>9i*<2A>*DJe<4A><65><EFBFBD>(x<12>@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>xV<><56>d@<17><>zG<7A><47>`ʦf\r_̀<EFBFBD><EFBFBD>@<40><05>6<15><>ك<EFBFBD>Q<EFBFBD><51><EFBFBD><EFBFBD>.\r`<60><>ۃ<EFBFBD>*΅\$G<EFBFBD><EFBFBD>2X1<EFBFBD><EFBFBD><EFBFBD>\r<17>`7ڵ<7F><DAB5>`<01>F\0\$<EFBFBD>L?v`*<2A><>QW<51><57><EFBFBD>Z*MC<4D><43><EFBFBD><EFBFBD>ZF\0,a<01>5<EFBFBD><35>\0<EFBFBD><EFBFBD>Q<>,<2C><><EFBFBD>x:`уVxC`<60><><EFBFBD>2`#<23>A<EFBFBD>0<>G<EFBFBD><47><01>\\<EFBFBD>A<EFBFBD><EFBFBD>?<02><>!<21><><EFBFBD><EFBFBD><18><>`<1F><>@<40>\n`<60>`h)`Հ<><D580><EFBFBD>7h?<3F><04><01>M<EFBFBD><4D><19>4<EFBFBD><34><EFBFBD>.<05>T<EFBFBD>E<45>\nx<19><>@0x<1B>r\n<EFBFBD>)\\`}<7D>X\"<02><>6 \0<0F>?=<3D><>I_<49><5F>-<2D><>\r<EFBFBD>O<EFBFBD><EFBFBD>@<40><><EFBFBD><02><15>na`<02>Hj<48>\r<EFBFBD><EFBFBD>w<>\0<EFBFBD><1A>M*<2A><><EFBFBD><EFBFBD>x <09>(<28><>.\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>vW<>6!<21>0<EFBFBD> <1A>\nN<EFBFBD><19>\n)*w<><77>\n؏<EFBFBD>C<EFBFBD><EFBFBD>Dx<EFBFBD>˅<>0<EFBFBD>@<40><>Zb:<3A><><EFBFBD>EZ<45>k<EFBFBD>^V<>Z<EFBFBD>MU<4D><02><><EFBFBD><C<>V<EFBFBD><56><EFBFBD><EFBFBD><EFBFBD><18><>?<3F><>W<EFBFBD>`<60><><EFBFBD><08><><EFBFBD>jF<6A><46><EFBFBD><EFBFBD><02> I#<23><><17>\0<EFBFBD><EFBFBD>ؕX<EFBFBD>ⷁ<EFBFBD>XT%<13><>*b\0<EFBFBD><EFBFBD>x\"Ub<EFBFBD><EFBFBD><EFBFBD>\r<18>࿉.Xe\0<EFBFBD><02>Vj<56><6A><EFBFBD><EFBFBD><EFBFBD>\r<18>V<EFBFBD><56><EFBFBD>/x<><78>J<EFBFBD><4A><EFBFBD>J<EFBFBD>b<EFBFBD><62><EFBFBD>ػ<>o<EFBFBD><6F>,<2C>b<><62>8<>b}<7D>^(?<3F>J<EFBFBD> 2x<32><06><EFBFBD>\rb<07>v@\0<EFBFBD>Ώ<EFBFBD>?<3F><>Rj`<17><><08>><3E>j*<2A><><EFBFBD>cA<63>XjD_<44>><3E>6x<36><78><11>kC<6B><08>\"=<3D><>#j><3E>kC<6B>ˋT<CB8B><54>/K<>?<3F><><EFBFBD><05>?Ң8Х%Y<>; %<25><>?p<><70>ꀧ<EFBFBD><EA80A7>:<3A><>a.-\nH<06><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>S<EFBFBD><53><0C><>c]<5D>\0*<2A><><EFBFBD>Цf3\0)co<63>x<EFBFBD>x<EFBFBD><78>y<EFBFBD>V><3E><>\0V<EFBFBD> <20><><EFBFBD>*<2A>?<1A><><10>щ<0F>?0\n<18><>I<EFBFBD>&4<><34><EFBFBD><EFBFBD>& <20>7<EFBFBD><37>]&AN<>'<27>*ܙ<08>?6Kd*M<><4D>x-c<63>=<3D><>dA<64><41>?<3F>`ŏ<>@<40>\n<EFBFBD>\r<EFBFBD><EFBFBD><17><03><>.?<3F><><EFBFBD>A<EFBFBD>ġ<EFBFBD>,)8<>X<0F>#\0<EFBFBD><EFBFBD> \n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>p#j><3E><>\0&е<><07><>a>*6<>*<2A>Ʒ\"<EFBFBD><18><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <20><>\0X=<3D> <09>y\0<EFBFBD><EFBFBD>d<EFBFBD><EFBFBD><EFBFBD>\r\$dǎ> <20>3<EFBFBD><33>L<EFBFBD><4C>\$<EFBFBD>c<EFBFBD>\n<EFBFBD>:<17>cY8<59><38>H<EFBFBD><48><15>>A<><41>d]gx<67>`œ<>N<EFBFBD><4E>dk]#<23><0F><>L菻<>:6<>u<EFBFBD>G}t\n<EFBFBD><EFBFBD>e<EFBFBD><EFBFBD>P<EFBFBD><EFBFBD>d<EFBFBD><EFBFBD><EFBFBD>tzܨ<>j *d<>Z5i\n<EFBFBD>ߋ><19><><0F><02><>XɅˈ<C985>99<39>F?<3F>Ux,<2C>7<EFBFBD><37>G<EFBFBD>T<EFBFBD>H^9<><39><EFBFBD>偪<EFBFBD>YU<02><>J<EFBFBD>ye_[&W<>6\$!<21>9<>A<EFBFBD>m<EFBFBD><6D>W<EFBFBD><57><EFBFBD><EFBFBD><EFBFBD>4<>= <09><>Wgb<1F>FXarᅂ*O<>+峇<>4y<e<><65>FA<46>e<EFBFBD><65>^,XI<58><49>><3E><><EFBFBD>Te<54>Z=ko<6B><6F><EFBFBD>6Q9]<5D>j<EFBFBD>X\n<EFBFBD><EFBFBD>e<EFBFBD>?=<3D><18>eߒ<65>Jyzd6J<>(<28><>A<EFBFBD>6<>쭑<EFBFBD>>y|e<><65><EFBFBD>/<2F><>c<EFBFBD>?<3F><>9<EFBFBD>f#~a<><61><EFBFBD><11>c9|<7C>7<EFBFBD><37><EFBFBD><EFBFBD><EFBFBD>\0<EFBFBD><EFBFBD>` ʃe<CA83>?~\0X%ޔZ<DE94>9Gf%<25>^Fc<46><63>?v)%<17>~9<1F><><EFBFBD>Nd<4E><64>0Տ<30>kIW><3E><>e<EFBFBD><65><EFBFBD><EFBFBD>?<1A>9+<2B>Ǝ<04><>&<0C>%<15><>G<EFBFBD><47>MX/<2F>\n<EFBFBD><EFBFBD><0F>[aÅ<61>6X<36><58>Y<EFBFBD><59>E<EFBFBD><45><EFBFBD><EFBFBD><EFBFBD>&@<40><><EFBFBD><EFBFBD>j<>J<EFBFBD>̈́<>7<EFBFBD>%⟘<><15>Fҏ <09><><EFBFBD>n~y<>*<2A><><EFBFBD>0<EFBFBD>j<EFBFBD>R<01><0B><>e<EFBFBD><65><EFBFBD>\ny<EFBFBD><EFBFBD>%<25>h*<2A>><3E>S<EFBFBD>FW<15>b<EFBFBD><62>\n<EFBFBD> <20>⍃J<E28D83>*e<><65>\n<EFBFBD>.-<2D>><3E>kH<6B><48>V<EFBFBD><56>h<EFBFBD><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>g<13>J8XdC<64>h\n<EFBFBD> <20><>X <09><>\0<EFBFBD><02>Ar<41>7<EFBFBD>e<EFBFBD><65>V<><56>\r<EFBFBD>Yd<EFBFBD><EFBFBD><EFBFBD>^<0C>2<EFBFBD><32>B<>PV{<EFBFBD>N1<EFBFBD><EFBFBD>d<02>\n<EFBFBD>\"<EFBFBD><EFBFBD>'<27>?<3F>U<EFBFBD>m<EFBFBD>ny<6E>)g<>\0h<><68>>r<><72><EFBFBD><EFBFBD>ی<EFBFBD>*<2A>¥<12><><EFBFBD>Y<EFBFBD><59>s<EFBFBD> kY<6B>\$ <09>>n<><6E>➩J<E29EA9><19><>BJ<><4A><EFBFBD><EFBFBD><EFBFBD>?v|<7C><>%g<><67>0<EFBFBD><30><EFBFBD>V?WA<57>\n<18>g<EFBFBD><67>z<>-<2D><>X``ȑ<>k@\"f <09>R9xX<78><58>L<EFBFBD><4C>@*\0<EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>d'<27><>78<37>h<<3C><><EFBFBD><15>%<17><1C>X/\$<EFBFBD>?n<>7<EFBFBD><37>C<EFBFBD>F<EFBFBD><14><>6<EFBFBD><36><EFBFBD>Z<15>i\$n<EFBFBD><EFBFBD>bhO<EFBFBD>(0<>F<0F><>j<><6A>\0<EFBFBD><EFBFBD>Ҡ<EFBFBD>ld<EFBFBD><EFBFBD>6z<0F><>`<60><><02>?<3F><><EFBFBD><EFBFBD>*\n<EFBFBD>VR#<23><>2><3E>I<><49>j<EFBFBD>c<EFBFBD>d<EFBFBD><64><EFBFBD>H<EFBFBD>mes<65>x<EFBFBD><78><EFBFBD><EFBFBD>H><3E>DU<44>倶<EFBFBD>*ج<0F><>f<EFBFBD>Ya#Ù<>8Y<38>h樒<68>z7<7A>~<7E>v?8<>\0<EFBFBD><EFBFBD>ރ<EFBFBD>T%?&Au<41><75>ō.-<2D>\0<EFBFBD><EFBFBD><02><>\$<EFBFBD>i <09>Z<EFBFBD>C<EFBFBD><43><EFBFBD><EFBFBD>ΎG<><47><EFBFBD><EFBFBD>L<EFBFBD>\0\0<EFBFBD><EFBFBD>^<1D>J<EFBFBD>`<1A>y<0F>x<13><>\$c<EFBFBD><EFBFBD><03><>h<EFBFBD><68><EFBFBD><EFBFBD><EFBFBD>L-<2D>L<EFBFBD><4C><EFBFBD>W<EFBFBD>/<2F><><EFBFBD>9<EFBFBD>\$ ?<3F>FYg[/p<>#<23><><EFBFBD>\\<EFBFBD><EFBFBD>Pi&<26>\n<EFBFBD><EFBFBD>e<EFBFBD>E<EFBFBD> \n<EFBFBD><EFBFBD><EFBFBD>><3E>s<EFBFBD>##m<><6D>G<EFBFBD>'<27><><01>G<EFBFBD><0F><01>G<EFBFBD>A诏Ɗ<E8AF8F>\"<EFBFBD>S<EFBFBD>같<1E>><3E>8<>+<12><><EFBFBD><EFBFBD>\0<EFBFBD><02><>I5n<E0A6A9><6E>)i.L<><4C><EFBFBD>N<EFBFBD><17><><EFBFBD>zL<7A>ݧƞ<DDA7>p<EFBFBD>R<EFBFBD><52>-<2D><><EFBFBD><EFBFBD><EFBFBD>^<07><1E><><EFBFBD>J<EFBFBD>JV<4A>h<EFBFBD><68>`<60>Ҥ}F<1A><>K)<01><07>*i<><69>f<EFBFBD>4b<34><62>z<EFBFBD><13>f<EFBFBD><66><EFBFBD><EFBFBD>\n<EFBFBD>+\$<EFBFBD><EFBFBD><EFBFBD><EFBFBD>F*<2A><>&<26><>i-Ü<0C>Z<EFBFBD><5A><EFBFBD><EFBFBD>a2xh*[<5B><><EFBFBD><EFBFBD>/<2F><>`<0B>ۣ<EFBFBD><DBA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᔤL<E194A4><03>i|<7C><><08>\"#k<><6B><EFBFBD><08>b9<62><39><EFBFBD><EFBFBD>Jh<17>N\n<EFBFBD>~<7E><><EFBFBD><EFBFBD>8 ?g˝F'ؖ<>7<EFBFBD><37>\n<EFBFBD>Y*<2A><>6K\n֭<EFBFBD>(6_<36>rb*<2A><> <09><><EFBFBD>IZ<49><5A>Y<0F><>Z<EFBFBD>ꚪf<EA9AAA>v<EFBFBD>y1j<11>#<23>H<EFBFBD><48>!<21>f<EFBFBD><66><EFBFBD>b<18>NC<4E>F*L<>n<03>Cc<43><63>2AU<41>d<EFBFBD><64><EFBFBD>AX<41>b_]<06><><EFBFBD>b<EFBFBD>]h<><68><EFBFBD><EFBFBD><EFBFBD>`<60> \0<EFBFBD><EFBFBD>6R<EFBFBD><EFBFBD><EFBFBD>ԍ<EFBFBD>2Kraz'<27><<3C>rkK<6B>vqz9<7A><39><EFBFBD><EFBFBD><EFBFBD>Z<EFBFBD>\r<EFBFBD>^<5E><>M<EFBFBD>B<EFBFBD>`<60>ZA<5A>y<EFBFBD>,<2C><>Q<EFBFBD><51><EFBFBD><EFBFBD>rRks<6B><73>Q8ej<65>(69<>e<EFBFBD><65><EFBFBD>y<><79><EFBFBD><EFBFBD>.<2E><1A><><EFBFBD>8<0B>C<EFBFBD>K<EFBFBD><4B><0B>/\0<EFBFBD><02>?<3F>kk<6B>?<3F>U8<19>l?<3F><13>詉<EFBFBD><E8A989><EFBFBD><EFBFBD><EFBFBD><EFBFBD><18><><EFBFBD>ʈ<EFBFBD><CA88>8<><38>/䫓<><E4AB93><EFBFBD>\n<EFBFBD><EFBFBD><EFBFBD>\rsM<EFBFBD>-EZ<45>J<EFBFBD><4A>e<EFBFBD><65><EFBFBD>?<3F><>fh<66><02>XL<58>7<EFBFBD>楘e\$<EFBFBD>\"<EFBFBD>*<2A>g]<5D><><EFBFBD><EFBFBD>th<74><68><1C>X<EFBFBD>h<EFBFBD>Z<10><><EFBFBD>\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>r-<2D><>VH8<48>Ǡh<0F>,<2C>ç<EFBFBD>v)d<><64>h<EFBFBD><68><EFBFBD>`<60><>A>P<><13>><3E><><EFBFBD><EFBFBD><EFBFBD>\$<03>1 \n\$o7,<2C> <20>Si9p:<3A><03><0B>1 <20>eb<ܡ<>8L<> <20>j\\<EFBFBD>gT<EFBFBD>-<2D><>fk<0B>Pa@<40><>xT<><16><><EFBFBD>+eKұLIk<14><>R<EFBFBD><52><13><>;0Ϙ\rS<><03>Lȷ<>K<EFBFBD>\rɀ<EFBFBD>ɬ]x*6<>ճ<15><><EFBFBD><EFBFBD><EFBFBD><1A>M!%Q><0E><>[>l~n<>I7<49>ϳ<EFBFBD>!Cl<43>E\0T<EFBFBD><EFBFBD><EFBFBD>td<74>!<21><><0E><>UG<55>{R<EFBFBD><0C>\0ڷp*VV<56>}<7D><>҇\$Ʌ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><<3C>2&<26><1C><>څaA\0<19><>\nZ<0C><><EFBFBD><EFBFBD>s<EFBFBD><73>Tl<14>\0<<3C> ?d<><03><><07><>\n`+8<02><><EFBFBD><EFBFBD>ɮ<EFBFBD>D<><44>㇀<EFBFBD>Zg*j<>f\"`<><C280><EFBFBD><EFBFBD><EFBFBD>]V<>hkU<6B><55><13>frj<72>a<EFBFBD><61>><3E>:<3A><><EFBFBD><EFBFBD>{og<EFBFBD><EFBFBD><EFBFBD><EFBFBD>;m<>1<EFBFBD>^<1D>\\#Ŋ<>+ <20><><EFBFBD><EFBFBD>V<EFBFBD>`<60>m<EFBFBD>Z<><5A><EFBFBD>mӷ<6D>){{m۩.6<EFBFBD>|<7C><><EFBFBD><EFBFBD><EFBFBD>{v_<EFBFBD><EFBFBD><18>mY<6D>0<EFBFBD><1E><>S<EFBFBD><53><EFBFBD>:<0F><><EFBFBD>9<EFBFBD>8U)<14><>y&<26><><EFBFBD><EFBFBD> v<0F><><EFBFBD>,<2C><>s,<2C>@<40>\0<EFBFBD>4-ɛ\"<EFBFBD><EFBFBD>^<5E>M<EFBFBD><4D><EFBFBD>n<08>+<2B><><EFBFBD>-{<EFBFBD><EFBFBD>59ʓ<EFBFBD><EFBFBD>K<EFBFBD>;<3B>&@ҳJt\rD<EFBFBD><EFBFBD>><3E>oV<6F><56><EFBFBD>+\0<EFBFBD>N<EFBFBD>n<EFBFBD><EFBFBD><EFBFBD>[*HD<48>\\<EFBFBD>CP\"<EFBFBD>Q(%<13>۪ )& /նf<D5B6>O<EFBFBD>\$ځW,<17>Q, <20><><EE85B1><EFBFBD>O<EFBFBD><4F><EFBFBD>P!ە<>b1̘<31>φH<CF86><48><EFBFBD>AF<41><46>*<2A><>t<EFBFBD>\nMH<EFBFBD><EFBFBD>sb<EFBFBD><EFBFBD><EFBFBD><08>Aj<41><1A>)<29><><EFBFBD><0C><>kM<1D>R1F<>D<EFBFBD><16><><EFBFBD><EFBFBD>K<EFBFBD><0F>:<3A><>\r^<5E><>ʔ<EFBFBD><1A>l<EFBFBD>1<EFBFBD><31>2<EFBFBD>fItl<><6C>YIc+<2B><><EFBFBD>)<29>U%<25>:<3A>S<EFBFBD>]%<25><><EFBFBD>1<EFBFBD>g\$<EFBFBD>5<EFBFBD><17><>%|<7C><>_><3E>#<04>S<>#\$<EFBFBD><EFBFBD>2L<EFBFBD>k&4<>A<EFBFBD><41><EFBFBD>&A <20><>!&L<><1B>I<EFBFBD><49><EFBFBD>`*<2A>ɣ+<2B><>`<60><><EFBFBD>,<11>V<EFBFBD>M<EFBFBD>!}C<05>\\x<12>Ge<47>˾<EFBFBD>\$;0<><30>k<15>(<1D><>c<EFBFBD><63>H<08><>lۀ<6C><DB80><EFBFBD>ٿt<D9BF>ԺJ;36<33><36><EFBFBD><EFBFBD><EFBFBD>Q<EFBFBD><51><EFBFBD><EFBFBD>܉;v<> 3l<33>1IE\r<EFBFBD><EFBFBD>\$%<25><> _<>@<0B>.<2E><>P<EFBFBD>B<EFBFBD><42>\\<EFBFBD>8<EFBFBD>=u<<12><>P#ﵻ(?U\"<EFBFBD>6=D<><44>\"<EFBFBD>Ny<EFBFBD><EFBFBD><EFBFBD><EFBFBD>]<5D>0\rQɎ=<3D>HD<48>`<60><><16><0F>c0,\0ݟ2<>T<12><>[0<><30><EFBFBD><EFBFBD><02><>k<><6B>}<7D>W<><57><EFBFBD><EFBFBD>3<EFBFBD>oӳ<11><>\r?v̐_T<5F><54> <09>%<25><><EFBFBD><EFBFBD><EFBFBD>{=<3D>A<><41>p/_<><0B><1C>_<EFBFBD>pJ|*%<25>\"<EFBFBD>?3<>o<EFBFBD><6F><EFBFBD>\r\0002<EFBFBD><EFBFBD>/\0`>p<><70><1E><>9<06>*}ǔ <09> <09><><EFBFBD><EFBFBD>Z<EFBFBD>Hk[<18><><EFBFBD><EFBFBD>ˆ<EFBFBD>\\+C<><EFBFBD><7F>p<>6\ri0<EFBFBD>|<7C><>s<EFBFBD>Je-zN)<29><>-Y<><59>=<3D><><EFBFBD>9h<39>6<EFBFBD><36><01><><EFBFBD><0C>8n<38>Q<><51>Z)^<T\0<EFBFBD>F8<><38>q<1F><><EFBFBD>\\GY\r<EFBFBD><EFBFBD><08>J<EFBFBD>@\r#<23><>b<EFBFBD><62>ᅊLK<4C><4B><EFBFBD>7<EFBFBD>)6<15><><EFBFBD><EFBFBD>sqn<71>6<EFBFBD>(<28>H<EFBFBD>t <20>gA<67><02>G<EFBFBD><47>(cg<63>A<EFBFBD>`\n<EFBFBD><EFBFBD>T<EFBFBD><EFBFBD><EFBFBD>u<><75><17><>_<EFBFBD><5F>\\<06>˼<EFBFBD>u<><75><EFBFBD>+<2B><0F><03>#e<><65>`<60><18>=<1D>.<03><>~⻭L8<08>;s<><04><><16>v^R\rɅ!<21>Xf<58><66><EFBFBD>N<0C><>䪻<EFBFBD>=<3D><>h<EFBFBD><68><EFBFBD><1B><>6<12>\0<EFBFBD>ȈO<EFBFBD>]<5D><0E>-bB<62><42><EFBFBD>?S <20>Tܲ!<21>߅%<25>an<61>Ir<49><72>`<60><>%<25>]<5D><><EFBFBD>ӹĘ<D3B9><C498>I<EFBFBD><0F>@:<1B>gQ<67><51><EFBFBD><EFBFBD>ʊ<EFBFBD>'1<><31><EFBFBD><EFBFBD>86<38>R]<5D><><EFBFBD>ؖ6O<36>x\$j<EFBFBD>.Q<>x|<7C><>6<EFBFBD>/X<><58><EFBFBD>=r<>t<EFBFBD>kRz<13><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;<3B>M<EFBFBD><4D><EFBFBD><EFBFBD>plW*ی<>E |<7C>AqO\n<EFBFBD>5<<3C><> #<23><><EFBFBD><EFBFBD>8pF3<46><33><EFBFBD>0Pg<50>m<EFBFBD><6D><03>+<2B>]<5D><>%,UUq<55>8&<26><1A>,g<><67><EFBFBD>,;o*h<0E><>7g<37><67>Q@47H<37>1Q<31><51>GvM<>Z<><5A><EFBFBD><06><><EFBFBD>.<0E>;<3B><><EFBFBD>qq<71>h3<68><33>R̶@9<><39>(bB<62>0<EFBFBD>帨C@<40><>%<25>㞡Tp<54>)<29><0C>IJa!<21><>*<04>mU<6D>7t<37>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD>G<EFBFBD><47><04><>fLJ\r<EFBFBD>HM<EFBFBD>I<EFBFBD><EFBFBD>9)h<>H<EFBFBD>O9<4F>^<5E>}H<>`ɳn<C9B3><6E>9<><39><EFBFBD>Sg<53>kW*<2A>W<EFBFBD>F<EFBFBD>W*<2A><> \\<EFBFBD><EFBFBD>2sdz<EFBFBD>(<28><>sϱ<73>7|<7C>Ʌ<EFBFBD>/=<3D><><EFBFBD><07><>><1C><><EFBFBD><0C>i\$n<03>=<3D><>s<EFBFBD> _<79s<39>t)<29>y<EFBFBD>W<EFBFBD>G@<40>Jt]!<1C><><EFBFBD><EFBFBD>'A<><41><EFBFBD>=<3D>_A<5F><41><EFBFBD><EFBFBD><EFBFBD>/>@<40><>1<EFBFBD><31>B<EFBFBD>r<EFBFBD><72>з@<40><>t9Ѕ!<1C><>W̨d<CCA8>P<EFBFBD>}<7D><><1B>a<>E<><45>m=<3D>E<>R<EFBFBD>O&51q<>T= `_<>Һ WT<0F><05>U\"<EFBFBD>~<7E>(<28><19>jN<6A>\"E<EFBFBD><EFBFBD>#u<><12><>VBM<0C><>n><3E>;<>Ҷ<EFBFBD><D2B6>B<08><1E>]<1C><>o|<7C><>/<2F><>c<EFBFBD>Z<15>q<EFBFBD><71>[<5B><>t<>һZ<1C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>҇2=3r<08>Ƅ4,m!=<3D>_<EFBFBD><5F>g<EFBFBD>3<EFBFBD>*<0E><>5<EFBFBD><35>AO <20><><EFBFBD><EFBFBD>D<EFBFBD>Q<EFBFBD><15><>,r#8<><38><EFBFBD><EFBFBD>*<2A><>lf<6C>E<EFBFBD><45>R<EFBFBD>7S<37><15>AI<41>!<21>A<EFBFBD>J<f<>2.<2E><>N<EFBFBD>J@<40>B<>gU{<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD>\$<EFBFBD><EFBFBD>ԯT <20><>R)0<>s<EFBFBD><73>_v@\r|\0<EFBFBD><EFBFBD>xJ`9\0<EFBFBD>2[ٔ<>u<EFBFBD>'PA&<26>M<EFBFBD>{<EFBFBD> <20><> <R<7F>]<5D><>+<2B><><EFBFBD><EFBFBD>w<EFBFBD>Ֆ<1C><>E?q<>}=<3D>`1ك<31><D983><EFBFBD>\"<EFBFBD><EFBFBD> 7^#<23>]<5D>1F<31>5<EFBFBD><35><EFBFBD><EFBFBD>sHmאF-9<><39>P<D7BF><50>t<EFBFBD><74>g\\{<EFBFBD>m<EFBFBD>__}c<><63>1<EFBFBD>:\\<EFBFBD><EFBFBD>X<D7B7><58><0C><>G^<5E>U<EFBFBD>!DaXv<03><>}=<3D> N<><4E><EFBFBD><EFBFBD><02>ؒr<><72><EFBFBD>a<D7BF>o<EFBFBD><6F><EFBFBD>OW<4F>0t<30>C<EFBFBD>y'<27>^k<>%-]=<3D><>1<EFBFBD><31><EFBFBD><17><19>\\<EFBFBD>!<21><>~!<21><>J:O<>O<EFBFBD><4F>yWd<57>5<EFBFBD><35>Ӹ\"<EFBFBD>U<EFBFBD>\n7R=Lu'<27>WW&<1F>;<3B><EFBFBD>t<><74>~<7E>S\0<EFBFBD>b0凁J<EFBFBD>Y<>\0006m22G X@<05>U(<28>Zom .<2E><1A>l<EFBFBD>-<2D><>x<EFBFBD>nFU_\n<0C>m<EFBFBD><6D>v<EFBFBD>\"<EFBFBD>l<EFBFBD>cp<03><><01><><EFBFBD>+x<>=5<><35>f<><66><EFBFBD><EFBFBD><EFBFBD>eR뢰v<EBA2B0><02>me<6D><65><EFBFBD>)^-9<><39>BU<42><55><EFBFBD><EFBFBD>bI6lq<6C><71><EFBFBD>/Mj<4D><6A><EFBFBD>1<EFBFBD>K<EFBFBD><4B><EFBFBD><13><>=<3D><>Y<08>[p<>p<EFBFBD>@<40>o<EFBFBD><05>7<EFBFBD>0i<30>S<EFBFBD><53><EFBFBD>V<EFBFBD>T<EFBFBD>v<EFBFBD><76><EFBFBD>a`8lh\n<EFBFBD>l<<3C>,<2C>+<2B>M}<7D>U<EFBFBD>7s<37><73>WI_\$V\\;<3B><1A>n<EFBFBD><6E>ܙ<EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD>M<>q<EFBFBD><71><EFBFBD>E<EFBFBD><45>q<EFBFBD>&q<08>^=ՄK<D584><4B>P=eܙ<65>\n<EFBFBD>`<60><> |<7C>|<7C>{<EFBFBD> k<>Hv<>#2<>Z<1B>ٞ7~<7E>8<EFBFBD>`<60>=<3D><06><>?l<><6C>u<EFBFBD><75>haV 5<><35>z&U^<5E><>n<7F><6E>YX\$q<><71>R<EFBFBD><52><EFBFBD>q<EFBFBD><71><EFBFBD>M<EFBFBD><4D>jw<1F><><EFBFBD>\rv<EFBFBD><EFBFBD><EFBFBD>!<21>U<EFBFBD>#'<27><>Uva?q]ǀ<>\"<1D><>1T<31><54><EFBFBD>e<>T<EFBFBD>Gz\\<EFBFBD>f#1<>;u<><75>fN<66>A6F7<>W<><57><EFBFBD>t<EFBFBD>-<><7F><EFBFBD><EFBFBD><EFBFBD>ce<63><65>1<EFBFBD><02><>O<EFBFBD><4F><04><>gs<67><73><EFBFBD>|<7C>Q]<1D>+<2B>N}<7D><>sޣZ]U^<5E>)7q<37>o84<38><34><EFBFBD>c<EFBFBD><EFBFBD><08>}Ux<55>ޢ<EFBFBD><DEA2>6<EFBFBD><02><>j<02>O<>W<EFBFBD>o<EFBFBD><12>UT|<7C>mB<6D><03>ǎ\r<EFBFBD>|<7C><><EFBFBD><08><><EFBFBD>E<0E>x6'V<><56>xU<08>\$t<<3C><>} \r<EFBFBD>/I<>,<2C>l~,<2C><0F>z<EFBFBD><7A><EFBFBD><13><><EFBFBD>><<3C>K<EFBFBD>w<EFBFBD>^Ls<><10><1D><>U(<17><>><3E>a.d<><64>\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD>m<EFBFBD><17>heP<65><50><EFBFBD>yn<02><>><11><><EFBFBD>d<EFBFBD>\0003<EFBFBD><EFBFBD>^<<3C>9<>)<29>wm<77><6D><EFBFBD>wIX7\\<EFBFBD><EFBFBD>{&\0<0E>\r<EFBFBD>2C<0F>\0T<EFBFBD><13><><EFBFBD><19><1F><><D<>'q<><71><EFBFBD><EFBFBD><08>2I<1B><><EFBFBD><EFBFBD>M<EFBFBD><4D>N<EFBFBD><4E>o<EFBFBD><6F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%)\"y<>&4<>66-1<>U<EFBFBD><55><EFBFBD><EFBFBD><EFBFBD>8<EFBFBD><38>,<2C><><02><>5<18>B)m<><6D><EFBFBD><EFBFBD><EFBFBD>Qh<51>y<>S<EFBFBD>[K9<4B>'<27><>`<60>xGrZ<>!M<><4D>Wm<57>8y<38><79>T<EFBFBD>\\e<EFBFBD>jq<><71>y,9=]NO<4E>3_q<5F><71>M<EFBFBD><4D>\nr<><72><EFBFBD><EFBFBD>k{t<14>w&<26>y*<2A><>f<02><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD>qT57<35>Ɵ3<><04><>I<EFBFBD>Um<55><6D><EFBFBD>/E<><45><04>g)<29>݂I<DD82><49>64a<34><61>@62K(߯{<EFBFBD><EFBFBD><1B>N<EFBFBD>M<EFBFBD>Q<EFBFBD><51>G1=1]<5D><>^;<3B><><1B>8hu<DEB2>ۿ<EFBFBD><05>TZ<54><5A><EFBFBD>\"<EFBFBD>z4<12>þ(y<><><7F>(y<><07><>|&\n5<EFBFBD>:˫<07>u<EFBFBD>O<EFBFBD>bw?<3F>9<EFBFBD>7<EFBFBD>R<EFBFBD>|<19><><06>,kk<6B><6B><EFBFBD><EFBFBD><02>~<7E><>[<5B><>\r<EFBFBD>/<2F>K.7e<EFBFBD>cM<EFBFBD>F<EFBFBD><EFBFBD><EFBFBD>iu<EFBFBD><EFBFBD>`<60>U<EFBFBD>9<EFBFBD>?<18><><EFBFBD>Mqo<71>t<EFBFBD><74><EFBFBD>x<EFBFBD><78>]K<>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD>w<EFBFBD><77>?<3F>}u<>'<27>\0<EFBFBD><EFBFBD>, <09>C<EFBFBD><43>Bp<><70><EFBFBD><EFBFBD>=<3D>ϘM<CF98>@<40><>d|<7C><03>Zq<5A><71>ǹ<EFBFBD><C7B9><EFBFBD><<3C>}P+<2B>| \$<EFBFBD><EFBFBD>w<EFBFBD>4Ġ<34><C4A0><17>43L<0F><17>\$<EFBFBD><EFBFBD>bw_*<2A>K<EFBFBD>I<>z?~<16>Iz<49>O<EFBFBD>+<2B>qk<71>x<EFBFBD><78><EFBFBD>{<EFBFBD><1E><><EFBFBD><EFBFBD>\n\rG<EFBFBD>w<EFBFBD>{<EFBFBD>L<EFBFBD><EFBFBD><EFBFBD>KU<><55><EFBFBD>~Iٱ<49>O`E<><45>%<25>wR <20><>!<21>_<EFBFBD>ʂu/KS<4B><53>,<2C>k}<7D>@u}<7D>1<EFBFBD><31> x}<7D><EFBFBD><7F>M8<0F>\r<EFBFBD>uS<75><53><03>|o<>4<1F><>e(<28>b%<25>n<>\r<EFBFBD><EFBFBD><EFBFBD>Z|9<><39>4t<><74><EFBFBD>(<28>[R\n<EFBFBD><EFBFBD>\0<EFBFBD>|d<>HM<48>U|=n<>Y2<32>=<3D><>|_<0E>W<EFBFBD><57><EFBFBD>?q<><71><EFBFBD>6W<36>˗<EFBFBD><CB97>\"<EFBFBD><EFBFBD><EFBFBD>p<EFBFBD>G<EFBFBD>_\"<EFBFBD><EFBFBD><03>Aӷx%4_<34><5F><EFBFBD>q<EFBFBD>3<EFBFBD><33><1C><06><>GE4<><34>絪<><E7B5AA>o<EFBFBD><6F><EFBFBD><EFBFBD>^<5E>gH<67><48>~L<><4C><EFBFBD><EFBFBD><EFBFBD>_6v2ݗ\0К<EFBFBD><1F><>6}>u<><75> ơF<C6A1>S٥<53>䉀<EFBFBD><E48980>ϴv<CFB4>}1<>K<EFBFBD><4B><EFBFBD><EFBFBD><EFBFBD>iv8L<38><4C><EFBFBD>ɤ<EFBFBD><C9A4><EFBFBD><EFBFBD><EFBFBD>k<EFBFBD>K!<21><><EFBFBD>X|<7C>E<EFBFBD>|<7C><>{ΟlѲ<EFBFBD> <20><><11><>5<EFBFBD>U<EFBFBD><1E>^<5E>WE;<3B><><EFBFBD>&x<1E>lú<6C><C3BA>D\nvR<13>\ry<EFBFBD><EFBFBD><07>]<5D><>9<EFBFBD>ϲ=Ǝ<><C68E>}<7D><><EFBFBD>!<21><>K<EFBFBD><17><><EFBFBD>_ڍ<5F>w<EFBFBD>b<<3C><><EFBFBD>v<EFBFBD><76><EFBFBD><EFBFBD>~<17><>|<7C>D<EFBFBD><44>u<EFBFBD><75><EFBFBD>}~<7E><><EFBFBD><EFBFBD><EFBFBD><16>o<EFBFBD><6F><EFBFBD><EFBFBD>пt<D0BF> J<>><3E><>ٿcv1<76>4T<34>Пq<D09F>#><3E><><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD>\"<EFBFBD>z<EFBFBD>\r<EFBFBD><EFBFBD>=]<5D><>Y|<7C>W<EFBFBD><1B>mx<6D>5<EFBFBD>l}<7D><18>+<2B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͥ}<7D>\rwiq<>i<EFBFBD>7 0<><03>|<7C><><EFBFBD><EFBFBD><17><>{vw<EFBFBD><1F>ߓ~Aּ<41>a<EFBFBD><61><EFBFBD>&<17><><EFBFBD>XƂJ}<7D><><EFBFBD><EFBFBD><EFBFBD>%<25><><EFBFBD><EFBFBD><EFBFBD><0F><><EFBFBD><EFBFBD>x_0<5F>t<12><19>w<EFBFBD><1D>L<EFBFBD>4JS<4A> <20><>f<EFBFBD><66><EFBFBD>Cu<43><75>g<EFBFBD>\"<EFBFBD>}<7D>KO <20>wx<77><78><EFBFBD><1C><><EFBFBD>rt?<3F><12><><EFBFBD>J\0<EFBFBD>P+<2B>t!<21>.;<3B>F<05>'<27><><EFBFBD>}%f?X<><58><EFBFBD>]b<><62><EFBFBD>>ʱ6<CAB1>Q<EFBFBD>[<13><>P<EFBFBD>3<1C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>H<EFBFBD>pg/<><DFBC>a<EFBFBD><12><><1C><> 53Ƀ<33><C983><EFBFBD><EFBFBD>ޠ{<EFBFBD><EFBFBD>oh;t<><74>'ɟK{<EFBFBD><EFBFBD>?<3F>=<3D>pG<70><47><01>L<><4C><EFBFBD>ҽ<EFBFBD>12<31><32><EFBFBD><EFBFBD><EFBFBD>e<EFBFBD><65>|`;<3B><><08><>bLI<4C>В?<3F>w<EFBFBD><77>Gl4M<34>=<3D><><EFBFBD><EFBFBD><EFBFBD>}#<23><><EFBFBD>4<EFBFBD>I<EFBFBD><49><EFBFBD>7D<37><7F>w<EFBFBD>ݿv8\n<EFBFBD>!,<0F><><EFBFBD>X%<25><><0C><>6_\\P<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><18><><EFBFBD>Ք<0B><><03>c<EFBFBD><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><1E>u<EFBFBD><75>/<2F>߿<EFBFBD><DFBF>Y<EFBFBD>t<1F><>g(H<> <20><>Z/g<>{m<1B>(%<25>+ӷ<><D3B7>h<EFBFBD>&ͦ<><CDA6>#P%<25><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>w<EFBFBD> q<>ôweF<>S2<53><32>i<EFBFBD><69><EFBFBD><EFBFBD>`<60><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><04><><EFBFBD>ڈ<EFBFBD><DA88><EFBFBD>-<2D>`;L<04><><EFBFBD>»<EFBFBD>W<EFBFBD>Et<45><74>?<3F>\nJ,<2C>/1<>'<27><>uS<75><Jv<><76>z;<3B>g<EFBFBD><67><EFBFBD> <09>k<EFBFBD>`<60>a<EFBFBD><61>7Yk5^;<3B><>_\0005bX<EFBFBD><EFBFBD><EFBFBD><0F><><EFBFBD><EFBFBD>/^j<><<3C><><EFBFBD><EFBFBD><EFBFBD>Ψ<EFBFBD>L;<3B>V<19>h<EFBFBD>gTI.<2E><03><>\n<EFBFBD>6(h<><68><EFBFBD>P]<5D><>ruH<75><15>ɼh<>U r<><72> <05><>\"|@<40><03>><3E>(<15>@<40><05>\"!<21>0!<21>`<60>% <20><>R<>a*Ϭ\0iEC<>Er<45>EnH<6E>Pɔ:V<>Dh<44>I2x<32>\n<15><><EFBFBD>'܊n@<15><><EFBFBD>կ<EFBFBD>c&<26>u\r<EFBFBD>em(<28>i+<2B>DX\$TH\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>0P<EFBFBD><EFBFBD>_#(#s<>/<2F><><EFBFBD>#!]b<>O<><4F><EFBFBD>ID'<02>Pt<50>y<EFBFBD><79><EFBFBD><16><>\n4<EFBFBD>m*<2A>D^D<>U<EFBFBD>@<40><>`\r\$<EFBFBD><EFBFBD><13>}D<>Q}@<40><>&\r%}b<19>x<EFBFBD>T@:7<>W<EFBFBD><57>,<10>1R@w<>]<5D>@ <20><>P1<50>3<EFBFBD><19><><EFBFBD>D\$0G<EFBFBD>L<1B>\rSk<><6B>l#\0_l'<27>e(<1B><><EFBFBD>ì<EFBFBD>X<EFBFBD><19><19>z<EFBFBD><1E>>&T<<3C>c|<0F>\"p?<3F>/<2F>Y<><59>N `<05>+E<>łO<7F>-jb<6A><62>y<EFBFBD>D6<>[)Qxj<78><6A><EFBFBD><EFBFBD><0B><1B>0]<5D>qs\"<EFBFBD>S<EFBFBD>@Ġ<>A]><3E>F<08><>Ų0J@ݬ<>%<25><04>hg<12>\$<EFBFBD> <20><>o<>.<2E>x<EFBFBD>Uͯo\0<EFBFBD>A0\\<EFBFBD><EFBFBD>X<EFBFBD><EFBFBD><13><><EFBFBD> <20>H,<1E>Z <09><><EFBFBD>(+4W<1B>]ol<6F><6C>qd%<25><>i<EFBFBD>3A>[4<01>\nK<EFBFBD><EFBFBD>\"K<08><15><>H[\$<1A><>c<EFBFBD>4<EFBFBD><34>@遭<03>\\\r<EFBFBD><1D>Ӡn@<40>\0<EFBFBD>\0<EFBFBD>e<1A>Qj\0k<EFBFBD><EFBFBD><EFBFBD>7Y<EFBFBD><02>8\$t<EFBFBD>h\0Pԑbg\0;č<>?<3F>,>H<><48>pY\"E<EFBFBD>a<EFBFBD><EFBFBD>F<14>rx<72>Po)<29>\r<EFBFBD>-2u<32><75><EFBFBD>b0apSI<53>X<02>.<2E><>\0OP&S}ঠy9*J<><16><>ҋ<EFBFBD><D28B><EFBFBD>g/<2F>z<><7A><EFBFBD>*<2A><><EFBFBD>*CV<43><56>_<EFBFBD><0B>~<7E>6vm,<2C><18><><EFBFBD>-<2D>Ȁ?<3F>`<60><>\rl<EFBFBD><EFBFBD>17d<EFBFBD><EFBFBD>e<EFBFBD>X<>0<EFBFBD>,<2C>b<EFBFBD>W<EFBFBD><57><1F><><EFBFBD><1F>k+<2B>ٸ<EFBFBD><D9B8>f<EFBFBD><66><EFBFBD>Z<EFBFBD>8 m^[m4<6D><34><EFBFBD><EFBFBD>ـ1j&Q<0C>Z:<14>e<EFBFBD><65>u<EFBFBD>c8<lmX̶<58>iHH<11><><05>)Mq<19>+W\$h<EFBFBD><11>c<18>e<EFBFBD><65>`<60><><EFBFBD><0F>GѪ<1B><19>/<2F>\0Є۹<><DBB9>*<2A><><EFBFBD><EFBFBD><EFBFBD>C<EFBFBD><43><EFBFBD>R`<60>!<21>&5`U<>>2<17>M<><4D>\"XBL<EFBFBD><EFBFBD><EFBFBD>BcBR<42><52><EFBFBD>:<3A>P<><50>~3Gi<1D>[D<>C<0C>C<EFBFBD>Bch <19><>Q8EL<45><4C>?<3F>dV<64><15><>#fdn!08WE<08><><EFBFBD>H<EFBFBD><48>Lڴ<>edxј\\R<>M0<4D>52?eѽ<>C!8J<0C>Z7<5A>Ph<50><68>X[:<3A>=`@#<23>l<EFBFBD><6C><EFBFBD>v\\%<25>M<EFBFBD>z<EFBFBD><7A>1<EFBFBD>e<EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD>2܌<32><DC8C>.2<EFBFBD>c<EFBFBD> aD!M<>\n<EFBFBD>\n<EFBFBD>Ʉ<EFBFBD>Ǻ<13>!<21>Np<4E> <20>6<0B><>Z+[V<><56><EFBFBD>!<14>g<7F><67>z{<1E><><EFBFBD><EFBFBD><EFBFBD>CB0)<29><08>3'<27>Nl<4E>g'<1A>&<26>B<11>(<28>><0C><>21<32>&f<11>'6Pp<50><70>0j<30><6A>Ր<1D><>,<2C>X<EFBFBD><58>-fc f\$%<25><><0C>!04<30><34><EFBFBD>&T+hM<68><4D>!W2 _<>A<><41>\"N<><4E><EFBFBD>1<>dAu<>'<27>DP<44>Xb<58><62><EFBFBD>L<EFBFBD>ّs?<3F><P<>\0<EFBFBD>\0R<EFBFBD>\n<EFBFBD><EFBFBD>KZfD<EFBFBD>a<18><>dT<64>b<16><1B>S0<53><1A><>1dU\n<EFBFBD><16><1F>HL<48><4C>n<EFBFBD>\rhJ%<25><>~2<>P<EFBFBD>Zg*!d<><64>ɒkG<6B>/<2F><><EFBFBD>r4<72>jVH<56>[U6R<0C>ڝ<EFBFBD>Ã<EFBFBD><C383><EFBFBD><10>(Ƴ즙<C6B3><ECA699>l<EFBFBD><6C><1F><><EFBFBD>7&S<>E<EFBFBD>41<34>f<EFBFBD>TM<54><4D>ތ<><DE8C>5<14>a<EFBFBD><61>\\<03>`<60><><EFBFBD><EFBFBD>{B<EFBFBD>b<EFBFBD><EFBFBD>h<EFBFBD><17><16><><EFBFBD><EFBFBD><EFBFBD>΅<0C>Z3AZ0ɘc2<63><32>R<EFBFBD>F<07><><12>p[ 7݆x<DD86><78><EFBFBD>E<><05>>CCz<43><7A><EFBFBD>?v<> <20>@-l`<60><0C><><03><><EFBFBD>Oo3<6F>-<2D><>\$<EFBFBD><<3C>zl<7A><6C>T<EFBFBD><54>h̠<><CCA0>Jn<><1C><>67h<1F>\\<EFBFBD>4<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۈ*<2A>n.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(g<><67>U<EFBFBD><55>@<40>{<EFBFBD>&!6+n]%`<60><>\\If[<5B>(Az<41>\n<EFBFBD><EFBFBD><EFBFBD>a<EFBFBD><EFBFBD>\0j<1E><>5ov<6F><76>&\n<EFBFBD><1B><><13><><EFBFBD>x<EFBFBD><78> *<2A>L<EFBFBD><4C><EFBFBD><EFBFBD>ު8:f<>I?j<>2\$<EFBFBD><EFBFBD>(=&oD<6F><44><EFBFBD>+}F<><46>-<2D>]Oē<15><><EFBFBD><EFBFBD>\$M<EFBFBD><04><><EFBFBD>\n\0<EFBFBD><EFBFBD><13><06><>;<3B><>9<EFBFBD>I<EFBFBD>w<EFBFBD>Ay<41>&<26>`G[<5B><07><17>ܙ<EFBFBD>Cv4<76>'ђ<><D192><EFBFBD><1D><>s<>uhv<68><76>D\$<EFBFBD>bo(<28>y<EFBFBD>\0g K<>`<60>j<EFBFBD><6A>I<EFBFBD><49><EFBFBD>ƙ<03>|<10>\r<EFBFBD><EFBFBD>\\*<2A><><EFBFBD><EFBFBD>ĩ*<2A>ۿ<EFBFBD><DBBF>oMc<4D>R<EFBFBD>!<1B><><EFBFBD>U<04>c<EFBFBD><<3C><0B><>`\r<EFBFBD><0C><>=<3D>sc<14>t<><74>7<EFBFBD><37><02>. @T<>N'Ҵbl<62><0F><>@f\"<EFBFBD>)=a<>8Pp<50><70>q<EFBFBD>a<EFBFBD><61>O<05>3<EFBFBD><33>[b<><62><EFBFBD>HW8<57><38>[<5B><>c<10>:\$ H<1F>Ǐx<C78F>9*p/1Oh'#<23>ܱ)h<><68>~<7E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B<EFBFBD><42>fp<66><0F><01>C<EFBFBD>)i`<60><>(A}\0A u<><75>5I<><49><EFBFBD>FM\0'<27>J\n<0F><><EFBFBD>vT<76>[(<28>!<21>\0J<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\\<EFBFBD><13><><EFBFBD>@*q8O<38><19>:s5<<3C><>ܤل\$<EFBFBD>sl<EFBFBD><EFBFBD>}R<><52>F<EFBFBD><46><04><><EFBFBD>n<EFBFBD><6E><EFBFBD><EFBFBD><EFBFBD>\$GT<EFBFBD>E\09<<q<><11>\"<EFBFBD>g<EFBFBD><EFBFBD><EFBFBD><EFBFBD>9:<3A><>l-K8<1F><>i<EFBFBD><11>FB<18>\$k<EFBFBD>U\$\\<EFBFBD><>#<0E>\nS݄<EFBFBD>B<EFBFBD><EFBFBD>H<EFBFBD><EFBFBD>mEe.<2E><a<>. <20>&\\r6<EFBFBD>}<7D><><EFBFBD>\$<EFBFBD><EFBFBD>z<EFBFBD>8)(<28>X<EFBFBD><58><EFBFBD><EFBFBD>K<EFBFBD><4B>.<2E>\\<EFBFBD><EFBFBD>OIrl<EFBFBD>%˔4<CB94>O<17><>F\r<06>i<EFBFBD><69>\0<0C><>b`pr6<72>T<1B><18>11\\<EFBFBD><02><16><03>Ih<49><68>1<EFBFBD><31><EFBFBD><EFBFBD>_<EFBFBD><5F>Uqx'<27>2\"l<EFBFBD>}I<><49><EFBFBD><0B>ѴNO\"p\r<EFBFBD>p<EFBFBD><EFBFBD>!TDK<44><4B>.QIm9<6D>N<EFBFBD><4E><EFBFBD><EFBFBD>S<EFBFBD><12><>a<><61>qo<71>\0Xe<EFBFBD><EFBFBD>%!<21><>\\l-<2D>uv<75><76><1E><>^<5E><>S:9I<><06>e<EFBFBD><65>h<EFBFBD>N<[<5B>/e~Υ<>ҿ<>JnkA><3E><><02><><1D><>\r'X ʇmE<16><><03><><EFBFBD><EFBFBD>CK<43>yޗ*|<7C> <09><><0B><>(<28><>@<40><><EFBFBD>N\$<EFBFBD>il<EFBFBD>R<EFBFBD><EFBFBD>o<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><14>)lSH<53><48>6^<5E><>,R<>~\\SئqP<0B><>ኅ<14>(<28><01>.D<><44>I<EFBFBD><49>s<14>y<EFBFBD><79><EFBFBD>x!<21>S<EFBFBD><53><EFBFBD>Y<EFBFBD>H^UWX<57>v<EFBFBD><76><EFBFBD>;<3B><><EFBFBD>Pt<50>U<EFBFBD>c\0<EFBFBD>⮆c<EFBFBD><EFBFBD><15>*U<><55><EFBFBD>ZEe<45><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\0<EFBFBD><EFBFBD>p<EFBFBD><EFBFBD><08>-6<> #T<>\"mT_;\rqܰ<EFBFBD>+<2B>WG<57>B7<42>;<3B>\$BB<EFBFBD>z(<28>b<EFBFBD>8<EFBFBD>X<EFBFBD><58>,W<>K<EFBFBD>7<EFBFBD><37>=D<>%<15><>Yo<>8<>;rI<72>V<EFBFBD><56><EFBFBD>Σ<11> (iX<69>X<EFBFBD>-\$Z<18><>?\0<EFBFBD>A8T<02><0B>T<EFBFBD><54>J<11><><EFBFBD><EFBFBD>RQh<0F>p<EFBFBD>6P\\⤓f\r@<40><19>,=<3D><><EFBFBD>mNo<4E><6F><EFBFBD><EFBFBD>y\". <06><>αÆ<CEB1>ku<6B><01><>|=<3D>g1t{<EFBFBD>]K<>J<19>]H<>P<>;<3B>Ň<EFBFBD>iճ<69>`s1Rb<52>:<3A>MH<><48><EFBFBD>H{O<EFBFBD>b<EFBFBD>:<3A>\\ؼQ<EFBFBD>\$\\\$\n<EFBFBD>v<02>ÿx<C3BF>]~*4_<17>D0<44><30><EFBFBD><EFBFBD>^k<17><08><19><><EFBFBD>n<1D>E<EFBFBD><45><EFBFBD><01>LT<4C> 1T<31>H<EFBFBD>H<EFBFBD><01>0ac<61><63><EFBFBD><EFBFBD>hC<68>G(߲0<DFB2><30>!<21><><EFBFBD> FY<>I<><49><EFBFBD>x®<78><C2AE>? {<1A><>0<EFBFBD>bH<62><11><><13>!<>>0<><30>\\*<2A><>L<EFBFBD><4C>t<EFBFBD><01><03><><EFBFBD>, <20>G+<2B><05>Ș*G^1<><31>oFA{<EFBFBD><EFBFBD>aˌXȐ_<C890><5F>/<2F><02><>s<EFBFBD><17>Ƞ]_V/P/.24dʏ<>_\r9Ō<EFBFBD>2%h-<2D><>Ϡ<EFBFBD>><3E><><EFBFBD><04>2<EFBFBD><12><>1EU><3E>ZBh<42>2<>d`+1<><31><EFBFBD>Flu|I\rg*<2A><><EFBFBD><11><><EFBFBD>e<03><19>|<7C>N<EFBFBD><4E><11>#5<><35>|<7C><>3ѧ(ς<><CF82>0F<30><46><EFBFBD>6)<29><><EFBFBD>4<EFBFBD>ʲ<EFBFBD>E<>><3E><>TTPc<50><63><1D>,<2C>K\$<EFBFBD><EFBFBD><EFBFBD>n<>Y/<12><1B><q<>R5<02><><EFBFBD><EFBFBD><1F>'Qq<51><71><EFBFBD><EFBFBD><EFBFBD>k<08><>_<EFBFBD><5F>=<3D><><EFBFBD><19>,gWh<57>;<3B>[<5B><1C>\0'I'x*<2A>&I5<49>T<EFBFBD><54>{r<EFBFBD><EFBFBD>̛q<EFBFBD><07>MS<4D>?<3F>M<EFBFBD><15>6p<36><08>#:<3A><><EFBFBD>wd<77><64><EFBFBD>C<EFBFBD>\0Zʮ\"<EFBFBD><EFBFBD>\"I<EFBFBD><EFBFBD><EFBFBD>Dr<EFBFBD>ĸѸ\n<EFBFBD><18>I<EFBFBD><49><EFBFBD><EFBFBD>K<EFBFBD>/<2F><><EFBFBD>{<EFBFBD>DM<><12>X<EFBFBD>\0<EFBFBD><EFBFBD><08>( <20><04>N<EFBFBD>a(<28>i<EFBFBD><69><EFBFBD><01>\0<EFBFBD><01><>li<17>pО<70>?~#<1B><><EFBFBD>}<7D><><EFBFBD><EFBFBD>^`<60><>Wp<><70>><3E>t<EFBFBD>cM<63>\r<EFBFBD>/<2F>2Lj<4C>.\0<EFBFBD><EFBFBD>7<><1E>*X<><58><EFBFBD>7<EFBFBD><37><EFBFBD><EFBFBD>>7Z^v<><76>dh D<><44>÷<>J<EFBFBD><4A><EFBFBD>x[ïa<C3AF>\$<EFBFBD><EFBFBD>v~<7E>l:4gX(¨<>C<>GsH<><48>0W/n<><13><>1<1B><>=3<03><><EFBFBD>`rԔtPN<1E><><EFBFBD><C282><EFBFBD>n<EFBFBD><6E>:(p<><19>[<5B>PƱ<50><C6B1>B=Lq`<60><><EFBFBD><EFBFBD><EFBFBD>`<0B>ã<EFBFBD><C3A3>Yq<59><71><EFBFBD>=<3D><>W3<57>c@<40>\n<EFBFBD><04><>u6<75>0<>/<2F>@ہ4<><34> gИ<67><D098><EFBFBD><EFBFBD><EFBFBD>ut<75><74>!<21><02><><EFBFBD>o<EFBFBD><6F>F<EFBFBD>Ɏ<EFBFBD><C98E>%<25>6<><36>0<15><>>^|<7C>*<2A>##i<><69>K<EFBFBD>c<EFBFBD>Ǐ<EFBFBD><C78F><1C>.<2E>`<07>N'<17>k\0<EFBFBD><10><>Ӡ<>ρc<CF81>G<EFBFBD>R̚.=+<2B>Pi<03><>~%<25>w<EFBFBD>s<EFBFBD>;<3B>x<EFBFBD><78><EFBFBD>Q<EFBFBD>5/<2F>u|<<3C>'<27>y<EFBFBD><79><0B>b<EFBFBD><62>q &<26>1 &<26>x<0F><>'=ߏx<DF8F><78>:H3<48>K<EFBFBD>@_n8 \"<EFBFBD><EFBFBD>l|<7C><>n<01><><EFBFBD><EFBFBD><EFBFBD>T<EFBFBD>L<18><><EFBFBD><EFBFBD><EFBFBD>J<EFBFBD>πe<CF80><65><01><>pf%.<2E>q\\Z;<06><><EFBFBD>D8<><38>0\\<EFBFBD>=<3D> \0<EFBFBD>Q.0HB<EFBFBD><0F>U<EFBFBD><01>G<EFBFBD><04>M<EFBFBD>u<EFBFBD><75><EFBFBD><EFBFBD><EFBFBD>p<EFBFBD><70>_ <20><><EFBFBD><EFBFBD>Ө<EFBFBD>d<><64>:<3A>\$<EFBFBD>.<2E><>*<2A>v<><76><EFBFBD>G<>ow W<><57>h<EFBFBD><68><EFBFBD>A<EFBFBD><41>fu<66><16><>:N<><02><16>u<>\rV{<EFBFBD>'<19>7<EFBFBD><37>+<2B>Ρ%<25><13>G<EFBFBD><47>F\0ָ<EFBFBD>Jy<>9]8<>/<2F><>p<EFBFBD><70>u<EFBFBD> <20>d<0C>g<EFBFBD>oM <09>1<> M<>;<3B><><EFBFBD>QR<>H7~<7E> <09><><<3C>Hnn<6E>Џ<EFBFBD><D08F>sv<12><>uU<75><55><EFBFBD><EFBFBD><EFBFBD>>َ<><D98E><EFBFBD>2J<32><4A>^/<2F><>E<>`<60>`\rzk<EFBFBD>^0<01><>HPwܲRB+<2B>x<EFBFBD><78><EFBFBD><EFBFBD>]F<>+<2B><><05><><EFBFBD>f<EFBFBD>+<11><>8Pn<50> 1<><31>u<EFBFBD>h\0q<EFBFBD><07><>Y<EFBFBD>]<5D><>>yKD<4B><44>8'}<7D>/<1D>ۆ<08> y<><79><EFBFBD>\n<EFBFBD><EFBFBD><EFBFBD>(S<><53><EFBFBD>1C<31>1<EFBFBD>P<EFBFBD>\$\n<EFBFBD>><3E><><EFBFBD><EFBFBD><EFBFBD>u<EFBFBD>Lȋw<C88B><77><EFBFBD>(!H<01><>G<EFBFBD><47><Jc\0005n<<14><14><><EFBFBD><EFBFBD>\0hSg\"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><14>(<28>V>?\0<EFBFBD>\"<EFBFBD>E<EFBFBD><EFBFBD><EFBFBD>}ĎUH<55><48><EFBFBD><01>E<EFBFBD>d7<64>\n^<5E>_8et<><74>:<3A>To<54>#CC<43>I<EFBFBD>#,j,|<7C><>bw<62>)<29>ۏo#J;<3B>WK<57><4B><EFBFBD>j<EFBFBD>/<2F><>#e<><65><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD>\0<EFBFBD><16><04><>Z\0<EFBFBD><EFBFBD>`+<2B>C@<40><>upa<70>2<EFBFBD>o9<1D><>A<EFBFBD>)z<><7A><EFBFBD><EFBFBD><EFBFBD>\$<EFBFBD>u<EFBFBD>kQmH<6D>6<EFBFBD><36>Qpx&<26><>\"7<EFBFBD><EFBFBD>.<2E><10>?\nT<EFBFBD>l<EFBFBD>?<3F>j<EFBFBD>x]<5D><><EFBFBD>ɲҐL<D290><4C><EFBFBD>%<25><>Q%!<21>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD>d<EFBFBD><64>H<EFBFBD><48><EFBFBD>r1<13>g<EFBFBD> bd5<64><35><EFBFBD><02> <09><>j<EFBFBD><6A><EFBFBD>ƣ'<27><>n<EFBFBD>\$2E5`<60><>Ed<45>?<04><><EFBFBD><EFBFBD><EFBFBD>m <0F>'<27>\0<EFBFBD><EFBFBD><03><><05>S<EFBFBD><53><EFBFBD><EFBFBD>n<EFBFBD>|\nx<>>T}&<26><><EFBFBD>d<EFBFBD><64><EFBFBD>b<>^4\\h<EFBFBD><EFBFBD>ڤ<><DAA4>F<EFBFBD><46><EFBFBD><EFBFBD>آMi)\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>C\\<EFBFBD><EFBFBD><EFBFBD><EFBFBD>nP<0C>W<EFBFBD><57>|<1E>ZK<14>@\r<EFBFBD>Y<EFBFBD>ͪ<EFBFBD>7g#<23><>c<EFBFBD>`HP]L<>hp><3E>@<40><>#<23><>%:x<><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD>S}<7D><><EFBFBD><EFBFBD>Iw<49>`<60>]<5D><>]<5D><>\0<EFBFBD><EFBFBD>2<EFBFBD>t<0C><><EFBFBD>(<28><02><>2<04><>Gv~<7E><>s<><73>γ<1E>H<EFBFBD><EFBFBD><7F>*<2A>t<17>k<>-#ݒL<DD92>y<1E><>I,.<2E>ܑI<DC91>YP2<50>+<03><> <09><1A>ݷBUorBsi<73><69><EFBFBD>f]nI<6E><49>t<EFBFBD><74><EFBFBD>z{i7<EFBFBD>H\$ڽ<EFBFBD>M<06>QܳҨ<DCB3><D2A8><EFBFBD>dt&GRQ'!<21><1B><>Hj<48> 8+<2B><10><08><>#<23>v<EFBFBD>-U<>\"p&<26><>[<5B><><EFBFBD>oP/<15>\"<EFBFBD>W <09>/P\0 <09>+t&;n<04><><EFBFBD>B<><42>1<EFBFBD>Von =<12>0'<27>I<><49><EFBFBD>P<EFBFBD>NԞ<4E><D49E>Rw@0<><30>W<EFBFBD>Q:<05>)p{<EFBFBD>yUū<EFBFBD>E<EFBFBD><EFBFBD><EFBFBD><1D>\n<EFBFBD>u#<23><>X<EFBFBD><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD>O<EFBFBD><4F><EFBFBD>}2<>T<EFBFBD><54><EFBFBD><EFBFBD>(R<06>tdC<64>ђ<EFBFBD><D192>Fp<46><70>}@<40>(<1C>Q<>J#%(<28>}<7D>,<2C><>K+<2B>\"<EFBFBD>t\"R<01>'<27><><EFBFBD>FR\0<EFBFBD>d<EFBFBD>4w<EFBFBD>\$Mb<EFBFBD><EFBFBD><EFBFBD>F<EFBFBD>D<EFBFBD>0,<2C><03>)0<>X<EFBFBD><58>ҏ<EFBFBD><D28F>X<><58>Гt<D093>X<EFBFBD><58>9<EFBFBD><39>J20,<2C>E<EFBFBD>r<EFBFBD><72><EFBFBD>d<><64>)E<><14>K<EFBFBD>KW<4B>A^<5E>RQ ]d\$<EFBFBD>R<EFBFBD>B<EFBFBD>J/G<><10>\n<EFBFBD><EFBFBD>9L<EFBFBD><EFBFBD>P?Jq~E)<29><1A><>B<EFBFBD><42><EFBFBD>5# <20>\\Q\nQ)F1d<31><64>%:Jx<05>~P<><50><EFBFBD><12>O<EFBFBD> <11>d\n<EFBFBD>~<7E>c<EFBFBD><63>u<><75>B6e0[}<7D>[V<><56>D<EFBFBD><44>_ᄬ<><E184AC><EFBFBD><EFBFBD>*<2A>S<EFBFBD><53>ac<61>i<EFBFBD><69><EFBFBD>\r<EFBFBD>T#<23>[<0C>!y<><d<><64>͑<EFBFBD><CD91>F<EFBFBD><46><EFBFBD>Uж<55>kdV4<56>K9<4B>0q<30><71>%<06><VHKLJD<4A><44>c<EFBFBD>\ri<EFBFBD>1I<EFBFBD>J<EFBFBD>w<EFBFBD><EFBFBD><EFBFBD>+a<><61>љ+ <09> l*eg1 hP<68>݈Q&!<21>,ؓ<><D893>c<EFBFBD>+X?D<><44>lB؆<42>ƅ:rV<72><06><15><><EFBFBD>WJ<57>`<60><><EFBFBD><EFBFBD><EFBFBD> <02>R<EFBFBD>Kr4G8U-<2D><>V<EFBFBD><56><EFBFBD><13><><EFBFBD><EFBFBD>*<2A><><12>Ef<45>^<5E>.<2E><>: !<21>{#<23><><EFBFBD><1C>24vi<76>\nY<EFBFBD>A<><41><EFBFBD>;[X<>hl<68><05><>Cf<43><0C><>B¬i<C2AC><69>M#.<2E>\\<04>v4<76>d<02>з<EFBFBD>Y&<26><><EFBFBD>X<EFBFBD>29k<39>,<2C><02>J<02>l<EFBFBD>e<>Wi<57>u<><75>M<EFBFBD><4D><EFBFBD>]<5D>!)<0F>Ӝ<EFBFBD><D39C>4Ɵ<34>I<EFBFBD>܇<EFBFBD>h\$[A<>CJ<43>9mC<1A><>-*<2A><><EFBFBD><EFBFBD>8}<7D>KMEY<45><59>]j*Z<><5A>+%V<>mH<6D><48>BT<0F><><EFBFBD><EFBFBD>K=zd<><64><EFBFBD>`K<>-<2D><>1[<5B>6Ÿڸ<C5B8><DAB8>j<10><><EFBFBD><EFBFBD>nI><3E><11><16>}ab<01><><EFBFBD>R֎<52>e<EFBFBD><65>5<EFBFBD>b<EFBFBD>@?<0C><>O<EFBFBD><4F>Yc<59><63><0F>ө<EFBFBD>SK<53>:j<>Y<EFBFBD><59><EFBFBD>a<EFBFBD>+<2B>V<EFBFBD>R<EFBFBD>:l&Y<>J<EFBFBD>h<EFBFBD>ZͰqL&-<2D>Tc<54>5LT<4C><54>Ur<55><10><>.ǥ7nB d\\<EFBFBD>r<15>+<2B><><12><>JԤ|\$dHD<>nW˯S`<60>+<2B>K% /<2F><>7R<10>66<>><3E><><1B>wn@<40>=<3D><>7<EFBFBD>F<>[<5B><>,#.y<><79><EFBFBD><EFBFBD>3ϱϣCopj<70>Ų<EFBFBD>d<18><>2@<40><><EFBFBD>o<EFBFBD><6F>6\ry\"<EFBFBD>R\$<EFBFBD><EFBFBD><EFBFBD>} w<12>ݘ<EFBFBD><DD98>č<EFBFBD><C48D><EFBFBD>*E2<0B><>l<EFBFBD>)<02>Ħo]<12>&<1B>8<EFBFBD><38>J<EFBFBD>*F<>j<EFBFBD><6A>\\<13>u<EFBFBD>ʩ%I<><49><06>'<27><><EFBFBD>f<EFBFBD><66>O<EFBFBD><4F><EFBFBD>><3E><06><06><>c<EFBFBD>iy<69>h<EFBFBD><68>'iK<69><1A>GJs<07><><0E>@F<>Tv<54>8<>S<10>\n<12><1A>7,M&<26>q<EFBFBD>gh<67>3\n\$<EFBFBD>@NF<4E><46><EFBFBD><EFBFBD><EFBFBD><EFBFBD>σ<EFBFBD>D<EFBFBD><44>N<EFBFBD>c0<63> <20>=<3D>Qq<51>▂<EFBFBD><18><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><07><>r<EFBFBD>T?}P<>Jcu<63><15><>D<EFBFBD><44><EFBFBD>zUܴ<55><DCB4><EFBFBD>#<1B><>xNX<4E><58>š<EFBFBD><C5A1>_<EFBFBD>?<3F>neqP<71>aS<61><53>3&<26><>\n4M<EFBFBD>!<21>J:r<><72>9]T<><11><><EFBFBD><EFBFBD><EFBFBD>#qH<71><48>nۥY^<5E><><EFBFBD>c<EFBFBD>k<EFBFBD><6B>n<EFBFBD>V<1E><><07><><EFBFBD>F<EFBFBD><46>I<EFBFBD><49>,]<5D><>WM<57><14>D<EFBFBD><44>'W<>r#d<>/v<>&<26>2<EFBFBD>vװiR<69><52>I}V!)<29>}D<><44>&\0<EFBFBD><EFBFBD>*<1C><18>N<EFBFBD><1A><><EFBFBD><EFBFBD>`:F<-<2D><0C>`<60><>,C<>\n4@<40>'(2.r<>2<EFBFBD><32>^<5E>Ҕ8f<38>&<26>@<40>w<EFBFBD>@<40>W<EFBFBD><01><>\\˔O<EFBFBD>2J)<29><>(<08>S<>\$<EFBFBD><EFBFBD><EFBFBD>|<7C>><3E><>.<01>q<>W\0<EFBFBD>@<40><>9<EFBFBD>%8<`M<>0<EFBFBD>M<0E>\0b\0<EFBFBD><01>p\$<EFBFBD>}\09<EFBFBD><EFBFBD>\0p\0<EFBFBD><01>9<><39>7<EFBFBD>\0003\0nC}l<><6C>S<EFBFBD> \r@\0006<EFBFBD><EFBFBD>\0<EFBFBD><01>π<06>:<3A><1B><><EFBFBD><EFBFBD>3<EFBFBD>gH<03><06>:<3A>\0003<EFBFBD><EFBFBD>4<01>I<>S=<3D>~<7E> <09>3<>h<1C>ٞS;f|L<>8r\0<EFBFBD><01><><EFBFBD> <0C>xL<78>\0q3<EFBFBD><01><>ٜ<EFBFBD>\r<EFBFBD><1B>6\0a3<EFBFBD>h<EFBFBD><EFBFBD><EFBFBD> <0C><1B><><EFBFBD>=4<>g<EFBFBD>ҙ<EFBFBD>If<49><66><EFBFBD><EFBFBD><EFBFBD>\0<EFBFBD><01>ϙ<EFBFBD><CF99>I<EFBFBD><1C>\0o4*g<>g<EFBFBD>sMf<4D><66>3<EFBFBD>4<>i <03><><EFBFBD>=<3D>t<EFBFBD>9<EFBFBD>]4<>g<EFBFBD> B&<26>MD<4D><44>3<EFBFBD><01><>9<EFBFBD>:@L<>4<>p<01>9<><39>=&<26>L<EFBFBD><4C>35|i<><69>A<EFBFBD><41><EFBFBD>`<60><>5Jk<<3C>i<EFBFBD><69>?f<>M7<4D>5zk<7A><6B>y<EFBFBD>3\\<EFBFBD>\0001\0m5<EFBFBD>h<EFBFBD><03><><EFBFBD>U<EFBFBD>vM<06><>5<EFBFBD><01><><EFBFBD><EFBFBD><EFBFBD>G<EFBFBD>\0005<EFBFBD><EFBFBD>5<EFBFBD>i` <09>7<><37><EFBFBD>'&<26>5 <01><>I<EFBFBD><49>;\0\0005<EFBFBD> 4~h4<68>Y<EFBFBD>Nf<4E>L<EFBFBD><4C>s3<73>k<EFBFBD><6B>I<EFBFBD>D&<26>M6<4D>q3<71>k<EFBFBD><6B>I<EFBFBD> \r \0c<EFBFBD><EFBFBD>\0<EFBFBD>i,ׄ<13>m<EFBFBD><6D>M{<EFBFBD>)5Fm<46><6D> I<><49>L<EFBFBD><4C><EFBFBD>4~h<>i<><69>l<EFBFBD><6C>M<EFBFBD>\0b\0<EFBFBD>k<EFBFBD><EFBFBD> <09><>F&<26><>r<EFBFBD><72>6fg<66><67>ɜ3?&<26><>8<EFBFBD>c3<63>j<1C>ɧ<EFBFBD>g<EFBFBD><67><EFBFBD><18>|\0<EFBFBD>n\\<EFBFBD><EFBFBD><EFBFBD>S=<3D><>\0006<EFBFBD><EFBFBD>5<EFBFBD>k<EFBFBD><EFBFBD>9<EFBFBD>s`<60><1A><>\0<EFBFBD>\0<EFBFBD> \$<EFBFBD><19>s`<60><>M\0<EFBFBD>7f<><66><EFBFBD>a<EFBFBD>=<3D><1C>4<EFBFBD>=4jjTЂ<54>Suf<75>\0004<EFBFBD><EFBFBD>4 <01><> <09>\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD>9<EFBFBD>76<EFBFBD>g<<3C><><06>{<EFBFBD>\0004\0m6nl<EFBFBD>I<>Afw<66><77><EFBFBD>\r7<EFBFBD>i<EFBFBD>ؙ<EFBFBD><EFBFBD>t&<26><>P<EFBFBD><50>6<EFBFBD>n<EFBFBD><6E>٥SF&<26>M#<23>#76i<36><69>ɤ<EFBFBD>E<EFBFBD>wN28s8Fq<46><71><EFBFBD><06>n' <09><1B>}5<>n<EFBFBD>I<><49>Pf<50>M<EFBFBD><4D>)5o4։<34><D689><0C>t<EFBFBD><1D><>5lL≤<4C>\rfqM<EFBFBD>\0a3<EFBFBD>h<EFBFBD>I<>3f@M<><4D>=4<>j<04>)<29><>WgNl<4E>e4<65><34>t<EFBFBD><74>s<><73><EFBFBD><EFBFBD>\"<EFBFBD><EFBFBD>3<EFBFBD>s<14><>ijf&<26>N\0<EFBFBD><EFBFBD>4Rp y<>3vf<76><66>\0c8Fp<EFBFBD>މʓ@&t<><74>O95*rT<72>٦SRgL<><4C><EFBFBD>8<EFBFBD>tT<74> <09>SK@NN<4E>G4<47>p<EFBFBD><70>Y<EFBFBD><59>C<EFBFBD>)MӜ<4D>3<EFBFBD>jܩ<><DCA9>f<>Ή<EFBFBD>\r6<EFBFBD>t<EFBFBD><EFBFBD> <09><>='L<><4C>q7l<37><6C><EFBFBD>iγgf<67>M<EFBFBD><4D><EFBFBD>3<EFBFBD>s4<73>)<29>3~&<26>NP<4E><50>8:k,<2C><><EFBFBD><EFBFBD>}'ON)<29><>4<EFBFBD><34>t<EFBFBD><19>syf<79><66><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>r<0C>)<29>S<EFBFBD>&|M?<3F>K96r<36><72> <09>s<EFBFBD>g4<67>0<EFBFBD>u6<75>rD<72> <09><><EFBFBD><EFBFBD><EFBFBD>M'<27>}6p<04><><EFBFBD>V<><56><EFBFBD>ٝ<EFBFBD>9l<>Y<> <0C>N<><4E>S9kD<6B> <09>\0000<EFBFBD><EFBFBD>3<EFBFBD>s<EFBFBD>ى<EFBFBD><13>f<EFBFBD>·<EFBFBD>y4<79>x<0C><><EFBFBD><EFBFBD><EFBFBD>f<EFBFBD>M<EFBFBD><4D>!7bsT<73>i<EFBFBD><69>Zf<5A><66><06><>8~ml<6D>9<EFBFBD>3<EFBFBD><33><EFBFBD>Mn<4D><6E><k<><6B><EFBFBD><EFBFBD>ӫ&<26><>[<5B><>;VkL<6B><4C>˓E<CB93>!<21><><EFBFBD>:L:y<0C>y<EFBFBD>S]NMԚv<D49A>\nw|<7C>ٴS<D9B4><53><0B>j<EFBFBD><6A>7<EFBFBD>o<EFBFBD><6F><EFBFBD>ʓ<EFBFBD>'<08><EFBFBD>!7p<><70>9<EFBFBD>3A<33><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><fp<66><70>٩ӯgbN<62><4E>np<6E>k<EFBFBD><6B>)<29>ӿ<EFBFBD><D3BF><EFBFBD><15><>6&w<>g<EFBFBD><67>d&<26>Ε<EFBFBD><CE95>9jgt<67><19>s<EFBFBD><73>FND<4E>35.{<EFBFBD>ѹ<EFBFBD><EFBFBD><18><>MF<4D><46>6\"pt<EFBFBD><EFBFBD><EFBFBD>ӭg\0<EFBFBD>-<2D>/:<3A>|<<3C>9<EFBFBD><39><EFBFBD>f<EFBFBD>N<EFBFBD><4E><EFBFBD>>h<><68> <09><>N&<26><>[<5B><>=<3D>w<<3C>魳<EFBFBD>gwO<07>C=<3D>k<0C>y<EFBFBD>SR&<26>M<EFBFBD><4D>y=&z<><7A>9<EFBFBD>S<EFBFBD>@<1C><EFBFBD><7F>=^lD<6C><44><EFBFBD>Ӏ<EFBFBD>?Nh<4E>?><3E>q<1C>y<EFBFBD>3b&<26>͢<EFBFBD>9h,<2C>y<EFBFBD>s<EFBFBD><73>ϒ<>!9~viÙ<69>sC<73><1A>d<EFBFBD><64>9<EFBFBD>u<14>9<EFBFBD>s<EFBFBD>f<EFBFBD><66><EFBFBD><EFBFBD>c=<3D>v<EFBFBD><76><EFBFBD><EFBFBD><13><><EFBFBD>O=<3D>q6<71>s<EFBFBD><73>y<EFBFBD>S<EFBFBD>&<26><><1E><>;^u<0C><><EFBFBD><EFBFBD><EFBFBD>&<26><>䚣9<E49AA3>lL<6C><4C><EFBFBD><13>'<27>M\$<EFBFBD><EFBFBD>6fp4깱ӝ'|γ<><CEB3>6<EFBFBD>iӉ<>3L<33>p<EFBFBD><70><EFBFBD>W3<57>vl<76><6C><EFBFBD>s?g<><EFBFBD><CE82>9<EFBFBD>g<04><><EFBFBD><13><><EFBFBD>M}<7D><>:M<><4D><EFBFBD>i<EFBFBD><69>ͦ<EFBFBD>ϰ<EFBFBD>_4n~<7E><><EFBFBD><EFBFBD>e<>_<EFBFBD><5F><EFBFBD><EFBFBD>4<EFBFBD>o<EFBFBD><6F>9<EFBFBD>Ӷ'<27>Ί<EFBFBD><CE8A>7<EFBFBD>l|<7C><19><>s<EFBFBD><73>γ<EFBFBD><CEB3>4Zjt홢<74><ED99A2>&<26><EFBFBD><CE83>9<EFBFBD>k<EFBFBD> <09>\0003<EFBFBD><EFBFBD> MC<4D>K<6i<36><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>f<EFBFBD><66>Ϡ<EFBFBD>?<3F>n<EFBFBD><6E><EFBFBD><EFBFBD><EFBFBD>B<EFBFBD>nL<6E><4C><EFBFBD>?<3F>p,<2C>Y<EFBFBD><59>ˏ(PI<50>U7Zid<69><64><EFBFBD>sͧmNܛ<4E>=<3D>mtω<74><CF89><EFBFBD><EFBFBD>5L<35><4C>s3<73><33><EFBFBD>㙳<EFBFBD><0E><>O<EFBFBD><4F>7=<3D>n<EFBFBD><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=N<><4E><EFBFBD>6<EFBFBD>j<EFBFBD>ٹ<EFBFBD><D9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><05><>:T<><54><EFBFBD><EFBFBD><EFBFBD>DçJ<C3A7><4A><EFBFBD>]7i<<3C> dz<>&<26>N~<<3C>?\n<EFBFBD><04><><EFBFBD><EFBFBD><EFBFBD>g No<4E>?<3F>i<EFBFBD><69>S^g<>Nw<4E><77>=g<><67>Yϳ<59>f<EFBFBD>O<<3C><>>h<>䩰<EFBFBD><E4A9B0><EFBFBD>~P<16><>@<40>w<EFBFBD><77>i<EFBFBD><69><EFBFBD>&|M<><4D><EFBFBD>3<EFBFBD>y<EFBFBD>߉<EFBFBD>T&<26>M\$<EFBFBD><EFBFBD>@BvT<76><54>Փw&<26>Nӛ<4E>B\"x4<EFBFBD><EFBFBD><EFBFBD>Sg<EFBFBD><EFBFBD>P7<EFBFBD><EFBFBD>5<EFBFBD>o<14>\r3:'<27><>ڠA<><41>\\<EFBFBD>I<EFBFBD>3C<EFBFBD><EFBFBD><EFBFBD><1E><>B<EFBFBD><42><EFBFBD><EFBFBD> <09><>5'PA\0<EFBFBD>>j}m<04>3M<33><4D><EFBFBD>ڙ<EFBFBD>4<16><><EFBFBD><EFBFBD><EFBFBD>\0<0C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD>{<EFBFBD><EFBFBD>y<EFBFBD><EFBFBD><EFBFBD>h\$MH<EFBFBD><EFBFBD>5<EFBFBD>90<EFBFBD><EFBFBD>f<><66>ٚ<EFBFBD>;<3B>h,<2C>ZS<>h}M+<2B><>6fi\r<04><>T=&<26><><0F>WC<57><<3C>{9<EFBFBD>T'g<>\$<EFBFBD><EFBFBD>L:\$<EFBFBD>Iۓ<EFBFBD>f<EFBFBD>N<13>Bz<42>9!0S<><53><EFBFBD>M<EFBFBD><4D>#;~x<>։<EFBFBD>s<EFBFBD>hQ\n<EFBFBD><EFBFBD>C.sU<0F><>K(3L훪7jn<6A><6E><EFBFBD><EFBFBD>@<40><><EFBFBD>M<1C>8<>p<EFBFBD><70><EFBFBD><EFBFBD>T<05>m<EFBFBD>K<EFBFBD>]4<> \$<EFBFBD><EFBFBD>41h7<68>g<EFBFBD>16Ru<04>y<EFBFBD>3<EFBFBD>fv<66>^<5E>_<*<2A>5<0F>\$<EFBFBD><06>4N<34><4E><EFBFBD>9jg<6A><0B><>S<EFBFBD><53><EFBFBD>͒<EFBFBD>eC<65>n\\<EFBFBD><EFBFBD>\"<EFBFBD>c<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=9<>s<EFBFBD><12>S<><53>P<0E>a3<61>i\$<EFBFBD><EFBFBD>ӳF<EFBFBD>>п<>D<><EFBFBD>ڹ<EFBFBD>t<08><>P!<21>E@&i<> <09>T`f<>х<EFBFBD>5<><35><EFBFBD>**<2A><><EFBFBD>HN˚?=2s<>3<EFBFBD><33><EFBFBD>O<EFBFBD><4F><EFBFBD>>Jn<4A><6E>i<EFBFBD><69><10>M<1F>5>rj4<6A><19>z<><1F>x<EFBFBD><78>3<EFBFBD><33>M<02><><EFBFBD>i'<27>Mb<4D><62>:h=\0I<EFBFBD>44<EFBFBD><EFBFBD><EFBFBD>/<2F><>;d ,<2C><>+<2B><><EFBFBD><EFBFBD>N<07><>F<EFBFBD><46><EFBFBD><EFBFBD><EFBFBD>%t-<2D><>о<EFBFBD><D0BE>5<EFBFBD>|=<14><>Te(<28>No<4E><6F>3<EFBFBD>\n<EFBFBD>=6<>2<EFBFBD>!<21>h<EFBFBD><68>؏<01><><EFBFBD><03><>ܿ}<7D> m<><6D>!<21><19>3ʃ<33>ϸ+6<>8,<2C><>W5Ug,<2C><><EFBFBD>+<2B>v<0C>Xз\n<EFBFBD>G<><47>Sa2<61>~<7E><>1<EFBFBD><31>\0<EFBFBD>45<34>C<10><19>B<08><>ͷ#Cf<43>ԆAr<41>G`<60>+\"<EFBFBD><EFBFBD>A&<26>L<EFBFBD><1A><>h<EFBFBD><68>!<21>eJ<65><4A>p\0:<3A>_+<2B>ݣ\$:Fp<46><70><EFBFBD>Z<02>T\ndl7{<EFBFBD><EFBFBD>@!<12>f<EFBFBD>H<05><><1D><>0<EFBFBD>CdTCH<43><0C>\$\0<07>`X9<07>\$I )<29><>F<EFBFBD>Ԗ<>z<EFBFBD>\r)<29>Ie<49><65><16>\n`a(˅<05><>m<EFBFBD>{<0E>L<EFBFBD><4C>i33<33>j:<3A>Q<EFBFBD>[9<>2<><32><EFBFBD><EFBFBD>r<EFBFBD><72><EFBFBD>`\nE#x94<39><34>;0#j<>Iؑ<49><1C><>q<EFBFBD><71><EFBFBD><EFBFBD><EFBFBD>n<EFBFBD>/ղ<>(p#<>D<EFBFBD>\n<EFBFBD><EFBFBD><01><>~<13><>1<>UN\\<EFBFBD>emI<06>0<EFBFBD><30>F0ci?\n<EFBFBD><EFBFBD>Й\$<EFBFBD><EFBFBD><03>v<EFBFBD>r<EFBFBD>#G<><47>3k<33><12><><EFBFBD>4W8<57>D?]*<2A>S<EFBFBD><53>A<EFBFBD>1<12>j[<5B><15>!<21>C<14>e<EFBFBD><65><EFBFBD>jH<>Z<EFBFBD>of|@!x<><78><EFBFBD><EFBFBD><EFBFBD>9<EFBFBD><39>I*X<>;ayR<79><0F> e<><65>7v^`֡z<D6A1><7A><EFBFBD>*<2A>\"bH`0<><15>j<15><>ܐ<EFBFBD>P<EFBFBD><13>p<EFBFBD>h<EFBFBD><68>0 g<><67>Ε<EFBFBD>o<EFBFBD>C2ϩr<CFA9>O<EFBFBD><4F>JJ<4A>+\$6xll[vZ<><5A>\rh<11>́=<3D>%<25>g<EFBFBD>H<03>s<EFBFBD><11><><EFBFBD><1A><>K\$<01>Ƒh<C691><68><<03>\0~<7E>\"<EFBFBD>-/<06><>،<bK-<2D><1A><04>J<EFBFBD>i<>38\0W-<2D>,0F<30><46><EFBFBD>u<>U\0<EFBFBD><1F>L<EFBFBD>\\:CT<43>Y<EFBFBD>1<EFBFBD>e<EFBFBD><0B><><EFBFBD>&~<7E><>\06<>`<60> <03>c<EFBFBD><63>Et<45><74>3<EFBFBD>f1<07><>K<07>l͛<1D><>l<EFBFBD><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><08>Ny+^b(<28><><EFBFBD><EFBFBD>VZK<5A><4B><EFBFBD>/<2F><><EFBFBD><EFBFBD>I<EFBFBD><49>*R<>L<EFBFBD><4C>J<EFBFBD>S*b(<28>8<EFBFBD><38>/VrDs<44>]<5D>cn<63>dL<64>0<><30>XSkhtRҚ<52>5<EFBFBD>Tۊ<54><DB8A>p`j<>ʐ<EFBFBD>7M<><4D><EFBFBD><07><><EFBFBD>Hh?vxt<78>X <20>c<EFBFBD><63>H<EFBFBD>36*Wt<57>ٺA<D9BA>\0Vʆ<EFBFBD>;<3B><><0E><>ٷ<EFBFBD>?`<60>*<2A><><14><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>g\"<EFBFBD>HA<1C>bPs<50><73>6<<3C>x<EFBFBD>]<5D><>D<EFBFBD>U\0<EFBFBD>J<14>{1<EFBFBD>?p5<70>RM\0<10><>^<5E><<3C>p0<70><30>)\r=<3D>3<1F>D\n<EFBFBD>+<14><>]Z)<29><>u<EFBFBD>z<EFBFBD><7A>xҮ<78>r3<72>f<EFBFBD><15><>><3E><><EFBFBD>!<21><><EFBFBD><EFBFBD>9OXC4<43>},<04><><EFBFBD><EFBFBD>d<EFBFBD>ݜT)<29>2-<2D><>w<12>S,<2C><11><>\\yY<EFBFBD><03>X<EFBFBD>]<5D>M ̍<>B<>M<EFBFBD>ai0&<26><>\n*<2A><><EFBFBD>` <09><>i<EFBFBD>S<EFBFBD><53><EFBFBD>MdL<64>7*}m<><6D><EFBFBD>0B<30>xӸ<78><D3B8>?<3F>K<EFBFBD><4B>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD>H<EFBFBD><48><EFBFBD>@6Z<36> <09>IaMO<4D><14>-XT<04><>x<EFBFBD>P<EFBFBD><50>\r<EFBFBD><04><>%Mj B\r<EFBFBD><EFBFBD>PbeBf?M)8<><38>WD<0E>5\"\n<EFBFBD><EFBFBD><EFBFBD>W<EFBFBD><EFBFBD>bL<><4C>B<>?K<>Rڨ\$<EFBFBD>J<EFBFBD><EFBFBD>C<EFBFBD>V<EFBFBD><EFBFBD>)<29>S<EFBFBD>gy+\n<EFBFBD><EFBFBD><14>G<EFBFBD>f<18><>B<EFBFBD><42>Pe<50><65><<3C>[B\0<EFBFBD><13>B<EFBFBD>(ӌ<>K=<3D>9<04>(<28>Yf<1F><17>E<EFBFBD><0F><><EFBFBD>'<27><>a<EFBFBD><61>\n<EFBFBD>Z<>u<15><10><>g<EFBFBD>Q<EFBFBD><51><EFBFBD>C<EFBFBD><43><EFBFBD><EFBFBD><15>6bo<0B><><EFBFBD>o6<6F><36><15>TN<54><4E>Q\"<EFBFBD>Ж<18><><EFBFBD><EFBFBD>O<><4F><EFBFBD>(:<3A><><EFBFBD><19><>,<2C>\$<EFBFBD>)<29><>n֕\"<EFBFBD>b)m<><6D><EFBFBD><EFBFBD>y*<2A>P<EFBFBD>jM<6A>o<EFBFBD>7\n\"<EFBFBD><EFBFBD>\"<EFBFBD>Ou<1C><><EFBFBD><EFBFBD>`U<><55>J<16><>m*;<3B>\\<EFBFBD><EFBFBD><EFBFBD>5G<EFBFBD>K#<23>C<EFBFBD><19>]O%<25><>':<><7F>)<29>S{<EFBFBD>Bd<><64>=<3D><><18>T<EFBFBD><54>f<EFBFBD><66><EFBFBD><EFBFBD>#ꖰ<>ZTl<54><6C>Q<EFBFBD><51><EFBFBD>/<2F>D<EFBFBD><44>*6)<29>a<EFBFBD><61><EFBFBD>; <09>K<EFBFBD><11>BZ<42>J<><4A><EFBFBD>2<>T<EFBFBD>!j<>ӆe\n<EFBFBD>Z0<EFBFBD><EFBFBD>9<EFBFBD><05><>Fڥ<46><02>B<EFBFBD><42>)\"Ӆchӵ<EFBFBD><EFBFBD>N<EFBFBD>[U)<29>Ҟ<EFBFBD><D29E><EFBFBD>ޠ<EFBFBD>j<><6A>o<EFBFBD>\n<EFBFBD>a<>T<0E><>I<EFBFBD>8U<07>\0<EFBFBD><1B>D&<26>%P(U<>\n<EFBFBD>}B<>iR<><52>hZ<7F><5A>j22 <20>UP<55>><3E>A<EFBFBD>]U<<3C>h<EFBFBD><iKTU<54>An\n<EFBFBD>5A<EFBFBD>W<EFBFBD>J<EFBFBD><EFBFBD>G<EFBFBD><EFBFBD><EFBFBD>M<EFBFBD>Z5K<EFBFBD>&Bj<42>QQt<51>UE6f<36>&<26><><EFBFBD>X<EFBFBD>r<EFBFBD><1D>%S<><13><14><>ӳ<EFBFBD><D3B3>TJ<54>T,:<3A>P<EFBFBD><50>5<EFBFBD>,<2C><14>j<EFBFBD>}T<>oU<<3C><>2 Vx<56>e<EFBFBD>}L<><4C> )uUJ<55><4A>Ȃ<EFBFBD><C882>9:<3A>UV<55><56><EFBFBD><1E><>\n<EFBFBD><EFBFBD>MVzAU# T<><54><EFBFBD><EFBFBD>مEI:<3A>P<EFBFBD>jJ<6A><4A><EFBFBD> <20>%<25>R<><52><EFBFBD>R<19>R<52><7F>V<>W<>[,<2C><><EFBFBD>2(<28>YR<59><52><EFBFBD>X*<2A><>F*WU<1A>`<60>Z<EFBFBD>]!<16><><EFBFBD><EFBFBD>³)<29><>V<15><>K<EFBFBD><4B><EFBFBD>;<3B>6<EFBFBD>T<EFBFBD><54>Ȟ<EFBFBD>&<26>L<EFBFBD>J*bʩ<62><CAA9>J<EFBFBD><16>U<EFBFBD><55>U3j<33><6A>+<2B><>V<EFBFBD><56><EFBFBD>R<EFBFBD><52>t<EFBFBD>*<2A><>օ˒<><CB92>Xڈ<58><DA88><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U<EFBFBD>~<7E>/j<>4<EFBFBD><34>%<25>\$cCS<EFBFBD><EFBFBD>B\n<EFBFBD><EFBFBD><02><>2<EFBFBD><32><EFBFBD>Pʮc<1A><><01><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѩ<EFBFBD>&<26><><EFBFBD><18><03>e<EFBFBD>\0<EFBFBD><EFBFBD><EFBFBD>5]<5D><><EFBFBD>*<2A><><1F>CP<43>WE]zD<7A><44>j<EFBFBD><6A><EFBFBD><EFBFBD><EFBFBD>V1<56><31>[<5B><>j<><6A><18>>Y<>\r^:<3A>t<EFBFBD>!<03>@f<>W<EFBFBD><57><EFBFBD>\n<EFBFBD>0{k\0Bt<EFBFBD>}K<><4B><EFBFBD>SʽU<15><><EFBFBD>^<5E><>+R<>]`j<><6A>O<EFBFBD>{<EFBFBD>`m<>XF<58><46>!<21>@<40>Sa<03>P<EFBFBD>5b<><62>\\<EFBFBD><EFBFBD>,hj<68><6A>v`\rQⰍVܕ<>k<02>*<2A><>Ƣ<EFBFBD><C6A2>!<21><><EFBFBD>Y<EFBFBD><02>i<EFBFBD>U<><55>uY:<3A><><EFBFBD>j<EFBFBD><6A>]<5D>oU֤<55>\n<EFBFBD>A<EFBFBD>\nY<EFBFBD><0E>QY<02><>I<EFBFBD>?0<>*<2A>B(<28>=XF<58>`Z<>l<EFBFBD>jT<6A>P<EFBFBD>WW¥}_:<3A>5<EFBFBD><35>{T<EFBFBD><EFBFBD><EFBFBD>Xꐥ <20>j<EFBFBD><6A>!Ի<><D4BB>T6<54><36>`Z<><5A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><05>Y<1E>| z<>,<2C><><EFBFBD>Ӵ<EFBFBD>Vڬ<><7F>56<35>?<3F><>n \r8<EFBFBD>D&<26><>g<EFBFBD>qC\0i.Β<>!J<><4A><EFBFBD>ؿ/<2F>#f}<7D><><19><><EFBFBD>@\$֒<EFBFBD><EFBFBD>W<0E><><08>Y<EFBFBD><59><EFBFBD><EFBFBD>S<EFBFBD>b<EFBFBD><62><EFBFBD><EFBFBD><EFBFBD>\\<EFBFBD>.<15><>WVd%Xh<02>IV3<56><15>#<23><0F><>1<EFBFBD><31>%` lv<6C>x<EFBFBD>L<EFBFBD><4C> <09><>s&<26><><EFBFBD>kV<6B><56>7<EFBFBD><37><EFBFBD><1B>OO<4F><4F>RU%[<1A>Ma<0C><><EFBFBD>ZRUc<55><63>\\<02>%<25>N<EFBFBD><4E>Zb<5A><62>f<EFBFBD>H<EFBFBD><48>!H<><EFBFBD>x<EFBFBD>/<2F><>*<2A>H<12><>S<EFBFBD><53>4<EFBFBD><34><EFBFBD><11>dZ<><5A>o\0\nm<EFBFBD><EFBFBD>]Q<>h<EFBFBD>U<11>m<>ӌc<14><>s[<5B>Z<EFBFBD><5A><EFBFBD>ޔ<EFBFBD> E3<45>\0<EFBFBD>G<EFBFBD><EFBFBD>8*Nս<4E><D5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[ҏ<>\\<EFBFBD><06>/<2F> \0<EFBFBD><EFBFBD>F<EFBFBD><EFBFBD>I<EFBFBD><EFBFBD>\r<EFBFBD><EFBFBD>̶h5[<15><0C><16>2<EFBFBD>뉴<1F>Y,R<>><3E>cMe<><65>0g<30>%Z+S<><53>><3E><><EFBFBD><EFBFBD><EFBFBD>?\\<EFBFBD><EFBFBD>=m<>Q5<51><19><>b<EFBFBD><62><EFBFBD><18>cDz<44><7A><08>S<04>q<0B><>s<><73>u<EFBFBD>*πB<CF80>@<40>F<EFBFBD>5n6@<10>!қ<>B<EFBFBD><42><EFBFBD>ej*<2A><>vj<76><6A>,<2C><>]:<3A><><05><>u<EFBFBD>*\r<EFBFBD>,b<>+<2B><><EFBFBD>Y<EFBFBD><59><EFBFBD><EFBFBD>+<2B>Е<>]]<5D>5v2>p<><15>T#<23>P<EFBFBD><50><EFBFBD>%<25>du<64>I1d<>NE<4E><45>Vr<56><72><EFBFBD><EFBFBD>[<5B>O<EFBFBD><4F>]<5D><><EFBFBD>u<EFBFBD><75>ݪW]<5D><>M<EFBFBD><4D><EFBFBD>xeh<65>^<5E><>4g<><67>Ĕm<> U<><55>v<EFBFBD><76><EFBFBD><EFBFBD>ł<EFBFBD><C582>yL<><4C><EFBFBD><EFBFBD><EFBFBD>v<EFBFBD> <20>ʱ<EFBFBD><08>V<EFBFBD><56>ڛ1Mi<4D>^<5E><><EFBFBD>2<EFBFBD>\"5<EFBFBD><EFBFBD><EFBFBD>R<EFBFBD><EFBFBD>hǮ<EFBFBD>=-<2D>iU<69>+<2B>ײ#kZB<5A>\r{hK<EFBFBD><EFBFBD>kؖ<EFBFBD>f<EFBFBD><EFBFBD>ƽ<EFBFBD>=<3D><>Llk<6C>R<EFBFBD>f<EFBFBD>_<16><>4&<26><><15><><04><>.<2E><><EFBFBD><<3C>y<EFBFBD><79>k<EFBFBD>TY<54><59>T<EFBFBD>\$m`<60><08><>OV<07>i_r<5F>3]<5D>iMz<4D><7A><EFBFBD>M`<60>Na<4E><61>]VX<56>ir<69><72><EFBFBD>έ`<60><>D<EFBFBD><44><EFBFBD>˘<EFBFBD><01><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>b6ũ<36><C5A9><EFBFBD><EFBFBD>S<EFBFBD>S2<53><32><EFBFBD><EFBFBD><EFBFBD>LlJ<6C>W<EFBFBD>m<EFBFBD><6D>m<EFBFBD><6D>DJ^<5E>Zv<07>\0<EFBFBD>[<5B><>e|m<><6D><EFBFBD>V<EFBFBD><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><1F>b<EFBFBD><06><>Uh?,Q<><51>9ڻ<39><DABB><EFBFBD><EFBFBD><EFBFBD>\"h> <19><>0V5<><35><EFBFBD>1ȰZ<C8B0><12>SD<12><15><><EFBFBD>4<0E>fK<05><>2<EFBFBD>4<>ڛ1<DA9B><31>R<1F><><EFBFBD>9<EFBFBD>\nu<EFBFBD>)<29><><EFBFBD>g<EFBFBD>N<><4E>}<7D>2<EFBFBD><32>_JAx<41>Vl<56><6C><EFBFBD>i<EFBFBD><69>MH<4D><48><EFBFBD>=<3D><>X(<28><>I<EFBFBD>p<EFBFBD><15>)<29><>\$D<EFBFBD>5<EFBFBD>p}<7D>2u0隀AbL֪<4C>I<EFBFBD><49>*<2A><><EFBFBD><EFBFBD><EFBFBD>\0<EFBFBD> <09><>;bZ<62><5A>\n\n<EFBFBD><EFBFBD>@<06><><EFBFBD><EFBFBD>Z<EFBFBD>8Q<38>AIY<49><59><EFBFBD>O<>ã<18>j<0C><>.<11>h6<68>ٷK<10>lE<19>9^<5E><>ň<EFBFBD><C588>̞<EFBFBD> X<>\$<EFBFBD>_r<EFBFBD><EFBFBD>r<EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD>JUكVYo4<6F><34><EFBFBD><07>\0<EFBFBD>N}<7D>*<2A>zk<7A>\0<EFBFBD>\n<EFBFBD>8\0<EFBFBD>]&ăJa<4A>kn<6B>n<EFBFBD>4<EFBFBD>i<EFBFBD>}<7D>m<><6D>MU6<55>b<EFBFBD>U<05><><EFBFBD><EFBFBD><EFBFBD><10><>Ȥ<EFBFBD>m<EFBFBD>ʼ<><1C>D%D)<29><>]<5D>\r](<02>p<08><><EFBFBD><EFBFBD><EFBFBD>ٱ<EFBFBD>^%<25> 5<>DĊ+<2B><><C296>ƛ<EFBFBD>Iґ<0C>X<EFBFBD>Q<EFBFBD><51><EFBFBD>:<3A><>(<28><08><><EFBFBD><EFBFBD>0<EFBFBD>j<1A>FU<46>\0*<2A>TۙB<DB99>Q<EFBFBD><51>H<1D><>&<26>p<EFBFBD><70><18>3<EFBFBD><33><EFBFBD>b<EFBFBD><62><EFBFBD>v@<40><03>SWh4<68>b<EFBFBD><62>7<EFBFBD>X<EFBFBD>*QW<51><57>](?<3F>/<2F><><EFBFBD><EFBFBD>i<EFBFBD>U<EFBFBD><55><EFBFBD> <1A><>k2<6B><14><><EFBFBD>YkAdm<64><6D>2<EFBFBD>)<29><><EFBFBD><0E>As.l<><6C>͒C<CD92><43><EFBFBD><18><>Q<EFBFBD>?c<01><>)<29>)<29>w<EFBFBD><77>ThId]%-9<>DԧX<D4A7><58><EFBFBD><EFBFBD><EFBFBD>a<11><>U<><55>OI\0V<EFBFBD>hת<EFBFBD><EFBFBD>R<><52>S<EFBFBD><53>R+<2B>|<7C>劽<EFBFBD>C<>ؕ<><D895>eL<65>-9<>*<2A>,H+G*vݫYV',\\KS46b<EFBFBD>e<EFBFBD><EFBFBD>cCk,4<>)2V<32><56>c[Γ<1D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ycc<63>_<EFBFBD><5F>ejzvT<76>XX<58>Qi<51>ײ<EFBFBD><D7B2>5z<35>, S<>h<EFBFBD>\\<EFBFBD><EFBFBD><EFBFBD><EFBFBD>V<EFBFBD>6Z<EFBFBD><EFBFBD>B;<3B> <20>荪<EFBFBD><E88DAA><EFBFBD>52<35><32>ٔ<EFBFBD><D994>S*<2A><> <09><><EFBFBD><18>p<EFBFBD>˅<EFBFBD>O<1A>\0<02>*<2A><><EFBFBD><EFBFBD><EFBFBD>Jc9N<39><02><>\0I<EFBFBD><EFBFBD><EFBFBD><01>:<0E>e=5@l<>d\0<EFBFBD>d<EFBFBD><EFBFBD>8<EFBFBD><EFBFBD>0<EFBFBD> ,݁E<DD81>v<EFBFBD><76>=<3D>kM<6B><4D>c<EFBFBD><63><EFBFBD>o2<6F><08>9;+<2B>\n<EFBFBD><EFBFBD>&<16><>N<EFBFBD><4E>(<11>-<2D><>\"<EFBFBD>(\n<EFBFBD>ACr<43><72>c@ʪ<>\0\\MH\$<EFBFBD><19>3<EFBFBD>g<EFBFBD><67><01><>|y]<<3C><>aA<61>+<2B><>Fm<>1͞<31><CD9E><EFBFBD><EFBFBD> <20>\0c\0<EFBFBD>\0<EFBFBD><14><><EFBFBD>@\r<EFBFBD>\n<EFBFBD><EFBFBD><EFBFBD>B\0<EFBFBD> <05><18>C<EFBFBD>P\0a(<28>h<EFBFBD>ɐ<EFBFBD><04>(<28><>|<7C><12>|-ՠɡ6<C9A1><36><EFBFBD>Hh\r<EFBFBD>hH<01><>@><3E><><EFBFBD><1D><>\0mhjBU<EFBFBD><EFBFBD><EFBFBD>V<EFBFBD>-Z\0qh<EFBFBD><EFBFBD>U<EFBFBD><10>@mZ<10>.<04> %<25><>t<EFBFBD><74><EFBFBD>@<40>yhV<68>M<EFBFBD>{@ǃ<>kZ8<5A>]h<><68>m<EFBFBD><6D>Cv<43>m Z<13><>h<EFBFBD><68>5F@<40><>\$͒<EFBFBD><EFBFBD>h.<2E>0{I<EFBFBD><EFBFBD>mZ'<27><>h<EFBFBD><68>5<EFBFBD><35>J<EFBFBD><4A>-\$<EFBFBD>1<EFBFBD><EFBFBD>h<EFBFBD><EFBFBD><EFBFBD><EFBFBD>d<EFBFBD><EFBFBD>0P<>WiN<69><4E><EFBFBD><EFBFBD>d<EFBFBD><64><EFBFBD><19><>Ki<4B><69>}<7D>٬S<D9AC><53>4;<3B><>5<EFBFBD>Ө<05>N<EFBFBD><4E>-<1B>d<EFBFBD><64>i<EFBFBD><69>]<5D><>I<16><>Zy<5A><79>hf<68>e<EFBFBD><65>N<EFBFBD><4E><EFBFBD>D<EFBFBD><0B><>iJ<69>m<EFBFBD>N<><4E><EFBFBD>AZ%<25><>ijԭ<6A><D4AD><EFBFBD><EFBFBD>-<<3C><0B><>h<EFBFBD><68>l<EFBFBD><6C>O<EFBFBD><4F><EFBFBD>\$N<0B>j<><6A>,<2C><>P<EFBFBD><50>m<0B><0B>jf<6A><04><>Q<EFBFBD><51>-P<>#<23>X<18>p]<5D>KU<16>'ژ<>wj<77>k<EFBFBD><6B><EFBFBD>V<EFBFBD><17>=(µ;=\n<EFBFBD><EFBFBD><EFBFBD>[S<><53><EFBFBD>&O<05>Gi<47><69>m<EFBFBD>V<><56>m#ZӴ<<16>}<7D><>M<EFBFBD><4D>mY<6D>ڵ<EFBFBD>jBֵ<42>ථ<>hZ<68>Kj<4B><6A>-<2D>+X6<58>f<EFBFBD><66>˴<EFBFBD>4<EFBFBD><34>=<3D>;^<16><>t<EFBFBD><17><>j<EFBFBD><6A>\r<EFBFBD>i<EFBFBD>6<EFBFBD>&<26>Zy<5A><79>i<EFBFBD><69><1D><>Y<EFBFBD><59>-&Z<><5A><EFBFBD>l<12>]<5D><>_<16><><05><><EFBFBD><EFBFBD>h<EFBFBD>m<7F>;Y<><59>mi[<0C>#?<3F><>]<5D>P<EFBFBD>s<EFBFBD>ml<6D>\0<EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D>Z<17><>k<EFBFBD><6B>E<EFBFBD>{\\<EFBFBD><EFBFBD>f<EFBFBD><EFBFBD>^<5E><>ln<6C>m<EFBFBD><6D>Y<16><><EFBFBD><EFBFBD><07>'l<>t=<3D>)Ֆέ<D596><CEAD>)<29>M5<4D><35>%<25>)<29><>έt[><3E>`yBٕ<0F>i6ĭ\$M<EFBFBD><EFBFBD>mm6~E<><45>c<EFBFBD>ѭ<EFBFBD><D1AD>_<EFBFBD>{l<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i6<EFBFBD>-<2D>;<3B>l><3E><><EFBFBD>;i<><69>g<EFBFBD><67>O<EFBFBD><4F><04><>͵I<CDB5>v<EFBFBD><76><EFBFBD><EFBFBD>_<EFBFBD>m^<5E>D<EFBFBD>;h6ڀ<36><DA80>\\<EFBFBD><EFBFBD>l<EFBFBD><EFBFBD><19><>e<EFBFBD><65>m<EFBFBD>[1<><31>l<EFBFBD><6C>}<7D><>MV<4D>m<EFBFBD>[i<><69>m<EFBFBD><6D>e<EFBFBD>{_<EFBFBD><EFBFBD><EFBFBD>pۄ<EFBFBD><EFBFBD>n2<EFBFBD>-<2D>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=<3D><>i<EFBFBD>,<15>p6<70>m<EFBFBD><6D>\\<EFBFBD>3m<EFBFBD><EFBFBD><EFBFBD>[Z<><5A>- M<><4D><EFBFBD>nfۅ<66>[s6<73><36>-<2D>KlIi\r<EFBFBD>U<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>۳Z/i*<2A><15>I<><49>m<EFBFBD>[<5B><>umr<6D>չv6<76><36><EFBFBD>-L<><4C>i<EFBFBD><69><1D>u<><75>m\r[÷\ro<0E>e<EFBFBD>;j<><6A><EFBFBD><EFBFBD>[˷<>o.<2E><15><>i<16>-<2D><>J<EFBFBD><4A>oh<><68><EFBFBD>{Vͭ<EFBFBD><EFBFBD>T<EFBFBD><EFBFBD>ovލ<EFBFBD><EFBFBD>zv<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD>ov<EFBFBD><EFBFBD>0\r3J<EFBFBD>AMY<>o<EFBFBD>ߍ<EFBFBD>9<EFBFBD>S_<53>,<2C>c<EFBFBD>o5<6F><35>=<3D>i<EFBFBD>w\0M<EFBFBD>Q<1D>l<>w]<5D>r<EFBFBD><72><EFBFBD><EFBFBD><01><><EFBFBD>p4<03><>+<2B>q. <09>F<EFBFBD>+ofݼ<66>;<3B>s<EFBFBD><73>\r<EFBFBD>ʸ3o<EFBFBD><EFBFBD>t<EFBFBD><EFBFBD><EFBFBD>v<EFBFBD>n<0C><><EFBFBD>3o<33><6F>4Ы<34>w-<2D>z<>'3<><33>}<7D>v<>:.<17>\$<EFBFBD>[p<><70>m<6D><C28B>c<EFBFBD><17>,<2C>4<><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD>7<07><>Ma<4D><61>o><3E>tܫ<74>7.<1F>:<3A>3<><33>\r<EFBFBD><EFBFBD><EFBFBD>8<> <09>-<2D><>q<12>,Ӌ<><D38B>-<2D>͙<EFBFBD><CD99>q2<71><32><EFBFBD><EFBFBD><EFBFBD>s?n*<2A>R<EFBFBD>7<0E><><EFBFBD><0B>7.L<><4C><EFBFBD>qr<71>4<EFBFBD>{<EFBFBD>7.3<EFBFBD>b<EFBFBD>4~<7E>M<EFBFBD>k<EFBFBD><6B><0B> <09>N<EFBFBD><4E>q<EFBFBD><71>\\ԫ<EFBFBD><EFBFBD>.<02><><EFBFBD><EFBFBD>q<EFBFBD><71><EFBFBD><EFBFBD>k<EFBFBD>3`<60>><3E>z<EFBFBD><7A><04><><EFBFBD><EFBFBD><0B>6<EFBFBD>-<2D><>JIp<49>j`K<><4B><EFBFBD>(<28>\\<EFBFBD><EFBFBD>r><3E>PK}<7D>&g<>\\<EFBFBD><EFBFBD><EFBFBD>o<EFBFBD><EFBFBD>ͬk<EFBFBD><EFBFBD>'-x<><78>[<<3C>\n<EFBFBD><EFBFBD><EFBFBD>kg7*<2A>:(¸mr<6D><72><EFBFBD><EFBFBD>+<2B>37<33>S\\<EFBFBD><EFBFBD>WnR<EFBFBD><1A><19>v<EFBFBD><76>a[<5B><>h<06>i]<5D><1B><><EFBFBD><EFBFBD>c<EFBFBD><63><EFBFBD>rFg<46><67><0B>3T<33>h\\<EFBFBD><EFBFBD>s6~-<2D>K<EFBFBD><4B><EFBFBD><EFBFBD>H<EFBFBD><06><>rn<72><6E><EFBFBD>;<3B><>(n\\<EFBFBD>&rF<72><46>͋<EFBFBD><CD8B>:<3A>@\\ș<EFBFBD>s<EFBFBD><EFBFBD><05><><EFBFBD><EFBFBD>''\\<EFBFBD><EFBFBD>Cp<EFBFBD><EFBFBD>U<EFBFBD><EFBFBD><EFBFBD><EFBFBD>6&<26>\\<EFBFBD><EFBFBD>as<EFBFBD><EFBFBD>U<EFBFBD>[<5B><>?.y<><02>s9pK<70>0><3E><><EFBFBD>~P蹅t -Чi`<19><><EFBFBD>q<EFBFBD>l<><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><.<2E>ܣ<EFBFBD>-7<><37><EFBFBD><EFBFBD><0B><10><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>q<1A><1D><1B><>AndM]<5D>Cr<43><72><EFBFBD><EFBFBD>;<3B><>.l\\V<EFBFBD>kt<EFBFBD>g\r<EFBFBD><1B>O<>H<EFBFBD>^<5E>kr<6B>i%<25>ۣ<EFBFBD>''A\\<EFBFBD><EFBFBD><EFBFBD>u<1A><><EFBFBD>+<2B>S7<53><37>L<EFBFBD><4C>s4\n<EFBFBD><EFBFBD><EFBFBD>˛<1F><><EFBFBD>8<EFBFBD>uN<75>]<5D>k<EFBFBD>w.nF]S<>h<1A><><EFBFBD><0B>ǔ.<2E><>P<EFBFBD>TyB<79>m {<EFBFBD>3n.<2E><>C(<28>yB<79><42><EFBFBD>{u<EFBFBD>E<EFBFBD>~\\ں<EFBFBD>r<EFBFBD><EFBFBD>\n<EFBFBD><EFBFBD><1F>YnYܮ<59><DCAE>u<EFBFBD><75>]<5D>婔?.EP<45><50><EFBFBD><06><><EFBFBD><EFBFBD><EFBFBD>{w`<60><>M<1C><>v<0E>5<EFBFBD><35>fG.<2E><>̻%u<><75>}<7D>٣<EFBFBD>'<27><>]a<><61>vjhŠ<68>=2<><32>=Yʕ+bY<62>\$<EFBFBD><EFBFBD>lm*<2A>Vh\$I<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\0<12><><EFBFBD><05>YXF<58><46>!<21>9j<><6A><EFBFBD>0*aR<61>=|<7C> A<>@\$<EFBFBD>Md<EFBFBD>YƱL<>3<EFBFBD><33><EFBFBD><EFBFBD>2<EFBFBD>`<60>Ʋ<EFBFBD>,3J<33>І<1A>0<EFBFBD><30>Se<>]bڬ<62><<3C><><EFBFBD>c<>X<EFBFBD><58><EFBFBD>dX<><58>n<EFBFBD><6E><EFBFBD><EFBFBD>b<EFBFBD>ڜ<<1D>\0<EFBFBD><EFBFBD> <09>_<EFBFBD><5F>w<EFBFBD><77><EFBFBD>`J<>\\XVj<56><6A>*Z<1B><>P<EFBFBD><50>5V(<28><>Y<EFBFBD><10>g M+I%<05>aRڬ<52>KZyL<79>k*<2A>g<>[<5B><12>px7Ubjc2<63><32><EFBFBD>GΣcGz<47><7A><EFBFBD>Yc3k<33><6B>Q<EFBFBD><51>m<EFBFBD>Z<EFBFBD><5A><EFBFBD><EFBFBD>tT%hB<68>.<2E><>?<3F><>A<EFBFBD><08>6<EFBFBD><36>LN<><4E>\"Z<EFBFBD>Ui\rBy<EFBFBD>axمM<EFBFBD><EFBFBD>N`<12><><EFBFBD>%gI<15><>G<0B>U<05><>0<1C><><EFBFBD><EFBFBD><13><>+<2B>wqo#0<>e<EFBFBD>wB<77>e<EFBFBD>*<2A>Wuk<75><6B><15>p.<2E><>F<EFBFBD><46><EFBFBD><EFBFBD><EFBFBD>r<EFBFBD><72><EFBFBD>O<><02><><EFBFBD><EFBFBD><EFBFBD>v΅<76>ZlSOj<4F><6A>7X8<58>^\nFT<EFBFBD><EFBFBD> <09><>K<19><><EFBFBD><EFBFBD><EFBFBD>Y<EFBFBD>Ҩ<EFBFBD>a<EFBFBD><61><EFBFBD><EFBFBD>{<EFBFBD>7<EFBFBD>/\n<EFBFBD>c<EFBFBD><EFBFBD>V<EFBFBD><EFBFBD>%o<>R<EFBFBD>~XeTɻ<54>S<12><>)<29>tL<74><4C><EFBFBD>T<12>?+\r<EFBFBD><EFBFBD>)<29>T-[]<5D>{\$GPZ<EFBFBD>u<EFBFBD><EFBFBD>MW<EFBFBD><EFBFBD><EFBFBD>ݩ<EFBFBD>1zv<EFBFBD>]>j<>W<EFBFBD>j<EFBFBD>T4m<34>x<EFBFBD><78><1D>{<EFBFBD>5ko<15>]<5D>]z<><7A><EFBFBD><EFBFBD>Z<EFBFBD>Wm<57><6D><EFBFBD>M<EFBFBD>Kx<4B><78><EFBFBD>\"Dž0j<30>^?<3F>#T<><54>U<EFBFBD>Kɗq<C997>HՂ<48><D582>w<12>m<EFBFBD><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,A<><41>\\<EFBFBD>z<EFBFBD>E<EFBFBD>B<EFBFBD><EFBFBD>V<EFBFBD><EFBFBD>W<EFBFBD><EFBFBD>[^<5E><>-<2D>{<EFBFBD><EFBFBD> Sl<53><6C>n<><6E>X*<2A><17>i<EFBFBD><69>ټ<EFBFBD><D9BC>\n<EFBFBD>,-<2D>Q<EFBFBD><51>j<EFBFBD>U<EFBFBD><55><EFBFBD>V<EFBFBD><56>Ԫr<D4AA><72>L<EFBFBD><4C>B<EFBFBD><42>;<0B>]ZH]<17>*<2A><>ѫY<0B><>=z<><7A>t<EFBFBD>e<EFBFBD><65>ԆR\"<EFBFBD>u<EFBFBD>G<>o<>^<5E>g<06><><EFBFBD><EFBFBD>pz`<60>i<>_<06>L<EFBFBD>ûM*<2A><0C><><EFBFBD>^<5E>k/Nu8[<1F>ÉS<><53>y<><79><EFBFBD>9<EFBFBD>sT<73><54>1<EFBFBD><31>ej<65>]\\=t<><74>2S<32><53>O<12>J<>ˉ+<2B>.\r<EFBFBD>t<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>H<EFBFBD><EFBFBD><EFBFBD>o<02><><EFBFBD><06><>(K<>?&<26><>D<EFBFBD>.%u<><75><EFBFBD><EFBFBD>_<EFBFBD><5F><16>d<EFBFBD><1D><>G<EFBFBD><47>P&<26>d<0E>ׁ<EFBFBD><03>p<EFBFBD><07>C<EFBFBD>z<EFBFBD><7A>%<25>j`x̠<78>Z<>%<25>ΰ/<2F><>=<3D><><EFBFBD><EFBFBD><EFBFBD>1D<31>7ה<16>onΡɸ|<7C>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD>_xs<78>\r\"<EFBFBD><EFBFBD><EFBFBD>Hn<EFBFBD>S<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>l<EFBFBD><13><>x<EFBFBD>W<EFBFBD><1C><><EFBFBD>J<EFBFBD><4A>9<EFBFBD>\"<EFBFBD><EFBFBD><EFBFBD>QC<EFBFBD>!<21><0E><><EFBFBD>~'<27><><EFBFBD><EFBFBD>W<EFBFBD><57>z҅<7A>s C<><43><EFBFBD><EFBFBD>@<18>7d<><64><16><>:S<><53> \\\n<EFBFBD>_D<EFBFBD>[\$y<EFBFBD><EFBFBD><EFBFBD><11><><EFBFBD><EFBFBD>bRH<52>MJX<4A>``<18>1<EFBFBD>]F<><46><EFBFBD>g<EFBFBD><67><EFBFBD> j=I}<7D><>\\1<>P0<50><30>C=߾<>0Q<30>On<><6E><14>+<2B>3&T<><1D><0B>w<EFBFBD>U<EFBFBD>ե<>:L<><4C>6<EFBFBD>w[<5B><>uv<1C>N<EFBFBD>#<23><>d\r<EFBFBD>ֆ=<3D><><EFBFBD><EFBFBD>5<EFBFBD><35>w<>1s<31><73><1P<31>}\n-<2D>cx<11><><EFBFBD><EFBFBD><EFBFBD>J<EFBFBD>O<1F><1B><><EFBFBD><04>+D<1C><>x<1B><01><><EFBFBD><EFBFBD>R<><52><08>3<>\0!<21><><EFBFBD>8<>k<11>#<02><>[@<40>UHߠS<<3C><>@(|7z/<2F><>7cr<63><1C>ֲw<><77><1C><><EFBFBD>o<EFBFBD><6F>V<EFBFBD>c<EFBFBD><63><EFBFBD><EFBFBD><0C><> <09>\\<EFBFBD><EFBFBD><EFBFBD>ۀ<15><><0E>&2;p\"<04><><01>\$<EFBFBD><0B><>:<3A>&<26><12><>\\<08><><EFBFBD>^=C<><43><EFBFBD><EFBFBD>b<>h<EFBFBD><12><><EFBFBD><EFBFBD><EFBFBD>+<2B>A<EFBFBD><41>'l<><0F><>`T<>р\0Pn<06>\0<EFBFBD>`cm1%<25><1B><>nـ<6E><D980>*|<7C><10>_<EFBFBD><5F>lx<1C>6R<36><1C><>n85<38><35>x<1E>_<EFBFBD><5F><EFBFBD>b=<3D><><EFBFBD>#<23>5<EFBFBD>ׄ<EFBFBD><D784><EFBFBD><EFBFBD><EFBFBD>civ|<01>0=<w6<77>8%<25><08>ӏ<EFBFBD>և><3E><><EFBFBD>G&<26><02>K<EFBFBD>[V<><56><03><>646<07>k<>@֧<>r3<72>{<04><>Q<EFBFBD>Wܝ`<60>ӂ~@<40><><EFBFBD><EFBFBD>3<03>:\n<EFBFBD>E<EFBFBD><EFBFBD>6q|<7C><><1C><>:<3A><1D><03><><EFBFBD>\0aE\r<EFBFBD>wT<>4<1A>T<>20b`*0`2<>~<0C>\\<EFBFBD><EFBFBD><EFBFBD>G<EFBFBD><EFBFBD><EFBFBD>P<<3C><0C>e<EFBFBD><65>H<EFBFBD>`ډ<>L<EFBFBD>|l<>=<3D><06><><EFBFBD>0<EFBFBD><30><EFBFBD>&<0E><><EFBFBD>5<EFBFBD>oE<><45><EFBFBD>P<EFBFBD><50><EFBFBD><EFBFBD><EFBFBD>6<><36><EFBFBD><EFBFBD>o <09><><EFBFBD>\0L\0<12><17><>o<><6F>\"<EFBFBD>v<EFBFBD><1F>10`<60><>L6(F<13><03>n<EFBFBD>W<EFBFBD><57>=9<><39>\$<EFBFBD><EFBFBD><19>X7<58><37>T<EFBFBD>q<EFBFBD> (<28><><EFBFBD>0<EFBFBD>.;\\<EFBFBD><04>I<Q<<02>d~r<><72>u<EFBFBD><75>(n<>d<1F><><EFBFBD>o8<01>(d<>%<25><>ƿ<><C6BF>\\6+ <09><> !<21>J<EFBFBD>G\n4<01><>м\0<EFBFBD><EFBFBD>XN<EFBFBD><EFBFBD>; IL9i<39>(<28><><EFBFBD><EFBFBD>H<EFBFBD><13><>L<>s<EFBFBD>\0G<EFBFBD>0<EFBFBD>9:<3A>^<5E><><EFBFBD>\r<EFBFBD>X<EFBFBD><EFBFBD>bv<62><76><EFBFBD><EFBFBD><EFBFBD>xky<6B>/<2F>bF<><46><1E> <09>8Ya<59>XX<58>%e<04>Sc<><63>d<>baq<61><71><EFBFBD>G<0B>`<60><><EFBFBD>ZT<>N<EFBFBD><4E>\n<EFBFBD>}<15>X\\p<EFBFBD><EFBFBD>N<EFBFBD>`f<>|D'<0B>0<EFBFBD><06><>l<EFBFBD>갰<EFBFBD><18><>qɛ<71><C99B>u<EFBFBD><75>IR<49><52>@<40><><EFBFBD>fa<66>a<EFBFBD>u<><75>\0<EFBFBD>?<3F>3a<16>1;<3B><> <0F>\r!><3E>3jNn<4E><6E><EFBFBD><1B><>k<>W<>C<EFBFBD><43>Dp<>~c\rN<18><0E><1E><><EFBFBD>o<EFBFBD><03><>\"<EFBFBD>ƹ2]<5D><>Iv;%<25>*V<>N<>̿Z<><5A><14><>\r`<60>/5<>\$<EFBFBD><EFBFBD>à<EFBFBD>o<0E><>\\9<EFBFBD>9A\n`<60><><13><1A><>{<EFBFBD><EFBFBD>:ˀv<CB80>@<40><>\\:X<>`ְ<><D6B0>F<EFBFBD><46>ϲK,=<3D>J <1B><><EFBFBD><EFBFBD>\0<EFBFBD>L<04><10>~T<><54>uR<>S<0F>R<>xT<>EO/<2F><16>V<1F>(<28><>0<EFBFBD><30>f!<21><><EFBFBD>\n0<11>)6oDWʼn{)<29>P<EFBFBD><50>8<>ˇd<CB87><64>8V4t<> <20><>9a|<7C>XYсP<>P:<3A><>L<EFBFBD><4C><EFBFBD><01><>Eg<45><06>\"<EFBFBD><EFBFBD>@<40><>L?<3F>]h<11><1C><>g=lW<6C>/<2F><><EFBFBD>L<EFBFBD><4C>0\$h@܈<>W<EFBFBD>찼<02><><10><><14><>\0s;zF<7A><46> C<><18><>M\0SLm<EFBFBD>I%<25>%B<><18>@2<>I<EFBFBD><49><EFBFBD>8<EFBFBD>H<><48>'oQ<6F><51><EFBFBD>L\nh<EFBFBD><EFBFBD>i<EFBFBD>#8<><38>@<40>Z<EFBFBD>UG<55>~<7E>%<25>DR|<7C><><EFBFBD><03>!<21><14><>)P*<2A>C<EFBFBD><43><EFBFBD>A<EFBFBD>@\rj]<5D><>w<16><><EFBFBD>+<2B>n*<2A><>@<40>ÐkIa<49><61>(ap܉<><DC89><EFBFBD>/<2F>U<><55>8");}elseif($_GET["file"]=="logo.png"){header("Content-Type: image/png");echo"<EFBFBD>PNG\r\n\n\0\0\0\rIHDR\0\0\09\0\0\09\0\0\0~6<><36>\0\0\0000PLTE\0\0\0<EFBFBD><EFBFBD><EFBFBD>+NvYt<59>s<EFBFBD><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>su<73>IJ<49><4A><EFBFBD><EFBFBD>/.<2E><07><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>C<04><>\0\0\0tRNS\0@<40><>f\0\0\0 pHYs\0\0\0\0\0<EFBFBD><EFBFBD>\0\0<01>IDAT8<54>Ք<EFBFBD>N<EFBFBD>@<10><>E<><45>l϶<><01>p6<1A>G.\$=<12><><EFBFBD>><3E><> w5r}<7D>z7<7A>><3E><>P<13>#\$<EFBFBD><EFBFBD>K<EFBFBD>j<EFBFBD>7<EFBFBD><EFBFBD>ݶ<><DDB6><EFBFBD><EFBFBD>?4m<34><6D><EFBFBD><EFBFBD><EFBFBD>t&<26>~<7E>3!0<>0<EFBFBD><30>^<5E><>Af0<66>\"<EFBFBD><EFBFBD><11>,<2C><>*<2A><>4<EFBFBD><34><EFBFBD>o<EFBFBD>E<EFBFBD><45><08><>X(*Y<><59><EFBFBD><EFBFBD> 6 <09>PcOW<4F><15><>܊m<DC8A><6D>r<EFBFBD>0<EFBFBD>~/<2F><>L<EFBFBD>\rXj#<23>m<><6D><EFBFBD>j<EFBFBD>C<EFBFBD>]G<>m<EFBFBD>\0<EFBFBD>}<16><><04>ߑu<DF91>A9<41>X<EFBFBD>\n<EFBFBD><EFBFBD>8<EFBFBD>V<EFBFBD>Y<>+<2B>D#<23>iq<69>nKQ8J<38>1Q6<11><>Y0<59>`<60><1D>P<EFBFBD>bQ<>\\h<>~><3E>:pSɀ<1D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>GE<47>Q=<3D>I<EFBFBD>{<EFBFBD>*<2A>3<>2<EFBFBD>7<EFBFBD>\ne<>L<>B<EFBFBD>~<7E>/R(\$<EFBFBD>)<29><><EFBFBD> <20><>HQn<51>i<EFBFBD>6J<> <<3C><>-.<2E>w<EFBFBD>ɪj<C9AA>Vm<56><6D><EFBFBD>m<EFBFBD>?S<>H<EFBFBD><48>v<EFBFBD><76><EFBFBD><EFBFBD>Ʃ<EFBFBD><C6A9>\0<EFBFBD><EFBFBD>^<5E>q<EFBFBD><1B>)<29><0F><>]<5D><>U<>92<39>,;<3B>Ǎ<17>'p<><70><EFBFBD>!X˃<58><CB83><EFBFBD><EFBFBD>L<EFBFBD>D.<2E>tæ<74><C3A6>/w<14><><EFBFBD><EFBFBD>R<><1B> w<>d<EFBFBD><64>r2<72>Ƥ<EFBFBD>4[=<3D>E5<45>S+<2B><>c\0\0\0\0IEND<EFBFBD>B`<60>";}exit;}if($_GET["script"]=="version"){$o=get_temp_dir()."/adminer.version";@unlink($o);$q=file_open_lock($o);if($q)file_write_unlock($q,serialize(array("signature"=>$_POST["signature"],"version"=>$_POST["version"])));exit;}if(!$_SERVER["REQUEST_URI"])$_SERVER["REQUEST_URI"]=$_SERVER["ORIG_PATH_INFO"];if(!strpos($_SERVER["REQUEST_URI"],'?')&&$_SERVER["QUERY_STRING"]!="")$_SERVER["REQUEST_URI"].="?$_SERVER[QUERY_STRING]";if($_SERVER["HTTP_X_FORWARDED_PREFIX"])$_SERVER["REQUEST_URI"]=$_SERVER["HTTP_X_FORWARDED_PREFIX"].$_SERVER["REQUEST_URI"];define('Adminer\HTTPS',($_SERVER["HTTPS"]&&strcasecmp($_SERVER["HTTPS"],"off"))||ini_bool("session.cookie_secure"));@ini_set("session.use_trans_sid",'0');if(!defined("SID")){session_cache_limiter("");session_name("adminer_sid");session_set_cookie_params(0,preg_replace('~\?.*~','',$_SERVER["REQUEST_URI"]),"",HTTPS,true);session_start();}remove_slashes(array(&$_GET,&$_POST,&$_COOKIE),$Wc);if(function_exists("get_magic_quotes_runtime")&&get_magic_quotes_runtime())set_magic_quotes_runtime(false);@set_time_limit(0);@ini_set("precision",'15');function
|
||
lang($u,$sf=null){$ua=func_get_args();$ua[0]=$u;return
|
||
call_user_func_array('Adminer\lang_format',$ua);}function
|
||
lang_format($Gi,$sf=null){if(is_array($Gi)){$tg=($sf==1?0:1);$Gi=$Gi[$tg];}$Gi=str_replace("'",'’',$Gi);$ua=func_get_args();array_shift($ua);$id=str_replace("%d","%s",$Gi);if($id!=$Gi)$ua[0]=format_number($sf);return
|
||
vsprintf($id,$ua);}define('Adminer\LANG','en');abstract
|
||
class
|
||
SqlDb{static$ee;var$extension;var$flavor='';var$server_info;var$affected_rows=0;var$info='';var$errno=0;var$error='';protected$multi;abstract
|
||
function
|
||
attach($N,$V,$F);abstract
|
||
function
|
||
quote($Q);abstract
|
||
function
|
||
select_db($Kb);abstract
|
||
function
|
||
query($H,$Ri=false);function
|
||
multi_query($H){return$this->multi=$this->query($H);}function
|
||
store_result(){return$this->multi;}function
|
||
next_result(){return
|
||
false;}}if(extension_loaded('pdo')){abstract
|
||
class
|
||
PdoDb
|
||
extends
|
||
SqlDb{protected$pdo;function
|
||
dsn($jc,$V,$F,array$Jf=array()){$Jf[\PDO::ATTR_ERRMODE]=\PDO::ERRMODE_SILENT;$Jf[\PDO::ATTR_STATEMENT_CLASS]=array('Adminer\PdoResult');try{$this->pdo=new
|
||
\PDO($jc,$V,$F,$Jf);}catch(\Exception$Ec){return$Ec->getMessage();}$this->server_info=@$this->pdo->getAttribute(\PDO::ATTR_SERVER_VERSION);return'';}function
|
||
quote($Q){return$this->pdo->quote($Q);}function
|
||
query($H,$Ri=false){$I=$this->pdo->query($H);$this->error="";if(!$I){list(,$this->errno,$this->error)=$this->pdo->errorInfo();if(!$this->error)$this->error='Unknown error.';return
|
||
false;}$this->store_result($I);return$I;}function
|
||
store_result($I=null){if(!$I){$I=$this->multi;if(!$I)return
|
||
false;}if($I->columnCount()){$I->num_rows=$I->rowCount();return$I;}$this->affected_rows=$I->rowCount();return
|
||
true;}function
|
||
next_result(){$I=$this->multi;if(!is_object($I))return
|
||
false;$I->_offset=0;return@$I->nextRowset();}}class
|
||
PdoResult
|
||
extends
|
||
\PDOStatement{var$_offset=0,$num_rows;function
|
||
fetch_assoc(){return$this->fetch(\PDO::FETCH_ASSOC);}function
|
||
fetch_row(){return$this->fetch(\PDO::FETCH_NUM);}function
|
||
fetch_field(){$K=(object)$this->getColumnMeta($this->_offset++);$U=$K->pdo_type;$K->type=($U==\PDO::PARAM_INT?0:15);$K->charsetnr=($U==\PDO::PARAM_LOB||(isset($K->flags)&&in_array("blob",(array)$K->flags))?63:0);return$K;}function
|
||
seek($D){for($s=0;$s<$D;$s++)$this->fetch();}}}function
|
||
add_driver($t,$C){SqlDriver::$dc[$t]=$C;}function
|
||
get_driver($t){return
|
||
SqlDriver::$dc[$t];}abstract
|
||
class
|
||
SqlDriver{static$ee;static$dc=array();static$Mc=array();static$oe;protected$conn;protected$types=array();var$insertFunctions=array();var$editFunctions=array();var$unsigned=array();var$operators=array();var$functions=array();var$grouping=array();var$onActions="RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT";var$inout="IN|OUT|INOUT";var$enumLength="'(?:''|[^'\\\\]|\\\\.)*'";var$generated=array();static
|
||
function
|
||
connect($N,$V,$F){$f=new
|
||
Db;return($f->attach($N,$V,$F)?:$f);}function
|
||
__construct(Db$f){$this->conn=$f;}function
|
||
types(){return
|
||
call_user_func_array('array_merge',array_values($this->types));}function
|
||
structuredTypes(){return
|
||
array_map('array_keys',$this->types);}function
|
||
enumLength(array$m){}function
|
||
unconvertFunction(array$m){}function
|
||
select($R,array$M,array$Z,array$sd,array$Lf=array(),$z=1,$E=0,$Ag=false){$je=(count($sd)<count($M));$H=adminer()->selectQueryBuild($M,$Z,$sd,$Lf,$z,$E);if(!$H)$H="SELECT".limit(($_GET["page"]!="last"&&$z&&$sd&&$je&&JUSH=="sql"?"SQL_CALC_FOUND_ROWS ":"").implode(", ",$M)."\nFROM ".table($R),($Z?"\nWHERE ".implode(" AND ",$Z):"").($sd&&$je?"\nGROUP BY ".implode(", ",$sd):"").($Lf?"\nORDER BY ".implode(", ",$Lf):""),$z,($E?$z*$E:0),"\n");$Rh=microtime(true);$J=$this->conn->query($H);if($Ag)echo
|
||
adminer()->selectQuery($H,$Rh,!$J);return$J;}function
|
||
delete($R,$Jg,$z=0){$H="FROM ".table($R);return
|
||
queries("DELETE".($z?limit1($R,$H,$Jg):" $H$Jg"));}function
|
||
update($R,array$O,$Jg,$z=0,$vh="\n"){$kj=array();foreach($O
|
||
as$x=>$X)$kj[]="$x = $X";$H=table($R)." SET$vh".implode(",$vh",$kj);return
|
||
queries("UPDATE".($z?limit1($R,$H,$Jg,$vh):" $H$Jg"));}function
|
||
insert($R,array$O){return
|
||
queries("INSERT INTO ".table($R).($O?" (".implode(", ",array_keys($O)).")\nVALUES (".implode(", ",$O).")":" DEFAULT VALUES").$this->insertReturning($R));}function
|
||
insertReturning($R){return"";}function
|
||
insertUpdate($R,array$L,array$G){return
|
||
false;}function
|
||
begin(){return
|
||
queries("BEGIN");}function
|
||
commit(){return
|
||
queries("COMMIT");}function
|
||
rollback(){return
|
||
queries("ROLLBACK");}function
|
||
slowQuery($H,$ui){}function
|
||
convertSearch($u,array$X,array$m){return$u;}function
|
||
convertOperator($Ff){return$Ff;}function
|
||
value($X,array$m){return(method_exists($this->conn,'value')?$this->conn->value($X,$m):(is_resource($X)?stream_get_contents($X):$X));}function
|
||
quoteBinary($ih){return
|
||
q($ih);}function
|
||
warnings(){}function
|
||
tableHelp($C,$me=false){}function
|
||
hasCStyleEscapes(){return
|
||
false;}function
|
||
engines(){return
|
||
array();}function
|
||
supportsIndex(array$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'",$this->conn);}function
|
||
allFields(){$J=array();foreach(get_rows("SELECT TABLE_NAME AS tab, COLUMN_NAME AS field, IS_NULLABLE AS nullable, DATA_TYPE AS type, CHARACTER_MAXIMUM_LENGTH AS length".(JUSH=='sql'?", COLUMN_KEY = 'PRI' AS `primary`":"")."
|
||
FROM INFORMATION_SCHEMA.COLUMNS
|
||
WHERE TABLE_SCHEMA = ".q($_GET["ns"]!=""?$_GET["ns"]:DB)."
|
||
ORDER BY TABLE_NAME, ORDINAL_POSITION",$this->conn)as$K){$K["null"]=($K["nullable"]=="YES");$J[$K["tab"]][]=$K;}return$J;}}add_driver("sqlite","SQLite");if(isset($_GET["sqlite"])){define('Adminer\DRIVER',"sqlite");if(class_exists("SQLite3")&&$_GET["ext"]!="pdo"){abstract
|
||
class
|
||
SqliteDb
|
||
extends
|
||
SqlDb{var$extension="SQLite3";private$link;function
|
||
attach($o,$V,$F){$this->link=new
|
||
\SQLite3($o);$nj=$this->link->version();$this->server_info=$nj["versionString"];return'';}function
|
||
query($H,$Ri=false){$I=@$this->link->query($H);$this->error="";if(!$I){$this->errno=$this->link->lastErrorCode();$this->error=$this->link->lastErrorMsg();return
|
||
false;}elseif($I->numColumns())return
|
||
new
|
||
Result($I);$this->affected_rows=$this->link->changes();return
|
||
true;}function
|
||
quote($Q){return(is_utf8($Q)?"'".$this->link->escapeString($Q)."'":"x'".first(unpack('H*',$Q))."'");}}class
|
||
Result{var$num_rows;private$result,$offset=0;function
|
||
__construct($I){$this->result=$I;}function
|
||
fetch_assoc(){return$this->result->fetchArray(SQLITE3_ASSOC);}function
|
||
fetch_row(){return$this->result->fetchArray(SQLITE3_NUM);}function
|
||
fetch_field(){$d=$this->offset++;$U=$this->result->columnType($d);return(object)array("name"=>$this->result->columnName($d),"type"=>($U==SQLITE3_TEXT?15:0),"charsetnr"=>($U==SQLITE3_BLOB?63:0),);}function
|
||
__destruct(){$this->result->finalize();}}}elseif(extension_loaded("pdo_sqlite")){abstract
|
||
class
|
||
SqliteDb
|
||
extends
|
||
PdoDb{var$extension="PDO_SQLite";function
|
||
attach($o,$V,$F){$this->dsn(DRIVER.":$o","","");$this->query("PRAGMA foreign_keys = 1");$this->query("PRAGMA busy_timeout = 500");return'';}}}if(class_exists('Adminer\SqliteDb')){class
|
||
Db
|
||
extends
|
||
SqliteDb{function
|
||
attach($o,$V,$F){parent::attach($o,$V,$F);$this->query("PRAGMA foreign_keys = 1");$this->query("PRAGMA busy_timeout = 500");return'';}function
|
||
select_db($o){if(is_readable($o)&&$this->query("ATTACH ".$this->quote(preg_match("~(^[/\\\\]|:)~",$o)?$o:dirname($_SERVER["SCRIPT_FILENAME"])."/$o")." AS a"))return!self::attach($o,'','');return
|
||
false;}}}class
|
||
Driver
|
||
extends
|
||
SqlDriver{static$Mc=array("SQLite3","PDO_SQLite");static$oe="sqlite";protected$types=array(array("integer"=>0,"real"=>0,"numeric"=>0,"text"=>0,"blob"=>0));var$insertFunctions=array();var$editFunctions=array("integer|real|numeric"=>"+/-","text"=>"||",);var$operators=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL","SQL");var$functions=array("hex","length","lower","round","unixepoch","upper");var$grouping=array("avg","count","count distinct","group_concat","max","min","sum");static
|
||
function
|
||
connect($N,$V,$F){if($F!="")return'Database does not support password.';return
|
||
parent::connect(":memory:","","");}function
|
||
__construct(Db$f){parent::__construct($f);if(min_version(3.31,0,$f))$this->generated=array("STORED","VIRTUAL");}function
|
||
structuredTypes(){return
|
||
array_keys($this->types[0]);}function
|
||
insertUpdate($R,array$L,array$G){$kj=array();foreach($L
|
||
as$O)$kj[]="(".implode(", ",$O).")";return
|
||
queries("REPLACE INTO ".table($R)." (".implode(", ",array_keys(reset($L))).") VALUES\n".implode(",\n",$kj));}function
|
||
tableHelp($C,$me=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))*) *\))~',get_val("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".q($R),0,$this->conn),$Le);return
|
||
array_combine($Le[2],$Le[2]);}function
|
||
allFields(){$J=array();foreach(tables_list()as$R=>$U){foreach(fields($R)as$m)$J[$R][]=$m;}return$J;}}function
|
||
idf_escape($u){return'"'.str_replace('"','""',$u).'"';}function
|
||
table($u){return
|
||
idf_escape($u);}function
|
||
get_databases($dd){return
|
||
array();}function
|
||
limit($H,$Z,$z,$D=0,$vh=" "){return" $H$Z".($z?$vh."LIMIT $z".($D?" OFFSET $D":""):"");}function
|
||
limit1($R,$H,$Z,$vh="\n"){return(preg_match('~^INTO~',$H)||get_val("SELECT sqlite_compileoption_used('ENABLE_UPDATE_DELETE_LIMIT')")?limit($H,$Z,1,0,$vh):" $H WHERE rowid = (SELECT rowid FROM ".table($R).$Z.$vh."LIMIT 1)");}function
|
||
db_collation($j,$hb){return
|
||
get_val("PRAGMA encoding");}function
|
||
logged_user(){return
|
||
get_current_user();}function
|
||
tables_list(){return
|
||
get_key_vals("SELECT name, type FROM sqlite_master WHERE type IN ('table', 'view') ORDER BY (name = 'sqlite_sequence'), name");}function
|
||
count_tables($i){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".($C!=""?" WHERE name = ".q($C):""),null,"")as$K)$J[$K["name"]]["Auto_increment"]=$K["seq"];return$J;}function
|
||
is_view($S){return$S["Engine"]=="view";}function
|
||
fk_support($S){return!get_val("SELECT sqlite_compileoption_used('OMIT_FOREIGN_KEY')");}function
|
||
fields($R){$J=array();$G="";foreach(get_rows("PRAGMA table_".(min_version(3.31)?"x":"")."info(".table($R).")")as$K){$C=$K["name"];$U=strtolower($K["type"]);$k=$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("~^'(.*)'$~",$k,$B)?str_replace("''","'",$B[1]):($k=="NULL"?null:$k)),"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;}}$Lh=get_val("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".q($R));$u='(("[^"]*+")+|[a-z0-9_]+)';preg_match_all('~'.$u.'\s+text\s+COLLATE\s+(\'[^\']+\'|\S+)~i',$Lh,$Le,PREG_SET_ORDER);foreach($Le
|
||
as$B){$C=str_replace('""','"',preg_replace('~^"|"$~','',$B[1]));if($J[$C])$J[$C]["collation"]=trim($B[3],"'");}preg_match_all('~'.$u.'\s.*GENERATED ALWAYS AS \((.+)\) (STORED|VIRTUAL)~i',$Lh,$Le,PREG_SET_ORDER);foreach($Le
|
||
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,$g=null){$g=connection($g);$J=array();$Lh=get_val("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".q($R),0,$g);if(preg_match('~\bPRIMARY\s+KEY\s*\((([^)"]+|"[^"]*"|`[^`]*`)++)~i',$Lh,$B)){$J[""]=array("type"=>"PRIMARY","columns"=>array(),"lengths"=>array(),"descs"=>array());preg_match_all('~((("[^"]*+")+|(?:`[^`]*+`)+)|(\S+))(\s+(ASC|DESC))?(,\s*|$)~i',$B[1],$Le,PREG_SET_ORDER);foreach($Le
|
||
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=>$m){if($m["primary"])$J[""]=array("type"=>"PRIMARY","columns"=>array($C),"lengths"=>array(),"descs"=>array(null));}}$Ph=get_key_vals("SELECT name, sql FROM sqlite_master WHERE type = 'index' AND tbl_name = ".q($R),$g);foreach(get_rows("PRAGMA index_list(".table($R).")",$g)as$K){$C=$K["name"];$v=array("type"=>($K["unique"]?"UNIQUE":"INDEX"));$v["lengths"]=array();$v["descs"]=array();foreach(get_rows("PRAGMA index_info(".idf_escape($C).")",$g)as$hh){$v["columns"][]=$hh["name"];$v["descs"][]=null;}if(preg_match('~^CREATE( UNIQUE)? INDEX '.preg_quote(idf_escape($C).' ON '.idf_escape($R),'~').' \((.*)\)$~i',$Ph[$C],$Ug)){preg_match_all('/("[^"]*+")+( DESC)?/',$Ug[2],$Le);foreach($Le[2]as$x=>$X){if($X)$v["descs"][$x]='1';}}if(!$J[""]||$v["type"]!="UNIQUE"||$v["columns"]!=$J[""]["columns"]||$v["descs"]!=$J[""]["descs"]||!preg_match("~^sqlite_~",$C))$J[$C]=$v;}return$J;}function
|
||
foreign_keys($R){$J=array();foreach(get_rows("PRAGMA foreign_key_list(".table($R).")")as$K){$p=&$J[$K["id"]];if(!$p)$p=$K;$p["source"][]=$K["from"];$p["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($j){return
|
||
false;}function
|
||
error(){return
|
||
h(connection()->error);}function
|
||
check_sqlite_name($C){$Mc="db|sdb|sqlite";if(!preg_match("~^[^\\0]*\\.($Mc)\$~",$C)){connection()->error=sprintf('Please use one of the extensions %s.',str_replace("|",", ",$Mc));return
|
||
false;}return
|
||
true;}function
|
||
create_database($j,$c){if(file_exists($j)){connection()->error='File exists.';return
|
||
false;}if(!check_sqlite_name($j))return
|
||
false;try{$_=new
|
||
Db();$_->attach($j,'','');}catch(\Exception$Ec){connection()->error=$Ec->getMessage();return
|
||
false;}$_->query('PRAGMA encoding = "UTF-8"');$_->query('CREATE TABLE adminer (i)');$_->query('DROP TABLE adminer');return
|
||
true;}function
|
||
drop_databases($i){connection()->attach(":memory:",'','');foreach($i
|
||
as$j){if(!@unlink($j)){connection()->error='File exists.';return
|
||
false;}}return
|
||
true;}function
|
||
rename_database($C,$c){if(!check_sqlite_name($C))return
|
||
false;connection()->attach(":memory:",'','');connection()->error='File exists.';return@rename(DB,$C);}function
|
||
auto_increment(){return" PRIMARY KEY AUTOINCREMENT";}function
|
||
alter_table($R,$C,$n,$fd,$mb,$uc,$c,$_a,$ig){$dj=($R==""||$fd);foreach($n
|
||
as$m){if($m[0]!=""||!$m[1]||$m[2]){$dj=true;break;}}$b=array();$Wf=array();foreach($n
|
||
as$m){if($m[1]){$b[]=($dj?$m[1]:"ADD ".implode($m[1]));if($m[0]!="")$Wf[$m[0]]=$m[1][0];}}if(!$dj){foreach($b
|
||
as$X){if(!queries("ALTER TABLE ".table($R)." $X"))return
|
||
false;}if($R!=$C&&!queries("ALTER TABLE ".table($R)." RENAME TO ".table($C)))return
|
||
false;}elseif(!recreate_table($R,$C,$b,$Wf,$fd,$_a))return
|
||
false;if($_a){queries("BEGIN");queries("UPDATE sqlite_sequence SET seq = $_a WHERE name = ".q($C));if(!connection()->affected_rows)queries("INSERT INTO sqlite_sequence (name, seq) VALUES (".q($C).", $_a)");queries("COMMIT");}return
|
||
true;}function
|
||
recreate_table($R,$C,array$n,array$Wf,array$fd,$_a="",$w=array(),$fc="",$ja=""){if($R!=""){if(!$n){foreach(fields($R)as$x=>$m){if($w)$m["auto_increment"]=0;$n[]=process_field($m,$m);$Wf[$x]=idf_escape($x);}}$_g=false;foreach($n
|
||
as$m){if($m[6])$_g=true;}$hc=array();foreach($w
|
||
as$x=>$X){if($X[2]=="DROP"){$hc[$X[1]]=true;unset($w[$x]);}}foreach(indexes($R)as$qe=>$v){$e=array();foreach($v["columns"]as$x=>$d){if(!$Wf[$d])continue
|
||
2;$e[]=$Wf[$d].($v["descs"][$x]?" DESC":"");}if(!$hc[$qe]){if($v["type"]!="PRIMARY"||!$_g)$w[]=array($v["type"],$qe,$e);}}foreach($w
|
||
as$x=>$X){if($X[0]=="PRIMARY"){unset($w[$x]);$fd[]=" PRIMARY KEY (".implode(", ",$X[2]).")";}}foreach(foreign_keys($R)as$qe=>$p){foreach($p["source"]as$x=>$d){if(!$Wf[$d])continue
|
||
2;$p["source"][$x]=idf_unescape($Wf[$d]);}if(!isset($fd[" $qe"]))$fd[]=" ".format_foreign_key($p);}queries("BEGIN");}$Ta=array();foreach($n
|
||
as$m){if(preg_match('~GENERATED~',$m[3]))unset($Wf[array_search($m[0],$Wf)]);$Ta[]=" ".implode($m);}$Ta=array_merge($Ta,array_filter($fd));foreach(driver()->checkConstraints($R)as$Va){if($Va!=$fc)$Ta[]=" CHECK ($Va)";}if($ja)$Ta[]=" CHECK ($ja)";$oi=($R==$C?"adminer_$C":$C);if(!queries("CREATE TABLE ".table($oi)." (\n".implode(",\n",$Ta)."\n)"))return
|
||
false;if($R!=""){if($Wf&&!queries("INSERT INTO ".table($oi)." (".implode(", ",$Wf).") SELECT ".implode(", ",array_map('Adminer\idf_escape',array_keys($Wf)))." FROM ".table($R)))return
|
||
false;$Ni=array();foreach(triggers($R)as$Li=>$vi){$Ki=trigger($Li,$R);$Ni[]="CREATE TRIGGER ".idf_escape($Li)." ".implode(" ",$vi)." ON ".table($C)."\n$Ki[Statement]";}$_a=$_a?"":get_val("SELECT seq FROM sqlite_sequence WHERE name = ".q($R));if(!queries("DROP TABLE ".table($R))||($R==$C&&!queries("ALTER TABLE ".table($oi)." RENAME TO ".table($C)))||!alter_indexes($C,$w))return
|
||
false;if($_a)queries("UPDATE sqlite_sequence SET seq = $_a WHERE name = ".q($C));foreach($Ni
|
||
as$Ki){if(!queries($Ki))return
|
||
false;}queries("COMMIT");}return
|
||
true;}function
|
||
index_sql($R,$U,$C,$e){return"CREATE $U ".($U!="INDEX"?"INDEX ":"").idf_escape($C!=""?$C:uniqid($R."_"))." ON ".table($R)." $e";}function
|
||
alter_indexes($R,$b){foreach($b
|
||
as$G){if($G[0]=="PRIMARY")return
|
||
recreate_table($R,$R,array(),array(),array(),"",$b);}foreach(array_reverse($b)as$X){if(!queries($X[2]=="DROP"?"DROP INDEX ".idf_escape($X[1]):index_sql($R,$X[0],$X[1],"(".implode(", ",$X[2]).")")))return
|
||
false;}return
|
||
true;}function
|
||
truncate_tables($T){return
|
||
apply_queries("DELETE FROM",$T);}function
|
||
drop_views($pj){return
|
||
apply_queries("DROP VIEW",$pj);}function
|
||
drop_tables($T){return
|
||
apply_queries("DROP TABLE",$T);}function
|
||
move_tables($T,$pj,$mi){return
|
||
false;}function
|
||
trigger($C,$R){if($C=="")return
|
||
array("Statement"=>"BEGIN\n\t;\nEND");$u='(?:[^`"\s]+|`[^`]*`|"[^"]*")+';$Mi=trigger_options();preg_match("~^CREATE\\s+TRIGGER\\s*$u\\s*(".implode("|",$Mi["Timing"]).")\\s+([a-z]+)(?:\\s+OF\\s+($u))?\\s+ON\\s*$u\\s*(?:FOR\\s+EACH\\s+ROW\\s)?(.*)~is",get_val("SELECT sql FROM sqlite_master WHERE type = 'trigger' AND name = ".q($C)),$B);$uf=$B[3];return
|
||
array("Timing"=>strtoupper($B[1]),"Event"=>strtoupper($B[2]).($uf?" OF":""),"Of"=>idf_unescape($uf),"Trigger"=>$C,"Statement"=>$B[4],);}function
|
||
triggers($R){$J=array();$Mi=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("|",$Mi["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($I){return
|
||
get_val("SELECT LAST_INSERT_ROWID()");}function
|
||
explain($f,$H){return$f->query("EXPLAIN QUERY PLAN $H");}function
|
||
found_rows($S,$Z){}function
|
||
types(){return
|
||
array();}function
|
||
create_sql($R,$_a,$Vh){$J=get_val("SELECT sql FROM sqlite_master WHERE type IN ('table', 'view') AND name = ".q($R));foreach(indexes($R)as$C=>$v){if($C=='')continue;$J
|
||
.=";\n\n".index_sql($R,$v['type'],$C,"(".implode(", ",array_map('Adminer\idf_escape',$v['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"){$J[$C]=array($C,'');foreach(get_rows("PRAGMA $C")as$K)$J[$C][1].=implode(", ",$K)."\n";}}return$J;}function
|
||
show_status(){$J=array();foreach(get_vals("PRAGMA compile_options")as$If)$J[]=explode("=",$If,2)+array('','');return$J;}function
|
||
convert_field($m){}function
|
||
unconvert_field($m,$J){return$J;}function
|
||
support($Rc){return
|
||
preg_match('~^(check|columns|database|drop_col|dump|indexes|descidx|move_col|sql|status|table|trigger|variables|view|view_trigger)$~',$Rc);}}add_driver("pgsql","PostgreSQL");if(isset($_GET["pgsql"])){define('Adminer\DRIVER',"pgsql");if(extension_loaded("pgsql")&&$_GET["ext"]!="pdo"){class
|
||
PgsqlDb
|
||
extends
|
||
SqlDb{var$extension="PgSQL";var$timeout=0;private$link,$string,$database=true;function
|
||
_error($_c,$l){if(ini_bool("html_errors"))$l=html_entity_decode(strip_tags($l));$l=preg_replace('~^[^:]*: ~','',$l);$this->error=$l;}function
|
||
attach($N,$V,$F){$j=adminer()->database();set_error_handler(array($this,'_error'));$this->string="host='".str_replace(":","' port='",addcslashes($N,"'\\"))."' user='".addcslashes($V,"'\\")."' password='".addcslashes($F,"'\\")."'";$Qh=adminer()->connectSsl();if(isset($Qh["mode"]))$this->string
|
||
.=" sslmode='".$Qh["mode"]."'";$this->link=@pg_connect("$this->string dbname='".($j!=""?addcslashes($j,"'\\"):"postgres")."'",PGSQL_CONNECT_FORCE_NEW);if(!$this->link&&$j!=""){$this->database=false;$this->link=@pg_connect("$this->string dbname='postgres'",PGSQL_CONNECT_FORCE_NEW);}restore_error_handler();if($this->link)pg_set_client_encoding($this->link,"UTF8");return($this->link?'':$this->error);}function
|
||
quote($Q){return(function_exists('pg_escape_literal')?pg_escape_literal($this->link,$Q):"'".pg_escape_string($this->link,$Q)."'");}function
|
||
value($X,array$m){return($m["type"]=="bytea"&&$X!==null?pg_unescape_bytea($X):$X);}function
|
||
select_db($Kb){if($Kb==adminer()->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,$Ri=false){$I=@pg_query($this->link,$H);$this->error="";if(!$I){$this->error=pg_last_error($this->link);$J=false;}elseif(!pg_num_fields($I)){$this->affected_rows=pg_affected_rows($I);$J=true;}else$J=new
|
||
Result($I);if($this->timeout){$this->timeout=0;$this->query("RESET statement_timeout");}return$J;}function
|
||
warnings(){return
|
||
h(pg_last_notice($this->link));}function
|
||
copyFrom($R,array$L){$this->error='';set_error_handler(function($_c,$l){$this->error=(ini_bool('html_errors')?html_entity_decode($l):$l);});$J=pg_copy_from($this->link,$R,$L);restore_error_handler();return$J;}}class
|
||
Result{var$num_rows;private$result,$offset=0;function
|
||
__construct($I){$this->result=$I;$this->num_rows=pg_num_rows($I);}function
|
||
fetch_assoc(){return
|
||
pg_fetch_assoc($this->result);}function
|
||
fetch_row(){return
|
||
pg_fetch_row($this->result);}function
|
||
fetch_field(){$d=$this->offset++;$J=new
|
||
\stdClass;$J->orgtable=pg_field_table($this->result,$d);$J->name=pg_field_name($this->result,$d);$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
|
||
PgsqlDb
|
||
extends
|
||
PdoDb{var$extension="PDO_PgSQL";var$timeout=0;function
|
||
attach($N,$V,$F){$j=adminer()->database();$jc="pgsql:host='".str_replace(":","' port='",addcslashes($N,"'\\"))."' client_encoding=utf8 dbname='".($j!=""?addcslashes($j,"'\\"):"postgres")."'";$Qh=adminer()->connectSsl();if(isset($Qh["mode"]))$jc
|
||
.=" sslmode='".$Qh["mode"]."'";return$this->dsn($jc,$V,$F);}function
|
||
select_db($Kb){return(adminer()->database()==$Kb);}function
|
||
query($H,$Ri=false){$J=parent::query($H,$Ri);if($this->timeout){$this->timeout=0;parent::query("RESET statement_timeout");}return$J;}function
|
||
warnings(){}function
|
||
copyFrom($R,array$L){$J=$this->pdo->pgsqlCopyFromArray($R,$L);$this->error=idx($this->pdo->errorInfo(),2)?:'';return$J;}function
|
||
close(){}}}if(class_exists('Adminer\PgsqlDb')){class
|
||
Db
|
||
extends
|
||
PgsqlDb{function
|
||
multi_query($H){if(preg_match('~\bCOPY\s+(.+?)\s+FROM\s+stdin;\n?(.*)\n\\\\\.$~is',str_replace("\r\n","\n",$H),$B)){$L=explode("\n",$B[2]);$this->affected_rows=count($L);return$this->copyFrom($B[1],$L);}return
|
||
parent::multi_query($H);}}}class
|
||
Driver
|
||
extends
|
||
SqlDriver{static$Mc=array("PgSQL","PDO_PgSQL");static$oe="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");static
|
||
function
|
||
connect($N,$V,$F){$f=parent::connect($N,$V,$F);if(is_string($f))return$f;$nj=get_val("SELECT version()",0,$f);$f->flavor=(preg_match('~CockroachDB~',$nj)?'cockroach':'');$f->server_info=preg_replace('~^\D*([\d.]+[-\w]*).*~','\1',$nj);if(min_version(9,0,$f))$f->query("SET application_name = 'Adminer'");if($f->flavor=='cockroach')add_driver(DRIVER,"CockroachDB");return$f;}function
|
||
__construct(Db$f){parent::__construct($f);$this->types=array('Numbers'=>array("smallint"=>5,"integer"=>10,"bigint"=>19,"boolean"=>1,"numeric"=>0,"real"=>7,"double precision"=>16,"money"=>20),'Date and time'=>array("date"=>13,"time"=>17,"timestamp"=>20,"timestamptz"=>21,"interval"=>0),'Strings'=>array("character"=>0,"character varying"=>0,"text"=>0,"tsquery"=>0,"tsvector"=>0,"uuid"=>0,"xml"=>0),'Binary'=>array("bit"=>0,"bit varying"=>0,"bytea"=>0),'Network'=>array("cidr"=>43,"inet"=>43,"macaddr"=>17,"macaddr8"=>23,"txid_snapshot"=>0),'Geometry'=>array("box"=>0,"circle"=>0,"line"=>0,"lseg"=>0,"path"=>0,"point"=>0,"polygon"=>0),);if(min_version(9.2,0,$f)){$this->types['Strings']["json"]=4294967295;if(min_version(9.4,0,$f))$this->types['Strings']["jsonb"]=4294967295;}$this->insertFunctions=array("char"=>"md5","date|time"=>"now",);$this->editFunctions=array(number_type()=>"+/-","date|time"=>"+ interval/- interval","char|text"=>"||",);if(min_version(12,0,$f))$this->generated=array("STORED");}function
|
||
enumLength(array$m){$wc=$this->types['User types'][$m["type"]];return($wc?type_values($wc):"");}function
|
||
setUserTypes($Qi){$this->types['User types']=array_flip($Qi);}function
|
||
insertReturning($R){$_a=array_filter(fields($R),function($m){return$m['auto_increment'];});return(count($_a)==1?" RETURNING ".idf_escape(key($_a)):"");}function
|
||
insertUpdate($R,array$L,array$G){foreach($L
|
||
as$O){$Zi=array();$Z=array();foreach($O
|
||
as$x=>$X){$Zi[]="$x = $X";if(isset($G[idf_unescape($x)]))$Z[]="$x = $X";}if(!(($Z&&queries("UPDATE ".table($R)." SET ".implode(", ",$Zi)." WHERE ".implode(" AND ",$Z))&&connection()->affected_rows)||queries("INSERT INTO ".table($R)." (".implode(", ",array_keys($O)).") VALUES (".implode(", ",$O).")")))return
|
||
false;}return
|
||
true;}function
|
||
slowQuery($H,$ui){$this->conn->query("SET statement_timeout = ".(1000*$ui));$this->conn->timeout=1000*$ui;return$H;}function
|
||
convertSearch($u,array$X,array$m){$ri="char|text";if(strpos($X["op"],"LIKE")===false)$ri
|
||
.="|date|time(stamp)?|boolean|uuid|inet|cidr|macaddr|".number_type();return(preg_match("~$ri~",$m["type"])?$u:"CAST($u AS text)");}function
|
||
quoteBinary($ih){return"'\\x".bin2hex($ih)."'";}function
|
||
warnings(){return$this->conn->warnings();}function
|
||
tableHelp($C,$me=false){$Ee=array("information_schema"=>"infoschema","pg_catalog"=>($me?"view":"catalog"),);$_=$Ee[$_GET["ns"]];if($_)return"$_-".str_replace("_","-",$C).".html";}function
|
||
supportsIndex(array$S){return$S["Engine"]!="view";}function
|
||
hasCStyleEscapes(){static$Pa;if($Pa===null)$Pa=(get_val("SHOW standard_conforming_strings",0,$this->conn)=="off");return$Pa;}}function
|
||
idf_escape($u){return'"'.str_replace('"','""',$u).'"';}function
|
||
table($u){return
|
||
idf_escape($u);}function
|
||
get_databases($dd){return
|
||
get_vals("SELECT datname FROM pg_database
|
||
WHERE datallowconn = TRUE AND has_database_privilege(datname, 'CONNECT')
|
||
ORDER BY datname");}function
|
||
limit($H,$Z,$z,$D=0,$vh=" "){return" $H$Z".($z?$vh."LIMIT $z".($D?" OFFSET $D":""):"");}function
|
||
limit1($R,$H,$Z,$vh="\n"){return(preg_match('~^INTO~',$H)?limit($H,$Z,1,0,$vh):" $H".(is_view(table_status1($R))?$Z:$vh."WHERE ctid = (SELECT ctid FROM ".table($R).$Z.$vh."LIMIT 1)"));}function
|
||
db_collation($j,$hb){return
|
||
get_val("SELECT datcollate FROM pg_database WHERE datname = ".q($j));}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($i){$J=array();foreach($i
|
||
as$j){if(connection()->select_db($j))$J[$j]=count(tables_list());}return$J;}function
|
||
table_status($C=""){static$Bd;if($Bd===null)$Bd=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\"".($Bd?",
|
||
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$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();$ra=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,$y,$K["length"],$ka,$va)=$B;$K["length"].=$va;$Xa=$U.$ka;if(isset($ra[$Xa])){$K["type"]=$ra[$Xa];$K["full_type"]=$K["type"].$y.$va;}else{$K["type"]=$U;$K["full_type"]=$K["type"].$y.$ka.$va;}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,$g=null){$g=connection($g);$J=array();$ei=get_val("SELECT oid FROM pg_class WHERE relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = current_schema()) AND relname = ".q($R),0,$g);$e=get_key_vals("SELECT attnum, attname FROM pg_attribute WHERE attrelid = $ei AND attnum > 0",$g);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 = $ei AND ci.oid = i.indexrelid
|
||
ORDER BY indisprimary DESC, indisunique DESC",$g)as$K){$Vg=$K["relname"];$J[$Vg]["type"]=($K["indispartial"]?"INDEX":($K["indisprimary"]?"PRIMARY":($K["indisunique"]?"UNIQUE":"INDEX")));$J[$Vg]["columns"]=array();$J[$Vg]["descs"]=array();if($K["indkey"]){foreach(explode(" ",$K["indkey"])as$Wd)$J[$Vg]["columns"][]=$e[$Wd];foreach(explode(" ",$K["indoption"])as$Xd)$J[$Vg]["descs"][]=(intval($Xd)&1?'1':null);}$J[$Vg]["lengths"]=array();}return$J;}function
|
||
foreign_keys($R){$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],$Je)){$K['ns']=idf_unescape($Je[2]);$K['table']=idf_unescape($Je[4]);}$K['target']=array_map('Adminer\idf_unescape',array_map('trim',explode(',',$B[3])));$K['on_delete']=(preg_match("~ON DELETE (".driver()->onActions.")~",$B[4],$Je)?$Je[1]:'NO ACTION');$K['on_update']=(preg_match("~ON UPDATE (".driver()->onActions.")~",$B[4],$Je)?$Je[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($j){return
|
||
get_schema()=="information_schema";}function
|
||
error(){$J=h(connection()->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($j,$c){return
|
||
queries("CREATE DATABASE ".idf_escape($j).($c?" ENCODING ".idf_escape($c):""));}function
|
||
drop_databases($i){connection()->close();return
|
||
apply_queries("DROP DATABASE",$i,'Adminer\idf_escape');}function
|
||
rename_database($C,$c){connection()->close();return
|
||
queries("ALTER DATABASE ".idf_escape(DB)." RENAME TO ".idf_escape($C));}function
|
||
auto_increment(){return"";}function
|
||
alter_table($R,$C,$n,$fd,$mb,$uc,$c,$_a,$ig){$b=array();$Ig=array();if($R!=""&&$R!=$C)$Ig[]="ALTER TABLE ".table($R)." RENAME TO ".table($C);$wh="";foreach($n
|
||
as$m){$d=idf_escape($m[0]);$X=$m[1];if(!$X)$b[]="DROP $d";else{$jj=$X[5];unset($X[5]);if($m[0]==""){if(isset($X[6]))$X[1]=($X[1]==" bigint"?" big":($X[1]==" smallint"?" small":" "))."serial";$b[]=($R!=""?"ADD ":" ").implode($X);if(isset($X[6]))$b[]=($R!=""?"ADD":" ")." PRIMARY KEY ($X[0])";}else{if($d!=$X[0])$Ig[]="ALTER TABLE ".table($C)." RENAME $d TO $X[0]";$b[]="ALTER $d TYPE$X[1]";$xh=$R."_".idf_unescape($X[0])."_seq";$b[]="ALTER $d ".($X[3]?"SET".preg_replace('~GENERATED ALWAYS(.*) STORED~','EXPRESSION\1',$X[3]):(isset($X[6])?"SET DEFAULT nextval(".q($xh).")":"DROP DEFAULT"));if(isset($X[6]))$wh="CREATE SEQUENCE IF NOT EXISTS ".idf_escape($xh)." OWNED BY ".idf_escape($R).".$X[0]";$b[]="ALTER $d ".($X[2]==" NULL"?"DROP NOT":"SET").$X[2];}if($m[0]!=""||$jj!="")$Ig[]="COMMENT ON COLUMN ".table($C).".$X[0] IS ".($jj!=""?substr($jj,9):"''");}}$b=array_merge($b,$fd);if($R=="")array_unshift($Ig,"CREATE TABLE ".table($C)." (\n".implode(",\n",$b)."\n)");elseif($b)array_unshift($Ig,"ALTER TABLE ".table($R)."\n".implode(",\n",$b));if($wh)array_unshift($Ig,$wh);if($mb!==null)$Ig[]="COMMENT ON TABLE ".table($C)." IS ".q($mb);foreach($Ig
|
||
as$H){if(!queries($H))return
|
||
false;}return
|
||
true;}function
|
||
alter_indexes($R,$b){$h=array();$ec=array();$Ig=array();foreach($b
|
||
as$X){if($X[0]!="INDEX")$h[]=($X[2]=="DROP"?"\nDROP CONSTRAINT ".idf_escape($X[1]):"\nADD".($X[1]!=""?" CONSTRAINT ".idf_escape($X[1]):"")." $X[0] ".($X[0]=="PRIMARY"?"KEY ":"")."(".implode(", ",$X[2]).")");elseif($X[2]=="DROP")$ec[]=idf_escape($X[1]);else$Ig[]="CREATE INDEX ".idf_escape($X[1]!=""?$X[1]:uniqid($R."_"))." ON ".table($R)." (".implode(", ",$X[2]).")";}if($h)array_unshift($Ig,"ALTER TABLE ".table($R).implode(",",$h));if($ec)array_unshift($Ig,"DROP INDEX ".implode(", ",$ec));foreach($Ig
|
||
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($pj){return
|
||
drop_tables($pj);}function
|
||
drop_tables($T){foreach($T
|
||
as$R){$P=table_status1($R);if(!queries("DROP ".strtoupper($P["Engine"])." ".table($R)))return
|
||
false;}return
|
||
true;}function
|
||
move_tables($T,$pj,$mi){foreach(array_merge($T,$pj)as$R){$P=table_status1($R);if(!queries("ALTER ".strtoupper($P["Engine"])." ".table($R)." SET SCHEMA ".idf_escape($mi)))return
|
||
false;}return
|
||
true;}function
|
||
trigger($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){$Ki=trigger($K["trigger_name"],$R);$J[$Ki["Trigger"]]=array($Ki["Timing"],$Ki["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=idx($L,0,array());$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$m){$y=$m["length"];$J[]=$m["type"].($y?"($y)":"");}return
|
||
idf_escape($C)."(".implode(", ",$J).")";}function
|
||
last_id($I){$K=(is_object($I)?$I->fetch_row():array());return($K?$K[0]:0);}function
|
||
explain($f,$H){return$f->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):"")),$Ug))return$Ug[1];}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($t){$zc=get_vals("SELECT enumlabel FROM pg_enum WHERE enumtypid = $t ORDER BY enumsortorder");return($zc?"'".implode("', '",array_map('addslashes',$zc))."'":"");}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($kh,$g=null){if(!$g)$g=connection();$J=$g->query("SET search_path TO ".idf_escape($kh));driver()->setUserTypes(types());return$J;}function
|
||
foreign_keys_sql($R){$J="";$P=table_status1($R);$bd=foreign_keys($R);ksort($bd);foreach($bd
|
||
as$ad=>$Zc)$J
|
||
.="ALTER TABLE ONLY ".idf_escape($P['nspname']).".".idf_escape($P['Name'])." ADD CONSTRAINT ".idf_escape($ad)." $Zc[definition] ".($Zc['deferrable']?'DEFERRABLE':'NOT DEFERRABLE').";\n";return($J?"$J\n":$J);}function
|
||
create_sql($R,$_a,$Vh){$ah=array();$yh=array();$P=table_status1($R);if(is_view($P)){$oj=view($R);return
|
||
rtrim("CREATE VIEW ".idf_escape($R)." AS $oj[select]",";");}$n=fields($R);if(count($P)<2||empty($n))return
|
||
false;$J="CREATE TABLE ".idf_escape($P['nspname']).".".idf_escape($P['Name'])." (\n ";foreach($n
|
||
as$m){$fg=idf_escape($m['field']).' '.$m['full_type'].default_value($m).($m['null']?"":" NOT NULL");$ah[]=$fg;if(preg_match('~nextval\(\'([^\']+)\'\)~',$m['default'],$Le)){$xh=$Le[1];$Kh=first(get_rows((min_version(10)?"SELECT *, cache_size AS cache_value FROM pg_sequences WHERE schemaname = current_schema() AND sequencename = ".q(idf_unescape($xh)):"SELECT * FROM $xh"),null,"-- "));$yh[]=($Vh=="DROP+CREATE"?"DROP SEQUENCE IF EXISTS $xh;\n":"")."CREATE SEQUENCE $xh INCREMENT $Kh[increment_by] MINVALUE $Kh[min_value] MAXVALUE $Kh[max_value]".($_a&&$Kh['last_value']?" START ".($Kh["last_value"]+1):"")." CACHE $Kh[cache_value];";}}if(!empty($yh))$J=implode("\n\n",$yh)."\n\n$J";$G="";foreach(indexes($R)as$Ud=>$v){if($v['type']=='PRIMARY'){$G=$Ud;$ah[]="CONSTRAINT ".idf_escape($Ud)." PRIMARY KEY (".implode(', ',array_map('Adminer\idf_escape',$v['columns'])).")";}}foreach(driver()->checkConstraints($R)as$rb=>$tb)$ah[]="CONSTRAINT ".idf_escape($rb)." CHECK $tb";$J
|
||
.=implode(",\n ",$ah)."\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($n
|
||
as$Tc=>$m){if($m['comment'])$J
|
||
.="\n\nCOMMENT ON COLUMN ".idf_escape($P['nspname']).".".idf_escape($P['Name']).".".idf_escape($Tc)." IS ".q($m['comment']).";";}foreach(get_rows("SELECT indexdef FROM pg_catalog.pg_indexes WHERE schemaname = current_schema() AND tablename = ".q($R).($G?" AND indexname != ".q($G):""),null,"-- ")as$K)$J
|
||
.="\n\n$K[indexdef];";return
|
||
rtrim($J,';');}function
|
||
truncate_sql($R){return"TRUNCATE ".table($R);}function
|
||
trigger_sql($R){$P=table_status1($R);$J="";foreach(triggers($R)as$Ji=>$Ii){$Ki=trigger($Ji,$P['Name']);$J
|
||
.="\nCREATE TRIGGER ".idf_escape($Ki['Trigger'])." $Ki[Timing] $Ki[Event] ON ".idf_escape($P["nspname"]).".".idf_escape($P['Name'])." $Ki[Type] $Ki[Statement];;\n";}return$J;}function
|
||
use_sql($Kb){return"\connect ".idf_escape($Kb);}function
|
||
show_variables(){return
|
||
get_rows("SHOW ALL");}function
|
||
process_list(){return
|
||
get_rows("SELECT * FROM pg_stat_activity ORDER BY ".(min_version(9.2)?"pid":"procpid"));}function
|
||
convert_field($m){}function
|
||
unconvert_field($m,$J){return$J;}function
|
||
support($Rc){return
|
||
preg_match('~^(check|database|table|columns|sql|indexes|descidx|comment|view|'.(min_version(9.3)?'materializedview|':'').'scheme|'.(min_version(11)?'procedure|':'').'routine|sequence|trigger|type|variables|drop_col'.(connection()->flavor=='cockroach'?'':'|processlist').'|kill|dump)$~',$Rc);}function
|
||
kill_process($X){return
|
||
queries("SELECT pg_terminate_backend(".number($X).")");}function
|
||
connection_id(){return"SELECT pg_backend_pid()";}function
|
||
max_connections(){return
|
||
get_val("SHOW max_connections");}}add_driver("oracle","Oracle (beta)");if(isset($_GET["oracle"])){define('Adminer\DRIVER',"oracle");if(extension_loaded("oci8")&&$_GET["ext"]!="pdo"){class
|
||
Db
|
||
extends
|
||
SqlDb{var$extension="oci8";var$_current_db;private$link;function
|
||
_error($_c,$l){if(ini_bool("html_errors"))$l=html_entity_decode(strip_tags($l));$l=preg_replace('~^[^:]*: ~','',$l);$this->error=$l;}function
|
||
attach($N,$V,$F){$this->link=@oci_new_connect($V,$F,$N,"AL32UTF8");if($this->link){$this->server_info=oci_server_version($this->link);return'';}$l=oci_error();return$l["message"];}function
|
||
quote($Q){return"'".str_replace("'","''",$Q)."'";}function
|
||
select_db($Kb){$this->_current_db=$Kb;return
|
||
true;}function
|
||
query($H,$Ri=false){$I=oci_parse($this->link,$H);$this->error="";if(!$I){$l=oci_error($this->link);$this->errno=$l["code"];$this->error=$l["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;}}class
|
||
Result{var$num_rows;private$result,$offset=1;function
|
||
__construct($I){$this->result=$I;}private
|
||
function
|
||
convert($K){foreach((array)$K
|
||
as$x=>$X){if(is_a($X,'OCILob')||is_a($X,'OCI-Lob'))$K[$x]=$X->load();}return$K;}function
|
||
fetch_assoc(){return$this->convert(oci_fetch_assoc($this->result));}function
|
||
fetch_row(){return$this->convert(oci_fetch_row($this->result));}function
|
||
fetch_field(){$d=$this->offset++;$J=new
|
||
\stdClass;$J->name=oci_field_name($this->result,$d);$J->type=oci_field_type($this->result,$d);$J->charsetnr=(preg_match("~raw|blob|bfile~",$J->type)?63:0);return$J;}function
|
||
__destruct(){oci_free_statement($this->result);}}}elseif(extension_loaded("pdo_oci")){class
|
||
Db
|
||
extends
|
||
PdoDb{var$extension="PDO_OCI";var$_current_db;function
|
||
attach($N,$V,$F){return$this->dsn("oci:dbname=//$N;charset=AL32UTF8",$V,$F);}function
|
||
select_db($Kb){$this->_current_db=$Kb;return
|
||
true;}}}class
|
||
Driver
|
||
extends
|
||
SqlDriver{static$Mc=array("OCI8","PDO_OCI");static$oe="oracle";var$insertFunctions=array("date"=>"current_date","timestamp"=>"current_timestamp",);var$editFunctions=array("number|float|double"=>"+/-","date|timestamp"=>"+ interval/- interval","char|clob"=>"||",);var$operators=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL","SQL");var$functions=array("length","lower","round","upper");var$grouping=array("avg","count","count distinct","max","min","sum");function
|
||
__construct(Db$f){parent::__construct($f);$this->types=array('Numbers'=>array("number"=>38,"binary_float"=>12,"binary_double"=>21),'Date and time'=>array("date"=>10,"timestamp"=>29,"interval year"=>12,"interval day"=>28),'Strings'=>array("char"=>2000,"varchar2"=>4000,"nchar"=>2000,"nvarchar2"=>4000,"clob"=>4294967295,"nclob"=>4294967295),'Binary'=>array("raw"=>2000,"long raw"=>2147483648,"blob"=>4294967295,"bfile"=>4294967296),);}function
|
||
begin(){return
|
||
true;}function
|
||
insertUpdate($R,array$L,array$G){foreach($L
|
||
as$O){$Zi=array();$Z=array();foreach($O
|
||
as$x=>$X){$Zi[]="$x = $X";if(isset($G[idf_unescape($x)]))$Z[]="$x = $X";}if(!(($Z&&queries("UPDATE ".table($R)." SET ".implode(", ",$Zi)." WHERE ".implode(" AND ",$Z))&&connection()->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($u){return'"'.str_replace('"','""',$u).'"';}function
|
||
table($u){return
|
||
idf_escape($u);}function
|
||
get_databases($dd){return
|
||
get_vals("SELECT DISTINCT tablespace_name FROM (
|
||
SELECT tablespace_name FROM user_tablespaces
|
||
UNION SELECT tablespace_name FROM all_tables WHERE tablespace_name IS NOT NULL
|
||
)
|
||
ORDER BY 1");}function
|
||
limit($H,$Z,$z,$D=0,$vh=" "){return($D?" * FROM (SELECT t.*, rownum AS rnum FROM (SELECT $H$Z) t WHERE rownum <= ".($z+$D).") WHERE rnum > $D":($z?" * FROM (SELECT $H$Z) WHERE rownum <= ".($z+$D):" $H$Z"));}function
|
||
limit1($R,$H,$Z,$vh="\n"){return" $H$Z";}function
|
||
db_collation($j,$hb){return
|
||
get_val("SELECT value FROM nls_database_parameters WHERE parameter = 'NLS_CHARACTERSET'");}function
|
||
logged_user(){return
|
||
get_val("SELECT USER FROM DUAL");}function
|
||
get_current_db(){$j=connection()->_current_db?:DB;unset(connection()->_current_db);return$j;}function
|
||
where_owner($yg,$Zf="owner"){if(!$_GET["ns"])return'';return"$yg$Zf = sys_context('USERENV', 'CURRENT_SCHEMA')";}function
|
||
views_table($e){$Zf=where_owner('');return"(SELECT $e FROM all_views WHERE ".($Zf?:"rownum < 0").")";}function
|
||
tables_list(){$oj=views_table("view_name");$Zf=where_owner(" AND ");return
|
||
get_key_vals("SELECT table_name, 'table' FROM all_tables WHERE tablespace_name = ".q(DB)."$Zf
|
||
UNION SELECT view_name, 'view' FROM $oj
|
||
ORDER BY 1");}function
|
||
count_tables($i){$J=array();foreach($i
|
||
as$j)$J[$j]=get_val("SELECT COUNT(*) FROM all_tables WHERE tablespace_name = ".q($j));return$J;}function
|
||
table_status($C=""){$J=array();$oh=q($C);$j=get_current_db();$oj=views_table("view_name");$Zf=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($j).$Zf.($C!=""?" AND table_name = $oh":"")."
|
||
UNION SELECT view_name, 'view', 0, 0 FROM $oj".($C!=""?" WHERE view_name = $oh":"")."
|
||
ORDER BY 1")as$K)$J[$K["Name"]]=$K;return$J;}function
|
||
is_view($S){return$S["Engine"]=="view";}function
|
||
fk_support($S){return
|
||
true;}function
|
||
fields($R){$J=array();$Zf=where_owner(" AND ");foreach(get_rows("SELECT * FROM all_tab_columns WHERE table_name = ".q($R)."$Zf ORDER BY column_id")as$K){$U=$K["DATA_TYPE"];$y="$K[DATA_PRECISION],$K[DATA_SCALE]";if($y==",")$y=$K["CHAR_COL_DECL_LENGTH"];$J[$K["COLUMN_NAME"]]=array("field"=>$K["COLUMN_NAME"],"full_type"=>$U.($y?"($y)":""),"type"=>strtolower($U),"length"=>$y,"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,$g=null){$J=array();$Zf=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)."$Zf
|
||
ORDER BY ac.constraint_type, aic.column_position",$g)as$K){$Ud=$K["INDEX_NAME"];$jb=$K["DATA_DEFAULT"];$jb=($jb?trim($jb,'"'):$K["COLUMN_NAME"]);$J[$Ud]["type"]=($K["CONSTRAINT_TYPE"]=="P"?"PRIMARY":($K["CONSTRAINT_TYPE"]=="U"?"UNIQUE":"INDEX"));$J[$Ud]["columns"][]=$jb;$J[$Ud]["lengths"][]=($K["CHAR_LENGTH"]&&$K["CHAR_LENGTH"]!=$K["COLUMN_LENGTH"]?$K["CHAR_LENGTH"]:null);$J[$Ud]["descs"][]=($K["DESCEND"]&&$K["DESCEND"]=="DESC"?'1':null);}return$J;}function
|
||
view($C){$oj=views_table("view_name, text");$L=get_rows('SELECT text "select" FROM '.$oj.' WHERE view_name = '.q($C));return
|
||
reset($L);}function
|
||
collations(){return
|
||
array();}function
|
||
information_schema($j){return
|
||
get_schema()=="INFORMATION_SCHEMA";}function
|
||
error(){return
|
||
h(connection()->error);}function
|
||
explain($f,$H){$f->query("EXPLAIN PLAN FOR $H");return$f->query("SELECT * FROM plan_table");}function
|
||
found_rows($S,$Z){}function
|
||
auto_increment(){return"";}function
|
||
alter_table($R,$C,$n,$fd,$mb,$uc,$c,$_a,$ig){$b=$ec=array();$Sf=($R?fields($R):array());foreach($n
|
||
as$m){$X=$m[1];if($X&&$m[0]!=""&&idf_escape($m[0])!=$X[0])queries("ALTER TABLE ".table($R)." RENAME COLUMN ".idf_escape($m[0])." TO $X[0]");$Rf=$Sf[$m[0]];if($X&&$Rf){$wf=process_field($Rf,$Rf);if($X[2]==$wf[2])$X[2]="";}if($X)$b[]=($R!=""?($m[0]!=""?"MODIFY (":"ADD ("):" ").implode($X).($R!=""?")":"");else$ec[]=idf_escape($m[0]);}if($R=="")return
|
||
queries("CREATE TABLE ".table($C)." (\n".implode(",\n",$b)."\n)");return(!$b||queries("ALTER TABLE ".table($R)."\n".implode("\n",$b)))&&(!$ec||queries("ALTER TABLE ".table($R)." DROP (".implode(", ",$ec).")"))&&($R==$C||queries("ALTER TABLE ".table($R)." RENAME TO ".table($C)));}function
|
||
alter_indexes($R,$b){$ec=array();$Ig=array();foreach($b
|
||
as$X){if($X[0]!="INDEX"){$X[2]=preg_replace('~ DESC$~','',$X[2]);$h=($X[2]=="DROP"?"\nDROP CONSTRAINT ".idf_escape($X[1]):"\nADD".($X[1]!=""?" CONSTRAINT ".idf_escape($X[1]):"")." $X[0] ".($X[0]=="PRIMARY"?"KEY ":"")."(".implode(", ",$X[2]).")");array_unshift($Ig,"ALTER TABLE ".table($R).$h);}elseif($X[2]=="DROP")$ec[]=idf_escape($X[1]);else$Ig[]="CREATE INDEX ".idf_escape($X[1]!=""?$X[1]:uniqid($R."_"))." ON ".table($R)." (".implode(", ",$X[2]).")";}if($ec)array_unshift($Ig,"DROP INDEX ".implode(", ",$ec));foreach($Ig
|
||
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($pj){return
|
||
apply_queries("DROP VIEW",$pj);}function
|
||
drop_tables($T){return
|
||
apply_queries("DROP TABLE",$T);}function
|
||
last_id($I){return
|
||
0;}function
|
||
schemas(){$J=get_vals("SELECT DISTINCT owner FROM dba_segments WHERE owner IN (SELECT username FROM dba_users WHERE default_tablespace NOT IN ('SYSTEM','SYSAUX')) ORDER BY 1");return($J?:get_vals("SELECT DISTINCT owner FROM all_tables WHERE tablespace_name = ".q(DB)." ORDER BY 1"));}function
|
||
get_schema(){return
|
||
get_val("SELECT sys_context('USERENV', 'SESSION_USER') FROM dual");}function
|
||
set_schema($mh,$g=null){if(!$g)$g=connection();return$g->query("ALTER SESSION SET CURRENT_SCHEMA = ".idf_escape($mh));}function
|
||
show_variables(){return
|
||
get_rows('SELECT name, display_value FROM v$parameter');}function
|
||
show_status(){$J=array();$L=get_rows('SELECT * FROM v$instance');foreach(reset($L)as$x=>$X)$J[]=array($x,$X);return$J;}function
|
||
process_list(){return
|
||
get_rows('SELECT
|
||
sess.process AS "process",
|
||
sess.username AS "user",
|
||
sess.schemaname AS "schema",
|
||
sess.status AS "status",
|
||
sess.wait_class AS "wait_class",
|
||
sess.seconds_in_wait AS "seconds_in_wait",
|
||
sql.sql_text AS "sql_text",
|
||
sess.machine AS "machine",
|
||
sess.port AS "port"
|
||
FROM v$session sess LEFT OUTER JOIN v$sql sql
|
||
ON sql.sql_id = sess.sql_id
|
||
WHERE sess.type = \'USER\'
|
||
ORDER BY PROCESS
|
||
');}function
|
||
convert_field($m){}function
|
||
unconvert_field($m,$J){return$J;}function
|
||
support($Rc){return
|
||
preg_match('~^(columns|database|drop_col|indexes|descidx|processlist|scheme|sql|status|table|variables|view)$~',$Rc);}}add_driver("mssql","MS SQL");if(isset($_GET["mssql"])){define('Adminer\DRIVER',"mssql");if(extension_loaded("sqlsrv")&&$_GET["ext"]!="pdo"){class
|
||
Db
|
||
extends
|
||
SqlDb{var$extension="sqlsrv";private$link,$result;private
|
||
function
|
||
get_error(){$this->error="";foreach(sqlsrv_errors()as$l){$this->errno=$l["code"];$this->error
|
||
.="$l[message]\n";}$this->error=rtrim($this->error);}function
|
||
attach($N,$V,$F){$sb=array("UID"=>$V,"PWD"=>$F,"CharacterSet"=>"UTF-8");$Qh=adminer()->connectSsl();if(isset($Qh["Encrypt"]))$sb["Encrypt"]=$Qh["Encrypt"];if(isset($Qh["TrustServerCertificate"]))$sb["TrustServerCertificate"]=$Qh["TrustServerCertificate"];$j=adminer()->database();if($j!="")$sb["Database"]=$j;$this->link=@sqlsrv_connect(preg_replace('~:~',',',$N),$sb);if($this->link){$Yd=sqlsrv_server_info($this->link);$this->server_info=$Yd['SQLServerVersion'];}else$this->get_error();return($this->link?'':$this->error);}function
|
||
quote($Q){$Si=strlen($Q)!=strlen(utf8_decode($Q));return($Si?"N":"")."'".str_replace("'","''",$Q)."'";}function
|
||
select_db($Kb){return$this->query(use_sql($Kb));}function
|
||
query($H,$Ri=false){$I=sqlsrv_query($this->link,$H);$this->error="";if(!$I){$this->get_error();return
|
||
false;}return$this->store_result($I);}function
|
||
multi_query($H){$this->result=sqlsrv_query($this->link,$H);$this->error="";if(!$this->result){$this->get_error();return
|
||
false;}return
|
||
true;}function
|
||
store_result($I=null){if(!$I)$I=$this->result;if(!$I)return
|
||
false;if(sqlsrv_field_metadata($I))return
|
||
new
|
||
Result($I);$this->affected_rows=sqlsrv_rows_affected($I);return
|
||
true;}function
|
||
next_result(){return$this->result?!!sqlsrv_next_result($this->result):false;}}class
|
||
Result{var$num_rows;private$result,$offset=0,$fields;function
|
||
__construct($I){$this->result=$I;}private
|
||
function
|
||
convert($K){foreach((array)$K
|
||
as$x=>$X){if(is_a($X,'DateTime'))$K[$x]=$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);$m=$this->fields[$this->offset++];$J=new
|
||
\stdClass;$J->name=$m["Name"];$J->type=($m["Type"]==1?254:15);$J->charsetnr=0;return$J;}function
|
||
seek($D){for($s=0;$s<$D;$s++)sqlsrv_fetch($this->result);}function
|
||
__destruct(){sqlsrv_free_stmt($this->result);}}function
|
||
last_id($I){return
|
||
get_val("SELECT SCOPE_IDENTITY()");}function
|
||
explain($f,$H){$f->query("SET SHOWPLAN_ALL ON");$J=$f->query($H);$f->query("SET SHOWPLAN_ALL OFF");return$J;}}else{abstract
|
||
class
|
||
MssqlDb
|
||
extends
|
||
PdoDb{function
|
||
select_db($Kb){return$this->query(use_sql($Kb));}function
|
||
lastInsertId(){return$this->pdo->lastInsertId();}}function
|
||
last_id($I){return
|
||
connection()->lastInsertId();}function
|
||
explain($f,$H){}if(extension_loaded("pdo_sqlsrv")){class
|
||
Db
|
||
extends
|
||
MssqlDb{var$extension="PDO_SQLSRV";function
|
||
attach($N,$V,$F){return$this->dsn("sqlsrv:Server=".str_replace(":",",",$N),$V,$F);}}}elseif(extension_loaded("pdo_dblib")){class
|
||
Db
|
||
extends
|
||
MssqlDb{var$extension="PDO_DBLIB";function
|
||
attach($N,$V,$F){return$this->dsn("dblib:charset=utf8;host=".str_replace(":",";unix_socket=",preg_replace('~:(\d)~',';port=\1',$N)),$V,$F);}}}}class
|
||
Driver
|
||
extends
|
||
SqlDriver{static$Mc=array("SQLSRV","PDO_SQLSRV","PDO_DBLIB");static$oe="mssql";var$insertFunctions=array("date|time"=>"getdate");var$editFunctions=array("int|decimal|real|float|money|datetime"=>"+/-","char|text"=>"+",);var$operators=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL");var$functions=array("len","lower","round","upper");var$grouping=array("avg","count","count distinct","max","min","sum");var$generated=array("PERSISTED","VIRTUAL");var$onActions="NO ACTION|CASCADE|SET NULL|SET DEFAULT";static
|
||
function
|
||
connect($N,$V,$F){if($N=="")$N="localhost:1433";return
|
||
parent::connect($N,$V,$F);}function
|
||
__construct(Db$f){parent::__construct($f);$this->types=array('Numbers'=>array("tinyint"=>3,"smallint"=>5,"int"=>10,"bigint"=>20,"bit"=>1,"decimal"=>0,"real"=>12,"float"=>53,"smallmoney"=>10,"money"=>20),'Date and time'=>array("date"=>10,"smalldatetime"=>19,"datetime"=>19,"datetime2"=>19,"time"=>8,"datetimeoffset"=>10),'Strings'=>array("char"=>8000,"varchar"=>8000,"text"=>2147483647,"nchar"=>4000,"nvarchar"=>4000,"ntext"=>1073741823),'Binary'=>array("binary"=>8000,"varbinary"=>8000,"image"=>2147483647),);}function
|
||
insertUpdate($R,array$L,array$G){$n=fields($R);$Zi=array();$Z=array();$O=reset($L);$e="c".implode(", c",range(1,count($O)));$Oa=0;$ce=array();foreach($O
|
||
as$x=>$X){$Oa++;$C=idf_unescape($x);if(!$n[$C]["auto_increment"])$ce[$x]="c$Oa";if(isset($G[$C]))$Z[]="$x = c$Oa";else$Zi[]="$x = c$Oa";}$kj=array();foreach($L
|
||
as$O)$kj[]="(".implode(", ",$O).")";if($Z){$Nd=queries("SET IDENTITY_INSERT ".table($R)." ON");$J=queries("MERGE ".table($R)." USING (VALUES\n\t".implode(",\n\t",$kj)."\n) AS source ($e) ON ".implode(" AND ",$Z).($Zi?"\nWHEN MATCHED THEN UPDATE SET ".implode(", ",$Zi):"")."\nWHEN NOT MATCHED THEN INSERT (".implode(", ",array_keys($Nd?$O:$ce)).") VALUES (".($Nd?$e:implode(", ",$ce)).");");if($Nd)queries("SET IDENTITY_INSERT ".table($R)." OFF");}else$J=queries("INSERT INTO ".table($R)." (".implode(", ",array_keys($O)).") VALUES\n".implode(",\n",$kj));return$J;}function
|
||
begin(){return
|
||
queries("BEGIN TRANSACTION");}function
|
||
tableHelp($C,$me=false){$Ee=array("sys"=>"catalog-views/sys-","INFORMATION_SCHEMA"=>"information-schema-views/",);$_=$Ee[get_schema()];if($_)return"relational-databases/system-$_".preg_replace('~_~','-',strtolower($C))."-transact-sql";}}function
|
||
idf_escape($u){return"[".str_replace("]","]]",$u)."]";}function
|
||
table($u){return($_GET["ns"]!=""?idf_escape($_GET["ns"]).".":"").idf_escape($u);}function
|
||
get_databases($dd){return
|
||
get_vals("SELECT name FROM sys.databases WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb')");}function
|
||
limit($H,$Z,$z,$D=0,$vh=" "){return($z?" TOP (".($z+$D).")":"")." $H$Z";}function
|
||
limit1($R,$H,$Z,$vh="\n"){return
|
||
limit($H,$Z,1,0,$vh);}function
|
||
db_collation($j,$hb){return
|
||
get_val("SELECT collation_name FROM sys.databases WHERE name = ".q($j));}function
|
||
logged_user(){return
|
||
get_val("SELECT SUSER_NAME()");}function
|
||
tables_list(){return
|
||
get_key_vals("SELECT name, type_desc FROM sys.all_objects WHERE schema_id = SCHEMA_ID(".q(get_schema()).") AND type IN ('S', 'U', 'V') ORDER BY name");}function
|
||
count_tables($i){$J=array();foreach($i
|
||
as$j){connection()->select_db($j);$J[$j]=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)$J[$K["Name"]]=$K;return$J;}function
|
||
is_view($S){return$S["Engine"]=="VIEW";}function
|
||
fk_support($S){return
|
||
true;}function
|
||
fields($R){$ob=get_key_vals("SELECT objname, cast(value as varchar(max)) FROM fn_listextendedproperty('MS_DESCRIPTION', 'schema', ".q(get_schema()).", 'table', ".q($R).", 'column', NULL)");$J=array();$ci=get_val("SELECT object_id FROM sys.all_objects WHERE schema_id = SCHEMA_ID(".q(get_schema()).") AND type IN ('S', 'U', 'V') AND name = ".q($R));foreach(get_rows("SELECT c.max_length, c.precision, c.scale, c.name, c.is_nullable, c.is_identity, c.collation_name, t.name type, d.definition [default], d.name default_constraint, i.is_primary_key
|
||
FROM sys.all_columns c
|
||
JOIN sys.types t ON c.user_type_id = t.user_type_id
|
||
LEFT JOIN sys.default_constraints d ON c.default_object_id = d.object_id
|
||
LEFT JOIN sys.index_columns ic ON c.object_id = ic.object_id AND c.column_id = ic.column_id
|
||
LEFT JOIN sys.indexes i ON ic.object_id = i.object_id AND ic.index_id = i.index_id
|
||
WHERE c.object_id = ".q($ci))as$K){$U=$K["type"];$y=(preg_match("~char|binary~",$U)?intval($K["max_length"])/($U[0]=='n'?2:1):($U=="decimal"?"$K[precision],$K[scale]":""));$J[$K["name"]]=array("field"=>$K["name"],"full_type"=>$U.($y?"($y)":""),"type"=>$U,"length"=>$y,"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"=>$ob[$K["name"]],);}foreach(get_rows("SELECT * FROM sys.computed_columns WHERE object_id = ".q($ci))as$K){$J[$K["name"]]["generated"]=($K["is_persisted"]?"PERSISTED":"VIRTUAL");$J[$K["name"]]["default"]=$K["definition"];}return$J;}function
|
||
indexes($R,$g=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),$g)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$c)$J[preg_replace('~_.*~','',$c)][]=$c;return$J;}function
|
||
information_schema($j){return
|
||
get_schema()=="INFORMATION_SCHEMA";}function
|
||
error(){return
|
||
nl_br(h(preg_replace('~^(\[[^]]*])+~m','',connection()->error)));}function
|
||
create_database($j,$c){return
|
||
queries("CREATE DATABASE ".idf_escape($j).(preg_match('~^[a-z0-9_]+$~i',$c)?" COLLATE $c":""));}function
|
||
drop_databases($i){return
|
||
queries("DROP DATABASE ".implode(", ",array_map('Adminer\idf_escape',$i)));}function
|
||
rename_database($C,$c){if(preg_match('~^[a-z0-9_]+$~i',$c))queries("ALTER DATABASE ".idf_escape(DB)." COLLATE $c");queries("ALTER DATABASE ".idf_escape(DB)." MODIFY NAME = ".idf_escape($C));return
|
||
true;}function
|
||
auto_increment(){return" IDENTITY".($_POST["Auto_increment"]!=""?"(".number($_POST["Auto_increment"]).",1)":"")." PRIMARY KEY";}function
|
||
alter_table($R,$C,$n,$fd,$mb,$uc,$c,$_a,$ig){$b=array();$ob=array();$Sf=fields($R);foreach($n
|
||
as$m){$d=idf_escape($m[0]);$X=$m[1];if(!$X)$b["DROP"][]=" COLUMN $d";else{$X[1]=preg_replace("~( COLLATE )'(\\w+)'~",'\1\2',$X[1]);$ob[$m[0]]=$X[5];unset($X[5]);if(preg_match('~ AS ~',$X[3]))unset($X[1],$X[2]);if($m[0]=="")$b["ADD"][]="\n ".implode("",$X).($R==""?substr($fd[$X[0]],16+strlen($X[0])):"");else{$k=$X[3];unset($X[3]);unset($X[6]);if($d!=$X[0])queries("EXEC sp_rename ".q(table($R).".$d").", ".q(idf_unescape($X[0])).", 'COLUMN'");$b["ALTER COLUMN ".implode("",$X)][]="";$Rf=$Sf[$m[0]];if(default_value($Rf)!=$k){if($Rf["default"]!==null)$b["DROP"][]=" ".idf_escape($Rf["default_constraint"]);if($k)$b["ADD"][]="\n $k FOR $d";}}}}if($R=="")return
|
||
queries("CREATE TABLE ".table($C)." (".implode(",",(array)$b["ADD"])."\n)");if($R!=$C)queries("EXEC sp_rename ".q(table($R)).", ".q($C));if($fd)$b[""]=$fd;foreach($b
|
||
as$x=>$X){if(!queries("ALTER TABLE ".table($C)." $x".implode(",",$X)))return
|
||
false;}foreach($ob
|
||
as$x=>$X){$mb=substr($X,9);queries("EXEC sp_dropextendedproperty @name = N'MS_Description', @level0type = N'Schema', @level0name = ".q(get_schema()).", @level1type = N'Table', @level1name = ".q($C).", @level2type = N'Column', @level2name = ".q($x));queries("EXEC sp_addextendedproperty
|
||
@name = N'MS_Description',
|
||
@value = $mb,
|
||
@level0type = N'Schema',
|
||
@level0name = ".q(get_schema()).",
|
||
@level1type = N'Table',
|
||
@level1name = ".q($C).",
|
||
@level2type = N'Column',
|
||
@level2name = ".q($x));}return
|
||
true;}function
|
||
alter_indexes($R,$b){$v=array();$ec=array();foreach($b
|
||
as$X){if($X[2]=="DROP"){if($X[0]=="PRIMARY")$ec[]=idf_escape($X[1]);else$v[]=idf_escape($X[1])." ON ".table($R);}elseif(!queries(($X[0]!="PRIMARY"?"CREATE $X[0] ".($X[0]!="INDEX"?"INDEX ":"").idf_escape($X[1]!=""?$X[1]:uniqid($R."_"))." ON ".table($R):"ALTER TABLE ".table($R)." ADD PRIMARY KEY")." (".implode(", ",$X[2]).")"))return
|
||
false;}return(!$v||queries("DROP INDEX ".implode(", ",$v)))&&(!$ec||queries("ALTER TABLE ".table($R)." DROP ".implode(", ",$ec)));}function
|
||
found_rows($S,$Z){}function
|
||
foreign_keys($R){$J=array();$Cf=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){$p=&$J[$K["FK_NAME"]];$p["db"]=$K["PKTABLE_QUALIFIER"];$p["ns"]=$K["PKTABLE_OWNER"];$p["table"]=$K["PKTABLE_NAME"];$p["on_update"]=$Cf[$K["UPDATE_RULE"]];$p["on_delete"]=$Cf[$K["DELETE_RULE"]];$p["source"][]=$K["FKCOLUMN_NAME"];$p["target"][]=$K["PKCOLUMN_NAME"];}return$J;}function
|
||
truncate_tables($T){return
|
||
apply_queries("TRUNCATE TABLE",$T);}function
|
||
drop_views($pj){return
|
||
queries("DROP VIEW ".implode(", ",array_map('Adminer\table',$pj)));}function
|
||
drop_tables($T){return
|
||
queries("DROP TABLE ".implode(", ",array_map('Adminer\table',$T)));}function
|
||
move_tables($T,$pj,$mi){return
|
||
apply_queries("ALTER SCHEMA ".idf_escape($mi)." TRANSFER",array_merge($T,$pj));}function
|
||
trigger($C,$R){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($kh){$_GET["ns"]=$kh;return
|
||
true;}function
|
||
create_sql($R,$_a,$Vh){if(is_view(table_status1($R))){$oj=view($R);return"CREATE VIEW ".table($R)." AS $oj[select]";}$n=array();$G=false;foreach(fields($R)as$C=>$m){$X=process_field($m,$m);if($X[6])$G=true;$n[]=implode("",$X);}foreach(indexes($R)as$C=>$v){if(!$G||$v["type"]!="PRIMARY"){$e=array();foreach($v["columns"]as$x=>$X)$e[]=idf_escape($X).($v["descs"][$x]?" DESC":"");$C=idf_escape($C);$n[]=($v["type"]=="INDEX"?"INDEX $C":"CONSTRAINT $C ".($v["type"]=="UNIQUE"?"UNIQUE":"PRIMARY KEY"))." (".implode(", ",$e).")";}}foreach(driver()->checkConstraints($R)as$C=>$Va)$n[]="CONSTRAINT ".idf_escape($C)." CHECK ($Va)";return"CREATE TABLE ".table($R)." (\n\t".implode(",\n\t",$n)."\n)";}function
|
||
foreign_keys_sql($R){$n=array();foreach(foreign_keys($R)as$fd)$n[]=ltrim(format_foreign_key($fd));return($n?"ALTER TABLE ".table($R)." ADD\n\t".implode(",\n\t",$n).";\n\n":"");}function
|
||
truncate_sql($R){return"TRUNCATE TABLE ".table($R);}function
|
||
use_sql($Kb){return"USE ".idf_escape($Kb);}function
|
||
trigger_sql($R){$J="";foreach(triggers($R)as$C=>$Ki)$J
|
||
.=create_trigger(" ON ".table($R),trigger($C,$R)).";";return$J;}function
|
||
convert_field($m){}function
|
||
unconvert_field($m,$J){return$J;}function
|
||
support($Rc){return
|
||
preg_match('~^(check|comment|columns|database|drop_col|dump|indexes|descidx|scheme|sql|table|trigger|view|view_trigger)$~',$Rc);}}class
|
||
Adminer{static$ee;var$error='';function
|
||
name(){return"<a href='https://www.adminer.org/'".target_blank()." id='h1'><img src='".h(preg_replace("~\\?.*~","",ME)."?file=logo.png&version=5.2.0")."' width='24' height='24' alt='' id='logo'>Adminer</a>";}function
|
||
credentials(){return
|
||
array(SERVER,$_GET["username"],get_password());}function
|
||
connectSsl(){}function
|
||
permanentLogin($h=false){return
|
||
password_file($h);}function
|
||
bruteForceKey(){return$_SERVER["REMOTE_ADDR"];}function
|
||
serverName($N){return
|
||
h($N);}function
|
||
database(){return
|
||
DB;}function
|
||
databases($dd=true){return
|
||
get_databases($dd);}function
|
||
pluginsLinks(){}function
|
||
operators(){return
|
||
driver()->operators;}function
|
||
schemas(){return
|
||
schemas();}function
|
||
queryTimeout(){return
|
||
2;}function
|
||
headers(){}function
|
||
csp(array$Db){return$Db;}function
|
||
head($Hb=null){return
|
||
true;}function
|
||
css(){$J=array();foreach(array("","-dark")as$df){$o="adminer$df.css";if(file_exists($o))$J[]="$o?v=".crc32(file_get_contents($o));}return$J;}function
|
||
loginForm(){echo"<table class='layout'>\n",adminer()->loginFormField('driver','<tr><th>'.'System'.'<td>',html_select("auth[driver]",SqlDriver::$dc,DRIVER,"loginDriver(this);")),adminer()->loginFormField('server','<tr><th>'.'Server'.'<td>','<input name="auth[server]" value="'.h(SERVER).'" title="hostname[:port]" placeholder="localhost" autocapitalize="off">'),adminer()->loginFormField('username','<tr><th>'.'Username'.'<td>','<input name="auth[username]" id="username" autofocus value="'.h($_GET["username"]).'" autocomplete="username" autocapitalize="off">'.script("const authDriver = qs('#username').form['auth[driver]']; authDriver && authDriver.onchange();")),adminer()->loginFormField('password','<tr><th>'.'Password'.'<td>','<input type="password" name="auth[password]" autocomplete="current-password">'),adminer()->loginFormField('db','<tr><th>'.'Database'.'<td>','<input name="auth[db]" value="'.h($_GET["db"]).'" autocapitalize="off">'),"</table>\n","<p><input type='submit' value='".'Login'."'>\n",checkbox("auth[permanent]",1,$_COOKIE["adminer_permanent"],'Permanent login')."\n";}function
|
||
loginFormField($C,$Dd,$Y){return$Dd.$Y."\n";}function
|
||
login($Fe,$F){if($F=="")return
|
||
sprintf('Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.',target_blank());return
|
||
true;}function
|
||
tableName(array$bi){return
|
||
h($bi["Name"]);}function
|
||
fieldName(array$m,$Lf=0){$U=$m["full_type"];$mb=$m["comment"];return'<span title="'.h($U.($mb!=""?($U?": ":"").$mb:'')).'">'.h($m["field"]).'</span>';}function
|
||
selectLinks(array$bi,$O=""){echo'<p class="links">';$Ee=array("select"=>'Select data');if(support("table")||support("indexes"))$Ee["table"]='Show structure';$me=false;if(support("table")){$me=is_view($bi);if($me)$Ee["view"]='Alter view';else$Ee["create"]='Alter table';}if($O!==null)$Ee["edit"]='New item';$C=$bi["Name"];foreach($Ee
|
||
as$x=>$X)echo" <a href='".h(ME)."$x=".urlencode($C).($x=="edit"?$O:"")."'".bold(isset($_GET[$x])).">$X</a>";echo
|
||
doc_link(array(JUSH=>driver()->tableHelp($C,$me)),"?"),"\n";}function
|
||
foreignKeys($R){return
|
||
foreign_keys($R);}function
|
||
backwardKeys($R,$ai){return
|
||
array();}function
|
||
backwardKeysPrint(array$Da,array$K){}function
|
||
selectQuery($H,$Rh,$Pc=false){$J="</p>\n";if(!$Pc&&($sj=driver()->warnings())){$t="warnings";$J=", <a href='#$t'>".'Warnings'."</a>".script("qsl('a').onclick = partial(toggle, '$t');","")."$J<div id='$t' class='hidden'>\n$sj</div>\n";}return"<p><code class='jush-".JUSH."'>".h(str_replace("\n"," ",$H))."</code> <span class='time'>(".format_time($Rh).")</span>".(support("sql")?" <a href='".h(ME)."sql=".urlencode($H)."'>".'Edit'."</a>":"").$J;}function
|
||
sqlCommandQuery($H){return
|
||
shorten_utf8(trim($H),1000);}function
|
||
sqlPrintAfter(){}function
|
||
rowDescription($R){return"";}function
|
||
rowDescriptions(array$L,array$gd){return$L;}function
|
||
selectLink($X,array$m){}function
|
||
selectVal($X,$_,array$m,$Vf){$J=($X===null?"<i>NULL</i>":(preg_match("~char|binary|boolean~",$m["type"])&&!preg_match("~var~",$m["type"])?"<code>$X</code>":(preg_match('~json~',$m["type"])?"<code class='jush-js'>$X</code>":$X)));if(preg_match('~blob|bytea|raw|file~',$m["type"])&&!is_utf8($X))$J="<i>".lang_format(array('%d byte','%d bytes'),strlen($Vf))."</i>";return($_?"<a href='".h($_)."'".(is_url($_)?target_blank():"").">$J</a>":$J);}function
|
||
editVal($X,array$m){return$X;}function
|
||
config(){return
|
||
array();}function
|
||
tableStructurePrint(array$n,$bi=null){echo"<div class='scrollable'>\n","<table class='nowrap odds'>\n","<thead><tr><th>".'Column'."<td>".'Type'.(support("comment")?"<td>".'Comment':"")."</thead>\n";$Uh=driver()->structuredTypes();foreach($n
|
||
as$m){echo"<tr><th>".h($m["field"]);$U=h($m["full_type"]);$c=h($m["collation"]);echo"<td><span title='$c'>".(in_array($U,(array)$Uh['User types'])?"<a href='".h(ME.'type='.urlencode($U))."'>$U</a>":$U.($c&&isset($bi["Collation"])&&$c!=$bi["Collation"]?" $c":""))."</span>",($m["null"]?" <i>NULL</i>":""),($m["auto_increment"]?" <i>".'Auto Increment'."</i>":"");$k=h($m["default"]);echo(isset($m["default"])?" <span title='".'Default value'."'>[<b>".($m["generated"]?"<code class='jush-".JUSH."'>$k</code>":$k)."</b>]</span>":""),(support("comment")?"<td>".h($m["comment"]):""),"\n";}echo"</table>\n","</div>\n";}function
|
||
tableIndexesPrint(array$w){echo"<table>\n";foreach($w
|
||
as$C=>$v){ksort($v["columns"]);$Ag=array();foreach($v["columns"]as$x=>$X)$Ag[]="<i>".h($X)."</i>".($v["lengths"][$x]?"(".$v["lengths"][$x].")":"").($v["descs"][$x]?" DESC":"");echo"<tr title='".h($C)."'><th>$v[type]<td>".implode(", ",$Ag)."\n";}echo"</table>\n";}function
|
||
selectColumnsPrint(array$M,array$e){print_fieldset("select",'Select',$M);$s=0;$M[""]=array();foreach($M
|
||
as$x=>$X){$X=idx($_GET["columns"],$x,array());$d=select_input(" name='columns[$s][col]'",$e,$X["col"],($x!==""?"selectFieldChange":"selectAddRow"));echo"<div>".(driver()->functions||driver()->grouping?html_select("columns[$s][fun]",array(-1=>"")+array_filter(array('Functions'=>driver()->functions,'Aggregation'=>driver()->grouping)),$X["fun"]).on_help("event.target.value && event.target.value.replace(/ |\$/, '(') + ')'",1).script("qsl('select').onchange = function () { helpClose();".($x!==""?"":" qsl('select, input', this.parentNode).onchange();")." };","")."($d)":$d)."</div>\n";$s++;}echo"</div></fieldset>\n";}function
|
||
selectSearchPrint(array$Z,array$e,array$w){print_fieldset("search",'Search',$Z);foreach($w
|
||
as$s=>$v){if($v["type"]=="FULLTEXT")echo"<div>(<i>".implode("</i>, <i>",array_map('Adminer\h',$v["columns"]))."</i>) AGAINST"," <input type='search' name='fulltext[$s]' value='".h($_GET["fulltext"][$s])."'>",script("qsl('input').oninput = selectFieldChange;",""),checkbox("boolean[$s]",1,isset($_GET["boolean"][$s]),"BOOL"),"</div>\n";}$Sa="this.parentNode.firstChild.onchange();";foreach(array_merge((array)$_GET["where"],array(array()))as$s=>$X){if(!$X||("$X[col]$X[val]"!=""&&in_array($X["op"],adminer()->operators())))echo"<div>".select_input(" name='where[$s][col]'",$e,$X["col"],($X?"selectFieldChange":"selectAddRow"),"(".'anywhere'.")"),html_select("where[$s][op]",adminer()->operators(),$X["op"],$Sa),"<input type='search' name='where[$s][val]' value='".h($X["val"])."'>",script("mixin(qsl('input'), {oninput: function () { $Sa }, onkeydown: selectSearchKeydown, onsearch: selectSearchSearch});",""),"</div>\n";}echo"</div></fieldset>\n";}function
|
||
selectOrderPrint(array$Lf,array$e,array$w){print_fieldset("sort",'Sort',$Lf);$s=0;foreach((array)$_GET["order"]as$x=>$X){if($X!=""){echo"<div>".select_input(" name='order[$s]'",$e,$X,"selectFieldChange"),checkbox("desc[$s]",1,isset($_GET["desc"][$x]),'descending')."</div>\n";$s++;}}echo"<div>".select_input(" name='order[$s]'",$e,"","selectAddRow"),checkbox("desc[$s]",1,false,'descending')."</div>\n","</div></fieldset>\n";}function
|
||
selectLimitPrint($z){echo"<fieldset><legend>".'Limit'."</legend><div>","<input type='number' name='limit' class='size' value='".intval($z)."'>",script("qsl('input').oninput = selectFieldChange;",""),"</div></fieldset>\n";}function
|
||
selectLengthPrint($si){if($si!==null)echo"<fieldset><legend>".'Text length'."</legend><div>","<input type='number' name='text_length' class='size' value='".h($si)."'>","</div></fieldset>\n";}function
|
||
selectActionPrint(array$w){echo"<fieldset><legend>".'Action'."</legend><div>","<input type='submit' value='".'Select'."'>"," <span id='noindex' title='".'Full table scan'."'></span>","<script".nonce().">\n","const indexColumns = ";$e=array();foreach($w
|
||
as$v){$Gb=reset($v["columns"]);if($v["type"]!="FULLTEXT"&&$Gb)$e[$Gb]=1;}$e[""]=1;foreach($e
|
||
as$x=>$X)json_row($x);echo";\n","selectFieldChange.call(qs('#form')['select']);\n","</script>\n","</div></fieldset>\n";}function
|
||
selectCommandPrint(){return!information_schema(DB);}function
|
||
selectImportPrint(){return!information_schema(DB);}function
|
||
selectEmailPrint(array$rc,array$e){}function
|
||
selectColumnsProcess(array$e,array$w){$M=array();$sd=array();foreach((array)$_GET["columns"]as$x=>$X){if($X["fun"]=="count"||($X["col"]!=""&&(!$X["fun"]||in_array($X["fun"],driver()->functions)||in_array($X["fun"],driver()->grouping)))){$M[$x]=apply_sql_function($X["fun"],($X["col"]!=""?idf_escape($X["col"]):"*"));if(!in_array($X["fun"],driver()->grouping))$sd[]=$M[$x];}}return
|
||
array($M,$sd);}function
|
||
selectSearchProcess(array$n,array$w){$J=array();foreach($w
|
||
as$s=>$v){if($v["type"]=="FULLTEXT"&&$_GET["fulltext"][$s]!="")$J[]="MATCH (".implode(", ",array_map('Adminer\idf_escape',$v["columns"])).") AGAINST (".q($_GET["fulltext"][$s]).(isset($_GET["boolean"][$s])?" IN BOOLEAN MODE":"").")";}foreach((array)$_GET["where"]as$x=>$X){if("$X[col]$X[val]"!=""&&in_array($X["op"],adminer()->operators())){$yg="";$pb=" $X[op]";if(preg_match('~IN$~',$X["op"])){$Rd=process_length($X["val"]);$pb
|
||
.=" ".($Rd!=""?$Rd:"(NULL)");}elseif($X["op"]=="SQL")$pb=" $X[val]";elseif($X["op"]=="LIKE %%")$pb=" LIKE ".adminer()->processInput(idx($n,$X["col"],array()),"%$X[val]%");elseif($X["op"]=="ILIKE %%")$pb=" ILIKE ".adminer()->processInput($n[$X["col"]],"%$X[val]%");elseif($X["op"]=="FIND_IN_SET"){$yg="$X[op](".q($X["val"]).", ";$pb=")";}elseif(!preg_match('~NULL$~',$X["op"]))$pb
|
||
.=" ".adminer()->processInput($n[$X["col"]],$X["val"]);if($X["col"]!="")$J[]=$yg.driver()->convertSearch(idf_escape($X["col"]),$X,$n[$X["col"]]).$pb;else{$ib=array();foreach($n
|
||
as$C=>$m){if(isset($m["privileges"]["where"])&&(preg_match('~^[-\d.'.(preg_match('~IN$~',$X["op"])?',':'').']+$~',$X["val"])||!preg_match('~'.number_type().'|bit~',$m["type"]))&&(!preg_match("~[\x80-\xFF]~",$X["val"])||preg_match('~char|text|enum|set~',$m["type"]))&&(!preg_match('~date|timestamp~',$m["type"])||preg_match('~^\d+-\d+-\d+~',$X["val"])))$ib[]=$yg.driver()->convertSearch(idf_escape($C),$X,$m).$pb;}$J[]=($ib?"(".implode(" OR ",$ib).")":"1 = 0");}}}return$J;}function
|
||
selectOrderProcess(array$n,array$w){$J=array();foreach((array)$_GET["order"]as$x=>$X){if($X!="")$J[]=(preg_match('~^((COUNT\(DISTINCT |[A-Z0-9_]+\()(`(?:[^`]|``)+`|"(?:[^"]|"")+")\)|COUNT\(\*\))$~',$X)?$X:idf_escape($X)).(isset($_GET["desc"][$x])?" DESC":"");}return$J;}function
|
||
selectLimitProcess(){return(isset($_GET["limit"])?intval($_GET["limit"]):50);}function
|
||
selectLengthProcess(){return(isset($_GET["text_length"])?"$_GET[text_length]":"100");}function
|
||
selectEmailProcess(array$Z,array$gd){return
|
||
false;}function
|
||
selectQueryBuild(array$M,array$Z,array$sd,array$Lf,$z,$E){return"";}function
|
||
messageQuery($H,$ti,$Pc=false){restart_session();$Fd=&get_session("queries");if(!idx($Fd,$_GET["db"]))$Fd[$_GET["db"]]=array();if(strlen($H)>1e6)$H=preg_replace('~[\x80-\xFF]+$~','',substr($H,0,1e6))."\n…";$Fd[$_GET["db"]][]=array($H,time(),$ti);$Nh="sql-".count($Fd[$_GET["db"]]);$J="<a href='#$Nh' class='toggle'>".'SQL command'."</a>\n";if(!$Pc&&($sj=driver()->warnings())){$t="warnings-".count($Fd[$_GET["db"]]);$J="<a href='#$t' class='toggle'>".'Warnings'."</a>, $J<div id='$t' class='hidden'>\n$sj</div>\n";}return" <span class='time'>".@date("H:i:s")."</span>"." $J<div id='$Nh' class='hidden'><pre><code class='jush-".JUSH."'>".shorten_utf8($H,1000)."</code></pre>".($ti?" <span class='time'>($ti)</span>":'').(support("sql")?'<p><a href="'.h(str_replace("db=".urlencode(DB),"db=".urlencode($_GET["db"]),ME).'sql=&history='.(count($Fd[$_GET["db"]])-1)).'">'.'Edit'.'</a>':'').'</div>';}function
|
||
editRowPrint($R,array$n,$K,$Zi){}function
|
||
editFunctions(array$m){$J=($m["null"]?"NULL/":"");$Zi=isset($_GET["select"])||where($_GET);foreach(array(driver()->insertFunctions,driver()->editFunctions)as$x=>$nd){if(!$x||(!isset($_GET["call"])&&$Zi)){foreach($nd
|
||
as$mg=>$X){if(!$mg||preg_match("~$mg~",$m["type"]))$J
|
||
.="/$X";}}if($x&&$nd&&!preg_match('~set|blob|bytea|raw|file|bool~',$m["type"]))$J
|
||
.="/SQL";}if($m["auto_increment"]&&!$Zi)$J='Auto Increment';return
|
||
explode("/",$J);}function
|
||
editInput($R,array$m,$ya,$Y){if($m["type"]=="enum")return(isset($_GET["select"])?"<label><input type='radio'$ya value='-1' checked><i>".'original'."</i></label> ":"").($m["null"]?"<label><input type='radio'$ya value=''".($Y!==null||isset($_GET["select"])?"":" checked")."><i>NULL</i></label> ":"").enum_input("radio",$ya,$m,$Y,$Y===0?0:null);return"";}function
|
||
editHint($R,array$m,$Y){return"";}function
|
||
processInput(array$m,$Y,$r=""){if($r=="SQL")return$Y;$C=$m["field"];$J=q($Y);if(preg_match('~^(now|getdate|uuid)$~',$r))$J="$r()";elseif(preg_match('~^current_(date|timestamp)$~',$r))$J=$r;elseif(preg_match('~^([+-]|\|\|)$~',$r))$J=idf_escape($C)." $r $J";elseif(preg_match('~^[+-] interval$~',$r))$J=idf_escape($C)." $r ".(preg_match("~^(\\d+|'[0-9.: -]') [A-Z_]+\$~i",$Y)?$Y:$J);elseif(preg_match('~^(addtime|subtime|concat)$~',$r))$J="$r(".idf_escape($C).", $J)";elseif(preg_match('~^(md5|sha1|password|encrypt)$~',$r))$J="$r($J)";return
|
||
unconvert_field($m,$J);}function
|
||
dumpOutput(){$J=array('text'=>'open','file'=>'save');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($j){}function
|
||
dumpTable($R,$Vh,$me=0){if($_POST["format"]!="sql"){echo"\xef\xbb\xbf";if($Vh)dump_csv(array_keys(fields($R)));}else{if($me==2){$n=array();foreach(fields($R)as$C=>$m)$n[]=idf_escape($C)." $m[full_type]";$h="CREATE TABLE ".table($R)." (".implode(", ",$n).")";}else$h=create_sql($R,$_POST["auto_increment"],$Vh);set_utf8mb4($h);if($Vh&&$h){if($Vh=="DROP+CREATE"||$me==1)echo"DROP ".($me==2?"VIEW":"TABLE")." IF EXISTS ".table($R).";\n";if($me==1)$h=remove_definer($h);echo"$h;\n\n";}}}function
|
||
dumpData($R,$Vh,$H){if($Vh){$Ne=(JUSH=="sqlite"?0:1048576);$n=array();$Od=false;if($_POST["format"]=="sql"){if($Vh=="TRUNCATE+INSERT")echo
|
||
truncate_sql($R).";\n";$n=fields($R);if(JUSH=="mssql"){foreach($n
|
||
as$m){if($m["auto_increment"]){echo"SET IDENTITY_INSERT ".table($R)." ON;\n";$Od=true;break;}}}}$I=connection()->query($H,1);if($I){$ce="";$Na="";$re=array();$od=array();$Xh="";$Sc=($R!=''?'fetch_assoc':'fetch_row');$_b=0;while($K=$I->$Sc()){if(!$re){$kj=array();foreach($K
|
||
as$X){$m=$I->fetch_field();if(idx($n[$m->name],'generated')){$od[$m->name]=true;continue;}$re[]=$m->name;$x=idf_escape($m->name);$kj[]="$x = VALUES($x)";}$Xh=($Vh=="INSERT+UPDATE"?"\nON DUPLICATE KEY UPDATE ".implode(", ",$kj):"").";\n";}if($_POST["format"]!="sql"){if($Vh=="table"){dump_csv($re);$Vh="INSERT";}dump_csv($K);}else{if(!$ce)$ce="INSERT INTO ".table($R)." (".implode(", ",array_map('Adminer\idf_escape',$re)).") VALUES";foreach($K
|
||
as$x=>$X){if($od[$x]){unset($K[$x]);continue;}$m=$n[$x];$K[$x]=($X!==null?unconvert_field($m,preg_match(number_type(),$m["type"])&&!preg_match('~\[~',$m["full_type"])&&is_numeric($X)?$X:q(($X===false?0:$X))):"NULL");}$ih=($Ne?"\n":" ")."(".implode(",\t",$K).")";if(!$Na)$Na=$ce.$ih;elseif(JUSH=='mssql'?$_b%1000!=0:strlen($Na)+4+strlen($ih)+strlen($Xh)<$Ne)$Na
|
||
.=",$ih";else{echo$Na.$Xh;$Na=$ce.$ih;}}$_b++;}if($Na)echo$Na.$Xh;}elseif($_POST["format"]=="sql")echo"-- ".str_replace("\n"," ",connection()->error)."\n";if($Od)echo"SET IDENTITY_INSERT ".table($R)." OFF;\n";}}function
|
||
dumpFilename($Md){return
|
||
friendly_url($Md!=""?$Md:(SERVER!=""?SERVER:"localhost"));}function
|
||
dumpHeaders($Md,$ff=false){$Yf=$_POST["output"];$Kc=(preg_match('~sql~',$_POST["format"])?"sql":($ff?"tar":"csv"));header("Content-Type: ".($Yf=="gz"?"application/x-gzip":($Kc=="tar"?"application/x-tar":($Kc=="sql"||$Yf!="file"?"text/plain":"text/csv")."; charset=utf-8")));if($Yf=="gz"){ob_start(function($Q){return
|
||
gzencode($Q);},1e6);}return$Kc;}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=">'.'Alter database'."</a>\n":""),(support("scheme")?"<a href='".h(ME)."scheme='>".($_GET["ns"]!=""?'Alter schema':'Create schema')."</a>\n":""),($_GET["ns"]!==""?'<a href="'.h(ME).'schema=">'.'Database schema'."</a>\n":""),(support("privileges")?"<a href='".h(ME)."privileges='>".'Privileges'."</a>\n":"");return
|
||
true;}function
|
||
navigation($cf){echo"<h1>".adminer()->name()." <span class='version'>".VERSION;$nf=$_COOKIE["adminer_version"];echo" <a href='https://www.adminer.org/#download'".target_blank()." id='version'>".(version_compare(VERSION,$nf)<0?h($nf):"")."</a>","</span></h1>\n";if($cf=="auth"){$Yf="";foreach((array)$_SESSION["pwds"]as$mj=>$_h){foreach($_h
|
||
as$N=>$hj){$C=h(get_setting("vendor-$mj-$N")?:get_driver($mj));foreach($hj
|
||
as$V=>$F){if($F!==null){$Nb=$_SESSION["db"][$mj][$N][$V];foreach(($Nb?array_keys($Nb):array(""))as$j)$Yf
|
||
.="<li><a href='".h(auth_url($mj,$N,$V,$j))."'>($C) ".h($V.($N!=""?"@".adminer()->serverName($N):"").($j!=""?" - $j":""))."</a>\n";}}}}if($Yf)echo"<ul id='logins'>\n$Yf</ul>\n".script("mixin(qs('#logins'), {onmouseover: menuOver, onmouseout: menuOut});");}else{$T=array();if($_GET["ns"]!==""&&!$cf&&DB!=""){connection()->select_db(DB);$T=table_status('',true);}adminer()->syntaxHighlighting($T);adminer()->databasesPrint($cf);$ia=array();if(DB==""||!$cf){if(support("sql")){$ia[]="<a href='".h(ME)."sql='".bold(isset($_GET["sql"])&&!isset($_GET["import"])).">".'SQL command'."</a>";$ia[]="<a href='".h(ME)."import='".bold(isset($_GET["import"])).">".'Import'."</a>";}$ia[]="<a href='".h(ME)."dump=".urlencode(isset($_GET["table"])?$_GET["table"]:$_GET["select"])."' id='dump'".bold(isset($_GET["dump"])).">".'Export'."</a>";}$Sd=$_GET["ns"]!==""&&!$cf&&DB!="";if($Sd)$ia[]='<a href="'.h(ME).'create="'.bold($_GET["create"]==="").">".'Create table'."</a>";echo($ia?"<p class='links'>\n".implode("\n",$ia)."\n":"");if($Sd){if($T)adminer()->tablesPrint($T);else
|
||
echo"<p class='message'>".'No tables.'."</p>\n";}}}function
|
||
syntaxHighlighting(array$T){echo
|
||
script_src(preg_replace("~\\?.*~","",ME)."?file=jush.js&version=5.2.0",true);if(support("sql")){echo"<script".nonce().">\n";if($T){$Ee=array();foreach($T
|
||
as$R=>$U)$Ee[]=preg_quote($R,'/');echo"var jushLinks = { ".JUSH.": [ '".js_escape(ME).(support("table")?"table=":"select=")."\$&', /\\b(".implode("|",$Ee).")\\b/g ] };\n";foreach(array("bac","bra","sqlite_quo","mssql_bra")as$X)echo"jushLinks.$X = jushLinks.".JUSH.";\n";if(isset($_GET["sql"])||isset($_GET["trigger"])||isset($_GET["check"])){$ii=array_fill_keys(array_keys($T),array());foreach(driver()->allFields()as$R=>$n){foreach($n
|
||
as$m)$ii[$R][]=$m["field"];}echo"addEventListener('DOMContentLoaded', () => { autocompleter = jush.autocompleteSql('".idf_escape("")."', ".json_encode($ii)."); });\n";}}echo"</script>\n";}echo
|
||
script("syntaxHighlighting('".preg_replace('~^(\d\.?\d).*~s','\1',connection()->server_info)."', '".connection()->flavor."');");}function
|
||
databasesPrint($cf){$i=adminer()->databases();if(DB&&$i&&!in_array(DB,$i))array_unshift($i,DB);echo"<form action=''>\n<p id='dbs'>\n";hidden_fields_get();$Lb=script("mixin(qsl('select'), {onmousedown: dbMouseDown, onchange: dbChange});");echo"<label title='".'Database'."'>".'DB'.": ".($i?html_select("db",array(""=>"")+$i,DB).$Lb:"<input name='db' value='".h(DB)."' autocapitalize='off' size='19'>\n")."</label>","<input type='submit' value='".'Use'."'".($i?" class='hidden'":"").">\n";if(support("scheme")){if($cf!="db"&&DB!=""&&connection()->select_db(DB)){echo"<br><label>".'Schema'.": ".html_select("ns",array(""=>"")+adminer()->schemas(),$_GET["ns"])."$Lb</label>";if($_GET["ns"]!="")set_schema($_GET["ns"]);}}foreach(array("import","sql","schema","dump","privileges")as$X){if(isset($_GET[$X])){echo
|
||
input_hidden($X);break;}}echo"</p></form>\n";}function
|
||
tablesPrint(array$T){echo"<ul id='tables'>".script("mixin(qs('#tables'), {onmouseover: menuOver, onmouseout: menuOut});");foreach($T
|
||
as$R=>$P){$C=adminer()->tableName($P);if($C!="")echo'<li><a href="'.h(ME).'select='.urlencode($R).'"'.bold($_GET["select"]==$R||$_GET["edit"]==$R,"select")." title='".'Select data'."'>".'select'."</a> ",(support("table")||support("indexes")?'<a href="'.h(ME).'table='.urlencode($R).'"'.bold(in_array($R,array($_GET["table"],$_GET["create"],$_GET["indexes"],$_GET["foreign"],$_GET["trigger"],$_GET["check"],$_GET["view"])),(is_view($P)?"view":"structure"))." title='".'Show structure'."'>$C</a>":"<span>$C</span>")."\n";}echo"</ul>\n";}}class
|
||
Plugins{private
|
||
static$ta=array('dumpFormat'=>true,'dumpOutput'=>true,'editRowPrint'=>true,'editFunctions'=>true,'config'=>true);var$plugins;var$error='';private$hooks=array();function
|
||
__construct($rg){if($rg===null){$rg=array();$Ha="adminer-plugins";if(is_dir($Ha)){foreach(glob("$Ha/*.php")as$o)$Td=include_once"./$o";}$Ed=" href='https://www.adminer.org/plugins/#use'".target_blank();if(file_exists("$Ha.php")){$Td=include_once"./$Ha.php";if(is_array($Td)){foreach($Td
|
||
as$qg)$rg[get_class($qg)]=$qg;}else$this->error
|
||
.=sprintf('%s must <a%s>return an array</a>.',"<b>$Ha.php</b>",$Ed)."<br>";}foreach(get_declared_classes()as$cb){if(!$rg[$cb]&&preg_match('~^Adminer\w~i',$cb)){$Sg=new
|
||
\ReflectionClass($cb);$ub=$Sg->getConstructor();if($ub&&$ub->getNumberOfRequiredParameters())$this->error
|
||
.=sprintf('<a%s>Configure</a> %s in %s.',$Ed,"<b>$cb</b>","<b>$Ha.php</b>")."<br>";else$rg[$cb]=new$cb;}}}$this->plugins=$rg;$la=new
|
||
Adminer;$rg[]=$la;$Sg=new
|
||
\ReflectionObject($la);foreach($Sg->getMethods()as$af){foreach($rg
|
||
as$qg){$C=$af->getName();if(method_exists($qg,$C))$this->hooks[$C][]=$qg;}}}function
|
||
__call($C,array$dg){$ua=array();foreach($dg
|
||
as$x=>$X)$ua[]=&$dg[$x];$J=null;foreach($this->hooks[$C]as$qg){$Y=call_user_func_array(array($qg,$C),$ua);if($Y!==null){if(!self::$ta[$C])return$Y;$J=$Y+(array)$J;}}return$J;}}abstract
|
||
class
|
||
Plugin{protected$translations=array();function
|
||
description(){return$this->lang('');}function
|
||
screenshot(){return"";}protected
|
||
function
|
||
lang($u,$sf=null){$ua=func_get_args();$ua[0]=idx($this->translations[LANG],$u)?:$u;return
|
||
call_user_func_array('Adminer\lang_format',$ua);}}Adminer::$ee=(function_exists('adminer_object')?adminer_object():(is_dir("adminer-plugins")||file_exists("adminer-plugins.php")?new
|
||
Plugins(null):new
|
||
Adminer));SqlDriver::$dc=array("server"=>"MySQL / MariaDB")+SqlDriver::$dc;if(!defined('Adminer\DRIVER')){define('Adminer\DRIVER',"server");if(extension_loaded("mysqli")&&$_GET["ext"]!="pdo"){class
|
||
Db
|
||
extends
|
||
\MySQLi{static$ee;var$extension="MySQLi",$flavor='';function
|
||
__construct(){parent::init();}function
|
||
attach($N,$V,$F){mysqli_report(MYSQLI_REPORT_OFF);list($Id,$sg)=explode(":",$N,2);$Qh=adminer()->connectSsl();if($Qh)$this->ssl_set($Qh['key'],$Qh['cert'],$Qh['ca'],'','');$J=@$this->real_connect(($N!=""?$Id:ini_get("mysqli.default_host")),($N.$V!=""?$V:ini_get("mysqli.default_user")),($N.$V.$F!=""?$F:ini_get("mysqli.default_pw")),null,(is_numeric($sg)?intval($sg):ini_get("mysqli.default_port")),(is_numeric($sg)?$sg:null),($Qh?($Qh['verify']!==false?2048:64):0));$this->options(MYSQLI_OPT_LOCAL_INFILE,false);return($J?'':$this->error);}function
|
||
set_charset($Ua){if(parent::set_charset($Ua))return
|
||
true;parent::set_charset('utf8');return$this->query("SET NAMES $Ua");}function
|
||
next_result(){return
|
||
self::more_results()&&parent::next_result();}function
|
||
quote($Q){return"'".$this->escape_string($Q)."'";}}}elseif(extension_loaded("mysql")&&!((ini_bool("sql.safe_mode")||ini_bool("mysql.allow_local_infile"))&&extension_loaded("pdo_mysql"))){class
|
||
Db
|
||
extends
|
||
SqlDb{private$link;function
|
||
attach($N,$V,$F){if(ini_bool("mysql.allow_local_infile"))return
|
||
sprintf('Disable %s or enable %s or %s extensions.',"'mysql.allow_local_infile'","MySQLi","PDO_MySQL");$this->link=@mysql_connect(($N!=""?$N:ini_get("mysql.default_host")),("$N$V"!=""?$V:ini_get("mysql.default_user")),("$N$V$F"!=""?$F:ini_get("mysql.default_password")),true,131072);if(!$this->link)return
|
||
mysql_error();$this->server_info=mysql_get_server_info($this->link);return'';}function
|
||
set_charset($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,$Ri=false){$I=@($Ri?mysql_unbuffered_query($H,$this->link):mysql_query($H,$this->link));$this->error="";if(!$I){$this->errno=mysql_errno($this->link);$this->error=mysql_error($this->link);return
|
||
false;}if($I===true){$this->affected_rows=mysql_affected_rows($this->link);$this->info=mysql_info($this->link);return
|
||
true;}return
|
||
new
|
||
Result($I);}}class
|
||
Result{var$num_rows;private$result;private$offset=0;function
|
||
__construct($I){$this->result=$I;$this->num_rows=mysql_num_rows($I);}function
|
||
fetch_assoc(){return
|
||
mysql_fetch_assoc($this->result);}function
|
||
fetch_row(){return
|
||
mysql_fetch_row($this->result);}function
|
||
fetch_field(){$J=mysql_fetch_field($this->result,$this->offset++);$J->orgtable=$J->table;$J->charsetnr=($J->blob?63:0);return$J;}function
|
||
__destruct(){mysql_free_result($this->result);}}}elseif(extension_loaded("pdo_mysql")){class
|
||
Db
|
||
extends
|
||
PdoDb{var$extension="PDO_MySQL";function
|
||
attach($N,$V,$F){$Jf=array(\PDO::MYSQL_ATTR_LOCAL_INFILE=>false);$Qh=adminer()->connectSsl();if($Qh){if($Qh['key'])$Jf[\PDO::MYSQL_ATTR_SSL_KEY]=$Qh['key'];if($Qh['cert'])$Jf[\PDO::MYSQL_ATTR_SSL_CERT]=$Qh['cert'];if($Qh['ca'])$Jf[\PDO::MYSQL_ATTR_SSL_CA]=$Qh['ca'];if(isset($Qh['verify']))$Jf[\PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT]=$Qh['verify'];}return$this->dsn("mysql:charset=utf8;host=".str_replace(":",";unix_socket=",preg_replace('~:(\d)~',';port=\1',$N)),$V,$F,$Jf);}function
|
||
set_charset($Ua){return$this->query("SET NAMES $Ua");}function
|
||
select_db($Kb){return$this->query("USE ".idf_escape($Kb));}function
|
||
query($H,$Ri=false){$this->pdo->setAttribute(\PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,!$Ri);return
|
||
parent::query($H,$Ri);}}}class
|
||
Driver
|
||
extends
|
||
SqlDriver{static$Mc=array("MySQLi","MySQL","PDO_MySQL");static$oe="sql";var$unsigned=array("unsigned","zerofill","unsigned zerofill");var$operators=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","REGEXP","IN","FIND_IN_SET","IS NULL","NOT LIKE","NOT REGEXP","NOT IN","IS NOT NULL","SQL");var$functions=array("char_length","date","from_unixtime","lower","round","floor","ceil","sec_to_time","time_to_sec","upper");var$grouping=array("avg","count","count distinct","group_concat","max","min","sum");static
|
||
function
|
||
connect($N,$V,$F){$f=parent::connect($N,$V,$F);if(is_string($f)){if(function_exists('iconv')&&!is_utf8($f)&&strlen($ih=iconv("windows-1250","utf-8",$f))>strlen($f))$f=$ih;return$f;}$f->set_charset(charset($f));$f->query("SET sql_quote_show_create = 1, autocommit = 1");$f->flavor=(preg_match('~MariaDB~',$f->server_info)?'maria':'mysql');add_driver(DRIVER,($f->flavor=='maria'?"MariaDB":"MySQL"));return$f;}function
|
||
__construct(Db$f){parent::__construct($f);$this->types=array('Numbers'=>array("tinyint"=>3,"smallint"=>5,"mediumint"=>8,"int"=>10,"bigint"=>20,"decimal"=>66,"float"=>12,"double"=>21),'Date and time'=>array("date"=>10,"datetime"=>19,"timestamp"=>19,"time"=>10,"year"=>4),'Strings'=>array("char"=>255,"varchar"=>65535,"tinytext"=>255,"text"=>65535,"mediumtext"=>16777215,"longtext"=>4294967295),'Lists'=>array("enum"=>65535,"set"=>64),'Binary'=>array("bit"=>20,"binary"=>255,"varbinary"=>65535,"tinyblob"=>255,"blob"=>65535,"mediumblob"=>16777215,"longblob"=>4294967295),'Geometry'=>array("geometry"=>0,"point"=>0,"linestring"=>0,"polygon"=>0,"multipoint"=>0,"multilinestring"=>0,"multipolygon"=>0,"geometrycollection"=>0),);$this->insertFunctions=array("char"=>"md5/sha1/password/encrypt/uuid","binary"=>"md5/sha1","date|time"=>"now",);$this->editFunctions=array(number_type()=>"+/-","date"=>"+ interval/- interval","time"=>"addtime/subtime","char|text"=>"concat",);if(min_version('5.7.8',10.2,$f))$this->types['Strings']["json"]=4294967295;if(min_version('',10.7,$f)){$this->types['Strings']["uuid"]=128;$this->insertFunctions['uuid']='uuid';}if(min_version(9,'',$f)){$this->types['Numbers']["vector"]=16383;$this->insertFunctions['vector']='string_to_vector';}if(min_version(5.7,10.2,$f))$this->generated=array("STORED","VIRTUAL");}function
|
||
unconvertFunction(array$m){return(preg_match("~binary~",$m["type"])?"<code class='jush-sql'>UNHEX</code>":($m["type"]=="bit"?doc_link(array('sql'=>'bit-value-literals.html'),"<code>b''</code>"):(preg_match("~geometry|point|linestring|polygon~",$m["type"])?"<code class='jush-sql'>GeomFromText</code>":"")));}function
|
||
insert($R,array$O){return($O?parent::insert($R,$O):queries("INSERT INTO ".table($R)." ()\nVALUES ()"));}function
|
||
insertUpdate($R,array$L,array$G){$e=array_keys(reset($L));$yg="INSERT INTO ".table($R)." (".implode(", ",$e).") VALUES\n";$kj=array();foreach($e
|
||
as$x)$kj[$x]="$x = VALUES($x)";$Xh="\nON DUPLICATE KEY UPDATE ".implode(", ",$kj);$kj=array();$y=0;foreach($L
|
||
as$O){$Y="(".implode(", ",$O).")";if($kj&&(strlen($yg)+$y+strlen($Y)+strlen($Xh)>1e6)){if(!queries($yg.implode(",\n",$kj).$Xh))return
|
||
false;$kj=array();$y=0;}$kj[]=$Y;$y+=strlen($Y)+2;}return
|
||
queries($yg.implode(",\n",$kj).$Xh);}function
|
||
slowQuery($H,$ui){if(min_version('5.7.8','10.1.2')){if($this->conn->flavor=='maria')return"SET STATEMENT max_statement_time=$ui FOR $H";elseif(preg_match('~^(SELECT\b)(.+)~is',$H,$B))return"$B[1] /*+ MAX_EXECUTION_TIME(".($ui*1000).") */ $B[2]";}}function
|
||
convertSearch($u,array$X,array$m){return(preg_match('~char|text|enum|set~',$m["type"])&&!preg_match("~^utf8~",$m["collation"])&&preg_match('~[\x80-\xFF]~',$X['val'])?"CONVERT($u USING ".charset($this->conn).")":$u);}function
|
||
warnings(){$I=$this->conn->query("SHOW WARNINGS");if($I&&$I->num_rows){ob_start();print_select_result($I);return
|
||
ob_get_clean();}}function
|
||
tableHelp($C,$me=false){$He=($this->conn->flavor=='maria');if(information_schema(DB))return
|
||
strtolower("information-schema-".($He?"$C-table/":str_replace("_","-",$C)."-table.html"));if(DB=="mysql")return($He?"mysql$C-table/":"system-schema.html");}function
|
||
hasCStyleEscapes(){static$Pa;if($Pa===null){$Oh=get_val("SHOW VARIABLES LIKE 'sql_mode'",1,$this->conn);$Pa=(strpos($Oh,'NO_BACKSLASH_ESCAPES')===false);}return$Pa;}function
|
||
engines(){$J=array();foreach(get_rows("SHOW ENGINES")as$K){if(preg_match("~YES|DEFAULT~",$K["Support"]))$J[]=$K["Engine"];}return$J;}}function
|
||
idf_escape($u){return"`".str_replace("`","``",$u)."`";}function
|
||
table($u){return
|
||
idf_escape($u);}function
|
||
get_databases($dd){$J=get_session("dbs");if($J===null){$H="SELECT SCHEMA_NAME FROM information_schema.SCHEMATA ORDER BY SCHEMA_NAME";$J=($dd?slow_query($H):get_vals($H));restart_session();set_session("dbs",$J);stop_session();}return$J;}function
|
||
limit($H,$Z,$z,$D=0,$vh=" "){return" $H$Z".($z?$vh."LIMIT $z".($D?" OFFSET $D":""):"");}function
|
||
limit1($R,$H,$Z,$vh="\n"){return
|
||
limit($H,$Z,1,0,$vh);}function
|
||
db_collation($j,array$hb){$J=null;$h=get_val("SHOW CREATE DATABASE ".idf_escape($j),1);if(preg_match('~ COLLATE ([^ ]+)~',$h,$B))$J=$B[1];elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$h,$B))$J=$hb[$B[1]][-1];return$J;}function
|
||
logged_user(){return
|
||
get_val("SELECT USER()");}function
|
||
tables_list(){return
|
||
get_key_vals("SELECT TABLE_NAME, TABLE_TYPE FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ORDER BY TABLE_NAME");}function
|
||
count_tables(array$i){$J=array();foreach($i
|
||
as$j)$J[$j]=count(get_vals("SHOW TABLES IN ".idf_escape($j)));return$J;}function
|
||
table_status($C="",$Qc=false){$J=array();foreach(get_rows($Qc?"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;$J[$K["Name"]]=$K;}return$J;}function
|
||
is_view(array$S){return$S["Engine"]===null;}function
|
||
fk_support(array$S){return
|
||
preg_match('~InnoDB|IBMDB2I'.(min_version(5.6)?'|NDB':'').'~i',$S["Engine"]);}function
|
||
fields($R){$He=(connection()->flavor=='maria');$J=array();foreach(get_rows("SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = ".q($R)." ORDER BY ORDINAL_POSITION")as$K){$m=$K["COLUMN_NAME"];$U=$K["COLUMN_TYPE"];$pd=$K["GENERATION_EXPRESSION"];$Nc=$K["EXTRA"];preg_match('~^(VIRTUAL|PERSISTENT|STORED)~',$Nc,$od);preg_match('~^([^( ]+)(?:\((.+)\))?( unsigned)?( zerofill)?$~',$U,$Ke);$k=$K["COLUMN_DEFAULT"];if($k!=""){$le=preg_match('~text|json~',$Ke[1]);if(!$He&&$le)$k=preg_replace("~^(_\w+)?('.*')$~",'\2',stripslashes($k));if($He||$le){$k=($k=="NULL"?null:preg_replace_callback("~^'(.*)'$~",function($B){return
|
||
stripslashes(str_replace("''","'",$B[1]));},$k));}if(!$He&&preg_match('~binary~',$Ke[1])&&preg_match('~^0x(\w*)$~',$k,$B))$k=pack("H*",$B[1]);}$J[$m]=array("field"=>$m,"full_type"=>$U,"type"=>$Ke[1],"length"=>$Ke[2],"unsigned"=>ltrim($Ke[3].$Ke[4]),"default"=>($od?($He?$pd:stripslashes($pd)):$k),"null"=>($K["IS_NULLABLE"]=="YES"),"auto_increment"=>($Nc=="auto_increment"),"on_update"=>(preg_match('~\bon update (\w+)~i',$Nc,$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"=>($od[1]=="PERSISTENT"?"STORED":$od[1]),);}return$J;}function
|
||
indexes($R,$g=null){$J=array();foreach(get_rows("SHOW INDEX FROM ".table($R),$g)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){static$mg='(?:`(?:[^`]|``)+`|"(?:[^"]|"")+")';$J=array();$Ab=get_val("SHOW CREATE TABLE ".table($R),1);if($Ab){preg_match_all("~CONSTRAINT ($mg) FOREIGN KEY ?\\(((?:$mg,? ?)+)\\) REFERENCES ($mg)(?:\\.($mg))? \\(((?:$mg,? ?)+)\\)(?: ON DELETE (".driver()->onActions."))?(?: ON UPDATE (".driver()->onActions."))?~",$Ab,$Le,PREG_SET_ORDER);foreach($Le
|
||
as$B){preg_match_all("~$mg~",$B[2],$Ih);preg_match_all("~$mg~",$B[5],$mi);$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',$Ih[0]),"target"=>array_map('Adminer\idf_unescape',$mi[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$x=>$X)sort($J[$x]);return$J;}function
|
||
information_schema($j){return($j=="information_schema")||(min_version(5.5)&&$j=="performance_schema");}function
|
||
error(){return
|
||
h(preg_replace('~^You have an error.*syntax to use~U',"Syntax error",connection()->error));}function
|
||
create_database($j,$c){return
|
||
queries("CREATE DATABASE ".idf_escape($j).($c?" COLLATE ".q($c):""));}function
|
||
drop_databases(array$i){$J=apply_queries("DROP DATABASE",$i,'Adminer\idf_escape');restart_session();set_session("dbs",null);return$J;}function
|
||
rename_database($C,$c){$J=false;if(create_database($C,$c)){$T=array();$pj=array();foreach(tables_list()as$R=>$U){if($U=='VIEW')$pj[]=$R;else$T[]=$R;}$J=(!$T&&!$pj)||move_tables($T,$pj,$C);drop_databases($J?array(DB):array());}return$J;}function
|
||
auto_increment(){$Aa=" PRIMARY KEY";if($_GET["create"]!=""&&$_POST["auto_increment_col"]){foreach(indexes($_GET["create"])as$v){if(in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"],$v["columns"],true)){$Aa="";break;}if($v["type"]=="PRIMARY")$Aa=" UNIQUE";}}return" AUTO_INCREMENT$Aa";}function
|
||
alter_table($R,$C,array$n,array$fd,$mb,$uc,$c,$_a,$ig){$b=array();foreach($n
|
||
as$m){if($m[1]){$k=$m[1][3];if(preg_match('~ GENERATED~',$k)){$m[1][3]=(connection()->flavor=='maria'?"":$m[1][2]);$m[1][2]=$k;}$b[]=($R!=""?($m[0]!=""?"CHANGE ".idf_escape($m[0]):"ADD"):" ")." ".implode($m[1]).($R!=""?$m[2]:"");}else$b[]="DROP ".idf_escape($m[0]);}$b=array_merge($b,$fd);$P=($mb!==null?" COMMENT=".q($mb):"").($uc?" ENGINE=".q($uc):"").($c?" COLLATE ".q($c):"").($_a!=""?" AUTO_INCREMENT=$_a":"");if($R=="")return
|
||
queries("CREATE TABLE ".table($C)." (\n".implode(",\n",$b)."\n)$P$ig");if($R!=$C)$b[]="RENAME TO ".table($C);if($P)$b[]=ltrim($P);return($b||$ig?queries("ALTER TABLE ".table($R)."\n".implode(",\n",$b).$ig):true);}function
|
||
alter_indexes($R,$b){$Ta=array();foreach($b
|
||
as$X)$Ta[]=($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(",",$Ta));}function
|
||
truncate_tables(array$T){return
|
||
apply_queries("TRUNCATE TABLE",$T);}function
|
||
drop_views(array$pj){return
|
||
queries("DROP VIEW ".implode(", ",array_map('Adminer\table',$pj)));}function
|
||
drop_tables(array$T){return
|
||
queries("DROP TABLE ".implode(", ",array_map('Adminer\table',$T)));}function
|
||
move_tables(array$T,array$pj,$mi){$Wg=array();foreach($T
|
||
as$R)$Wg[]=table($R)." TO ".idf_escape($mi).".".table($R);if(!$Wg||queries("RENAME TABLE ".implode(", ",$Wg))){$Sb=array();foreach($pj
|
||
as$R)$Sb[table($R)]=view($R);connection()->select_db($mi);$j=idf_escape(DB);foreach($Sb
|
||
as$C=>$oj){if(!queries("CREATE VIEW $C AS ".str_replace(" $j."," ",$oj["select"]))||!queries("DROP VIEW $j.$C"))return
|
||
false;}return
|
||
true;}return
|
||
false;}function
|
||
copy_tables(array$T,array$pj,$mi){queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");foreach($T
|
||
as$R){$C=($mi==DB?table("copy_$R"):idf_escape($mi).".".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){$Ki=$K["Trigger"];if(!queries("CREATE TRIGGER ".($mi==DB?idf_escape("copy_$Ki"):idf_escape($mi).".".idf_escape($Ki))." $K[Timing] $K[Event] ON $C FOR EACH ROW\n$K[Statement];"))return
|
||
false;}}foreach($pj
|
||
as$R){$C=($mi==DB?table("copy_$R"):idf_escape($mi).".".table($R));$oj=view($R);if(($_POST["overwrite"]&&!queries("DROP VIEW IF EXISTS $C"))||!queries("CREATE VIEW $C AS $oj[select]"))return
|
||
false;}return
|
||
true;}function
|
||
trigger($C,$R){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){$ra=array("bool","boolean","integer","double precision","real","dec","numeric","fixed","national char","national varchar");$Jh="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$wc=driver()->enumLength;$Pi="((".implode("|",array_merge(array_keys(driver()->types()),$ra)).")\\b(?:\\s*\\(((?:[^'\")]|$wc)++)\\))?"."\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?)(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s,]+)['\"]?)?";$mg="$Jh*(".($U=="FUNCTION"?"":driver()->inout).")?\\s*(?:`((?:[^`]|``)*)`\\s*|\\b(\\S+)\\s+)$Pi";$h=get_val("SHOW CREATE $U ".idf_escape($C),2);preg_match("~\\(((?:$mg\\s*,?)*)\\)\\s*".($U=="FUNCTION"?"RETURNS\\s+$Pi\\s+":"")."(.*)~is",$h,$B);$n=array();preg_match_all("~$mg\\s*,?~is",$B[1],$Le,PREG_SET_ORDER);foreach($Le
|
||
as$cg)$n[]=array("field"=>str_replace("``","`",$cg[2]).$cg[3],"type"=>strtolower($cg[5]),"length"=>preg_replace_callback("~$wc~s",'Adminer\normalize_enum',$cg[6]),"unsigned"=>strtolower(preg_replace('~\s+~',' ',trim("$cg[8] $cg[7]"))),"null"=>true,"full_type"=>$cg[4],"inout"=>strtoupper($cg[1]),"collation"=>strtolower($cg[9]),);return
|
||
array("fields"=>$n,"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,array$K){return
|
||
idf_escape($C);}function
|
||
last_id($I){return
|
||
get_val("SELECT LAST_INSERT_ID()");}function
|
||
explain(Db$f,$H){return$f->query("EXPLAIN ".(min_version(5.1)&&!min_version(5.7)?"PARTITIONS ":"").$H);}function
|
||
found_rows(array$S,array$Z){return($Z||$S["Engine"]!="InnoDB"?null:$S["Rows"]);}function
|
||
create_sql($R,$_a,$Vh){$J=get_val("SHOW CREATE TABLE ".table($R),1);if(!$_a)$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_rows("SHOW VARIABLES");}function
|
||
show_status(){return
|
||
get_rows("SHOW STATUS");}function
|
||
process_list(){return
|
||
get_rows("SHOW FULL PROCESSLIST");}function
|
||
convert_field(array$m){if(preg_match("~binary~",$m["type"]))return"HEX(".idf_escape($m["field"]).")";if($m["type"]=="bit")return"BIN(".idf_escape($m["field"])." + 0)";if(preg_match("~geometry|point|linestring|polygon~",$m["type"]))return(min_version(8)?"ST_":"")."AsWKT(".idf_escape($m["field"]).")";}function
|
||
unconvert_field(array$m,$J){if(preg_match("~binary~",$m["type"]))$J="UNHEX($J)";if($m["type"]=="bit")$J="CONVERT(b$J, UNSIGNED)";if(preg_match("~geometry|point|linestring|polygon~",$m["type"])){$yg=(min_version(8)?"ST_":"");$J=$yg."GeomFromText($J, $yg"."SRID($m[field]))";}return$J;}function
|
||
support($Rc){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")."~",$Rc);}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");}function
|
||
types(){return
|
||
array();}function
|
||
type_values($t){return"";}function
|
||
schemas(){return
|
||
array();}function
|
||
get_schema(){return"";}function
|
||
set_schema($kh,$g=null){return
|
||
true;}}define('Adminer\JUSH',Driver::$oe);define('Adminer\SERVER',$_GET[DRIVER]);define('Adminer\DB',$_GET["db"]);define('Adminer\ME',preg_replace('~\?.*~','',relative_uri()).'?'.(sid()?SID.'&':'').(SERVER!==null?DRIVER."=".urlencode(SERVER).'&':'').($_GET["ext"]?"ext=".urlencode($_GET["ext"]).'&':'').(isset($_GET["username"])?"username=".urlencode($_GET["username"]).'&':'').(DB!=""?'db='.urlencode(DB).'&'.(isset($_GET["ns"])?"ns=".urlencode($_GET["ns"])."&":""):''));function
|
||
page_header($wi,$l="",$Ma=array(),$xi=""){page_headers();if(is_ajax()&&$l){page_messages($l);exit;}if(!ob_get_level())ob_start('ob_gzhandler',4096);$yi=$wi.($xi!=""?": $xi":"");$zi=strip_tags($yi.(SERVER!=""&&SERVER!="localhost"?h(" - ".SERVER):"")." - ".adminer()->name());echo'<!DOCTYPE html>
|
||
<html lang="en" dir="ltr">
|
||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||
<meta name="robots" content="noindex">
|
||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||
<title>',$zi,'</title>
|
||
<link rel="stylesheet" href="',h(preg_replace("~\\?.*~","",ME)."?file=default.css&version=5.2.0"),'">
|
||
';$Eb=adminer()->css();$Ad=false;$zd=false;foreach($Eb
|
||
as$o){if(strpos($o,"adminer.css")!==false)$Ad=true;if(strpos($o,"adminer-dark.css")!==false)$zd=true;}$Hb=($Ad?($zd?null:false):($zd?:null));$Te=" media='(prefers-color-scheme: dark)'";if($Hb!==false)echo"<link rel='stylesheet'".($Hb?"":$Te)." href='".h(preg_replace("~\\?.*~","",ME)."?file=dark.css&version=5.2.0")."'>\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.2.0");if(adminer()->head($Hb))echo"<link rel='icon' href='data:image/gif;base64,R0lGODlhEAAQAJEAAAQCBPz+/PwCBAROZCH5BAEAAAAALAAAAAAQABAAAAI2hI+pGO1rmghihiUdvUBnZ3XBQA7f05mOak1RWXrNq5nQWHMKvuoJ37BhVEEfYxQzHjWQ5qIAADs='>\n","<link rel='apple-touch-icon' href='".h(preg_replace("~\\?.*~","",ME)."?file=logo.png&version=5.2.0")."'>\n";foreach($Eb
|
||
as$X)echo"<link rel='stylesheet'".(preg_match('~-dark\.~',$X)&&!$Hb?$Te:"")." href='".h($X)."'>\n";echo"\n<body class='".'ltr'." nojs'>\n";$o=get_temp_dir()."/adminer.version";if(!$_COOKIE["adminer_version"]&&function_exists('openssl_verify')&&file_exists($o)&&filemtime($o)+86400>time()){$nj=unserialize(file_get_contents($o));$Gg="-----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($nj["version"],base64_decode($nj["signature"]),$Gg)==1)$_COOKIE["adminer_version"]=$nj["version"];}echo
|
||
script("mixin(document.body, {onkeydown: bodyKeydown, onclick: bodyClick".(isset($_COOKIE["adminer_version"])?"":", onload: partial(verifyVersion, '".VERSION."', '".js_escape(ME)."', '".get_token()."')")."});
|
||
document.body.classList.replace('nojs', 'js');
|
||
const offlineMessage = '".js_escape('You are offline.')."';
|
||
const thousandsSeparator = '".js_escape(',')."';"),"<div id='help' class='jush-".JUSH." jsonly hidden'></div>\n",script("mixin(qs('#help'), {onmouseover: () => { helpOpen = 1; }, onmouseout: helpMouseout});"),"<div id='content'>\n","<span id='menuopen' class='jsonly'>".icon("move","","menu","")."</span>".script("qs('#menuopen').onclick = event => { qs('#foot').classList.toggle('foot'); event.stopPropagation(); }");if($Ma!==null){$_=substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1);echo'<p id="breadcrumb"><a href="'.h($_?:".").'">'.get_driver(DRIVER).'</a> » ';$_=substr(preg_replace('~\b(db|ns)=[^&]*&~','',ME),0,-1);$N=adminer()->serverName(SERVER);$N=($N!=""?$N:'Server');if($Ma===false)echo"$N\n";else{echo"<a href='".h($_)."' accesskey='1' title='Alt+Shift+1'>$N</a> » ";if($_GET["ns"]!=""||(DB!=""&&is_array($Ma)))echo'<a href="'.h($_."&db=".urlencode(DB).(support("scheme")?"&ns=":"")).'">'.h(DB).'</a> » ';if(is_array($Ma)){if($_GET["ns"]!="")echo'<a href="'.h(substr(ME,0,-1)).'">'.h($_GET["ns"]).'</a> » ';foreach($Ma
|
||
as$x=>$X){$Ub=(is_array($X)?$X[1]:h($X));if($Ub!="")echo"<a href='".h(ME."$x=").urlencode(is_array($X)?$X[0]:$X)."'>$Ub</a> » ";}}echo"$wi\n";}}echo"<h2>$yi</h2>\n","<div id='ajaxstatus' class='jsonly hidden'></div>\n";restart_session();page_messages($l);$i=&get_session("dbs");if(DB!=""&&$i&&!in_array(DB,$i,true))$i=null;stop_session();define('Adminer\PAGE_HEADER',1);}function
|
||
page_headers(){header("Content-Type: text/html; charset=utf-8");header("Cache-Control: no-cache");header("X-Frame-Options: deny");header("X-XSS-Protection: 0");header("X-Content-Type-Options: nosniff");header("Referrer-Policy: origin-when-cross-origin");foreach(adminer()->csp(csp())as$Db){$Cd=array();foreach($Db
|
||
as$x=>$X)$Cd[]="$x $X";header("Content-Security-Policy: ".implode("; ",$Cd));}adminer()->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$pf;if(!$pf)$pf=base64_encode(rand_string());return$pf;}function
|
||
page_messages($l){$aj=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$Ze=idx($_SESSION["messages"],$aj);if($Ze){echo"<div class='message'>".implode("</div>\n<div class='message'>",$Ze)."</div>".script("messagesPrint();");unset($_SESSION["messages"][$aj]);}if($l)echo"<div class='error'>$l</div>\n";if(adminer()->error)echo"<div class='error'>".adminer()->error."</div>\n";}function
|
||
page_footer($cf=""){echo"</div>\n\n<div id='foot' class='foot'>\n<div id='menu'>\n";adminer()->navigation($cf);echo"</div>\n";if($cf!="auth")echo'<form action="" method="post">
|
||
<p class="logout">
|
||
<span>',h($_GET["username"])."\n",'</span>
|
||
<input type="submit" name="logout" value="Logout" id="logout">
|
||
',input_token(),'</form>
|
||
';echo"</div>\n\n",script("setupSubmitHighlight(document);");}function
|
||
int32($hf){while($hf>=2147483648)$hf-=4294967296;while($hf<=-2147483649)$hf+=4294967296;return(int)$hf;}function
|
||
long2str(array$W,$rj){$ih='';foreach($W
|
||
as$X)$ih
|
||
.=pack('V',$X);if($rj)return
|
||
substr($ih,0,end($W));return$ih;}function
|
||
str2long($ih,$rj){$W=array_values(unpack('V*',str_pad($ih,4*ceil(strlen($ih)/4),"\0")));if($rj)$W[]=strlen($ih);return$W;}function
|
||
xxtea_mx($yj,$xj,$Yh,$pe){return
|
||
int32((($yj>>5&0x7FFFFFF)^$xj<<2)+(($xj>>3&0x1FFFFFFF)^$yj<<4))^int32(($Yh^$xj)+($pe^$yj));}function
|
||
encrypt_string($Th,$x){if($Th=="")return"";$x=array_values(unpack("V*",pack("H*",md5($x))));$W=str2long($Th,true);$hf=count($W)-1;$yj=$W[$hf];$xj=$W[0];$Hg=floor(6+52/($hf+1));$Yh=0;while($Hg-->0){$Yh=int32($Yh+0x9E3779B9);$lc=$Yh>>2&3;for($ag=0;$ag<$hf;$ag++){$xj=$W[$ag+1];$gf=xxtea_mx($yj,$xj,$Yh,$x[$ag&3^$lc]);$yj=int32($W[$ag]+$gf);$W[$ag]=$yj;}$xj=$W[0];$gf=xxtea_mx($yj,$xj,$Yh,$x[$ag&3^$lc]);$yj=int32($W[$hf]+$gf);$W[$hf]=$yj;}return
|
||
long2str($W,false);}function
|
||
decrypt_string($Th,$x){if($Th=="")return"";if(!$x)return
|
||
false;$x=array_values(unpack("V*",pack("H*",md5($x))));$W=str2long($Th,false);$hf=count($W)-1;$yj=$W[$hf];$xj=$W[0];$Hg=floor(6+52/($hf+1));$Yh=int32($Hg*0x9E3779B9);while($Yh){$lc=$Yh>>2&3;for($ag=$hf;$ag>0;$ag--){$yj=$W[$ag-1];$gf=xxtea_mx($yj,$xj,$Yh,$x[$ag&3^$lc]);$xj=int32($W[$ag]-$gf);$W[$ag]=$xj;}$yj=$W[$hf];$gf=xxtea_mx($yj,$xj,$Yh,$x[$ag&3^$lc]);$xj=int32($W[0]-$gf);$W[0]=$xj;$Yh=int32($Yh-0x9E3779B9);}return
|
||
long2str($W,true);}$og=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$X){list($x)=explode(":",$X);$og[$x]=$X;}}function
|
||
add_invalid_login(){$Fa=get_temp_dir()."/adminer.invalid";foreach(glob("$Fa*")?:array($Fa)as$o){$q=file_open_lock($o);if($q)break;}if(!$q)$q=file_open_lock("$Fa-".rand_string());if(!$q)return;$he=unserialize(stream_get_contents($q));$ti=time();if($he){foreach($he
|
||
as$ie=>$X){if($X[0]<$ti)unset($he[$ie]);}}$ge=&$he[adminer()->bruteForceKey()];if(!$ge)$ge=array($ti+30*60,0);$ge[1]++;file_write_unlock($q,serialize($he));}function
|
||
check_invalid_login(array&$og){$he=array();foreach(glob(get_temp_dir()."/adminer.invalid*")as$o){$q=file_open_lock($o);if($q){$he=unserialize(stream_get_contents($q));file_unlock($q);break;}}$ge=idx($he,adminer()->bruteForceKey(),array());$of=($ge[1]>29?$ge[0]-time():0);if($of>0)auth_error(lang_format(array('Too many unsuccessful logins, try again in %d minute.','Too many unsuccessful logins, try again in %d minutes.'),ceil($of/60)),$og);}$za=$_POST["auth"];if($za){session_regenerate_id();$mj=$za["driver"];$N=$za["server"];$V=$za["username"];$F=(string)$za["password"];$j=$za["db"];set_password($mj,$N,$V,$F);$_SESSION["db"][$mj][$N][$V][$j]=true;if($za["permanent"]){$x=implode("-",array_map('base64_encode',array($mj,$N,$V,$j)));$Bg=adminer()->permanentLogin(true);$og[$x]="$x:".base64_encode($Bg?encrypt_string($F,$Bg):"");cookie("adminer_permanent",implode(" ",$og));}if(count($_POST)==1||DRIVER!=$mj||SERVER!=$N||$_GET["username"]!==$V||DB!=$j)redirect(auth_url($mj,$N,$V,$j));}elseif($_POST["logout"]&&(!$_SESSION["token"]||verify_token())){foreach(array("pwds","db","dbs","queries")as$x)set_session($x,null);unset_permanent($og);redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1),'Logout successful.'.' '.'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.');}elseif($og&&!$_SESSION["pwds"]){session_regenerate_id();$Bg=adminer()->permanentLogin();foreach($og
|
||
as$x=>$X){list(,$bb)=explode(":",$X);list($mj,$N,$V,$j)=array_map('base64_decode',explode("-",$x));set_password($mj,$N,$V,decrypt_string(base64_decode($bb),$Bg));$_SESSION["db"][$mj][$N][$V][$j]=true;}}function
|
||
unset_permanent(array&$og){foreach($og
|
||
as$x=>$X){list($mj,$N,$V,$j)=array_map('base64_decode',explode("-",$x));if($mj==DRIVER&&$N==SERVER&&$V==$_GET["username"]&&$j==DB)unset($og[$x]);}cookie("adminer_permanent",implode(" ",$og));}function
|
||
auth_error($l,array&$og){$Ah=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$Ah]||$_GET[$Ah])&&!$_SESSION["token"])$l='Session expired, please login again.';else{restart_session();add_invalid_login();$F=get_password();if($F!==null){if($F===false)$l
|
||
.=($l?'<br>':'').sprintf('Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.',target_blank(),'<code>permanentLogin()</code>');set_password(DRIVER,SERVER,$_GET["username"],null);}unset_permanent($og);}}if(!$_COOKIE[$Ah]&&$_GET[$Ah]&&ini_bool("session.use_only_cookies"))$l='Session support must be enabled.';$dg=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?:rand_string()),$dg["lifetime"]);if(!$_SESSION["token"])$_SESSION["token"]=rand(1,1e6);page_header('Login',$l,null);echo"<form action='' method='post'>\n","<div>";if(hidden_fields($_POST,array("auth")))echo"<p class='message'>".'The action will be performed after successful login with the same credentials.'."\n";echo"</div>\n";adminer()->loginForm();echo"</form>\n";page_footer("auth");exit;}if(isset($_GET["username"])&&!class_exists('Adminer\Db')){unset($_SESSION["pwds"][DRIVER]);unset_permanent($og);page_header('No extension',sprintf('None of the supported PHP extensions (%s) are available.',implode(", ",Driver::$Mc)),false);page_footer("auth");exit;}$f='';if(isset($_GET["username"])&&is_string(get_password())){list($Id,$sg)=explode(":",SERVER,2);if(preg_match('~^\s*([-+]?\d+)~',$sg,$B)&&($B[1]<1024||$B[1]>65535))auth_error('Connecting to privileged ports is not allowed.',$og);check_invalid_login($og);$Cb=adminer()->credentials();$f=Driver::connect($Cb[0],$Cb[1],$Cb[2]);if(is_object($f)){Db::$ee=$f;Driver::$ee=new
|
||
Driver($f);if($f->flavor)save_settings(array("vendor-".DRIVER."-".SERVER=>get_driver(DRIVER)));}}$Fe=null;if(!is_object($f)||($Fe=adminer()->login($_GET["username"],get_password()))!==true){$l=(is_string($f)?nl_br(h($f)):(is_string($Fe)?$Fe:'Invalid credentials.')).(preg_match('~^ | $~',get_password())?'<br>'.'There is a space in the input password which might be the cause.':'');auth_error($l,$og);}if($_POST["logout"]&&$_SESSION["token"]&&!verify_token()){page_header('Logout','Invalid CSRF token. Send the form again.');page_footer("db");exit;}if(!$_SESSION["token"])$_SESSION["token"]=rand(1,1e6);stop_session(true);if($za&&$_POST["token"])$_POST["token"]=get_token();$l='';if($_POST){if(!verify_token()){$Zd="max_input_vars";$Re=ini_get($Zd);if(extension_loaded("suhosin")){foreach(array("suhosin.request.max_vars","suhosin.post.max_vars")as$x){$X=ini_get($x);if($X&&(!$Re||$X<$Re)){$Zd=$x;$Re=$X;}}}$l=(!$_POST["token"]&&$Re?sprintf('Maximum number of allowed fields exceeded. Please increase %s.',"'$Zd'"):'Invalid CSRF token. Send the form again.'.' '.'If you did not send this request from Adminer then close this page.');}}elseif($_SERVER["REQUEST_METHOD"]=="POST"){$l=sprintf('Too big POST data. Reduce the data or increase the %s configuration directive.',"'post_max_size'");if(isset($_GET["sql"]))$l
|
||
.=' '.'You can upload a big SQL file via FTP and import it from server.';}function
|
||
print_select_result($I,$g=null,array$Pf=array(),$z=0){$Ee=array();$w=array();$e=array();$Ka=array();$Qi=array();$J=array();for($s=0;(!$z||$s<$z)&&($K=$I->fetch_row());$s++){if(!$s){echo"<div class='scrollable'>\n","<table class='nowrap odds'>\n","<thead><tr>";for($ne=0;$ne<count($K);$ne++){$m=$I->fetch_field();$C=$m->name;$Of=(isset($m->orgtable)?$m->orgtable:"");$Nf=(isset($m->orgname)?$m->orgname:$C);if($Pf&&JUSH=="sql")$Ee[$ne]=($C=="table"?"table=":($C=="possible_keys"?"indexes=":null));elseif($Of!=""){if(isset($m->table))$J[$m->table]=$Of;if(!isset($w[$Of])){$w[$Of]=array();foreach(indexes($Of,$g)as$v){if($v["type"]=="PRIMARY"){$w[$Of]=array_flip($v["columns"]);break;}}$e[$Of]=$w[$Of];}if(isset($e[$Of][$Nf])){unset($e[$Of][$Nf]);$w[$Of][$Nf]=$ne;$Ee[$ne]=$Of;}}if($m->charsetnr==63)$Ka[$ne]=true;$Qi[$ne]=$m->type;echo"<th".($Of!=""||$m->name!=$Nf?" title='".h(($Of!=""?"$Of.":"").$Nf)."'":"").">".h($C).($Pf?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$x=>$X){$_="";if(isset($Ee[$x])&&!$e[$Ee[$x]]){if($Pf&&JUSH=="sql"){$R=$K[array_search("table=",$Ee)];$_=ME.$Ee[$x].urlencode($Pf[$R]!=""?$Pf[$R]:$R);}else{$_=ME."edit=".urlencode($Ee[$x]);foreach($w[$Ee[$x]]as$fb=>$ne)$_
|
||
.="&where".urlencode("[".bracket_escape($fb)."]")."=".urlencode($K[$ne]);}}elseif(is_url($X))$_=$X;if($X===null)$X="<i>NULL</i>";elseif($Ka[$x]&&!is_utf8($X))$X="<i>".lang_format(array('%d byte','%d bytes'),strlen($X))."</i>";else{$X=h($X);if($Qi[$x]==254)$X="<code>$X</code>";}if($_)$X="<a href='".h($_)."'".(is_url($_)?target_blank():'').">$X</a>";echo"<td".($Qi[$x]<=9||$Qi[$x]==246?" class='number'":"").">$X";}}echo($s?"</table>\n</div>":"<p class='message'>".'No rows.')."\n";return$J;}function
|
||
referencable_primary($th){$J=array();foreach(table_status('',true)as$di=>$R){if($di!=$th&&fk_support($R)){foreach(fields($di)as$m){if($m["primary"]){if($J[$di]){unset($J[$di]);break;}$J[$di]=$m;}}}}return$J;}function
|
||
textarea($C,$Y,$L=10,$ib=80){echo"<textarea name='".h($C)."' rows='$L' cols='$ib' 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($ya,array$Jf,$Y="",$Df="",$pg=""){$li=($Jf?"select":"input");return"<$li$ya".($Jf?"><option value=''>$pg".optionlist($Jf,$Y,true)."</select>":" size='10' value='".h($Y)."' placeholder='$pg'>").($Df?script("qsl('$li').onchange = $Df;",""):"");}function
|
||
json_row($x,$X=null){static$Xc=true;if($Xc)echo"{";if($x!=""){echo($Xc?"":",")."\n\t\"".addcslashes($x,"\r\n\t\"\\/").'": '.($X!==null?'"'.addcslashes($X,"\r\n\"\\/").'"':'null');$Xc=false;}else{echo"\n}\n";$Xc=true;}}function
|
||
edit_type($x,array$m,array$hb,array$hd=array(),array$Oc=array()){$U=$m["type"];echo"<td><select name='".h($x)."[type]' class='type' aria-labelledby='label-type'>";if($U&&!array_key_exists($U,driver()->types())&&!isset($hd[$U])&&!in_array($U,$Oc))$Oc[]=$U;$Uh=driver()->structuredTypes();if($hd)$Uh['Foreign keys']=$hd;echo
|
||
optionlist(array_merge($Oc,$Uh),$U),"</select><td>","<input name='".h($x)."[length]' value='".h($m["length"])."' size='3'".(!$m["length"]&&preg_match('~var(char|binary)$~',$U)?" class='required'":"")." aria-labelledby='label-length'>","<td class='options'>",($hb?"<input list='collations' name='".h($x)."[collation]'".(preg_match('~(char|text|enum|set)$~',$U)?"":" class='hidden'")." value='".h($m["collation"])."' placeholder='(".'collation'.")'>":''),(driver()->unsigned?"<select name='".h($x)."[unsigned]'".(!$U||preg_match(number_type(),$U)?"":" class='hidden'").'><option>'.optionlist(driver()->unsigned,$m["unsigned"]).'</select>':''),(isset($m['on_update'])?"<select name='".h($x)."[on_update]'".(preg_match('~timestamp|datetime~',$U)?"":" class='hidden'").'>'.optionlist(array(""=>"(".'ON UPDATE'.")","CURRENT_TIMESTAMP"),(preg_match('~^CURRENT_TIMESTAMP~i',$m["on_update"])?"CURRENT_TIMESTAMP":$m["on_update"])).'</select>':''),($hd?"<select name='".h($x)."[on_delete]'".(preg_match("~`~",$U)?"":" class='hidden'")."><option value=''>(".'ON DELETE'.")".optionlist(explode("|",driver()->onActions),$m["on_delete"])."</select> ":" ");}function
|
||
get_partitions_info($R){$ld="FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = ".q(DB)." AND TABLE_NAME = ".q($R);$I=connection()->query("SELECT PARTITION_METHOD, PARTITION_EXPRESSION, PARTITION_ORDINAL_POSITION $ld ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1");$J=array();list($J["partition_by"],$J["partition"],$J["partitions"])=$I->fetch_row();$jg=get_key_vals("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $ld AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION");$J["partition_names"]=array_keys($jg);$J["partition_values"]=array_values($jg);return$J;}function
|
||
process_length($y){$yc=driver()->enumLength;return(preg_match("~^\\s*\\(?\\s*$yc(?:\\s*,\\s*$yc)*+\\s*\\)?\\s*\$~",$y)&&preg_match_all("~$yc~",$y,$Le)?"(".implode(",",$Le[0]).")":preg_replace('~^[0-9].*~','(\0)',preg_replace('~[^-0-9,+()[\]]~','',$y)));}function
|
||
process_type(array$m,$gb="COLLATE"){return" $m[type]".process_length($m["length"]).(preg_match(number_type(),$m["type"])&&in_array($m["unsigned"],driver()->unsigned)?" $m[unsigned]":"").(preg_match('~char|text|enum|set~',$m["type"])&&$m["collation"]?" $gb ".(JUSH=="mssql"?$m["collation"]:q($m["collation"])):"");}function
|
||
process_field(array$m,array$Oi){if($m["on_update"])$m["on_update"]=str_ireplace("current_timestamp()","CURRENT_TIMESTAMP",$m["on_update"]);return
|
||
array(idf_escape(trim($m["field"])),process_type($Oi),($m["null"]?" NULL":" NOT NULL"),default_value($m),(preg_match('~timestamp|datetime~',$m["type"])&&$m["on_update"]?" ON UPDATE $m[on_update]":""),(support("comment")&&$m["comment"]!=""?" COMMENT ".q($m["comment"]):""),($m["auto_increment"]?auto_increment():null),);}function
|
||
default_value(array$m){$k=$m["default"];$od=$m["generated"];return($k===null?"":(in_array($od,driver()->generated)?(JUSH=="mssql"?" AS ($k)".($od=="VIRTUAL"?"":" $od")."":" GENERATED ALWAYS AS ($k) $od"):" DEFAULT ".(!preg_match('~^GENERATED ~i',$k)&&(preg_match('~char|binary|text|json|enum|set~',$m["type"])||preg_match('~^(?![a-z])~i',$k))?(JUSH=="sql"&&preg_match('~text|json~',$m["type"])?"(".q($k).")":q($k)):str_ireplace("current_timestamp()","CURRENT_TIMESTAMP",(JUSH=="sqlite"?"($k)":$k)))));}function
|
||
type_class($U){foreach(array('char'=>'text','date'=>'time|year','binary'=>'blob','enum'=>'set',)as$x=>$X){if(preg_match("~$x|$X~",$U))return" class='$x'";}}function
|
||
edit_fields(array$n,array$hb,$U="TABLE",array$hd=array()){$n=array_values($n);$Pb=(($_POST?$_POST["defaults"]:get_setting("defaults"))?"":" class='hidden'");$nb=(($_POST?$_POST["comments"]:get_setting("comments"))?"":" class='hidden'");echo"<thead><tr>\n",($U=="PROCEDURE"?"<td>":""),"<th id='label-name'>".($U=="TABLE"?'Column name':'Parameter name'),"<td id='label-type'>".'Type'."<textarea id='enum-edit' rows='4' cols='12' wrap='off' style='display: none;'></textarea>".script("qs('#enum-edit').onblur = editingLengthBlur;"),"<td id='label-length'>".'Length',"<td>".'Options';if($U=="TABLE")echo"<td id='label-null'>NULL\n","<td><input type='radio' name='auto_increment_col' value=''><abbr id='label-ai' title='".'Auto Increment'."'>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>".'Default value',(support("comment")?"<td id='label-comment'$nb>".'Comment':"");echo"<td>".icon("plus","add[".(support("move_col")?0:count($n))."]","+",'Add next'),"</thead>\n<tbody>\n",script("mixin(qsl('tbody'), {onclick: editingClick, onkeydown: editingKeydown, oninput: editingInput});");foreach($n
|
||
as$s=>$m){$s++;$Qf=$m[($_POST?"orig":"field")];$ac=(isset($_POST["add"][$s-1])||(isset($m["field"])&&!idx($_POST["drop_col"],$s)))&&(support("drop_col")||$Qf=="");echo"<tr".($ac?"":" style='display: none;'").">\n",($U=="PROCEDURE"?"<td>".html_select("fields[$s][inout]",explode("|",driver()->inout),$m["inout"]):"")."<th>";if($ac)echo"<input name='fields[$s][field]' value='".h($m["field"])."' data-maxlength='64' autocapitalize='off' aria-labelledby='label-name'>";echo
|
||
input_hidden("fields[$s][orig]",$Qf);edit_type("fields[$s]",$m,$hb,$hd);if($U=="TABLE")echo"<td>".checkbox("fields[$s][null]",1,$m["null"],"","","block","label-null"),"<td><label class='block'><input type='radio' name='auto_increment_col' value='$s'".($m["auto_increment"]?" checked":"")." aria-labelledby='label-ai'></label>","<td$Pb>".(driver()->generated?html_select("fields[$s][generated]",array_merge(array("","DEFAULT"),driver()->generated),$m["generated"])." ":checkbox("fields[$s][generated]",1,$m["generated"],"","","","label-default")),"<input name='fields[$s][default]' value='".h($m["default"])."' aria-labelledby='label-default'>",(support("comment")?"<td$nb><input name='fields[$s][comment]' value='".h($m["comment"])."' data-maxlength='".(min_version(5.5)?1024:255)."' aria-labelledby='label-comment'>":"");echo"<td>",(support("move_col")?icon("plus","add[$s]","+",'Add next')." ".icon("up","up[$s]","↑",'Move up')." ".icon("down","down[$s]","↓",'Move down')." ":""),($Qf==""||support("drop_col")?icon("cross","drop_col[$s]","x",'Remove'):"");}}function
|
||
process_fields(array&$n){$D=0;if($_POST["up"]){$xe=0;foreach($n
|
||
as$x=>$m){if(key($_POST["up"])==$x){unset($n[$x]);array_splice($n,$xe,0,array($m));break;}if(isset($m["field"]))$xe=$D;$D++;}}elseif($_POST["down"]){$jd=false;foreach($n
|
||
as$x=>$m){if(isset($m["field"])&&$jd){unset($n[key($_POST["down"])]);array_splice($n,$D,0,array($jd));break;}if(key($_POST["down"])==$x)$jd=$m;$D++;}}elseif($_POST["add"]){$n=array_values($n);array_splice($n,key($_POST["add"]),0,array(array()));}elseif(!$_POST["drop_col"])return
|
||
false;return
|
||
true;}function
|
||
normalize_enum(array$B){$X=$B[0];return"'".str_replace("'","''",addcslashes(stripcslashes(str_replace($X[0].$X[0],$X[0],substr($X,1,-1))),'\\'))."'";}function
|
||
grant($qd,array$Dg,$e,$Af){if(!$Dg)return
|
||
true;if($Dg==array("ALL PRIVILEGES","GRANT OPTION"))return($qd=="GRANT"?queries("$qd ALL PRIVILEGES$Af WITH GRANT OPTION"):queries("$qd ALL PRIVILEGES$Af")&&queries("$qd GRANT OPTION$Af"));return
|
||
queries("$qd ".preg_replace('~(GRANT OPTION)\([^)]*\)~','\1',implode("$e, ",$Dg).$e).$Af);}function
|
||
drop_create($ec,$h,$gc,$pi,$ic,$A,$Ye,$We,$Xe,$yf,$lf){if($_POST["drop"])query_redirect($ec,$A,$Ye);elseif($yf=="")query_redirect($h,$A,$Xe);elseif($yf!=$lf){$Bb=queries($h);queries_redirect($A,$We,$Bb&&queries($ec));if($Bb)queries($gc);}else
|
||
queries_redirect($A,$We,queries($pi)&&queries($ic)&&queries($ec)&&queries($h));}function
|
||
create_trigger($Af,array$K){$vi=" $K[Timing] $K[Event]".(preg_match('~ OF~',$K["Event"])?" $K[Of]":"");return"CREATE TRIGGER ".idf_escape($K["Trigger"]).(JUSH=="mssql"?$Af.$vi:$vi.$Af).rtrim(" $K[Type]\n$K[Statement]",";").";";}function
|
||
create_routine($eh,array$K){$O=array();$n=(array)$K["fields"];ksort($n);foreach($n
|
||
as$m){if($m["field"]!="")$O[]=(preg_match("~^(".driver()->inout.")\$~",$m["inout"])?"$m[inout] ":"").idf_escape($m["field"]).process_type($m,"CHARACTER SET");}$Rb=rtrim($K["definition"],";");return"CREATE $eh ".idf_escape(trim($K["name"]))." (".implode(", ",$O).")".($eh=="FUNCTION"?" RETURNS".process_type($K["returns"],"CHARACTER SET"):"").($K["language"]?" LANGUAGE $K[language]":"").(JUSH=="pgsql"?" AS ".q($Rb):"\n$Rb;");}function
|
||
remove_definer($H){return
|
||
preg_replace('~^([A-Z =]+) DEFINER=`'.preg_replace('~@(.*)~','`@`(%|\1)',logged_user()).'`~','\1',$H);}function
|
||
format_foreign_key(array$p){$j=$p["db"];$qf=$p["ns"];return" FOREIGN KEY (".implode(", ",array_map('Adminer\idf_escape',$p["source"])).") REFERENCES ".($j!=""&&$j!=$_GET["db"]?idf_escape($j).".":"").($qf!=""&&$qf!=$_GET["ns"]?idf_escape($qf).".":"").idf_escape($p["table"])." (".implode(", ",array_map('Adminer\idf_escape',$p["target"])).")".(preg_match("~^(".driver()->onActions.")\$~",$p["on_delete"])?" ON DELETE $p[on_delete]":"").(preg_match("~^(".driver()->onActions.")\$~",$p["on_update"])?" ON UPDATE $p[on_update]":"");}function
|
||
tar_file($o,$_i){$J=pack("a100a8a8a8a12a12",$o,644,0,0,decoct($_i->size),decoct(time()));$ab=8*32;for($s=0;$s<strlen($J);$s++)$ab+=ord($J[$s]);$J
|
||
.=sprintf("%06o",$ab)."\0 ";echo$J,str_repeat("\0",512-strlen($J));$_i->send();echo
|
||
str_repeat("\0",511-($_i->size+511)%512);}function
|
||
ini_bytes($Zd){$X=ini_get($Zd);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(array$lg,$qi="<sup>?</sup>"){$zh=connection()->server_info;$nj=preg_replace('~^(\d\.?\d).*~s','\1',$zh);$cj=array('sql'=>"https://dev.mysql.com/doc/refman/$nj/en/",'sqlite'=>"https://www.sqlite.org/",'pgsql'=>"https://www.postgresql.org/docs/".(connection()->flavor=='cockroach'?"current":$nj)."/",'mssql'=>"https://learn.microsoft.com/en-us/sql/",'oracle'=>"https://www.oracle.com/pls/topic/lookup?ctx=db".preg_replace('~^.* (\d+)\.(\d+)\.\d+\.\d+\.\d+.*~s','\1\2',$zh)."&id=",);if(connection()->flavor=='maria'){$cj['sql']="https://mariadb.com/kb/en/";$lg['sql']=(isset($lg['mariadb'])?$lg['mariadb']:str_replace(".html","/",$lg['sql']));}return($lg[JUSH]?"<a href='".h($cj[JUSH].$lg[JUSH].(JUSH=='mssql'?"?view=sql-server-ver$nj":""))."'".target_blank().">$qi</a>":"");}function
|
||
db_size($j){if(!connection()->select_db($j))return"?";$J=0;foreach(table_status()as$S)$J+=$S["Data_length"]+$S["Index_length"];return
|
||
format_number($J);}function
|
||
set_utf8mb4($h){static$O=false;if(!$O&&preg_match('~\butf8mb4~i',$h)){$O=true;echo"SET NAMES ".charset(connection()).";\n\n";}}if(isset($_GET["status"]))$_GET["variables"]=$_GET["status"];if(isset($_GET["import"]))$_GET["sql"]=$_GET["import"];if(!(DB!=""?connection()->select_db(DB):isset($_GET["sql"])||isset($_GET["dump"])||isset($_GET["database"])||isset($_GET["processlist"])||isset($_GET["privileges"])||isset($_GET["user"])||isset($_GET["variables"])||$_GET["script"]=="connect"||$_GET["script"]=="kill")){if(DB!=""||$_GET["refresh"]){restart_session();set_session("dbs",null);}if(DB!=""){header("HTTP/1.1 404 Not Found");page_header('Database'.": ".h(DB),'Invalid database.',true);}else{if($_POST["db"]&&!$l)queries_redirect(substr(ME,0,-1),'Databases have been dropped.',drop_databases($_POST["db"]));page_header('Select database',$l,false);echo"<p class='links'>\n";foreach(array('database'=>'Create database','privileges'=>'Privileges','processlist'=>'Process list','variables'=>'Variables','status'=>'Status',)as$x=>$X){if(support($x))echo"<a href='".h(ME)."$x='>$X</a>\n";}echo"<p>".sprintf('%s version: %s through PHP extension %s',get_driver(DRIVER),"<b>".h(connection()->server_info)."</b>","<b>".connection()->extension."</b>")."\n","<p>".sprintf('Logged as: %s',"<b>".h(logged_user())."</b>")."\n";$i=adminer()->databases();if($i){$mh=support("scheme");$hb=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>".'Database'.(get_session("dbs")!==null?" - <a href='".h(ME)."refresh=1'>".'Refresh'."</a>":"")."<td>".'Collation'."<td>".'Tables'."<td>".'Size'." - <a href='".h(ME)."dbsize=1'>".'Compute'."</a>".script("qsl('a').onclick = partial(ajaxSetHtml, '".js_escape(ME)."script=connect');","")."</thead>\n";$i=($_GET["dbsize"]?count_tables($i):array_flip($i));foreach($i
|
||
as$j=>$T){$dh=h(ME)."db=".urlencode($j);$t=h("Db-".$j);echo"<tr>".(support("database")?"<td>".checkbox("db[]",$j,in_array($j,(array)$_POST["db"]),"","","",$t):""),"<th><a href='$dh' id='$t'>".h($j)."</a>";$c=h(db_collation($j,$hb));echo"<td>".(support("database")?"<a href='$dh".($mh?"&ns=":"")."&database=' title='".'Alter database'."'>$c</a>":$c),"<td align='right'><a href='$dh&schema=' id='tables-".h($j)."' title='".'Database schema'."'>".($_GET["dbsize"]?$T:"?")."</a>","<td align='right' id='size-".h($j)."'>".($_GET["dbsize"]?db_size($j):"?"),"\n";}echo"</table>\n",(support("database")?"<div class='footer'><div>\n"."<fieldset><legend>".'Selected'." <span id='selected'></span></legend><div>\n".input_hidden("all").script("qsl('input').onclick = function () { selectCount('selected', formChecked(this, /^db/)); };")."<input type='submit' name='drop' value='".'Drop'."'>".confirm()."\n"."</div></fieldset>\n"."</div></div>\n":""),input_token(),"</form>\n",script("tableCheck();");}if(isset(adminer()->plugins)&&is_array(adminer()->plugins)){echo"<div class='plugins'>\n","<h3>".'Loaded plugins'."</h3>\n<ul>\n";foreach(adminer()->plugins
|
||
as$qg){$Vb=(method_exists($qg,'description')?$qg->description():"");if(!$Vb){$Sg=new
|
||
\ReflectionObject($qg);if(preg_match('~^/[\s*]+(.+)~',$Sg->getDocComment(),$B))$Vb=$B[1];}$nh=(method_exists($qg,'screenshot')?$qg->screenshot():"");echo"<li><b>".get_class($qg)."</b>".h($Vb?": $Vb":"").($nh?" (<a href='".h($nh)."'".target_blank().">".'screenshot'."</a>)":"")."\n";}echo"</ul>\n";adminer()->pluginsLinks();echo"</div>\n";}}page_footer("db");exit;}if(support("scheme")){if(DB!=""&&$_GET["ns"]!==""){if(!isset($_GET["ns"]))redirect(preg_replace('~ns=[^&]*&~','',ME)."ns=".get_schema());if(!set_schema($_GET["ns"])){header("HTTP/1.1 404 Not Found");page_header('Schema'.": ".h($_GET["ns"]),'Invalid schema.',true);page_footer("ns");exit;}}}class
|
||
TmpFile{private$handler;var$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"];$n=fields($a);header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=".friendly_url("$a-".implode("_",$_GET["where"])).".".friendly_url($_GET["field"]));$M=array(idf_escape($_GET["field"]));$I=driver()->select($a,$M,array(where($_GET,$n)),$M);$K=($I?$I->fetch_row():array());echo
|
||
driver()->value($K[0],$n[$_GET["field"]]);exit;}elseif(isset($_GET["table"])){$a=$_GET["table"];$n=fields($a);if(!$n)$l=error()?:'No tables.';$S=table_status1($a);$C=adminer()->tableName($S);page_header(($n&&is_view($S)?$S['Engine']=='materialized view'?'Materialized view':'View':'Table').": ".($C!=""?$C:h($a)),$l);$ch=array();foreach($n
|
||
as$x=>$m)$ch+=$m["privileges"];adminer()->selectLinks($S,(isset($ch["insert"])||!support("table")?"":null));$mb=$S["Comment"];if($mb!="")echo"<p class='nowrap'>".'Comment'.": ".h($mb)."\n";if($n)adminer()->tableStructurePrint($n,$S);if(support("indexes")&&driver()->supportsIndex($S)){echo"<h3 id='indexes'>".'Indexes'."</h3>\n";$w=indexes($a);if($w)adminer()->tableIndexesPrint($w);echo'<p class="links"><a href="'.h(ME).'indexes='.urlencode($a).'">'.'Alter indexes'."</a>\n";}if(!is_view($S)){if(fk_support($S)){echo"<h3 id='foreign-keys'>".'Foreign keys'."</h3>\n";$hd=foreign_keys($a);if($hd){echo"<table>\n","<thead><tr><th>".'Source'."<td>".'Target'."<td>".'ON DELETE'."<td>".'ON UPDATE'."<td></thead>\n";foreach($hd
|
||
as$C=>$p){echo"<tr title='".h($C)."'>","<th><i>".implode("</i>, <i>",array_map('Adminer\h',$p["source"]))."</i>";$_=($p["db"]!=""?preg_replace('~db=[^&]*~',"db=".urlencode($p["db"]),ME):($p["ns"]!=""?preg_replace('~ns=[^&]*~',"ns=".urlencode($p["ns"]),ME):ME));echo"<td><a href='".h($_."table=".urlencode($p["table"]))."'>".($p["db"]!=""&&$p["db"]!=DB?"<b>".h($p["db"])."</b>.":"").($p["ns"]!=""&&$p["ns"]!=$_GET["ns"]?"<b>".h($p["ns"])."</b>.":"").h($p["table"])."</a>","(<i>".implode("</i>, <i>",array_map('Adminer\h',$p["target"]))."</i>)","<td>".h($p["on_delete"]),"<td>".h($p["on_update"]),'<td><a href="'.h(ME.'foreign='.urlencode($a).'&name='.urlencode($C)).'">'.'Alter'.'</a>',"\n";}echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'foreign='.urlencode($a).'">'.'Add foreign key'."</a>\n";}if(support("check")){echo"<h3 id='checks'>".'Checks'."</h3>\n";$Wa=driver()->checkConstraints($a);if($Wa){echo"<table>\n";foreach($Wa
|
||
as$x=>$X)echo"<tr title='".h($x)."'>","<td><code class='jush-".JUSH."'>".h($X),"<td><a href='".h(ME.'check='.urlencode($a).'&name='.urlencode($x))."'>".'Alter'."</a>","\n";echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'check='.urlencode($a).'">'.'Create check'."</a>\n";}}if(support(is_view($S)?"view_trigger":"trigger")){echo"<h3 id='triggers'>".'Triggers'."</h3>\n";$Ni=triggers($a);if($Ni){echo"<table>\n";foreach($Ni
|
||
as$x=>$X)echo"<tr valign='top'><td>".h($X[0])."<td>".h($X[1])."<th>".h($x)."<td><a href='".h(ME.'trigger='.urlencode($a).'&name='.urlencode($x))."'>".'Alter'."</a>\n";echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'trigger='.urlencode($a).'">'.'Add trigger'."</a>\n";}}elseif(isset($_GET["schema"])){page_header('Database schema',"",array(),h(DB.($_GET["ns"]?".$_GET[ns]":"")));$fi=array();$gi=array();$ca=($_GET["schema"]?:$_COOKIE["adminer_schema-".str_replace(".","_",DB)]);preg_match_all('~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~',$ca,$Le,PREG_SET_ORDER);foreach($Le
|
||
as$s=>$B){$fi[$B[1]]=array($B[2],$B[3]);$gi[]="\n\t'".js_escape($B[1])."': [ $B[2], $B[3] ]";}$Ci=0;$Ga=-1;$kh=array();$Rg=array();$Ae=array();$sa=driver()->allFields();foreach(table_status('',true)as$R=>$S){if(is_view($S))continue;$tg=0;$kh[$R]["fields"]=array();foreach($sa[$R]as$m){$tg+=1.25;$m["pos"]=$tg;$kh[$R]["fields"][$m["field"]]=$m;}$kh[$R]["pos"]=($fi[$R]?:array($Ci,0));foreach(adminer()->foreignKeys($R)as$X){if(!$X["db"]){$ze=$Ga;if(idx($fi[$R],1)||idx($fi[$X["table"]],1))$ze=min(idx($fi[$R],1,0),idx($fi[$X["table"]],1,0))-1;else$Ga-=.1;while($Ae[(string)$ze])$ze-=.0001;$kh[$R]["references"][$X["table"]][(string)$ze]=array($X["source"],$X["target"]);$Rg[$X["table"]][$R][(string)$ze]=$X["target"];$Ae[(string)$ze]=true;}}$Ci=max($Ci,$kh[$R]["pos"][0]+2.5+$tg);}echo'<div id="schema" style="height: ',$Ci,'em;">
|
||
<script',nonce(),'>
|
||
qs(\'#schema\').onselectstart = () => false;
|
||
const tablePos = {',implode(",",$gi)."\n",'};
|
||
const em = qs(\'#schema\').offsetHeight / ',$Ci,';
|
||
document.onmousemove = schemaMousemove;
|
||
document.onmouseup = partialArg(schemaMouseup, \'',js_escape(DB),'\');
|
||
</script>
|
||
';foreach($kh
|
||
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$m){$X='<span'.type_class($m["type"]).' title="'.h($m["type"].($m["length"]?"($m[length])":"").($m["null"]?" NULL":'')).'">'.h($m["field"]).'</span>';echo"<br>".($m["primary"]?"<i>$X</i>":$X);}foreach((array)$R["references"]as$ni=>$Tg){foreach($Tg
|
||
as$ze=>$Og){$_e=$ze-idx($fi[$C],1);$s=0;foreach($Og[0]as$Ih)echo"\n<div class='references' title='".h($ni)."' id='refs$ze-".($s++)."' style='left: $_e"."em; top: ".$R["fields"][$Ih]["pos"]."em; padding-top: .5em;'>"."<div style='border-top: 1px solid gray; width: ".(-$_e)."em;'></div></div>";}}foreach((array)$Rg[$C]as$ni=>$Tg){foreach($Tg
|
||
as$ze=>$e){$_e=$ze-idx($fi[$C],1);$s=0;foreach($e
|
||
as$mi)echo"\n<div class='references arrow' title='".h($ni)."' id='refd$ze-".($s++)."' style='left: $_e"."em; top: ".$R["fields"][$mi]["pos"]."em;'>"."<div style='height: .5em; border-bottom: 1px solid gray; width: ".(-$_e)."em;'></div>"."</div>";}}echo"\n</div>\n";}foreach($kh
|
||
as$C=>$R){foreach((array)$R["references"]as$ni=>$Tg){foreach($Tg
|
||
as$ze=>$Og){$bf=$Ci;$Pe=-10;foreach($Og[0]as$x=>$Ih){$ug=$R["pos"][0]+$R["fields"][$Ih]["pos"];$vg=$kh[$ni]["pos"][0]+$kh[$ni]["fields"][$Og[1][$x]]["pos"];$bf=min($bf,$ug,$vg);$Pe=max($Pe,$ug,$vg);}echo"<div class='references' id='refl$ze' style='left: $ze"."em; top: $bf"."em; padding: .5em 0;'><div style='border-right: 1px solid gray; margin-top: 1px; height: ".($Pe-$bf)."em;'></div></div>\n";}}}echo'</div>
|
||
<p class="links"><a href="',h(ME."schema=".urlencode($ca)),'" id="schema-link">Permanent link</a>
|
||
';}elseif(isset($_GET["dump"])){$a=$_GET["dump"];if($_POST&&!$l){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"]);$Kc=dump_headers((count($T)==1?key($T):DB),(DB==""||count($T)>1));$ke=preg_match('~sql~',$_POST["format"]);if($ke){echo"-- Adminer ".VERSION." ".get_driver(DRIVER)." ".str_replace("\n"," ",connection()->server_info)." dump\n\n";if(JUSH=="sql"){echo"SET NAMES utf8;
|
||
SET time_zone = '+00:00';
|
||
SET foreign_key_checks = 0;
|
||
".($_POST["data_style"]?"SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
|
||
":"")."
|
||
";connection()->query("SET time_zone = '+00:00'");connection()->query("SET sql_mode = ''");}}$Vh=$_POST["db_style"];$i=array(DB);if(DB==""){$i=$_POST["databases"];if(is_string($i))$i=explode("\n",rtrim(str_replace("\r","",$i),"\n"));}foreach((array)$i
|
||
as$j){adminer()->dumpDatabase($j);if(connection()->select_db($j)){if($ke&&preg_match('~CREATE~',$Vh)&&($h=get_val("SHOW CREATE DATABASE ".idf_escape($j),1))){set_utf8mb4($h);if($Vh=="DROP+CREATE")echo"DROP DATABASE IF EXISTS ".idf_escape($j).";\n";echo"$h;\n";}if($ke){if($Vh)echo
|
||
use_sql($j).";\n\n";$Xf="";if($_POST["types"]){foreach(types()as$t=>$U){$zc=type_values($t);if($zc)$Xf
|
||
.=($Vh!='DROP+CREATE'?"DROP TYPE IF EXISTS ".idf_escape($U).";;\n":"")."CREATE TYPE ".idf_escape($U)." AS ENUM ($zc);\n\n";else$Xf
|
||
.="-- Could not export type $U\n\n";}}if($_POST["routines"]){foreach(routines()as$K){$C=$K["ROUTINE_NAME"];$eh=$K["ROUTINE_TYPE"];$h=create_routine($eh,array("name"=>$C)+routine($K["SPECIFIC_NAME"],$eh));set_utf8mb4($h);$Xf
|
||
.=($Vh!='DROP+CREATE'?"DROP $eh IF EXISTS ".idf_escape($C).";;\n":"")."$h;\n\n";}}if($_POST["events"]){foreach(get_rows("SHOW EVENTS",null,"-- ")as$K){$h=remove_definer(get_val("SHOW CREATE EVENT ".idf_escape($K["Name"]),3));set_utf8mb4($h);$Xf
|
||
.=($Vh!='DROP+CREATE'?"DROP EVENT IF EXISTS ".idf_escape($K["Name"]).";;\n":"")."$h;;\n\n";}}echo($Xf&&JUSH=='sql'?"DELIMITER ;;\n\n$Xf"."DELIMITER ;\n\n":$Xf);}if($_POST["table_style"]||$_POST["data_style"]){$pj=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){$_i=null;if($Kc=="tar"){$_i=new
|
||
TmpFile;ob_start(array($_i,'write'),1e5);}adminer()->dumpTable($C,($R?$_POST["table_style"]:""),(is_view($S)?2:0));if(is_view($S))$pj[]=$C;elseif($Ib){$n=fields($C);adminer()->dumpData($C,$_POST["data_style"],"SELECT *".convert_fields($n,$n)." FROM ".table($C));}if($ke&&$_POST["triggers"]&&$R&&($Ni=trigger_sql($C)))echo"\nDELIMITER ;;\n$Ni\nDELIMITER ;\n";if($Kc=="tar"){ob_end_flush();tar_file((DB!=""?"":"$j/")."$C.csv",$_i);}elseif($ke)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($pj
|
||
as$oj)adminer()->dumpTable($oj,$_POST["table_style"],1);if($Kc=="tar")echo
|
||
pack("x512");}}}adminer()->dumpFooter();exit;}page_header('Export',$l,($_GET["export"]!=""?array("table"=>$_GET["export"]):array()),h(DB));echo'
|
||
<form action="" method="post">
|
||
<table class="layout">
|
||
';$Mb=array('','USE','DROP+CREATE','CREATE');$hi=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>".'Output'."<td>".html_radios("output",adminer()->dumpOutput(),$K["output"])."\n","<tr><th>".'Format'."<td>".html_radios("format",adminer()->dumpFormat(),$K["format"])."\n",(JUSH=="sqlite"?"":"<tr><th>".'Database'."<td>".html_select('db_style',$Mb,$K["db_style"]).(support("type")?checkbox("types",1,$K["types"],'User types'):"").(support("routine")?checkbox("routines",1,$K["routines"],'Routines'):"").(support("event")?checkbox("events",1,$K["events"],'Events'):"")),"<tr><th>".'Tables'."<td>".html_select('table_style',$hi,$K["table_style"]).checkbox("auto_increment",1,$K["auto_increment"],'Auto Increment').(support("trigger")?checkbox("triggers",1,$K["triggers"],'Triggers'):""),"<tr><th>".'Data'."<td>".html_select('data_style',$Jb,$K["data_style"]),'</table>
|
||
<p><input type="submit" value="Export">
|
||
',input_token(),'
|
||
<table>
|
||
',script("qsl('table').onclick = dumpClick;");$zg=array();if(DB!=""){$Ya=($a!=""?"":" checked");echo"<thead><tr>","<th style='text-align: left;'><label class='block'><input type='checkbox' id='check-tables'$Ya>".'Tables'."</label>".script("qs('#check-tables').onclick = partial(formCheck, /^tables\\[/);",""),"<th style='text-align: right;'><label class='block'>".'Data'."<input type='checkbox' id='check-data'$Ya></label>".script("qs('#check-data').onclick = partial(formCheck, /^data\\[/);",""),"</thead>\n";$pj="";$ji=tables_list();foreach($ji
|
||
as$C=>$U){$yg=preg_replace('~_.*~','',$C);$Ya=($a==""||$a==(substr($a,-1)=="%"?"$yg%":$C));$Ag="<tr><td>".checkbox("tables[]",$C,$Ya,$C,"","block");if($U!==null&&!preg_match('~table~i',$U))$pj
|
||
.="$Ag\n";else
|
||
echo"$Ag<td align='right'><label class='block'><span id='Rows-".h($C)."'></span>".checkbox("data[]",$C,$Ya)."</label>\n";$zg[$yg]++;}echo$pj;if($ji)echo
|
||
script("ajaxSetHtml('".js_escape(ME)."script=db');");}else{echo"<thead><tr><th style='text-align: left;'>","<label class='block'><input type='checkbox' id='check-databases'".($a==""?" checked":"").">".'Database'."</label>",script("qs('#check-databases').onclick = partial(formCheck, /^databases\\[/);",""),"</thead>\n";$i=adminer()->databases();if($i){foreach($i
|
||
as$j){if(!information_schema($j)){$yg=preg_replace('~_.*~','',$j);echo"<tr><td>".checkbox("databases[]",$j,$a==""||$a=="$yg%",$j,"","block")."\n";$zg[$yg]++;}}}else
|
||
echo"<tr><td><textarea name='databases' rows='10' cols='20'></textarea>";}echo'</table>
|
||
</form>
|
||
';$Xc=true;foreach($zg
|
||
as$x=>$X){if($x!=""&&$X>1){echo($Xc?"<p>":" ")."<a href='".h(ME)."dump=".urlencode("$x%")."'>".h($x)."</a>";$Xc=false;}}}elseif(isset($_GET["privileges"])){page_header('Privileges');echo'<p class="links"><a href="'.h(ME).'user=">'.'Create user'."</a>";$I=connection()->query("SELECT User, Host FROM mysql.".(DB==""?"user":"db WHERE ".q(DB)." LIKE Db")." ORDER BY Host, User");$qd=$I;if(!$I)$I=connection()->query("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', 1) AS User, SUBSTRING_INDEX(CURRENT_USER, '@', -1) AS Host");echo"<form action=''><p>\n";hidden_fields_get();echo
|
||
input_hidden("db",DB),($qd?"":input_hidden("grant")),"<table class='odds'>\n","<thead><tr><th>".'Username'."<th>".'Server'."<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"])).'">'.'Edit'."</a>\n";if(!$qd||DB!="")echo"<tr><td><input name='user' autocapitalize='off'><td><input name='host' value='localhost' autocapitalize='off'><td><input type='submit' value='".'Edit'."'>\n";echo"</table>\n","</form>\n";}elseif(isset($_GET["sql"])){if(!$l&&$_POST["export"]){save_settings(array("output"=>$_POST["output"],"format"=>$_POST["format"]),"adminer_import");dump_headers("sql");adminer()->dumpTable("","");adminer()->dumpData("","table",$_POST["query"]);adminer()->dumpFooter();exit;}restart_session();$Gd=&get_session("queries");$Fd=&$Gd[DB];if(!$l&&$_POST["clear"]){$Fd=array();redirect(remove_from_uri("history"));}stop_session();page_header((isset($_GET["import"])?'Import':'SQL command'),$l);if(!$l&&$_POST){$q=false;if(!isset($_GET["import"]))$H=$_POST["query"];elseif($_POST["webfile"]){$Mh=adminer()->importServerPath();$q=@fopen((file_exists($Mh)?$Mh:"compress.zlib://$Mh.gz"),"rb");$H=($q?fread($q,1e6):false);}else$H=get_file("sql_file",true,";");if(is_string($H)){if(function_exists('memory_get_usage')&&($Ue=ini_bytes("memory_limit"))!="-1")@ini_set("memory_limit",max($Ue,strval(2*strlen($H)+memory_get_usage()+8e6)));if($H!=""&&strlen($H)<1e6){$Hg=$H.(preg_match("~;[ \t\r\n]*\$~",$H)?"":";");if(!$Fd||first(end($Fd))!=$Hg){restart_session();$Fd[]=array($Hg,time());set_session("queries",$Gd);stop_session();}}$Jh="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$Tb=";";$D=0;$tc=true;$g=connect();if($g&&DB!=""){$g->select_db(DB);if($_GET["ns"]!="")set_schema($_GET["ns"],$g);}$lb=0;$Ac=array();$eg='[\'"'.(JUSH=="sql"?'`#':(JUSH=="sqlite"?'`[':(JUSH=="mssql"?'[':''))).']|/\*|--'.(JUSH=='sql'?' ':'').'|$'.(JUSH=="pgsql"?'|\$[^$]*\$':'');$Di=microtime(true);$ma=get_settings("adminer_import");$kc=adminer()->dumpFormat();unset($kc["sql"]);while($H!=""){if(!$D&&preg_match("~^$Jh*+DELIMITER\\s+(\\S+)~i",$H,$B)){$Tb=preg_quote($B[1]);$H=substr($H,strlen($B[0]));}elseif(!$D&&JUSH=='pgsql'&&preg_match("~^($Jh*+COPY\\s+)[^;]+\\s+FROM\\s+stdin;~i",$H,$B)){$Tb="\n\\\\\\.\r?\n";$D=strlen($B[0]);}else{preg_match("($Tb\\s*|$eg)",$H,$B,PREG_OFFSET_CAPTURE,$D);list($jd,$tg)=$B[0];if(!$jd&&$q&&!feof($q))$H
|
||
.=fread($q,1e5);else{if(!$jd&&rtrim($H)=="")break;$D=$tg+strlen($jd);if($jd&&!preg_match("(^$Tb)",$jd)){$Qa=driver()->hasCStyleEscapes()||(JUSH=="pgsql"&&($tg>0&&strtolower($H[$tg-1])=="e"));$mg=($jd=='/*'?'\*/':($jd=='['?']':(preg_match('~^-- |^#~',$jd)?"\n":preg_quote($jd).($Qa?'|\\\\.':''))));while(preg_match("($mg|\$)s",$H,$B,PREG_OFFSET_CAPTURE,$D)){$ih=$B[0][0];if(!$ih&&$q&&!feof($q))$H
|
||
.=fread($q,1e5);else{$D=$B[0][1]+strlen($ih);if(!$ih||$ih[0]!="\\")break;}}}else{$tc=false;$Hg=substr($H,0,$tg+($Tb[0]=="\n"?3:0));$lb++;$Ag="<pre id='sql-$lb'><code class='jush-".JUSH."'>".adminer()->sqlCommandQuery($Hg)."</code></pre>\n";if(JUSH=="sqlite"&&preg_match("~^$Jh*+ATTACH\\b~i",$Hg,$B)){echo$Ag,"<p class='error'>".'ATTACH queries are not supported.'."\n";$Ac[]=" <a href='#sql-$lb'>$lb</a>";if($_POST["error_stops"])break;}else{if(!$_POST["only_errors"]){echo$Ag;ob_flush();flush();}$Rh=microtime(true);if(connection()->multi_query($Hg)&&$g&&preg_match("~^$Jh*+USE\\b~i",$Hg))$g->query($Hg);do{$I=connection()->store_result();if(connection()->error){echo($_POST["only_errors"]?$Ag:""),"<p class='error'>".'Error in query'.(connection()->errno?" (".connection()->errno.")":"").": ".error()."\n";$Ac[]=" <a href='#sql-$lb'>$lb</a>";if($_POST["error_stops"])break
|
||
2;}else{$ti=" <span class='time'>(".format_time($Rh).")</span>".(strlen($Hg)<1000?" <a href='".h(ME)."sql=".urlencode(trim($Hg))."'>".'Edit'."</a>":"");$oa=connection()->affected_rows;$sj=($_POST["only_errors"]?"":driver()->warnings());$tj="warnings-$lb";if($sj)$ti
|
||
.=", <a href='#$tj'>".'Warnings'."</a>".script("qsl('a').onclick = partial(toggle, '$tj');","");$Ic=null;$Pf=null;$Jc="explain-$lb";if(is_object($I)){$z=$_POST["limit"];$Pf=print_select_result($I,$g,array(),$z);if(!$_POST["only_errors"]){echo"<form action='' method='post'>\n";$rf=$I->num_rows;echo"<p class='sql-footer'>".($rf?($z&&$rf>$z?sprintf('%d / ',$z):"").lang_format(array('%d row','%d rows'),$rf):""),$ti;if($g&&preg_match("~^($Jh|\\()*+SELECT\\b~i",$Hg)&&($Ic=explain($g,$Hg)))echo", <a href='#$Jc'>Explain</a>".script("qsl('a').onclick = partial(toggle, '$Jc');","");$t="export-$lb";echo", <a href='#$t'>".'Export'."</a>".script("qsl('a').onclick = partial(toggle, '$t');","")."<span id='$t' class='hidden'>: ".html_select("output",adminer()->dumpOutput(),$ma["output"])." ".html_select("format",$kc,$ma["format"]).input_hidden("query",$Hg)."<input type='submit' name='export' value='".'Export'."'>".input_token()."</span>\n"."</form>\n";}}else{if(preg_match("~^$Jh*+(CREATE|DROP|ALTER)$Jh++(DATABASE|SCHEMA)\\b~i",$Hg)){restart_session();set_session("dbs",null);stop_session();}if(!$_POST["only_errors"])echo"<p class='message' title='".h(connection()->info)."'>".lang_format(array('Query executed OK, %d row affected.','Query executed OK, %d rows affected.'),$oa)."$ti\n";}echo($sj?"<div id='$tj' class='hidden'>\n$sj</div>\n":"");if($Ic){echo"<div id='$Jc' class='hidden explain'>\n";print_select_result($Ic,$g,$Pf);echo"</div>\n";}}$Rh=microtime(true);}while(connection()->next_result());}$H=substr($H,$D);$D=0;}}}}if($tc)echo"<p class='message'>".'No commands to execute.'."\n";elseif($_POST["only_errors"])echo"<p class='message'>".lang_format(array('%d query executed OK.','%d queries executed OK.'),$lb-count($Ac))," <span class='time'>(".format_time($Di).")</span>\n";elseif($Ac&&$lb>1)echo"<p class='error'>".'Error in query'.": ".implode("",$Ac)."\n";}else
|
||
echo"<p class='error'>".upload_error($H)."\n";}echo'
|
||
<form action="" method="post" enctype="multipart/form-data" id="form">
|
||
';$Gc="<input type='submit' value='".'Execute'."' title='Ctrl+Enter'>";if(!isset($_GET["import"])){$Hg=$_GET["sql"];if($_POST)$Hg=$_POST["query"];elseif($_GET["history"]=="all")$Hg=$Fd;elseif($_GET["history"]!="")$Hg=idx($Fd[$_GET["history"]],0);echo"<p>";textarea("query",$Hg,20);echo
|
||
script(($_POST?"":"qs('textarea').focus();\n")."qs('#form').onsubmit = partial(sqlSubmit, qs('#form'), '".js_escape(remove_from_uri("sql|limit|error_stops|only_errors|history"))."');"),"<p>";adminer()->sqlPrintAfter();echo"$Gc\n",'Limit rows'.": <input type='number' name='limit' class='size' value='".h($_POST?$_POST["limit"]:$_GET["limit"])."'>\n";}else{echo"<fieldset><legend>".'File upload'."</legend><div>";$wd=(extension_loaded("zlib")?"[.gz]":"");echo(ini_bool("file_uploads")?"SQL$wd (< ".ini_get("upload_max_filesize")."B): <input type='file' name='sql_file[]' multiple>\n$Gc":'File uploads are disabled.'),"</div></fieldset>\n";$Qd=adminer()->importServerPath();if($Qd)echo"<fieldset><legend>".'From server'."</legend><div>",sprintf('Webserver file %s',"<code>".h($Qd)."$wd</code>"),' <input type="submit" name="webfile" value="'.'Run file'.'">',"</div></fieldset>\n";echo"<p>";}echo
|
||
checkbox("error_stops",1,($_POST?$_POST["error_stops"]:isset($_GET["import"])||$_GET["error_stops"]),'Stop on error')."\n",checkbox("only_errors",1,($_POST?$_POST["only_errors"]:isset($_GET["import"])||$_GET["only_errors"]),'Show only errors')."\n",input_token();if(!isset($_GET["import"])&&$Fd){print_fieldset("history",'History',$_GET["history"]!="");for($X=end($Fd);$X;$X=prev($Fd)){$x=key($Fd);list($Hg,$ti,$oc)=$X;echo'<a href="'.h(ME."sql=&history=$x").'">'.'Edit'."</a>"." <span class='time' title='".@date('Y-m-d',$ti)."'>".@date("H:i:s",$ti)."</span>"." <code class='jush-".JUSH."'>".shorten_utf8(ltrim(str_replace("\n"," ",str_replace("\r","",preg_replace('~^(#|-- ).*~m','',$Hg)))),80,"</code>").($oc?" <span class='time'>($oc)</span>":"")."<br>\n";}echo"<input type='submit' name='clear' value='".'Clear'."'>\n","<a href='".h(ME."sql=&history=all")."'>".'Edit all'."</a>\n","</div></fieldset>\n";}echo'</form>
|
||
';}elseif(isset($_GET["edit"])){$a=$_GET["edit"];$n=fields($a);$Z=(isset($_GET["select"])?($_POST["check"]&&count($_POST["check"])==1?where_check($_POST["check"][0],$n):""):where($_GET,$n));$Zi=(isset($_GET["select"])?$_POST["edit"]:$Z);foreach($n
|
||
as$C=>$m){if(!isset($m["privileges"][$Zi?"update":"insert"])||adminer()->fieldName($m)==""||$m["generated"])unset($n[$C]);}if($_POST&&!$l&&!isset($_GET["select"])){$A=$_POST["referer"];if($_POST["insert"])$A=($Zi?null:$_SERVER["REQUEST_URI"]);elseif(!preg_match('~^.+&select=.+$~',$A))$A=ME."select=".urlencode($a);$w=indexes($a);$Ui=unique_array($_GET["where"],$w);$Kg="\nWHERE $Z";if(isset($_POST["delete"]))queries_redirect($A,'Item has been deleted.',driver()->delete($a,$Kg,$Ui?0:1));else{$O=array();foreach($n
|
||
as$C=>$m){$X=process_input($m);if($X!==false&&$X!==null)$O[idf_escape($C)]=$X;}if($Zi){if(!$O)redirect($A);queries_redirect($A,'Item has been updated.',driver()->update($a,$O,$Kg,$Ui?0:1));if(is_ajax()){page_headers();page_messages($l);exit;}}else{$I=driver()->insert($a,$O);$ye=($I?last_id($I):0);queries_redirect($A,sprintf('Item%s has been inserted.',($ye?" $ye":"")),$I);}}}$K=null;if($_POST["save"])$K=(array)$_POST["fields"];elseif($Z){$M=array();foreach($n
|
||
as$C=>$m){if(isset($m["privileges"]["select"])){$wa=($_POST["clone"]&&$m["auto_increment"]?"''":convert_field($m));$M[]=($wa?"$wa AS ":"").idf_escape($C);}}$K=array();if(!support("table"))$M=array("*");if($M){$I=driver()->select($a,$M,array($Z),$M,array(),(isset($_GET["select"])?2:1));if(!$I)$l=error();else{$K=$I->fetch_assoc();if(!$K)$K=false;}if(isset($_GET["select"])&&(!$K||$I->fetch_assoc()))$K=null;}}if(!support("table")&&!$n){if(!$Z){$I=driver()->select($a,array("*"),array(),array("*"));$K=($I?$I->fetch_assoc():false);if(!$K)$K=array(driver()->primary=>"");}if($K){foreach($K
|
||
as$x=>$X){if(!$Z)$K[$x]=null;$n[$x]=array("field"=>$x,"null"=>($x!=driver()->primary),"auto_increment"=>($x==driver()->primary));}}}edit_form($a,$n,$K,$Zi,$l);}elseif(isset($_GET["create"])){$a=$_GET["create"];$gg=array();foreach(array('HASH','LINEAR HASH','KEY','LINEAR KEY','RANGE','LIST')as$x)$gg[$x]=$x;$Qg=referencable_primary($a);$hd=array();foreach($Qg
|
||
as$di=>$m)$hd[str_replace("`","``",$di)."`".str_replace("`","``",$m["field"])]=$di;$Sf=array();$S=array();if($a!=""){$Sf=fields($a);$S=table_status1($a);if(count($S)<2)$l='No tables.';}$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"])&&!$l){if($_POST["drop"])queries_redirect(substr(ME,0,-1),'Table has been dropped.',drop_tables(array($a)));else{$n=array();$sa=array();$dj=false;$fd=array();$Rf=reset($Sf);$qa=" FIRST";foreach($K["fields"]as$x=>$m){$p=$hd[$m["type"]];$Oi=($p!==null?$Qg[$p]:$m);if($m["field"]!=""){if(!$m["generated"])$m["default"]=null;$Fg=process_field($m,$Oi);$sa[]=array($m["orig"],$Fg,$qa);if(!$Rf||$Fg!==process_field($Rf,$Rf)){$n[]=array($m["orig"],$Fg,$qa);if($m["orig"]!=""||$qa)$dj=true;}if($p!==null)$fd[idf_escape($m["field"])]=($a!=""&&JUSH!="sqlite"?"ADD":" ").format_foreign_key(array('table'=>$hd[$m["type"]],'source'=>array($m["field"]),'target'=>array($Oi["field"]),'on_delete'=>$m["on_delete"],));$qa=" AFTER ".idf_escape($m["field"]);}elseif($m["orig"]!=""){$dj=true;$n[]=array($m["orig"]);}if($m["orig"]!=""){$Rf=next($Sf);if(!$Rf)$qa="";}}$ig="";if(support("partitioning")){if(isset($gg[$K["partition_by"]])){$dg=array();foreach($K
|
||
as$x=>$X){if(preg_match('~^partition~',$x))$dg[$x]=$X;}foreach($dg["partition_names"]as$x=>$C){if($C==""){unset($dg["partition_names"][$x]);unset($dg["partition_values"][$x]);}}if($dg!=get_partitions_info($a)){$jg=array();if($dg["partition_by"]=='RANGE'||$dg["partition_by"]=='LIST'){foreach($dg["partition_names"]as$x=>$C){$Y=$dg["partition_values"][$x];$jg[]="\n PARTITION ".idf_escape($C)." VALUES ".($dg["partition_by"]=='RANGE'?"LESS THAN":"IN").($Y!=""?" ($Y)":" MAXVALUE");}}$ig
|
||
.="\nPARTITION BY $dg[partition_by]($dg[partition])";if($jg)$ig
|
||
.=" (".implode(",",$jg)."\n)";elseif($dg["partitions"])$ig
|
||
.=" PARTITIONS ".(+$dg["partitions"]);}}elseif(preg_match("~partitioned~",$S["Create_options"]))$ig
|
||
.="\nREMOVE PARTITIONING";}$Ve='Table has been altered.';if($a==""){cookie("adminer_engine",$K["Engine"]);$Ve='Table has been created.';}$C=trim($K["name"]);queries_redirect(ME.(support("table")?"table=":"select=").urlencode($C),$Ve,alter_table($a,$C,(JUSH=="sqlite"&&($dj||$fd)?$sa:$n),$fd,($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"]):""),$ig));}}page_header(($a!=""?'Alter table':'Create table'),$l,array("table"=>$a),h($a));if(!$_POST){$Qi=driver()->types();$K=array("Engine"=>$_COOKIE["adminer_engine"],"fields"=>array(array("field"=>"","type"=>(isset($Qi["int"])?"int":(isset($Qi["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($Sf
|
||
as$m){$m["generated"]=$m["generated"]?:(isset($m["default"])?"DEFAULT":"");$K["fields"][]=$m;}if(support("partitioning")){$K+=get_partitions_info($a);$K["partition_names"][]="";$K["partition_values"][]="";}}}$hb=collations();if(is_array(reset($hb)))$hb=call_user_func_array('array_merge',array_values($hb));$vc=driver()->engines();foreach($vc
|
||
as$uc){if(!strcasecmp($uc,$K["Engine"])){$K["Engine"]=$uc;break;}}echo'
|
||
<form action="" method="post" id="form">
|
||
<p>
|
||
';if(support("columns")||$a==""){echo'Table name'.": <input name='name'".($a==""&&!$_POST?" autofocus":"")." data-maxlength='64' value='".h($K["name"])."' autocapitalize='off'>\n",($vc?html_select("Engine",array(""=>"(".'engine'.")")+$vc,$K["Engine"]).on_help("event.target.value",1).script("qsl('select').onchange = helpClose;")."\n":"");if($hb)echo"<datalist id='collations'>".optionlist($hb)."</datalist>\n",(preg_match("~sqlite|mssql~",JUSH)?"":"<input list='collations' name='Collation' value='".h($K["Collation"])."' placeholder='(".'collation'.")'>\n");echo"<input type='submit' value='".'Save'."'>\n";}if(support("columns")){echo"<div class='scrollable'>\n","<table id='edit-fields' class='nowrap'>\n";edit_fields($K["fields"],$hb,"TABLE",$hd);echo"</table>\n",script("editFields();"),"</div>\n<p>\n",'Auto Increment'.": <input type='number' name='Auto_increment' class='size' value='".h($K["Auto_increment"])."'>\n",checkbox("defaults",1,($_POST?$_POST["defaults"]:get_setting("defaults")),'Default values',"columnShow(this.checked, 5)","jsonly");$ob=($_POST?$_POST["comments"]:get_setting("comments"));echo(support("comment")?checkbox("comments",1,$ob,'Comment',"editingCommentsClick(this, true);","jsonly").' '.(preg_match('~\n~',$K["Comment"])?"<textarea name='Comment' rows='2' cols='20'".($ob?"":" class='hidden'").">".h($K["Comment"])."</textarea>":'<input name="Comment" value="'.h($K["Comment"]).'" data-maxlength="'.(min_version(5.5)?2048:60).'"'.($ob?"":" class='hidden'").'>'):''),'<p>
|
||
<input type="submit" value="Save">
|
||
';}echo'
|
||
';if($a!="")echo'<input type="submit" name="drop" value="Drop">',confirm(sprintf('Drop %s?',$a));if(support("partitioning")){$hg=preg_match('~RANGE|LIST~',$K["partition_by"]);print_fieldset("partition",'Partition by',$K["partition_by"]);echo"<p>".html_select("partition_by",array(""=>"")+$gg,$K["partition_by"]).on_help("event.target.value.replace(/./, 'PARTITION BY \$&')",1).script("qsl('select').onchange = partitionByChange;"),"(<input name='partition' value='".h($K["partition"])."'>)\n",'Partitions'.": <input type='number' name='partitions' class='size".($hg||!$K["partition_by"]?" hidden":"")."' value='".h($K["partitions"])."'>\n","<table id='partition-table'".($hg?"":" class='hidden'").">\n","<thead><tr><th>".'Partition name'."<th>".'Values'."</thead>\n";foreach($K["partition_names"]as$x=>$X)echo'<tr>','<td><input name="partition_names[]" value="'.h($X).'" autocapitalize="off">',($x==count($K["partition_names"])-1?script("qsl('input').oninput = partitionNameChange;"):''),'<td><input name="partition_values[]" value="'.h(idx($K["partition_values"],$x)).'">';echo"</table>\n</div></fieldset>\n";}echo
|
||
input_token(),'</form>
|
||
';}elseif(isset($_GET["indexes"])){$a=$_GET["indexes"];$Vd=array("PRIMARY","UNIQUE","INDEX");$S=table_status1($a,true);if(preg_match('~MyISAM|M?aria'.(min_version(5.6,'10.0.5')?'|InnoDB':'').'~i',$S["Engine"]))$Vd[]="FULLTEXT";if(preg_match('~MyISAM|M?aria'.(min_version(5.7,'10.2.2')?'|InnoDB':'').'~i',$S["Engine"]))$Vd[]="SPATIAL";$w=indexes($a);$G=array();if(JUSH=="mongo"){$G=$w["_id_"];unset($Vd[0]);unset($w["_id_"]);}$K=$_POST;if($K)save_settings(array("index_options"=>$K["options"]));if($_POST&&!$l&&!$_POST["add"]&&!$_POST["drop_col"]){$b=array();foreach($K["indexes"]as$v){$C=$v["name"];if(in_array($v["type"],$Vd)){$e=array();$Ce=array();$Wb=array();$O=array();ksort($v["columns"]);foreach($v["columns"]as$x=>$d){if($d!=""){$y=idx($v["lengths"],$x);$Ub=idx($v["descs"],$x);$O[]=idf_escape($d).($y?"(".(+$y).")":"").($Ub?" DESC":"");$e[]=$d;$Ce[]=($y?:null);$Wb[]=$Ub;}}$Hc=$w[$C];if($Hc){ksort($Hc["columns"]);ksort($Hc["lengths"]);ksort($Hc["descs"]);if($v["type"]==$Hc["type"]&&array_values($Hc["columns"])===$e&&(!$Hc["lengths"]||array_values($Hc["lengths"])===$Ce)&&array_values($Hc["descs"])===$Wb){unset($w[$C]);continue;}}if($e)$b[]=array($v["type"],$C,$O);}}foreach($w
|
||
as$C=>$Hc)$b[]=array($Hc["type"],$C,"DROP");if(!$b)redirect(ME."table=".urlencode($a));queries_redirect(ME."table=".urlencode($a),'Indexes have been altered.',alter_indexes($a,$b));}page_header('Indexes',$l,array("table"=>$a),h($a));$n=array_keys(fields($a));if($_POST["add"]){foreach($K["indexes"]as$x=>$v){if($v["columns"][count($v["columns"])]!="")$K["indexes"][$x]["columns"][]="";}$v=end($K["indexes"]);if($v["type"]||array_filter($v["columns"],'strlen'))$K["indexes"][]=array("columns"=>array(1=>""));}if(!$K){foreach($w
|
||
as$x=>$v){$w[$x]["name"]=$x;$w[$x]["columns"][]="";}$w[]=array("columns"=>array(1=>""));$K["indexes"]=$w;}$Ce=(JUSH=="sql"||JUSH=="mssql");$Dh=($_POST?$_POST["options"]:get_setting("index_options"));echo'
|
||
<form action="" method="post">
|
||
<div class="scrollable">
|
||
<table class="nowrap">
|
||
<thead><tr>
|
||
<th id="label-type">Index Type
|
||
<th><input type="submit" class="wayoff">','Columns'.($Ce?"<span class='idxopts".($Dh?"":" hidden")."'> (".'length'.")</span>":"");if($Ce||support("descidx"))echo
|
||
checkbox("options",1,$Dh,'Options',"indexOptionsShow(this.checked)","jsonly")."\n";echo'<th id="label-name">Name
|
||
<th><noscript>',icon("plus","add[0]","+",'Add next'),'</noscript>
|
||
</thead>
|
||
';if($G){echo"<tr><td>PRIMARY<td>";foreach($G["columns"]as$x=>$d)echo
|
||
select_input(" disabled",$n,$d),"<label><input disabled type='checkbox'>".'descending'."</label> ";echo"<td><td>\n";}$ne=1;foreach($K["indexes"]as$v){if(!$_POST["drop_col"]||$ne!=key($_POST["drop_col"])){echo"<tr><td>".html_select("indexes[$ne][type]",array(-1=>"")+$Vd,$v["type"],($ne==count($K["indexes"])?"indexesAddRow.call(this);":""),"label-type"),"<td>";ksort($v["columns"]);$s=1;foreach($v["columns"]as$x=>$d){echo"<span>".select_input(" name='indexes[$ne][columns][$s]' title='".'Column'."'",($n?array_combine($n,$n):$n),$d,"partial(".($s==count($v["columns"])?"indexesAddColumn":"indexesChangeColumn").", '".js_escape(JUSH=="sql"?"":$_GET["indexes"]."_")."')"),"<span class='idxopts".($Dh?"":" hidden")."'>",($Ce?"<input type='number' name='indexes[$ne][lengths][$s]' class='size' value='".h(idx($v["lengths"],$x))."' title='".'Length'."'>":""),(support("descidx")?checkbox("indexes[$ne][descs][$s]",1,idx($v["descs"],$x),'descending'):""),"</span> </span>";$s++;}echo"<td><input name='indexes[$ne][name]' value='".h($v["name"])."' autocapitalize='off' aria-labelledby='label-name'>\n","<td>".icon("cross","drop_col[$ne]","x",'Remove').script("qsl('button').onclick = partial(editingRemoveRow, 'indexes\$1[type]');");}$ne++;}echo'</table>
|
||
</div>
|
||
<p>
|
||
<input type="submit" value="Save">
|
||
',input_token(),'</form>
|
||
';}elseif(isset($_GET["database"])){$K=$_POST;if($_POST&&!$l&&!$_POST["add"]){$C=trim($K["name"]);if($_POST["drop"]){$_GET["db"]="";queries_redirect(remove_from_uri("db|database"),'Database has been dropped.',drop_databases(array(DB)));}elseif(DB!==$C){if(DB!=""){$_GET["db"]=$C;queries_redirect(preg_replace('~\bdb=[^&]*&~','',ME)."db=".urlencode($C),'Database has been renamed.',rename_database($C,$K["collation"]));}else{$i=explode("\n",str_replace("\r","",$C));$Wh=true;$xe="";foreach($i
|
||
as$j){if(count($i)==1||$j!=""){if(!create_database($j,$K["collation"]))$Wh=false;$xe=$j;}}restart_session();set_session("dbs",null);queries_redirect(ME."db=".urlencode($xe),'Database has been created.',$Wh);}}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),'Database has been altered.');}}page_header(DB!=""?'Alter database':'Create database',$l,array(),h(DB));$hb=collations();$C=DB;if($_POST)$C=$K["name"];elseif(DB!="")$K["collation"]=db_collation(DB,$hb);elseif(JUSH=="sql"){foreach(get_vals("SHOW GRANTS")as$qd){if(preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\.\*)?~',$qd,$B)&&$B[1]){$C=stripcslashes(idf_unescape("`$B[2]`"));break;}}}echo'
|
||
<form action="" method="post">
|
||
<p>
|
||
',($_POST["add"]||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".($hb?html_select("collation",array(""=>"(".'collation'.")")+$hb,$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="Save">
|
||
';if(DB!="")echo"<input type='submit' name='drop' value='".'Drop'."'>".confirm(sprintf('Drop %s?',DB))."\n";elseif(!$_POST["add"]&&$_GET["db"]=="")echo
|
||
icon("plus","add[0]","+",'Add next')."\n";echo
|
||
input_token(),'</form>
|
||
';}elseif(isset($_GET["scheme"])){$K=$_POST;if($_POST&&!$l){$_=preg_replace('~ns=[^&]*&~','',ME)."ns=";if($_POST["drop"])query_redirect("DROP SCHEMA ".idf_escape($_GET["ns"]),$_,'Schema has been dropped.');else{$C=trim($K["name"]);$_
|
||
.=urlencode($C);if($_GET["ns"]=="")query_redirect("CREATE SCHEMA ".idf_escape($C),$_,'Schema has been created.');elseif($_GET["ns"]!=$C)query_redirect("ALTER SCHEMA ".idf_escape($_GET["ns"])." RENAME TO ".idf_escape($C),$_,'Schema has been altered.');else
|
||
redirect($_);}}page_header($_GET["ns"]!=""?'Alter schema':'Create schema',$l);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="Save">
|
||
';if($_GET["ns"]!="")echo"<input type='submit' name='drop' value='".'Drop'."'>".confirm(sprintf('Drop %s?',$_GET["ns"]))."\n";echo
|
||
input_token(),'</form>
|
||
';}elseif(isset($_GET["call"])){$ba=($_GET["name"]?:$_GET["call"]);page_header('Call'.": ".h($ba),$l);$eh=routine($_GET["call"],(isset($_GET["callf"])?"FUNCTION":"PROCEDURE"));$Rd=array();$Xf=array();foreach($eh["fields"]as$s=>$m){if(substr($m["inout"],-3)=="OUT")$Xf[$s]="@".idf_escape($m["field"])." AS ".idf_escape($m["field"]);if(!$m["inout"]||substr($m["inout"],0,2)=="IN")$Rd[]=$s;}if(!$l&&$_POST){$Ra=array();foreach($eh["fields"]as$x=>$m){$X="";if(in_array($x,$Rd)){$X=process_input($m);if($X===false)$X="''";if(isset($Xf[$x]))connection()->query("SET @".idf_escape($m["field"])." = $X");}$Ra[]=(isset($Xf[$x])?"@".idf_escape($m["field"]):$X);}$H=(isset($_GET["callf"])?"SELECT":"CALL")." ".table($ba)."(".implode(", ",$Ra).")";$Rh=microtime(true);$I=connection()->multi_query($H);$oa=connection()->affected_rows;echo
|
||
adminer()->selectQuery($H,$Rh,!$I);if(!$I)echo"<p class='error'>".error()."\n";else{$g=connect();if($g)$g->select_db(DB);do{$I=connection()->store_result();if(is_object($I))print_select_result($I,$g);else
|
||
echo"<p class='message'>".lang_format(array('Routine has been called, %d row affected.','Routine has been called, %d rows affected.'),$oa)." <span class='time'>".@date("H:i:s")."</span>\n";}while(connection()->next_result());if($Xf)print_select_result(connection()->query("SELECT ".implode(", ",$Xf)));}}echo'
|
||
<form action="" method="post">
|
||
';if($Rd){echo"<table class='layout'>\n";foreach($Rd
|
||
as$x){$m=$eh["fields"][$x];$C=$m["field"];echo"<tr><th>".adminer()->fieldName($m);$Y=idx($_POST["fields"],$C);if($Y!=""){if($m["type"]=="set")$Y=implode(",",$Y);}input($m,$Y,idx($_POST["function"],$C,""));echo"\n";}echo"</table>\n";}echo'<p>
|
||
<input type="submit" value="Call">
|
||
',input_token(),'</form>
|
||
|
||
<pre>
|
||
';function
|
||
pre_tr($ih){return
|
||
preg_replace('~^~m','<tr>',preg_replace('~\|~','<td>',preg_replace('~\|$~m',"",rtrim($ih))));}$R='(\+--[-+]+\+\n)';$K='(\| .* \|\n)';echo
|
||
preg_replace_callback("~^$R?$K$R?($K*)$R?~m",function($B){$Yc=pre_tr($B[2]);return"<table>\n".($B[1]?"<thead>$Yc</thead>\n":$Yc).pre_tr($B[4])."\n</table>";},preg_replace('~(\n( -|mysql)> )(.+)~',"\\1<code class='jush-sql'>\\3</code>",preg_replace('~(.+)\n---+\n~',"<b>\\1</b>\n",h($eh['comment']))));echo'</pre>
|
||
';}elseif(isset($_GET["foreign"])){$a=$_GET["foreign"];$C=$_GET["name"];$K=$_POST;if($_POST&&!$l&&!$_POST["add"]&&!$_POST["change"]&&!$_POST["change-js"]){if(!$_POST["drop"]){$K["source"]=array_filter($K["source"],'strlen');ksort($K["source"]);$mi=array();foreach($K["source"]as$x=>$X)$mi[$x]=$K["target"][$x];$K["target"]=$mi;}if(JUSH=="sqlite")$I=recreate_table($a,$a,array(),array(),array(" $C"=>($K["drop"]?"":" ".format_foreign_key($K))));else{$b="ALTER TABLE ".table($a);$I=($C==""||queries("$b DROP ".(JUSH=="sql"?"FOREIGN KEY ":"CONSTRAINT ").idf_escape($C)));if(!$K["drop"])$I=queries("$b ADD".format_foreign_key($K));}queries_redirect(ME."table=".urlencode($a),($K["drop"]?'Foreign key has been dropped.':($C!=""?'Foreign key has been altered.':'Foreign key has been created.')),$I);if(!$K["drop"])$l='Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.';}page_header('Foreign key',$l,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!=""){$hd=foreign_keys($a);$K=$hd[$C];$K["source"][]="";}else{$K["table"]=$a;$K["source"]=array("");}echo'
|
||
<form action="" method="post">
|
||
';$Ih=array_keys(fields($a));if($K["db"]!="")connection()->select_db($K["db"]);if($K["ns"]!=""){$Tf=get_schema();set_schema($K["ns"]);}$Pg=array_keys(array_filter(table_status('',true),'Adminer\fk_support'));$mi=array_keys(fields(in_array($K["table"],$Pg)?$K["table"]:reset($Pg)));$Df="this.form['change-js'].value = '1'; this.form.submit();";echo"<p><label>".'Target table'.": ".html_select("table",$Pg,$K["table"],$Df)."</label>\n";if(support("scheme")){$lh=array_filter(adminer()->schemas(),function($kh){return!preg_match('~^information_schema$~i',$kh);});echo"<label>".'Schema'.": ".html_select("ns",$lh,$K["ns"]!=""?$K["ns"]:$_GET["ns"],$Df)."</label>";if($K["ns"]!="")set_schema($Tf);}elseif(JUSH!="sqlite"){$Nb=array();foreach(adminer()->databases()as$j){if(!information_schema($j))$Nb[]=$j;}echo"<label>".'DB'.": ".html_select("db",$Nb,$K["db"]!=""?$K["db"]:$_GET["db"],$Df)."</label>";}echo
|
||
input_hidden("change-js"),'<noscript><p><input type="submit" name="change" value="Change"></noscript>
|
||
<table>
|
||
<thead><tr><th id="label-source">Source<th id="label-target">Target</thead>
|
||
';$ne=0;foreach($K["source"]as$x=>$X){echo"<tr>","<td>".html_select("source[".(+$x)."]",array(-1=>"")+$Ih,$X,($ne==count($K["source"])-1?"foreignAddRow.call(this);":""),"label-source"),"<td>".html_select("target[".(+$x)."]",$mi,idx($K["target"],$x),"","label-target");$ne++;}echo'</table>
|
||
<p>
|
||
<label>ON DELETE: ',html_select("on_delete",array(-1=>"")+explode("|",driver()->onActions),$K["on_delete"]),'</label>
|
||
<label>ON UPDATE: ',html_select("on_update",array(-1=>"")+explode("|",driver()->onActions),$K["on_update"]),'</label>
|
||
',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="Save">
|
||
<noscript><p><input type="submit" name="add" value="Add column"></noscript>
|
||
';if($C!="")echo'<input type="submit" name="drop" value="Drop">',confirm(sprintf('Drop %s?',$C));echo
|
||
input_token(),'</form>
|
||
';}elseif(isset($_GET["view"])){$a=$_GET["view"];$K=$_POST;$Uf="VIEW";if(JUSH=="pgsql"&&$a!=""){$P=table_status1($a);$Uf=strtoupper($P["Engine"]);}if($_POST&&!$l){$C=trim($K["name"]);$wa=" AS\n$K[select]";$A=ME."table=".urlencode($C);$Ve='View has been altered.';$U=($_POST["materialized"]?"MATERIALIZED VIEW":"VIEW");if(!$_POST["drop"]&&$a==$C&&JUSH!="sqlite"&&$U=="VIEW"&&$Uf=="VIEW")query_redirect((JUSH=="mssql"?"ALTER":"CREATE OR REPLACE")." VIEW ".table($C).$wa,$A,$Ve);else{$oi=$C."_adminer_".uniqid();drop_create("DROP $Uf ".table($a),"CREATE $U ".table($C).$wa,"DROP $U ".table($C),"CREATE $U ".table($oi).$wa,"DROP $U ".table($oi),($_POST["drop"]?substr(ME,0,-1):$A),'View has been dropped.',$Ve,'View has been created.',$a,$C);}}if(!$_POST&&$a!=""){$K=view($a);$K["name"]=$a;$K["materialized"]=($Uf!="VIEW");if(!$l)$l=error();}page_header(($a!=""?'Alter view':'Create view'),$l,array("table"=>$a),h($a));echo'
|
||
<form action="" method="post">
|
||
<p>Name: <input name="name" value="',h($K["name"]),'" data-maxlength="64" autocapitalize="off">
|
||
',(support("materializedview")?" ".checkbox("materialized",1,$K["materialized"],'Materialized view'):""),'<p>';textarea("select",$K["select"]);echo'<p>
|
||
<input type="submit" value="Save">
|
||
';if($a!="")echo'<input type="submit" name="drop" value="Drop">',confirm(sprintf('Drop %s?',$a));echo
|
||
input_token(),'</form>
|
||
';}elseif(isset($_GET["event"])){$aa=$_GET["event"];$fe=array("YEAR","QUARTER","MONTH","DAY","HOUR","MINUTE","WEEK","SECOND","YEAR_MONTH","DAY_HOUR","DAY_MINUTE","DAY_SECOND","HOUR_MINUTE","HOUR_SECOND","MINUTE_SECOND");$Sh=array("ENABLED"=>"ENABLE","DISABLED"=>"DISABLE","SLAVESIDE_DISABLED"=>"DISABLE ON SLAVE");$K=$_POST;if($_POST&&!$l){if($_POST["drop"])query_redirect("DROP EVENT ".idf_escape($aa),substr(ME,0,-1),'Event has been dropped.');elseif(in_array($K["INTERVAL_FIELD"],$fe)&&isset($Sh[$K["STATUS"]])){$jh="\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!=""?'Event has been altered.':'Event has been created.'),queries(($aa!=""?"ALTER EVENT ".idf_escape($aa).$jh.($aa!=$K["EVENT_NAME"]?"\nRENAME TO ".idf_escape($K["EVENT_NAME"]):""):"CREATE EVENT ".idf_escape($K["EVENT_NAME"]).$jh)."\n".$Sh[$K["STATUS"]]." COMMENT ".q($K["EVENT_COMMENT"]).rtrim(" DO\n$K[EVENT_DEFINITION]",";").";"));}}page_header(($aa!=""?'Alter event'.": ".h($aa):'Create event'),$l);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>Name<td><input name="EVENT_NAME" value="',h($K["EVENT_NAME"]),'" data-maxlength="64" autocapitalize="off">
|
||
<tr><th title="datetime">Start<td><input name="STARTS" value="',h("$K[EXECUTE_AT]$K[STARTS]"),'">
|
||
<tr><th title="datetime">End<td><input name="ENDS" value="',h($K["ENDS"]),'">
|
||
<tr><th>Every<td><input type="number" name="INTERVAL_VALUE" value="',h($K["INTERVAL_VALUE"]),'" class="size"> ',html_select("INTERVAL_FIELD",$fe,$K["INTERVAL_FIELD"]),'<tr><th>Status<td>',html_select("STATUS",$Sh,$K["STATUS"]),'<tr><th>Comment<td><input name="EVENT_COMMENT" value="',h($K["EVENT_COMMENT"]),'" data-maxlength="64">
|
||
<tr><th><td>',checkbox("ON_COMPLETION","PRESERVE",$K["ON_COMPLETION"]=="PRESERVE",'On completion preserve'),'</table>
|
||
<p>';textarea("EVENT_DEFINITION",$K["EVENT_DEFINITION"]);echo'<p>
|
||
<input type="submit" value="Save">
|
||
';if($aa!="")echo'<input type="submit" name="drop" value="Drop">',confirm(sprintf('Drop %s?',$aa));echo
|
||
input_token(),'</form>
|
||
';}elseif(isset($_GET["procedure"])){$ba=($_GET["name"]?:$_GET["procedure"]);$eh=(isset($_GET["function"])?"FUNCTION":"PROCEDURE");$K=$_POST;$K["fields"]=(array)$K["fields"];if($_POST&&!process_fields($K["fields"])&&!$l){$Qf=routine($_GET["procedure"],$eh);$oi="$K[name]_adminer_".uniqid();foreach($K["fields"]as$x=>$m){if($m["field"]=="")unset($K["fields"][$x]);}drop_create("DROP $eh ".routine_id($ba,$Qf),create_routine($eh,$K),"DROP $eh ".routine_id($K["name"],$K),create_routine($eh,array("name"=>$oi)+$K),"DROP $eh ".routine_id($oi,$K),substr(ME,0,-1),'Routine has been dropped.','Routine has been altered.','Routine has been created.',$ba,$K["name"]);}page_header(($ba!=""?(isset($_GET["function"])?'Alter function':'Alter procedure').": ".h($ba):(isset($_GET["function"])?'Create function':'Create procedure')),$l);if(!$_POST){if($ba=="")$K["language"]="sql";else{$K=routine($_GET["procedure"],$eh);$K["name"]=$ba;}}$hb=get_vals("SHOW CHARACTER SET");sort($hb);$fh=routine_languages();echo($hb?"<datalist id='collations'>".optionlist($hb)."</datalist>":""),'
|
||
<form action="" method="post" id="form">
|
||
<p>Name: <input name="name" value="',h($K["name"]),'" data-maxlength="64" autocapitalize="off">
|
||
',($fh?"<label>".'Language'.": ".html_select("language",$fh,$K["language"])."</label>\n":""),'<input type="submit" value="Save">
|
||
<div class="scrollable">
|
||
<table class="nowrap">
|
||
';edit_fields($K["fields"],$hb,$eh);if(isset($_GET["function"])){echo"<tr><td>".'Return type';edit_type("returns",$K["returns"],$hb,array(),(JUSH=="pgsql"?array("void","trigger"):array()));}echo'</table>
|
||
',script("editFields();"),'</div>
|
||
<p>';textarea("definition",$K["definition"]);echo'<p>
|
||
<input type="submit" value="Save">
|
||
';if($ba!="")echo'<input type="submit" name="drop" value="Drop">',confirm(sprintf('Drop %s?',$ba));echo
|
||
input_token(),'</form>
|
||
';}elseif(isset($_GET["sequence"])){$da=$_GET["sequence"];$K=$_POST;if($_POST&&!$l){$_=substr(ME,0,-1);$C=trim($K["name"]);if($_POST["drop"])query_redirect("DROP SEQUENCE ".idf_escape($da),$_,'Sequence has been dropped.');elseif($da=="")query_redirect("CREATE SEQUENCE ".idf_escape($C),$_,'Sequence has been created.');elseif($da!=$C)query_redirect("ALTER SEQUENCE ".idf_escape($da)." RENAME TO ".idf_escape($C),$_,'Sequence has been altered.');else
|
||
redirect($_);}page_header($da!=""?'Alter sequence'.": ".h($da):'Create sequence',$l);if(!$K)$K["name"]=$da;echo'
|
||
<form action="" method="post">
|
||
<p><input name="name" value="',h($K["name"]),'" autocapitalize="off">
|
||
<input type="submit" value="Save">
|
||
';if($da!="")echo"<input type='submit' name='drop' value='".'Drop'."'>".confirm(sprintf('Drop %s?',$da))."\n";echo
|
||
input_token(),'</form>
|
||
';}elseif(isset($_GET["type"])){$ea=$_GET["type"];$K=$_POST;if($_POST&&!$l){$_=substr(ME,0,-1);if($_POST["drop"])query_redirect("DROP TYPE ".idf_escape($ea),$_,'Type has been dropped.');else
|
||
query_redirect("CREATE TYPE ".idf_escape(trim($K["name"]))." $K[as]",$_,'Type has been created.');}page_header($ea!=""?'Alter type'.": ".h($ea):'Create type',$l);if(!$K)$K["as"]="AS ";echo'
|
||
<form action="" method="post">
|
||
<p>
|
||
';if($ea!=""){$Qi=driver()->types();$zc=type_values($Qi[$ea]);if($zc)echo"<code class='jush-".JUSH."'>ENUM (".h($zc).")</code>\n<p>";echo"<input type='submit' name='drop' value='".'Drop'."'>".confirm(sprintf('Drop %s?',$ea))."\n";}else{echo'Name'.": <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='".'Save'."'>\n";}echo
|
||
input_token(),'</form>
|
||
';}elseif(isset($_GET["check"])){$a=$_GET["check"];$C=$_GET["name"];$K=$_POST;if($K&&!$l){if(JUSH=="sqlite")$I=recreate_table($a,$a,array(),array(),array(),"",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"]?'Check has been dropped.':($C!=""?'Check has been altered.':'Check has been created.')),$I);}page_header(($C!=""?'Alter check'.": ".h($C):'Create check'),$l,array("table"=>$a));if(!$K){$Za=driver()->checkConstraints($a);$K=array("name"=>$C,"clause"=>$Za[$C]);}echo'
|
||
<form action="" method="post">
|
||
<p>';if(JUSH!="sqlite")echo'Name'.': <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="Save">
|
||
';if($C!="")echo'<input type="submit" name="drop" value="Drop">',confirm(sprintf('Drop %s?',$C));echo
|
||
input_token(),'</form>
|
||
';}elseif(isset($_GET["trigger"])){$a=$_GET["trigger"];$C="$_GET[name]";$Mi=trigger_options();$K=(array)trigger($C,$a)+array("Trigger"=>$a."_bi");if($_POST){if(!$l&&in_array($_POST["Timing"],$Mi["Timing"])&&in_array($_POST["Event"],$Mi["Event"])&&in_array($_POST["Type"],$Mi["Type"])){$Af=" ON ".table($a);$ec="DROP TRIGGER ".idf_escape($C).(JUSH=="pgsql"?$Af:"");$A=ME."table=".urlencode($a);if($_POST["drop"])query_redirect($ec,$A,'Trigger has been dropped.');else{if($C!="")queries($ec);queries_redirect($A,($C!=""?'Trigger has been altered.':'Trigger has been created.'),queries(create_trigger($Af,$_POST)));if($C!="")queries(create_trigger($Af,$K+array("Type"=>reset($Mi["Type"]))));}}$K=$_POST;}page_header(($C!=""?'Alter trigger'.": ".h($C):'Create trigger'),$l,array("table"=>$a));echo'
|
||
<form action="" method="post" id="form">
|
||
<table class="layout">
|
||
<tr><th>Time<td>',html_select("Timing",$Mi["Timing"],$K["Timing"],"triggerChange(/^".preg_quote($a,"/")."_[ba][iud]$/, '".js_escape($a)."', this.form);"),'<tr><th>Event<td>',html_select("Event",$Mi["Event"],$K["Event"],"this.form['Timing'].onchange();"),(in_array("UPDATE OF",$Mi["Event"])?" <input name='Of' value='".h($K["Of"])."' class='hidden'>":""),'<tr><th>Type<td>',html_select("Type",$Mi["Type"],$K["Type"]),'</table>
|
||
<p>Name: <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="Save">
|
||
';if($C!="")echo'<input type="submit" name="drop" value="Drop">',confirm(sprintf('Drop %s?',$C));echo
|
||
input_token(),'</form>
|
||
';}elseif(isset($_GET["user"])){$fa=$_GET["user"];$Dg=array(""=>array("All privileges"=>""));foreach(get_rows("SHOW PRIVILEGES")as$K){foreach(explode(",",($K["Privilege"]=="Grant option"?"":$K["Context"]))as$xb)$Dg[$xb][$K["Privilege"]]=$K["Comment"];}$Dg["Server Admin"]+=$Dg["File access on server"];$Dg["Databases"]["Create routine"]=$Dg["Procedures"]["Create routine"];unset($Dg["Procedures"]["Create routine"]);$Dg["Columns"]=array();foreach(array("Select","Insert","Update","References")as$X)$Dg["Columns"][$X]=$Dg["Tables"][$X];unset($Dg["Server Admin"]["Usage"]);foreach($Dg["Tables"]as$x=>$X)unset($Dg["Databases"][$x]);$kf=array();if($_POST){foreach($_POST["objects"]as$x=>$X)$kf[$X]=(array)$kf[$X]+idx($_POST["grants"],$x,array());}$rd=array();$zf="";if(isset($_GET["host"])&&($I=connection()->query("SHOW GRANTS FOR ".q($fa)."@".q($_GET["host"])))){while($K=$I->fetch_row()){if(preg_match('~GRANT (.*) ON (.*) TO ~',$K[0],$B)&&preg_match_all('~ *([^(,]*[^ ,(])( *\([^)]+\))?~',$B[1],$Le,PREG_SET_ORDER)){foreach($Le
|
||
as$X){if($X[1]!="USAGE")$rd["$B[2]$X[2]"][$X[1]]=true;if(preg_match('~ WITH GRANT OPTION~',$K[0]))$rd["$B[2]$X[2]"]["GRANT OPTION"]=true;}}if(preg_match("~ IDENTIFIED BY PASSWORD '([^']+)~",$K[0],$B))$zf=$B[1];}}if($_POST&&!$l){$_f=(isset($_GET["host"])?q($fa)."@".q($_GET["host"]):"''");if($_POST["drop"])query_redirect("DROP USER $_f",ME."privileges=",'User has been dropped.');else{$mf=q($_POST["user"])."@".q($_POST["host"]);$kg=$_POST["pass"];if($kg!=''&&!$_POST["hashed"]&&!min_version(8)){$kg=get_val("SELECT PASSWORD(".q($kg).")");$l=!$kg;}$Bb=false;if(!$l){if($_f!=$mf){$Bb=queries((min_version(5)?"CREATE USER":"GRANT USAGE ON *.* TO")." $mf IDENTIFIED BY ".(min_version(8)?"":"PASSWORD ").q($kg));$l=!$Bb;}elseif($kg!=$zf)queries("SET PASSWORD FOR $mf = ".q($kg));}if(!$l){$bh=array();foreach($kf
|
||
as$tf=>$qd){if(isset($_GET["grant"]))$qd=array_filter($qd);$qd=array_keys($qd);if(isset($_GET["grant"]))$bh=array_diff(array_keys(array_filter($kf[$tf],'strlen')),$qd);elseif($_f==$mf){$xf=array_keys((array)$rd[$tf]);$bh=array_diff($xf,$qd);$qd=array_diff($qd,$xf);unset($rd[$tf]);}if(preg_match('~^(.+)\s*(\(.*\))?$~U',$tf,$B)&&(!grant("REVOKE",$bh,$B[2]," ON $B[1] FROM $mf")||!grant("GRANT",$qd,$B[2]," ON $B[1] TO $mf"))){$l=true;break;}}}if(!$l&&isset($_GET["host"])){if($_f!=$mf)queries("DROP USER $_f");elseif(!isset($_GET["grant"])){foreach($rd
|
||
as$tf=>$bh){if(preg_match('~^(.+)(\(.*\))?$~U',$tf,$B))grant("REVOKE",array_keys($bh),$B[2]," ON $B[1] FROM $mf");}}}queries_redirect(ME."privileges=",(isset($_GET["host"])?'User has been altered.':'User has been created.'),!$l);if($Bb)connection()->query("DROP USER $mf");}}page_header((isset($_GET["host"])?'Username'.": ".h("$fa@$_GET[host]"):'Create user'),$l,array("privileges"=>array('','Privileges')));$K=$_POST;if($K)$rd=$kf;else{$K=$_GET+array("host"=>get_val("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', -1)"));$K["pass"]=$zf;if($zf!="")$K["hashed"]=true;$rd[(DB==""||$rd?"":idf_escape(addcslashes(DB,"%_\\"))).".*"]=array();}echo'<form action="" method="post">
|
||
<table class="layout">
|
||
<tr><th>Server<td><input name="host" data-maxlength="60" value="',h($K["host"]),'" autocapitalize="off">
|
||
<tr><th>Username<td><input name="user" data-maxlength="80" value="',h($K["user"]),'" autocapitalize="off">
|
||
<tr><th>Password<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"],'Hashed',"typePassword(this.form['pass'], this.checked);")),'</table>
|
||
|
||
',"<table class='odds'>\n","<thead><tr><th colspan='2'>".'Privileges'.doc_link(array('sql'=>"grant.html#priv_level"));$s=0;foreach($rd
|
||
as$tf=>$qd){echo'<th>'.($tf!="*.*"?"<input name='objects[$s]' value='".h($tf)."' size='10' autocapitalize='off'>":input_hidden("objects[$s]","*.*")."*.*");$s++;}echo"</thead>\n";foreach(array(""=>"","Server Admin"=>'Server',"Databases"=>'Database',"Tables"=>'Table',"Columns"=>'Column',"Procedures"=>'Routine',)as$xb=>$Ub){foreach((array)$Dg[$xb]as$Cg=>$mb){echo"<tr><td".($Ub?">$Ub<td":" colspan='2'").' lang="en" title="'.h($mb).'">'.h($Cg);$s=0;foreach($rd
|
||
as$tf=>$qd){$C="'grants[$s][".h(strtoupper($Cg))."]'";$Y=$qd[strtoupper($Cg)];if($xb=="Server Admin"&&$tf!=(isset($rd["*.*"])?"*.*":".*"))echo"<td>";elseif(isset($_GET["grant"]))echo"<td><select name=$C><option><option value='1'".($Y?" selected":"").">".'Grant'."<option value='0'".($Y=="0"?" selected":"").">".'Revoke'."</select>";else
|
||
echo"<td align='center'><label class='block'>","<input type='checkbox' name=$C value='1'".($Y?" checked":"").($Cg=="All privileges"?" id='grants-$s-all'>":">".($Cg=="Grant option"?"":script("qsl('input').onclick = function () { if (this.checked) formUncheck('grants-$s-all'); };"))),"</label>";$s++;}}}echo"</table>\n",'<p>
|
||
<input type="submit" value="Save">
|
||
';if(isset($_GET["host"]))echo'<input type="submit" name="drop" value="Drop">',confirm(sprintf('Drop %s?',"$fa@$_GET[host]"));echo
|
||
input_token(),'</form>
|
||
';}elseif(isset($_GET["processlist"])){if(support("kill")){if($_POST&&!$l){$te=0;foreach((array)$_POST["kill"]as$X){if(kill_process($X))$te++;}queries_redirect(ME."processlist=",lang_format(array('%d process has been killed.','%d processes have been killed.'),$te),$te||!$_POST["kill"]);}}page_header('Process list',$l);echo'
|
||
<form action="" method="post">
|
||
<div class="scrollable">
|
||
<table class="nowrap checkable odds">
|
||
',script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});");$s=-1;foreach(process_list()as$s=>$K){if(!$s){echo"<thead><tr lang='en'>".(support("kill")?"<th>":"");foreach($K
|
||
as$x=>$X)echo"<th>$x".doc_link(array('sql'=>"show-processlist.html#processlist_".strtolower($x),'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$x=>$X)echo"<td>".((JUSH=="sql"&&$x=="Info"&&preg_match("~Query|Killed~",$K["Command"])&&$X!="")||(JUSH=="pgsql"&&$x=="current_query"&&$X!="<IDLE>")||(JUSH=="oracle"&&$x=="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)).'">'.'Clone'.'</a>':h($X));echo"\n";}echo'</table>
|
||
</div>
|
||
<p>
|
||
';if(support("kill"))echo($s+1)."/".sprintf('%d in total',max_connections()),"<p><input type='submit' value='".'Kill'."'>\n";echo
|
||
input_token(),'</form>
|
||
',script("tableCheck();");}elseif(isset($_GET["select"])){$a=$_GET["select"];$S=table_status1($a);$w=indexes($a);$n=fields($a);$hd=column_foreign_keys($a);$vf=$S["Oid"];$na=get_settings("adminer_import");$ch=array();$e=array();$ph=array();$Mf=array();$si="";foreach($n
|
||
as$x=>$m){$C=adminer()->fieldName($m);$if=html_entity_decode(strip_tags($C),ENT_QUOTES);if(isset($m["privileges"]["select"])&&$C!=""){$e[$x]=$if;if(is_shortable($m))$si=adminer()->selectLengthProcess();}if(isset($m["privileges"]["where"])&&$C!="")$ph[$x]=$if;if(isset($m["privileges"]["order"])&&$C!="")$Mf[$x]=$if;$ch+=$m["privileges"];}list($M,$sd)=adminer()->selectColumnsProcess($e,$w);$M=array_unique($M);$sd=array_unique($sd);$je=count($sd)<count($M);$Z=adminer()->selectSearchProcess($n,$w);$Lf=adminer()->selectOrderProcess($n,$w);$z=adminer()->selectLimitProcess();if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$Vi=>$K){$wa=convert_field($n[key($K)]);$M=array($wa?:idf_escape(key($K)));$Z[]=where_check($Vi,$n);$J=driver()->select($a,$M,$Z,$M);if($J)echo
|
||
first($J->fetch_row());}exit;}$G=$Xi=null;foreach($w
|
||
as$v){if($v["type"]=="PRIMARY"){$G=array_flip($v["columns"]);$Xi=($M?$G:array());foreach($Xi
|
||
as$x=>$X){if(in_array(idf_escape($x),$M))unset($Xi[$x]);}break;}}if($vf&&!$G){$G=$Xi=array($vf=>0);$w[]=array("type"=>"PRIMARY","columns"=>array($vf));}if($_POST&&!$l){$vj=$Z;if(!$_POST["all"]&&is_array($_POST["check"])){$Za=array();foreach($_POST["check"]as$Va)$Za[]=where_check($Va,$n);$vj[]="((".implode(") OR (",$Za)."))";}$vj=($vj?"\nWHERE ".implode(" AND ",$vj):"");if($_POST["export"]){save_settings(array("output"=>$_POST["output"],"format"=>$_POST["format"]),"adminer_import");dump_headers($a);adminer()->dumpTable($a,"");$ld=($M?implode(", ",$M):"*").convert_fields($e,$n,$M)."\nFROM ".table($a);$ud=($sd&&$je?"\nGROUP BY ".implode(", ",$sd):"").($Lf?"\nORDER BY ".implode(", ",$Lf):"");$H="SELECT $ld$vj$ud";if(is_array($_POST["check"])&&!$G){$Ti=array();foreach($_POST["check"]as$X)$Ti[]="(SELECT".limit($ld,"\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$n).$ud,1).")";$H=implode(" UNION ALL ",$Ti);}adminer()->dumpData($a,"table",$H);adminer()->dumpFooter();exit;}if(!adminer()->selectEmailProcess($Z,$hd)){if($_POST["save"]||$_POST["delete"]){$I=true;$oa=0;$O=array();if(!$_POST["delete"]){foreach($_POST["fields"]as$C=>$X){$X=process_input($n[$C]);if($X!==null&&($_POST["clone"]||$X!==false))$O[idf_escape($C)]=($X!==false?$X:idf_escape($C));}}if($_POST["delete"]||$O){$H=($_POST["clone"]?"INTO ".table($a)." (".implode(", ",array_keys($O)).")\nSELECT ".implode(", ",$O)."\nFROM ".table($a):"");if($_POST["all"]||($G&&is_array($_POST["check"]))||$je){$I=($_POST["delete"]?driver()->delete($a,$vj):($_POST["clone"]?queries("INSERT $H$vj".driver()->insertReturning($a)):driver()->update($a,$O,$vj)));$oa=connection()->affected_rows;if(is_object($I))$oa+=$I->num_rows;}else{foreach((array)$_POST["check"]as$X){$uj="\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$n);$I=($_POST["delete"]?driver()->delete($a,$uj,1):($_POST["clone"]?queries("INSERT".limit1($a,$H,$uj)):driver()->update($a,$O,$uj,1)));if(!$I)break;$oa+=connection()->affected_rows;}}}$Ve=lang_format(array('%d item has been affected.','%d items have been affected.'),$oa);if($_POST["clone"]&&$I&&$oa==1){$ye=last_id($I);if($ye)$Ve=sprintf('Item%s has been inserted.'," $ye");}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page":""),$Ve,$I);if(!$_POST["delete"]){$wg=(array)$_POST["fields"];edit_form($a,array_intersect_key($n,$wg),$wg,!$_POST["clone"],$l);page_footer();exit;}}elseif(!$_POST["import"]){if(!$_POST["val"])$l='Ctrl+click on a value to modify it.';else{$I=true;$oa=0;foreach($_POST["val"]as$Vi=>$K){$O=array();foreach($K
|
||
as$x=>$X){$x=bracket_escape($x,true);$O[idf_escape($x)]=(preg_match('~char|text~',$n[$x]["type"])||$X!=""?adminer()->processInput($n[$x],$X):"NULL");}$I=driver()->update($a,$O," WHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($Vi,$n),($je||$G?0:1)," ");if(!$I)break;$oa+=connection()->affected_rows;}queries_redirect(remove_from_uri(),lang_format(array('%d item has been affected.','%d items have been affected.'),$oa),$I);}}elseif(!is_string($Vc=get_file("csv_file",true)))$l=upload_error($Vc);elseif(!preg_match('~~u',$Vc))$l='File must be in UTF-8 encoding.';else{save_settings(array("output"=>$na["output"],"format"=>$_POST["separator"]),"adminer_import");$I=true;$ib=array_keys($n);preg_match_all('~(?>"[^"]*"|[^"\r\n]+)+~',$Vc,$Le);$oa=count($Le[0]);driver()->begin();$vh=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$L=array();foreach($Le[0]as$x=>$X){preg_match_all("~((?>\"[^\"]*\")+|[^$vh]*)$vh~",$X.$vh,$Me);if(!$x&&!array_diff($Me[1],$ib)){$ib=$Me[1];$oa--;}else{$O=array();foreach($Me[1]as$s=>$fb)$O[idf_escape($ib[$s])]=($fb==""&&$n[$ib[$s]]["null"]?"NULL":q(preg_match('~^".*"$~s',$fb)?str_replace('""','"',substr($fb,1,-1)):$fb));$L[]=$O;}}$I=(!$L||driver()->insertUpdate($a,$L,$G));if($I)driver()->commit();queries_redirect(remove_from_uri("page"),lang_format(array('%d row has been imported.','%d rows have been imported.'),$oa),$I);driver()->rollback();}}}$di=adminer()->tableName($S);if(is_ajax()){page_headers();ob_start();}else
|
||
page_header('Select'.": $di",$l);$O=null;if(isset($ch["insert"])||!support("table")){$dg=array();foreach((array)$_GET["where"]as$X){if(isset($hd[$X["col"]])&&count($hd[$X["col"]])==1&&($X["op"]=="="||(!$X["op"]&&(is_array($X["val"])||!preg_match('~[_%]~',$X["val"])))))$dg["set"."[".bracket_escape($X["col"])."]"]=$X["val"];}$O=$dg?"&".http_build_query($dg):"";}adminer()->selectLinks($S,$O);if(!$e&&support("table"))echo"<p class='error'>".'Unable to select the table'.($n?".":": ".error())."\n";else{echo"<form action='' id='form'>\n","<div style='display: none;'>";hidden_fields_get();echo(DB!=""?input_hidden("db",DB).(isset($_GET["ns"])?input_hidden("ns",$_GET["ns"]):""):""),input_hidden("select",$a),"</div>\n";adminer()->selectColumnsPrint($M,$e);adminer()->selectSearchPrint($Z,$ph,$w);adminer()->selectOrderPrint($Lf,$Mf,$w);adminer()->selectLimitPrint($z);adminer()->selectLengthPrint($si);adminer()->selectActionPrint($w);echo"</form>\n";$E=$_GET["page"];$kd=null;if($E=="last"){$kd=get_val(count_rows($a,$Z,$je,$sd));$E=floor(max(0,intval($kd)-1)/$z);}$qh=$M;$td=$sd;if(!$qh){$qh[]="*";$yb=convert_fields($e,$n,$M);if($yb)$qh[]=substr($yb,2);}foreach($M
|
||
as$x=>$X){$m=$n[idf_unescape($X)];if($m&&($wa=convert_field($m)))$qh[$x]="$wa AS $X";}if(!$je&&$Xi){foreach($Xi
|
||
as$x=>$X){$qh[]=idf_escape($x);if($td)$td[]=idf_escape($x);}}$I=driver()->select($a,$qh,$Z,$td,$Lf,$z,$E,true);if(!$I)echo"<p class='error'>".error()."\n";else{if(JUSH=="mssql"&&$E)$I->seek($z*$E);$sc=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"&&$z&&$sd&&$je&&JUSH=="sql")$kd=get_val(" SELECT FOUND_ROWS()");if(!$L)echo"<p class='message'>".'No rows.'."\n";else{$Ea=adminer()->backwardKeys($a,$di);echo"<div class='scrollable'>","<table id='table' class='nowrap checkable odds'>",script("mixin(qs('#table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true), onkeydown: editingKeydown});"),"<thead><tr>".(!$sd&&$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")."'>".'Modify'."</a>");$jf=array();$nd=array();reset($M);$Mg=1;foreach($L[0]as$x=>$X){if(!isset($Xi[$x])){$X=idx($_GET["columns"],key($M))?:array();$m=$n[$M?($X?$X["col"]:current($M)):$x];$C=($m?adminer()->fieldName($m,$Mg):($X["fun"]?"*":h($x)));if($C!=""){$Mg++;$jf[$x]=$C;$d=idf_escape($x);$Jd=remove_from_uri('(order|desc)[^=]*|page').'&order%5B0%5D='.urlencode($x);$Ub="&desc%5B0%5D=1";echo"<th id='th[".h(bracket_escape($x))."]'>".script("mixin(qsl('th'), {onmouseover: partial(columnMouse), onmouseout: partial(columnMouse, ' hidden')});","");$md=apply_sql_function($X["fun"],$C);$Hh=isset($m["privileges"]["order"])||$md;echo($Hh?'<a href="'.h($Jd.($Lf[0]==$d||$Lf[0]==$x||(!$Lf&&$je&&$sd[0]==$d)?$Ub:'')).'">'."$md</a>":$md),"<span class='column hidden'>";if($Hh)echo"<a href='".h($Jd.$Ub)."' title='".'descending'."' class='text'> ↓</a>";if(!$X["fun"]&&isset($m["privileges"]["where"]))echo'<a href="#fieldset-search" title="'.'Search'.'" class="text jsonly"> =</a>',script("qsl('a').onclick = partial(selectSearch, '".js_escape($x)."');");echo"</span>";}$nd[$x]=$X["fun"];next($M);}}$Ce=array();if($_GET["modify"]){foreach($L
|
||
as$K){foreach($K
|
||
as$x=>$X)$Ce[$x]=max($Ce[$x],min(40,strlen(utf8_decode($X))));}}echo($Ea?"<th>".'Relations':"")."</thead>\n";if(is_ajax())ob_end_clean();foreach(adminer()->rowDescriptions($L,$hd)as$hf=>$K){$Ui=unique_array($L[$hf],$w);if(!$Ui){$Ui=array();foreach($L[$hf]as$x=>$X){if(!preg_match('~^(COUNT\((\*|(DISTINCT )?`(?:[^`]|``)+`)\)|(AVG|GROUP_CONCAT|MAX|MIN|SUM)\(`(?:[^`]|``)+`\))$~',$x))$Ui[$x]=$X;}}$Vi="";foreach($Ui
|
||
as$x=>$X){$m=(array)$n[$x];if((JUSH=="sql"||JUSH=="pgsql")&&preg_match('~char|text|enum|set~',$m["type"])&&strlen($X)>64){$x=(strpos($x,'(')?$x:idf_escape($x));$x="MD5(".(JUSH!='sql'||preg_match("~^utf8~",$m["collation"])?$x:"CONVERT($x USING ".charset(connection()).")").")";$X=md5($X);}$Vi
|
||
.="&".($X!==null?urlencode("where[".bracket_escape($x)."]")."=".urlencode($X===false?"f":$X):"null%5B%5D=".urlencode($x));}echo"<tr>".(!$sd&&$M?"":"<td>".checkbox("check[]",substr($Vi,1),in_array(substr($Vi,1),(array)$_POST["check"])).($je||information_schema(DB)?"":" <a href='".h(ME."edit=".urlencode($a).$Vi)."' class='edit'>".'edit'."</a>"));foreach($K
|
||
as$x=>$X){if(isset($jf[$x])){$m=(array)$n[$x];$X=driver()->value($X,$m);if($X!=""&&(!isset($sc[$x])||$sc[$x]!=""))$sc[$x]=(is_mail($X)?$jf[$x]:"");$_="";if(preg_match('~blob|bytea|raw|file~',$m["type"])&&$X!="")$_=ME.'download='.urlencode($a).'&field='.urlencode($x).$Vi;if(!$_&&$X!==null){foreach((array)$hd[$x]as$p){if(count($hd[$x])==1||end($p["source"])==$x){$_="";foreach($p["source"]as$s=>$Ih)$_
|
||
.=where_link($s,$p["target"][$s],$L[$hf][$Ih]);$_=($p["db"]!=""?preg_replace('~([?&]db=)[^&]+~','\1'.urlencode($p["db"]),ME):ME).'select='.urlencode($p["table"]).$_;if($p["ns"])$_=preg_replace('~([?&]ns=)[^&]+~','\1'.urlencode($p["ns"]),$_);if(count($p["source"])==1)break;}}}if($x=="COUNT(*)"){$_=ME."select=".urlencode($a);$s=0;foreach((array)$_GET["where"]as$W){if(!array_key_exists($W["col"],$Ui))$_
|
||
.=where_link($s++,$W["col"],$W["val"],$W["op"]);}foreach($Ui
|
||
as$pe=>$W)$_
|
||
.=where_link($s++,$pe,$W);}$Kd=select_value($X,$_,$m,$si);$t=h("val[$Vi][".bracket_escape($x)."]");$xg=idx(idx($_POST["val"],$Vi),bracket_escape($x));$nc=!is_array($K[$x])&&is_utf8($Kd)&&$L[$hf][$x]==$K[$x]&&!$nd[$x]&&!$m["generated"];$qi=preg_match('~text|json|lob~',$m["type"]);echo"<td id='$t'".(preg_match(number_type(),$m["type"])&&($X===null||is_numeric(strip_tags($Kd)))?" class='number'":"");if(($_GET["modify"]&&$nc&&$X!==null)||$xg!==null){$xd=h($xg!==null?$xg:$K[$x]);echo">".($qi?"<textarea name='$t' cols='30' rows='".(substr_count($K[$x],"\n")+1)."'>$xd</textarea>":"<input name='$t' value='$xd' size='$Ce[$x]'>");}else{$Ge=strpos($Kd,"<i>…</i>");echo" data-text='".($Ge?2:($qi?1:0))."'".($nc?"":" data-warning='".h('Use edit link to modify this value.')."'").">$Kd";}}}if($Ea)echo"<td>";adminer()->backwardKeysPrint($Ea,$L[$hf]);echo"</tr>\n";}if(is_ajax())exit;echo"</table>\n","</div>\n";}if(!is_ajax()){if($L||$E){$Fc=true;if($_GET["page"]!="last"){if(!$z||(count($L)<$z&&($L||!$E)))$kd=($E?$E*$z:0)+count($L);elseif(JUSH!="sql"||!$je){$kd=($je?false:found_rows($S,$Z));if(intval($kd)<max(1e4,2*($E+1)*$z))$kd=first(slow_query(count_rows($a,$Z,$je,$sd)));else$Fc=false;}}$bg=($z&&($kd===false||$kd>$z||$E));if($bg)echo(($kd===false?count($L)+1:$kd-$E*$z)>$z?'<p><a href="'.h(remove_from_uri("page")."&page=".($E+1)).'" class="loadmore">'.'Load more data'.'</a>'.script("qsl('a').onclick = partial(selectLoadMore, $z, '".'Loading'."…');",""):''),"\n";echo"<div class='footer'><div>\n";if($bg){$Oe=($kd===false?$E+(count($L)>=$z?2:1):floor(($kd-1)/$z));echo"<fieldset>";if(JUSH!="simpledb"){echo"<legend><a href='".h(remove_from_uri("page"))."'>".'Page'."</a></legend>",script("qsl('a').onclick = function () { pageClick(this.href, +prompt('".'Page'."', '".($E+1)."')); return false; };"),pagination(0,$E).($E>5?" …":"");for($s=max(1,$E-4);$s<min($Oe,$E+5);$s++)echo
|
||
pagination($s,$E);if($Oe>0)echo($E+5<$Oe?" …":""),($Fc&&$kd!==false?pagination($Oe,$E):" <a href='".h(remove_from_uri("page")."&page=last")."' title='~$Oe'>".'last'."</a>");}else
|
||
echo"<legend>".'Page'."</legend>",pagination(0,$E).($E>1?" …":""),($E?pagination($E,$E):""),($Oe>$E?pagination($E+1,$E).($Oe>$E+1?" …":""):"");echo"</fieldset>\n";}echo"<fieldset>","<legend>".'Whole result'."</legend>";$bc=($Fc?"":"~ ").$kd;$Ef="const checked = formChecked(this, /check/); selectCount('selected', this.checked ? '$bc' : checked); selectCount('selected2', this.checked || !checked ? '$bc' : checked);";echo
|
||
checkbox("all",1,0,($kd!==false?($Fc?"":"~ ").lang_format(array('%d row','%d rows'),$kd):""),$Ef)."\n","</fieldset>\n";if(adminer()->selectCommandPrint())echo'<fieldset',($_GET["modify"]?'':' class="jsonly"'),'><legend>Modify</legend><div>
|
||
<input type="submit" value="Save"',($_GET["modify"]?'':' title="'.'Ctrl+click on a value to modify it.'.'"'),'>
|
||
</div></fieldset>
|
||
<fieldset><legend>Selected <span id="selected"></span></legend><div>
|
||
<input type="submit" name="edit" value="Edit">
|
||
<input type="submit" name="clone" value="Clone">
|
||
<input type="submit" name="delete" value="Delete">',confirm(),'</div></fieldset>
|
||
';$id=adminer()->dumpFormat();foreach((array)$_GET["columns"]as$d){if($d["fun"]){unset($id['sql']);break;}}if($id){print_fieldset("export",'Export'." <span id='selected2'></span>");$Yf=adminer()->dumpOutput();echo($Yf?html_select("output",$Yf,$na["output"])." ":""),html_select("format",$id,$na["format"])," <input type='submit' name='export' value='".'Export'."'>\n","</div></fieldset>\n";}adminer()->selectEmailPrint(array_filter($sc,'strlen'),$e);echo"</div></div>\n";}if(adminer()->selectImportPrint())echo"<div>","<a href='#import'>".'Import'."</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"),$na["format"])," <input type='submit' name='import' value='".'Import'."'>","</span>","</div>";echo
|
||
input_token(),"</form>\n",(!$sd&&$M?"":script("tableCheck();"));}}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["variables"])){$P=isset($_GET["status"]);page_header($P?'Status':'Variables');$lj=($P?show_status():show_variables());if(!$lj)echo"<p class='message'>".'No rows.'."\n";else{echo"<table>\n";foreach($lj
|
||
as$K){echo"<tr>";$x=array_shift($K);echo"<th><code class='jush-".JUSH.($P?"status":"set")."'>".h($x)."</code>";foreach($K
|
||
as$X)echo"<td>".nl_br(h($X));}echo"</table>\n";}}elseif(isset($_GET["script"])){header("Content-Type: text/javascript; charset=utf-8");if($_GET["script"]=="db"){$Zh=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$x)json_row("$x-$C",h($S[$x]));foreach($Zh+array("Auto_increment"=>0,"Rows"=>0)as$x=>$X){if($S[$x]!=""){$X=format_number($S[$x]);if($X>=0)json_row("$x-$C",($x=="Rows"&&$X&&$S["Engine"]==(JUSH=="pgsql"?"table":"InnoDB")?"~ $X":$X));if(isset($Zh[$x]))$Zh[$x]+=($S["Engine"]!="InnoDB"||$x!="Data_free"?$S[$x]:0);}elseif(array_key_exists($x,$S))json_row("$x-$C","?");}}}foreach($Zh
|
||
as$x=>$X)json_row("sum-$x",format_number($X));json_row("");}elseif($_GET["script"]=="kill")connection()->query("KILL ".number($_POST["kill"]));else{foreach(count_tables(adminer()->databases())as$j=>$X){json_row("tables-$j",$X);json_row("size-$j",db_size($j));}json_row("");}exit;}else{$ki=array_merge((array)$_POST["tables"],(array)$_POST["views"]);if($ki&&!$l&&!$_POST["search"]){$I=true;$Ve="";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"]);$Ve='Tables have been truncated.';}elseif($_POST["move"]){$I=move_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$Ve='Tables have been moved.';}elseif($_POST["copy"]){$I=copy_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$Ve='Tables have been copied.';}elseif($_POST["drop"]){if($_POST["views"])$I=drop_views($_POST["views"]);if($I&&$_POST["tables"])$I=drop_tables($_POST["tables"]);$Ve='Tables have been dropped.';}elseif(JUSH=="sqlite"&&$_POST["check"]){foreach((array)$_POST["tables"]as$R){foreach(get_rows("PRAGMA integrity_check(".q($R).")")as$K)$Ve
|
||
.="<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"]));$Ve='Tables have been optimized.';}elseif(!$_POST["tables"])$Ve='No tables.';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())$Ve
|
||
.="<b>".h($K["Table"])."</b>: ".h($K["Msg_text"])."<br>";}queries_redirect(substr(ME,0,-1),$Ve,$I);}page_header(($_GET["ns"]==""?'Database'.": ".h(DB):'Schema'.": ".h($_GET["ns"])),$l,true);if(adminer()->homepage()){if($_GET["ns"]!==""){echo"<h3 id='tables-views'>".'Tables and views'."</h3>\n";$ji=tables_list();if(!$ji)echo"<p class='message'>".'No tables.'."\n";else{echo"<form action='' method='post'>\n";if(support("table")){echo"<fieldset><legend>".'Search data in tables'." <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='".'Search'."'>\n","</div></fieldset>\n";if($_POST["search"]&&$_POST["query"]!=""){$_GET["where"][0]["op"]=driver()->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>'.'Table','<td>'.'Engine'.doc_link(array('sql'=>'storage-engines.html')),'<td>'.'Collation'.doc_link(array('sql'=>'charset-charsets.html','mariadb'=>'supported-character-sets-and-collations/')),'<td>'.'Data Length'.doc_link(array('sql'=>'show-table-status.html','pgsql'=>'functions-admin.html#FUNCTIONS-ADMIN-DBOBJECT','oracle'=>'REFRN20286')),'<td>'.'Index Length'.doc_link(array('sql'=>'show-table-status.html','pgsql'=>'functions-admin.html#FUNCTIONS-ADMIN-DBOBJECT')),'<td>'.'Data Free'.doc_link(array('sql'=>'show-table-status.html')),'<td>'.'Auto Increment'.doc_link(array('sql'=>'example-auto-increment.html','mariadb'=>'auto_increment/')),'<td>'.'Rows'.doc_link(array('sql'=>'show-table-status.html','pgsql'=>'catalog-pg-class.html#CATALOG-PG-CLASS','oracle'=>'REFRN20286')),(support("comment")?'<td>'.'Comment'.doc_link(array('sql'=>'show-table-status.html','pgsql'=>'functions-info.html#FUNCTIONS-INFO-COMMENT-TABLE')):''),"</thead>\n";$T=0;foreach($ji
|
||
as$C=>$U){$oj=($U!==null&&!preg_match('~table|sequence~i',$U));$t=h("Table-".$C);echo'<tr><td>'.checkbox(($oj?"views[]":"tables[]"),$C,in_array("$C",$ki,true),"","","",$t),'<th>'.(support("table")||support("indexes")?"<a href='".h(ME)."table=".urlencode($C)."' title='".'Show structure'."' id='$t'>".h($C).'</a>':h($C));if($oj)echo'<td colspan="6"><a href="'.h(ME)."view=".urlencode($C).'" title="'.'Alter view'.'">'.(preg_match('~materialized~i',$U)?'Materialized view':'View').'</a>','<td align="right"><a href="'.h(ME)."select=".urlencode($C).'" title="'.'Select data'.'">?</a>';else{foreach(array("Engine"=>array(),"Collation"=>array(),"Data_length"=>array("create",'Alter table'),"Index_length"=>array("indexes",'Alter indexes'),"Data_free"=>array("edit",'New item'),"Auto_increment"=>array("auto_increment=1&create",'Alter table'),"Rows"=>array("select",'Select data'),)as$x=>$_){$t=" id='$x-".h($C)."'";echo($_?"<td align='right'>".(support("table")||$x=="Rows"||(support("indexes")&&$x!="Data_length")?"<a href='".h(ME."$_[0]=").urlencode($C)."'$t title='$_[1]'>?</a>":"<span$t>?</span>"):"<td id='$x-".h($C)."'>");}$T++;}echo(support("comment")?"<td id='Comment-".h($C)."'>":""),"\n";}echo"<tr><td><th>".sprintf('%d in total',count($ji)),"<td>".h(JUSH=="sql"?get_val("SELECT @@default_storage_engine"):""),"<td>".h(db_collation(DB,collations()));foreach(array("Data_length","Index_length","Data_free")as$x)echo"<td align='right' id='sum-$x'>";echo"\n","</table>\n","</div>\n";if(!information_schema(DB)){echo"<div class='footer'><div>\n";$ij="<input type='submit' value='".'Vacuum'."'> ".on_help("'VACUUM'");$Hf="<input type='submit' name='optimize' value='".'Optimize'."'> ".on_help(JUSH=="sql"?"'OPTIMIZE TABLE'":"'VACUUM OPTIMIZE'");echo"<fieldset><legend>".'Selected'." <span id='selected'></span></legend><div>".(JUSH=="sqlite"?$ij."<input type='submit' name='check' value='".'Check'."'> ".on_help("'PRAGMA integrity_check'"):(JUSH=="pgsql"?$ij.$Hf:(JUSH=="sql"?"<input type='submit' value='".'Analyze'."'> ".on_help("'ANALYZE TABLE'").$Hf."<input type='submit' name='check' value='".'Check'."'> ".on_help("'CHECK TABLE'")."<input type='submit' name='repair' value='".'Repair'."'> ".on_help("'REPAIR TABLE'"):"")))."<input type='submit' name='truncate' value='".'Truncate'."'> ".on_help(JUSH=="sqlite"?"'DELETE'":"'TRUNCATE".(JUSH=="pgsql"?"'":" TABLE'")).confirm()."<input type='submit' name='drop' value='".'Drop'."'>".on_help("'DROP TABLE'").confirm()."\n";$i=(support("scheme")?adminer()->schemas():adminer()->databases());if(count($i)!=1&&JUSH!="sqlite"){$j=(isset($_POST["target"])?$_POST["target"]:(support("scheme")?$_GET["ns"]:DB));echo"<p><label>".'Move to other database'.": ",($i?html_select("target",$i,$j):'<input name="target" value="'.h($j).'" autocapitalize="off">'),"</label> <input type='submit' name='move' value='".'Move'."'>",(support("copy")?" <input type='submit' name='copy' value='".'Copy'."'> ".checkbox("overwrite",1,$_POST["overwrite"],'overwrite'):""),"\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_token(),"</div></fieldset>\n","</div></div>\n";}echo"</form>\n",script("tableCheck();");}echo"<p class='links'><a href='".h(ME)."create='>".'Create table'."</a>\n",(support("view")?"<a href='".h(ME)."view='>".'Create view'."</a>\n":"");if(support("routine")){echo"<h3 id='routines'>".'Routines'."</h3>\n";$gh=routines();if($gh){echo"<table class='odds'>\n",'<thead><tr><th>'.'Name'.'<td>'.'Type'.'<td>'.'Return type'."<td></thead>\n";foreach($gh
|
||
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).'">'.'Alter'."</a>";}echo"</table>\n";}echo'<p class="links">'.(support("procedure")?'<a href="'.h(ME).'procedure=">'.'Create procedure'.'</a>':'').'<a href="'.h(ME).'function=">'.'Create function'."</a>\n";}if(support("sequence")){echo"<h3 id='sequences'>".'Sequences'."</h3>\n";$yh=get_vals("SELECT sequence_name FROM information_schema.sequences WHERE sequence_schema = current_schema() ORDER BY sequence_name");if($yh){echo"<table class='odds'>\n","<thead><tr><th>".'Name'."</thead>\n";foreach($yh
|
||
as$X)echo"<tr><th><a href='".h(ME)."sequence=".urlencode($X)."'>".h($X)."</a>\n";echo"</table>\n";}echo"<p class='links'><a href='".h(ME)."sequence='>".'Create sequence'."</a>\n";}if(support("type")){echo"<h3 id='user-types'>".'User types'."</h3>\n";$gj=types();if($gj){echo"<table class='odds'>\n","<thead><tr><th>".'Name'."</thead>\n";foreach($gj
|
||
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='>".'Create type'."</a>\n";}if(support("event")){echo"<h3 id='events'>".'Events'."</h3>\n";$L=get_rows("SHOW EVENTS");if($L){echo"<table>\n","<thead><tr><th>".'Name'."<td>".'Schedule'."<td>".'Start'."<td>".'End'."<td></thead>\n";foreach($L
|
||
as$K)echo"<tr>","<th>".h($K["Name"]),"<td>".($K["Execute at"]?'At given time'."<td>".$K["Execute at"]:'Every'." ".$K["Interval value"]." ".$K["Interval field"]."<td>$K[Starts]"),"<td>$K[Ends]",'<td><a href="'.h(ME).'event='.urlencode($K["Name"]).'">'.'Alter'.'</a>';echo"</table>\n";$Dc=get_val("SELECT @@event_scheduler");if($Dc&&$Dc!="ON")echo"<p class='error'><code class='jush-sqlset'>event_scheduler</code>: ".h($Dc)."\n";}echo'<p class="links"><a href="'.h(ME).'event=">'.'Create event'."</a>\n";}if($ji)echo
|
||
script("ajaxSetHtml('".js_escape(ME)."script=db');");}}}page_footer(); |