Dynamicjsonbuffer jsonbuffer ошибка

If you try to compile a program written for ArduinoJson 5 when version 6 is installed, you get one of the following error:

error: DynamicJsonBuffer is a class from ArduinoJson 5. Please see arduinojson.org/upgrade to learn how to upgrade your program to ArduinoJson version 6
error: StaticJsonBuffer is a class from ArduinoJson 5. Please see arduinojson.org/upgrade to learn how to upgrade your program to ArduinoJson version 6

To fix this error, you must either:

  • Downgrade the installed version of ArduinoJson:

    • Open the Arduino Library Manager
    • Search “ArduinoJson”
    • Select version 5.13.5
    • Click “Install”

    (See the picture below.)

  • Upgrade your program:

    • Follow the instructions from the migration guide

How to downgrade ArduinoJson to version 5 on Arduino IDE

How to downgrade ArduinoJson to version 5 on PlatformIO

This error is caused by using a 6.x.x version of the ArduinoJson library with code that was written for a pre-6.x.x version of the library.

You have two options to solve the problem:

A. Downgrade the library to a version that is compatible with your code

For now, this is probably the best option because the 6.x.x version of the ArduinoJson is still in beta so it makes sense to wait until the new API is stabilized before porting your code. This is even recommended by the ArduinoJson developers:

https://arduinojson.org/v5/faq/error-jsonbuffer-was-not-declared-in-this-scope/

  1. Sketch > Include Library > Manage Libraries…
  2. Wait for the download to finish.
  3. In the «Filter your search…» box, type: «arduinojson».
  4. Click on «ArduinoJson by Benoit Blanchon».
  5. From the «Select version» dropdown menu, select «Version 5.13.2».
  6. Click «Update». Wait for the update to finish.
  7. Click «Close».

Now your code will compile. If you have File > Preferences > Check for updates on startup enabled, you will continue to get updatable library notification for the ArduinoJson library but you need to refrain from updating back to a 6.x.x version or the error will come back.

B. Update your code to be compatible with the 6.x.x version of the ArduinoJson library

In this case you need to modify your deserialization code to use the new DynamicJsonDocument instead of the old DynamicJsonBuffer:

if (httpCode == 200) {
  // Parsing
  const size_t bufferSize = JSON_OBJECT_SIZE(1) + 50;
  DynamicJsonDocument jsonDocument(bufferSize);
  DeserializationError error = deserializeJson(jsonDocument, http.getString());
  if (error) {
    Serial.println("There was an error while deserializing");
  }
  else {
    JsonObject root = jsonDocument.as<JsonObject>();
    // Parameters
    int Mode = root["mode"]; // 1
    Serial.print("Name:");
    Serial.println(Mode);
  }
}

You can get more details about this here:

https://arduinojson.org/v6/doc/upgrade/

When you see an error message like

Compiling .pio\build\d1_mini\src\main.cpp.o
src\main.cpp:22:11: error: DynamicJsonBuffer is a class from ArduinoJson 5. Please see arduinojson.org/upgrade to learn how to upgrade your program to ArduinoJson version 6
       DynamicJsonBuffer jsonBuffer;

in your PlatformIO or Arduino project using the ArduinoJson library, your code was written for an old version of ArduinoJson.

According to the official ArduinoJson 5 to ArduinoJson 6 migration guide, you need to use DynamicJsonDocument instead. Note that DynamicJsonDocument uses a slightly different API compared to DynamicJsonDocument, hence you might need to adjust more than just changing the class names. But as a first step, replace e.g.

DynamicJsonBuffer json;

by

DynamicJsonDocument json(1024);

@bblanchon

Hi @teemue,

I’m pretty sure everything is okay with 5.13.2.
However, version 6 replaces JsonBuffer with JsonDocument.

Are you sure that it was 5.13.2, not 6.0?

Regards
Benoit

@tobozo

Got the same error after upgrading the library from the library manager in the Arduino IDE.

error: 'StaticJsonBuffer' was not declared in this scope

Rolling back to the previous version solved it.

@tobozo

@bblanchon is there any way to detect the library version and have a chance to use JsonDocument instead of JsonBuffer while maintaining a single codebase in external projects that use your library?

@bblanchon

Hi @tobozo

