From 0be32bfb40b50976aed3ed6472ba42452f223006 Mon Sep 17 00:00:00 2001
From: Serge Igitov <easy-phpc@mail.ru>
Date: Thu, 6 Jul 2017 20:03:49 +0100
Subject: [PATCH 01/22] add

add
---
 CONTRIBUTING.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 8b13789..c8316ed 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1 +1 @@
-
+#1 (@easy-phpc)

From cf239406a37705da4b1274c915a2ae926076b6b4 Mon Sep 17 00:00:00 2001
From: Serge Igitov <easy-phpc@mail.ru>
Date: Thu, 6 Jul 2017 20:15:49 +0100
Subject: [PATCH 02/22] add

add
---
 docs/README.md | 2 ++
 1 file changed, 2 insertions(+)
 create mode 100644 docs/README.md

diff --git a/docs/README.md b/docs/README.md
new file mode 100644
index 0000000..5ab3a1c
--- /dev/null
+++ b/docs/README.md
@@ -0,0 +1,2 @@
+## PHPC
+PHPC

From f223966ea1925b8c8bf698c7f016134a978a0372 Mon Sep 17 00:00:00 2001
From: easy-phpc <easy-phpc@mail.ru>
Date: Thu, 6 Jul 2017 20:27:40 +0100
Subject: [PATCH 03/22] adding payment gateway https://payeer.com/04806766

---
 README.md           |   4 +-
 plugins/cpayeer.php | 224 ++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 227 insertions(+), 1 deletion(-)
 create mode 100644 plugins/cpayeer.php

diff --git a/README.md b/README.md
index 8e5b5c0..45c50d7 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,4 @@
 ### PHPC
