diff --git a/.htaccess b/.htaccess index 002d94e1..024a1fa2 100644 --- a/.htaccess +++ b/.htaccess @@ -1,3 +1,36 @@ +php_flag display_startup_errors on +php_flag display_errors on +php_flag html_errors on +php_flag log_errors on +php_flag ignore_repeated_errors off +php_flag ignore_repeated_source off +php_flag report_memleaks on +php_flag track_errors on +php_value docref_root 0 +php_value docref_ext 0 +php_value error_log /home/s/scadens/dpos.space/public_html/PHP_errors.log +php_value error_reporting 2047 +php_value log_errors_max_len 0 + + + Require all denied + +#php_flag display_startup_errors off +#php_flag display_errors off +#php_flag html_errors off +#php_value max_execution_time 120000 + +#редирект для поддомена flotilia +RewriteCond %{HTTP_HOST} ^(www\.)?flotilia\.dpos\.space$ [NC] +RewriteCond %{REQUEST_URI} !^/flotilia/ +RewriteRule ^(.*)$ flotilia/$1 [L] + +#редрект для поддомена viz +RewriteCond %{HTTP_HOST} ^(www\.)?viz\.dpos\.space$ [NC] +RewriteCond %{REQUEST_URI} !^/viz/ +RewriteRule ^(.*)$ viz/$1 [L] + + Options +FollowSymLinks Options -Indexes DirectoryIndex index.html index.php @@ -16,4 +49,4 @@ RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] - \ No newline at end of file + diff --git a/_functions.php b/_functions.php new file mode 100644 index 00000000..9c7f1ebe --- /dev/null +++ b/_functions.php @@ -0,0 +1,86 @@ + ($dasdas_golos ?? $dasdas_golos ?? ""), + 'dasdas_gbg' => ($dasdas_gbg ?? $dasdas_gbg ?? ""), + 'fixx_golos' => ($fixx_golos ?? $fixx_golos ?? ""), + 'fixx_gbg' => ($fixx_gbg ?? $fixx_gbg ?? ""), + 'dasdas' => ($dasdas ?? $dasdas ?? ""), + 'fixx' => ($fixx ?? $fixx ?? "") + ); + return $map_arr[$el]; + } diff --git a/backup/archives/golos_bambuk.zip b/backup/archives/golos_bambuk.zip new file mode 100644 index 00000000..cc695e36 Binary files /dev/null and b/backup/archives/golos_bambuk.zip differ diff --git a/backup/archives/golos_blackmoon.zip b/backup/archives/golos_blackmoon.zip new file mode 100644 index 00000000..7abd8366 Binary files /dev/null and b/backup/archives/golos_blackmoon.zip differ diff --git a/backup/archives/golos_denis-golub.zip b/backup/archives/golos_denis-golub.zip new file mode 100644 index 00000000..28da6620 Binary files /dev/null and b/backup/archives/golos_denis-golub.zip differ diff --git a/backup/archives/golos_denis-skripnik.zip b/backup/archives/golos_denis-skripnik.zip new file mode 100644 index 00000000..e8e3fa12 Binary files /dev/null and b/backup/archives/golos_denis-skripnik.zip differ diff --git a/backup/archives/golos_fainder.zip b/backup/archives/golos_fainder.zip new file mode 100644 index 00000000..22955f54 Binary files /dev/null and b/backup/archives/golos_fainder.zip differ diff --git a/backup/archives/golos_hanter74.zip b/backup/archives/golos_hanter74.zip new file mode 100644 index 00000000..675b06a0 Binary files /dev/null and b/backup/archives/golos_hanter74.zip differ diff --git a/backup/archives/golos_html_d0z4t0r.zip b/backup/archives/golos_html_d0z4t0r.zip new file mode 100644 index 00000000..cb2bc917 Binary files /dev/null and b/backup/archives/golos_html_d0z4t0r.zip differ diff --git a/backup/archives/golos_html_denis-skripnik.zip b/backup/archives/golos_html_denis-skripnik.zip new file mode 100644 index 00000000..88f1c449 Binary files /dev/null and b/backup/archives/golos_html_denis-skripnik.zip differ diff --git a/backup/archives/golos_html_hanter74.zip b/backup/archives/golos_html_hanter74.zip new file mode 100644 index 00000000..3bc14e38 Binary files /dev/null and b/backup/archives/golos_html_hanter74.zip differ diff --git a/backup/archives/golos_html_irkinmick.zip b/backup/archives/golos_html_irkinmick.zip new file mode 100644 index 00000000..5918a14d Binary files /dev/null and b/backup/archives/golos_html_irkinmick.zip differ diff --git a/backup/archives/golos_html_olga-olga.zip b/backup/archives/golos_html_olga-olga.zip new file mode 100644 index 00000000..486ff793 Binary files /dev/null and b/backup/archives/golos_html_olga-olga.zip differ diff --git a/backup/archives/golos_html_vp-kulinar-club.zip b/backup/archives/golos_html_vp-kulinar-club.zip new file mode 100644 index 00000000..9fb8189b Binary files /dev/null and b/backup/archives/golos_html_vp-kulinar-club.zip differ diff --git a/backup/archives/golos_irkinmick.zip b/backup/archives/golos_irkinmick.zip new file mode 100644 index 00000000..3232501f Binary files /dev/null and b/backup/archives/golos_irkinmick.zip differ diff --git a/backup/archives/golos_ivprst.zip b/backup/archives/golos_ivprst.zip new file mode 100644 index 00000000..56e17e3d Binary files /dev/null and b/backup/archives/golos_ivprst.zip differ diff --git a/backup/archives/golos_ladyzarulem.zip b/backup/archives/golos_ladyzarulem.zip new file mode 100644 index 00000000..8c183d3c Binary files /dev/null and b/backup/archives/golos_ladyzarulem.zip differ diff --git a/backup/archives/golos_lindsay.zip b/backup/archives/golos_lindsay.zip new file mode 100644 index 00000000..549e9ddf Binary files /dev/null and b/backup/archives/golos_lindsay.zip differ diff --git a/backup/archives/golos_mishka.zip b/backup/archives/golos_mishka.zip new file mode 100644 index 00000000..b39078f9 Binary files /dev/null and b/backup/archives/golos_mishka.zip differ diff --git a/backup/archives/golos_prazdnik.zip b/backup/archives/golos_prazdnik.zip new file mode 100644 index 00000000..2a28a4b9 Binary files /dev/null and b/backup/archives/golos_prazdnik.zip differ diff --git a/backup/archives/golos_rainen.zip b/backup/archives/golos_rainen.zip new file mode 100644 index 00000000..bf6fc83e Binary files /dev/null and b/backup/archives/golos_rainen.zip differ diff --git a/backup/archives/golos_slon21veka.zip b/backup/archives/golos_slon21veka.zip new file mode 100644 index 00000000..5bd49093 Binary files /dev/null and b/backup/archives/golos_slon21veka.zip differ diff --git a/backup/archives/golos_tatdt.zip b/backup/archives/golos_tatdt.zip new file mode 100644 index 00000000..3fa339ce Binary files /dev/null and b/backup/archives/golos_tatdt.zip differ diff --git a/backup/archives/steem_tatdt.zip b/backup/archives/steem_tatdt.zip new file mode 100644 index 00000000..4aa5072a Binary files /dev/null and b/backup/archives/steem_tatdt.zip differ diff --git a/backup/archives/viz_denis-skripnik.zip b/backup/archives/viz_denis-skripnik.zip new file mode 100644 index 00000000..d5a7f55a Binary files /dev/null and b/backup/archives/viz_denis-skripnik.zip differ diff --git a/backup/generation/generator.php b/backup/generation/generator.php index ec58e536..60900ecb 100644 --- a/backup/generation/generator.php +++ b/backup/generation/generator.php @@ -121,6 +121,7 @@ function transliteration($tag_en, $mode = 'torus') { fwrite($fp, "Заголовок: ".$content['title']."\r\n"."Текст:"."\r\n".$content['body']."\r\n"."Теги:"."\r\n"); $metadata = json_decode($content['json_metadata'], true); +if (isset($metadata['tags'])) { $tegi = $metadata['tags']; $taging = ''; @@ -131,8 +132,8 @@ function transliteration($tag_en, $mode = 'torus') { $taging .= $teg.' '; } } - fwrite($fp, $taging); - +fwrite($fp, $taging); +} // закрываем fclose($fp); } diff --git a/backup/generation/html_generator.php b/backup/generation/html_generator.php index e770073b..5e10a96f 100644 --- a/backup/generation/html_generator.php +++ b/backup/generation/html_generator.php @@ -110,6 +110,7 @@ function make_image_from_inline_code($text){ fwrite($fp, "Заголовок: ".$content['title']."
"."Текст:"."
".$markdown_text."
"."Теги:"."
"); $metadata = json_decode($content['json_metadata'], true); +if (isset($metadata['tags'])) { $tegi = $metadata['tags']; $taging = ''; @@ -121,7 +122,7 @@ function make_image_from_inline_code($text){ } } fwrite($fp, $taging); - +} // закрываем fclose($fp); } @@ -137,6 +138,7 @@ function make_image_from_inline_code($text){ fwrite($fp, "Заголовок: ".$content['title']."
"."Текст:"."
".$markdown_text."
"."Теги:"."
"); $metadata = json_decode($content['json_metadata'], true); +if (isset($metadata['tags'])) { $tegi = $metadata['tags']; $taging = ''; @@ -148,7 +150,7 @@ function make_image_from_inline_code($text){ } } fwrite($fp, $taging); - +} // закрываем fclose($fp); } else { } diff --git a/backup/index.php b/backup/index.php index 4891fcd7..18b50450 100644 --- a/backup/index.php +++ b/backup/index.php @@ -115,7 +115,7 @@ echo '

Пользователь @'.$_POST['WLS_login'].' не произвёл платёж
Перейдите в кошелёк, нажав на свой логин в строке выше.

'; if ($chain == 'golos') { -echo '

Либо оплатите 3 GOLOS через golos.io или 5 GBG через golos.io, 3 GOLOS через goldvoice.club или 5 GBG через goldvoice.club

'; +echo '

Либо оплатите 3 GOLOS через golos.id или 5 GBG через golos.id, 3 GOLOS через goldvoice.club или 5 GBG через goldvoice.club

'; } } diff --git a/backup/params.php b/backup/params.php index c64211de..ab20cc49 100644 --- a/backup/params.php +++ b/backup/params.php @@ -4,6 +4,25 @@ $title = "Бекап постов пользователя блокчейнов Steem, Golos и WhaleShares $title_domain"; $meta_keywords = "steem, golos, WhaleShares, клиент, бекап, резервное копирование"; $meta_description = "Сайт, где вы можете сделать бекап (Резервную копию) всех ваших постов не старше 11 месяцев."; +$profiles_script = ''; $h1 = "Резервное копирование ваших постов, опубликованных на Стиме, Голосе или WhaleShares"; $description = "

будет создан архив с постами, который вы сможете скачать.

Здравствуйте. Здесь вы сможете выполнить резервное копирование (бекап) ваших постов, опубликованных в блокчейне Steem, Golos или WLS. Архивы хранятся в течение месяца.

"; @@ -12,8 +31,26 @@ $meta_keywords = "$chain_name, клиент, бекап, резервное копирование"; $meta_description = "Сервис бекапов постов из блокчейна $chain_name."; $description = "Бекап (Резервное копирование) ваших постов, опубликованных на ".$chain_name; +$profiles_script = ''; $h1 = "Бекап (Резервное копирование) ваших постов, опубликованных на ".$chain_name; } - $footer_text = "Делать резервные копии постов вашего аккаунта, если он произвёл платёж или апнул указанный пост."; } // Конец условия для данного сервиса \ No newline at end of file diff --git a/calc/index.php b/calc/index.php index 1993cd30..6079edd7 100644 --- a/calc/index.php +++ b/calc/index.php @@ -9,40 +9,11 @@ '; require_once $_SERVER['DOCUMENT_ROOT'].'/template/footer.php'; } else if( isset($array_url[1] ) ) { -?> - - + $(document).ready(function(){ + + }); + diff --git a/calc/snippets/get_ticker.php b/calc/snippets/get_ticker.php new file mode 100644 index 00000000..a811ba8b --- /dev/null +++ b/calc/snippets/get_ticker.php @@ -0,0 +1,16 @@ +setParams($ticker_data); + +$connector_class = CONNECTORS_MAP[$chain]; +$connector = new $connector_class(); +$ticker_command = new getTickerCommand($connector); diff --git a/calc/upvotes/ajax.php b/calc/upvotes/ajax.php index b72bd2d0..4251f6e8 100644 --- a/calc/upvotes/ajax.php +++ b/calc/upvotes/ajax.php @@ -11,6 +11,7 @@ require $_SERVER['DOCUMENT_ROOT'].'/calc/snippets/get_dynamic_global_properties.php'; if ($chain != 'WLS' && $chain != 'viz') { require $_SERVER['DOCUMENT_ROOT'].'/calc/snippets/get_feed_history.php'; +require $_SERVER['DOCUMENT_ROOT'].'/calc/snippets/get_ticker.php'; } require $_SERVER['DOCUMENT_ROOT'].'/calc/snippets/get_config.php'; if ($chain == 'WLS' or $chain == 'steem') { @@ -25,7 +26,10 @@ if ($chain != 'WLS' && $chain != 'viz') { $feed_res = $feed_command->execute($feed_commandQuery); $feed_mass = $feed_res['result']; - } + $ticker_res = $ticker_command->execute($ticker_commandQuery); + $ticker_mass = $ticker_res['result']; + $ticker_price = $ticker_mass['latest']; +} $config_res = $config_command->execute($config_commandQuery); @@ -90,11 +94,13 @@ $fixxrshares = (($vest_shares * $fixx_used_power) / 10000); $account["fixx_rshares"] = round($fixxrshares); $value_golos = round($account["rshares"] * $total_reward_fund_steem / $total_reward_shares2, 3); -$value_gbg = round($value_golos * $median_price, 3); +$value_median_gbg = round($value_golos * $median_price, 3); +$value_market_gbg = round($value_golos * $ticker_price, 3); $dasdas_golos = $value_golos*($vote_weight/100); -$dasdas_gbg = $value_gbg*($vote_weight/100); -echo "

Стоимость апвота: $dasdas_golos $amount1, $dasdas_gbg $amount3

"; +$dasdas_median_gbg = $value_median_gbg*($vote_weight/100); +$dasdas_market_gbg = $value_market_gbg*($vote_weight/100); +echo "

Стоимость апвота: $dasdas_golos $amount1, $dasdas_market_gbg $amount3 по курсу продажи, $dasdas_median_gbg $amount3 по медиане.

"; } else if ($chain == 'steem') { $steem_a = $tvfs / $tvsh; $steem_n = 100; // vote_vait; diff --git a/calc/upvotes/js.php b/calc/upvotes/js.php new file mode 100644 index 00000000..9f4d304a --- /dev/null +++ b/calc/upvotes/js.php @@ -0,0 +1,19 @@ + $("#result_power").click(function(){ +var steem_power = document.getElementById('sp').value; +var vote_power = document.getElementById('vp').value; + + var vote_weight = document.getElementById('vote_weight').value + $("#let1").load("/calc/upvotes/ajax.php","sp=" + steem_power + "&charge=" + vote_power + "&vote_weight=" + vote_weight + "&chain=&array_url[0]=&array_url[1]=", function(result, status) { + if (status === 'error') { + console.log(result); + } + }); + }); + + $("#let1").load("/calc/upvotes/ajax.php","sp=" + steem_power + "&charge=" + vote_power + "&chain=&array_url[0]=&array_url[1]=", function(result, status) { + if (status === 'error') { + console.log(result); + } + }); + }); + diff --git a/calc/vesting-reward/ajax.php b/calc/vesting-reward/ajax.php new file mode 100644 index 00000000..c8b04ffb --- /dev/null +++ b/calc/vesting-reward/ajax.php @@ -0,0 +1,8 @@ +Результат конвертации: $sp_result $amount2

"; +?> \ No newline at end of file diff --git a/calc/vesting-reward/block.php b/calc/vesting-reward/block.php new file mode 100644 index 00000000..e800a73f --- /dev/null +++ b/calc/vesting-reward/block.php @@ -0,0 +1,9 @@ +Примерная награда из $amount2 за сутки +

+

+

"; +?> +
\ No newline at end of file diff --git a/calc/vesting-reward/js.php b/calc/vesting-reward/js.php new file mode 100644 index 00000000..49713bfc --- /dev/null +++ b/calc/vesting-reward/js.php @@ -0,0 +1,9 @@ + $("#result_vesting").click(function(){ +var all_sp = document.getElementById('all_sp').value + $("#let3").load("/calc/vesting-reward/ajax.php","sp-tec=" + all_sp + "&chain=&array_url[0]=&array_url[1]=", function(result, status) { + if (status === 'error') { + console.log(result); + } + }); + }); + diff --git a/calc/vests-gests/ajax.php b/calc/vests-gests/ajax.php index b7043524..099df0f9 100644 --- a/calc/vests-gests/ajax.php +++ b/calc/vests-gests/ajax.php @@ -21,11 +21,7 @@ $steem_per_vests = 1000000 * $tvfs / $tvsh; -if ($chain != 'viz') { - $sp_result = round($sptec / 1000000 * $steem_per_vests, 3); -} else { - $sp_result = round($sptec / 1000000 * $steem_per_vests, 6); -} +$sp_result = round($sptec / 1000000 * $steem_per_vests, 3); echo "

Результат конвертации: $sp_result $amount2

