Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » AkelPad (часть 2)

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184

Открыть новую тему     Написать ответ в эту тему

gyra

Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
 AkelPad
текстовый редактор с открытым исходным кодом, созданный, чтобы быть маленьким и быстрым
Авторы: Шенгальц А. А. (aka Instructor; версии 3–4); Кузнецов А. И. (версии 1–2)

Последний релиз: 4.9.9 от 16 октября 2024
Последняя тестовая: 4.10.0 r4521 от 16 ноября 2025; хроника изменений


Скачать
Программа релиз 4.9.9: многоязычная [exe]: x86 | x64; русская [zip]: x86 | x64; английская [zip]: x86 | x64      
тестовая (dev) 4.10.0 r4521 английская [zip]: x86 | x64 (соответствует r4521 исходников)    
Плагины полный авторский комплект: x86 | x64    
Скрипты авторская подборка: Instructor | KDJ | VladSh | Infocatcher    
Синтаксические файлы авторские дополнения к комплектным: akelpad.sf.net    
Шрифты авторская модификация для использования с плагином Fonts.dll: akelpad.sf.net    
Обновления авторская утилита AkelUpdater v6.9

Дополнения от сообщества
Программа Неофициальная компиляция из последних исходников 4.10.0 r4521 от 16.11.2025
Microsoft SDK для самостоятельной компиляции AkelPad и плагинов
NSIS 3.xx для самостоятельной компиляции AkelUpdater    
Плагины FileDialog: Диалог открытия файлов. Автор: dothen. Скачать: 1.3    
Help: вызов справки с поиском выделенного текста (альт. к ChmKeyword.js). Подробнее: 1, 2, видео. Автор: AZJIO. Скачать: плаг (или утилита)    
SpellCheck: проверка орфографии на движке Hunspell. Автор: random6_2020. Скачать: x64 (1.3.0.4) | x86 (1.3.0.5) | исходники    
TabBar: вкладки: кнопка закрытия, выделение активной, etc. Автор: dothen. Скачать: 2.2, библиотека TabBarEx.dll.    
TagsView: разбор исходного кода при помощи ctags. Подробнее: akelpad.sf.net | github. Автор: DV. Скачать: 0.5b github | sf.net    
Скрипты akelpad.sf.net | Infocatcher :: github | DV :: github | AZJIO | Andrey_A_A    
Синтаксические файлы • подборки: Lenchik & Drugmix & Skif_off | cuprum | Infocatcher :: github | VladSh | Andrey_A_A    
единым списком по расширениям (включая авторские, а также не вошедшие в перечисленные подборки)    
Утилиты ShellExt: пункт в контекстное меню проводника. Подробнее... Автор: Ralph Shane. Скачать: 4.8.3.0    
AnotherFileNearby: создание слепка редактируемого файла. Подробнее... Автор: AZJIO. Скачать: YaD    
Цветовые темы Atom One Dark Pro    
Сборки местная коллекция    
в составе сборок часто содержатся скрипты и синтаксические файлы, не имеющие самостоятельных ссылок, и потому не перечисленные в шапке

Помощь
Справка из исходников | FAQ 1 | FAQ 2
Справка от AZJIO: онлайн | в формате CHM (с дополнениями от сообщества)
Coder-файл: справочные комментарии на русском языке
Установка AkelPad 4 на Windоws 7 с заменой Блокнота Windows

Всего записей: 7932 | Зарегистр. 18-02-2006 | Отправлено: 22:03 10-07-2017 | Исправлено: yozhic, 12:22 22-11-2025
VSHY

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
destiny_child
 
Ответ на вопрос 3: скачать самую свежую версию скрипта, что даст больше вероятности того, что он заработает под текущую версию AkelPad'а. Да и нет никакого смысла разбираться с теми ошибками, которые были исправлены авторами в прошлых версиях.
Касательно скрипта History.js - на данный момент это v0.15 (2015.12.11).
 
Ответ на вопрос 4:
Если произошла явная ошибка, то AkelPad в сообщении об ошибке укажет строку, на которой она возникла, и даст перейти к этой строке.
Если при запуске скрипта ничего не произошло, значит это логическая ошибка. Решение данной группы ошибок такое - изучаем на минимальном уровне язык программирования скрипта (в данном случае это js) и отлаживаем.
Самый простой способ отладки - добавление строки в код, которая просто выводит какое-нибудь сообщение на экран. По наличию сообщения узнаем, что выполнение кода дошло до того, места, в котором добавлен вывод этого сообщения.
Можно сделать вывод в панель Log-плагина - см. документацию на плагин.

