1739 lines
No EOL
321 KiB
PHP
1739 lines
No EOL
321 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.4.1
|
||
*/namespace
|
||
Adminer;const
|
||
VERSION="5.4.1";error_reporting(24575);set_error_handler(function($Cc,$Ec){return!!preg_match('~^Undefined (array key|offset|index)~',$Ec);},E_WARNING|E_NOTICE);$ad=!preg_match('~^(unsafe_raw)?$~',ini_get("filter.default"));if($ad||ini_get("filter.default_flags")){foreach(array('_GET','_POST','_COOKIE','_SERVER')as$X){$tj=filter_input_array(constant("INPUT$X"),FILTER_UNSAFE_RAW);if($tj)$$X=$tj;}}if(function_exists("mb_internal_encoding"))mb_internal_encoding("8bit");function
|
||
connection($g=null){return($g?:Db::$instance);}function
|
||
adminer(){return
|
||
Adminer::$instance;}function
|
||
driver(){return
|
||
Driver::$instance;}function
|
||
connect(){$Fb=adminer()->credentials();$J=Driver::connect($Fb[0],$Fb[1],$Fb[2]);return(is_object($J)?$J:null);}function
|
||
idf_unescape($u){if(!preg_match('~^[`\'"[]~',$u))return$u;$Ie=substr($u,-1);return
|
||
str_replace($Ie.$Ie,$Ie,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$ah,$ad=false){if(function_exists("get_magic_quotes_gpc")&&get_magic_quotes_gpc()){while(list($x,$X)=each($ah)){foreach($X
|
||
as$Ae=>$W){unset($ah[$x][$Ae]);if(is_array($W)){$ah[$x][stripslashes($Ae)]=$W;$ah[]=&$ah[$x][stripslashes($Ae)];}else$ah[$x][stripslashes($Ae)]=($ad?$W:stripslashes($W));}}}}function
|
||
bracket_escape($u,$Ca=false){static$cj=array(':'=>':1',']'=>':2','['=>':3','"'=>':4');return
|
||
strtr($u,($Ca?array_flip($cj):$cj));}function
|
||
min_version($Lj,$We="",$g=null){$g=connection($g);$Vh=$g->server_info;if($We&&preg_match('~([\d.]+)-MariaDB~',$Vh,$A)){$Vh=$A[1];$Lj=$We;}return$Lj&&version_compare($Vh,$Lj)>=0;}function
|
||
charset(Db$f){return(min_version("5.5.3",0,$f)?"utf8mb4":"utf8");}function
|
||
ini_bool($ke){$X=ini_get($ke);return(preg_match('~^(on|true|yes)$~i',$X)||(int)$X);}function
|
||
ini_bytes($ke){$X=ini_get($ke);switch(strtolower(substr($X,-1))){case'g':$X=(int)$X*1024;case'm':$X=(int)$X*1024;case'k':$X=(int)$X*1024;}return$X;}function
|
||
sid(){static$J;if($J===null)$J=(SID&&!($_COOKIE&&ini_bool("session.use_cookies")));return$J;}function
|
||
set_password($Kj,$N,$V,$F){$_SESSION["pwds"][$Kj][$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,$tb=null){$tb=connection($tb);$I=$tb->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,$Yh=true){$g=connection($g);$J=array();$I=$g->query($H);if(is_object($I)){while($K=$I->fetch_row()){if($Yh)$J[$K[0]]=$K[1];else$J[]=$K[0];}}return$J;}function
|
||
get_rows($H,$g=null,$l="<p class='error'>"){$tb=connection($g);$J=array();$I=$tb->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,$A))return$A[1].idf_escape(idf_unescape($A[2])).$A[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());$Xc=$m["type"];$J[]=$d.(JUSH=="sql"&&$Xc=="json"?" = CAST(".q($X)." AS JSON)":(JUSH=="pgsql"&&preg_match('~^json~',$Xc)?"::jsonb = ".q($X)."::jsonb":(JUSH=="sql"&&is_numeric($X)&&preg_match('~\.~',$X)?" LIKE ".q($X):(JUSH=="mssql"&&strpos($Xc,"datetime")===false?" LIKE ".q(preg_replace('~[_%[]~','[\0]',$X)):" = ".unconvert_field($m,q($X))))));if(JUSH=="sql"&&preg_match('~char|text~',$Xc)&&preg_match("~[^ -@]~",$X))$J[]="$d = ".q($X)." COLLATE ".charset(connection())."_bin";}foreach((array)$Z["null"]as$x)$J[]=escape_key($x)." IS NULL";return
|
||
implode(" AND ",$J);}function
|
||
where_check($X,array$n=array()){parse_str($X,$Wa);remove_slashes(array(&$Wa));return
|
||
where($Wa,$n);}function
|
||
where_link($s,$d,$Y,$Xf="="){return"&where%5B$s%5D%5Bcol%5D=".urlencode($d)."&where%5B$s%5D%5Bop%5D=".urlencode(($Y!==null?$Xf:"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($B,$Y,$Pe=2592000){header("Set-Cookie: $B=".urlencode($Y).($Pe?"; expires=".gmdate("D, d M Y H:i:s",time()+$Pe)." GMT":"")."; path=".preg_replace('~\?.*~','',$_SERVER["REQUEST_URI"]).(HTTPS?"; secure":"")."; HttpOnly; SameSite=lax",false);}function
|
||
get_settings($Bb){parse_str($_COOKIE[$Bb],$Zh);return$Zh;}function
|
||
get_setting($x,$Bb="adminer_settings",$k=null){return
|
||
idx(get_settings($Bb),$x,$k);}function
|
||
save_settings(array$Zh,$Bb="adminer_settings"){$Y=http_build_query($Zh+get_settings($Bb));cookie($Bb,$Y);$_COOKIE[$Bb]=$Y;}function
|
||
restart_session(){if(!ini_bool("session.use_cookies")&&(!function_exists('session_status')||session_status()==1))session_start();}function
|
||
stop_session($id=false){$Cj=ini_bool("session.use_cookies");if(!$Cj||$id){session_write_close();if($Cj&&@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($Kj,$N,$V,$j=null){$zj=remove_from_uri(implode("|",array_keys(SqlDriver::$drivers))."|username|ext|".($j!==null?"db|":"").($Kj=='mssql'||$Kj=='pgsql'?"":"ns|").session_name());preg_match('~([^?]*)\??(.*)~',$zj,$A);return"$A[1]?".(sid()?SID."&":"").($Kj!="server"||$N!=""?urlencode($Kj)."=".urlencode($N)."&":"").($_GET["ext"]?"ext=".urlencode($_GET["ext"])."&":"")."username=".urlencode($V).($j!=""?"&db=".urlencode($j):"").($A[2]?"&$A[2]":"");}function
|
||
is_ajax(){return($_SERVER["HTTP_X_REQUESTED_WITH"]=="XMLHttpRequest");}function
|
||
redirect($Se,$lf=null){if($lf!==null){restart_session();$_SESSION["messages"][preg_replace('~^[^?]*~','',($Se!==null?$Se:$_SERVER["REQUEST_URI"]))][]=$lf;}if($Se!==null){if($Se=="")$Se=".";header("Location: $Se");exit;}}function
|
||
query_redirect($H,$Se,$lf,$jh=true,$Jc=true,$Sc=false,$Pi=""){if($Jc){$oi=microtime(true);$Sc=!connection()->query($H);$Pi=format_time($oi);}$ii=($H?adminer()->messageQuery($H,$Pi,$Sc):"");if($Sc){adminer()->error
|
||
.=error().$ii.script("messagesPrint();")."<br>";return
|
||
false;}if($jh)redirect($Se,$lf.$ii);return
|
||
true;}class
|
||
Queries{static$queries=array();static$start=0;}function
|
||
queries($H){if(!Queries::$start)Queries::$start=microtime(true);Queries::$queries[]=(preg_match('~;$~',$H)?"DELIMITER ;;\n$H;\nDELIMITER ":$H).";";return
|
||
connection()->query($H);}function
|
||
apply_queries($H,array$T,$Fc='Adminer\table'){foreach($T
|
||
as$R){if(!queries("$H ".$Fc($R)))return
|
||
false;}return
|
||
true;}function
|
||
queries_redirect($Se,$lf,$jh){$eh=implode("\n",Queries::$queries);$Pi=format_time(Queries::$start);return
|
||
query_redirect($eh,$Se,$lf,$jh,false,!$jh,$Pi);}function
|
||
format_time($oi){return
|
||
sprintf('%.3f s',max(0,microtime(true)-$oi));}function
|
||
relative_uri(){return
|
||
str_replace(":","%3a",preg_replace('~^[^?]*/([^?]*)~','\1',$_SERVER["REQUEST_URI"]));}function
|
||
remove_from_uri($ug=""){return
|
||
substr(preg_replace("~(?<=[?&])($ug".(SID?"":"|".session_name()).")=[^&]*&~",'',relative_uri()."&"),0,-1);}function
|
||
get_file($x,$Rb=false,$Xb=""){$Zc=$_FILES[$x];if(!$Zc)return
|
||
null;foreach($Zc
|
||
as$x=>$X)$Zc[$x]=(array)$X;$J='';foreach($Zc["error"]as$x=>$l){if($l)return$l;$B=$Zc["name"][$x];$Xi=$Zc["tmp_name"][$x];$yb=file_get_contents($Rb&&preg_match('~\.gz$~',$B)?"compress.zlib://$Xi":$Xi);if($Rb){$oi=substr($yb,0,3);if(function_exists("iconv")&&preg_match("~^\xFE\xFF|^\xFF\xFE~",$oi))$yb=iconv("utf-16","utf-8",$yb);elseif($oi=="\xEF\xBB\xBF")$yb=substr($yb,3);}$J
|
||
.=$yb;if($Xb)$J
|
||
.=(preg_match("($Xb\\s*\$)",$yb)?"":$Xb)."\n\n";}return$J;}function
|
||
upload_error($l){$gf=($l==UPLOAD_ERR_INI_SIZE?ini_get("upload_max_filesize"):0);return($l?'Unable to upload a file.'.($gf?" ".sprintf('Maximum allowed file size is %sB.',$gf):""):'File does not exist.');}function
|
||
repeat_pattern($Gg,$y){return
|
||
str_repeat("$Gg{0,65535}",$y/65535)."$Gg{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,$Tc=false){$J=table_status($R,$Tc);return($J?reset($J):array("Name"=>$R));}function
|
||
column_foreign_keys($R){$J=array();foreach(adminer()->foreignKeys($R)as$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){$B=bracket_escape($x,true);$J[$B]=array("field"=>$B,"privileges"=>array("insert"=>1,"update"=>1,"where"=>1,"order"=>1),"null"=>1,"auto_increment"=>($x==driver()->primary),);}return$J;}function
|
||
dump_headers($Qd,$wf=false){$J=adminer()->dumpHeaders($Qd,$wf);$qg=$_POST["output"];if($qg!="text")header("Content-Disposition: attachment; filename=".adminer()->dumpFilename($Qd).".$J".($qg!="file"&&preg_match('~^[0-9a-z]+$~',$qg)?".$qg":""));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,$Lb){rewind($q);fwrite($q,$Lb);ftruncate($q,strlen($Lb));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,$Oi){if(is_array($X)){$J="";foreach($X
|
||
as$Ae=>$W)$J
|
||
.="<tr>".($X!=array_values($X)?"<th>".h($Ae):"")."<td>".select_value($W,$_,$m,$Oi);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($Oi!=""&&is_shortable($m))$J=shorten_utf8($J,max(0,+$Oi));else$J=h($J);}return
|
||
adminer()->selectVal($J,$_,$m,$X);}function
|
||
is_blob(array$m){return
|
||
preg_match('~blob|bytea|raw|file~',$m["type"])&&!in_array($m["type"],idx(driver()->structuredTypes(),'User types',array()));}function
|
||
is_mail($tc){$xa='[-a-z0-9!#$%&\'*+/=?^_`{|}~]';$gc='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';$Gg="$xa+(\\.$xa+)*@($gc?\\.)+$gc";return
|
||
is_string($tc)&&preg_match("(^$Gg(,\\s*$Gg)*\$)i",$tc);}function
|
||
is_url($Q){$gc='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';return
|
||
preg_match("~^(https?)://($gc?\\.)+$gc(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i",$Q);}function
|
||
is_shortable(array$m){return
|
||
preg_match('~char|text|json|lob|geometry|point|linestring|polygon|string|bytea|hstore~',$m["type"]);}function
|
||
host_port($N){return(preg_match('~^(\[(.+)]|([^:]+)):([^:]+)$~',$N,$A)?array($A[2].$A[3],$A[4]):array($N,''));}function
|
||
count_rows($R,array$Z,$ue,array$wd){$H=" FROM ".table($R).($Z?" WHERE ".implode(" AND ",$Z):"");return($ue&&(JUSH=="sql"||count($wd)==1)?"SELECT COUNT(DISTINCT ".implode(", ",$wd).")$H":"SELECT COUNT(*)".($ue?" FROM (SELECT 1$H GROUP BY ".implode(", ",$wd).") x":$H));}function
|
||
slow_query($H){$j=adminer()->database();$Qi=adminer()->queryTimeout();$di=driver()->slowQuery($H,$Qi);$g=null;if(!$di&&support("kill")){$g=connect();if($g&&($j==""||$g->select_db($j))){$De=get_val(connection_id(),0,$g);echo
|
||
script("const timeout = setTimeout(() => { ajax('".js_escape(ME)."script=kill', function () {}, 'kill=$De&token=".get_token()."'); }, 1000 * $Qi);");}}ob_flush();flush();$J=@get_key_vals(($di?:$H),$g,false);if($g){echo
|
||
script("clearTimeout(timeout);");ob_flush();flush();}return$J;}function
|
||
get_token(){$hh=rand(1,1e6);return($hh^$_SESSION["token"]).":$hh";}function
|
||
verify_token(){list($Yi,$hh)=explode(":",$_POST["token"]);return($hh^$_SESSION["token"])==$Yi;}function
|
||
lzw_decompress($Ia){$cc=256;$Ja=8;$gb=array();$uh=0;$vh=0;for($s=0;$s<strlen($Ia);$s++){$uh=($uh<<8)+ord($Ia[$s]);$vh+=8;if($vh>=$Ja){$vh-=$Ja;$gb[]=$uh>>$vh;$uh&=(1<<$vh)-1;$cc++;if($cc>>$Ja)$Ja++;}}$bc=range("\0","\xFF");$J="";$Uj="";foreach($gb
|
||
as$s=>$fb){$sc=$bc[$fb];if(!isset($sc))$sc=$Uj.$Uj[0];$J
|
||
.=$sc;if($s)$bc[]=$Uj.$sc[0];$Uj=$sc;}return$J;}function
|
||
script($fi,$bj="\n"){return"<script".nonce().">$fi</script>$bj";}function
|
||
script_src($_j,$Ub=false){return"<script src='".h($_j)."'".nonce().($Ub?" defer":"")."></script>\n";}function
|
||
nonce(){return' nonce="'.get_nonce().'"';}function
|
||
input_hidden($B,$Y=""){return"<input type='hidden' name='".h($B)."' value='".h($Y)."'>\n";}function
|
||
input_token(){return
|
||
input_hidden("token",get_token());}function
|
||
target_blank(){return' target="_blank" rel="noreferrer noopener"';}function
|
||
h($Q){return
|
||
str_replace("\0","�",htmlspecialchars($Q,ENT_QUOTES,'utf-8'));}function
|
||
nl_br($Q){return
|
||
str_replace("\n","<br>",$Q);}function
|
||
checkbox($B,$Y,$Za,$Fe="",$Wf="",$db="",$He=""){$J="<input type='checkbox' name='$B' value='".h($Y)."'".($Za?" checked":"").($He?" aria-labelledby='$He'":"").">".($Wf?script("qsl('input').onclick = function () { $Wf };",""):"");return($Fe!=""||$db?"<label".($db?" class='$db'":"").">$J".h($Fe)."</label>":$J);}function
|
||
optionlist($bg,$Nh=null,$Dj=false){$J="";foreach($bg
|
||
as$Ae=>$W){$cg=array($Ae=>$W);if(is_array($W)){$J
|
||
.='<optgroup label="'.h($Ae).'">';$cg=$W;}foreach($cg
|
||
as$x=>$X)$J
|
||
.='<option'.($Dj||is_string($x)?' value="'.h($x).'"':'').($Nh!==null&&($Dj||is_string($x)?(string)$x:$X)===$Nh?' selected':'').'>'.h($X);if(is_array($W))$J
|
||
.='</optgroup>';}return$J;}function
|
||
html_select($B,array$bg,$Y="",$Vf="",$He=""){static$Fe=0;$Ge="";if(!$He&&substr($bg[""],0,1)=="("){$Fe++;$He="label-$Fe";$Ge="<option value='' id='$He'>".h($bg[""]);unset($bg[""]);}return"<select name='".h($B)."'".($He?" aria-labelledby='$He'":"").">".$Ge.optionlist($bg,$Y)."</select>".($Vf?script("qsl('select').onchange = function () { $Vf };",""):"");}function
|
||
html_radios($B,array$bg,$Y="",$Rh=""){$J="";foreach($bg
|
||
as$x=>$X)$J
|
||
.="<label><input type='radio' name='".h($B)."' value='".h($x)."'".($x==$Y?" checked":"").">".h($X)."</label>$Rh";return$J;}function
|
||
confirm($lf="",$Oh="qsl('input')"){return
|
||
script("$Oh.onclick = () => confirm('".($lf?js_escape($lf):'Are you sure?')."');","");}function
|
||
print_fieldset($t,$Ne,$Oj=false){echo"<fieldset><legend>","<a href='#fieldset-$t'>$Ne</a>",script("qsl('a').onclick = partial(toggle, 'fieldset-$t');",""),"</legend>","<div id='fieldset-$t'".($Oj?"":" class='hidden'").">\n";}function
|
||
bold($La,$db=""){return($La?" class='active $db'":($db?" class='$db'":""));}function
|
||
js_escape($Q){return
|
||
addcslashes($Q,"\r\n'\\/");}function
|
||
pagination($D,$Ib){return" ".($D==$Ib?$D+1:'<a href="'.h(remove_from_uri("page").($D?"&page=$D".($_GET["next"]?"&next=".urlencode($_GET["next"]):""):"")).'">'.($D+1)."</a>");}function
|
||
hidden_fields(array$ah,array$Ud=array(),$Sg=''){$J=false;foreach($ah
|
||
as$x=>$X){if(!in_array($x,$Ud)){if(is_array($X))hidden_fields($X,array(),$x);else{$J=true;echo
|
||
input_hidden(($Sg?$Sg."[$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
|
||
file_input($me){$bf="max_file_uploads";$cf=ini_get($bf);$xj="upload_max_filesize";$yj=ini_get($xj);return(ini_bool("file_uploads")?$me.script("qsl('input[type=\"file\"]').onchange = partialArg(fileChange, "."$cf, '".sprintf('Increase %s.',"$bf = $cf")."', ".ini_bytes("upload_max_filesize").", '".sprintf('Increase %s.',"$xj = $yj")."')"):'File uploads are disabled.');}function
|
||
enum_input($U,$ya,array$m,$Y,$wc=""){preg_match_all("~'((?:[^']|'')*)'~",$m["length"],$Ze);$Sg=($m["type"]=="enum"?"val-":"");$Za=(is_array($Y)?in_array("null",$Y):$Y===null);$J=($m["null"]&&$Sg?"<label><input type='$U'$ya value='null'".($Za?" checked":"")."><i>$wc</i></label>":"");foreach($Ze[1]as$X){$X=stripcslashes(str_replace("''","'",$X));$Za=(is_array($Y)?in_array($Sg.$X,$Y):$Y===$X);$J
|
||
.=" <label><input type='$U'$ya value='".h($Sg.$X)."'".($Za?' checked':'').'>'.h(adminer()->editVal($X,$m)).'</label>';}return$J;}function
|
||
input(array$m,$Y,$r,$Ba=false){$B=h(bracket_escape($m["field"]));echo"<td class='function'>";if(is_array($Y)&&!$r){$Y=json_encode($Y,128|64|256);$r="json";}$th=(JUSH=="mssql"&&$m["auto_increment"]);if($th&&!$_POST["save"])$r=null;$rd=(isset($_GET["select"])||$th?array("orig"=>'original'):array())+adminer()->editFunctions($m);$Bc=driver()->enumLength($m);if($Bc){$m["type"]="enum";$m["length"]=$Bc;}$dc=stripos($m["default"],"GENERATED ALWAYS AS ")===0?" disabled=''":"";$ya=" name='fields[$B]".($m["type"]=="enum"||$m["type"]=="set"?"[]":"")."'$dc".($Ba?" autofocus":"");echo
|
||
driver()->unconvertFunction($m)." ";$R=$_GET["edit"]?:$_GET["select"];if($m["type"]=="enum")echo
|
||
h($rd[""])."<td>".adminer()->editInput($R,$m,$ya,$Y);else{$Dd=(in_array($r,$rd)||isset($rd[$r]));echo(count($rd)>1?"<select name='function[$B]'$dc>".optionlist($rd,$r===null||$Dd?$r:"")."</select>".on_help("event.target.value.replace(/^SQL\$/, '')",1).script("qsl('select').onchange = functionChange;",""):h(reset($rd))).'<td>';$me=adminer()->editInput($R,$m,$ya,$Y);if($me!="")echo$me;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")echo
|
||
enum_input("checkbox",$ya,$m,(is_string($Y)?explode(",",$Y):$Y));elseif(is_blob($m)&&ini_bool("file_uploads"))echo"<input type='file' name='fields-$B'>";elseif($r=="json"||preg_match('~^jsonb?$~',$m["type"]))echo"<textarea$ya cols='50' rows='12' class='jush-js'>".h($Y).'</textarea>';elseif(($Mi=preg_match('~text|lob|memo~i',$m["type"]))||preg_match("~\n~",$Y)){if($Mi&&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{$nj=driver()->types();$if=(!preg_match('~int~',$m["type"])&&preg_match('~^(\d+)(,(\d+))?$~',$m["length"],$A)?((preg_match("~binary~",$m["type"])?2:1)*$A[1]+($A[3]?1:0)+($A[2]&&!$m["unsigned"]?1:0)):($nj[$m["type"]]?$nj[$m["type"]]+($m["unsigned"]?0:1):0));if(JUSH=='sql'&&min_version(5.6)&&preg_match('~time~',$m["type"]))$if+=7;echo"<input".((!$Dd||$r==="")&&preg_match('~(?<!o)int(?!er)~',$m["type"])&&!preg_match('~\[\]~',$m["full_type"])?" type='number'":"")." value='".h($Y)."'".($if?" data-maxlength='$if'":"").(preg_match('~char|binary~',$m["type"])&&$if>20?" size='".($if>99?60:40)."'":"")."$ya>";}echo
|
||
adminer()->editHint($R,$m,$Y);$bd=0;foreach($rd
|
||
as$x=>$X){if($x===""||!$X)break;$bd++;}if($bd&&count($rd)>1)echo
|
||
script("qsl('td').oninput = partial(skipOriginal, $bd);");}}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=idx($_POST["fields"],$u);if($m["type"]=="enum"||driver()->enumLength($m)){$Y=$Y[0];if($Y=="orig")return
|
||
false;if($Y=="null")return"NULL";$Y=substr($Y,4);}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(is_blob($m)&&ini_bool("file_uploads")){$Zc=get_file("fields-$u");if(!is_string($Zc))return
|
||
false;return
|
||
driver()->quoteBinary($Zc);}return
|
||
adminer()->processInput($m,$Y,$r);}function
|
||
search_tables(){$_GET["where"][0]["val"]=$_POST["query"];$Qh="<ul>\n";foreach(table_status('',true)as$R=>$S){$B=adminer()->tableName($S);if(isset($S["Engine"])&&$B!=""&&(!$_POST["tables"]||in_array($R,$_POST["tables"]))){$I=connection()->query("SELECT".limit("1 FROM ".table($R)," WHERE ".implode(" AND ",adminer()->selectSearchProcess(fields($R),array())),1));if(!$I||$I->fetch_row()){$Wg="<a href='".h(ME."select=".urlencode($R)."&where[0][op]=".urlencode($_GET["where"][0]["op"])."&where[0][val]=".urlencode($_GET["where"][0]["val"]))."'>$B</a>";echo"$Qh<li>".($I?$Wg:"<p class='error'>$Wg: ".error())."\n";$Qh="";}}}echo($Qh?"<p class='message'>".'No tables.':"</ul>")."\n";}function
|
||
on_help($mb,$bi=0){return
|
||
script("mixin(qsl('select, input'), {onmouseover: function (event) { helpMouseover.call(this, event, $mb, $bi) }, onmouseout: helpMouseout});","");}function
|
||
edit_form($R,array$n,$K,$wj,$l=''){$_i=adminer()->tableName(table_status1($R,true));page_header(($wj?'Edit':'Insert'),$l,array("select"=>array($R,$_i)),$_i);adminer()->editRowPrint($R,$n,$K,$wj);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$B=>$m){echo"<tr><th>".adminer()->fieldName($m);$k=idx($_GET["set"],bracket_escape($B));if($k===null){$k=$m["default"];if($m["type"]=="bit"&&preg_match("~^b'([01]*)'\$~",$k,$qh))$k=$qh[1];if(JUSH=="sql"&&preg_match('~binary~',$m["type"]))$k=bin2hex($k);}$Y=($K!==null?($K[$B]!=""&&JUSH=="sql"&&preg_match("~enum|set~",$m["type"])&&is_array($K[$B])?implode(",",$K[$B]):(is_bool($K[$B])?+$K[$B]:$K[$B])):(!$wj&&$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"],$B,""):($wj&&preg_match('~^CURRENT_TIMESTAMP~i',$m["on_update"])?"now":($Y===false?null:($Y!==null?'':'NULL'))));if(!$_POST&&!$wj&&$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='".($wj?'Save and continue edit':'Save and insert next')."' title='Ctrl+Shift+Enter'>\n",($wj?script("qsl('input').onclick = function () { return !ajaxForm(this.form, '".'Saving'."…', this); };"):"");}echo($wj?"<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,$ui=""){if(!preg_match("(^(".repeat_pattern("[\t\r\n -\x{10FFFF}]",$y).")($)?)u",$Q,$A))preg_match("(^(".repeat_pattern("[\t\r\n -~]",$y).")($)?)",$Q,$A);return
|
||
h($A[1]).$ui.(isset($A[2])?"":"<i>…</i>");}function
|
||
icon($Pd,$B,$Od,$Si){return"<button type='submit' name='$B' title='".h($Si)."' class='icon icon-$Pd'><span>$Od</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>cQCa<EFBFBD><EFBFBD> 2ó<><C3B3><EFBFBD>d<<3C><>f<EFBFBD>a<EFBFBD><61>:;NB<4E>q<EFBFBD>R;1Lf<4C>9<EFBFBD><39>u7&)<29>l;3<1B><><EFBFBD><EFBFBD><EFBFBD>J/<18><>CQX<>r2M<>a<04>i0<69><05><>)<29><>e:LuÝh<C39D>-9<><39>23l<33><6C>i7<0E><03>m<EFBFBD>Zw4<77><0E><>њ<-<2D><>̴<EFBFBD>!<21>U,<2C><0E>Fé<46>vt2<74><0E>S,<2C><>a<EFBFBD>҇F<D287>VX<56>a<EFBFBD>Nq<4E>)<29>-<2D><><EFBFBD>ǜh<C79C>:n5<6E><35><06>9<EFBFBD>Y<EFBFBD>;j<><6A>-<2D><>_<EFBFBD>9kr<6B><72>ٓ;.<2E>tTq<>o<EFBFBD>0<EFBFBD><30><19><><EFBFBD><EFBFBD>{<EFBFBD><EFBFBD>y<EFBFBD><EFBFBD>\r<EFBFBD>Hn<EFBFBD><0B>GS<47><53>Zh<5A><68>;<3B>i^<5E>ux<75>WΒC@<40><><EFBFBD><EFBFBD>k<EFBFBD><6B>=<0C><>b<1A><><EFBFBD><EFBFBD><EFBFBD>/A<><41>0<EFBFBD>+<2B>(<28><05><>l<1B><><EFBFBD>\\<EFBFBD><EFBFBD><EFBFBD>x<EFBFBD>:\r<EFBFBD><EFBFBD>b8\0<EFBFBD><EFBFBD>0!\0F<1C>\nB<EFBFBD>͎<EFBFBD>(<28>3<EFBFBD>\r\\<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȅa<EFBFBD><EFBFBD><EFBFBD>'I<>|<7C>(i<>\n<EFBFBD>\r<EFBFBD><EFBFBD><EFBFBD>4O<>g@<40>4<12>C<EFBFBD><04>@@<16>!<21>QB<08><> °<>c<0E><>¯<10>q,\r1Eh<EFBFBD><EFBFBD>&2PZ<50><5A><EFBFBD>iG<08>H9G<39>\"v<EFBFBD><EFBFBD><EFBFBD><0C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4r<><1A><><EFBFBD>D<>R<EFBFBD>\n<18>pJ<70>-A<>|/.<2E>c<EFBFBD><63>Du<1C><06><><EFBFBD><EFBFBD>:,<2C><>=<3D><18>R<EFBFBD>]U5<55>mV<6D>k<EFBFBD>LLQ@-\\<EFBFBD><EFBFBD><EFBFBD><13>@9<><39>%<06>S<EFBFBD>r<EFBFBD><72><EFBFBD>MPD<><44>Ia\r<EFBFBD>(YY\\<EFBFBD>@X<>p<><70>:<3A><>p<EFBFBD>l<EFBFBD>LC <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><0E><><EFBFBD>O,\r<EFBFBD>2]7<>?m06<30><36>p<EFBFBD>T<><08>aҥC<01>;_˗<18>yȴd<C8B4>><3E><>bn<62><6E><EFBFBD>n<>ܣ3<DCA3>X<EFBFBD><10><>8\r<EFBFBD>[ˀ-)<29>i>V[Y<>y&L3<4C>#<16>X|<7C> <09>X<EFBFBD>\\ù`<60>C<07><><EFBFBD><EFBFBD>#<23><>H<><48>2<EFBFBD>2.#<23><><EFBFBD>Z<EFBFBD>`<60><<3C><>s<EFBFBD><1D><><EFBFBD>Ò<EFBFBD><C392>\0u<EFBFBD>h־<EFBFBD><EFBFBD>M<EFBFBD><EFBFBD>_\niZeO/CӒ_<D392>`3<><33><1C>1><3E>=<3D><>k3<6B><33><EFBFBD><EFBFBD>R/;<3B>/d<><64>\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵm<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>7/<12><><15>A<EFBFBD>X<EFBFBD><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><04>q.<2E>s<EFBFBD>L<EFBFBD><4C><EFBFBD> :\$<EFBFBD>F<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>w<EFBFBD>8<EFBFBD>߾~<07>H<EFBFBD>j<EFBFBD><6A>\"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Գ7gS<EFBFBD><EFBFBD><EFBFBD><07>FL<>ί<EFBFBD>Q<EFBFBD>_<EFBFBD><5F>O'W<><57>]c=<3D>5<EFBFBD>1X~7;<3B><>i<EFBFBD><69>\r<EFBFBD>*\n<EFBFBD><EFBFBD>JS1Z<31><5A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><13>c<EFBFBD><10><>t<EFBFBD><74>A<03>V<EFBFBD><56>86f<36>d<EFBFBD>y;Y<>]<01><>zI<0B>p<0E><><EFBFBD><19><>c<EFBFBD>3<EFBFBD>Y<EFBFBD>]}@<1B>\$.+<2B>1<EFBFBD>'>Z<>cpd<70><64><EFBFBD>GL<47><4C><EFBFBD>#k<>8Pz<08>Y<EFBFBD>Au<41>v<>]s9<73><39><06>_Aq<41><0C><>:<3A><><EFBFBD>\nK<EFBFBD>hB<01>;<3B><><1A>XbAHq,<1C><>CI<43>`<60><><11><>j<EFBFBD>S[ˌ<07>1<EFBFBD>V<1F>r<><72><EFBFBD>;<3B>p<EFBFBD>B<EFBFBD><42>)#鐉;4<1C>H<EFBFBD><48>/*<2A><<3C>3L<0B><>;lf<6C>\n<EFBFBD>s\$K`<60>}<05><>Ք<EFBFBD><D594><EFBFBD>7<>jx`d<>%j]<5D><>4<13><1B>Y<EFBFBD><59>HbY<14><>J`<60>GG<47><47>.<2E><>K<17><>f<0C>I<03>)2<>Mfָ<>X<EFBFBD>RC<52><43>̱V,<2C><><EFBFBD>~g\0<EFBFBD><16><>g6<67>:<3A>[j<>1H<05>:AlIq<49>u3\"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>q<EFBFBD><0E>|8<9s'<27>Q]J<>|<7C>\0<EFBFBD>`p<><70><EFBFBD>jf<0B>O<>b<EFBFBD><62><EFBFBD><EFBFBD><EFBFBD>q<EFBFBD><71>\$<EFBFBD><02><><EFBFBD>1J<31>>R<>H(ǔq\n#r<><72><EFBFBD><EFBFBD>@<18>e(y<>VJ<>0<EFBFBD>Q҈<51><D288><EFBFBD>6<EFBFBD>P<EFBFBD>[C:<3A>G伞<47><E4BC9E><EFBFBD>4<EFBFBD><34><0C>^<5E><><EFBFBD><EFBFBD>PZ<50><5A>\\<EFBFBD><EFBFBD><EFBFBD>(\n<EFBFBD><EFBFBD>)<29>~<7E><><EFBFBD>9R%<25>Sj<02>{<EFBFBD><1D>7<EFBFBD>0<EFBFBD>_<EFBFBD><5F>s z|8<>H<EFBFBD> \"@<40>#9DVL<56>\$H5<EFBFBD>WJ@<1B><>z<EFBFBD>a<1A>J <20>^ <09>)<29>2\nQv<><76>]<5D><><0E><><EFBFBD><EFBFBD><EFBFBD>j (A<><14><1A>BB05<30>6<EFBFBD>b˰][<5B><>k<EFBFBD>A<EFBFBD>wvkg<6B>ƴ<EFBFBD><C6B4><EFBFBD>+k[jm<6A>zc<7A>}<7D>MyDZi<5A>\$5e<EFBFBD><EFBFBD>ʷ<EFBFBD><0E><> <09>A<EFBFBD><41>CY%.W<>b*뮼<16>.<2E><><EFBFBD>q/%}B<>X<EFBFBD><58><EFBFBD>ZV337<>ʻa<CABB><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>wW[<15>L<17>Q<10><>_<EFBFBD><14>2`<60>1I<31>i,<2C>曣<EFBFBD>Mf&(s-<2D><><EFBFBD><EFBFBD><EFBFBD>Aİ<05>*<1C><>Dw<44><77>TN<54>ɻ<EFBFBD>jX\$<EFBFBD>x<EFBFBD>+;<3B><><EFBFBD>F<EFBFBD>93<14>JkS;<3B><><18>qR{>l<>;B1A<31>I<>b)<29><>(6<><36>r<EFBFBD>\r<EFBFBD>\rڇ<EFBFBD><EFBFBD><1F><>Z<1B>R^SOy/<2F><>M#<23><>9{k<19><><EFBFBD><EFBFBD>v\"<EFBFBD>KC<EFBFBD>J<EFBFBD><EFBFBD>rEo\0<EFBFBD><EFBFBD>\\,<2C>|<7C>fa͚<61><CD9A>hI<68><49>/o<>4<>k^p<11>1H<>^<5E><1B><><0E>phǡV<C7A1>vox@<40>`<60>g<EFBFBD>&<26>(<28><15><><EFBFBD>;<3B><>~Ǎz<C78D>6<17>8<EFBFBD>*<2A><05><>5<EFBFBD><35><1D><>E<1D><><EFBFBD>p<EFBFBD><70><EFBFBD><EFBFBD>Ә<><D398><EFBFBD>3<EFBFBD><33>ņg<1E><>rD<72>L<EFBFBD>)4g{<EFBFBD><EFBFBD><EFBFBD><EFBFBD>峩<EFBFBD>L<EFBFBD><EFBFBD>&<26>>脻<><E884BB><06><>Z<EFBFBD>7<EFBFBD>\0<EFBFBD><EFBFBD>̊@<40><><11><><01>ff<66>RVh֝<18><>I<>ۈ<EFBFBD><DB88><EFBFBD>r<EFBFBD>w)<29><0E><><EFBFBD>=x^<03>,k<><6B>2<EFBFBD><32>ݓj<DD93>b<EFBFBD>l0u<30><75>\"<EFBFBD>fp<EFBFBD><EFBFBD>1<EFBFBD>RI<EFBFBD><EFBFBD>z[]<5D>w<EFBFBD>pN6dI<64>z<EFBFBD><7A><EFBFBD>n.7X{;<3B><>3<12><>-I <09><><EFBFBD><EFBFBD>7pjÝ<19>R<>#<23>,<0E>_-<2D><><EFBFBD>[<5B>>3<>\\<EFBFBD><EFBFBD><EFBFBD>Wq<EFBFBD>q<EFBFBD>J֘<EFBFBD>uh<EFBFBD><EFBFBD><EFBFBD>FbL<EFBFBD>K<EFBFBD><EFBFBD><EFBFBD>yVľ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѕ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>V<EFBFBD><EFBFBD><EFBFBD>f{K}S<><10>ޝ<><DE9D>M<EFBFBD><15><>̀<EFBFBD><CD80>.M<>\\<EFBFBD>ix<EFBFBD>b<EFBFBD><EFBFBD><EFBFBD>1<EFBFBD>+<2B>α?<<3C>3<EFBFBD>~H<><48>\$<EFBFBD>\\<EFBFBD>2<EFBFBD>\$<1D> e<>6t<36>Ö<1D>\$s<EFBFBD><EFBFBD><EFBFBD>x<EFBFBD><EFBFBD>x<EFBFBD><EFBFBD><16><>C<0B>nSkV<6B><56>=z6<7A><36><EFBFBD><EFBFBD>'æ<>Na<4E><61>ָh<D6B8><02><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>R<EFBFBD>噣8g<38><67><EFBFBD><EFBFBD><EFBFBD>w:_<><5F><EFBFBD><08><><EFBFBD>ҒIRKÝ<>.<2E>nkVU+dwj<77><6A>%<25>`#,{<13>醳<0C><17><><18>Y<EFBFBD><59><0B><>(oվ<><D5BE>.<2E>c<EFBFBD>0g<04>DXOk<4F>7<EFBFBD><37>K<EFBFBD><4B>l<><6C>hx;<3B>؏ ݃L<DD83><0F>\$09*<2A>9 <20>hNr<4E>M<EFBFBD>.>\0<EFBFBD>rP9<01>\$<EFBFBD>g \0\$\\F<10>*<2A>d'<27><>L<>:<3A>b<EFBFBD><62><EFBFBD>4<>2<><32><05><>9<EFBFBD><39>@<40>Hnb<6E>-<0E><>E #Ĝ<><C49C><05><>rPY<07><><EFBFBD> t<> <20>\n<EFBFBD>5.<2E><><EFBFBD><05><>\$op<0C>l<06>X\n@`\r<EFBFBD><EFBFBD> <09><>\r<EFBFBD><EFBFBD><08><> <20> <20><08><> <09><><06><><06><> <20> @<40>@<40>\n <20> <20> \0j@<40>Q@<40>1\r<EFBFBD><EFBFBD>@<40> <20> \$p V\0<EFBFBD>``\n\0<EFBFBD>\n <20>\n@<40>'<27><><0C><>\n\0`\r<EFBFBD><EFBFBD><08><> <09><>\r<EFBFBD><EFBFBD><0C><>\0<EFBFBD>r<0E><><0C><> \0<EFBFBD>`<60> <09><><07>{ ,<2C>\"<EFBFBD><EFBFBD>^P<>0<>\n<EFBFBD><EFBFBD>4<10>\n0<EFBFBD><0B><>.0<EFBFBD>p<><0C><>\rp<EFBFBD>\r<EFBFBD><EFBFBD>p<><0E><>p<><0F>q<10>Q0<>%<12><><12>1Q8\n <20>\0<EFBFBD>k<>ȼ\0^<5E><><EFBFBD>\0`<0E><>@<40><0E><>>\n<EFBFBD>o1w<17>,Y h*=<3D><><0C><>P<>:іV<D196><56>и.q<><10><0C><>\r<10>\r<EFBFBD>p<><0E><>1<><0F>Q <10><1C>1<> <20>`<60><1D>/17<13><><1E><>\r<EFBFBD>^<06><>\"y`<60>\n<EFBFBD><EFBFBD> <20>#<23><>\0<EFBFBD> p\n<EFBFBD><EFBFBD>\n<EFBFBD><EFBFBD>`<60> <20>r <20>Q<EFBFBD><51><EFBFBD>b<EFBFBD>1<EFBFBD><19>3\n<EFBFBD><EFBFBD>#<23><>#<23><>1<>\$q<EFBFBD>\$ѱ%0<>%q<>%<25><>&<11>&q<> <20>&<26>'1<>\rR}16 <20>@b\r`<60>`<60>\r<EFBFBD><EFBFBD> <09><><08><><0C>d<08><><06><> j\n<EFBFBD>``<0C><>\n<EFBFBD><EFBFBD>`dcсP<><50>,<2C>1R<><11>\$<10>rI<1A>O <20> Q <09>Y32b1<>&<26><>01<30><11><> <20><0C> f<0E><>\0<EFBFBD>\0<EFBFBD><0E><>f<>\0j\n<EFBFBD>f`<60> <20>\n`<60>@<40>\$n=`<60>\0<EFBFBD><0E>v nI<6E>\$<EFBFBD>P(<05>d'<27><><EFBFBD><EFBFBD><><7F><EFBFBD>g<EFBFBD>6<EFBFBD><36>-<2D><>-<2D>C7R<37><1A><> <20> 4<0C><><05>-1<>&<26><>2t\r<EFBFBD>\"\n H*@<40> <09>`\n <20> <20> <09><>l<>2<>,z\r<EFBFBD>~<7E> <20>\r<EFBFBD>F<EFBFBD>th<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><04><>m<10><><EFBFBD><EFBFBD><EFBFBD>z<0E>~<7E>\0]G<>F\\<EFBFBD><EFBFBD>I<EFBFBD>\\<EFBFBD><EFBFBD>}It<49>C\n<EFBFBD>T<>}<7D><><EFBFBD>IEJ\rx<EFBFBD><EFBFBD><12><>><3E>Mp<4D><70>IH<49>~<7E><>fht<68><74><EFBFBD>.b<><62>xYE<59><45>iK<><4B>oj<>\n<EFBFBD><EFBFBD><EFBFBD>L<EFBFBD><EFBFBD>tr<74>.<2E>~d<>H<EFBFBD>2U4<55>G<EFBFBD>\\A<EFBFBD><EFBFBD><EFBFBD>4<EFBFBD><EFBFBD>uPt<50><74><EFBFBD><16>谐<EFBFBD><E8B090><EFBFBD><EFBFBD><EFBFBD>L/<2F>P<04> \"G!R<><52>Mt<4D>O-<2D><0E><#<23>APuI<><49>R<EFBFBD>\$<EFBFBD>c<EFBFBD><EFBFBD><EFBFBD>D<EFBFBD>Ɗ<0F><><EFBFBD><EFBFBD>-<02><>G<EFBFBD><47>O`Pv<50>^W@tH;Q<><51>Rę<>\$<EFBFBD><EFBFBD>gK<EFBFBD>F<\rR*\$4<EFBFBD><10><>'<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[<5B><><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD>Um<55><01>h:+<2B><>5@/<2F>l<EFBFBD>I<EFBFBD><49><EFBFBD>2<EFBFBD><32><EFBFBD>^<5E>\0OD<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\rR'<27>\r<EFBFBD>TЭ[<5B><><EFBFBD><EFBFBD>Ī<EFBFBD><C4AA>MC<14>M<EFBFBD>Z4<5A>E B\"<EFBFBD>`<60><><EFBFBD>euN<75>,䙬<>]<5D><02>t<EFBFBD>\r<EFBFBD>`<60>@h<><68>*\r<EFBFBD>.V<><18>%<25>!MBlPF<50><46>\"<EFBFBD><EFBFBD>&<26>/@<40>v\\C<0C><><EFBFBD>:mMgn<67><0E><><EFBFBD>i8<69>I2\rp<1A>vj<76><6A><EFBFBD><EFBFBD><EFBFBD>+Z mT<6D>ue<75><65>fv>f<>И<EFBFBD>`DU[ZT<5A>V<14>C<1C><>T<14>\r<EFBFBD><EFBFBD>Uv<EFBFBD>k<EFBFBD>^<5E><16><>L<><14>b/<2F>K<EFBFBD>Sev2<76>ubv<62>OVD<56><44>Im<49>\$<16>%<25>X?ud<>!W<>|,\r<EFBFBD>+<2B><>cnUe<55>Z<EFBFBD><5A>ʖ<EFBFBD><CA96><EFBFBD><1C>-~X<><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>BGd<47>\$i<EFBFBD><EFBFBD>Mv!t#L<>3o<33>UI<55>O<>u?ZweR<65><18><>cw<63>.<2E>`ȡi<C8A1><69>\rb<EFBFBD>%<0F>b<EFBFBD><62><05>H<EFBFBD>\"\"\"h<0C><>_\$b@<40>z<EFBFBD><7A>\0f\"<EFBFBD><EFBFBD>rW<EFBFBD><EFBFBD>*<2A><>B|\$\$<05>B<EFBFBD>נ\"@r<><72>(\r`<60> <20>C<EFBFBD><43><EFBFBD>(0&<26>.`<60>Nk9B\n&#(<28><><EFBFBD><EFBFBD>@䂯<><05>d<><64>^<5E><><EFBFBD><EFBFBD><EFBFBD> <20>@<40>`<60>I-{<EFBFBD>0<EFBFBD><EFBFBD>\n<EFBFBD>B<EFBFBD>{<EFBFBD>4sG{<10><>;z<17><>b<EFBFBD>{ <20>{b<0F>ׯ<EFBFBD>){B<EFBFBD><EFBFBD>xK<EFBFBD><EFBFBD><0C>Ň5=cڪ<63><DAAA>y<EFBFBD><79>&<26>J<EFBFBD>Pr<50>I/<2F><><EFBFBD> \0<EFBFBD><0B>V\r<EFBFBD><05><><EFBFBD>=<3D><><EFBFBD><EFBFBD>N\\ئ=<3D>K<EFBFBD><4B>}XV<0B>x<><78><EFBFBD><EFBFBD><EFBFBD>إ<EFBFBD>ˋx<CB8B><05>d<0B>Պی*H'<27>δ<EFBFBD><CEB4>{X<EFBFBD>=<3D><>=\0<EFBFBD><EFBFBD>8<EFBFBD>\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>[ɫ<>J<EFBFBD><4A>t<04><>O<>e<EFBFBD><65><0F><>ɋ<EFBFBD><C98B>\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DX<EFBFBD><EFBFBD><EFBFBD>Ň<EFBFBD><EFBFBD>}<04>z<EFBFBD><7A><EFBFBD><18><><EFBFBD>)<29>y'<27><>'<27><>я<EFBFBD>I<EFBFBD><49>(<0B>[<5B>l(5<>`f\\<EFBFBD>`<60><><EFBFBD>e<EFBFBD>.lY(<28>=z<>ה!<21>Y%h<><68>O<EFBFBD>+<2B><><EFBFBD><EFBFBD>`ٙ\"e<EFBFBD> <20><0B>ė<EFBFBD><C497><EFBFBD>K<EFBFBD><4B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߚ<EFBFBD>#<23>S<><53>E<EFBFBD>I<>Y<EFBFBD><59><04><>.H<>JtG<74><47><EFBFBD>`<60><>H<EFBFBD>J5<4A><35><EFBFBD>5<EFBFBD><35>~ <20><>6C<><43>h<0C><><EFBFBD><EFBFBD>XDz\n<EFBFBD>x<EFBFBD><EFBFBD>ysh<EFBFBD><0E><13>FK<46>c<>zj<6A>Z<19>Y8(<28><>%<25>|y<15>I<EFBFBD><49>ߑ<DF91><D883><0B>e<EFBFBD><65>Y<EFBFBD>X<EFBFBD><58><EFBFBD>u<EFBFBD><75> <20><>i<EFBFBD>]<5D><>c<EFBFBD><05><>M<EFBFBD><4D>;<3B>ȧ<EFBFBD><C8A7><EFBFBD>>ǡ<><C7A1>Q<EFBFBD>T<><54><EFBFBD><0B><07> [~W<>~<7E><1F>c݂z<DD82><7A><EFBFBD><EFBFBD><EFBFBD>z<19><><EFBFBD><EFBFBD><EFBFBD>\r<EFBFBD>: \0<EFBFBD>rY<EFBFBD><EFBFBD>x)<29><>!<21><>ɡ<EFBFBD>K<EFBFBD><4B>+<2B>z!<21><>ӀC+<2B><><EFBFBD><05>ٮ<EFBFBD>ï:ݎ<19><><EFBFBD><EFBFBD><0B><><EFBFBD>Zg<5A><67>~z4f<1A><> <09>:<3A><><EFBFBD><EFBFBD>s<EFBFBD>Ӫ<EFBFBD><D3AA>+<1A><>x<EFBFBD>%<25><><13><>=<3D><>G<EFBFBD><47>I<EFBFBD>f3?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>+Y<><59>q<EFBFBD>@<40><0C>G<EFBFBD><47><EFBFBD><EFBFBD>y<01><>o<EFBFBD><6F>Ѵ<EFBFBD>p\r<EFBFBD>~<7E>{W<EFBFBD><EFBFBD><1D>[<5B><><EFBFBD><EFBFBD><EFBFBD>y<EFBFBD>:\0<EFBFBD>\\<EFBFBD><EFBFBD><EFBFBD>;e<>ۡ<EFBFBD>YI\"<EFBFBD><EFBFBD>zdk<C298>Z<EFBFBD>|[u<><75>u<EFBFBD><75>+<2B>9q<39><71>nR ˮ<1A>B<7F><EFBFBD><1B><>ׁz|\r<EFBFBD>ᤄ<EFBFBD><EFBFBD>k<EFBFBD>^<5E><02>[1<><31>%<25>.<2E><>pA<70>2<<13><>=<3D>ء<EFBFBD><D8A1>\$<EFBFBD>;<3B>5<EFBFBD>)<29><>m<EFBFBD><6D>!<21><><EFBFBD>XX<58><58><EFBFBD>Y<EFBFBD>x<EFBFBD>5vT\\<EFBFBD>Q<EFBFBD>%:<3A><>><3E><>ɛ<EFBFBD>;<3B><>e<EFBFBD>|/<2F><1B><>y<EFBFBD><79><04><>W<EFBFBD><57>xנ|g<><67><EFBFBD><7F><EFBFBD><EFBFBD>C<EFBFBD><43>\\<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><<3C><>9z\\<02>#<23>.FV;8<><0C>N<EFBFBD>X7<58><37><EFBFBD><EFBFBD>\"8&d5<64>P<>4Gj?<3F>\0<EFBFBD>?\"=<3D><><EFBFBD>HER");}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><>\"-6N<><4E><EFBFBD><EFBFBD>bd<19>Gg<47><08><>:;Nr<4E>)<29><>c7<63>\r<EFBFBD>(H<>b81<38><31>s9<73><39><EFBFBD>k\r<EFBFBD>c)<29>m8<6D>O<0C><1A>VA<7F><41>c1<><31>c34Of*<19><>-<2D>P<EFBFBD><50>1<EFBFBD><31>r41<34><31>6<19><>d2<18>ց<EFBFBD><D681><EFBFBD>o<EFBFBD><6F><EFBFBD>#3<02><><EFBFBD>B<EFBFBD>f# <09><>g9Φ<>،fc\r<EFBFBD>I<><49><EFBFBD>b6E<>C&<26><>,<1A>bu<><75>m7a<37>V<EFBFBD><56><EFBFBD><EFBFBD>s<EFBFBD><73>#m!<21><>h<EFBFBD><68>r<EFBFBD><72><EFBFBD>v\\3\rL:SA<53><41>dk5<6B>n<EFBFBD><1F><><EFBFBD><EFBFBD><1A><>aF<><46>3<EFBFBD><33><EFBFBD>e6fS<66><53>y<EFBFBD><79><08>r!<21>L<EFBFBD><4C>-<2D>K,<2C>3L<33>@<18><0E>J<EFBFBD><0C>˲<EFBFBD>*J<><4A>쵣<EFBFBD><0E><><EFBFBD> <09><><13><02><><EFBFBD>b<1A>c<EFBFBD><63>9<0C><><EFBFBD>9<EFBFBD><0C><06>@<40><><10><><EFBFBD>H<EFBFBD>8<0E><>\\<EFBFBD><0C><08>6><3E>`<60>Ŏ<><C58E>;<3B>A<EFBFBD><41><T<>'<08>p&q<>qE<03><>4<EFBFBD>\rl<EFBFBD><1C><>h<EFBFBD><5#p<><0E>R <20>#I<12><>%<25><12>fBI<42><49>ܲ<12><>><3E>ʫ29<<3C><0C>C<>j2<><EFBFBD>7j<37><6A>8j<08><>c(n<0C><><EFBFBD>?(a\0<EFBFBD>@<40>5*3:δ<>6<EFBFBD><36><EFBFBD><EFBFBD>0<EFBFBD><30>-<02>A<>lL<><4C>P<EFBFBD>4@<40>ɰ<EFBFBD>\$<EFBFBD>H<EFBFBD>4<EFBFBD>n31<EFBFBD><1C>1<EFBFBD>t<04>0<EFBFBD><30>͙9<CD99><39><08>WO!<21>r<EFBFBD><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>H<EFBFBD><1A><><1D>9<EFBFBD>Q<EFBFBD><51>96<>F<EFBFBD><46><EFBFBD><<3C>7<EFBFBD>\r<EFBFBD>-xC\n <20><><EFBFBD>@<40><><EFBFBD><01><><14><11>:\$i<15>ضm<D8B6><6D><EFBFBD>4<EFBFBD>Kid<0C><>{\n6\r<EFBFBD><1F><>xhˋ<68>#^'4V<34>@a<><61><<3C>#h0<68>S<EFBFBD>-<2D>c<EFBFBD><63>9<EFBFBD>+p<><70><EFBFBD>a<19>2<EFBFBD>cy<63>h<EFBFBD>BO\$<15><12>9<EFBFBD>w<EFBFBD>iX<69>ɔ<06>VY9<59>*r<>Htm <0E>@b<14><>|@<40>/<2F><>l<EFBFBD>\$z<EFBFBD><EFBFBD><EFBFBD>+<2B>%p2l<32><6C><EFBFBD>.<2E><><EFBFBD><11><16><><EFBFBD>7<EFBFBD>;<18>&{<EFBFBD><EFBFBD>m<EFBFBD><03>X<11>C<l9<6C><39>6x9<78>m<EFBFBD><6D><19><><15><><EFBFBD>7R<37><52>0\\<0C>4<EFBFBD><34>P<EFBFBD>)A<>o<EFBFBD><6F>x<EFBFBD><78><EFBFBD>q<EFBFBD>O#<23><><EFBFBD><EFBFBD>f[;<3B><>6~P<06>\r<18>a<EFBFBD><61>T<>GT0<54><08><>u<>ޟ<EFBFBD><DE9F><EFBFBD>\n3<12>\\ \\ʎ<EFBFBD>J<EFBFBD>ud<EFBFBD>CG<EFBFBD><EFBFBD><EFBFBD>PZ<EFBFBD>><0F><><0B><>d8<64>Ҩ<EFBFBD><D2A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>C?V<><56>dL<64><4C>L.(ti<74><69><EFBFBD>><3E>,<2C><>֜<>R+9i<><69>ޞC\$<EFBFBD><1D>#\"<EFBFBD>AC<EFBFBD>hV<08>b\n<1C><>6<0C>T2<54>ew<07>\nf<05><>6m !1'c<><63>;<3B><>*eLRn\r<EFBFBD><EFBFBD>G\$<EFBFBD>2S\$<EFBFBD><EFBFBD>0<EFBFBD><EFBFBD><EFBFBD>a<>'<05>l6<6C>&<26>~A<>d\$<EFBFBD>J<10>\$s<1C> <20>ȃB4<42><34><1D>j<>.<2E>RC̔<18>Q<EFBFBD>j<EFBFBD>\"7\n<EFBFBD>Xs!<21>6=<08>BȀ}");}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|<7C>^R<18><>E<EFBFBD>8kM<08><><EFBFBD>s<EFBFBD>d<EFBFBD>ka<6B>)h%\"P<EFBFBD><EFBFBD>0nn<EFBFBD><EFBFBD>/<2F><>#;<3B><>g\rd<EFBFBD><10>8<EFBFBD><1B>F<3\$<EFBFBD>,<2C>P);<4`<60><1B><2\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>@w-<2D><>͗A<CD97>0<><30><1C><><EFBFBD>Lr<4C>Yh<59>XC<>a<0F>><15><>t<><74>L<EFBFBD><4C>2<EFBFBD>yto;2<><32>Q<EFBFBD><51>t<EFBFBD><74>frm<72>:<3A><>A<EFBFBD><41><EFBFBD><EFBFBD><EFBFBD>AN<41><4E>\\\"k<EFBFBD>5oV<6F>Ƀ=<3D><>t<EFBFBD>7r1<72>p<EFBFBD>Av\\+<2B>9<EFBFBD><39><EFBFBD><EFBFBD>{<EFBFBD><EFBFBD>^(i<><69>f<EFBFBD>=<3D>r<EFBFBD><72><0F><>u<EFBFBD><75><EFBFBD>t<02>]y<>ޅ<EFBFBD><19>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><07>gi<>vf<76><66><02>+<2B>Ø|<0E><>;<3B><><EFBFBD><16><>]<04>~<7E><>|\re<EFBFBD><EFBFBD>쿓<EFBFBD>݂<EFBFBD>'<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><14><><EFBFBD> <0C>\0+W<><57>co<1D>w6wd Su<13>j<>3@<40><><EFBFBD>0!<21><>\n .w<>m[8x<<3C><>cM<63>\n9<EFBFBD><EFBFBD><07>'a<><61><0E>1><3E><04><>[<5B><><EFBFBD><EFBFBD>d<EFBFBD><64>ux<75><78><\"Y<19>c<><63>B!i<><69><EFBFBD><EFBFBD>w<EFBFBD>}<05><>5U<1A>k<EFBFBD><6B><19><><EFBFBD>]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{<EFBFBD>IךR<EFBFBD><EFBFBD><EFBFBD><03>=f W~<7E>]<5D>(bea<65>'ub<75>m<03>><3E>)\$<EFBFBD><EFBFBD>P<EFBFBD><EFBFBD>-<2D><16>6<EFBFBD><36>R*IGu#ƕUK<05>AX<>t<EFBFBD>(<28>`_<><02>\"<0B><><EFBFBD>p<> &U<><55><EFBFBD>I<EFBFBD><49>]<5D><0C>YG6P<36>]Ar!b<> *ЙJ<D099>o<EFBFBD><6F>ӯ<EFBFBD><13><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>v<EFBFBD><76>*<2A><><1B>!<21><>~_<><0F><>4B<34><42><EFBFBD>_~RB<52>iK<69><4B><EFBFBD><EFBFBD>`<60><>&J<1F>\0<EFBFBD><EFBFBD><0C>N\0<EFBFBD>\$<EFBFBD><EFBFBD><05><><EFBFBD>C<EFBFBD>K <20>S<><0E><>jZ<02><05><0C><><EFBFBD>0pvMJ<07>bN`L<><4C><EFBFBD>e<>/`RO.0P<EFBFBD>82`<60> <09><><EFBFBD><02>d Gx<47>bP<62>-(@ɸ<>@<40>4<EFBFBD>H%<&<26><0C><>Z<EFBFBD><5A><02><>p<><70><EFBFBD><EFBFBD>%\0<EFBFBD>p<EFBFBD><EFBFBD>Є<><D084><EFBFBD> <09><> <09><>/\"<EFBFBD><06>J<EFBFBD><4A>\ns<EFBFBD><EFBFBD>_<EFBFBD><EFBFBD>\r<EFBFBD><EFBFBD>g<EFBFBD>`<60><>!k<1E>pX <09><>:<3A>v<EFBFBD><76>6p\$<EFBFBD>'<27><><0C>RUeZ<65><5A>d\$<EFBFBD>\nL<EFBFBD>B<><42><EFBFBD><EFBFBD>.<2E>d<05>n<EFBFBD><6E><07><>tm<74>>v<>j<EFBFBD><6A><EFBFBD><EFBFBD>)<29> M<>\r\0<EFBFBD>.<2E>ʊH<CA8A><08>\"<EFBFBD>5<13>*!e<>ZJ<5A><4A><EFBFBD><EFBFBD><EFBFBD><EFBFBD>f(dc<64><14>(x<><78>jg\0\\<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z@<40><><EFBFBD>|`^<5E><>r)<<3C>(<28><><08><><EFBFBD><EFBFBD>)<29><1C><><EFBFBD><15><><EFBFBD>@Yk<08>m<EFBFBD><6D>l3Qyс@<40><18><>ѐf<D190><66>Pn<50><04><12><><EFBFBD>T<EFBFBD><54><EFBFBD><EFBFBD>N<EFBFBD>mR<6D>q<EFBFBD><1D><>Vmv<6D>N֍<4E>|<7C>ШZ<D0A8><06>Ȇ<EFBFBD>(Yp<><70>\"<EFBFBD>4Ǩ<EFBFBD><EFBFBD><EFBFBD>&<26><>%<25>l<EFBFBD>P`Ā<>Xx bbd<62>r0Fr5<13><<10>C<><0C>z<><16><>6<EFBFBD>he!<21><>\rdz<64><7A><EFBFBD>K;<1F>t<EFBFBD><74>\n<EFBFBD>͠<EFBFBD>HƋQ<EFBFBD>\$Q<EFBFBD>Enn<6E>n\r<EFBFBD><EFBFBD><EFBFBD>#<23>T\$<EFBFBD><EFBFBD>ˈ(ȟѩ|c<>,<2C>-<2D>#<23><>\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD>J<EFBFBD>{d<>E\n\$<EFBFBD><EFBFBD>Br<EFBFBD>iT<69><54><EFBFBD>+<2B>2PED<45>Be<1D>}&%Rf<52><66>\n<EFBFBD><EFBFBD>^<5E><>C<12><>Z<EFBFBD>Z RV<52><56>A,<2C>;<1D><10><><<0E><><EFBFBD>\0O1<EFBFBD><EFBFBD><EFBFBD>c^\r%<25>\r <20><>`<60>n\0y1<EFBFBD><EFBFBD>.<2E><>\r<06>ĂK1<4B>M3H<33>\r\"<EFBFBD>0\0NkX<04>Pr<><0B>{3 <20>} \nS<EFBFBD>d<EFBFBD><EFBFBD>ڗ<0F>x.Z<>RT<52><54><EFBFBD>wS;53 .<2E>s4sO3F<33><46>2<10>S~YFpZs<5A>'<27>@ّOqR4\n<EFBFBD>6q6@Dh<>6<EFBFBD><36>7vE<76>l\"<EFBFBD>^;-<2D>(<28>&<26>b*<2A>*<2A><>.! <20>\r<EFBFBD>!#<23>x'G\"<10>͆w<CD86><77>\"<0F><> <20>2!\"R(v<>X<EFBFBD><58>|\"D<EFBFBD>v<EFBFBD><EFBFBD>)@<40>,<2C>zm<7A>A<06>wT@<05><> <20>\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ЫhдID<EFBFBD>P\$m><3E>\r&`<60>><3E>4<EFBFBD><34>A#*<2A>#<23><<0F>w\$T{\$<EFBFBD>4@<40><>dӴRem6<6D>-#Dd<44>%E<>DT\\<EFBFBD>\$)@<40><0B>WC<57>(t<>\"M<EFBFBD><EFBFBD>#@<40>TF<54>\r,g<>\rP8<50>~<7E><>֣J<D6A3><4A>c<><63><EFBFBD><EFBFBD>ĹƂ<C4B9> ʎ\"<EFBFBD>L<EFBFBD>Z<><5A>\r+P4<14>=<3D><><EFBFBD>S<EFBFBD><53>T<EFBFBD>A)<29>0\"<EFBFBD>CDh<>M\n<EFBFBD>%F<>p<EFBFBD><70><EFBFBD>|<7C>fLNlFtDmH<6D><48><EFBFBD><EFBFBD>5<04>=H<>\n<EFBFBD><EFBFBD>ļ4<EFBFBD><EFBFBD><EFBFBD>\$<04><>K<EFBFBD>6\rbZ<><5A>\r\"pEQ%<25>wJ<77><4A>V0<56><05>M%<25>l\"h<EFBFBD>PF<EFBFBD>A<EFBFBD><EFBFBD>A㌮<EFBFBD>/G<>6<07>h6]5<>\$<EFBFBD>f<14>S<13>CLiRT?R<><52><EFBFBD>C<EFBFBD><43><EFBFBD><EFBFBD>HU<48>Z<EFBFBD><5A>YbF<62>/<2F>.<2E>Z<0F>\"\"^<15>y<EFBFBD>6R<36>G <20><06><15>n<EFBFBD><6E>܌<EFBFBD>\$<EFBFBD><EFBFBD><EFBFBD>\\&O<>(v^ <20>KU<4B>Ѯ<EFBFBD><D1AE>am<61>(\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD><0C><><EFBFBD>\$_<><5F>%<25>+KTt<54><74>.ٖ36\n<EFBFBD>c<EFBFBD><EFBFBD>:<3A>@6 <20>jP<>AQ<11>F<EFBFBD>/S<>k\"<4A<>gA<67>aU<61>\$'<27><06><><EFBFBD>f<EFBFBD><66>QO\"<EFBFBD>k~<7E>S;<3B><><EFBFBD><EFBFBD>.<2E><>:<3A><0E>k<EFBFBD><6B>9<EFBFBD><39><EFBFBD><11><04>e]`n<><6E><EFBFBD>-7<><37>;<3B><>+V<><1D>8W<38><57>2H<07>U<><55>YlB<6C>v<EFBFBD><0C>⯎<EFBFBD>Ԇ<EFBFBD><D486><EFBFBD><EFBFBD> <09><><08><>p<EFBFBD><70><EFBFBD>l<EFBFBD>m\0<EFBFBD>4B<EFBFBD>)<29>X<EFBFBD>\0<EFBFBD><EFBFBD>Q<EFBFBD>qFSq<EFBFBD>4<><34>nFx+p<><70><EFBFBD>E<1D>Sov<6F>GW7o<37>w<>KRW<52>\r4`|cq<63>e7,<05>19<31>u<><75>u<EFBFBD>cq<63><71>\"LC<7F>t<EFBFBD>h<EFBFBD>)<29>\r<EFBFBD><EFBFBD>J<0F>\\<10>W@<40> <09>|D#S\r<EFBFBD>%<25>5l<35>!%+<08>+<10>^<5E>k^ʙ`/<10>7<EFBFBD><37>(z*<><07><>E<EFBFBD><45>{<EFBFBD>S(W<><57>-<2D>Xė0V<30><13>0<><11><><11><>=<3D><>a ~<7E>fB<66>˕2Q<32><0E><>ru mC<6D><43><EFBFBD><10><>t<EFBFBD>r(\0Q!K;xN<78>W<EFBFBD><57><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?b<<3C>@<40>`<60>X,<2C><05>`0e<30>ƂN'<27><EFBFBD><C291><0F><>&~<7E><>t<EFBFBD><74>u<EFBFBD>\"| <20>i<EFBFBD> <20>B<EFBFBD><42> 7<>R<EFBFBD><52> <20><>lSu<53><75>8A<07><>dF%(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><04>?3@A-oQ<6F>ź@|~<7E>K<EFBFBD><4B><EFBFBD>^@x<05><1F>b<EFBFBD><62>~<7E>D<EFBFBD>@س<><D8B3><EFBFBD><EFBFBD><EFBFBD>TN<54>Z<05>C<EFBFBD> W<><57><EFBFBD>ix<\0P|<7C><>\n\0<EFBFBD>\n`<60><><EFBFBD><EFBFBD><08>\"&?st|ï<>w<EFBFBD>%<18><><EFBFBD><EFBFBD>md<6D>u<EFBFBD>N<EFBFBD>^8<>[t<>9<EFBFBD><39>B\$<05><><05><><05><><05>'\">U<>~<7E>98<39><38><EFBFBD><EFBFBD><EFBFBD>ÔF<C394>f <20><05><>u<EFBFBD><75><05><>/)9<><39><EFBFBD><EFBFBD>\0<EFBFBD><EFBFBD><EFBFBD>A<>z\"FWAx<EFBFBD>\$'<27>jG<6A>(\"<EFBFBD> <20>s%T<17><>H<06><><EFBFBD><EFBFBD>e, M<>7<EFBFBD><37>b<02> Dž<>a<EFBFBD> ˓<>ƃ<EFBFBD>&wY<08>φ3<CF86><33><EFBFBD><7F> /<2F>\rϖ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{<EFBFBD>\"<07>ݜp{%4b<0E><><EFBFBD>`팤<><ED8CA4>~n<><6E><EFBFBD>E3 <09><><0C><><EFBFBD><EFBFBD>9<EFBFBD><18>3X<33>d<7F><64><EFBFBD>ՏZ<05><03>9<07>'<27><>@<40><><EFBFBD><EFBFBD>l<EFBFBD>f<EFBFBD><66><EFBFBD><EFBFBD>Q<EFBFBD>bP<62>*G<>o<EFBFBD><6F><EFBFBD>`8<><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD><41>B|<7C>z @<40> <09><>b<05>Zn_<0F>h<EFBFBD>'ѢF\$f<EFBFBD><05><>`<60><><EFBFBD><EFBFBD>HdDd<44>H%4\rs<>AjLR<4C>'<27><>f<EFBFBD>9g I<><49>,R\\<EFBFBD><EFBFBD><EFBFBD><08>>\n<17><>H[<5B>\"<EFBFBD><14><>\rӁ<EFBFBD><EFBFBD><EFBFBD><0B>L<EFBFBD>,%<25>FLl8gzL<7A><0k<30>o\$<EFBFBD>k<EFBFBD><12>`<60><>KP<4B>v<EFBFBD>@d<>'V<>:V<><56>M<EFBFBD>%<25><><EFBFBD>@<40>6<EFBFBD><\r<EFBFBD><EFBFBD>T<EFBFBD><0F><>LE<><45>NԀS#<23>.<2E>[<5B>x4<78>a<EFBFBD>̭<EFBFBD>LL<4C><1E><><EFBFBD>\n@<40><>\0۫tٲ<EFBFBD>\n^F<><46><1B><><1B><><EFBFBD>5`<60> R<><08>7<EFBFBD>lL<6C>u<EFBFBD>(<28><>d<EFBFBD><0F><><EFBFBD> <20>\r<EFBFBD>Bf/uCf<14>4<EFBFBD>cҞ B<05><><0E>_<EFBFBD>nL<>\0<EFBFBD> \$<EFBFBD><EFBFBD>aYƦ<EFBFBD><EFBFBD><0B>~<05>Uk<55>v<EFBFBD>e<EFBFBD>˥<EFBFBD>˲\0<EFBFBD>Z<EFBFBD>aZ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Xأ<EFBFBD><18>|C<>q<EFBFBD><71>/<}س<><D8B3><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD> Z<><5A>*<2A>w\nO<EFBFBD><EFBFBD><EFBFBD>z`<60>5<EFBFBD><35>18<31>c<EFBFBD><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>I<EFBFBD>Q2Ys<59>K<><4B><17><><EFBFBD>\n<0E>\\<EFBFBD><EFBFBD>\"<EFBFBD><EFBFBD> ð<>c<EFBFBD><63>*<2A>B<02><05><><EFBFBD>.<2E>R1<3+<2B><><06>*<2A>S<EFBFBD>[<5B>4<EFBFBD>m쭛:R<>h<EFBFBD><68>ITdev<13>I<EFBFBD>H<EFBFBD><48><EFBFBD>-Zw\\<EFBFBD>%n<>56<35>\n<EFBFBD>W<EFBFBD>i<EFBFBD>\$<EFBFBD>ōow<EFBFBD><EFBFBD>+<2B><><EFBFBD><0E><>r<EFBFBD><02>&Jq+<2B>}<7D>D<EFBFBD><44><EFBFBD><EFBFBD>j<EFBFBD><6A>d<EFBFBD><64>?<3F>U%BBe<42>/M<><4D>Nm=τ<>U<EFBFBD><02>b\$HRf<52>wb|<7C><>x d<06>2<EFBFBD>NiS<69><53><EFBFBD>g<EFBFBD>@<40>q@<40><>><3E>Sv<53><76><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C>kr<6B>x<EFBFBD><78>\0{<EFBFBD>R<>=F<><46><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>#r<><72>8 <09><>Z<EFBFBD>v<EFBFBD>8*ʳ<>{2S<>+;S<><53><1B>Ө<EFBFBD>+yL\$\"_<EFBFBD><EFBFBD><EFBFBD>B<EFBFBD>8<07><>\"E<EFBFBD>%<1B><><08><><1A><>\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>p<EFBFBD>p''<27>p<EFBFBD><70>wUҪ\"8бI\\ @<40><0C><>ʾ <20>Ln<4C><6E><EFBFBD><EFBFBD>R<EFBFBD>#M<>D<><1D>q<EFBFBD>LN<4C><4E>\n\\<EFBFBD><EFBFBD>̎\$`~@`\0u<EFBFBD><EFBFBD>~^@<40><>l<EFBFBD>-{5<>,@bru<72>o[<5B><><EFBFBD><EFBFBD><EFBFBD>}<7D>/<2F>y.<2E><> {<EFBFBD>6q<EFBFBD><12>R<13>p<EFBFBD><70>\$<EFBFBD>+1<>3<EFBFBD><0C><><10>+<2B><>O!D)<29><><0E><>\nu<03><<3C><>,<2C><><EFBFBD><EFBFBD>=<3D>Jd<4A>+}<7D><>d#<23>0ɞc<C99E><02>3U3<>EY<45><59><EFBFBD>\r<EFBFBD><EFBFBD>tj5ҥ7<EFBFBD>e<><65>wׄǡ<D784><C7A1><EFBFBD>^<5E><>q߂<71>9<EFBFBD><\$}k<1D><><EFBFBD><EFBFBD>RI-<2D><><EFBFBD>+'_Ne?S<>R<>hd*X<>4<EFBFBD><34><EFBFBD>c}<7D><>\"@<40><>vi>;5>Dn<44> <20>\r<EFBFBD><EFBFBD>)bN<62>uP@Y<>G<<3C><16>6i<10>#PB2A<32>-<2D>0d0+<02><><EFBFBD>gK<67><4B><EFBFBD><EFBFBD>?<3F>n<EFBFBD><6E><EFBFBD>d<11>d<EFBFBD>O<EFBFBD><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>c<>i<<3C><><EFBFBD><EFBFBD>0\0<EFBFBD>\\<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>g<EFBFBD><EFBFBD><0C><><06>ꡖ<EFBFBD><EAA196>NTi'<27><18><><EFBFBD>;i<>mj<><6A>܈<EFBFBD><DC88><EFBFBD><EFBFBD><EFBFBD>u<EFBFBD>J+<2B>V~<7E><><EFBFBD><1D>'ol`<60><><03><01>\",<2C><><EFBFBD><EFBFBD><1A><><EFBFBD>F<03><><EFBFBD> <09><>{C<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>T a<02>NEۃQ<DB83>p<EFBFBD> p<><70>+?<3F>\n<EFBFBD>><3E>'l<><6C>* t<08>Kάp<CEAC>(YC\n-q̔0<CC94>\"*ɕ<>,#<23><1E><>7<EFBFBD><37>\"%<25>+q<><0E><>B<EFBFBD><42>=<15>i.@<08>x7:<3A>%GcYI<12><1D>0*<2A><>Ðk<C390>ۈ<EFBFBD>\\<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Q_{<EFBFBD><1E><><07>#<23><>\r<EFBFBD>{H<EFBFBD>[p<> >7<1C>ch<16>n<EFBFBD><12><><EFBFBD>.<2E><><EFBFBD><EFBFBD>S|&J<>MǾ8<C7BE><38>m<EFBFBD>Oh<4F><68><EFBFBD> <09><>qJ&<26>a<>ݢ<12>'<27>.b<>Op<1E><>\$<EFBFBD><EFBFBD><EFBFBD><EFBFBD><0C>D@<40>C<>HB<48> <09><01>&<26>ݡ|\$Ԭ-6<0B><>+<2B>+ <20><><EFBFBD><EFBFBD><EFBFBD>p<EFBFBD><70>ଡAC\r<EFBFBD>ɓ<EFBFBD><EFBFBD>/<2F>0<EFBFBD><30><10><><1B>M<EFBFBD><4D>iZ<69>nE<17>͢j*><3E><>!Ңu%<25><>g<06>0<EFBFBD><30><EFBFBD>@<40><10>5}r<><72>+3<14>%<25><EFBFBD>-m<><6D>G<EFBFBD><<3C><><07>T;0<><30><16><1E><>DV<44>d<>g<EFBFBD>9'lM<6C><4D>H<05><> F@<40>P<EFBFBD><50>un<75>tFB%<11>M<EFBFBD>t'<27>G<>2<EFBFBD><10>@2<><<3C>e<EFBFBD><01>;<3B>`<60><>=LX<4C>2<08><><06>X<EFBFBD>}oc.L<>+<2B>xӎ<0C>&D<14>a<08><16><><EFBFBD>ɫ<EFBFBD>F2\ngL<06>E<0C><>.\\xSL<53>x<EFBFBD>;lw<6C>D=0_QV,a 5<>+L<><02>+<2B>|\$<01>i<EFBFBD>jZ\n<EFBFBD><05>D<>E<EFBFBD>,B<>t\\<EFBFBD>'H0<48><30><EFBFBD><EFBFBD>R~(\\\"<EFBFBD><14>:<3A><>n*<2A><><EFBFBD>(<28><>o<EFBFBD>1w<31><77>Q<1A><>r<EFBFBD><01><>E<EFBFBD>te<>F<EFBFBD><46>\$<EFBFBD>Sђ]<5D>\rL<EFBFBD>yF<79><46><EFBFBD>\\B<EFBFBD>i<1E>h<><68>hd<68><64>&ᚇh;fo<66><08>B-y`<60><><12>0<EFBFBD><30>J<EFBFBD>lP<6C>xao<19>\$<EFBFBD>Xq<>,(<05><10><>C* <09><>:<3A>/<2F><><11><><EFBFBD>HG\"<EFBFBD><EFBFBD>c<><07>C<EFBFBD><43><0F>Q<0B>\nF<02>Ԅ<EFBFBD>#<23><><EFBFBD>8<EFBFBD><38>F:У\0<EFBFBD><08>Ok<><6B>D<EFBFBD><44>])<29>ϚtT8L<38><>n<EFBFBD>`<17><><06>|<7C>HJ<><12><1B><> <04><> \"<1B>6<13>{<EFBFBD><EFBFBD><EFBFBD><EFBFBD>?=I<HGc ŤF<C5A4>@<0B>,C <20><>@j<01><>\$L<EFBFBD><EFBFBD><EFBFBD>(<28>nEʑP<1A><>jb<6A>n<>Α<EFBFBD><CE91><EFBFBD>W<17> \r<EFBFBD>Lq<EFBFBD><EFBFBD><EFBFBD><EFBFBD><06>sPH<50>ꉝz\\V\$k<1A>ҏtr5<72>,<2C><>l<EFBFBD><6C><14><04><<3C>'\0^S02<30>0f -5\"ac<EFBFBD>\"3U<EFBFBD>p<05><><EFBFBD>\"ܘ<EFBFBD>%<25><>\0'Zt\"96<EFBFBD><EFBFBD>9_ @Z{<EFBFBD>0I<EFBFBD><05><>D<16>ZE@<40><><EFBFBD>N<EFBFBD>h`<1C>\"<EFBFBD>`<60>\0<EFBFBD><0C><><02><>ɹ(G<>H<><48>Ch<18> <07>I<01><0C>f`@ZD<5A>\$)<29>K<EFBFBD>;Z<><5A>\0<EFBFBD>/<2F>C<EFBFBD>T>r_R@O<>`1r<04>TҨIb\0<EFBFBD>*<2A>8<1D><><EFBFBD><EFBFBD><13>h\$<EFBFBD>_<EFBFBD>p<EFBFBD>Rĕ\$<EFBFBD><EFBFBD>Ni^ʪP/O)<29><08>.ŹT6<54>\\<EFBFBD>ٔ@T<><54><06>rą`)<02><><EFBFBD>T=<3D>n\0<EFBFBD><04>2<EFBFBD><32>e<>+<2B>9ʢ\\<EFBFBD><10>@<40><><EFBFBD><EFBFBD><EFBFBD>><3E>PH<0C>1 <09><>y#<23><><EFBFBD>r<EFBFBD><<3C>a<EFBFBD>e<>K<EFBFBD><4B>/<2F>c<EFBFBD>M@_.\09ˈ<EFBFBD><EFBFBD><13><18><><06><17><>B<><01><><1A>0i<30><69><EFBFBD>a<EFBFBD>\n<EFBFBD><EFBFBD>de<06>a<EFBFBD>%|S2<1F><><EFBFBD><EFBFBD><EFBFBD>#<23><><EFBFBD><EFBFBD>n<EFBFBD><6E>D<>\$/<2F>+E<>d<01><><EFBFBD><EFBFBD>_2P<32><50>\$s,ok<6F>#<23><<3C> <09>A<EFBFBD>đr{B<EFBFBD><06><08>A-Q4Ҥ<14>\n<EFBFBD>\ry<02>!<21>b䱎<62><02><><EFBFBD>O<><4F>@ɬ<><C9AC>k<EFBFBD><6B> <20><>\"<EFBFBD>r<><01>*<2A>݇<EFBFBD><DD87>Y<EFBFBD><02>/<01><0B>ȑ a0<1D><>%<25>.gE~<7E><>&<26> 89<05><><EFBFBD><EFBFBD>#@M_ <1B><><04>7K䃸J`<60>X)<29>B\$<EFBFBD>( :<3A>g<02><>n*<2A>|<7C>M6PZ<50><5A>Ht<48>Jtq<74>Cx<43>[ڼ<><DABC><13><08>l=\n<EFBFBD><02><>U3<55>f\\̔J<EFBFBD>P ,<1B>:<3A>}TA<54>SYH(<1A>\n<02><03><>I<EFBFBD>ٲ<EFBFBD>!t(2U\"<EFBFBD>\\<EFBFBD>X<05>^s<> <09><0C>a!<21>\nPr<50><72>`<60>X3fnb<6E><62><10><><EFBFBD>J<EFBFBD><13><>&<26>z<EFBFBD>zQSf <03><><EFBFBD>t<EFBFBD>!T?<3F>9%<25>(Q<><51>B<EFBFBD>}6B<1F>kP\0<EFBFBD>><3E>g<EFBFBD>&~fhU<68><55>r<><72>,<2C> p5Hi<48><69>p<><70><EFBFBD><EFBFBD>qɚ<71>g<>V<EFBFBD>V<07><>Og<03>WEJ8<4A>0G<30><47>ak<61><6B><EFBFBD>@N NM<><4D><EFBFBD>U<EFBFBD>UxȪ<13><>S<EFBFBD>x <09><> <09>K<EFBFBD>@c<>1y<31><79>VlϠ<6C><CFA0>C<><43><0E><>2Q^rP6|<7C>I^M<>,<2C>j%d<>`ܫ<0C><>F<EFBFBD><46>\\#%<25>|<7C>C<EFBFBD><19><><EFBFBD>7싢<37>G<EFBFBD>TN<16><><18><><EFBFBD>i<EFBFBD><69>H<><48><EFBFBD>Q<EFBFBD>O<EFBFBD><4F><1F>C<EFBFBD>yB<79><42>\$<EFBFBD>%T<><54><EFBFBD>*<2A>>z\r<EFBFBD>MM Kp<07> <20><>J7O۷<4F>4<EFBFBD>%<25><>\$<07>p<EFBFBD><70><EFBFBD><EFBFBD>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD><08>͂<EFBFBD><CD82>EҪ\"T<EFBFBD><08>\0O<02>\0<EFBFBD><EFBFBD>@> r<14>O<EFBFBD>]<5D><><EFBFBD>x<EFBFBD>}^<5E>I<02><>@<40> źqn<71><6E><03>0<EFBFBD>Bb<>ȵ<EFBFBD>I<>(<28>M/<2F>;<3B><16><>}RN\n<12>C<EFBFBD><<3C>b<EFBFBD>PԵu?<3F>=Pe<50>C<EFBFBD><43><EFBFBD><EFBFBD>L^'<27>S<EFBFBD><53>?}4)<29><05>S-<2D><02><>1\r5S<EFBFBD>OE<EFBFBD>SF<EFBFBD><14><16><18>AOR+<2B>ޙ+v<><76>5<EFBFBD>&C)ِ<><D990>KSDB߳N|E\rc<EFBFBD>U<EFBFBD>Yʾ<EFBFBD><EFBFBD><05>V<1F><><EFBFBD>?H<>)実+sF<7F><46>k<>LPW-<2D>,<2C>U:<3A>&<26><0C>t{<EFBFBD><EFBFBD>Vo<14><><EFBFBD>J<EFBFBD>l'<27><>W<EFBFBD>e74X<34>n GF<1B>'<27><><EFBFBD>`<60><><EFBFBD>Cc<43><1E>%Il<13>j<EFBFBD>u6<75><36><18><>v<EFBFBD>U<EFBFBD><55>Z<03><>\0*<2A><14><>Nԟ#<23><>(<28><><EFBFBD>n<EFBFBD>-;|<7C><>4<EFBFBD>]X<><58><17>y'<27><><EFBFBD><EFBFBD>;<3B><>Z<EFBFBD><10><19>) s9<73><0B><><04>%<25><0F>R+\$<EFBFBD><EFBFBD> <09><>Q<EFBFBD><51>(\"<EFBFBD>_kX<><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\nM#<23><12><>\"!p~:<3A>*<2A><06><><11>\$<EFBFBD>3O<EFBFBD><EFBFBD><EFBFBD><EFBFBD><02><>6<EFBFBD>+<2B><><1E>\nB<EFBFBD>{1<EFBFBD><01>|H<>K<[`3<><33>#<23><1E>F@<40><06>ǐ! |<7C>؊\0<EFBFBD><05><>><0F><><EFBFBD><EFBFBD><EFBFBD>[nrMM<4D>+<2B><><EFBFBD>mO_<4F>2<1A><>Ȇ<EFBFBD>\0<EFBFBD>e^ <09>7Z<37>&<26><>B<EFBFBD>J褓h7QO%rf<15>p<EFBFBD><70><>֞<>m<03>ب<EFBFBD><D8A8>Ç<EFBFBD>4E<34>l<EFBFBD><6C><EFBFBD>+<04><><EFBFBD>V<EFBFBD><56>i<EFBFBD>N S<>Z<EFBFBD>Wt<13>2W<1A>[;<1C><>v\"%<25><>\$^<1A>-(I\$<EFBFBD><15>S@R-&<26>T<04>z<EFBFBD><04>k(<06><> <09>%R8<52>uY\0[9-<2D><><EFBFBD>(<28>)E<10><17><>8<08>=^<5E><03><><17>G<EFBFBD>5#<23><08><><EFBFBD>)<29>1V<31><56>b\r]<5D>Ne;&<26>Y<EFBFBD>`r<><72>I<EFBFBD><49>Pݱ<50><DDB1><EFBFBD>ֲ<EFBFBD><D6B2>\0<EFBFBD>@P<>7<EFBFBD><37><EFBFBD><EFBFBD>0H<1B><><EFBFBD>؍R<D88D>x<16>\0000C|<7C>n=<3D><>`<60><>TT<54><54>\rEhON<13><05><>'<27><>&<26>tc<74>K <20><1E>ܕU5<><35><16><><EFBFBD><EFBFBD><EFBFBD><17>P3\\<06><><EFBFBD>2\"\0y<0C>5<EFBFBD>V]<5D><><04>6><3E>U!<19><>@<40>hu<68><75>(<28>\"E%07B<37><42>6<EFBFBD><0B>d<EFBFBD>HN<><4E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij';@<05><>e<EFBFBD>MzlSfjKY<04>֍<EFBFBD><12><>-uh<75><03>H<EFBFBD><0B><>smL@<40><>\"r<EFBFBD>j<EFBFBD><0B><>j'l7 <09><>(u<03>u<EFBFBD><75>E<><45><02>e<EFBFBD>a<EFBFBD>@<40><>+<2B>K<EFBFBD>:ӕ<>%n<>z<11>V<><56><EFBFBD><0F><>;<07>[<0C>_Vz_<7A><5F>E<EFBFBD><45><18>8<EFBFBD><<3C>Sb<12><><EFBFBD><EFBFBD><18><><EFBFBD>6g<><67>:c<><63><EFBFBD><EFBFBD>7\n<EFBFBD><05><><EFBFBD>%Q<><51> K<>7<EFBFBD>ܮB<DCAE><42><EFBFBD><EFBFBD><EFBFBD>w<EFBFBD>u<EFBFBD>5<EFBFBD><13>0<EFBFBD><30>֚<EFBFBD><D69A><0E>y<EFBFBD>ncnK<6E><4B><EFBFBD><EFBFBD><EFBFBD>T8<54>ʙ<EFBFBD>s<EFBFBD><73>W=+<2B>=K\n_[p<>G<EFBFBD><47><0C>C5<43><35><EFBFBD><EFBFBD>'<27>D\"<EFBFBD><EFBFBD>M<\":|Mq4<1B><><EFBFBD>f<EFBFBD>s<EFBFBD>x <09>qlͰ<6C><CDB0>QP<><10>aOY<1A>E=<3D><><EFBFBD>6nT떒<54>Bt<42>h<17>C\0p<EFBFBD><EFBFBD>@n<><6E>D(a<>P<05>\"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'ZN<5A><4E>۬<><16>\r<EFBFBD>LNX<>g<EFBFBD><67><!w<><77><11><><EFBFBD>[<5B><>B)<29><>)~<7E><><EFBFBD>c<>x<EFBFBD><78>v<>i¦<69>q<EFBFBD><71><EFBFBD><EFBFBD><EFBFBD>a<01>@K<><4B>7s<37>EQdý<64><1C>k<05><01><><EFBFBD>?\"<EFBFBD>3<EFBFBD>-\"U<EFBFBD><12>|<7C><08><><EFBFBD><EFBFBD><EFBFBD>|21D>߳<>]&<26><><EFBFBD>\\h<EFBFBD>TƳ5<EFBFBD>\0`Tz<54><7A><EFBFBD>s -<01>N<EFBFBD><1A><><EFBFBD>\"<EFBFBD>f<14><>N<05>LU<4C>]n(D<11>(<28><>&%\"<EFBFBD>e\\<EFBFBD><EFBFBD>O<EFBFBD><EFBFBD>N<EFBFBD>Inۿ<EFBFBD><EFBFBD>\0<EFBFBD><02><16><>ƕ<EFBFBD><1E><>@<40><><EFBFBD><EFBFBD>V<EFBFBD>|R<>MYC<59>T<EFBFBD><54><EFBFBD><1A>b<EFBFBD>UH<55>p)<1A><16><>S<EFBFBD>s<EFBFBD> q<>i<EFBFBD><69><EFBFBD>`Z5vt坉<>*<2A>OO\n<EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD>F<06><><EFBFBD>58<35>!ax@<40>{^P<><50><02><>?<3F><><16>eh}\\<EFBFBD>j^2<><32>L<EFBFBD>,6<>.<2E>N K<>%<25><><EFBFBD><04>u<><75><EFBFBD>ip<69><0E>!?<3F>l<><1A><> -5<>w<EFBFBD><77><05>K\"V<><56>\\<EFBFBD>Is<EFBFBD><06>2!<21><>\$4<EFBFBD>5v\n<05><06><1D><><EFBFBD>gr<67><72>N<EFBFBD><4E>}<05><>;<03><17><><EFBFBD><EFBFBD><C29D><05><>W%D(pWa<57>\0<EFBFBD>v'<02><0B>6<03><>V<EFBFBD><56><EFBFBD>ƿ0W<30><57><EFBFBD>E4<45>EUl<55>8<0F>LD<0B><><1A>E<><kO<><4F>H<0B><0E>DU<44> `vS<76><53>L<EFBFBD><4C>!DTMbnWV<10><>Cd<43><64>)Ze蟀<><E89F80><EFBFBD>:<03>2<EFBFBD>d8<><38>K<19>ބ<EFBFBD>4<EFBFBD>-G<>b;wQW<01>30\r<15>f\0<EFBFBD>,<2C>`Qhl<68>֍<EFBFBD>0<EFBFBD>P<EFBFBD><50>0h@\\<05>r<14>8<EFBFBD><38>T<EFBFBD><17><>⛜<1E>1<EFBFBD>`<60>&<26><><EFBFBD>w<EFBFBD>X<07>><3E>F?<3F><>|P<>*<1A>M<EFBFBD>qZѯ<5A><D1AF>}<7D><>0k`<60><>#<08>իc<D5AB><63>'[<5B>ֱˍ|s<>IJ<49><4A><EFBFBD>\r<EFBFBD><EFBFBD><EFBFBD><06><><OaƼ@<40>W<EFBFBD><57>u<EFBFBD>T<19><>:<3A><>E^<5E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!k<><06><><EFBFBD><EFBFBD>a\$<EFBFBD>>5<><12>u_<75><5F>KcCQ<43>r-ъ<>'\r<EFBFBD>iC<EFBFBD><03><><EFBFBD><06><>@8<>S<EFBFBD>PS<50>_Xgl<6C>%<25> <02>n1r.<<3C>w_aɺij<C9BA>Gh<47>4\n<EFBFBD>W<EFBFBD>Z<EFBFBD><EFBFBD>aBn,\\\0<EFBFBD><EFBFBD><EFBFBD>DU<44>\nbbZ'<27><><EFBFBD>72<37><32><EFBFBD>r<>¢<16><>}<7D>Y>/<2F>w\\Y<EFBFBD>`^7J<06>j<EFBFBD>S<EFBFBD><53><EFBFBD><10><><EFBFBD><EFBFBD>S.<2E><>o%<25>Jg\0GD,<2C><><1F>>7<><37><EFBFBD>R<17>0<EFBFBD><0C><><EFBFBD><02><>3<1C><>6<EFBFBD>%i\0S<04>^L<><4C>A<EFBFBD><41>\ri<><69>O<<3C><><EFBFBD>a phv[<5B>{<EFBFBD><EFBFBD><EFBFBD>\0<EFBFBD>E<>^x<15><>ܼg<DCBC>YzW<7A>yG<>a<EFBFBD><61><EFBFBD>:(<28>>C<><12><><EFBFBD><EFBFBD>e\0<EFBFBD><EFBFBD><EFBFBD>])<29>3yts_a<5F>7<EFBFBD>+<2B><><EFBFBD>B<EFBFBD><42>C<EFBFBD>eT<65><54>f<>o<EFBFBD>P<16><><14><>2E<32>C<EFBFBD><43>v<EFBFBD>><3E>w<EFBFBD>l<EFBFBD>z<EFBFBD>*p<>Y<16><><EFBFBD><EFBFBD>q<><71><02><><06>Q<EFBFBD>p\nv[|q<>ҨE[<5B>Xi<58><69><EFBFBD><EFBFBD><EFBFBD>=<1A>z( <09>M<EFBFBD>n<12>]7F\r<EFBFBD><EFBFBD>Cs4|-} <20><><EFBFBD>Ŀ(NU<0F>?,<2C><0C>څ<EFBFBD><DA85><EFBFBD><EFBFBD><EFBFBD><11><08><>q <09><>p<EFBFBD>q~<7E><><04> <20><><EFBFBD>F<EFBFBD><12>%<25>88<05><>靦<EFBFBD><07>\$<EFBFBD>ް<0E>[<5B><><EFBFBD>r<EFBFBD>o!3<><33>(<28><0C><><EFBFBD>g<EFBFBD><67><EFBFBD>ץpJ!<21><><EFBFBD>q<EFBFBD>Z<EFBFBD>v?<3F><>c<EFBFBD><63><EFBFBD>L<EFBFBD><4C>7<EFBFBD><37>6<EFBFBD><36>\$<EFBFBD>m<><6D><EFBFBD>q<EFBFBD><71>8l!<21><15>5<19>C<EFBFBD>;Q,<2C><>d<EFBFBD>sF<06>-O<><4F>fÈ<66>\$<EFBFBD><13><>6<EFBFBD>%U<>C<EFBFBD><43>f\"<EFBFBD><EFBFBD>e(j<>\rMt<EFBFBD>F<07><><EFBFBD><EFBFBD>R<EFBFBD>x;n<>B\$<05><>SS<53>x'<1E><10>G<EFBFBD><47>陊M<E9998A> <09><>4ͬ'k<1D><EFBFBD>~<7E><>#9e<><65>Y<EFBFBD><59><EFBFBD>~<7E><>뭈;f<>+<2B>j<EFBFBD>K<EFBFBD>9p<39><70><EFBFBD>M<1A>'X<>/rt<72>\0<02>\\<EFBFBD>J%Q<><51><1A><>R<EFBFBD>\rвO3<EFBFBD>|<7C>寚<EFBFBD><E5AF9A><EFBFBD>ϱ<EFBFBD>4<EFBFBD><EFBFBD>xF<78><46><EFBFBD><EFBFBD>s5E<35>Ԑ;ԒWR<1A><>JX<4A>ʶ<EFBFBD>J<EFBFBD>\$<EFBFBD><17>wzO<7A><1C>&ǵ<><C7B5>z<EFBFBD>k<>S<10>\n<EFBFBD>\nNUP<EFBFBD><EFBFBD><1C>.<2E><>0<EFBFBD><30><EFBFBD>bdk<64><6B>P<EFBFBD><10><> G6<47>+B<>z<EFBFBD>1ΎhQ>sHv<48><76><0C><><EFBFBD>Q<1A>٠E<D9A0>p<EFBFBD><70>M<><05>)<29><>\n<EFBFBD>\\<02>ў<EFBFBD>Pz<><7A><12>.s<><01><> g<><67>)a~<03><>ȥ<EFBFBD>!(!<21>G<EFBFBD>hr[<5B>*<2A><><EFBFBD><EFBFBD><EFBFBD>բ<06>`<60><1A>~<7E>\"!<21>O<><7F><EFBFBD>5<EFBFBD>G3Ş*qkgB<67>,\$<EFBFBD><EFBFBD><EFBFBD>**1<>c.<2E>n 8<><1E>\$d<EFBFBD><EFBFBD><EFBFBD>VSne<6E>MiZ<1D><><EFBFBD>7žg<C5BE>A<EFBFBD>5<><1D><><EFBFBD><19>\n<EFBFBD>`<60>,<2C>2<EFBFBD><15>a<EFBFBD>ү<05><>mMkʻ<6B><CABB>ɯ<02><14>/-<2D><>6<EFBFBD>@?#`<0E><>)<29>Ԁ<EFBFBD>ha<68><EFBFBD><C286><EFBFBD><EFBFBD>)Vc<56>]<5D>_=<3D>Rz\\<EFBFBD>VR<EFBFBD><EFBFBD>=<3D>ط<EFBFBD>(-<2D>ot<6F>\$ܥ<EFBFBD>\n<EFBFBD><EFBFBD><EFBFBD>dSm<01>y<EFBFBD><79>fө<66>N\r<EFBFBD>m(t;D<><44><EFBFBD>p<EFBFBD>2<>ݶ<05><>ZRl)<18>9M̛<4D>,/<2F><>Yix<69><78>kя)<29>.<2E>2@S^<5E><><EFBFBD>u<EFBFBD><75><EFBFBD>d<11>6<EFBFBD>!<21><16>>VB<56><42> x<<3C><19>Kt06<30><19><>@<40><07>\nG<>A<16>P<EFBFBD>(<28><>NbD<62><44>K\n<EFBFBD>\"<EFBFBD><EFBFBD>cN<1D><>\ră.p<><70><EFBFBD>'2L<0F><>d<EFBFBD>ꟲ<05><><EFBFBD>\\Ly<EFBFBD>A= <09><>D<><03>m3<6D>%<25>@<40><><EFBFBD><0B><0F><14><><EFBFBD>8<EFBFBD>qbSP\"<EFBFBD>ޢ<EFBFBD>Ʈ/<2F>Dz<>C&<26>O<EFBFBD><4F>\0007f<11><19>D^1<>X<EFBFBD><58>/<2F><01>,\n<0E><EFBFBD>v<EFBFBD>Wx%f)<29><>' <20>D<EFBFBD>dQ@<40><>I(ҋ7Y<37><59>|<7C><><01>A<EFBFBD>Q<EFBFBD><51>D<EFBFBD><44>ڠe 8ׇ7k)_ <1F>@\"\"<EFBFBD><EFBFBD>%<25>}<7D> <09>(<28><>1<EFBFBD>1؍<31>\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD>e<><16><1E>?-ɵH<><48>&<26><><EFBFBD><EFBFBD><EFBFBD>\rL<0B><><EFBFBD><EFBFBD>'<27>eۮ0<DBAE>T<EFBFBD>]<5D><>C!<21>emNz<> Uz<55><04><>Ɉ<EFBFBD><C988><EFBFBD>S<EFBFBD>ܜaf<61>7<EFBFBD>M<>^C<>D<05><><EFBFBD>(_<12><0C><0B><12><02><>#\"<EFBFBD>dr5<72>9<EFBFBD><39><EFBFBD>81<1E><>hf<68>ȭ<EFBFBD>a_<61>×tZX\0<EFBFBD>U<EFBFBD><16><><11>{2nn]<5D><>;FR<46><52>!<21>}>s<><73>Hi<48><1E>y#<23><><EFBFBD>?\"Ť<EFBFBD><EFBFBD><EFBFBD><EFBFBD><1E><>>{<EFBFBD><0E><EFBFBD>/?7<>F<EFBFBD><EFBFBD>Y<EFBFBD><59><EFBFBD><EFBFBD>?Aj<41><6A>.<2E>U<EFBFBD>!5`H<C287><48><EFBFBD>\$r\0<EFBFBD><18>'\n<EFBFBD>\":.<2E><>dԂٙƪ<>q<EFBFBD>Rխoh<6F><68>><3E><04><11>{<EFBFBD><EFBFBD>1<><31>+<2B>><3E><><EFBFBD><07>t<EFBFBD><74>k<EFBFBD>%-D<>=9<>}<7D>C@<40>8cm<63>Hr<48><01><><EFBFBD>W<13>n<><10>\0Ď<(<28>RR<52>8<EFBFBD><38><18><>YV<59><56>`<60>pp<70>.U<>e_`<60><><EFBFBD><EFBFBD>^<5E><><EFBFBD>쵛n^<05>_<EFBFBD>R|<7C>r΅p<>7/!M5<4D><35><EFBFBD>|<7C><><03>\n<EFBFBD>&<26>F<EFBFBD><04>VVz<56><7A>O<EFBFBD>A<EFBFBD>~ш|ƛ<><C69B>4NȒ<4E><C892>Ք<02><><EFBFBD><EFBFBD>g<16>yh-<2D><><EFBFBD>\nN\"r\"<07><><EFBFBD>Gc<47>s<EFBFBD><73><EFBFBD><EFBFBD>D<04>'<08>Xo٧<><D9A7><EFBFBD>O<EFBFBD>{<EFBFBD><EFBFBD>{Y{<EFBFBD><EFBFBD>E<EFBFBD>=T<>e<EFBFBD>Z<EFBFBD><5A><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{\";<17>H<1C><>Xz<>t<1F><>w<EFBFBD>*-<2D><15><1E><>U<1C><><EFBFBD><EFBFBD>w<EFBFBD>-<10><>\"<EFBFBD><EFBFBD><A^<5E>O<EFBFBD><4F>T <13>]<02>D?:<3A><0F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><<3C><>p<EFBFBD>q<EFBFBD>[<5B><><EFBFBD>,)<29>&`<60>{xKI<EFBFBD>I`<60>`<60><>c<EFBFBD><63>0<EFBFBD><30><EFBFBD><EFBFBD>D<EFBFBD>y8<79><38><EFBFBD>qC<71><43>Y<17><>CF<43><46><EFBFBD><EFBFBD>J<EFBFBD><4A><EFBFBD>nk<6E>[<5B>8<EFBFBD><38><16><>:\n^<5E>ց<EFBFBD><D681>T<EFBFBD>!X*M<><<3C>5`\0<EFBFBD><EFBFBD>6A<EFBFBD>2o<EFBFBD>P.<1A><13><>a<02>AH<41><48>#x[<18><><EFBFBD><EFBFBD><EFBFBD>▞<EFBFBD><E2969E> '<08>o@<40><>O0^<5E><><EFBFBD><EFBFBD><EFBFBD>h|<7C>P<>=+<2B>)<29>d[<5B><><EFBFBD><EFBFBD>X-<2D><>W<EFBFBD>!<17><><EFBFBD><EFBFBD>Æ<>/:\"<EFBFBD>0k#XǞ<<3C><><05><>h<EFBFBD>CG<43>ݠ@F<>(<28><>k<EFBFBD><12><><EFBFBD>l<0C>&H<1E>F0OSz<53><7A><EFBFBD>w<EFBFBD>Q<EFBFBD><51>3<EFBFBD><33><EFBFBD>z|+<2B><>\r9b<EFBFBD>T<EFBFBD>}'ܬwA<77>\r<EFBFBD>nF<><04><><EFBFBD><EFBFBD>!<21>g0<>lp<><70>l<EFBFBD>1<EFBFBD>+<2B>|<7C>h<EFBFBD>kz<6B><7A>i&<01><>u<>D<EFBFBD>{K<EFBFBD><EFBFBD>\\<EFBFBD><EFBFBD><EFBFBD>\$t(<28>;<3B><08><><EFBFBD>ì<EFBFBD><C3AC>H<EFBFBD>r|Bw<42>D3[M<>!:(<04>{<EFBFBD>Z<EFBFBD><03>(|-<2D>Hy0<79>^<5E>'<>}<7D><>*<2A><><EFBFBD><EFBFBD>NK<4E><4B><EFBFBD><10><><EFBFBD>5KU<4B><55><EFBFBD>jM<>\"<EFBFBD><EFBFBD>w<EFBFBD><EFBFBD>]%<25><><1F>{1q<EFBFBD><EFBFBD>z<EFBFBD><EFBFBD><EFBFBD>)]<5D>Ů[k<>\0O4<><34><EFBFBD><EFBFBD><EFBFBD><1A>UF<03>\0<EFBFBD>c<EFBFBD><18><>mZEGt<47>sDQZ<51>)n;7<><<3C>qhlXx<>I<03><>^<5E>V<11><><EFBFBD>&<26>ͷ<EFBFBD>C<EFBFBD>`,ɑ%<1B><02>1\"@1<>|<7C>)<29>R<EFBFBD>k<EFBFBD><6B>V<EFBFBD><56>}S,<2C>#!<08><>G<EFBFBD><47><EFBFBD>]<5D><05>Ex<><78><EFBFBD>YT<59><54><%<25>Qѿ<51>@<40><><EFBFBD><EFBFBD><EFBFBD>m<><6D><EFBFBD>Jc<4A><63><EFBFBD>B<EFBFBD><42>B i<><69><10><>G<1B><11>f2<1A><><EFBFBD><EFBFBD>cD<63><44>nէ<6E>=J<06><><EFBFBD>I_<49><5F><EFBFBD><EFBFBD><EFBFBD><13><04>'<27><><1E><>iA<69>&,<2C><>{<EFBFBD><EFBFBD>c<02><>4<EFBFBD><34>oV<6F>%<25>d<0B>2<EFBFBD>x<1D>e<EFBFBD><65><EFBFBD>#s_U<5F>H<EFBFBD>ՉW<13>! =۷<>O<EFBFBD><(y\0<EFBFBD>.<2E><>G<>'<27>\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD>57<35>pV<70><56><EFBFBD>(<28><>þ:<3A><1B>}<7D>RRHHy[<5B><> <09><0F><><EFBFBD><EFBFBD> 1<17><><EFBFBD><17>O\")<29><>L<EFBFBD>l<EFBFBD><6C><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><1C><><10><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>+<~<7E> \0<16><><EFBFBD>s<EFBFBD><73><EFBFBD>?<3F>B@<07><><EFBFBD>d<EFBFBD><64><EFBFBD><EFBFBD><EFBFBD>?n<><6E>~<7E>&LЄ<4C><D084>?<3F><1E><>@:@;<3B><>y<EFBFBD><79><11>Q<EFBFBD><51>><3E><1F><><EFBFBD><EFBFBD>f<><66><EFBFBD>:\0<EFBFBD>t<0F>+j<>sz<73>K<EFBFBD>,b^<5E>p<EFBFBD><70><EFBFBD>HX<48>?<3F>P<EFBFBD>\\D<EFBFBD>?v\"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\"<EFBFBD>&<26> ?<3F><1B><><EFBFBD><EFBFBD>t<EFBFBD><74>`<60>V?<3F>\0<EFBFBD><EFBFBD><EFBFBD>J<EFBFBD>wC1O<31><4F><16>#<23>Ɛ<EFBFBD>* <09><>@̿<>\0<EFBFBD><EFBFBD><EFBFBD>Ƈ<1C><><EFBFBD>/#8\"<EFBFBD>O<EFBFBD>\"<EFBFBD>\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>6<EFBFBD>Nc<EFBFBD>ä<10>[<5B>p@C<02>h\0{\0 <09>pDO<><4F>Ft<04><>H/!h@<40><>L<01>;<3B>@<40><><11>w<EFBFBD><77><03>I<><49>~C<>ˀ¸)<29>E<EFBFBD><45>4+<2B><12><>)<29><><EFBFBD>Eb<45>?]<04>d<EFBFBD><64><EFBFBD>\$<EFBFBD><<15><><EFBFBD><EFBFBD>`o<><6F><EFBFBD><03><><EFBFBD><EFBFBD>?}<05>8<EFBFBD>b<EFBFBD><62><1C>/<2F>J<EFBFBD><16><>o#<05><><EFBFBD>IV,Ac<41><63>3<14>Xa <05><13>o<><6F>xi<78><69><EFBFBD><EFBFBD>\"椌CU<43><55><16>D<EFBFBD>k<EFBFBD>YȊ<>}<7D>\n\r\0,G<>\0<EFBFBD>|q<><71> <20>.Ŋ<><C58A><05>N<EFBFBD>q<EFBFBD>pN<70>Д<EFBFBD>jBO\$|C<>p}<7D><>4`<1E><><EFBFBD><EFBFBD>\\*4<05><15>bA<62><07><>+<2B>D_<05><11><><15><><01>X<EFBFBD>\$<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<40><>6\n\0\$<EFBFBD>~ˣ<>\0<EFBFBD><EFBFBD>Jb݅<62><DD85><EFBFBD> U<>p<EFBFBD>X<EFBFBD>iD\"<08>ێ<><DB8E><EFBFBD>lg<6C>t'<27><><EFBFBD><EFBFBD> <20>+x<><<3C><><EFBFBD>N<><4E>51e<31><65><EFBFBD>0`<60><><07>B8q<1A>\"O- C!<21>Қ<EFBFBD>mɵ<6D><C9B5><02><>*<2A><>f@#<23>6<EFBFBD>ZЛ9<D09B><39><EFBFBD>ZR<5A>ǁ<EFBFBD><16><1B><><EFBFBD><EFBFBD> HZL<1A> e<01><><03><><EFBFBD>9<EFBFBD>9<03><0F> T n<><6E>?xX\$0<EFBFBD><EFBFBD>%\0002<EFBFBD>\n<EFBFBD>y<EFBFBD>!<21><>e<0C>:\$<EFBFBD>QssA<EFBFBD><EFBFBD>nxK<><4B><EFBFBD>l1'<27><>Nz!p<><70><03>.Ṇ<>c<>p<EFBFBD><02><03>1@<40><>)m<>:@P<>\0<EFBFBD>1\n<EFBFBD>(CR<>5D(<07><><EFBFBD>P<>1# <1A>d7<64>+\n<18><>Bu<08><>ha<68>M a<>\0<EFBFBD>><10>1W<31><57><EFBFBD>\0a<EFBFBD><EFBFBD><EFBFBD>4 s<>-ׂ'<0E>jp<6A><70><EFBFBD>\nJmQ<6D><51><EFBFBD><EFBFBD>)<29>");}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><>A,I<><49>v4Ǣ<34>ꆌ<EFBFBD><EA868C>P-<2D>\nҸ<EFBFBD><0B><><EFBFBD>%>(<28><>c(P<17><><EFBFBD><EFBFBD>74c8X<13><>`X<10><><EFBFBD><EFBFBD>:\r<EFBFBD><EFBFBD><EFBFBD>3<EFBFBD><EFBFBD> <20>KIAHH<17><>s<EFBFBD>\"N<EFBFBD>8R<14>0HY5G<35>D<EFBFBD>W(<28><1B><><EFBFBD>3<EFBFBD><33><EFBFBD>Ut<55><74><EFBFBD> P<>9M<39><4D><EFBFBD><EFBFBD>Vd<>?<3F>4\rC<>P<EFBFBD><50>bؼ2*b<>3<EFBFBD>T`<60><>n<>VM<56>sb<1E><>0]pG<70>%n<>\\<EFBFBD>E<EFBFBD>]<0B><>8ߋ<38>h<EFBFBD>7<EFBFBD><37>E`<60><><1D>@PI<50><49>jV<><16>T<EFBFBD><54>z<EFBFBD>\rC+<2B><><0F>R8\r<EFBFBD>\0a<EFBFBD>Rؾ7<D8BE><37>0<EFBFBD><30><07><><EFBFBD>l_<6C>2dYAxPZA<5A><1D><>@y<><79>A<EFBFBD>R<15><>T <20>o<EFBFBD><6F>^CK~c<><63><EFBFBD><EFBFBD>⊰{}c<><63><EFBFBD><16>Z.<2E><><EFBFBD>~<1F>!<21>`<60><><EFBFBD>@C<>.<2E><19><0E>ޒ.<2E><><EFBFBD><13><><EFBFBD><06><>y<><79>\n<0C>l<12><>9wt\\C\$pըp<D5A8><EFBFBD>8<0C>/<04>媤eyn_<6E><5F><19><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>H<14>!fwZ<19><>%h<0E><><EFBFBD><EFBFBD>c5~[<5B>H{\$<EFBFBD><EFBFBD>\n<EFBFBD><EFBFBD>\r!<21><>4<EFBFBD><34>n<EFBFBD><6E><EFBFBD>n6͊<36>cH<63><48><EFBFBD><EFBFBD>J.6<>|`ӛ<>;.<2E>ް[<5B><><EFBFBD><EFBFBD>p<EFBFBD><70><EFBFBD><EFBFBD><EFBFBD>W<EFBFBD>ݪ<EFBFBD><DDAA>><3E><>\\<EFBFBD><EFBFBD><EFBFBD><EFBFBD>hW<EFBFBD><EFBFBD>Z<EFBFBD><EFBFBD><EFBFBD><EFBFBD>O<EFBFBD><EFBFBD>7P<><50><EFBFBD>xA<78>pUW<55>)<29><><EFBFBD><EFBFBD><EFBFBD><14>!<21>/<2F>p<EFBFBD>i<>[<5B><><EFBFBD><EFBFBD><EFBFBD>~<7E>X<EFBFBD>\nR<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\$<19>8?BE<42>y!c<><63>P<EFBFBD>C<><43><10>5.\nH<EFBFBD>]=<3D>y*\$<EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><EFBFBD><EFBFBD><02>t<EFBFBD>`<60><>5<EFBFBD><35>7a<>\r\0<EFBFBD>5<>j<EFBFBD><03>-g<><1F><><0C><><EFBFBD>\0<EFBFBD>ͤ#<23><02><>oA<><1E><><EFBFBD><02>\"p<07>;<3B><13>\nH<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>m!<21><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>dÙ<64>K<>>+d<64>=<05>p)<29>pP #<23>|<05><)<29>70<0B><><11>-<2D><><EFBFBD><EFBFBD><EFBFBD>(ek<65><6B>9H<><18>E<EFBFBD><45>9<><39><EFBFBD><0C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<2E><>N<EFBFBD>䔒<>J<1E> <20>hL>e<ۿ<04>C<>`K<><03>xVA<04><> <20>a<EFBFBD>P<EFBFBD>A9W<39>I<15>y<EFBFBD>4Wj<57>p<0B>W<EFBFBD><57><EFBFBD><1F>d<EFBFBD>ER<45>2<EFBFBD>ip#)<0B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>CD?<3F>r<EFBFBD>u<EFBFBD><75><EFBFBD>xs<78><73>|ϸ<>AX+?<3F><>l<EFBFBD><6C><H<03>&<04><18><06><><EFBFBD><0F>T#<23>|<7C>РQ<17>b <20>-\$<EFBFBD>}Ah<41>:t0<74>P<EFBFBD><50>D<EFBFBD>9!9Sm<1E><>H<EFBFBD>i\ro}<7D><><EFBFBD>ƪ<EFBFBD>P_<50>E<EFBFBD>a<EFBFBD><61>x<EFBFBD>f<EFBFBD><66>u<EFBFBD><75>{<EFBFBD>Ӳv<EFBFBD><EFBFBD><)<29>/#<23>QC*ܪ\0<EFBFBD>rNir<EFBFBD><EFBFBD>t<EFBFBD>GNo<>w><3E><><EFBFBD><EFBFBD><07>M<0B>Ӽ<EFBFBD><10> DJ<13><15>Cv`<60>`N<>a@]<5D>(<28>U <20><><EFBFBD>S5{<EFBFBD><EFBFBD>=<3D><><05><13>9N<04><><EFBFBD><EFBFBD>8z<38><7A>3<0E>^<<3C><> <09><><EFBFBD> <09><>X<EFBFBD>c<08>\n=@<40><13>s<EFBFBD>3&<26>ꚠ<EFBFBD>d<EFBFBD><64><EFBFBD><EFBFBD>Aj%\r<EFBFBD><EFBFBD>y\\{<#<23><> U<><55>g<EFBFBD>R`<60><>^<0B><>K4l<34><6C>!<21>t<><10><>{<07>\0<EFBFBD><EFBFBD>W<EFBFBD>&<1C><>|-<16><13><><EFBFBD>U<EFBFBD><55>/7yU<06><>C<><43><0C><><EFBFBD>X<><58>R<EFBFBD>6u<36>H<EFBFBD><48><EFBFBD>V<0F>u|I<>V<EFBFBD><56>\nq<鼇*p<><70>)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>&N<><4E>q<0E><>/<2F>Rل\nV <09>8<EFBFBD><38><EFBFBD><EFBFBD><08><><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD><;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>}_<><5F><EFBFBD><EFBFBD>ph\r<EFBFBD><EFBFBD><EFBFBD> ӊpt<18>9#%<<3C><03>2i<32>d3<64>R<EFBFBD><52>s<>\n<EFBFBD><EFBFBD><EFBFBD>kOf<07><><EFBFBD><0E><>9pA<70>\n<EFBFBD><EFBFBD><EFBFBD>9<EFBFBD> <20><><1D><> I<><49>Y<EFBFBD><59><1C><>C<0B>c,U<><55><EFBFBD>2<EFBFBD>^<5E>\0<EFBFBD>0\$<EFBFBD>N<EFBFBD><11>qsJ<73>+d<>*<2A>@1:u<><12><><EFBFBD><EFBFBD><EFBFBD><06><><13><>kΆ<6B>!<21>4;<3B>@z<>Z<EFBFBD><5A>&<26><>d\n3\$<EFBFBD><05><><EFBFBD>ݠC<DDA0>]<5D><><07><>Q<EFBFBD><51>BVwp<77>.K<>\\άԌ\$9<EFBFBD>i<2Zp:a<>`U<12><0E><><EFBFBD><EFBFBD>S<EFBFBD>3<><33><EFBFBD>|T!<21>&P<><50><10>,c=<3D><>0<EFBFBD>=<3D><><EFBFBD>N<10><><EFBFBD>d<EFBFBD>뛭6n<36>ZyiTTJ<54><4A>w<EFBFBD><77>eS<65>u<1C>'<27>n<>m틸I<ED8BB8>n\r;<3B><>ݔ<><DD94><EFBFBD>*)A<><41>i<EFBFBD><69><EFBFBD>1<>yQ<79>\r<EFBFBD>_8?<3F>՞<EFBFBD><03>7<EFBFBD>6<EFBFBD><36><EFBFBD><EFBFBD><EFBFBD>l1<6C>ǽ<EFBFBD><C7BD><EFBFBD><EFBFBD>{<EFBFBD><EFBFBD><03><><EFBFBD><EFBFBD><EFBFBD><12><>c<EFBFBD><63><EFBFBD><03>vr<76><72><EFBFBD><EFBFBD>{\\<EFBFBD><EFBFBD><EFBFBD>.<2E>,ۼ<><EFBFBD>e<EFBFBD>v<EFBFBD><76>k<EFBFBD>ۛe<DB9B>~L<>^<5E><><EFBFBD>7<EFBFBD><37><EFBFBD><EFBFBD>\n<EFBFBD>@.s<19><><EFBFBD><EFBFBD>8t<15>}ɘ8<1D>C<>-<2D><>ѻ<EFBFBD>-<2D><>4<EFBFBD>I<EFBFBD>dO{s<EFBFBD>ջ8<EFBFBD><EFBFBD><EFBFBD>[˵<>f<13>;}Q<><51><EFBFBD><EFBFBD>s^ݹ<>Q<EFBFBD>2[<5B>(@<40>\nL\n<EFBFBD>)<07><><14>(A<>a<EFBFBD>\" <20><03><> <09>&<26>P<EFBFBD><14>@O\n師0<>(M&<1E><>}<7D>'<27>! <20>0<EFBFBD>{6<EFBFBD><EFBFBD><EFBFBD>}<7D><><EFBFBD>k<EFBFBD>ʘ@;<3B>px6<78><36>zg<08>|+<2B><><EFBFBD><EFBFBD>D<EFBFBD><44><01><>+<2B><>Ϥ<EFBFBD>yJ<79><4A>L#<23>}<7D><><EFBFBD>~<7E><01>*/}<7D><><EFBFBD><EFBFBD>4<EFBFBD><34><EFBFBD>|<7C>Aw<41><77><EFBFBD><<1D><><17>wO<1A><0F><05><>X\0<EFBFBD><0C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>~<7E><><EFBFBD><EFBFBD>\r<EFBFBD>ڏ<EFBFBD>ޏ<EFBFBD><01><><EFBFBD><EFBFBD>Z<EFBFBD><5A><EFBFBD><EFBFBD>*<2A><>\n<EFBFBD>ϧ\0v<>0 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*<2A><><EFBFBD>/<2F>hD<68>?O<>\rn<EFBFBD><EFBFBD><EFBFBD>B<EFBFBD>PF<EFBFBD>o<EFBFBD><EFBFBD><EFBFBD><EFBFBD>0\\<EFBFBD>`<60>0f<30><66>k<01><><EFBFBD><EFBFBD>r<EFBFBD>O<EFBFBD>H<>p<EFBFBD><70><EFBFBD>h<EFBFBD><68>x<EFBFBD>pq<04><>P<D690><50>T<07>b<EFBFBD><62><EFBFBD><EFBFBD><EFBFBD>OP<>į<EFBFBD>8揢<38><E68FA2><EFBFBD>P<><50>O<1A>o<EFBFBD>.<2E><>0<EFBFBD>·\0<EFBFBD>\r<EFBFBD><EFBFBD> <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PE<08>K<0E><04><0C><>͙\rP)\r<EFBFBD><EFBFBD><EFBFBD>o<EFBFBD><05>T<EFBFBD><54>v <20>\r<EFBFBD>Dܯ<EFBFBD><11><>o<><6F><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD>A(XhC<68>L&<26><>\"h\r,<2C>N<0C>^qKkb<0B><><EFBFBD>\"<1C><> <07><0F>}qy<08>\"<EFBFBD><EFBFBD>R<EFBFBD>`<60><><EFBFBD>\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><06><><EFBFBD>n<EFBFBD>+<2B><><0F>\rn<EFBFBD><13><><EFBFBD>qH<0C>HL<48><4C><EFBFBD>\0V<EFBFBD>%<25><>F: ؎<><02><>\$\r<EFBFBD><EFBFBD><0E><>f鬶јj<D198>B<EFBFBD>m<05>Qm<>G\\<EFBFBD>蕱<><E895B1><EFBFBD>nk<6E><6B>%\"V<EFBFBD><EFBFBD>d<0C><>k<EFBFBD><6B>@<40> <20><><EFBFBD><EFBFBD>!2+6<><36>%<25><> <20>~<7E><0C><>Ğ%<03> r.<2E>R[<5B> 2?\"̹#\0<EFBFBD>Ԁw\$<EFBFBD>U%<0F>#!%<25>)\$<EFBFBD> \$L<EFBFBD>mA-W<><57>{@ܷ<><DCB7>#<23>_&<26><>x<06><><EFBFBD>]\$S'\0<EFBFBD>\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>g<EFBFBD>@m<><6D>0<>`d<>f<EFBFBD>`G&L\0<EFBFBD>':x<>jx<6A><78>*о<>D<EFBFBD>L<EFBFBD><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><1A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><>q<><1C><><EFBFBD>,&<26><12><><EFBFBD>l<04>Nt*<2A>\n<EFBFBD><EFBFBD> <20>%f(<28><><EFBFBD><EFBFBD>о<EFBFBD>kZ<6B> <09><><12>%i<>n\".<2E><>Ļ<EFBFBD>氮<EFBFBD>~\0<EFBFBD>U@<40><0E>d<0C><>4<EFBFBD><34>'r<>\rn#`<60><>2H<32> <20><>g<EFBFBD>6<EFBFBD>&<26><>v<07><><EFBFBD><EFBFBD><EFBFBD>'<27>\rr<EFBFBD><EFBFBD>S^<5E>\$<0B><>@<40><>Xf>k6<6B>r7`\\ <09>5<EFBFBD>V<EFBFBD>'W5<57><35>\rdTb@E<02><>2`P( B'<27><0B><><0F><>0<EFBFBD><30>/<2F><>w␑s<E29091><05><><EFBFBD>&r.SVsє9<D194>JJ<>x&<26>8<EFBFBD><38><EFBFBD><EFBFBD><EFBFBD><1D>v<EFBFBD><76>!`z4\$k<>\0<04><>x<13>7pI<70><49> өA<D3A9>9<0C>;<13><><EFBFBD><EFBFBD>\r<EFBFBD>~<0C><><EFBFBD>4<1A><>>~'<27>\nP<EFBFBD><EFBFBD>s0P<><50>QA+/7`WO<><04><>G1<47>Fp暴\n|<7C>\0P<>G<14>Gt<47>I\"T<EFBFBD>iG<69>O@<40><>F<EFBFBD>V~G荔2<E88D94>\$<EFBFBD><EFBFBD><EFBFBD>%<25><0F>96<39>,7L<37><4C><EFBFBD><EFBFBD>LSoL<6F>h<EFBFBD><68>P5ʼ<>У\0<EFBFBD><0C><><08>P<05><>\r<EFBFBD>\$=<02>%<16>nUjXU<58><55><EFBFBD>k<EFBFBD>ϋ<EFBFBD>N\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\r<EFBFBD><EFBFBD>)F<>*h<>@<40>k<EFBFBD>B<EFBFBD><42><EFBFBD>5\$<EFBFBD><EFBFBD>56Lbs|Mo8+8\"<EFBFBD>:<3A><>G4<47>ON<4F>S5<53><35>#j<>\"<EFBFBD><EFBFBD>Nn<0F><>c<EFBFBD>Jt<4A><74>T<EFBFBD>%(D<>U<08>S<EFBFBD>]M<>j\$TK`<60>5<EFBFBD><35>o@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><10><15>rYSNR1ER<45>\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>E<EFBFBD><EFBFBD>Xr<EFBFBD>NJ<EFBFBD>7<EFBFBD><18>b<EFBFBD><62>gTUx<55>M<1C>5<EFBFBD>*<2A>0r<30>:3<><33> <09><> <09>2i<32><69>1Q<31><51><EFBFBD>k<EFBFBD>F<EFBFBD><46><EFBFBD>0<><30>YZst<73>e<EFBFBD><65><EFBFBD><EFBFBD>c\n:oH<6F>FE<04><>xu<78><12><>#<23><>4<EFBFBD>S# \$<EFBFBD>t?<3F><>E(p<><70>(<04>R\"|eB<65>X<02><0F><>8 4<07>>\r/<2F><<3C>\0E,^<5E>D.<2E><>E{5<EFBFBD><EFBFBD>a<EFBFBD>܆*<2A><>\r<12><>Z<EFBFBD><06>g<EFBFBD>|<7C><>~<7E>\r:moc<6F><63>9<EFBFBD><39><EFBFBD>J<EFBFBD>v*<2A><><EFBFBD>B<EFBFBD><42>7rT<72>&<26><07>nlH<6C><0F><>PV<50>6<EFBFBD><36>mDw<44>)m<><6D>\r<EFBFBD><EFBFBD>CV<EFBFBD>w<EFBFBD><EFBFBD><EFBFBD>\$<12>u<EFBFBD>S<16><><EFBFBD>wS`AD<41><44>L<>S6q<36>k<EFBFBD><6B>)Jkl<6B>'L<>hB9h<39><68> Jimn<\0<EFBFBD> <20><<3C><>\0<EFBFBD>[<5B><>:\0<EFBFBD>K(<28><><EFBFBD>~<7E><><EFBFBD><07>s\0<0B>K̒<07><>Y'ʈg<CA88>a<EFBFBD><61>O<EFBFBD><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><05>]v<03>:<3A>&!`<60>P<EFBFBD><50>xV^w<><05><><EFBFBD>n<1A>Ĺ<1C><>7\0<EFBFBD>&<26>g|B\0(<28><><EFBFBD><EFBFBD>*,<2C><>ľ<EFBFBD>²d<C2B2><64>7⛬t<E29BAC><74>z<EFBFBD>w<EFBFBD>z<EFBFBD>\n<EFBFBD>E\",\0<EFBFBD>\"fb<66>\$B<EFBFBD>(<28>h(<28>4ժ5b?<3F>w<CE8D><77>q|@Ƙ+<2B><><EFBFBD><EFBFBD><EFBFBD><DEB6><0C>&Ɋ<>~Nⴎ<4E><E2B48E><EFBFBD>ח<>N6<u<7F>FxWQ<57><51>^<06>^<5E><1C><>;P.#/<2F><><EFBFBD><EFBFBD>|Wȃ8k.<2E><>/7K/w<>Ql<51>8<EFBFBD>~Qψ<51><CF88>\\1<EFBFBD>\\<EFBFBD><EFBFBD><1C>&\"ئWR<EFBFBD><EFBFBD><11>/<2F>)|<7C><>A5r<0C><>eE<>@<40><>k<EFBFBD><6B>\0O<0E><>wK&<02>f<EFBFBD><66>\"'Lm<4C><6D><EFBFBD><EFBFBD>l@<40><>ۄPZ<50><5A><05><><EFBFBD>7<EFBFBD><37><EFBFBD><EFBFBD>\r<EFBFBD>#<23>o<EFBFBD><6F>x<17>`]<5D><>b̄NzZ@<40>0NR<4E>,<2C><>x[P<><50><EFBFBD><EFBFBD>c<EFBFBD><63><10>8z<38>X<EFBFBD>\r<EFBFBD>?<3F><>Ǎ<EFBFBD>?<3F>9<16>2<EFBFBD>x<EFBFBD>}<7D>L<EFBFBD><4C>F'LP<4C>yzð\\ƙnjT<C78C><54> Ť<><0C>i<EFBFBD>N<04><18>ǀ<EFBFBD><C780><EFBFBD><EFBFBD>Tx%<25>xau<11>cw<63><77>#l,<2C><>\"<EFBFBD>P<EFBFBD><EFBFBD><EFBFBD>b<11>*<2A><><EFBFBD>g<EFBFBD>#Zud<75><64>,5\$<EFBFBD>D<EFBFBD><EFBFBD><EFBFBD>3]<5D>؛?<3F>h~<7E>0\n<EFBFBD>y<EFBFBD>N7<EFBFBD>b<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>z<03>\0<EFBFBD>a5q<EFBFBD><EFBFBD><EFBFBD>k<EFBFBD>p<EFBFBD><EFBFBD>v<0E><><EFBFBD><19>Q<EFBFBD><51><EFBFBD><EFBFBD>,D<>[<5B><>A\\E<>yK<79>yP#U<><55>Zk<5A><6B><EFBFBD>&)<29><>E<EFBFBD>9q<39><71><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\"<1E>7<><37><EFBFBD><EFBFBD><EFBFBD>!<21><><EFBFBD>[<5B><>Q<EFBFBD><51>Md۔<64>uQ<75>J#\$o<EFBFBD><EFBFBD>]<5D>jۥ<6A>g<EFBFBD><67>O<EFBFBD>\n<15>XD<58><44>6<EFBFBD>꣢<EFBFBD>e<EFBFBD><65><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD>Z<EFBFBD><5A><EFBFBD><EFBFBD><EFBFBD>:<3A><><EFBFBD>E<EFBFBD>:O<><4F>U<EFBFBD><55>b<EFBFBD>z]<5D>7s<37><73><EFBFBD><EFBFBD><EFBFBD>D<EFBFBD><44>c<EFBFBD><63>0<>`<60>?<3F><>\\<04>S{<08>y<><79><EFBFBD><EFBFBD><EFBFBD>S<EFBFBD>ih<69>z<EFBFBD>Ei<45>ij&<26><>e'<27>k<EFBFBD><6B><EFBFBD><17>X<17>y f6V-Z<><5A>WewŊ;G<>\$<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{S<EFBFBD><EFBFBD><EFBFBD>K<EFBFBD><EFBFBD><EFBFBD>7 <09>1n<31><6E>>@<40>iz<69><7A>z<EFBFBD>w<EFBFBD>9<EFBFBD><39><13><>{<EFBFBD>x;<3B><><0C>\0<EFBFBD><19><><EFBFBD>\nI<EFBFBD><EFBFBD><EFBFBD><EFBFBD><1C>yk<79><6B><EFBFBD>[<5B><><EFBFBD>7{<EFBFBD>8-~<7E><><EFBFBD>w<EFBFBD>,[lȌ<6C>@Ϸ<><10><>VԘ+<2B><1A><>Ӌ<><D38B><EFBFBD>ؿ<1C><><EFBFBD>j<01><>c<EFBFBD>ؤ<EFBFBD><D8A4><EFBFBD>\\qNJ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Y<EFBFBD><EFBFBD><07><>'<27><><13>z<EFBFBD><7A>Y<EFBFBD><59><EFBFBD>ݻ<EFBFBD><DDBB><10>˜<07><><EFBFBD>?a<>A<EFBFBD>:<3A>Q٭<04><><EFBFBD><EFBFBD>(<28><>} <20><>\n<EFBFBD><EFBFBD>y<EFBFBD>#S<>y\0<EFBFBD>[<5B><>?<3F><><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD>]<5D><><15><><11><>M<EFBFBD>y<>{ˣ<EFBFBD>9<EFBFBD><EFBFBD>=P<>ϫ<EFBFBD>O<EFBFBD><4F>Ls\\sWD<EFBFBD><EFBFBD>ػ<EFBFBD>˱<EFBFBD>|7<><37>jN-<2D>E<EFBFBD>˕+<2B>`u<>Ƽ<EFBFBD>\rM}<7D><>~<1B><><EFBFBD>I<EFBFBD><49><EFBFBD>~i<>ڴ<0F><><EFBFBD>|<7C><>lv<6C><76>}<7D>Y<EFBFBD><59>L1<4C>l>\r<EFBFBD><EFBFBD><EFBFBD><19><><EFBFBD><EFBFBD><EFBFBD>9<EFBFBD><39>,o<>Y<EFBFBD><59>9<EFBFBD>}<11><><EFBFBD><EFBFBD><EFBFBD>Sgg<><67><EFBFBD><0F><>銼<13><><EFBFBD><EFBFBD>:<3A><>u)<29><><EFBFBD>E<EFBFBD><45>̀C<CC80><43><EFBFBD>R%<25><><EFBFBD>~|<7C>~<7E>w<EFBFBD><77><EFBFBD><EFBFBD>0]<5D>|<7C><>\\<EFBFBD><EFBFBD>yϙ<79><CF99>y<0B>\\<EFBFBD><EFBFBD>ج7й<37><D0B9><EFBFBD>e<EFBFBD>,m<><6D>u<EFBFBD><19><>7<EFBFBD><07>(T],w<><77>θfU=<3D><><EFBFBD><EFBFBD>TRW6<57><<3C><><EFBFBD>Kֽ<4B><D6BD><EFBFBD>g<EFBFBD>;<3B><><EFBFBD><1C>||1<>\0Qy<EFBFBD>\"9<13>vb\$5<EFBFBD>mw<EFBFBD><EFBFBD>Ά<EFBFBD>o<EFBFBD><EFBFBD>\r\0xb<>kH<6B><48>|<7C>ɚ <20>Z\r<EFBFBD>h<EFBFBD><EFBFBD>Wʜ\\<EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD>.<2E><08>3U<33>\r˽ؘ\r<EFBFBD><EFBFBD><EFBFBD>>?2)<29><EFBFBD>/<2F><>=<3D><>5<EFBFBD><35>0@ƅH<>~<<3C>н<EFBFBD>x<EFBFBD><78><EFBFBD>_<EFBFBD><5F>/˾3<CBBE>~I+~l~<7E>H<EFBFBD>Y<EFBFBD><59>{<EFBFBD><15><><EFBFBD>Y<EFBFBD>^]<5D>^a<>e<>^h<><1E><>^r+>C<1D><><EFBFBD>bB<62>,<2C><><0C><>2/L<><15><><0E><><EFBFBD>R<EFBFBD>#m<>RKI<4B>K<EFBFBD>'픕E<ED9495>W<>1<EFBFBD>]F<>z<EFBFBD>_]<5D>T<7F><54>%4̔\0<EFBFBD>V=<3D>4<EFBFBD>;\$T<EFBFBD> <20>枍{<EFBFBD><16>?<17><><EFBFBD>לּԞ<EFACBC>3<><33>n\r<04>z <20><>X?c<>p<EFBFBD>\n?<3F>#<23><>a<EFBFBD>d<EFBFBD><EFBFBD><EEA4BA>X<EFBFBD>\n<15><>:z<><7A>-<2D>^X<>!<21><>`<60>:\0<EFBFBD><EFBFBD><EFBFBD>y,Dl<07><>J`<60><>A)h<>U<EFBFBD><55><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>+<2B><><EFBFBD><0F><><EFBFBD><EFBFBD>5+<2B><><EFBFBD><EFBFBD><EFBFBD>~_<><1D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><08><>+<<3C>b]<m5<6D>~'<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>]<5D><>')<29>ެ<EFBFBD><19>ܺ/<2F><08><>P<EFBFBD><50>r<EFBFBD><72>4<EFBFBD>o<EFBFBD>{<EFBFBD><EFBFBD>_<EFBFBD>ng<EFBFBD><EFBFBD>HF<EFBFBD>pBs<EFBFBD>H<>1)<10><02>b<><62><EFBFBD>b<EFBFBD><62><EFBFBD>?<3F>톼\"[<5B>C<<3C>U~<0<><0F>y<EFBFBD><79>:<3A>G<EFBFBD>@}脬z<E884AC><7A><EFBFBD>w)}<18><>[ꖞ<14><><EFBFBD><8<>&<26>X\"`<60>B<EFBFBD>Ww<57><77>{<EFBFBD><EFBFBD>k<EFBFBD><EFBFBD>U<EFBFBD><EFBFBD><16><01><><EFBFBD>.<02><><14><>E;<01>=<02>pQɢ<51><C9A2>R)t\0;<01><>Լ<1E><>*<2A><>J<EFBFBD>C^ <20>d<EFBFBD><64>,<2C>+d-<2D><08>~<07>*<2A><>xpn<70><6E>@<40><07>A<>?<3F>Qh{䄳'A5<41>P{dX<EFBFBD>`<60>H+<01><><EFBFBD>sS<73><53><EFBFBD>kX/<2F><>E(3=<3D>!00<30>4<EFBFBD><34>\rjł<EFBFBD>Za<1A><><EFBFBD><EFBFBD>><0C>m<EFBFBD><6D><EFBFBD>4<EFBFBD><06><><EFBFBD>?og3xƕ<78>JW\$<08>EQ<45><0C><19>^&<26><>\nQE<EFBFBD><EFBFBD><EFBFBD>h<EFBFBD><EFBFBD>j<EFBFBD><EFBFBD><EFBFBD><EFBFBD>qC<EFBFBD>N<><4E>Ơ,y<19><>H<EFBFBD><48><EFBFBD>β\$'@\n<02><><12>;\0\\]<5D>ϛв(<28>\n6ar<EFBFBD>ǩ<EFBFBD>u<EFBFBD>P<EFBFBD>/<2F>;P<>#q1<71><31><EFBFBD>\n<EFBFBD>PB.<2E>6<EFBFBD><36><EFBFBD><EFBFBD><EFBFBD>`\n<EFBFBD>Fٰ<08>͒W<CD92><57><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3db<64>ZU<5A><55>֜<EFBFBD><D69C>=<3D><><EFBFBD><EFBFBD><EFBFBD>x<1B>a<EFBFBD>@<40>=<3D><11><><EFBFBD>f<EFBFBD><66><EFBFBD>Z<EFBFBD><5A>;B<>k謀<6B><15><><EFBFBD><EFBFBD>mJ<6D><4A>N<EFBFBD>g<1D>^<5E><><05>p<EFBFBD>r<EFBFBD><72><EFBFBD><EFBFBD>ٲ<0B>(Ilc<6C><63><16><><14><><EFBFBD>p*<2A><><EFBFBD>A<EFBFBD><41>O<EFBFBD><1B>U<EFBFBD>7\\D<T<><54><EFBFBD>f+<2B>TH<54><15>Ϡ`<60>R<EFBFBD><19><><EFBFBD>Zq<5A>[`of\\<EFBFBD><EFBFBD><04>\"<03>πx<CF80>|E<><12>f<EFBFBD><66><1E><0C><><EFBFBD>ŰP/<2F>S\"<EFBFBD>_<06>8<EFBFBD>-C<>F<EFBFBD>]\"j<EFBFBD>h<EFBFBD><1B>F<>29<32><39>!E<><45><EFBFBD><EFBFBD>b[<5B><><EFBFBD><15><>E<EFBFBD>*<2A><><EFBFBD><03>M<EFBFBD>x<>\0<EFBFBD>`9<>DU_<55>t<><74><EFBFBD><EFBFBD>юq<D18E>^<5E><>(<28><><EFBFBD><1C><><EFBFBD>j!<19><><EFBFBD>tX<74>'<17><>E<EFBFBD>_ػ<5F>M<EFBFBD><11>Qd^b<><16>|<7C><>,<2C>{4\\M<EFBFBD><EFBFBD>X<EFBFBD>Ff<>-<2D>kN`7,<2C><><02>BJG5<>&<18>*1L<31><4C>4 #<23><>-<2D><><14><><EFBFBD>`'\n<EFBFBD>L?\0)<29>|<0C>r X<><02><>|<7C><><07>e\nJ9@ʬ<><08>ȥ<EFBFBD>6q<36>X\"<EFBFBD>qE<71> Pm<50>¢N<C2A2><17>Җ7<>} <09><><I\n<EFBFBD>A<EFBFBD>͌j<EFBFBD><EFBFBD>u<18><><EFBFBD>L+F<><02>'<27><>CZ<43>d&Rn<>cI<15><10>l<0C>\$<EFBFBD><EFBFBD><08><>\"<EFBFBD>)|7<>4hCvcs<1A><18>}<13>s<EFBFBD><73><EFBFBD>G0~#f<><66>e<03>B<1B><07><><11>.<2E><>r<EFBFBD>O!<]/<2F>d<05><><EFBFBD>[A\$<EFBFBD><13>)<0B>J<EFBFBD>P<EFBFBD><50><EFBFBD>\0Y%<25><>F`&B<><0B><><EFBFBD>vM<76>II<49>P<EFBFBD>*7<><0B>2<1E><>&l<02><>Xo<>.\0<EFBFBD>KZ<><0C>Bq&<J<07>p <09><>e<12>i;\r<10><>0<EFBFBD><30>PB<50><05>H<EFBFBD><48>M<EFBFBD><4D><1C>L<EFBFBD><4C>İ=<3D>T<EFBFBD><54>X<01><>c1&y-I<>6fN<66>|<7C><><EFBFBD>&yR<79>n0r<30> <09><>%V<><56><EFBFBD><EFBFBD>RKR<4B>d<EFBFBD><0B>H<EFBFBD><48> <20><>A<><1D><>Y\n<EFBFBD><EFBFBD><Jĺ<4A><C4BA><EFBFBD>L<EFBFBD><4C><EFBFBD><10>'<27>~V \"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>l!d<><64>'<27>`<60><>q<EFBFBD><71><02><1B>>Iit3:Lɲ\\s%<25>ͪ<EFBFBD>E@HC<48><43><EFBFBD><EFBFBD><01>\nf\"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ 1<07>1 l<0B>n͆<1C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/X\\<EFBFBD>DK <04>^-<2D>n<EFBFBD>|<04>\"<EFBFBD>\n<EFBFBD><EFBFBD>8@<40>{<EFBFBD>)P<02><13>(P(<1E><>s f y0<18><>M<EFBFBD><4D>@<40>\0&b<>QX<17>]3 <09>8<><38><EFBFBD><<3C><>#11<<3C>.b<><18><><EFBFBD>f*p'<<3C>4<><14><>)1<>\0<EFBFBD><13>)<29><>n<EFBFBD>~cȁT<08>S<EFBFBD><53><13>tI<>11<07>(\0<EFBFBD>P,<2C><>d\"=<3D><>@<40>6<EFBFBD><36>\0<EFBFBD><13>w\\<EFBFBD>fzY<>L<EFBFBD>n(<28><><EFBFBD>O}5 <09><><07>W=<3D><><EFBFBD><EFBFBD>2Y<32>͖e@Ol܀<6C>7I<37>N<10><>mX\0<EFBFBD><04><>N:n<><6E><01>B<EFBFBD><04>\0<EFBFBD>k<EFBFBD>|<02><14>,p>Nxn<>xh<78><68>5<EFBFBD><35>Θ <09>G<EFBFBD>d'<27><>3<EFBFBD><33>M<EFBFBD>S\$H<14><>1i<31>N<EFBFBD>0<EFBFBD><30><EFBFBD>݀8<7F><38>Mv<>ĝ\0P<EFBFBD>\\<02><>NH<4E>\0|9<><39>@\0!d<0F>H<15>NɥL<C9A5>\nS؞<EFBFBD><EFBFBD><04>*MQu<>@&<26>7i<37>8<38><13>)1\0#Ljr<6A>3\\<EFBFBD><EFBFBD>9HK<48><4B>d<EFBFBD>?<3F>hg<>: <09>Ozvs<76><02><><EFBFBD><EFBFBD><07><>O<EFBFBD>|\0F4<><34><EFBFBD>><3E><>ϾpS<70>|<7C><><EFBFBD><*LBw)<29><><<3C><>?9<><39>@ 3<><02><04>+7<>ϲes<65><73><0C>\0@<40><>Ђy<D082>\$<EFBFBD><EFBFBD>\n(#B<>'<27>R<EFBFBD>ӫ<EFBFBD><D3AB><0C>5Ci<43>Р4:<3A><08><>C<EFBFBD> о}4D<34><44><EFBFBD>(i<j<1F>P<07>Q<EFBFBD><51><EFBFBD>\0AD<EFBFBD><EFBFBD><EFBFBD>f<EFBFBD><EFBFBD>%<25><><0B><>><3E><>L<EFBFBD><4C><EFBFBD>4<18>T<EFBFBD><14>@<40>I<EFBFBD>O<EFBFBD><4F>X<EFBFBD><58><EFBFBD>X <20>(<28>&l<>')}\$<1C>eI<65>f<EFBFBD>N_% <20>4<EFBFBD><34>i<EFBFBD>\\<EFBFBD><EFBFBD><EFBFBD>Uh<>C<04>=D<>u<EFBFBD><75><EFBFBD><EFBFBD><EFBFBD>'@<17><>v<EFBFBD><76>8dB<64>-%(<28>T<EFBFBD>%<25>7<EFBFBD><37>㖨<EFBFBD>f\n<EFBFBD>X\0m<EFBFBD><EFBFBD>@C<><1E>0<EFBFBD><30>I<EFBFBD><49>\rɽ<EFBFBD>w<<3C>Q<EFBFBD><51>hS0<>9@<40><03>I,t<>')˦\0J7<4A><37>\r<EFBFBD><1F><>\0<EFBFBD>!<21><>ƷW1\0<EFBFBD><EFBFBD><06>~<01>_<EFBFBD><5F>\r<EFBFBD>2\nf܊<><DC8A><EFBFBD><08>@QK<51>9\r<EFBFBD><EFBFBD><EFBFBD>\rXi{/<2F>~<7E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2Z_<16><><EFBFBD><EFBFBD><0E><><EFBFBD>2'*o<><6F><EFBFBD><EFBFBD> Uس<55><D8B3>\0<EFBFBD>{<EFBFBD>e(\$<11><><EFBFBD>i<EFBFBD>M<EFBFBD>4T4<54>4<EFBFBD><34>}6)<29><05><><EFBFBD><EFBFBD>mV}A<>3Q\0<1E><>l<EFBFBD><6C>/=@QZ<51>:<3A>k<EFBFBD>N<><4E><EFBFBD>|Q<><51>&<26><>4J<34><4A><EFBFBD>R*iSP<53><1F>5<><35><EFBFBD>\n<EFBFBD><1D><>t@<40><><1A><>_<>)<29><>QI<51>MXo<58>ޠ<EFBFBD>k19B7<>=<3D><13><03><>\0<EFBFBD>ɷ̆l<CC86>|<7C><><13><>[aa<61>.<2E>Ԩ<EFBFBD><D4A8>\n\0<EFBFBD>49<EFBFBD>Βv@G<><47><EFBFBD><EFBFBD>PO'<27>ZH<5A>X'VZ@T<><54>n<><6E><EFBFBD>g<EFBFBD>7<EFBFBD>><1E>l3c<33>D<EFBFBD><44><EFBFBD>XZ<58><5A>fj<66>Y<EFBFBD><59>_<EFBFBD>mX)ʀ<>zG<7A><47><EFBFBD><02><><04>\"P2|\0N<03>j<>X<1A><><EFBFBD><05><11>{<EFBFBD>\0<EFBFBD>0d<EFBFBD><EFBFBD>Tl<EFBFBD><01> \nq;<3B>߁:bS<62><53><EFBFBD><EFBFBD>hfy<><79><EFBFBD>)<29>Q+jSCQ<43><51><0E><>yS<79><53><1C><>0<EFBFBD>H<EFBFBD>q<EFBFBD>` <1C><>`<60>F<EFBFBD><46>l<EFBFBD>pT+<2B>y<><79>r<EFBFBD>jZ<0F>K<>c<EFBFBD><02><><EFBFBD>WmA<6D>:<3A><>y<01>5<EFBFBD>\0P&<26><02><><EFBFBD>zW<7A><57>Z<EFBFBD>)D<1F> T<>vD<76>V<EFBFBD><EFBFBD>3V<33><56><EFBFBD>F<EFBFBD>ȭ<EFBFBD>Rj֭<6A><05>p<EFBFBD>v<08>5<EFBFBD>)<29><><EFBFBD>'X&@.<2E><>C@<40>`<60>pT<><54>lSw_<77><5F> <09><>#<23><1A>:!/<01>5<EFBFBD>rr<72><72>r<><72>;<3B>F<EFBFBD>&<06>M@<40>\\C\0\"<EFBFBD>\$<EFBFBD><0C>(T<03>X+<1F><><EFBFBD>\$t+<2B>r<EFBFBD><72>84Xf<58><66>I<03><><EFBFBD><EFBFBD>d<EFBFBD>#&<26><>cI<63>P<EFBFBD><50>Z<EFBFBD><5A><EFBFBD><EFBFBD>l<EFBFBD>̱(l<><6C>Z<EFBFBD><5A><EFBFBD><EFBFBD><EFBFBD>6^<5E><><02><16>3<><33><EFBFBD>|<7C><>s<EFBFBD>\\<EFBFBD>=<3D><>E<05><>r<07><05><><1F><>3<EFBFBD><33><EFBFBD>w+<2B>(<28>,<2C> <20>c<EFBFBD><1E><><EFBFBD><EFBFBD>^<5E>|<7C>:`<60>h[<5B>Uah<61>t<08><05>Z<EFBFBD><5A><EFBFBD>Զ<EFBFBD>O;<3B><>qy<71>v<>\\<02><>A^<12><><EFBFBD><EFBFBD>x!<21>j2VդմE<D5B4><45>d<EFBFBD>0<EFBFBD>ر<EFBFBD>ְ4H<0F><><EFBFBD><EFBFBD>Y<>Hz <20><08>0+<2B><08><16>Rj<1C><><EFBFBD><1A><>f_k<5F><6B><EFBFBD><EFBFBD>AJ<41>j<><6A>[<5B><>,U\\jX<01>X<EFBFBD>=<3D><><EFBFBD>ZDw5uˤ<75><CBA4>՟n<D59F> %'<27><1E>}<7D>&<26>p&<26> )<0E><><EFBFBD><18>q<EFBFBD>X<EFBFBD><58>\0+_9<5F>C)<29>Iۊ)<29>R<EFBFBD><1B>짇`ĵ<><C4B5>@<40><>/!+UAf<41><06><><EFBFBD><EFBFBD>\0R<03>=<06>A<EFBFBD><41><EFBFBD>%<25>r3{<1A>\0`%z0<7A><30>\$<EFBFBD>>Ѹ<><D1B8>=<3D>h<EFBFBD><68>]/<2F>6<EFBFBD><01><><EFBFBD>4\0i<>_2<5F>U<EFBFBD><55><EFBFBD>e<EFBFBD><65><13>;:J<>Nu<4E>V|<7C>@<40> <09><><EFBFBD>G<>hU<68>=Qh'<27>(T>,<2C>n<EFBFBD>?#<23><>ts<74><73><EFBFBD>f<EFBFBD><66>=c<>Vvu`<60>U'X)<29>M<EFBFBD><4D><EFBFBD>Q<EFBFBD><51>p<EFBFBD>p7פ!a<><61>J<EFBFBD>l<EFBFBD>0@ZF<5A>E<EFBFBD><45>=ClJd<4A><64><EFBFBD><EFBFBD><EFBFBD><05><>uAJ<>tȪp<C8AA><11>0<1A><>W<><57>Uw<55><77><05>Ɓ<EFBFBD><C681><EFBFBD><EFBFBD>Fa\ni<EFBFBD>ݻX<><58>J*<2A><><EFBFBD>o*6<><36><EFBFBD><EFBFBD>k<EFBFBD>8<0E>N<EFBFBD><4E>[*<2A>/<06>u<06>MCUMaJ<61><EFBFBD>V!<21><><EFBFBD>U<EFBFBD>!+<2B>Ŭ<0F>p<EFBFBD>xh<><10><@B<><01><><EFBFBD><EFBFBD>] ;<3B><><EFBFBD> <02>u<EFBFBD><75><EFBFBD><EFBFBD>_2<5F>R<EFBFBD>L<><4C><EFBFBD>:<3A>߈ <09>4<1D>.f1<><31>@b<>%\0<EFBFBD><EFBFBD><EFBFBD>!{<EFBFBD>=Mۿ<4D>|<04><>`<60>x<> \nтo<EFBFBD>!p)_<>t<EFBFBD>Ⱦ<EFBFBD><C8BE><EFBFBD><EFBFBD>#<23><>p<EFBFBD>a<EFBFBD><61><EFBFBD><EFBFBD>i\\<EFBFBD><EFBFBD><EFBFBD>3D<EFBFBD><EFBFBD><14>.<05><>Y<F1B69581>2<EFBFBD>x<EFBFBD>F<EFBFBD>g<EFBFBD>넞<EFBFBD>8'(<28>0BJ<01><>@b<>Z<EFBFBD>n p\"Ee9<EFBFBD><EFBFBD><EFBFBD><02><>J<EFBFBD>0X3<58><33><13>b<EFBFBD>\r; <20>S<EFBFBD>1[y<>=(73<37><33> Ñ<><C391>2<EFBFBD><32><EFBFBD><EFBFBD>*<2A><>l0<6C><30>!V<>lr<>Z@<<3C><><EFBFBD><EFBFBD><EFBFBD>T<EFBFBD><EFBFBD>Km<4B><15>XiF\nU<EFBFBD><EFBFBD>?fT<66>\$i8GS)L\$<EFBFBD>8B<38>iD!\\B#<4aT<61><54><EFBFBD>+<2B>@<40>-<13>7\\<EFBFBD><EFBFBD>x6<EFBFBD>p<1B><><EFBFBD><EFBFBD>?<3F>\r<EFBFBD><EFBFBD>N/黰<>%L+`<60>h<EFBFBD>t<EFBFBD><74><W<>><3E><>{<EFBFBD><EFBFBD>~(@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>R<EFBFBD><52>06ǞP+<2B><>{Esö\$<EFBFBD>*<2A><02>b<EFBFBD> <09>&<15>#<23><><EFBFBD><EFBFBD>[X̯<58><CCAF><EFBFBD><EFBFBD>&<26><><EFBFBD><EFBFBD><EFBFBD>b<EFBFBD><62><EFBFBD>n<03><><EFBFBD>S<EFBFBD><53>U<EFBFBD><55><15>l<1D>,0G~<7E>}<7D><>cUf'dCs<m\r;<17><<3C><><0C>*4<><34><EFBFBD><EFBFBD><01><>~<7E>ljoam4<6D>]/<2F>0<><03>2c<32>Fxw<03>H;R<><1E><>qﵾ& kX<05>?AIƠ<1C>\"><0C><><EFBFBD><EFBFBD>x<EFBFBD>?<3F><>,P<><50>b<EFBFBD>iū<02>)c<\\+<2B>+<2B>^n3<6E>ő<EFBFBD><C591><EFBFBD>|N'!+PG<50>N5<4E><35>T<><54><05><>BK<><4B><EFBFBD><01>!<21>1\":<3A>2bP<62>,<2C><>Fy*<12><>NÓ<a[&<26>3<EFBFBD><33><0E>t閇7<E99687><37>\$\\<EFBFBD>qߔ 2ecIn<49>T<EFBFBD>y<EFBFBD>2<EFBFBD>c_ @\nu<>p <20><>x<EFBFBD><78>+<2B><>X<EFBFBD>Uq<55><71><<3C>A.<2E><>Kʕ<4B>ʎ!2<>?<3F>8<05>fr˗8<CB97><07>\r8(<28><>p^<5E>!<21><><EFBFBD><EFBFBD><03>!<21>Y<EFBFBD>=q><3E><>\r<EFBFBD>v-πٗ<CF80><D997> <09>1<EFBFBD><31>g<EFBFBD>f,<2C><EFBFBD>[<5B><>,e'ZX:2\\H<EFBFBD><EFBFBD><03><><EFBFBD><EFBFBD><EFBFBD>y<<07>1)[α<>;<11><>D|#<23><><EFBFBD>H@<40><><EFBFBD><EFBFBD>LS<>3<EFBFBD><33>>;<3B><>]2X<32>vj<76>.GE<47>Bi+d<>%<25><><EFBFBD>,Qr%Ц¶*<2A><>I<EFBFBD><06><><EFBFBD>5`<60>t<0F>-<2D>s<EFBFBD><73>b<EFBFBD>8E<38>۾<EFBFBD><1B><>e\0=<3D><>2<><32>/<2F><03><>Yq9-eZ<65><5A><EFBFBD>1\\<EFBFBD><EFBFBD><EFBFBD>^<19>U<EFBFBD><1B><><EFBFBD>`&g<>WJ<57><4A>Y<1A>hK]8W@;<3B>p<EFBFBD><70>#<23><><EFBFBD><EFBFBD>#B<>ynqĕ<71><C495>\$u<EFBFBD><EFBFBD><03>Y<EFBFBD><59><EFBFBD>!<21>\$<EFBFBD><EFBFBD><EFBFBD>)(rX@/+<2B>L8<>O^<5E>ʔp6,<2C><><EFBFBD>Ѱw<D1B0><%MS<>S=Z%<25><>W<EFBFBD><10><>\r<EFBFBD>\nHy/<2F>2+e<14><>1<EFBFBD>E<EFBFBD><45>ɣ\\<EFBFBD>Uw (p\n-<2D><1F><>I<EFBFBD><49>S<EFBFBD><53>E<EFBFBD><45>ZiI@1 <09><18><><EFBFBD>`<60><06>\$<EFBFBD>44<><34><EFBFBD><EFBFBD>8<><19>>\0<EFBFBD><07><>i<EFBFBD>M<EFBFBD><4D>ӈ4<><07>Q<EFBFBD><51>j<EFBFBD>Y<EFBFBD><59>y<EFBFBD>p#<23>x<0E>`<60><><EFBFBD><03><>m'<27><>Zڂ6<><05>za<7A><61>S<EFBFBD>i<03>&<26><><EFBFBD>ʒR<CA92>>z<>\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>{Ti<EFBFBD>P:<3A><><EFBFBD><EFBFBD><EFBFBD>j<02>Zj<5A>T<EFBFBD>t<EFBFBD>R<17><><EFBFBD>@:<10><><EFBFBD><EFBFBD>ޭ5<DEAD><35>h<EFBFBD>j{\r<EFBFBD>f<EFBFBD><EFBFBD>r<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\"<EFBFBD>x<EFBFBD><EFBFBD>|<7C>cx<63>?<3F>r<EFBFBD><72><EFBFBD>k<EFBFBD><6B>p<EFBFBD><70><EFBFBD>.<1B>r<EFBFBD><72>>tq<74>C<><43><EFBFBD> k5h<35><68>a<EFBFBD><61>\n<EFBFBD><EFBFBD><EFBFBD>U:y<><79><15><><EFBFBD><EFBFBD>xW8<57>k<EFBFBD><6B><EFBFBD>)3<>!ҋk<D28B>^<5E>t<EFBFBD>}<7D><><1A>-x5<78>^<08><10>B(q@<40><>Qd]ƴCr<43>\"kw[&<06><>u<EFBFBD>s<EFBFBD><73>W:<3A>ꕝN<EA959D>@<40><04><><01>d<EFBFBD><64><03><14><>=<3D><><EFBFBD>+Z9<5A><39>N<EFBFBD><4E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<1A><>m<EFBFBD><6D><EFBFBD>{-%><3E>H<EFBFBD><48><03><><EFBFBD>R0*<2A>7K/<~<18><03><><EFBFBD>,js<0E><><EFBFBD>n<07><>P\09.<2E>͵<1B><><EFBFBD><EFBFBD>Sj\n<EFBFBD><EFBFBD>74<EFBFBD>ݱ,<2C>\$;E<><12><><17>-<2D><><EFBFBD>m<EFBFBD>\0*Ȼv<C8BB><06>7<>c;u&v<>ֲ<EFBFBD>37<33>ء<EFBFBD>y(<10><>t<06><>n;J<><4A><EFBFBD>A<EFBFBD><41><EFBFBD><04>G4<47>hf<><66><EFBFBD><EFBFBD>R<EFBFBD><52>@5<>)V{[<03>Y<EFBFBD><59>m<EFBFBD>b<EFBFBD><62><EFBFBD><EFBFBD><EFBFBD>6<EFBFBD><36>1<EFBFBD><31>p<>J<EFBFBD>6<EFBFBD><36><1B><><EFBFBD><EFBFBD><EFBFBD>;[<5B>.<2E>Ŋ[r<><72><EFBFBD>b9<62>V<><56>0<1D><><EFBFBD><EFBFBD>\rw݀<77><DD80>C<EFBFBD><43><EFBFBD>w<13><><EFBFBD>VT<1C><1F>&=<3D>,<2C>h<EFBFBD><68>zH<7A><07>)<29><><07>8<EFBFBD><38><1B>E<EFBFBD>sI<73>t<@e+0y<30><79><EFBFBD>nj<6E>T<EFBFBD><54><EFBFBD>Ʈ<EFBFBD>w<EFBFBD><77>~<7E>d<EFBFBD>J<EFBFBD><4A>σ<><CF83>@<40>)c<17><>+h<><68>,<10><><EFBFBD><EFBFBD>ث8p<1E><13>L K<><4B>:Q<18>A<EFBFBD><41><EFBFBD><EFBFBD>og<6F><67><EFBFBD>1<1A>o<EFBFBD><6F><16><>?I<>Z.<>?<3F>=~<7E><><04><><EFBFBD>n<EFBFBD><6E><EFBFBD><EFBFBD>kF<6B>!n%/<2F>E<EFBFBD>t0'̔<0F>P<Ƶ<>G<EFBFBD>qP䴓F<E4B493><46>xA<78>q<EFBFBD><12><><EFBFBD><EFBFBD>⃫vn<76>`,<2C><>cW<63>{<EFBFBD>9K<><4B>߇{|<7C>+s<><<3C><><EFBFBD>4Z+צ<>6<07>P<EFBFBD><50>PL<12><><EFBFBD><05><><EFBFBD>(L=<3D>ծ<><D5AE>jf<6A>h<07><>>)<29>A<EFBFBD>혠<EFBFBD>q<EFBFBD><71>pK̆<02><><EFBFBD><EFBFBD><EFBFBD>Ҡ<EFBFBD>~<7E>6d0<11><><EFBFBD>Y<1E>#y<>}<7D>tO<74><1D><>R<EFBFBD><52>CS<43>_<EFBFBD>燜<1F><><EFBFBD>|bHw<><77>s<13>O%U<><55>w<EFBFBD>p<EFBFBD><70>N<4E><F2888D9C><EFBFBD>Y]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U\"rM<>t<EFBFBD><74><EFBFBD>\0jxoW<EFBFBD>D<EFBFBD><13><>[[<5B>M<0B> <20>y<EFBFBD><79>T<EFBFBD><54><EFBFBD>8<04><>@<40>9<EFBFBD><06>h<><68><EFBFBD><EFBFBD><EFBFBD>!<21><><EFBFBD><EFBFBD>̋r`<60><><EFBFBD><10>\\/<2F>4<EFBFBD>u{<EFBFBD>d<EFBFBD>8Sǡ<53>sb<73>\"<EFBFBD> <20><><07><>i<>;<3B><>ji<>ǿ<EFBFBD>k<EFBFBD>j}v<>i<EFBFBD>74߽<34>J<EFBFBD><4A>9=54<35>0'<27>?<3F><><EFBFBD>(<28>7<EFBFBD><1C>qg<7F><67><EFBFBD> t <09><15>_<EFBFBD><5F><EFBFBD><EFBFBD>[<15><18><1F><>z<EFBFBD>ӌ\\w<EFBFBD>_>s<1D><><EFBFBD>_<EFBFBD><5F><01><>g\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>V<EFBFBD>|\$<EFBFBD>p<EFBFBD><EFBFBD>-<2D><>Bs<42>X܇<58>.<02><><EFBFBD>;<3B><>3<EFBFBD><33><EFBFBD><EFBFBD>g<><67><EFBFBD>PCD<43><44><EFBFBD>Gy1<79><31><EFBFBD>j\0y=M˞;F<><46>m(<28>oD7y<37>k<EFBFBD><6B><EFBFBD><EFBFBD>b<EFBFBD>o<EFBFBD>=<16>!:<3A>.<08><>%C<>%<25><>t߿<74><DFBF><EFBFBD>Xm\$<EFBFBD><EFBFBD>6&<26>P<EFBFBD>bj<62><6A><01>T<06>u<EFBFBD>*<2A>Tx<54>\n<EFBFBD>d5<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Νt^d<>(S|<7C><><EFBFBD>-q<><16><><EFBFBD><EFBFBD><1E><01><>\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(tXYQ!H<>F<EFBFBD><46>k<EFBFBD><6B><1A><><EFBFBD>0t<30><74><EFBFBD><EFBFBD><EFBFBD>4H|<7C><>oNo<4E><6F>N<EFBFBD><4E>%<25>\\<EFBFBD><EFBFBD>w\"0<18><>Bq<42><71>\$[玙<><E78E99>f<EFBFBD>|q<><71><EFBFBD><EFBFBD>7~Ey<45><1D><><EFBFBD>X<07><><EFBFBD><EFBFBD>q<EFBFBD>ר>|<7C> Ob*<2A>\n<EFBFBD><EFBFBD><04>Im<49>c<EFBFBD>EЮ<45><D0AE>e<EFBFBD><65>6e<36><65><EFBFBD>v˟L<CB9F><4C><EFBFBD>nɩ<6E>Kxx~a<><61>ǜ<EFBFBD>f)9<>˟]F<>!<12>s<19>I<EFBFBD>iN<69>h~<7E><>Ӕ<EFBFBD><D394><EFBFBD>R<EFBFBD><52><EFBFBD><1E>.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>GF<47><46><10><><EFBFBD><EFBFBD>8<EFBFBD><38>/<2F>zdC<64>f<10>6-<2D>#g|<7C><><EFBFBD><EFBFBD>t<><EFBFBD>;<3B><><1D>4<EFBFBD>TV<54>)<29>kV<1F><><0E><><1B>/y<><79>C<EFBFBD><43><06><0C><18><>9<EFBFBD><03>07h@<40><><EFBFBD><EFBFBD>).Hq<48><71><12>E<EFBFBD><45><EFBFBD>N}<7D><>K<EFBFBD>+<2B><>Y<EFBFBD>r<EFBFBD>\nb3@<15><>K1 <20>)<29>l<EFBFBD>A˧<41>=#<23><>HiL<05><><EFBFBD>ʄ5<CA84>o<EFBFBD>A<EFBFBD><41><EFBFBD><EFBFBD><EFBFBD><07><>B>Y<>@\n1H<EFBFBD><EFBFBD><EFBFBD>!+<2B><>ȣs<C8A3>0<18>GH~^7<>ـ<EFBFBD><05><><EFBFBD>QrI<72>8<EFBFBD><38><EFBFBD>\0Ì<EFBFBD>`<60><>\nw<EFBFBD>=0A<30>y<EFBFBD>[Q<>8H<38><48><EFBFBD>O<EFBFBD><4F><17>g m<><6D><EFBFBD>#ʮukHB<48><42><EFBFBD><EFBFBD>#<23>o<EFBFBD>uf<75>oݐ<1B>k<EFBFBD><6B><EFBFBD><EFBFBD><EFBFBD>^!<21><>p{<EFBFBD>}<7D><><EFBFBD><EFBFBD><1E>4Iv<49><76><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?x{<EFBFBD><03><>CY<43>-<2D>ICמ<43><D79E><EFBFBD><EFBFBD>Ȓ>0<><30>l\r<1C><>\0<EFBFBD><EFBFBD>|Q<>1<EFBFBD><31>5L<>/<2F><><EFBFBD>j<EFBFBD><10>3;<3B>Lﴷ<1F>^<5E>{<1B>U<>n(}<7D><><EFBFBD><EFBFBD><7F>b<EFBFBD><62>W<><57>١<EFBFBD><D9A1>+<2B>><3E><>'<27><><EFBFBD><EFBFBD><1D>{WsC~qM;P<06><>R<EFBFBD>v̢<76>Ɗ<EFBFBD>:p<><70><EFBFBD>Q<EFBFBD><51><EFBFBD>G<02><> 7<><0C>a<12>;<3B><><EFBFBD><EFBFBD>_<>z<EFBFBD><7A><EFBFBD>)|<12><07><>:<08>g\0Y<1A>*<2A>/kė\n<EFBFBD><EFBFBD>>U<><55>0<EFBFBD>x<0E>H@<40>-=\"0H^U<><55>E+<2B>x+<2B><17>#<23>;<1F><><15>1<><31>k<EFBFBD>y<EFBFBD><1E><><EFBFBD><EFBFBD><EFBFBD>Th<54>:G<>&<26>-<2D>!qs<71>3^|<19><1F><>xW<78>-l<><6C><EFBFBD>!<><D7B8>F<><46>X<03><>t]<5D><>BXY;Q<>L<12><1E><><1E><><EFBFBD><EFBFBD>0cI<63>oj<6F><6A><EFBFBD>A<EFBFBD>Q<EFBFBD><51><05><><EFBFBD>L<EFBFBD><4C>GG<47><47><EFBFBD>%\$(wҹ<77>Eh<45>XK<58>a<EFBFBD><61><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD><6F>b<EFBFBD><62><EFBFBD><EFBFBD>5<EFBFBD><35><EFBFBD><EFBFBD><EFBFBD><16><><EFBFBD>sA<73><41><EFBFBD><EFBFBD>t/\r<EFBFBD>ݒ`<60>w<EFBFBD>7<MP<0B><>*yY<79>h>P<><50>r<EFBFBD><72>=zjW01<30>g<EFBFBD>dl<64>iD/<2F>}^V<>\"b<62><7F>><3E><08><><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD><58><EFBFBD>Rn<6E><7F><1F><><EFBFBD>r<EFBFBD>.0<19><><EFBFBD><EFBFBD><EFBFBD>̙9@<40><><EFBFBD><0E> <20><><EFBFBD>ۮȷ<>;<3B>&<26>^<0F>2<06><>hYXh<58>(<28><1C><>b<EFBFBD><62>\0<EFBFBD><EFBFBD>/<2F>\0<EFBFBD>l<01>:0<><30>܂<>?<3F><><EFBFBD>t%<25>> <20><><EFBFBD>CG4@<40><><16>@<03>E<EFBFBD><<03><08><> <1E>h O<><1E>0K<30>\0<EFBFBD>@r<>[<5B>\"<EFBFBD><EFBFBD><EFBFBD>)<29>A<EFBFBD>oX<11>4<EFBFBD>z<EFBFBD> <20><>NR<4E><52>̃<EFBFBD>`<60><>j<EFBFBD><6A>k<EFBFBD><6B><11><>P<EFBFBD><50><EFBFBD><0E> <20>]O<07>l<12><><EFBFBD><EFBFBD>2\n<EFBFBD><EFBFBD><EFBFBD>*<2A>b<EFBFBD>5Dn<44><6E><EFBFBD><08>2<EFBFBD><32><EFBFBD>(<28>\$<0B><><)<29>Hac:<3A>ϋ<EFBFBD>/<2F>8<EFBFBD>i:<3A>n6:<3A>0;<3B><1<>LP\$ أ<>Y<EFBFBD><59><EFBFBD>\$<EFBFBD><EFBFBD><02><><0E>:0<0F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><1F><><0C><><EFBFBD>jI<6A>P<EFBFBD>\n<EFBFBD>rL!w<02><18><13><><10><>N\0<EFBFBD>>~/`4<>+\0<EFBFBD><EFBFBD><EFBFBD><<3C><12>^RX<52>U<EFBFBD>6<EFBFBD><36><15>:\0<EFBFBD><EFBFBD>bN<EFBFBD>莌*<2A>.<2E>N<EFBFBD><4E>pxp_<70><5F> 8\0Xo<EFBFBD>Kb蘖<EFBFBD>|<16>l\0Ɩ<EFBFBD><17><>)\0<EFBFBD><EFBFBD>P<EFBFBD><17><>:<pl<70>\n<EFBFBD>@<40>A<EFBFBD>SPP<50><50><0B>ƚ<>\\<0B><> A<><41>03\0006 <20><01>(<28>.<08><06><>pv<0E>}<7D><0E>9<EFBFBD>z<0F><><EFBFBD><02><><EFBFBD>@N\$ņ?5<>ㅟ<07>i+Av<41>8`<60><>y<07><> <20><><EFBFBD>\n;<3B> <20> <20><05>V<EFBFBD><17><>p<0B>߀<EFBFBD>\"<EFBFBD><EFBFBD>j<EFBFBD><EFBFBD><1A>E=<0B>x<>0d\$<EFBFBD>P<><50>V<EFBFBD> x<>X<><58><05><>g\\?\0ePaAJ/`<60>pS<70><53>LЙ<02> <09>(PYBq<07><>ОA<D09E>!.<2E>b<EFBFBD>Vs<56><73><10>\$<EFBFBD> |Pf%gzT<7A><54>A<EFBFBD><06><16>k<EFBFBD><6B><06>0l%.<2E><1C>l<EFBFBD>5I<><49>+<06>8I+<0E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>BH<03>*<2A>p<EFBFBD>Q\n<EFBFBD><EFBFBD>G^B<> rLPUB<55>q<><71>hB<68><42><EFBFBD><05>nB<42>,b<><62><EFBFBD>4<1C><><EFBFBD><EFBFBD>Y<>`<60><> |#`.B<><42><EFBFBD>.<2E><>B<EFBFBD><0B>\$<EFBFBD><EFBFBD><EFBFBD>6!<21>*<2A>s\$<EFBFBD><EFBFBD>#<<10>B%<08><><EFBFBD><EFBFBD><EFBFBD>Q<08>*<0B><>e <09>N<EFBFBD><4E><EFBFBD>rL<72><4C>\0<EFBFBD>N1!i+\0<EFBFBD><05>Ѥ<EFBFBD>\"<0B>60bCgaN<61><4E>\rPUCq<05>/P<>\$BNIB<49><42>,%#<23>-<2D>\r<EFBFBD>+e<><65>h&p<>º/d+<2B><><EFBFBD><EFBFBD>P<10>C-<10>B<EFBFBD>D;D<>C}<BB<1E><>:0<>Ï<05>\rP<EFBFBD>CP<><50><EFBFBD>Bi<06>1<EFBFBD><31><EFBFBD>r<EFBFBD><03><17> <09>'<27><><EFBFBD><EFBFBD><03>c[<5B><>\r?P<>*?<3F><>³<0E>+p<>A<EFBFBD>,1Q\0<EFBFBD>L@<40>qDh.<2E><><EFBFBD>Y<0F>P<><50><EFBFBD><0F><0B><><EFBFBD><EFBFBD>`0<>@<40><><10>6Q<16>b\n\r<EFBFBD>ޕ<EFBFBD>0<EFBFBD><1F>\r\$1<10><>@<40><><EFBFBD><EFBFBD><0B>=ĺB֔<42><D694> -<2D>t<03>X<EFBFBD><58>B<EFBFBD><06>C1<1E><12>,<1A>+BI<11><1A><><0C><10>%<25><><EFBFBD> <09><05>ֳ(<28><><EFBFBD>KT\0<EFBFBD><03>F@<40>/<2F>7X<05>\nD<EFBFBD><0E>`<17><><EFBFBD>`<05>[Ε<><CE95>p<EFBFBD>D<EFBFBD><0C>L<EFBFBD><4C>D<EFBFBD><03>Q\0\0<EFBFBD><01>N`3<>^<02>\n@<17><>%<25> 9<><39><EFBFBD><EFBFBD><EFBFBD><EFBFBD><11><>\0<EFBFBD><04><><EFBFBD>[<13> <20> <09>L<04><><EFBFBD><06>MA믤Q<EBAFA4>2Q8)<29><>HW<48>GD<47>b<>%\np<EFBFBD> <09>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<05>#<23>t<EFBFBD><74><EFBFBD><EFBFBD><EFBFBD>D<EFBFBD><44>HQq[<15>f<EFBFBD>]<5D>\\'(B<>@<40>^<5E>(CCv<43><76><01>V<EFBFBD>[Ř`(<05>^E<><15>Zc!<21>7<13>ÑE<08>*<2A>Y1mEu<16>Y<EFBFBD>_E<5F><16>\\`<60>E<EFBFBD>c,[1e<31><65><16>]<5D>`E<><16>\"䆬86 <20><>z<EFBFBD>q<17>]<5D>hŀx<>@<40><><13><02>OE<4F><45>\$O<EFBFBD>6<EFBFBD>}<16>Qq=<3D><><13><>!\nŐ<b<>:<3A>Q<18>c<EFBFBD><16>O<><4F><EFBFBD>'<18>b<EFBFBD><62>\n<18>T<EFBFBD><17>(|QqF<71><14>R`&E*1<>R<EFBFBD>!L^<5E>f<EFBFBD><66><15>`<60>`ņ<0B>c\0^H<>!<21><><EFBFBD>yg<>|F<>\r<EFBFBD>bF<EFBFBD><EFBFBD><EFBFBD>l<EFBFBD><Ɛ<03>cqeF<65><16>i<EFBFBD>pF<70><1A>hϖ\0<EFBFBD><1A>]Q<><51><1A>hqbƨ4O #\$=\$g<EFBFBD><EFBFBD>F<EFBFBD><16>k<EFBFBD><6B>F<EFBFBD>p.<2E><\0<EFBFBD><1B>k`<60><><16>n<EFBFBD><6E>Ʀ<EFBFBD><C6A6>O(J <20><1B>[q<>F<EFBFBD>j1<6A>F<EFBFBD>4<EFBFBD>\\(<28><><EFBFBD>3\\Tg<EFBFBD>D-<0E>T<EFBFBD>CA<43>+ \r<EFBFBD>7<EFBFBD><EFBFBD><EFBFBD>M<><17><>x<><78> \0Z R<>\0005<EFBFBD><EFBFBD>p\r1<EFBFBD>E\n<EFBFBD>V<EFBFBD>I<EFBFBD>(;R<04><>~[>`3<>6<EFBFBD><36>rp<72><0B> <09>%<25><13><>-<2D><>Ж\0<EFBFBD> dCñ<1D>(9<><14><><EFBFBD>A<13>x<14>@2<><32><03>!<10><><EFBFBD>*`\0002Dz~8S<38><53><EFBFBD><EFBFBD> P<07><>Aڏ<41>/ <20>#揩<>-<2D>8<13>1<EFBFBD><31>n<><6E>t<EFBFBD>*\0<EFBFBD>#O<><4F><EFBFBD>0=0 <09>'\0d<EFBFBD><EFBFBD> <09><>( x<08>G<> \$<EFBFBD><EFBFBD>\0<EFBFBD>H<><48>(<28>2<01>\n<EFBFBD><06>3<1F><>f<EFBFBD><05>n<EFBFBD><6E> 7<17>\ñ`7G<37>F@>H.<03>5 >?<3F><1C>B><3E><<03>z<EFBFBD>\$`<60><>>0<0E>R<EFBFBD><52>tY<74><59><EFBFBD><08><14>+ <20>F<EFBFBD><03>Q<51> <20>l@>\0<EFBFBD><EFBFBD>̅1<EFBFBD>0<EFBFBD><EFBFBD>\$V<EFBFBD>ƴK<>&\0<EFBFBD><EFBFBD><EFBFBD>@0<> <20>H<>>4<><03>o\0006<EFBFBD><EFBFBD><EFBFBD>q<><19>8<>1<EFBFBD>P=9<>\n<EFBFBD><EFBFBD><EFBFBD>1<EFBFBD>7<EFBFBD><EFBFBD>\0<EFBFBD><EFBFBD>D*<2A><<3C><><0C>#H<>\"1|<7C>#<23><>!K3<4B>=~=nm<6E>H<EFBFBD><02>,<0C><>#<23><>,{I#<23>t<EFBFBD><74><EFBFBD>~)<29> ֓\r b6<62>I<0E>!1g<31>E<EFBFBD>/<2F><>r<04>\$<EFBFBD><EFBFBD><EFBFBD><EFBFBD>)\0<0E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><12><08>6<19>̎'<27>0v3g@<40><>\\<18>@\0!<12> <20>3!4<><34><EFBFBD>HdL<64>f<EFBFBD>_<08><14>9r<18>,[<5B>x<EFBFBD>eb<0E>f <20>HHhpf1~<7E>D%,<2C><>a)<29>0<>֥<EFBFBD>%<<3C>N<EFBFBD><04><15>c<EFBFBD>><08>& K!K0<4B>-<2D><0F>;<14><>H0<48><30><EFBFBD>&<26>ଛ.<2E>|#<23><><EFBFBD>.<2E>@3<><33>!K<>\0002\0<EFBFBD>!<11>07<30>ʿ<EFBFBD>eJ9h<><68>\\=d<>T<EFBFBD><54>\\\0<EFBFBD>Q<>DI<44>d<02>\r(II 8<>Dr<44>Z~(;b<>J8<4A><38>C<11><>U!<21>RH<>\r<EFBFBD><EFBFBD> 3I<33><49>ė<EFBFBD>_<EFBFBD><03><>A<1E>N#<23>32<33><32><EFBFBD>1<>@<40><08>{<EFBFBD><EFBFBD>@<40>J+#<23>=R}<7D><>2<EFBFBD>-<2D>~H.<2E>!`:<3A><><EFBFBD>T<EFBFBD><54>^<5E>!K<><4B>)<29>Jл(\\<EFBFBD>-\"#<23><><EFBFBD>L0 <09>tʃ)d<>/!<14>r<14><>]8<><38>ы<EFBFBD>.SKҐ\0<EFBFBD>H\\wG<EFBFBD>:<3A>)<14>G<EFBFBD><47>ʘ<EFBFBD><CA98><EFBFBD><EFBFBD>5+<2B>N <09><><EFBFBD>N<EFBFBD>\r<EFBFBD><EFBFBD>J<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>t<>0&<26>(\n<EFBFBD>a<EFBFBD><EFBFBD>!I<>s<04>!!d<>1<EFBFBD><08>0<0F><><EFBFBD>D<10> 2:<3A>5<16><><EFBFBD><0E>3)<29>W<EFBFBD><57>J%<25><><EFBFBD><EFBFBD>:0<03><><EFBFBD>˂<EFBFBD>#Z*<2A>H<EFBFBD>-k<>״<>\r<EFBFBD>R<EFBFBD><EFBFBD><-|Z<><5A>2<>L<EFBFBD><4C><EFBFBD>\0<EFBFBD><EFBFBD>dx<EFBFBD><EFBFBD>K<EFBFBD>Aty2v<EFBFBD><EFBFBD>L<>A8<41>\0<EFBFBD>K<12><>3<EFBFBD>+\\<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{e<EFBFBD><EFBFBD><EFBFBD><EFBFBD>뼠<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!ֲ<><03><>\$<EFBFBD>g<EFBFBD>I<EFBFBD>.<2E><1F><05>O#<23><>)<29>><3E>\$g!P6KF<17>#<23>q\n<EFBFBD>W<EFBFBD>P2N<EFBFBD>zS{)|<7C>/'<10><><EFBFBD><EFBFBD><EFBFBD>(k<><6B><EFBFBD><EFBFBD><EFBFBD>fQ*<2A><>JdJ<64><4A><EFBFBD>><12><1D><><0E><>!0<>2<>\0<EFBFBD>0<EFBFBD>Rbr<EFBFBD><EFBFBD>4<EFBFBD><EFBFBD><EFBFBD>yJ<EFBFBD><EFBFBD><EFBFBD>\r <<02>^<5E>H@<40><><0E>S<05><><EFBFBD>d<><64>WlT<><54><08>\\<EFBFBD>T<EFBFBD><19><><EFBFBD>T<EFBFBD>F;q!<21>MC<4D>x!\$<EFBFBD><EFBFBD><EFBFBD>9<EFBFBD>_<0B>Ay?<18><08><>z<EFBFBD>2|<7C>I|<7C><>.<2E><>2<EFBFBD>)*c<>BR<42><52>+<2B><0E><><EFBFBD>2ԭ`K<>2<EFBFBD>\\R<EFBFBD>˛+<2B>B<EFBFBD>0˙L<><4C>4<EFBFBD><34>3d<33><64>)<29><><EFBFBD>(<28><11>G,<2C><>\"<EFBFBD>̈<08><>Ғ3x<33>S?L<>3<<3C>SAM.t<><74><EFBFBD>2<EFBFBD>.<2E><> !+<2B>%8!<21>J<EFBFBD>H<03><>@<40><>K%<25><><EFBFBD><EFBFBD><EFBFBD>4<><34><EFBFBD>A<EFBFBD><41>3<EFBFBD><33><EFBFBD>N<EFBFBD>*d<>,<2C>M4<>/ſ<10>Zc<5A><63>O1<4F>\r<EFBFBD>\0\0<EFBFBD>(<28><><EFBFBD><EFBFBD>M</<2F><><EFBFBD>Q<EFBFBD><51>5̭38J75<37><35>S_=<3D>5ܩA<DCA9>-<2D>0<EFBFBD>:)~HR<48>Qt<51>͑\0\rsdGsdL<64>.<2E><05><><EFBFBD>[6@<40><>5<EFBFBD><35>6<EFBFBD>2<>M<EFBFBD>̒<EFBFBD>-/<2F><> \0c<EFBFBD>L<EFBFBD>Φ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD><18><><EFBFBD>e<EFBFBD><65>7x<0C>q<03>\0003<EFBFBD>b<EFBFBD>4<EFBFBD><EFBFBD><EFBFBD>4`1.j<03><>@<40>H46\$W<EFBFBD>6\0<EFBFBD>\r<EFBFBD><EFBFBD><EFBFBD>i<EFBFBD>\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>y\0<EFBFBD>8h;<3B><>><3E><><EFBFBD>Q_<40?RH10<14>G<EFBFBD>(L<>fQ5/<2F><06>xX<01><05><10><>s<EFBFBD><73><EFBFBD>bL<62>`<<3C><>8{<EFBFBD>r<><72><EFBFBD>S<EFBFBD><53><EFBFBD>ɭ9@B<><42><02>8x6<78><36>'<27><0F>N\n<EFBFBD><EFBFBD>R<EFBFBD>Qf`<60><><EFBFBD>8|<7C><>\n'<27><>ԟ<EFBFBD><D49F>6T(2^A*/<2F>'0E<30>t<EFBFBD>*<03>x<EFBFBD>ɇ#d<>g<EFBFBD>H<EFBFBD><48><0C><>RH<52>(B<><42><EFBFBD><EFBFBD>U#`\n<EFBFBD>\$<EFBFBD><EFBFBD>c<EFBFBD><EFBFBD>\0(#<23>9<EFBFBD><39>2\r><3E><0E><><EFBFBD><EFBFBD>\n<EFBFBD>`Cr<43>K<EFBFBD>HP <20><><EFBFBD><EFBFBD><EFBFBD>eP7<50><37>\$<EFBFBD>8҆<EFBFBD>6<0E><><EFBFBD><EFBFBD><05>Y<EFBFBD>6<EFBFBD>|<7C>T<EFBFBD><54>h<EFBFBD><EFBFBD><15>RЄ,4s<34>NJ*<2A><> <20>K<EFBFBD><4B>)Ds<44>JV<4A>ԟ<EFBFBD><D49F>5<EFBFBD>\n<EFBFBD>MH?<3F>/|<7C>\0006@.L<>h<EFBFBD>˨<08>><3E><>Kv<4B>L<EFBFBD>\"!K(\n<EFBFBD><EFBFBD>I<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ov<02><>)I <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>v6Ü3<C39C><33><EFBFBD>>d<><64><04><>!<21><><EFBFBD><EFBFBD>O<EFBFBD><03>f/<2F>K<EFBFBD><4B><04><><EFBFBD>Lv<0C><><EFBFBD>0<EFBFBD> T<>\nؑ,<2C>,<2C><><EFBFBD><06>ܹ<>6<EFBFBD>M<1D>|<7C><>Od<08><>!'U=<3D>C/<2F>Jd*<2A>ǭ<EFBFBD>F<<1C>Ӹ<EFBFBD><D3B8>!H;<3B>ڂ;љA~<7E>^<aSe<53>2֘<32>=O<>1<EFBFBD> 9L{9<EFBFBD><0C>,:<3A>9<EFBFBD><0C>,<2C>7<1F><><03><13>-\0`<60>\0<EFBFBD>`<60> <18>u:1| <20>e1<65>V<EFBFBD>L#A<><41> <09>Ap\r<EFBFBD><1E><15>`<60><><EFBFBD>7)<29><>@<40><>,dġ<64><C4A1>{+<1B><><EFBFBD><EFBFBD><EFBFBD>5<EFBFBD>\0b<EFBFBD><EFBFBD>`<60><><13>Lh<4C>U\n<13>Цe\nS<EFBFBD>Ζ}<7D><>\0<EFBFBD><EFBFBD>JA<EFBFBD><EFBFBD>!2\0<EFBFBD>A,u\0006PKQ|3<>O PS<>68\0%@0ɦ\n<EFBFBD>L<EFBFBD><EFBFBD>5.ə <20><>\0',<2C><><<3C><>)@<40><><EFBFBD><EFBFBD>?(P5<50>J<1F><0B><>g<EFBFBD>I<EFBFBD>\rd<EFBFBD><EFBFBD>9\0<EFBFBD><EFBFBD>T̒<EFBFBD><06>)<29>B<EFBFBD>LA\$c<17>b)<29><>\r<EFBFBD><EFBFBD>X<EFBFBD><EFBFBD>C<EFBFBD>O<EFBFBD>(<28>\$<EFBFBD>N<0C>J<10><08>qHV `\"M<EFBFBD>8<>t<EFBFBD><74><EFBFBD>\r<EFBFBD>;0<>3|QC7<43><14>XLu1}3X:<3A>bO4]<5D><><10>U<EFBFBD><55>MaE<61>?T=<3D><>%0<>␂C!<21>T<EFBFBD><54>L<EFBFBD>H<EFBFBD><48>`<60><>*P<0C>8K<38>/\\<EFBFBD><01>K6{<EFBFBD>SY+<2B><0C><>͐<EFBFBD><CD90><EFBFBD><EFBFBD><EFBFBD>KQ6@6<>V͑<<3C>eI<65>P<EFBFBD>6CS<43>zO<14>\0<EFBFBD><EFBFBD>P<19>f<EFBFBD><66><EFBFBD><EFBFBD><19>><3E><><EFBFBD>80<38><30><EFBFBD><EFBFBD><EFBFBD>a<EFBFBD>\"gI,gmF<6D><46><EFBFBD>ᙔr<1C><>Id<49>|<7C>F<EFBFBD>R\$<19> <20>ȋH<C88B>!<21>2FܦP <20>HR<10> <10> <09>8<EFBFBD><38>a<EFBFBD>5<EFBFBD><35><EFBFBD><EFBFBD>Ih.<2E>QL<51>(@;<3B>\r<EFBFBD>Z<1B><0B>3%\0=)@<40>B<EFBFBD>*<2A><>H<EFBFBD>?T<>\0<EFBFBD>#<0C><><EFBFBD><EFBFBD><EFBFBD>I\r<EFBFBD><EFBFBD><EFBFBD>Jp<4A><70><EFBFBD>L<EFBFBD>JU%<25>eR_I<5F>&@:R<>%<25>&ԪRq+*<2A><>R<EFBFBD>Y<EFBFBD>?R\"<EFBFBD><EFBFBD>J<EFBFBD>*R<>3<EFBFBD>J<EFBFBD>iԬ<69>\"<18>,<2C><><EFBFBD><EFBFBD>F5&j<><6A>6<EFBFBD><36>.<2E><><EFBFBD>'KE+ԣ<>&u)T<>RML)T<><54><EFBFBD>LD~ԹR<D4B9>E<1B><>SK<> Ԥ<>K<>1<EFBFBD>!<21><>L<EFBFBD><4C><EFBFBD>7<EFBFBD><37>D<>c<EFBFBD>K<EFBFBD>-3<>4<EFBFBD>D<1C><><EFBFBD><EFBFBD>A/x%T@SV<14>I<EFBFBD><49>S^= <20><02>`\r<EFBFBD><EFBFBD><EFBFBD>\n5#<23><>0 R2Q<32>8<1C><>T<EFBFBD>I#<23>%S<><11>w<EFBFBD><0B>ނ<EFBFBD>|<7C>R<EFBFBD>7Ӝ<0C>/E<><45>\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><16><04><>~0A/<2F>\$<EFBFBD><EFBFBD>ӿ@82L!d<><64><EFBFBD><EFBFBD><EFBFBD><0C>t<EFBFBD>Y<>O<EFBFBD>|7<a<>(<28>ʮ6<CAAE>4d@\r<EFBFBD>O<EFBFBD>;t<><14>A<EFBFBD>?<3F>Q<06>iIᏐ<49>|&<26>,<2C><w<><77><EFBFBD><EFBFBD><0E><><EFBFBD>-<2D><><03><><EFBFBD>C<43><C28E><15><1A>\$0ۀ<>+<2B><><EFBFBD><EFBFBD><EFBFBD>B1<42><31><EFBFBD><EFBFBD>P<EFBFBD>\"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*<2A><>#\0<EFBFBD>H<EFBFBD><EFBFBD><EFBFBD>E<EFBFBD>JO<EFBFBD><EFBFBD><EFBFBD><EFBFBD>5<>\0\r<EFBFBD><EFBFBD><EFBFBD>]O<06>첈<EFBFBD>^\rxz<EFBFBD>:<3A>^ <09><>_(<28><><EFBFBD>6M'%[<5B>-i<>]F<>#ғ<><D293>N<EFBFBD><4E><04><>\0ĕ<EFBFBD>LN<4C>4<EFBFBD>f<0E>#i:S<1F>X<>@4<><34>%<25>[<5B>ʙ<EFBFBD> <20>=<3D><1F>&#e<><65><EFBFBD>Hc<48>\0<EFBFBD>8<EFBFBD>f <07>p<>4<EFBFBD>\0<EFBFBD>ag<61><67><19>/eD,Aڀ@<03>bE \$P<><05>Jj<4A>2\0<10>*<0C>:<3A><12> .<2E><><EFBFBD><EFBFBD>24ࣨ-P@u<05><>=<18><>)<29>\n=x )\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>=<3D>\n`+<2B><>H()\0#<23><>x<><78>&<05>=:ki<6B>&<26><16>)<29>H+><02>U<EFBFBD><55>ՇChi\0<EFBFBD>OZ~@+<2B><>x <09>\"<1C>.F?B<> <09>B<EFBFBD>mA<6D><41><EFBFBD>C<EFBFBD>[<5B><>D<02><>mQuF<75>j<EFBFBD><6A>R/4<><34>T<EFBFBD>uK%<25>TMD<4D>c<EFBFBD>W!B\0<EFBFBD>E<10><>Г<EFBFBD>`ɏ=<3D><08><>&L=<3D><>cϏB(\n̨[<13><>0<EFBFBD>U\n <20><>O<08>ό1<CF8C>EUTu]<5D>\rU<EFBFBD>\\D<EFBFBD>[<5B><><10>\r<EFBFBD><EFBFBD>G<EFBFBD><08>`1<><31>'X<>d<EFBFBD><64>U<EFBFBD>T<>?C<06><>H<EFBFBD>sV3WEcuu<75>!X<><58>u<EFBFBD>\$<EFBFBD><05><05>,B<>}e5~<7E>U<12>P<EFBFBD>1<EFBFBD>.<2E><>'<27><>A:>p<> <20>è<EFBFBD><C3A8>i<EFBFBD>\n<EFBFBD><EFBFBD><0B>S<EFBFBD><05>S<><53>E\n1<EFBFBD>\"<EFBFBD>T@<40>@#<23><>lN<6C>1<EFBFBD>[(ñ:<3A><><15>PQ<50>U<1C>l4D<34>[%l<>Є%[X<>u<EFBFBD>D<EFBFBD>5<EFBFBD>b<EFBFBD><62> <09>kH<6B>b<EFBFBD>D<>pq<70>W]p@9\0[R8<52><38>Ŋ<EFBFBD>(-R<>N<EFBFBD><4E>.<2E><>.Up<55>TW%\\<EFBFBD>*U̦)\\Ⴡ@<40><>C<EFBFBD>tU͟<55>j\"\0<WRc}uu<75>u]v3<76><33><EFBFBD>Q<EFBFBD>s<EFBFBD><73><EFBFBD>!]}<1C><>WX]<5D>w<EFBFBD><77><EFBFBD>.<2E>mu<6D><I\\ 5<><EFBFBD><D7B9><EFBFBD>r<EFBFBD><72><02><><EFBFBD>d<EFBFBD>h<EFBFBD>^usM<73><4D><EFBFBD><08>+ 9<>Eu<45><75>\nj<><15>W<EFBFBD><03>y<01><04>^<5E><>U<EFBFBD>W[_E{<EFBFBD>҄<EFBFBD>H<EFBFBD>><3E><>W<EFBFBD>A<EFBFBD>~U<><55><EFBFBD>_<EFBFBD>:<3A><><EFBFBD>k]xٵ<78>\0b(<28>\\B<0E>\$<0F><>89<38>\\<EFBFBD>d<EFBFBD><EFBFBD>X4<><34>Uمa<>H8W<38>#es<65><73><06>^<5E><>A?<14>+=u<><75>\0<EFBFBD>`<60>ĵ<EFBFBD><C4B5><EFBFBD><0F>|\0<EFBFBD>z)<29>u<EFBFBD><04>p<05><><EFBFBD><EFBFBD>Q<EFBFBD>u<EFBFBD><75>)<29>`<60><><EFBFBD><08>]xOu@6<>ew<65><77><EFBFBD>`q<><71><EFBFBD><12>9<07><>?<3F><> <11>W@h<0B><><EFBFBD>v# <09>@m<>\$<EFBFBD>X<EFBFBD><1D>+ <<3C>~(<28>f\"<EFBFBD>j<>D<EFBFBD><44><10>e<><65>1X<31>_=rA=<3D><03>W9<>\\ 5<><35>c=<3D>E@<40>l<03><05>1X<31>̐: <0B>^<5E><>\0<EFBFBD>\$=bM<62>s<EFBFBD>خ<EFBFBD><D8AE>FV<12><>b<1D>\$<EFBFBD>Y b8W<38>C<EFBFBD>T<>s6%Y <03><>@<13>(-<2D><>)<29>T<>b<EFBFBD><62><05>/<2F><>D<EFBFBD>ؑd<D891><64><EFBFBD>H<48>L<EFBFBD>`<60>@d VG<56>=eU<65><02><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>vX\ne<EFBFBD><EFBFBD><EFBFBD>ZWF{<EFBFBD><EFBFBD>MMY9eM<EFBFBD><11>Ѳu<><75>2GN(<28><>-(<28>+b<><62><EFBFBD> K_fX#<23>f<EFBFBD>9d<39><64><EFBFBD>c<EFBFBD>vnRb<52><62>%4'-<2D>\"<EFBFBD>\n9\$(J<><4A>W%fՙ6j@7gvr4<72>d/1<><31><EFBFBD>g<1C><>׀<EFBFBD>[e<><65>}Ӈc%<25><><EFBFBD><EFBFBD><EFBFBD>c<EFBFBD><04>N<EFBFBD>J\$<EFBFBD><EFBFBD>aa٬N<EFBFBD><EFBFBD> Y2<08>dS<64><53>b<><62>Q<EFBFBD><51><EFBFBD>`\0Š<EFBFBD>W<EFBFBD>\r<EFBFBD><EFBFBD><EFBFBD>r<EFBFBD>,H<><48>\r<EFBFBD><EFBFBD>h<EFBFBD>rQ<EFBFBD><EFBFBD><EFBFBD>\"<EFBFBD><EFBFBD><EFBFBD><16><>i\n<EFBFBD><EFBFBD>F<EFBFBD>KK<EFBFBD>;<3B><><08>iP+V<12><>iu<69>p<19>c3<63>]֚Z`8j\0<EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD>Ei<45><05><><EFBFBD>+d]<5D>\"ىh<EFBFBD> VLϼ<4C>ŕ<EFBFBD><C595><EFBFBD>f}<7D>1<EFBFBD><31>j<><6A>6<EFBFBD><36>7dM<64><4D>\"XYj<EFBFBD>W@١<1D><>A\r<1F>e%<25>\0<EFBFBD><EFBFBD><EFBFBD>j<EFBFBD>b<EFBFBD>tY<EFBFBD>:<3A><><EFBFBD><EFBFBD>Z<EFBFBD><1D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>e<>v<EFBFBD><76>(ծ6<D5AE><36>d<7F>A<>Z<EFBFBD>k\r<EFBFBD>i<EFBFBD>E<EFBFBD><EFBFBD>K<EFBFBD>6<EFBFBD><EFBFBD><EFBFBD>l*<2A><J]hu<68><75><EFBFBD><EFBFBD><EFBFBD><18> <20><07><13><><EFBFBD>6[#lb<6C>;<3B><>bճv<D5B3>dtt<74>7<EFBFBD>Jt<>A<EFBFBD><41><EFBFBD>و<EFBFBD><D988>8<EFBFBD><38><0F><>A\nlxҖ<78>Z<EFBFBD>&<05>!~<7E>Ҙ<EFBFBD><D298><EFBFBD><EFBFBD>[OmH<05>մ~<05><><\0<EFBFBD>m<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Z<EFBFBD>m<EFBFBD><EFBFBD>,<2C>[Gd<1D>u<EFBFBD><75>i-<2D>DqZL<1E><>66[<5B>nE<6E> <20>ۇe<DB87>j1<6A>[l<15><>6ޗJ}s<>/[<5B>me<6D><65><EFBFBD>#<23>m<><0F><>J<EFBFBD><05>v<EFBFBD>F7n?Jt<4A>[R<>\\6<EFBFBD>Yo<18><>L<EFBFBD><4C>c`<0E>5<EFBFBD><35>o<EFBFBD><6F><EFBFBD><EFBFBD><03><14>vm<76>X<EFBFBD>-<2D><>6<18><>a<EFBFBD>c<EFBFBD><63>Zsl%<25>C@<14>[<5B><><EFBFBD><EFBFBD>Wa<57> <20><><EFBFBD>[<1D><><EFBFBD><EFBFBD>W[Mo<4D><6F><EFBFBD>g\\<05><>/\0<EFBFBD>o<EFBFBD> \"<EFBFBD><EFBFBD>sbM<EFBFBD><EFBFBD>9<EFBFBD><EFBFBD>d<EFBFBD>ģ<0E><><EFBFBD><EFBFBD><EFBFBD>5<EFBFBD>8<v<>#4<>m<>,}ن<><08>V|Ml<4D><6C><1D>S\\<18><><EFBFBD><EFBFBD>im;<3B><>ᆞ<EFBFBD><E1869E><EFBFBD>+YQrEȷ%<25><>rj<72>7ۯa}<7D><><EFBFBD>Z<06>MrW\"ܝs<15>3<EFBFBD>؊(<28>B<EFBFBD>4<EFBFBD><34>q<EFBFBD>76q<36>Co<43>*<2A><>+q<><71><EFBFBD><EFBFBD><EFBFBD><EFBFBD>hs<68>v<<3C><>oՔW-<2D><>r<EFBFBD><72>7?ܧt\r<EFBFBD> <20>صt-<2D><>>tH<74>)<08>rJ7\"@w]Ŭ7IY<49>pmҷ7XYt\nG<EFBFBD><EFBFBD>]\rp\r<EFBFBD>Q\n8\n<EFBFBD>2<EFBFBD>ѰTezP<>\0<EFBFBD>=<3D>v<0C>NE<>#<23>ܽu<DCBD>̗E<CC97>iu-<2D><>N<EFBFBD><4E>s<EFBFBD><73>^<5E>.<2E>}<7D><>Cܕd˂2<CB82>]1f<31><66>.g<>r0<72>4<EFBFBD><34><EFBFBD>x<EFBFBD><78><EFBFBD>>WvE<76>7.]<5D>j<EFBFBD><6A>U<EFBFBD>\\k4<EFBFBD>q<EFBFBD>!<21><>t<EFBFBD><74>wI<77><49>F]pwq<77>5w)\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>q<EFBFBD><EFBFBD>p\0\"\0_az]^<15>7v]<5D>[-ܗ<<3C><>vޖL7<4C>c]<5D>a7?\$<EFBFBD>-<2D>7;^w5<77>v<EFBFBD>]=va<76>g<>v<><76><EFBFBD><EFBFBD> k\$w<EFBFBD><EFBFBD><EFBFBD>;Z<>!<21><>V<EFBFBD>ql@;V<>0<EFBFBD>l<EFBFBD>\\<EFBFBD>[<5B>v-<2D><><EFBFBD>`X <20>xW<78>_<EFBFBD><5F>\"<EFBFBD><EFBFBD>n<EFBFBD> <0B><^uw<75><77><EFBFBD>^ew=ӷ<>]<5D><16>r<EFBFBD>u<0C>p<EFBFBD><70><EFBFBD><EFBFBD>*<2A>u<>r<EFBFBD>Z[]<5D><><EFBFBD><EFBFBD>G<EFBFBD>>é5C<35>̻<EFBFBD><CCBB><03>(0*ɒ<><C992><EFBFBD><EFBFBD>V0W<30><57> <09><><EFBFBD><EFBFBD><05>(\nՂ<EFBFBD>[z<><7A>`)^<5E>Zkɱ'<27>#<23><>\n\n^<5E>()<29><><EFBFBD><EFBFBD><EFBFBD>BiW<69> <20>\n<EFBFBD>\n<EFBFBD>ݦ <19><>7<EFBFBD><37><EFBFBD><<3C><08><>'<27>@ <09><>^<5E>:<3A>3\0*<2A>@<40><><EFBFBD>\nЏJ<02><08><>&h\n<17><><EFBFBD>|<1D> <20><05>z<EFBFBD><7A>\0)_\n=젠_D=h\n5_Z<><5A><EFBFBD>`*\0<EFBFBD><EFBFBD><EFBFBD>3<17>.<2E><>(\n<EFBFBD>'<27><><02><>!h'<27>(<28>`«><<3C> -\0<EFBFBD>{zi /<2F><>L8<4C>`/<2F>:<02>I<>Uv<55>@Z]<5D><><<3C><><EFBFBD><EFBFBD>_{<EFBFBD>0<EFBFBD><EFBFBD><EFBFBD>~=<3D>`<15>m{,7<>E{=<3D>+<2B>c~<7E>l<EFBFBD><6C><EFBFBD><EFBFBD>}5<>W<EFBFBD>_<EFBFBD>X<08><>&\$Jk<4A><6B><EFBFBD>1m<7F>7<EFBFBD><37>O{%<25><><EFBFBD>8hx`\"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'{}<7D>7<EFBFBD>^袍<><E8A28D>Ѐt<16><>@\$<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>z<EFBFBD>\n<16><><02>Vi<56>߱{<EFBFBD>i<>&J<02><>W<EFBFBD><57><EFBFBD>|<7C>\n <09>UZ<02><>w<EFBFBD>_<07>NW<><57>(<28><05><>:_R<16>R<17><>3}<7D><06><>`&\n<EFBFBD>iAh0<><30>\0<EFBFBD> <05>|E<>S<EFBFBD><53><><15><>_%<1D><><EFBFBD>_2֠<32>7<EFBFBD>߶8<DFB6><38><EFBFBD><1B><>|{8%_Y}pc<>\0<EFBFBD>}<7D><>k<EFBFBD>_k<5F><6B><EFBFBD><EFBFBD><EFBFBD>_s}<7D><><EFBFBD><EFBFBD>_~Ώ?<3F>` <>{<EFBFBD><EFBFBD><17><>L<EFBFBD>pf8;\0<EFBFBD><EFBFBD>^8\0<EFBFBD><EFBFBD><EFBFBD><04>_<>E`<60>\"b<<3C>w<EFBFBD><77>ߍ~@ <09><>_<EFBFBD>-<2D><>Jߣ<4A>̀<EFBFBD><CC80>_<EFBFBD><5F><07>-<2D><0B>:fW<66>_<EFBFBD>~M<>i<EFBFBD>a1~~w<><77>=<3D>&<17>_?<3F>Zo<5A><6F><EFBFBD>uU<75><55>7<EFBFBD>|<02>XJ<58>aUrb<72>d<EFBFBD><64>pZ <09>ը<<3C>w<><77>Й0f#<23>U{~@&_<><5F><EFBFBD> <09>*<2A><><EFBFBD><EFBFBD><19>Ԁ<EFBFBD>{zw<EFBFBD>_3<33>`<60>#<23><>\$(0<>gU<67><55>PX?<3F><1F>Rk`>+\$.8g<38>Æ<EFBFBD><C386>x<01><0B><>lI<6C>a<EFBFBD><61><EFBFBD><EFBFBD>8[<5B>{<EFBFBD><EFBFBD>X8a<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>I<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n<EFBFBD>\r<EFBFBD>c~<7E><1C>aͅ<61>Wx<78>?<3F>\r<EFBFBD>8&<26>L>!<21><>^<5E><EFBFBD>|<7C>ڏt=<3D>a<03>`=<3D><>؍߫ %<25><><EFBFBD><05><><EFBFBD>d <09><>M}x\nW<EFBFBD><EFBFBD>+|-<2D> <15><15>U<><55>x i<>aC<61><43><EFBFBD><EFBFBD>W<EFBFBD>a<EFBFBD>-<2D>s<EFBFBD>߯<EFBFBD><DFAF><EFBFBD><EFBFBD><EFBFBD>'f(Z<03>'}<7D><><EFBFBD><EFBFBD>צ\"^'<27><>b<EFBFBD><62><EFBFBD>\nxkb<EFBFBD>=5<><35><EFBFBD><EFBFBD>h<01>dCݏz=6\$C<EFBFBD>&+<2B><><02>~<7E>%8<>\0W<EFBFBD>`<60><18><>'<27><><EFBFBD><EFBFBD><EFBFBD>`<15>v&<26>Y<EFBFBD><0B><><EFBFBD><EFBFBD>\n&0<<3C><>cͨ<63><<3C> !M<13><><EFBFBD><EFBFBD>\0<EFBFBD><EFBFBD><EFBFBD>,8<>bɊ<62>\$<EFBFBD>ď?E<7F>X<EFBFBD>c\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>U<EFBFBD><EFBFBD>&Aha<68><61>10<31><30><EFBFBD><15>8<08><><EFBFBD>V<EFBFBD>F2ع<32>e<EFBFBD>NI<>bq<62><71>3<EFBFBD><33>><07><>\0V<EFBFBD>..<2E>W<D880><57><EFBFBD>ɗ<EFBFBD>b<EFBFBD><62><0F>#a<>=B<><42>Ϩ[<5B>P<08><>*=<3D> <09><>*<2A><><EFBFBD>踂`7<><37><1A>q+H<> `\$<EFBFBD><EFBFBD>U<EFBFBD>5k^<5E>=<3D>Z <09>b<EFBFBD>=<3D><><EFBFBD><01><>}<18>X<EFBFBD>c<EFBFBD><63>.(<28><><05><19><>d<EFBFBD>_3<5F>)<29><>_<EFBFBD>3<EFBFBD><33>C<EFBFBD>b<EFBFBD>\nF1<EFBFBD><EFBFBD><EFBFBD>O<EFBFBD><EFBFBD>,<2C><><EFBFBD>Q<EFBFBD><51><EFBFBD>yc<><63><EFBFBD>.<2E>#<23>c<EFBFBD><63><EFBFBD> <09><><EFBFBD><EFBFBD>.A<><41>`><3E><><EFBFBD>5<EFBFBD><35>L<EFBFBD>F9<06>:<<3C>+u<><75>ߋ\"<EFBFBD><EFBFBD><16><1D>V<>[(=>X%Ҍ=H\nS9a<EFBFBD><16>x<17>I<EFBFBD>vE <20>a[ &2<><32>dh=PZVU]U<>#<23><>d^\n<EFBFBD><1A><><EFBFBD>7<EFBFBD>FG<46>\"&<26><><EFBFBD>T<>&<26><><EFBFBD><1C><15><><EFBFBD>F?<3F><><EFBFBD>\0&Hy)b<><62><EFBFBD>K9)<29>w;P\n<EFBFBD>\$d<EFBFBD><EFBFBD><EFBFBD>#<23><>bˉ&J<17><>g<EFBFBD>vK#<23>=<3D>nLX<4C>㍓H*ا^ۀ<><DB80> *'K<><4B><08><>ቍn<1D>,<2C>`<02>:<3A>:\0V<EFBFBD><EFBFBD> )<29>&!|<7C>Pز<50><D8B2><EFBFBD>VO<18><><1B><>-<2D>ԧ}<7D><>{<EFBFBD><EFBFBD>b <09><>P<EFBFBD>Ee#<23><>O<EFBFBD><4F>cg<63><67>P<EFBFBD>+<2B>Zrt<72>(O{<EFBFBD><EFBFBD>r<EFBFBD><EFBFBD><08><>ByL<79>N<EFBFBD><4E>2<EFBFBD>2<EFBFBD>(<28>&U <09><><03><>\0X<EFBFBD><EFBFBD><EFBFBD>k<EFBFBD><EFBFBD>M<EFBFBD><EFBFBD>f5]<5D><14><>VXUU\\<<3C>p<EFBFBD><70>aH<08>#\0<EFBFBD>=<3D>Z<01><><EFBFBD>XvW <09><><EFBFBD>,R<17>`<60><><EFBFBD>)<29>f<EFBFBD><03><>6Ucᄝ0<><30>,<2C>b<EFBFBD><62><EFBFBD>ըf'`%ᛔ<><05><>e݀<65>^8\0<EFBFBD><EFBFBD><EFBFBD>^<5E><><EFBFBD><EFBFBD>.\nX__<EFBFBD><EFBFBD><EFBFBD>P\0)<29><><EFBFBD>.B@<40>d<07>va9)'<27><><EFBFBD>N<EFBFBD><4E><EFBFBD><EFBFBD><EFBFBD>O<><4F>+~<7E>+<2B><>+<1D><>XA<58><41>-<2D><> <09>j3<><33> <09><18>M<EFBFBD><4D>aX<61><58>]<5D>\"f)ـ<>>y:<3A>L<03>\n<EFBFBD>Ņ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD>V<EFBFBD><EFBFBD>X<EFBFBD><EFBFBD>_<EFBFBD><EFBFBD>p<0B><>0=-<2D>@§z<C2A7><7A>UY<55>b<13><><18>\0<EFBFBD><02><08><>ȸx\n<EFBFBD>&<26><><EFBFBD>jX<6A>&<26><><EFBFBD>*ɋ_r{R7<EFBFBD>K<EFBFBD><EFBFBD>i<EFBFBD><EFBFBD>+q3<71>kw<6B><77><EFBFBD><EFBFBD>8f9<66><39>{<EFBFBD>6]<5D><>a<EFBFBD><61><EFBFBD><EFBFBD><19><>V<EFBFBD>l<>b<EFBFBD><62><EFBFBD>>jy<6A>f<EFBFBD><66><EFBFBD>y<><79><EFBFBD><<3C><>)<29><><17>(\nkf<6B><66>j<>ԫ@<40>X \0Q~<7E><><EFBFBD>@<40><19>F8C<38><43>L0<4C>@*\0<EFBFBD><EFBFBD>`<60><><EFBFBD>^<5E>~r<>x<EFBFBD>gD<67>6t<36>T<EFBFBD>|<7C><>x<EFBFBD><78># >u<><75><EFBFBD> <09>e)YϪǝ<CFAA>u<EFBFBD><75><EFBFBD><EFBFBD><EFBFBD>Jky<6B><79><13>2<EFBFBD><32><EFBFBD>&<26><>eU<65>{<EFBFBD>M<EFBFBD>;<3B><><EFBFBD>i<EFBFBD><69>U<EFBFBD><55><EFBFBD>L=<3D>u#<23>g<EFBFBD>X*t<><74><EFBFBD>+<2B>0ȁ<D7BE><C881> '<27><><EFBFBD><EFBFBD><EFBFBD>UY<55>^)5VՓ<56><D593>*X<>-U<>a\"<EFBFBD>dž<EFBFBD><1A><>8`<60>}a<>ו<EFBFBD>U<EFBFBD>{g<EFBFBD><EFBFBD><EFBFBD><19><>d<EFBFBD>n-8<>\0<EFBFBD><EFBFBD><EFBFBD>t9<16><><<3C>L<EFBFBD><4C>d<EFBFBD><64>h<EFBFBD> ,<2C><>=I0<49>h<1C>8<EFBFBD><38><01>\"<EFBFBD><EFBFBD><EFBFBD>:<06><><EFBFBD>8 ԣc<0E><>3h1<68>\0i<><69><EFBFBD>z<EFBFBD>8<><38><1E>6<EFBFBD>c<01><>d<EFBFBD><64><EFBFBD>8<EFBFBD><38>1<03>hi<68>ֆ<EFBFBD><D686>'<27><14><>X<EFBFBD>9<>|<7C><>̏_<CC8F><5F>a<15><>K<EFBFBD><4B><EFBFBD>)<29>߯Xn<58>9<EFBFBD><39>Z0<>5<EFBFBD>\0<EFBFBD><EFBFBD>ƈx<EFBFBD>\0<EFBFBD><<3C><06><><EFBFBD><EFBFBD><02><18><><0F><>\nX<EFBFBD><EFBFBD><EFBFBD>.U<><55><EFBFBD>W<EFBFBD>ic<69><63>:<3A>:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <17><><EFBFBD><02>Q&<26><><EFBFBD><EFBFBD>\nZ\r<EFBFBD><<3C><>Y<EFBFBD><59><EFBFBD><EFBFBD>փ<EFBFBD><D683><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>9Vg<56><67>R踶<52><E8B8B6><EFBFBD><EFBFBD>b<EFBFBD><0E>Z<EFBFBD><5A>b<EFBFBD><62><EFBFBD>*<2A><>I<>G<EFBFBD><47><EFBFBD>k<><6B><EFBFBD><EFBFBD><EFBFBD>c<EFBFBD>.<2E><><EFBFBD>rmP\0<EFBFBD>3<EFBFBD>Y\0\"'<27><>
<EFBFBD>2<EFBFBD><32>Uj<55>I<EFBFBD>iI<69><49><EFBFBD>9<EFBFBD><39><06>]W`+<2B><>L><3E><>-c<><<3C><0B>|\0<EFBFBD><EFBFBD><EFBFBD>Z煥<>\0<EFBFBD><EFBFBD>e<1F>{<EFBFBD>N<EFBFBD><EFBFBD><EFBFBD>H<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=h+<2B>&<26><>@<40>1<EFBFBD><31>d<EFBFBD>S^<5E><>h<EFBFBD>y=fW<66><57><12>Ua3~<7E><>XN<58>;<3B>B<EFBFBD><42><EFBFBD>+F<>O<>va\"M<><4D>wg턆cȀ<63><C880><EFBFBD><EFBFBD><EFBFBD>G'<27><><EFBFBD><EFBFBD><EFBFBD>Gi<14><>b)<29><><EFBFBD><EFBFBD>@<40>XC<58>f<<3C>\0<EFBFBD><03><15><><EFBFBD><EFBFBD>``<60>ڴ:<3A>c<EFBFBD><<3C><08>p<EFBFBD>6<Ɗc<C68A>a<EFBFBD>X^Y<15>c<EFBFBD>=-ax<0B><><EFBFBD><EFBFBD>CRK<52>Z<ƛ<><C69B>cf%<25>?<3F><><EFBFBD><EFBFBD><EFBFBD>n,نg種<67><E7A8AE>>h/<2F>x<EFBFBD><78>H筑Vye<79><0F><>YWVZ<1A><>}l<><6C><EFBFBD>\0<EFBFBD><EFBFBD>-<2D><><EFBFBD>j<EFBFBD><6A><EFBFBD>O8<4F>_[<5B>0\nY\\<EFBFBD>Q<EFBFBD>~<7E><>#<23><><EFBFBD>n<EFBFBD>Z<EFBFBD><5A><EFBFBD><EFBFBD>>wy<77>৪<EFBFBD><E0A7AA>Y_[<5B><><EFBFBD>X\r궚ޫ<EFBFBD>|egUj<55>:<3A>Ս<EFBFBD><D58D>sˢa<15><>\nZ&ȭ\r`<60><>.<2E><><EFBFBD><EFBFBD>I<EFBFBD>`{<EFBFBD><EFBFBD>.<2E>n冭<02><>\n<EFBFBD>q<EFBFBD>ƖW<EFBFBD>d.<2E><><EFBFBD>)<29><>a<EFBFBD><1A>`>g<><67><EFBFBD><EFBFBD>X<EFBFBD><58>}<7D>8<38><F2B88B80>(<28>\n<EFBFBD>.͛v{<EFBFBD>T<EFBFBD>7<EFBFBD><EFBFBD><0F>,<2C>3<EFBFBD><33>d<EFBFBD><64>g<EFBFBD>~0<>ؔ<EFBFBD><D894><EFBFBD> <<3C>{<13><}<7D>3<EFBFBD><33>\$<03>ϔ)<29>8<04>@<40>R34<33>:<3A><><0B><1D>䵥]<5D><>~6U!<<3C>@<40>jZ<17> ֺS<D6BA><53><14>^<5E><>ӈ<17><>B<05>~ 5<><35>ɳ,<2C><>S<EFBFBD>,(<28>M<EFBFBD><4D><EFBFBD><EFBFBD>9p 3<><33>X<0E>/Z<><5A>u'<27>:<3A>F<EFBFBD>p\\<EFBFBD>)|ƣ<>X\r<EFBFBD><<3C>Y8Xt脕!`6 4<><34><EFBFBD>.<2E><>6<EFBFBD><06><>+Z<>P۰<50>n<EFBFBD><6E><EFBFBD><<0B>0<01><><EFBFBD>&<26>b<EFBFBD>w<03>0><3E><>Sr<<3C>@6<>d\n<EFBFBD><EFBFBD>z<EFBFBD>lO<EFBFBD><EFBFBD>FRlO<6C>;H5<48>ڝ*<2A><>L^x0<78>>g6<02>s<EFBFBD>/<2F>q<EFBFBD><71>Ye\0<EFBFBD><14>@<<3C>z=\$<EFBFBD>Cئ<EFBFBD><EFBFBD><EFBFBD>\n`+'S<><0E>9<EFBFBD><39>X<>8<EFBFBD>_/<2F><><EFBFBD>i<EFBFBD>j<EFBFBD><19> <09><>h7<68>5Y\0&<26>c<EFBFBD><63>w<EFBFBD><77><EFBFBD>a<EFBFBD>֡<EFBFBD>E<EFBFBD>ɟ<EFBFBD>Xyfu<66><75>b{5<EFBFBD>ͳvG<EFBFBD>jg<EFBFBD><EFBFBD>n<EFBFBD>Xd<EFBFBD><EFBFBD>\n<EFBFBD>{<EFBFBD><EFBFBD>lǫ<EFBFBD>͙<EFBFBD><EFBFBD><EFBFBD>~<7E><>V<><56><EFBFBD><EFBFBD> ?<3F>3<EFBFBD><0E><><EFBFBD><EFBFBD>W}<7D><04><>R Ch0<68>>R<0F>=<3D> 7<><0F><><EFBFBD>9<EFBFBD>x<14><15>>S<>\"ӂ4z<0F><><EFBFBD><EFBFBD>Ҵ0f\"`<12>1<EFBFBD><31>:愸x:<3A><><18><08>x;Z<>d<>֔<EFBFBD><D694>e<EFBFBD><65>K<EFBFBD>;<3B><>@<0E>g<EFBFBD>TML<4D><4C>7N3R<04>k<EFBFBD><6B><EFBFBD>N(i<>F<EFBFBD>;)<29>Orn:Ӷ<>\"<EFBFBD>><3E>^#<23>e;n<08>!Q\0<EFBFBD>/ԆfU\0\"<EFBFBD>@Rp6<70><36><0B><14><>B<EFBFBD>m<EFBFBD><6D>0<EFBFBD><30> <03><><EFBFBD>!<21>Y<EFBFBD>r/T<><1B>t<EFBFBD>1<EFBFBD>V<04>eOQzBr<42>9,<2C>@9m<39>!<21><>t<EFBFBD><74><EFBFBD>11;<3B>\"cmMu,S<><53><ŮW\"<EFBFBD><EFBFBD>yv<EFBFBD>K)V<03><0E>m<EFBFBD>V,<2C><>b<EFBFBD><62>k<EFBFBD>\"<EFBFBD>1<EFBFBD><EFBFBD><EFBFBD>hx<EFBFBD><EFBFBD><EFBFBD>F&<04><><EFBFBD><EFBFBD>9<EFBFBD>t<EFBFBD><74>?<3F>܄Iq<49><1C><><EFBFBD>\0g<1F>5<EFBFBD>MK<4D>!,<2C><>?<3F><>!PSQG<51>e<14>@<40><>a:<3A>b<EFBFBD><62>Hd@(: <20><><EFBFBD>Dd<44><64>FJ1Ḣ 8<>w&<26><>@⍅'i<>VmL<6D> E/<2F><>[R<12>R˻Z<>n<EFBFBD>fՏ<66><D58F>ٴ_<19>G<EFBFBD><47>hl<68>bŇ<62><C587><EFBFBD><EFBFBD><EFBFBD>l<EFBFBD>.<2E><><EFBFBD><EFBFBD>3%I<>[c6<63><36> 3k<33>,<2C>ID<49><44><EFBFBD>X%<25><>JSox<0B>v<EFBFBD><76>K<EFBFBD>B<EFBFBD>q[iD<69><44>a<EFBFBD>n<EFBFBD>O@<40>۱m<DBB1><0F>/<2F>|<7C>iK<69>2RjfV<66>r<EFBFBD><72>ZEJ<45>n<>g\0_<1B>H<EFBFBD>;PHD<48>n<EFBFBD>-<2D><><EFBFBD>i<EFBFBD>Q<EFBFBD><51>a<EFBFBD>)<29>)<29>Pg<50><67><05>L6<><36><07><>%l<><6C>k<EFBFBD>:<3A><>s<EFBFBD>k<EFBFBD>1<EFBFBD><31>S<EFBFBD>m<EFBFBD>NF<4E><46><EFBFBD>o<EFBFBD>(<28><>SJIe:<3A><>ԺJ<D4BA><4A>=l<><6C><EFBFBD>F<7F><46><EFBFBD>)ﲋ\$x<EFBFBD><EFBFBD>ͣ<EFBFBD>><3E><>Æ9<C386>X<0F><>o<17><<3C>'<27><>mHf!<21><><03>D;<3B>\0<EFBFBD>f<EFBFBD>SA<EFBFBD><EFBFBD>r/<2F><>;V<>l<<3C>e<EFBFBD><65><17><><14><><EFBFBD><EFBFBD>ػ2J<32>A\$<EFBFBD><EFBFBD>k<19>U<EFBFBD><55><EFBFBD><EFBFBD><13><>Y<EFBFBD><01><><EFBFBD><EFBFBD> <06> d<>\0|pP<70>!f<><66><EFBFBD>Z\r@<40><><15><><EFBFBD><EFBFBD>O<EFBFBD>'_x6;\\4<EFBFBD>%<25>Z6[<5B>6<><36>t<EFBFBD><74><EFBFBD>KŰ#<10>u1|<7C>2<EFBFBD>XOo&<26>6~<7E><>Dq<><71>O<<3C><<1B>:Ӷ|<7C><><EFBFBD>p%%<25>ֳR<D6B3>&\r<EFBFBD>*oʡx\0C[ʸ#<23><><0C>:lpw<70><77>\$KL<EFBFBD><08>;sh<73>`<12>aRn<52>z<12>;ϔ<>;<3B><14>|8L<38><12><0C><1C>=OEǥH<C7A5>* )<29>-<2D>T<EFBFBD>/⛲_<E29BB2>H._%<25><03><13><><EFBFBD><EFBFBD>H<EFBFBD><03><12>7TH<54>SD5><3E><><03>S<03>_<EFBFBD><5F>cr~<06>y<EFBFBD>E<EFBFBD>\0<EFBFBD>*<2A>^<5E><><07>,͎<>FS<46><53>=<1B>\0<EFBFBD>#<23>><3E><>@c<>E<><45><17><>MA7o<37>\r<EFBFBD>R<EFBFBD><1B>q<7F>{S<EFBFBD><EFBFBD><EFBFBD><15>մ1<D5B4>'<27><><02><>'m<><6D><EFBFBD><EFBFBD>{p0f2/<13><><18><m:-HƸ<C6B8>%N'[P<>wd<><64>f<EFBFBD><66>\n<EFBFBD>5<t<><74> <n<><6E>5<EFBFBD>F3<46><33><EFBFBD>+<2B>b<EFBFBD><62><EFBFBD>*<12>q<>ed<65><64>ƫ0<C6AB><30>@<40>S;<3B>鞒d<E99E92><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:<3A>;=>=<3D><><EFBFBD>#<14><><EFBFBD><EFBFBD><EFBFBD><0E>N<EFBFBD>R2<03>`<60>F<EFBFBD><46>d<EFBFBD>\"<EFBFBD><EFBFBD>wQݵUN<55><4E><EFBFBD><EFBFBD>R<EFBFBD><52><EFBFBD><04><><EFBFBD>utvӡ\r<02>'<27>K#<23><><14><><EFBFBD>O\0ɰ씑<EFBFBD><EFBFBD>r<EFBFBD><EFBFBD>'<27>r<>H<EFBFBD>.|<7C><>;O<>K.8<EFBFBD><EFBFBD><EFBFBD>L<EFBFBD><EFBFBD>܄<EFBFBD>HT<EFBFBD>|sr<73><72>̃IMr<4D><15>/4<䏦<><<3C>r<EFBFBD><0B>Ɩ0<C696>5n<35><6E><EFBFBD><EFBFBD>ln,<2C>l?<3F>N<EFBFBD>ࢃa<E0A283>f<EFBFBD>ܠ<EFBFBD><DCA0>!f<><1C><><EFBFBD>o~<7E>|<7C><><EFBFBD><EFBFBD><EFBFBD>@2/<2F><><EFBFBD><<3C><><EFBFBD><EFBFBD><EFBFBD>%|<7C><><EFBFBD>1~<7E>iL<69> _1 5<>'<27>}<7D><><EFBFBD>r<EFBFBD>!<21>1<EFBFBD>6<EFBFBD><36>Eo2<6F><32>s<01><>.<2E><><EFBFBD><15> \r<EFBFBD><EFBFBD>r<EFBFBD><EFBFBD><EFBFBD>7<<3C><><07><>2<<3C>sn;r5*O<><4F>lLD<4C>F@<40>l[͜<>;<14>]ͦ<>HaGw7<77>5<EFBFBD>Y<EFBFBD>̚<EFBFBD><CC9A><EFBFBD>5H<1E><04>\$<16>A<EFBFBD><41>\\<t|<7C>A<02>RQD<51><44>!D\\<EFBFBD><EFBFBD>I<>qv@<40>}<7D><1B><1D><><EFBFBD>_<19><>lh<6C>(<28><0C><><EFBFBD>SK<53>i<EFBFBD>)|iwT<77><EFBFBD><0E>μ<EFBFBD>O><0B>,a<><61><EFBFBD><EFBFBD>>T<><54><EFBFBD>4|<7C>s<EFBFBD>d`#y\nu<EFBFBD>,<2C><><EFBFBD>\rη@A<>s<EFBFBD>8<EFBFBD>=<3D><>t<16>d<EFBFBD><64>Y<04>w&<26> N<>B<EFBFBD>h<EFBFBD>R<08><>2<EFBFBD>t %<25><>q,T<><1E><11><><12>wM<77><4D>[!O=<3D><05><>x<><18>NHJ@<40>C6<43>F<EFBFBD><03><>~<7E>a\n.<2E>G<EFBFBD>q<EFBFBD>\"'(<><7F><EFBFBD><EFBFBD>q<EFBFBD>\r8CvhJ`9\0<EFBFBD>/<2F><><EFBFBD>|t<>&w@<40>&<26><17>+<2B>\0<EFBFBD><EFBFBD><17><>]<0C><><02><><bt<62><74><EFBFBD>?<3F>DqO:<3A><><EFBFBD><1E></a<><61>X<EFBFBD>!<21>8<EFBFBD><38>YE<59>U<EFBFBD>E<EFBFBD><45><EFBFBD><EFBFBD>l<EFBFBD><6C>7G=<3D><>aL<61>t<EFBFBD><74><EFBFBD>@1^<5E><><EFBFBD><EFBFBD>><<3C><>ЇQ<05>X<><58><EFBFBD><EFBFBD>܀ \0<EFBFBD>}?CwԜ<77>]<16>=<3D>EW<45><57><EFBFBD><17>\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NR<08>+<2B>N<EFBFBD><4E>#<23>]?<3F>1<EFBFBD>oG<6F><47><EFBFBD>}.wG<77><47><EFBFBD><EFBFBD>}%<25>6Q<36><51><EFBFBD><EFBFBD><EFBFBD>#<23><>@.<2E><>h;N<> <P<><50>䐠1<E490A0><31>8<07>t<EFBFBD><74>⡼<EFBFBD>u<EFBFBD>πI<CF80><49>M<><4D>!]tU֨D<D6A8>7q&0ܛT<DC9B><54>z<EFBFBD><7A><EFBFBD>\0<EFBFBD>qH؇tI<EFBFBD>|`6lIe<49>R<EFBFBD><52><EFBFBD><02><05>M<EFBFBD><4D><EFBFBD><EFBFBD>^<5E>.<2E><19>5<EFBFBD><35>u<EFBFBD>e^<5E>M<EFBFBD><4D><0C>_\"<EFBFBD><EFBFBD><EFBFBD>7_<37>'o+<2B><1C>0<EFBFBD><30>s<EFBFBD><73>Q<EFBFBD>?<3F>F<19><><1D><><EFBFBD><EFBFBD>H<EFBFBD>u<DD8B>XR+<2B>J̢O<CCA2>\\<EFBFBD>\r<EFBFBD>7`<60>N<><4E>|Et<17><>H<1C><03>w<EFBFBD>Y<EFBFBD>_<EFBFBD>ݻOa#b@<40><12>G<>k<EFBFBD><6B>N<EFBFBD><4E>0<EFBFBD><30> S<1D><><EFBFBD><EFBFBD>U<11><><EFBFBD><EFBFBD><17><1A><02><>h7=\$<EFBFBD>_<EFBFBD>0c<EFBFBD>x<EFBFBD><EFBFBD>7e2qtD<14><>p<EFBFBD><70>0<><30>u<EFBFBD>m<EFBFBD>b<EFBFBD><1E><>ر*]<5D>^蝍%<25>7N<37>?<3F>l/P<>Z<EFBFBD><5A>wO=<3D><><1F>gnV<6E><56><EFBFBD><EFBFBD>ŝ<EFBFBD> v<>eթwn1a<31>^]<5D><>]<p\\<EFBFBD>ޜ<18><05><><EFBFBD><13><>&AzX4#<23>ݯ7د_=<3D><>k`Ћ}<7D>!E<><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>^<5E><01><>Kطt2_<32>Cط\\IX3ط<0E><>ѝ:%՝<>w/P<1D>Q<EFBFBD>.ę<><C499>Gݬ<47>A?<3F>[<5B><02>ݓ<EFBFBD>'<27>wd\n9p)<29>Ƀ<EFBFBD>r7vj[<5B><><EFBFBD><EFBFBD>@!<21><>w^<5E>R1<>ڤ7[<5B><0C><><EFBFBD><EFBFBD>e;<3B><><EFBFBD>q<EFBFBD>m[<5B>wkش<6B><1D><><EFBFBD>/5٢r<D9A2>, ?b<>']<5D><>r<EFBFBD><72>[\r<EFBFBD>/5<>ݰ<EFBFBD>ׯ<EFBFBD>r<EFBFBD>.<2E><>%<25>U<EFBFBD>Zv-<2D>l<EFBFBD>6~<7E><>B<EFBFBD>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>G<EFBFBD>h<EFBFBD><68><EFBFBD><EFBFBD>S <20>ougM<67><4D><EFBFBD><EFBFBD>p,<2C>O?<04><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>D<EFBFBD>d<EFBFBD>mw<6D>?]<5D>u!<21> R<>4<>V<EFBFBD>_!<21>xIw<49><77>^<15>H9_=><3E>}<7D>0<EFBFBD><30>ނ<EFBFBD>)<29><>=<3D>H<EFBFBD><48>O_=<3D><><EFBFBD>dء<0F><><EFBFBD>펝<> <20><>d<EFBFBD> 3<><33>]<5D><><EFBFBD><EFBFBD><EFBFBD><11><>_6:x<>Dx7B<0B><>Ӽ\0<1D>]<5D>/<2F>=<3D>vI<>J<A<><05><>X,M<><4D>e<EFBFBD><65>;G\0002x|&\n<EFBFBD>tS<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>c4u<EFBFBD><EFBFBD>}<15><03>pv]\"9x_Ob<4F>'S<>K<EFBFBD><0E><>(<28>K<EFBFBD>a<EFBFBD>D<EFBFBD><44>X<EFBFBD><58><EFBFBD>Sm<>Ǎ煇<><03>3<01><><EFBFBD><EFBFBD>_<;<3B><>T<><54>M<EFBFBD><4D><EFBFBD><1F><>M<EFBFBD>\rHo<EFBFBD><EFBFBD>*<2A><EFBFBD>_<><15><><EFBFBD><0C><><0E>-ޘR<DE98><01><>'N<>U:<3A><><EFBFBD><D7AC>H<>ڪ<EFBFBD>%\0<EFBFBD>5<EFBFBD>g-t<>\ri<EFBFBD>k5<6B><35><EFBFBD>\n<EFBFBD><04><>`<60>Hs<01><>ͯis<69>~qOo<19><>\r<EFBFBD>^m>\r<EFBFBD><EFBFBD>O<EFBFBD>/f<>&?w<><77><EFBFBD> <09><>r<1D>3*}<7D>t<74><<3C><><EFBFBD>wO<77><4F><EFBFBD><EFBFBD>\\e<18>V&d%}!.<2E><><EFBFBD><EFBFBD>{J<EFBFBD><EFBFBD>fם&Fx<46>8+R<><52><EFBFBD>:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,x<><78><EFBFBD>\r<EFBFBD>^<5E><04><>2u<32><75>V]<5D>qOs]<5D><>x=#C<>I}<7D><>e<EFBFBD><65><EFBFBD>1bҚ<62>o<EFBFBD>t<EFBFBD>J<>I<EFBFBD>wP<77>\$v<EFBFBD><EFBFBD><EFBFBD><EFBFBD><Fp<46><<1F><><EFBFBD>yN<79>\\<EFBFBD>\0<EFBFBD>=<3D><><EFBFBD><EFBFBD>+5<><35>Pl<50><6C>\nS<EFBFBD>ȳ<EFBFBD><EFBFBD><EFBFBD>Ӿ<EFBFBD><EFBFBD>\\6탿v<EFBFBD><EFBFBD>i<EFBFBD><EFBFBD>9q4<EFBFBD>g#<23><><EFBFBD>|<1C><><EFBFBD>Ԥv<D4A4>z<EFBFBD>K<EFBFBD><EFBFBD><DEBD>t<EFBFBD>/<17>/<2F><><EFBFBD>5<EFBFBD><35><EFBFBD>j_I<5F><49>o%!7I<37><49>t<EFBFBD><74>Q<EFBFBD><51><EFBFBD>k<EFBFBD>\n<EFBFBD>M<EFBFBD>wLM<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pu!0K<30><4B>\n/W<><57><EFBFBD><EFBFBD>]ڐ<><DA90><EFBFBD>[<5B>﮴jz<6A><7A><1F><>)<29><19>}\\X<EFBFBD><EFBFBD>)<29>O<EFBFBD><4F><EFBFBD>>}<7D><>S<19><><EFBFBD>8<EFBFBD>@\0<EFBFBD>1<EFBFBD>G<EFBFBD>{?<3F><>yU<79><55>a<EFBFBD>G<03><>/<2F>/<2F>K<7F>~<1B>K<EFBFBD><4B><05>-<2D><>O_7<5F>}<7D>*<2A>Oa<4F><61>{z%<1E><><EFBFBD><EFBFBD>/<2F><>,Ե<>\0#<23>S<EFBFBD><53><EFBFBD>=<3D>`<60>7<EFBFBD><05>aZL<07><07><><EFBFBD>{<EFBFBD>H^<5E>><3E>p<EFBFBD><70>7EO<07><>\"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD>{<EFBFBD><EFBFBD><EFBFBD>=TN<54>뽏<EFBFBD>]<5D><>G.Ԡ<><D4A0><EFBFBD>W<EFBFBD><EFBFBD><7F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?]<15>O߿vLVFʝ<1E>{<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>J<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Tmio<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<40><>xO<78>?z<>/0O<30>Y<EFBFBD>|.P<0F>b|+ۏ<><DB8F><EFBFBD><17>\n<EFBFBD>JaW<>/<2F><>+!<1F><><EFBFBD>?<0B><12><>\\V<EFBFBD>_<EFBFBD>W<EFBFBD><EFBFBD>|<02><>=<1D><><EFBFBD><EFBFBD><EFBFBD>O<EFBFBD><4F>ʆ\\<12>F<EFBFBD>hab<61><62>oC<6F><43>@<40><>Oq<4F>|<7C><>\nz<EFBFBD><EFBFBD>O<EFBFBD>2<0E><><EFBFBD>j=E<>Q<EFBFBD><51>I<03><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>v07<30>4͈ͮ7<CDAE>=<3D>z<EFBFBD><7A><EFBFBD><1B>2<EFBFBD>M<EFBFBD><4D><EFBFBD>=)<29><>M7[<5B>!<21><><EFBFBD><EFBFBD>j<EFBFBD><6A><EFBFBD>J <09><>}<7D>^<0F>w<EFBFBD><77><12><><EFBFBD>m<EFBFBD>hz<68>x9<78>{<EFBFBD><EFBFBD>ݶM<EFBFBD><EFBFBD><EFBFBD><08>A<01><>|<7C><><EFBFBD><EFBFBD><14><><EFBFBD><1F>>o<>)<29>0<EFBFBD><30><EFBFBD><13>\"<EFBFBD>Bx}40<34>K<EFBFBD>(<28>\rmݹykߧ<6B>1|<18>OnP<6E>t<EFBFBD>謔<EFBFBD>{<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Cq<EFBFBD>ۏ<EFBFBD>\\d<EFBFBD>1ҟ<EFBFBD>a.u<17><1E><>]t<>7<EFBFBD>cn<63><6E>Y<EFBFBD>DEV<45><56>d<EFBFBD><64>5(}<7D> gu\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><0B><T<><54>\\<EFBFBD><EFBFBD><EFBFBD>\$<EFBFBD>cԫ<>*T<04><><EFBFBD><EFBFBD>֜;<3B>[<5B><0F><>q{<EFBFBD><EFBFBD><EFBFBD>]U}ն <09>_t<5F><74><EFBFBD><EFBFBD><14><>5ud<75><64><EFBFBD>kmq_7<DEBE>K<EFBFBD><15><>><04>+y{<EFBFBD><EFBFBD>&<14>a?<3F>>N,<2C><>5<EFBFBD>Q<EFBFBD><51><EFBFBD>^<5E><>}<7D>ѡ.}aEr><3E><>+<2B>̧@<40><><EFBFBD><0E><><EFBFBD>n<EFBFBD><6E><EFBFBD>?ce|X}'o<1E><>c<EFBFBD><63>e_<65>vo<76><12>{<EFBFBD><EFBFBD>}-<2D>x<EFBFBD>~S<>_<EFBFBD><1D><>=<3D>wn\0;<3B>=<3D><>|<7C><03>'<27>8<EFBFBD><EFBFBD><7F><EFBFBD><EFBFBD>']<5D><>{CÏ<EFBFBD><EFBFBD>n<EFBFBD>?<3F><>[<5B>uI<75>ֱ4<D6B1>)~<7E><><1F>=<3D>uM<75><4D><EFBFBD>=<3D><>1<EFBFBD>]>F\$<EFBFBD>sR<EFBFBD><EFBFBD><EFBFBD><17><><EFBFBD>O<EFBFBD><4F><EFBFBD>\r<EFBFBD><EFBFBD><EFBFBD>Mw{<02>/I<><49>]<5D><>?<3F><>5<EFBFBD><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD>N<EFBFBD><4E><EFBFBD><04><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>6<05>u<EFBFBD><75><EFBFBD>R<EFBFBD><04>yJ<10><> t<74><7F>Z\"<1D><>p<0F><><EFBFBD>t<EFBFBD><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>V_ȩ<5F><12><><EFBFBD>f<EFBFBD>sۇo<1F>z<EFBFBD><7A><EFBFBD><EFBFBD><EFBFBD>f<EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD>7̫<37><><7F>fV<66><02>AY\$<EFBFBD><EFBFBD><EFBFBD>|<7C><>z<><7A>[n<>P;<><7F>[<5B>\0<EFBFBD><EFBFBD>[<5B><>/<2F><>eCҝ<43><D29D><EFBFBD>O)w<><77>U<EFBFBD>BV<42>W<EFBFBD><57>\\<0B><><EFBFBD><EFBFBD><07>p<EFBFBD>T<EFBFBD><54>]<13><><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD><5F><EFBFBD> <09>G<EFBFBD><47><EFBFBD>#<23>_v}<7D><11>5^<5E><EFBFBD>M<EFBFBD>/<><7F><EFBFBD><0C><EFBFBD><EFBFBD>\n<EFBFBD>D<EFBFBD><EFBFBD><EFBFBD>d<EFBFBD><EFBFBD>K<EFBFBD>\0B<1D><>\$<EFBFBD><EFBFBD><EFBFBD>Qz<51><EFBFBD>j <20><10><><EFBFBD>MD)5<10>đ<EFBFBD>4<EFBFBD>!V<><56><EFBFBD>\"<EFBFBD>X<><58><EFBFBD>U<EFBFBD><55>\$<EFBFBD>\\!W:<3A>2Oʦ<4F>p<EFBFBD><70>!V\r9b<><62>ʰ <09><><EFBFBD>U<EFBFBD><55>1J\$<EFBFBD>.<2E><>萧 <20><><EFBFBD>p<>@.<2E>|<7C><><EFBFBD><EFBFBD>\0T<EFBFBD><EFBFBD>Y<EFBFBD><11>)<29><03><18><>%؈V\0<EFBFBD><01><>J<EFBFBD><4A>f<EFBFBD><66>s\0R<01>%<25>f<EFBFBD>p<EFBFBD><17><><EFBFBD>4\n\0<EFBFBD><16>G<><15><03>V<EFBFBD><56><EFBFBD><12><>j<EFBFBD><15>1<EFBFBD>A<0C>q\n<EFBFBD>eȢA<C8A2><41>tm4<6D><34><15><><EFBFBD>O)<29>Ay<04><0B>?\r[<5B>^tTD<54><11>@^G<01>y<>H<0C><>ה@i%<01><><EFBFBD><1D>\r<EFBFBD>Y<EFBFBD>8<EFBFBD><EFBFBD>+ʸ<>_<EFBFBD><5F>(٠E,dW<@W<><57><EFBFBD><EFBFBD>Ar<41>H_<>\$<EFBFBD><EFBFBD>;| Q2K<32><4B>X<EFBFBD>-<04><>B<04>˵w<CBB5><77><EFBFBD>P<EFBFBD>CYD<59>2<>%<25><>WT<11><>]2s<><73>o<04>Z<02><>T<EFBFBD>@)jurKo<16>-<02>\\L`<1B><16>'Z<>/\0<EFBFBD><EFBFBD><02>n<EFBFBD>w<EFBFBD>s<EFBFBD><73><EFBFBD>a<EFBFBD><61>z<EFBFBD>z<05><1B><>nk h<>lp<6C>Ua<55>K<EFBFBD>W<EFBFBD>6 \r<EFBFBD><EFBFBD><EFBFBD>\n<EFBFBD>i<EFBFBD><01><> o<><6F>rV<01><06><><EFBFBD><EFBFBD><EFBFBD>9``:<04><>z(.h<0B><17>#-<2D><><01><<07>N<EFBFBD><1F><17>l<EFBFBD><04><>[P<11>tK5E<35><01>Zx<5A><78>d<EFBFBD>p\n<EFBFBD><10>+<2B>%<25>\0 @Utix<69><78><EFBFBD><EFBFBD>X<EFBFBD>p<>j<EFBFBD>7<EFBFBD>aO<61>щZ<>h<EFBFBD>`NU<4E><55>Ł<EFBFBD>)<29>4Ҳ<34>È<EFBFBD><C388>Qk(<28><>M<> <20>Yb<59><62>-<2D>D<EFBFBD>\"<EFBFBD><03><01><0F><>8%@ <09>G<EFBFBD><47><EFBFBD><EFBFBD><0B>.d<05>b<EFBFBD><EFBFBD><C283><EFBFBD>.\n<EFBFBD>z<>p<>W<>9<EFBFBD>g&˰<>C<19><14><>\nв^g<><67><05>i7<69><37>-XїV\0<EFBFBD><EFBFBD>\n<EFBFBD>{ӆ,m<><6D>5<EFBFBD>j<0E>1Uk<17>\n<EFBFBD><17><><EFBFBD>_<EFBFBD><5F><EFBFBD><EFBFBD>`-,<2C><0B><>5e4<65><34><EFBFBD><EFBFBD>y<EFBFBD>_\n<EFBFBD>ق2<EFBFBD><EFBFBD><EFBFBD>й<EFBFBD>3<06><><EFBFBD><EFBFBD>ɓ@\$l<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Fa<46>ߠ<EFBFBD>2 f<><66><EFBFBD><EFBFBD><EFBFBD>\"<EFBFBD>,Ba<42>-0<>'Fȍ<46>.h-<2D>iW<>~U<><55><0C><> DҊ<16><>`<60><>ќ!V84̒<34>\r<EFBFBD><EFBFBD>+I<06><><EFBFBD>5<EFBFBD>&L/X<>3_<><5F>%<25>{<12><>E<EFBFBD>Z<14><><EFBFBD><EFBFBD><EFBFBD>%<25>s(<28>6<EFBFBD>MQ<4D>9<><39><EFBFBD>q<EFBFBD>Ytf<07><>غ<EFBFBD><D8BA>&\\M<><4D>:86\rั<>_A~X\n\n<EFBFBD>X<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M!<21><>5<>̑<EFBFBD><CC91>1p<31><70><EFBFBD><11><v-eg<65><67>5<EFBFBD><35><EFBFBD><EFBFBD><EFBFBD>Uk3<15>\0<10>%?<3F><><EFBFBD><<3C><04><>-</<2F>d<EFBFBD><07><<3C>y@<40>M<01><>0-&<26><0C><> V<>h <09><>\0<EFBFBD><EFBFBD>|<7C>c?h6c`<60><><EFBFBD>+s<06>\r<EFBFBD>&!0<><18><>gj_<06>=<3D>3<EFBFBD><33>P<EFBFBD> <20>Ã<EFBFBD>ٔ<>CE3P{ج<EFBFBD>B\\&<1D>l(7@<14>Q<EFBFBD><51><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\r<EFBFBD><17>'0<><30><EFBFBD>B'b<>eXl<1E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD>'N2{<1B><>m=<3D>x<EFBFBD><78>c<EFBFBD><63>*<2A>><3E> l<>Zg4Gg<47><67>\r<EFBFBD>)<29>\0 <09><>\0AP<EFBFBD><EFBFBD>A<><41>%<25><><EFBFBD>j\0\"<EFBFBD>Gg<EFBFBD> <09><><EFBFBD>F/<2F><>:<3A><>d<EFBFBD><64>y<EFBFBD><79>yH6<48><36><EFBFBD><05>kf2<66><32><EFBFBD>dfK<66>r`<60>B=<3D><>ź{=F~̗<><CC97><EFBFBD>b<>aUt<1D>}<10>!B<><1D> <07>&<26><̗<>D2^f[<07><><EFBFBD>%<25>?F <09>/<2F>c<EFBFBD><63><EFBFBD><EFBFBD><EFBFBD> <16><><EFBFBD>Y/B <09><><EFBFBD>\0(AmB<6D>?<3F><><EFBFBD>\rt*<2A>plȡY\0+<2B>4<EFBFBD>Y<EFBFBD><59>!<21>V<EFBFBD><56>I<EFBFBD>B#<23>w<08><15>'<27>EI<45><49>\\<EFBFBD><0F>^&<11>?(M\"<EFBFBD>Ä<EFBFBD><02><>z<11><17>ZZ<>0\0M<EFBFBD>j<EFBFBD>\r<EFBFBD><EFBFBD>-HW!4BC_<43> Y;8I<0C><><EFBFBD>%i<><69><EFBFBD><EFBFBD>1<16><>a<EFBFBD><61><EFBFBD><EFBFBD>'z<>]<5D>;<18>7L<37> <09><>e*<2A><>霢<EFBFBD><E99CA2>+<2B>la73<37><33><EFBFBD><06><13>/<2F>_p<5F>X<EFBFBD>A<EFBFBD>c<EFBFBD><63><EFBFBD><13><1C><07>na}<><C281><EFBFBD>r<17>(<28>:<3A><><EFBFBD><EFBFBD>AمU<><55>1&&́a<CC81>'F<><46>3<1B><>n<>K<EFBFBD>/`<60><><EFBFBD><14><1F>S<EFBFBD>X9A<39>cu\n<EFBFBD>1<>_p<5F><70>1<>c?\n<EFBFBD><EFBFBD><EFBFBD>U<><55>a<EFBFBD><61><EFBFBD><EFBFBD>(<28><><10>\0<EFBFBD>h<10><><EFBFBD>B<EFBFBD>cu\n<EFBFBD><EFBFBD>3&2lL<18><>G<EFBFBD><47><EFBFBD><EFBFBD>\\4xX<EFBFBD>a!d<><64>j<EFBFBD><6A><EFBFBD><16>4<EFBFBD>V<EFBFBD>g<EFBFBD>)<29>Ն<EFBFBD> <09><1A>-<2D>6з<36>!<21>+<2B><> \nk<1B>7<EFBFBD>#Xޯ<58>6Lݍ<4C>ZF<5A>m2<18><><EFBFBD>(V<><56><EFBFBD>\"<EFBFBD>E<EFBFBD><EFBFBD>uX2<EFBFBD>\0c<EFBFBD>Uų<EFBFBD>5&;<3B>,X\0Kl<EFBFBD><EFBFBD>`=32VB<56><42><EFBFBD>`<60>gjz<6A>4<EFBFBD><34> <20> x<78>*<2A><>\n~<0F>y<EFBFBD><79><0C>Z<EFBFBD><5A>h_t<5F>5<EFBFBD>{/`<13>\$*<2A>^<5E> Q<>\"X<08><>4<EFBFBD>d<EFBFBD><64>h֤!<21><>L<EFBFBD><4C><<3C><>f<EFBFBD>V@<40><>v<1A>e<EFBFBD><65><EFBFBD>[b5<06><19>!<21>G<EFBFBD><47>X^0)<29><><EFBFBD><EFBFBD><&H<><48><18><>/<2F><><0C><1A>D<EFBFBD>0 A.7l<EFBFBD><EFBFBD><EFBFBD>F<07><>T<EFBFBD><54><EFBFBD><EFBFBD>!9<>K<4B>~<7E><>L҂<>\0<EFBFBD>My<EFBFBD>\\=<3D>*[<5B>0.<2E>wZቚ<5A>Zke<19>3Wf<57>U<EFBFBD>+8<>Ud<55><64>2<>_<EFBFBD><5F><EFBFBD><EFBFBD><EFBFBD>W<EFBFBD><57>-<03><02>SP<53>Y<EFBFBD>P<11><><EFBFBD><EFBFBD>F*mH ,+6fR<66><52>Y<EFBFBD>3a'<06><>#<<3C>a\n<EFBFBD>UWB L<><1E>=0<>ɼ\$<EFBFBD>'Rȭ|TVH<56><48>I<EFBFBD>A<EFBFBD>Oz<4F><04><>v}L<><4C><EFBFBD><EFBFBD>4<EFBFBD><06>ن<EFBFBD>?v<0C><><17>4<EFBFBD>g<EFBFBD>N<EFBFBD><4E><EFBFBD>%V.<2E>\0<EFBFBD>D;lz<6C>`<<3C> ؈<><D888><EFBFBD><EFBFBD>DKgQR\"s9<EFBFBD>WQY<>4lzν<7A><CEBD>t<><74><EFBFBD><1F><>h<EFBFBD><68>uz<75>&<26>c<EFBFBD><12><1C><>&\$<EFBFBD><EFBFBD><EFBFBD>cD<EFBFBD><EFBFBD>!<21><>04^<5E>4M!<21>35<16>%Wh<>lbZ]<5D><><EFBFBD>?<3F>b<EFBFBD><62>Z{<13>'<27><>1<EFBFBD>\"<EFBFBD>><3E>'٣<><D9A3>iΕt<CE95>#\$h@IWZR<5A><52>.<2E>Ҥ<EFBFBD>YA&<13><><EFBFBD>ҳ<EFBFBD>_\n<EFBFBD>ɝ<EFBFBD>E<EFBFBD>eL.Y<>ćH<C487><48>,<2C>3N<33>tk<74>Z|'i<><69><EFBFBD><EFBFBD>\"f 90H'<27><><11>z<EFBFBD><7A><EFBFBD>0<EFBFBD>Z<EFBFBD><5A>)'<27>ԮLk͏<6B><CD8F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<11>BF<07>a1O\0<EFBFBD><12><>+ V&<26><> <09>/<2F>*<2A><>\0<EFBFBD><EFBFBD>XfW<0C><><EFBFBD>0<18><>]<5D><>[x?M)<29><10>2<EFBFBD>F<EFBFBD>!<21>f<><66>iI<>\n<EFBFBD>ܤ,Ԡ<><D4A0>ۙ<<3C>0<><30>,X]<5D><>Λ<>\$t<><74><EFBFBD>B#t<>խ<EFBFBD><15><>SHh<48><68><EFBFBD><0B><><EFBFBD><EFBFBD>~\\\\*J)<06>n<10>D<EFBFBD>N<EFBFBD>DѼ<44>nT<6E><54><EFBFBD>bA<62><41> R<0F><><05><>!{u<EFBFBD><EFBFBD><EFBFBD>)<29>^<5E><>mz<6D>E!<21>nt<6E>f<EFBFBD>[{6<EFBFBD>q֤<EFBFBD><EFBFBD><EFBFBD>yF<EFBFBD><EFBFBD>ƀ<EFBFBD><EFBFBD><0E>/<2F>\n<EFBFBD><06><>\r<EFBFBD>B:<I\"<EFBFBD>\\*<2A>M<EFBFBD>hC<68>[o><3E>f #<23>p<EFBFBD>n C<0F>K<EFBFBD> q<:`6ߎ<07>EK4\$,ة<><D8A9>@<40><1D><01>wUQ<>4T\0<EFBFBD>m<EFBFBD>Ԉ<EFBFBD>\\ZD1ٸ3<EFBFBD>%>`J<><4A><EFBFBD>1o<15><>q<>{/<2F><>|<7C><>kr<6B><72>c<EFBFBD>k<EFBFBD><6B>j|<7C>q<EFBFBD>oX<6F><58>&<26>aF<61><46>Y<1B>%4<>~+\$><16><>;^<1D><>|[1<>w8<77><38><EFBFBD><EFBFBD><0F>vz<76><7A><03>C<EFBFBD><43> <20>@<40>7<EFBFBD>o<EFBFBD>:<3A> H<1F><>!<21><><EFBFBD>Ŕ<EFBFBD>4<EFBFBD>`\r<EFBFBD>JaD<EFBFBD><EFBFBD><01>|\"<EFBFBD>M<EFBFBD>XPp<0C><><EFBFBD>ܻ؋N<D88B>Y<EFBFBD>hX<68><58>O<EFBFBD><4F>R<EFBFBD>25<32><35>;8){<04>(<28>>0إ*A<><14>\n)<29><><EFBFBD><EFBFBD>L<EFBFBD>-<2D>ba/w<><1C>0<><30><EFBFBD><EFBFBD>JG8.C\"s<EFBFBD>1m<EFBFBD><EFBFBD><EFBFBD>@*<2A>T<EFBFBD><54><EFBFBD><EFBFBD>\$<EFBFBD>w><3E><><14>L<04>!<1C>M<EFBFBD><4D>}<7D><17>6<EFBFBD><36><EFBFBD>W<EFBFBD><57>U<EFBFBD><55><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,l=1!Qh<51><68><EFBFBD><EFBFBD><03>/<2F>-<2D><><11>i<EFBFBD><69><EFBFBD><EFBFBD>\n<18><><_<>6<EFBFBD>GF<47>Fp<><70>:<06><><08><><EFBFBD>b<EFBFBD>6-<2D>܉*<2A><><06><>7[V<><56>qH<71><48><EFBFBD>:G<><47>FFqJ<71><4A><EFBFBD>\nJR<EFBFBD><EFBFBD>-[<5B>'<27>Ip\$)%Ìd<C38C><64><EFBFBD>I<><49>v<06>d<EFBFBD><64> 鉣<0B>q@<40>LS<4C>ɇ<EFBFBD><C987>/<2F> E<>p<EFBFBD><70>1<>ɀH<><48><1A>SN<53>y<>dM<>#F=Yړ<59><DA93><EFBFBD>&<26>i_<>Q\$߱<EFBFBD>Z<EFBFBD><EFBFBD><EFBFBD>A<EFBFBD><EFBFBD>ddrƼld\"<EFBFBD>~<7E>!<21><>;n<><6E>e<EFBFBD>{<EFBFBD>ЎQ<EFBFBD>ޠ<EFBFBD>j <09><>q<EFBFBD><71><EFBFBD>F<EFBFBD>ΌsFrwR<77>ͶR<CDB6><52><EFBFBD>q<EFBFBD>Q<><51>q<0C><>**<2A>pJnL<6E>7 Y<><59><15>'<27><><EFBFBD><EFBFBD><EFBFBD>Fn؆<>,^G<>F\\<EFBFBD>(<28><>{V<EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><07><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;L<>ۉhR<68><52>ӂ<EFBFBD><D382>K<EFBFBD><4B>J<><4A>5җ<><D297><EFBFBD>#C;><3E>Sv5[<5B><><EFBFBD><EFBFBD><EFBFBD>#O<>~<7E><1A><><EFBFBD>TX<54><58><EFBFBD><EFBFBD>e<EFBFBD><14>@<40>)<29><03>4<EFBFBD><34><EFBFBD><EFBFBD>ݬV<DDAC><56>.<2E>8LTU<54><55><EFBFBD><EFBFBD><EFBFBD>F<46><C28D><EFBFBD><04>Lف<>cdF<64>|<7C>8<>l<EFBFBD><6C><EFBFBD><EFBFBD>ci<63><69>T~<7E><>6<EFBFBD>k<EFBFBD><0B><>Uqn<06>4|n7<6E><37>jR<14>Eo2<6F><32>!<21>n<EFBFBD><6E>)<29>\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!g4@c<>6<EFBFBD><36><EFBFBD><EFBFBD><1E><><EFBFBD>',o<18><><EFBFBD><EFBFBD>=6<><36><06>B8<1B><><EFBFBD><EFBFBD>^<5E>=<3D>m<EFBFBD>20<32><30><EFBFBD><EFBFBD><EFBFBD>KxF!<21><>TȦ<>qX<71>Qu!<21>N<><4E><EFBFBD><01>dh<>)<29><13>?jtB<74>2*(<13>.<2E><><EFBFBD><0F><>RAH,Z<>'<27>QB<51><42>&\0֛<EFBFBD>9<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>݆<><DD86>v<EFBFBD>4çx<C3A7><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD>mʞ:=x<><78>nޫA&<26><><EFBFBD><EFBFBD>:[<5B>gbU<62>t<EFBFBD>QtN<74><4E>:Z<>n1Q^<5E><>[Cv<43>pS<70>(禮<><E7A6AE><05>I<EFBFBD>8X(<18><><EFBFBD><EFBFBD>*<0C><><EFBFBD><EFBFBD><05><>TQ<54><51><EFBFBD>#<23><>ݎg<1C>/<2F><>8<EFBFBD>\"_<19>iq;<3B><>G<EFBFBD><0F><><EFBFBD>?<14>ҋ<EFBFBD><D28B><EFBFBD>w<EFBFBD><77>n\$c<EFBFBD>>P<><02>m<EFBFBD><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U㽀d<E3BD80><14>qۤx<DBA4>I<EFBFBD><49><EFBFBD><EFBFBD>G<EFBFBD><47><08><><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD>̟<EFBFBD><CC9F>i <0C>PQ<50><51>9<EFBFBD><39><EFBFBD><EFBFBD><EFBFBD>Ys<59><73><EFBFBD><EFBFBD>d\0<EFBFBD>]<DZ<05><1E>)<29><><EFBFBD>L<EFBFBD>c<>AX<><58>/[p%D@J<><4A>u|ziA;<3B><10><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,u<><75><EFBFBD><EFBFBD>\\|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><1A>~CB><19>8<EFBFBD>`K#<23>ƅSPۉzO<18>Q<EFBFBD>\0<EFBFBD><EFBFBD><EFBFBD>W*<2A><>M~E<>\nc<EFBFBD>Ǹ#<23><07>><3E><>t<EFBFBD>1<EFBFBD>c<EFBFBD>G<EFBFBD><0B> I<><49>}<7D><><EFBFBD><EFBFBD>R<0B><>x<EFBFBD>5<EFBFBD><35><0B><><EFBFBD><EFBFBD>S<EFBFBD>T*XM\"n;J\\<EFBFBD>L<EFBFBD><EFBFBD>+\$<EFBFBD>X¨̭<EFBFBD><EFBFBD>{1k<EFBFBD><EFBFBD><EFBFBD>IJ\$\"Z@<40><>u<EFBFBD><75><EFBFBD><1F>8_{<14><>u<EFBFBD>k<EFBFBD>.<2E><>t<EFBFBD>ݏ<EFBFBD><01>><3E><><14>2 <09><><EFBFBD><EFBFBD><13><>d<14>PS QNg<4E>v<0C><><EFBFBD><EFBFBD>0<EFBFBD>s<EFBFBD><73>jd<14><>x<EFBFBD><78>_o<><6F>v\\<EFBFBD><EFBFBD>mĒ<6D><1E>,FQ<46><51><EFBFBD><EFBFBD><EFBFBD>|v<><76>^<5E>SY <09> c\$<EFBFBD>|v<>}<7D>m<><6D>2ǻ<03>m<EFBFBD><6D>Z9&<26><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<13><>B.<2E>2H<32>\0<1E>=<ؐ<02><><1E><><07><>Dd3<64>bn<62>&<26>l<EFBFBD><6C><EFBFBD><0F>J<EFBFBD><4A><EFBFBD><EFBFBD>m><3E><><EFBFBD>q#<23> <20><02>H\\j 4<18>@x<>C<EFBFBD>C<>z<0E>Sl<53>q<EFBFBD>I<1F>?<>\r '<27><><EFBFBD><EFBFBD><EFBFBD>6GtG!J\\^Dkŧ<6B>@<40>b<><02><><1B>T<EFBFBD>u'<27>(ȉ><3E><><05><><EFBFBD>ܪj<DCAA>R?<3F><><EFBFBD>HQ<48><51><1D>2˴<32><CBB4>ڟU'<27>]<5D><1C>Rl<52><6C><EFBFBD>/+<2B>1<EFBFBD>/O֞<4F>F<1B><17><><EFBFBD><EFBFBD><1A>%}<0E><><EFBFBD>:iG&<26><>Z<EFBFBD>\0n<14> <09><>`)`a<><61><01>\"fQԋ<EFBFBD>w<EFBFBD>6<><36><EFBFBD>~*<2A>#<23>1<EFBFBD><31><EFBFBD>8<EFBFBD>'<27>n<01><><EFBFBD><EFBFBD>x/dc<64><63>`<60>WQ><1C><><EFBFBD>Ї<EE90AA><D087><14><><EFBFBD><EFBFBD><EFBFBD>#<23>K<EFBFBD><13><>N<EFBFBD>\$N<EFBFBD>!O(<01><03>@G<><47>y<EFBFBD><79><EFBFBD>E<EFBFBD>\$)F[{!<21><><0F><01><><EFBFBD><EFBFBD>T #<23><>J<EFBFBD>|<7C><><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD>X%<25><>o<EFBFBD><EFBFBD>w|<7C><><EFBFBD><EFBFBD><EFBFBD>Q4n<34><6E>`<60>ᑨ<EFBFBD>Q<EFBFBD>c<EFBFBD>eu<65>s<EFBFBD>2<EFBFBD><32><EFBFBD><1F>#\\<EFBFBD>g<EFBFBD>Ij<EFBFBD><EFBFBD>Gjj+Tv<54>ׯDc<44>I*x<12><>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2\$<EFBFBD>}j<><6A>?[<5B>t<EFBFBD>q<EFBFBD>_\"<EFBFBD>h%<25><1D> ;<3B>W<EFBFBD>\n<EFBFBD><EFBFBD><EFBFBD>#Dj&<26><>L<>D<EFBFBD><44><EFBFBD>t<EFBFBD><74><EFBFBD>S#F@<40><>'<27>N<EFBFBD>K<19><>p<EFBFBD><04>E<03><><EFBFBD>m<EFBFBD>\$cIQ<EFBFBD><EFBFBD>ۍ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/MR,<2C>z<EFBFBD>a<1D>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD>b<EFBFBD><10>O<06><><EFBFBD>R{<08><><EFBFBD>)<29>Ly<4C>`s<><14>0E#܊<><DC8A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)2<><14>?<3F>tK|<7C><><EFBFBD><EFBFBD>gO<67>`<60>:E<><1F>&f=<3D><>h<EFBFBD>\0RR;uvr<76><05>۶<EFBFBD>#o<>\$<EFBFBD>9I<EFBFBD>g#RKd{<EFBFBD><EFBFBD><EFBFBD><EFBFBD>]<5D><>y<EFBFBD><79><06>ك^Y.<2E><><EFBFBD><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD>M;<3B><>\0<EFBFBD>'P^<5E><#<23>6<EFBFBD>*<2A><><15><>|<7C><><EFBFBD><EFBFBD><EFBFBD>nGYI<59>S<EFBFBD><53>X<><19><04><>tK<1F>N<EFBFBD><4E>{2<EFBFBD><EFBFBD>Hb<EFBFBD>UD(ޱ<><0B><><EFBFBD><EFBFBD>3<EFBFBD>ii!o<><6F>MID|<7C><><EFBFBD><13><>Rzޑ'w<05><>m<EFBFBD><6D>G 5)<29>O?<3F>Zq<03>P+<2B><><EFBFBD>\nF%<04>?W[\"<EFBFBD>Ph<10><><EFBFBD>W<EFBFBD>\$I<EFBFBD>'<27><><EFBFBD>?<3F><><EFBFBD>TJ<04>,<2C>nJ<1C><>G<EFBFBD>G<02><><04><><EFBFBD><EFBFBD><EFBFBD>\$؟<EFBFBD>@<40><1C>*<2A><><01><12>T<EFBFBD><54>`<60>R<EFBFBD><52><EFBFBD>s<EFBFBD> <09>Q<EFBFBD>G8<47><38><EFBFBD>eF˔T<06><><EFBFBD>\$y/<2F>]<5D>^\0<EFBFBD><18>R3<52><12>oi<12>#<23>))F<><46><EFBFBD>@n<>e)/Y=#RR<52><52><EFBFBD><EFBFBD>+`c7ȆT<C886><04>`<60>?<3F><>iB<69><42>F<EFBFBD>v<EFBFBD><76><EFBFBD><EFBFBD><EFBFBD><EFBFBD><15> <20>%'<27>Q8<51>@/<2F>*<2A><><EFBFBD><EFBFBD>^<5E><>4<EFBFBD><34><EFBFBD><EFBFBD>ؤz<07> =\$<EFBFBD><EFBFBD>}\0<EFBFBD>M<EFBFBD><Z<>O'<27>\$<EFBFBD><EFBFBD>mB<0B><15><>0NA\r><3E><04><><EFBFBD><EFBFBD>\$<EFBFBD>gJod<>+<2B><17>M<>dr<64><72>2<04><>ۏ<EFBFBD>(<28>a<EFBFBD>Z<EFBFBD>S<EFBFBD><53><EFBFBD><1C>1q9<1F>?좉BNMRtʨ<74>@<40><><EFBFBD><EFBFBD>_<EFBFBD>U<EFBFBD><55><EFBFBD>8\$<EFBFBD>BX<EFBFBD>b?̫a<CCAB>ͯ\0<EFBFBD>><3E>uB<75><42>U<EFBFBD> W<>n\0<EFBFBD>%<25>K <20>>R<10>HN<48><4E>4:<3A>I<EFBFBD><49>8}\"x!u<>G<12>I=<3D><>) <09>c<EFBFBD>w<EFBFBD>Ý<><C39D>U<EFBFBD><55><1A>e<EFBFBD><65>(<28>D}@<40><>J<EFBFBD><4A><EFBFBD>4c<34>L<>1<EFBFBD>l<17>v<EFBFBD>?W|<7C>T<EFBFBD><0E>^<5E><><EFBFBD><EFBFBD><EFBFBD>e<1E>BiώP<CF8E>ٓ<>)<29>O<EFBFBD><4F><18>.<2E>S<>X-'<27>0Д<><16><><EFBFBD><EFBFBD>N<EFBFBD> .Xk<58><6B>b\r<EFBFBD>_<EFBFBD><EFBFBD><EFBFBD>z|<7C>aאּ<61>b<EFBFBD>#<23><><EFBFBD><EFBFBD>v@<40>NX<4E><58>t<EFBFBD><74>#%<25><><EFBFBD>ƃ<>Tz<>[<5B><><EFBFBD><14>B<EFBFBD><42>p<EFBFBD>z<EFBFBD>2Vd<56><64>B!<21>Vh<56>uT<01>IJ<49>U|x<>H\0BF<42><11>Bπ@<40>\\\n9<EFBFBD>FfI <01><><EFBFBD><0B><><EFBFBD><02>X<EFBFBD>!\\<EFBFBD><07>c,<2C>Z!-C<>te<74> 薸<>Ԕ<EFBFBD><04> <09><>՟<EFBFBD>(U<>P<>ҴYjRї<52>+LD<4C>\\<1C>H\0j<EFBFBD>զ<EFBFBD>\\V<EFBFBD>,<2C>Z<EFBFBD>ȢFB<46>2V<32><56>xx<>Q7PQC<51>|%<25>-<2D>q`<1E>H<EFBFBD><15>ˋ<0B><01>'r<> V<>Z]<5D>K<EFBFBD>v<EFBFBD>)_\\<EFBFBD>)q<><71><EFBFBD><EFBFBD>,<2C><>6o<36>. uv<75>垊<0F>Ww<02> \\<EFBFBD><EFBFBD>%Q<>˓<05>0,<2C><>vr<76><72>m;<3B>e.y<>\\v<>'<17><>t^?-<2D><07>9<EFBFBD>aI<61><49><EFBFBD>it#<23><><EFBFBD>q2<71><32><EFBFBD>;><3E>{<03>[<5B><><EFBFBD><07><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>+<2B>e<EFBFBD><65>@^<5E>-N^0<>y<EFBFBD><79>`<60><02>^<5E><><EFBFBD>≯)i<0B><18>2<05><><EFBFBD>8<EFBFBD>HE<>-<10>B`c\0N%<25><04>6{<EFBFBD>Ș<EFBFBD><EFBFBD>X<EFBFBD>9<0B><16>0<EFBFBD>il<69><6C><EFBFBD>1<EFBFBD>&p<><01>|%<25> <09>p<EFBFBD><70>C<EFBFBD><43>6<EFBFBD>1<EFBFBD>[\"u<><75><19>C\\e<EFBFBD>V<EFBFBD><1D>Xwl<77><6C>4<13>&2<><01>\0XI<58><49><EFBFBD>/2<>e<EFBFBD><05>3\0<EFBFBD><EFBFBD>15W<EFBFBD>A<EFBFBD>a\0<EFBFBD>aT6V<05><>0<>a0<>`<60>Y<>Lf0<>U\\<EFBFBD>i<EFBFBD><EFBFBD>0<EFBFBD>rLZXB3<EFBFBD>`y0<79><30>z<EFBFBD>6k<> ѱИ.N<><4E>Y:<3A>0sX<73>3ЈA<10><><EFBFBD>4 <20>,eY<65>3<EFBFBD>(Rρ<52><CF81><15><><0C>L\$<EFBFBD><10><><EFBFBD><EFBFBD>,H<>l<EFBFBD><6C><1A>kgsR\"<EFBFBD>I<EFBFBD>`<60>o\"0]<5D><><EFBFBD>#Cƃ1S4:hp<68> <09><>6<EFBFBD>e<EFBFBD>b41<34>e<11><><EFBFBD>U؍<55><D88D>Z3<13>h<EFBFBD><68>\"4G<34>ZWW<57><13>(V<1E><>1V6<1D>!YT5A<35>}<11><>k+<2B><><EFBFBD>&<26>9D<39>.<2E>U}<7D>;<1D><>-*<0B><>i<>&\$<EFBFBD>U<EFBFBD>~q'bPD<50>(<28><12><>ZF<5A>1* <09><15><><EFBFBD>=<3D>Pr<50>q,Y<>5g<><67>zc<7A>Q<EFBFBD><1D>]C<><43><EFBFBD>d<06>Z&Rv<52><76><EFBFBD><EFBFBD>0æV<18><>#<05><><EFBFBD>\r<EFBFBD>j5<EFBFBD>eP]<5D><>CX<43><58><04>˰<>+6<> <09><>Y<EFBFBD><59><EFBFBD><EFBFBD><EFBFBD><EFBFBD><06>HH<a<><61>j<EFBFBD>K\"<EFBFBD>T<><54>PX<50><58><0F><><EFBFBD>?aA\n\$ę<EFBFBD>1<EFBFBD>&<26>i<EFBFBD>;)7<05><><EFBFBD>H<EFBFBD>.2'+iT<69><54>.\"<03><>l\nڡȤV<EFBFBD>cO3<EFBFBD><EFBFBD>6<EFBFBD>mhD/3n4<>|<7C><>>XHR<48>}&so<73>Ei\rRׁ+l%!<21>p<EFBFBD><70>\$<EFBFBD><EFBFBD><EFBFBD>7N<><4E><EFBFBD>0<EFBFBD>^p<>M۠O<DBA0>E-z<>g<>%<25><><EFBFBD>1<18>!k<>G<18>U<EFBFBD><55>ǧs<C7A7><1E>\0lz<EFBFBD>9<EFBFBD><EFBFBD>B.K<>/<2F><>^=<3D>M7f<37>Lߵ<4C>rF<72>| lї<6C><D197><EFBFBD><0B><>)O<><4F>ZR#<23>7r#<23>L<EFBFBD><4C>0)<29><><EFBFBD>'<27><><EFBFBD><EFBFBD>\"<EFBFBD>^aԕ<>S*S<>/<2F><><EFBFBD>JMbu<><75>q<EFBFBD>!<21><>W<11><> <09><>sҔ&F<><46>ё<EFBFBD><D191><1F>Ɲ<05>8<EFBFBD><38>3<EFBFBD><33><EFBFBD><EFBFBD>(<1D><>9|<7C><>fQk<51><6B><EFBFBD><EFBFBD><0C>*<2A><>p<EFBFBD><70>5<EFBFBD><35><EFBFBD> t*<2A><>ͩ<06>=3<>w<EFBFBD>\nZO<><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><12>S\\<EFBFBD>Q<EFBFBD>5<03><><EFBFBD>N<EFBFBD>h<EFBFBD><68><EFBFBD><EFBFBD>#B-<1C>M+<2B>K<EFBFBD>ӕ<EFBFBD>+K\$=<3D>v<EFBFBD>6<EFBFBD><36><08>9!<21>K[NH'ZX<5A>VOD<0E>;<3B><>&<26>M<EFBFBD><4D>B<EFBFBD>FnTf<54><66>o<EFBFBD>ҝK<D29D>0<7F>N<><4E><07><><EFBFBD>U2<55>-<2D><16><><EFBFBD>D<EFBFBD><44><EFBFBD><EFBFBD><01>귎<EFBFBD><EAB78E>Q<EFBFBD>n\$<0C>e%<25>@<01><>-<2D>\0,\0<EFBFBD><1E>Չ<><D589>%<25>-ZYt)f*<2A><><EFBFBD>+>B<>8f*<1C>E<EFBFBD><45><EFBFBD>wKQ<4B><51>8N<<3C>B\\<12><><EFBFBD>Kv\\;7<><0F>tM<03><>2<1C>oLG<4C>N<EFBFBD><4E>e<EFBFBD>2<EFBFBD>G@<40>V<13><><EFBFBD>(<28><>@@\0001\0n<04><><EFBFBD><EFBFBD>0<06>\0<1A>4\0g8<EFBFBD><03><>@\0<0C><1B>pZ8<><38><EFBFBD>P@\r<EFBFBD>N\$\0l\0<EFBFBD><01>Ydz<59><C7B3><1A>+<2B><>8<EFBFBD><01>yǦ<79>\0<19>4<EFBFBD><34>\0<EFBFBD><01><><EFBFBD>dz<EFBFBD>@NP<4E><50>\0<EFBFBD>q<EFBFBD><EFBFBD><EFBFBD><EFBFBD>S<EFBFBD>'<19>@<40><>ml<01><03><><EFBFBD>@N6<4E>F\0<EFBFBD>q<EFBFBD>i<>ӌ@<1B>7\0l\0<EFBFBD>q|<7C><>Ā@\0007Z<EFBFBD>9p<01><><19>s<EFBFBD><73>=Nr<4E><72>9<EFBFBD><01><>9<EFBFBD><39><EFBFBD><EFBFBD>/<2F>7<EFBFBD><37>9<0C><>9<>S<EFBFBD><53>.<2E>Z<EFBFBD>o8<6F><01><03>s<>g?N.\0s9<EFBFBD>q4<EFBFBD>\0S<>'G<>P<EFBFBD><50>:.t|<7C>Y<EFBFBD><59><EFBFBD>'N.\0m8<EFBFBD>Zo<5A><06><0C>8N:<3A><>8<EFBFBD>s<14><>@\r<EFBFBD>6<EFBFBD>M<EFBFBD>A:<3A>ud<75><64><EFBFBD>3<EFBFBD>g*Nk<4E>I9<49><01><><EFBFBD>ד<EFBFBD>'GNg\0`\0<EFBFBD><01><><EFBFBD><EFBFBD><EFBFBD>gΠ<><CEA0>8<EFBFBD>t<EFBFBD><74>03<><33>RN8\0d\0<EFBFBD>r<EFBFBD><EFBFBD><EFBFBD>Π'aN*<2A><>:<3A>ry<>S<EFBFBD>'4\0000\0k;:s<>s<EFBFBD><73>s<EFBFBD>g_Nh<4E><68>;vq<76><71>y<EFBFBD>Ӝ<EFBFBD>,N<><4E><EFBFBD>:Ns<4E><73><19>`\rрc<D180>6\0<EFBFBD>st<EFBFBD>#<23>3<EFBFBD><33>(<28>Ŝ<EFBFBD>:jw<6A><77><EFBFBD><EFBFBD><13><>Nǜ<4E>9<EFBFBD>s<EFBFBD><73><EFBFBD>ͳ<EFBFBD>'8Ρ<38><CEA1>\0<EFBFBD>u<EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD>H<EFBFBD><EFBFBD>~<7E>i;<3B>r<EFBFBD><72>Y<EFBFBD>Ӿ<EFBFBD>N<><4E>\r:<3A>r<EFBFBD><72>i<EFBFBD><13><>Na<4E>\n\0<EFBFBD>y\\<EFBFBD>Y<EFBFBD>ǧ7O <09>-;w<><77>iـ\rg<EFBFBD><EFBFBD>b\0j<04>sT<73>ٓ<>g#<23>̞9t<><74><EFBFBD><EFBFBD>\0@N<><4E><EFBFBD>:JryS <09><>ĀN.<2E>+8<>ڀI<><13><EFBFBD><DB9D><EFBFBD><EFBFBD>;<3B>r<EFBFBD><72><19>@\r<EFBFBD><EFBFBD>N˝<EFBFBD>:bst<73> ᓓ'<1A>S<EFBFBD>W9<57>s<1C><>ޓ֧fNC<4E><43>;<3B>s<EFBFBD><73><EFBFBD>ڳ<EFBFBD><DAB3>0<EFBFBD>J<EFBFBD>M=jr<6A><72><19>s<EFBFBD><73>O{6<EFBFBD>=<3D>r<EFBFBD>I<><13>\0<1A>9<EFBFBD><39>9<EFBFBD>z8 <06><>'DNܞ<4E>9<EFBFBD>t<EFBFBD><74><EFBFBD><EFBFBD>S<EFBFBD><53><EFBFBD>OW<4F><57>;|<7C><>i瓛<69>p<EFBFBD>E<EFBFBD><45>;yl<79><6C><EFBFBD> \r'<27>N<EFBFBD>\0e><3E>s<EFBFBD><73>y<EFBFBD><79><EFBFBD>'Sτ<53>k<zx<7A><78>yɳ<79>'<27>Ov<4F><76><<3C>}<1C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><1F>џg:F|<7C><>i܀g<>N<EFBFBD><4E>a>Jr<<3C><><EFBFBD>i<EFBFBD><69>IO<49><4F>O<<3C>{<EFBFBD><EFBFBD>Iœ<EFBFBD><EFBFBD>iN:<3A>m<js<6A><03><><EFBFBD><EFBFBD>'n-t<><74>9V|T<>i<EFBFBD>䧴N<E4A7B4><4E>#9<><01><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>g<EFBFBD><67><EFBFBD><EFBFBD> ><3E>q<EFBFBD><71>y<EFBFBD><13>'<27><><EFBFBD><EFBFBD><EFBFBD>9Bw4<77><34><EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD>3<EFBFBD><33>;<3B>{D<EFBFBD><EFBFBD>ݳ<EFBFBD>'<27><>T<EFBFBD>[9y<>\0<EFBFBD><EFBFBD>3<EFBFBD><EFBFBD>'<27>Z<EFBFBD>c9V~<7E><>)<29>-<2D><><EFBFBD>NI<4E>%>:u<><75><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>iN<69><4E>m<D<7F>!<21><><EFBFBD><EFBFBD><EFBFBD>O\\<EFBFBD><EFBFBD>:<3A>s<EFBFBD><73>iٳ<69>'6<>-<2D><>:v<><01>3ߧq%<25>h\0<EFBFBD>}<04>9<EFBFBD><39><EFBFBD>'<27>P@<40><><<3C>{H\n<03><><EFBFBD>P4<50>A:y<>\0<EFBFBD>˳<EFBFBD>@<1C>d<EFBFBD>k=<3D>t<EFBFBD><74> <09>3<EFBFBD>g<EFBFBD>O<EFBFBD><4F><EFBFBD>?Nu<4E><75>Z S<><53><18><15>Q=<3D>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><10>FN<46><4E><EFBFBD>?<3F>r<EFBFBD><72>9<EFBFBD>s<EFBFBD><73>Yι<59><CEB9>>&s<><73>9<EFBFBD><39><19><><EFBFBD>Q<EFBFBD>}:xڄ<78>%4<0C>c<EFBFBD><63><EFBFBD>};<3B>u<EFBFBD><75><EFBFBD><EFBFBD>3<EFBFBD><33><0E>t<EFBFBD><74>=vMYʳ<59>H<EFBFBD><48>D\0<EFBFBD>:Jr<4A><03><>S<EFBFBD><53>/P<><50>i:^<5E><14><>߳<EFBFBD>ͭλ<CDAD><CEBB>;~z-<19>Ӵ<EFBFBD>0<><30>:<3A>q<EFBFBD><71><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(\$N4<EFBFBD>U<J<><04>9<EFBFBD>3<EFBFBD><33>/Oơq=j~<7E> yɳ<79>'<27><>L<EFBFBD>U;<ڄ<><DA84><EFBFBD>ӝ<EFBFBD>rO<72><4F><EFBFBD>:*<2A><><EFBFBD><EFBFBD>ͳ᧘()<29><>><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>XУ<58><D0A3>=<3D>u<EFBFBD>Z4<12>&<26><><EFBFBD><EFBFBD>:t<04>\0<EFBFBD><EFBFBD>hSO<EFBFBD><EFBFBD><EFBFBD>B\"<EFBFBD><EFBFBD><EFBFBD>y˴5'<27>φ<EFBFBD><CF86>9:{<EFBFBD>\n\0<EFBFBD><1A><><EFBFBD>p<EFBFBD><70>@sT<73><54><EFBFBD>S<EFBFBD>g8N<38><4E>-?Vv<<3C>ZS<><53>Ρ<>Y@r<>Y<>3<EFBFBD>'<27>P|<7C><>>6<><36>\r<EFBFBD>蓽'oϪ<6F>WCRz<52><0C><><EFBFBD><EFBFBD>h<EFBFBD>O\0<EFBFBD>M9<EFBFBD>s|<7C>y<EFBFBD>S<EFBFBD><53>P\0m?:<3A><><EFBFBD>)ʴ2<CAB4><15>j<EFBFBD><6A>@<40>}<7D><0F><><EFBFBD><EFBFBD><EFBFBD>zN➛9<E29E9B>v<EFBFBD><76>\n<07><>@N<>?<3F>D،<44><D88C> <09><>-gP7<50>!@<40>q])̔='<27>P<EFBFBD><50>;~e\0<EFBFBD><EFBFBD>s<EFBFBD>'U<>؟<EFBFBD>Brv<19>y<EFBFBD><79>'<27><>N<EFBFBD><4E><EFBFBD>9by4<79>\n<06>֧<1F>n<EFBFBD>9BZq<5A><71>*S<>g<15>7<EFBFBD>S9<53><39>-\0I<EFBFBD>'/Η<>;9<>{D<EFBFBD><EFBFBD>S<><53>&O<><4F>WD<57>|T<>j\"3רP<>*a;<3B><><0F>4'7<>d<EFBFBD><64>8<EFBFBD><38><EFBFBD><0B>3<>gѓ<>=2r9<19><>3<EFBFBD>h<EFBFBD>Q%<25><>Frs<72>\0<EFBFBD><EFBFBD>tD<EFBFBD><EFBFBD>ώ<EFBFBD>aB<EFBFBD>x<EFBFBD><EFBFBD> <09><><EFBFBD><EFBFBD><EFBFBD>N0<4E><30>8<EFBFBD><38>- <09><>_<EFBFBD>K<EFBFBD>4<EFBFBD>Y>ޅ<><DE85>Z,<2C>k(Uя<55>D<><44>\r<1C>0<EFBFBD><30>hQ<><51>E:<3A><><EFBFBD>S\n3<><08><>X<EFBFBD>= (9<><39><EFBFBD><EFBFBD><EFBFBD>O;<3B>#;r<><72><EFBFBD>Z\0<EFBFBD>g<>Ы<EFBFBD>'D<><44><04><>۔_<DB94><5F>Oh<4F>YGj<47><1E>͓<EFBFBD><CD93>,Nn<4E>O=bx]9<>TUPQ<0B><>@6q\$<EFBFBD>z~<7E>I<EFBFBD><13><>@^<5E><> i<><69><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD>Dʀ})<29>4d)P<><50>TT<54><C290><EFBFBD><EFBFBD>4^<5E><19>\r<EFBFBD><EFBFBD><<3C><><1C><>)<29>><3E><>N<EFBFBD><4E>FΉ-!:4N<34>P<EFBFBD>.<2E>><3E>{<EFBFBD><EFBFBD><19><13>(<12>w<EFBFBD><77>C<EFBFBD><43><EFBFBD>I<>3<EFBFBD>'&R!<21>cF<16><><EFBFBD><EFBFBD>S<><53>}O<><4F><EFBFBD>>*<2A><><EFBFBD>Y<EFBFBD><59>\rh<EFBFBD>Η<EFBFBD>X<01>q<EFBFBD>\rZS<>g<EFBFBD>N;<3B>IE<49><45>=!<21>3t<33><74>:PH<50><48>D<EFBFBD><44>U<1C><>t=<3D>V#<23>M<EFBFBD><4D><EFBFBD>r\rY<>TK<54>\0<EFBFBD>ԡo8<EFBFBD>y<EFBFBD><EFBFBD><EFBFBD><EFBFBD>S<EFBFBD>g<EFBFBD>N<EFBFBD><EFBFBD>WG<EFBFBD><EFBFBD>m<17>TC<54>`P#<23><>E<EFBFBD>~} ZM<5A>><3E>K<EFBFBD>z<EFBFBD><7A>Cr}\$<EFBFBD>9<EFBFBD>s<EFBFBD><EFBFBD><EFBFBD>O%<25><>9<EFBFBD>khJQӤg<D3A4>Q/<2F><>@<1E><14><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>P<EFBFBD><50>#Hʍ<48><CA8D><EFBFBD>\n<EFBFBD>D<EFBFBD><EFBFBD>PK<EFBFBD>5F<EFBFBD><EFBFBD>5<17>\0%'<27>Q٠E<>s<EFBFBD><73><EFBFBD>O<EFBFBD><4F><EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD>>V<>m<1C>;Th<54><68><EFBFBD>^<5E><>B<EFBFBD> -<08><>4<<3C><>Qs<51>)><> Iͳ<49><CDB3><EFBFBD>PB<50>};<3B><><EFBFBD>&<26><13><><EFBFBD>NL<4E>gD<12>my<>t\\<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>K\"v<EFBFBD><EFBFBD><EFBFBD>S<EFBFBD>IiL<EFBFBD>2<EFBFBD><EFBFBD>@BsE <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U<EFBFBD><55>:<3A>tU<10>T<>(<28><>M<EFBFBD><4D>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD>S<EFBFBD>)k<><6B><EFBFBD><EFBFBD>=<3D>sE)Y۔b<DB94>vR<76><52><EFBFBD>:*|<0F><>3<EFBFBD>)=<3D>ˢ<EFBFBD>:2|<7C><01>\$<EFBFBD><EFBFBD>'<27>P<14>U=:y<><0B><><13>i9Q<39><51>L\"<EFBFBD><EFBFBD>\nt((|҂<><D282>;\"<EFBFBD>uU<>sR<73>\0<16><19><1E>z<EFBFBD><<3C><><EFBFBD><17>/mbʱ<>Pze<7A>1XG/<2F>f<EFBFBD><66>b<0B>7)<29>T<EFBFBD>YZ<59><5A>'~<7E>}<7D><><08>^,O<>:<3A><>b8<62>J<EFBFBD><13>i<EFBFBD>Y<> <09>b<EFBFBD><62>ى<EFBFBD>5i<><69>Y<EFBFBD>L\"<EFBFBD><EFBFBD><EFBFBD>V<13>\"<EFBFBD>5<EFBFBD><EFBFBD><17><><EFBFBD>c<EFBFBD><63><EFBFBD>R@Jl<4A><6C><17><15><0E>4<<3C><1E>)<05><><EFBFBD><EFBFBD>SiMn<4D>;<0E>n<EFBFBD><6E><EFBFBD><EFBFBD>C<EFBFBD>f<EFBFBD><0F><19><14>:<3A>S b<>l<EFBFBD> <20>5<35>/)<29>LB`<60><> <09><><EFBFBD>U~<7E>y<EFBFBD><79><EFBFBD><EFBFBD>@<40>S<EFBFBD><1D>1%\\<EFBFBD>8Jl<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>a Z<><5A>4<EFBFBD>Z֩<>1_<31><5F><1E>&:6<>-=<3D><0F>#<23>P<EFBFBD>^<5E>SJ:n<>\r)<29><>^_<> y<><79>7<EFBFBD>~<7E><>W<57>t]*<2A><>tf<74>\"<EFBFBD>mINm<EFBFBD>4<EFBFBD>i<EFBFBD><EFBFBD>`<0C><EFBFBD><7F><EFBFBD>lw<1A><><<3C><01>]<14>p<><70>k<EFBFBD><6B>4~]PZi<5A>4%<25><><EFBFBD><EFBFBD>L2F<32>rD<72> <09>0<EFBFBD>&KL<4B>,<2C><><EFBFBD>p<70>3<EFBFBD>V<0E>-X-><3E>6S<10><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>V<EFBFBD><85<38><35>Z<EFBFBD><5A>i<05>312e<32>ۃ<EFBFBD>TG<><47><1F><05><><EFBFBD><EFBFBD>Q<EFBFBD><51>KbJP3nt<6E><74>µ<EFBFBD>Qb<0E><>4<EFBFBD><34>D<EFBFBD>ܱ<EFBFBD><DCB1><04>Wk<57><6B>f+<2B>Y<EFBFBD>SaU<61><55>͋yv<79><76>p<EFBFBD>\0¯<EFBFBD>&;P<><50>16.\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD>jb<08>b<EFBFBD><62><EFBFBD><EFBFBD><EFBFBD>;\0\0I<EFBFBD><EFBFBD>ٕ<EFBFBD><EFBFBD>4`<08>ǡ<EFBFBD>T=&<26>Lf<4C><66><03><><EFBFBD>͚<EFBFBD>6\0<06>\0<EFBFBD>EmDJ<EFBFBD><EFBFBD>р)<29><>'<27><><EFBFBD>\$83;,B<><42><EFBFBD>[`<60>3<15><>8<EFBFBD>i<14><><EFBFBD><EFBFBD>S<EFBFBD>`<60>n<EFBFBD><6E><1D><0C><>ٻ<13>\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>V<><56>\"<EFBFBD><EFBFBD>\0sk<EFBFBD>1<><19><><EFBFBD>@״<><D7B4><EFBFBD><EFBFBD>O<EFBFBD><4F>s_U<5F><0B><><EFBFBD><EFBFBD><EFBFBD>f<EFBFBD><66><EFBFBD>/<2F>af<61><66>W<EFBFBD>G<EFBFBD>~<7E><1A><15>}5<>m#يӧ<D98A>J&\"<EFBFBD><EFBFBD>Hڍ\0aj\rT<EFBFBD><EFBFBD>MPҤ<EFBFBD><EFBFBD>jw<EFBFBD>#ؙ6c<0E>C!<21>וּ<EFBFBD>ޯ}<7D>#M><3E><>\n:<3A><><EFBFBD>!<21>SV<53>_Rf<52><66>R<EFBFBD><52><EFBFBD><EFBFBD><EFBFBD>]ße<C39F><0E><0B><1C>3U&<26>T<EFBFBD><54>by`<60>U8<55>OC<><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˖\rLBx<42>3i<33>3f&<1E>J2'<27>\n<EFBFBD>j;i<><69><EFBFBD><EFBFBD><EFBFBD><<3C>}\0<EFBFBD>C'8˧<0E>@<19>+J<>,<2C><>nC<6E><43><EFBFBD>0<EFBFBD><30>DW<44><57><EFBFBD>\$ǥ>w<>V<19>XVS<56><53><EFBFBD>|<7C><>h<EFBFBD><68>M<EFBFBD> V\"<EFBFBD><EFBFBD>I<EFBFBD>'ĩ:Vh<56><68>6֎,<0C><>/<2F>f<EFBFBD><66><EFBFBD>\n<EFBFBD>3Val^<5E><><01>kMO<4D><4F><EFBFBD><EFBFBD><EFBFBD>Y-/Z<><5A>)b<><0B>\rM< <09>0<EFBFBD><30><15><>&a<0C><><EFBFBD>ڣ<><03><>\0M_?Q<06>'p<><70><EFBFBD><EFBFBD>K<EFBFBD>C<EFBFBD>qTŋp <20><><EFBFBD><EFBFBD>ߴv<DFB4>V<EFBFBD><10>{TZi5O<EFBFBD>ؗFf!U~<7E>C<EFBFBD>eURC<><43>H \n%<25><>ShUU*<07><><EFBFBD><EFBFBD>.<2E><><1B>EM)<29>ǵC<C7B5><43>R<02><><1E><><EFBFBD>X<EFBFBD>5<07><><EFBFBD>P<EFBFBD><50>\$&<26><>\r\n<EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>QU<EFBFBD>K7<EFBFBD><EFBFBD>UJ*<2A>/jb'<12><>,(<28>u?<3F><1E><>_<EFBFBD>U<11><>W<EFBFBD>k<EFBFBD>Qj<51>4i<34><69><EFBFBD><EFBFBD><<3C>g\n<EFBFBD><EFBFBD>f<EFBFBD><EFBFBD>U8^<5E>0<EFBFBD><30><EFBFBD>XI<58>[<5B><><EFBFBD>]<5D><>M5<4D><35>SxSJ<53>Zɰ<<3C><>U<11><>f<EFBFBD><66><EFBFBD>Ǫ<EFBFBD><C7AA>h<EFBFBD>CRU<52><55>9<EFBFBD><39>Ъ<EFBFBD><D0AA><EFBFBD>DfpMj<4D>#46j<36><6A><EFBFBD><EFBFBD><EFBFBD>d`<60><>=Y6<08><><EFBFBD><0E>ab<61><62><EFBFBD>V<EFBFBD>[dUp<55>U<><55>7U<10>\\<EFBFBD>D<EFBFBD>V<EFBFBD><EFBFBD>U<EFBFBD>b<EFBFBD><EFBFBD>q<EFBFBD>MU<EFBFBD><03>W<EFBFBD>1<EFBFBD>ąsV֭T*<2A><0C><><EFBFBD>ߩ<EFBFBD><DFA9><EFBFBD>TҝK1<4B><31>5e<35>2<EFBFBD>Y&<26>́<EFBFBD>[<5B>PQ&\0<EFBFBD>C<EFBFBD><EFBFBD>V~<7E>SrcQ&%<25><>dL.v<><76>Q<11><>d <09>eX<65>^p<>!3U\"<EFBFBD><EFBFBD>n<15>B<EFBFBD><42>T<EFBFBD>a}<7D><>cT<63><54>\r`ڒ<>x@<15>ZcuT<75><1C>Ǝ<><C68E>*<2A>B<EFBFBD><42><EFBFBD>WV<57>4/<2F>uQ<75>L<03><><EFBFBD><EFBFBD><EFBFBD>]bZh<5A>SI<53><49>Ճ<EFBFBD>UF\n<EFBFBD>UB|U<>f<01>X<EFBFBD>UU<55><55>{깕WZ<EFBFBD><EFBFBD>լ<0E><>f<>Ջ=V<15><>c<>y*ƌ<>j<EFBFBD>S<EFBFBD><53>oY\n<EFBFBD><EFBFBD>-\n<EFBFBD>l<EFBFBD>+<1F><03><12><><EFBFBD><EFBFBD>d<EFBFBD><5a<35><0E>}ewM<77><4D>}Z:<3A>ua<75><61><EFBFBD>'<27><><EFBFBD>b<EFBFBD><62><18>V<EFBFBD>b<EFBFBD>0<EFBFBD><30><EFBFBD>7Y<37><59>efj<66>5ej\"<EFBFBD>(<28>EW<45><57><EFBFBD>/<2F>U*<2A> <20>/<2F>VY=e<><65><EFBFBD><EFBFBD>k0ց[V<><56>Z<>a}կ<>C0<0E><>'rc<04><><EFBFBD>26<32>q<0B><> ڷ<><DAB7>YC<59>!f<>\r<02>i<><69>գ<EFBFBD>Z·<5A>IW<49><57>ug\n<EFBFBD>lMj<EFBFBD><EFBFBD>ͬ<EFBFBD>Z<EFBFBD><EFBFBD><EFBFBD>Z<>A<EFBFBD>j<EFBFBD>Ut<55>_Wb<57>U3<55><33>թ<EFBFBD><D5A9><EFBFBD><EFBFBD>6<17>a:v<15>+UU<55>&<26><10><><EFBFBD><08><>0<EFBFBD>kd<6B><64><EFBFBD>0\r<EFBFBD><EFBFBD>g\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Z<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Y<><59>g\n<EFBFBD><EFBFBD><EFBFBD>ڗV\0&V6\r<EFBFBD>Rj<EFBFBD>5<EFBFBD>k<05>쫠<EFBFBD><ECABA0><EFBFBD>{Oxw<EFBFBD><EFBFBD>+aT<61><54><EFBFBD><EFBFBD>\n\r<EFBFBD>B<EFBFBD>2m<*<2A>A<EFBFBD><41>1T<31>R<><52>Õ<EFBFBD>؎SF<53><46>T<EFBFBD>\r<EFBFBD>bzxK<EFBFBD>+xA<78><41><EFBFBD>U:<3A>p\n<EFBFBD>T<><54>V3<56>\r<EFBFBD>o<EFBFBD><EFBFBD>c<><1D>Ӭ{Zڷ5q:<3A><><EFBFBD><EFBFBD><EFBFBD>VD<56>EMjqZ\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>VQ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>f<EFBFBD><EFBFBD>u<EFBFBD>Y\"U~<7E><>\\f<EFBFBD>S<01>u<EFBFBD>d<EFBFBD><64>Vb<56>eV\"<EFBFBD>;<0F>䕠<EFBFBD>7<EFBFBD>;<3B><>0<EFBFBD><30><EFBFBD>gJ<67>0٫;<3B>F<EFBFBD>a³<>Y<EFBFBD><59><15><><02><><EFBFBD>QY<51><59>%t<><74>u\n3<><33><EFBFBD><14>euh7U<37><55><EFBFBD>֑<EFBFBD>h<EFBFBD>ƥ<EFBFBD>if~<7E><>+<2B>֚\rZq|K\"i,<2C><> ռ<><D5BC>V<EFBFBD><56><EFBFBD>u<EFBFBD><75>5<EFBFBD>kQ<6B>C<EFBFBD><43>\\<EFBFBD><EFBFBD><EFBFBD>\\<EFBFBD><EFBFBD>uݪ<EFBFBD><EFBFBD>V<EFBFBD>eF<><46>qzʕ<7A>+<2B>֓<EFBFBD><D693>]<5D><>i<>k,+<2B><>3<EFBFBD><33>[<0E>5t:<3A>U<EFBFBD>*<2A><>C<EFBFBD><43>]\n<EFBFBD><EFBFBD>,*<2A>SB<53>k[n<1B>m<EFBFBD>5<EFBFBD><35>W<EFBFBD><57><EFBFBD><EFBFBD><EFBFBD><1E>3<EFBFBD>y<03>CkqC<71>h6̙|%`<60><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><07><><EFBFBD>}<7D><1A>@<40><>@\$<EFBFBD>-X:<3A>sOv\0pw<17>W<EFBFBD><57>FV9<56>\r3<EFBFBD><EFBFBD>0J<30>W<EFBFBD>&<26>]|\rDP<EFBFBD>H<EFBFBD><EFBFBD><EFBFBD>\0V*<2A>0<EFBFBD><30><EFBFBD><02><><EFBFBD>昬<EFBFBD><E698AC><EFBFBD>0*<2A><><EFBFBD><EFBFBD>`W<><57><EFBFBD>N܊<4E>\r<EFBFBD>~Wӕ<0F>̪<EFBFBD><CCAA><EFBFBD>R<EFBFBD><52><EFBFBD>9:<3A><>5<EFBFBD>̱Xa<58>~<17>;p<>-<12><><EFBFBD><EFBFBD>&<26>_8<5F><38>S<1A>Ɉ<13>O{N<EFBFBD>e{<EFBFBD>?V<19><>\0<EFBFBD><EFBFBD>N<EFBFBD><EFBFBD><EFBFBD>\rp\nm<EFBFBD><EFBFBD>aW<EFBFBD>g<EFBFBD>O<EFBFBD>݀<>\0L<EFBFBD>ɜ<EFBFBD>\rg<EFBFBD>`v<><76><14>x,Y<><59><0B>Y`<60><><14><03><>)<29><>5<EFBFBD>ZΡ~<7E>}y<><79>Y<EFBFBD>/<2F><>\0<EFBFBD><EFBFBD>l<EFBFBD><EFBFBD>1f<EFBFBD>m<EFBFBD>C<EFBFBD>38'}_&<26><>:9<>13, <20><><EFBFBD>.<2E>N<EFBFBD> 4<><34><EFBFBD><EFBFBD><EFBFBD>@<40><>inO@y<14>`<60>X<1A><>U<EFBFBD>=<3D><><EFBFBD><EFBFBD>Xl<02>G<EFBFBD>aP<<3C><<3C>\n<EFBFBD><01>hTC<54><43>Oś<1D>v̖k<0E>B<EFBFBD><42><EFBFBD><EFBFBD><EFBFBD>u{<EFBFBD>} <10><><EFBFBD>ݬXOf<4F><66><04><><EFBFBD><EFBFBD>l;<3B>Y<EFBFBD><59>aګ9=<3D>u<><75>*X<>&<26>[ɢ<>|<7C><><EFBFBD>,@<40>Y+b\"<EFBFBD><EFBFBD>><3E><11><>I쪳ay\\)Uu9\nz<10>j<EFBFBD><6A><EFBFBD>&<26>`<60>uL<75><4C>Q,<2C><11><><EFBFBD> a<><61>US\n<EFBFBD>v#lH<6C><48><EFBFBD>;b6<62>Պ<EFBFBD><12><>ZX<5A>b<EFBFBD>Oձ儦1l\\<EFBFBD><EFBFBD><EFBFBD>8<EFBFBD>~<7E><>&<26><>5<><35>S<EFBFBD><53>z<EFBFBD><EFBFBD>P<EFBFBD>0<><30>4<EFBFBD><34><1E>2<EFBFBD>;)<29>~\\X<EFBFBD><EFBFBD><EFBFBD>g~Um<55>u<EFBFBD><75>-<2D><>k<EFBFBD>X۰<58>ca<63>Yv<59>PplqX<71>b<EFBFBD><62><EFBFBD>°V-<2D>:J<><4A><EFBFBD>g%T<<3C>t<EFBFBD>V<><56>Uf&L<><4C><EFBFBD>O<EFBFBD>5``<60><>H_<48>c<EFBFBD><63><EFBFBD><01><><EFBFBD>S<18>WϨFM<46><02>؈<01>bcӺ<63>v<EFBFBD><76>}<7D>vs<76><73> <09><>x<EFBFBD><78><EFBFBD>rȓ3ڋ5I<>l<>\$<EFBFBD>*<2A><>B<EFBFBD><42>n@1p'Oa<4F><61><EFBFBD>9<EFBFBD>'l<><6C><1A><>h<EFBFBD>Pm<>2{6<02>4<EFBFBD>(mOf<4F><66>CV<43>l<EFBFBD><6C><EFBFBD><01>e,<2C>z<EFBFBD><7A>UVuY<>T?<3F>J^<5E>+:0<><30><01>\"0'<27><>c<EFBFBD><63>U<EFBFBD>(<28>W<EFBFBD><57><EFBFBD>Th7X><3E><><EFBFBD>eW<65>}I<>5<EFBFBD><35><EFBFBD>eX<02>1<><31>j<EFBFBD>YY<59>zN<>\r<EFBFBD>{#vZ<76>kA<6B><41>\0<EFBFBD><EFBFBD>\r<EFBFBD>T<EFBFBD>5<EFBFBD><EFBFBD><EFBFBD><EFBFBD>=<3D><>M<EFBFBD>ɣ<08><><0C>U<EFBFBD><55>Ů^<5E>L %<25><>:<3A>;Z<>f\$&<1E>H<02><>L\n*9U<39>h9_<39><EFBFBD><7F><EFBFBD><EFBFBD><EFBFBD><15><>Սk[a|A[<5B>a<EFBFBD><61>Uh<55>vU<76>\r\"<EFBFBD>6*<2A>T<EFBFBD><54><EFBFBD>D<EFBFBD>e<EFBFBD>Rr<0F>3<EFBFBD>s<EFBFBD>\r<EFBFBD>@<40><><EFBFBD>RLJ<4C>}<7D><>5V7<56><37>Y<EFBFBD><59>=e<><65>u<EFBFBD><75>\n<EFBFBD>;,<2C>ٻ<EFBFBD>`<06> <12><01><>7<EFBFBD>o<EFBFBD>)Q<><51><EFBFBD>y<EFBFBD>\n<EFBFBD><05>N2~Fj<46>=<3D><>}<7D>-<2D><><EFBFBD>T<EFBFBD>^<5E>gJ<67>\"@J<><4A>OZ<4F><5A>\nj@i<><69>;<3B>2+<2B>Aܲ*<2A><><EFBFBD><EFBFBD>{<EFBFBD>;<3B>ꬳC:<3A> <1E><>L\"k<1B>\0+<2B>D<EFBFBD><44>=<3D><1D>[L<><4C>ճ<><D5B3><EFBFBD><EFBFBD>d<EFBFBD>\r<EFBFBD>d̉<64>2oe<6F>`<60><>=<3D><1A><>wjԬ`2<1E>q5<71><35><EFBFBD>B<EFBFBD>E<EFBFBD>\nbsR<EFBFBD><EFBFBD>=T:<3A>Pl<50>Eĸ<45>~<7E>N<EFBFBD><4E>Kf<4B><66>YY<59>Yʦi`<60>{<EFBFBD>-f<07>bl<62><6C>v<EFBFBD>oc|=t <1B><><EFBFBD>gְ<67><D6B0>A<>L<>rV<72>+<2B>ٿ<EFBFBD>jM<6A><4D>;X<><19><><EFBFBD><0E>AY<41><01><>;[H<><48>\rp<EFBFBD>ͫ-g<16><><1A><16>Y<EFBFBD>m1Ʊ<31>_<12><>Tz<54>9X<0B><>a<EFBFBD><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>w<EFBFBD><77>@+2<><32><EFBFBD>c^\". \n<EFBFBD>f<><66>`{]<5D><><EFBFBD><EFBFBD><EFBFBD>cج<>s<EFBFBD>`<60><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>O\0<14>3n^Ӧ<><D3A6>J2m<32><6D><EFBFBD>fڂ&<26>ξ<EFBFBD><05>[D<>-<1B><><EFBFBD>Aj<1D>-<2D>X<EFBFBD>֎<EFBFBD>t<EFBFBD><74><EFBFBD><EFBFBD>U<06><>5<06><>Cj<6A><7F>g%S<><53><1D>bc<62><63><EFBFBD><EFBFBD>ډ<EFBFBD><DA89>1\n<EFBFBD><EFBFBD>;<3B>b<0B>Y<EFBFBD>V~a1j<31>ݝP<16><>v08`L<><4C>햒dw*|<7C><>i<>˵<EFBFBD><CBB5><1B>E<EFBFBD>k<EFBFBD>VY<56><59>(<28>Ȣ06 <20>@!<21>M<EFBFBD>kͬ<><CDAC><EFBFBD>-\"<EFBFBD>G<EFBFBD><EFBFBD>\0<EFBFBD><EFBFBD>(PSQ<53>W3<57>s@0ŭU~<7E>9\$<EFBFBD>#<23><><EFBFBD>A:;*Yh<59><68><19><><08>*ٛ<>-n[<13>ls<73>Ƞ<EFBFBD> <20>!5 1<><31><EFBFBD>ɀ.#<23><11><0C><19>3ֿ<33><D6BF>E<EFBFBD><<3C>J\\'0<><30>l<EFBFBD><6C>\"<EFBFBD>4<EFBFBD><EFBFBD><EFBFBD><EFBFBD>P̕<EFBFBD>0?\0001<EFBFBD>d\0^\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ<>g<\0\\<04><01><02>TV@<40><><EFBFBD>Y&<26>4<EFBFBD>%<25>;\"]m<><6D><EFBFBD>\n<EFBFBD>l<EFBFBD>r<EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD><02>/\0kl<EFBFBD> <09><><EFBFBD>e!K<>[8<>Ml<4D>)x{g<EFBFBD><EFBFBD>-<2D>\08<EFBFBD><EFBFBD>l<EFBFBD>٨P6<><36>[@<40><>\0<EFBFBD><EFBFBD>b<EFBFBD>ཇa<EFBFBD>c<EFBFBD>Q6AT )Ԑ<><16><><EFBFBD>[X<><58>mX7m<37><6D><06><>-<2D><>T<EFBFBD>omn<6D>ʹ<EFBFBD>e6<65>-<2D><>h<EFBFBD>m<7F><6D><EFBFBD><EFBFBD>KnQm<51>[S<><53>m<EFBFBD><6D><EFBFBD>Koa<><14>{<EFBFBD>m<><6D>-<2D><>Ֆ<EFBFBD>m<EFBFBD>[D<>mhYm<59><6D>mA{)\$@<40><>m<>ڐ<05>I<16><11>ې<EFBFBD><DB90>I!e<>[k<><6B>-<2D>ۚ<EFBFBD>nJ<6E><4A><EFBFBD><EFBFBD>I<16>m<EFBFBD><6D>o<EFBFBD>m<><6D><EFBFBD><EFBFBD>Iѭ<>ۗ<EFBFBD><DB97>n<EFBFBD><6E>\r<1E>j<16>-<2D><>R<EFBFBD>nV<6E>0<05><>V<EFBFBD>-<2D>۟<EFBFBD><DB9F>nf<6E>-<2D>I<EFBFBD>V<EFBFBD>m<EFBFBD><6D>]<5D><>m<EFBFBD><6D>-<2D><>\$<EFBFBD><EFBFBD>-<2D>[·Qo&܌<>+u<><75>-<2D><>R<EFBFBD><52>n<EFBFBD><6E>ISoV<6F><02>[ڷon<6F>ލ<EFBFBD><DE8D>{<EFBFBD><17>7ۄ<37><DB84>m<EFBFBD><6D>-<2D><>qV<71>m<EFBFBD><6D><EFBFBD><EFBFBD><EFBFBD>mv<6D>-<2D>K}<7D><><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD>o<EFBFBD><6F>]<5D><>|<7C>Э<EFBFBD><D0AD>巧o<E5B7A7>ڽ<EFBFBD>[z<><7A><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD><6F>p<12>M<EFBFBD>k{<EFBFBD><EFBFBD><EFBFBD>\0<EFBFBD><EFBFBD><EFBFBD><17><>5<EFBFBD><35>|g<>[<5B><><EFBFBD>pZvE<76><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\0[a<>7o<37>ܵ<EFBFBD><DCB5>ev<65><76>\r<EFBFBD><EFBFBD><EFBFBD>'m<><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>6<EFBFBD><36><EFBFBD><EFBFBD> <20>sD<73><44><EFBFBD><EFBFBD>˅\0In\\2<EFBFBD>Yn<EFBFBD><EFBFBD>;y<> <09><1B>\0<EFBFBD><EFBFBD>D<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>e4L<EFBFBD><01><1D>op<1E>5<EFBFBD>9<EFBFBD><39>\n<EFBFBD><17><0E><><17>r<EFBFBD><72><1B>4<34><1F><17><>pf⽿ˁ<E2BDBF><17>(<28>A<EFBFBD>mq*<2A><><EFBFBD>S<EFBFBD><53><18>&[D<>1p<31><70>4<EFBFBD>ۆ7\n<EFBFBD>%O<><4F><EFBFBD>o<EFBFBD><6F><15> <09>7<18>-\\O<EFBFBD><EFBFBD><<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2n2<6E>]<5D><>q<EFBFBD><71><EFBFBD><EFBFBD>;<3B>t2n<1A>z\0<EFBFBD>C&<26><><EFBFBD><EFBFBD><EFBFBD>v<EFBFBD>m<EFBFBD><6D>ɸ<EFBFBD>q<EFBFBD><71>8[<5B>6<EFBFBD>hd<68>E<EFBFBD> mB<6D>E<EFBFBD>{<EFBFBD>v<EFBFBD>.L\\<EFBFBD><EFBFBD>?rb<72>]<5D>K<EFBFBD><4B>#n+\\<EFBFBD><EFBFBD>qrrv=<3D><><EFBFBD>W\$g\\<EFBFBD><EFBFBD><EFBFBD>r<EFBFBD><EFBFBD><1D><0B><><EFBFBD><EFBFBD><1C>!r<><72><EFBFBD><EFBFBD><1B><>(m<>\\<EFBFBD><EFBFBD>n<><6E><EFBFBD>ț<EFBFBD><C89B>-nܫ<>kr<6B>:<3A><>k6<6B>.e[_<><5F>s6<73>-<2D>ۘW3nb<6E><62>Yo>ܭ<>ۏ73nK-<2D>Ycm><3E>e<EFBFBD>{o<EFBFBD>3<EFBFBD>q\\ <20><>qJ<71>}<7D>{<EFBFBD>78<EFBFBD>i<EFBFBD>s<EFBFBD><EFBFBD>E<EFBFBD>{<EFBFBD>w8<EFBFBD>n<EFBFBD>ֹ<EFBFBD>r<EFBFBD><EFBFBD>M<EFBFBD>zHw8n{<EFBFBD><EFBFBD><EFBFBD><EFBFBD>q<EFBFBD><EFBFBD>U<EFBFBD>뜗=<3D>v<EFBFBD><76><EFBFBD><EFBFBD>s<EFBFBD><73><EFBFBD>ϫ<EFBFBD>w=<3D>\"<EFBFBD>#\0<EFBFBD>9<EFBFBD>t<EFBFBD>0<17>C<04><><0E><>8<EFBFBD>vL<76>k<EFBFBD>S<EFBFBD>.~,<2C><><EFBFBD>p<EFBFBD><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>n<EFBFBD><6E>i<EFBFBD><69>t<EFBFBD>Ҍ<EFBFBD>ۥ<04>(<28><>+w<.<2E>p:7Lg8\\<EFBFBD><EFBFBD><EFBFBD>>*<2A><><EFBFBD>;<3B>7H<37><48>N.<2E>ss<73><73><EFBFBD><EFBFBD>ۧ7A<37><41><EFBFBD> <09><>t.<2E><><EFBFBD>k<EFBFBD><6B>L.<2E>N:<3A><>t<02>]<5D><0B>ӹ<EFBFBD><D3B9><EFBFBD>D<EFBFBD><44>u<1A><>ԋ<EFBFBD><D48B><EFBFBD>.<2E>No<4E><6F>t<EFBFBD><74><EFBFBD>櫫<EFBFBD>T.o<>d<EFBFBD><64>t<16><><EFBFBD>{<EFBFBD><EFBFBD>V.<2E>N?<3F><>u*<2A><><EFBFBD>{<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><<3C>M9b<39><62><EFBFBD>+<2B><>Z.<2E><>V<EFBFBD><56>u<EFBFBD><75>L⻮w\\.<2E>NU<4E>i8<69><38>=<3D>k<EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD>z<EFBFBD>u<><75>]<5D><><EFBFBD>w`.<2E>Nh<4E>v<12>1<EFBFBD><0B><><EFBFBD><EFBFBD><EFBFBD>݊<EFBFBD>Y:J<><4A><EFBFBD><EFBFBD><EFBFBD><EFBFBD>d.<2E>ݒ<EFBFBD>?vR<76>|<7C>˳wf\r(<28>/<2F>b<04><><02>dk<>g\\<EFBFBD><EFBFBD>el<EFBFBD><EFBFBD>˰\$<EFBFBD>i\0<EFBFBD><EFBFBD>@<40>iv<69>q<EFBFBD><71>K<EFBFBD>&<26>@<40>]<5D>&\0<EFBFBD><EFBFBD>ݝ<EFBFBD>k<EFBFBD>W8<EFBFBD><EFBFBD>]Ĝ<>v<EFBFBD><76>E͕<45>j\nn<EFBFBD>]<5D><><EFBFBD>wB<77>5<EFBFBD>k<EFBFBD> <20><>]ƻ{s<EFBFBD><EFBFBD><EFBFBD><EFBFBD>+<2B>wp<77><70><EFBFBD>e<EFBFBD>_><3E><>=<3D>Y<EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD>ٻ<EFBFBD>wnt<6E><74>{<EFBFBD>ӌn<EFBFBD>]仏Gj<47>{s<EFBFBD><EFBFBD>7Y.<2E>P@<40><>v<EFBFBD><76><EFBFBD>ݹ<EFBFBD>w~n<>Ҳ<EFBFBD>_t<5F><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>]Ğ<>x<1E>{<EFBFBD><EFBFBD>v<EFBFBD>(<28><07>u2<75>L<EFBFBD><19><>k<EFBFBD><6B>^<19><>x6<78>l<EFBFBD><6C>×<EFBFBD>g<EFBFBD><67><1C><>\0<EFBFBD><0F> <20>Ht<48><74>{]<5D><><EFBFBD>tV<74>H<1C><>s<EFBFBD><73>GO<47><4F>Ox<4F>\ru\$:<05><>gl^<1C>uz<75><7A><12><><EFBFBD>X<EFBFBD> <20> <20><>u<EFBFBD><75>\r<EFBFBD><1B>W<EFBFBD>n<EFBFBD><6E>n<EFBFBD><6E>x<16><><EFBFBD>뮗<EFBFBD><EBAE97><EFBFBD>]<5D><><EFBFBD>yJ<79>T<EFBFBD>+<2B><><EFBFBD><EFBFBD>-<2D>ۻyJ<79>,<2C>[<5B><>c/O<><4F><EFBFBD>xFr<05>;<3B>wf<77>]<5D><><EFBFBD>yV<79><56><EFBFBD>k<EFBFBD><6B><EFBFBD>.<2E><>0<EFBFBD><30>w<EFBFBD><77><EFBFBD>ի<EFBFBD><D5AB><EFBFBD>.<2E><>T<EFBFBD><54><<3C><><EFBFBD><EFBFBD> ˷n.<2E><>Q;x\0<EFBFBD>=<3D><><EFBFBD><EFBFBD>p<0E><>z&\0v<1E><>\$;<3B>7xV]<5D>C<EFBFBD>czV<7A>}<7D><><EFBFBD>W<EFBFBD>n\nޚ<EFBFBD><EFBFBD>zz<EFBFBD>T<EFBFBD>kӗ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>C<EFBFBD>#w<><77><EFBFBD><EFBFBD>[<5B>w<EFBFBD>oG<6F><47><EFBFBD>5w<35><77>}ީ̷<DEA9>'<1D>}<7D><>z<EFBFBD><7A> e<><65>6<EFBFBD> <20><>ps<70>k<EFBFBD>_]pK]k<><6B>6<EFBFBD><36>Ζ}t9<74><39><12>l<EFBFBD>x<EFBFBD><78>[<5B>\r<EFBFBD><0E><>l:<3A>WWC\0<EFBFBD>Ou<EFBFBD>\rsXe0~<7E>OA<4F>_<EFBFBD>]<0E><>2<EFBFBD>s<0B><18>WC<57><43>T\r<EFBFBD>H<EFBFBD>u<>X<EFBFBD>\0Kk']<19>Z<EFBFBD><5A>\0ض<EFBFBD>]<5D><>V<EFBFBD><56><EFBFBD>{XBu<EFBFBD><EFBFBD>}<7D>{<EFBFBD><EFBFBD><EFBFBD><EFBFBD>f<02><><EFBFBD>\$<EFBFBD>x<EFBFBD>y_J<EFBFBD>tLj<EFBFBD>L(<28><><EFBFBD>Y<EFBFBD>%[2<><32>t<EFBFBD>7V<11><>W<EFBFBD>g<EFBFBD><67><1A><>F<EFBFBD><46><EFBFBD>I!<14>P<EFBFBD>Y]<5D><><EFBFBD>%\nv<EFBFBD> *TBZ.<2E>Wš):Zf<5A><66>%<25><11>YUV<><56>Z<EFBFBD>7<EFBFBD><37>:VAf<41>h*<2A><><EFBFBD><EFBFBD><EFBFBD><17>C<EFBFBD>l<>U\\<EFBFBD><EFBFBD><EFBFBD>ʅU|ogׄ<67>)\\<EFBFBD><EFBFBD>;{ڵ|ok<6F>X<EFBFBD><58>M<EFBFBD><4D><EFBFBD>Ě<EFBFBD>7<EFBFBD>a<EFBFBD><61><EFBFBD>`<60>\nh<EFBFBD>\$)<29><><EFBFBD><EFBFBD>or1k<31>_\n<EFBFBD>{!<21><><EFBFBD><EFBFBD><EFBFBD>><3E><><EFBFBD><EFBFBD>{<EFBFBD><EFBFBD>4<17><>@\n<EFBFBD>рD<EFBFBD>V<><56><EFBFBD>^K<>5<EFBFBD><35>R<EFBFBD><52>e<EFBFBD>Vƥ<56>wc<>p<EFBFBD><70>2^<5E><>0<EFBFBD><30><EFBFBD>5K<35>7<EFBFBD>a4Ww<57><77>f<EFBFBD><66>-<2D>p\n<17>a\\<EFBFBD>ƫ<EFBFBD>W<EFBFBD><EFBFBD>d-!<21>E*<2A>_<10><>}.<2E><>-<2D>d۪<>XG<58><47>ɂ<EFBFBD><C982>8<EFBFBD>rʲ^0<04><>ZJ<5A><4A>]<5D><>7<EFBFBD>X<EFBFBD><58>p<EFBFBD>!Tf<54>\r<EFBFBD>h`<60>͗<EFBFBD>X<EFBFBD><58>|겫+V<><56><EFBFBD>Y\r<EFBFBD>y<EFBFBD>k}<06>mmJ<6D><4A>1%<25>W<EFBFBD><57><EFBFBD>><3E>s<1B>鷶a<E9B7B6>1<EFBFBD><31>~<7E><><EFBFBD><EFBFBD>K۷<4B>:Vv<56>+{rd<>FJ5_<35>0<EFBFBD><30><EFBFBD><EFBFBD><0B><>!?*<2A>ڬy<DAAC>9<EFBFBD>Z<><0B>D<1B><><EFBFBD>o<EFBFBD><6F><EFBFBD><EFBFBD><EFBFBD>\n<15>P<EFBFBD><50><17><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><06>N8[<5B><><EFBFBD>!U筑Y<E7AD91><59><0C><>v<><76>e<EFBFBD><65><EFBFBD>&`<05><>F<EFBFBD>o<>2<08><>0<0E><>7g,u-KXꇈ!<21><>161<36><04><0B><19>6<EFBFBD>Ρ<EFBFBD>j<><6A><EFBFBD>,<2C>_<EFBFBD><5F>CQ<43><51><EFBFBD>E{<EFBFBD>\r<EFBFBD>چT<EFBFBD><EFBFBD><EFBFBD>z<><7A>L[<5B><>3<EFBFBD>k<EFBFBD>{f<0E><><EFBFBD>BRk<52> ij<06>r<EFBFBD>¨d<19>!<21>Ynó<6E>ES<45>'h<fթ<05>V<EFBFBD><56>\nt<EFBFBD><EFBFBD><EFBFBD><EFBFBD>`<0C>)ml<6D>z<EFBFBD><7A>%Qƣj<C6A3><19><><EFBFBD><EFBFBD>\$=<3D><><EFBFBD>zi<7A><69>i/4<>[ Ŋ<>Jj<4A>2Z<32><5A>.<2E><><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD><6F><<3C>s6<73>E+<2B>_<EFBFBD>w<><77>HZ}<7D>Ύ<EFBFBD>0;<3B>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D><08><1B><>`mޟe<DE9F><65><EFBFBD><EFBFBD>#<23><><EFBFBD><EFBFBD>`<60>r<EFBFBD><72><<3C><>jp<6A>٭g6<67><15> HP&<26>&\0005<EFBFBD><EFBFBD>q<<3C>\\#~ <17>ͥ<EFBFBD>-<2D><><EFBFBD><EFBFBD>3#<23><><EFBFBD><EFBFBD>\$<EFBFBD>2<EFBFBD>_<EFBFBD><EFBFBD><19><1E>`(<28><><EFBFBD><EFBFBD>S<EFBFBD><53>\0<EFBFBD>'8<><04> <20>.<2E>Q`<60>p<EFBFBD>K<EFBFBD><02>̇j&0N<30><4E>~<07><><EFBFBD>a<EFBFBD>\$<EFBFBD>*\"<1B><><EFBFBD>Rl0<0B><><EFBFBD><EFBFBD><EFBFBD>q<EFBFBD><71>p<EFBFBD><06><14><><EFBFBD><EFBFBD>P7<50>Ւz<D592>\0<EFBFBD>`3<12><><EFBFBD>^<5E>`}<7D><>%<25>ۺy<12>`x<>:<3A>\$<1A>PUS6<02>x<F<>`<60><>+<13>~=AV<41><56>\0=6߃<><DF83>{<EFBFBD><EFBFBD>Υ<1B><>u_\"<EFBFBD><03>r<07><><EFBFBD>\0¤l<1C><><EFBFBD><EFBFBD>N@(<28>D\rp<EFBFBD>1+<2B><>@UF<10>7/Mb<4D><62><EFBFBD>.\$<EFBFBD>{<EFBFBD><08>C0<43>`<60>L<16>6<12>\$.<2E>K<EFBFBD>;]<5D><><EFBFBD><EFBFBD>m@gk<67>a<7F>`<60><>P<EFBFBD> <09>w<EFBFBD> M<>T<EFBFBD>6<EFBFBD>s<EFBFBD>ۻP<>p6[<04>^<01>p\0/<2F>8<04>-<2D>N<EFBFBD><4E><EFBFBD>\n<EFBFBD>l&AE⚺<45>!\$<EFBFBD>G\n<EFBFBD>\$<EFBFBD><EFBFBD><EFBFBD><EFBFBD>#<23><>AT<>L<10><15>#<15><><EFBFBD>}v酌<76><E9858C><EFBFBD><EFBFBD><0C>E<EFBFBD><45><EFBFBD>i<><69>0;<3B>,,<2C><>p<EFBFBD>F<10>,Y<><59><EFBFBD>@?<3F>^[<02>H3<16><>ø<EFBFBD>.<2E>J<EFBFBD><4A>H9<48>_\n<EFBFBD><EFBFBD><EFBFBD>*T<>}HFZp<0C><>f<08><><EFBFBD><EFBFBD>ba<62><61>j<0E>Q<EFBFBD><51> 0<>ڟ t~tX<74><58><19><>xd<03><><EFBFBD><06><><EFBFBD>;<3B>h<><68><EFBFBD>06E<>ӆl<D386><6C><EFBFBD>g<EFBFBD>A<1A><>-<><7F><EFBFBD>C\r<EFBFBD><EFBFBD><EFBFBD>5<EFBFBD><EFBFBD><EFBFBD>Oa<EFBFBD><EFBFBD>d<EFBFBD><EFBFBD>`<60>'6<>k<EFBFBD><0F><>\\<15><> x<1D><>8-F<0F>Vp<01><>ab<><13>e@<40>ɪo<C9AA>Q<>0E<30>f\"B<EFBFBD>;<3B>*nA<6E>m<EFBFBD>*p,;<3B>u@<40>a<EFBFBD>6R<01>qd<15><><EFBFBD><EFBFBD>SL.l=cf<63><66>,<2C><><EFBFBD><04><><EFBFBD>Qf<51><66><EFBFBD>!<21>-<2D>g<EFBFBD><67>2<EFBFBD>d<EFBFBD><64><EFBFBD>ͣ&Sw;`iN`<60><>v<EFBFBD><76><EFBFBD>\0<EFBFBD>\"<EFBFBD>R<EFBFBD> <20><><EFBFBD>v<EFBFBD><76>a<EFBFBD><61><EFBFBD>!6eHQOO0<4F><30>><1A>!ݾ4X<34>b<EFBFBD><62><EFBFBD>+`<60>{<EFBFBD><EFBFBD><EFBFBD>;uwb<77>R<0C>ȚT;<3B>ߎ<1D><><EFBFBD>CP<43>V#<23>4)]\r<EFBFBD><EFBFBD>7<EFBFBD><EFBFBD>l<17>c<EFBFBD>db<>|B<>><3E>ą<EFBFBD><C485><EFBFBD>K<EFBFBD><4B>Hx<48><02>bď<><C48F>\r<10><11><>@<40><><EFBFBD>ėl<C497>B<EFBFBD>%,8<><02>bY<62><59><EFBFBD>I<EFBFBD><49>%Kҍ<4B><D28D>3Ġ<> <09>a<EFBFBD><61><EFBFBD><EFBFBD>/q!<21><>q\r<EFBFBD>h2^&<26><><EFBFBD><EFBFBD><1B>bt\0<EFBFBD><EFBFBD>Q[+<2B><>8Êpȍ|<7C><>Y<EFBFBD>N'<27>\0<EFBFBD><EFBFBD>A6aa<EFBFBD><EFBFBD><17>,x%<25>\$8hA<EFBFBD><EFBFBD>y<02><><EFBFBD>q<EFBFBD>nR<18>AM@<40><><EFBFBD><17><14><><EFBFBD>R<EFBFBD><52>qC<71>\"\n<EFBFBD>}&<26><15>b<1B><>w<EFBFBD><77><EFBFBD><EFBFBD>tptv<74>i<EFBFBD>b<EFBFBD>@Ő<>|<7C><><W<>B<EFBFBD>f<EFBFBD><66>`<60><>?%'tW<74>/<2F><><EFBFBD><EFBFBD><EFBFBD>d<EFBFBD>m<EFBFBD><6D><EFBFBD><EFBFBD><EFBFBD>LOb<4F>q`H<><48>5<EFBFBD><35><EFBFBD><EFBFBD>#<23><0C><>]<5D>F\r.<2E><>+<2B>*<2A><>oB<6F>8E<38>Ũݣ>W<><57>~1O<31><4F><EFBFBD><EFBFBD>+<<14><>#<23><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\0<EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>3غ<><D8BA>`X\r@<40><><13>00<30>]<5D>y<EFBFBD><11><>pD<10>ë`apR<70><52><EFBFBD>[<5B><><EFBFBD>+uP <20>@;:<3A>-γ<>\0f8<EFBFBD>e<EFBFBD>c<02>lU<6C>v0<76>e6\0<EFBFBD>bܵ<EFBFBD><EFBFBD>=<3D><><19>b<EFBFBD><62><EFBFBD>Ӈ4<><34>х<EFBFBD><D185>(<28>\$0y<02>G<EFBFBD><47><EFBFBD>0<<3C>d@<0B><>+#<23>AK<18>o<EFBFBD>#.H1<48><31><11>j<EFBFBD><18>P<EFBFBD>g/<2F>Q<EFBFBD>G<EFBFBD><47>S5%V<>Ҏb<01>t<EFBFBD><74><EFBFBD><EFBFBD>\0Nׂ<EFBFBD>TLJܱ<EFBFBD><01>Ɖ8J<38>p<EFBFBD>pEm<45><6D><15>r<10><>5`9<06>M<EFBFBD><4D>C\0_<15><0F>'<27>\$<08><>#<23><>E<EFBFBD>!\\<EFBFBD><17>a<05>)<08><04>s<EFBFBD><73><EFBFBD>ې<EFBFBD><DB90><EFBFBD>1<EFBFBD><02>\0<EFBFBD><EFBFBD><EFBFBD><1B>r<EFBFBD>n<EFBFBD><6E>q<EFBFBD><71>e<EFBFBD><65><19><03>7<EFBFBD>\n<EFBFBD>Nt#Yf`<60><><EFBFBD><EFBFBD><EFBFBD>@Fq<46><71><EFBFBD><EFBFBD><EFBFBD>L<EFBFBD>z4Լo<D4BC><6F>%<25><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[<1C>Z<1E><>Ď\"<0C>g<EFBFBD><67><07>q<EFBFBD>MIV靿<56><E99DBF>f)<]<5D><><EFBFBD>o!'ʗ@V<>Ϧ<EFBFBD>\0");}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),$ad);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,$Jf=null){$ua=func_get_args();$ua[0]=$u;return
|
||
call_user_func_array('Adminer\lang_format',$ua);}function
|
||
lang_format($dj,$Jf=null){if(is_array($dj)){$Ng=($Jf==1?0:1);$dj=$dj[$Ng];}$dj=str_replace("'",'’',$dj);$ua=func_get_args();array_shift($ua);$md=str_replace("%d","%s",$dj);if($md!=$dj)$ua[0]=format_number($Jf);return
|
||
vsprintf($md,$ua);}define('Adminer\LANG','en');abstract
|
||
class
|
||
SqlDb{static$instance;var$extension;var$flavor='';var$server_info;var$affected_rows=0;var$info='';var$errno=0;var$error='';protected$multi;abstract
|
||
function
|
||
attach($N,$V,$F);abstract
|
||
function
|
||
quote($Q);abstract
|
||
function
|
||
select_db($Nb);abstract
|
||
function
|
||
query($H,$oj=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($nc,$V,$F,array$bg=array()){$bg[\PDO::ATTR_ERRMODE]=\PDO::ERRMODE_SILENT;$bg[\PDO::ATTR_STATEMENT_CLASS]=array('Adminer\PdoResult');try{$this->pdo=new
|
||
\PDO($nc,$V,$F,$bg);}catch(\Exception$Hc){return$Hc->getMessage();}$this->server_info=@$this->pdo->getAttribute(\PDO::ATTR_SERVER_VERSION);return'';}function
|
||
quote($Q){return$this->pdo->quote($Q);}function
|
||
query($H,$oj=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_array(\PDO::FETCH_ASSOC);}function
|
||
fetch_row(){return$this->fetch_array(\PDO::FETCH_NUM);}private
|
||
function
|
||
fetch_array($tf){$J=$this->fetch($tf);return($J?array_map(array($this,'unresource'),$J):$J);}private
|
||
function
|
||
unresource($X){return(is_resource($X)?stream_get_contents($X):$X);}function
|
||
fetch_field(){$K=(object)$this->getColumnMeta($this->_offset++);$U=$K->pdo_type;$K->type=($U==\PDO::PARAM_INT?0:15);$K->charsetnr=($U==\PDO::PARAM_LOB||(isset($K->flags)&&in_array("blob",(array)$K->flags))?63:0);return$K;}function
|
||
seek($C){for($s=0;$s<$C;$s++)$this->fetch();}}}function
|
||
add_driver($t,$B){SqlDriver::$drivers[$t]=$B;}function
|
||
get_driver($t){return
|
||
SqlDriver::$drivers[$t];}abstract
|
||
class
|
||
SqlDriver{static$instance;static$drivers=array();static$extensions=array();static$jush;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$partitionBy=array();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$wd,array$dg=array(),$z=1,$D=0,$Wg=false){$ue=(count($wd)<count($M));$H=adminer()->selectQueryBuild($M,$Z,$wd,$dg,$z,$D);if(!$H)$H="SELECT".limit(($_GET["page"]!="last"&&$z&&$wd&&$ue&&JUSH=="sql"?"SQL_CALC_FOUND_ROWS ":"").implode(", ",$M)."\nFROM ".table($R),($Z?"\nWHERE ".implode(" AND ",$Z):"").($wd&&$ue?"\nGROUP BY ".implode(", ",$wd):"").($dg?"\nORDER BY ".implode(", ",$dg):""),$z,($D?$z*$D:0),"\n");$oi=microtime(true);$J=$this->conn->query($H);if($Wg)echo
|
||
adminer()->selectQuery($H,$oi,!$J);return$J;}function
|
||
delete($R,$fh,$z=0){$H="FROM ".table($R);return
|
||
queries("DELETE".($z?limit1($R,$H,$fh):" $H$fh"));}function
|
||
update($R,array$O,$fh,$z=0,$Rh="\n"){$Ij=array();foreach($O
|
||
as$x=>$X)$Ij[]="$x = $X";$H=table($R)." SET$Rh".implode(",$Rh",$Ij);return
|
||
queries("UPDATE".($z?limit1($R,$H,$fh,$Rh):" $H$fh"));}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,$Qi){}function
|
||
convertSearch($u,array$X,array$m){return$u;}function
|
||
value($X,array$m){return(method_exists($this->conn,'value')?$this->conn->value($X,$m):$X);}function
|
||
quoteBinary($Dh){return
|
||
q($Dh);}function
|
||
warnings(){}function
|
||
tableHelp($B,$ye=false){}function
|
||
inheritsFrom($R){return
|
||
array();}function
|
||
inheritedTables($R){return
|
||
array();}function
|
||
partitionsInfo($R){return
|
||
array();}function
|
||
hasCStyleEscapes(){return
|
||
false;}function
|
||
engines(){return
|
||
array();}function
|
||
supportsIndex(array$S){return!is_view($S);}function
|
||
indexAlgorithms(array$yi){return
|
||
array();}function
|
||
checkConstraints($R){return
|
||
get_key_vals("SELECT c.CONSTRAINT_NAME, CHECK_CLAUSE
|
||
FROM INFORMATION_SCHEMA.CHECK_CONSTRAINTS c
|
||
JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS t ON c.CONSTRAINT_SCHEMA = t.CONSTRAINT_SCHEMA AND c.CONSTRAINT_NAME = t.CONSTRAINT_NAME
|
||
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();if(DB!=""){foreach(get_rows("SELECT TABLE_NAME AS tab, COLUMN_NAME AS field, IS_NULLABLE AS nullable, DATA_TYPE AS type, CHARACTER_MAXIMUM_LENGTH AS length".(JUSH=='sql'?", COLUMN_KEY = 'PRI' AS `primary`":"")."
|
||
FROM INFORMATION_SCHEMA.COLUMNS
|
||
WHERE TABLE_SCHEMA = ".q($_GET["ns"]!=""?$_GET["ns"]:DB)."
|
||
ORDER BY TABLE_NAME, ORDINAL_POSITION",$this->conn)as$K){$K["null"]=($K["nullable"]=="YES");$J[$K["tab"]][]=$K;}}return$J;}}add_driver("sqlite","SQLite");if(isset($_GET["sqlite"])){define('Adminer\DRIVER',"sqlite");if(class_exists("SQLite3")&&$_GET["ext"]!="pdo"){abstract
|
||
class
|
||
SqliteDb
|
||
extends
|
||
SqlDb{var$extension="SQLite3";private$link;function
|
||
attach($o,$V,$F){$this->link=new
|
||
\SQLite3($o);$Lj=$this->link->version();$this->server_info=$Lj["versionString"];return'';}function
|
||
query($H,$oj=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){return$this->dsn(DRIVER.":$o","","");}}}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$extensions=array("SQLite3","PDO_SQLite");static$jush="sqlite";protected$types=array(array("integer"=>0,"real"=>0,"numeric"=>0,"text"=>0,"blob"=>0));var$insertFunctions=array();var$editFunctions=array("integer|real|numeric"=>"+/-","text"=>"||",);var$operators=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL","SQL");var$functions=array("hex","length","lower","round","unixepoch","upper");var$grouping=array("avg","count","count distinct","group_concat","max","min","sum");static
|
||
function
|
||
connect($N,$V,$F){if($F!="")return'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){$Ij=array();foreach($L
|
||
as$O)$Ij[]="(".implode(", ",$O).")";return
|
||
queries("REPLACE INTO ".table($R)." (".implode(", ",array_keys(reset($L))).") VALUES\n".implode(",\n",$Ij));}function
|
||
tableHelp($B,$ye=false){if($B=="sqlite_sequence")return"fileformat2.html#seqtab";if($B=="sqlite_master")return"fileformat2.html#$B";}function
|
||
checkConstraints($R){preg_match_all('~ CHECK *(\( *(((?>[^()]*[^() ])|(?1))*) *\))~',get_val("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".q($R),0,$this->conn),$Ze);return
|
||
array_combine($Ze[2],$Ze[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($hd){return
|
||
array();}function
|
||
limit($H,$Z,$z,$C=0,$Rh=" "){return" $H$Z".($z?$Rh."LIMIT $z".($C?" OFFSET $C":""):"");}function
|
||
limit1($R,$H,$Z,$Rh="\n"){return(preg_match('~^INTO~',$H)||get_val("SELECT sqlite_compileoption_used('ENABLE_UPDATE_DELETE_LIMIT')")?limit($H,$Z,1,0,$Rh):" $H WHERE rowid = (SELECT rowid FROM ".table($R).$Z.$Rh."LIMIT 1)");}function
|
||
db_collation($j,$jb){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($B=""){$J=array();foreach(get_rows("SELECT name AS Name, type AS Engine, 'rowid' AS Oid, '' AS Auto_increment FROM sqlite_master WHERE type IN ('table', 'view') ".($B!=""?"AND name = ".q($B):"ORDER BY name"))as$K){$K["Rows"]=get_val("SELECT COUNT(*) FROM ".idf_escape($K["Name"]));$J[$K["Name"]]=$K;}foreach(get_rows("SELECT * FROM sqlite_sequence".($B!=""?" WHERE name = ".q($B):""),null,"")as$K)$J[$K["name"]]["Auto_increment"]=$K["seq"];return$J;}function
|
||
is_view($S){return$S["Engine"]=="view";}function
|
||
fk_support($S){return!get_val("SELECT sqlite_compileoption_used('OMIT_FOREIGN_KEY')");}function
|
||
fields($R){$J=array();$G="";foreach(get_rows("PRAGMA table_".(min_version(3.31)?"x":"")."info(".table($R).")")as$K){$B=$K["name"];$U=strtolower($K["type"]);$k=$K["dflt_value"];$J[$B]=array("field"=>$B,"type"=>(preg_match('~int~i',$U)?"integer":(preg_match('~char|clob|text~i',$U)?"text":(preg_match('~blob~i',$U)?"blob":(preg_match('~real|floa|doub~i',$U)?"real":"numeric")))),"full_type"=>$U,"default"=>(preg_match("~^'(.*)'$~",$k,$A)?str_replace("''","'",$A[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[$B]["auto_increment"]=true;$G=$B;}}$ii=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',$ii,$Ze,PREG_SET_ORDER);foreach($Ze
|
||
as$A){$B=str_replace('""','"',preg_replace('~^"|"$~','',$A[1]));if($J[$B])$J[$B]["collation"]=trim($A[3],"'");}preg_match_all('~'.$u.'\s.*GENERATED ALWAYS AS \((.+)\) (STORED|VIRTUAL)~i',$ii,$Ze,PREG_SET_ORDER);foreach($Ze
|
||
as$A){$B=str_replace('""','"',preg_replace('~^"|"$~','',$A[1]));$J[$B]["default"]=$A[3];$J[$B]["generated"]=strtoupper($A[4]);}return$J;}function
|
||
indexes($R,$g=null){$g=connection($g);$J=array();$ii=get_val("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".q($R),0,$g);if(preg_match('~\bPRIMARY\s+KEY\s*\((([^)"]+|"[^"]*"|`[^`]*`)++)~i',$ii,$A)){$J[""]=array("type"=>"PRIMARY","columns"=>array(),"lengths"=>array(),"descs"=>array());preg_match_all('~((("[^"]*+")+|(?:`[^`]*+`)+)|(\S+))(\s+(ASC|DESC))?(,\s*|$)~i',$A[1],$Ze,PREG_SET_ORDER);foreach($Ze
|
||
as$A){$J[""]["columns"][]=idf_unescape($A[2]).$A[4];$J[""]["descs"][]=(preg_match('~DESC~i',$A[5])?'1':null);}}if(!$J){foreach(fields($R)as$B=>$m){if($m["primary"])$J[""]=array("type"=>"PRIMARY","columns"=>array($B),"lengths"=>array(),"descs"=>array(null));}}$mi=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){$B=$K["name"];$v=array("type"=>($K["unique"]?"UNIQUE":"INDEX"));$v["lengths"]=array();$v["descs"]=array();foreach(get_rows("PRAGMA index_info(".idf_escape($B).")",$g)as$Ch){$v["columns"][]=$Ch["name"];$v["descs"][]=null;}if(preg_match('~^CREATE( UNIQUE)? INDEX '.preg_quote(idf_escape($B).' ON '.idf_escape($R),'~').' \((.*)\)$~i',$mi[$B],$qh)){preg_match_all('/("[^"]*+")+( DESC)?/',$qh[2],$Ze);foreach($Ze[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_~",$B))$J[$B]=$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($B){return
|
||
array("select"=>preg_replace('~^(?:[^`"[]+|`[^`]*`|"[^"]*")* AS\s+~iU','',get_val("SELECT sql FROM sqlite_master WHERE type = 'view' AND name = ".q($B))));}function
|
||
collations(){return(isset($_GET["create"])?get_vals("PRAGMA collation_list",1):array());}function
|
||
information_schema($j){return
|
||
false;}function
|
||
error(){return
|
||
h(connection()->error);}function
|
||
check_sqlite_name($B){$Pc="db|sdb|sqlite";if(!preg_match("~^[^\\0]*\\.($Pc)\$~",$B)){connection()->error=sprintf('Please use one of the extensions %s.',str_replace("|",", ",$Pc));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$Hc){connection()->error=$Hc->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($B,$c){if(!check_sqlite_name($B))return
|
||
false;connection()->attach(":memory:",'','');connection()->error='File exists.';return@rename(DB,$B);}function
|
||
auto_increment(){return" PRIMARY KEY AUTOINCREMENT";}function
|
||
alter_table($R,$B,$n,$jd,$ob,$xc,$c,$_a,$E){$Bj=($R==""||$jd);foreach($n
|
||
as$m){if($m[0]!=""||!$m[1]||$m[2]){$Bj=true;break;}}$b=array();$og=array();foreach($n
|
||
as$m){if($m[1]){$b[]=($Bj?$m[1]:"ADD ".implode($m[1]));if($m[0]!="")$og[$m[0]]=$m[1][0];}}if(!$Bj){foreach($b
|
||
as$X){if(!queries("ALTER TABLE ".table($R)." $X"))return
|
||
false;}if($R!=$B&&!queries("ALTER TABLE ".table($R)." RENAME TO ".table($B)))return
|
||
false;}elseif(!recreate_table($R,$B,$b,$og,$jd,$_a))return
|
||
false;if($_a){queries("BEGIN");queries("UPDATE sqlite_sequence SET seq = $_a WHERE name = ".q($B));if(!connection()->affected_rows)queries("INSERT INTO sqlite_sequence (name, seq) VALUES (".q($B).", $_a)");queries("COMMIT");}return
|
||
true;}function
|
||
recreate_table($R,$B,array$n,array$og,array$jd,$_a="",$w=array(),$jc="",$ja=""){if($R!=""){if(!$n){foreach(fields($R)as$x=>$m){if($w)$m["auto_increment"]=0;$n[]=process_field($m,$m);$og[$x]=idf_escape($x);}}$Vg=false;foreach($n
|
||
as$m){if($m[6])$Vg=true;}$lc=array();foreach($w
|
||
as$x=>$X){if($X[2]=="DROP"){$lc[$X[1]]=true;unset($w[$x]);}}foreach(indexes($R)as$Be=>$v){$e=array();foreach($v["columns"]as$x=>$d){if(!$og[$d])continue
|
||
2;$e[]=$og[$d].($v["descs"][$x]?" DESC":"");}if(!$lc[$Be]){if($v["type"]!="PRIMARY"||!$Vg)$w[]=array($v["type"],$Be,$e);}}foreach($w
|
||
as$x=>$X){if($X[0]=="PRIMARY"){unset($w[$x]);$jd[]=" PRIMARY KEY (".implode(", ",$X[2]).")";}}foreach(foreign_keys($R)as$Be=>$p){foreach($p["source"]as$x=>$d){if(!$og[$d])continue
|
||
2;$p["source"][$x]=idf_unescape($og[$d]);}if(!isset($jd[" $Be"]))$jd[]=" ".format_foreign_key($p);}queries("BEGIN");}$Ua=array();foreach($n
|
||
as$m){if(preg_match('~GENERATED~',$m[3]))unset($og[array_search($m[0],$og)]);$Ua[]=" ".implode($m);}$Ua=array_merge($Ua,array_filter($jd));foreach(driver()->checkConstraints($R)as$Wa){if($Wa!=$jc)$Ua[]=" CHECK ($Wa)";}if($ja)$Ua[]=" CHECK ($ja)";$Ki=($R==$B?"adminer_$B":$B);if(!queries("CREATE TABLE ".table($Ki)." (\n".implode(",\n",$Ua)."\n)"))return
|
||
false;if($R!=""){if($og&&!queries("INSERT INTO ".table($Ki)." (".implode(", ",$og).") SELECT ".implode(", ",array_map('Adminer\idf_escape',array_keys($og)))." FROM ".table($R)))return
|
||
false;$kj=array();foreach(triggers($R)as$ij=>$Ri){$hj=trigger($ij,$R);$kj[]="CREATE TRIGGER ".idf_escape($ij)." ".implode(" ",$Ri)." ON ".table($B)."\n$hj[Statement]";}$_a=$_a?"":get_val("SELECT seq FROM sqlite_sequence WHERE name = ".q($R));if(!queries("DROP TABLE ".table($R))||($R==$B&&!queries("ALTER TABLE ".table($Ki)." RENAME TO ".table($B)))||!alter_indexes($B,$w))return
|
||
false;if($_a)queries("UPDATE sqlite_sequence SET seq = $_a WHERE name = ".q($B));foreach($kj
|
||
as$hj){if(!queries($hj))return
|
||
false;}queries("COMMIT");}return
|
||
true;}function
|
||
index_sql($R,$U,$B,$e){return"CREATE $U ".($U!="INDEX"?"INDEX ":"").idf_escape($B!=""?$B:uniqid($R."_"))." ON ".table($R)." $e";}function
|
||
alter_indexes($R,$b){foreach($b
|
||
as$G){if($G[0]=="PRIMARY")return
|
||
recreate_table($R,$R,array(),array(),array(),"",$b);}foreach(array_reverse($b)as$X){if(!queries($X[2]=="DROP"?"DROP INDEX ".idf_escape($X[1]):index_sql($R,$X[0],$X[1],"(".implode(", ",$X[2]).")")))return
|
||
false;}return
|
||
true;}function
|
||
truncate_tables($T){return
|
||
apply_queries("DELETE FROM",$T);}function
|
||
drop_views($Nj){return
|
||
apply_queries("DROP VIEW",$Nj);}function
|
||
drop_tables($T){return
|
||
apply_queries("DROP TABLE",$T);}function
|
||
move_tables($T,$Nj,$Ii){return
|
||
false;}function
|
||
trigger($B,$R){if($B=="")return
|
||
array("Statement"=>"BEGIN\n\t;\nEND");$u='(?:[^`"\s]+|`[^`]*`|"[^"]*")+';$jj=trigger_options();preg_match("~^CREATE\\s+TRIGGER\\s*$u\\s*(".implode("|",$jj["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($B)),$A);$Lf=$A[3];return
|
||
array("Timing"=>strtoupper($A[1]),"Event"=>strtoupper($A[2]).($Lf?" OF":""),"Of"=>idf_unescape($Lf),"Trigger"=>$B,"Statement"=>$A[4],);}function
|
||
triggers($R){$J=array();$jj=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("|",$jj["Timing"]).')\s*(.*?)\s+ON\b~i',$K["sql"],$A);$J[$K["name"]]=array($A[1],$A[2]);}return$J;}function
|
||
trigger_options(){return
|
||
array("Timing"=>array("BEFORE","AFTER","INSTEAD OF"),"Event"=>array("INSERT","UPDATE","UPDATE OF","DELETE"),"Type"=>array("FOR EACH ROW"),);}function
|
||
begin(){return
|
||
queries("BEGIN");}function
|
||
last_id($I){return
|
||
get_val("SELECT LAST_INSERT_ROWID()");}function
|
||
explain($f,$H){return$f->query("EXPLAIN QUERY PLAN $H");}function
|
||
found_rows($S,$Z){}function
|
||
types(){return
|
||
array();}function
|
||
create_sql($R,$_a,$si){$J=get_val("SELECT sql FROM sqlite_master WHERE type IN ('table', 'view') AND name = ".q($R));foreach(indexes($R)as$B=>$v){if($B=='')continue;$J
|
||
.=";\n\n".index_sql($R,$v['type'],$B,"(".implode(", ",array_map('Adminer\idf_escape',$v['columns'])).")");}return$J;}function
|
||
truncate_sql($R){return"DELETE FROM ".table($R);}function
|
||
use_sql($Nb,$si=""){}function
|
||
trigger_sql($R){return
|
||
implode(get_vals("SELECT sql || ';;\n' FROM sqlite_master WHERE type = 'trigger' AND tbl_name = ".q($R)));}function
|
||
show_variables(){$J=array();foreach(get_rows("PRAGMA pragma_list")as$K){$B=$K["name"];if($B!="pragma_list"&&$B!="compile_options"){$J[$B]=array($B,'');foreach(get_rows("PRAGMA $B")as$K)$J[$B][1].=implode(", ",$K)."\n";}}return$J;}function
|
||
show_status(){$J=array();foreach(get_vals("PRAGMA compile_options")as$ag)$J[]=explode("=",$ag,2)+array('','');return$J;}function
|
||
convert_field($m){}function
|
||
unconvert_field($m,$J){return$J;}function
|
||
support($Uc){return
|
||
preg_match('~^(check|columns|database|drop_col|dump|indexes|descidx|move_col|sql|status|table|trigger|variables|view|view_trigger)$~',$Uc);}}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($Cc,$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'));list($Md,$Mg)=host_port(addcslashes($N,"'\\"));$this->string="host='$Md'".($Mg?" port='$Mg'":"")." user='".addcslashes($V,"'\\")."' password='".addcslashes($F,"'\\")."'";$ni=adminer()->connectSsl();if(isset($ni["mode"]))$this->string
|
||
.=" sslmode='".$ni["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($Nb){if($Nb==adminer()->database())return$this->database;$J=@pg_connect("$this->string dbname='".addcslashes($Nb,"'\\")."'",PGSQL_CONNECT_FORCE_NEW);if($J)$this->link=$J;return$J;}function
|
||
close(){$this->link=@pg_connect("$this->string dbname='postgres'");}function
|
||
query($H,$oj=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($Cc,$l){$this->error=(ini_bool('html_errors')?html_entity_decode($l):$l);return
|
||
true;});$J=pg_copy_from($this->link,$R,$L);restore_error_handler();return$J;}}class
|
||
Result{var$num_rows;private$result,$offset=0;function
|
||
__construct($I){$this->result=$I;$this->num_rows=pg_num_rows($I);}function
|
||
fetch_assoc(){return
|
||
pg_fetch_assoc($this->result);}function
|
||
fetch_row(){return
|
||
pg_fetch_row($this->result);}function
|
||
fetch_field(){$d=$this->offset++;$J=new
|
||
\stdClass;$J->orgtable=pg_field_table($this->result,$d);$J->name=pg_field_name($this->result,$d);$U=pg_field_type($this->result,$d);$J->type=(preg_match(number_type(),$U)?0:15);$J->charsetnr=($U=="bytea"?63:0);return$J;}function
|
||
__destruct(){pg_free_result($this->result);}}}elseif(extension_loaded("pdo_pgsql")){class
|
||
PgsqlDb
|
||
extends
|
||
PdoDb{var$extension="PDO_PgSQL";var$timeout=0;function
|
||
attach($N,$V,$F){$j=adminer()->database();list($Md,$Mg)=host_port(addcslashes($N,"'\\"));$nc="pgsql:host='$Md'".($Mg?" port='$Mg'":"")." client_encoding=utf8 dbname='".($j!=""?addcslashes($j,"'\\"):"postgres")."'";$ni=adminer()->connectSsl();if(isset($ni["mode"]))$nc
|
||
.=" sslmode='".$ni["mode"]."'";return$this->dsn($nc,$V,$F);}function
|
||
select_db($Nb){return(adminer()->database()==$Nb);}function
|
||
query($H,$oj=false){$J=parent::query($H,$oj);if($this->timeout){$this->timeout=0;parent::query("RESET statement_timeout");}return$J;}function
|
||
warnings(){}function
|
||
copyFrom($R,array$L){$J=$this->pdo->pgsqlCopyFromArray($R,$L);$this->error=idx($this->pdo->errorInfo(),2)?:'';return$J;}function
|
||
close(){}}}if(class_exists('Adminer\PgsqlDb')){class
|
||
Db
|
||
extends
|
||
PgsqlDb{function
|
||
multi_query($H){if(preg_match('~\bCOPY\s+(.+?)\s+FROM\s+stdin;\n?(.*)\n\\\\\.$~is',str_replace("\r\n","\n",$H),$A)){$L=explode("\n",$A[2]);$this->affected_rows=count($L);return$this->copyFrom($A[1],$L);}return
|
||
parent::multi_query($H);}}}class
|
||
Driver
|
||
extends
|
||
SqlDriver{static$extensions=array("PgSQL","PDO_PgSQL");static$jush="pgsql";var$operators=array("=","<",">","<=",">=","!=","~","!~","LIKE","LIKE %%","ILIKE","ILIKE %%","IN","IS NULL","NOT LIKE","NOT ILIKE","NOT IN","IS NOT NULL","SQL");var$functions=array("char_length","lower","round","to_hex","to_timestamp","upper");var$grouping=array("avg","count","count distinct","max","min","sum");var$nsOid="(SELECT oid FROM pg_namespace WHERE nspname = current_schema())";static
|
||
function
|
||
connect($N,$V,$F){$f=parent::connect($N,$V,$F);if(is_string($f))return$f;$Lj=get_val("SELECT version()",0,$f);$f->flavor=(preg_match('~CockroachDB~',$Lj)?'cockroach':'');$f->server_info=preg_replace('~^\D*([\d.]+[-\w]*).*~','\1',$Lj);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");$this->partitionBy=array("RANGE","LIST");if(!$f->flavor)$this->partitionBy[]="HASH";}function
|
||
enumLength(array$m){$zc=$this->types['User types'][$m["type"]];return($zc?type_values($zc):"");}function
|
||
setUserTypes($nj){$this->types['User types']=array_flip($nj);}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){$wj=array();$Z=array();foreach($O
|
||
as$x=>$X){$wj[]="$x = $X";if(isset($G[idf_unescape($x)]))$Z[]="$x = $X";}if(!(($Z&&queries("UPDATE ".table($R)." SET ".implode(", ",$wj)." WHERE ".implode(" AND ",$Z))&&$this->conn->affected_rows)||queries("INSERT INTO ".table($R)." (".implode(", ",array_keys($O)).") VALUES (".implode(", ",$O).")")))return
|
||
false;}return
|
||
true;}function
|
||
slowQuery($H,$Qi){$this->conn->query("SET statement_timeout = ".(1000*$Qi));$this->conn->timeout=1000*$Qi;return$H;}function
|
||
convertSearch($u,array$X,array$m){$Ni="char|text";if(strpos($X["op"],"LIKE")===false)$Ni
|
||
.="|date|time(stamp)?|boolean|uuid|inet|cidr|macaddr|".number_type();return(preg_match("~$Ni~",$m["type"])?$u:"CAST($u AS text)");}function
|
||
quoteBinary($Dh){return"'\\x".bin2hex($Dh)."'";}function
|
||
warnings(){return$this->conn->warnings();}function
|
||
tableHelp($B,$ye=false){$Re=array("information_schema"=>"infoschema","pg_catalog"=>($ye?"view":"catalog"),);$_=$Re[$_GET["ns"]];if($_)return"$_-".str_replace("_","-",$B).".html";}function
|
||
inheritsFrom($R){return
|
||
get_vals("SELECT relname FROM pg_class JOIN pg_inherits ON inhparent = oid WHERE inhrelid = ".$this->tableOid($R)." ORDER BY 1");}function
|
||
inheritedTables($R){return
|
||
get_vals("SELECT relname FROM pg_inherits JOIN pg_class ON inhrelid = oid WHERE inhparent = ".$this->tableOid($R)." ORDER BY 1");}function
|
||
partitionsInfo($R){$K=(min_version(10)?$this->conn->query("SELECT * FROM pg_partitioned_table WHERE partrelid = ".$this->tableOid($R))->fetch_assoc():null);if($K){$ya=get_vals("SELECT attname FROM pg_attribute WHERE attrelid = $K[partrelid] AND attnum IN (".str_replace(" ",", ",$K["partattrs"]).")");$Oa=array('h'=>'HASH','l'=>'LIST','r'=>'RANGE');return
|
||
array("partition_by"=>$Oa[$K["partstrat"]],"partition"=>implode(", ",array_map('Adminer\idf_escape',$ya)),);}return
|
||
array();}function
|
||
tableOid($R){return"(SELECT oid FROM pg_class WHERE relnamespace = $this->nsOid AND relname = ".q($R)." AND relkind IN ('r', 'm', 'v', 'f', 'p'))";}function
|
||
indexAlgorithms(array$yi){static$J=array();if(!$J)$J=get_vals("SELECT amname FROM pg_am".(min_version(9.6)?" WHERE amtype = 'i'":"")." ORDER BY amname = '".($this->conn->flavor=='cockroach'?"prefix":"btree")."' DESC, amname");return$J;}function
|
||
supportsIndex(array$S){return$S["Engine"]!="view";}function
|
||
hasCStyleEscapes(){static$Qa;if($Qa===null)$Qa=(get_val("SHOW standard_conforming_strings",0,$this->conn)=="off");return$Qa;}}function
|
||
idf_escape($u){return'"'.str_replace('"','""',$u).'"';}function
|
||
table($u){return
|
||
idf_escape($u);}function
|
||
get_databases($hd){return
|
||
get_vals("SELECT datname FROM pg_database
|
||
WHERE datallowconn = TRUE AND has_database_privilege(datname, 'CONNECT')
|
||
ORDER BY datname");}function
|
||
limit($H,$Z,$z,$C=0,$Rh=" "){return" $H$Z".($z?$Rh."LIMIT $z".($C?" OFFSET $C":""):"");}function
|
||
limit1($R,$H,$Z,$Rh="\n"){return(preg_match('~^INTO~',$H)?limit($H,$Z,1,0,$Rh):" $H".(is_view(table_status1($R))?$Z:$Rh."WHERE ctid = (SELECT ctid FROM ".table($R).$Z.$Rh."LIMIT 1)"));}function
|
||
db_collation($j,$jb){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($B=""){static$Fd;if($Fd===null)$Fd=get_val("SELECT 'pg_table_size'::regproc");$J=array();foreach(get_rows("SELECT
|
||
relname AS \"Name\",
|
||
CASE relkind WHEN 'v' THEN 'view' WHEN 'm' THEN 'materialized view' ELSE 'table' END AS \"Engine\"".($Fd?",
|
||
pg_table_size(c.oid) AS \"Data_length\",
|
||
pg_indexes_size(c.oid) AS \"Index_length\"":"").",
|
||
obj_description(c.oid, 'pg_class') AS \"Comment\",
|
||
".(min_version(12)?"''":"CASE WHEN relhasoids THEN 'oid' ELSE '' END")." AS \"Oid\",
|
||
reltuples AS \"Rows\",
|
||
".(min_version(10)?"relispartition::int AS partition,":"")."
|
||
current_schema() AS nspname
|
||
FROM pg_class c
|
||
WHERE relkind IN ('r', 'm', 'v', 'f', 'p')
|
||
AND relnamespace = ".driver()->nsOid."
|
||
".($B!=""?"AND relname = ".q($B):"ORDER BY relname"))as$K)$J[$K["Name"]]=$K;return$J;}function
|
||
is_view($S){return
|
||
in_array($S["Engine"],array("view","materialized view"));}function
|
||
fk_support($S){return
|
||
true;}function
|
||
fields($R){$J=array();$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(a.attrelid, a.attnum) AS comment".(min_version(10)?",
|
||
a.attidentity".(min_version(12)?",
|
||
a.attgenerated":""):"")."
|
||
FROM pg_attribute a
|
||
LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum
|
||
WHERE a.attrelid = ".driver()->tableOid($R)."
|
||
AND NOT a.attisdropped
|
||
AND a.attnum > 0
|
||
ORDER BY a.attnum")as$K){preg_match('~([^([]+)(\((.*)\))?([a-z ]+)?((\[[0-9]*])*)$~',$K["full_type"],$A);list(,$U,$y,$K["length"],$ka,$va)=$A;$K["length"].=$va;$Ya=$U.$ka;if(isset($ra[$Ya])){$K["type"]=$ra[$Ya];$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"],$A))$K["default"]=($A[1]=="NULL"?null:idf_unescape($A[1]).$A[2]);$J[$K["field"]]=$K;}return$J;}function
|
||
indexes($R,$g=null){$g=connection($g);$J=array();$Ai=driver()->tableOid($R);$e=get_key_vals("SELECT attnum, attname FROM pg_attribute WHERE attrelid = $Ai AND attnum > 0",$g);foreach(get_rows("SELECT relname, indisunique::int, indisprimary::int, indkey, indoption, amname, pg_get_expr(indpred, indrelid, true) AS partial, pg_get_expr(indexprs, indrelid) AS indexpr
|
||
FROM pg_index
|
||
JOIN pg_class ON indexrelid = oid
|
||
JOIN pg_am ON pg_am.oid = pg_class.relam
|
||
WHERE indrelid = $Ai
|
||
ORDER BY indisprimary DESC, indisunique DESC",$g)as$K){$rh=$K["relname"];$J[$rh]["type"]=($K["partial"]?"INDEX":($K["indisprimary"]?"PRIMARY":($K["indisunique"]?"UNIQUE":"INDEX")));$J[$rh]["columns"]=array();$J[$rh]["descs"]=array();$J[$rh]["algorithm"]=$K["amname"];$J[$rh]["partial"]=$K["partial"];$ee=preg_split('~(?<=\)), (?=\()~',$K["indexpr"]);foreach(explode(" ",$K["indkey"])as$fe)$J[$rh]["columns"][]=($fe?$e[$fe]:array_shift($ee));foreach(explode(" ",$K["indoption"])as$ge)$J[$rh]["descs"][]=(intval($ge)&1?'1':null);$J[$rh]["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 = ".driver()->tableOid($R)."
|
||
AND contype = 'f'::char
|
||
ORDER BY conkey, conname")as$K){if(preg_match('~FOREIGN KEY\s*\((.+)\)\s*REFERENCES (.+)\((.+)\)(.*)$~iA',$K['definition'],$A)){$K['source']=array_map('Adminer\idf_unescape',array_map('trim',explode(',',$A[1])));if(preg_match('~^(("([^"]|"")+"|[^"]+)\.)?"?("([^"]|"")+"|[^"]+)$~',$A[2],$Xe)){$K['ns']=idf_unescape($Xe[2]);$K['table']=idf_unescape($Xe[4]);}$K['target']=array_map('Adminer\idf_unescape',array_map('trim',explode(',',$A[3])));$K['on_delete']=(preg_match("~ON DELETE (".driver()->onActions.")~",$A[4],$Xe)?$Xe[1]:'NO ACTION');$K['on_update']=(preg_match("~ON UPDATE (".driver()->onActions.")~",$A[4],$Xe)?$Xe[1]:'NO ACTION');$J[$K['conname']]=$K;}}return$J;}function
|
||
view($B){return
|
||
array("select"=>trim(get_val("SELECT pg_get_viewdef(".driver()->tableOid($B).")")));}function
|
||
collations(){return
|
||
array();}function
|
||
information_schema($j){return
|
||
get_schema()=="information_schema";}function
|
||
error(){$J=h(connection()->error);if(preg_match('~^(.*\n)?([^\n]*)\n( *)\^(\n.*)?$~s',$J,$A))$J=$A[1].preg_replace('~((?:[^&]|&[^;]*;){'.strlen($A[3]).'})(.*)~','\1<b>\2</b>',$A[2]).$A[4];return
|
||
nl_br($J);}function
|
||
create_database($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($B,$c){connection()->close();return
|
||
queries("ALTER DATABASE ".idf_escape(DB)." RENAME TO ".idf_escape($B));}function
|
||
auto_increment(){return"";}function
|
||
alter_table($R,$B,$n,$jd,$ob,$xc,$c,$_a,$E){$b=array();$eh=array();if($R!=""&&$R!=$B)$eh[]="ALTER TABLE ".table($R)." RENAME TO ".table($B);$Sh="";foreach($n
|
||
as$m){$d=idf_escape($m[0]);$X=$m[1];if(!$X)$b[]="DROP $d";else{$Hj=$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])$eh[]="ALTER TABLE ".table($B)." RENAME $d TO $X[0]";$b[]="ALTER $d TYPE$X[1]";$Th=$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($Th).")":"DROP DEFAULT"));if(isset($X[6]))$Sh="CREATE SEQUENCE IF NOT EXISTS ".idf_escape($Th)." OWNED BY ".idf_escape($R).".$X[0]";$b[]="ALTER $d ".($X[2]==" NULL"?"DROP NOT":"SET").$X[2];}if($m[0]!=""||$Hj!="")$eh[]="COMMENT ON COLUMN ".table($B).".$X[0] IS ".($Hj!=""?substr($Hj,9):"''");}}$b=array_merge($b,$jd);if($R==""){$P="";if($E){$eb=(connection()->flavor=='cockroach');$P=" PARTITION BY $E[partition_by]($E[partition])";if($E["partition_by"]=='HASH'){$Cg=+$E["partitions"];for($s=0;$s<$Cg;$s++)$eh[]="CREATE TABLE ".idf_escape($B."_$s")." PARTITION OF ".idf_escape($B)." FOR VALUES WITH (MODULUS $Cg, REMAINDER $s)";}else{$Ug="MINVALUE";foreach($E["partition_names"]as$s=>$X){$Y=$E["partition_values"][$s];$zg=" VALUES ".($E["partition_by"]=='LIST'?"IN ($Y)":"FROM ($Ug) TO ($Y)");if($eb)$P
|
||
.=($s?",":" (")."\n PARTITION ".(preg_match('~^DEFAULT$~i',$X)?$X:idf_escape($X))."$zg";else$eh[]="CREATE TABLE ".idf_escape($B."_$X")." PARTITION OF ".idf_escape($B)." FOR$zg";$Ug=$Y;}$P
|
||
.=($eb?"\n)":"");}}array_unshift($eh,"CREATE TABLE ".table($B)." (\n".implode(",\n",$b)."\n)$P");}elseif($b)array_unshift($eh,"ALTER TABLE ".table($R)."\n".implode(",\n",$b));if($Sh)array_unshift($eh,$Sh);if($ob!==null)$eh[]="COMMENT ON TABLE ".table($B)." IS ".q($ob);foreach($eh
|
||
as$H){if(!queries($H))return
|
||
false;}return
|
||
true;}function
|
||
alter_indexes($R,$b){$h=array();$ic=array();$eh=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")$ic[]=idf_escape($X[1]);else$eh[]="CREATE INDEX ".idf_escape($X[1]!=""?$X[1]:uniqid($R."_"))." ON ".table($R).($X[3]?" USING $X[3]":"")." (".implode(", ",$X[2]).")".($X[4]?" WHERE $X[4]":"");}if($h)array_unshift($eh,"ALTER TABLE ".table($R).implode(",",$h));if($ic)array_unshift($eh,"DROP INDEX ".implode(", ",$ic));foreach($eh
|
||
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($Nj){return
|
||
drop_tables($Nj);}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,$Nj,$Ii){foreach(array_merge($T,$Nj)as$R){$P=table_status1($R);if(!queries("ALTER ".strtoupper($P["Engine"])." ".table($R)." SET SCHEMA ".idf_escape($Ii)))return
|
||
false;}return
|
||
true;}function
|
||
trigger($B,$R){if($B=="")return
|
||
array("Statement"=>"EXECUTE PROCEDURE ()");$e=array();$Z="WHERE trigger_schema = current_schema() AND event_object_table = ".q($R)." AND trigger_name = ".q($B);foreach(get_rows("SELECT * FROM information_schema.triggered_update_columns $Z")as$K)$e[]=$K["event_object_column"];$J=array();foreach(get_rows('SELECT trigger_name AS "Trigger", action_timing AS "Timing", event_manipulation AS "Event", \'FOR EACH \' || action_orientation AS "Type", action_statement AS "Statement"
|
||
FROM information_schema.triggers'."
|
||
$Z
|
||
ORDER BY event_manipulation DESC")as$K){if($e&&$K["Event"]=="UPDATE")$K["Event"].=" OF";$K["Of"]=implode(", ",$e);if($J)$K["Event"].=" OR $J[Event]";$J=$K;}return$J;}function
|
||
triggers($R){$J=array();foreach(get_rows("SELECT * FROM information_schema.triggers WHERE trigger_schema = current_schema() AND event_object_table = ".q($R))as$K){$hj=trigger($K["trigger_name"],$R);$J[$hj["Trigger"]]=array($hj["Timing"],$hj["Event"]);}return$J;}function
|
||
trigger_options(){return
|
||
array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","UPDATE OF","DELETE","INSERT OR UPDATE","INSERT OR UPDATE OF","DELETE OR INSERT","DELETE OR UPDATE","DELETE OR UPDATE OF","DELETE OR INSERT OR UPDATE","DELETE OR INSERT OR UPDATE OF"),"Type"=>array("FOR EACH ROW","FOR EACH STATEMENT"),);}function
|
||
routine($B,$U){$L=get_rows('SELECT routine_definition AS definition, LOWER(external_language) AS language, *
|
||
FROM information_schema.routines
|
||
WHERE routine_schema = current_schema() AND specific_name = '.q($B));$J=idx($L,0,array());$J["returns"]=array("type"=>$J["type_udt_name"]);$J["fields"]=get_rows('SELECT COALESCE(parameter_name, ordinal_position::text) AS field, data_type AS type, character_maximum_length AS length, parameter_mode AS inout
|
||
FROM information_schema.parameters
|
||
WHERE specific_schema = current_schema() AND specific_name = '.q($B).'
|
||
ORDER BY ordinal_position');return$J;}function
|
||
routines(){return
|
||
get_rows('SELECT specific_name AS "SPECIFIC_NAME", routine_type AS "ROUTINE_TYPE", routine_name AS "ROUTINE_NAME", type_udt_name AS "DTD_IDENTIFIER"
|
||
FROM information_schema.routines
|
||
WHERE routine_schema = current_schema()
|
||
ORDER BY SPECIFIC_NAME');}function
|
||
routine_languages(){return
|
||
get_vals("SELECT LOWER(lanname) FROM pg_catalog.pg_language");}function
|
||
routine_id($B,$K){$J=array();foreach($K["fields"]as$m){$y=$m["length"];$J[]=$m["type"].($y?"($y)":"");}return
|
||
idf_escape($B)."(".implode(", ",$J).")";}function
|
||
last_id($I){$K=(is_object($I)?$I->fetch_row():array());return($K?$K[0]:0);}function
|
||
explain($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):"")),$qh))return$qh[1];}function
|
||
types(){return
|
||
get_key_vals("SELECT oid, typname
|
||
FROM pg_type
|
||
WHERE typnamespace = ".driver()->nsOid."
|
||
AND typtype IN ('b','d','e')
|
||
AND typelem = 0");}function
|
||
type_values($t){$Bc=get_vals("SELECT enumlabel FROM pg_enum WHERE enumtypid = $t ORDER BY enumsortorder");return($Bc?"'".implode("', '",array_map('addslashes',$Bc))."'":"");}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($Fh,$g=null){if(!$g)$g=connection();$J=$g->query("SET search_path TO ".idf_escape($Fh));driver()->setUserTypes(types());return$J;}function
|
||
foreign_keys_sql($R){$J="";$P=table_status1($R);$fd=foreign_keys($R);ksort($fd);foreach($fd
|
||
as$ed=>$dd)$J
|
||
.="ALTER TABLE ONLY ".idf_escape($P['nspname']).".".idf_escape($P['Name'])." ADD CONSTRAINT ".idf_escape($ed)." $dd[definition] ".($dd['deferrable']?'DEFERRABLE':'NOT DEFERRABLE').";\n";return($J?"$J\n":$J);}function
|
||
create_sql($R,$_a,$si){$wh=array();$Uh=array();$P=table_status1($R);if(is_view($P)){$Mj=view($R);return
|
||
rtrim("CREATE VIEW ".idf_escape($R)." AS $Mj[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){$xg=idf_escape($m['field']).' '.$m['full_type'].default_value($m).($m['null']?"":" NOT NULL");$wh[]=$xg;if(preg_match('~nextval\(\'([^\']+)\'\)~',$m['default'],$Ze)){$Th=$Ze[1];$hi=first(get_rows((min_version(10)?"SELECT *, cache_size AS cache_value FROM pg_sequences WHERE schemaname = current_schema() AND sequencename = ".q(idf_unescape($Th)):"SELECT * FROM $Th"),null,"-- "));$Uh[]=($si=="DROP+CREATE"?"DROP SEQUENCE IF EXISTS $Th;\n":"")."CREATE SEQUENCE $Th INCREMENT $hi[increment_by] MINVALUE $hi[min_value] MAXVALUE $hi[max_value]".($_a&&$hi['last_value']?" START ".($hi["last_value"]+1):"")." CACHE $hi[cache_value];";}}if(!empty($Uh))$J=implode("\n\n",$Uh)."\n\n$J";$G="";foreach(indexes($R)as$ce=>$v){if($v['type']=='PRIMARY'){$G=$ce;$wh[]="CONSTRAINT ".idf_escape($ce)." PRIMARY KEY (".implode(', ',array_map('Adminer\idf_escape',$v['columns'])).")";}}foreach(driver()->checkConstraints($R)as$ub=>$wb)$wh[]="CONSTRAINT ".idf_escape($ub)." CHECK $wb";$J
|
||
.=implode(",\n ",$wh)."\n)";$zg=driver()->partitionsInfo($P['Name']);if($zg)$J
|
||
.="\nPARTITION BY $zg[partition_by]($zg[partition])";$J
|
||
.="\nWITH (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$Wc=>$m){if($m['comment'])$J
|
||
.="\n\nCOMMENT ON COLUMN ".idf_escape($P['nspname']).".".idf_escape($P['Name']).".".idf_escape($Wc)." 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$gj=>$fj){$hj=trigger($gj,$P['Name']);$J
|
||
.="\nCREATE TRIGGER ".idf_escape($hj['Trigger'])." $hj[Timing] $hj[Event] ON ".idf_escape($P["nspname"]).".".idf_escape($P['Name'])." $hj[Type] $hj[Statement];;\n";}return$J;}function
|
||
use_sql($Nb,$si=""){$B=idf_escape($Nb);$J="";if(preg_match('~CREATE~',$si)){if($si=="DROP+CREATE")$J="DROP DATABASE IF EXISTS $B;\n";$J
|
||
.="CREATE DATABASE $B;\n";}return"$J\\connect $B";}function
|
||
show_variables(){return
|
||
get_rows("SHOW ALL");}function
|
||
process_list(){return
|
||
get_rows("SELECT * FROM pg_stat_activity ORDER BY ".(min_version(9.2)?"pid":"procpid"));}function
|
||
convert_field($m){}function
|
||
unconvert_field($m,$J){return$J;}function
|
||
support($Uc){return
|
||
preg_match('~^(check|columns|comment|database|drop_col|dump|descidx|indexes|kill|partial_indexes|routine|scheme|sequence|sql|table|trigger|type|variables|view'.(min_version(9.3)?'|materializedview':'').(min_version(11)?'|procedure':'').(connection()->flavor=='cockroach'?'':'|processlist').')$~',$Uc);}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($Cc,$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($Nb){$this->_current_db=$Nb;return
|
||
true;}function
|
||
query($H,$oj=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;}function
|
||
timeout($uf){return
|
||
oci_set_call_timeout($this->link,$uf);}}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($Nb){$this->_current_db=$Nb;return
|
||
true;}}}class
|
||
Driver
|
||
extends
|
||
SqlDriver{static$extensions=array("OCI8","PDO_OCI");static$jush="oracle";var$insertFunctions=array("date"=>"current_date","timestamp"=>"current_timestamp",);var$editFunctions=array("number|float|double"=>"+/-","date|timestamp"=>"+ interval/- interval","char|clob"=>"||",);var$operators=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL","SQL");var$functions=array("length","lower","round","upper");var$grouping=array("avg","count","count distinct","max","min","sum");function
|
||
__construct(Db$f){parent::__construct($f);$this->types=array('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){$wj=array();$Z=array();foreach($O
|
||
as$x=>$X){$wj[]="$x = $X";if(isset($G[idf_unescape($x)]))$Z[]="$x = $X";}if(!(($Z&&queries("UPDATE ".table($R)." SET ".implode(", ",$wj)." WHERE ".implode(" AND ",$Z))&&$this->conn->affected_rows)||queries("INSERT INTO ".table($R)." (".implode(", ",array_keys($O)).") VALUES (".implode(", ",$O).")")))return
|
||
false;}return
|
||
true;}function
|
||
hasCStyleEscapes(){return
|
||
true;}}function
|
||
idf_escape($u){return'"'.str_replace('"','""',$u).'"';}function
|
||
table($u){return
|
||
idf_escape($u);}function
|
||
get_databases($hd){return
|
||
get_vals("SELECT DISTINCT tablespace_name FROM (
|
||
SELECT tablespace_name FROM user_tablespaces
|
||
UNION SELECT tablespace_name FROM all_tables WHERE tablespace_name IS NOT NULL
|
||
)
|
||
ORDER BY 1");}function
|
||
limit($H,$Z,$z,$C=0,$Rh=" "){return($C?" * FROM (SELECT t.*, rownum AS rnum FROM (SELECT $H$Z) t WHERE rownum <= ".($z+$C).") WHERE rnum > $C":($z?" * FROM (SELECT $H$Z) WHERE rownum <= ".($z+$C):" $H$Z"));}function
|
||
limit1($R,$H,$Z,$Rh="\n"){return" $H$Z";}function
|
||
db_collation($j,$jb){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($Sg,$rg="owner"){if(!$_GET["ns"])return'';return"$Sg$rg = sys_context('USERENV', 'CURRENT_SCHEMA')";}function
|
||
views_table($e){$rg=where_owner('');return"(SELECT $e FROM all_views WHERE ".($rg?:"rownum < 0").")";}function
|
||
tables_list(){$Mj=views_table("view_name");$rg=where_owner(" AND ");return
|
||
get_key_vals("SELECT table_name, 'table' FROM all_tables WHERE tablespace_name = ".q(DB)."$rg
|
||
UNION SELECT view_name, 'view' FROM $Mj
|
||
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($B=""){$J=array();$Kh=q($B);$j=get_current_db();$Mj=views_table("view_name");$rg=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).$rg.($B!=""?" AND table_name = $Kh":"")."
|
||
UNION SELECT view_name, 'view', 0, 0 FROM $Mj".($B!=""?" WHERE view_name = $Kh":"")."
|
||
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();$rg=where_owner(" AND ");foreach(get_rows("SELECT * FROM all_tab_columns WHERE table_name = ".q($R)."$rg 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();$rg=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)."$rg
|
||
ORDER BY ac.constraint_type, aic.column_position",$g)as$K){$ce=$K["INDEX_NAME"];$lb=$K["DATA_DEFAULT"];$lb=($lb?trim($lb,'"'):$K["COLUMN_NAME"]);$J[$ce]["type"]=($K["CONSTRAINT_TYPE"]=="P"?"PRIMARY":($K["CONSTRAINT_TYPE"]=="U"?"UNIQUE":"INDEX"));$J[$ce]["columns"][]=$lb;$J[$ce]["lengths"][]=($K["CHAR_LENGTH"]&&$K["CHAR_LENGTH"]!=$K["COLUMN_LENGTH"]?$K["CHAR_LENGTH"]:null);$J[$ce]["descs"][]=($K["DESCEND"]&&$K["DESCEND"]=="DESC"?'1':null);}return$J;}function
|
||
view($B){$Mj=views_table("view_name, text");$L=get_rows('SELECT text "select" FROM '.$Mj.' WHERE view_name = '.q($B));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,$B,$n,$jd,$ob,$xc,$c,$_a,$E){$b=$ic=array();$kg=($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]");$jg=$kg[$m[0]];if($X&&$jg){$Nf=process_field($jg,$jg);if($X[2]==$Nf[2])$X[2]="";}if($X)$b[]=($R!=""?($m[0]!=""?"MODIFY (":"ADD ("):" ").implode($X).($R!=""?")":"");else$ic[]=idf_escape($m[0]);}if($R=="")return
|
||
queries("CREATE TABLE ".table($B)." (\n".implode(",\n",$b)."\n)");return(!$b||queries("ALTER TABLE ".table($R)."\n".implode("\n",$b)))&&(!$ic||queries("ALTER TABLE ".table($R)." DROP (".implode(", ",$ic).")"))&&($R==$B||queries("ALTER TABLE ".table($R)." RENAME TO ".table($B)));}function
|
||
alter_indexes($R,$b){$ic=array();$eh=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($eh,"ALTER TABLE ".table($R).$h);}elseif($X[2]=="DROP")$ic[]=idf_escape($X[1]);else$eh[]="CREATE INDEX ".idf_escape($X[1]!=""?$X[1]:uniqid($R."_"))." ON ".table($R)." (".implode(", ",$X[2]).")";}if($ic)array_unshift($eh,"DROP INDEX ".implode(", ",$ic));foreach($eh
|
||
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($Nj){return
|
||
apply_queries("DROP VIEW",$Nj);}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($Hh,$g=null){if(!$g)$g=connection();return$g->query("ALTER SESSION SET CURRENT_SCHEMA = ".idf_escape($Hh));}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($Uc){return
|
||
preg_match('~^(columns|database|drop_col|indexes|descidx|processlist|scheme|sql|status|table|variables|view)$~',$Uc);}}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){$vb=array("UID"=>$V,"PWD"=>$F,"CharacterSet"=>"UTF-8");$ni=adminer()->connectSsl();if(isset($ni["Encrypt"]))$vb["Encrypt"]=$ni["Encrypt"];if(isset($ni["TrustServerCertificate"]))$vb["TrustServerCertificate"]=$ni["TrustServerCertificate"];$j=adminer()->database();if($j!="")$vb["Database"]=$j;list($Md,$Mg)=host_port($N);$this->link=@sqlsrv_connect($Md.($Mg?",$Mg":""),$vb);if($this->link){$he=sqlsrv_server_info($this->link);$this->server_info=$he['SQLServerVersion'];}else$this->get_error();return($this->link?'':$this->error);}function
|
||
quote($Q){$pj=strlen($Q)!=strlen(utf8_decode($Q));return($pj?"N":"")."'".str_replace("'","''",$Q)."'";}function
|
||
select_db($Nb){return$this->query(use_sql($Nb));}function
|
||
query($H,$oj=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($C){for($s=0;$s<$C;$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($Nb){return$this->query(use_sql($Nb));}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){list($Md,$Mg)=host_port($N);return$this->dsn("sqlsrv:Server=$Md".($Mg?",$Mg":""),$V,$F);}}}elseif(extension_loaded("pdo_dblib")){class
|
||
Db
|
||
extends
|
||
MssqlDb{var$extension="PDO_DBLIB";function
|
||
attach($N,$V,$F){list($Md,$Mg)=host_port($N);return$this->dsn("dblib:charset=utf8;host=$Md".($Mg?(is_numeric($Mg)?";port=":";unix_socket=").$Mg:""),$V,$F);}}}}class
|
||
Driver
|
||
extends
|
||
SqlDriver{static$extensions=array("SQLSRV","PDO_SQLSRV","PDO_DBLIB");static$jush="mssql";var$insertFunctions=array("date|time"=>"getdate");var$editFunctions=array("int|decimal|real|float|money|datetime"=>"+/-","char|text"=>"+",);var$operators=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL");var$functions=array("len","lower","round","upper");var$grouping=array("avg","count","count distinct","max","min","sum");var$generated=array("PERSISTED","VIRTUAL");var$onActions="NO ACTION|CASCADE|SET NULL|SET DEFAULT";static
|
||
function
|
||
connect($N,$V,$F){if($N=="")$N="localhost:1433";return
|
||
parent::connect($N,$V,$F);}function
|
||
__construct(Db$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);$wj=array();$Z=array();$O=reset($L);$e="c".implode(", c",range(1,count($O)));$Pa=0;$ne=array();foreach($O
|
||
as$x=>$X){$Pa++;$B=idf_unescape($x);if(!$n[$B]["auto_increment"])$ne[$x]="c$Pa";if(isset($G[$B]))$Z[]="$x = c$Pa";else$wj[]="$x = c$Pa";}$Ij=array();foreach($L
|
||
as$O)$Ij[]="(".implode(", ",$O).")";if($Z){$Rd=queries("SET IDENTITY_INSERT ".table($R)." ON");$J=queries("MERGE ".table($R)." USING (VALUES\n\t".implode(",\n\t",$Ij)."\n) AS source ($e) ON ".implode(" AND ",$Z).($wj?"\nWHEN MATCHED THEN UPDATE SET ".implode(", ",$wj):"")."\nWHEN NOT MATCHED THEN INSERT (".implode(", ",array_keys($Rd?$O:$ne)).") VALUES (".($Rd?$e:implode(", ",$ne)).");");if($Rd)queries("SET IDENTITY_INSERT ".table($R)." OFF");}else$J=queries("INSERT INTO ".table($R)." (".implode(", ",array_keys($O)).") VALUES\n".implode(",\n",$Ij));return$J;}function
|
||
begin(){return
|
||
queries("BEGIN TRANSACTION");}function
|
||
tableHelp($B,$ye=false){$Re=array("sys"=>"catalog-views/sys-","INFORMATION_SCHEMA"=>"information-schema-views/",);$_=$Re[get_schema()];if($_)return"relational-databases/system-$_".preg_replace('~_~','-',strtolower($B))."-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($hd){return
|
||
get_vals("SELECT name FROM sys.databases WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb')");}function
|
||
limit($H,$Z,$z,$C=0,$Rh=" "){return($z?" TOP (".($z+$C).")":"")." $H$Z";}function
|
||
limit1($R,$H,$Z,$Rh="\n"){return
|
||
limit($H,$Z,1,0,$Rh);}function
|
||
db_collation($j,$jb){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($B=""){$J=array();foreach(get_rows("SELECT ao.name AS Name, ao.type_desc AS Engine, (SELECT value FROM fn_listextendedproperty(default, 'SCHEMA', schema_name(schema_id), 'TABLE', ao.name, null, null)) AS Comment
|
||
FROM sys.all_objects AS ao
|
||
WHERE schema_id = SCHEMA_ID(".q(get_schema()).") AND type IN ('S', 'U', 'V') ".($B!=""?"AND name = ".q($B):"ORDER BY name"))as$K)$J[$K["Name"]]=$K;return$J;}function
|
||
is_view($S){return$S["Engine"]=="VIEW";}function
|
||
fk_support($S){return
|
||
true;}function
|
||
fields($R){$qb=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();$zi=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($zi))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"],$A)?str_replace("''","'",$A[1]):$K["default"]),"default_constraint"=>$K["default_constraint"],"null"=>$K["is_nullable"],"auto_increment"=>$K["is_identity"],"collation"=>$K["collation_name"],"privileges"=>array("insert"=>1,"select"=>1,"update"=>1,"where"=>1,"order"=>1),"primary"=>$K["is_primary_key"],"comment"=>$qb[$K["name"]],);}foreach(get_rows("SELECT * FROM sys.computed_columns WHERE object_id = ".q($zi))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){$B=$K["name"];$J[$B]["type"]=($K["is_primary_key"]?"PRIMARY":($K["is_unique"]?"UNIQUE":"INDEX"));$J[$B]["lengths"]=array();$J[$B]["columns"][$K["key_ordinal"]]=$K["column_name"];$J[$B]["descs"][$K["key_ordinal"]]=($K["is_descending_key"]?'1':null);}return$J;}function
|
||
view($B){return
|
||
array("select"=>preg_replace('~^(?:[^[]|\[[^]]*])*\s+AS\s+~isU','',get_val("SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_SCHEMA = SCHEMA_NAME() AND TABLE_NAME = ".q($B))));}function
|
||
collations(){$J=array();foreach(get_vals("SELECT name FROM fn_helpcollations()")as$c)$J[preg_replace('~_.*~','',$c)][]=$c;return$J;}function
|
||
information_schema($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($B,$c){if(preg_match('~^[a-z0-9_]+$~i',$c))queries("ALTER DATABASE ".idf_escape(DB)." COLLATE $c");queries("ALTER DATABASE ".idf_escape(DB)." MODIFY NAME = ".idf_escape($B));return
|
||
true;}function
|
||
auto_increment(){return" IDENTITY".($_POST["Auto_increment"]!=""?"(".number($_POST["Auto_increment"]).",1)":"")." PRIMARY KEY";}function
|
||
alter_table($R,$B,$n,$jd,$ob,$xc,$c,$_a,$E){$b=array();$qb=array();$kg=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]);$qb[$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($jd[$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)][]="";$jg=$kg[$m[0]];if(default_value($jg)!=$k){if($jg["default"]!==null)$b["DROP"][]=" ".idf_escape($jg["default_constraint"]);if($k)$b["ADD"][]="\n $k FOR $d";}}}}if($R=="")return
|
||
queries("CREATE TABLE ".table($B)." (".implode(",",(array)$b["ADD"])."\n)");if($R!=$B)queries("EXEC sp_rename ".q(table($R)).", ".q($B));if($jd)$b[""]=$jd;foreach($b
|
||
as$x=>$X){if(!queries("ALTER TABLE ".table($B)." $x".implode(",",$X)))return
|
||
false;}foreach($qb
|
||
as$x=>$X){$ob=substr($X,9);queries("EXEC sp_dropextendedproperty @name = N'MS_Description', @level0type = N'Schema', @level0name = ".q(get_schema()).", @level1type = N'Table', @level1name = ".q($B).", @level2type = N'Column', @level2name = ".q($x));queries("EXEC sp_addextendedproperty
|
||
@name = N'MS_Description',
|
||
@value = $ob,
|
||
@level0type = N'Schema',
|
||
@level0name = ".q(get_schema()).",
|
||
@level1type = N'Table',
|
||
@level1name = ".q($B).",
|
||
@level2type = N'Column',
|
||
@level2name = ".q($x));}return
|
||
true;}function
|
||
alter_indexes($R,$b){$v=array();$ic=array();foreach($b
|
||
as$X){if($X[2]=="DROP"){if($X[0]=="PRIMARY")$ic[]=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)))&&(!$ic||queries("ALTER TABLE ".table($R)." DROP ".implode(", ",$ic)));}function
|
||
found_rows($S,$Z){}function
|
||
foreign_keys($R){$J=array();$Uf=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"]=$Uf[$K["UPDATE_RULE"]];$p["on_delete"]=$Uf[$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($Nj){return
|
||
queries("DROP VIEW ".implode(", ",array_map('Adminer\table',$Nj)));}function
|
||
drop_tables($T){return
|
||
queries("DROP TABLE ".implode(", ",array_map('Adminer\table',$T)));}function
|
||
move_tables($T,$Nj,$Ii){return
|
||
apply_queries("ALTER SCHEMA ".idf_escape($Ii)." TRANSFER",array_merge($T,$Nj));}function
|
||
trigger($B,$R){if($B=="")return
|
||
array();$L=get_rows("SELECT s.name [Trigger],
|
||
CASE WHEN OBJECTPROPERTY(s.id, 'ExecIsInsertTrigger') = 1 THEN 'INSERT' WHEN OBJECTPROPERTY(s.id, 'ExecIsUpdateTrigger') = 1 THEN 'UPDATE' WHEN OBJECTPROPERTY(s.id, 'ExecIsDeleteTrigger') = 1 THEN 'DELETE' END [Event],
|
||
CASE WHEN OBJECTPROPERTY(s.id, 'ExecIsInsteadOfTrigger') = 1 THEN 'INSTEAD OF' ELSE 'AFTER' END [Timing],
|
||
c.text
|
||
FROM sysobjects s
|
||
JOIN syscomments c ON s.id = c.id
|
||
WHERE s.xtype = 'TR' AND s.name = ".q($B));$J=reset($L);if($J)$J["Statement"]=preg_replace('~^.+\s+AS\s+~isU','',$J["text"]);return$J;}function
|
||
triggers($R){$J=array();foreach(get_rows("SELECT sys1.name,
|
||
CASE WHEN OBJECTPROPERTY(sys1.id, 'ExecIsInsertTrigger') = 1 THEN 'INSERT' WHEN OBJECTPROPERTY(sys1.id, 'ExecIsUpdateTrigger') = 1 THEN 'UPDATE' WHEN OBJECTPROPERTY(sys1.id, 'ExecIsDeleteTrigger') = 1 THEN 'DELETE' END [Event],
|
||
CASE WHEN OBJECTPROPERTY(sys1.id, 'ExecIsInsteadOfTrigger') = 1 THEN 'INSTEAD OF' ELSE 'AFTER' END [Timing]
|
||
FROM sysobjects sys1
|
||
JOIN sysobjects sys2 ON sys1.parent_obj = sys2.id
|
||
WHERE sys1.xtype = 'TR' AND sys2.name = ".q($R))as$K)$J[$K["name"]]=array($K["Timing"],$K["Event"]);return$J;}function
|
||
trigger_options(){return
|
||
array("Timing"=>array("AFTER","INSTEAD OF"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("AS"),);}function
|
||
schemas(){return
|
||
get_vals("SELECT name FROM sys.schemas");}function
|
||
get_schema(){if($_GET["ns"]!="")return$_GET["ns"];return
|
||
get_val("SELECT SCHEMA_NAME()");}function
|
||
set_schema($Fh){$_GET["ns"]=$Fh;return
|
||
true;}function
|
||
create_sql($R,$_a,$si){if(is_view(table_status1($R))){$Mj=view($R);return"CREATE VIEW ".table($R)." AS $Mj[select]";}$n=array();$G=false;foreach(fields($R)as$B=>$m){$X=process_field($m,$m);if($X[6])$G=true;$n[]=implode("",$X);}foreach(indexes($R)as$B=>$v){if(!$G||$v["type"]!="PRIMARY"){$e=array();foreach($v["columns"]as$x=>$X)$e[]=idf_escape($X).($v["descs"][$x]?" DESC":"");$B=idf_escape($B);$n[]=($v["type"]=="INDEX"?"INDEX $B":"CONSTRAINT $B ".($v["type"]=="UNIQUE"?"UNIQUE":"PRIMARY KEY"))." (".implode(", ",$e).")";}}foreach(driver()->checkConstraints($R)as$B=>$Wa)$n[]="CONSTRAINT ".idf_escape($B)." CHECK ($Wa)";return"CREATE TABLE ".table($R)." (\n\t".implode(",\n\t",$n)."\n)";}function
|
||
foreign_keys_sql($R){$n=array();foreach(foreign_keys($R)as$jd)$n[]=ltrim(format_foreign_key($jd));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($Nb,$si=""){return"USE ".idf_escape($Nb);}function
|
||
trigger_sql($R){$J="";foreach(triggers($R)as$B=>$hj)$J
|
||
.=create_trigger(" ON ".table($R),trigger($B,$R)).";";return$J;}function
|
||
convert_field($m){}function
|
||
unconvert_field($m,$J){return$J;}function
|
||
support($Uc){return
|
||
preg_match('~^(check|comment|columns|database|drop_col|dump|indexes|descidx|scheme|sql|table|trigger|view|view_trigger)$~',$Uc);}}class
|
||
Adminer{static$instance;var$error='';function
|
||
name(){return"<a href='https://www.adminer.org/'".target_blank()." id='h1'><img src='".h(preg_replace("~\\?.*~","",ME)."?file=logo.png&version=5.4.1")."' 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($hd=true){return
|
||
get_databases($hd);}function
|
||
pluginsLinks(){}function
|
||
operators(){return
|
||
driver()->operators;}function
|
||
schemas(){return
|
||
schemas();}function
|
||
queryTimeout(){return
|
||
2;}function
|
||
afterConnect(){}function
|
||
headers(){}function
|
||
csp(array$Gb){return$Gb;}function
|
||
head($Kb=null){return
|
||
true;}function
|
||
bodyClass(){echo" adminer";}function
|
||
css(){$J=array();foreach(array("","-dark")as$tf){$o="adminer$tf.css";if(file_exists($o)){$Zc=file_get_contents($o);$J["$o?v=".crc32($Zc)]=($tf?"dark":(preg_match('~prefers-color-scheme:\s*dark~',$Zc)?'':'light'));}}return$J;}function
|
||
loginForm(){echo"<table class='layout'>\n",adminer()->loginFormField('driver','<tr><th>'.'System'.'<td>',html_select("auth[driver]",SqlDriver::$drivers,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($B,$Hd,$Y){return$Hd.$Y."\n";}function
|
||
login($Te,$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$yi){return
|
||
h($yi["Name"]);}function
|
||
fieldName(array$m,$dg=0){$U=$m["full_type"];$ob=$m["comment"];return'<span title="'.h($U.($ob!=""?($U?": ":"").$ob:'')).'">'.h($m["field"]).'</span>';}function
|
||
selectLinks(array$yi,$O=""){$B=$yi["Name"];echo'<p class="links">';$Re=array("select"=>'Select data');if(support("table")||support("indexes"))$Re["table"]='Show structure';$ye=false;if(support("table")){$ye=is_view($yi);if(!$ye)$Re["create"]='Alter table';elseif(support("view"))$Re["view"]='Alter view';}if($O!==null)$Re["edit"]='New item';foreach($Re
|
||
as$x=>$X)echo" <a href='".h(ME)."$x=".urlencode($B).($x=="edit"?$O:"")."'".bold(isset($_GET[$x])).">$X</a>";echo
|
||
doc_link(array(JUSH=>driver()->tableHelp($B,$ye)),"?"),"\n";}function
|
||
foreignKeys($R){return
|
||
foreign_keys($R);}function
|
||
backwardKeys($R,$xi){return
|
||
array();}function
|
||
backwardKeysPrint(array$Da,array$K){}function
|
||
selectQuery($H,$oi,$Sc=false){$J="</p>\n";if(!$Sc&&($Qj=driver()->warnings())){$t="warnings";$J=", <a href='#$t'>".'Warnings'."</a>".script("qsl('a').onclick = partial(toggle, '$t');","")."$J<div id='$t' class='hidden'>\n$Qj</div>\n";}return"<p><code class='jush-".JUSH."'>".h(str_replace("\n"," ",$H))."</code> <span class='time'>(".format_time($oi).")</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$kd){return$L;}function
|
||
selectLink($X,array$m){}function
|
||
selectVal($X,$_,array$m,$ng){$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(is_blob($m)&&!is_utf8($X))$J="<i>".lang_format(array('%d byte','%d bytes'),strlen($ng))."</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,$yi=null){echo"<div class='scrollable'>\n","<table class='nowrap odds'>\n","<thead><tr><th>".'Column'."<td>".'Type'.(support("comment")?"<td>".'Comment':"")."</thead>\n";$ri=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)$ri['User types'])?"<a href='".h(ME.'type='.urlencode($U))."'>$U</a>":$U.($c&&isset($yi["Collation"])&&$c!=$yi["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,array$yi){$yg=false;foreach($w
|
||
as$B=>$v)$yg|=!!$v["partial"];echo"<table>\n";$Sb=first(driver()->indexAlgorithms($yi));foreach($w
|
||
as$B=>$v){ksort($v["columns"]);$Wg=array();foreach($v["columns"]as$x=>$X)$Wg[]="<i>".h($X)."</i>".($v["lengths"][$x]?"(".$v["lengths"][$x].")":"").($v["descs"][$x]?" DESC":"");echo"<tr title='".h($B)."'>","<th>$v[type]".($Sb&&$v['algorithm']!=$Sb?" ($v[algorithm])":""),"<td>".implode(", ",$Wg);if($yg)echo"<td>".($v['partial']?"<code class='jush-".JUSH."'>WHERE ".h($v['partial']):"");echo"\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(idx($_GET["fulltext"],$s))."'>",script("qsl('input').oninput = selectFieldChange;",""),checkbox("boolean[$s]",1,isset($_GET["boolean"][$s]),"BOOL"),"</div>\n";}$Ta="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"],$Ta),"<input type='search' name='where[$s][val]' value='".h($X["val"])."'>",script("mixin(qsl('input'), {oninput: function () { $Ta }, onkeydown: selectSearchKeydown, onsearch: selectSearchSearch});",""),"</div>\n";}echo"</div></fieldset>\n";}function
|
||
selectOrderPrint(array$dg,array$e,array$w){print_fieldset("sort",'Sort',$dg);$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($Oi){if($Oi!==null)echo"<fieldset><legend>".'Text length'."</legend><div>","<input type='number' name='text_length' class='size' value='".h($Oi)."'>","</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){$Jb=reset($v["columns"]);if($v["type"]!="FULLTEXT"&&$Jb)$e[$Jb]=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$uc,array$e){}function
|
||
selectColumnsProcess(array$e,array$w){$M=array();$wd=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))$wd[]=$M[$x];}}return
|
||
array($M,$wd);}function
|
||
selectSearchProcess(array$n,array$w){$J=array();foreach($w
|
||
as$s=>$v){if($v["type"]=="FULLTEXT"&&idx($_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){$hb=$X["col"];if("$hb$X[val]"!=""&&in_array($X["op"],adminer()->operators())){$sb=array();foreach(($hb!=""?array($hb=>$n[$hb]):$n)as$B=>$m){$Sg="";$rb=" $X[op]";if(preg_match('~IN$~',$X["op"])){$Wd=process_length($X["val"]);$rb
|
||
.=" ".($Wd!=""?$Wd:"(NULL)");}elseif($X["op"]=="SQL")$rb=" $X[val]";elseif(preg_match('~^(I?LIKE) %%$~',$X["op"],$A))$rb=" $A[1] ".adminer()->processInput($m,"%$X[val]%");elseif($X["op"]=="FIND_IN_SET"){$Sg="$X[op](".q($X["val"]).", ";$rb=")";}elseif(!preg_match('~NULL$~',$X["op"]))$rb
|
||
.=" ".adminer()->processInput($m,$X["val"]);if($hb!=""||(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"]))))$sb[]=$Sg.driver()->convertSearch(idf_escape($B),$X,$m).$rb;}$J[]=(count($sb)==1?$sb[0]:($sb?"(".implode(" OR ",$sb).")":"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$kd){return
|
||
false;}function
|
||
selectQueryBuild(array$M,array$Z,array$wd,array$dg,$z,$D){return"";}function
|
||
messageQuery($H,$Pi,$Sc=false){restart_session();$Jd=&get_session("queries");if(!idx($Jd,$_GET["db"]))$Jd[$_GET["db"]]=array();if(strlen($H)>1e6)$H=preg_replace('~[\x80-\xFF]+$~','',substr($H,0,1e6))."\n…";$Jd[$_GET["db"]][]=array($H,time(),$Pi);$ki="sql-".count($Jd[$_GET["db"]]);$J="<a href='#$ki' class='toggle'>".'SQL command'."</a> <a href='' class='jsonly copy'>🗐</a>\n";if(!$Sc&&($Qj=driver()->warnings())){$t="warnings-".count($Jd[$_GET["db"]]);$J="<a href='#$t' class='toggle'>".'Warnings'."</a>, $J<div id='$t' class='hidden'>\n$Qj</div>\n";}return" <span class='time'>".@date("H:i:s")."</span>"." $J<div id='$ki' class='hidden'><pre><code class='jush-".JUSH."'>".shorten_utf8($H,1000)."</code></pre>".($Pi?" <span class='time'>($Pi)</span>":'').(support("sql")?'<p><a href="'.h(str_replace("db=".urlencode(DB),"db=".urlencode($_GET["db"]),ME).'sql=&history='.(count($Jd[$_GET["db"]])-1)).'">'.'Edit'.'</a>':'').'</div>';}function
|
||
editRowPrint($R,array$n,$K,$wj){}function
|
||
editFunctions(array$m){$J=($m["null"]?"NULL/":"");$wj=isset($_GET["select"])||where($_GET);foreach(array(driver()->insertFunctions,driver()->editFunctions)as$x=>$rd){if(!$x||(!isset($_GET["call"])&&$wj)){foreach($rd
|
||
as$Gg=>$X){if(!$Gg||preg_match("~$Gg~",$m["type"]))$J
|
||
.="/$X";}}if($x&&$rd&&!preg_match('~set|bool~',$m["type"])&&!is_blob($m))$J
|
||
.="/SQL";}if($m["auto_increment"]&&!$wj)$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='orig' checked><i>".'original'."</i></label> ":"").enum_input("radio",$ya,$m,$Y,"NULL");return"";}function
|
||
editHint($R,array$m,$Y){return"";}function
|
||
processInput(array$m,$Y,$r=""){if($r=="SQL")return$Y;$B=$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($B)." $r $J";elseif(preg_match('~^[+-] interval$~',$r))$J=idf_escape($B)." $r ".(preg_match("~^(\\d+|'[0-9.: -]') [A-Z_]+\$~i",$Y)&&JUSH!="pgsql"?$Y:$J);elseif(preg_match('~^(addtime|subtime|concat)$~',$r))$J="$r(".idf_escape($B).", $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,$si,$ye=0){if($_POST["format"]!="sql"){echo"\xef\xbb\xbf";if($si)dump_csv(array_keys(fields($R)));}else{if($ye==2){$n=array();foreach(fields($R)as$B=>$m)$n[]=idf_escape($B)." $m[full_type]";$h="CREATE TABLE ".table($R)." (".implode(", ",$n).")";}else$h=create_sql($R,$_POST["auto_increment"],$si);set_utf8mb4($h);if($si&&$h){if($si=="DROP+CREATE"||$ye==1)echo"DROP ".($ye==2?"VIEW":"TABLE")." IF EXISTS ".table($R).";\n";if($ye==1)$h=remove_definer($h);echo"$h;\n\n";}}}function
|
||
dumpData($R,$si,$H){if($si){$df=(JUSH=="sqlite"?0:1048576);$n=array();$Sd=false;if($_POST["format"]=="sql"){if($si=="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";$Sd=true;break;}}}}$I=connection()->query($H,1);if($I){$ne="";$Na="";$Ce=array();$sd=array();$ui="";$Vc=($R!=''?'fetch_assoc':'fetch_row');$Cb=0;while($K=$I->$Vc()){if(!$Ce){$Ij=array();foreach($K
|
||
as$X){$m=$I->fetch_field();if(idx($n[$m->name],'generated')){$sd[$m->name]=true;continue;}$Ce[]=$m->name;$x=idf_escape($m->name);$Ij[]="$x = VALUES($x)";}$ui=($si=="INSERT+UPDATE"?"\nON DUPLICATE KEY UPDATE ".implode(", ",$Ij):"").";\n";}if($_POST["format"]!="sql"){if($si=="table"){dump_csv($Ce);$si="INSERT";}dump_csv($K);}else{if(!$ne)$ne="INSERT INTO ".table($R)." (".implode(", ",array_map('Adminer\idf_escape',$Ce)).") VALUES";foreach($K
|
||
as$x=>$X){if($sd[$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");}$Dh=($df?"\n":" ")."(".implode(",\t",$K).")";if(!$Na)$Na=$ne.$Dh;elseif(JUSH=='mssql'?$Cb%1000!=0:strlen($Na)+4+strlen($Dh)+strlen($ui)<$df)$Na
|
||
.=",$Dh";else{echo$Na.$ui;$Na=$ne.$Dh;}}$Cb++;}if($Na)echo$Na.$ui;}elseif($_POST["format"]=="sql")echo"-- ".str_replace("\n"," ",connection()->error)."\n";if($Sd)echo"SET IDENTITY_INSERT ".table($R)." OFF;\n";}}function
|
||
dumpFilename($Qd){return
|
||
friendly_url($Qd!=""?$Qd:(SERVER?:"localhost"));}function
|
||
dumpHeaders($Qd,$wf=false){$qg=$_POST["output"];$Nc=(preg_match('~sql~',$_POST["format"])?"sql":($wf?"tar":"csv"));header("Content-Type: ".($qg=="gz"?"application/x-gzip":($Nc=="tar"?"application/x-tar":($Nc=="sql"||$qg!="file"?"text/plain":"text/csv")."; charset=utf-8")));if($qg=="gz"){ob_start(function($Q){return
|
||
gzencode($Q);},1e6);}return$Nc;}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":"");if($_GET["ns"]!=="")echo(support("routine")?"<a href='#routines'>".'Routines'."</a>\n":""),(support("sequence")?"<a href='#sequences'>".'Sequences'."</a>\n":""),(support("type")?"<a href='#user-types'>".'User types'."</a>\n":""),(support("event")?"<a href='#events'>".'Events'."</a>\n":"");return
|
||
true;}function
|
||
navigation($sf){echo"<h1>".adminer()->name()." <span class='version'>".VERSION;$Df=$_COOKIE["adminer_version"];echo" <a href='https://www.adminer.org/#download'".target_blank()." id='version'>".(version_compare(VERSION,$Df)<0?h($Df):"")."</a>","</span></h1>\n";if($sf=="auth"){$qg="";foreach((array)$_SESSION["pwds"]as$Kj=>$Wh){foreach($Wh
|
||
as$N=>$Fj){$B=h(get_setting("vendor-$Kj-$N")?:get_driver($Kj));foreach($Fj
|
||
as$V=>$F){if($F!==null){$Qb=$_SESSION["db"][$Kj][$N][$V];foreach(($Qb?array_keys($Qb):array(""))as$j)$qg
|
||
.="<li><a href='".h(auth_url($Kj,$N,$V,$j))."'>($B) ".h("$V@".($N!=""?adminer()->serverName($N):"").($j!=""?" - $j":""))."</a>\n";}}}}if($qg)echo"<ul id='logins'>\n$qg</ul>\n".script("mixin(qs('#logins'), {onmouseover: menuOver, onmouseout: menuOut});");}else{$T=array();if($_GET["ns"]!==""&&!$sf&&DB!=""){connection()->select_db(DB);$T=table_status('',true);}adminer()->syntaxHighlighting($T);adminer()->databasesPrint($sf);$ia=array();if(DB==""||!$sf){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>";}$Xd=$_GET["ns"]!==""&&!$sf&&DB!="";if($Xd)$ia[]='<a href="'.h(ME).'create="'.bold($_GET["create"]==="").">".'Create table'."</a>";echo($ia?"<p class='links'>\n".implode("\n",$ia)."\n":"");if($Xd){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.4.1",true);if(support("sql")){echo"<script".nonce().">\n";if($T){$Re=array();foreach($T
|
||
as$R=>$U)$Re[]=preg_quote($R,'/');echo"var jushLinks = { ".JUSH.":";json_row(js_escape(ME).(support("table")?"table":"select").'=$&','/\b('.implode('|',$Re).')\b/g',false);if(support('routine')){foreach(routines()as$K)json_row(js_escape(ME).'function='.urlencode($K["SPECIFIC_NAME"]).'&name=$&','/\b'.preg_quote($K["ROUTINE_NAME"],'/').'(?=["`]?\()/g',false);}json_row('');echo"};\n";foreach(array("bac","bra","sqlite_quo","mssql_bra")as$X)echo"jushLinks.$X = jushLinks.".JUSH.";\n";if(isset($_GET["sql"])||isset($_GET["trigger"])||isset($_GET["check"])){$Ei=array_fill_keys(array_keys($T),array());foreach(driver()->allFields()as$R=>$n){foreach($n
|
||
as$m)$Ei[$R][]=$m["field"];}echo"addEventListener('DOMContentLoaded', () => { autocompleter = jush.autocompleteSql('".idf_escape("")."', ".json_encode($Ei)."); });\n";}}echo"</script>\n";}echo
|
||
script("syntaxHighlighting('".preg_replace('~^(\d\.?\d).*~s','\1',connection()->server_info)."', '".connection()->flavor."');");}function
|
||
databasesPrint($sf){$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();$Ob=script("mixin(qsl('select'), {onmousedown: dbMouseDown, onchange: dbChange});");echo"<label title='".'Database'."'>".'DB'.": ".($i?html_select("db",array(""=>"")+$i,DB).$Ob:"<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($sf!="db"&&DB!=""&&connection()->select_db(DB)){echo"<br><label>".'Schema'.": ".html_select("ns",array(""=>"")+adminer()->schemas(),$_GET["ns"])."$Ob</label>";if($_GET["ns"]!="")set_schema($_GET["ns"]);}}foreach(array("import","sql","schema","dump","privileges")as$X){if(isset($_GET[$X])){echo
|
||
input_hidden($X);break;}}echo"</p></form>\n";}function
|
||
tablesPrint(array$T){echo"<ul id='tables'>".script("mixin(qs('#tables'), {onmouseover: menuOver, onmouseout: menuOut});");foreach($T
|
||
as$R=>$P){$R="$R";$B=adminer()->tableName($P);if($B!=""&&!$P["partition"])echo'<li><a href="'.h(ME).'select='.urlencode($R).'"'.bold($_GET["select"]==$R||$_GET["edit"]==$R,"select")." title='".'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'."'>$B</a>":"<span>$B</span>")."\n";}echo"</ul>\n";}function
|
||
processList(){return
|
||
process_list();}function
|
||
killProcess($t){return
|
||
kill_process($t);}}class
|
||
Plugins{private
|
||
static$append=array('dumpFormat'=>true,'dumpOutput'=>true,'editRowPrint'=>true,'editFunctions'=>true,'config'=>true);var$plugins;var$error='';private$hooks=array();function
|
||
__construct($Lg){if($Lg===null){$Lg=array();$Ha="adminer-plugins";if(is_dir($Ha)){foreach(glob("$Ha/*.php")as$o)$Yd=include_once"./$o";}$Id=" href='https://www.adminer.org/plugins/#use'".target_blank();if(file_exists("$Ha.php")){$Yd=include_once"./$Ha.php";if(is_array($Yd)){foreach($Yd
|
||
as$Kg)$Lg[get_class($Kg)]=$Kg;}else$this->error
|
||
.=sprintf('%s must <a%s>return an array</a>.',"<b>$Ha.php</b>",$Id)."<br>";}foreach(get_declared_classes()as$db){if(!$Lg[$db]&&preg_match('~^Adminer\w~i',$db)){$oh=new
|
||
\ReflectionClass($db);$xb=$oh->getConstructor();if($xb&&$xb->getNumberOfRequiredParameters())$this->error
|
||
.=sprintf('<a%s>Configure</a> %s in %s.',$Id,"<b>$db</b>","<b>$Ha.php</b>")."<br>";else$Lg[$db]=new$db;}}}$this->plugins=$Lg;$la=new
|
||
Adminer;$Lg[]=$la;$oh=new
|
||
\ReflectionObject($la);foreach($oh->getMethods()as$qf){foreach($Lg
|
||
as$Kg){$B=$qf->getName();if(method_exists($Kg,$B))$this->hooks[$B][]=$Kg;}}}function
|
||
__call($B,array$vg){$ua=array();foreach($vg
|
||
as$x=>$X)$ua[]=&$vg[$x];$J=null;foreach($this->hooks[$B]as$Kg){$Y=call_user_func_array(array($Kg,$B),$ua);if($Y!==null){if(!self::$append[$B])return$Y;$J=$Y+(array)$J;}}return$J;}}abstract
|
||
class
|
||
Plugin{protected$translations=array();function
|
||
description(){return$this->lang('');}function
|
||
screenshot(){return"";}protected
|
||
function
|
||
lang($u,$Jf=null){$ua=func_get_args();$ua[0]=idx($this->translations[LANG],$u)?:$u;return
|
||
call_user_func_array('Adminer\lang_format',$ua);}}Adminer::$instance=(function_exists('adminer_object')?adminer_object():(is_dir("adminer-plugins")||file_exists("adminer-plugins.php")?new
|
||
Plugins(null):new
|
||
Adminer));SqlDriver::$drivers=array("server"=>"MySQL / MariaDB")+SqlDriver::$drivers;if(!defined('Adminer\DRIVER')){define('Adminer\DRIVER',"server");if(extension_loaded("mysqli")&&$_GET["ext"]!="pdo"){class
|
||
Db
|
||
extends
|
||
\MySQLi{static$instance;var$extension="MySQLi",$flavor='';function
|
||
__construct(){parent::init();}function
|
||
attach($N,$V,$F){mysqli_report(MYSQLI_REPORT_OFF);list($Md,$Mg)=host_port($N);$ni=adminer()->connectSsl();if($ni)$this->ssl_set($ni['key'],$ni['cert'],$ni['ca'],'','');$J=@$this->real_connect(($N!=""?$Md: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($Mg)?intval($Mg):ini_get("mysqli.default_port")),(is_numeric($Mg)?null:$Mg),($ni?($ni['verify']!==false?2048:64):0));$this->options(MYSQLI_OPT_LOCAL_INFILE,0);return($J?'':$this->error);}function
|
||
set_charset($Va){if(parent::set_charset($Va))return
|
||
true;parent::set_charset('utf8');return$this->query("SET NAMES $Va");}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($Va){if(function_exists('mysql_set_charset')){if(mysql_set_charset($Va,$this->link))return
|
||
true;mysql_set_charset('utf8',$this->link);}return$this->query("SET NAMES $Va");}function
|
||
quote($Q){return"'".mysql_real_escape_string($Q,$this->link)."'";}function
|
||
select_db($Nb){return
|
||
mysql_select_db($Nb,$this->link);}function
|
||
query($H,$oj=false){$I=@($oj?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){$bg=array(\PDO::MYSQL_ATTR_LOCAL_INFILE=>false);$ni=adminer()->connectSsl();if($ni){if($ni['key'])$bg[\PDO::MYSQL_ATTR_SSL_KEY]=$ni['key'];if($ni['cert'])$bg[\PDO::MYSQL_ATTR_SSL_CERT]=$ni['cert'];if($ni['ca'])$bg[\PDO::MYSQL_ATTR_SSL_CA]=$ni['ca'];if(isset($ni['verify']))$bg[\PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT]=$ni['verify'];}list($Md,$Mg)=host_port($N);return$this->dsn("mysql:charset=utf8;host=$Md".($Mg?(is_numeric($Mg)?";port=":";unix_socket=").$Mg:""),$V,$F,$bg);}function
|
||
set_charset($Va){return$this->query("SET NAMES $Va");}function
|
||
select_db($Nb){return$this->query("USE ".idf_escape($Nb));}function
|
||
query($H,$oj=false){$this->pdo->setAttribute(\PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,!$oj);return
|
||
parent::query($H,$oj);}}}class
|
||
Driver
|
||
extends
|
||
SqlDriver{static$extensions=array("MySQLi","MySQL","PDO_MySQL");static$jush="sql";var$unsigned=array("unsigned","zerofill","unsigned zerofill");var$operators=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","REGEXP","IN","FIND_IN_SET","IS NULL","NOT LIKE","NOT REGEXP","NOT IN","IS NOT NULL","SQL");var$functions=array("char_length","date","from_unixtime","lower","round","floor","ceil","sec_to_time","time_to_sec","upper");var$grouping=array("avg","count","count distinct","group_concat","max","min","sum");static
|
||
function
|
||
connect($N,$V,$F){$f=parent::connect($N,$V,$F);if(is_string($f)){if(function_exists('iconv')&&!is_utf8($f)&&strlen($Dh=iconv("windows-1250","utf-8",$f))>strlen($f))$f=$Dh;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.1,'',$f))$this->partitionBy=array("HASH","LINEAR HASH","KEY","LINEAR KEY","RANGE","LIST");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));$Sg="INSERT INTO ".table($R)." (".implode(", ",$e).") VALUES\n";$Ij=array();foreach($e
|
||
as$x)$Ij[$x]="$x = VALUES($x)";$ui="\nON DUPLICATE KEY UPDATE ".implode(", ",$Ij);$Ij=array();$y=0;foreach($L
|
||
as$O){$Y="(".implode(", ",$O).")";if($Ij&&(strlen($Sg)+$y+strlen($Y)+strlen($ui)>1e6)){if(!queries($Sg.implode(",\n",$Ij).$ui))return
|
||
false;$Ij=array();$y=0;}$Ij[]=$Y;$y+=strlen($Y)+2;}return
|
||
queries($Sg.implode(",\n",$Ij).$ui);}function
|
||
slowQuery($H,$Qi){if(min_version('5.7.8','10.1.2')){if($this->conn->flavor=='maria')return"SET STATEMENT max_statement_time=$Qi FOR $H";elseif(preg_match('~^(SELECT\b)(.+)~is',$H,$A))return"$A[1] /*+ MAX_EXECUTION_TIME(".($Qi*1000).") */ $A[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($B,$ye=false){$Ve=($this->conn->flavor=='maria');if(information_schema(DB))return
|
||
strtolower("information-schema-".($Ve?"$B-table/":str_replace("_","-",$B)."-table.html"));if(DB=="mysql")return($Ve?"mysql$B-table/":"system-schema.html");}function
|
||
partitionsInfo($R){$pd="FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = ".q(DB)." AND TABLE_NAME = ".q($R);$I=$this->conn->query("SELECT PARTITION_METHOD, PARTITION_EXPRESSION, PARTITION_ORDINAL_POSITION $pd ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1");$J=array();list($J["partition_by"],$J["partition"],$J["partitions"])=$I->fetch_row();$Cg=get_key_vals("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $pd AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION");$J["partition_names"]=array_keys($Cg);$J["partition_values"]=array_values($Cg);return$J;}function
|
||
hasCStyleEscapes(){static$Qa;if($Qa===null){$li=get_val("SHOW VARIABLES LIKE 'sql_mode'",1,$this->conn);$Qa=(strpos($li,'NO_BACKSLASH_ESCAPES')===false);}return$Qa;}function
|
||
engines(){$J=array();foreach(get_rows("SHOW ENGINES")as$K){if(preg_match("~YES|DEFAULT~",$K["Support"]))$J[]=$K["Engine"];}return$J;}function
|
||
indexAlgorithms(array$yi){return(preg_match('~^(MEMORY|NDB)$~',$yi["Engine"])?array("HASH","BTREE"):array());}}function
|
||
idf_escape($u){return"`".str_replace("`","``",$u)."`";}function
|
||
table($u){return
|
||
idf_escape($u);}function
|
||
get_databases($hd){$J=get_session("dbs");if($J===null){$H="SELECT SCHEMA_NAME FROM information_schema.SCHEMATA ORDER BY SCHEMA_NAME";$J=($hd?slow_query($H):get_vals($H));restart_session();set_session("dbs",$J);stop_session();}return$J;}function
|
||
limit($H,$Z,$z,$C=0,$Rh=" "){return" $H$Z".($z?$Rh."LIMIT $z".($C?" OFFSET $C":""):"");}function
|
||
limit1($R,$H,$Z,$Rh="\n"){return
|
||
limit($H,$Z,1,0,$Rh);}function
|
||
db_collation($j,array$jb){$J=null;$h=get_val("SHOW CREATE DATABASE ".idf_escape($j),1);if(preg_match('~ COLLATE ([^ ]+)~',$h,$A))$J=$A[1];elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$h,$A))$J=$jb[$A[1]][-1];return$J;}function
|
||
logged_user(){return
|
||
get_val("SELECT USER()");}function
|
||
tables_list(){return
|
||
get_key_vals("SELECT TABLE_NAME, TABLE_TYPE FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ORDER BY TABLE_NAME");}function
|
||
count_tables(array$i){$J=array();foreach($i
|
||
as$j)$J[$j]=count(get_vals("SHOW TABLES IN ".idf_escape($j)));return$J;}function
|
||
table_status($B="",$Tc=false){$J=array();foreach(get_rows($Tc?"SELECT TABLE_NAME AS Name, ENGINE AS Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ".($B!=""?"AND TABLE_NAME = ".q($B):"ORDER BY Name"):"SHOW TABLE STATUS".($B!=""?" LIKE ".q(addcslashes($B,"%_\\")):""))as$K){if($K["Engine"]=="InnoDB")$K["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\1',$K["Comment"]);if(!isset($K["Engine"]))$K["Comment"]="";if($B!="")$K["Name"]=$B;$J[$K["Name"]]=$K;}return$J;}function
|
||
is_view(array$S){return$S["Engine"]===null;}function
|
||
fk_support(array$S){return
|
||
preg_match('~InnoDB|IBMDB2I'.(min_version(5.6)?'|NDB':'').'~i',$S["Engine"]);}function
|
||
fields($R){$Ve=(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"];$td=$K["GENERATION_EXPRESSION"];$Qc=$K["EXTRA"];preg_match('~^(VIRTUAL|PERSISTENT|STORED)~',$Qc,$sd);preg_match('~^([^( ]+)(?:\((.+)\))?( unsigned)?( zerofill)?$~',$U,$Ye);$k=$K["COLUMN_DEFAULT"];if($k!=""){$xe=preg_match('~text|json~',$Ye[1]);if(!$Ve&&$xe)$k=preg_replace("~^(_\w+)?('.*')$~",'\2',stripslashes($k));if($Ve||$xe){$k=($k=="NULL"?null:preg_replace_callback("~^'(.*)'$~",function($A){return
|
||
stripslashes(str_replace("''","'",$A[1]));},$k));}if(!$Ve&&preg_match('~binary~',$Ye[1])&&preg_match('~^0x(\w*)$~',$k,$A))$k=pack("H*",$A[1]);}$J[$m]=array("field"=>$m,"full_type"=>$U,"type"=>$Ye[1],"length"=>$Ye[2],"unsigned"=>ltrim($Ye[3].$Ye[4]),"default"=>($sd?($Ve?$td:stripslashes($td)):$k),"null"=>($K["IS_NULLABLE"]=="YES"),"auto_increment"=>($Qc=="auto_increment"),"on_update"=>(preg_match('~\bon update (\w+)~i',$Qc,$A)?$A[1]:""),"collation"=>$K["COLLATION_NAME"],"privileges"=>array_flip(explode(",","$K[PRIVILEGES],where,order")),"comment"=>$K["COLUMN_COMMENT"],"primary"=>($K["COLUMN_KEY"]=="PRI"),"generated"=>($sd[1]=="PERSISTENT"?"STORED":$sd[1]),);}return$J;}function
|
||
indexes($R,$g=null){$J=array();foreach(get_rows("SHOW INDEX FROM ".table($R),$g)as$K){$B=$K["Key_name"];$J[$B]["type"]=($B=="PRIMARY"?"PRIMARY":($K["Index_type"]=="FULLTEXT"?"FULLTEXT":($K["Non_unique"]?($K["Index_type"]=="SPATIAL"?"SPATIAL":"INDEX"):"UNIQUE")));$J[$B]["columns"][]=$K["Column_name"];$J[$B]["lengths"][]=($K["Index_type"]=="SPATIAL"?null:$K["Sub_part"]);$J[$B]["descs"][]=null;$J[$B]["algorithm"]=$K["Index_type"];}return$J;}function
|
||
foreign_keys($R){static$Gg='(?:`(?:[^`]|``)+`|"(?:[^"]|"")+")';$J=array();$Db=get_val("SHOW CREATE TABLE ".table($R),1);if($Db){preg_match_all("~CONSTRAINT ($Gg) FOREIGN KEY ?\\(((?:$Gg,? ?)+)\\) REFERENCES ($Gg)(?:\\.($Gg))? \\(((?:$Gg,? ?)+)\\)(?: ON DELETE (".driver()->onActions."))?(?: ON UPDATE (".driver()->onActions."))?~",$Db,$Ze,PREG_SET_ORDER);foreach($Ze
|
||
as$A){preg_match_all("~$Gg~",$A[2],$fi);preg_match_all("~$Gg~",$A[5],$Ii);$J[idf_unescape($A[1])]=array("db"=>idf_unescape($A[4]!=""?$A[3]:$A[4]),"table"=>idf_unescape($A[4]!=""?$A[4]:$A[3]),"source"=>array_map('Adminer\idf_unescape',$fi[0]),"target"=>array_map('Adminer\idf_unescape',$Ii[0]),"on_delete"=>($A[6]?:"RESTRICT"),"on_update"=>($A[7]?:"RESTRICT"),);}}return$J;}function
|
||
view($B){return
|
||
array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\s+AS\s+~isU','',get_val("SHOW CREATE VIEW ".table($B),1)));}function
|
||
collations(){$J=array();foreach(get_rows("SHOW COLLATION")as$K){if($K["Default"])$J[$K["Charset"]][-1]=$K["Collation"];else$J[$K["Charset"]][]=$K["Collation"];}ksort($J);foreach($J
|
||
as$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($B,$c){$J=false;if(create_database($B,$c)){$T=array();$Nj=array();foreach(tables_list()as$R=>$U){if($U=='VIEW')$Nj[]=$R;else$T[]=$R;}$J=(!$T&&!$Nj)||move_tables($T,$Nj,$B);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,$B,array$n,array$jd,$ob,$xc,$c,$_a,$E){$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,$jd);$P=($ob!==null?" COMMENT=".q($ob):"").($xc?" ENGINE=".q($xc):"").($c?" COLLATE ".q($c):"").($_a!=""?" AUTO_INCREMENT=$_a":"");if($E){$Cg=array();if($E["partition_by"]=='RANGE'||$E["partition_by"]=='LIST'){foreach($E["partition_names"]as$x=>$X){$Y=$E["partition_values"][$x];$Cg[]="\n PARTITION ".idf_escape($X)." VALUES ".($E["partition_by"]=='RANGE'?"LESS THAN":"IN").($Y!=""?" ($Y)":" MAXVALUE");}}$P
|
||
.="\nPARTITION BY $E[partition_by]($E[partition])";if($Cg)$P
|
||
.=" (".implode(",",$Cg)."\n)";elseif($E["partitions"])$P
|
||
.=" PARTITIONS ".(+$E["partitions"]);}elseif($E===null)$P
|
||
.="\nREMOVE PARTITIONING";if($R=="")return
|
||
queries("CREATE TABLE ".table($B)." (\n".implode(",\n",$b)."\n)$P");if($R!=$B)$b[]="RENAME TO ".table($B);if($P)$b[]=ltrim($P);return($b?queries("ALTER TABLE ".table($R)."\n".implode(",\n",$b)):true);}function
|
||
alter_indexes($R,$b){$Ua=array();foreach($b
|
||
as$X)$Ua[]=($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(",",$Ua));}function
|
||
truncate_tables(array$T){return
|
||
apply_queries("TRUNCATE TABLE",$T);}function
|
||
drop_views(array$Nj){return
|
||
queries("DROP VIEW ".implode(", ",array_map('Adminer\table',$Nj)));}function
|
||
drop_tables(array$T){return
|
||
queries("DROP TABLE ".implode(", ",array_map('Adminer\table',$T)));}function
|
||
move_tables(array$T,array$Nj,$Ii){$sh=array();foreach($T
|
||
as$R)$sh[]=table($R)." TO ".idf_escape($Ii).".".table($R);if(!$sh||queries("RENAME TABLE ".implode(", ",$sh))){$Wb=array();foreach($Nj
|
||
as$R)$Wb[table($R)]=view($R);connection()->select_db($Ii);$j=idf_escape(DB);foreach($Wb
|
||
as$B=>$Mj){if(!queries("CREATE VIEW $B AS ".str_replace(" $j."," ",$Mj["select"]))||!queries("DROP VIEW $j.$B"))return
|
||
false;}return
|
||
true;}return
|
||
false;}function
|
||
copy_tables(array$T,array$Nj,$Ii){queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");foreach($T
|
||
as$R){$B=($Ii==DB?table("copy_$R"):idf_escape($Ii).".".table($R));if(($_POST["overwrite"]&&!queries("\nDROP TABLE IF EXISTS $B"))||!queries("CREATE TABLE $B LIKE ".table($R))||!queries("INSERT INTO $B SELECT * FROM ".table($R)))return
|
||
false;foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$K){$hj=$K["Trigger"];if(!queries("CREATE TRIGGER ".($Ii==DB?idf_escape("copy_$hj"):idf_escape($Ii).".".idf_escape($hj))." $K[Timing] $K[Event] ON $B FOR EACH ROW\n$K[Statement];"))return
|
||
false;}}foreach($Nj
|
||
as$R){$B=($Ii==DB?table("copy_$R"):idf_escape($Ii).".".table($R));$Mj=view($R);if(($_POST["overwrite"]&&!queries("DROP VIEW IF EXISTS $B"))||!queries("CREATE VIEW $B AS $Mj[select]"))return
|
||
false;}return
|
||
true;}function
|
||
trigger($B,$R){if($B=="")return
|
||
array();$L=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($B));return
|
||
reset($L);}function
|
||
triggers($R){$J=array();foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$K)$J[$K["Trigger"]]=array($K["Timing"],$K["Event"]);return$J;}function
|
||
trigger_options(){return
|
||
array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("FOR EACH ROW"),);}function
|
||
routine($B,$U){$ra=array("bool","boolean","integer","double precision","real","dec","numeric","fixed","national char","national varchar");$gi="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$zc=driver()->enumLength;$mj="((".implode("|",array_merge(array_keys(driver()->types()),$ra)).")\\b(?:\\s*\\(((?:[^'\")]|$zc)++)\\))?"."\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?)(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s,]+)['\"]?)?(?:\\s*COLLATE\\s*['\"]?[^'\"\\s,]+['\"]?)?";$Gg="$gi*(".($U=="FUNCTION"?"":driver()->inout).")?\\s*(?:`((?:[^`]|``)*)`\\s*|\\b(\\S+)\\s+)$mj";$h=get_val("SHOW CREATE $U ".idf_escape($B),2);preg_match("~\\(((?:$Gg\\s*,?)*)\\)\\s*".($U=="FUNCTION"?"RETURNS\\s+$mj\\s+":"")."(.*)~is",$h,$A);$n=array();preg_match_all("~$Gg\\s*,?~is",$A[1],$Ze,PREG_SET_ORDER);foreach($Ze
|
||
as$ug)$n[]=array("field"=>str_replace("``","`",$ug[2]).$ug[3],"type"=>strtolower($ug[5]),"length"=>preg_replace_callback("~$zc~s",'Adminer\normalize_enum',$ug[6]),"unsigned"=>strtolower(preg_replace('~\s+~',' ',trim("$ug[8] $ug[7]"))),"null"=>true,"full_type"=>$ug[4],"inout"=>strtoupper($ug[1]),"collation"=>strtolower($ug[9]),);return
|
||
array("fields"=>$n,"comment"=>get_val("SELECT ROUTINE_COMMENT FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = DATABASE() AND ROUTINE_NAME = ".q($B)),)+($U!="FUNCTION"?array("definition"=>$A[11]):array("returns"=>array("type"=>$A[12],"length"=>$A[13],"unsigned"=>$A[15],"collation"=>$A[16]),"definition"=>$A[17],"language"=>"SQL",));}function
|
||
routines(){return
|
||
get_rows("SELECT SPECIFIC_NAME, ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = DATABASE()");}function
|
||
routine_languages(){return
|
||
array();}function
|
||
routine_id($B,array$K){return
|
||
idf_escape($B);}function
|
||
last_id($I){return
|
||
get_val("SELECT LAST_INSERT_ID()");}function
|
||
explain(Db$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,$si){$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($Nb,$si=""){$B=idf_escape($Nb);$J="";if(preg_match('~CREATE~',$si)&&($h=get_val("SHOW CREATE DATABASE $B",1))){set_utf8mb4($h);if($si=="DROP+CREATE")$J="DROP DATABASE IF EXISTS $B;\n";$J
|
||
.="$h;\n";}return$J."USE $B";}function
|
||
trigger_sql($R){$J="";foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")),null,"-- ")as$K)$J
|
||
.="\nCREATE TRIGGER ".idf_escape($K["Trigger"])." $K[Timing] $K[Event] ON ".table($K["Table"])." FOR EACH ROW\n$K[Statement];;\n";return$J;}function
|
||
show_variables(){return
|
||
get_rows("SHOW VARIABLES");}function
|
||
show_status(){return
|
||
get_rows("SHOW STATUS");}function
|
||
process_list(){return
|
||
get_rows("SHOW FULL PROCESSLIST");}function
|
||
convert_field(array$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"])){$Sg=(min_version(8)?"ST_":"");$J=$Sg."GeomFromText($J, $Sg"."SRID($m[field]))";}return$J;}function
|
||
support($Uc){return
|
||
preg_match('~^(comment|columns|copy|database|drop_col|dump|indexes|kill|privileges|move_col|procedure|processlist|routine|sql|status|table|trigger|variables|view'.(min_version(5.1)?'|event':'').(min_version(8)?'|descidx':'').(min_version('8.0.16','10.2.1')?'|check':'').')$~',$Uc);}function
|
||
kill_process($t){return
|
||
queries("KILL ".number($t));}function
|
||
connection_id(){return"SELECT CONNECTION_ID()";}function
|
||
max_connections(){return
|
||
get_val("SELECT @@max_connections");}function
|
||
types(){return
|
||
array();}function
|
||
type_values($t){return"";}function
|
||
schemas(){return
|
||
array();}function
|
||
get_schema(){return"";}function
|
||
set_schema($Fh,$g=null){return
|
||
true;}}define('Adminer\JUSH',Driver::$jush);define('Adminer\SERVER',"".$_GET[DRIVER]);define('Adminer\DB',"$_GET[db]");define('Adminer\ME',preg_replace('~\?.*~','',relative_uri()).'?'.(sid()?SID.'&':'').(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($Si,$l="",$Ma=array(),$Ti=""){page_headers();if(is_ajax()&&$l){page_messages($l);exit;}if(!ob_get_level())ob_start('ob_gzhandler',4096);$Ui=$Si.($Ti!=""?": $Ti":"");$Vi=strip_tags($Ui.(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>',$Vi,'</title>
|
||
<link rel="stylesheet" href="',h(preg_replace("~\\?.*~","",ME)."?file=default.css&version=5.4.1"),'">
|
||
';$Hb=adminer()->css();if(is_int(key($Hb)))$Hb=array_fill_keys($Hb,'light');$Ed=in_array('light',$Hb)||in_array('',$Hb);$Cd=in_array('dark',$Hb)||in_array('',$Hb);$Kb=($Ed?($Cd?null:false):($Cd?:null));$jf=" media='(prefers-color-scheme: dark)'";if($Kb!==false)echo"<link rel='stylesheet'".($Kb?"":$jf)." href='".h(preg_replace("~\\?.*~","",ME)."?file=dark.css&version=5.4.1")."'>\n";echo"<meta name='color-scheme' content='".($Kb===null?"light dark":($Kb?"dark":"light"))."'>\n",script_src(preg_replace("~\\?.*~","",ME)."?file=functions.js&version=5.4.1");if(adminer()->head($Kb))echo"<link rel='icon' href='data:image/gif;base64,R0lGODlhEAAQAJEAAAQCBPz+/PwCBAROZCH5BAEAAAAALAAAAAAQABAAAAI2hI+pGO1rmghihiUdvUBnZ3XBQA7f05mOak1RWXrNq5nQWHMKvuoJ37BhVEEfYxQzHjWQ5qIAADs='>\n","<link rel='apple-touch-icon' href='".h(preg_replace("~\\?.*~","",ME)."?file=logo.png&version=5.4.1")."'>\n";foreach($Hb
|
||
as$_j=>$tf){$ya=($tf=='dark'&&!$Kb?$jf:($tf=='light'&&$Cd?" media='(prefers-color-scheme: light)'":""));echo"<link rel='stylesheet'$ya href='".h($_j)."'>\n";}echo"\n<body class='".'ltr'." nojs";adminer()->bodyClass();echo"'>\n";$o=get_temp_dir()."/adminer.version";if(!$_COOKIE["adminer_version"]&&function_exists('openssl_verify')&&file_exists($o)&&filemtime($o)+86400>time()){$Lj=unserialize(file_get_contents($o));$ch="-----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($Lj["version"],base64_decode($Lj["signature"]),$ch)==1)$_COOKIE["adminer_version"]=$Lj["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){$Yb=(is_array($X)?$X[1]:h($X));if($Yb!="")echo"<a href='".h(ME."$x=").urlencode(is_array($X)?$X[0]:$X)."'>$Yb</a> » ";}}echo"$Si\n";}}echo"<h2>$Ui</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$Gb){$Gd=array();foreach($Gb
|
||
as$x=>$X)$Gd[]="$x $X";header("Content-Security-Policy: ".implode("; ",$Gd));}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$Ff;if(!$Ff)$Ff=base64_encode(rand_string());return$Ff;}function
|
||
page_messages($l){$zj=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$pf=idx($_SESSION["messages"],$zj);if($pf){echo"<div class='message'>".implode("</div>\n<div class='message'>",$pf)."</div>".script("messagesPrint();");unset($_SESSION["messages"][$zj]);}if($l)echo"<div class='error'>$l</div>\n";if(adminer()->error)echo"<div class='error'>".adminer()->error."</div>\n";}function
|
||
page_footer($sf=""){echo"</div>\n\n<div id='foot' class='foot'>\n<div id='menu'>\n";adminer()->navigation($sf);echo"</div>\n";if($sf!="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($yf){while($yf>=2147483648)$yf-=4294967296;while($yf<=-2147483649)$yf+=4294967296;return(int)$yf;}function
|
||
long2str(array$W,$Pj){$Dh='';foreach($W
|
||
as$X)$Dh
|
||
.=pack('V',$X);if($Pj)return
|
||
substr($Dh,0,end($W));return$Dh;}function
|
||
str2long($Dh,$Pj){$W=array_values(unpack('V*',str_pad($Dh,4*ceil(strlen($Dh)/4),"\0")));if($Pj)$W[]=strlen($Dh);return$W;}function
|
||
xxtea_mx($Wj,$Vj,$vi,$Ae){return
|
||
int32((($Wj>>5&0x7FFFFFF)^$Vj<<2)+(($Vj>>3&0x1FFFFFFF)^$Wj<<4))^int32(($vi^$Vj)+($Ae^$Wj));}function
|
||
encrypt_string($qi,$x){if($qi=="")return"";$x=array_values(unpack("V*",pack("H*",md5($x))));$W=str2long($qi,true);$yf=count($W)-1;$Wj=$W[$yf];$Vj=$W[0];$dh=floor(6+52/($yf+1));$vi=0;while($dh-->0){$vi=int32($vi+0x9E3779B9);$oc=$vi>>2&3;for($sg=0;$sg<$yf;$sg++){$Vj=$W[$sg+1];$xf=xxtea_mx($Wj,$Vj,$vi,$x[$sg&3^$oc]);$Wj=int32($W[$sg]+$xf);$W[$sg]=$Wj;}$Vj=$W[0];$xf=xxtea_mx($Wj,$Vj,$vi,$x[$sg&3^$oc]);$Wj=int32($W[$yf]+$xf);$W[$yf]=$Wj;}return
|
||
long2str($W,false);}function
|
||
decrypt_string($qi,$x){if($qi=="")return"";if(!$x)return
|
||
false;$x=array_values(unpack("V*",pack("H*",md5($x))));$W=str2long($qi,false);$yf=count($W)-1;$Wj=$W[$yf];$Vj=$W[0];$dh=floor(6+52/($yf+1));$vi=int32($dh*0x9E3779B9);while($vi){$oc=$vi>>2&3;for($sg=$yf;$sg>0;$sg--){$Wj=$W[$sg-1];$xf=xxtea_mx($Wj,$Vj,$vi,$x[$sg&3^$oc]);$Vj=int32($W[$sg]-$xf);$W[$sg]=$Vj;}$Wj=$W[$yf];$xf=xxtea_mx($Wj,$Vj,$vi,$x[$sg&3^$oc]);$Vj=int32($W[0]-$xf);$W[0]=$Vj;$vi=int32($vi-0x9E3779B9);}return
|
||
long2str($W,true);}$Ig=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$X){list($x)=explode(":",$X);$Ig[$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;$se=unserialize(stream_get_contents($q));$Pi=time();if($se){foreach($se
|
||
as$te=>$X){if($X[0]<$Pi)unset($se[$te]);}}$re=&$se[adminer()->bruteForceKey()];if(!$re)$re=array($Pi+30*60,0);$re[1]++;file_write_unlock($q,serialize($se));}function
|
||
check_invalid_login(array&$Ig){$se=array();foreach(glob(get_temp_dir()."/adminer.invalid*")as$o){$q=file_open_lock($o);if($q){$se=unserialize(stream_get_contents($q));file_unlock($q);break;}}$re=idx($se,adminer()->bruteForceKey(),array());$Ef=($re[1]>29?$re[0]-time():0);if($Ef>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($Ef/60)),$Ig);}$za=$_POST["auth"];if($za){session_regenerate_id();$Kj=$za["driver"];$N=$za["server"];$V=$za["username"];$F=(string)$za["password"];$j=$za["db"];set_password($Kj,$N,$V,$F);$_SESSION["db"][$Kj][$N][$V][$j]=true;if($za["permanent"]){$x=implode("-",array_map('base64_encode',array($Kj,$N,$V,$j)));$Xg=adminer()->permanentLogin(true);$Ig[$x]="$x:".base64_encode($Xg?encrypt_string($F,$Xg):"");cookie("adminer_permanent",implode(" ",$Ig));}if(count($_POST)==1||DRIVER!=$Kj||SERVER!=$N||$_GET["username"]!==$V||DB!=$j)redirect(auth_url($Kj,$N,$V,$j));}elseif($_POST["logout"]&&(!$_SESSION["token"]||verify_token())){foreach(array("pwds","db","dbs","queries")as$x)set_session($x,null);unset_permanent($Ig);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($Ig&&!$_SESSION["pwds"]){session_regenerate_id();$Xg=adminer()->permanentLogin();foreach($Ig
|
||
as$x=>$X){list(,$cb)=explode(":",$X);list($Kj,$N,$V,$j)=array_map('base64_decode',explode("-",$x));set_password($Kj,$N,$V,decrypt_string(base64_decode($cb),$Xg));$_SESSION["db"][$Kj][$N][$V][$j]=true;}}function
|
||
unset_permanent(array&$Ig){foreach($Ig
|
||
as$x=>$X){list($Kj,$N,$V,$j)=array_map('base64_decode',explode("-",$x));if($Kj==DRIVER&&$N==SERVER&&$V==$_GET["username"]&&$j==DB)unset($Ig[$x]);}cookie("adminer_permanent",implode(" ",$Ig));}function
|
||
auth_error($l,array&$Ig){$Xh=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$Xh]||$_GET[$Xh])&&!$_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($Ig);}}if(!$_COOKIE[$Xh]&&$_GET[$Xh]&&ini_bool("session.use_only_cookies"))$l='Session support must be enabled.';$vg=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?:rand_string()),$vg["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($Ig);page_header('No extension',sprintf('None of the supported PHP extensions (%s) are available.',implode(", ",Driver::$extensions)),false);page_footer("auth");exit;}$f='';if(isset($_GET["username"])&&is_string(get_password())){list(,$Mg)=host_port(SERVER);if(preg_match('~^\s*([-+]?\d+)~',$Mg,$A)&&($A[1]<1024||$A[1]>65535))auth_error('Connecting to privileged ports is not allowed.',$Ig);check_invalid_login($Ig);$Fb=adminer()->credentials();$f=Driver::connect($Fb[0],$Fb[1],$Fb[2]);if(is_object($f)){Db::$instance=$f;Driver::$instance=new
|
||
Driver($f);if($f->flavor)save_settings(array("vendor-".DRIVER."-".SERVER=>get_driver(DRIVER)));}}$Te=null;if(!is_object($f)||($Te=adminer()->login($_GET["username"],get_password()))!==true){$l=(is_string($f)?nl_br(h($f)):(is_string($Te)?$Te:'Invalid credentials.')).(preg_match('~^ | $~',get_password())?'<br>'.'There is a space in the input password which might be the cause.':'');auth_error($l,$Ig);}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()){$ke="max_input_vars";$hf=ini_get($ke);if(extension_loaded("suhosin")){foreach(array("suhosin.request.max_vars","suhosin.post.max_vars")as$x){$X=ini_get($x);if($X&&(!$hf||$X<$hf)){$ke=$x;$hf=$X;}}}$l=(!$_POST["token"]&&$hf?sprintf('Maximum number of allowed fields exceeded. Please increase %s.',"'$ke'"):'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$hg=array(),$z=0){$Re=array();$w=array();$e=array();$Ka=array();$nj=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($ze=0;$ze<count($K);$ze++){$m=$I->fetch_field();$B=$m->name;$gg=(isset($m->orgtable)?$m->orgtable:"");$fg=(isset($m->orgname)?$m->orgname:$B);if($hg&&JUSH=="sql")$Re[$ze]=($B=="table"?"table=":($B=="possible_keys"?"indexes=":null));elseif($gg!=""){if(isset($m->table))$J[$m->table]=$gg;if(!isset($w[$gg])){$w[$gg]=array();foreach(indexes($gg,$g)as$v){if($v["type"]=="PRIMARY"){$w[$gg]=array_flip($v["columns"]);break;}}$e[$gg]=$w[$gg];}if(isset($e[$gg][$fg])){unset($e[$gg][$fg]);$w[$gg][$fg]=$ze;$Re[$ze]=$gg;}}if($m->charsetnr==63)$Ka[$ze]=true;$nj[$ze]=$m->type;echo"<th".($gg!=""||$m->name!=$fg?" title='".h(($gg!=""?"$gg.":"").$fg)."'":"").">".h($B).($hg?doc_link(array('sql'=>"explain-output.html#explain_".strtolower($B),'mariadb'=>"explain/#the-columns-in-explain-select",)):"");}echo"</thead>\n";}echo"<tr>";foreach($K
|
||
as$x=>$X){$_="";if(isset($Re[$x])&&!$e[$Re[$x]]){if($hg&&JUSH=="sql"){$R=$K[array_search("table=",$Re)];$_=ME.$Re[$x].urlencode($hg[$R]!=""?$hg[$R]:$R);}else{$_=ME."edit=".urlencode($Re[$x]);foreach($w[$Re[$x]]as$hb=>$ze){if($K[$ze]===null){$_="";break;}$_
|
||
.="&where".urlencode("[".bracket_escape($hb)."]")."=".urlencode($K[$ze]);}}}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($nj[$x]==254)$X="<code>$X</code>";}if($_)$X="<a href='".h($_)."'".(is_url($_)?target_blank():'').">$X</a>";echo"<td".($nj[$x]<=9||$nj[$x]==246?" class='number'":"").">$X";}}echo($s?"</table>\n</div>":"<p class='message'>".'No rows.')."\n";return$J;}function
|
||
referencable_primary($Ph){$J=array();foreach(table_status('',true)as$_i=>$R){if($_i!=$Ph&&fk_support($R)){foreach(fields($_i)as$m){if($m["primary"]){if($J[$_i]){unset($J[$_i]);break;}$J[$_i]=$m;}}}}return$J;}function
|
||
textarea($B,$Y,$L=10,$kb=80){echo"<textarea name='".h($B)."' rows='$L' cols='$kb' 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$bg,$Y="",$Vf="",$Jg=""){$Hi=($bg?"select":"input");return"<$Hi$ya".($bg?"><option value=''>$Jg".optionlist($bg,$Y,true)."</select>":" size='10' value='".h($Y)."' placeholder='$Jg'>").($Vf?script("qsl('$Hi').onchange = $Vf;",""):"");}function
|
||
json_row($x,$X=null,$Fc=true){static$bd=true;if($bd)echo"{";if($x!=""){echo($bd?"":",")."\n\t\"".addcslashes($x,"\r\n\t\"\\/").'": '.($X!==null?($Fc?'"'.addcslashes($X,"\r\n\"\\/").'"':$X):'null');$bd=false;}else{echo"\n}\n";$bd=true;}}function
|
||
edit_type($x,array$m,array$jb,array$ld=array(),array$Rc=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($ld[$U])&&!in_array($U,$Rc))$Rc[]=$U;$ri=driver()->structuredTypes();if($ld)$ri['Foreign keys']=$ld;echo
|
||
optionlist(array_merge($Rc,$ri),$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'>",($jb?"<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>':''),($ld?"<select name='".h($x)."[on_delete]'".(preg_match("~`~",$U)?"":" class='hidden'")."><option value=''>(".'ON DELETE'.")".optionlist(explode("|",driver()->onActions),$m["on_delete"])."</select> ":" ");}function
|
||
process_length($y){$Ac=driver()->enumLength;return(preg_match("~^\\s*\\(?\\s*$Ac(?:\\s*,\\s*$Ac)*+\\s*\\)?\\s*\$~",$y)&&preg_match_all("~$Ac~",$y,$Ze)?"(".implode(",",$Ze[0]).")":preg_replace('~^[0-9].*~','(\0)',preg_replace('~[^-0-9,+()[\]]~','',$y)));}function
|
||
process_type(array$m,$ib="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"]?" $ib ".(JUSH=="mssql"?$m["collation"]:q($m["collation"])):"");}function
|
||
process_field(array$m,array$lj){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($lj),($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"];$sd=$m["generated"];return($k===null?"":(in_array($sd,driver()->generated)?(JUSH=="mssql"?" AS ($k)".($sd=="VIRTUAL"?"":" $sd")."":" GENERATED ALWAYS AS ($k) $sd"):" 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$jb,$U="TABLE",array$ld=array()){$n=array_values($n);$Tb=(($_POST?$_POST["defaults"]:get_setting("defaults"))?"":" class='hidden'");$pb=(($_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'$Tb>".'Default value',(support("comment")?"<td id='label-comment'$pb>".'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++;$ig=$m[($_POST?"orig":"field")];$ec=(isset($_POST["add"][$s-1])||(isset($m["field"])&&!idx($_POST["drop_col"],$s)))&&(support("drop_col")||$ig=="");echo"<tr".($ec?"":" style='display: none;'").">\n",($U=="PROCEDURE"?"<td>".html_select("fields[$s][inout]",explode("|",driver()->inout),$m["inout"]):"")."<th>";if($ec)echo"<input name='fields[$s][field]' value='".h($m["field"])."' data-maxlength='64' autocapitalize='off' aria-labelledby='label-name'".(isset($_POST["add"][$s-1])?" autofocus":"").">";echo
|
||
input_hidden("fields[$s][orig]",$ig);edit_type("fields[$s]",$m,$jb,$ld);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$Tb>".(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$pb><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')." ":""),($ig==""||support("drop_col")?icon("cross","drop_col[$s]","x",'Remove'):"");}}function
|
||
process_fields(array&$n){$C=0;if($_POST["up"]){$Ie=0;foreach($n
|
||
as$x=>$m){if(key($_POST["up"])==$x){unset($n[$x]);array_splice($n,$Ie,0,array($m));break;}if(isset($m["field"]))$Ie=$C;$C++;}}elseif($_POST["down"]){$nd=false;foreach($n
|
||
as$x=>$m){if(isset($m["field"])&&$nd){unset($n[key($_POST["down"])]);array_splice($n,$C,0,array($nd));break;}if(key($_POST["down"])==$x)$nd=$m;$C++;}}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$A){$X=$A[0];return"'".str_replace("'","''",addcslashes(stripcslashes(str_replace($X[0].$X[0],$X[0],substr($X,1,-1))),'\\'))."'";}function
|
||
grant($ud,array$Zg,$e,$Sf){if(!$Zg)return
|
||
true;if($Zg==array("ALL PRIVILEGES","GRANT OPTION"))return($ud=="GRANT"?queries("$ud ALL PRIVILEGES$Sf WITH GRANT OPTION"):queries("$ud ALL PRIVILEGES$Sf")&&queries("$ud GRANT OPTION$Sf"));return
|
||
queries("$ud ".preg_replace('~(GRANT OPTION)\([^)]*\)~','\1',implode("$e, ",$Zg).$e).$Sf);}function
|
||
drop_create($ic,$h,$kc,$Li,$mc,$Se,$of,$mf,$nf,$Pf,$Bf){if($_POST["drop"])query_redirect($ic,$Se,$of);elseif($Pf=="")query_redirect($h,$Se,$nf);elseif($Pf!=$Bf){$Eb=queries($h);queries_redirect($Se,$mf,$Eb&&queries($ic));if($Eb)queries($kc);}else
|
||
queries_redirect($Se,$mf,queries($Li)&&queries($mc)&&queries($ic)&&queries($h));}function
|
||
create_trigger($Sf,array$K){$Ri=" $K[Timing] $K[Event]".(preg_match('~ OF~',$K["Event"])?" $K[Of]":"");return"CREATE TRIGGER ".idf_escape($K["Trigger"]).(JUSH=="mssql"?$Sf.$Ri:$Ri.$Sf).rtrim(" $K[Type]\n$K[Statement]",";").";";}function
|
||
create_routine($_h,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");}$Vb=rtrim($K["definition"],";");return"CREATE $_h ".idf_escape(trim($K["name"]))." (".implode(", ",$O).")".($_h=="FUNCTION"?" RETURNS".process_type($K["returns"],"CHARACTER SET"):"").($K["language"]?" LANGUAGE $K[language]":"").(JUSH=="pgsql"?" AS ".q($Vb):"\n$Vb;");}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"];$Gf=$p["ns"];return" FOREIGN KEY (".implode(", ",array_map('Adminer\idf_escape',$p["source"])).") REFERENCES ".($j!=""&&$j!=$_GET["db"]?idf_escape($j).".":"").($Gf!=""&&$Gf!=$_GET["ns"]?idf_escape($Gf).".":"").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,$Wi){$J=pack("a100a8a8a8a12a12",$o,644,0,0,decoct($Wi->size),decoct(time()));$bb=8*32;for($s=0;$s<strlen($J);$s++)$bb+=ord($J[$s]);$J
|
||
.=sprintf("%06o",$bb)."\0 ";echo$J,str_repeat("\0",512-strlen($J));$Wi->send();echo
|
||
str_repeat("\0",511-($Wi->size+511)%512);}function
|
||
doc_link(array$Fg,$Mi="<sup>?</sup>"){$Vh=connection()->server_info;$Lj=preg_replace('~^(\d\.?\d).*~s','\1',$Vh);$Aj=array('sql'=>"https://dev.mysql.com/doc/refman/$Lj/en/",'sqlite'=>"https://www.sqlite.org/",'pgsql'=>"https://www.postgresql.org/docs/".(connection()->flavor=='cockroach'?"current":$Lj)."/",'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',$Vh)."&id=",);if(connection()->flavor=='maria'){$Aj['sql']="https://mariadb.com/kb/en/";$Fg['sql']=(isset($Fg['mariadb'])?$Fg['mariadb']:str_replace(".html","/",$Fg['sql']));}return($Fg[JUSH]?"<a href='".h($Aj[JUSH].$Fg[JUSH].(JUSH=='mssql'?"?view=sql-server-ver$Lj":""))."'".target_blank().">$Mi</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){$Hh=support("scheme");$jb=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){$zh=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='$zh' id='$t'>".h($j)."</a>";$c=h(db_collation($j,$jb));echo"<td>".(support("database")?"<a href='$zh".($Hh?"&ns=":"")."&database=' title='".'Alter database'."'>$c</a>":$c),"<td align='right'><a href='$zh&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(!empty(adminer()->plugins)){echo"<div class='plugins'>\n","<h3>".'Loaded plugins'."</h3>\n<ul>\n";foreach(adminer()->plugins
|
||
as$Kg){$Zb=(method_exists($Kg,'description')?$Kg->description():"");if(!$Zb){$oh=new
|
||
\ReflectionObject($Kg);if(preg_match('~^/[\s*]+(.+)~',$oh->getDocComment(),$A))$Zb=$A[1];}$Ih=(method_exists($Kg,'screenshot')?$Kg->screenshot():"");echo"<li><b>".get_class($Kg)."</b>".h($Zb?": $Zb":"").($Ih?" (<a href='".h($Ih)."'".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;}}}adminer()->afterConnect();class
|
||
TmpFile{private$handler;var$size;function
|
||
__construct(){$this->handler=tmpfile();}function
|
||
write($zb){$this->size+=strlen($zb);fwrite($this->handler,$zb);}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);$B=adminer()->tableName($S);page_header(($n&&is_view($S)?$S['Engine']=='materialized view'?'Materialized view':'View':'Table').": ".($B!=""?$B:h($a)),$l);$yh=array();foreach($n
|
||
as$x=>$m)$yh+=$m["privileges"];adminer()->selectLinks($S,(isset($yh["insert"])||!support("table")?"":null));$ob=$S["Comment"];if($ob!="")echo"<p class='nowrap'>".'Comment'.": ".h($ob)."\n";if($n)adminer()->tableStructurePrint($n,$S);function
|
||
tables_links(array$T){echo"<ul>\n";foreach($T
|
||
as$R)echo"<li><a href='".h(ME."table=".urlencode($R))."'>".h($R)."</a>";echo"</ul>\n";}$je=driver()->inheritsFrom($a);if($je){echo"<h3>".'Inherits from'."</h3>\n";tables_links($je);}if(support("indexes")&&driver()->supportsIndex($S)){echo"<h3 id='indexes'>".'Indexes'."</h3>\n";$w=indexes($a);if($w)adminer()->tableIndexesPrint($w,$S);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";$ld=foreign_keys($a);if($ld){echo"<table>\n","<thead><tr><th>".'Source'."<td>".'Target'."<td>".'ON DELETE'."<td>".'ON UPDATE'."<td></thead>\n";foreach($ld
|
||
as$B=>$p){echo"<tr title='".h($B)."'>","<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($B)).'">'.'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";$Xa=driver()->checkConstraints($a);if($Xa){echo"<table>\n";foreach($Xa
|
||
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";$kj=triggers($a);if($kj){echo"<table>\n";foreach($kj
|
||
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";}$ie=driver()->inheritedTables($a);if($ie){echo"<h3 id='partitions'>".'Inherited by'."</h3>\n";$zg=driver()->partitionsInfo($a);if($zg)echo"<p><code class='jush-".JUSH."'>BY ".h("$zg[partition_by]($zg[partition])")."</code>\n";tables_links($ie);}}elseif(isset($_GET["schema"])){page_header('Database schema',"",array(),h(DB.($_GET["ns"]?".$_GET[ns]":"")));$Bi=array();$Ci=array();$ca=($_GET["schema"]?:$_COOKIE["adminer_schema-".str_replace(".","_",DB)]);preg_match_all('~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~',$ca,$Ze,PREG_SET_ORDER);foreach($Ze
|
||
as$s=>$A){$Bi[$A[1]]=array($A[2],$A[3]);$Ci[]="\n\t'".js_escape($A[1])."': [ $A[2], $A[3] ]";}$Zi=0;$Ga=-1;$Fh=array();$nh=array();$Me=array();$sa=driver()->allFields();foreach(table_status('',true)as$R=>$S){if(is_view($S))continue;$Ng=0;$Fh[$R]["fields"]=array();foreach($sa[$R]as$m){$Ng+=1.25;$m["pos"]=$Ng;$Fh[$R]["fields"][$m["field"]]=$m;}$Fh[$R]["pos"]=($Bi[$R]?:array($Zi,0));foreach(adminer()->foreignKeys($R)as$X){if(!$X["db"]){$Ke=$Ga;if(idx($Bi[$R],1)||idx($Bi[$X["table"]],1))$Ke=min(idx($Bi[$R],1,0),idx($Bi[$X["table"]],1,0))-1;else$Ga-=.1;while($Me[(string)$Ke])$Ke-=.0001;$Fh[$R]["references"][$X["table"]][(string)$Ke]=array($X["source"],$X["target"]);$nh[$X["table"]][$R][(string)$Ke]=$X["target"];$Me[(string)$Ke]=true;}}$Zi=max($Zi,$Fh[$R]["pos"][0]+2.5+$Ng);}echo'<div id="schema" style="height: ',$Zi,'em;">
|
||
<script',nonce(),'>
|
||
qs(\'#schema\').onselectstart = () => false;
|
||
const tablePos = {',implode(",",$Ci)."\n",'};
|
||
const em = qs(\'#schema\').offsetHeight / ',$Zi,';
|
||
document.onmousemove = schemaMousemove;
|
||
document.onmouseup = partialArg(schemaMouseup, \'',js_escape(DB),'\');
|
||
</script>
|
||
';foreach($Fh
|
||
as$B=>$R){echo"<div class='table' style='top: ".$R["pos"][0]."em; left: ".$R["pos"][1]."em;'>",'<a href="'.h(ME).'table='.urlencode($B).'"><b>'.h($B)."</b></a>",script("qsl('div').onmousedown = schemaMousedown;");foreach($R["fields"]as$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$Ji=>$ph){foreach($ph
|
||
as$Ke=>$kh){$Le=$Ke-idx($Bi[$B],1);$s=0;foreach($kh[0]as$fi)echo"\n<div class='references' title='".h($Ji)."' id='refs$Ke-".($s++)."' style='left: $Le"."em; top: ".$R["fields"][$fi]["pos"]."em; padding-top: .5em;'>"."<div style='border-top: 1px solid gray; width: ".(-$Le)."em;'></div></div>";}}foreach((array)$nh[$B]as$Ji=>$ph){foreach($ph
|
||
as$Ke=>$e){$Le=$Ke-idx($Bi[$B],1);$s=0;foreach($e
|
||
as$Ii)echo"\n<div class='references arrow' title='".h($Ji)."' id='refd$Ke-".($s++)."' style='left: $Le"."em; top: ".$R["fields"][$Ii]["pos"]."em;'>"."<div style='height: .5em; border-bottom: 1px solid gray; width: ".(-$Le)."em;'></div>"."</div>";}}echo"\n</div>\n";}foreach($Fh
|
||
as$B=>$R){foreach((array)$R["references"]as$Ji=>$ph){foreach($ph
|
||
as$Ke=>$kh){$rf=$Zi;$ff=-10;foreach($kh[0]as$x=>$fi){$Og=$R["pos"][0]+$R["fields"][$fi]["pos"];$Pg=$Fh[$Ji]["pos"][0]+$Fh[$Ji]["fields"][$kh[1][$x]]["pos"];$rf=min($rf,$Og,$Pg);$ff=max($ff,$Og,$Pg);}echo"<div class='references' id='refl$Ke' style='left: $Ke"."em; top: $rf"."em; padding: .5em 0;'><div style='border-right: 1px solid gray; margin-top: 1px; height: ".($ff-$rf)."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"]);$Nc=dump_headers((count($T)==1?key($T):DB),(DB==""||count($T)>1));$we=preg_match('~sql~',$_POST["format"]);if($we){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 = ''");}}$si=$_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($we){if($si)echo
|
||
use_sql($j,$si).";\n\n";$pg="";if($_POST["types"]){foreach(types()as$t=>$U){$Bc=type_values($t);if($Bc)$pg
|
||
.=($si!='DROP+CREATE'?"DROP TYPE IF EXISTS ".idf_escape($U).";;\n":"")."CREATE TYPE ".idf_escape($U)." AS ENUM ($Bc);\n\n";else$pg
|
||
.="-- Could not export type $U\n\n";}}if($_POST["routines"]){foreach(routines()as$K){$B=$K["ROUTINE_NAME"];$_h=$K["ROUTINE_TYPE"];$h=create_routine($_h,array("name"=>$B)+routine($K["SPECIFIC_NAME"],$_h));set_utf8mb4($h);$pg
|
||
.=($si!='DROP+CREATE'?"DROP $_h IF EXISTS ".idf_escape($B).";;\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);$pg
|
||
.=($si!='DROP+CREATE'?"DROP EVENT IF EXISTS ".idf_escape($K["Name"]).";;\n":"")."$h;;\n\n";}}echo($pg&&JUSH=='sql'?"DELIMITER ;;\n\n$pg"."DELIMITER ;\n\n":$pg);}if($_POST["table_style"]||$_POST["data_style"]){$Nj=array();foreach(table_status('',true)as$B=>$S){$R=(DB==""||in_array($B,(array)$_POST["tables"]));$Lb=(DB==""||in_array($B,(array)$_POST["data"]));if($R||$Lb){$Wi=null;if($Nc=="tar"){$Wi=new
|
||
TmpFile;ob_start(array($Wi,'write'),1e5);}adminer()->dumpTable($B,($R?$_POST["table_style"]:""),(is_view($S)?2:0));if(is_view($S))$Nj[]=$B;elseif($Lb){$n=fields($B);adminer()->dumpData($B,$_POST["data_style"],"SELECT *".convert_fields($n,$n)." FROM ".table($B));}if($we&&$_POST["triggers"]&&$R&&($kj=trigger_sql($B)))echo"\nDELIMITER ;;\n$kj\nDELIMITER ;\n";if($Nc=="tar"){ob_end_flush();tar_file((DB!=""?"":"$j/")."$B.csv",$Wi);}elseif($we)echo"\n";}}if(function_exists('Adminer\foreign_keys_sql')){foreach(table_status('',true)as$B=>$S){$R=(DB==""||in_array($B,(array)$_POST["tables"]));if($R&&!is_view($S))echo
|
||
foreign_keys_sql($B);}}foreach($Nj
|
||
as$Mj)adminer()->dumpTable($Mj,$_POST["table_style"],1);if($Nc=="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">
|
||
';$Pb=array('','USE','DROP+CREATE','CREATE');$Di=array('','DROP+CREATE','CREATE');$Mb=array('','TRUNCATE+INSERT','INSERT');if(JUSH=="sql")$Mb[]='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',$Pb,$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',$Di,$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',$Mb,$K["data_style"]),'</table>
|
||
<p><input type="submit" value="Export">
|
||
',input_token(),'
|
||
<table>
|
||
',script("qsl('table').onclick = dumpClick;");$Tg=array();if(DB!=""){$Za=($a!=""?"":" checked");echo"<thead><tr>","<th style='text-align: left;'><label class='block'><input type='checkbox' id='check-tables'$Za>".'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'$Za></label>".script("qs('#check-data').onclick = partial(formCheck, /^data\\[/);",""),"</thead>\n";$Nj="";$Fi=tables_list();foreach($Fi
|
||
as$B=>$U){$Sg=preg_replace('~_.*~','',$B);$Za=($a==""||$a==(substr($a,-1)=="%"?"$Sg%":$B));$Wg="<tr><td>".checkbox("tables[]",$B,$Za,$B,"","block");if($U!==null&&!preg_match('~table~i',$U))$Nj
|
||
.="$Wg\n";else
|
||
echo"$Wg<td align='right'><label class='block'><span id='Rows-".h($B)."'></span>".checkbox("data[]",$B,$Za)."</label>\n";$Tg[$Sg]++;}echo$Nj;if($Fi)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)){$Sg=preg_replace('~_.*~','',$j);echo"<tr><td>".checkbox("databases[]",$j,$a==""||$a=="$Sg%",$j,"","block")."\n";$Tg[$Sg]++;}}}else
|
||
echo"<tr><td><textarea name='databases' rows='10' cols='20'></textarea>";}echo'</table>
|
||
</form>
|
||
';$bd=true;foreach($Tg
|
||
as$x=>$X){if($x!=""&&$X>1){echo($bd?"<p>":" ")."<a href='".h(ME)."dump=".urlencode("$x%")."'>".h($x)."</a>";$bd=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");$ud=$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),($ud?"":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(!$ud||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");if($_POST["format"]=="sql")echo"$_POST[query]\n";else{adminer()->dumpTable("","");adminer()->dumpData("","table",$_POST["query"]);adminer()->dumpFooter();}exit;}restart_session();$Kd=&get_session("queries");$Jd=&$Kd[DB];if(!$l&&$_POST["clear"]){$Jd=array();redirect(remove_from_uri("history"));}stop_session();page_header((isset($_GET["import"])?'Import':'SQL command'),$l);$Qe='--'.(JUSH=='sql'?' ':'');if(!$l&&$_POST){$q=false;if(!isset($_GET["import"]))$H=$_POST["query"];elseif($_POST["webfile"]){$ji=adminer()->importServerPath();$q=@fopen((file_exists($ji)?$ji:"compress.zlib://$ji.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')&&($kf=ini_bytes("memory_limit"))!="-1")@ini_set("memory_limit",max($kf,strval(2*strlen($H)+memory_get_usage()+8e6)));if($H!=""&&strlen($H)<1e6){$dh=$H.(preg_match("~;[ \t\r\n]*\$~",$H)?"":";");if(!$Jd||first(end($Jd))!=$dh){restart_session();$Jd[]=array($dh,time());set_session("queries",$Kd);stop_session();}}$gi="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|$Qe)[^\n]*\n?|--\r?\n)";$Xb=";";$C=0;$wc=true;$g=connect();if($g&&DB!=""){$g->select_db(DB);if($_GET["ns"]!="")set_schema($_GET["ns"],$g);}$nb=0;$Dc=array();$wg='[\'"'.(JUSH=="sql"?'`#':(JUSH=="sqlite"?'`[':(JUSH=="mssql"?'[':''))).']|/\*|'.$Qe.'|$'.(JUSH=="pgsql"?'|\$([a-zA-Z]\w*)?\$':'');$aj=microtime(true);$ma=get_settings("adminer_import");while($H!=""){if(!$C&&preg_match("~^$gi*+DELIMITER\\s+(\\S+)~i",$H,$A)){$Xb=preg_quote($A[1]);$H=substr($H,strlen($A[0]));}elseif(!$C&&JUSH=='pgsql'&&preg_match("~^($gi*+COPY\\s+)[^;]+\\s+FROM\\s+stdin;~i",$H,$A)){$Xb="\n\\\\\\.\r?\n";$C=strlen($A[0]);}else{preg_match("($Xb\\s*|$wg)",$H,$A,PREG_OFFSET_CAPTURE,$C);list($nd,$Ng)=$A[0];if(!$nd&&$q&&!feof($q))$H
|
||
.=fread($q,1e5);else{if(!$nd&&rtrim($H)=="")break;$C=$Ng+strlen($nd);if($nd&&!preg_match("(^$Xb)",$nd)){$Ra=driver()->hasCStyleEscapes()||(JUSH=="pgsql"&&($Ng>0&&strtolower($H[$Ng-1])=="e"));$Gg=($nd=='/*'?'\*/':($nd=='['?']':(preg_match("~^$Qe|^#~",$nd)?"\n":preg_quote($nd).($Ra?'|\\\\.':''))));while(preg_match("($Gg|\$)s",$H,$A,PREG_OFFSET_CAPTURE,$C)){$Dh=$A[0][0];if(!$Dh&&$q&&!feof($q))$H
|
||
.=fread($q,1e5);else{$C=$A[0][1]+strlen($Dh);if(!$Dh||$Dh[0]!="\\")break;}}}else{$wc=false;$dh=substr($H,0,$Ng+($Xb[0]=="\n"?3:0));$nb++;$Wg="<pre id='sql-$nb'><code class='jush-".JUSH."'>".adminer()->sqlCommandQuery($dh)."</code></pre>\n";if(JUSH=="sqlite"&&preg_match("~^$gi*+ATTACH\\b~i",$dh,$A)){echo$Wg,"<p class='error'>".'ATTACH queries are not supported.'."\n";$Dc[]=" <a href='#sql-$nb'>$nb</a>";if($_POST["error_stops"])break;}else{if(!$_POST["only_errors"]){echo$Wg;ob_flush();flush();}$oi=microtime(true);if(connection()->multi_query($dh)&&$g&&preg_match("~^$gi*+USE\\b~i",$dh))$g->query($dh);do{$I=connection()->store_result();if(connection()->error){echo($_POST["only_errors"]?$Wg:""),"<p class='error'>".'Error in query'.(connection()->errno?" (".connection()->errno.")":"").": ".error()."\n";$Dc[]=" <a href='#sql-$nb'>$nb</a>";if($_POST["error_stops"])break
|
||
2;}else{$Pi=" <span class='time'>(".format_time($oi).")</span>".(strlen($dh)<1000?" <a href='".h(ME)."sql=".urlencode(trim($dh))."'>".'Edit'."</a>":"");$oa=connection()->affected_rows;$Qj=($_POST["only_errors"]?"":driver()->warnings());$Rj="warnings-$nb";if($Qj)$Pi
|
||
.=", <a href='#$Rj'>".'Warnings'."</a>".script("qsl('a').onclick = partial(toggle, '$Rj');","");$Lc=null;$hg=null;$Mc="explain-$nb";if(is_object($I)){$z=$_POST["limit"];$hg=print_select_result($I,$g,array(),$z);if(!$_POST["only_errors"]){echo"<form action='' method='post'>\n";$If=$I->num_rows;echo"<p class='sql-footer'>".($If?($z&&$If>$z?sprintf('%d / ',$z):"").lang_format(array('%d row','%d rows'),$If):""),$Pi;if($g&&preg_match("~^($gi|\\()*+SELECT\\b~i",$dh)&&($Lc=explain($g,$dh)))echo", <a href='#$Mc'>Explain</a>".script("qsl('a').onclick = partial(toggle, '$Mc');","");$t="export-$nb";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",adminer()->dumpFormat(),$ma["format"]).input_hidden("query",$dh)."<input type='submit' name='export' value='".'Export'."'>".input_token()."</span>\n"."</form>\n";}}else{if(preg_match("~^$gi*+(CREATE|DROP|ALTER)$gi++(DATABASE|SCHEMA)\\b~i",$dh)){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)."$Pi\n";}echo($Qj?"<div id='$Rj' class='hidden'>\n$Qj</div>\n":"");if($Lc){echo"<div id='$Mc' class='hidden explain'>\n";print_select_result($Lc,$g,$hg);echo"</div>\n";}}$oi=microtime(true);}while(connection()->next_result());}$H=substr($H,$C);$C=0;}}}}if($wc)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.'),$nb-count($Dc))," <span class='time'>(".format_time($aj).")</span>\n";elseif($Dc&&$nb>1)echo"<p class='error'>".'Error in query'.": ".implode("",$Dc)."\n";}else
|
||
echo"<p class='error'>".upload_error($H)."\n";}echo'
|
||
<form action="" method="post" enctype="multipart/form-data" id="form">
|
||
';$Jc="<input type='submit' value='".'Execute'."' title='Ctrl+Enter'>";if(!isset($_GET["import"])){$dh=$_GET["sql"];if($_POST)$dh=$_POST["query"];elseif($_GET["history"]=="all")$dh=$Jd;elseif($_GET["history"]!="")$dh=idx($Jd[$_GET["history"]],0);echo"<p>";textarea("query",$dh,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"$Jc\n",'Limit rows'.": <input type='number' name='limit' class='size' value='".h($_POST?$_POST["limit"]:$_GET["limit"])."'>\n";}else{$_d=(extension_loaded("zlib")?"[.gz]":"");echo"<fieldset><legend>".'File upload'."</legend><div>",file_input("SQL$_d: <input type='file' name='sql_file[]' multiple>\n$Jc"),"</div></fieldset>\n";$Vd=adminer()->importServerPath();if($Vd)echo"<fieldset><legend>".'From server'."</legend><div>",sprintf('Webserver file %s',"<code>".h($Vd)."$_d</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"])&&$Jd){print_fieldset("history",'History',$_GET["history"]!="");for($X=end($Jd);$X;$X=prev($Jd)){$x=key($Jd);list($dh,$Pi,$rc)=$X;echo'<a href="'.h(ME."sql=&history=$x").'">'.'Edit'."</a>"." <span class='time' title='".@date('Y-m-d',$Pi)."'>".@date("H:i:s",$Pi)."</span>"." <code class='jush-".JUSH."'>".shorten_utf8(ltrim(str_replace("\n"," ",str_replace("\r","",preg_replace("~^(#|$Qe).*~m",'',$dh)))),80,"</code>").($rc?" <span class='time'>($rc)</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));$wj=(isset($_GET["select"])?$_POST["edit"]:$Z);foreach($n
|
||
as$B=>$m){if(!isset($m["privileges"][$wj?"update":"insert"])||adminer()->fieldName($m)==""||$m["generated"])unset($n[$B]);}if($_POST&&!$l&&!isset($_GET["select"])){$Se=$_POST["referer"];if($_POST["insert"])$Se=($wj?null:$_SERVER["REQUEST_URI"]);elseif(!preg_match('~^.+&select=.+$~',$Se))$Se=ME."select=".urlencode($a);$w=indexes($a);$rj=unique_array($_GET["where"],$w);$gh="\nWHERE $Z";if(isset($_POST["delete"]))queries_redirect($Se,'Item has been deleted.',driver()->delete($a,$gh,$rj?0:1));else{$O=array();foreach($n
|
||
as$B=>$m){$X=process_input($m);if($X!==false&&$X!==null)$O[idf_escape($B)]=$X;}if($wj){if(!$O)redirect($Se);queries_redirect($Se,'Item has been updated.',driver()->update($a,$O,$gh,$rj?0:1));if(is_ajax()){page_headers();page_messages($l);exit;}}else{$I=driver()->insert($a,$O);$Je=($I?last_id($I):0);queries_redirect($Se,sprintf('Item%s has been inserted.',($Je?" $Je":"")),$I);}}}$K=null;if($_POST["save"])$K=(array)$_POST["fields"];elseif($Z){$M=array();foreach($n
|
||
as$B=>$m){if(isset($m["privileges"]["select"])){$wa=($_POST["clone"]&&$m["auto_increment"]?"''":convert_field($m));$M[]=($wa?"$wa AS ":"").idf_escape($B);}}$K=array();if(!support("table"))$M=array("*");if($M){$I=driver()->select($a,$M,array($Z),$M,array(),(isset($_GET["select"])?2:1));if(!$I)$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,$wj,$l);}elseif(isset($_GET["create"])){$a=$_GET["create"];$Ag=driver()->partitionBy;$Dg=($Ag?driver()->partitionsInfo($a):array());$mh=referencable_primary($a);$ld=array();foreach($mh
|
||
as$_i=>$m)$ld[str_replace("`","``",$_i)."`".str_replace("`","``",$m["field"])]=$_i;$kg=array();$S=array();if($a!=""){$kg=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();$Bj=false;$jd=array();$jg=reset($kg);$qa=" FIRST";foreach($K["fields"]as$x=>$m){$p=$ld[$m["type"]];$lj=($p!==null?$mh[$p]:$m);if($m["field"]!=""){if(!$m["generated"])$m["default"]=null;$bh=process_field($m,$lj);$sa[]=array($m["orig"],$bh,$qa);if(!$jg||$bh!==process_field($jg,$jg)){$n[]=array($m["orig"],$bh,$qa);if($m["orig"]!=""||$qa)$Bj=true;}if($p!==null)$jd[idf_escape($m["field"])]=($a!=""&&JUSH!="sqlite"?"ADD":" ").format_foreign_key(array('table'=>$ld[$m["type"]],'source'=>array($m["field"]),'target'=>array($lj["field"]),'on_delete'=>$m["on_delete"],));$qa=" AFTER ".idf_escape($m["field"]);}elseif($m["orig"]!=""){$Bj=true;$n[]=array($m["orig"]);}if($m["orig"]!=""){$jg=next($kg);if(!$jg)$qa="";}}$E=array();if(in_array($K["partition_by"],$Ag)){foreach($K
|
||
as$x=>$X){if(preg_match('~^partition~',$x))$E[$x]=$X;}foreach($E["partition_names"]as$x=>$B){if($B==""){unset($E["partition_names"][$x]);unset($E["partition_values"][$x]);}}$E["partition_names"]=array_values($E["partition_names"]);$E["partition_values"]=array_values($E["partition_values"]);if($E==$Dg)$E=array();}elseif(preg_match("~partitioned~",$S["Create_options"]))$E=null;$lf='Table has been altered.';if($a==""){cookie("adminer_engine",$K["Engine"]);$lf='Table has been created.';}$B=trim($K["name"]);queries_redirect(ME.(support("table")?"table=":"select=").urlencode($B),$lf,alter_table($a,$B,(JUSH=="sqlite"&&($Bj||$jd)?$sa:$n),$jd,($K["Comment"]!=$S["Comment"]?$K["Comment"]:null),($K["Engine"]&&$K["Engine"]!=$S["Engine"]?$K["Engine"]:""),($K["Collation"]&&$K["Collation"]!=$S["Collation"]?$K["Collation"]:""),($K["Auto_increment"]!=""?number($K["Auto_increment"]):""),$E));}}page_header(($a!=""?'Alter table':'Create table'),$l,array("table"=>$a),h($a));if(!$_POST){$nj=driver()->types();$K=array("Engine"=>$_COOKIE["adminer_engine"],"fields"=>array(array("field"=>"","type"=>(isset($nj["int"])?"int":(isset($nj["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($kg
|
||
as$m){$m["generated"]=$m["generated"]?:(isset($m["default"])?"DEFAULT":"");$K["fields"][]=$m;}if($Ag){$K+=$Dg;$K["partition_names"][]="";$K["partition_values"][]="";}}}$jb=collations();if(is_array(reset($jb)))$jb=call_user_func_array('array_merge',array_values($jb));$yc=driver()->engines();foreach($yc
|
||
as$xc){if(!strcasecmp($xc,$K["Engine"])){$K["Engine"]=$xc;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",($yc?html_select("Engine",array(""=>"(".'engine'.")")+$yc,$K["Engine"]).on_help("event.target.value",1).script("qsl('select').onchange = helpClose;")."\n":"");if($jb)echo"<datalist id='collations'>".optionlist($jb)."</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"],$jb,"TABLE",$ld);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");$qb=($_POST?$_POST["comments"]:get_setting("comments"));echo(support("comment")?checkbox("comments",1,$qb,'Comment',"editingCommentsClick(this, true);","jsonly").' '.(preg_match('~\n~',$K["Comment"])?"<textarea name='Comment' rows='2' cols='20'".($qb?"":" class='hidden'").">".h($K["Comment"])."</textarea>":'<input name="Comment" value="'.h($K["Comment"]).'" data-maxlength="'.(min_version(5.5)?2048:60).'"'.($qb?"":" 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($Ag&&(JUSH=='sql'||$a=="")){$Bg=preg_match('~RANGE|LIST~',$K["partition_by"]);print_fieldset("partition",'Partition by',$K["partition_by"]);echo"<p>".html_select("partition_by",array_merge(array(""),$Ag),$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".($Bg||!$K["partition_by"]?" hidden":"")."' value='".h($K["partitions"])."'>\n","<table id='partition-table'".($Bg?"":" 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"];$de=array("PRIMARY","UNIQUE","INDEX");$S=table_status1($a,true);$ae=driver()->indexAlgorithms($S);if(preg_match('~MyISAM|M?aria'.(min_version(5.6,'10.0.5')?'|InnoDB':'').'~i',$S["Engine"]))$de[]="FULLTEXT";if(preg_match('~MyISAM|M?aria'.(min_version(5.7,'10.2.2')?'|InnoDB':'').'~i',$S["Engine"]))$de[]="SPATIAL";$w=indexes($a);$n=fields($a);$G=array();if(JUSH=="mongo"){$G=$w["_id_"];unset($de[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){$B=$v["name"];if(in_array($v["type"],$de)){$e=array();$Oe=array();$ac=array();$be=(support("partial_indexes")?$v["partial"]:"");$Zd=(in_array($v["algorithm"],$ae)?$v["algorithm"]:"");$O=array();ksort($v["columns"]);foreach($v["columns"]as$x=>$d){if($d!=""){$y=idx($v["lengths"],$x);$Yb=idx($v["descs"],$x);$O[]=($n[$d]?idf_escape($d):$d).($y?"(".(+$y).")":"").($Yb?" DESC":"");$e[]=$d;$Oe[]=($y?:null);$ac[]=$Yb;}}$Kc=$w[$B];if($Kc){ksort($Kc["columns"]);ksort($Kc["lengths"]);ksort($Kc["descs"]);if($v["type"]==$Kc["type"]&&array_values($Kc["columns"])===$e&&(!$Kc["lengths"]||array_values($Kc["lengths"])===$Oe)&&array_values($Kc["descs"])===$ac&&$Kc["partial"]==$be&&(!$ae||$Kc["algorithm"]==$Zd)){unset($w[$B]);continue;}}if($e)$b[]=array($v["type"],$B,$O,$Zd,$be);}}foreach($w
|
||
as$B=>$Kc)$b[]=array($Kc["type"],$B,"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));$Yc=array_keys($n);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;}$Oe=(JUSH=="sql"||JUSH=="mssql");$ai=($_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
|
||
';$Td=" class='idxopts".($ai?"":" hidden")."'";if($ae)echo"<th id='label-algorithm'$Td>".'Algorithm'.doc_link(array('sql'=>'create-index.html#create-index-storage-engine-index-types','mariadb'=>'storage-engine-index-types/','pgsql'=>'indexes-types.html',));echo'<th><input type="submit" class="wayoff">','Columns'.($Oe?"<span$Td> (".'length'.")</span>":"");if($Oe||support("descidx"))echo
|
||
checkbox("options",1,$ai,'Options',"indexOptionsShow(this.checked)","jsonly")."\n";echo'<th id="label-name">Name
|
||
';if(support("partial_indexes"))echo"<th id='label-condition'$Td>".'Condition';echo'<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",$Yc,$d),"<label><input disabled type='checkbox'>".'descending'."</label> ";echo"<td><td>\n";}$ze=1;foreach($K["indexes"]as$v){if(!$_POST["drop_col"]||$ze!=key($_POST["drop_col"])){echo"<tr><td>".html_select("indexes[$ze][type]",array(-1=>"")+$de,$v["type"],($ze==count($K["indexes"])?"indexesAddRow.call(this);":""),"label-type");if($ae)echo"<td$Td>".html_select("indexes[$ze][algorithm]",array_merge(array(""),$ae),$v['algorithm'],"label-algorithm");echo"<td>";ksort($v["columns"]);$s=1;foreach($v["columns"]as$x=>$d){echo"<span>".select_input(" name='indexes[$ze][columns][$s]' title='".'Column'."'",($n&&($d==""||$n[$d])?array_combine($Yc,$Yc):array()),$d,"partial(".($s==count($v["columns"])?"indexesAddColumn":"indexesChangeColumn").", '".js_escape(JUSH=="sql"?"":$_GET["indexes"]."_")."')"),"<span$Td>",($Oe?"<input type='number' name='indexes[$ze][lengths][$s]' class='size' value='".h(idx($v["lengths"],$x))."' title='".'Length'."'>":""),(support("descidx")?checkbox("indexes[$ze][descs][$s]",1,idx($v["descs"],$x),'descending'):""),"</span> </span>";$s++;}echo"<td><input name='indexes[$ze][name]' value='".h($v["name"])."' autocapitalize='off' aria-labelledby='label-name'>\n";if(support("partial_indexes"))echo"<td$Td><input name='indexes[$ze][partial]' value='".h($v["partial"])."' autocapitalize='off' aria-labelledby='label-condition'>\n";echo"<td>".icon("cross","drop_col[$ze]","x",'Remove').script("qsl('button').onclick = partial(editingRemoveRow, 'indexes\$1[type]');");}$ze++;}echo'</table>
|
||
</div>
|
||
<p>
|
||
<input type="submit" value="Save">
|
||
',input_token(),'</form>
|
||
';}elseif(isset($_GET["database"])){$K=$_POST;if($_POST&&!$l&&!$_POST["add"]){$B=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!==$B){if(DB!=""){$_GET["db"]=$B;queries_redirect(preg_replace('~\bdb=[^&]*&~','',ME)."db=".urlencode($B),'Database has been renamed.',rename_database($B,$K["collation"]));}else{$i=explode("\n",str_replace("\r","",$B));$ti=true;$Ie="";foreach($i
|
||
as$j){if(count($i)==1||$j!=""){if(!create_database($j,$K["collation"]))$ti=false;$Ie=$j;}}restart_session();set_session("dbs",null);queries_redirect(ME."db=".urlencode($Ie),'Database has been created.',$ti);}}else{if(!$K["collation"])redirect(substr(ME,0,-1));query_redirect("ALTER DATABASE ".idf_escape($B).(preg_match('~^[a-z0-9_]+$~i',$K["collation"])?" COLLATE $K[collation]":""),substr(ME,0,-1),'Database has been altered.');}}page_header(DB!=""?'Alter database':'Create database',$l,array(),h(DB));$jb=collations();$B=DB;if($_POST)$B=$K["name"];elseif(DB!="")$K["collation"]=db_collation(DB,$jb);elseif(JUSH=="sql"){foreach(get_vals("SHOW GRANTS")as$ud){if(preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\.\*)?~',$ud,$A)&&$A[1]){$B=stripcslashes(idf_unescape("`$A[2]`"));break;}}}echo'
|
||
<form action="" method="post">
|
||
<p>
|
||
',($_POST["add"]||strpos($B,"\n")?'<textarea autofocus name="name" rows="10" cols="40">'.h($B).'</textarea><br>':'<input name="name" autofocus value="'.h($B).'" data-maxlength="64" autocapitalize="off">')."\n".($jb?html_select("collation",array(""=>"(".'collation'.")")+$jb,$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{$B=trim($K["name"]);$_
|
||
.=urlencode($B);if($_GET["ns"]=="")query_redirect("CREATE SCHEMA ".idf_escape($B),$_,'Schema has been created.');elseif($_GET["ns"]!=$B)query_redirect("ALTER SCHEMA ".idf_escape($_GET["ns"])." RENAME TO ".idf_escape($B),$_,'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);$_h=routine($_GET["call"],(isset($_GET["callf"])?"FUNCTION":"PROCEDURE"));$Wd=array();$pg=array();foreach($_h["fields"]as$s=>$m){if(substr($m["inout"],-3)=="OUT"&&JUSH=='sql')$pg[$s]="@".idf_escape($m["field"])." AS ".idf_escape($m["field"]);if(!$m["inout"]||substr($m["inout"],0,2)=="IN")$Wd[]=$s;}if(!$l&&$_POST){$Sa=array();foreach($_h["fields"]as$x=>$m){$X="";if(in_array($x,$Wd)){$X=process_input($m);if($X===false)$X="''";if(isset($pg[$x]))connection()->query("SET @".idf_escape($m["field"])." = $X");}if(isset($pg[$x]))$Sa[]="@".idf_escape($m["field"]);elseif(in_array($x,$Wd))$Sa[]=$X;}$H=(isset($_GET["callf"])?"SELECT ":"CALL ").($_h["returns"]["type"]=="record"?"* FROM ":"").table($ba)."(".implode(", ",$Sa).")";$oi=microtime(true);$I=connection()->multi_query($H);$oa=connection()->affected_rows;echo
|
||
adminer()->selectQuery($H,$oi,!$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($pg)print_select_result(connection()->query("SELECT ".implode(", ",$pg)));}}echo'
|
||
<form action="" method="post">
|
||
';if($Wd){echo"<table class='layout'>\n";foreach($Wd
|
||
as$x){$m=$_h["fields"][$x];$B=$m["field"];echo"<tr><th>".adminer()->fieldName($m);$Y=idx($_POST["fields"],$B);if($Y!=""){if($m["type"]=="set")$Y=implode(",",$Y);}input($m,$Y,idx($_POST["function"],$B,""));echo"\n";}echo"</table>\n";}echo'<p>
|
||
<input type="submit" value="Call">
|
||
',input_token(),'</form>
|
||
|
||
<pre>
|
||
';function
|
||
pre_tr($Dh){return
|
||
preg_replace('~^~m','<tr>',preg_replace('~\|~','<td>',preg_replace('~\|$~m',"",rtrim($Dh))));}$R='(\+--[-+]+\+\n)';$K='(\| .* \|\n)';echo
|
||
preg_replace_callback("~^$R?$K$R?($K*)$R?~m",function($A){$cd=pre_tr($A[2]);return"<table>\n".($A[1]?"<thead>$cd</thead>\n":$cd).pre_tr($A[4])."\n</table>";},preg_replace('~(\n( -|mysql)> )(.+)~',"\\1<code class='jush-sql'>\\3</code>",preg_replace('~(.+)\n---+\n~',"<b>\\1</b>\n",h($_h['comment']))));echo'</pre>
|
||
';}elseif(isset($_GET["foreign"])){$a=$_GET["foreign"];$B=$_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"]);$Ii=array();foreach($K["source"]as$x=>$X)$Ii[$x]=$K["target"][$x];$K["target"]=$Ii;}if(JUSH=="sqlite")$I=recreate_table($a,$a,array(),array(),array(" $B"=>($K["drop"]?"":" ".format_foreign_key($K))));else{$b="ALTER TABLE ".table($a);$I=($B==""||queries("$b DROP ".(JUSH=="sql"?"FOREIGN KEY ":"CONSTRAINT ").idf_escape($B)));if(!$K["drop"])$I=queries("$b ADD".format_foreign_key($K));}queries_redirect(ME."table=".urlencode($a),($K["drop"]?'Foreign key has been dropped.':($B!=""?'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($B!=""){$ld=foreign_keys($a);$K=$ld[$B];$K["source"][]="";}else{$K["table"]=$a;$K["source"]=array("");}echo'
|
||
<form action="" method="post">
|
||
';$fi=array_keys(fields($a));if($K["db"]!="")connection()->select_db($K["db"]);if($K["ns"]!=""){$lg=get_schema();set_schema($K["ns"]);}$lh=array_keys(array_filter(table_status('',true),'Adminer\fk_support'));$Ii=array_keys(fields(in_array($K["table"],$lh)?$K["table"]:reset($lh)));$Vf="this.form['change-js'].value = '1'; this.form.submit();";echo"<p><label>".'Target table'.": ".html_select("table",$lh,$K["table"],$Vf)."</label>\n";if(support("scheme")){$Gh=array_filter(adminer()->schemas(),function($Fh){return!preg_match('~^information_schema$~i',$Fh);});echo"<label>".'Schema'.": ".html_select("ns",$Gh,$K["ns"]!=""?$K["ns"]:$_GET["ns"],$Vf)."</label>";if($K["ns"]!="")set_schema($lg);}elseif(JUSH!="sqlite"){$Qb=array();foreach(adminer()->databases()as$j){if(!information_schema($j))$Qb[]=$j;}echo"<label>".'DB'.": ".html_select("db",$Qb,$K["db"]!=""?$K["db"]:$_GET["db"],$Vf)."</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>
|
||
';$ze=0;foreach($K["source"]as$x=>$X){echo"<tr>","<td>".html_select("source[".(+$x)."]",array(-1=>"")+$fi,$X,($ze==count($K["source"])-1?"foreignAddRow.call(this);":""),"label-source"),"<td>".html_select("target[".(+$x)."]",$Ii,idx($K["target"],$x),"","label-target");$ze++;}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($B!="")echo'<input type="submit" name="drop" value="Drop">',confirm(sprintf('Drop %s?',$B));echo
|
||
input_token(),'</form>
|
||
';}elseif(isset($_GET["view"])){$a=$_GET["view"];$K=$_POST;$mg="VIEW";if(JUSH=="pgsql"&&$a!=""){$P=table_status1($a);$mg=strtoupper($P["Engine"]);}if($_POST&&!$l){$B=trim($K["name"]);$wa=" AS\n$K[select]";$Se=ME."table=".urlencode($B);$lf='View has been altered.';$U=($_POST["materialized"]?"MATERIALIZED VIEW":"VIEW");if(!$_POST["drop"]&&$a==$B&&JUSH!="sqlite"&&$U=="VIEW"&&$mg=="VIEW")query_redirect((JUSH=="mssql"?"ALTER":"CREATE OR REPLACE")." VIEW ".table($B).$wa,$Se,$lf);else{$Ki=$B."_adminer_".uniqid();drop_create("DROP $mg ".table($a),"CREATE $U ".table($B).$wa,"DROP $U ".table($B),"CREATE $U ".table($Ki).$wa,"DROP $U ".table($Ki),($_POST["drop"]?substr(ME,0,-1):$Se),'View has been dropped.',$lf,'View has been created.',$a,$B);}}if(!$_POST&&$a!=""){$K=view($a);$K["name"]=$a;$K["materialized"]=($mg!="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"];$qe=array("YEAR","QUARTER","MONTH","DAY","HOUR","MINUTE","WEEK","SECOND","YEAR_MONTH","DAY_HOUR","DAY_MINUTE","DAY_SECOND","HOUR_MINUTE","HOUR_SECOND","MINUTE_SECOND");$pi=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"],$qe)&&isset($pi[$K["STATUS"]])){$Eh="\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).$Eh.($aa!=$K["EVENT_NAME"]?"\nRENAME TO ".idf_escape($K["EVENT_NAME"]):""):"CREATE EVENT ".idf_escape($K["EVENT_NAME"]).$Eh)."\n".$pi[$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",$qe,$K["INTERVAL_FIELD"]),'<tr><th>Status<td>',html_select("STATUS",$pi,$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"]);$_h=(isset($_GET["function"])?"FUNCTION":"PROCEDURE");$K=$_POST;$K["fields"]=(array)$K["fields"];if($_POST&&!process_fields($K["fields"])&&!$l){$ig=routine($_GET["procedure"],$_h);$Ki="$K[name]_adminer_".uniqid();foreach($K["fields"]as$x=>$m){if($m["field"]=="")unset($K["fields"][$x]);}drop_create("DROP $_h ".routine_id($ba,$ig),create_routine($_h,$K),"DROP $_h ".routine_id($K["name"],$K),create_routine($_h,array("name"=>$Ki)+$K),"DROP $_h ".routine_id($Ki,$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"],$_h);$K["name"]=$ba;}}$jb=get_vals("SHOW CHARACTER SET");sort($jb);$Ah=routine_languages();echo($jb?"<datalist id='collations'>".optionlist($jb)."</datalist>":""),'
|
||
<form action="" method="post" id="form">
|
||
<p>Name: <input name="name" value="',h($K["name"]),'" data-maxlength="64" autocapitalize="off">
|
||
',($Ah?"<label>".'Language'.": ".html_select("language",$Ah,$K["language"])."</label>\n":""),'<input type="submit" value="Save">
|
||
<div class="scrollable">
|
||
<table class="nowrap">
|
||
';edit_fields($K["fields"],$jb,$_h);if(isset($_GET["function"])){echo"<tr><td>".'Return type';edit_type("returns",(array)$K["returns"],$jb,array(),(JUSH=="pgsql"?array("void","trigger"):array()));}echo'</table>
|
||
',script("editFields();"),'</div>
|
||
<p>';textarea("definition",$K["definition"],20);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);$B=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($B),$_,'Sequence has been created.');elseif($da!=$B)query_redirect("ALTER SEQUENCE ".idf_escape($da)." RENAME TO ".idf_escape($B),$_,'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!=""){$nj=driver()->types();$Bc=type_values($nj[$ea]);if($Bc)echo"<code class='jush-".JUSH."'>ENUM (".h($Bc).")</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"];$B=$_GET["name"];$K=$_POST;if($K&&!$l){if(JUSH=="sqlite")$I=recreate_table($a,$a,array(),array(),array(),"",array(),"$B",($K["drop"]?"":$K["clause"]));else{$I=($B==""||queries("ALTER TABLE ".table($a)." DROP CONSTRAINT ".idf_escape($B)));if(!$K["drop"])$I=queries("ALTER TABLE ".table($a)." ADD".($K["name"]!=""?" CONSTRAINT ".idf_escape($K["name"]):"")." CHECK ($K[clause])");}queries_redirect(ME."table=".urlencode($a),($K["drop"]?'Check has been dropped.':($B!=""?'Check has been altered.':'Check has been created.')),$I);}page_header(($B!=""?'Alter check'.": ".h($B):'Create check'),$l,array("table"=>$a));if(!$K){$ab=driver()->checkConstraints($a);$K=array("name"=>$B,"clause"=>$ab[$B]);}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($B!="")echo'<input type="submit" name="drop" value="Drop">',confirm(sprintf('Drop %s?',$B));echo
|
||
input_token(),'</form>
|
||
';}elseif(isset($_GET["trigger"])){$a=$_GET["trigger"];$B="$_GET[name]";$jj=trigger_options();$K=(array)trigger($B,$a)+array("Trigger"=>$a."_bi");if($_POST){if(!$l&&in_array($_POST["Timing"],$jj["Timing"])&&in_array($_POST["Event"],$jj["Event"])&&in_array($_POST["Type"],$jj["Type"])){$Sf=" ON ".table($a);$ic="DROP TRIGGER ".idf_escape($B).(JUSH=="pgsql"?$Sf:"");$Se=ME."table=".urlencode($a);if($_POST["drop"])query_redirect($ic,$Se,'Trigger has been dropped.');else{if($B!="")queries($ic);queries_redirect($Se,($B!=""?'Trigger has been altered.':'Trigger has been created.'),queries(create_trigger($Sf,$_POST)));if($B!="")queries(create_trigger($Sf,$K+array("Type"=>reset($jj["Type"]))));}}$K=$_POST;}page_header(($B!=""?'Alter trigger'.": ".h($B):'Create trigger'),$l,array("table"=>$a));echo'
|
||
<form action="" method="post" id="form">
|
||
<table class="layout">
|
||
<tr><th>Time<td>',html_select("Timing",$jj["Timing"],$K["Timing"],"triggerChange(/^".preg_quote($a,"/")."_[ba][iud]$/, '".js_escape($a)."', this.form);"),'<tr><th>Event<td>',html_select("Event",$jj["Event"],$K["Event"],"this.form['Timing'].onchange();"),(in_array("UPDATE OF",$jj["Event"])?" <input name='Of' value='".h($K["Of"])."' class='hidden'>":""),'<tr><th>Type<td>',html_select("Type",$jj["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($B!="")echo'<input type="submit" name="drop" value="Drop">',confirm(sprintf('Drop %s?',$B));echo
|
||
input_token(),'</form>
|
||
';}elseif(isset($_GET["user"])){$fa=$_GET["user"];$Zg=array(""=>array("All privileges"=>""));foreach(get_rows("SHOW PRIVILEGES")as$K){foreach(explode(",",($K["Privilege"]=="Grant option"?"":$K["Context"]))as$_b)$Zg[$_b][$K["Privilege"]]=$K["Comment"];}$Zg["Server Admin"]+=$Zg["File access on server"];$Zg["Databases"]["Create routine"]=$Zg["Procedures"]["Create routine"];unset($Zg["Procedures"]["Create routine"]);$Zg["Columns"]=array();foreach(array("Select","Insert","Update","References")as$X)$Zg["Columns"][$X]=$Zg["Tables"][$X];unset($Zg["Server Admin"]["Usage"]);foreach($Zg["Tables"]as$x=>$X)unset($Zg["Databases"][$x]);$Af=array();if($_POST){foreach($_POST["objects"]as$x=>$X)$Af[$X]=(array)$Af[$X]+idx($_POST["grants"],$x,array());}$vd=array();$Qf="";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],$A)&&preg_match_all('~ *([^(,]*[^ ,(])( *\([^)]+\))?~',$A[1],$Ze,PREG_SET_ORDER)){foreach($Ze
|
||
as$X){if($X[1]!="USAGE")$vd["$A[2]$X[2]"][$X[1]]=true;if(preg_match('~ WITH GRANT OPTION~',$K[0]))$vd["$A[2]$X[2]"]["GRANT OPTION"]=true;}}if(preg_match("~ IDENTIFIED BY PASSWORD '([^']+)~",$K[0],$A))$Qf=$A[1];}}if($_POST&&!$l){$Rf=(isset($_GET["host"])?q($fa)."@".q($_GET["host"]):"''");if($_POST["drop"])query_redirect("DROP USER $Rf",ME."privileges=",'User has been dropped.');else{$Cf=q($_POST["user"])."@".q($_POST["host"]);$Eg=$_POST["pass"];if($Eg!=''&&!$_POST["hashed"]&&!min_version(8)){$Eg=get_val("SELECT PASSWORD(".q($Eg).")");$l=!$Eg;}$Eb=false;if(!$l){if($Rf!=$Cf){$Eb=queries((min_version(5)?"CREATE USER":"GRANT USAGE ON *.* TO")." $Cf IDENTIFIED BY ".(min_version(8)?"":"PASSWORD ").q($Eg));$l=!$Eb;}elseif($Eg!=$Qf)queries("SET PASSWORD FOR $Cf = ".q($Eg));}if(!$l){$xh=array();foreach($Af
|
||
as$Kf=>$ud){if(isset($_GET["grant"]))$ud=array_filter($ud);$ud=array_keys($ud);if(isset($_GET["grant"]))$xh=array_diff(array_keys(array_filter($Af[$Kf],'strlen')),$ud);elseif($Rf==$Cf){$Of=array_keys((array)$vd[$Kf]);$xh=array_diff($Of,$ud);$ud=array_diff($ud,$Of);unset($vd[$Kf]);}if(preg_match('~^(.+)\s*(\(.*\))?$~U',$Kf,$A)&&(!grant("REVOKE",$xh,$A[2]," ON $A[1] FROM $Cf")||!grant("GRANT",$ud,$A[2]," ON $A[1] TO $Cf"))){$l=true;break;}}}if(!$l&&isset($_GET["host"])){if($Rf!=$Cf)queries("DROP USER $Rf");elseif(!isset($_GET["grant"])){foreach($vd
|
||
as$Kf=>$xh){if(preg_match('~^(.+)(\(.*\))?$~U',$Kf,$A))grant("REVOKE",array_keys($xh),$A[2]," ON $A[1] FROM $Cf");}}}queries_redirect(ME."privileges=",(isset($_GET["host"])?'User has been altered.':'User has been created.'),!$l);if($Eb)connection()->query("DROP USER $Cf");}}page_header((isset($_GET["host"])?'Username'.": ".h("$fa@$_GET[host]"):'Create user'),$l,array("privileges"=>array('','Privileges')));$K=$_POST;if($K)$vd=$Af;else{$K=$_GET+array("host"=>get_val("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', -1)"));$K["pass"]=$Qf;if($Qf!="")$K["hashed"]=true;$vd[(DB==""||$vd?"":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($vd
|
||
as$Kf=>$ud){echo'<th>'.($Kf!="*.*"?"<input name='objects[$s]' value='".h($Kf)."' 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$_b=>$Yb){foreach((array)$Zg[$_b]as$Yg=>$ob){echo"<tr><td".($Yb?">$Yb<td":" colspan='2'").' lang="en" title="'.h($ob).'">'.h($Yg);$s=0;foreach($vd
|
||
as$Kf=>$ud){$B="'grants[$s][".h(strtoupper($Yg))."]'";$Y=$ud[strtoupper($Yg)];if($_b=="Server Admin"&&$Kf!=(isset($vd["*.*"])?"*.*":".*"))echo"<td>";elseif(isset($_GET["grant"]))echo"<td><select name=$B><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=$B value='1'".($Y?" checked":"").($Yg=="All privileges"?" id='grants-$s-all'>":">".($Yg=="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){$Ee=0;foreach((array)$_POST["kill"]as$X){if(adminer()->killProcess($X))$Ee++;}queries_redirect(ME."processlist=",lang_format(array('%d process has been killed.','%d processes have been killed.'),$Ee),$Ee||!$_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(adminer()->processList()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);$ld=column_foreign_keys($a);$Mf=$S["Oid"];$na=get_settings("adminer_import");$yh=array();$e=array();$Lh=array();$eg=array();$Oi="";foreach($n
|
||
as$x=>$m){$B=adminer()->fieldName($m);$zf=html_entity_decode(strip_tags($B),ENT_QUOTES);if(isset($m["privileges"]["select"])&&$B!=""){$e[$x]=$zf;if(is_shortable($m))$Oi=adminer()->selectLengthProcess();}if(isset($m["privileges"]["where"])&&$B!="")$Lh[$x]=$zf;if(isset($m["privileges"]["order"])&&$B!="")$eg[$x]=$zf;$yh+=$m["privileges"];}list($M,$wd)=adminer()->selectColumnsProcess($e,$w);$M=array_unique($M);$wd=array_unique($wd);$ue=count($wd)<count($M);$Z=adminer()->selectSearchProcess($n,$w);$dg=adminer()->selectOrderProcess($n,$w);$z=adminer()->selectLimitProcess();if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$sj=>$K){$wa=convert_field($n[key($K)]);$M=array($wa?:idf_escape(key($K)));$Z[]=where_check($sj,$n);$J=driver()->select($a,$M,$Z,$M);if($J)echo
|
||
first($J->fetch_row());}exit;}$G=$uj=array();foreach($w
|
||
as$v){if($v["type"]=="PRIMARY"){$G=array_flip($v["columns"]);$uj=($M?$G:array());foreach($uj
|
||
as$x=>$X){if(in_array(idf_escape($x),$M))unset($uj[$x]);}break;}}if($Mf&&!$G){$G=$uj=array($Mf=>0);$w[]=array("type"=>"PRIMARY","columns"=>array($Mf));}if($_POST&&!$l){$Tj=$Z;if(!$_POST["all"]&&is_array($_POST["check"])){$ab=array();foreach($_POST["check"]as$Wa)$ab[]=where_check($Wa,$n);$Tj[]="((".implode(") OR (",$ab)."))";}$Tj=($Tj?"\nWHERE ".implode(" AND ",$Tj):"");if($_POST["export"]){save_settings(array("output"=>$_POST["output"],"format"=>$_POST["format"]),"adminer_import");dump_headers($a);adminer()->dumpTable($a,"");$pd=($M?implode(", ",$M):"*").convert_fields($e,$n,$M)."\nFROM ".table($a);$yd=($wd&&$ue?"\nGROUP BY ".implode(", ",$wd):"").($dg?"\nORDER BY ".implode(", ",$dg):"");$H="SELECT $pd$Tj$yd";if(is_array($_POST["check"])&&!$G){$qj=array();foreach($_POST["check"]as$X)$qj[]="(SELECT".limit($pd,"\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$n).$yd,1).")";$H=implode(" UNION ALL ",$qj);}adminer()->dumpData($a,"table",$H);adminer()->dumpFooter();exit;}if(!adminer()->selectEmailProcess($Z,$ld)){if($_POST["save"]||$_POST["delete"]){$I=true;$oa=0;$O=array();if(!$_POST["delete"]){foreach($_POST["fields"]as$B=>$X){$X=process_input($n[$B]);if($X!==null&&($_POST["clone"]||$X!==false))$O[idf_escape($B)]=($X!==false?$X:idf_escape($B));}}if($_POST["delete"]||$O){$H=($_POST["clone"]?"INTO ".table($a)." (".implode(", ",array_keys($O)).")\nSELECT ".implode(", ",$O)."\nFROM ".table($a):"");if($_POST["all"]||($G&&is_array($_POST["check"]))||$ue){$I=($_POST["delete"]?driver()->delete($a,$Tj):($_POST["clone"]?queries("INSERT $H$Tj".driver()->insertReturning($a)):driver()->update($a,$O,$Tj)));$oa=connection()->affected_rows;if(is_object($I))$oa+=$I->num_rows;}else{foreach((array)$_POST["check"]as$X){$Sj="\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$n);$I=($_POST["delete"]?driver()->delete($a,$Sj,1):($_POST["clone"]?queries("INSERT".limit1($a,$H,$Sj)):driver()->update($a,$O,$Sj,1)));if(!$I)break;$oa+=connection()->affected_rows;}}}$lf=lang_format(array('%d item has been affected.','%d items have been affected.'),$oa);if($_POST["clone"]&&$I&&$oa==1){$Je=last_id($I);if($Je)$lf=sprintf('Item%s has been inserted.'," $Je");}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page":""),$lf,$I);if(!$_POST["delete"]){$Qg=(array)$_POST["fields"];edit_form($a,array_intersect_key($n,$Qg),$Qg,!$_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$sj=>$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($sj,$n),($ue||$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($Zc=get_file("csv_file",true)))$l=upload_error($Zc);elseif(!preg_match('~~u',$Zc))$l='File must be in UTF-8 encoding.';else{save_settings(array("output"=>$na["output"],"format"=>$_POST["separator"]),"adminer_import");$I=true;$kb=array_keys($n);preg_match_all('~(?>"[^"]*"|[^"\r\n]+)+~',$Zc,$Ze);$oa=count($Ze[0]);driver()->begin();$Rh=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$L=array();foreach($Ze[0]as$x=>$X){preg_match_all("~((?>\"[^\"]*\")+|[^$Rh]*)$Rh~",$X.$Rh,$af);if(!$x&&!array_diff($af[1],$kb)){$kb=$af[1];$oa--;}else{$O=array();foreach($af[1]as$s=>$hb)$O[idf_escape($kb[$s])]=($hb==""&&$n[$kb[$s]]["null"]?"NULL":q(preg_match('~^".*"$~s',$hb)?str_replace('""','"',substr($hb,1,-1)):$hb));$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();}}}$_i=adminer()->tableName($S);if(is_ajax()){page_headers();ob_start();}else
|
||
page_header('Select'.": $_i",$l);$O=null;if(isset($yh["insert"])||!support("table")){$vg=array();foreach((array)$_GET["where"]as$X){if(isset($ld[$X["col"]])&&count($ld[$X["col"]])==1&&($X["op"]=="="||(!$X["op"]&&(is_array($X["val"])||!preg_match('~[_%]~',$X["val"])))))$vg["set"."[".bracket_escape($X["col"])."]"]=$X["val"];}$O=$vg?"&".http_build_query($vg):"";}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,$Lh,$w);adminer()->selectOrderPrint($dg,$eg,$w);adminer()->selectLimitPrint($z);adminer()->selectLengthPrint($Oi);adminer()->selectActionPrint($w);echo"</form>\n";$D=$_GET["page"];$od=null;if($D=="last"){$od=get_val(count_rows($a,$Z,$ue,$wd));$D=floor(max(0,intval($od)-1)/$z);}$Mh=$M;$xd=$wd;if(!$Mh){$Mh[]="*";$Ab=convert_fields($e,$n,$M);if($Ab)$Mh[]=substr($Ab,2);}foreach($M
|
||
as$x=>$X){$m=$n[idf_unescape($X)];if($m&&($wa=convert_field($m)))$Mh[$x]="$wa AS $X";}if(!$ue&&$uj){foreach($uj
|
||
as$x=>$X){$Mh[]=idf_escape($x);if($xd)$xd[]=idf_escape($x);}}$I=driver()->select($a,$Mh,$Z,$xd,$dg,$z,$D,true);if(!$I)echo"<p class='error'>".error()."\n";else{if(JUSH=="mssql"&&$D)$I->seek($z*$D);$vc=array();echo"<form action='' method='post' enctype='multipart/form-data'>\n";$L=array();while($K=$I->fetch_assoc()){if($D&&JUSH=="oracle")unset($K["RNUM"]);$L[]=$K;}if($_GET["page"]!="last"&&$z&&$wd&&$ue&&JUSH=="sql")$od=get_val(" SELECT FOUND_ROWS()");if(!$L)echo"<p class='message'>".'No rows.'."\n";else{$Ea=adminer()->backwardKeys($a,$_i);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>".(!$wd&&$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>");$_f=array();$rd=array();reset($M);$ih=1;foreach($L[0]as$x=>$X){if(!isset($uj[$x])){$X=idx($_GET["columns"],key($M))?:array();$m=$n[$M?($X?$X["col"]:current($M)):$x];$B=($m?adminer()->fieldName($m,$ih):($X["fun"]?"*":h($x)));if($B!=""){$ih++;$_f[$x]=$B;$d=idf_escape($x);$Nd=remove_from_uri('(order|desc)[^=]*|page').'&order%5B0%5D='.urlencode($x);$Yb="&desc%5B0%5D=1";echo"<th id='th[".h(bracket_escape($x))."]'>".script("mixin(qsl('th'), {onmouseover: partial(columnMouse), onmouseout: partial(columnMouse, ' hidden')});","");$qd=apply_sql_function($X["fun"],$B);$ei=isset($m["privileges"]["order"])||$qd;echo($ei?"<a href='".h($Nd.($dg[0]==$d||$dg[0]==$x?$Yb:''))."'>$qd</a>":$qd),"<span class='column hidden'>";if($ei)echo"<a href='".h($Nd.$Yb)."' 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>";}$rd[$x]=$X["fun"];next($M);}}$Oe=array();if($_GET["modify"]){foreach($L
|
||
as$K){foreach($K
|
||
as$x=>$X)$Oe[$x]=max($Oe[$x],min(40,strlen(utf8_decode($X))));}}echo($Ea?"<th>".'Relations':"")."</thead>\n";if(is_ajax())ob_end_clean();foreach(adminer()->rowDescriptions($L,$ld)as$yf=>$K){$rj=unique_array($L[$yf],$w);if(!$rj){$rj=array();reset($M);foreach($L[$yf]as$x=>$X){if(!preg_match('~^(COUNT|AVG|GROUP_CONCAT|MAX|MIN|SUM)\(~',current($M)))$rj[$x]=$X;next($M);}}$sj="";foreach($rj
|
||
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);}$sj
|
||
.="&".($X!==null?urlencode("where[".bracket_escape($x)."]")."=".urlencode($X===false?"f":$X):"null%5B%5D=".urlencode($x));}echo"<tr>".(!$wd&&$M?"":"<td>".checkbox("check[]",substr($sj,1),in_array(substr($sj,1),(array)$_POST["check"])).($ue||information_schema(DB)?"":" <a href='".h(ME."edit=".urlencode($a).$sj)."' class='edit'>".'edit'."</a>"));reset($M);foreach($K
|
||
as$x=>$X){if(isset($_f[$x])){$d=current($M);$m=(array)$n[$x];$X=driver()->value($X,$m);if($X!=""&&(!isset($vc[$x])||$vc[$x]!=""))$vc[$x]=(is_mail($X)?$_f[$x]:"");$_="";if(is_blob($m)&&$X!="")$_=ME.'download='.urlencode($a).'&field='.urlencode($x).$sj;if(!$_&&$X!==null){foreach((array)$ld[$x]as$p){if(count($ld[$x])==1||end($p["source"])==$x){$_="";foreach($p["source"]as$s=>$fi)$_
|
||
.=where_link($s,$p["target"][$s],$L[$yf][$fi]);$_=($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($d=="COUNT(*)"){$_=ME."select=".urlencode($a);$s=0;foreach((array)$_GET["where"]as$W){if(!array_key_exists($W["col"],$rj))$_
|
||
.=where_link($s++,$W["col"],$W["val"],$W["op"]);}foreach($rj
|
||
as$Ae=>$W)$_
|
||
.=where_link($s++,$Ae,$W);}$Od=select_value($X,$_,$m,$Oi);$t=h("val[$sj][".bracket_escape($x)."]");$Rg=idx(idx($_POST["val"],$sj),bracket_escape($x));$qc=!is_array($K[$x])&&is_utf8($Od)&&$L[$yf][$x]==$K[$x]&&!$rd[$x]&&!$m["generated"];$U=(preg_match('~^(AVG|MIN|MAX)\((.+)\)~',$d,$A)?$n[idf_unescape($A[2])]["type"]:$m["type"]);$Mi=preg_match('~text|json|lob~',$U);$ve=preg_match(number_type(),$U)||preg_match('~^(CHAR_LENGTH|ROUND|FLOOR|CEIL|TIME_TO_SEC|COUNT|SUM)\(~',$d);echo"<td id='$t'".($ve&&($X===null||is_numeric(strip_tags($Od))||$U=="money")?" class='number'":"");if(($_GET["modify"]&&$qc&&$X!==null)||$Rg!==null){$Ad=h($Rg!==null?$Rg:$K[$x]);echo">".($Mi?"<textarea name='$t' cols='30' rows='".(substr_count($K[$x],"\n")+1)."'>$Ad</textarea>":"<input name='$t' value='$Ad' size='$Oe[$x]'>");}else{$Ue=strpos($Od,"<i>…</i>");echo" data-text='".($Ue?2:($Mi?1:0))."'".($qc?"":" data-warning='".h('Use edit link to modify this value.')."'").">$Od";}}next($M);}if($Ea)echo"<td>";adminer()->backwardKeysPrint($Ea,$L[$yf]);echo"</tr>\n";}if(is_ajax())exit;echo"</table>\n","</div>\n";}if(!is_ajax()){if($L||$D){$Ic=true;if($_GET["page"]!="last"){if(!$z||(count($L)<$z&&($L||!$D)))$od=($D?$D*$z:0)+count($L);elseif(JUSH!="sql"||!$ue){$od=($ue?false:found_rows($S,$Z));if(intval($od)<max(1e4,2*($D+1)*$z))$od=first(slow_query(count_rows($a,$Z,$ue,$wd)));else$Ic=false;}}$tg=($z&&($od===false||$od>$z||$D));if($tg)echo(($od===false?count($L)+1:$od-$D*$z)>$z?'<p><a href="'.h(remove_from_uri("page")."&page=".($D+1)).'" class="loadmore">'.'Load more data'.'</a>'.script("qsl('a').onclick = partial(selectLoadMore, $z, '".'Loading'."…');",""):''),"\n";echo"<div class='footer'><div>\n";if($tg){$ef=($od===false?$D+(count($L)>=$z?2:1):floor(($od-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'."', '".($D+1)."')); return false; };"),pagination(0,$D).($D>5?" …":"");for($s=max(1,$D-4);$s<min($ef,$D+5);$s++)echo
|
||
pagination($s,$D);if($ef>0)echo($D+5<$ef?" …":""),($Ic&&$od!==false?pagination($ef,$D):" <a href='".h(remove_from_uri("page")."&page=last")."' title='~$ef'>".'last'."</a>");}else
|
||
echo"<legend>".'Page'."</legend>",pagination(0,$D).($D>1?" …":""),($D?pagination($D,$D):""),($ef>$D?pagination($D+1,$D).($ef>$D+1?" …":""):"");echo"</fieldset>\n";}echo"<fieldset>","<legend>".'Whole result'."</legend>";$fc=($Ic?"":"~ ").$od;$Wf="const checked = formChecked(this, /check/); selectCount('selected', this.checked ? '$fc' : checked); selectCount('selected2', this.checked || !checked ? '$fc' : checked);";echo
|
||
checkbox("all",1,0,($od!==false?($Ic?"":"~ ").lang_format(array('%d row','%d rows'),$od):""),$Wf)."\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>
|
||
';$md=adminer()->dumpFormat();foreach((array)$_GET["columns"]as$d){if($d["fun"]){unset($md['sql']);break;}}if($md){print_fieldset("export",'Export'." <span id='selected2'></span>");$qg=adminer()->dumpOutput();echo($qg?html_select("output",$qg,$na["output"])." ":""),html_select("format",$md,$na["format"])," <input type='submit' name='export' value='".'Export'."'>\n","</div></fieldset>\n";}adminer()->selectEmailPrint(array_filter($vc,'strlen'),$e);echo"</div></div>\n";}if(adminer()->selectImportPrint())echo"<p>","<a href='#import'>".'Import'."</a>",script("qsl('a').onclick = partial(toggle, 'import');",""),"<span id='import'".($_POST["import"]?"":" class='hidden'").">: ",file_input("<input type='file' name='csv_file'> ".html_select("separator",array("csv"=>"CSV,","csv;"=>"CSV;","tsv"=>"TSV"),$na["format"])." <input type='submit' name='import' value='".'Import'."'>"),"</span>";echo
|
||
input_token(),"</form>\n",(!$wd&&$M?"":script("tableCheck();"));}}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["variables"])){$P=isset($_GET["status"]);page_header($P?'Status':'Variables');$Jj=($P?show_status():show_variables());if(!$Jj)echo"<p class='message'>".'No rows.'."\n";else{echo"<table>\n";foreach($Jj
|
||
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"){$wi=array("Data_length"=>0,"Index_length"=>0,"Data_free"=>0);foreach(table_status()as$B=>$S){json_row("Comment-$B",h($S["Comment"]));if(!is_view($S)||preg_match('~materialized~i',$S["Engine"])){foreach(array("Engine","Collation")as$x)json_row("$x-$B",h($S[$x]));foreach($wi+array("Auto_increment"=>0,"Rows"=>0)as$x=>$X){if($S[$x]!=""){$X=format_number($S[$x]);if($X>=0)json_row("$x-$B",($x=="Rows"&&$X&&$S["Engine"]==(JUSH=="pgsql"?"table":"InnoDB")?"~ $X":$X));if(isset($wi[$x]))$wi[$x]+=($S["Engine"]!="InnoDB"||$x!="Data_free"?$S[$x]:0);}elseif(array_key_exists($x,$S))json_row("$x-$B","?");}}}foreach($wi
|
||
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{$Gi=array_merge((array)$_POST["tables"],(array)$_POST["views"]);if($Gi&&!$l&&!$_POST["search"]){$I=true;$lf="";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"]);$lf='Tables have been truncated.';}elseif($_POST["move"]){$I=move_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$lf='Tables have been moved.';}elseif($_POST["copy"]){$I=copy_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$lf='Tables have been copied.';}elseif($_POST["drop"]){if($_POST["views"])$I=drop_views($_POST["views"]);if($I&&$_POST["tables"])$I=drop_tables($_POST["tables"]);$lf='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)$lf
|
||
.="<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"]));$lf='Tables have been optimized.';}elseif(!$_POST["tables"])$lf='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())$lf
|
||
.="<b>".h($K["Table"])."</b>: ".h($K["Msg_text"])."<br>";}queries_redirect(substr(ME,0,-1),$lf,$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";$Fi=tables_list();if(!$Fi)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>",html_select("op",adminer()->operators(),idx($_POST,"op",JUSH=="elastic"?"should":"LIKE %%"))," <input type='search' name='query' value='".h($_POST["query"])."'>",script("qsl('input').onkeydown = partialArg(bodyKeydown, 'search');","")," <input type='submit' name='search' value='".'Search'."'>\n","</div></fieldset>\n";if($_POST["search"]&&$_POST["query"]!=""){$_GET["where"][0]["op"]=$_POST["op"];search_tables();}}echo"<div class='scrollable'>\n","<table class='nowrap checkable odds'>\n",script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});"),'<thead><tr class="wrap">','<td><input id="check-all" type="checkbox" class="jsonly">'.script("qs('#check-all').onclick = partial(formCheck, /^(tables|views)\[/);",""),'<th>'.'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($Fi
|
||
as$B=>$U){$Mj=($U!==null&&!preg_match('~table|sequence~i',$U));$t=h("Table-".$B);echo'<tr><td>'.checkbox(($Mj?"views[]":"tables[]"),$B,in_array("$B",$Gi,true),"","","",$t),'<th>'.(support("table")||support("indexes")?"<a href='".h(ME)."table=".urlencode($B)."' title='".'Show structure'."' id='$t'>".h($B).'</a>':h($B));if($Mj&&!preg_match('~materialized~i',$U)){$Si='View';echo'<td colspan="6">'.(support("view")?"<a href='".h(ME)."view=".urlencode($B)."' title='".'Alter view'."'>$Si</a>":$Si),'<td align="right"><a href="'.h(ME)."select=".urlencode($B).'" 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($B)."'";echo($_?"<td align='right'>".(support("table")||$x=="Rows"||(support("indexes")&&$x!="Data_length")?"<a href='".h(ME."$_[0]=").urlencode($B)."'$t title='$_[1]'>?</a>":"<span$t>?</span>"):"<td id='$x-".h($B)."'>");}$T++;}echo(support("comment")?"<td id='Comment-".h($B)."'>":""),"\n";}echo"<tr><td><th>".sprintf('%d in total',count($Fi)),"<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",script("ajaxSetHtml('".js_escape(ME)."script=db');"),"</div>\n";if(!information_schema(DB)){echo"<div class='footer'><div>\n";$Gj="<input type='submit' value='".'Vacuum'."'> ".on_help("'VACUUM'");$Zf="<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"?$Gj."<input type='submit' name='check' value='".'Check'."'> ".on_help("'PRAGMA integrity_check'"):(JUSH=="pgsql"?$Gj.$Zf:(JUSH=="sql"?"<input type='submit' value='".'Analyze'."'> ".on_help("'ANALYZE TABLE'").$Zf."<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());echo"</div></fieldset>\n";$Jh="";if(count($i)!=1&&JUSH!="sqlite"){echo"<fieldset><legend>".'Move to other database'." <span id='selected3'></span></legend><div>";$j=(isset($_POST["target"])?$_POST["target"]:(support("scheme")?$_GET["ns"]:DB));echo($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'):""),"</div></fieldset>\n";$Jh=" selectCount('selected3', formChecked(this, /^(tables|views)\[/));";}echo"<input type='hidden' name='all' value=''>",script("qsl('input').onclick = function () { selectCount('selected', formChecked(this, /^(tables|views)\[/));".(support("table")?" selectCount('selected2', formChecked(this, /^tables\[/) || $T);":"")."$Jh }"),input_token(),"</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";$Bh=routines();if($Bh){echo"<table class='odds'>\n",'<thead><tr><th>'.'Name'.'<td>'.'Type'.'<td>'.'Return type'."<td></thead>\n";foreach($Bh
|
||
as$K){$B=($K["SPECIFIC_NAME"]==$K["ROUTINE_NAME"]?"":"&name=".urlencode($K["ROUTINE_NAME"]));echo'<tr>','<th><a href="'.h(ME.($K["ROUTINE_TYPE"]!="PROCEDURE"?'callf=':'call=').urlencode($K["SPECIFIC_NAME"]).$B).'">'.h($K["ROUTINE_NAME"]).'</a>','<td>'.h($K["ROUTINE_TYPE"]),'<td>'.h($K["DTD_IDENTIFIER"]),'<td><a href="'.h(ME.($K["ROUTINE_TYPE"]!="PROCEDURE"?'function=':'procedure=').urlencode($K["SPECIFIC_NAME"]).$B).'">'.'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";$Uh=get_vals("SELECT sequence_name FROM information_schema.sequences WHERE sequence_schema = current_schema() ORDER BY sequence_name");if($Uh){echo"<table class='odds'>\n","<thead><tr><th>".'Name'."</thead>\n";foreach($Uh
|
||
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";$Ej=types();if($Ej){echo"<table class='odds'>\n","<thead><tr><th>".'Name'."</thead>\n";foreach($Ej
|
||
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";$Gc=get_val("SELECT @@event_scheduler");if($Gc&&$Gc!="ON")echo"<p class='error'><code class='jush-sqlset'>event_scheduler</code>: ".h($Gc)."\n";}echo'<p class="links"><a href="'.h(ME).'event=">'.'Create event'."</a>\n";}}}}page_footer(); |