-PHP Compiler CMF - Content Management Framework. Ð¡Ð¸Ñ�Ñ‚ÐµÐ¼Ð° Ð´Ð»Ñ� Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ Ñ�Ð°Ð¹Ñ‚Ð¾Ð² Ð½Ð° PHP âˆ’ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð°Ñ�, ÑƒÐ´Ð¾Ð±Ð½Ð°Ñ�, Ð±Ñ‹Ñ�Ñ‚Ñ€Ð°Ñ� Ð¸ Ð½Ð°Ð´ÐµÐ¶Ð½Ð°Ñ�.
+PHP Compiler CMF - Content Management Framework.
+Ð¡Ð¸Ñ�Ñ‚ÐµÐ¼Ð° Ð´Ð»Ñ� Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ Ñ�Ð°Ð¹Ñ‚Ð¾Ð² Ð½Ð° PHP âˆ’ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð°Ñ�, ÑƒÐ´Ð¾Ð±Ð½Ð°Ñ�, Ð±Ñ‹Ñ�Ñ‚Ñ€Ð°Ñ� Ð¸ Ð½Ð°Ð´ÐµÐ¶Ð½Ð°Ñ�.
+Ð”Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð° Ð¿Ð»Ð°Ñ‚ÐµÐ¶Ð½Ð°Ñ� Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ð° [a https://payeer.com/04806766](Payeer), Ð·Ð°Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¸Ñ€ÑƒÐµÑ‚Ðµ Ñ�Ð²Ð¾Ð¹ ÐºÐ¾ÑˆÐµÐ»ÐµÐº Ð² Ñ�Ñ‚Ð¾Ð¹ Ð¿Ð»Ð°Ñ‚ÐµÐ¶Ð½Ð¾Ð¹ Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ðµ.
\ No newline at end of file
diff --git a/plugins/cpayeer.php b/plugins/cpayeer.php
new file mode 100644
index 0000000..60056fc
--- /dev/null
+++ b/plugins/cpayeer.php
@@ -0,0 +1,224 @@
+<?php
+
+class CPayeer
+{
+	private $url = 'https://payeer.com/ajax/api/api.php';
+	private $agent = 'Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20100101 Firefox/12.0';
+
+	private $auth = array();
+
+	private $output;
+	private $errors;
+	private $language = 'ru';
+
+	public function __construct($account, $apiId, $apiPass)
+	{
+		$arr = array(
+			'account' => $account,
+			'apiId' => $apiId,
+			'apiPass' => $apiPass,
+		);
+
+		$response = $this->getResponse($arr);
+
+		if ($response['auth_error'] == '0')
+		{
+			$this->auth = $arr;
+		}
+	}
+
+	public function isAuth()
+	{
+		if (!empty($this->auth)) return true;
+		return false;
+	}
+
+	private function getResponse($arPost)
+	{
+		if (!function_exists('curl_init'))
+		{
+		   die('curl library not installed');
+		   return false;
+		}
+
+		if ($this->isAuth())
+		{
+			$arPost = array_merge($arPost, $this->auth);
+		}
+
+		$data = array();
+		foreach ($arPost as $k => $v)
+		{
+			$data[] = urlencode($k) . '=' . urlencode($v);
+		}
+		$data[] = 'language=' . $this->language;
+		$data = implode('&', $data);
+
+		$handler  = curl_init();
+		curl_setopt($handler, CURLOPT_URL, $this->url);
+		curl_setopt($handler, CURLOPT_HEADER, 0);
+		curl_setopt($handler, CURLOPT_POST, true);
+		curl_setopt($handler, CURLOPT_POSTFIELDS, $data);
+		curl_setopt($handler, CURLOPT_SSL_VERIFYPEER, 0);
+		curl_setopt($handler, CURLOPT_SSL_VERIFYHOST, 0);
+		curl_setopt($handler, CURLOPT_USERAGENT, $this->agent);
+		curl_setopt($handler, CURLOPT_RETURNTRANSFER, 1);
+
+		$content = curl_exec($handler);
+		//print_r($content);
+
+		$arRequest = curl_getinfo($handler);
+		//print_r($arRequest);
+
+		curl_close($handler);
+		//print_r($content);
+
+		$content = json_decode($content, true);
+
+		if (isset($content['errors']) && !empty($content['errors']))
+		{
+			$this->errors = $content['errors'];
+		}
+
+		return $content;
+	}
+
+	public function getPaySystems()
+	{
+		$arPost = array(
+			'action' => 'getPaySystems',
+		);
+
+		$response = $this->getResponse($arPost);
+
+		return $response;
+	}
+
+	public function initOutput($arr)
+	{
+		$arPost = $arr;
+		$arPost['action'] = 'initOutput';
+
+		$response = $this->getResponse($arPost);
+
+		if (empty($response['errors']))
+		{
+			$this->output = $arr;
+			return true;
+		}
+
+		return false;
+	}
+
+	public function output()
+	{
+		$arPost = $this->output;
+		$arPost['action'] = 'output';
+
+		$response = $this->getResponse($arPost);
+
+		if (empty($response['errors']))
+		{
+			return $response['historyId'];
+		}
+
+		return false;
+	}
+
+	public function getHistoryInfo($historyId)
+	{
+		$arPost = array(
+			'action' => 'historyInfo',
+			'historyId' => $historyId
+		);
+
+		$response = $this->getResponse($arPost);
+
+		return $response;
+	}
+
+	public function getBalance()
+	{
+		$arPost = array(
+			'action' => 'balance',
+		);
+
+		$response = $this->getResponse($arPost);
+
+		return $response;
+	}
+
+	public function getErrors()
+	{
+		return $this->errors;
+	}
+
+	public function transfer($arPost)
+	{
+		$arPost['action'] = 'transfer';
+
+		$response = $this->getResponse($arPost);
+
+		return $response;
+	}
+
+	public function SetLang($language)
+	{
+		$this->language = $language;
+		return $this;
+	}
+
+	public function getShopOrderInfo($arPost)
+	{
+		$arPost['action'] = 'shopOrderInfo';
+
+		$response = $this->getResponse($arPost);
+
+		return $response;
+	}
+
+	public function checkUser($arPost)
+	{
+		$arPost['action'] = 'checkUser';
+
+		$response = $this->getResponse($arPost);
+
+		if (empty($response['errors']))
+		{
+			return true;
+		}
+
+		return false;
+	}
+
+	public function getExchangeRate($arPost)
+	{
+		$arPost['action'] = 'getExchangeRate';
+
+		$response = $this->getResponse($arPost);
+
+		return $response;
+	}
+
+	public function merchant($arPost)
+	{
+		$arPost['action'] = 'merchant';
+
+		$arPost['shop'] = json_encode($arPost['shop']);
+		$arPost['form'] = json_encode($arPost['form']);
+		$arPost['ps'] = json_encode($arPost['ps']);
+
+		if (empty($arPost['ip'])) $arPost['ip'] = $_SERVER['REMOTE_ADDR'];
+
+		$response = $this->getResponse($arPost);
+
+		if (empty($response['errors']))
+		{
+			return $response;
+		}
+
+		return false;
+	}
+}
+
+?>

From 99217aaa4f1ca187dc2825e63011de89d56b0efb Mon Sep 17 00:00:00 2001
From: Serge Igitov <easy-phpc@mail.ru>
Date: Thu, 6 Jul 2017 20:28:50 +0100
Subject: [PATCH 04/22] fix

fix formating page
---
 README.md | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/README.md b/README.md
index 45c50d7..486f2f3 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,6 @@
 ### PHPC
 PHP Compiler CMF - Content Management Framework.
+
 Ð¡Ð¸Ñ�Ñ‚ÐµÐ¼Ð° Ð´Ð»Ñ� Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ Ñ�Ð°Ð¹Ñ‚Ð¾Ð² Ð½Ð° PHP âˆ’ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð°Ñ�, ÑƒÐ´Ð¾Ð±Ð½Ð°Ñ�, Ð±Ñ‹Ñ�Ñ‚Ñ€Ð°Ñ� Ð¸ Ð½Ð°Ð´ÐµÐ¶Ð½Ð°Ñ�.
-Ð”Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð° Ð¿Ð»Ð°Ñ‚ÐµÐ¶Ð½Ð°Ñ� Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ð° [a https://payeer.com/04806766](Payeer), Ð·Ð°Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¸Ñ€ÑƒÐµÑ‚Ðµ Ñ�Ð²Ð¾Ð¹ ÐºÐ¾ÑˆÐµÐ»ÐµÐº Ð² Ñ�Ñ‚Ð¾Ð¹ Ð¿Ð»Ð°Ñ‚ÐµÐ¶Ð½Ð¾Ð¹ Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ðµ.
\ No newline at end of file
+
+Ð”Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð° Ð¿Ð»Ð°Ñ‚ÐµÐ¶Ð½Ð°Ñ� Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ð° [a https://payeer.com/04806766](Payeer), Ð·Ð°Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¸Ñ€ÑƒÐµÑ‚Ðµ Ñ�Ð²Ð¾Ð¹ ÐºÐ¾ÑˆÐµÐ»ÐµÐº Ð² Ñ�Ñ‚Ð¾Ð¹ Ð¿Ð»Ð°Ñ‚ÐµÐ¶Ð½Ð¾Ð¹ Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ðµ.

From 6dd738d8fc26aa0ca3e2d846f65dba33f6e0a8e1 Mon Sep 17 00:00:00 2001
From: easy-phpc <easy-phpc@mail.ru>
Date: Thu, 6 Jul 2017 20:31:36 +0100
Subject: [PATCH 05/22] adding payment gateway https://payeer.com/04806766

---
 README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/README.md b/README.md
index 486f2f3..35e025b 100644
--- a/README.md
+++ b/README.md
@@ -3,4 +3,4 @@ PHP Compiler CMF - Content Management Framework.
 
 Ð¡Ð¸Ñ�Ñ‚ÐµÐ¼Ð° Ð´Ð»Ñ� Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ Ñ�Ð°Ð¹Ñ‚Ð¾Ð² Ð½Ð° PHP âˆ’ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð°Ñ�, ÑƒÐ´Ð¾Ð±Ð½Ð°Ñ�, Ð±Ñ‹Ñ�Ñ‚Ñ€Ð°Ñ� Ð¸ Ð½Ð°Ð´ÐµÐ¶Ð½Ð°Ñ�.
 
-Ð”Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð° Ð¿Ð»Ð°Ñ‚ÐµÐ¶Ð½Ð°Ñ� Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ð° [a https://payeer.com/04806766](Payeer), Ð·Ð°Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¸Ñ€ÑƒÐµÑ‚Ðµ Ñ�Ð²Ð¾Ð¹ ÐºÐ¾ÑˆÐµÐ»ÐµÐº Ð² Ñ�Ñ‚Ð¾Ð¹ Ð¿Ð»Ð°Ñ‚ÐµÐ¶Ð½Ð¾Ð¹ Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ðµ.
+Ð”Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð° Ð¿Ð»Ð°Ñ‚ÐµÐ¶Ð½Ð°Ñ� Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ð° [Payeer](https://payeer.com/04806766), Ð·Ð°Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¸Ñ€ÑƒÐµÑ‚Ðµ Ñ�Ð²Ð¾Ð¹ ÐºÐ¾ÑˆÐµÐ»ÐµÐº Ð² Ñ�Ñ‚Ð¾Ð¹ Ð¿Ð»Ð°Ñ‚ÐµÐ¶Ð½Ð¾Ð¹ Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ðµ.

From f23051dbe809e9c7168a00f45008f789e6541e4d Mon Sep 17 00:00:00 2001
From: easy-phpc <easy-phpc@mail.ru>
Date: Fri, 7 Jul 2017 17:45:20 +0100
Subject: [PATCH 06/22] addation manual file

---
 docs/phpc.chm | Bin 0 -> 385204 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 docs/phpc.chm

diff --git a/docs/phpc.chm b/docs/phpc.chm
new file mode 100644
index 0000000000000000000000000000000000000000..d82884447cf286cf4e13a1e32aec179ab66caccf
GIT binary patch

From 463aa71bbca5bfccfd705f6d6cde798c9e4dfb59 Mon Sep 17 00:00:00 2001
From: Serge Igitov <easy-phpc@mail.ru>
Date: Fri, 14 Jul 2017 17:43:52 +0100
Subject: [PATCH 07/22] added .gitignore file

---
 .gitignore | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 .gitignore

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..ebae789
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+phpc/config.php

From 4d36734c2d5a002140c31e8b42409cce29022f11 Mon Sep 17 00:00:00 2001
From: Serge Igitov <easy-phpc@mail.ru>
Date: Fri, 14 Jul 2017 18:02:59 +0100
Subject: [PATCH 08/22] added 404 error page

---
 .htaccess | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/.htaccess b/.htaccess
index d335680..ac3e3cd 100644
--- a/.htaccess
+++ b/.htaccess
@@ -12,3 +12,6 @@ RewriteRule ^member$ /member/ [L,R]
 RewriteRule ^([^.]*[^./])?$ /phpc/index.php [L]
 
 </IfModule>
+
+ErrorDocument 404 /404
+
\ No newline at end of file

From 37147fa8a7859a24e2d81cc4f61879709bdf7813 Mon Sep 17 00:00:00 2001
From: Serge Igitov <easy-phpc@mail.ru>
Date: Wed, 19 Jul 2017 19:16:55 +0100
Subject: [PATCH 09/22] projects

projects
---
 README.md | 25 +++++++++++++++++++++++--
 1 file changed, 23 insertions(+), 2 deletions(-)

diff --git a/README.md b/README.md
index 35e025b..2d1a402 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,27 @@
-### PHPC
-PHP Compiler CMF - Content Management Framework.
+# PHP Compiler CMF - Content Management Framework.
 
 Ð¡Ð¸Ñ�Ñ‚ÐµÐ¼Ð° Ð´Ð»Ñ� Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ Ñ�Ð°Ð¹Ñ‚Ð¾Ð² Ð½Ð° PHP âˆ’ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð°Ñ�, ÑƒÐ´Ð¾Ð±Ð½Ð°Ñ�, Ð±Ñ‹Ñ�Ñ‚Ñ€Ð°Ñ� Ð¸ Ð½Ð°Ð´ÐµÐ¶Ð½Ð°Ñ�.
 
 Ð”Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð° Ð¿Ð»Ð°Ñ‚ÐµÐ¶Ð½Ð°Ñ� Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ð° [Payeer](https://payeer.com/04806766), Ð·Ð°Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¸Ñ€ÑƒÐµÑ‚Ðµ Ñ�Ð²Ð¾Ð¹ ÐºÐ¾ÑˆÐµÐ»ÐµÐº Ð² Ñ�Ñ‚Ð¾Ð¹ Ð¿Ð»Ð°Ñ‚ÐµÐ¶Ð½Ð¾Ð¹ Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ðµ.
+
+## ÐŸÑ€Ð¾ÐµÐºÑ‚Ñ‹
+
+[Ð‘Ð°Ð»ÐµÑ€Ñ�](http://balers.ru/)
+
+[ÐžÐžÐž "Ð¢Ð•Ð Ð Ð� ÐœÐ•Ð”"](http://www.terramed.net/)
+
+[ÐžÐ·Ð´Ð¾Ñ€Ð¾Ð²Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ð¹ Ñ†ÐµÐ½Ñ‚Ñ€ Ð�ÐµÑƒÐ¼Ñ‹Ð²Ð°ÐºÐ¸Ð½](http://neumivakin.ru/)
+
+[Ð�Ð²Ñ‚Ð¾Ñ�ÐµÑ€Ð²Ð¸Ñ� ÐšÐ¸Ñ€Ð¾Ð²](http://autofresh43.ru/)
+
+[Ð—Ð°Ð¿Ñ‡Ð°Ñ�Ñ‚Ð¸ Ð´Ð»Ñ� Ñ�Ð¿ÐµÑ†Ñ‚ÐµÑ…Ð½Ð¸ÐºÐ¸, Ð³Ñ€ÐµÐ¹Ð´ÐµÑ€Ð¾Ð², Ð´Ð¸Ñ�ÐºÐ¸ Ñ‰ÐµÑ‚Ð¾Ñ‡Ð½Ñ‹Ðµ Ð² Ð½Ð°Ð»Ð¸Ñ‡Ð¸Ð¸](http://2104545.ru/)
+
+[ÐŸÐ¸Ñ‚Ð¾Ð¼Ð½Ð¸Ðº ANDVOL - Ð²ÐµÐ»ÑŒÑˆ-ÐºÐ¾Ñ€Ð³Ð¸ Ð¿ÐµÐ¼Ð±Ñ€Ð¾Ðº, Ð²Ñ�Ð·ÐºÐ¸, Ñ‰ÐµÐ½ÐºÐ¸](http://andvol.ru/)
+
+[Ð‘ÐµÐ»Ð¾Ñ…Ð¾Ð»ÑƒÐ½Ð¸Ñ†ÐºÐ¸Ð¹ ÐºÑ€Ð°ÐµÐ²ÐµÐ´Ñ‡ÐµÑ�ÐºÐ¸Ð¹ Ð¼ÑƒÐ·ÐµÐ¹](http://bhmuseum.ru/)
+
+[Ð¡Ñ‚Ñ€Ð¾Ð¸Ñ‚ÐµÐ»ÑŒÑ�Ñ‚Ð²Ð¾ Ð·Ð°Ð³Ð¾Ñ€Ð¾Ð´Ð½Ñ‹Ñ… Ð´Ð¾Ð¼Ð¾Ð² Ð¿Ð¾Ð´ ÐºÐ»ÑŽÑ‡ Ð² ÐŸÐµÑ€Ð¼Ð¸ Ð¸ ÐŸÐµÑ€Ð¼Ñ�ÐºÐ¾Ð¼ ÐºÑ€Ð°Ðµ](http://konkord-perm.ru/)
+
+[Ð’Ð°Ð»ÐµÐ½Ñ‡ÑƒÐº ÐžÐ»ÐµÐ³ Ð”Ð¾Ñ€Ð¸Ð°Ð½Ð¾Ð²Ð¸Ñ‡, Ð¾Ñ„Ð¸Ñ†Ð¸Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð°Ð¹Ñ‚ Ð´ÐµÐ¿ÑƒÑ‚Ð°Ñ‚Ð° Ð“Ð¾Ñ�ÑƒÐ´Ð°Ñ€Ñ�Ñ‚Ð²ÐµÐ½Ð½Ð¾Ð¹ Ð”ÑƒÐ¼Ñ‹ Ð Ð¤](http://olegvalenchuk.ru/)
+
+[Â«Ð•Ð’Ð Ð�Ð—Ð˜Ð¯ Ð¡Ð˜Ð�Ð•ÐœÐ� ÐŸÐ ÐžÐ”Ð�ÐšÐ¨Ð�Â»](http://eurc.ru/)

From 29318484cae8a4876bb6d0df0decc49b53f29f8a Mon Sep 17 00:00:00 2001
From: Serge Igitov <easy-phpc@mail.ru>
Date: Wed, 19 Jul 2017 20:11:07 +0100
Subject: [PATCH 10/22] update projects

update projects
---
 README.md | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/README.md b/README.md
index 2d1a402..80322ee 100644
--- a/README.md
+++ b/README.md
@@ -6,6 +6,8 @@
 
 ## ÐŸÑ€Ð¾ÐµÐºÑ‚Ñ‹
 
+[Ð‘Ñ€Ñ�Ð½Ñ�ÐºÐ¸Ð¹ Ð³Ð¾Ñ�ÑƒÐ´Ð°Ñ€Ñ�Ñ‚Ð²ÐµÐ½Ð½Ñ‹Ð¹ Ñ‚ÐµÑ…Ð½Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¹ ÑƒÐ½Ð¸Ð²ÐµÑ€Ñ�Ð¸Ñ‚ÐµÑ‚](http://www.tu-bryansk.ru/)
+
 [Ð‘Ð°Ð»ÐµÑ€Ñ�](http://balers.ru/)
 
 [ÐžÐžÐž "Ð¢Ð•Ð Ð Ð� ÐœÐ•Ð”"](http://www.terramed.net/)
@@ -25,3 +27,31 @@
 [Ð’Ð°Ð»ÐµÐ½Ñ‡ÑƒÐº ÐžÐ»ÐµÐ³ Ð”Ð¾Ñ€Ð¸Ð°Ð½Ð¾Ð²Ð¸Ñ‡, Ð¾Ñ„Ð¸Ñ†Ð¸Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð°Ð¹Ñ‚ Ð´ÐµÐ¿ÑƒÑ‚Ð°Ñ‚Ð° Ð“Ð¾Ñ�ÑƒÐ´Ð°Ñ€Ñ�Ñ‚Ð²ÐµÐ½Ð½Ð¾Ð¹ Ð”ÑƒÐ¼Ñ‹ Ð Ð¤](http://olegvalenchuk.ru/)
 
 [Â«Ð•Ð’Ð Ð�Ð—Ð˜Ð¯ Ð¡Ð˜Ð�Ð•ÐœÐ� ÐŸÐ ÐžÐ”Ð�ÐšÐ¨Ð�Â»](http://eurc.ru/)
+
+[Ð¡Ñ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ñ‹ Ð¸ Ð½Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ð²Ñ‹ Ð Ð¾Ñ�Ñ�Ð¸Ð¸](http://iprosoft.ru/)
+
+[Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¾Ð½Ð½Ð¾-ÐºÐ¾Ð½Ñ�Ð°Ð»Ñ‚Ð¸Ð½Ð³Ð¾Ð²Ð¾Ðµ Ð°Ð³ÐµÐ½Ñ‚Ñ�Ñ‚Ð²Ð¾ Ð¡Ð°Ð¼Ð°Ñ€Ñ�ÐºÐ¾Ð¹ Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ð¸](http://ikaso63.ru/)
+
+[Ð¡Ð¿Ð¸Ñ‡ÐµÑ‡Ð½Ð°Ñ� Ñ„Ð°Ð±Ñ€Ð¸ÐºÐ° ÐžÐžÐž "Ð¤ÐµÐ½Ð¸ÐºÑ�"](http://feniksmatch.ru/)
+
+[1Ð¡ Ð�Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ð·Ð¸Ñ†Ð¸Ñ�, Ð˜Ð¢Ð¡, Ð˜Ð¢ Ð¾Ð±Ñ�Ð»ÑƒÐ¶Ð¸Ð²Ð°Ð½Ð¸Ðµ | Ð¤Ð¸Ñ€Ð¼Ð° Ð�Ð’Ð¡](http://abc-co.ru/)
+
+[Ð”Ð¸Ð·Ð°Ð¹Ð½-Ñ�Ñ‚ÑƒÐ´Ð¸Ñ� Ð•Ð»ÐµÐ½Ñ‹ Ð¨ÑƒÑ‚Ð¾Ð²Ð¾Ð¹, Ð³Ñ€Ð°Ñ„Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¹ Ð´Ð¸Ð·Ð°Ð¹Ð½ Ð² ÐœÐ¸Ð½Ñ�ÐºÐµ, Ð‘ÐµÐ»Ð°Ñ€ÑƒÑ�ÑŒ](http://www.e-shutova.by/)
+
+[ÐœÐµÐ´Ð¸Ñ†Ð¸Ð½Ñ�ÐºÐ¸Ð¹ Ð¿Ð¾Ñ€Ñ‚Ð°Ð» medmir.by â€” ÐºÐ¾Ð½Ñ�ÑƒÐ»ÑŒÑ‚Ð°Ñ†Ð¸Ð¸ Ð²Ñ€Ð°Ñ‡ÐµÐ¹, Ñ�Ð¿Ñ€Ð°Ð²Ð¾Ñ‡Ð½Ð¸Ðº Ð·Ð°Ð±Ð¾Ð»ÐµÐ²Ð°Ð½Ð¸Ð¹, Ð¿Ð¾Ð¸Ñ�Ðº Ð»ÐµÐºÐ°Ñ€Ñ�Ñ‚Ð² Ð² Ð°Ð¿Ñ‚ÐµÐºÐ°Ñ…, ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð¼ÐµÐ´Ð¸Ñ†Ð¸Ð½Ñ�ÐºÐ¸Ñ… ÑƒÑ‡Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ð¹](http://medmir.by/)
+
+[ÐžÑ„Ð¸Ñ†Ð¸Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð°Ð¹Ñ‚ Ð¿Ð¸Ñ‚Ð¾Ð¼Ð½Ð¸ÐºÐ° Â«LimeranceÂ» maltese](http://www.limerancemaltese.ru/)
+
+[Ð¤Ð¸Ñ€Ð¼Ð° "Ð¤Ð¾Ñ€ÑƒÐ¼" - Ñ�ÐµÐ¼ÐµÐ¹Ð½Ñ‹Ð¹ Ð¾Ñ‚Ð´Ñ‹Ñ…, Ð¾Ñ€Ð³Ð°Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ� Ð¿Ñ€Ð°Ð´Ð½Ð¸ÐºÐ¾Ð², Ð¿ÑƒÑ‚ÐµÑˆÐµÑ�Ñ‚Ð²Ð¸Ñ� Ð¿Ð¾ Ð Ð¾Ñ�Ñ�Ð¸Ð¸](http://vardane.ru/)
+
+[Ð Ð°Ð±Ð¾Ñ‚Ð° Ð½Ð° Ñ„Ð¾Ñ‚Ð¾Ñ�Ñ‚Ð¾ÐºÐ°Ñ…](http://stockdoro.ru/)
+
+[ÐžÑ„Ð¸Ñ†Ð¸Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð°Ð¹Ñ‚ ÐšÐŸ Ð’Ð¾Ð´Ð¾ÐºÐ°Ð½Ð°Ð» Ð³. Ð—Ð°Ð¿Ð¾Ñ€Ð¾Ð¶ÑŒÐµ, Ð£ÐºÑ€Ð°Ð¸Ð½Ð°: Ð“Ð»Ð°Ð²Ð½Ð°Ñ� Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ð°](http://vodokanal.zp.ua/)
+
+[SMK](http://smk2002.ru/)
+
+[Elite-Studio.biz - Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ° Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ðµ Ñ�Ð°Ð¹Ñ‚Ð¾Ð² Ð² ÐœÐ¸Ð½Ñ�ÐºÐµ, ÐºÐ°Ñ‡ÐµÑ�Ñ‚Ð²ÐµÐ½Ð½Ñ‹Ð¹ Ð²ÐµÐ± Ð´Ð¸Ð·Ð°Ð¹Ð½, Ð´Ð¸Ð·Ð°Ð¹Ð½ Ñ�Ð°Ð¹Ñ‚Ð¾Ð², Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ðµ Ñ„Ð¸Ñ€Ð¼ÐµÐ½Ð½Ð¾Ð³Ð¾ Ñ�Ñ‚Ð¸Ð»Ñ�.](http://www.elite-studio.biz/)
+
+[ÐžÐžÐž Â«Ð�Ð³Ñ€Ð¾ÐœÐ¸Ñ€Â»](http://agromir43.ru/)
+
+[Ð˜Ð— ÐšÐžÐ ÐžÐ›Ð•Ð’Ð¡Ð¢Ð’Ð� ÐœÐ�Ð Ð“Ð�Ð Ð˜Ð¢Ð«](http://sammy-dog.ru/)

From 04a34abb7ed5de9b0da7814639d45ac02f0dc66e Mon Sep 17 00:00:00 2001
From: Serge Igitov <easy-phpc@mail.ru>
Date: Wed, 19 Jul 2017 20:58:58 +0100
Subject: [PATCH 11/22] update readme and projects

update readme and projects
---
 README.md | 60 +++++++++++++++++++++++++++++++------------------------
 1 file changed, 34 insertions(+), 26 deletions(-)

diff --git a/README.md b/README.md
index 80322ee..ec90598 100644
--- a/README.md
+++ b/README.md
@@ -2,56 +2,64 @@
 
 Ð¡Ð¸Ñ�Ñ‚ÐµÐ¼Ð° Ð´Ð»Ñ� Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ Ñ�Ð°Ð¹Ñ‚Ð¾Ð² Ð½Ð° PHP âˆ’ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð°Ñ�, ÑƒÐ´Ð¾Ð±Ð½Ð°Ñ�, Ð±Ñ‹Ñ�Ñ‚Ñ€Ð°Ñ� Ð¸ Ð½Ð°Ð´ÐµÐ¶Ð½Ð°Ñ�.
 
-Ð”Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð° Ð¿Ð»Ð°Ñ‚ÐµÐ¶Ð½Ð°Ñ� Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ð° [Payeer](https://payeer.com/04806766), Ð·Ð°Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¸Ñ€ÑƒÐµÑ‚Ðµ Ñ�Ð²Ð¾Ð¹ ÐºÐ¾ÑˆÐµÐ»ÐµÐº Ð² Ñ�Ñ‚Ð¾Ð¹ Ð¿Ð»Ð°Ñ‚ÐµÐ¶Ð½Ð¾Ð¹ Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ðµ.
+Ð”Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð° Ð¿Ð»Ð°Ñ‚ÐµÐ¶Ð½Ð°Ñ� Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ð° [Payeer](https://payeer.com/04806766){:target="_blank"}, Ð·Ð°Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¸Ñ€ÑƒÐµÑ‚Ðµ Ñ�Ð²Ð¾Ð¹ ÐºÐ¾ÑˆÐµÐ»ÐµÐº Ð² Ñ�Ñ‚Ð¾Ð¹ Ð¿Ð»Ð°Ñ‚ÐµÐ¶Ð½Ð¾Ð¹ Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ðµ. Ð”Ð¾Ð±Ñ€Ð¾Ð²Ð¾Ð»ÑŒÐ½Ð½Ð¾Ðµ Ð¿Ð¾Ð¶ÐµÑ€Ñ‚Ð²Ð¾Ð²Ð°Ð½Ð¸Ðµ Ð½Ð° Ñ�Ñ‚Ð¾Ñ‚ ÐºÐ°ÑˆÐµÐ»ÐµÐº P68608511, Ð·Ð°Ñ€Ð°Ð½ÐµÐµ Ð±Ð»Ð°Ð³Ð¾Ð´Ð°Ñ€ÑŽ Ð’Ð°Ñ�.
 
 ## ÐŸÑ€Ð¾ÐµÐºÑ‚Ñ‹
 
-[Ð‘Ñ€Ñ�Ð½Ñ�ÐºÐ¸Ð¹ Ð³Ð¾Ñ�ÑƒÐ´Ð°Ñ€Ñ�Ñ‚Ð²ÐµÐ½Ð½Ñ‹Ð¹ Ñ‚ÐµÑ…Ð½Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¹ ÑƒÐ½Ð¸Ð²ÐµÑ€Ñ�Ð¸Ñ‚ÐµÑ‚](http://www.tu-bryansk.ru/)
+[Ð‘Ñ€Ñ�Ð½Ñ�ÐºÐ¸Ð¹ Ð³Ð¾Ñ�ÑƒÐ´Ð°Ñ€Ñ�Ñ‚Ð²ÐµÐ½Ð½Ñ‹Ð¹ Ñ‚ÐµÑ…Ð½Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¹ ÑƒÐ½Ð¸Ð²ÐµÑ€Ñ�Ð¸Ñ‚ÐµÑ‚](http://www.tu-bryansk.ru/){:target="_blank"}
 
-[Ð‘Ð°Ð»ÐµÑ€Ñ�](http://balers.ru/)
+[Ð‘Ð°Ð»ÐµÑ€Ñ�](http://balers.ru/){:target="_blank"}
 
-[ÐžÐžÐž "Ð¢Ð•Ð Ð Ð� ÐœÐ•Ð”"](http://www.terramed.net/)
+[ÐžÐžÐž "Ð¢Ð•Ð Ð Ð� ÐœÐ•Ð”"](http://www.terramed.net/){:target="_blank"}
 
-[ÐžÐ·Ð´Ð¾Ñ€Ð¾Ð²Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ð¹ Ñ†ÐµÐ½Ñ‚Ñ€ Ð�ÐµÑƒÐ¼Ñ‹Ð²Ð°ÐºÐ¸Ð½](http://neumivakin.ru/)
+[ÐžÐ·Ð´Ð¾Ñ€Ð¾Ð²Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ð¹ Ñ†ÐµÐ½Ñ‚Ñ€ Ð�ÐµÑƒÐ¼Ñ‹Ð²Ð°ÐºÐ¸Ð½](http://neumivakin.ru/){:target="_blank"}
 
-[Ð�Ð²Ñ‚Ð¾Ñ�ÐµÑ€Ð²Ð¸Ñ� ÐšÐ¸Ñ€Ð¾Ð²](http://autofresh43.ru/)
+[Ð�Ð²Ñ‚Ð¾Ñ�ÐµÑ€Ð²Ð¸Ñ� ÐšÐ¸Ñ€Ð¾Ð²](http://autofresh43.ru/){:target="_blank"}
 
-[Ð—Ð°Ð¿Ñ‡Ð°Ñ�Ñ‚Ð¸ Ð´Ð»Ñ� Ñ�Ð¿ÐµÑ†Ñ‚ÐµÑ…Ð½Ð¸ÐºÐ¸, Ð³Ñ€ÐµÐ¹Ð´ÐµÑ€Ð¾Ð², Ð´Ð¸Ñ�ÐºÐ¸ Ñ‰ÐµÑ‚Ð¾Ñ‡Ð½Ñ‹Ðµ Ð² Ð½Ð°Ð»Ð¸Ñ‡Ð¸Ð¸](http://2104545.ru/)
+[Ð—Ð°Ð¿Ñ‡Ð°Ñ�Ñ‚Ð¸ Ð´Ð»Ñ� Ñ�Ð¿ÐµÑ†Ñ‚ÐµÑ…Ð½Ð¸ÐºÐ¸, Ð³Ñ€ÐµÐ¹Ð´ÐµÑ€Ð¾Ð², Ð´Ð¸Ñ�ÐºÐ¸ Ñ‰ÐµÑ‚Ð¾Ñ‡Ð½Ñ‹Ðµ Ð² Ð½Ð°Ð»Ð¸Ñ‡Ð¸Ð¸](http://2104545.ru/){:target="_blank"}
 
-[ÐŸÐ¸Ñ‚Ð¾Ð¼Ð½Ð¸Ðº ANDVOL - Ð²ÐµÐ»ÑŒÑˆ-ÐºÐ¾Ñ€Ð³Ð¸ Ð¿ÐµÐ¼Ð±Ñ€Ð¾Ðº, Ð²Ñ�Ð·ÐºÐ¸, Ñ‰ÐµÐ½ÐºÐ¸](http://andvol.ru/)
+[ÐŸÐ¸Ñ‚Ð¾Ð¼Ð½Ð¸Ðº ANDVOL - Ð²ÐµÐ»ÑŒÑˆ-ÐºÐ¾Ñ€Ð³Ð¸ Ð¿ÐµÐ¼Ð±Ñ€Ð¾Ðº, Ð²Ñ�Ð·ÐºÐ¸, Ñ‰ÐµÐ½ÐºÐ¸](http://andvol.ru/){:target="_blank"}
 
-[Ð‘ÐµÐ»Ð¾Ñ…Ð¾Ð»ÑƒÐ½Ð¸Ñ†ÐºÐ¸Ð¹ ÐºÑ€Ð°ÐµÐ²ÐµÐ´Ñ‡ÐµÑ�ÐºÐ¸Ð¹ Ð¼ÑƒÐ·ÐµÐ¹](http://bhmuseum.ru/)
+[Ð‘ÐµÐ»Ð¾Ñ…Ð¾Ð»ÑƒÐ½Ð¸Ñ†ÐºÐ¸Ð¹ ÐºÑ€Ð°ÐµÐ²ÐµÐ´Ñ‡ÐµÑ�ÐºÐ¸Ð¹ Ð¼ÑƒÐ·ÐµÐ¹](http://bhmuseum.ru/){:target="_blank"}
 
-[Ð¡Ñ‚Ñ€Ð¾Ð¸Ñ‚ÐµÐ»ÑŒÑ�Ñ‚Ð²Ð¾ Ð·Ð°Ð³Ð¾Ñ€Ð¾Ð´Ð½Ñ‹Ñ… Ð´Ð¾Ð¼Ð¾Ð² Ð¿Ð¾Ð´ ÐºÐ»ÑŽÑ‡ Ð² ÐŸÐµÑ€Ð¼Ð¸ Ð¸ ÐŸÐµÑ€Ð¼Ñ�ÐºÐ¾Ð¼ ÐºÑ€Ð°Ðµ](http://konkord-perm.ru/)
+[Ð¡Ñ‚Ñ€Ð¾Ð¸Ñ‚ÐµÐ»ÑŒÑ�Ñ‚Ð²Ð¾ Ð·Ð°Ð³Ð¾Ñ€Ð¾Ð´Ð½Ñ‹Ñ… Ð´Ð¾Ð¼Ð¾Ð² Ð¿Ð¾Ð´ ÐºÐ»ÑŽÑ‡ Ð² ÐŸÐµÑ€Ð¼Ð¸ Ð¸ ÐŸÐµÑ€Ð¼Ñ�ÐºÐ¾Ð¼ ÐºÑ€Ð°Ðµ](http://konkord-perm.ru/){:target="_blank"}
 
-[Ð’Ð°Ð»ÐµÐ½Ñ‡ÑƒÐº ÐžÐ»ÐµÐ³ Ð”Ð¾Ñ€Ð¸Ð°Ð½Ð¾Ð²Ð¸Ñ‡, Ð¾Ñ„Ð¸Ñ†Ð¸Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð°Ð¹Ñ‚ Ð´ÐµÐ¿ÑƒÑ‚Ð°Ñ‚Ð° Ð“Ð¾Ñ�ÑƒÐ´Ð°Ñ€Ñ�Ñ‚Ð²ÐµÐ½Ð½Ð¾Ð¹ Ð”ÑƒÐ¼Ñ‹ Ð Ð¤](http://olegvalenchuk.ru/)
+[Ð’Ð°Ð»ÐµÐ½Ñ‡ÑƒÐº ÐžÐ»ÐµÐ³ Ð”Ð¾Ñ€Ð¸Ð°Ð½Ð¾Ð²Ð¸Ñ‡, Ð¾Ñ„Ð¸Ñ†Ð¸Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð°Ð¹Ñ‚ Ð´ÐµÐ¿ÑƒÑ‚Ð°Ñ‚Ð° Ð“Ð¾Ñ�ÑƒÐ´Ð°Ñ€Ñ�Ñ‚Ð²ÐµÐ½Ð½Ð¾Ð¹ Ð”ÑƒÐ¼Ñ‹ Ð Ð¤](http://olegvalenchuk.ru/){:target="_blank"}
 
-[Â«Ð•Ð’Ð Ð�Ð—Ð˜Ð¯ Ð¡Ð˜Ð�Ð•ÐœÐ� ÐŸÐ ÐžÐ”Ð�ÐšÐ¨Ð�Â»](http://eurc.ru/)
+[Â«Ð•Ð’Ð Ð�Ð—Ð˜Ð¯ Ð¡Ð˜Ð�Ð•ÐœÐ� ÐŸÐ ÐžÐ”Ð�ÐšÐ¨Ð�Â»](http://eurc.ru/){:target="_blank"}
 
-[Ð¡Ñ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ñ‹ Ð¸ Ð½Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ð²Ñ‹ Ð Ð¾Ñ�Ñ�Ð¸Ð¸](http://iprosoft.ru/)
+[Ð¡Ñ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ñ‹ Ð¸ Ð½Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ð²Ñ‹ Ð Ð¾Ñ�Ñ�Ð¸Ð¸](http://iprosoft.ru/){:target="_blank"}
 
-[Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¾Ð½Ð½Ð¾-ÐºÐ¾Ð½Ñ�Ð°Ð»Ñ‚Ð¸Ð½Ð³Ð¾Ð²Ð¾Ðµ Ð°Ð³ÐµÐ½Ñ‚Ñ�Ñ‚Ð²Ð¾ Ð¡Ð°Ð¼Ð°Ñ€Ñ�ÐºÐ¾Ð¹ Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ð¸](http://ikaso63.ru/)
+[Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¾Ð½Ð½Ð¾-ÐºÐ¾Ð½Ñ�Ð°Ð»Ñ‚Ð¸Ð½Ð³Ð¾Ð²Ð¾Ðµ Ð°Ð³ÐµÐ½Ñ‚Ñ�Ñ‚Ð²Ð¾ Ð¡Ð°Ð¼Ð°Ñ€Ñ�ÐºÐ¾Ð¹ Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ð¸](http://ikaso63.ru/){:target="_blank"}
 
-[Ð¡Ð¿Ð¸Ñ‡ÐµÑ‡Ð½Ð°Ñ� Ñ„Ð°Ð±Ñ€Ð¸ÐºÐ° ÐžÐžÐž "Ð¤ÐµÐ½Ð¸ÐºÑ�"](http://feniksmatch.ru/)
+[Ð¡Ð¿Ð¸Ñ‡ÐµÑ‡Ð½Ð°Ñ� Ñ„Ð°Ð±Ñ€Ð¸ÐºÐ° ÐžÐžÐž "Ð¤ÐµÐ½Ð¸ÐºÑ�"](http://feniksmatch.ru/){:target="_blank"}
 
-[1Ð¡ Ð�Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ð·Ð¸Ñ†Ð¸Ñ�, Ð˜Ð¢Ð¡, Ð˜Ð¢ Ð¾Ð±Ñ�Ð»ÑƒÐ¶Ð¸Ð²Ð°Ð½Ð¸Ðµ | Ð¤Ð¸Ñ€Ð¼Ð° Ð�Ð’Ð¡](http://abc-co.ru/)
+[1Ð¡ Ð�Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ð·Ð¸Ñ†Ð¸Ñ�, Ð˜Ð¢Ð¡, Ð˜Ð¢ Ð¾Ð±Ñ�Ð»ÑƒÐ¶Ð¸Ð²Ð°Ð½Ð¸Ðµ | Ð¤Ð¸Ñ€Ð¼Ð° Ð�Ð’Ð¡](http://abc-co.ru/){:target="_blank"}
 
-[Ð”Ð¸Ð·Ð°Ð¹Ð½-Ñ�Ñ‚ÑƒÐ´Ð¸Ñ� Ð•Ð»ÐµÐ½Ñ‹ Ð¨ÑƒÑ‚Ð¾Ð²Ð¾Ð¹, Ð³Ñ€Ð°Ñ„Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¹ Ð´Ð¸Ð·Ð°Ð¹Ð½ Ð² ÐœÐ¸Ð½Ñ�ÐºÐµ, Ð‘ÐµÐ»Ð°Ñ€ÑƒÑ�ÑŒ](http://www.e-shutova.by/)
+[Ð”Ð¸Ð·Ð°Ð¹Ð½-Ñ�Ñ‚ÑƒÐ´Ð¸Ñ� Ð•Ð»ÐµÐ½Ñ‹ Ð¨ÑƒÑ‚Ð¾Ð²Ð¾Ð¹, Ð³Ñ€Ð°Ñ„Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¹ Ð´Ð¸Ð·Ð°Ð¹Ð½ Ð² ÐœÐ¸Ð½Ñ�ÐºÐµ, Ð‘ÐµÐ»Ð°Ñ€ÑƒÑ�ÑŒ](http://www.e-shutova.by/){:target="_blank"} [2](http://www.e-shutova.com/){:target="_blank"}
 
-[ÐœÐµÐ´Ð¸Ñ†Ð¸Ð½Ñ�ÐºÐ¸Ð¹ Ð¿Ð¾Ñ€Ñ‚Ð°Ð» medmir.by â€” ÐºÐ¾Ð½Ñ�ÑƒÐ»ÑŒÑ‚Ð°Ñ†Ð¸Ð¸ Ð²Ñ€Ð°Ñ‡ÐµÐ¹, Ñ�Ð¿Ñ€Ð°Ð²Ð¾Ñ‡Ð½Ð¸Ðº Ð·Ð°Ð±Ð¾Ð»ÐµÐ²Ð°Ð½Ð¸Ð¹, Ð¿Ð¾Ð¸Ñ�Ðº Ð»ÐµÐºÐ°Ñ€Ñ�Ñ‚Ð² Ð² Ð°Ð¿Ñ‚ÐµÐºÐ°Ñ…, ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð¼ÐµÐ´Ð¸Ñ†Ð¸Ð½Ñ�ÐºÐ¸Ñ… ÑƒÑ‡Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ð¹](http://medmir.by/)
+[ÐœÐµÐ´Ð¸Ñ†Ð¸Ð½Ñ�ÐºÐ¸Ð¹ Ð¿Ð¾Ñ€Ñ‚Ð°Ð» medmir.by â€” ÐºÐ¾Ð½Ñ�ÑƒÐ»ÑŒÑ‚Ð°Ñ†Ð¸Ð¸ Ð²Ñ€Ð°Ñ‡ÐµÐ¹, Ñ�Ð¿Ñ€Ð°Ð²Ð¾Ñ‡Ð½Ð¸Ðº Ð·Ð°Ð±Ð¾Ð»ÐµÐ²Ð°Ð½Ð¸Ð¹, Ð¿Ð¾Ð¸Ñ�Ðº Ð»ÐµÐºÐ°Ñ€Ñ�Ñ‚Ð² Ð² Ð°Ð¿Ñ‚ÐµÐºÐ°Ñ…, ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð¼ÐµÐ´Ð¸Ñ†Ð¸Ð½Ñ�ÐºÐ¸Ñ… ÑƒÑ‡Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ð¹](http://medmir.by/){:target="_blank"}
 
-[ÐžÑ„Ð¸Ñ†Ð¸Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð°Ð¹Ñ‚ Ð¿Ð¸Ñ‚Ð¾Ð¼Ð½Ð¸ÐºÐ° Â«LimeranceÂ» maltese](http://www.limerancemaltese.ru/)
+[ÐžÑ„Ð¸Ñ†Ð¸Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð°Ð¹Ñ‚ Ð¿Ð¸Ñ‚Ð¾Ð¼Ð½Ð¸ÐºÐ° Â«LimeranceÂ» maltese](http://www.limerancemaltese.ru/){:target="_blank"}
 
-[Ð¤Ð¸Ñ€Ð¼Ð° "Ð¤Ð¾Ñ€ÑƒÐ¼" - Ñ�ÐµÐ¼ÐµÐ¹Ð½Ñ‹Ð¹ Ð¾Ñ‚Ð´Ñ‹Ñ…, Ð¾Ñ€Ð³Ð°Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ� Ð¿Ñ€Ð°Ð´Ð½Ð¸ÐºÐ¾Ð², Ð¿ÑƒÑ‚ÐµÑˆÐµÑ�Ñ‚Ð²Ð¸Ñ� Ð¿Ð¾ Ð Ð¾Ñ�Ñ�Ð¸Ð¸](http://vardane.ru/)
+[Ð¤Ð¸Ñ€Ð¼Ð° "Ð¤Ð¾Ñ€ÑƒÐ¼" - Ñ�ÐµÐ¼ÐµÐ¹Ð½Ñ‹Ð¹ Ð¾Ñ‚Ð´Ñ‹Ñ…, Ð¾Ñ€Ð³Ð°Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ� Ð¿Ñ€Ð°Ð´Ð½Ð¸ÐºÐ¾Ð², Ð¿ÑƒÑ‚ÐµÑˆÐµÑ�Ñ‚Ð²Ð¸Ñ� Ð¿Ð¾ Ð Ð¾Ñ�Ñ�Ð¸Ð¸](http://vardane.ru/){:target="_blank"}
 
-[Ð Ð°Ð±Ð¾Ñ‚Ð° Ð½Ð° Ñ„Ð¾Ñ‚Ð¾Ñ�Ñ‚Ð¾ÐºÐ°Ñ…](http://stockdoro.ru/)
+[Ð Ð°Ð±Ð¾Ñ‚Ð° Ð½Ð° Ñ„Ð¾Ñ‚Ð¾Ñ�Ñ‚Ð¾ÐºÐ°Ñ…](http://stockdoro.ru/){:target="_blank"}
 
-[ÐžÑ„Ð¸Ñ†Ð¸Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð°Ð¹Ñ‚ ÐšÐŸ Ð’Ð¾Ð´Ð¾ÐºÐ°Ð½Ð°Ð» Ð³. Ð—Ð°Ð¿Ð¾Ñ€Ð¾Ð¶ÑŒÐµ, Ð£ÐºÑ€Ð°Ð¸Ð½Ð°: Ð“Ð»Ð°Ð²Ð½Ð°Ñ� Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ð°](http://vodokanal.zp.ua/)
+[ÐžÑ„Ð¸Ñ†Ð¸Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð°Ð¹Ñ‚ ÐšÐŸ Ð’Ð¾Ð´Ð¾ÐºÐ°Ð½Ð°Ð» Ð³. Ð—Ð°Ð¿Ð¾Ñ€Ð¾Ð¶ÑŒÐµ, Ð£ÐºÑ€Ð°Ð¸Ð½Ð°: Ð“Ð»Ð°Ð²Ð½Ð°Ñ� Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ð°](http://vodokanal.zp.ua/){:target="_blank"}
 
-[SMK](http://smk2002.ru/)
+[SMK](http://smk2002.ru/){:target="_blank"}
 
-[Elite-Studio.biz - Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ° Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ðµ Ñ�Ð°Ð¹Ñ‚Ð¾Ð² Ð² ÐœÐ¸Ð½Ñ�ÐºÐµ, ÐºÐ°Ñ‡ÐµÑ�Ñ‚Ð²ÐµÐ½Ð½Ñ‹Ð¹ Ð²ÐµÐ± Ð´Ð¸Ð·Ð°Ð¹Ð½, Ð´Ð¸Ð·Ð°Ð¹Ð½ Ñ�Ð°Ð¹Ñ‚Ð¾Ð², Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ðµ Ñ„Ð¸Ñ€Ð¼ÐµÐ½Ð½Ð¾Ð³Ð¾ Ñ�Ñ‚Ð¸Ð»Ñ�.](http://www.elite-studio.biz/)
+[Elite-Studio.biz - Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ° Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ðµ Ñ�Ð°Ð¹Ñ‚Ð¾Ð² Ð² ÐœÐ¸Ð½Ñ�ÐºÐµ, ÐºÐ°Ñ‡ÐµÑ�Ñ‚Ð²ÐµÐ½Ð½Ñ‹Ð¹ Ð²ÐµÐ± Ð´Ð¸Ð·Ð°Ð¹Ð½, Ð´Ð¸Ð·Ð°Ð¹Ð½ Ñ�Ð°Ð¹Ñ‚Ð¾Ð², Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ðµ Ñ„Ð¸Ñ€Ð¼ÐµÐ½Ð½Ð¾Ð³Ð¾ Ñ�Ñ‚Ð¸Ð»Ñ�.](http://www.elite-studio.biz/){:target="_blank"}
 
-[ÐžÐžÐž Â«Ð�Ð³Ñ€Ð¾ÐœÐ¸Ñ€Â»](http://agromir43.ru/)
+[ÐžÐžÐž Â«Ð�Ð³Ñ€Ð¾ÐœÐ¸Ñ€Â»](http://agromir43.ru/){:target="_blank"}
 
-[Ð˜Ð— ÐšÐžÐ ÐžÐ›Ð•Ð’Ð¡Ð¢Ð’Ð� ÐœÐ�Ð Ð“Ð�Ð Ð˜Ð¢Ð«](http://sammy-dog.ru/)
+[Ð˜Ð— ÐšÐžÐ ÐžÐ›Ð•Ð’Ð¡Ð¢Ð’Ð� ÐœÐ�Ð Ð“Ð�Ð Ð˜Ð¢Ð«](http://sammy-dog.ru/){:target="_blank"}
+
+[PM Studio - ÑˆÐºÐ¾Ð»Ð° Ñ€Ð°Ð·Ð³Ð¾Ð²Ð¾Ñ€Ð½Ð¾Ð³Ð¾ Ð°Ð½Ð³Ð»Ð¸Ð¹Ñ�ÐºÐ¾Ð³Ð¾! - PM STUDIO ÑˆÐºÐ¾Ð»Ð° Ð°Ð½Ð³Ð»Ð¸Ð¹Ñ�ÐºÐ¾Ð³Ð¾ Ñ�Ð·Ñ‹ÐºÐ°](http://english-chel.ru/){:target="_blank"}
+
+[Ð¤Ð¸Ð½Ð°Ð½Ñ�Ð¾Ð²Ð¾ Ð¿Ñ€Ð¾Ð¼Ñ‹ÑˆÐ»ÐµÐ½Ð½Ð°Ñ� Ð³Ñ€ÑƒÐ¿Ð¿Ð° "Ð�Ð›Ð¬Ð¢ÐšÐžÐœ"](http://altcom.ua/){:target="_blank"}
+
+[Ð˜Ð½Ñ‚ÐµÑ€Ð½ÐµÑ‚-Ð¼Ð°Ð³Ð°Ð·Ð¸Ð½ ÐºÐ»Ð¸Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð³Ð¾ Ð¸ Ð±Ñ‹Ñ‚Ð¾Ð²Ð¾Ð³Ð¾ Ð¾Ð±Ð¾Ñ€ÑƒÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ�](http://teploholod.by/){:target="_blank"}
+
+[ÐšÐ¾Ð¼Ð¿Ð°Ð½Ð¸Ñ� Ð Ð°Ð¼Ð¾Ðº - ÐšÐ°Ñ�Ñ�Ð¾Ð²Ñ‹Ðµ Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ñ‹, Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ð·Ð°Ñ†Ð¸Ñ�, Ñ‚Ð¾Ñ€Ð³Ð¾Ð²Ð¾Ðµ Ð¾Ð±Ð¾Ñ€ÑƒÐ´Ð¾Ð²Ð°Ð½Ð¸Ðµ, Ð¿Ñ€Ð¾Ñ‚Ð¸Ð²Ð¾ÐºÑ€Ð°Ð¶Ð½Ð¾Ðµ Ð¾Ð±Ð¾Ñ€ÑƒÐ´Ð¾Ð²Ð°Ð½Ð¸Ðµ, Ð²Ð¸Ð´ÐµÐ¾Ð½Ð°Ð±Ð»ÑŽÐ´ÐµÐ½Ð¸Ðµ](http://www.ramok.by/){:target="_blank"}

From 361d9b116527f26fb4ecd055e9c6abacc2697e6a Mon Sep 17 00:00:00 2001
From: Serge Igitov <easy-phpc@mail.ru>
Date: Wed, 19 Jul 2017 21:17:03 +0100
Subject: [PATCH 12/22] fix

fix
---
 README.md | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/README.md b/README.md
index ec90598..5addfd9 100644
--- a/README.md
+++ b/README.md
@@ -6,9 +6,9 @@
 
 ## ÐŸÑ€Ð¾ÐµÐºÑ‚Ñ‹
 
-[Ð‘Ñ€Ñ�Ð½Ñ�ÐºÐ¸Ð¹ Ð³Ð¾Ñ�ÑƒÐ´Ð°Ñ€Ñ�Ñ‚Ð²ÐµÐ½Ð½Ñ‹Ð¹ Ñ‚ÐµÑ…Ð½Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¹ ÑƒÐ½Ð¸Ð²ÐµÑ€Ñ�Ð¸Ñ‚ÐµÑ‚](http://www.tu-bryansk.ru/){:target="_blank"}
+<a href="http://www.tu-bryansk.ru/" target="_blank">Ð‘Ñ€Ñ�Ð½Ñ�ÐºÐ¸Ð¹ Ð³Ð¾Ñ�ÑƒÐ´Ð°Ñ€Ñ�Ñ‚Ð²ÐµÐ½Ð½Ñ‹Ð¹ Ñ‚ÐµÑ…Ð½Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¹ ÑƒÐ½Ð¸Ð²ÐµÑ€Ñ�Ð¸Ñ‚ÐµÑ‚</a>
 
-[Ð‘Ð°Ð»ÐµÑ€Ñ�](http://balers.ru/){:target="_blank"}
+<a href="http://balers.ru/" target="_blank">Ð‘Ð°Ð»ÐµÑ€Ñ�</a>
 
 [ÐžÐžÐž "Ð¢Ð•Ð Ð Ð� ÐœÐ•Ð”"](http://www.terramed.net/){:target="_blank"}
 

From e923e138453b2e9990ec70bd090ba25ae051448c Mon Sep 17 00:00:00 2001
From: Serge Igitov <easy-phpc@mail.ru>
Date: Wed, 19 Jul 2017 21:20:24 +0100
Subject: [PATCH 13/22] Revert "update readme and projects"

This reverts commit 04a34abb7ed5de9b0da7814639d45ac02f0dc66e.
---
 README.md | 60 ++++++++++++++++++++++++-------------------------------
 1 file changed, 26 insertions(+), 34 deletions(-)

diff --git a/README.md b/README.md
index ec90598..80322ee 100644
--- a/README.md
+++ b/README.md
@@ -2,64 +2,56 @@
 
 Ð¡Ð¸Ñ�Ñ‚ÐµÐ¼Ð° Ð´Ð»Ñ� Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ Ñ�Ð°Ð¹Ñ‚Ð¾Ð² Ð½Ð° PHP âˆ’ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð°Ñ�, ÑƒÐ´Ð¾Ð±Ð½Ð°Ñ�, Ð±Ñ‹Ñ�Ñ‚Ñ€Ð°Ñ� Ð¸ Ð½Ð°Ð´ÐµÐ¶Ð½Ð°Ñ�.
 
-Ð”Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð° Ð¿Ð»Ð°Ñ‚ÐµÐ¶Ð½Ð°Ñ� Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ð° [Payeer](https://payeer.com/04806766){:target="_blank"}, Ð·Ð°Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¸Ñ€ÑƒÐµÑ‚Ðµ Ñ�Ð²Ð¾Ð¹ ÐºÐ¾ÑˆÐµÐ»ÐµÐº Ð² Ñ�Ñ‚Ð¾Ð¹ Ð¿Ð»Ð°Ñ‚ÐµÐ¶Ð½Ð¾Ð¹ Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ðµ. Ð”Ð¾Ð±Ñ€Ð¾Ð²Ð¾Ð»ÑŒÐ½Ð½Ð¾Ðµ Ð¿Ð¾Ð¶ÐµÑ€Ñ‚Ð²Ð¾Ð²Ð°Ð½Ð¸Ðµ Ð½Ð° Ñ�Ñ‚Ð¾Ñ‚ ÐºÐ°ÑˆÐµÐ»ÐµÐº P68608511, Ð·Ð°Ñ€Ð°Ð½ÐµÐµ Ð±Ð»Ð°Ð³Ð¾Ð´Ð°Ñ€ÑŽ Ð’Ð°Ñ�.
+Ð”Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð° Ð¿Ð»Ð°Ñ‚ÐµÐ¶Ð½Ð°Ñ� Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ð° [Payeer](https://payeer.com/04806766), Ð·Ð°Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¸Ñ€ÑƒÐµÑ‚Ðµ Ñ�Ð²Ð¾Ð¹ ÐºÐ¾ÑˆÐµÐ»ÐµÐº Ð² Ñ�Ñ‚Ð¾Ð¹ Ð¿Ð»Ð°Ñ‚ÐµÐ¶Ð½Ð¾Ð¹ Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ðµ.
 
 ## ÐŸÑ€Ð¾ÐµÐºÑ‚Ñ‹
 
-[Ð‘Ñ€Ñ�Ð½Ñ�ÐºÐ¸Ð¹ Ð³Ð¾Ñ�ÑƒÐ´Ð°Ñ€Ñ�Ñ‚Ð²ÐµÐ½Ð½Ñ‹Ð¹ Ñ‚ÐµÑ…Ð½Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¹ ÑƒÐ½Ð¸Ð²ÐµÑ€Ñ�Ð¸Ñ‚ÐµÑ‚](http://www.tu-bryansk.ru/){:target="_blank"}
+[Ð‘Ñ€Ñ�Ð½Ñ�ÐºÐ¸Ð¹ Ð³Ð¾Ñ�ÑƒÐ´Ð°Ñ€Ñ�Ñ‚Ð²ÐµÐ½Ð½Ñ‹Ð¹ Ñ‚ÐµÑ…Ð½Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¹ ÑƒÐ½Ð¸Ð²ÐµÑ€Ñ�Ð¸Ñ‚ÐµÑ‚](http://www.tu-bryansk.ru/)
 
-[Ð‘Ð°Ð»ÐµÑ€Ñ�](http://balers.ru/){:target="_blank"}
+[Ð‘Ð°Ð»ÐµÑ€Ñ�](http://balers.ru/)
 
-[ÐžÐžÐž "Ð¢Ð•Ð Ð Ð� ÐœÐ•Ð”"](http://www.terramed.net/){:target="_blank"}
+[ÐžÐžÐž "Ð¢Ð•Ð Ð Ð� ÐœÐ•Ð”"](http://www.terramed.net/)
 
-[ÐžÐ·Ð´Ð¾Ñ€Ð¾Ð²Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ð¹ Ñ†ÐµÐ½Ñ‚Ñ€ Ð�ÐµÑƒÐ¼Ñ‹Ð²Ð°ÐºÐ¸Ð½](http://neumivakin.ru/){:target="_blank"}
+[ÐžÐ·Ð´Ð¾Ñ€Ð¾Ð²Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ð¹ Ñ†ÐµÐ½Ñ‚Ñ€ Ð�ÐµÑƒÐ¼Ñ‹Ð²Ð°ÐºÐ¸Ð½](http://neumivakin.ru/)
 
-[Ð�Ð²Ñ‚Ð¾Ñ�ÐµÑ€Ð²Ð¸Ñ� ÐšÐ¸Ñ€Ð¾Ð²](http://autofresh43.ru/){:target="_blank"}
+[Ð�Ð²Ñ‚Ð¾Ñ�ÐµÑ€Ð²Ð¸Ñ� ÐšÐ¸Ñ€Ð¾Ð²](http://autofresh43.ru/)
 
-[Ð—Ð°Ð¿Ñ‡Ð°Ñ�Ñ‚Ð¸ Ð´Ð»Ñ� Ñ�Ð¿ÐµÑ†Ñ‚ÐµÑ…Ð½Ð¸ÐºÐ¸, Ð³Ñ€ÐµÐ¹Ð´ÐµÑ€Ð¾Ð², Ð´Ð¸Ñ�ÐºÐ¸ Ñ‰ÐµÑ‚Ð¾Ñ‡Ð½Ñ‹Ðµ Ð² Ð½Ð°Ð»Ð¸Ñ‡Ð¸Ð¸](http://2104545.ru/){:target="_blank"}
+[Ð—Ð°Ð¿Ñ‡Ð°Ñ�Ñ‚Ð¸ Ð´Ð»Ñ� Ñ�Ð¿ÐµÑ†Ñ‚ÐµÑ…Ð½Ð¸ÐºÐ¸, Ð³Ñ€ÐµÐ¹Ð´ÐµÑ€Ð¾Ð², Ð´Ð¸Ñ�ÐºÐ¸ Ñ‰ÐµÑ‚Ð¾Ñ‡Ð½Ñ‹Ðµ Ð² Ð½Ð°Ð»Ð¸Ñ‡Ð¸Ð¸](http://2104545.ru/)
 
-[ÐŸÐ¸Ñ‚Ð¾Ð¼Ð½Ð¸Ðº ANDVOL - Ð²ÐµÐ»ÑŒÑˆ-ÐºÐ¾Ñ€Ð³Ð¸ Ð¿ÐµÐ¼Ð±Ñ€Ð¾Ðº, Ð²Ñ�Ð·ÐºÐ¸, Ñ‰ÐµÐ½ÐºÐ¸](http://andvol.ru/){:target="_blank"}
+[ÐŸÐ¸Ñ‚Ð¾Ð¼Ð½Ð¸Ðº ANDVOL - Ð²ÐµÐ»ÑŒÑˆ-ÐºÐ¾Ñ€Ð³Ð¸ Ð¿ÐµÐ¼Ð±Ñ€Ð¾Ðº, Ð²Ñ�Ð·ÐºÐ¸, Ñ‰ÐµÐ½ÐºÐ¸](http://andvol.ru/)
 
-[Ð‘ÐµÐ»Ð¾Ñ…Ð¾Ð»ÑƒÐ½Ð¸Ñ†ÐºÐ¸Ð¹ ÐºÑ€Ð°ÐµÐ²ÐµÐ´Ñ‡ÐµÑ�ÐºÐ¸Ð¹ Ð¼ÑƒÐ·ÐµÐ¹](http://bhmuseum.ru/){:target="_blank"}
+[Ð‘ÐµÐ»Ð¾Ñ…Ð¾Ð»ÑƒÐ½Ð¸Ñ†ÐºÐ¸Ð¹ ÐºÑ€Ð°ÐµÐ²ÐµÐ´Ñ‡ÐµÑ�ÐºÐ¸Ð¹ Ð¼ÑƒÐ·ÐµÐ¹](http://bhmuseum.ru/)
 
-[Ð¡Ñ‚Ñ€Ð¾Ð¸Ñ‚ÐµÐ»ÑŒÑ�Ñ‚Ð²Ð¾ Ð·Ð°Ð³Ð¾Ñ€Ð¾Ð´Ð½Ñ‹Ñ… Ð´Ð¾Ð¼Ð¾Ð² Ð¿Ð¾Ð´ ÐºÐ»ÑŽÑ‡ Ð² ÐŸÐµÑ€Ð¼Ð¸ Ð¸ ÐŸÐµÑ€Ð¼Ñ�ÐºÐ¾Ð¼ ÐºÑ€Ð°Ðµ](http://konkord-perm.ru/){:target="_blank"}
+[Ð¡Ñ‚Ñ€Ð¾Ð¸Ñ‚ÐµÐ»ÑŒÑ�Ñ‚Ð²Ð¾ Ð·Ð°Ð³Ð¾Ñ€Ð¾Ð´Ð½Ñ‹Ñ… Ð´Ð¾Ð¼Ð¾Ð² Ð¿Ð¾Ð´ ÐºÐ»ÑŽÑ‡ Ð² ÐŸÐµÑ€Ð¼Ð¸ Ð¸ ÐŸÐµÑ€Ð¼Ñ�ÐºÐ¾Ð¼ ÐºÑ€Ð°Ðµ](http://konkord-perm.ru/)
 
-[Ð’Ð°Ð»ÐµÐ½Ñ‡ÑƒÐº ÐžÐ»ÐµÐ³ Ð”Ð¾Ñ€Ð¸Ð°Ð½Ð¾Ð²Ð¸Ñ‡, Ð¾Ñ„Ð¸Ñ†Ð¸Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð°Ð¹Ñ‚ Ð´ÐµÐ¿ÑƒÑ‚Ð°Ñ‚Ð° Ð“Ð¾Ñ�ÑƒÐ´Ð°Ñ€Ñ�Ñ‚Ð²ÐµÐ½Ð½Ð¾Ð¹ Ð”ÑƒÐ¼Ñ‹ Ð Ð¤](http://olegvalenchuk.ru/){:target="_blank"}
+[Ð’Ð°Ð»ÐµÐ½Ñ‡ÑƒÐº ÐžÐ»ÐµÐ³ Ð”Ð¾Ñ€Ð¸Ð°Ð½Ð¾Ð²Ð¸Ñ‡, Ð¾Ñ„Ð¸Ñ†Ð¸Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð°Ð¹Ñ‚ Ð´ÐµÐ¿ÑƒÑ‚Ð°Ñ‚Ð° Ð“Ð¾Ñ�ÑƒÐ´Ð°Ñ€Ñ�Ñ‚Ð²ÐµÐ½Ð½Ð¾Ð¹ Ð”ÑƒÐ¼Ñ‹ Ð Ð¤](http://olegvalenchuk.ru/)
 
-[Â«Ð•Ð’Ð Ð�Ð—Ð˜Ð¯ Ð¡Ð˜Ð�Ð•ÐœÐ� ÐŸÐ ÐžÐ”Ð�ÐšÐ¨Ð�Â»](http://eurc.ru/){:target="_blank"}
+[Â«Ð•Ð’Ð Ð�Ð—Ð˜Ð¯ Ð¡Ð˜Ð�Ð•ÐœÐ� ÐŸÐ ÐžÐ”Ð�ÐšÐ¨Ð�Â»](http://eurc.ru/)
 
-[Ð¡Ñ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ñ‹ Ð¸ Ð½Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ð²Ñ‹ Ð Ð¾Ñ�Ñ�Ð¸Ð¸](http://iprosoft.ru/){:target="_blank"}
+[Ð¡Ñ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ñ‹ Ð¸ Ð½Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ð²Ñ‹ Ð Ð¾Ñ�Ñ�Ð¸Ð¸](http://iprosoft.ru/)
 
-[Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¾Ð½Ð½Ð¾-ÐºÐ¾Ð½Ñ�Ð°Ð»Ñ‚Ð¸Ð½Ð³Ð¾Ð²Ð¾Ðµ Ð°Ð³ÐµÐ½Ñ‚Ñ�Ñ‚Ð²Ð¾ Ð¡Ð°Ð¼Ð°Ñ€Ñ�ÐºÐ¾Ð¹ Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ð¸](http://ikaso63.ru/){:target="_blank"}
+[Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¾Ð½Ð½Ð¾-ÐºÐ¾Ð½Ñ�Ð°Ð»Ñ‚Ð¸Ð½Ð³Ð¾Ð²Ð¾Ðµ Ð°Ð³ÐµÐ½Ñ‚Ñ�Ñ‚Ð²Ð¾ Ð¡Ð°Ð¼Ð°Ñ€Ñ�ÐºÐ¾Ð¹ Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ð¸](http://ikaso63.ru/)
 
-[Ð¡Ð¿Ð¸Ñ‡ÐµÑ‡Ð½Ð°Ñ� Ñ„Ð°Ð±Ñ€Ð¸ÐºÐ° ÐžÐžÐž "Ð¤ÐµÐ½Ð¸ÐºÑ�"](http://feniksmatch.ru/){:target="_blank"}
+[Ð¡Ð¿Ð¸Ñ‡ÐµÑ‡Ð½Ð°Ñ� Ñ„Ð°Ð±Ñ€Ð¸ÐºÐ° ÐžÐžÐž "Ð¤ÐµÐ½Ð¸ÐºÑ�"](http://feniksmatch.ru/)
 
-[1Ð¡ Ð�Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ð·Ð¸Ñ†Ð¸Ñ�, Ð˜Ð¢Ð¡, Ð˜Ð¢ Ð¾Ð±Ñ�Ð»ÑƒÐ¶Ð¸Ð²Ð°Ð½Ð¸Ðµ | Ð¤Ð¸Ñ€Ð¼Ð° Ð�Ð’Ð¡](http://abc-co.ru/){:target="_blank"}
+[1Ð¡ Ð�Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ð·Ð¸Ñ†Ð¸Ñ�, Ð˜Ð¢Ð¡, Ð˜Ð¢ Ð¾Ð±Ñ�Ð»ÑƒÐ¶Ð¸Ð²Ð°Ð½Ð¸Ðµ | Ð¤Ð¸Ñ€Ð¼Ð° Ð�Ð’Ð¡](http://abc-co.ru/)
 
-[Ð”Ð¸Ð·Ð°Ð¹Ð½-Ñ�Ñ‚ÑƒÐ´Ð¸Ñ� Ð•Ð»ÐµÐ½Ñ‹ Ð¨ÑƒÑ‚Ð¾Ð²Ð¾Ð¹, Ð³Ñ€Ð°Ñ„Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¹ Ð´Ð¸Ð·Ð°Ð¹Ð½ Ð² ÐœÐ¸Ð½Ñ�ÐºÐµ, Ð‘ÐµÐ»Ð°Ñ€ÑƒÑ�ÑŒ](http://www.e-shutova.by/){:target="_blank"} [2](http://www.e-shutova.com/){:target="_blank"}
+[Ð”Ð¸Ð·Ð°Ð¹Ð½-Ñ�Ñ‚ÑƒÐ´Ð¸Ñ� Ð•Ð»ÐµÐ½Ñ‹ Ð¨ÑƒÑ‚Ð¾Ð²Ð¾Ð¹, Ð³Ñ€Ð°Ñ„Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¹ Ð´Ð¸Ð·Ð°Ð¹Ð½ Ð² ÐœÐ¸Ð½Ñ�ÐºÐµ, Ð‘ÐµÐ»Ð°Ñ€ÑƒÑ�ÑŒ](http://www.e-shutova.by/)
 
-[ÐœÐµÐ´Ð¸Ñ†Ð¸Ð½Ñ�ÐºÐ¸Ð¹ Ð¿Ð¾Ñ€Ñ‚Ð°Ð» medmir.by â€” ÐºÐ¾Ð½Ñ�ÑƒÐ»ÑŒÑ‚Ð°Ñ†Ð¸Ð¸ Ð²Ñ€Ð°Ñ‡ÐµÐ¹, Ñ�Ð¿Ñ€Ð°Ð²Ð¾Ñ‡Ð½Ð¸Ðº Ð·Ð°Ð±Ð¾Ð»ÐµÐ²Ð°Ð½Ð¸Ð¹, Ð¿Ð¾Ð¸Ñ�Ðº Ð»ÐµÐºÐ°Ñ€Ñ�Ñ‚Ð² Ð² Ð°Ð¿Ñ‚ÐµÐºÐ°Ñ…, ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð¼ÐµÐ´Ð¸Ñ†Ð¸Ð½Ñ�ÐºÐ¸Ñ… ÑƒÑ‡Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ð¹](http://medmir.by/){:target="_blank"}
+[ÐœÐµÐ´Ð¸Ñ†Ð¸Ð½Ñ�ÐºÐ¸Ð¹ Ð¿Ð¾Ñ€Ñ‚Ð°Ð» medmir.by â€” ÐºÐ¾Ð½Ñ�ÑƒÐ»ÑŒÑ‚Ð°Ñ†Ð¸Ð¸ Ð²Ñ€Ð°Ñ‡ÐµÐ¹, Ñ�Ð¿Ñ€Ð°Ð²Ð¾Ñ‡Ð½Ð¸Ðº Ð·Ð°Ð±Ð¾Ð»ÐµÐ²Ð°Ð½Ð¸Ð¹, Ð¿Ð¾Ð¸Ñ�Ðº Ð»ÐµÐºÐ°Ñ€Ñ�Ñ‚Ð² Ð² Ð°Ð¿Ñ‚ÐµÐºÐ°Ñ…, ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð¼ÐµÐ´Ð¸Ñ†Ð¸Ð½Ñ�ÐºÐ¸Ñ… ÑƒÑ‡Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ð¹](http://medmir.by/)
 
-[ÐžÑ„Ð¸Ñ†Ð¸Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð°Ð¹Ñ‚ Ð¿Ð¸Ñ‚Ð¾Ð¼Ð½Ð¸ÐºÐ° Â«LimeranceÂ» maltese](http://www.limerancemaltese.ru/){:target="_blank"}
+[ÐžÑ„Ð¸Ñ†Ð¸Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð°Ð¹Ñ‚ Ð¿Ð¸Ñ‚Ð¾Ð¼Ð½Ð¸ÐºÐ° Â«LimeranceÂ» maltese](http://www.limerancemaltese.ru/)
 
-[Ð¤Ð¸Ñ€Ð¼Ð° "Ð¤Ð¾Ñ€ÑƒÐ¼" - Ñ�ÐµÐ¼ÐµÐ¹Ð½Ñ‹Ð¹ Ð¾Ñ‚Ð´Ñ‹Ñ…, Ð¾Ñ€Ð³Ð°Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ� Ð¿Ñ€Ð°Ð´Ð½Ð¸ÐºÐ¾Ð², Ð¿ÑƒÑ‚ÐµÑˆÐµÑ�Ñ‚Ð²Ð¸Ñ� Ð¿Ð¾ Ð Ð¾Ñ�Ñ�Ð¸Ð¸](http://vardane.ru/){:target="_blank"}
+[Ð¤Ð¸Ñ€Ð¼Ð° "Ð¤Ð¾Ñ€ÑƒÐ¼" - Ñ�ÐµÐ¼ÐµÐ¹Ð½Ñ‹Ð¹ Ð¾Ñ‚Ð´Ñ‹Ñ…, Ð¾Ñ€Ð³Ð°Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ� Ð¿Ñ€Ð°Ð´Ð½Ð¸ÐºÐ¾Ð², Ð¿ÑƒÑ‚ÐµÑˆÐµÑ�Ñ‚Ð²Ð¸Ñ� Ð¿Ð¾ Ð Ð¾Ñ�Ñ�Ð¸Ð¸](http://vardane.ru/)
 
-[Ð Ð°Ð±Ð¾Ñ‚Ð° Ð½Ð° Ñ„Ð¾Ñ‚Ð¾Ñ�Ñ‚Ð¾ÐºÐ°Ñ…](http://stockdoro.ru/){:target="_blank"}
+[Ð Ð°Ð±Ð¾Ñ‚Ð° Ð½Ð° Ñ„Ð¾Ñ‚Ð¾Ñ�Ñ‚Ð¾ÐºÐ°Ñ…](http://stockdoro.ru/)
 
-[ÐžÑ„Ð¸Ñ†Ð¸Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð°Ð¹Ñ‚ ÐšÐŸ Ð’Ð¾Ð´Ð¾ÐºÐ°Ð½Ð°Ð» Ð³. Ð—Ð°Ð¿Ð¾Ñ€Ð¾Ð¶ÑŒÐµ, Ð£ÐºÑ€Ð°Ð¸Ð½Ð°: Ð“Ð»Ð°Ð²Ð½Ð°Ñ� Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ð°](http://vodokanal.zp.ua/){:target="_blank"}
+[ÐžÑ„Ð¸Ñ†Ð¸Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð°Ð¹Ñ‚ ÐšÐŸ Ð’Ð¾Ð´Ð¾ÐºÐ°Ð½Ð°Ð» Ð³. Ð—Ð°Ð¿Ð¾Ñ€Ð¾Ð¶ÑŒÐµ, Ð£ÐºÑ€Ð°Ð¸Ð½Ð°: Ð“Ð»Ð°Ð²Ð½Ð°Ñ� Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ð°](http://vodokanal.zp.ua/)
 
-[SMK](http://smk2002.ru/){:target="_blank"}
+[SMK](http://smk2002.ru/)
 
-[Elite-Studio.biz - Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ° Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ðµ Ñ�Ð°Ð¹Ñ‚Ð¾Ð² Ð² ÐœÐ¸Ð½Ñ�ÐºÐµ, ÐºÐ°Ñ‡ÐµÑ�Ñ‚Ð²ÐµÐ½Ð½Ñ‹Ð¹ Ð²ÐµÐ± Ð´Ð¸Ð·Ð°Ð¹Ð½, Ð´Ð¸Ð·Ð°Ð¹Ð½ Ñ�Ð°Ð¹Ñ‚Ð¾Ð², Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ðµ Ñ„Ð¸Ñ€Ð¼ÐµÐ½Ð½Ð¾Ð³Ð¾ Ñ�Ñ‚Ð¸Ð»Ñ�.](http://www.elite-studio.biz/){:target="_blank"}
+[Elite-Studio.biz - Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ° Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ðµ Ñ�Ð°Ð¹Ñ‚Ð¾Ð² Ð² ÐœÐ¸Ð½Ñ�ÐºÐµ, ÐºÐ°Ñ‡ÐµÑ�Ñ‚Ð²ÐµÐ½Ð½Ñ‹Ð¹ Ð²ÐµÐ± Ð´Ð¸Ð·Ð°Ð¹Ð½, Ð´Ð¸Ð·Ð°Ð¹Ð½ Ñ�Ð°Ð¹Ñ‚Ð¾Ð², Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ðµ Ñ„Ð¸Ñ€Ð¼ÐµÐ½Ð½Ð¾Ð³Ð¾ Ñ�Ñ‚Ð¸Ð»Ñ�.](http://www.elite-studio.biz/)
 
-[ÐžÐžÐž Â«Ð�Ð³Ñ€Ð¾ÐœÐ¸Ñ€Â»](http://agromir43.ru/){:target="_blank"}
+[ÐžÐžÐž Â«Ð�Ð³Ñ€Ð¾ÐœÐ¸Ñ€Â»](http://agromir43.ru/)
 
-[Ð˜Ð— ÐšÐžÐ ÐžÐ›Ð•Ð’Ð¡Ð¢Ð’Ð� ÐœÐ�Ð Ð“Ð�Ð Ð˜Ð¢Ð«](http://sammy-dog.ru/){:target="_blank"}
-
-[PM Studio - ÑˆÐºÐ¾Ð»Ð° Ñ€Ð°Ð·Ð³Ð¾Ð²Ð¾Ñ€Ð½Ð¾Ð³Ð¾ Ð°Ð½Ð³Ð»Ð¸Ð¹Ñ�ÐºÐ¾Ð³Ð¾! - PM STUDIO ÑˆÐºÐ¾Ð»Ð° Ð°Ð½Ð³Ð»Ð¸Ð¹Ñ�ÐºÐ¾Ð³Ð¾ Ñ�Ð·Ñ‹ÐºÐ°](http://english-chel.ru/){:target="_blank"}
-
-[Ð¤Ð¸Ð½Ð°Ð½Ñ�Ð¾Ð²Ð¾ Ð¿Ñ€Ð¾Ð¼Ñ‹ÑˆÐ»ÐµÐ½Ð½Ð°Ñ� Ð³Ñ€ÑƒÐ¿Ð¿Ð° "Ð�Ð›Ð¬Ð¢ÐšÐžÐœ"](http://altcom.ua/){:target="_blank"}
-
-[Ð˜Ð½Ñ‚ÐµÑ€Ð½ÐµÑ‚-Ð¼Ð°Ð³Ð°Ð·Ð¸Ð½ ÐºÐ»Ð¸Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð³Ð¾ Ð¸ Ð±Ñ‹Ñ‚Ð¾Ð²Ð¾Ð³Ð¾ Ð¾Ð±Ð¾Ñ€ÑƒÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ�](http://teploholod.by/){:target="_blank"}
-
-[ÐšÐ¾Ð¼Ð¿Ð°Ð½Ð¸Ñ� Ð Ð°Ð¼Ð¾Ðº - ÐšÐ°Ñ�Ñ�Ð¾Ð²Ñ‹Ðµ Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ñ‹, Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ð·Ð°Ñ†Ð¸Ñ�, Ñ‚Ð¾Ñ€Ð³Ð¾Ð²Ð¾Ðµ Ð¾Ð±Ð¾Ñ€ÑƒÐ´Ð¾Ð²Ð°Ð½Ð¸Ðµ, Ð¿Ñ€Ð¾Ñ‚Ð¸Ð²Ð¾ÐºÑ€Ð°Ð¶Ð½Ð¾Ðµ Ð¾Ð±Ð¾Ñ€ÑƒÐ´Ð¾Ð²Ð°Ð½Ð¸Ðµ, Ð²Ð¸Ð´ÐµÐ¾Ð½Ð°Ð±Ð»ÑŽÐ´ÐµÐ½Ð¸Ðµ](http://www.ramok.by/){:target="_blank"}
+[Ð˜Ð— ÐšÐžÐ ÐžÐ›Ð•Ð’Ð¡Ð¢Ð’Ð� ÐœÐ�Ð Ð“Ð�Ð Ð˜Ð¢Ð«](http://sammy-dog.ru/)

From d0848eaa2f83809c8dc509b8dd9eeb977018aed8 Mon Sep 17 00:00:00 2001
From: Serge Igitov <easy-phpc@mail.ru>
Date: Wed, 19 Jul 2017 21:22:55 +0100
Subject: [PATCH 14/22] up+fix

up+fix
---
 README.md | 6 ------
 1 file changed, 6 deletions(-)

diff --git a/README.md b/README.md
index 51e5476..80322ee 100644
--- a/README.md
+++ b/README.md
@@ -6,15 +6,9 @@
 
 ## ÐŸÑ€Ð¾ÐµÐºÑ‚Ñ‹
 
-<<<<<<< HEAD
 [Ð‘Ñ€Ñ�Ð½Ñ�ÐºÐ¸Ð¹ Ð³Ð¾Ñ�ÑƒÐ´Ð°Ñ€Ñ�Ñ‚Ð²ÐµÐ½Ð½Ñ‹Ð¹ Ñ‚ÐµÑ…Ð½Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¹ ÑƒÐ½Ð¸Ð²ÐµÑ€Ñ�Ð¸Ñ‚ÐµÑ‚](http://www.tu-bryansk.ru/)
 
 [Ð‘Ð°Ð»ÐµÑ€Ñ�](http://balers.ru/)
-=======
-<a href="http://www.tu-bryansk.ru/" target="_blank">Ð‘Ñ€Ñ�Ð½Ñ�ÐºÐ¸Ð¹ Ð³Ð¾Ñ�ÑƒÐ´Ð°Ñ€Ñ�Ñ‚Ð²ÐµÐ½Ð½Ñ‹Ð¹ Ñ‚ÐµÑ…Ð½Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¹ ÑƒÐ½Ð¸Ð²ÐµÑ€Ñ�Ð¸Ñ‚ÐµÑ‚</a>
-
-<a href="http://balers.ru/" target="_blank">Ð‘Ð°Ð»ÐµÑ€Ñ�</a>
->>>>>>> 361d9b116527f26fb4ecd055e9c6abacc2697e6a
 
 [ÐžÐžÐž "Ð¢Ð•Ð Ð Ð� ÐœÐ•Ð”"](http://www.terramed.net/)
 

From 6ffc7ab78a51c9e5bdc30a9a30b764e2525fce03 Mon Sep 17 00:00:00 2001
From: Serge Igitov <easy-phpc@mail.ru>
Date: Wed, 19 Jul 2017 21:41:45 +0100
Subject: [PATCH 15/22] add project

---
 README.md | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/README.md b/README.md
index 80322ee..114a048 100644
--- a/README.md
+++ b/README.md
@@ -55,3 +55,5 @@
 [ÐžÐžÐž Â«Ð�Ð³Ñ€Ð¾ÐœÐ¸Ñ€Â»](http://agromir43.ru/)
 
 [Ð˜Ð— ÐšÐžÐ ÐžÐ›Ð•Ð’Ð¡Ð¢Ð’Ð� ÐœÐ�Ð Ð“Ð�Ð Ð˜Ð¢Ð«](http://sammy-dog.ru/)
+
+[ÐšÐ¾Ð¼Ð¿Ð°Ð½Ð¸Ñ� Ð Ð°Ð¼Ð¾Ðº - ÐšÐ°Ñ�Ñ�Ð¾Ð²Ñ‹Ðµ Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ñ‹, Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ð·Ð°Ñ†Ð¸Ñ�, Ñ‚Ð¾Ñ€Ð³Ð¾Ð²Ð¾Ðµ Ð¾Ð±Ð¾Ñ€ÑƒÐ´Ð¾Ð²Ð°Ð½Ð¸Ðµ, Ð¿Ñ€Ð¾Ñ‚Ð¸Ð²Ð¾ÐºÑ€Ð°Ð¶Ð½Ð¾Ðµ Ð¾Ð±Ð¾Ñ€ÑƒÐ´Ð¾Ð²Ð°Ð½Ð¸Ðµ, Ð²Ð¸Ð´ÐµÐ¾Ð½Ð°Ð±Ð»ÑŽÐ´ÐµÐ½Ð¸Ðµ](http://www.ramok.by/)
\ No newline at end of file

From d36b2ae916cdae3f5a0dd3d1636fbccad28ea378 Mon Sep 17 00:00:00 2001
From: Serge Igitov <easy-phpc@mail.ru>
Date: Wed, 19 Jul 2017 22:15:21 +0100
Subject: [PATCH 16/22] update readme

update readme
---
 README.md | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/README.md b/README.md
index 114a048..aa95e72 100644
--- a/README.md
+++ b/README.md
@@ -56,4 +56,6 @@
 
 [Ð˜Ð— ÐšÐžÐ ÐžÐ›Ð•Ð’Ð¡Ð¢Ð’Ð� ÐœÐ�Ð Ð“Ð�Ð Ð˜Ð¢Ð«](http://sammy-dog.ru/)
 
-[ÐšÐ¾Ð¼Ð¿Ð°Ð½Ð¸Ñ� Ð Ð°Ð¼Ð¾Ðº - ÐšÐ°Ñ�Ñ�Ð¾Ð²Ñ‹Ðµ Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ñ‹, Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ð·Ð°Ñ†Ð¸Ñ�, Ñ‚Ð¾Ñ€Ð³Ð¾Ð²Ð¾Ðµ Ð¾Ð±Ð¾Ñ€ÑƒÐ´Ð¾Ð²Ð°Ð½Ð¸Ðµ, Ð¿Ñ€Ð¾Ñ‚Ð¸Ð²Ð¾ÐºÑ€Ð°Ð¶Ð½Ð¾Ðµ Ð¾Ð±Ð¾Ñ€ÑƒÐ´Ð¾Ð²Ð°Ð½Ð¸Ðµ, Ð²Ð¸Ð´ÐµÐ¾Ð½Ð°Ð±Ð»ÑŽÐ´ÐµÐ½Ð¸Ðµ](http://www.ramok.by/)
\ No newline at end of file
+[ÐšÐ¾Ð¼Ð¿Ð°Ð½Ð¸Ñ� Ð Ð°Ð¼Ð¾Ðº - ÐšÐ°Ñ�Ñ�Ð¾Ð²Ñ‹Ðµ Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ñ‹, Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ð·Ð°Ñ†Ð¸Ñ�, Ñ‚Ð¾Ñ€Ð³Ð¾Ð²Ð¾Ðµ Ð¾Ð±Ð¾Ñ€ÑƒÐ´Ð¾Ð²Ð°Ð½Ð¸Ðµ, Ð¿Ñ€Ð¾Ñ‚Ð¸Ð²Ð¾ÐºÑ€Ð°Ð¶Ð½Ð¾Ðµ Ð¾Ð±Ð¾Ñ€ÑƒÐ´Ð¾Ð²Ð°Ð½Ð¸Ðµ, Ð²Ð¸Ð´ÐµÐ¾Ð½Ð°Ð±Ð»ÑŽÐ´ÐµÐ½Ð¸Ðµ](http://www.ramok.by/)
+
+[Ð“Ð¾Ñ�ÑƒÐ´Ð°Ñ€Ñ�Ñ‚Ð²ÐµÐ½Ð½Ð¾Ðµ Ð¿Ñ€ÐµÐ´Ð¿Ñ€Ð¸Ñ�Ñ‚Ð¸Ðµ Â«Ð‘ÐµÐ»Ð³Ð¸Ð¿Ñ€Ð¾Ð´Ð¾Ñ€Â»](http://www.belgiprodor.by/)

From e69691ffd8178f0424b672b71f693ec2473cf493 Mon Sep 17 00:00:00 2001
From: Serge Igitov <easy-phpc@mail.ru>
Date: Tue, 29 May 2018 15:16:56 +0100
Subject: [PATCH 17/22] add plugin unicode.php

---
 plugins/unicode.php | 151 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 151 insertions(+)
 create mode 100644 plugins/unicode.php

diff --git a/plugins/unicode.php b/plugins/unicode.php
new file mode 100644
index 0000000..a041dab
--- /dev/null
+++ b/plugins/unicode.php
@@ -0,0 +1,151 @@
+<?php
+
+// PHP Compiler by Serge Igitov (Dagdamor), Version 2.5.2, Copyright 2010
+// Released under the LGPL License (www.gnu.org/copyleft/lesser.html)
+
+// PHPC Online Plugin - Unicode Support v1.0 by Dagdamor
+
+define("UnicodeLangFolder","/language/%s/");
+define("UnicodeLangExtension1",".php");
+define("UnicodeLangExtension2",".utf.php");
+
+/****************************** Class Definition ******************************/
+
+class UnicodeSupport
+{
+  function UnicodeSupport()
+  {
+    global $language, $fileSystem;
+    if(!function_exists("mb_strlen")) fatalError("fatal_function","mb_strlen");
+    if(defined("UnicodeSkipConvert")) return;
+    $folder=format(UnicodeLangFolder,$language["locale"]);
+    $files=$fileSystem->getFolder($folder,UnicodeLangExtension1);
+    $extension1=preg_quote(UnicodeLangExtension1);
+    $extension2=preg_quote(UnicodeLangExtension2);
+    $patternFile="{($extension2|$extension1)\$}i";
+    $patternLang1="{(\r\n\\\$language\[\"charset(?:_iconv|_sql|)\"\]=\")([^\"]+)(\";)}";
+    $patternLang2="{(\r\n\\\$language\[\"charset_sql\"\]=\")([^\"]+)(\";)}";
+    $alright=true;
+    foreach($files as $filename) {
+      $utfname=preg_replace($patternFile,UnicodeLangExtension2,$filename);
+      if($utfname==$filename || in_array($utfname,$files)) continue;
+      $charset=$language[isset($language["charset_saved"])?"charset_saved":"charset_iconv"];
+      $content=$fileSystem->openFile($folder.$filename);
+      $content=mb_convert_encoding($content,"UTF-8",strtoupper($charset));
+      $content=preg_replace($patternLang1,"\\1utf-8\\3",$content);
+      $content=preg_replace($patternLang2,"\\1utf8\\3",$content);
+      $compare=mb_convert_encoding($content,"UTF-8","UTF-8");
+      if($compare!==$content || !preg_match("{\?>\r?\n?\$}",$content)) continue;
+      $fileSystem->saveFile($folder.$utfname,$content);
+      $alright=false;
+    }
+    if($alright) return;
+    $folder=getPhpcLocaleFolder($language["locale"]);
+    foreach($folder as $filename) { require $filename; }
+  }
+
+  function internalCheckExtendedSupport()
+  {
+    if(defined("UnicodeDisableExtendedSupport")) return false;
+    $version=phpversion();
+    return $version>="5.1" || ($version<"5" && $version>="4.4");
+  }
+
+  function char($text, $index)
+  {
+    if($index<0) return "\x00";
+    if($index>=mb_strlen($text,"UTF-8")) return "\x00";
+    return mb_substr($text,$index,1,"UTF-8");
+  }
+
+  function strlen($text) { return mb_strlen($text,"UTF-8"); }
+  function strtoupper($text, $html=false) { return phpcstrfix($text,mb_strtoupper($text,"UTF-8"),$html); }
+  function strtolower($text, $html=false) { return phpcstrfix($text,mb_strtolower($text,"UTF-8"),$html); }
+
+  function substr($text, $offset, $length=false)
+  {
+    if($length===false) $length=mb_strlen($text,"UTF-8");
+    return (string)mb_substr($text,$offset,$length,"UTF-8");
+  }
+
+  function strncmp($text1, $text2, $length)
+  {
+    $text1=mb_substr($text1,0,$length,"UTF-8");
+    $text2=mb_substr($text2,0,$length,"UTF-8");
+    return strcmp($text1,$text2);
+  }
+
+  function strcasecmp($text1, $text2)
+  {
+    $text1=mb_strtolower($text1,"UTF-8");
+    $text2=mb_strtolower($text2,"UTF-8");
+    return strcmp($text1,$text2);
+  }
+
+  function strncasecmp($text1, $text2, $length)
+  {
+    $text1=mb_strtolower(mb_substr($text1,0,$length,"UTF-8"),"UTF-8");
+    $text2=mb_strtolower(mb_substr($text2,0,$length,"UTF-8"),"UTF-8");
+    return strcmp($text1,$text2);
+  }
+
+  function ucfirst($text, $html=false)
+  {
+    if(($text=(string)$text)==="") return "";
+    $oldsymbol=mb_substr($text,0,1,"UTF-8");
+    $newsymbol=mb_strtoupper($oldsymbol,"UTF-8");
+    $result=substr_replace($text,$newsymbol,0,strlen($oldsymbol));
+    return phpcstrfix($text,$result,$html);
+  }
+
+  function ucwords($text, $html=false)
+  {
+    global $language;
+    if(($text=(string)$text)==="") return "";
+    $extendedSupport=self::internalCheckExtendedSupport();
+    $chars=$extendedSupport?"\pL":"[$language[charset_regexp]]";
+    preg_match_all("{(?<!$chars)$chars}u",$text,$matches,PREG_OFFSET_CAPTURE);
+    if(!count($matches)) return $text;
+    $result=$text;
+    for($index=count($matches[0])-1; $index>=0; $index--) {
+      $oldsymbol=$matches[0][$index][0];
+      $newsymbol=mb_strtoupper($oldsymbol,"UTF-8");
+      $offset=$matches[0][$index][1];
+      $result=substr_replace($result,$newsymbol,$offset,strlen($oldsymbol));
+    }
+    return phpcstrfix($text,$result,$html);
+  }
+
+  function chopText($text, $limit, $words=true)
+  {
+    global $language;
+    if(mb_strlen($text,"UTF-8")<=$limit) return $text;
+    $saved=$limit=max($limit-mb_strlen(PredefinedDots,"UTF-8"),0);
+    if($words) {
+      $extendedSupport=self::internalCheckExtendedSupport();
+      $chars=$extendedSupport?"\pL":"[$language[charset_regexp]]";
+      while($limit>0 && preg_match("{^$chars+\$}u",mb_substr($text,$limit-1,2,"UTF-8"))) $limit--;
+      if(!$limit) $limit=$saved;
+    }
+    return rtrim(mb_substr($text,0,$limit,"UTF-8"),PredefinedChop).PredefinedDots;
+  }
+
+  function processPattern($pattern)
+  {
+    global $language;
+    if(($pattern=(string)$pattern)==="") return $pattern;
+    if($pattern[strlen($pattern)-1]=="u") return $pattern;
+    if(strpos($pattern,"\x80-")!==false) return $pattern;
+    if(preg_match("{u[a-zA-Z]+\$}",$pattern)) return $pattern;
+    $pattern.="u";
+    if(!self::internalCheckExtendedSupport()) return $pattern;
+    $pattern=str_replace($language["charset_regexp"],"\p{L}",$pattern);
+    $pattern=str_replace($language["charset_regexp_uppers"],"\p{Lu}",$pattern);
+    $pattern=str_replace($language["charset_regexp_lowers"],"\p{Ll}",$pattern);
+    return $pattern;
+  }
+}
+
+$unicodeSupport=new UnicodeSupport;
+
+?>

From b468f8935f07c8c53439794963e67ea1a6f8243d Mon Sep 17 00:00:00 2001
From: Serge Igitov <easy-phpc@mail.ru>
Date: Wed, 30 May 2018 07:43:08 +0100
Subject: [PATCH 18/22] adding statistic and dbadmin

---
 admin/dbadmin.php             | 1229 +++++++++++++++++++++++++++++++++
 admin/statistics.php          |  337 +++++++++
 images/statistics/counter.png |  Bin 0 -> 229 bytes
 images/statistics/digits.png  |  Bin 0 -> 569 bytes
 language/en/dbadmin_en.php    |  230 ++++++
 language/ru/dbadmin_ru.php    |  230 ++++++
 language/ru/statistics_ru.php |   39 ++
 plugins/statistics.php        |  150 ++++
 8 files changed, 2215 insertions(+)
 create mode 100644 admin/dbadmin.php
 create mode 100644 admin/statistics.php
 create mode 100644 images/statistics/counter.png
 create mode 100644 images/statistics/digits.png
 create mode 100644 language/en/dbadmin_en.php
 create mode 100644 language/ru/dbadmin_ru.php
 create mode 100644 language/ru/statistics_ru.php
 create mode 100644 plugins/statistics.php

diff --git a/admin/dbadmin.php b/admin/dbadmin.php
new file mode 100644
index 0000000..3ce249a
--- /dev/null
+++ b/admin/dbadmin.php
@@ -0,0 +1,1229 @@
+<?php
+
+// PHPC Control Panel Plugin (50.5) - Database Management v1.1 by Dagdamor
+
+// PHP Compiler by Serge Igitov (Dagdamor), Version 2.4.4, Copyright 2006
+// Released under the LGPL License (www.gnu.org/copyleft/lesser.html)
+
+/*
+
+// Main Menu Construction Code
+makeMenuGroup("header","dbadmin_menu");
+makeMenuItem("dbadmin_add","dbadmin.php?action=add");
+makeMenuItem("dbadmin_modify","dbadmin.php?action=modify");
+makeMenuItem("dbadmin_sql","dbadmin.php?action=sql");
+makeMenuItem("dbadmin_export","dbadmin.php?action=export");
+makeMenuItem("dbadmin_import","dbadmin.php?action=import");
+makeMenuGroup("footer");
+
+*/
+
+require "global.php";
+require_once "../plugins/zipfile.php";
+
+define("RowsOnPage",100);
+define("ValueShowLengthLimit",100);
+define("ValueEditLengthLimit",100000);
+
+adminLog("table,field,index");
+$action=acceptStringParameter("action");
+
+makeAdminPage("header");
+
+/********************************* Functions **********************************/
+
+function acceptTableName($name="table")
+{
+  global $database;
+  $tables=$database->getTablesList();
+  $result=acceptStringParameter($name);
+  if(!in_array($result,$tables)) makeAdminError("dbadmin_error_notable");
+  return $result;
+}
+
+function acceptTableOrder($name="order")
+{
+  $ascorder=acceptStringParameter("asc$name");
+  $descorder=acceptStringParameter("desc$name");
+  $reverse=$ascorder=="" && $descorder!="";
+  $field=$reverse?$descorder:$ascorder;
+  $sql=$field.($reverse?" DESC":"");
+  $param=$reverse?"desc$name":"asc$name";
+  $param=$field!=""?"&$param=$field":"";
+  return compact("field","reverse","sql","param");
+}
+
+function getFieldTypes()
+{
+  global $database;
+  static $cache;
+  if(!isset($cache)) {
+    $cache=array();
+    $types=$database->getFieldTypes();
+    foreach($types as $type) $cache[$type]=ucfirst(strtolower($type));
+  }
+  return $cache;
+}
+
+function getCompareOptions($null=true)
+{
+  $result=array(
+    "equal"=>array("title"=>"=","sql"=>"%s=%s"),
+    "notEqual"=>array("title"=>"!=","sql"=>"%s!=%s"),
+    "less"=>array("title"=>"<","sql"=>"%s<%s"),
+    "greater"=>array("title"=>">","sql"=>"%s>%s"),
+    "lessEqual"=>array("title"=>"<=","sql"=>"%s<=%s"),
+    "greaterEqual"=>array("title"=>">=","sql"=>"%s>=%s"),
+    "like"=>array("title"=>"LIKE","sql"=>"%s LIKE %s"),
+    "notLike"=>array("title"=>"NOT LIKE","sql"=>"%s NOT LIKE %s"),
+    "null"=>array("title"=>"NULL","sql"=>"%s IS NULL"),
+    "notNull"=>array("title"=>"NOT NULL","sql"=>"%s IS NOT NULL"));
+  if(!$null) unset($result["null"],$result["notNull"]);
+  return $result;
+}
+
+function getSelectedTables($name="tables")
+{
+  global $database;
+  $tables=$database->getTablesList();
+  $selected=acceptArrayParameter($name);
+  $result=array_intersect($tables,$selected);
+  return array_values($result);
+}
+
+function getSelectedFields($table, $name="fields")
+{
+  global $database;
+  $fields=$database->getFieldsList($table);
+  $selected=acceptArrayParameter($name);
+  $result=array_intersect($fields,$selected);
+  return array_values($result);
+}
+
+function getRowConditions($table)
+{
+  global $database;
+  $primary=$database->getKeyFields($table);
+  $result=array();
+  foreach($primary as $key) {
+    $value=acceptStringParameter("key$key");
+    $result[$key]=slashes($value);
+  }
+  return implodeAssigns(" AND ",$result);
+}
+
+function getSelectedRowsConditions($table, $name="rows")
+{
+  $rows=acceptArrayParameter($name);
+  $result=array();
+  foreach($rows as $params) {
+    $parts=explodeAssigns("&",$params);
+    $array=$sql=array();
+    foreach($parts as $key=>$value) {
+      if(!preg_match("{^key[\w\-]+\$}",$key)) continue;
+      $key=substr($key,3);
+      $array[$key]=urldecode($value);
+      $sql[]="$key=".slashes($array[$key]);
+    }
+    $sql=implode(" AND ",$sql);
+    $result[]=compact("params","array","sql");
+  }
+  return $result;
+}
+
+function prepareSqlFieldPart($name, $type, $size, $attrs, $default)
+{
+  $type=strtoupper($type);
+  if($size!="") $type.="($size)";
+  $attr=array();
+  if($attrs[1]) $attr[]="BINARY";
+  if($attrs[2]) $attr[]="UNSIGNED";
+  if($attrs[3]) $attr[]="ZEROFILL";
+  $attr[]=$attrs[0]?"NULL":"NOT NULL";
+  if($default!="") $attr[]="DEFAULT ".slashes($default);
+  if($attrs[4]) $attr[]="AUTO_INCREMENT";
+  return "$name $type ".implode(" ",$attr);
+}
+
+function prepareSqlCreateTable($name, $fieldparts, $keyfields)
+{
+  if(count($keyfields))
+    $fieldparts[]="PRIMARY KEY (".implode(",",$keyfields).")";
+  return "CREATE TABLE $name (\r\n  ".implode(",\r\n  ",$fieldparts).")";
+}
+
+function prepareOutputValue($value)
+{
+  if(is_null($value)) return null;
+  $value=chopText($value,ValueShowLengthLimit);
+  $value=strtr($value,"\0\t\r","   ");
+  $value=preg_replace("{[\x01-\x08\x0b\x0c\x0e-\x1f]}","?",$value);
+  $value=htmlspecialchars($value);
+  $value=str_replace("\n",PredefinedNewline,$value);
+  return $value;
+}
+
+function isValueEditable($value)
+{
+  if(strlen($value)>ValueEditLengthLimit) return false;
+  return !preg_match("{[\\x00\x01-\x09\x0b\x0c\x0e-\x1f]}",$value);
+}
+
+function processQuery($query)
+{
+  global $database;
+  makeNotification("dbadmin_message_query");
+  makeBreak();
+  makeQuote($query);
+  makeBreak();
+  $database->customQuerySilent($query,$error);
+  if($error===false)
+    makeNotification("dbadmin_message_querysuccess");
+    else makeAdminError("dbadmin_error_query",$error);
+}
+
+function makeFormChooserInput($title, $description, $name1, $name2, $options=array(), $default=false, $value="", $lang=true, $filter=true)
+{
+  makeFormItem("header",$title,$description,$lang);
+  $value=htmlspecialchars($value);
+  echo "<select class=\"cell\" name=\"$name1\">\r\n";
+  foreach($options as $key=>$option) {
+    if($default===false) $default=$key;
+    $selected=$key==$default?" selected":"";
+    $key=htmlspecialchars($key);
+    if($filter) $option=formatAdminText($option);
+    echo "<option value=\"$key\"$selected>$option</option>\r\n";
+  }
+  echo "</select>\r\n";
+  echo "<input class=\"cell\" type=\"text\" name=\"$name2\" value=\"$value\">";
+  makeFormItem("footer");
+}
+
+function makeTableCellNull()
+{
+  global $language;
+  makeTableCell("header",array("align"=>"center"));
+  echo "<b>$language[dbadmin_browse_null]</b>";
+  makeTableCell("footer");
+}
+
+function makeTableCellAttrs($name, $values=0)
+{
+  global $database;
+  makeTableCell("header",array("align"=>"center"));
+  $supported=$database->getSupportedAttributes();
+  $separator="";
+  for($index=0; $index<ColumnAttributesCount; $index++) {
+    $disabled=($supported&(1<<$index))?"":" disabled";
+    $checked=($values&(1<<$index))?" checked":"";
+    echo "$separator<input class=\"checkbox\" type=\"checkbox\" name=\"{$name}[$index]\" value=\"1\"$disabled$checked>";
+    $separator="\r\n";
+  }
+  makeTableCell("footer");
+}
+
+function makeTableShort($what, $columns=array(), $script="", $action="", $lang=true)
+{
+  if($what=="header") {
+    ob_start();
+    makeTable($what,$columns,$script,$action,$lang);
+    $content=ob_get_clean();
+    $pattern="{^(<table id=\"\w+\") width=\"\d+%\"}";
+    $content=preg_replace($pattern,"\\1",$content);
+    echo $content;
+  }
+  else makeTable($what,$columns,$script,$action,$lang);
+}
+
+function makeTableActionShort($what, $columns=array(), $script="", $prompt="", $actions=array(), $lang=true)
+{
+  if($what=="header") {
+    ob_start();
+    makeTableAction($what,$columns,$script,$prompt,$actions,$lang);
+    $content=ob_get_clean();
+    $pattern="{^(<table id=\"\w+\") width=\"\d+%\"}";
+    $content=preg_replace($pattern,"\\1",$content);
+    echo $content;
+  }
+  else makeTableAction($what,$columns,$script,$prompt,$actions,$lang);
+}
+
+function makeQueryResult($result, $table=false)
+{
+  global $language, $database;
+  if(!count($result)) return;
+  $primary=$table!==false?$database->getKeyFields($table):array();
+  $columns=array_keys($result[0]);
+  if(count($primary)) $columns[]=$language["dbadmin_browse_options"];
+  makeTableShort("header",$columns,"","",false);
+  foreach($result as $row) {
+    foreach($row as $value) {
+      $decimal=isTrueInteger($value) || isTrueFloat($value);
+      $value=prepareOutputValue($value);
+      $style=$decimal?array("align"=>"right"):array("wrap"=>true);
+      if(is_null($value))
+        makeTableCellNull(); else makeTableCellExact($value,$style);
+    }
+    if(count($primary)) {
+      $conditions=array();
+      foreach($primary as $key) $conditions["key$key"]=urlencode($row[$key]);
+      $conditions=implodeAssigns("&",$conditions);
+      $links=array(
+        "dbadmin_browse_edit"=>"dbadmin.php?action=editrow&table=$table&$conditions",
+        "dbadmin_browse_remove"=>"dbadmin.php?action=removerow&table=$table&$conditions");
+      makeTableCellLinks($links);
+    }
+  }
+  makeTableShort("footer");
+}
+
+function makeTableNavigation($table)
+{
+  global $language, $database;
+  $count=$database->getLinesCount($table);
+  $title=format($language["dbadmin_navigation_headline"],array($table,$count));
+  $links=array(
+    "dbadmin_navigation_browse"=>"dbadmin.php?action=browse&table=$table",
+    "dbadmin_navigation_fields"=>"dbadmin.php?action=fields&table=$table",
+    "dbadmin_navigation_search"=>"dbadmin.php?action=search&table=$table",
+    "dbadmin_navigation_edit"=>"dbadmin.php?action=edit&table=$table",
+    "dbadmin_navigation_clear"=>"dbadmin.php?action=clear&table=$table",
+    "dbadmin_navigation_remove"=>"dbadmin.php?action=remove&table=$table");
+  makeHeadline($title,false);
+  makeLinks($links);
+  makeBreak();
+}
+
+/************************************ Add *************************************/
+
+if($action=="add") {
+  makeForm("header","dbadmin_add_form","dbadmin","create");
+  makeFormInput("dbadmin_add_name","","table");
+  makeFormInput("dbadmin_add_fields","","fields",1);
+  makeForm("footer");
+}
+
+if($action=="create") {
+  $table=acceptStringParameter("table");
+  $fields=acceptIntParameter("fields",1,100);
+  if(preg_match("{^[\w\-]+\$}",$table)) {
+    $columns=array(
+      "dbadmin_create_name",
+      "dbadmin_create_type",
+      "dbadmin_create_size",
+      array("title"=>"dbadmin_create_attrs","width"=>"100%"),
+      "dbadmin_create_default",
+      "dbadmin_create_primary");
+    makeTable("header",$columns,"dbadmin","docreate");
+    makeFormHidden("table",$table);
+    makeFormHidden("fields",$fields);
+    for($index=0; $index<$fields; $index++) {
+      makeTableCellInput("name[$index]");
+      makeTableCellChooser("type[$index]",getFieldTypes());
+      makeTableCellInput("size[$index]");
+      makeTableCellAttrs("attrs[$index]");
+      makeTableCellInput("default[$index]");
+      makeTableCellCheckbox("key[$index]");
+    }
+    makeTable("footer");
+    makeBreak();
+    makeNotification("dbadmin_message_fieldnotes");
+  }
+  else makeError("dbadmin_error_wrongtablename");
+}
+
+if($action=="docreate") {
+  $table=acceptStringParameter("table");
+  $fields=acceptIntParameter("fields",1,100);
+  $fieldparts=array();
+  $keyfields=array();
+  for($index=0; $index<$fields; $index++) {
+    $name=acceptStringParameter(array("name",$index));
+    $type=acceptStringParameter(array("type",$index));
+    $size=acceptStringParameter(array("size",$index));
+    $attrs=array();
+    for($attr=0; $attr<ColumnAttributesCount; $attr++)
+      $attrs[]=acceptIntParameter(array("attrs",$index,$attr),0,1);
+    $default=acceptStringParameter(array("default",$index));
+    $key=acceptIntParameter(array("key",$index),0,1);
+    if($name=="") continue;
+    if(!preg_match("{^[\w\-]+\$}",$name))
+      makeAdminError("dbadmin_error_wrongfieldname");
+    $fieldparts[]=prepareSqlFieldPart($name,$type,$size,$attrs,$default);
+    if($key) $keyfields[]=$name;
+  }
+  if(count($fieldparts)) {
+    $query=prepareSqlCreateTable($table,$fieldparts,$keyfields);
+    processQuery($query);
+    makeBreak();
+    $action="modify";
+  }
+  else makeError("dbadmin_error_nofields");
+}
+
+/*********************** Optimize/Arrange/Repair Tables ***********************/
+
+$actions="optimizegroup,arrangegroup,repairgroup";
+
+if(in_array($action,explode(",",$actions))) {
+  $tables=getSelectedTables();
+  foreach($tables as $table) {
+    switch($action) {
+      case "optimizegroup": $database->optimizeTable($table); break;
+      case "arrangegroup": $database->arrangeTable($table); break;
+      case "repairgroup": $database->repairTable($table); break;
+    }
+    makeNotification("dbadmin_action_$action",$table);
+  }
+  if(count($tables)) {
+    makeNotification("dbadmin_action_success");
+    makeBreak();
+    $action="modify";
+  }
+  else makeError("dbadmin_action_failure");
+}
+
+/***************************** Clear/Remove Table *****************************/
+
+if($action=="clear" || $action=="remove") {
+  $table=acceptTableName();
+  $_REQUEST["tables"]=array(addSlashesSmart($table));
+  $action="{$action}group";
+}
+
+/**************************** Clear/Remove Tables *****************************/
+
+if($action=="cleargroup" || $action=="removegroup") {
+  $tables=getSelectedTables();
+  $count=count($tables);
+  if($count) {
+    $prompt="dbadmin_action_{$action}_prompt".($count==1?"once":"multi");
+    $info=$count==1?$tables[0]:$count;
+    $prompt=format($language[$prompt],htmlspecialchars($info));
+    makePromptForm("header",$prompt,"dbadmin","do$action",false);
+    foreach($tables as $table) makeFormHidden("tables[]",$table);
+    makePromptForm("footer");
+  }
+  else makeError("dbadmin_action_failure");
+}
+
+if($action=="docleargroup" || $action=="doremovegroup") {
+  $action=substr($action,2);
+  $tables=getSelectedTables();
+  foreach($tables as $table) {
+    switch($action) {
+      case "cleargroup": $database->clearTable($table); break;
+      case "removegroup": $database->deleteTable($table); break;
+    }
+    makeNotification("dbadmin_action_$action",$table);
+  }
+  makeNotification("dbadmin_action_success");
+  makeBreak();
+  $action="modify";
+}
+
+/********************************* SQL/Import *********************************/
+
+if($action=="sql") {
+  makeForm("header","dbadmin_import_formtext","dbadmin","doimport");
+  makeFormTextarea("dbadmin_import_text","","text");
+  makeForm("footer");
+}
+
+if($action=="import") {
+  makeForm("header","dbadmin_import_formfile","dbadmin","doimport");
+  makeFormHidden("filemode",1);
+  makeFormFile("dbadmin_import_file","dbadmin_import_filedesc","file");
+  makeForm("footer");
+}
+
+if($action=="doimport") {
+  @set_time_limit(0);
+  $filemode=acceptIntParameter("filemode",0,1);
+  if($filemode) {
+    $file=$fileSystem->getUploadedFile("file");
+    $content=$file?$file["content"]:"";
+  }
+  else $content=acceptStringParameter("text",false,false);
+  $queries=$database->parseSQL($content);
+  if(!count($queries))
+    makeAdminError("dbadmin_import_empty".($filemode?"file":"text"));
+  if(!$filemode && count($queries)==1) {
+    $query=substr($content,$queries[0]["offset"],$queries[0]["length"]);
+    $result=$database->customQuerySilent($query,$error);
+    if($error===false) {
+      if(is_array($result) && count($result)) {
+        makeNotification("dbadmin_import_successonce");
+        makeBreak();
+        makeQueryResult($result);
+      }
+      else makeNotification("dbadmin_import_successempty");
+    }
+    else makeError("dbadmin_import_failureonce",$error);
+    makeAdminPage("footer");
+    exit;
+  }
+  foreach($queries as $query) {
+    $instruction=substr($content,$query["offset"],$query["length"]);
+    $success=$database->customQueryBoolean($instruction);
+    if(!$success) {
+      makeError("dbadmin_import_failuremulti");
+      makeBreak();
+      makeQuote($instruction);
+      makeAdminPage("footer");
+      exit;
+    }
+  }
+  $optimizer->clearCache();
+  $optimizer->clearFileCache();
+  makeNotification("dbadmin_import_successmulti",count($queries));
+  makeBreak();
+  $action="modify";
+}
+
+/*********************************** Export ***********************************/
+
+if($action=="export" || $action=="exportgroup") {
+  $tables=$action=="export"?$database->getTablesList():getSelectedTables();
+  if($action=="export" || count($tables)) {
+    $tables=combineArrays($tables,$tables);
+    makeForm("header","dbadmin_export_form","dbadmin","doexport");
+    foreach($tables as $table) makeFormHidden("alltables[]",$table);
+    makeFormSelector("dbadmin_export_tables","dbadmin_export_tablesdesc","tables[]",$tables);
+    makeFormYesNo("dbadmin_export_structure","","structure");
+    makeFormYesNo("dbadmin_export_data","","data");
+    makeFormYesNo("dbadmin_export_send","","send");
+    makeFormYesNo("dbadmin_export_pack","","pack",0);
+    makeForm("footer");
+  }
+  else makeError("dbadmin_export_failure");
+}
+
+if($action=="doexport") {
+  @set_time_limit(0);
+  $tables=getSelectedTables();
+  if(!count($tables)) $tables=getSelectedTables("alltables");
+  $structure=acceptIntParameter("structure",0,1);
+  $data=acceptIntParameter("data",0,1);
+  $send=acceptIntParameter("send",0,1);
+  $pack=acceptIntParameter("pack",0,1);
+  $optimizer->clearCache();
+  $filename=DatabaseName.".sql";
+  $content="# PHP Compiler by Serge Igitov - Project Database Dump\r\n";
+  foreach($tables as $table) {
+    if($structure) $content.="\r\n".$database->exportTableStructure($table);
+    if(!$data) continue;
+    $lines=$database->getLines($table);
+    if(count($lines)) $content.="\r\n";
+    foreach($lines as $line) $content.=$database->exportTableLine($table,$line);
+  }
+  if(!$send) {
+    makeNotification("dbadmin_export_success");
+    makeBreak();
+    makeQuote($content);
+    makeAdminPage("footer");
+    exit;
+  }
+  if($pack) {
+    $zipfile=new ZipFile;
+    $zipfile->addFile($filename,$content);
+    $filename=DatabaseName.".zip";
+    $content=$zipfile->file();
+  }
+  contentDisposition($filename,"application/octet-stream",$content);
+}
+
+/*********************************** Modify ***********************************/
+
+if($action=="modify") {
+  $tables=$database->getTablesInformation();
+  $columns=array(
+    array("title"=>"","width"=>"14"),
+    array("title"=>"dbadmin_modify_name","width"=>"20%"),
+    array("title"=>"dbadmin_modify_type","width"=>"1%"),
+    array("title"=>"dbadmin_modify_rows","width"=>"1%"),
+    array("title"=>"dbadmin_modify_size","width"=>"1%"),
+    "dbadmin_modify_comment",
+    array("title"=>"dbadmin_modify_options","width"=>"30%"),
+    array("title"=>"table:checkbox:tables[]","width"=>"1%"));
+  $actions=array(
+    "optimizegroup"=>"dbadmin_modify_optimize",
+    "arrangegroup"=>"dbadmin_modify_arrange",
+    "repairgroup"=>"dbadmin_modify_repair",
+    "exportgroup"=>"dbadmin_modify_export",
+    "cleargroup"=>"dbadmin_modify_clear",
+    "removegroup"=>"dbadmin_modify_remove");
+  makeTableScripts();
+  makeTableAction("header",$columns,"dbadmin","dbadmin_modify_action",$actions);
+  $totalRows=$totalSize=0;
+  foreach($tables as $table=>$info) {
+    $icon=$info["rows"]?"normal":"empty";
+    $info["size"]=round($info["size"]/1024);
+    $links=array(
+      "dbadmin_modify_browse"=>"dbadmin.php?action=browse&table=$table",
+      "dbadmin_modify_fields"=>"dbadmin.php?action=fields&table=$table",
+      "dbadmin_modify_search"=>"dbadmin.php?action=search&table=$table",
+      "dbadmin_modify_addrow"=>"dbadmin.php?action=addrow&table=$table");
+    makeTableCellImageSize(14,16,"dbadmin.php?action=image&image=icon$icon");
+    makeTableCellSimple("[b]{$table}[/b]");
+    makeTableCellSimple($info["type"]);
+    makeTableCellSimple(formatInteger($info["rows"]),array("align"=>"right"));
+    makeTableCellSimple(format($language["dbadmin_modify_kb"],$info["size"]),array("align"=>"right"));
+    makeTableCellSimple($info["comment"],array("wrap"=>true));
+    makeTableCellLinks($links);
+    makeTableCellCheckboxArray("tables[]",$table);
+    $totalRows+=$info["rows"];
+    $totalSize+=$info["size"];
+  }
+  $columns=array(
+    array("value"=>count($tables),"colspan"=>3),
+    formatInteger($totalRows),
+    format($language["dbadmin_modify_kb"],$totalSize));
+  if(count($tables)>1) makeTableTotals($columns);
+  makeTableAction("footer");
+}
+
+/******************************** Add/Edit Row ********************************/
+
+if($action=="addrow" || $action=="editrow") {
+  $add=$action=="addrow";
+  $table=acceptTableName();
+  $formtitle=$add?"dbadmin_addrow_form":"dbadmin_editrow_form";
+  $formtitle=format($language[$formtitle],$table);
+  $columns=$database->getTableInformation($table);
+  $columns=$columns["columns"];
+  $primary=$database->getKeyFields($table);
+  if($add) {
+    $row=array();
+    foreach($columns as $column) $row[$column["name"]]=null;
+  }
+  else $row=$database->getLine($table,getRowConditions($table));
+  $editable=array();
+  foreach($columns as $column)
+    /*if(isValueEditable($row[$column["name"]]))*/ $editable[]=$column["name"];
+  makeForm("header",$formtitle,"dbadmin","do$action",false);
+  makeFormHidden("table",$table);
+  if(!$add) foreach($primary as $key)
+    makeFormHidden("key$key",acceptStringParameter("key$key"));
+  foreach($editable as $field) {
+    makeFormHidden("fields[$field]",true);
+    $column=searchArrayLine($columns,"name",$field);
+    $type=$column["type"];
+    if($column["size"]) $type.="($column[size])";
+    $meaning=$database->getColumnMeaning($type);
+    $title=format($language["dbadmin_addeditrow_field"],$field);
+    switch($meaning) {
+      case "yesno": makeFormYesNo($title,"","values[$field]",$row[$field],false); break;
+      case "textarea": makeFormTextarea($title,"","values[$field]",$row[$field],false); break;
+      default: makeFormInput($title,"","values[$field]",$row[$field],false);
+    }
+    if($column["attrs"]&ColumnAttributeNull) {
+      $title=format($language["dbadmin_addeditrow_null"],$field);
+      makeFormYesNo($title,"","nulls[$field]",is_null($row[$field]),false);
+    }
+  }
+  makeForm("footer");
+  $d=$GLOBALS;
+  unset($d["GLOBALS"]);
+  /*echo "<pre style=\"border:1px solid red;\">";
+  echo var_dump($d);
+  echo "</pre>";*/
+}
+
+if($action=="doaddrow" || $action=="doeditrow") {
+  $add=$action=="doaddrow";
+  $table=acceptTableName();
+  $columns=$database->getTableInformation($table);
+  $columns=$columns["columns"];
+  $values=array();
+  foreach($columns as $column) {
+    $field=$column["name"];
+    if(!acceptIntParameter(array("fields",$field),0,1)) continue;
+    $value=acceptStringParameter(array("values",$field),false,false);
+    if($column["attrs"]&ColumnAttributeNull)
+      if(acceptIntParameter(array("nulls",$field),0,1)) $value=null;
+    $values[$field]=$value;
+  }
+  if($add)
+    $success=$database->addLine($table,$values);
+    else $success=$database->modifyLine($table,$values,getRowConditions($table));
+  if($success) {
+    makeNotification($add?"dbadmin_addrow_success":"dbadmin_editrow_success");
+    makeBreak();
+    $action="browse";
+  }
+  else makeError($add?"dbadmin_addrow_failure":"dbadmin_editrow_failure");
+}
+
+/********************************* Remove Row *********************************/
+
+if($action=="removerow") {
+  $table=acceptTableName();
+  $primary=$database->getKeyFields($table);
+  makePromptForm("header","dbadmin_removerow_prompt","dbadmin","doremoverow");
+  makeFormHidden("table",$table);
+  foreach($primary as $key)
+    makeFormHidden("key$key",acceptStringParameter("key$key"));
+  makePromptForm("footer");
+}
+
+if($action=="doremoverow") {
+  $table=acceptTableName();
+  $success=$database->deleteLine($table,getRowConditions($table));
+  if($success) {
+    makeNotification("dbadmin_removerow_success");
+    makeBreak();
+    $action="browse";
+  }
+  else makeError("dbadmin_removerow_failure");
+}
+
+/******************************** Remove Rows *********************************/
+
+if($action=="removerows") {
+  $table=acceptTableName();
+  $conditions=getSelectedRowsConditions($table);
+  if(count($conditions)) {
+    $title=format($language["dbadmin_removerows_prompt"],count($conditions));
+    makePromptForm("header",$title,"dbadmin","doremoverows",false);
+    makeFormHidden("table",$table);
+    foreach($conditions as $condition)
+      makeFormHidden("rows[]",$condition["params"]);
+    makePromptForm("footer");
+  }
+  else makeError("dbadmin_removerows_failure");
+}
+
+if($action=="doremoverows") {
+  $table=acceptTableName();
+  $conditions=getSelectedRowsConditions($table);
+  foreach($conditions as $condition)
+    $database->deleteLine($table,$condition["sql"]);
+  makeNotification("dbadmin_removerows_success");
+  makeBreak();
+  $action="browse";
+}
+
+/******************************** Export Rows *********************************/
+
+if($action=="exportrows") {
+  $table=acceptTableName();
+  $conditions=getSelectedRowsConditions($table);
+  if(count($conditions)) {
+    makeTableNavigation($table);
+    $query="";
+    foreach($conditions as $condition) {
+      $values=$database->getLine($table,$condition["sql"]);
+      $query.=$database->exportTableLine($table,$values);
+    }
+    makeNotification("dbadmin_exportrows_success");
+    makeBreak();
+    makeQuote($query);
+  }
+  else makeError("dbadmin_exportrows_failure");
+}
+
+/******************************** Browse Table ********************************/
+
+if($action=="browse") {
+  $table=acceptTableName();
+  $order=acceptTableOrder();
+  makeTableNavigation($table);
+  $addlink=array("dbadmin_browse_add"=>"dbadmin.php?action=addrow&table=$table");
+  makeLinks($addlink);
+  makeBreak();
+  $fields=$database->getFieldsList($table);
+  $columns=$database->getTableInformation($table);
+  $meanings=array();
+  foreach($columns["columns"] as $column) {
+    $type=$column["type"];
+    if($column["size"]) $type.="($column[size])";
+    $meanings[]=$database->getColumnMeaning($type);
+  }
+  $primary=$database->getKeyFields($table);
+  $data=getTablePagePortion($table,$order["sql"],"",RowsOnPage,$page,$total);
+  $columns=array();
+  foreach($fields as $title) {
+    $selected=$order["field"]==$title;
+    $param=($selected && !$order["reverse"])?"descorder":"ascorder";
+    $link="dbadmin.php?action=browse&table=$table&$param=$title";
+    $columns[]=compact("title","link","selected");
+  }
+  if(count($primary)) {
+    $columns[]=$language["dbadmin_browse_options"];
+    $columns[]="table:checkbox:rows[]";
+    $actions=array(
+      "removerows"=>$language["dbadmin_browse_removerows"],
+      "exportrows"=>$language["dbadmin_browse_exportrows"]);
+    makeTableScripts();
+    makeTableActionShort("header",$columns,"dbadmin",$language["dbadmin_browse_action"],$actions,false);
+    makeFormHidden("table",$table);
+  }
+  else makeTableShort("header",$columns,"","",false);
+  foreach($data as $row) {
+    foreach($fields as $index=>$field) {
+      $meaning=is_null($row[$field])?"null":$meanings[$index];
+      $decimal=$meaning=="int" || $meaning=="float";
+      $style=$decimal?array("align"=>"right"):array("wrap"=>true);
+      switch($meaning) {
+        case "null": makeTableCellNull(); break;
+        case "yesno": makeTableCellYesNo($row[$field]); break;
+        default: makeTableCellExact(prepareOutputValue($row[$field]),$style);
+      }
+    }
+    if(count($primary)) {
+      $conditions=array();
+      foreach($primary as $key) $conditions["key$key"]=urlencode($row[$key]);
+      $conditions=implodeAssigns("&",$conditions);
+      $links=array(
+        "dbadmin_browse_edit"=>"dbadmin.php?action=editrow&table=$table&$conditions",
+        "dbadmin_browse_remove"=>"dbadmin.php?action=removerow&table=$table&$conditions");
+      makeTableCellLinks($links);
+      makeTableCellCheckboxArray("rows[]",$conditions);
+    }
+  }
+  $link="dbadmin.php?action=browse&table=$table$order[param]&page=%s";
+  makeTablePager($page,$total,$link);
+  if(count($primary))
+    makeTableActionShort("footer"); else makeTableShort("footer");
+  makeBreak();
+  makeLinks($addlink);
+}
+
+/********************************* Add Fields *********************************/
+
+if($action=="addfields") {
+  $table=acceptTableName();
+  $count=acceptIntParameter("count",1,100);
+  $totalColumns=count($database->getFieldsList($table));
+  $place=acceptIntParameter("place",0,$totalColumns);
+  $columns=array(
+    "dbadmin_create_name",
+    "dbadmin_create_type",
+    "dbadmin_create_size",
+    array("title"=>"dbadmin_create_attrs","width"=>"100%"),
+    "dbadmin_create_default");
+  makeTable("header",$columns,"dbadmin","doaddfields");
+  makeFormHidden("table",$table);
+  makeFormHidden("count",$count);
+  makeFormHidden("place",$place);
+  for($index=0; $index<$count; $index++) {
+    makeTableCellInput("name[$index]");
+    makeTableCellChooser("type[$index]",getFieldTypes());
+    makeTableCellInput("size[$index]");
+    makeTableCellAttrs("attrs[$index]");
+    makeTableCellInput("default[$index]");
+  }
+  makeTable("footer");
+  makeBreak();
+  makeNotification("dbadmin_message_fieldnotes");
+}
+
+if($action=="doaddfields") {
+  $table=acceptTableName();
+  $count=acceptIntParameter("count",1,100);
+  $totalColumns=count($database->getFieldsList($table));
+  $place=acceptIntParameter("place",0,$totalColumns);
+  $fields=array();
+  for($index=0; $index<$count; $index++) {
+    $name=acceptStringParameter(array("name",$index));
+    $type=acceptStringParameter(array("type",$index));
+    $size=acceptStringParameter(array("size",$index));
+    $attrs=0;
+    for($attr=0; $attr<ColumnAttributesCount; $attr++)
+      $attrs+=acceptIntParameter(array("attrs",$index,$attr),0,1)<<$attr;
+    $default=acceptStringParameter(array("default",$index));
+    if($name=="") continue;
+    if(!preg_match("{^[\w\-]+\$}",$name))
+      makeAdminError("dbadmin_error_wrongfieldname");
+    $fields[]=compact("name","type","size","attrs","default");
+  }
+  if(!count($fields)) makeAdminError("dbadmin_error_nofields");
+  foreach($fields as $field) {
+    $type=$field["type"].($field["size"]?"($field[size])":"");
+    $success=$database->addColumn
+      ($table,$field["name"],$type,$field["attrs"],$place++,$field["default"]);
+    if(!$success) makeAdminError("dbadmin_addfields_failure",$field["name"]);
+    makeNotification("dbadmin_addfields_success",$field["name"]);
+  }
+  makeBreak();
+  $action="fields";
+}
+
+/***************************** Edit Field/Fields ******************************/
+
+if($action=="editfield" || $action=="editfields") {
+  $table=acceptTableName();
+  $field=acceptStringParameter("field");
+  $fields=$action=="editfield"?array($field):getSelectedFields($table);
+  if(count($fields)) {
+    $information=$database->getTableInformation($table);
+    $information=$information["columns"];
+    $columns=array(
+      "dbadmin_create_name",
+      "dbadmin_create_type",
+      "dbadmin_create_size",
+      array("title"=>"dbadmin_create_attrs","width"=>"100%"),
+      "dbadmin_create_default");
+    makeTable("header",$columns,"dbadmin","doeditfields");
+    makeFormHidden("table",$table);
+    foreach($fields as $field) {
+      $info=searchArrayLine($information,"name",$field);
+      makeFormHidden("fields[$field]",1);
+      makeTableCellInput("name[$field]",$info["name"]);
+      makeTableCellChooser("type[$field]",getFieldTypes(),$info["type"]);
+      makeTableCellInput("size[$field]",$info["size"]);
+      makeTableCellAttrs("attrs[$field]",$info["attrs"]);
+      makeTableCellInput("default[$field]",$info["default"]);
+    }
+    makeTable("footer");
+    makeBreak();
+    makeNotification("dbadmin_message_fieldnotes");
+  }
+  else makeError("dbadmin_error_nofields");
+}
+
+if($action=="doeditfields") {
+  $table=acceptTableName();
+  $fields=$database->getFieldsList($table);
+  foreach($fields as $field) {
+    if(!acceptIntParameter(array("fields",$field),0,1)) continue;
+    $name=acceptStringParameter(array("name",$field));
+    $type=acceptStringParameter(array("type",$field));
+    $size=acceptStringParameter(array("size",$field));
+    $attrs=0;
+    for($attr=0; $attr<ColumnAttributesCount; $attr++)
+      $attrs+=acceptIntParameter(array("attrs",$field,$attr),0,1)<<$attr;
+    $default=acceptStringParameter(array("default",$field));
+    if(!preg_match("{^[\w\-]+\$}",$name))
+      makeAdminError("dbadmin_error_wrongfieldname");
+    if($size) $type.="($size)";
+    $success=$database->modifyColumn($table,$field,$name,$type,$attrs,$default);
+    if(!$success) makeAdminError("dbadmin_editfields_failure",$field);
+    makeNotification("dbadmin_editfields_success",$field);
+  }
+  makeBreak();
+  $action="fields";
+}
+
+/**************************** Remove Field/Fields *****************************/
+
+if($action=="removefield" || $action=="removefields") {
+  $table=acceptTableName();
+  $field=acceptStringParameter("field");
+  $fields=$action=="removefield"?array($field):getSelectedFields($table);
+  $count=count($fields);
+  if($count) {
+    $prompt="dbadmin_removefields_prompt".($count==1?"once":"multi");
+    $info=$count==1?$fields[0]:$count;
+    $prompt=format($language[$prompt],htmlspecialchars($info));
+    makePromptForm("header",$prompt,"dbadmin","doremovefields",false);
+    makeFormHidden("table",$table);
+    foreach($fields as $field) makeFormHidden("fields[]",$field);
+    makePromptForm("footer");
+  }
+  else makeError("dbadmin_error_nofields");
+}
+
+if($action=="doremovefields") {
+  $table=acceptTableName();
+  $fields=getSelectedFields($table);
+  foreach($fields as $field) {
+    $success=$database->deleteColumn($table,$field);
+    if(!$success) makeAdminError("dbadmin_removefields_failure",$field);
+    makeNotification("dbadmin_removefields_success",$field);
+  }
+  makeBreak();
+  $action="fields";
+}
+
+/********************************* Add Index **********************************/
+
+if($action=="addindex") {
+  $table=acceptTableName();
+  $count=acceptIntParameter("count",1,100);
+  $information=$database->getTableInformation($table);
+  $name=isset($information["uniques"]["PRIMARY"])?"":"PRIMARY";
+  $fields=$database->getFieldsList($table);
+  $fields=combineArrays($fields,$fields);
+  makeForm("header","dbadmin_addindex_form2","dbadmin","doaddindex");
+  makeFormHidden("table",$table);
+  makeFormHidden("count",$count);
+  makeFormInput("dbadmin_addindex_name","dbadmin_addindex_namedesc","name",$name);
+  makeFormYesNo("dbadmin_addindex_unique","","unique",$name=="PRIMARY");
+  for($index=0; $index<$count; $index++) makeFormChooserInput
+    ("dbadmin_addindex_fieldsize","","fields[$index]","sizes[$index]",$fields);
+  makeForm("footer");
+}
+
+if($action=="doaddindex") {
+  $table=acceptTableName();
+  $count=acceptIntParameter("count",1,100);
+  $indexname=acceptStringParameter("name");
+  $unique=acceptIntParameter("unique",0,1);
+  if(preg_match("{^[\w\-]*\$}",$indexname)) {
+    $fields=array();
+    for($index=0; $index<$count; $index++) {
+      $name=acceptStringParameter(array("fields",$index));
+      $size=acceptIntParameter(array("sizes",$index),0);
+      $fields[]=compact("name","size");
+    }
+    $success=$database->addIndex($table,$indexname,$unique,$fields);
+    if($success) {
+      makeNotification("dbadmin_addindex_success");
+      makeBreak();
+      $action="fields";
+    }
+    else makeError("dbadmin_addindex_failure");
+  }
+  else makeError("dbadmin_error_wrongindexname");
+}
+
+/******************************** Remove Index ********************************/
+
+if($action=="removeindex") {
+  $table=acceptTableName();
+  $index=acceptStringParameter("index");
+  makePrompt("dbadmin_removeindex_prompt","dbadmin.php?action=doremoveindex&table=$table&index=$index");
+}
+
+if($action=="doremoveindex") {
+  $table=acceptTableName();
+  $index=acceptStringParameter("index");
+  $success=$database->deleteIndex($table,$index);
+  if($success) {
+    makeNotification("dbadmin_removeindex_success");
+    makeBreak();
+    $action="fields";
+  }
+  else makeError("dbadmin_removeindex_failure");
+}
+
+/****************************** Table Structure *******************************/
+
+if($action=="fields") {
+  $table=acceptTableName();
+  makeTableNavigation($table);
+  $information=$database->getTableInformation($table);
+  $primary=$database->getKeyFields($table);
+  $columns=array(
+    "dbadmin_fields_name",
+    "dbadmin_fields_type",
+    "dbadmin_fields_size",
+    "dbadmin_fields_attrs",
+    "dbadmin_fields_default",
+    array("title"=>"dbadmin_fields_options","width"=>"20%"),
+    array("title"=>"table:checkbox:fields[]","width"=>"1%"));
+  $actions=array(
+    "editfields"=>"dbadmin_fields_edit",
+    "removefields"=>"dbadmin_fields_remove");
+  makeTableScripts();
+  makeTableAction("header",$columns,"dbadmin","dbadmin_fields_actions",$actions);
+  makeFormHidden("table",$table);
+  foreach($information["columns"] as $column) {
+    $title="[b]$column[name][/b]";
+    if(in_array($column["name"],$primary)) $title="[u]{$title}[/u]";
+    $attrs=array();
+    for($index=0; $index<ColumnAttributesCount; $index++)
+      if($column["attrs"]&(1<<$index))
+        $attrs[]=$language["dbadmin_fields_attr$index"];
+    $links=array(
+      "dbadmin_fields_edit"=>"dbadmin.php?action=editfield&table=$table&field=$column[name]",
+      "dbadmin_fields_remove"=>"dbadmin.php?action=removefield&table=$table&field=$column[name]");
+    makeTableCellSimple($title);
+    makeTableCellSimple(ucfirst(strtolower($column["type"])));
+    makeTableCellSimple($column["size"]);
+    makeTableCellSimple(implode(", ",$attrs));
+    makeTableCellSimple($column["default"]);
+    makeTableCellLinks($links);
+    makeTableCellCheckboxArray("fields[]",$column["name"]);
+  }
+  makeTableAction("footer");
+  makeBreak();
+  $totalColumns=count($information["columns"]);
+  $options=array($language["dbadmin_addfields_first"]);
+  foreach($information["columns"] as $column) $options[]=
+    format($language["dbadmin_addfields_after"],$column["name"]);
+  $options[$totalColumns]=$language["dbadmin_addfields_last"];
+  makeForm("header","dbadmin_addfields_form","dbadmin","addfields");
+  makeFormHidden("table",$table);
+  makeFormInput("dbadmin_addfields_count","","count",1);
+  makeFormChooser("dbadmin_addfields_place","","place",$totalColumns,$options);
+  makeForm("footer");
+  makeBreak(2);
+  $subjects=array("uniques","indexes");
+  $columns=array(
+    array("title"=>"dbadmin_indexes_name","width"=>"20%"),
+    array("title"=>"dbadmin_indexes_unique","width"=>"15%"),
+    "dbadmin_indexes_fields",
+    array("title"=>"dbadmin_indexes_options","width"=>"15%"));
+  makeTable("header",$columns);
+  if(!isset($information["uniques"]["PRIMARY"]))
+    makeTableCellSimple($language["dbadmin_indexes_noprimary"],
+      array("colspan"=>4,"align"=>"center"));
+  foreach($subjects as $subject)
+    foreach($information[$subject] as $name=>$index) {
+      $fields=array();
+      foreach($index as $part)
+        $fields[]=$part["name"].($part["size"]?"($part[size])":"");
+      $links=array("dbadmin_indexes_remove"=>"dbadmin.php?action=removeindex&table=$table&index=$name");
+      makeTableCellSimple("[b]{$name}[/b]");
+      makeTableCellYesNo($subject=="uniques");
+      makeTableCellSimple(implode(", ",$fields));
+      makeTableCellLinks($links);
+    }
+  makeTable("footer");
+  makeBreak();
+  makeForm("header","dbadmin_addindex_form1","dbadmin","addindex");
+  makeFormHidden("table",$table);
+  makeFormInput("dbadmin_addindex_count","","count",1);
+  makeForm("footer");
+}
+
+/******************************** Table Search ********************************/
+
+if($action=="search") {
+  $table=acceptTableName();
+  makeTableNavigation($table);
+  $information=$database->getTableInformation($table);
+  makeForm("header","dbadmin_search_form","dbadmin","dosearch");
+  makeFormHidden("table",$table);
+  foreach($information["columns"] as $index=>$column) {
+    $title=format($language["dbadmin_search_field"],$column["name"]);
+    $options=getCompareOptions($column["attrs"]&ColumnAttributeNull);
+    $options=extractArrayColumn($options,"title");
+    $meaning=$database->getColumnMeaning($column["type"]);
+    $default=($meaning=="input" || $meaning=="textarea")?"like":false;
+    makeFormChooserInput($title,"","condition[$index]","value[$index]",$options,$default,"",false);
+  }
+  makeForm("separator","dbadmin_search_separator");
+  $options=array(""=>$language["dbadmin_search_noorder"]);
+  foreach($information["columns"] as $column) {
+    $name=$column["name"];
+    $options[$name]=format($language["dbadmin_search_orderasc"],$name);
+    $options["$name DESC"]=format($language["dbadmin_search_orderdesc"],$name);
+  }
+  makeFormChooser("dbadmin_search_order","","order",false,$options);
+  makeFormInput("dbadmin_search_offset","","offset",0);
+  makeFormInput("dbadmin_search_count","","count",100);
+  makeForm("footer");
+}
+
+if($action=="dosearch") {
+  $table=acceptTableName();
+  $order=acceptStringParameter("order");
+  $offset=acceptIntParameter("offset",0);
+  $count=acceptIntParameter("count",0);
+  $columns=$database->getFieldsList($table);
+  $options=getCompareOptions();
+  $conditions=array();
+  foreach($columns as $index=>$column) {
+    $condition=acceptStringParameter(array("condition",$index));
+    $value=acceptStringParameter(array("value",$index));
+    if($value=="") continue;
+    $sql=$options[$condition]["sql"];
+    $conditions[]=format($sql,array($column,slashes($value)));
+  }
+  if(count($conditions)) {
+    makeTableNavigation($table);
+    $conditions=implode(" AND ",$conditions);
+    if($order!="")
+      $result=$database->getOrderedLinesRange($table,$order,$offset,$count,$conditions);
+      else $result=$database->getLinesRange($table,$offset,$count,$conditions);
+    if(count($result)) {
+      makeNotification("dbadmin_search_success1");
+      makeBreak();
+      makeQueryResult($result,$table);
+    }
+    else makeNotification("dbadmin_search_success2");
+  }
+  else makeError("dbadmin_search_failure");
+}
+
+/****************************** Table Properties ******************************/
+
+if($action=="doedit") {
+  $table=acceptTableName();
+  $name=acceptStringParameter("name");
+  $type=acceptStringParameter("type");
+  $comment=acceptStringParameter("comment");
+  $information=$database->getTablesInformation();
+  $information=$information[$table];
+  $changes=false;
+  if($name!=$table) {
+    if(!preg_match("{^[\w\-]+\$}",$name))
+      makeAdminError("dbadmin_error_wrongtablename");
+    $success=$database->renameTable($table,$name);
+    if(!$success) makeAdminError("dbadmin_edit_changename_failure");
+    $table=$name;
+    sendParameter("table",$table);
+    makeNotification("dbadmin_edit_changename_success");
+    $changes=true;
+  }
+  if($type!=$information["type"]) {
+    $success=$database->changeTableType($table,$type);
+    if(!$success) makeAdminError("dbadmin_edit_changetype_failure");
+    makeNotification("dbadmin_edit_changetype_success");
+    $changes=true;
+  }
+  if($comment!=$information["comment"]) {
+    $success=$database->changeTableComment($table,$comment);
+    if(!$success) makeAdminError("dbadmin_edit_changecomment_failure");
+    makeNotification("dbadmin_edit_changecomment_success");
+    $changes=true;
+  }
+  if($changes) makeBreak();
+  $action="edit";
+}
+
+if($action=="edit") {
+  $table=acceptTableName();
+  makeTableNavigation($table);
+  $information=$database->getTablesInformation();
+  $information=$information[$table];
+  $columns=array(
+    array("title"=>"dbadmin_statistics_param","width"=>"50%"),
+    "dbadmin_statistics_value");
+  $statistics=array(
+    "name"=>$table,
+    "type"=>$information["type"],
+    "comment"=>$information["comment"],
+    "rows"=>formatInteger($information["rows"]),
+    "datasize"=>format($language["dbadmin_statistics_bytes"],$information["datasize"]),
+    "indexsize"=>format($language["dbadmin_statistics_bytes"],$information["indexsize"]),
+    "size"=>format($language["dbadmin_statistics_bytes"],$information["size"]),
+    "counter"=>formatInteger($information["counter"]));
+  makeTable("header",$columns);
+  foreach($statistics as $param=>$value) {
+    makeTableCellSimple($language["dbadmin_statistics_$param"]);
+    makeTableCellSimple($value);
+  }
+  makeTable("footer");
+  makeBreak();
+  $types=$database->getTableTypes();
+  $types=combineArrays($types,$types);
+  makeForm("header","dbadmin_edit_form","dbadmin","doedit");
+  makeFormHidden("table",$table);
+  makeFormInput("dbadmin_edit_name","","name",$table);
+  makeFormChooser("dbadmin_edit_type","","type",$information["type"],$types);
+  makeFormInput("dbadmin_edit_comment","","comment",$information["comment"]);
+  makeForm("footer");
+}
+
+/*********************************** Image ************************************/
+
+if($action=="image") {
+  $image=acceptStringParameter("image",100);
+  switch($image) {
+    case "iconempty": $content="R0lGODlhDgAQAMQeANra7e3t9+fn9PX1+vf3+9jY7OHh8d/f8La23Ozs9szM5re33enp9c7O6NnZ7eTk8r+/4Pb2++jo9ODg8MbG4/Hx+Lq63tTU6vLy+fPz+u3t9sTE47Cw2QAAAAAAAAAAACH5BAEAAB4ALAAAAAAOABAAAAVWoCeOZCl2aKp2YxcRxIAFwgSw56AlwnFRCA7O08kwVhxhq/IwABqQpPIUuKmSw45EsVlIsS2DpfMFnwBSVPrkwAqFZFyn8CWv7en6ie7GDokrKCaDJSEAOw=="; break;
+    case "iconnormal": $content="R0lGODlhDgAQAMQfAP/96P/7z//7zP/94f/+8v/4rP/94P/82P/6vf/5tf/83P/81v/81//4oP/95//+7v/6wP/82f/+7f/7x//+8P/8z//94//4o//7zv/5s//+9f/4pv/+8//3mQAAAAAAACH5BAEAAB8ALAAAAAAOABAAAAVW4CeOZCl6aKp6o8dpGvEABhOwJwE4wzIljQ7u46FYVh1hS6KIBCCFpPIEuKmSQ88AkblIsa3DxvMFnypSVPqEwQqFZJxH8CWv7en6ie7GDokrKCaDJSEAOw=="; break;
+    default: $content="R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==";
+  }
+  makeImage("image/gif",base64_decode($content));
+}
+
+/******************************************************************************/
+
+makeAdminPage("footer");
+
+?>
diff --git a/admin/statistics.php b/admin/statistics.php
new file mode 100644
index 0000000..23e0475
--- /dev/null
+++ b/admin/statistics.php
@@ -0,0 +1,337 @@
+<?php
+
+// PHPC Control Panel Plugin (50.25) - Statistics v1.4 by Dagdamor
+
+// PHP Compiler by Serge Igitov (Dagdamor), Version 2.4.5, Copyright 2007
+// Released under the LGPL License (www.gnu.org/copyleft/lesser.html)
+
+/*
+
+// Main Menu Construction Code
+makeMenuGroup("header","statistics_menu");
+if($database->isTablePresent("statistics")) {
+  makeMenuItem("statistics_overview","statistics.php?action=overview");
+  makeMenuItem("statistics_common","statistics.php?action=common");
+  makeMenuItem("statistics_referers","statistics.php?action=referers");
+  makeMenuItem("statistics_oneday","statistics.php?action=oneday");
+}
+else makeMenuItem("admin_install","statistics.php?action=install");
+makeMenuGroup("footer");
+
+*/
+
+require "global.php";
+
+define("CounterDefaultWidth",88);
+define("CounterDefaultHeight",31);
+define("ReferersOnPage",50);
+
+adminLog();
+$action=acceptStringParameter("action");
+
+makeAdminPage("header");
+
+/********************************* Functions **********************************/
+
+function makeTableCellQuota($quota, $color=0)
+{
+  static $autoColor=1;
+  if(!$color) { $color=$autoColor; $autoColor=$autoColor%4+1; }
+  $link="statistics.php?action=image&image=bar";
+  $width=max(round($quota*100)-5,0);
+  makeTableCell("header");
+  echo "<img width=\"3\" height=\"10\" border=\"0\" src=\"$link{$color}l\">";
+  echo "<img width=\"$width%\" height=\"10\" border=\"0\" src=\"$link{$color}c\">";
+  echo "<img width=\"3\" height=\"10\" border=\"0\" src=\"$link{$color}r\">";
+  makeTableCell("footer");
+}
+
+function makeTableCellDoubleQuota($quota1, $quota2, $color1=3, $color2=1)
+{
+  $link="statistics.php?action=image&image=bar";
+  $width1=max(round($quota1*100)-5,0);
+  $width2=max(round($quota2*100)-5,0);
+  makeTableCell("header");
+  echo "<img width=\"3\" height=\"10\" border=\"0\" src=\"$link{$color1}l\">";
+  echo "<img width=\"$width1%\" height=\"10\" border=\"0\" src=\"$link{$color1}c\">";
+  echo "<img width=\"3\" height=\"10\" border=\"0\" src=\"$link{$color1}r\"><br>";
+  echo "<img width=\"3\" height=\"10\" border=\"0\" src=\"$link{$color2}l\">";
+  echo "<img width=\"$width2%\" height=\"10\" border=\"0\" src=\"$link{$color2}c\">";
+  echo "<img width=\"3\" height=\"10\" border=\"0\" src=\"$link{$color2}r\">";
+  makeTableCell("footer");
+}
+
+/**************************** Plugin Installation *****************************/
+
+if($action=="install") {
+  if($database->isTablePresent("statistics")) {
+    makeError("admin_error_already");
+    makeBreak();
+    makeRefreshMenuLink();
+  }
+  else {
+    makeNotification("admin_installstart");
+    $success=false;
+    switch($database->type) {
+      case "mysql":
+      case "dagsql":
+        $database->customQuery("CREATE TABLE statistics (".
+          "date DATE NOT NULL,".
+          "hits INT NOT NULL,".
+          "hosts INT NOT NULL,".
+          "online INT NOT NULL,".
+          "PRIMARY KEY (date))");
+        makeNotification("admin_installtable","statistics");
+        $database->customQuery("CREATE TABLE statreferers (".
+          "id INT NOT NULL AUTO_INCREMENT,".
+          "address TINYTEXT NOT NULL,".
+          "counter INT NOT NULL,".
+          "lastclick INT NOT NULL,".
+          "PRIMARY KEY (id),".
+          "UNIQUE KEY address (address(50)))");
+        makeNotification("admin_installtable","statreferers");
+        $success=true;
+        break;
+    }
+    if($success) {
+      $values=array("date"=>"0000-00-00");
+      $database->addLine("statistics",$values);
+      makeNotification("admin_installdata","statistics");
+      makeNotification("admin_installsuccess");
+      makeBreak();
+      makeRefreshMenuLink();
+    }
+    else makeWrongDBError();
+  }
+}
+
+/********************************** Overview **********************************/
+
+if($action=="overview") {
+  $phpctime=phpctime();
+  $date=date("Y-m-d",$phpctime);
+  $total=$database->getLine("statistics","date='0000-00-00'");
+  $today=$database->getLine("statistics","date=".slashes($date));
+  $minimalTime=$phpctime-PhpcSessionTimeout;
+  $online=$database->getLinesCount("sessions","lastactivity>=$minimalTime");
+  $columns=array(
+    array("title"=>"statistics_overview_name","width"=>"80%"),
+    "statistics_overview_value");
+  makeTable("header",$columns);
+  makeTableCellSimple("statistics_overview_counter",array(),true);
+  makeTableCellImageSize(CounterDefaultWidth,CounterDefaultHeight,"/phpc/counter.php");
+  $statistics=array(
+    "statistics_overview_sumhits"=>(int)$total["hits"],
+    "statistics_overview_sumhosts"=>(int)$total["hosts"],
+    "statistics_overview_maxonline"=>(int)$total["online"],
+    "statistics_overview_hits"=>(int)$today["hits"],
+    "statistics_overview_hosts"=>(int)$today["hosts"],
+    "statistics_overview_online"=>(int)$online);
+  foreach($statistics as $name=>$value) {
+    makeTableCellSimple($name,array(),true);
+    makeTableCellSimple($value);
+  }
+  makeTable("footer");
+}
+
+/*********************************** Common ***********************************/
+
+if($action=="common") {
+  $statistics=$database->getOrderedLines("statistics","date DESC","date!='0000-00-00'");
+  $months=array();
+  foreach($statistics as $day) {
+    $month=substr($day["date"],0,7);
+    if(!isset($months[$month])) $months[$month]=array("hits"=>0,"hosts"=>0);
+    $months[$month]["hits"]+=$day["hits"];
+    $months[$month]["hosts"]+=$day["hosts"];
+  }
+  $maxValue=1;
+  foreach($months as $month) {
+    $maxValue=max($maxValue,$month["hits"]);
+    $maxValue=max($maxValue,$month["hosts"]);
+  }
+  $columns=array(
+    array("title"=>"statistics_common_date","width"=>"15%"),
+    array("title"=>"statistics_common_quota","width"=>"50%"),
+    "statistics_common_hits",
+    "statistics_common_hosts",
+    "statistics_common_options");
+  makeTable("header",$columns);
+  $sumHits=$sumHosts=0;
+  $prevyear=false;
+  foreach($months as $key=>$entry) {
+    $year=(int)substr($key,0,4);
+    $month=(int)substr($key,5,2);
+    if($prevyear!==false && $year!=$prevyear) {
+      makeTableTotals(array("","",$sumHits,$sumHosts));
+      makeTable("footer");
+      makeBreak();
+      makeTable("header",$columns);
+      $sumHits=$sumHosts=0;
+    }
+    $prevyear=$year;
+    $time=mktime(0,0,0,$month,1,$year);
+    $date=phpcdate($language["statistics_common_format"],$time);
+    $sumHits+=$entry["hits"];
+    $sumHosts+=$entry["hosts"];
+    $links=array("statistics_common_detailed"=>"statistics.php?action=detailed&year=$year&month=$month");
+    makeTableCellSimple($date);
+    makeTableCellDoubleQuota($entry["hits"]/$maxValue,$entry["hosts"]/$maxValue);
+    makeTableCellSimple($entry["hits"],array("align"=>"right"));
+    makeTableCellSimple($entry["hosts"],array("align"=>"right"));
+    makeTableCellLinks($links);
+  }
+  makeTableTotals(array("","",$sumHits,$sumHosts));
+  makeTable("footer");
+}
+
+/********************************** Detailed **********************************/
+
+if($action=="detailed") {
+  $year=acceptIntParameter("year",2000);
+  $month=acceptIntParameter("month",1,12);
+  $mask=$year."-".($month<10?"0":"").$month."-%";
+  $statistics=$database->getOrderedLines("statistics","date DESC","date LIKE ".slashes($mask));
+  $maxValue=1;
+  foreach($statistics as $entry) {
+    $maxValue=max($maxValue,$entry["hits"]);
+    $maxValue=max($maxValue,$entry["hosts"]);
+  }
+  $columns=array(
+    array("title"=>"statistics_detailed_date","width"=>"15%"),
+    array("title"=>"statistics_detailed_quota","width"=>"55%"),
+    array("title"=>"statistics_detailed_hits","width"=>"10%"),
+    array("title"=>"statistics_detailed_hosts","width"=>"10%"),
+    "statistics_detailed_online");
+  makeTable("header",$columns);
+  $sumHits=$sumHosts=0;
+  foreach($statistics as $entry) {
+    $year=(int)substr($entry["date"],0,4);
+    $month=(int)substr($entry["date"],5,2);
+    $day=(int)substr($entry["date"],8,2);
+    $time=mktime(0,0,0,$month,$day,$year);
+    $date=phpcdate($language["format_datetime"]["date"],$time);
+    $sumHits+=$entry["hits"];
+    $sumHosts+=$entry["hosts"];
+    makeTableCellSimple($date);
+    makeTableCellDoubleQuota($entry["hits"]/$maxValue,$entry["hosts"]/$maxValue);
+    makeTableCellSimple($entry["hits"],array("align"=>"right"));
+    makeTableCellSimple($entry["hosts"],array("align"=>"right"));
+    makeTableCellSimple($entry["online"],array("align"=>"right"));
+  }
+  makeTableTotals(array("","",$sumHits,$sumHosts));
+  makeTable("footer");
+}
+
+/********************************** Referers **********************************/
+
+if($action=="referers") {
+  $full=acceptIntParameter("full",0,1);
+  if(!$full) {
+    $links=array("statistics_referers_full"=>"statistics.php?action=referers&full=1");
+    makeLinks($links);
+    makeBreak();
+  }
+  $order="counter DESC,address";
+  $conditions=$full?"":("lastclick>=".(phpctime()-OneMonth));
+  $totalCounter=$database->getLinesFunction("statreferers","SUM(counter)",$conditions);
+  $maxCounter=$database->getMaxField("statreferers","counter",$conditions);
+  if(!$totalCounter) $totalCounter=$maxCounter=1;
+  $referers=getTablePagePortion("statreferers",$order,$conditions,ReferersOnPage,$page,$total);
+  $columns=array(
+    "statistics_referers_address",
+    array("title"=>"statistics_referers_quota","width"=>"40%"),
+    "statistics_referers_count",
+    "statistics_referers_percent",
+    "statistics_referers_lastclick");
+  makeTable("header",$columns);
+  foreach($referers as $referer) {
+    $address=$referer["address"];
+    //if(substr_count($address,".")==1) $address="www.".$address;
+    //$title="[url=http://$address]$referer[address][/url]";
+    $title="[url=http://$referer[address]]$referer[address][/url]";
+    $percent=formatFloat($referer["counter"]/$totalCounter*100)."%";
+    $lastclick=phpcdate($language["format_datetime"]["datetime"],$referer["lastclick"]);
+    makeTableCellSimple($title);
+    makeTableCellQuota($referer["counter"]/$maxCounter);
+    makeTableCellSimple($referer["counter"],array("align"=>"right"));
+    makeTableCellSimple($percent,array("align"=>"right"));
+    makeTableCellSimple($lastclick);
+  }
+  makeTablePager($page,$total,"statistics.php?action=referers&full=$full&page=%s");
+  makeTable("footer");
+}
+
+/********************************** Referers **********************************/
+
+if($action=="oneday") {
+  $full=acceptIntParameter("full",0,1);
+  if(!$full) {
+    $links=array("statistics_referers_full"=>"statistics.php?action=referers&full=1");
+    makeLinks($links);
+    makeBreak();
+  }
+  $order="counter DESC,address";
+  $conditions=$full?"":("lastclick>=".(phpctime()-OneDay));
+  $totalCounter=$database->getLinesFunction("statreferers","SUM(counter)",$conditions);
+  $maxCounter=$database->getMaxField("statreferers","counter",$conditions);
+  if(!$totalCounter) $totalCounter=$maxCounter=1;
+  $referers=getTablePagePortion("statreferers",$order,$conditions,ReferersOnPage,$page,$total);
+  $columns=array(
+    array("width"=>"3%"),
+    "statistics_referers_address",
+    array("title"=>"statistics_referers_quota","width"=>"40%"),
+    "statistics_referers_count",
+    "statistics_referers_percent",
+    "statistics_referers_lastclick");
+  makeTable("header",$columns);
+  $i=0;
+  foreach($referers as $referer) {
+    $i++;
+    $address=$referer["address"];
+    //if(substr_count($address,".")==1) $address="www.".$address;
+    //$title="[url=http://$address]$referer[address][/url]";
+    $title="[url=http://$referer[address]]$referer[address][/url]";
+    $percent=formatFloat($referer["counter"]/$totalCounter*100)."%";
+    $lastclick=phpcdate($language["format_datetime"]["datetime"],$referer["lastclick"]);
+    makeTableCellSimple($i,array("align"=>"right"));
+    makeTableCellSimple($title);
+    makeTableCellQuota($referer["counter"]/$maxCounter);
+    makeTableCellSimple($referer["counter"],array("align"=>"right"));
+    makeTableCellSimple($percent,array("align"=>"right"));
+    makeTableCellSimple($lastclick);
+  }
+  makeTablePager($page,$total,"statistics.php?action=referers&full=$full&page=%s");
+  makeTable("footer");
+}
+
+/*********************************** Image ************************************/
+
+if($action=="image") {
+  $image=acceptStringParameter("image",100);
+  switch($image) {
+    case "bar1l": $content="R0lGODlhAwAKALMAADkAAAgAAFoICKUQEHsQEN4hIc4hIf85Of9SUudaWv9ra/+EhP+cnP+trQAAAAAAACwAAAAAAwAKAAAEExCdctgqqxm1dueegSQDAQiBEwEAOw=="; break;
+    case "bar1c": $content="R0lGODlhAQAKAKIAACkAANYhIcZCQv9ra/dra/+EhAAAAAAAACwAAAAAAQAKAAADBhhT1CTAJAA7"; break;
+    case "bar1r": $content="R0lGODlhAwAKALMAADkAACkAACEAAAgAAFoICKUQEHsQEM4hIZwxMf9SUsZCQudaWgAAAAAAAAAAAAAAACwAAAAAAwAKAAAEEfAUksxYgKmg+e4MIjAjYzIRADs="; break;
+    case "bar2l": $content="R0lGODlhAwAKAMQAAL3/98b/76X/1hBCKTmta5z/xnPGlDmlY1rejHPenCmESiFjOUK1a3P/pYz/tRAxGAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAAwAKAAAFFWCDMAggMEJAOMXasu6RGMryDFAUAgA7"; break;
+    case "bar2c": $content="R0lGODlhAQAKAKIAADmta5z/xoz/tXvWnFqlcwghEAAAAAAAACwAAAAAAQAKAAADBggS00PFJAA7"; break;
+    case "bar2r": $content="R0lGODlhAwAKALMAAAgYEBBKKXPGlDmlYymESiFjOWvelEKEWlqlcwghEBAxGAAIAAAAAAAAAAAAAAAAACwAAAAAAwAKAAAEEXCQYMoSiqGk8+7MATAjYzIRADs="; break;
+    case "bar3l": $content="R0lGODlhAwAKALMAAAAAOQAACAgIWhAQpRAQeyEh3iEhzjk5/1JS/1pa52tr/4SE/5yc/62t/wAAAAAAACwAAAAAAwAKAAAEExCdctgqqxm1dueegSQDAQiBEwEAOw=="; break;
+    case "bar3c": $content="R0lGODlhAQAKAKIAAAAAKSEh1kJCxmtr/2tr94SE/wAAAAAAACwAAAAAAQAKAAADBhhT1CTAJAA7"; break;
+    case "bar3r": $content="R0lGODlhAwAKALMAAAAAOQAAKQAAIQAACAgIWhAQpRAQeyEhzjExnFJS/0JCxlpa5wAAAAAAAAAAAAAAACwAAAAAAwAKAAAEEfAUksxYgKmg+e4MIjAjYzIRADs="; break;
+    case "bar4l": $content="R0lGODlhAwAKAMQAAAgIAP//hP//nP//rf/nhP/ea//WUqVrEHtSEP+1Of+9Ulo5CN6UIdaMIeetWjkhAM6EIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAAwAKAAAFFaCRMIkQMMHQFMTasi6kOAfyLEAUAgA7"; break;
+    case "bar4c": $content="R0lGODlhAQAKAKIAAP/nhP/ea8aUQtaMISkYAPe9awAAAAAAACwAAAAAAQAKAAADBjgB1SXEJAA7"; break;
+    case "bar4r": $content="R0lGODlhAwAKALMAAAgIAKVrEHtSEJxzMf+9UsaUQlo5COetWjkhACkYAM6EISEQAAAAAAAAAAAAAAAAACwAAAAAAwAKAAAEEVAFQwQ4iJWk+e7MsDAcYzIRADs="; break;
+    default: $content="R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==";
+  }
+  makeImage("image/gif",base64_decode($content));
+}
+
+/******************************************************************************/
+
+echo "<script src=\"/js/jquery-1.6.min.js\"></script>\r\n";
+echo "<script src=\"/js/main.js?".phpctime()."\"></script>\r\n";
+
+makeAdminPage("footer");
+
+?>
diff --git a/images/statistics/counter.png b/images/statistics/counter.png
new file mode 100644
index 0000000000000000000000000000000000000000..c5889d71330a882e70523606f792d8064b9727b1
GIT binary patch
diff --git a/images/statistics/digits.png b/images/statistics/digits.png
new file mode 100644
index 0000000000000000000000000000000000000000..27621ca9acdf3b8ff4f6f78b4046fce97bd0b05e
GIT binary patch
diff --git a/language/en/dbadmin_en.php b/language/en/dbadmin_en.php
new file mode 100644
index 0000000..d52c17e
--- /dev/null
+++ b/language/en/dbadmin_en.php
@@ -0,0 +1,230 @@
+<?php
+
+$language["dbadmin_menu"]="Database Management";
+$language["dbadmin_add"]="Add";
+$language["dbadmin_modify"]="Modify";
+$language["dbadmin_sql"]="SQL";
+$language["dbadmin_export"]="Export Tables";
+$language["dbadmin_import"]="Import Tables";
+
+/******************************************************************************/
+
+$language["dbadmin_add_form"]="Add New Table";
+$language["dbadmin_add_name"]="Table Name:";
+$language["dbadmin_add_fields"]="Number of Fields:";
+
+$language["dbadmin_create_name"]="Field Name";
+$language["dbadmin_create_type"]="Type";
+$language["dbadmin_create_size"]="Size*";
+$language["dbadmin_create_attrs"]="N B U Z A**";
+$language["dbadmin_create_default"]="Default Value";
+$language["dbadmin_create_primary"]="Primary";
+
+$language["dbadmin_action_success"]="Action processed successfully!";
+$language["dbadmin_action_failure"]="No tables selected.";
+$language["dbadmin_action_optimizegroup"]="Optimizing table &quot;%s&quot;... Done";
+$language["dbadmin_action_arrangegroup"]="Arranging table &quot;%s&quot;... Done";
+$language["dbadmin_action_repairgroup"]="Repairing table &quot;%s&quot;... Done";
+$language["dbadmin_action_cleargroup_promptonce"]="Are you sure you want to clear table &quot;%s&quot;?";
+$language["dbadmin_action_cleargroup_promptmulti"]="Are you sure you want to clear these tables (%s)?";
+$language["dbadmin_action_cleargroup"]="Clearing table &quot;%s&quot;... Done";
+$language["dbadmin_action_removegroup_promptonce"]="Are you sure you want to delete table &quot;%s&quot;?";
+$language["dbadmin_action_removegroup_promptmulti"]="Are you sure you want to delete these tables (%s)?";
+$language["dbadmin_action_removegroup"]="Deleting table &quot;%s&quot;... Done";
+
+$language["dbadmin_modify_name"]="Table";
+$language["dbadmin_modify_type"]="Type";
+$language["dbadmin_modify_rows"]="Rows";
+$language["dbadmin_modify_size"]="Size";
+$language["dbadmin_modify_comment"]="Comment";
+$language["dbadmin_modify_options"]="Options";
+$language["dbadmin_modify_browse"]="Browse";
+$language["dbadmin_modify_fields"]="Structure";
+$language["dbadmin_modify_search"]="Search";
+$language["dbadmin_modify_addrow"]="Add Row";
+$language["dbadmin_modify_action"]="Selected tables:";
+$language["dbadmin_modify_optimize"]="Optimize";
+$language["dbadmin_modify_arrange"]="Arrange by key";
+$language["dbadmin_modify_repair"]="Repair";
+$language["dbadmin_modify_export"]="Export";
+$language["dbadmin_modify_clear"]="Clear";
+$language["dbadmin_modify_remove"]="Delete";
+$language["dbadmin_modify_kb"]="%d Kb";
+
+/******************************************************************************/
+
+$language["dbadmin_navigation_headline"]="Table: %s (Rows: %d)";
+$language["dbadmin_navigation_browse"]="Browse";
+$language["dbadmin_navigation_fields"]="Structure";
+$language["dbadmin_navigation_search"]="Search";
+$language["dbadmin_navigation_edit"]="Properties";
+$language["dbadmin_navigation_clear"]="Clear";
+$language["dbadmin_navigation_remove"]="Delete";
+
+/******************************************************************************/
+
+$language["dbadmin_addrow_form"]="Add New Row to the Table &quot;%s&quot;";
+$language["dbadmin_addrow_success"]="Row added!";
+$language["dbadmin_addrow_failure"]="Unable to add row. Maybe some fields violate table constraints.";
+$language["dbadmin_editrow_form"]="Edit Row in the Table &quot;%s&quot;";
+$language["dbadmin_editrow_success"]="Row updated!";
+$language["dbadmin_editrow_failure"]="Unable to update row. Maybe some fields violate table constraints.";
+$language["dbadmin_addeditrow_field"]="Value of the Field &quot;%s&quot;:";
+$language["dbadmin_addeditrow_null"]="Field &quot;%s&quot; contains Null?";
+
+$language["dbadmin_removerow_prompt"]="Are you sure you want to delete this row?";
+$language["dbadmin_removerow_success"]="Row deleted!";
+$language["dbadmin_removerow_failure"]="Unable to delete row. Maybe some fields violate table constraints.";
+
+$language["dbadmin_removerows_prompt"]="Are you sure you want to delete these rows (%s)?";
+$language["dbadmin_removerows_success"]="Rows deleted!";
+$language["dbadmin_removerows_failure"]="You should select at least one row.";
+
+$language["dbadmin_exportrows_success"]="Export Results:";
+$language["dbadmin_exportrows_failure"]="You should select at least one row.";
+
+$language["dbadmin_browse_options"]="Options";
+$language["dbadmin_browse_edit"]="Edit";
+$language["dbadmin_browse_remove"]="Delete";
+$language["dbadmin_browse_add"]="Add New Row";
+$language["dbadmin_browse_action"]="Selected:";
+$language["dbadmin_browse_removerows"]="Delete";
+$language["dbadmin_browse_exportrows"]="Export";
+$language["dbadmin_browse_null"]="Null";
+
+/******************************************************************************/
+
+$language["dbadmin_fields_name"]="Field";
+$language["dbadmin_fields_type"]="Type";
+$language["dbadmin_fields_size"]="Size";
+$language["dbadmin_fields_attrs"]="Attributes";
+$language["dbadmin_fields_default"]="Default Value";
+$language["dbadmin_fields_options"]="Options";
+$language["dbadmin_fields_edit"]="Edit";
+$language["dbadmin_fields_remove"]="Delete";
+$language["dbadmin_fields_actions"]="Selected fields:";
+$language["dbadmin_fields_attr0"]="Null";
+$language["dbadmin_fields_attr1"]="Binary";
+$language["dbadmin_fields_attr2"]="Unsigned";
+$language["dbadmin_fields_attr3"]="Zerofill";
+$language["dbadmin_fields_attr4"]="Auto-Increment";
+
+$language["dbadmin_addfields_form"]="Add Fields to the Table";
+$language["dbadmin_addfields_success"]="Adding field %s... Success!";
+$language["dbadmin_addfields_failure"]="Unable to add field %s.";
+$language["dbadmin_addfields_count"]="Number of Fields:";
+$language["dbadmin_addfields_place"]="Where to Add:";
+$language["dbadmin_addfields_first"]="To the beginning of the table";
+$language["dbadmin_addfields_after"]="After the %s field";
+$language["dbadmin_addfields_last"]="To the end of the table";
+
+$language["dbadmin_editfields_success"]="Updating field %s... Success!";
+$language["dbadmin_editfields_failure"]="Unable to update field %s.";
+
+$language["dbadmin_removefields_promptonce"]="Are you sure you want to delete field %s?";
+$language["dbadmin_removefields_promptmulti"]="Are you sure you want to delete these fields (%s)?";
+$language["dbadmin_removefields_success"]="Deleting field %s... Success!";
+$language["dbadmin_removefields_failure"]="Unable to delete field %s.";
+
+$language["dbadmin_indexes_name"]="Index Name";
+$language["dbadmin_indexes_unique"]="Unique";
+$language["dbadmin_indexes_fields"]="Fields List";
+$language["dbadmin_indexes_options"]="Options";
+$language["dbadmin_indexes_remove"]="Delete";
+$language["dbadmin_indexes_noprimary"]="Primary key is not defined!";
+
+$language["dbadmin_addindex_form1"]="Add Index to the Table";
+$language["dbadmin_addindex_form2"]="Add New Table Index";
+$language["dbadmin_addindex_success"]="Index added successfully!";
+$language["dbadmin_addindex_failure"]="Unable to add index. Maybe some field's sizes defined improperly.";
+$language["dbadmin_addindex_count"]="Number of Fields:";
+$language["dbadmin_addindex_name"]="Index Name:";
+$language["dbadmin_addindex_namedesc"]="Note: &quot;PRIMARY&quot; value used only for primary key.";
+$language["dbadmin_addindex_unique"]="Unique Index?";
+$language["dbadmin_addindex_fieldsize"]="Field and its size in index, if needed:";
+
+$language["dbadmin_removeindex_prompt"]="Are you sure you want to delete this index?";
+$language["dbadmin_removeindex_success"]="Index deleted!";
+$language["dbadmin_removeindex_failure"]="Unable to delete index.";
+
+/******************************************************************************/
+
+$language["dbadmin_search_form"]="Search Conditions";
+$language["dbadmin_search_separator"]="Result Displaying Options";
+$language["dbadmin_search_success1"]="Search Result:";
+$language["dbadmin_search_success2"]="No rows found matching the search conditions.";
+$language["dbadmin_search_failure"]="Search conditions weren't specified.";
+$language["dbadmin_search_field"]="Value of the Field &quot;%s&quot;:";
+$language["dbadmin_search_order"]="Result Ordering:";
+$language["dbadmin_search_noorder"]="No ordering";
+$language["dbadmin_search_orderasc"]="Field &quot;%s&quot;, ascending";
+$language["dbadmin_search_orderdesc"]="Field &quot;%s&quot;, descending";
+$language["dbadmin_search_offset"]="Starting From Row:";
+$language["dbadmin_search_count"]="Number Of Rows:";
+
+/******************************************************************************/
+
+$language["dbadmin_statistics_param"]="Parameter";
+$language["dbadmin_statistics_value"]="Value";
+$language["dbadmin_statistics_name"]="Table Name:";
+$language["dbadmin_statistics_type"]="Table Type:";
+$language["dbadmin_statistics_comment"]="Table Comment:";
+$language["dbadmin_statistics_rows"]="Number of Rows:";
+$language["dbadmin_statistics_datasize"]="Data Size:";
+$language["dbadmin_statistics_indexsize"]="Index Size:";
+$language["dbadmin_statistics_size"]="Total Table Size:";
+$language["dbadmin_statistics_counter"]="Internal Counter Value:";
+$language["dbadmin_statistics_bytes"]="%d bytes";
+
+$language["dbadmin_edit_form"]="Change Table Properties";
+$language["dbadmin_edit_name"]="Table Name:";
+$language["dbadmin_edit_type"]="Table Type:";
+$language["dbadmin_edit_comment"]="Table Comment:";
+$language["dbadmin_edit_changename_success"]="Renaming table... Success!";
+$language["dbadmin_edit_changename_failure"]="Unable to rename table. Maybe there is another table with the same name.";
+$language["dbadmin_edit_changetype_success"]="Changing table type... Success!";
+$language["dbadmin_edit_changetype_failure"]="Unable to change table type.";
+$language["dbadmin_edit_changecomment_success"]="Changing table comment... Success!";
+$language["dbadmin_edit_changecomment_failure"]="Unable to change table comment.";
+
+/******************************************************************************/
+
+$language["dbadmin_export_form"]="Database Export";
+$language["dbadmin_export_success"]="Export results:";
+$language["dbadmin_export_failure"]="No tables selected.";
+$language["dbadmin_export_tables"]="Select tables to export:";
+$language["dbadmin_export_tablesdesc"]="Choose one or more tables (use Ctrl+click to select/deselect a table). If no tables selected, whole database will be exported.";
+$language["dbadmin_export_structure"]="Include tables structure?";
+$language["dbadmin_export_data"]="Include tables data?";
+$language["dbadmin_export_send"]="Send result as a file?";
+$language["dbadmin_export_pack"]="ZIP archive?";
+
+/******************************************************************************/
+
+$language["dbadmin_import_formtext"]="Execute SQL";
+$language["dbadmin_import_formfile"]="Database Import";
+$language["dbadmin_import_text"]="Query Text:";
+$language["dbadmin_import_file"]="File containing SQL query:";
+$language["dbadmin_import_filedesc"]="Choose a file saved from database export (unpacked).";
+$language["dbadmin_import_emptytext"]="The query was empty.";
+$language["dbadmin_import_emptyfile"]="File not selected or was not uploaded properly.";
+$language["dbadmin_import_successonce"]="Query executed successfully! Query result:";
+$language["dbadmin_import_successempty"]="Query executed successfully! Query result was empty (no rows).";
+$language["dbadmin_import_successmulti"]="Query executed successfully! (Instructions processed: %s)";
+$language["dbadmin_import_failureonce"]="Query caused an error (%s).";
+$language["dbadmin_import_failuremulti"]="Next instruction caused an error:";
+
+/******************************************************************************/
+
+$language["dbadmin_message_query"]="Processing query:";
+$language["dbadmin_message_querysuccess"]="Query executed successfully!";
+$language["dbadmin_message_fieldnotes"]="Note *. If field type is Enum or Set, you should specify here possible values using this format: 'red','green','blue'.<br>\r\nNote **. Field attributes: <b>Null</b>, <b>Binary</b>, <b>Unsigned</b>, <b>Zerofill</b>, <b>Auto-Increment</b>.";
+
+$language["dbadmin_error_query"]="Query caused an error (%s).";
+$language["dbadmin_error_wrongtablename"]="Table name specified improperly.";
+$language["dbadmin_error_wrongfieldname"]="Name of one or more fields specified improperly.";
+$language["dbadmin_error_wrongindexname"]="Index name specified improperly.";
+$language["dbadmin_error_notable"]="Table not found.";
+$language["dbadmin_error_nofields"]="No fields specified.";
+
+?>
diff --git a/language/ru/dbadmin_ru.php b/language/ru/dbadmin_ru.php
new file mode 100644
index 0000000..9208507
--- /dev/null
+++ b/language/ru/dbadmin_ru.php
@@ -0,0 +1,230 @@
+<?php
+
+$language["dbadmin_menu"]="Óïðàâëåíèå òàáëèöàìè";
+$language["dbadmin_add"]="Ñîçäàòü";
+$language["dbadmin_modify"]="Îáçîð";
+$language["dbadmin_sql"]="SQL";
+$language["dbadmin_export"]="Ýêñïîðò ÁÄ";
+$language["dbadmin_import"]="Èìïîðò ÁÄ";
+
+/******************************************************************************/
+
+$language["dbadmin_add_form"]="Ñîçäàíèå íîâîé òàáëèöû";
+$language["dbadmin_add_name"]="Èìÿ òàáëèöû:";
+$language["dbadmin_add_fields"]="Êîëè÷åñòâî ïîëåé:";
+
+$language["dbadmin_create_name"]="Èìÿ ïîëÿ";
+$language["dbadmin_create_type"]="Òèï";
+$language["dbadmin_create_size"]="Äëèíà*";
+$language["dbadmin_create_attrs"]="N B U Z A**";
+$language["dbadmin_create_default"]="Ïî óìîë÷àíèþ";
+$language["dbadmin_create_primary"]="Êëþ÷";
+
+$language["dbadmin_action_success"]="Îïåðàöèÿ âûïîëíåíà óñïåøíî!";
+$language["dbadmin_action_failure"]="Íå âûáðàíî íè îäíîé òàáëèöû.";
+$language["dbadmin_action_optimizegroup"]="Îïòèìèçàöèÿ òàáëèöû &quot;%s&quot;... Ãîòîâî";
+$language["dbadmin_action_arrangegroup"]="Óïîðÿäî÷åíèå òàáëèöû &quot;%s&quot;... Ãîòîâî";
+$language["dbadmin_action_repairgroup"]="Ïî÷èíêà òàáëèöû &quot;%s&quot;... Ãîòîâî";
+$language["dbadmin_action_cleargroup_promptonce"]="Âû äåéñòâèòåëüíî õîòèòå î÷èñòèòü òàáëèöó &quot;%s&quot;?";
+$language["dbadmin_action_cleargroup_promptmulti"]="Âû äåéñòâèòåëüíî õîòèòå î÷èñòèòü ýòè òàáëèöû (%s)?";
+$language["dbadmin_action_cleargroup"]="Î÷èñòêà òàáëèöû &quot;%s&quot;... Ãîòîâî";
+$language["dbadmin_action_removegroup_promptonce"]="Âû äåéñòâèòåëüíî õîòèòå óíè÷òîæèòü òàáëèöó &quot;%s&quot;?";
+$language["dbadmin_action_removegroup_promptmulti"]="Âû äåéñòâèòåëüíî õîòèòå óíè÷òîæèòü ýòè òàáëèöû (%s)?";
+$language["dbadmin_action_removegroup"]="Óäàëåíèå òàáëèöû &quot;%s&quot;... Ãîòîâî";
+
+$language["dbadmin_modify_name"]="Òàáëèöà";
+$language["dbadmin_modify_type"]="Òèï";
+$language["dbadmin_modify_rows"]="Ñòðîê";
+$language["dbadmin_modify_size"]="Ðàçìåð";
+$language["dbadmin_modify_comment"]="Êîììåíòàðèé";
+$language["dbadmin_modify_options"]="Óïðàâëåíèå";
+$language["dbadmin_modify_browse"]="Îáçîð";
+$language["dbadmin_modify_fields"]="Ñòðóêòóðà";
+$language["dbadmin_modify_search"]="Ïîèñê";
+$language["dbadmin_modify_addrow"]="Äîáàâèòü";
+$language["dbadmin_modify_action"]="Âûáðàííûå òàáëèöû:";
+$language["dbadmin_modify_optimize"]="Îïòèìèçèðîâàòü";
+$language["dbadmin_modify_arrange"]="Îòñîðòèðîâàòü ïî êëþ÷ó";
+$language["dbadmin_modify_repair"]="Ïî÷èíèòü";
+$language["dbadmin_modify_export"]="Ýêñïîðò";
+$language["dbadmin_modify_clear"]="Î÷èñòèòü";
+$language["dbadmin_modify_remove"]="Óíè÷òîæèòü";
+$language["dbadmin_modify_kb"]="%d Êá";
+
+/******************************************************************************/
+
+$language["dbadmin_navigation_headline"]="Òàáëèöà: %s (çàïèñåé: %d)";
+$language["dbadmin_navigation_browse"]="Îáçîð";
+$language["dbadmin_navigation_fields"]="Ñòðóêòóðà";
+$language["dbadmin_navigation_search"]="Ïîèñê";
+$language["dbadmin_navigation_edit"]="Ñâîéñòâà";
+$language["dbadmin_navigation_clear"]="Î÷èñòèòü";
+$language["dbadmin_navigation_remove"]="Óíè÷òîæèòü";
+
+/******************************************************************************/
+
+$language["dbadmin_addrow_form"]="Äîáàâëåíèå çàïèñè â òàáëèöó &quot;%s&quot;";
+$language["dbadmin_addrow_success"]="Çàïèñü äîáàâëåíà!";
+$language["dbadmin_addrow_failure"]="Íå óäàëîñü äîáàâèòü çàïèñü. Âîçìîæíî, íåêîòîðûå ïîëÿ íàðóøàþò îãðàíè÷åíèÿ, íàëîæåííûå íà òàáëèöó.";
+$language["dbadmin_editrow_form"]="Ðåäàêòèðîâàíèå çàïèñè â òàáëèöå &quot;%s&quot;";
+$language["dbadmin_editrow_success"]="Çàïèñü èçìåíåíà!";
+$language["dbadmin_editrow_failure"]="Íå óäàëîñü èçìåíèòü çàïèñü. Âîçìîæíî, íåêîòîðûå ïîëÿ íàðóøàþò îãðàíè÷åíèÿ, íàëîæåííûå íà òàáëèöó.";
+$language["dbadmin_addeditrow_field"]="Çíà÷åíèå ïîëÿ %s:";
+$language["dbadmin_addeditrow_null"]="Ïîëå %s ñîäåðæèò íîëü?";
+
+$language["dbadmin_removerow_prompt"]="Âû äåéñòâèòåëüíî õîòèòå óäàëèòü ýòó çàïèñü?";
+$language["dbadmin_removerow_success"]="Çàïèñü óäàëåíà!";
+$language["dbadmin_removerow_failure"]="Íå óäàëîñü óäàëèòü çàïèñü. Âîçìîæíî, íåêîòîðûå ïîëÿ íàðóøàþò îãðàíè÷åíèÿ, íàëîæåííûå íà òàáëèöó.";
+
+$language["dbadmin_removerows_prompt"]="Âû äåéñòâèòåëüíî õîòèòå óäàëèòü ýòè çàïèñè (%s)?";
+$language["dbadmin_removerows_success"]="Çàïèñè óäàëåíû!";
+$language["dbadmin_removerows_failure"]="Íåîáõîäèìî îòìåòèòü õîòÿ áû îäíó çàïèñü.";
+
+$language["dbadmin_exportrows_success"]="Ðåçóëüòàò ýêñïîðòà:";
+$language["dbadmin_exportrows_failure"]="Íåîáõîäèìî îòìåòèòü õîòÿ áû îäíó çàïèñü.";
+
+$language["dbadmin_browse_options"]="Óïðàâëåíèå";
+$language["dbadmin_browse_edit"]="Ñâîéñòâà";
+$language["dbadmin_browse_remove"]="Óäàëèòü";
+$language["dbadmin_browse_add"]="Äîáàâèòü íîâóþ çàïèñü";
+$language["dbadmin_browse_action"]="Îòìå÷åííûå:";
+$language["dbadmin_browse_removerows"]="Óäàëèòü";
+$language["dbadmin_browse_exportrows"]="Ýêñïîðò";
+$language["dbadmin_browse_null"]="Íîëü";
+
+/******************************************************************************/
+
+$language["dbadmin_fields_name"]="Ïîëå";
+$language["dbadmin_fields_type"]="Òèï";
+$language["dbadmin_fields_size"]="Ðàçìåð";
+$language["dbadmin_fields_attrs"]="Àòðèáóòû";
+$language["dbadmin_fields_default"]="Ïî óìîë÷àíèþ";
+$language["dbadmin_fields_options"]="Óïðàâëåíèå";
+$language["dbadmin_fields_edit"]="Èçìåíèòü";
+$language["dbadmin_fields_remove"]="Óäàëèòü";
+$language["dbadmin_fields_actions"]="Îòìå÷åííûå ïîëÿ:";
+$language["dbadmin_fields_attr0"]="Null";
+$language["dbadmin_fields_attr1"]="Binary";
+$language["dbadmin_fields_attr2"]="Unsigned";
+$language["dbadmin_fields_attr3"]="Zerofill";
+$language["dbadmin_fields_attr4"]="Auto-Increment";
+
+$language["dbadmin_addfields_form"]="Äîáàâèòü íîâûå ïîëÿ ê òàáëèöå";
+$language["dbadmin_addfields_success"]="Äîáàâëåíèå ïîëÿ %s... Óñïåøíî!";
+$language["dbadmin_addfields_failure"]="Íå óäàëîñü äîáàâèòü ïîëå %s.";
+$language["dbadmin_addfields_count"]="Êîëè÷åñòâî ïîëåé:";
+$language["dbadmin_addfields_place"]="Êóäà äîáàâëÿòü:";
+$language["dbadmin_addfields_first"]="Â íà÷àëî òàáëèöû";
+$language["dbadmin_addfields_after"]="Ïîñëå ïîëÿ %s";
+$language["dbadmin_addfields_last"]="Â êîíåö òàáëèöû";
+
+$language["dbadmin_editfields_success"]="Èçìåíåíèå ïîëÿ %s... Óñïåøíî!";
+$language["dbadmin_editfields_failure"]="Íå óäàëîñü èçìåíèòü ïîëå %s.";
+
+$language["dbadmin_removefields_promptonce"]="Âû äåéñòâèòåëüíî õîòèòå óäàëèòü ïîëå %s?";
+$language["dbadmin_removefields_promptmulti"]="Âû äåéñòâèòåëüíî õîòèòå óäàëèòü ýòè ïîëÿ (%s)?";
+$language["dbadmin_removefields_success"]="Óäàëåíèå ïîëÿ %s... Óñïåøíî!";
+$language["dbadmin_removefields_failure"]="Íå óäàëîñü óäàëèòü ïîëå %s.";
+
+$language["dbadmin_indexes_name"]="Èíäåêñ";
+$language["dbadmin_indexes_unique"]="Óíèêàëüíûé";
+$language["dbadmin_indexes_fields"]="Ïîëÿ";
+$language["dbadmin_indexes_options"]="Óïðàâëåíèå";
+$language["dbadmin_indexes_remove"]="Óäàëèòü";
+$language["dbadmin_indexes_noprimary"]="Ïåðâè÷íûé êëþ÷ íå îïðåäåëåí!";
+
+$language["dbadmin_addindex_form1"]="Ñîçäàòü èíäåêñ";
+$language["dbadmin_addindex_form2"]="Ñîçäàíèå íîâîãî èíäåêñà";
+$language["dbadmin_addindex_success"]="Èíäåêñ ñîçäàí óñïåøíî!";
+$language["dbadmin_addindex_failure"]="Íå óäàëîñü ñîçäàòü èíäåêñ. Âîçìîæíî, äëèíû íåêîòîðûõ ïîëåé óêàçàíû íåâåðíî.";
+$language["dbadmin_addindex_count"]="Êîëè÷åñòâî ïîëåé:";
+$language["dbadmin_addindex_name"]="Íàçâàíèå èíäåêñà:";
+$language["dbadmin_addindex_namedesc"]="Çíà÷åíèå &quot;PRIMARY&quot; èñïîëüçóåòñÿ äëÿ ñîçäàíèÿ ïåðâè÷íîãî êëþ÷à.";
+$language["dbadmin_addindex_unique"]="Óíèêàëüíûé èíäåêñ?";
+$language["dbadmin_addindex_fieldsize"]="Ïîëå è åãî äëèíà, ïðè íåîáõîäèìîñòè:";
+
+$language["dbadmin_removeindex_prompt"]="Âû äåéñòâèòåëüíî õîòèòå óäàëèòü ýòîò èíäåêñ?";
+$language["dbadmin_removeindex_success"]="Èíäåêñ óäàëåí!";
+$language["dbadmin_removeindex_failure"]="Íå óäàëîñü óäàëèòü èíäåêñ.";
+
+/******************************************************************************/
+
+$language["dbadmin_search_form"]="Óñëîâèÿ ïîèñêà";
+$language["dbadmin_search_separator"]="Îòîáðàæåíèå ðåçóëüòàòîâ";
+$language["dbadmin_search_success1"]="Ðåçóëüòàòû ïîèñêà:";
+$language["dbadmin_search_success2"]="Íå íàéäåíî íè îäíîé çàïèñè, óäîâëåòâîðÿþùåé óñëîâèÿì ïîèñêà.";
+$language["dbadmin_search_failure"]="Íå óêàçàíî íè îäíîãî óñëîâèÿ äëÿ ïîèñêà.";
+$language["dbadmin_search_field"]="Çíà÷åíèå ïîëÿ %s:";
+$language["dbadmin_search_order"]="Ïîðÿäîê ñîðòèðîâêè:";
+$language["dbadmin_search_noorder"]="Áåç ñîðòèðîâêè";
+$language["dbadmin_search_orderasc"]="Ïîëå %s, ïî âîçðàñòàíèþ";
+$language["dbadmin_search_orderdesc"]="Ïîëå %s, ïî óáûâàíèþ";
+$language["dbadmin_search_offset"]="Íà÷èíàÿ ñ çàïèñè:";
+$language["dbadmin_search_count"]="Ïîêàçàòü çàïèñåé:";
+
+/******************************************************************************/
+
+$language["dbadmin_statistics_param"]="Ïàðàìåòð";
+$language["dbadmin_statistics_value"]="Çíà÷åíèå";
+$language["dbadmin_statistics_name"]="Íàçâàíèå òàáëèöû:";
+$language["dbadmin_statistics_type"]="Òèï òàáëèöû:";
+$language["dbadmin_statistics_comment"]="Êîììåíòàðèé ê òàáëèöå:";
+$language["dbadmin_statistics_rows"]="Êîëè÷åñòâî çàïèñåé:";
+$language["dbadmin_statistics_datasize"]="Îáúåì, çàíèìàåìûé äàííûìè:";
+$language["dbadmin_statistics_indexsize"]="Îáúåì, çàíèìàåìûé èíäåêñîì:";
+$language["dbadmin_statistics_size"]="Ïîëíûé îáúåì òàáëèöû:";
+$language["dbadmin_statistics_counter"]="Çíà÷åíèå âñòðîåííîãî ñ÷åò÷èêà:";
+$language["dbadmin_statistics_bytes"]="%d áàéò";
+
+$language["dbadmin_edit_form"]="Èçìåíåíèå ñâîéñòâ òàáëèöû";
+$language["dbadmin_edit_name"]="Íàçâàíèå òàáëèöû:";
+$language["dbadmin_edit_type"]="Òèï òàáëèöû:";
+$language["dbadmin_edit_comment"]="Êîììåíòàðèé ê òàáëèöå:";
+$language["dbadmin_edit_changename_success"]="Ïåðåèìåíîâàíèå òàáëèöû... Óñïåøíî!";
+$language["dbadmin_edit_changename_failure"]="Íå óäàëîñü ïåðåèìåíîâàòü òàáëèöó. Âîçìîæíî, òàáëèöà ñ òàêèì èìåíåì óæå åñòü.";
+$language["dbadmin_edit_changetype_success"]="Èçìåíåíèå òèïà òàáëèöû... Óñïåøíî!";
+$language["dbadmin_edit_changetype_failure"]="Íå óäàëîñü èçìåíèòü òèï òàáëèöû.";
+$language["dbadmin_edit_changecomment_success"]="Èçìåíåíèå êîììåíòàðèÿ ê òàáëèöå... Óñïåøíî!";
+$language["dbadmin_edit_changecomment_failure"]="Íå óäàëîñü èçìåíèòü êîììåíòàðèé ê òàáëèöå.";
+
+/******************************************************************************/
+
+$language["dbadmin_export_form"]="Ýêñïîðò Áàçû Äàííûõ";
+$language["dbadmin_export_success"]="Ðåçóëüòàò ýêñïîðòà:";
+$language["dbadmin_export_failure"]="Íå âûáðàíî íè îäíîé òàáëèöû.";
+$language["dbadmin_export_tables"]="Âûïîëíèòü ýêñïîðò òàáëèö:";
+$language["dbadmin_export_tablesdesc"]="Îòìåòüòå îäíó èëè íåñêîëüêî òàáëèö (äëÿ óñòàíîâêè/ñíÿòèÿ ïîìåòêè èñïîëüçóéòå Ctrl+ùåë÷îê). Åñëè íè îäíà èç òàáëèö íå îòìå÷åíà, áóäåò âûïîëíåí ýêñïîðò âñåé áàçû äàííûõ.";
+$language["dbadmin_export_structure"]="Ñòðóêòóðà òàáëèö?";
+$language["dbadmin_export_data"]="Äàííûå òàáëèö?";
+$language["dbadmin_export_send"]="Ïîñëàòü ðåçóëüòàò êàê ôàéë?";
+$language["dbadmin_export_pack"]="Àðõèâèðîâàòü â ZIP?";
+
+/******************************************************************************/
+
+$language["dbadmin_import_formtext"]="Âûïîëíåíèå SQL-çàïðîñà";
+$language["dbadmin_import_formfile"]="Èìïîðò Áàçû Äàííûõ";
+$language["dbadmin_import_text"]="Òåêñò çàïðîñà:";
+$language["dbadmin_import_file"]="Ôàéë ñ SQL çàïðîñîì:";
+$language["dbadmin_import_filedesc"]="Óêàæèòå ôàéë, ïîëó÷åííûé âî âðåìÿ ýêñïîðòà ÁÄ (ðàñïàêîâàííûé).";
+$language["dbadmin_import_emptytext"]="Çàïðîñ ïóñò.";
+$language["dbadmin_import_emptyfile"]="Íå óêàçàí èëè íå çàãðóçèëñÿ ôàéë ñ çàïðîñîì.";
+$language["dbadmin_import_successonce"]="Çàïðîñ áûë óñïåøíî âûïîëíåí! Ðåçóëüòàò çàïðîñà:";
+$language["dbadmin_import_successempty"]="Çàïðîñ áûë óñïåøíî âûïîëíåí! Ðåçóëüòàò çàïðîñà ïóñò (0 çàïèñåé).";
+$language["dbadmin_import_successmulti"]="Çàïðîñ áûë óñïåøíî âûïîëíåí! (Îáðàáîòàíî èíñòðóêöèé: %s)";
+$language["dbadmin_import_failureonce"]="Ïðè îáðàáîòêå èíñòðóêöèè âîçíèêëà îøèáêà (%s).";
+$language["dbadmin_import_failuremulti"]="Ïðè îáðàáîòêå ñëåäóþùåé èíñòðóêöèè âîçíèêëà îøèáêà:";
+
+/******************************************************************************/
+
+$language["dbadmin_message_query"]="Âûïîëíÿåòñÿ çàïðîñ:";
+$language["dbadmin_message_querysuccess"]="Çàïðîñ âûïîëíåí óñïåøíî!";
+$language["dbadmin_message_fieldnotes"]="Ïðèìå÷àíèå *. Äëÿ òèïîâ Enum (ïåðå÷èñëåíèå) è Set (ìíîæåñòâî) óêàæèòå çäåñü äîïóñòèìûå çíà÷åíèÿ â âèäå: 'red','green','blue'.<br>\r\nÏðèìå÷àíèå **. Àòðèáóòû: <b>Null</b> (äîïóñêàåòñÿ íîëü), <b>Binary</b> (äâîè÷íîå), <b>Unsigned</b> (áåççíàêîâîå), <b>Zerofill</b> (äîïîëíåííîå íóëÿìè), <b>Auto-Increment</b> (ñ÷åò÷èê).";
+
+$language["dbadmin_error_query"]="Ïðè âûïîëíåíèè çàïðîñà ïðîèçîøëà îøèáêà (%s).";
+$language["dbadmin_error_wrongtablename"]="Èìÿ òàáëèöû óêàçàíî íåâåðíî.";
+$language["dbadmin_error_wrongfieldname"]="Èìÿ îäíîãî èëè íåñêîëüêèõ ïîëåé óêàçàíî íåâåðíî.";
+$language["dbadmin_error_wrongindexname"]="Èìÿ èíäåêñà óêàçàíî íåâåðíî.";
+$language["dbadmin_error_notable"]="Òàáëèöà óêàçàíà íåâåðíî.";
+$language["dbadmin_error_nofields"]="Íå óêàçàíî íè îäíîãî ïîëÿ òàáëèöû.";
+
+?>
diff --git a/language/ru/statistics_ru.php b/language/ru/statistics_ru.php
new file mode 100644
index 0000000..94042b0
--- /dev/null
+++ b/language/ru/statistics_ru.php
@@ -0,0 +1,39 @@
+<?php
+
+$language["statistics_menu"]="Ñòàòèñòèêà ñàéòà";
+$language["statistics_overview"]="Îáùàÿ";
+$language["statistics_common"]="Ïîñåùàåìîñòü";
+$language["statistics_referers"]="Ññûëàþùèåñÿ ñàéòû";
+
+$language["statistics_overview_name"]="Ïàðàìåòð";
+$language["statistics_overview_value"]="Çíà÷åíèå";
+$language["statistics_overview_counter"]="Ñ÷åò÷èê:";
+$language["statistics_overview_sumhits"]="Îáùåå êîëè÷åñòâî õèòîâ:";
+$language["statistics_overview_sumhosts"]="Îáùåå êîëè÷åñòâî õîñòîâ:";
+$language["statistics_overview_maxonline"]="Ìàêñèìóì â îíëàéíå:";
+$language["statistics_overview_hits"]="Êîëè÷åñòâî õèòîâ çà ñåãîäíÿ:";
+$language["statistics_overview_hosts"]="Êîëè÷åñòâî õîñòîâ çà ñåãîäíÿ:";
+$language["statistics_overview_online"]="Ñåé÷àñ â îíëàéíå:";
+
+$language["statistics_common_date"]="Äàòà";
+$language["statistics_common_quota"]="Êîëè÷åñòâî õèòîâ/õîñòîâ";
+$language["statistics_common_hits"]="Õèòîâ";
+$language["statistics_common_hosts"]="Õîñòîâ";
+$language["statistics_common_options"]="Óïðàâëåíèå";
+$language["statistics_common_format"]="F Y";
+$language["statistics_common_detailed"]="Ïîäðîáíàÿ ñòàòèñòèêà";
+
+$language["statistics_detailed_date"]="Äàòà";
+$language["statistics_detailed_quota"]="Êîëè÷åñòâî õèòîâ/õîñòîâ";
+$language["statistics_detailed_hits"]="Õèòîâ";
+$language["statistics_detailed_hosts"]="Õîñòîâ";
+$language["statistics_detailed_online"]="Â îíëàéíå";
+
+$language["statistics_referers_full"]="Ïîêàçàòü âñå ññûëàþùèåñÿ ñàéòû";
+$language["statistics_referers_address"]="Àäðåñ";
+$language["statistics_referers_quota"]="Êîëè÷åñòâî ïåðåõîäîâ";
+$language["statistics_referers_count"]="Çíà÷åíèå";
+$language["statistics_referers_percent"]="Ïðîöåíò";
+$language["statistics_referers_lastclick"]="Ïîñëåäíèé ïåðåõîä";
+
+?>
diff --git a/plugins/statistics.php b/plugins/statistics.php
new file mode 100644
index 0000000..baee192
--- /dev/null
+++ b/plugins/statistics.php
@@ -0,0 +1,150 @@
+<?php
+
+// PHP Compiler by Serge Igitov (Dagdamor), Version 2.4.5, Copyright 2007
+// Released under the LGPL License (www.gnu.org/copyleft/lesser.html)
+
+// PHPC Online Plugin - Statistics v1.4 by Dagdamor
+
+/****************************** Class Definition ******************************/
+
+class StatisticsSupport
+{
+  /**
+   * Ð’Ð¾Ð·Ð²Ñ€Ð°Ñ‰Ð°ÐµÑ‚ Ð¿Ð¾Ð¸Ñ�ÐºÐ¾Ð²ÑƒÑŽ Ñ„Ñ€Ð°Ð·Ñƒ Ð½Ð° Ð¾Ñ�Ð½Ð¾Ð²Ðµ Ð°Ð½Ð°Ð»Ð¸Ð·Ð° Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° HTTP_REFERER
+   * Ð�Ð²Ñ‚Ð¾Ñ€: http://trickywebs.org.ua/
+   */
+  function search_query($queryUrl='')
+  {
+    $queryUrl=trim($queryUrl);
+    if(empty($queryUrl)) return false;
+    $parseUrl=parse_url($queryUrl);
+    // Detect search engine
+    switch($parseUrl['host'])
+    {
+      case 'yandex.ru':
+      case 'images.yandex.ru':
+      case 'yandex.ua':
+      case 'images.yandex.ua':
+      case 'yandex.by':
+      case 'images.yandex.by':
+      case 'yandex.com':
+      case 'images.yandex.com':
+      $word='text';
+      $engine='yandex';
+      break;
+      
+      case 'rambler.ru':
+      case 'nova.rambler.ru':
+      $word='query';
+      $engine='rambler';
+      break;
+      
+      case 'search.qip.ru':
+      $word='query';
+      $engine='qip';
+      break;
+      
+      case 'yahoo.com':
+      case 'search.yahoo.com':
+      $word='p';
+      $engine='yahoo';
+      break;
+      
+      case 'search.icq.com':
+      $word='q';
+      $engine='icq';
+      break;
+      
+      case 'google.ru':
+      case 'google.com':
+      case 'google.com.ua':
+      case 'google.com.by':
+      case 'www.google.ru':
+      case 'www.google.com':
+      case 'www.google.com.ua':
+      case 'www.google.com.by':
+      $word='q';
+      $engine='google';
+      break;
+      
+      case 'mail.ru':
+      case 'go.mail.ru':
+      $word='q';
+      $engine='mail';
+      break;
+      
+      case 'msn.com':
+      case 'bing.com':
+      $word='q';
+      $engine='msn';
+      break;
+      
+      default:
+      $word='q';
+      $engine='unknown';
+      break;
+    }
+    $query=isset($parseUrl['query'])?$parseUrl['query']:'';
+    parse_str($query,$output);
+    $result=isset($output[$word])?trim(stripslashes($output[$word])):'';
+    switch($engine)
+    {
+      // mail.ru encodes it's queries in Windows-1251
+      case 'mail':
+      $result=iconv('windows-1251','utf-8',$result);
+      break;
+      
+      case 'rambler':
+      // Double-decoded strings are sometimes sent by Rambler
+      if(strpos($queryUrl,'&old_q=&'))
+      {
+        $result=iconv('utf-8','windows-1251',$result);
+        $result=iconv('KOI8-R','utf-8',$result);
+      }
+      break;
+      
+      // Decode strange queries from Google images search
+      case 'google':
+      if(isset($output['prev']) && ($result=$output['prev']) && (0===strpos($result,'/images?')))
+      {
+        $imagesQuery=strstr($result,'q=');
+        parse_str($imagesQuery,$queryVars);
+        $result=isset($queryVars[$word])?trim(stripslashes($queryVars[$word])):'';
+      }
+      break;
+    }
+    return empty($result)?false:$result;
+  }
+  
+  function processVisitor($session, $request)
+  {
+    global $database;
+    $unique=isset($session["NewSession"]);
+    //$unique=isset($session["phpcNewSession"]);
+    $phpctime=phpctime();
+    $date=date("Y-m-d",$phpctime);
+    $minimalTime=$phpctime-PhpcSessionTimeout;
+    $online=$database->getLinesCount("sessions","lastactivity>=$minimalTime");
+    $database->addLine("statistics",array("date"=>$date));
+    $fragment="hits=hits+1".($unique?",hosts=hosts+1":"");
+    $query="UPDATE statistics SET $fragment,online=GREATEST(online,$online)";
+    $database->customQueryBoolean("$query WHERE date='0000-00-00' LIMIT 1");
+    $database->customQueryBoolean("$query WHERE date=".slashes($date)." LIMIT 1");
+    if(!isset($_SERVER["HTTP_REFERER"])) return;
+    $referer=strtolower(trim($_SERVER["HTTP_REFERER"]));
+    $server=strtolower(trim($_SERVER["HTTP_HOST"]));
+    $pattern="{^(?:\w+://)?(?:www\.)?([\w\-]+\.[\w\-\.]*\w)}i";
+    if(!preg_match($pattern,$referer,$matches)) return;
+    $referer=$matches[1];
+    if($referer==$server || "www.$referer"==$server) return;
+    $database->addLine("statreferers",array("address"=>$referer));
+    $query="UPDATE statreferers SET counter=counter+1,lastclick=".slashes($phpctime).",lastipaddress=".slashes($_SERVER[REMOTE_ADDR])." WHERE address=".slashes($referer)." LIMIT 1";
+    $database->customQueryBoolean($query);
+    //$query="UPDATE sessions SET getstatpng=1 WHERE hash=".slashes($session["hash"])." LIMIT 1";
+    //$database->customQueryBoolean($query);
+  }
+}
+
+$statisticsSupport=new StatisticsSupport;
+
+?>

From 7628457739151dfef7977137c10b8431a098c620 Mon Sep 17 00:00:00 2001
From: Serge Igitov <easy-phpc@mail.ru>
Date: Wed, 30 May 2018 07:55:42 +0100
Subject: [PATCH 19/22] update readme

update readme
---
 README.md | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/README.md b/README.md
index aa95e72..bc3d02e 100644
--- a/README.md
+++ b/README.md
@@ -59,3 +59,5 @@
 [ÐšÐ¾Ð¼Ð¿Ð°Ð½Ð¸Ñ� Ð Ð°Ð¼Ð¾Ðº - ÐšÐ°Ñ�Ñ�Ð¾Ð²Ñ‹Ðµ Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ñ‹, Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ð·Ð°Ñ†Ð¸Ñ�, Ñ‚Ð¾Ñ€Ð³Ð¾Ð²Ð¾Ðµ Ð¾Ð±Ð¾Ñ€ÑƒÐ´Ð¾Ð²Ð°Ð½Ð¸Ðµ, Ð¿Ñ€Ð¾Ñ‚Ð¸Ð²Ð¾ÐºÑ€Ð°Ð¶Ð½Ð¾Ðµ Ð¾Ð±Ð¾Ñ€ÑƒÐ´Ð¾Ð²Ð°Ð½Ð¸Ðµ, Ð²Ð¸Ð´ÐµÐ¾Ð½Ð°Ð±Ð»ÑŽÐ´ÐµÐ½Ð¸Ðµ](http://www.ramok.by/)
 
 [Ð“Ð¾Ñ�ÑƒÐ´Ð°Ñ€Ñ�Ñ‚Ð²ÐµÐ½Ð½Ð¾Ðµ Ð¿Ñ€ÐµÐ´Ð¿Ñ€Ð¸Ñ�Ñ‚Ð¸Ðµ Â«Ð‘ÐµÐ»Ð³Ð¸Ð¿Ñ€Ð¾Ð´Ð¾Ñ€Â»](http://www.belgiprodor.by/)
+
+[ÐšÐ»ÐµÐµÐ½Ñ‹Ð¹ Ð±Ñ€ÑƒÑ�. Ð”Ð¾Ð¼Ð° Ð¸Ð· ÐºÐ»ÐµÐµÐ½Ð¾Ð³Ð¾ Ð±Ñ€ÑƒÑ�Ð°. Holz House. ÐžÐžÐž Ð¥Ð¾Ð»ÑŒÑ† Ð¥Ð°ÑƒÑ�.](https://holz-house.ru/)

From 053b63cdc23cd2ac09f2f06d6891f3c56b00257e Mon Sep 17 00:00:00 2001
From: Serge Igitov <easy-phpc@mail.ru>
Date: Wed, 30 May 2018 08:36:51 +0100
Subject: [PATCH 20/22] counter

---
 phpc/counter.php | 68 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 68 insertions(+)
 create mode 100644 phpc/counter.php

diff --git a/phpc/counter.php b/phpc/counter.php
new file mode 100644
index 0000000..670d74d
--- /dev/null
+++ b/phpc/counter.php
@@ -0,0 +1,68 @@
+<?php
+
+// PHP Compiler by Serge Igitov (Dagdamor), Version 2.4.5, Copyright 2007
+// Released under the LGPL License (www.gnu.org/copyleft/lesser.html)
+
+error_reporting(7);
+
+require "config.php";
+require "constant.php";
+require "function.php";
+require "database.php";
+
+define("StatisticsImageCounter","../images/statistics/counter.png");
+define("StatisticsImageDigits","../images/statistics/digits.png");
+
+/******************************************************************************/
+
+function getStatistics()
+{
+  global $database;
+  $phpctime=phpctime();
+  $date=date("Y-m-d",$phpctime);
+  $total=$database->getLine("statistics","date='0000-00-00'");
+  $today=$database->getLine("statistics","date=".slashes($date));
+  $sumhits=$total["hits"];
+  $sumhosts=$total["hosts"];
+  $maxonline=$total["online"];
+  $hits=$today["hits"];
+  $hosts=$today["hosts"];
+  $minimalTime=$phpctime-PhpcSessionTimeout;
+  $online=$database->getLinesCount("sessions","lastactivity>=$minimalTime");
+  return compact("sumhits","sumhosts","maxonline","hits","hosts","online");
+}
+
+function makeNumber($image, $digits, $value, $x, $y, $color=0, $align=false)
+{
+  $value=(string)(int)$value;
+  if($align) $x-=strlen($value)*6;
+  for($index=0; $index<strlen($value); $index++) {
+    $digit=ord($value[$index])-48;
+    @imagecopy($image,$digits,$x,$y,$digit*6,$color*8,6,8);
+    $x+=6;
+  }
+}
+
+/******************************************************************************/
+
+$database=new Database;
+$database->modifyLine("sessions",array("getstatpng"=>"1"),"hash=".slashes($_COOKIE[PhpcSessionCookie])." AND ipaddress=".slashes(getClientAddress()));
+$database->addLine("sessions_test",array("hash"=>$_COOKIE[PhpcSessionCookie],"ipaddress"=>getClientAddress()));
+
+@header("Cache-Control: no-store, no-cache, must-revalidate");
+@header("Pragma: no-cache");
+@header("Content-Type: image/png");
+
+$image=@imagecreatefrompng(StatisticsImageCounter);
+$digits=@imagecreatefrompng(StatisticsImageDigits);
+$statistics=getStatistics();
+makeNumber($image,$digits,$statistics["sumhits"],4,3);
+makeNumber($image,$digits,$statistics["sumhosts"],4,12);
+makeNumber($image,$digits,$statistics["maxonline"],4,21,1);
+makeNumber($image,$digits,$statistics["hits"],84,3,0,true);
+makeNumber($image,$digits,$statistics["hosts"],84,12,0,true);
+makeNumber($image,$digits,$statistics["online"],84,21,1,true);
+@imagetruecolortopalette($image,false,128);
+@imagepng($image);
+
+?>

From 47763ffea5f78ba98608a67180dee1abad0c0f6d Mon Sep 17 00:00:00 2001
From: Serge Igitov <easy-phpc@mail.ru>
Date: Wed, 30 May 2018 08:59:23 +0100
Subject: [PATCH 21/22] modify counter

modify counter
---
 phpc/counter.php | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/phpc/counter.php b/phpc/counter.php
index 670d74d..d3df33d 100644
--- a/phpc/counter.php
+++ b/phpc/counter.php
@@ -1,12 +1,13 @@
 <?php
 
-// PHP Compiler by Serge Igitov (Dagdamor), Version 2.4.5, Copyright 2007
+// PHP Compiler by Serge Igitov (Dagdamor), Version 2.5.2, Copyright 2010
 // Released under the LGPL License (www.gnu.org/copyleft/lesser.html)
 
 error_reporting(7);
 
 require "config.php";
 require "constant.php";
+require "language.php";
 require "function.php";
 require "database.php";
 

From 01ad50d7a991a7bab7df0dbcc73b02d950a78a38 Mon Sep 17 00:00:00 2001
From: Serge Igitov <easy-phpc@mail.ru>
Date: Thu, 7 Jun 2018 17:23:09 +0100
Subject: [PATCH 22/22] comment

comment out a line  'db session_test'
---
 phpc/counter.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/phpc/counter.php b/phpc/counter.php
index d3df33d..0fbcd8e 100644
--- a/phpc/counter.php
+++ b/phpc/counter.php
@@ -48,7 +48,7 @@ function makeNumber($image, $digits, $value, $x, $y, $color=0, $align=false)
 
 $database=new Database;
 $database->modifyLine("sessions",array("getstatpng"=>"1"),"hash=".slashes($_COOKIE[PhpcSessionCookie])." AND ipaddress=".slashes(getClientAddress()));
-$database->addLine("sessions_test",array("hash"=>$_COOKIE[PhpcSessionCookie],"ipaddress"=>getClientAddress()));
+//$database->addLine("sessions_test",array("hash"=>$_COOKIE[PhpcSessionCookie],"ipaddress"=>getClientAddress()));
 
 @header("Cache-Control: no-store, no-cache, must-revalidate");
 @header("Pragma: no-cache");