"; } diff --git a/calc/vests-gests/js.php b/calc/vests-gests/js.php new file mode 100644 index 00000000..b105cd45 --- /dev/null +++ b/calc/vests-gests/js.php @@ -0,0 +1,9 @@ + $("#result_vests").click(function(){ +var sp_tec = document.getElementById('sp_tec').value + $("#let2").load("/calc/vests-gests/ajax.php","sp-tec=" + sp_tec + "&chain=&array_url[0]=&array_url[1]=", function(result, status) { + if (status === 'error') { + console.log(result); + } + }); + }); + diff --git a/cgi-bin/php.ini b/cgi-bin/php.ini new file mode 100644 index 00000000..86c81c57 --- /dev/null +++ b/cgi-bin/php.ini @@ -0,0 +1,3 @@ +error_reporting = E_ALL +log_errors = On +error_log = /home/s/scadens/dpos.space/public_html/PHP_errors.log diff --git a/feed/index.php b/feed/index.php index b6c99226..8e528612 100644 --- a/feed/index.php +++ b/feed/index.php @@ -1,7 +1,4 @@ + Require all denied + diff --git a/flotilia/PHP_errors.log b/flotilia/PHP_errors.log new file mode 100644 index 00000000..988b37ad --- /dev/null +++ b/flotilia/PHP_errors.log @@ -0,0 +1,6 @@ +[28-Jan-2020 14:24:40 Europe/Moscow] PHP Warning: require(/home/s/scadens/dpos.space/public_html/login.php): failed to open stream: No such file or directory in /home/s/scadens/dpos.space/public_html/flotilia/index.php on line 250 +[28-Jan-2020 14:24:40 Europe/Moscow] PHP Warning: require(/home/s/scadens/dpos.space/public_html/login.php): failed to open stream: No such file or directory in /home/s/scadens/dpos.space/public_html/flotilia/index.php on line 250 +[28-Jan-2020 14:24:40 Europe/Moscow] PHP Fatal error: require(): Failed opening required '/home/s/scadens/dpos.space/public_html/login.php' (include_path='.:/usr/share/php') in /home/s/scadens/dpos.space/public_html/flotilia/index.php on line 250 +[28-Jan-2020 14:25:45 Europe/Moscow] PHP Warning: require(/home/s/scadens/dpos.space/public_html/login.php): failed to open stream: No such file or directory in /home/s/scadens/dpos.space/public_html/flotilia/index.php on line 253 +[28-Jan-2020 14:25:45 Europe/Moscow] PHP Warning: require(/home/s/scadens/dpos.space/public_html/login.php): failed to open stream: No such file or directory in /home/s/scadens/dpos.space/public_html/flotilia/index.php on line 253 +[28-Jan-2020 14:25:45 Europe/Moscow] PHP Fatal error: require(): Failed opening required '/home/s/scadens/dpos.space/public_html/login.php' (include_path='.:/usr/share/php') in /home/s/scadens/dpos.space/public_html/flotilia/index.php on line 253 diff --git a/flotilia/beget_test.txt b/flotilia/beget_test.txt new file mode 100644 index 00000000..07fcebda --- /dev/null +++ b/flotilia/beget_test.txt @@ -0,0 +1 @@ +It works from BEGET HOSTING! diff --git a/flotilia/cgi-bin/php.ini b/flotilia/cgi-bin/php.ini new file mode 100644 index 00000000..a2715a8d --- /dev/null +++ b/flotilia/cgi-bin/php.ini @@ -0,0 +1,3 @@ +error_reporting = E_ALL +log_errors = On +error_log = /home/s/scadens/dpos.space/public_html/flotilia/PHP_errors.log diff --git a/flotilia/composer.json b/flotilia/composer.json new file mode 100644 index 00000000..921c0ac6 --- /dev/null +++ b/flotilia/composer.json @@ -0,0 +1,5 @@ +{ + "require": { + "t3ran13/php-graphene-node-client": "^4.0" + } +} diff --git a/flotilia/composer.lock b/flotilia/composer.lock new file mode 100644 index 00000000..2c81f0f6 --- /dev/null +++ b/flotilia/composer.lock @@ -0,0 +1,239 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "This file is @generated automatically" + ], + "content-hash": "fcb68fbe6ace1a00612f0a614a0409e9", + "packages": [ + { + "name": "bitwasp/secp256k1-php", + "version": "v0.1.3", + "source": { + "type": "git", + "url": "https://github.com/Bit-Wasp/secp256k1-php.git", + "reference": "0ad10c06f36fa5caea6f7276315c2fae6262708e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Bit-Wasp/secp256k1-php/zipball/0ad10c06f36fa5caea6f7276315c2fae6262708e", + "reference": "0ad10c06f36fa5caea6f7276315c2fae6262708e", + "shasum": "" + }, + "require-dev": { + "phpunit/phpunit": "^6.5", + "squizlabs/php_codesniffer": "2.*", + "symfony/yaml": "^3.4" + }, + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Unlicense" + ], + "authors": [ + { + "name": "Ruben de Vries", + "email": "ruben@rubensayshi.com" + }, + { + "name": "Thomas Kerin", + "email": "afk11@users.noreply.github.com" + } + ], + "description": "PHP Extension with bindings for bitcoin/secp256k1.", + "keywords": [ + "ECDSA", + "bitcoin", + "bitwasp", + "cryptocurrency", + "ecc", + "extension", + "php", + "secp256k1" + ], + "time": "2018-02-17T14:24:05+00:00" + }, + { + "name": "stephenhill/base58", + "version": "v1.1.4", + "source": { + "type": "git", + "url": "https://github.com/stephen-hill/base58php.git", + "reference": "75ef7128303def7629d2a4bf9ea9dc378140507c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/stephen-hill/base58php/zipball/75ef7128303def7629d2a4bf9ea9dc378140507c", + "reference": "75ef7128303def7629d2a4bf9ea9dc378140507c", + "shasum": "" + }, + "require-dev": { + "athletic/athletic": "~0.1", + "phpunit/phpunit": "4.*" + }, + "type": "library", + "autoload": { + "psr-4": { + "StephenHill\\": "src/", + "StephenHill\\Benchmarks\\": "benchmarks/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Stephen Hill", + "email": "stephen@gatekiller.co.uk" + } + ], + "description": "Base58 Encoding and Decoding Library for PHP", + "time": "2016-07-20T20:34:07+00:00" + }, + { + "name": "t3ran13/bytebuffer", + "version": "v1.0.1", + "source": { + "type": "git", + "url": "https://github.com/t3ran13/ByteBuffer.git", + "reference": "fa66f8766aab6dc24cececfc3f697f16c6d9302c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/t3ran13/ByteBuffer/zipball/fa66f8766aab6dc24cececfc3f697f16c6d9302c", + "reference": "fa66f8766aab6dc24cececfc3f697f16c6d9302c", + "shasum": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "t3ran13\\ByteBuffer\\": "src/t3ran13/ByteBuffer/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ole 'nesQuick' Michaelis", + "email": "ole.michaelis@googlemail.com", + "homepage": "http://www.codestars.eu" + }, + { + "name": "t3ran13" + } + ], + "description": "Node.js inspired byte stream buffer for PHP.", + "keywords": [ + "Buffer", + "Bytehandling", + "Socket", + "binary data", + "library", + "pack", + "stream", + "wrapper" + ], + "time": "2018-02-18T19:08:51+00:00" + }, + { + "name": "t3ran13/php-graphene-node-client", + "version": "v4.1.1", + "source": { + "type": "git", + "url": "https://github.com/t3ran13/php-graphene-node-client.git", + "reference": "62938a5551511c671d2576105654ecde394b20a9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/t3ran13/php-graphene-node-client/zipball/62938a5551511c671d2576105654ecde394b20a9", + "reference": "62938a5551511c671d2576105654ecde394b20a9", + "shasum": "" + }, + "require": { + "bitwasp/secp256k1-php": "^0.1.2", + "php": "^7.0", + "stephenhill/base58": "^1.1", + "t3ran13/bytebuffer": "^1.0", + "textalk/websocket": "^1.2" + }, + "require-dev": { + "phpunit/phpunit": "7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "GrapheneNodeClient\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Tkachew", + "email": "7tkachew@gmail.com" + } + ], + "description": "PHP client for connection to Graphene node (steem/golos)", + "homepage": "https://github.com/t3ran13/php-graphene-node-client", + "keywords": [ + "Golos", + "Graphene", + "Steemit", + "Web Socket client for graphene node" + ], + "time": "2018-06-20T10:56:38+00:00" + }, + { + "name": "textalk/websocket", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/Textalk/websocket-php.git", + "reference": "bfa18bb6bf523680c7803f6b04694fbbf2f67bbf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Textalk/websocket-php/zipball/bfa18bb6bf523680c7803f6b04694fbbf2f67bbf", + "reference": "bfa18bb6bf523680c7803f6b04694fbbf2f67bbf", + "shasum": "" + }, + "require-dev": { + "cboden/ratchet": "0.3.*", + "phpunit/phpunit": "4.1.*", + "phpunit/phpunit-selenium": "1.3.3", + "satooshi/php-coveralls": "dev-master" + }, + "type": "library", + "autoload": { + "psr-4": { + "WebSocket\\": "lib" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fredrik Liljegren", + "email": "fredrik.liljegren@textalk.se" + } + ], + "description": "WebSocket client and server", + "time": "2015-10-09T07:32:42+00:00" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [] +} diff --git a/flotilia/get_account.php b/flotilia/get_account.php new file mode 100644 index 00000000..486134ed --- /dev/null +++ b/flotilia/get_account.php @@ -0,0 +1,27 @@ + [$array_url[1]], //authors +]; + +$commandQuery->setParams($data); + +$connector = new $connector_class(); + +$command = new GetAccountsCommand($connector); + +?> \ No newline at end of file diff --git a/flotilia/index.php b/flotilia/index.php new file mode 100644 index 00000000..8fe4b983 --- /dev/null +++ b/flotilia/index.php @@ -0,0 +1,307 @@ + $y['golos_power']) { + return false; + } else { + return 0; + } +} +?> + + + + + + Флотилия + + + + + + + + + +
+ +
+Сервис для подсчёта СГ участников Флотилии, составления их рейтинга и составления формата для бота. Перейти к просмотру истории логов'; +if( isset($_POST['timer'] ) ){ // проверяем существование элемента + $timer = $_POST['timer']; + $_SESSION['users_list'] = $tags; +} +if( isset($_POST['tags'] ) ){ // проверяем существование элемента +$tags = $_POST['tags']; +$_SESSION['users_list'] = $tags; + +$_SESSION['power90'] = ($_POST['power90'] ?? $_POST['power90'] ??0); +$_SESSION['power85'] = ($_POST['power85'] ?? $_POST['power85'] ?? ""); +$_SESSION['power80'] = ($_POST['power80'] ?? $_POST['power80'] ?? ""); +$_SESSION['power75'] = ($_POST['power75'] ?? $_POST['power75'] ?? ""); +$_SESSION['power70'] = ($_POST['power70'] ?? $_POST['power70'] ?? ""); +$_SESSION['power65'] = ($_POST['power65'] ?? $_POST['power65'] ?? ""); +$_SESSION['power60'] = ($_POST['power60'] ?? $_POST['power60'] ?? ""); +$_SESSION['power55'] = ($_POST['power55'] ?? $_POST['power55'] ?? ""); +$_SESSION['power50'] = ($_POST['power50'] ?? $_POST['power50'] ?? ""); +$_SESSION['power45'] = ($_POST['power45'] ?? $_POST['power45'] ?? ""); +$_SESSION['power40'] = ($_POST['power40'] ?? $_POST['power40'] ?? ""); +$_SESSION['power35'] = ($_POST['power35'] ?? $_POST['power35'] ?? ""); +$_SESSION['power30'] = ($_POST['power30'] ?? $_POST['power30'] ?? ""); +$_SESSION['power25'] = ($_POST['power25'] ?? $_POST['power25'] ?? ""); +$_SESSION['power20'] = ($_POST['power20'] ?? $_POST['power20'] ?? ""); +$_SESSION['power15'] = ($_POST['power15'] ?? $_POST['power15'] ?? ""); +$_SESSION['power10'] = ($_POST['power10'] ?? $_POST['power10'] ?? ""); +$_SESSION['power5'] = ($_POST['power5'] ?? $_POST['power5'] ?? ""); +$_SESSION['filde_percent'] = ($_POST['filde_percent'] ?? $_POST['filde_percent'] ?? ""); + +$tag = explode(",", $tags); + +echo 'Рейтинг по СГ +Общая СГ +Код для бота от @vik +Скачать лог +

Рейтинг участников по СГ

'; + +$users = ''; +foreach ($tag as $k4 => $datas4) { + $users .= $k4 . "=" . $datas4 . "&"; +} +parse_str($users, $data[0]); + + require $_SERVER['DOCUMENT_ROOT'].'/snippets/get_account.php'; + require $_SERVER['DOCUMENT_ROOT'].'/snippets/get_dynamic_global_properties.php'; + require $_SERVER['DOCUMENT_ROOT'].'/snippets/get_config.php'; + $res = $command->execute($commandQuery); + + $mass = $res['result']; + + $res3 = $command3->execute($commandQuery3); + + $mass3 = $res3['result']; + + $config_res = $config_command->execute($config_commandQuery); + + $config_mass = $config_res['result']; + + $tvfs = (float)$mass3['total_vesting_fund_steem']; +$tvsh = (float)$mass3['total_vesting_shares']; + + $steem_per_vests = 1000000 * $tvfs / $tvsh; +$arr_sp = array(); +$arr_charge = array(); +$line2 = ''; +foreach ($mass as $datas) { +// Конвертация VESTS в STEEM POWER +$sp = $datas['vesting_shares'] / 1000000 * $steem_per_vests; +$delegated_sp = $datas['received_vesting_shares'] / 1000000 * $steem_per_vests; +$un_delegating_sp = $datas['delegated_vesting_shares'] / 1000000 * $steem_per_vests; +$delegating_sp = round($un_delegating_sp, 3); + $gp = round(($sp ?? $sp ?? "")-($delegating_sp ?? $delegating_sp ?? "")+($delegated_sp ?? $delegated_sp ?? ""), 3); + + $last_vote_time = $datas['last_vote_time']; +$last_vote_time2 = strtotime($last_vote_time); +$last_vote_time1 = date('d.m.Y г. H:i:s', $last_vote_time2); + + $current_time = strtotime($mass3['time']) * 1000; +$last_vote_seconds = strtotime($last_vote_time) * 1000; + +$fastpower = 10000/$config_mass['STEEMIT_VOTE_REGENERATION_SECONDS']; +$fast_power = round($fastpower, 5); + +$volume_not = ($datas['voting_power']+(($current_time-$last_vote_seconds)/1000)*$fast_power)/100; //расчет текущей Voting Power + $volume = round($volume_not, 2); // Округление до двух знаков после запятой + +if ($volume>=100) { +$charge = min($volume, 100); +} else { + $charge=$volume; + } + +$arr_sp[] = [ +'name' => $datas['name'], +'golos_power'=> $gp, +'vote_date' => $last_vote_time1, +'account_power' => $charge +]; + } + + echo "
    "; +$summ_sp = 0; +usort ($arr_sp, 'gp_sort'); +$curator_power = ''; +foreach($arr_sp as $key_one_sp => $one_sp) { +echo "
  1. ".$one_sp['name'].": ".$one_sp['golos_power']."
    ".$one_sp['vote_date'].", ".$one_sp['account_power']."%"."\r\n"."
  2. "; +$summ_sp += $one_sp['golos_power']; + +if ($one_sp['name'] == 'belisey') { +$curator_power .= $one_sp['account_power']; +} + +} +echo "
"; +echo "

Общая сумма СГ:

+

".round($summ_sp, 3)."

"; + +echo '

Составление формата списка участников для бота

+

Внимание: запятую в последней строчке с author надо удалить - она лишняя.

'; + +// Рассчитываем минимальную батарейку, ниже которой будет 5%. +$curator_percent = ($curator_power/100)*$_SESSION['filde_percent']; // Рассчёт процента. +$CuratorVotePower = round($curator_power - $curator_percent, 2); // Рассчёт минимальной батарейки. + +echo '
['.'
'; +foreach($arr_sp as $key_one_sp31 => $one_sp31) { + + if ($one_sp31['account_power'] < $CuratorVotePower) { + echo '{"author":"'.$one_sp31['name'].'", "vote":5, "delay":'.$timer.'},'.'
'; +} else if ($one_sp31['golos_power'] >=$_SESSION['power90']) { +echo '{"author":"'.$one_sp31['name'].'", "vote":90, "delay":'.$timer.'},'.'
'; +} else if ($one_sp31['golos_power'] >=$_SESSION['power85']) { +echo '{"author":"'.$one_sp31['name'].'", "vote":85, "delay":'.$timer.'},'.'
'; +} else if ($one_sp31['golos_power'] >=$_SESSION['power80']) { +echo '{"author":"'.$one_sp31['name'].'", "vote":80, "delay":'.$timer.'},'.'
'; +} else if ($one_sp31['golos_power'] >=$_SESSION['power75']) { +echo '{"author":"'.$one_sp31['name'].'", "vote":75, "delay":'.$timer.'},'.'
'; +} else if ($one_sp31['golos_power'] >=$_SESSION['power70']) { +echo '{"author":"'.$one_sp31['name'].'", "vote":70, "delay":'.$timer.'},'.'
'; +} else if ($one_sp31['golos_power'] >=$_SESSION['power65']) { +echo '{"author":"'.$one_sp31['name'].'", "vote":65, "delay":'.$timer.'},'.'
'; +} else if ($one_sp31['golos_power'] >=$_SESSION['power60']) { +echo '{"author":"'.$one_sp31['name'].'", "vote":60, "delay":'.$timer.'},'.'
'; +} else if ($one_sp31['golos_power'] >=$_SESSION['power55']) { + echo '{"author":"'.$one_sp31['name'].'", "vote":55, "delay":'.$timer.'},'.'
'; + } else if ($one_sp31['golos_power'] >=$_SESSION['power50']) { + echo '{"author":"'.$one_sp31['name'].'", "vote":50, "delay":'.$timer.'},'.'
'; + } else if ($one_sp31['golos_power'] >=$_SESSION['power45']) { + echo '{"author":"'.$one_sp31['name'].'", "vote":45, "delay":'.$timer.'},'.'
'; + } else if ($one_sp31['golos_power'] >=$_SESSION['power40']) { + echo '{"author":"'.$one_sp31['name'].'", "vote":40, "delay":'.$timer.'},'.'
'; + } else if ($one_sp31['golos_power'] >=$_SESSION['power35']) { + echo '{"author":"'.$one_sp31['name'].'", "vote":35, "delay":'.$timer.'},'.'
'; +} else if ($one_sp31['golos_power'] >=$_SESSION['power30']) { + echo '{"author":"'.$one_sp31['name'].'", "vote":30, "delay":'.$timer.'},'.'
'; + } else if ($one_sp31['golos_power'] >=$_SESSION['power25']) { + echo '{"author":"'.$one_sp31['name'].'", "vote":25, "delay":'.$timer.'},'.'
'; + } else if ($one_sp31['golos_power'] >=$_SESSION['power20']) { + echo '{"author":"'.$one_sp31['name'].'", "vote":20, "delay":'.$timer.'},'.'
'; + } else if ($one_sp31['golos_power'] >=$_SESSION['power15']) { + echo '{"author":"'.$one_sp31['name'].'", "vote":15, "delay":'.$timer.'},'.'
'; + } else if ($one_sp31['golos_power'] >=$_SESSION['power10']) { + echo '{"author":"'.$one_sp31['name'].'", "vote":10, "delay":'.$timer.'},'.'
'; + } else if ($one_sp31['golos_power'] >=$_SESSION['power5']) { + echo '{"author":"'.$one_sp31['name'].'", "vote":5, "delay":'.$timer.'},'.'
'; +} +} +echo ']
+'; +echo ""; + +// Лог: +$filename = $_SERVER['DOCUMENT_ROOT']."/logs/".date("d-m-Y-H-i-s"); +$fp = fopen($filename.".txt", "w"); + +// записываем в файл текст +fwrite($fp, "Пользователи:"."\r\n".$_SESSION['users_list']."\r\n"."\r\n"."Минималка СГ при определённом проценте:"."\r\n"."\r\n"."90%: ".($_SESSION['power90'] ?? $_SESSION['power90'] ?? "")."\r\n"."85%: ".($_SESSION['power85'] ?? $_SESSION['power85'] ?? "")."\r\n"."80%: ".($_SESSION['power80'] ?? $_SESSION['power80'] ?? "")."\r\n"."75%: ".($_SESSION['power75'] ?? $_SESSION['power75'] ?? "")."\r\n"."70%: ".($_SESSION['power70'] ?? $_SESSION['power75'] ?? "")."\r\n"."65%: ".($_SESSION['power65'] ?? $_SESSION['power65'] ?? "")."\r\n"."60%: ".($_SESSION['power650'] ?? $_SESSION['power60'] ?? "")."\r\n"."55%: ".($_SESSION['power55'] ?? $_SESSION['power55'] ?? "")."\r\n"."50%: ".($_SESSION['power50'] ?? $_SESSION['power50'] ?? "")."\r\n"."45%: ".($_SESSION['power45'] ?? $_SESSION['power45'] ?? "")."\r\n"."40%: ".($_SESSION['power40'] ?? $_SESSION['power40'] ?? "")."\r\n"."35%: ".($_SESSION['power35'] ?? $_SESSION['power35'] ?? "")."\r\n"."30%: ".($_SESSION['power30'] ?? $_SESSION['power30'] ?? "")."\r\n"."25%: ".($_SESSION['power25'] ?? $_SESSION['power25'] ?? "")."\r\n"."20%: ".($_SESSION['power20'] ?? $_SESSION['power20'] ?? "")."\r\n"."15%: ".($_SESSION['power15'] ?? $_SESSION['power15'] ?? "")."\r\n"."10%: ".($_SESSION['power10'] ?? $_SESSION['power10'] ?? "")."\r\n"."5%: ".($_SESSION['power5'] ?? $_SESSION['power5'] ?? "")."\r\n"); +fwrite($fp, "\r\n"."Процент минимальной батарейки, которая получит % апвота в соответствии с СГ: ".$_SESSION['filde_percent']."\r\n\r\n"."Рейтинг пользователей на момент создания лога:"."\r\n"."\r\n"); + +$teller = 1; +usort ($arr_sp, 'gp_sort'); +foreach($arr_sp as $key_one_sp2 => $one_sp2) { +fwrite($fp, "$teller. ".$one_sp2['name'].": ".$one_sp2['golos_power']); +fwrite($fp, "\r\n".$one_sp2['vote_date'].", ".$one_sp2['account_power']."%"."\r\n"); + +$teller++; +} +// закрываем +fclose($fp); + +echo "

Лог файл сего момента

+

Скачать файл ".date("d-m-Y-H-i-s").".txt

"; +} +} else { +require $_SERVER['DOCUMENT_ROOT'].'/login.php'; +} +?> + +

Отправка данных

+
+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+%

+