Всего записей: 1222 | Зарегистр. 19-05-2008 | Отправлено: 20:11 19-11-2025
destiny_child



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
jentoso (пост)
Цитата:
Наверно как минимум надо понимать язык скрипта, что проверить его на наличие очевидных синтаксических ошибок.
Очевидные я прогнал и через пару чекеров на основе ИИ.
И явно стоит верить тому, что изначальный автор-разработчик скрипта не просто так выпустил не одну версию оного - значит  
и в репозитории вполне себе актуальный (хотя бы на момент выкладки) код лежит. Взяли же мы его. Верно же?
Я так точно - Взял последний. Со всеми допами.
 
VSHY (пост)
Цитата:
Самый простой способ отладки - добавление строки в код

И я добавил прямо в первую же главную часть кода, прямо перед вызовом:

Код:
    //! Регистрируем класс окна
    var res = AkelPad.WindowRegisterClass(DOCKCLASSNAME);
 

вызов окошка-сообщатора о том, что мы хотя бы до этой строки кода добрались. И ничего....
Я вставил просто в принципе в самое начало кода скрипта вызов такого окошечка. И ничегошеньки....
ну - кто нить для попытки №5 - может у себя повторить такое же и показать, что либо у него все работает,
либо, что и у него ничего не работает...?

Всего записей: 4919 | Зарегистр. 01-04-2006 | Отправлено: 20:12 19-11-2025 | Исправлено: destiny_child, 10:11 20-11-2025
jentoso



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
destiny_child (пост)
Цитата:
кто нить для попытки №5 - может у себя повторить такое же и показать, что либо у него все работает,
либо, что и у него ничего не работает...?

Установил скрипт и сразу словил ошибку

Цитата:
 
Строка:    905
Символ:    2
Ошибка:    Недостаточно памяти
Код:    800A0007
Источник:    Ошибка выполнения JavaScript
 

Windows 11 x64, AkelPad 4.9.9
 
Добавлено:
destiny_child (пост)
Цитата:
Вопрос 1 - а еще как думаете: есть скрипты, которые описаны, но не присутствуют в сборке?  
Можно как-то автоматизировать такой поиск? Хорошо же бы починить сборочку, чтобы всё работало?

А вроде есть походу способ http://forum.ru-board.com/topic.cgi?forum=5&topic=19698&start=2580#9
Можно все меню сохранить в текстовом варианте, а затем уже выдернуть все названия скриптов и сверить их с перечнем в папке Scripts.

Всего записей: 665 | Зарегистр. 25-10-2008 | Отправлено: 20:31 19-11-2025
destiny_child



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Win11 и 4.9.9 = ну просто мегакомбо по варианту, который точно нельзя тестить))))
В 11 винде с какими-то основами пришел ну ооочень испорченный JScript движок, который сопсно и работает в сабже над скриптами.
Ну и ваша ошибка - чаще всего так всё и отображается с этой испорченностью.
Ну и 4.9.9 - эта та версия, где нет того фикса, который внесли в новую версию плагина Script. Чтоб хоть как-то обойти эту испорченность)))
По итогу надо тестить как минимум на последнем неофиц.варианте сборки, что в шапке ща есть.
Ну и лучше на 10 Винде. Чтоб свести вариант влияния нового движка к минимуму, без костыльных фиксов ...
 
Ну а вариант выдергивания ... Ндя. Вполне наверное вариант.
Опробовать стоит как минимум....
 
Добавлено:
Дааа. Этот PluginText просто пушка)))))

Всего записей: 4919 | Зарегистр. 01-04-2006 | Отправлено: 22:20 19-11-2025 | Исправлено: destiny_child, 22:23 19-11-2025
VSHY

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
destiny_child
 
В начале скрипта указано:

Цитата:
//    Autostart it.
//    AkelPad.ini or registry key CmdLineBegin append /Call("Scripts::Main", 1, "History.js")

Видимо поэтому оно и не работает, потому что скрипт не в автозагрузке.

Всего записей: 1222 | Зарегистр. 19-05-2008 | Отправлено: 01:41 20-11-2025
jentoso



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VSHY
Ошибка возникает, написана выше.
 
destiny_child
Сам скрипт по сути применялся последний раз на версии AkelPad 2015 года, так что 4.9.9 или 4.9.10 мало и нет значения, скорее всего.
По движку WSH в Windows 11 в курсе, но другие скрипты работают.

Всего записей: 665 | Зарегистр. 25-10-2008 | Отправлено: 04:40 20-11-2025
AkulaBig

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
destiny_child

Цитата:
Ну и лучше на 10 Винде.

Да не. После фикса Акельки на Вин 11 все прекрасно работает.

Всего записей: 6737 | Зарегистр. 11-03-2003 | Отправлено: 05:33 20-11-2025
destiny_child



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
падает на вызове чтения настроек (это я уже псевдо последовательно навырезал  
задействованный код, а так-то он раскидан по тексту скрипта по логическим местам)

Код:
var oSet=AkelPad.ScriptSettings();
...
oSet.Begin(WScript.ScriptBaseName, 0x1 /*POB_READ*/);
...
_FILTER = oSet.Read("FILTER", PO_STRING,"");                         <----------------- вот на этой строке
...
oSet.End();
....

 
Не знаю пока что - где найти инфу о том, ЧТО хранится в AkelPad.ScriptSettings()
и что там можно вытаскивать, а чего там нет (уже или ещё?)....
Если это просто оболочка доступа к данным самого скрипта - то ГДЕ тогда подразумевается,
что эти данные хранятся, чтоб объект ScriptSettings их оттуда считывал? В INI файле?
Ну дык его нет. И что? По умолчанию нельзя взять пустое значение? Вроде так именно
и задано в строке вызова чтения параметра "FILTER".
НО исполнение буквально именно падает на этой строке...
 
Добавлено:
Но так же еще не понятно - почему есть вызов  
//! Создаёт панельку
function CreateDock()
 
т.е. нам прямым текстом пишут про панельку, НО! надо признать, что УВИДЕТЬ панельку-  это та еще
задача - для выбранной сборки - ибо их там вагон и телега. И вот КАК должно выглядеть эта панелька?
Ведь я как понимаю - никто не смог заставить скрипта работать и скриншота того - ЧТО надо увидеть
у нас пока нет. И процесс отладки - ну просто офигеть как логичный)) Сиди и подбирай строки - тыкай
в них строки отладки, выводи окошки, пиши в лог.... жееееесть.
 
P.S.
я убрал чтение FILTER и получил дальнейшее развитие срабатывания кода... но...
но оно где-то что-то выполняет и опять ломается. Никаких панелек никак нигде я
не замечаю. Наверное этот скрипт был дичайшим образом заточен на ровно ТУ
версию редактора - что был актуален в те годы, возможно использовались очень
недокументированные возможности работы панелек/окон редактора в теле скрипта,
вот поэтому и был он удален из сборки - но удален вот как выходит весьма нечисто.

Всего записей: 4919 | Зарегистр. 01-04-2006 | Отправлено: 10:52 20-11-2025 | Исправлено: destiny_child, 10:52 20-11-2025
yozhic



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
destiny_child (пост)
Цитата:
где найти инфу о том, ЧТО хранится в AkelPad.ScriptSettings()

Скрипт AkelPadMethodsView.js от KDJ (в архиве его скриптов или на дом-форуме в теме скриптов) — если ещё нет его у Вас, скорее берите — удобное окно со справкой по скриптовому API AkelP.
 
Далее, поиском по тексту в файлах папки Plugs\Scripts нахожу все скрипты, использующие AkelPad.ScriptSettings(). Смотрю как они работают. Вижу — все они снабжены INI-файлами настроек. Вывод: AkelPad.ScriptSettings() читает настройки из INI-файла, который должен быть.

Цитата:
Ну дык его нет.

А надо, чтоб был.

Цитата:
И что? По умолчанию нельзя взять пустое значение?

Я бы создал файл настроек и в нём ключ с пустым значением. Теперь падает? Потом добавил бы значение. А теперь? Если не падает, тогда сигнализировал бы о том, что плагин не читает значение по умолчанию при отсутствии файла настроек.
 
Я бы так копался.