Yes, you can check the value of ARDUINOJSON_VERSION_MAJOR, it’s available in version 5.13.2 and 6.0.0
However, since ArduinoJson 6 is currently in beta, I would recommend only to support version 5 and use the macro to check that the right version is installed.

BTW, I tried to reproduce this bug (error: 'StaticJsonBuffer' was not declared in this scope) but I could not; can you provide the steps so I can understand what’s going on?
I guess that version 6 was installed instead of version 5.13.2, but I don’t understand why…

Regards,
Benoit

@tobozo

@bblanchon

@tobozo, any idea why version 6 was installed?
Was it a human mistake or did the Arduino Library Manager install the wrong one?

@tobozo

@bblanchon every time you tag a release, it appears in the Arduino Library Manager, which prompts the user into updating without specifying it’s beta.

version - version of the library. Version should be semver compliant. 
1.2.0 is correct; 1.2 is accepted; r5, 003, 1.1c are invalid

suggestion: keep on doing beta on the relative branch but don’t tag your beta releases

@bblanchon
bblanchon

changed the title
5.13.2 broke JsonBuffer

error: ‘JsonBuffer’ was not declared in this scope

Jun 20, 2018

@vdeconinck

Just wanted to add I got bitten too by the automatic update to 6 beta.
I was getting the error «DynamicJsonBuffer does not name a type».
The cause is obviously the same (and a rollback restored functionality) but the message is somewhat different, so pasting it here to help people seraching for it.

@bblanchon

Thanks, @vdeconinck.
I added this message to the FAQ, so it should be easier to find.

@bblanchon
bblanchon

changed the title
error: ‘JsonBuffer’ was not declared in this scope

JsonBuffer was not declared in this scope /

Jul 11, 2018

@bblanchon
bblanchon

changed the title
JsonBuffer was not declared in this scope /

JsonBuffer was not declared in this scope / JsonBuffer does not name a type

Jul 11, 2018

@bblanchon
bblanchon

changed the title
JsonBuffer was not declared in this scope / JsonBuffer does not name a type

JsonBuffer was not declared in this scope / does not name a type

Jul 11, 2018

@bblanchon
bblanchon

changed the title
JsonBuffer was not declared in this scope / does not name a type

🔥 JsonBuffer was not declared in this scope / does not name a type

Jul 11, 2018

@christophs70

Today, got the same error after upgrading the library from the library manager in the Arduino IDE to 6.2.0-beta.

Rolling back to the previous version 5.13.2 solved it.

@tobozo

@christophs70 you can implement both syntaxes in your code

#if ARDUINOJSON_VERSION_MAJOR==6
  // use new syntax
#else
  // use old syntax
#endif

… and never worry about your IDE upgrading the library, see this example

@bblanchon I’m not good enough in C++ to know the drawbacks or even the feasability, but still I’m wondering if some kind of compatibility layer with the previous version is possible.

If StaticJsonBuffer existed and would resolve to StaticJsonDocument, the message error: 'StaticJsonBuffer' was not declared in this scope would go away.

If parseObject() would statically call deserializeJson() + as() (and ignore the DeserializationError error) that would fix the second compilation error while keeping the initial behaviour.

Or maybe that would just open a pandora box :-)

@bblanchon

@tobozo If that was possible I would have done it, but unfortunately, there are many fundamental differences between 6 and 5.

The example in the link is not working anymore, you need to remove the references and success() is now isNull(); so you need to wrap the whole function in the #if.
Don’t worry, I don’t plan on doing any other big breaking change.

tobozo

added a commit
to tobozo/M5Stack-SD-Updater
that referenced
this issue

Jul 16, 2018

@tobozo

@rvdende

This caught me off-guard. The problem is the Arduino IDE now defaults to v6 beta, while the documentation defaults to v5. If its not possible to make the IDE default to v5 instead, it would be better to make the online documentation default to v6, or atleast make it more clear what is going on from the front page.

@bblanchon

@fluentart, I added the following warning on the documentation:

image

@tangoTH

I tried the entire range of 6.x ones until I found this thread. 5.13.2 on Arduino 1.8.5 on OSX compiled

@TonJimFit

@bblanchon , Sorry sir. I have a problem about «JsonBuffer was not declared in this scope» then i follow your solution (Downgrade ArduinoJson to 5.x (recommended as v6 is still in beta))

image