+
+
+
+ + + diff --git a/flotilia/js/garlic.min.js b/flotilia/js/garlic.min.js new file mode 100644 index 00000000..92cba9a7 --- /dev/null +++ b/flotilia/js/garlic.min.js @@ -0,0 +1 @@ +!function(t){"use strict";var e=function(t){this.defined="undefined"!=typeof localStorage;var e="garlic:"+document.domain;try{localStorage.setItem(e,e),localStorage.removeItem(e)}catch(t){this.defined=!1}};e.prototype={constructor:e,get:function(t,e){var i=localStorage.getItem(t);if(i){try{i=JSON.parse(i)}catch(t){}return i}return void 0!==e?e:null},has:function(t){return!!localStorage.getItem(t)},set:function(t,e,i){return""===e||e instanceof Array&&0===e.length?this.destroy(t):(e=JSON.stringify(e),localStorage.setItem(t,e)),"function"!=typeof i||i()},destroy:function(t,e){return localStorage.removeItem(t),"function"!=typeof e||e()},clean:function(t){for(var e=localStorage.length-1;e>=0;e--)void 0===Array.indexOf&&-1!==localStorage.key(e).indexOf("garlic:")&&localStorage.removeItem(localStorage.key(e));return"function"!=typeof t||t()},clear:function(t){return localStorage.clear(),"function"!=typeof t||t()}};var i=function(t,e,i){this.init("garlic",t,e,i)};i.prototype={constructor:i,init:function(e,i,n,s){this.type=e,this.$element=t(i),this.options=this.getOptions(s),this.storage=n,this.path=this.options.getPath(this.$element)||this.getPath(),this.parentForm=this.$element.closest("form"),this.$element.addClass("garlic-auto-save"),this.expiresFlag=!!this.options.expires&&(this.$element.data("expires")?this.path:this.getPath(this.parentForm))+"_flag",this.$element.on(this.options.events.join("."+this.type+" "),!1,t.proxy(this.persist,this)),this.options.destroy&&t(this.parentForm).on("submit reset",!1,t.proxy(this.destroy,this)),this.retrieve()},getOptions:function(e){return t.extend({},t.fn[this.type].defaults,e,this.$element.data())},persist:function(){if(this.val!==this.getVal()){this.val=this.getVal(),this.options.expires&&this.storage.set(this.expiresFlag,((new Date).getTime()+1e3*this.options.expires).toString());var t=this.options.prePersist(this.$element,this.val);"string"==typeof t&&(this.val=t),this.storage.set(this.path,this.val),this.options.onPersist(this.$element,this.val)}},getVal:function(){return this.$element.is("input[type=checkbox]")?this.$element.prop("checked")?"checked":"unchecked":this.$element.val()},retrieve:function(){if(this.storage.has(this.path)){if(this.options.expires){var t=(new Date).getTime();if(this.storage.get(this.expiresFlag)1&&!t(a).is("input[type=radio]")&&(o+=":eq("+h.index(a)+")"),i=o+(i?">"+i:""),"form"==a.nodeName.toLowerCase())break;s=r}else s=r}return"garlic:"+document.domain+(this.options.domain?"*":window.location.pathname)+">"+i},getStorage:function(){return this.storage}},t.fn.garlic=function(n,s){var a=t.extend(!0,{},t.fn.garlic.defaults,n,this.data()),o=new e,r=!1;if(!o.defined)return!1;function h(e){var s=t(e),r=s.data("garlic"),h=t.extend({},a,s.data());if((void 0===h.storage||h.storage)&&"password"!==t(e).attr("type"))return r||s.data("garlic",r=new i(e,o,h)),"string"==typeof n&&"function"==typeof r[n]?r[n]():void 0}return this.each(function(){if(t(this).is("form"))t(this).find(a.inputs).each(function(){t(this).is(a.excluded)||(r=h(t(this)))});else if(t(this).is(a.inputs)){if(t(this).is(a.excluded))return;r=h(t(this))}}),"function"==typeof s?s():r},t.fn.garlic.Constructor=i,t.fn.garlic.defaults={destroy:!0,inputs:"input, textarea, select",excluded:'input[type="file"], input[type="hidden"], input[type="submit"], input[type="reset"]',events:["DOMAttrModified","textInput","input","change","click","keypress","paste","focus"],domain:!1,expires:!1,conflictManager:{enabled:!1,garlicPriority:!0,template:'',message:"This is your saved data. Click here to see default one",onConflictDetected:function(t,e){return!0}},getPath:function(t){},preRetrieve:function(t,e,i){return i},onRetrieve:function(t,e){},prePersist:function(t,e){return!1},onPersist:function(t,e){},onSwap:function(t,e,i){}},t(window).on("load",function(){t('[data-persist="garlic"]').each(function(){t(this).garlic()})})}(window.jQuery||window.Zepto); \ No newline at end of file diff --git a/flotilia/js/jquery.min.js b/flotilia/js/jquery.min.js new file mode 100644 index 00000000..4d9b3a25 --- /dev/null +++ b/flotilia/js/jquery.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.3.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){"use strict";var n=[],r=e.document,i=Object.getPrototypeOf,o=n.slice,a=n.concat,s=n.push,u=n.indexOf,l={},c=l.toString,f=l.hasOwnProperty,p=f.toString,d=p.call(Object),h={},g=function e(t){return"function"==typeof t&&"number"!=typeof t.nodeType},y=function e(t){return null!=t&&t===t.window},v={type:!0,src:!0,noModule:!0};function m(e,t,n){var i,o=(t=t||r).createElement("script");if(o.text=e,n)for(i in v)n[i]&&(o[i]=n[i]);t.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[c.call(e)]||"object":typeof e}var b="3.3.1",w=function(e,t){return new w.fn.init(e,t)},T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;w.fn=w.prototype={jquery:"3.3.1",constructor:w,length:0,toArray:function(){return o.call(this)},get:function(e){return null==e?o.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=w.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return w.each(this,e)},map:function(e){return this.pushStack(w.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(o.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n0&&t-1 in e)}var E=function(e){var t,n,r,i,o,a,s,u,l,c,f,p,d,h,g,y,v,m,x,b="sizzle"+1*new Date,w=e.document,T=0,C=0,E=ae(),k=ae(),S=ae(),D=function(e,t){return e===t&&(f=!0),0},N={}.hasOwnProperty,A=[],j=A.pop,q=A.push,L=A.push,H=A.slice,O=function(e,t){for(var n=0,r=e.length;n+~]|"+M+")"+M+"*"),z=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),X=new RegExp(W),U=new RegExp("^"+R+"$"),V={ID:new RegExp("^#("+R+")"),CLASS:new RegExp("^\\.("+R+")"),TAG:new RegExp("^("+R+"|[*])"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+W),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+P+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},G=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Q=/^[^{]+\{\s*\[native \w/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,K=/[+~]/,Z=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ee=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},te=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ne=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},re=function(){p()},ie=me(function(e){return!0===e.disabled&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{L.apply(A=H.call(w.childNodes),w.childNodes),A[w.childNodes.length].nodeType}catch(e){L={apply:A.length?function(e,t){q.apply(e,H.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function oe(e,t,r,i){var o,s,l,c,f,h,v,m=t&&t.ownerDocument,T=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==T&&9!==T&&11!==T)return r;if(!i&&((t?t.ownerDocument||t:w)!==d&&p(t),t=t||d,g)){if(11!==T&&(f=J.exec(e)))if(o=f[1]){if(9===T){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return L.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return L.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!S[e+" "]&&(!y||!y.test(e))){if(1!==T)m=t,v=e;else if("object"!==t.nodeName.toLowerCase()){(c=t.getAttribute("id"))?c=c.replace(te,ne):t.setAttribute("id",c=b),s=(h=a(e)).length;while(s--)h[s]="#"+c+" "+ve(h[s]);v=h.join(","),m=K.test(e)&&ge(t.parentNode)||t}if(v)try{return L.apply(r,m.querySelectorAll(v)),r}catch(e){}finally{c===b&&t.removeAttribute("id")}}}return u(e.replace(B,"$1"),t,r,i)}function ae(){var e=[];function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}return t}function se(e){return e[b]=!0,e}function ue(e){var t=d.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function le(e,t){var n=e.split("|"),i=n.length;while(i--)r.attrHandle[n[i]]=t}function ce(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function fe(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function pe(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function de(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ie(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function he(e){return se(function(t){return t=+t,se(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function ge(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}n=oe.support={},o=oe.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},p=oe.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!==d&&9===a.nodeType&&a.documentElement?(d=a,h=d.documentElement,g=!o(d),w!==d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",re,!1):i.attachEvent&&i.attachEvent("onunload",re)),n.attributes=ue(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ue(function(e){return e.appendChild(d.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=Q.test(d.getElementsByClassName),n.getById=ue(function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&g)return t.getElementsByClassName(e)},v=[],y=[],(n.qsa=Q.test(d.querySelectorAll))&&(ue(function(e){h.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+P+")"),e.querySelectorAll("[id~="+b+"-]").length||y.push("~="),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+b+"+*").length||y.push(".#.+[+~]")}),ue(function(e){e.innerHTML="";var t=d.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(n.matchesSelector=Q.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ue(function(e){n.disconnectedMatch=m.call(e,"*"),m.call(e,"[s!='']:x"),v.push("!=",W)}),y=y.length&&new RegExp(y.join("|")),v=v.length&&new RegExp(v.join("|")),t=Q.test(h.compareDocumentPosition),x=t||Q.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===d||e.ownerDocument===w&&x(w,e)?-1:t===d||t.ownerDocument===w&&x(w,t)?1:c?O(c,e)-O(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===d?-1:t===d?1:i?-1:o?1:c?O(c,e)-O(c,t):0;if(i===o)return ce(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?ce(a[r],s[r]):a[r]===w?-1:s[r]===w?1:0},d):d},oe.matches=function(e,t){return oe(e,null,null,t)},oe.matchesSelector=function(e,t){if((e.ownerDocument||e)!==d&&p(e),t=t.replace(z,"='$1']"),n.matchesSelector&&g&&!S[t+" "]&&(!v||!v.test(t))&&(!y||!y.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return oe(t,d,null,[e]).length>0},oe.contains=function(e,t){return(e.ownerDocument||e)!==d&&p(e),x(e,t)},oe.attr=function(e,t){(e.ownerDocument||e)!==d&&p(e);var i=r.attrHandle[t.toLowerCase()],o=i&&N.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},oe.escape=function(e){return(e+"").replace(te,ne)},oe.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},oe.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(D),f){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return c=null,e},i=oe.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else while(t=e[r++])n+=i(t);return n},(r=oe.selectors={cacheLength:50,createPseudo:se,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Z,ee),e[3]=(e[3]||e[4]||e[5]||"").replace(Z,ee),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||oe.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&oe.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return V.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=a(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Z,ee).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&E(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=oe.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i.replace($," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?"nextSibling":"previousSibling",y=t.parentNode,v=s&&t.nodeName.toLowerCase(),m=!u&&!s,x=!1;if(y){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===v:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?y.firstChild:y.lastChild],a&&m){x=(d=(l=(c=(f=(p=y)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1])&&l[2],p=d&&y.childNodes[d];while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if(1===p.nodeType&&++x&&p===t){c[e]=[T,d,x];break}}else if(m&&(x=d=(l=(c=(f=(p=t)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1]),!1===x)while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===v:1===p.nodeType)&&++x&&(m&&((c=(f=p[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[T,x]),p===t))break;return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||oe.error("unsupported pseudo: "+e);return i[b]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?se(function(e,n){var r,o=i(e,t),a=o.length;while(a--)e[r=O(e,o[a])]=!(n[r]=o[a])}):function(e){return i(e,0,n)}):i}},pseudos:{not:se(function(e){var t=[],n=[],r=s(e.replace(B,"$1"));return r[b]?se(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:se(function(e){return function(t){return oe(e,t).length>0}}),contains:se(function(e){return e=e.replace(Z,ee),function(t){return(t.textContent||t.innerText||i(t)).indexOf(e)>-1}}),lang:se(function(e){return U.test(e||"")||oe.error("unsupported lang: "+e),e=e.replace(Z,ee).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:de(!1),disabled:de(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return Y.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:he(function(){return[0]}),last:he(function(e,t){return[t-1]}),eq:he(function(e,t,n){return[n<0?n+t:n]}),even:he(function(e,t){for(var n=0;n=0;)e.push(r);return e}),gt:he(function(e,t,n){for(var r=n<0?n+t:n;++r1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function be(e,t,n){for(var r=0,i=t.length;r-1&&(o[l]=!(a[l]=f))}}else v=we(v===a?v.splice(h,v.length):v),i?i(null,a,v,u):L.apply(a,v)})}function Ce(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[" "],u=a?1:0,c=me(function(e){return e===t},s,!0),f=me(function(e){return O(t,e)>-1},s,!0),p=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];u1&&xe(p),u>1&&ve(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(B,"$1"),n,u0,i=e.length>0,o=function(o,a,s,u,c){var f,h,y,v=0,m="0",x=o&&[],b=[],w=l,C=o||i&&r.find.TAG("*",c),E=T+=null==w?1:Math.random()||.1,k=C.length;for(c&&(l=a===d||a||c);m!==k&&null!=(f=C[m]);m++){if(i&&f){h=0,a||f.ownerDocument===d||(p(f),s=!g);while(y=e[h++])if(y(f,a||d,s)){u.push(f);break}c&&(T=E)}n&&((f=!y&&f)&&v--,o&&x.push(f))}if(v+=m,n&&m!==v){h=0;while(y=t[h++])y(x,b,a,s);if(o){if(v>0)while(m--)x[m]||b[m]||(b[m]=j.call(u));b=we(b)}L.apply(u,b),c&&!o&&b.length>0&&v+t.length>1&&oe.uniqueSort(u)}return c&&(T=E,l=w),x};return n?se(o):o}return s=oe.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=a(e)),n=t.length;while(n--)(o=Ce(t[n]))[b]?r.push(o):i.push(o);(o=S(e,Ee(i,r))).selector=e}return o},u=oe.select=function(e,t,n,i){var o,u,l,c,f,p="function"==typeof e&&e,d=!i&&a(e=p.selector||e);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&"ID"===(l=u[0]).type&&9===t.nodeType&&g&&r.relative[u[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(Z,ee),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(u.shift().value.length)}o=V.needsContext.test(e)?0:u.length;while(o--){if(l=u[o],r.relative[c=l.type])break;if((f=r.find[c])&&(i=f(l.matches[0].replace(Z,ee),K.test(u[0].type)&&ge(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&ve(u)))return L.apply(n,i),n;break}}}return(p||s(e,d))(i,t,!g,n,!t||K.test(e)&&ge(t.parentNode)||t),n},n.sortStable=b.split("").sort(D).join("")===b,n.detectDuplicates=!!f,p(),n.sortDetached=ue(function(e){return 1&e.compareDocumentPosition(d.createElement("fieldset"))}),ue(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||le("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ue(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||le("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ue(function(e){return null==e.getAttribute("disabled")})||le(P,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),oe}(e);w.find=E,w.expr=E.selectors,w.expr[":"]=w.expr.pseudos,w.uniqueSort=w.unique=E.uniqueSort,w.text=E.getText,w.isXMLDoc=E.isXML,w.contains=E.contains,w.escapeSelector=E.escape;var k=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&w(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},D=w.expr.match.needsContext;function N(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var A=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,t,n){return g(t)?w.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?w.grep(e,function(e){return e===t!==n}):"string"!=typeof t?w.grep(e,function(e){return u.call(t,e)>-1!==n}):w.filter(t,e,n)}w.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?w.find.matchesSelector(r,e)?[r]:[]:w.find.matches(e,w.grep(t,function(e){return 1===e.nodeType}))},w.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(w(e).filter(function(){for(t=0;t1?w.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&D.test(e)?w(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(w.fn.init=function(e,t,n){var i,o;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(i="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:L.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof w?t[0]:t,w.merge(this,w.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:r,!0)),A.test(i[1])&&w.isPlainObject(t))for(i in t)g(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(o=r.getElementById(i[2]))&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):g(e)?void 0!==n.ready?n.ready(e):e(w):w.makeArray(e,this)}).prototype=w.fn,q=w(r);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};w.fn.extend({has:function(e){var t=w(e,this),n=t.length;return this.filter(function(){for(var e=0;e-1:1===n.nodeType&&w.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?w.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?u.call(w(e),this[0]):u.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(w.uniqueSort(w.merge(this.get(),w(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}w.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return k(e,"parentNode")},parentsUntil:function(e,t,n){return k(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return k(e,"nextSibling")},prevAll:function(e){return k(e,"previousSibling")},nextUntil:function(e,t,n){return k(e,"nextSibling",n)},prevUntil:function(e,t,n){return k(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return N(e,"iframe")?e.contentDocument:(N(e,"template")&&(e=e.content||e),w.merge([],e.childNodes))}},function(e,t){w.fn[e]=function(n,r){var i=w.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=w.filter(r,i)),this.length>1&&(O[e]||w.uniqueSort(i),H.test(e)&&i.reverse()),this.pushStack(i)}});var M=/[^\x20\t\r\n\f]+/g;function R(e){var t={};return w.each(e.match(M)||[],function(e,n){t[n]=!0}),t}w.Callbacks=function(e){e="string"==typeof e?R(e):w.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;s=-1){n=a.shift();while(++s-1)o.splice(n,1),n<=s&&s--}),this},has:function(e){return e?w.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l};function I(e){return e}function W(e){throw e}function $(e,t,n,r){var i;try{e&&g(i=e.promise)?i.call(e).done(t).fail(n):e&&g(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}w.extend({Deferred:function(t){var n=[["notify","progress",w.Callbacks("memory"),w.Callbacks("memory"),2],["resolve","done",w.Callbacks("once memory"),w.Callbacks("once memory"),0,"resolved"],["reject","fail",w.Callbacks("once memory"),w.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},"catch":function(e){return i.then(null,e)},pipe:function(){var e=arguments;return w.Deferred(function(t){w.each(n,function(n,r){var i=g(e[r[4]])&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&g(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(t,r,i){var o=0;function a(t,n,r,i){return function(){var s=this,u=arguments,l=function(){var e,l;if(!(t=o&&(r!==W&&(s=void 0,u=[e]),n.rejectWith(s,u))}};t?c():(w.Deferred.getStackHook&&(c.stackTrace=w.Deferred.getStackHook()),e.setTimeout(c))}}return w.Deferred(function(e){n[0][3].add(a(0,e,g(i)?i:I,e.notifyWith)),n[1][3].add(a(0,e,g(t)?t:I)),n[2][3].add(a(0,e,g(r)?r:W))}).promise()},promise:function(e){return null!=e?w.extend(e,i):i}},o={};return w.each(n,function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add(function(){r=s},n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+"With"](this===o?void 0:this,arguments),this},o[t[0]+"With"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=o.call(arguments),a=w.Deferred(),s=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?o.call(arguments):n,--t||a.resolveWith(r,i)}};if(t<=1&&($(e,a.done(s(n)).resolve,a.reject,!t),"pending"===a.state()||g(i[n]&&i[n].then)))return a.then();while(n--)$(i[n],s(n),a.reject);return a.promise()}});var B=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;w.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&B.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},w.readyException=function(t){e.setTimeout(function(){throw t})};var F=w.Deferred();w.fn.ready=function(e){return F.then(e)["catch"](function(e){w.readyException(e)}),this},w.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--w.readyWait:w.isReady)||(w.isReady=!0,!0!==e&&--w.readyWait>0||F.resolveWith(r,[w]))}}),w.ready.then=F.then;function _(){r.removeEventListener("DOMContentLoaded",_),e.removeEventListener("load",_),w.ready()}"complete"===r.readyState||"loading"!==r.readyState&&!r.documentElement.doScroll?e.setTimeout(w.ready):(r.addEventListener("DOMContentLoaded",_),e.addEventListener("load",_));var z=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===x(n)){i=!0;for(s in n)z(e,t,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,g(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(w(e),n)})),t))for(;s1,null,!0)},removeData:function(e){return this.each(function(){K.remove(this,e)})}}),w.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=J.get(e,t),n&&(!r||Array.isArray(n)?r=J.access(e,t,w.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=w.queue(e,t),r=n.length,i=n.shift(),o=w._queueHooks(e,t),a=function(){w.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return J.get(e,n)||J.access(e,n,{empty:w.Callbacks("once memory").add(function(){J.remove(e,[t+"queue",n])})})}}),w.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length\x20\t\r\n\f]+)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&N(e,t)?w.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n-1)i&&i.push(o);else if(l=w.contains(o.ownerDocument,o),a=ye(f.appendChild(o),"script"),l&&ve(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}!function(){var e=r.createDocumentFragment().appendChild(r.createElement("div")),t=r.createElement("input");t.setAttribute("type","radio"),t.setAttribute("checked","checked"),t.setAttribute("name","t"),e.appendChild(t),h.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="",h.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var be=r.documentElement,we=/^key/,Te=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ce=/^([^.]*)(?:\.(.+)|)/;function Ee(){return!0}function ke(){return!1}function Se(){try{return r.activeElement}catch(e){}}function De(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)De(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=ke;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return w().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=w.guid++)),e.each(function(){w.event.add(this,t,i,r,n)})}w.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.get(e);if(y){n.handler&&(n=(o=n).handler,i=o.selector),i&&w.find.matchesSelector(be,i),n.guid||(n.guid=w.guid++),(u=y.events)||(u=y.events={}),(a=y.handle)||(a=y.handle=function(t){return"undefined"!=typeof w&&w.event.triggered!==t.type?w.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||"").match(M)||[""]).length;while(l--)d=g=(s=Ce.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=w.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=w.event.special[d]||{},c=w.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&w.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),w.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.hasData(e)&&J.get(e);if(y&&(u=y.events)){l=(t=(t||"").match(M)||[""]).length;while(l--)if(s=Ce.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){f=w.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,y.handle)||w.removeEvent(e,d,y.handle),delete u[d])}else for(d in u)w.event.remove(e,d+t[l],n,r,!0);w.isEmptyObject(u)&&J.remove(e,"handle events")}},dispatch:function(e){var t=w.event.fix(e),n,r,i,o,a,s,u=new Array(arguments.length),l=(J.get(this,"events")||{})[t.type]||[],c=w.event.special[t.type]||{};for(u[0]=t,n=1;n=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n-1:w.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u\x20\t\r\n\f]*)[^>]*)\/>/gi,Ae=/\s*$/g;function Le(e,t){return N(e,"table")&&N(11!==t.nodeType?t:t.firstChild,"tr")?w(e).children("tbody")[0]||e:e}function He(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Oe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Pe(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(J.hasData(e)&&(o=J.access(e),a=J.set(t,o),l=o.events)){delete a.handle,a.events={};for(i in l)for(n=0,r=l[i].length;n1&&"string"==typeof y&&!h.checkClone&&je.test(y))return e.each(function(i){var o=e.eq(i);v&&(t[0]=y.call(this,i,o.html())),Re(o,t,n,r)});if(p&&(i=xe(t,e[0].ownerDocument,!1,e,r),o=i.firstChild,1===i.childNodes.length&&(i=o),o||r)){for(u=(s=w.map(ye(i,"script"),He)).length;f")},clone:function(e,t,n){var r,i,o,a,s=e.cloneNode(!0),u=w.contains(e.ownerDocument,e);if(!(h.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||w.isXMLDoc(e)))for(a=ye(s),r=0,i=(o=ye(e)).length;r0&&ve(a,!u&&ye(e,"script")),s},cleanData:function(e){for(var t,n,r,i=w.event.special,o=0;void 0!==(n=e[o]);o++)if(Y(n)){if(t=n[J.expando]){if(t.events)for(r in t.events)i[r]?w.event.remove(n,r):w.removeEvent(n,r,t.handle);n[J.expando]=void 0}n[K.expando]&&(n[K.expando]=void 0)}}}),w.fn.extend({detach:function(e){return Ie(this,e,!0)},remove:function(e){return Ie(this,e)},text:function(e){return z(this,function(e){return void 0===e?w.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Re(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Le(this,e).appendChild(e)})},prepend:function(){return Re(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Le(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(w.cleanData(ye(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return w.clone(this,e,t)})},html:function(e){return z(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ae.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=w.htmlPrefilter(e);try{for(;n=0&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))),u}function et(e,t,n){var r=$e(e),i=Fe(e,t,r),o="border-box"===w.css(e,"boxSizing",!1,r),a=o;if(We.test(i)){if(!n)return i;i="auto"}return a=a&&(h.boxSizingReliable()||i===e.style[t]),("auto"===i||!parseFloat(i)&&"inline"===w.css(e,"display",!1,r))&&(i=e["offset"+t[0].toUpperCase()+t.slice(1)],a=!0),(i=parseFloat(i)||0)+Ze(e,t,n||(o?"border":"content"),a,r,i)+"px"}w.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Fe(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=G(t),u=Xe.test(t),l=e.style;if(u||(t=Je(s)),a=w.cssHooks[t]||w.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"==(o=typeof n)&&(i=ie.exec(n))&&i[1]&&(n=ue(e,t,i),o="number"),null!=n&&n===n&&("number"===o&&(n+=i&&i[3]||(w.cssNumber[s]?"":"px")),h.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=G(t);return Xe.test(t)||(t=Je(s)),(a=w.cssHooks[t]||w.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Fe(e,t,r)),"normal"===i&&t in Ve&&(i=Ve[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),w.each(["height","width"],function(e,t){w.cssHooks[t]={get:function(e,n,r){if(n)return!ze.test(w.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?et(e,t,r):se(e,Ue,function(){return et(e,t,r)})},set:function(e,n,r){var i,o=$e(e),a="border-box"===w.css(e,"boxSizing",!1,o),s=r&&Ze(e,t,r,a,o);return a&&h.scrollboxSize()===o.position&&(s-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-Ze(e,t,"border",!1,o)-.5)),s&&(i=ie.exec(n))&&"px"!==(i[3]||"px")&&(e.style[t]=n,n=w.css(e,t)),Ke(e,n,s)}}}),w.cssHooks.marginLeft=_e(h.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Fe(e,"marginLeft"))||e.getBoundingClientRect().left-se(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),w.each({margin:"",padding:"",border:"Width"},function(e,t){w.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+oe[r]+t]=o[r]||o[r-2]||o[0];return i}},"margin"!==e&&(w.cssHooks[e+t].set=Ke)}),w.fn.extend({css:function(e,t){return z(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=$e(e),i=t.length;a1)}});function tt(e,t,n,r,i){return new tt.prototype.init(e,t,n,r,i)}w.Tween=tt,tt.prototype={constructor:tt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||w.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(w.cssNumber[n]?"":"px")},cur:function(){var e=tt.propHooks[this.prop];return e&&e.get?e.get(this):tt.propHooks._default.get(this)},run:function(e){var t,n=tt.propHooks[this.prop];return this.options.duration?this.pos=t=w.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):tt.propHooks._default.set(this),this}},tt.prototype.init.prototype=tt.prototype,tt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=w.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){w.fx.step[e.prop]?w.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[w.cssProps[e.prop]]&&!w.cssHooks[e.prop]?e.elem[e.prop]=e.now:w.style(e.elem,e.prop,e.now+e.unit)}}},tt.propHooks.scrollTop=tt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},w.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},w.fx=tt.prototype.init,w.fx.step={};var nt,rt,it=/^(?:toggle|show|hide)$/,ot=/queueHooks$/;function at(){rt&&(!1===r.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(at):e.setTimeout(at,w.fx.interval),w.fx.tick())}function st(){return e.setTimeout(function(){nt=void 0}),nt=Date.now()}function ut(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=oe[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function lt(e,t,n){for(var r,i=(pt.tweeners[t]||[]).concat(pt.tweeners["*"]),o=0,a=i.length;o1)},removeAttr:function(e){return this.each(function(){w.removeAttr(this,e)})}}),w.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?w.prop(e,t,n):(1===o&&w.isXMLDoc(e)||(i=w.attrHooks[t.toLowerCase()]||(w.expr.match.bool.test(t)?dt:void 0)),void 0!==n?null===n?void w.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=w.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!h.radioValue&&"radio"===t&&N(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(M);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),dt={set:function(e,t,n){return!1===t?w.removeAttr(e,n):e.setAttribute(n,n),n}},w.each(w.expr.match.bool.source.match(/\w+/g),function(e,t){var n=ht[t]||w.find.attr;ht[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=ht[a],ht[a]=i,i=null!=n(e,t,r)?a:null,ht[a]=o),i}});var gt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;w.fn.extend({prop:function(e,t){return z(this,w.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[w.propFix[e]||e]})}}),w.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&w.isXMLDoc(e)||(t=w.propFix[t]||t,i=w.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=w.find.attr(e,"tabindex");return t?parseInt(t,10):gt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),h.optSelected||(w.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),w.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){w.propFix[this.toLowerCase()]=this});function vt(e){return(e.match(M)||[]).join(" ")}function mt(e){return e.getAttribute&&e.getAttribute("class")||""}function xt(e){return Array.isArray(e)?e:"string"==typeof e?e.match(M)||[]:[]}w.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).addClass(e.call(this,t,mt(this)))});if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).removeClass(e.call(this,t,mt(this)))});if(!arguments.length)return this.attr("class","");if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])while(r.indexOf(" "+o+" ")>-1)r=r.replace(" "+o+" "," ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"==typeof t&&r?t?this.addClass(e):this.removeClass(e):g(e)?this.each(function(n){w(this).toggleClass(e.call(this,n,mt(this),t),t)}):this.each(function(){var t,i,o,a;if(r){i=0,o=w(this),a=xt(e);while(t=a[i++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else void 0!==e&&"boolean"!==n||((t=mt(this))&&J.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":J.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&(" "+vt(mt(n))+" ").indexOf(t)>-1)return!0;return!1}});var bt=/\r/g;w.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=g(e),this.each(function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,w(this).val()):e)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=w.map(i,function(e){return null==e?"":e+""})),(t=w.valHooks[this.type]||w.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return(t=w.valHooks[i.type]||w.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(bt,""):null==n?"":n}}}),w.extend({valHooks:{option:{get:function(e){var t=w.find.attr(e,"value");return null!=t?t:vt(w.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),w.each(["radio","checkbox"],function(){w.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=w.inArray(w(e).val(),t)>-1}},h.checkOn||(w.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),h.focusin="onfocusin"in e;var wt=/^(?:focusinfocus|focusoutblur)$/,Tt=function(e){e.stopPropagation()};w.extend(w.event,{trigger:function(t,n,i,o){var a,s,u,l,c,p,d,h,v=[i||r],m=f.call(t,"type")?t.type:t,x=f.call(t,"namespace")?t.namespace.split("."):[];if(s=h=u=i=i||r,3!==i.nodeType&&8!==i.nodeType&&!wt.test(m+w.event.triggered)&&(m.indexOf(".")>-1&&(m=(x=m.split(".")).shift(),x.sort()),c=m.indexOf(":")<0&&"on"+m,t=t[w.expando]?t:new w.Event(m,"object"==typeof t&&t),t.isTrigger=o?2:3,t.namespace=x.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+x.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=i),n=null==n?[t]:w.makeArray(n,[t]),d=w.event.special[m]||{},o||!d.trigger||!1!==d.trigger.apply(i,n))){if(!o&&!d.noBubble&&!y(i)){for(l=d.delegateType||m,wt.test(l+m)||(s=s.parentNode);s;s=s.parentNode)v.push(s),u=s;u===(i.ownerDocument||r)&&v.push(u.defaultView||u.parentWindow||e)}a=0;while((s=v[a++])&&!t.isPropagationStopped())h=s,t.type=a>1?l:d.bindType||m,(p=(J.get(s,"events")||{})[t.type]&&J.get(s,"handle"))&&p.apply(s,n),(p=c&&s[c])&&p.apply&&Y(s)&&(t.result=p.apply(s,n),!1===t.result&&t.preventDefault());return t.type=m,o||t.isDefaultPrevented()||d._default&&!1!==d._default.apply(v.pop(),n)||!Y(i)||c&&g(i[m])&&!y(i)&&((u=i[c])&&(i[c]=null),w.event.triggered=m,t.isPropagationStopped()&&h.addEventListener(m,Tt),i[m](),t.isPropagationStopped()&&h.removeEventListener(m,Tt),w.event.triggered=void 0,u&&(i[c]=u)),t.result}},simulate:function(e,t,n){var r=w.extend(new w.Event,n,{type:e,isSimulated:!0});w.event.trigger(r,null,t)}}),w.fn.extend({trigger:function(e,t){return this.each(function(){w.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return w.event.trigger(e,t,n,!0)}}),h.focusin||w.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){w.event.simulate(t,e.target,w.event.fix(e))};w.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=J.access(r,t);i||r.addEventListener(e,n,!0),J.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=J.access(r,t)-1;i?J.access(r,t,i):(r.removeEventListener(e,n,!0),J.remove(r,t))}}});var Ct=e.location,Et=Date.now(),kt=/\?/;w.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||w.error("Invalid XML: "+t),n};var St=/\[\]$/,Dt=/\r?\n/g,Nt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;function jt(e,t,n,r){var i;if(Array.isArray(t))w.each(t,function(t,i){n||St.test(e)?r(e,i):jt(e+"["+("object"==typeof i&&null!=i?t:"")+"]",i,n,r)});else if(n||"object"!==x(t))r(e,t);else for(i in t)jt(e+"["+i+"]",t[i],n,r)}w.param=function(e,t){var n,r=[],i=function(e,t){var n=g(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(Array.isArray(e)||e.jquery&&!w.isPlainObject(e))w.each(e,function(){i(this.name,this.value)});else for(n in e)jt(n,e[n],t,i);return r.join("&")},w.fn.extend({serialize:function(){return w.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=w.prop(this,"elements");return e?w.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!w(this).is(":disabled")&&At.test(this.nodeName)&&!Nt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=w(this).val();return null==n?null:Array.isArray(n)?w.map(n,function(e){return{name:t.name,value:e.replace(Dt,"\r\n")}}):{name:t.name,value:n.replace(Dt,"\r\n")}}).get()}});var qt=/%20/g,Lt=/#.*$/,Ht=/([?&])_=[^&]*/,Ot=/^(.*?):[ \t]*([^\r\n]*)$/gm,Pt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Mt=/^(?:GET|HEAD)$/,Rt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Bt=r.createElement("a");Bt.href=Ct.href;function Ft(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(M)||[];if(g(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function _t(e,t,n,r){var i={},o=e===Wt;function a(s){var u;return i[s]=!0,w.each(e[s]||[],function(e,s){var l=s(t,n,r);return"string"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)}),u}return a(t.dataTypes[0])||!i["*"]&&a("*")}function zt(e,t){var n,r,i=w.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&w.extend(!0,e,r),e}function Xt(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}function Ut(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}w.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ct.href,type:"GET",isLocal:Pt.test(Ct.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":w.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,w.ajaxSettings),t):zt(w.ajaxSettings,e)},ajaxPrefilter:Ft(It),ajaxTransport:Ft(Wt),ajax:function(t,n){"object"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,p,d,h=w.ajaxSetup({},n),g=h.context||h,y=h.context&&(g.nodeType||g.jquery)?w(g):w.event,v=w.Deferred(),m=w.Callbacks("once memory"),x=h.statusCode||{},b={},T={},C="canceled",E={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s){s={};while(t=Ot.exec(a))s[t[1].toLowerCase()]=t[2]}t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return c?a:null},setRequestHeader:function(e,t){return null==c&&(e=T[e.toLowerCase()]=T[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==c&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)E.always(e[E.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||C;return i&&i.abort(t),k(0,t),this}};if(v.promise(E),h.url=((t||h.url||Ct.href)+"").replace(Rt,Ct.protocol+"//"),h.type=n.method||n.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(M)||[""],null==h.crossDomain){l=r.createElement("a");try{l.href=h.url,l.href=l.href,h.crossDomain=Bt.protocol+"//"+Bt.host!=l.protocol+"//"+l.host}catch(e){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=w.param(h.data,h.traditional)),_t(It,h,n,E),c)return E;(f=w.event&&h.global)&&0==w.active++&&w.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Mt.test(h.type),o=h.url.replace(Lt,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(qt,"+")):(d=h.url.slice(o.length),h.data&&(h.processData||"string"==typeof h.data)&&(o+=(kt.test(o)?"&":"?")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Ht,"$1"),d=(kt.test(o)?"&":"?")+"_="+Et+++d),h.url=o+d),h.ifModified&&(w.lastModified[o]&&E.setRequestHeader("If-Modified-Since",w.lastModified[o]),w.etag[o]&&E.setRequestHeader("If-None-Match",w.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||n.contentType)&&E.setRequestHeader("Content-Type",h.contentType),E.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+$t+"; q=0.01":""):h.accepts["*"]);for(p in h.headers)E.setRequestHeader(p,h.headers[p]);if(h.beforeSend&&(!1===h.beforeSend.call(g,E,h)||c))return E.abort();if(C="abort",m.add(h.complete),E.done(h.success),E.fail(h.error),i=_t(Wt,h,n,E)){if(E.readyState=1,f&&y.trigger("ajaxSend",[E,h]),c)return E;h.async&&h.timeout>0&&(u=e.setTimeout(function(){E.abort("timeout")},h.timeout));try{c=!1,i.send(b,k)}catch(e){if(c)throw e;k(-1,e)}}else k(-1,"No Transport");function k(t,n,r,s){var l,p,d,b,T,C=n;c||(c=!0,u&&e.clearTimeout(u),i=void 0,a=s||"",E.readyState=t>0?4:0,l=t>=200&&t<300||304===t,r&&(b=Xt(h,E,r)),b=Ut(h,b,E,l),l?(h.ifModified&&((T=E.getResponseHeader("Last-Modified"))&&(w.lastModified[o]=T),(T=E.getResponseHeader("etag"))&&(w.etag[o]=T)),204===t||"HEAD"===h.type?C="nocontent":304===t?C="notmodified":(C=b.state,p=b.data,l=!(d=b.error))):(d=C,!t&&C||(C="error",t<0&&(t=0))),E.status=t,E.statusText=(n||C)+"",l?v.resolveWith(g,[p,C,E]):v.rejectWith(g,[E,C,d]),E.statusCode(x),x=void 0,f&&y.trigger(l?"ajaxSuccess":"ajaxError",[E,h,l?p:d]),m.fireWith(g,[E,C]),f&&(y.trigger("ajaxComplete",[E,h]),--w.active||w.event.trigger("ajaxStop")))}return E},getJSON:function(e,t,n){return w.get(e,t,n,"json")},getScript:function(e,t){return w.get(e,void 0,t,"script")}}),w.each(["get","post"],function(e,t){w[t]=function(e,n,r,i){return g(n)&&(i=i||r,r=n,n=void 0),w.ajax(w.extend({url:e,type:t,dataType:i,data:n,success:r},w.isPlainObject(e)&&e))}}),w._evalUrl=function(e){return w.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},w.fn.extend({wrapAll:function(e){var t;return this[0]&&(g(e)&&(e=e.call(this[0])),t=w(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return g(e)?this.each(function(t){w(this).wrapInner(e.call(this,t))}):this.each(function(){var t=w(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=g(e);return this.each(function(n){w(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){w(this).replaceWith(this.childNodes)}),this}}),w.expr.pseudos.hidden=function(e){return!w.expr.pseudos.visible(e)},w.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},w.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Vt={0:200,1223:204},Gt=w.ajaxSettings.xhr();h.cors=!!Gt&&"withCredentials"in Gt,h.ajax=Gt=!!Gt,w.ajaxTransport(function(t){var n,r;if(h.cors||Gt&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");for(a in i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(Vt[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=s.ontimeout=n("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout(function(){n&&r()})},n=n("abort");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),w.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),w.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return w.globalEval(e),e}}}),w.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),w.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(i,o){t=w(" +

Посты-лидеры по количеству донатов

+

Выберите дату

+
+

Месяц: +

+

Год: +

+

'; +$html = file_get_contents('http://138.201.91.11:3900/donates?type=donators&date='.$_GET['month'].'_'.$_GET['year']); +$table = json_decode($html, true); +echo ''; +if ($table) { +foreach ($table as $donator) { +echo ' + +'; +} +} +echo '
ЛогинСумма донатов в GOLOSСумма донатов в GBG
'.$donator['link'].''.$donator['golos_amount'].''.$donator['gbg_amount'].'
+ +'; +?> \ No newline at end of file diff --git a/golos-donates/index.php b/golos-donates/index.php new file mode 100644 index 00000000..7f25346a --- /dev/null +++ b/golos-donates/index.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/golos-donates/params.php b/golos-donates/params.php new file mode 100644 index 00000000..f4578927 --- /dev/null +++ b/golos-donates/params.php @@ -0,0 +1,25 @@ +Топ донатеров и постов. Сортировка по GOLOS или по GBG.

'; + } else if (!isset($array_url[1]) && !isset($array_url[2])) { + $title = "Донаты Голоса | $title_domain"; + $meta_keywords = "golos, донаты, donates"; + $meta_description = "Страница донатов Голоса."; + $h1 = "Golos donates"; + $description = '

Топ донатеров и постов. Сортировка по GOLOS или по GBG.

'; + } else if ($array_url[1] == 'posts') { + $title = "Посты-лидеры по количеству донатов | $title_domain"; + $meta_keywords = "golos, донаты, donates, посты"; + $meta_description = "Здесь вы найдёте топ постов, получивших наибольшее количество донатов."; + $h1 = "Golos donates"; + $description = '

Здесь вы найдёте топ постов, получивших наибольшее количество донатов.

'; + $profiles_script = ''; + + } + $footer_text = "просматривать топ донатеров или постов, получивших донаты"; +} // Конец условия для данного сервиса \ No newline at end of file diff --git a/golos-donates/posts.php b/golos-donates/posts.php new file mode 100644 index 00000000..64125228 --- /dev/null +++ b/golos-donates/posts.php @@ -0,0 +1,37 @@ + + + +

Посты-лидеры по количеству донатов

+

Выберите дату

+
+

Месяц: +

+

Год: +

+

'; +$html = file_get_contents('http://138.201.91.11:3900/donates?type=posts&date='.$_GET['month'].'_'.$_GET['year']); +$table = json_decode($html, true); +echo ''; +if ($table) { +foreach ($table as $post) { +echo ' + +'; +} +} +echo '
Ссылка на постСумма донатов в GOLOSСумма донатов в GBG
'.$post['link'].''.$post['golos_amount'].''.$post['gbg_amount'].'
+ +'; +?> \ No newline at end of file diff --git a/golos-donates/sort.js b/golos-donates/sort.js new file mode 100644 index 00000000..08166457 --- /dev/null +++ b/golos-donates/sort.js @@ -0,0 +1,16 @@ +$(document).ready(function() { + $('#table').DataTable( { +             "language": { +                 "url": "//cdn.datatables.net/plug-ins/1.10.20/i18n/Russian.json" +             }, + "order": [[ 1, "desc" ], [ 2, "desc" ]], +         "aoColumns": [ +             null, +             { "orderSequence": [ "desc" ] }, +             { "orderSequence": [ "desc" ] } +         ], + "aoColumnDefs": [ +{ 'bSortable': false, 'aTargets': [ 0 ] } +], + } ); +}); \ No newline at end of file diff --git a/golos-polls/create.php b/golos-polls/create.php new file mode 100644 index 00000000..9df15044 --- /dev/null +++ b/golos-polls/create.php @@ -0,0 +1,80 @@ + +

Создание опроса Список

+
+

+

+

+

+

Варианты ответа: +

+

+
+

+

+

+

+

+

+

+
+
\ No newline at end of file diff --git a/golos-polls/index.php b/golos-polls/index.php new file mode 100644 index 00000000..7d46fb20 --- /dev/null +++ b/golos-polls/index.php @@ -0,0 +1,18 @@ + \ No newline at end of file diff --git a/golos-polls/list.php b/golos-polls/list.php new file mode 100644 index 00000000..dc18208f --- /dev/null +++ b/golos-polls/list.php @@ -0,0 +1,12 @@ +

Список опросов Создание нового опроса

'; +$html = file_get_contents('http://62.1138.201.91.11:3200/golos-votes?type=list'); +$table = json_decode($html, true); +echo ' +'; +?> \ No newline at end of file diff --git a/golos-polls/main.php b/golos-polls/main.php new file mode 100644 index 00000000..61f62784 --- /dev/null +++ b/golos-polls/main.php @@ -0,0 +1,5 @@ +
+

Меню

+ +
\ No newline at end of file diff --git a/golos-polls/params.php b/golos-polls/params.php new file mode 100644 index 00000000..88897fc2 --- /dev/null +++ b/golos-polls/params.php @@ -0,0 +1,43 @@ +Опросы, которые создаются путём сжигания определённой суммы GBG к null, а также голосования при помощи отправки custom_json.

+

На сайте реализован удобный интерфейс для работы с ними.

'; + } else if (!isset($array_url[1]) && !isset($array_url[2])) { + $title = "Опросы на Голосе | $title_domain"; + $meta_keywords = "Golos, голос, опросы, голосования, референдумы"; + $meta_description = "Страница опросов Голоса"; + $h1 = "Опросы на Голосе"; + $description = '

Опросы, которые создаются путём сжигания определённой суммы GBG к null, а также голосования при помощи отправки custom_json.

+

На сайте реализован удобный интерфейс для работы с ними.

'; + } else if ($array_url[1] == 'create') { + $title = "Создание опроса на Голосе | $title_domain"; + $meta_keywords = "Golos, голос, опросы, голосования, референдумы, создание"; + $meta_description = "Страница создания опросов на Голосе."; + $h1 = "Создание опроса в блокчейне Golos"; + $description = '

Опросы, которые создаются путём сжигания определённой суммы GBG к null. На этой странице создана форма для удобной отправки перевода к null.

'; + } else if ($array_url[1] == 'list') { + $title = "Список опросов на Голосе | $title_domain"; + $meta_keywords = "Golos, голос, опросы, голосования, референдумы, список"; + $meta_description = "Страница списка опросов Голоса"; + $h1 = "Список опросов"; + $description = '

Список опросов. Берётся из блокчейна.

'; + } else if ($array_url[1] == 'voteing') { + $title = "Голосование по опросу | $title_domain"; + $meta_keywords = "Golos, голос, опросы, голосования, референдумы, голосование"; + $meta_description = "Страница голосования по опросам Голоса"; + $h1 = "Голосование"; + $description = '

Голосования производится при помощи отправки custom_json.

'; + } else if ($array_url[1] == 'results') { + $title = "Предварительные или окончательные результаты опроса | $title_domain"; + $meta_keywords = "Golos, голос, опросы, голосования, референдумы, результаты, предварительные, окончательные"; + $meta_description = "Страница предварительных или окончательных результатов опроса Голоса"; + $h1 = "Предварительные или окончательные результаты"; + $description = '

Голосования производится при помощи отправки custom_json. Проценты вычисляются в зависимости от того, у кого сколько личной СГ, а также сколько Силы Голоса передано в качестве прокси.

'; + } + $footer_text = "Просматривать опросы и голосовать."; +} // Конец условия для данного сервиса \ No newline at end of file diff --git a/golos-polls/results.php b/golos-polls/results.php new file mode 100644 index 00000000..c250d66e --- /dev/null +++ b/golos-polls/results.php @@ -0,0 +1,47 @@ +execute($commandQuery3); +$mass3 = $res3['result']; +$config_res = $config_command->execute($config_commandQuery); +$config_mass = $config_res['result']; + // Расчет steem_per_vests + $tvfs = (float)$mass3['total_vesting_fund_steem']; + $tvsh = (float)$mass3['total_vesting_shares']; + $steem_per_vests = 1000000 * $tvfs / $tvsh; +echo '
+

Результаты голосование Список опросов

'; +$html = file_get_contents('http://138.201.91.11:3200/golos-votes?type=vote&permlink='.$array_url[2]); +if ($array_url[2] && $html) { +$table = json_decode($html, true); +$d = new DateTime(); +$d->setTimestamp($table['end_date']); +// или createFromFormat с форматом U +$d = DateTime::createFromFormat('U', $table['end_date']); +$sp = $table['all_gests'] / 1000000 * $steem_per_vests; +$sp = round($sp, 3); +echo '
+

Вопрос: '.$table['question'].'

+

Дата и время завершения: '.$d->format('d.m.Y H:i:s').' GMT

+


+

'.$table['type'].'. Всего проголосовало '.$sp.' СГ ('.round(($table['all_gests']/$tvsh*100), 2).'% от всей СГ).

+
+ +'; +$voters_str = '

Топ 100 пользователей по СГ (каждый вариант, за который есть голоса)

'; +foreach ($table['variants'] as $answer) { + $answer_gests_percent = round(($answer['gests'] / $tvsh)*100, 2); + echo ' + +'; +$voters_str .= '

За вариант "'.$answer['answer'].'" проголосовали:

+

'.$answer['voters'].'

+'; +} +echo '
Вариант ответаПроцентПроцент от общей СГ по варианту
'.$answer['answer'].''.$answer['percent'].'%'.$answer_gests_percent.'%
+
'.$voters_str; +} else { +echo '

Такого опроса нет.

'; +} +echo '
'; +?> \ No newline at end of file diff --git a/golos-polls/snippets/get_config.php b/golos-polls/snippets/get_config.php new file mode 100644 index 00000000..3d64f526 --- /dev/null +++ b/golos-polls/snippets/get_config.php @@ -0,0 +1,21 @@ +setParams($config_data); + +$config_command = new GetConfigCommand($connector); + +?> \ No newline at end of file diff --git a/golos-polls/snippets/get_dynamic_global_properties.php b/golos-polls/snippets/get_dynamic_global_properties.php new file mode 100644 index 00000000..1d07dae2 --- /dev/null +++ b/golos-polls/snippets/get_dynamic_global_properties.php @@ -0,0 +1,20 @@ +setParams($data3); + +$connector = new $connector_class(); + +$command3 = new GetDynamicGlobalPropertiesCommand($connector); + diff --git a/golos-polls/voteing.php b/golos-polls/voteing.php new file mode 100644 index 00000000..90b0a06a --- /dev/null +++ b/golos-polls/voteing.php @@ -0,0 +1,57 @@ + + +

Голосование Предварительные или окончательные результаты Список опросов

';$html = file_get_contents('http://138.201.91.11:3200/golos-votes?type=voteing&permlink='.$array_url[2]); +if ($array_url[2] && $html) { +$table = json_decode($html, true); +$answers = $table['answers']; +if ($answers && $table['end_date'] > gmmktime()) { + $d = new DateTime(); + $d->setTimestamp($table['end_date']); + + // или createFromFormat с форматом U + $d = DateTime::createFromFormat('U', $table['end_date']); + echo '
+

Вопрос: '.$table['question'].'

+

Дата и время завершения: '.$d->format('d.m.Y H:i:s').' GMT

+
+

+

+
+

+
'; +foreach ($answers as $num => $answer) { + echo '

'.$answer.'

'; +} +echo '

+
+

+
'; +} else if ($table['end_date'] <= gmmktime()) { + echo '

Опрос закончен.

'; +} +} else { +echo '

Такого опроса нет.

'; +} +echo ''; +?> \ No newline at end of file diff --git a/golos-top/gbg.php b/golos-top/gbg.php new file mode 100644 index 00000000..f5e1a450 --- /dev/null +++ b/golos-top/gbg.php @@ -0,0 +1,25 @@ +

Сортировка

+

GBG СГ GOLOS

'; +$html = file_get_contents('http://138.201.91.11:3100/golos-top?token=GBG'); +$table = json_decode($html, true); +$top = $table['data']; +echo ' +'; +if ($top) { +foreach ($top as $num => $user) { +$num = $num +1; + echo ' + + + + + + + +'; +} +} +echo '
Позиция в топеЛогинБаланс GBGПроцент от всех GBGБаланс GOLOSПроцент от всех GOLOSMGESTSСГПроцент от общей СГ
'.$num.'@'.$user['login'].''.$user['sbd_balance'].''.$user['sbd_balance_percent'].''.$user['balance'].''.$user['balance_percent'].''.$user['mgests'].''.$user['gp'].''.$user['gests_percent'].'
+'; +?> \ No newline at end of file diff --git a/golos-top/golos.php b/golos-top/golos.php new file mode 100644 index 00000000..e1e61784 --- /dev/null +++ b/golos-top/golos.php @@ -0,0 +1,25 @@ +

Сортировка

+

GOLOS СГ GBG

'; +$html = file_get_contents('http://138.201.91.11:3100/golos-top?token=GOLOS'); +$table = json_decode($html, true); +$top = $table['data']; +echo ' +'; +if ($top) { +foreach ($top as $num => $user) { +$num = $num +1; + echo ' + + + + + + + +'; +} +} +echo '
Позиция в топеЛогинБаланс GOLOSПроцент от всех GOLOSБаланс GBGПроцент от всех GBGMGESTSСГПроцент от общей СГ
'.$num.'@'.$user['login'].''.$user['balance'].''.$user['balance_percent'].''.$user['sbd_balance'].''.$user['sbd_balance_percent'].''.$user['mgests'].''.$user['gp'].''.$user['gests_percent'].'
+'; +?> \ No newline at end of file diff --git a/golos-top/gp.php b/golos-top/gp.php new file mode 100644 index 00000000..e300d63b --- /dev/null +++ b/golos-top/gp.php @@ -0,0 +1,25 @@ +

Сортировка

+

СГ GBG GOLOS

'; +$html = file_get_contents('http://138.201.91.11:3100/golos-top?token=GP'); +$table = json_decode($html, true); +$top = $table['data']; +echo ' +'; +if ($top) { +foreach ($top as $num => $user) { +$num = $num +1; + echo ' + + + + + + + +'; +} +} +echo '
Позиция в топеЛогинСГMGESTSПроцент от общей СГБаланс GOLOSПроцент от всех GOLOSБаланс GBGПроцент от всех GBG
'.$num.'@'.$user['login'].''.$user['gp'].''.$user['mgests'].''.$user['gests_percent'].''.$user['balance'].''.$user['balance_percent'].''.$user['sbd_balance'].''.$user['sbd_balance_percent'].'
+'; +?> \ No newline at end of file diff --git a/golos-top/index.php b/golos-top/index.php new file mode 100644 index 00000000..6f5fd207 --- /dev/null +++ b/golos-top/index.php @@ -0,0 +1,16 @@ + \ No newline at end of file diff --git a/golos-top/main.php b/golos-top/main.php new file mode 100644 index 00000000..0d3b67ae --- /dev/null +++ b/golos-top/main.php @@ -0,0 +1,8 @@ + +

Выберите токен

+
  1. GBG
  2. +
  3. GOLOS
  4. +
  5. СГ
+'; +?> \ No newline at end of file diff --git a/golos-top/params.php b/golos-top/params.php new file mode 100644 index 00000000..18bf25a5 --- /dev/null +++ b/golos-top/params.php @@ -0,0 +1,35 @@ +Топ по СГ, GBG и GOLOS.

'; + } else if (!isset($array_url[1]) && !isset($array_url[2])) { + $title = "Топ пользователей Голоса | $title_domain"; + $meta_keywords = "Golos, топ, пользователи, юзеры"; + $meta_description = "Страница топа пользователей Голоса"; + $h1 = "Топ пользователей Голоса"; + $description = '

Топ по СГ, GBG и GOLOS.

'; + } else if (strtoupper($array_url[1]) == 'GBG') { + $title = "Топ пользователей Голоса по GBG | $title_domain"; + $meta_keywords = "golos, топ, gbg, гбг"; + $meta_description = "Топ пользователей Голоса по GBG."; + $h1 = "Топ по GBG"; + $description = '

Топ 100 пользователей, отсортированных по GBG.

'; + } else if (strtoupper($array_url[1]) == 'GOLOS') { + $title = "Топ пользователей Голоса по GOLOS | $title_domain"; + $meta_keywords = "golos, топ, GOLOS, токен"; + $meta_description = "Топ пользователей Голоса по токену GOLOS."; + $h1 = "Топ по GOLOS"; + $description = '

Топ 100 пользователей, отсортированных по GOLOS.

'; + } else if (strtoupper($array_url[1]) == 'GP') { + $title = "Топ пользователей Голоса по СГ | $title_domain"; + $meta_keywords = "golos, топ, СГ, силаголоса"; + $meta_description = "Топ пользователей Голоса по СГ."; + $h1 = "Топ по СГ"; + $description = '

Топ 100 пользователей, отсортированных по Силе Голоса.

'; + } + $footer_text = "просматривать топ Голоса по токенам"; +} // Конец условия для данного сервиса \ No newline at end of file diff --git a/golos-voteing/README.md b/golos-voteing/README.md new file mode 100644 index 00000000..3365e9f7 --- /dev/null +++ b/golos-voteing/README.md @@ -0,0 +1,24 @@ +# golos-votes +## Версия с апвотами +(Для изучения версии с комментариями смотрите ветку comments-votes). + +Всё локально. Ключи никуда не передаются и хранятся в зашифрованном виде в браузере, да и то, если того пожелает пользователь. + +Эта версия основывается на базе добавления комментариев с вариантами ответов и их апвотинге. + +### Принцип работы: +1. Создаётся пост с опросом. +2. Добавляются комментарии с вариантами ответа. 1 комментарий - 1 вариант. Пермлинк имеет вид vote-id-variant-num, где id - id опроса (unixtime), а num - номер варианта ответа (1, 2, 3 и т.д.) +3. Пользователь апает комментарии, голосуя за тот или иной вариант ответа, через любой Клиент Голоса, либо на странице опроса. +4. На отдельной странице выводится результат опроса. + +### Другие моменты: +- Голосовать можно до тех пор, пока пост не получит выплату; +- Учитываются только варианты ответа, добавленные до выплаты за пост. +- id опроса - время его создания в unixtime формате; +- Если вы отметите флажок при авторизации на сервисе, логин и постинг ключ сохранятся в localStorage браузера. Если нет - в сессиях, т.е. авторизация сохранится до закрытия браузера. +- Есть бенефициарские мне в 10%. Это плата за создание сервиса. +- Прибавив к id опроса "vote-" (без кавычек) получите пермлинк. + +## Внимание! +При переходе с golos.id из-за перенаправления опросы не работают: просьба использовать сокращатели ссылок. \ No newline at end of file diff --git a/golos-voteing/curation.html b/golos-voteing/curation.html new file mode 100644 index 00000000..a765f4e1 --- /dev/null +++ b/golos-voteing/curation.html @@ -0,0 +1,8 @@ + + + + + +

Перенаправление. Это сделано, чтобы golos.id не портил url.

+ + \ No newline at end of file diff --git a/golos-voteing/index.html b/golos-voteing/index.html new file mode 100644 index 00000000..34e782e1 --- /dev/null +++ b/golos-voteing/index.html @@ -0,0 +1,120 @@ + + + + + +GOLOS опросы + + + + + + + + + + + +
+ +
+

Сервис проведения опросов в блокчейне Golos

+
+ +
+ +
+
+
+
+
+
+ + + +
+ +
+

Создатель сервиса: незрячий программист Денис Скрипник

+

Буду рад вашим голосам за меня, как делегата на на golos.id или на другой странице голосования, которую вы знаете. Благодарю.

+
+ +
+ + + + \ No newline at end of file diff --git a/golos-voteing/main.js b/golos-voteing/main.js new file mode 100644 index 00000000..9559a172 --- /dev/null +++ b/golos-voteing/main.js @@ -0,0 +1,390 @@ +function checkWorkingNode() { + const NODES = [ + "wss://api.golos.blckchnd.com/ws", + "wss://golos.lexa.host/ws", + "wss://golos.solox.world/ws" + ]; + let node = localStorage.getItem("node") || NODES[0]; + const idx = Math.max(NODES.indexOf(node), 0); + let checked = 0; + const find = (idx) => { + if(idx >= NODES.length) { + idx = 0; + } + if(checked >= NODES.length) { + alert("no working nodes found"); + return; + } + node = NODES[idx]; + golos.config.set("websocket", node); + golos.api.getDynamicGlobalPropertiesAsync() + .then(props => { + console.log("found working node", node); + localStorage.setItem("node", node); + }) + .catch(e => { + console.log("connection error", node, e); + find(idx+1); + }); + } + find(idx); + } +checkWorkingNode(); + + +var golos_login = ''; +var posting_key = ''; + +function getUrlVars() { + var vars = {}; + var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) { + vars[key] = value; + }); + return vars; +} + +async function accountData(user) { + const acc = await golos.api.getAccountsAsync([user]); + const props = await golos.api.getDynamicGlobalPropertiesAsync(); + const total_vesting_fund = parseFloat(props.total_vesting_fund_steem); + const total_vesting_shares = parseFloat(props.total_vesting_shares); + const steem_per_vests = 1000000 * total_vesting_fund / total_vesting_shares; + const vesting_shares = parseFloat(acc[0].vesting_shares) / 1000000 * steem_per_vests; + const received_vesting_shares = parseFloat(acc[0].received_vesting_shares) / 1000000 * steem_per_vests; + const delegated_vesting_shares = parseFloat(acc[0].delegated_vesting_shares) / 1000000 * steem_per_vests; +const gp = vesting_shares + received_vesting_shares - delegated_vesting_shares; +const reputation = parseInt(acc[0].reputation); +const rep = await repLog10(reputation); +return [gp, rep]; +} + +async function getVotes() { + try { +var query = { + select_tags: ['golos-votes'], + limit: 100 +}; + const getVotes = await golos.api.getDiscussionsByActiveAsync(query); +let votes_li = ''; +for (let vote of getVotes) { +votes_li += `
  • ${vote.title}
  • ` +} + + $("#vote_page").html(`

    100 последних опросов

    +
      +${votes_li} +
    `); + } catch(e) { + $("#vote_page").html(`

    Ошибка

    +

    Вероятно, id такого опроса нет. Просьба проверить его. Либо ознакомьтесь с текстом ошибки ниже:

    + ${e}`); + } + } + + async function log10(str) { + const leadingDigits = parseInt(str.substring(0, 4)); + const log = Math.log(leadingDigits) / Math.LN10 + 0.00000001 + const n = str.length - 1; + return n + (log - parseInt(log)); +} + +async function repLog10(rep2) { + if(rep2 == null) return rep2 + let rep = String(rep2) + const neg = rep.charAt(0) === '-' + rep = neg ? rep.substring(1) : rep + + let out = await log10(rep) + if(isNaN(out)) out = 0 + out = Math.max(out - 9, 0); // @ -9, $0.50 earned is approx magnitude 1 + out = (neg ? -1 : 1) * out + out = (out * 9) + 25 // 9 points per magnitude. center at 25 + // base-line 0 to darken and < 0 to auto hide (grep rephide) + return out +} + +async function getVoteResult(author, id) { + try { + const getContent = await golos.api.getContentAsync(author, id, 0); + const get_results = await golos.api.getContentRepliesAsync(author, id, -1); +let variants = []; + +for (let variant of get_results) { + if (variant.permlink.indexOf('-variant-') !== -1) { + let vote_gp_count = 0; +let vote_rep_count = 0; + for (let vote of variant.active_votes) { + const user_data = await accountData(vote.voter); + const gp = user_data[0]; + const reputation = user_data[1]; + vote_gp_count += gp; + vote_rep_count += reputation; +} +variants.push({variant: variant.body, gp: vote_gp_count, rep: vote_rep_count}); +} + } + + + +let percent100_gp = 0; +let percent100_rep = 0; +for (variant of variants) { + percent100_gp += parseFloat(variant.gp); + percent100_rep += parseFloat(variant.rep); +} + +let results_percent = []; +let results_gp = ''; +let results_rep = ''; +for (variant of variants) { +const result_gp_num = percent100_gp/variant.gp; +const result_gp_per = 100/result_gp_num; +const result_rep_num = percent100_rep/variant.rep; +const result_rep_per = 100/result_rep_num; +results_gp += ` +${variant.variant} +${result_gp_per.toFixed(2)}% +`; +results_rep += ` +${variant.variant} +${result_rep_per.toFixed(2)}% +`; +results_percent.push({variant: variant.variant, gp: result_gp_per, rep: result_rep_per}) +} + +const count_variants = results_percent.length; +let results_all_percent = ''; +for (let i = 0; i < count_variants; i++) { +const sum_percents = results_percent[i].gp + results_percent[i].rep; +const math_percent = sum_percents/2; +results_all_percent += ` +${results_percent[i].variant} +${math_percent.toFixed(2)}% +`; +} + +let results_gp_str = `
    +

    Результаты голосования по СГ участников:

    +
    + + + + + + + +${results_gp} +
    Вариант%
    `; + +let results_rep_str = `
    +

    Результаты голосования по репутации (рейтингу) участников:

    +
    + + + + + + + +${results_rep} +
    Вариант%
    `; + +let results_all_str = `
    +

    Результаты голосования и по СГ, и по репутации (рейтингу) участников (Среднее значение процента каждого варианта):

    +
    + + + + + + + +${results_all_percent} +
    Вариант%
    `; + + $("#vote_page").html(`

    Результаты опроса ${getContent.title}

    +
    • Id: ${getUrlVars()['id']}
    • +
    • Автор: ${author}
    +${results_gp_str} + +${results_rep_str} + +${results_all_str} +`); + } catch(e) { + $("#vote_page").html(`

    Ошибка

    +

    Вероятно, id такого опроса нет. Просьба проверить его. Либо ознакомьтесь с текстом ошибки ниже:

    + ${e}`); + } + } + + +async function getVote(golos_login, posting_key, author, id) { + try { + const getContent = await golos.api.getContentAsync(author, id, 0); + if (getContent.cashout_time !== "1969-12-31T23:59:59") { + const get_results = await golos.api.getContentRepliesAsync(author, id, 0); +console.log(); + var radio_buttons = ''; +get_results.forEach(async function(variant) { +if (variant.permlink.indexOf('-variant-') > -1) { + radio_buttons += ` ${variant.body}
    ` +} +}); + +var vote_id = id.slice(5); + + $("#vote_page").html(`

    ${getContent.title}

    +
    • Id: ${getUrlVars()['id']}
    • +
    • Автор: ${author}
    +

    Проголосуйте ниже

    +

    Чтобы проголосовать ещё раз просто выберите другой вариант и нажмите на "Голосовать".

    +
    +

    +

    ${radio_buttons}

    +

    +
    +
    +

    Результаты опроса

    +`); +} else { + $("#vote_page").html(`

    Ошибка: Срок голосования прошёл

    `); +} +} catch(e) { + $("#vote_page").html(`

    Ошибка

    +

    Вероятно, id такого опроса нет. Просьба проверить его. Либо ознакомьтесь с текстом ошибки ниже:

    +${e}`); +} +} + +async function actionResult(msg) { +$("#result_block").html(msg); +} + +async function sendVoteAnswer(golos_login, posting_key, author, variant_permlink) { +try { +const res = golos.broadcast.voteAsync(posting_key, golos_login, author, variant_permlink, 10000); +await actionResult(`

    Ваш ответ добавлен успешно.

    `); +} catch(e) { + await actionResult(`Ошибка: +` + e); +} +} + +function voteAuth() { + let login = $('#this_login').val(); + let posting = $('#this_posting').val(); +var isSavePosting = document.getElementById('isSavePosting'); + if (isSavePosting.checked) { + localStorage.setItem('login', login); + localStorage.setItem('PostingKey', sjcl.encrypt(login + '_postingKey', posting)); + } else { + sessionStorage.setItem('login', login); + sessionStorage.setItem('PostingKey', sjcl.encrypt(login + '_postingKey', posting)); + } + if (localStorage.getItem('PostingKey')) { + var isPostingKey = sjcl.decrypt(login + '_postingKey', localStorage.getItem('PostingKey')); + } else if (sessionStorage.getItem('PostingKey')) { + var isPostingKey = sjcl.decrypt(login + '_postingKey', sessionStorage.getItem('PostingKey')); + } else { +var isPostingKey = posting; +} + + var resultIsPostingWif = golos.auth.isWif(isPostingKey); +console.log(resultIsPostingWif); + if (resultIsPostingWif === true) { +golos_login = login; + posting_key = isPostingKey; +} else { +window.alert('Постинг ключ имеет неверный формат. Пожалуйста, попробуйте ещё раз.'); +} + +if (!golos_login && !posting_key) { + $('#delete_posting_key').css("display", "none"); + $('#unblock_form').css("display", "block"); + $("#new_vote").css("display", "none"); + } else { + $('#unblock_form').css("display", "none"); + $("#new_vote").css("display", "block"); + $('#delete_posting_key').css("display", "block"); + jQuery("#delete_posting_key").html('

    Выйти

    '); +} + } // end voteAuth + + var vote_element = []; + + function updateText() { + document.getElementById('out').innerHTML = 'Итоговый список: ' + JSON.stringify(vote_element); + } + + function add() { + var variant = document.getElementById('variant').value; + + vote_element.push(variant); + + updateText() + } + + vote_element.push(variant); + updateText(); + + updateText(); + + + + + // Для формы создания опроса: +async function voteFormSend() { + var form = document.getElementById('vote_user_form'); +var data = {title: form.title.value, description: form.descr.value, variants: vote_element}; +var variants = vote_element; + +if (localStorage.getItem('login') && localStorage.getItem('PostingKey')) { + golos_login = localStorage.getItem('login'); +posting_key = sjcl.decrypt(golos_login + '_postingKey', localStorage.getItem('PostingKey')); +} else if (sessionStorage.getItem('login') && sessionStorage.getItem('PostingKey')) { +golos_login = sessionStorage.getItem('login'); +posting_key = sjcl.decrypt(golos_login + '_postingKey', sessionStorage.getItem('PostingKey')); +} + +var permlink = "vote-" + parseInt(new Date().getTime()/1000); +var id = permlink.slice(5); + +var descr = data.description; +descr += ` +## Варианты: +`; +vote_element.forEach(async function(var_el) { + descr += `- ${var_el} +`; +}); +descr += ` +## Способы голосования: +1. Выбрав комментарий с вариантом ответа, который вас устраивает, а затем проголосовав за него, поставив апвот; +2. Перейдя по ссылке https://dpos.space/golos-voteing?author=${golos_login}&id=${id}`; + +if (golos_login.length > 0 && posting_key.length > 0) { + var json = {tags: ['golos-votes', 'ru--opros', 'vote', 'votes']}; + const benecs = [{account: 'denis-skripnik', weight:1000}]; + try { +let operations = [ +['comment', {'parent_author':'','parent_permlink':'golos-votes','author':golos_login,'permlink':permlink,'title':data.title,'body':descr,'json_metadata':JSON.stringify(json)}],['comment_options',{'author':golos_login,'permlink':permlink,'max_accepted_payout':'1000000.000 GBG','percent_steem_dollars':10000,'allow_votes':true,'allow_curation_rewards':true,'extensions':[[0,{'beneficiaries':benecs}]]}]]; + +var variants_count = 0; +for (let variant of variants) { + variants_count += 1; +const variant_permlink = permlink + '-variant-' + variants_count; + operations.push(['comment', {'parent_author':golos_login,'parent_permlink':permlink,'author':golos_login,'permlink':variant_permlink,'title':'','body':variant,'json_metadata':JSON.stringify(json)}],['comment_options',{'author':golos_login,'permlink':variant_permlink,'max_accepted_payout':'1000000.000 GBG','percent_steem_dollars':10000,'allow_votes':true,'allow_curation_rewards':true,'extensions':[[0,{'beneficiaries':benecs}]]}]); +} + +const result = golos.broadcast.sendAsync({extensions: [], operations}, [posting_key]); +await actionResult(`

    Опрос создан успешно.

    +

    Перейти к опросу

    `); +} catch(e) { + await actionResult(`Ошибка: +` + e); +} +} else { +window.alert('Ошибка: вы не авторизованы.'); +} +} diff --git a/golos-voteing/result.html b/golos-voteing/result.html new file mode 100644 index 00000000..79a702b3 --- /dev/null +++ b/golos-voteing/result.html @@ -0,0 +1,106 @@ + + + + + +GOLOS опросы + + + + + + + + + + + +
    + +
    +

    Сервис проведения опросов в блокчейне Golos

    +
    + +
    + +
    +
    +

    Загрузка

    +

    Данные берутся из блокчейна и обрабатываются сразу же в вашем браузере. Из-за этого загрузка результатов может идти до минуты. Если появилась ошибка, просьба обновить страницу: последнее время паблик-Ноды Голоса перегружены.

    +
    +
    + + + +
    + +
    +

    Создатель сервиса: незрячий программист Денис Скрипник

    +

    Буду рад вашим голосам за меня, как делегата на на golos.id или на другой странице голосования, которую вы знаете. Благодарю.

    +
    + +
    + + + + \ No newline at end of file diff --git a/golos-voteing/sjcl.min.js b/golos-voteing/sjcl.min.js new file mode 100644 index 00000000..55643c06 --- /dev/null +++ b/golos-voteing/sjcl.min.js @@ -0,0 +1 @@ +"use strict";function t(t,e,i){if(4!==e.length)throw new sjcl.exception.invalid("invalid aes block size");var c=t.b[i],s=e[0]^c[0],n=e[i?3:1]^c[1],r=e[2]^c[2];e=e[i?1:3]^c[3];var o,a,l,h,d=c.length/4-2,u=4,f=[0,0,0,0];t=(o=t.s[i])[0];var p=o[1],m=o[2],j=o[3],y=o[4];for(h=0;h>>24]^p[n>>16&255]^m[r>>8&255]^j[255&e]^c[u],a=t[n>>>24]^p[r>>16&255]^m[e>>8&255]^j[255&s]^c[u+1],l=t[r>>>24]^p[e>>16&255]^m[s>>8&255]^j[255&n]^c[u+2],e=t[e>>>24]^p[s>>16&255]^m[n>>8&255]^j[255&r]^c[u+3],u+=4,s=o,n=a,r=l;for(h=0;4>h;h++)f[i?3&-h:h]=y[s>>>24]<<24^y[n>>16&255]<<16^y[r>>8&255]<<8^y[255&e]^c[u++],o=s,s=n,n=r,r=e,e=o;return f}function u(t,e){var i,c,s,n=t.F,r=t.b,o=n[0],a=n[1],l=n[2],h=n[3],d=n[4],u=n[5],f=n[6],p=n[7];for(i=0;64>i;i++)16>i?c=e[i]:(c=e[i+1&15],s=e[i+14&15],c=e[15&i]=(c>>>7^c>>>18^c>>>3^c<<25^c<<14)+(s>>>17^s>>>19^s>>>10^s<<15^s<<13)+e[15&i]+e[i+9&15]|0),c=c+p+(d>>>6^d>>>11^d>>>25^d<<26^d<<21^d<<7)+(f^d&(u^f))+r[i],p=f,f=u,u=d,d=h+c|0,h=l,l=a,a=o,o=c+(a&l^h&(a^l))+(a>>>2^a>>>13^a>>>22^a<<30^a<<19^a<<10)|0;n[0]=n[0]+o|0,n[1]=n[1]+a|0,n[2]=n[2]+l|0,n[3]=n[3]+h|0,n[4]=n[4]+d|0,n[5]=n[5]+u|0,n[6]=n[6]+f|0,n[7]=n[7]+p|0}function A(t,e){var i,c=sjcl.random.K[t],s=[];for(i in c)c.hasOwnProperty(i)&&s.push(c[i]);for(i=0;ie&&(t.h[e]=t.h[e]+1|0,!t.h[e]);e++);return t.L.encrypt(t.h)}function B(t,e){return function(){e.apply(t,arguments)}}var sjcl={cipher:{},hash:{},keyexchange:{},mode:{},misc:{},codec:{},exception:{corrupt:function(t){this.toString=function(){return"CORRUPT: "+this.message},this.message=t},invalid:function(t){this.toString=function(){return"INVALID: "+this.message},this.message=t},bug:function(t){this.toString=function(){return"BUG: "+this.message},this.message=t},notReady:function(t){this.toString=function(){return"NOT READY: "+this.message},this.message=t}}};sjcl.cipher.aes=function(t){this.s[0][0][0]||this.O();var e,i,c,s,n=this.s[0][4],r=this.s[1],o=1;if(4!==(e=t.length)&&6!==e&&8!==e)throw new sjcl.exception.invalid("invalid aes key size");for(this.b=[c=t.slice(0),s=[]],t=e;t<4*e+28;t++)i=c[t-1],(0==t%e||8===e&&4==t%e)&&(i=n[i>>>24]<<24^n[i>>16&255]<<16^n[i>>8&255]<<8^n[255&i],0==t%e&&(i=i<<8^i>>>24^o<<24,o=o<<1^283*(o>>7))),c[t]=c[t-e]^i;for(e=0;t;e++,t--)i=c[3&e?t:t-4],s[e]=4>=t||4>e?i:r[0][n[i>>>24]]^r[1][n[i>>16&255]]^r[2][n[i>>8&255]]^r[3][n[255&i]]},sjcl.cipher.aes.prototype={encrypt:function(e){return t(this,e,0)},decrypt:function(e){return t(this,e,1)},s:[[[],[],[],[],[]],[[],[],[],[],[]]],O:function(){var t,e,i,c,s,n,r,o=this.s[0],a=this.s[1],l=o[4],h=a[4],d=[],u=[];for(t=0;256>t;t++)u[(d[t]=t<<1^283*(t>>7))^t]=t;for(e=i=0;!l[e];e^=c||1,i=u[i]||1)for(n=i^i<<1^i<<2^i<<3^i<<4,n=n>>8^255&n^99,l[e]=n,h[n]=e,s=d[t=d[c=d[e]]],r=16843009*s^65537*t^257*c^16843008*e,s=257*d[n]^16843008*n,t=0;4>t;t++)o[t][e]=s=s<<24^s>>>8,a[t][n]=r=r<<24^r>>>8;for(t=0;5>t;t++)o[t]=o[t].slice(0),a[t]=a[t].slice(0)}},sjcl.bitArray={bitSlice:function(t,e,i){return t=sjcl.bitArray.$(t.slice(e/32),32-(31&e)).slice(1),void 0===i?t:sjcl.bitArray.clamp(t,i-e)},extract:function(t,e,i){var c=Math.floor(-e-i&31);return(-32&(e+i-1^e)?t[e/32|0]<<32-c^t[e/32+1|0]>>>c:t[e/32|0]>>>c)&(1<>e-1,1)),t},partial:function(t,e,i){return 32===t?e:(i?0|e:e<<32-t)+1099511627776*t},getPartial:function(t){return Math.round(t/1099511627776)||32},equal:function(t,e){if(sjcl.bitArray.bitLength(t)!==sjcl.bitArray.bitLength(e))return!1;var i,c=0;for(i=0;i>>e),i=t[s]<<32-e;return s=t.length?t[t.length-1]:0,t=sjcl.bitArray.getPartial(s),c.push(sjcl.bitArray.partial(e+t&31,32>>24|i>>>8&65280|(65280&i)<<8|i<<24;return t}},sjcl.codec.utf8String={fromBits:function(t){var e,i,c="",s=sjcl.bitArray.bitLength(t);for(e=0;e>>8>>>8>>>8),i<<=8;return decodeURIComponent(escape(c))},toBits:function(t){t=unescape(encodeURIComponent(t));var e,i=[],c=0;for(e=0;e>>r)>>>s),r(c=l.indexOf(t.charAt(i)))){if(!e)try{return sjcl.codec.base32hex.toBits(t)}catch(t){}throw new sjcl.exception.invalid("this isn't "+d+"!")}a>r?(a-=r,o.push(h^c>>>a),h=c<>>s)>>>26),6>s?(r=t[i]<<6-s,s+=26,i++):(r<<=6,s-=6);for(;3&c.length&&!e;)c+="=";return c},toBits:function(t,e){t=t.replace(/\s|=/g,"");var i,c,s=[],n=0,r=sjcl.codec.base64.B,o=0;for(e&&(r=r.substr(0,62)+"-_"),i=0;i(c=r.indexOf(t.charAt(i))))throw new sjcl.exception.invalid("this isn't base64!");26>>n),o=c<<32-n):(n+=6,o^=c<<32-n)}return 56&n&&s.push(sjcl.bitArray.partial(56&n,o,1)),s}},sjcl.codec.base64url={fromBits:function(t){return sjcl.codec.base64.fromBits(t,1,1)},toBits:function(t){return sjcl.codec.base64.toBits(t,1)}},sjcl.hash.sha256=function(t){this.b[0]||this.O(),t?(this.F=t.F.slice(0),this.A=t.A.slice(0),this.l=t.l):this.reset()},sjcl.hash.sha256.hash=function(t){return(new sjcl.hash.sha256).update(t).finalize()},sjcl.hash.sha256.prototype={blockSize:512,reset:function(){return this.F=this.Y.slice(0),this.A=[],this.l=0,this},update:function(t){"string"==typeof t&&(t=sjcl.codec.utf8String.toBits(t));var e,i=this.A=sjcl.bitArray.concat(this.A,t);if(e=this.l,9007199254740991<(t=this.l=e+sjcl.bitArray.bitLength(t)))throw new sjcl.exception.invalid("Cannot hash more than 2^53 - 1 bits");if("undefined"!=typeof Uint32Array){var c=new Uint32Array(i),s=0;for(e=512+e-(512+e&511);e<=t;e+=512)u(this,c.subarray(16*s,16*(s+1))),s+=1;i.splice(0,16*s)}else for(e=512+e-(512+e&511);e<=t;e+=512)u(this,i.splice(0,16));return this},finalize:function(){var t,e=this.A,i=this.F;for(t=(e=sjcl.bitArray.concat(e,[sjcl.bitArray.partial(1,1)])).length+2;15&t;t++)e.push(0);for(e.push(Math.floor(this.l/4294967296)),e.push(0|this.l);e.length;)u(this,e.splice(0,16));return this.reset(),i},Y:[],b:[],O:function(){function t(t){return 4294967296*(t-Math.floor(t))|0}for(var e,i,c=0,s=2;64>c;s++){for(i=!0,e=2;e*e<=s;e++)if(0==s%e){i=!1;break}i&&(8>c&&(this.Y[c]=t(Math.pow(s,.5))),this.b[c]=t(Math.pow(s,1/3)),c++)}}},sjcl.mode.ccm={name:"ccm",G:[],listenProgress:function(t){sjcl.mode.ccm.G.push(t)},unListenProgress:function(t){-1<(t=sjcl.mode.ccm.G.indexOf(t))&&sjcl.mode.ccm.G.splice(t,1)},fa:function(t){var e,i=sjcl.mode.ccm.G.slice();for(e=0;ea)throw new sjcl.exception.invalid("ccm: iv must be at least 7 bytes");for(n=2;4>n&&l>>>8*n;n++);return n<15-a&&(n=15-a),i=o.clamp(i,8*(15-n)),e=sjcl.mode.ccm.V(t,e,i,c,s,n),r=sjcl.mode.ccm.C(t,r,i,e,s,n),o.concat(r.data,r.tag)},decrypt:function(t,e,i,c,s){s=s||64,c=c||[];var n=sjcl.bitArray,r=n.bitLength(i)/8,o=n.bitLength(e),a=n.clamp(e,o-s),l=n.bitSlice(e,o-s),o=(o-s)/8;if(7>r)throw new sjcl.exception.invalid("ccm: iv must be at least 7 bytes");for(e=2;4>e&&o>>>8*e;e++);if(e<15-r&&(e=15-r),i=n.clamp(i,8*(15-e)),a=sjcl.mode.ccm.C(t,a,i,l,s,e),t=sjcl.mode.ccm.V(t,a.data,i,c,s,e),!n.equal(a.tag,t))throw new sjcl.exception.corrupt("ccm: tag doesn't match");return a.data},na:function(t,e,i,c,s,n){var r=[],o=sjcl.bitArray,a=o.i;if(c=[o.partial(8,(e.length?64:0)|c-2<<2|n-1)],c=o.concat(c,i),c[3]|=s,c=t.encrypt(c),e.length)for(i=o.bitLength(e)/8,65279>=i?r=[o.partial(16,i)]:4294967295>=i&&(r=o.concat([o.partial(16,65534)],[i])),r=o.concat(r,e),e=0;es||16h&&(sjcl.mode.ccm.fa(r/a),h+=d),i[3]++,s=t.encrypt(i),e[r]^=s[0],e[r+1]^=s[1],e[r+2]^=s[2],e[r+3]^=s[3];return{tag:c,data:o.clamp(e,l)}}},sjcl.mode.ocb2={name:"ocb2",encrypt:function(t,e,i,c,s,n){if(128!==sjcl.bitArray.bitLength(i))throw new sjcl.exception.invalid("ocb iv must be 128 bits");var r,o=sjcl.mode.ocb2.S,a=sjcl.bitArray,l=a.i,h=[0,0,0,0];i=o(t.encrypt(i));var d,u=[];for(c=c||[],s=s||64,r=0;r+4s.bitLength(i)&&(o=n(o,c(o)),i=s.concat(i,[-2147483648,0,0,0])),r=n(r,i),t.encrypt(n(c(n(o,c(o))),r))},S:function(t){return[t[0]<<1^t[1]>>>31,t[1]<<1^t[2]>>>31,t[2]<<1^t[3]>>>31,t[3]<<1^135*(t[0]>>>31)]}},sjcl.mode.gcm={name:"gcm",encrypt:function(t,e,i,c,s){var n=e.slice(0);return e=sjcl.bitArray,c=c||[],t=sjcl.mode.gcm.C(!0,t,n,c,i,s||128),e.concat(t.data,t.tag)},decrypt:function(t,e,i,c,s){var n=e.slice(0),r=sjcl.bitArray,o=r.bitLength(n);if(s=s||128,c=c||[],s<=o?(e=r.bitSlice(n,o-s),n=r.bitSlice(n,0,o-s)):(e=n,n=[]),t=sjcl.mode.gcm.C(!1,t,n,c,i,s),!r.equal(t.tag,e))throw new sjcl.exception.corrupt("gcm: tag doesn't match");return t.data},ka:function(t,e){var i,c,s,n,r,o=sjcl.bitArray.i;for(s=[0,0,0,0],n=e.slice(0),i=0;128>i;i++){for((c=0!=(t[Math.floor(i/32)]&1<<31-i%32))&&(s=o(s,n)),r=0!=(1&n[3]),c=3;0>>1|(1&n[c-1])<<31;n[0]>>>=1,r&&(n[0]^=-520093696)}return s},j:function(t,e,i){var c,s=i.length;for(e=e.slice(0),c=0;cs&&(t=e.hash(t)),i=0;ic||0>i)throw new sjcl.exception.invalid("invalid params to pbkdf2");"string"==typeof t&&(t=sjcl.codec.utf8String.toBits(t)),"string"==typeof e&&(e=sjcl.codec.utf8String.toBits(e)),t=new(s=s||sjcl.misc.hmac)(t);var n,r,o,a,l=[],h=sjcl.bitArray;for(a=1;32*l.length<(c||1);a++){for(s=n=t.encrypt(h.concat(e,[a])),r=1;rn;n++)c.push(4294967296*Math.random()|0);for(n=0;n=1<this.o&&(this.o=r),this.P++,this.b=sjcl.hash.sha256.hash(this.b.concat(c)),this.L=new sjcl.cipher.aes(this.b),i=0;4>i&&(this.h[i]=this.h[i]+1|0,!this.h[i]);i++);}for(i=0;i>>=1;this.c[r].update([c,this.N++,2,e,n,t.length].concat(t))}break;case"string":void 0===e&&(e=t.length),this.c[r].update([c,this.N++,3,e,n,t.length]),this.c[r].update(t);break;default:a=1}if(a)throw new sjcl.exception.bug("random: addEntropy only supports number, array of numbers or string");this.m[r]+=e,this.f+=e,o===this.u&&(this.isReady()!==this.u&&A("seeded",Math.max(this.o,this.f)),A("progress",this.getProgress()))},isReady:function(t){return t=this.T[void 0!==t?t:this.M],this.o&&this.o>=t?this.m[0]>this.ba&&(new Date).valueOf()>this.Z?this.J|this.I:this.I:this.f>=t?this.J|this.u:this.u},getProgress:function(t){return t=this.T[t||this.M],this.o>=t?1:this.f>t?1:this.f/t},startCollectors:function(){if(!this.D){if(this.a={loadTimeCollector:B(this,this.ma),mouseCollector:B(this,this.oa),keyboardCollector:B(this,this.la),accelerometerCollector:B(this,this.ea),touchCollector:B(this,this.qa)},window.addEventListener)window.addEventListener("load",this.a.loadTimeCollector,!1),window.addEventListener("mousemove",this.a.mouseCollector,!1),window.addEventListener("keypress",this.a.keyboardCollector,!1),window.addEventListener("devicemotion",this.a.accelerometerCollector,!1),window.addEventListener("touchmove",this.a.touchCollector,!1);else{if(!document.attachEvent)throw new sjcl.exception.bug("can't attach event");document.attachEvent("onload",this.a.loadTimeCollector),document.attachEvent("onmousemove",this.a.mouseCollector),document.attachEvent("keypress",this.a.keyboardCollector)}this.D=!0}},stopCollectors:function(){this.D&&(window.removeEventListener?(window.removeEventListener("load",this.a.loadTimeCollector,!1),window.removeEventListener("mousemove",this.a.mouseCollector,!1),window.removeEventListener("keypress",this.a.keyboardCollector,!1),window.removeEventListener("devicemotion",this.a.accelerometerCollector,!1),window.removeEventListener("touchmove",this.a.touchCollector,!1)):document.detachEvent&&(document.detachEvent("onload",this.a.loadTimeCollector),document.detachEvent("onmousemove",this.a.mouseCollector),document.detachEvent("keypress",this.a.keyboardCollector)),this.D=!1)},addEventListener:function(t,e){this.K[t][this.ga++]=e},removeEventListener:function(t,e){var i,c,s=this.K[t],n=[];for(c in s)s.hasOwnProperty(c)&&s[c]===e&&n.push(c);for(i=0;i=r.iter||64!==r.ts&&96!==r.ts&&128!==r.ts||128!==r.ks&&192!==r.ks&&256!==r.ks||2>r.iv.length||4=e.iter||64!==e.ts&&96!==e.ts&&128!==e.ts||128!==e.ks&&192!==e.ks&&256!==e.ks||!e.iv||2>e.iv.length||4 + + + + +GOLOS опросы + + + + + + + + + + + +
    + +
    +

    Сервис проведения опросов в блокчейне Golos

    +
    + +
    + +
    +
    +
    +
    +
    +
    + + + +
    + +
    +

    Создатель сервиса: незрячий программист Денис Скрипник

    +

    Буду рад вашим голосам за меня, как делегата на на golos.id или на другой странице голосования, которую вы знаете. Благодарю.

    +
    + +
    + + + + \ No newline at end of file diff --git a/golos-votes/README.md b/golos-votes/README.md new file mode 100644 index 00000000..644db3f3 --- /dev/null +++ b/golos-votes/README.md @@ -0,0 +1,15 @@ +# golos-votes +## Версия с комментариями +, основанный на добавлении комментариев с вариантами ответов: он оказался неудобным для пользователей, но решил его оставить. + +### Принцип действия: +1. Добавляется пост с опросом. Варианты ответов записываются в json_metadata. +2. Пользователи либо вручную добавляют комментарии с вариантами ответов, беря их из текста поста, либо используют форму голосоваия на dpos.space/golos-votes. +3. Сервис подсчитывает комментарии с разными вариантами ответа и выводит результаты на отдельной странице. + +Всё локально. Ключи никуда не передаются и хранятся в зашифрованном виде в браузере, да и то, если того пожелает пользователь. + +Онлайн адрес: https://dpos.space/golos-votes + +## Внимание! +При переходе с golos.id опросы не работают: просьба использовать сокращатели ссылок. \ No newline at end of file diff --git a/golos-votes/index.html b/golos-votes/index.html new file mode 100644 index 00000000..a5556849 --- /dev/null +++ b/golos-votes/index.html @@ -0,0 +1,118 @@ + + + + + +GOLOS опросы + + + + + + + + + + + +
    + +
    +

    Сервис проведения опросов в блокчейне Golos

    +
    + +
    + +
    +
    +
    +
    +
    +
    + + + +
    + + + +
    + + + + \ No newline at end of file diff --git a/golos-votes/main.js b/golos-votes/main.js new file mode 100644 index 00000000..abb59d46 --- /dev/null +++ b/golos-votes/main.js @@ -0,0 +1,423 @@ +function checkWorkingNode() { + const NODES = [ + "wss://api.golos.blckchnd.com/ws", + "wss://golos.lexa.host/ws", + "wss://golos.solox.world/ws" + ]; + let node = localStorage.getItem("node") || NODES[0]; + const idx = Math.max(NODES.indexOf(node), 0); + let checked = 0; + const find = (idx) => { + if(idx >= NODES.length) { + idx = 0; + } + if(checked >= NODES.length) { + alert("no working nodes found"); + return; + } + node = NODES[idx]; + golos.config.set("websocket", node); + golos.api.getDynamicGlobalPropertiesAsync() + .then(props => { + console.log("found working node", node); + localStorage.setItem("node", node); + }) + .catch(e => { + console.log("connection error", node, e); + find(idx+1); + }); + } + find(idx); + } +checkWorkingNode(); + + +var golos_login = ''; +var posting_key = ''; + +function getUrlVars() { + var vars = {}; + var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) { + vars[key] = value; + }); + return vars; +} + +async function accountData(user) { + const acc = await golos.api.getAccountsAsync([user]); + const props = await golos.api.getDynamicGlobalPropertiesAsync(); + const total_vesting_fund = parseFloat(props.total_vesting_fund_steem); + const total_vesting_shares = parseFloat(props.total_vesting_shares); + const steem_per_vests = 1000000 * total_vesting_fund / total_vesting_shares; + const vesting_shares = parseFloat(acc[0].vesting_shares) / 1000000 * steem_per_vests; + const received_vesting_shares = parseFloat(acc[0].received_vesting_shares) / 1000000 * steem_per_vests; + const delegated_vesting_shares = parseFloat(acc[0].delegated_vesting_shares) / 1000000 * steem_per_vests; +const gp = vesting_shares + received_vesting_shares - delegated_vesting_shares; +const reputation = parseInt(acc[0].reputation); +const rep = await repLog10(reputation); +return [gp, rep]; +} + +async function getVotes() { + try { +var query = { + select_tags: ['golos-votes'], + limit: 100 +}; + const getVotes = await golos.api.getDiscussionsByActiveAsync(query); +let votes_li = ''; +for (let vote of getVotes) { +votes_li += `
  • ${vote.title}
  • ` +} + + $("#vote_page").html(`

    100 последних опросов

    +
      +${votes_li} +
    `); + } catch(e) { + $("#vote_page").html(`

    Ошибка

    +

    Вероятно, id такого опроса нет. Просьба проверить его. Либо ознакомьтесь с текстом ошибки ниже:

    + ${e}`); + } + } + +async function log10(str) { + const leadingDigits = parseInt(str.substring(0, 4)); + const log = Math.log(leadingDigits) / Math.LN10 + 0.00000001 + const n = str.length - 1; + return n + (log - parseInt(log)); +} + +async function repLog10(rep2) { + if(rep2 == null) return rep2 + let rep = String(rep2) + const neg = rep.charAt(0) === '-' + rep = neg ? rep.substring(1) : rep + + let out = await log10(rep) + if(isNaN(out)) out = 0 + out = Math.max(out - 9, 0); // @ -9, $0.50 earned is approx magnitude 1 + out = (neg ? -1 : 1) * out + out = (out * 9) + 25 // 9 points per magnitude. center at 25 + // base-line 0 to darken and < 0 to auto hide (grep rephide) + return out +} + +async function getVoteResult(author, id) { + try { + const getContent = await golos.api.getContentAsync(author, id, 0); + const cashout_time = getContent.cashout_time; + const end_date = Date.parse(cashout_time)/1000; + + const variants = JSON.parse(getContent.json_metadata); + const vote_list = variants.variants; + const comments = await golos.api.getContentRepliesAsync(author, id, 0); + let voters = []; +for (let variant of vote_list) { + for (let comment of comments) { + if (comment.body.indexOf(variant) > -1) { +const last_update = comment.last_update; +const last_update_date = Date.parse(last_update)/1000; +if (last_update_date <= end_date) { + const user_data = await accountData(comment.author); +const gp = user_data[0]; +const reputation = user_data[1]; +voters.push({author: comment.author, variant: comment.body, gp: gp, rep: reputation}); +} +} + } +} + +let gp_results = []; +let rep_results = []; +for (let variant of vote_list) { +let gp_count = ''; +let rep_count = ''; + for (let voter of voters) { +if (voter.variant === variant) { + gp_count += voter.gp; +rep_count = voter.rep; +} +} + +if (!gp_count) { +gp_count = 0 +} else { +gp_count = gp_count; +} + +if (!rep_count) { + rep_count = 0; +} else { + rep_count = rep_count; +} + +gp_results.push({variant: variant, gp: gp_count}); +rep_results.push({variant: variant, rep: rep_count}); +} + +let percent100_gp = 0; +for (gp_result of gp_results) { + percent100_gp += parseFloat(gp_result.gp); +} + + +let percent100_rep = 0; +for (rep_result of rep_results) { + percent100_rep += rep_result.rep; +} + +let results_gp_percent = []; +for (gp_result of gp_results) { +const result_num = percent100_gp/gp_result.gp; +const result_per = 100/result_num; +results_gp_percent.push({variant: gp_result.variant, percent: result_per}); +} + + +let results_rep_percent = []; +for (rep_result of rep_results) { +const result_num = percent100_rep/rep_result.rep; +const result_per = 100/result_num; +results_rep_percent.push({variant: rep_result.variant, percent: result_per}); +} + +const count_variants = results_rep_percent.length; +let results_all_percent = []; +for (let i = 0; i < count_variants; i++) { +const sum_percents = results_rep_percent[i].percent + results_gp_percent[i].percent; +const math_percent = sum_percents/2; +results_all_percent.push({variant: results_rep_percent[i].variant, percent: math_percent}) +} + +let results_gp_str = `
    +

    Результаты голосования по СГ участников:

    +
    + + + + + + +`; +for (result_gp_percent of results_gp_percent) { +results_gp_str += ` + + +`; +} +results_gp_str += `
    Вариант%
    ${result_gp_percent.variant}${result_gp_percent.percent.toFixed(2)}%
    `; + +let results_rep_str = `
    +

    Результаты голосования по репутации (рейтингу) участников:

    +
    + + + + + + +`; +for (result_rep_percent of results_rep_percent) { +results_rep_str += ` + + +`; +} +results_rep_str += `
    Вариант%
    ${result_rep_percent.variant}${result_rep_percent.percent.toFixed(2)}%
    `; + +let results_all_str = `
    +

    Результаты голосования и по СГ, и по репутации (рейтингу) участников (Среднее значение процента каждого варианта):

    +
    + + + + + + +`; +for (result_all_percent of results_all_percent) { +results_all_str += ` + + +`; +} +results_all_str += `
    Вариант%
    ${result_all_percent.variant}${result_all_percent.percent.toFixed(2)}%
    `; + + $("#vote_page").html(`

    Результаты опроса ${getContent.title}

    +
    • Id: ${getUrlVars()['id']}
    • +
    • Автор: ${getContent.author}
    +${results_gp_str} + +${results_rep_str} + +${results_all_str} +`); + } catch(e) { + $("#vote_page").html(`

    Ошибка

    +

    Вероятно, id такого опроса нет. Просьба проверить его. Либо ознакомьтесь с текстом ошибки ниже:

    + ${e}`); + } + } + + +async function getVote(golos_login, posting_key, author, id) { +try { + const getContent = await golos.api.getContentAsync(author, id, 0); + if (getContent.cashout_time !== "1969-12-31T23:59:59") { + const variants = JSON.parse(getContent.json_metadata); + const vote_list = variants.variants; + +var radio_buttons = ''; +vote_list.forEach(async function(variant) { + radio_buttons += ` ${variant}
    ` +}); + +var vote_id = id.slice(5); + + $("#vote_page").html(`

    ${getContent.title}

    +
    • Id: ${getUrlVars()['id']}
    • +
    • Автор: ${getContent.author}
    +

    Проголосуйте ниже

    +

    Чтобы переголосовать просто выберите другой вариант и нажмите на "Голосовать".

    +
    +

    +

    ${radio_buttons}

    +

    +
    +

    Результаты опроса

    +`); +} else { + $("#vote_page").html(`

    Ошибка: Срок голосования прошёл

    `); +} +} catch(e) { + $("#vote_page").html(`

    Ошибка

    +

    Вероятно, id такого опроса нет. Просьба проверить его. Либо ознакомьтесь с текстом ошибки ниже:

    +${e}`); +} +} + +async function actionResult(msg) { +$("#result_block").html(msg); +} + +async function sendVoteAnswer(golos_login, posting_key, author, id, body) { +id = 'vote-' + id; + var answer_id = 'answer-in-' + id; +try { + const benecs = [{account: 'denis-skripnik', weight:1000}]; +const res = golos.broadcast.commentAsync(posting_key, author, id, golos_login, answer_id, '', body, [[ 0, {"beneficiaries":benecs} ]]); +await actionResult(`Ваш ответ опубликован успешно.`); +} catch(e) { + await actionResult(`Ошибка: +` + e); +} +} + +function voteAuth() { + let login = $('#this_login').val(); + let posting = $('#this_posting').val(); +var isSavePosting = document.getElementById('isSavePosting'); + if (isSavePosting.checked) { + localStorage.setItem('login', login); + localStorage.setItem('PostingKey', sjcl.encrypt(login + '_postingKey', posting)); + } else { + sessionStorage.setItem('login', login); + sessionStorage.setItem('PostingKey', sjcl.encrypt(login + '_postingKey', posting)); + } + if (localStorage.getItem('PostingKey')) { + var isPostingKey = sjcl.decrypt(login + '_postingKey', localStorage.getItem('PostingKey')); + } else if (sessionStorage.getItem('PostingKey')) { + var isPostingKey = sjcl.decrypt(login + '_postingKey', sessionStorage.getItem('PostingKey')); + } else { +var isPostingKey = posting; +} + + var resultIsPostingWif = golos.auth.isWif(isPostingKey); +console.log(resultIsPostingWif); + if (resultIsPostingWif === true) { +golos_login = login; + posting_key = isPostingKey; +} else { +window.alert('Постинг ключ имеет неверный формат. Пожалуйста, попробуйте ещё раз.'); +} + +if (!golos_login && !posting_key) { + $('#delete_posting_key').css("display", "none"); + $('#unblock_form').css("display", "block"); + $("#new_vote").css("display", "none"); + } else { + $('#unblock_form').css("display", "none"); + $("#new_vote").css("display", "block"); + $('#delete_posting_key').css("display", "block"); + jQuery("#delete_posting_key").html('

    Выйти

    '); +} + } // end voteAuth + + var vote_element = []; + + function updateText() { + document.getElementById('out').innerHTML = 'Итоговый список: ' + JSON.stringify(vote_element); + } + + function add() { + var variant = document.getElementById('variant').value; + + vote_element.push(variant); + + updateText() + } + + vote_element.push(variant); + updateText(); + + updateText(); + + + + + // Для формы создания опроса: +async function voteFormSend() { + var form = document.getElementById('vote_user_form'); +var data = {title: form.title.value, description: form.descr.value, variants: vote_element}; +var variants = vote_element; + +if (localStorage.getItem('login') && localStorage.getItem('PostingKey')) { + golos_login = localStorage.getItem('login'); +posting_key = sjcl.decrypt(golos_login + '_postingKey', localStorage.getItem('PostingKey')); +} else if (sessionStorage.getItem('login') && sessionStorage.getItem('PostingKey')) { +golos_login = sessionStorage.getItem('login'); +posting_key = sjcl.decrypt(golos_login + '_postingKey', sessionStorage.getItem('PostingKey')); +} + +var permlink = "vote-" + parseInt(new Date().getTime()/1000); +var id = permlink.slice(5); + +var descr = data.description; +descr += ` +## Варианты: +`; +vote_element.forEach(async function(var_el) { + descr += `- ${var_el} +`; +}); +descr += ` +## Способы голосования: +1. В комментариях указав 1 из вариантов, но без маркера списка; +2. Перейдя по ссылке https://dpos.space/golos-votes?author=${golos_login}&id=${id}`; + +if (golos_login.length > 0 && posting_key.length > 0) { + var json = {variants: variants, tags: ['golos-votes', 'ru--opros', 'vote', 'votes']}; + try { + const benecs = [{account: 'denis-skripnik', weight:1000}]; + const result = golos.broadcast.commentAsync(posting_key, '', 'golos-votes', golos_login, permlink, data.title, descr, JSON.stringify(json), [[ 0, {"beneficiaries":benecs} ]]); +await actionResult(`

    Опрос создан успешно.

    +

    Перейти к опросу

    `); +} catch(e) { + await actionResult(`Ошибка: +` + e); +} +} else { +window.alert('Ошибка: вы не авторизованы.'); +} +} diff --git a/golos-votes/result.html b/golos-votes/result.html new file mode 100644 index 00000000..2a31ec1d --- /dev/null +++ b/golos-votes/result.html @@ -0,0 +1,103 @@ + + + + + +GOLOS опросы + + + + + + + + + + + +
    + +
    +

    Сервис проведения опросов в блокчейне Golos

    +
    + +
    + +
    +
    +
    +
    +
    +
    + + + +
    + + + +
    + + + + \ No newline at end of file diff --git a/golos-votes/sjcl.min.js b/golos-votes/sjcl.min.js new file mode 100644 index 00000000..55643c06 --- /dev/null +++ b/golos-votes/sjcl.min.js @@ -0,0 +1 @@ +"use strict";function t(t,e,i){if(4!==e.length)throw new sjcl.exception.invalid("invalid aes block size");var c=t.b[i],s=e[0]^c[0],n=e[i?3:1]^c[1],r=e[2]^c[2];e=e[i?1:3]^c[3];var o,a,l,h,d=c.length/4-2,u=4,f=[0,0,0,0];t=(o=t.s[i])[0];var p=o[1],m=o[2],j=o[3],y=o[4];for(h=0;h>>24]^p[n>>16&255]^m[r>>8&255]^j[255&e]^c[u],a=t[n>>>24]^p[r>>16&255]^m[e>>8&255]^j[255&s]^c[u+1],l=t[r>>>24]^p[e>>16&255]^m[s>>8&255]^j[255&n]^c[u+2],e=t[e>>>24]^p[s>>16&255]^m[n>>8&255]^j[255&r]^c[u+3],u+=4,s=o,n=a,r=l;for(h=0;4>h;h++)f[i?3&-h:h]=y[s>>>24]<<24^y[n>>16&255]<<16^y[r>>8&255]<<8^y[255&e]^c[u++],o=s,s=n,n=r,r=e,e=o;return f}function u(t,e){var i,c,s,n=t.F,r=t.b,o=n[0],a=n[1],l=n[2],h=n[3],d=n[4],u=n[5],f=n[6],p=n[7];for(i=0;64>i;i++)16>i?c=e[i]:(c=e[i+1&15],s=e[i+14&15],c=e[15&i]=(c>>>7^c>>>18^c>>>3^c<<25^c<<14)+(s>>>17^s>>>19^s>>>10^s<<15^s<<13)+e[15&i]+e[i+9&15]|0),c=c+p+(d>>>6^d>>>11^d>>>25^d<<26^d<<21^d<<7)+(f^d&(u^f))+r[i],p=f,f=u,u=d,d=h+c|0,h=l,l=a,a=o,o=c+(a&l^h&(a^l))+(a>>>2^a>>>13^a>>>22^a<<30^a<<19^a<<10)|0;n[0]=n[0]+o|0,n[1]=n[1]+a|0,n[2]=n[2]+l|0,n[3]=n[3]+h|0,n[4]=n[4]+d|0,n[5]=n[5]+u|0,n[6]=n[6]+f|0,n[7]=n[7]+p|0}function A(t,e){var i,c=sjcl.random.K[t],s=[];for(i in c)c.hasOwnProperty(i)&&s.push(c[i]);for(i=0;ie&&(t.h[e]=t.h[e]+1|0,!t.h[e]);e++);return t.L.encrypt(t.h)}function B(t,e){return function(){e.apply(t,arguments)}}var sjcl={cipher:{},hash:{},keyexchange:{},mode:{},misc:{},codec:{},exception:{corrupt:function(t){this.toString=function(){return"CORRUPT: "+this.message},this.message=t},invalid:function(t){this.toString=function(){return"INVALID: "+this.message},this.message=t},bug:function(t){this.toString=function(){return"BUG: "+this.message},this.message=t},notReady:function(t){this.toString=function(){return"NOT READY: "+this.message},this.message=t}}};sjcl.cipher.aes=function(t){this.s[0][0][0]||this.O();var e,i,c,s,n=this.s[0][4],r=this.s[1],o=1;if(4!==(e=t.length)&&6!==e&&8!==e)throw new sjcl.exception.invalid("invalid aes key size");for(this.b=[c=t.slice(0),s=[]],t=e;t<4*e+28;t++)i=c[t-1],(0==t%e||8===e&&4==t%e)&&(i=n[i>>>24]<<24^n[i>>16&255]<<16^n[i>>8&255]<<8^n[255&i],0==t%e&&(i=i<<8^i>>>24^o<<24,o=o<<1^283*(o>>7))),c[t]=c[t-e]^i;for(e=0;t;e++,t--)i=c[3&e?t:t-4],s[e]=4>=t||4>e?i:r[0][n[i>>>24]]^r[1][n[i>>16&255]]^r[2][n[i>>8&255]]^r[3][n[255&i]]},sjcl.cipher.aes.prototype={encrypt:function(e){return t(this,e,0)},decrypt:function(e){return t(this,e,1)},s:[[[],[],[],[],[]],[[],[],[],[],[]]],O:function(){var t,e,i,c,s,n,r,o=this.s[0],a=this.s[1],l=o[4],h=a[4],d=[],u=[];for(t=0;256>t;t++)u[(d[t]=t<<1^283*(t>>7))^t]=t;for(e=i=0;!l[e];e^=c||1,i=u[i]||1)for(n=i^i<<1^i<<2^i<<3^i<<4,n=n>>8^255&n^99,l[e]=n,h[n]=e,s=d[t=d[c=d[e]]],r=16843009*s^65537*t^257*c^16843008*e,s=257*d[n]^16843008*n,t=0;4>t;t++)o[t][e]=s=s<<24^s>>>8,a[t][n]=r=r<<24^r>>>8;for(t=0;5>t;t++)o[t]=o[t].slice(0),a[t]=a[t].slice(0)}},sjcl.bitArray={bitSlice:function(t,e,i){return t=sjcl.bitArray.$(t.slice(e/32),32-(31&e)).slice(1),void 0===i?t:sjcl.bitArray.clamp(t,i-e)},extract:function(t,e,i){var c=Math.floor(-e-i&31);return(-32&(e+i-1^e)?t[e/32|0]<<32-c^t[e/32+1|0]>>>c:t[e/32|0]>>>c)&(1<>e-1,1)),t},partial:function(t,e,i){return 32===t?e:(i?0|e:e<<32-t)+1099511627776*t},getPartial:function(t){return Math.round(t/1099511627776)||32},equal:function(t,e){if(sjcl.bitArray.bitLength(t)!==sjcl.bitArray.bitLength(e))return!1;var i,c=0;for(i=0;i>>e),i=t[s]<<32-e;return s=t.length?t[t.length-1]:0,t=sjcl.bitArray.getPartial(s),c.push(sjcl.bitArray.partial(e+t&31,32>>24|i>>>8&65280|(65280&i)<<8|i<<24;return t}},sjcl.codec.utf8String={fromBits:function(t){var e,i,c="",s=sjcl.bitArray.bitLength(t);for(e=0;e>>8>>>8>>>8),i<<=8;return decodeURIComponent(escape(c))},toBits:function(t){t=unescape(encodeURIComponent(t));var e,i=[],c=0;for(e=0;e>>r)>>>s),r(c=l.indexOf(t.charAt(i)))){if(!e)try{return sjcl.codec.base32hex.toBits(t)}catch(t){}throw new sjcl.exception.invalid("this isn't "+d+"!")}a>r?(a-=r,o.push(h^c>>>a),h=c<>>s)>>>26),6>s?(r=t[i]<<6-s,s+=26,i++):(r<<=6,s-=6);for(;3&c.length&&!e;)c+="=";return c},toBits:function(t,e){t=t.replace(/\s|=/g,"");var i,c,s=[],n=0,r=sjcl.codec.base64.B,o=0;for(e&&(r=r.substr(0,62)+"-_"),i=0;i(c=r.indexOf(t.charAt(i))))throw new sjcl.exception.invalid("this isn't base64!");26>>n),o=c<<32-n):(n+=6,o^=c<<32-n)}return 56&n&&s.push(sjcl.bitArray.partial(56&n,o,1)),s}},sjcl.codec.base64url={fromBits:function(t){return sjcl.codec.base64.fromBits(t,1,1)},toBits:function(t){return sjcl.codec.base64.toBits(t,1)}},sjcl.hash.sha256=function(t){this.b[0]||this.O(),t?(this.F=t.F.slice(0),this.A=t.A.slice(0),this.l=t.l):this.reset()},sjcl.hash.sha256.hash=function(t){return(new sjcl.hash.sha256).update(t).finalize()},sjcl.hash.sha256.prototype={blockSize:512,reset:function(){return this.F=this.Y.slice(0),this.A=[],this.l=0,this},update:function(t){"string"==typeof t&&(t=sjcl.codec.utf8String.toBits(t));var e,i=this.A=sjcl.bitArray.concat(this.A,t);if(e=this.l,9007199254740991<(t=this.l=e+sjcl.bitArray.bitLength(t)))throw new sjcl.exception.invalid("Cannot hash more than 2^53 - 1 bits");if("undefined"!=typeof Uint32Array){var c=new Uint32Array(i),s=0;for(e=512+e-(512+e&511);e<=t;e+=512)u(this,c.subarray(16*s,16*(s+1))),s+=1;i.splice(0,16*s)}else for(e=512+e-(512+e&511);e<=t;e+=512)u(this,i.splice(0,16));return this},finalize:function(){var t,e=this.A,i=this.F;for(t=(e=sjcl.bitArray.concat(e,[sjcl.bitArray.partial(1,1)])).length+2;15&t;t++)e.push(0);for(e.push(Math.floor(this.l/4294967296)),e.push(0|this.l);e.length;)u(this,e.splice(0,16));return this.reset(),i},Y:[],b:[],O:function(){function t(t){return 4294967296*(t-Math.floor(t))|0}for(var e,i,c=0,s=2;64>c;s++){for(i=!0,e=2;e*e<=s;e++)if(0==s%e){i=!1;break}i&&(8>c&&(this.Y[c]=t(Math.pow(s,.5))),this.b[c]=t(Math.pow(s,1/3)),c++)}}},sjcl.mode.ccm={name:"ccm",G:[],listenProgress:function(t){sjcl.mode.ccm.G.push(t)},unListenProgress:function(t){-1<(t=sjcl.mode.ccm.G.indexOf(t))&&sjcl.mode.ccm.G.splice(t,1)},fa:function(t){var e,i=sjcl.mode.ccm.G.slice();for(e=0;ea)throw new sjcl.exception.invalid("ccm: iv must be at least 7 bytes");for(n=2;4>n&&l>>>8*n;n++);return n<15-a&&(n=15-a),i=o.clamp(i,8*(15-n)),e=sjcl.mode.ccm.V(t,e,i,c,s,n),r=sjcl.mode.ccm.C(t,r,i,e,s,n),o.concat(r.data,r.tag)},decrypt:function(t,e,i,c,s){s=s||64,c=c||[];var n=sjcl.bitArray,r=n.bitLength(i)/8,o=n.bitLength(e),a=n.clamp(e,o-s),l=n.bitSlice(e,o-s),o=(o-s)/8;if(7>r)throw new sjcl.exception.invalid("ccm: iv must be at least 7 bytes");for(e=2;4>e&&o>>>8*e;e++);if(e<15-r&&(e=15-r),i=n.clamp(i,8*(15-e)),a=sjcl.mode.ccm.C(t,a,i,l,s,e),t=sjcl.mode.ccm.V(t,a.data,i,c,s,e),!n.equal(a.tag,t))throw new sjcl.exception.corrupt("ccm: tag doesn't match");return a.data},na:function(t,e,i,c,s,n){var r=[],o=sjcl.bitArray,a=o.i;if(c=[o.partial(8,(e.length?64:0)|c-2<<2|n-1)],c=o.concat(c,i),c[3]|=s,c=t.encrypt(c),e.length)for(i=o.bitLength(e)/8,65279>=i?r=[o.partial(16,i)]:4294967295>=i&&(r=o.concat([o.partial(16,65534)],[i])),r=o.concat(r,e),e=0;es||16h&&(sjcl.mode.ccm.fa(r/a),h+=d),i[3]++,s=t.encrypt(i),e[r]^=s[0],e[r+1]^=s[1],e[r+2]^=s[2],e[r+3]^=s[3];return{tag:c,data:o.clamp(e,l)}}},sjcl.mode.ocb2={name:"ocb2",encrypt:function(t,e,i,c,s,n){if(128!==sjcl.bitArray.bitLength(i))throw new sjcl.exception.invalid("ocb iv must be 128 bits");var r,o=sjcl.mode.ocb2.S,a=sjcl.bitArray,l=a.i,h=[0,0,0,0];i=o(t.encrypt(i));var d,u=[];for(c=c||[],s=s||64,r=0;r+4s.bitLength(i)&&(o=n(o,c(o)),i=s.concat(i,[-2147483648,0,0,0])),r=n(r,i),t.encrypt(n(c(n(o,c(o))),r))},S:function(t){return[t[0]<<1^t[1]>>>31,t[1]<<1^t[2]>>>31,t[2]<<1^t[3]>>>31,t[3]<<1^135*(t[0]>>>31)]}},sjcl.mode.gcm={name:"gcm",encrypt:function(t,e,i,c,s){var n=e.slice(0);return e=sjcl.bitArray,c=c||[],t=sjcl.mode.gcm.C(!0,t,n,c,i,s||128),e.concat(t.data,t.tag)},decrypt:function(t,e,i,c,s){var n=e.slice(0),r=sjcl.bitArray,o=r.bitLength(n);if(s=s||128,c=c||[],s<=o?(e=r.bitSlice(n,o-s),n=r.bitSlice(n,0,o-s)):(e=n,n=[]),t=sjcl.mode.gcm.C(!1,t,n,c,i,s),!r.equal(t.tag,e))throw new sjcl.exception.corrupt("gcm: tag doesn't match");return t.data},ka:function(t,e){var i,c,s,n,r,o=sjcl.bitArray.i;for(s=[0,0,0,0],n=e.slice(0),i=0;128>i;i++){for((c=0!=(t[Math.floor(i/32)]&1<<31-i%32))&&(s=o(s,n)),r=0!=(1&n[3]),c=3;0>>1|(1&n[c-1])<<31;n[0]>>>=1,r&&(n[0]^=-520093696)}return s},j:function(t,e,i){var c,s=i.length;for(e=e.slice(0),c=0;cs&&(t=e.hash(t)),i=0;ic||0>i)throw new sjcl.exception.invalid("invalid params to pbkdf2");"string"==typeof t&&(t=sjcl.codec.utf8String.toBits(t)),"string"==typeof e&&(e=sjcl.codec.utf8String.toBits(e)),t=new(s=s||sjcl.misc.hmac)(t);var n,r,o,a,l=[],h=sjcl.bitArray;for(a=1;32*l.length<(c||1);a++){for(s=n=t.encrypt(h.concat(e,[a])),r=1;rn;n++)c.push(4294967296*Math.random()|0);for(n=0;n=1<this.o&&(this.o=r),this.P++,this.b=sjcl.hash.sha256.hash(this.b.concat(c)),this.L=new sjcl.cipher.aes(this.b),i=0;4>i&&(this.h[i]=this.h[i]+1|0,!this.h[i]);i++);}for(i=0;i>>=1;this.c[r].update([c,this.N++,2,e,n,t.length].concat(t))}break;case"string":void 0===e&&(e=t.length),this.c[r].update([c,this.N++,3,e,n,t.length]),this.c[r].update(t);break;default:a=1}if(a)throw new sjcl.exception.bug("random: addEntropy only supports number, array of numbers or string");this.m[r]+=e,this.f+=e,o===this.u&&(this.isReady()!==this.u&&A("seeded",Math.max(this.o,this.f)),A("progress",this.getProgress()))},isReady:function(t){return t=this.T[void 0!==t?t:this.M],this.o&&this.o>=t?this.m[0]>this.ba&&(new Date).valueOf()>this.Z?this.J|this.I:this.I:this.f>=t?this.J|this.u:this.u},getProgress:function(t){return t=this.T[t||this.M],this.o>=t?1:this.f>t?1:this.f/t},startCollectors:function(){if(!this.D){if(this.a={loadTimeCollector:B(this,this.ma),mouseCollector:B(this,this.oa),keyboardCollector:B(this,this.la),accelerometerCollector:B(this,this.ea),touchCollector:B(this,this.qa)},window.addEventListener)window.addEventListener("load",this.a.loadTimeCollector,!1),window.addEventListener("mousemove",this.a.mouseCollector,!1),window.addEventListener("keypress",this.a.keyboardCollector,!1),window.addEventListener("devicemotion",this.a.accelerometerCollector,!1),window.addEventListener("touchmove",this.a.touchCollector,!1);else{if(!document.attachEvent)throw new sjcl.exception.bug("can't attach event");document.attachEvent("onload",this.a.loadTimeCollector),document.attachEvent("onmousemove",this.a.mouseCollector),document.attachEvent("keypress",this.a.keyboardCollector)}this.D=!0}},stopCollectors:function(){this.D&&(window.removeEventListener?(window.removeEventListener("load",this.a.loadTimeCollector,!1),window.removeEventListener("mousemove",this.a.mouseCollector,!1),window.removeEventListener("keypress",this.a.keyboardCollector,!1),window.removeEventListener("devicemotion",this.a.accelerometerCollector,!1),window.removeEventListener("touchmove",this.a.touchCollector,!1)):document.detachEvent&&(document.detachEvent("onload",this.a.loadTimeCollector),document.detachEvent("onmousemove",this.a.mouseCollector),document.detachEvent("keypress",this.a.keyboardCollector)),this.D=!1)},addEventListener:function(t,e){this.K[t][this.ga++]=e},removeEventListener:function(t,e){var i,c,s=this.K[t],n=[];for(c in s)s.hasOwnProperty(c)&&s[c]===e&&n.push(c);for(i=0;i=r.iter||64!==r.ts&&96!==r.ts&&128!==r.ts||128!==r.ks&&192!==r.ks&&256!==r.ks||2>r.iv.length||4=e.iter||64!==e.ts&&96!==e.ts&&128!==e.ts||128!==e.ks&&192!==e.ks&&256!==e.ks||!e.iv||2>e.iv.length||4 + + + + +GOLOS опросы + + + + + + + + + + + +
    + +
    +

    Сервис проведения опросов в блокчейне Golos

    +
    + +
    + +
    +
    +
    +
    +
    +
    + + + +
    + + + +
    + + + + \ No newline at end of file diff --git a/helpers.php b/helpers.php index bd541625..f1cf4d70 100644 --- a/helpers.php +++ b/helpers.php @@ -1,11 +1,9 @@ WLS::class, 'golos' => Golos::class, diff --git a/index.php b/index.php index a597dd70..fb612962 100644 --- a/index.php +++ b/index.php @@ -3,6 +3,35 @@ ini_set('session.cookie_lifetime', 12000000960); @session_start(); +function myHandler($level, $message, $file, $line, $context) { + // в зависимости от типа ошибки формируем заголовок сообщения + switch ($level) { + case E_WARNING: + $type = 'Warning'; + break; + case E_NOTICE: + $type = 'Notice'; + break; + default; + // это не E_WARNING и не E_NOTICE + // значит мы прекращаем обработку ошибки + // далее обработка ложится на сам PHP + return false; + } + // выводим текст ошибки + echo "

    Ошибка

    +

    Если она уже долго, просьба написать в Telegram чат @dpos_space адрес страницы и подробности ошибки. Благодарю.

    +

    $type: $message

    "; + echo "

    File: $file:$line

    "; + echo "

    Context: $". join(', $', + array_keys($context))."

    "; + // сообщаем, что мы обработали ошибку, и дальнейшая обработка не требуется + return true; +} + +// регистрируем наш обработчик, он будет срабатывать на для всех типов ошибок +set_error_handler('myHandler', E_ALL); + require_once 'urls.php'; require_once 'params.php'; require_once 'helpers.php'; diff --git a/json/index.html b/json/index.html new file mode 100644 index 00000000..06855d1f --- /dev/null +++ b/json/index.html @@ -0,0 +1,835 @@ + + + + + + JSON generator + + + + + + + + + + + + +
    +
    +

    + +

    +

    + +

    +
    + Типа Уровень 2 +

    + +

    +

    + +

    +
    +
    +
    + Типа тоже Уровень 2 +

    + +

    +
    + Типа Уровень 3 +

    + +

    +

    + +

    +
    +
    +
    +

    +

    +
    + + + + \ No newline at end of file diff --git a/json/json_encode.php b/json/json_encode.php new file mode 100644 index 00000000..0df0e267 --- /dev/null +++ b/json/json_encode.php @@ -0,0 +1,3 @@ + +

    Выберите вверху блокчейн и приступайте к игре

    +'; +require_once $_SERVER['DOCUMENT_ROOT'].'/template/footer.php'; +} else if( isset($array_url[1] ) ) { + echo '
    '; + require $_SERVER['DOCUMENT_ROOT'].'/loser-game/view.php'; +echo '
    '; +} \ No newline at end of file diff --git a/loser-game/params.php b/loser-game/params.php new file mode 100644 index 00000000..63a776aa --- /dev/null +++ b/loser-game/params.php @@ -0,0 +1,17 @@ +Активные и завершённые раунды.

    "; +} else if( isset($array_url[1] ) ){ + $title = "Loser-game в $chain_name $title_domain"; + $meta_keywords = "steem, golos, Viz, loser, loser-game, игра"; + $meta_description = "Страницы игры Loser-game."; + $h1 = "Loser-game"; + $description = "

    Активные и завершённые раунды.

    "; +} +$footer_text = "где можно играть в Loser-game для " . ($chain_name ?? $chain_name ?? ""); +} // Конец условия для данного сервиса \ No newline at end of file diff --git a/loser-game/view.php b/loser-game/view.php new file mode 100644 index 00000000..3c689dfb --- /dev/null +++ b/loser-game/view.php @@ -0,0 +1,162 @@ +Создайте свой раунд +

    Играть

    +

    или присоединитесь к существующему

    + '; +if ($table) { + foreach ($table as $round) { + echo ''; +$transfers = ''; + foreach($round['transfers'] as $transfer) { +$transfers .= '@'.$transfer.', '; +} +$transfers = substr($transfers,0,-2); +echo ' + +'; +} +} +echo '
    Сумма раундаУчастникиСтартовый блок раундаДействия
    '.$round['amount'].' '.$round['token'].''.$transfers.''.$round['start_round_block'].'Играть
    + + + + +'; +?> \ No newline at end of file diff --git a/maintenance.html b/maintenance.html index bb97d836..d8a5ee2f 100644 --- a/maintenance.html +++ b/maintenance.html @@ -1,7 +1,7 @@ - Сайт Закрыт на обновление + Сайт временно закрыт -

    Сайт Закрыт на обновление

    -

    Приносим извинения за неудобство, но в данный момент сайт обновляется.

    -

    Во время реструктуризации возникли проблемы. Они решаются.

    +

    Сайт временно закрыт

    +

    Приносим извинения за неудобство, но в данный момент сайт закрыт из-за запуска Golos Classic. После начала стабильной работы блокчейна проект заработает вновь. Новости читайте в Telegram чате dpos_space.

    +

    t.me/dpos_space или если у вас тот сайт недоступен, через t-do.ru/dpos_space

    \ No newline at end of file diff --git a/params.php b/params.php index 4fb4662d..70276f4b 100644 --- a/params.php +++ b/params.php @@ -1,7 +1,4 @@ -

    Публикация поста

    Бенефициарские 1%

    +

    Адрес публичной Ноды

    +

    Ниже вы можете указать произвольный адрес публичной Ноды (wss для golos и viz, https для whaleshares и steem). После сохранения обновите страницу.

    +
    +

    + + +

    +
    +

    Публикация поста
    Бенефициарские 1%

    @@ -50,8 +58,7 @@

    -

    -

    +

    @@ -59,19 +66,48 @@

    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + +
    Теги
    +
    -
    - + +

    Процент кураторам (Можно изменять только при создании поста):

    +
    +
    -

    Расширенные настройки

    -

    -

    - + +

    + +

    + +

    +


    -

    Бенефициары

    +
    + +

    Вы можете указать других бенефициаров (помимо меня).

    -

    -

    +

    Процент:

    -
    +
    + + + + + + +
    AccountweightУдаление
    +

    +
    +
    -
    -
    +
    + +
    +

    +

    +