Всего записей: 3189 | Зарегистр. 20-03-2008 | Отправлено: 11:30 20-11-2025
jentoso



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
destiny_child
yozhic
А какой смысл в этих "ковыряниях", кроме спортивного?
Есть же штатная функция истории.

Всего записей: 665 | Зарегистр. 25-10-2008 | Отправлено: 11:39 20-11-2025
yozhic



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
jentoso (пост)
Цитата:
А какой смысл в этих "ковыряниях", кроме спортивного?

Исследовательско-тренировочный. У некоторых так лучше по полочкам раскладывается.

Всего записей: 3189 | Зарегистр. 20-03-2008 | Отправлено: 12:13 20-11-2025
destiny_child



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Совершенно верно. Исследовательско-тренировочный.
Ну и товарищу потом проще пояснить - отчего у него шиш, а я и не заметил проблему))))))
 
yozhic (пост)
Цитата:
 Если не падает, тогда сигнализировал бы о том, что плагин не читает значение по умолчанию при отсутствии файла настроек.

Это не плагин не читает, это встроенный функционал Акеллы не работает. Причем избирательно.

Код:
//! Прочитать настройки скрипта
function READ_SETTINGS()
{
    oSet.Begin(WScript.ScriptBaseName, 0x1 /*POB_READ*/);
    _W     = oSet.Read("WIDTH", PO_DWORD, 100);
    _H     = oSet.Read("HEIGHT", PO_DWORD, 300);
    _BS    = oSet.Read("BS", PO_DWORD, 20);
    _GAP  = oSet.Read("GAP", PO_DWORD, 5);
    _SIDE = oSet.Read("SIDE", PO_DWORD, DKS_RIGHT);
    _ELSE = oSet.Read("ELSE", PO_DWORD, WS_EX_CLIENTEDGE);
    _FULLDND = oSet.Read("FULLDND", PO_DWORD, 0);
    _HK_RT = oSet.Read("HK_RT", PO_DWORD, MAKEWORD(0x5A,HOTKEYF_ALT));
    _HK_RA = oSet.Read("HK_RA", PO_DWORD, MAKEWORD(0x5A,HOTKEYF_ALT|HOTKEYF_CONTROL|HOTKEYF_SHIFT));
    _HK_SH = oSet.Read("HK_SH", PO_DWORD, MAKEWORD(0x48,HOTKEYF_ALT|HOTKEYF_CONTROL));
    _HIDE = oSet.Read("HIDE", PO_DWORD, 0);
    _PERSIST = oSet.Read("PS", PO_DWORD, 0);
    if(_PERSIST)
    {
        history.unserialize(oSet.Read("DATA", PO_STRING,""));
    }
    _FILTER = "";//oSet.Read("FILTER", PO_STRING,"");
    _APPLY = oSet.Read("APPLY", PO_DWORD, 0);
    oSet.End();
}

как видим - читать пришлось не одно значение из несуществующего INI - и Акелла справился.
КРОМЕ чтения _FILTER  - ему мне пришлось просто принудительно вставить пустую строку.
т.е. сломался функционал встроенной функции движка редактора AkelPad.ScriptSettings().Read
А это вообще-то надо уже разработчику сообщать)))) и не тут обсуждать(((
 
Но если и убрать проблему с чтением - то проблема непонимания того - ГДЕ и КАК должна появиться панелька
скрипта работы с последними файлами - то и раскопаться в дебрях кода становится на порядки сложнее.
прилагали бы хоть разрабы скриншоты работы своих детищ. А то код дали и всё типа...
 
Так что для Исследовательско-тренировочного этапа зададим вопрос разрабу сборки))) ПОЧЕМУ он удалил сам
скрипт из ее состава. Может так же напоролся на тот факт, что работать скрипт перестал раз и навсегда....

Всего записей: 4919 | Зарегистр. 01-04-2006 | Отправлено: 12:59 20-11-2025 | Исправлено: destiny_child, 13:00 20-11-2025
yozhic



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
destiny_child (пост)
Цитата:
сломался функционал встроенной функции движка редактора AkelPad.ScriptSettings().Read

Это как раз движок плагина Scripts.
Но я так и не понял что сломалось то? Если плагин перестал понимать параметр "" — oSet.Read("FILTER", PO_STRING,""); , то почему тогда вот эта строка не вызывает ошибки?

Код:
history.unserialize(oSet.Read("DATA", PO_STRING,""));

Всего записей: 3189 | Зарегистр. 20-03-2008 | Отправлено: 13:46 20-11-2025
VSHY

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
destiny_child

Код:
_FILTER = oSet.Read("FILTER", PO_STRING,"");                         <----------------- вот на этой строке

Вылетает ошибка:
Цитата:
---------------------------
Scripts plugin
---------------------------
Script:    C:\Portable\AkelPad\AkelFiles\Plugs\Scripts\test.js
Error:    "PO_STRING" не определено
Code:    800A1391
Source:    Ошибка выполнения JavaScript
---------------------------
Да   Нет    
---------------------------

Это потому, что используете описание параметра "PO_STRING" вместо его значения. В документации плагина указано, что значение д.б. числовым; а константа PO_STRING действительно не определена.
 
По дальнейшей ошибке отписал на официальном форуме в теме Scripts-плагина.

Всего записей: 1222 | Зарегистр. 19-05-2008 | Отправлено: 13:49 20-11-2025 | Исправлено: VSHY, 13:50 20-11-2025
destiny_child



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
yozhic (пост)
Цитата:
Это как раз движок плагина Scripts.

Если быть точным-точным, то да.
Но имхо в первую очередь это неотъемлемая часть редактора))) Невозможно без него его представить. потому и написал так прямолинейно.
 
yozhic (пост)
Цитата:
Но я так и не понял что сломалось то?

Я тоже не знаю, потому и написал, что писать надо разрабу - чтобы он просмотрел/продебажил вызов этой команды.
 

Цитата:
то почему тогда вот эта строка не вызывает ошибки?

а тут все просто - она под условием, а _PERSIST==0. Потому и не выполняется в принципе.
 
VSHY (пост)
Цитата:
Вылетает ошибка:

Ёшкин ты наш котенок... Но В ЧЁМ??? у вас вылетает эта ошибка??? У меня нет никаких окошек с ошибками. Вообще нет...
 
Добавлено:
И странно, что PO_DWORD вдруг определен, а PO_STRING нет.
Хотяяя.......
 

Код:
var PO_DWORD  = 1;
var PO_BIANRY = 2;
var PO_STRING = 3;
Это копия кода скрипта. Т.е. ЕСТЬ все эти значения! Всё определено!

Всего записей: 4919 | Зарегистр. 01-04-2006 | Отправлено: 14:00 20-11-2025 | Исправлено: destiny_child, 14:04 20-11-2025
VSHY

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
destiny_child
 
А... Это у меня в test.js такая ошибка. А history.js она определена:
Код:
var PO_STRING = 3;
Это я торможу.

Всего записей: 1222 | Зарегистр. 19-05-2008 | Отправлено: 14:04 20-11-2025
destiny_child



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ахахахаха!
А в коде есть-таки там опечатка! PO_BIANRY вместо PO_BINARY ! Просто повезло, что эта константа нигде не используется.

Всего записей: 4919 | Зарегистр. 01-04-2006 | Отправлено: 14:06 20-11-2025
VSHY

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
PO_BIANRY вместо PO_BINARY
Отписал об этом FeyFre в личке на официальном форуме.

Всего записей: 1222 | Зарегистр. 19-05-2008 | Отправлено: 14:13 20-11-2025
destiny_child



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ну смотрите, я честно говоря, не видел там доказательства, что этот автор там вообще появлялся после 15 года на форуме.
Но если личку он и прочтёт, то логично, чтобы ему отписаться не просто об опечатке, а о нерабочем состоянии скрипта.
Уж он-то как автор наверняка быстрее найдет - а в чем сейчас ошибка...

Всего записей: 4919 | Зарегистр. 01-04-2006 | Отправлено: 15:27 20-11-2025
Skif_off

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VSHY

Цитата:
Отписал об этом FeyFre в личке на официальном форуме.

Форум на SF.net, а они там вроде как отключили возможность рассылки уведомлений на почту, лучше на GitHub, наверное.

Всего записей: 6757 | Зарегистр. 28-01-2008 | Отправлено: 16:01 20-11-2025
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184

Компьютерный форум Ru.Board » Компьютеры » Программы » AkelPad (часть 2)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

LiteCoin: LgY72v35StJhV2xbt8CpxbQ9gFY6jwZ67r

Рейтинг.ru