But version is still 6
Serial.print(«ARDUINOJSON_VERSION_MAJOR = «);
Serial.println(ARDUINOJSON_VERSION_MAJOR);
image

so could you please give me an advice.

sorry for my poor english skill.
Best regard

@bblanchon

@TonJimFit, there is another ArduinoJson.h on your computer.

@electron1979

5.13.3 compiles nicely on Arduino IDE 1.8.7.
The Library Manager installed 6.5.0-beta!
Thank you ;) ;)

@good-old-times

Just Use version 9.5.0 this helped for me.

@good-old-times

Its not corrent but it works!

@electron1979

5.13.4 is currently the latest stable.

@svanscho

For some reason Arduino updates to 6-beta even when you select the 5.x version in the lib manager. Reverting back to 5 fixed the issue for me!

@electron1979

It didn’t for me.
It will update to the latest if you press «Update».

@ghost

Guys the code is still not compiling for me even after I downgrade the version on arduinojson library. Can anyone help me out? I tried version 5.12.1, 5.12.2 and even 5.13

@ghost

This comment has been minimized.

@bblanchon

@LiamGomes27 Please open a new issue.

Repository owner

locked as off-topic and limited conversation to collaborators

Jan 15, 2019

@bblanchon

ArduinoJson 6 finally got out of beta; it’s time to close this issue.

Страница 1 из 2

  1. Недавно купила новый для себя модуль ESP8266
    Загрузила одну программу Blink из примеров Arduino IDE
    После этого ничего не компилирует
    Помогите, пожалуйста, решить эту проблему

  2. Что значит

    выкладывайте ошибки, код.
    Не забывайте про тэги, для удобного чтения.

  3. #include <ESP8266WiFi.h>
    #include <WiFiClientSecure.h>
    #include <UniversalTelegramBot.h>
    //объявляю библиотеки

    char ssid[] = «***»; //мой wifi
    char password[] = «***»; //пароль

    #define BOTtoken «***» //токен бота

    WiFiClientSecure client;
    UniversalTelegramBot bot(BOTtoken, client); //переменная для шифрованного соединения

    String keyboardJson = «[[/help]]»; //клавиатура бота
    void setup() {
      Serial.begin(9600);
      WiFi.begin(ssid, password);
      while(WiFi.status() != WL_CONNECTED){
        delay(500);
      }
    }

    void loop() {
      int numNewMessages = bot.getUpdates(
          bot.last_message_received + 1);
      handleNewMessages(numNewMessages);
    } //проверка на новые сообщения, если такие сообщения есть, обрабатываем их

    void handleNewMessages(int numNewMessages){
      for(int i = 0; i < numNewMessages; i++){
        String chat_id = String(bot.messages.chat_id); //проверяем каждое сообщение и запоминаем id
        String text = bot.messages.text; //записываем в переменную текст сообщения
        if(text == «/help») {
          bot.sendMessageWithReplyKeyboard(chat_id,
          «Choose from one of the following options»,
          «», keyboardJson, true);
    }
       if(text == «/help») {
          bot.sendMessageWithReplyKeyboard(chat_id,
          «Choose from one of the following options»,
          «», keyboardJson, true);
    }//если приходит сообщение с этим текстом, отвечаем …
    }
    }

    Последнее редактирование: 30 янв 2019

  4. :(
    (у меня теперь скриншоты с телефона не загружаются)

  5. Онжела!Вставь Его правильно!В нужное место!
    [​IMG]

    Последнее редактирование: 30 янв 2019

  6. Добавь строку #include <ArduinoJson.h>

  7. Добавила, с ней тоже ничего не работает(

  8. @Angelina Dementeva, скетч не компилируется или не работает? Telegram блокируется, попробуйте проверить его доступность

  9. К сожалению, именно не компилируется

    Можете объяснить что это значит?

  10. Если не компилируется — копируете вывод компилятора об ошибках и вставляете его в сообщение на форуме (длинный вывод компилятора прячете под спойлер ). ping — утилита для проверки соединения, запускается из командной строки Windows.


    Daniil и NikitOS нравится это.

  11. E:\User\Документы\Arduino\libraries\UniversalTelegramBot\src\UniversalTelegramBot.cpp: In member function ‘String UniversalTelegramBot::sendPostToTelegram(String, ArduinoJson::JsonObject&)’:

    E:\User\Документы\Arduino\libraries\UniversalTelegramBot\src\UniversalTelegramBot.cpp:85:26: error: ‘ArduinoJson::JsonObject’ has no member named ‘measureLength’

    int length = payload.measureLength();

    ^

    E:\User\Документы\Arduino\libraries\UniversalTelegramBot\src\UniversalTelegramBot.cpp:92:13: error: ‘ArduinoJson::JsonObject’ has no member named ‘printTo’

    payload.printTo(out);

    ^

    E:\User\Документы\Arduino\libraries\UniversalTelegramBot\src\UniversalTelegramBot.cpp: In member function ‘bool UniversalTelegramBot::getMe()’:

    E:\User\Документы\Arduino\libraries\UniversalTelegramBot\src\UniversalTelegramBot.cpp:269:3: error: ‘DynamicJsonBuffer’ was not declared in this scope

    DynamicJsonBuffer jsonBuffer;

    ^

    E:\User\Документы\Arduino\libraries\UniversalTelegramBot\src\UniversalTelegramBot.cpp:269:21: error: expected ‘;’ before ‘jsonBuffer’

    DynamicJsonBuffer jsonBuffer;

    ^

    E:\User\Документы\Arduino\libraries\UniversalTelegramBot\src\UniversalTelegramBot.cpp:270:22: error: ‘jsonBuffer’ was not declared in this scope

    JsonObject& root = jsonBuffer.parseObject(response);

    ^

    E:\User\Документы\Arduino\libraries\UniversalTelegramBot\src\UniversalTelegramBot.cpp:272:11: error: ‘ArduinoJson::JsonObject’ has no member named ‘success’

    if(root.success()) {

    ^

    E:\User\Документы\Arduino\libraries\UniversalTelegramBot\src\UniversalTelegramBot.cpp: In member function ‘int UniversalTelegramBot::getUpdates(long int)’:

    E:\User\Документы\Arduino\libraries\UniversalTelegramBot\src\UniversalTelegramBot.cpp:305:5: error: ‘DynamicJsonBuffer’ was not declared in this scope

    DynamicJsonBuffer jsonBuffer;

    ^

    E:\User\Документы\Arduino\libraries\UniversalTelegramBot\src\UniversalTelegramBot.cpp:305:23: error: expected ‘;’ before ‘jsonBuffer’

    DynamicJsonBuffer jsonBuffer;

    ^

    E:\User\Документы\Arduino\libraries\UniversalTelegramBot\src\UniversalTelegramBot.cpp:306:24: error: ‘jsonBuffer’ was not declared in this scope

    JsonObject& root = jsonBuffer.parseObject(response);

    ^

    E:\User\Документы\Arduino\libraries\UniversalTelegramBot\src\UniversalTelegramBot.cpp:308:14: error: ‘ArduinoJson::JsonObject’ has no member named ‘success’

    if (root.success()) {

    ^

    E:\User\Документы\Arduino\libraries\UniversalTelegramBot\src\UniversalTelegramBot.cpp:312:48: error: ‘class ArduinoJson670_0_0::ObjectSubscript<const char*>’ has no member named ‘size’

    int resultArrayLength = root[«result»].size();

    ^

    E:\User\Документы\Arduino\libraries\UniversalTelegramBot\src\UniversalTelegramBot.cpp:316:62: error: invalid initialization of non-const reference of type ‘ArduinoJson::JsonObject& {aka ArduinoJson670_0_0::ObjectRef&}’ from an rvalue of type ‘ArduinoJson670_0_0::enable_if<true, ArduinoJson670_0_0::ObjectSubscript<const char*> >::type {aka ArduinoJson670_0_0::ObjectSubscript<const char*>}’

    JsonObject& message = root[«result»][«message»];

    ^

    E:\User\Документы\Arduino\libraries\UniversalTelegramBot\src\UniversalTelegramBot.cpp: In member function ‘bool UniversalTelegramBot::sendMessage(String, String, String)’:

    E:\User\Документы\Arduino\libraries\UniversalTelegramBot\src\UniversalTelegramBot.cpp:379:3: error: ‘DynamicJsonBuffer’ was not declared in this scope

    DynamicJsonBuffer jsonBuffer;

    ^

    E:\User\Документы\Arduino\libraries\UniversalTelegramBot\src\UniversalTelegramBot.cpp:379:21: error: expected ‘;’ before ‘jsonBuffer’

    DynamicJsonBuffer jsonBuffer;

    ^

    E:\User\Документы\Arduino\libraries\UniversalTelegramBot\src\UniversalTelegramBot.cpp:380:25: error: ‘jsonBuffer’ was not declared in this scope

    JsonObject& payload = jsonBuffer.createObject();

    ^

    E:\User\Документы\Arduino\libraries\UniversalTelegramBot\src\UniversalTelegramBot.cpp: In member function ‘bool UniversalTelegramBot::sendMessageWithReplyKeyboard(String, String, String, String, bool, bool, bool)’:

    E:\User\Документы\Arduino\libraries\UniversalTelegramBot\src\UniversalTelegramBot.cpp:394:3: error: ‘DynamicJsonBuffer’ was not declared in this scope

    DynamicJsonBuffer jsonBuffer;

    ^

    E:\User\Документы\Arduino\libraries\UniversalTelegramBot\src\UniversalTelegramBot.cpp:394:21: error: expected ‘;’ before ‘jsonBuffer’

    DynamicJsonBuffer jsonBuffer;

    ^

    E:\User\Документы\Arduino\libraries\UniversalTelegramBot\src\UniversalTelegramBot.cpp:395:25: error: ‘jsonBuffer’ was not declared in this scope

    JsonObject& payload = jsonBuffer.createObject();

    ^

    E:\User\Документы\Arduino\libraries\UniversalTelegramBot\src\UniversalTelegramBot.cpp:404:70: error: invalid initialization of non-const reference of type ‘ArduinoJson::JsonObject& {aka ArduinoJson670_0_0::ObjectRef&}’ from an rvalue of type ‘ArduinoJson670_0_0::ObjectRef’

    JsonObject& replyMarkup = payload.createNestedObject(«reply_markup»);

    ^

    E:\User\Документы\Arduino\libraries\UniversalTelegramBot\src\UniversalTelegramBot.cpp:411:21: error: expected ‘;’ before ‘keyboardBuffer’

    DynamicJsonBuffer keyboardBuffer;

    ^

    E:\User\Документы\Arduino\libraries\UniversalTelegramBot\src\UniversalTelegramBot.cpp:412:29: error: ‘keyboardBuffer’ was not declared in this scope

    replyMarkup[«keyboard»] = keyboardBuffer.parseArray(keyboard);

    ^

    E:\User\Документы\Arduino\libraries\UniversalTelegramBot\src\UniversalTelegramBot.cpp: In member function ‘bool UniversalTelegramBot::sendMessageWithInlineKeyboard(String, String, String, String)’:

    E:\User\Документы\Arduino\libraries\UniversalTelegramBot\src\UniversalTelegramBot.cpp:432:3: error: ‘DynamicJsonBuffer’ was not declared in this scope

    DynamicJsonBuffer jsonBuffer;

    ^

    E:\User\Документы\Arduino\libraries\UniversalTelegramBot\src\UniversalTelegramBot.cpp:432:21: error: expected ‘;’ before ‘jsonBuffer’

    DynamicJsonBuffer jsonBuffer;

    ^

    E:\User\Документы\Arduino\libraries\UniversalTelegramBot\src\UniversalTelegramBot.cpp:433:25: error: ‘jsonBuffer’ was not declared in this scope

    JsonObject& payload = jsonBuffer.createObject();

    ^

    E:\User\Документы\Arduino\libraries\UniversalTelegramBot\src\UniversalTelegramBot.cpp:442:70: error: invalid initialization of non-const reference of type ‘ArduinoJson::JsonObject& {aka ArduinoJson670_0_0::ObjectRef&}’ from an rvalue of type ‘ArduinoJson670_0_0::ObjectRef’

    JsonObject& replyMarkup = payload.createNestedObject(«reply_markup»);

    ^

    E:\User\Документы\Arduino\libraries\UniversalTelegramBot\src\UniversalTelegramBot.cpp:444:21: error: expected ‘;’ before ‘keyboardBuffer’

    DynamicJsonBuffer keyboardBuffer;

    ^

    E:\User\Документы\Arduino\libraries\UniversalTelegramBot\src\UniversalTelegramBot.cpp:445:36: error: ‘keyboardBuffer’ was not declared in this scope

    replyMarkup[«inline_keyboard»] = keyboardBuffer.parseArray(keyboard);

    ^

    E:\User\Документы\Arduino\libraries\UniversalTelegramBot\src\UniversalTelegramBot.cpp: In member function ‘String UniversalTelegramBot::sendPhoto(String, String, String, bool, int, String)’:

    E:\User\Документы\Arduino\libraries\UniversalTelegramBot\src\UniversalTelegramBot.cpp:514:3: error: ‘DynamicJsonBuffer’ was not declared in this scope

    DynamicJsonBuffer jsonBuffer;

    ^

    E:\User\Документы\Arduino\libraries\UniversalTelegramBot\src\UniversalTelegramBot.cpp:514:21: error: expected ‘;’ before ‘jsonBuffer’

    DynamicJsonBuffer jsonBuffer;

    ^

    E:\User\Документы\Arduino\libraries\UniversalTelegramBot\src\UniversalTelegramBot.cpp:515:25: error: ‘jsonBuffer’ was not declared in this scope

    JsonObject& payload = jsonBuffer.createObject();

    ^

    E:\User\Документы\Arduino\libraries\UniversalTelegramBot\src\UniversalTelegramBot.cpp:533:72: error: invalid initialization of non-const reference of type ‘ArduinoJson::JsonObject& {aka ArduinoJson670_0_0::ObjectRef&}’ from an rvalue of type ‘ArduinoJson670_0_0::ObjectRef’

    JsonObject& replyMarkup = payload.createNestedObject(«reply_markup»);

    ^

    E:\User\Документы\Arduino\libraries\UniversalTelegramBot\src\UniversalTelegramBot.cpp:535:23: error: expected ‘;’ before ‘keyboardBuffer’

    DynamicJsonBuffer keyboardBuffer;

    ^

    E:\User\Документы\Arduino\libraries\UniversalTelegramBot\src\UniversalTelegramBot.cpp:536:31: error: ‘keyboardBuffer’ was not declared in this scope

    replyMarkup[«keyboard»] = keyboardBuffer.parseArray(keyboard);

    ^

    exit status 1
    Ошибка компиляции для платы Generic ESP8266 Module.

  12. 1. Вам нужна библиотека ArduinoJson версии 5.13.4 — в менеджере библиотек в выпадающем списке можно выбрать нужную версию
    2. Поправьте —

    bot.messages[i].text
    bot.messages[i].chat_id

    — к сообщениям обращаемся по индексу

  13. Теперь выдаёт новые ошибки

    warning: espcomm_sync failed
    error: espcomm_open failed
    error: espcomm_upload_mem failed
    error: espcomm_upload_mem failed
  14. В итоге, я разобралась с ошибками, но команда не появилась в телеграмм боте. Совсем уже не знаю в чем проблема( Могла ли я сломать как-то этот модуль?

  15. @Angelina Dementeva, api.telegram.org пингуется? Добавьте вывод в UART отладочных сообщений библиотеки UniversalTelegramBot

    void setup() {
      Serial.begin(9600);
      bot._debug=true; // выводим отладочную информацию
  16. Откройте командную строку и выполните команду:

    C:\Users\s.user>ping api.telegram.org

    Обмен пакетами с api.telegram.org [149.154.167.220] с 32 байтами данных:
    Ответ от 149.154.167.220: число байт=32 время=103мс TTL=53
    Ответ от 149.154.167.220: число байт=32 время=103мс TTL=53
    Ответ от 149.154.167.220: число байт=32 время=103мс TTL=53
    Ответ от 149.154.167.220: число байт=32 время=104мс TTL=53

    Статистика Ping для 149.154.167.220:
        Пакетов: отправлено = 4, получено = 4, потеряно = 0
        (0% потерь)
    Приблизительное время приема-передачи в мс:
        Минимальное = 103мсек, Максимальное = 104 мсек, Среднее = 103 мсек

    У Вас так?

Страница 1 из 2

Понравилась статья? Поделить с друзьями:

Интересное по теме:

  • E001 ошибка форд фокус 1
  • E001 ошибка двигателя
  • E001 ошибка kyocera
  • E001 ошибка kugoo max speed
  • E0001 ошибка диапазона значений

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии