Сегодня мини-подборка под разный интерес:
1) Обзор PVS-Studio 7.42. Там говорится, что для студентов временно нет вариантов использования. Переработали разделы сайта, всё опять есть – Бесплатное использование PVS-Studio студентами и преподавателями.
2) Подводные камни регулярных выражений: катастрофический возврат, ReDoS-атаки и выявление уязвимостей. Немного РБПО теории. А вообще, напоминаю, что у нас есть про РБПО вот такая большая подборка – GOST56939.RU.
3) Запускаем цикл вебинаров, посвященных современному Gradle для Java-разработчика. Первый вебинар – Современный Gradle для Java-разработчика: один модуль — хорошо, несколько — лучше.
4) Продолжаем цикл подкастов "Разбаговка" – Контроль команды: как и зачем?
1) Обзор PVS-Studio 7.42. Там говорится, что для студентов временно нет вариантов использования. Переработали разделы сайта, всё опять есть – Бесплатное использование PVS-Studio студентами и преподавателями.
2) Подводные камни регулярных выражений: катастрофический возврат, ReDoS-атаки и выявление уязвимостей. Немного РБПО теории. А вообще, напоминаю, что у нас есть про РБПО вот такая большая подборка – GOST56939.RU.
3) Запускаем цикл вебинаров, посвященных современному Gradle для Java-разработчика. Первый вебинар – Современный Gradle для Java-разработчика: один модуль — хорошо, несколько — лучше.
4) Продолжаем цикл подкастов "Разбаговка" – Контроль команды: как и зачем?
Forwarded from PVS-Studio: поиск ошибок в коде
Единорог Коди и его товарищ Баг — узнаваемые маскоты PVS-Studio. Этих персонажей вы видели во многих сценариях: при археологических раскопках, в космосе, при ограблении банка, в саду и в сточной канаве. Но как вообще появился этот единорог, и как же он выглядел на заре времён?
Давайте посмотрим хронологию взросления Коди в новой статье, а также изучим самые занятные иллюстрации с его участием! Переходите по ссылке❤️
#статья #PVS_Studio
Давайте посмотрим хронологию взросления Коди в новой статье, а также изучим самые занятные иллюстрации с его участием! Переходите по ссылке
#статья #PVS_Studio
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5
Понравилась очередная статья Сергея Кушниренко и решил ссылкой здесь поделиться – Про 10x программистов.
P.S. А для тех, кто ещё не видел, приглашаю вот на такой раздел у нас на сайте – С++ квиз от PVS-Studio и Сергея Кушниренко.
P.S. А для тех, кто ещё не видел, приглашаю вот на такой раздел у нас на сайте – С++ квиз от PVS-Studio и Сергея Кушниренко.
Продолжаем развивать Go анализатор. Про новую диагностику в PVS-Studio для выявления классического паттерна опечаток. Как можно ошибиться при обработке ошибок в Go.
Forwarded from PVS-Studio: поиск ошибок в коде
Мы открыли ранний доступ для анализатора TypeScript 🔥
Если вы оставляли заявку, проверьте почту — вам должны были прийти инструкции по тестированию. Если вдруг инструкции не обнаружите, напишите нам в поддержку.
А для тех, кто впервые узнал о разработке нами TS анализатора, вот ссылочка на регистрацию и участие в EAP❤️
#eap #TS
Если вы оставляли заявку, проверьте почту — вам должны были прийти инструкции по тестированию. Если вдруг инструкции не обнаружите, напишите нам в поддержку.
А для тех, кто впервые узнал о разработке нами TS анализатора, вот ссылочка на регистрацию и участие в EAP
#eap #TS
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
PVS-Studio в CMake: теперь официально
Если у вас кроссплатформенный проект на C или C++, то, как правило, вы не завязываетесь на одну систему сборки, а используете генератор сценариев для сборочных систем. Самый распространённый из них, CMake, недавно получил официальную интеграцию со статическим анализатором PVS-Studio для этих языков.
❤🔥8❤2👍2
В социальных сетях вирусится высказывание Бьёрна Страуструпа про то, что ИИ в С++ не особо так успешен. Пожалуй, да… Пожалуй, да.
💯5
У меня сегодня День Рождения. Приобретайте лицензии на PVS-Studio. Мне будет приятно! 🎂❤️
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18🏆7❤5😐2
Дайте посмотреть на нормальный С++ проект, созданный вайб-кодингом
Чтобы корректировать развитие PVS-Studio я заинтересован смотреть C++ проекты, созданные с использованием генеративного AI или, по-простому, вайб-кодинга. Но вот незадача: все кругом пишут про этот самый вайб-кодинг, но я не знаю, как и где искать такие открытые проекты.
Мне попадается какая-то белиберда типа enhance-client, сгенерированная за $15. Но это даже смотреть несерьёзно. По присутствию в репозитории
Если немного поправить и проверить, что удалось собрать, то там лезут перлы вида:
Предупреждение PVS-Studio: V522 [CWE-476, CERT-EXP34-C, SEC-NULL] Dereferencing of the null pointer 'env' might take place. autototem.cpp 757
Явное разыменование нулевого указателя.
Или бессмысленные сравнения значения типа
Предупреждение PVS-Studio: V674 [CWE-682, CERT-FLP36-C] The '0.1f' literal of the 'float' type is compared to a value of the 'int' type. shield_breaker.cpp 628
Такие ляпы нет смысла серьёзно разбирать и описывать.
Можно спросить: "А что ты хочешь от поделок за 15$?" Да, в общем-то, ничего, но вместо нормальных проектов попадаются они. Мне интересно изучить большие открытые проекты нормального качества, при написании которых используется GenAI. А то пока ощущение, что термин "вайб-кодинг" есть, а C++ проектов нет. Или за них стыдно? :)
Если вы знаете подобные большие проекты, то присылайте ссылки на них в комментарии. Заранее спасибо.
Чтобы корректировать развитие PVS-Studio я заинтересован смотреть C++ проекты, созданные с использованием генеративного AI или, по-простому, вайб-кодинга. Но вот незадача: все кругом пишут про этот самый вайб-кодинг, но я не знаю, как и где искать такие открытые проекты.
Мне попадается какая-то белиберда типа enhance-client, сгенерированная за $15. Но это даже смотреть несерьёзно. По присутствию в репозитории
.obj, .iobj, .ipdb файлов и прочего мусора видно, что автор не понимает, что он делает. Проект не компилируется по разным причинам, например, из-за того, что заложен какой-то огрызок файла bytes.hpp (у массива нет конца).Если немного поправить и проверить, что удалось собрать, то там лезут перлы вида:
void enhance::modules::autototem::run()
{
....
auto env = enhance::instance->get_env();
if (!env)
{
env->DeleteLocalRef(player);
return;
}
....
}
Предупреждение PVS-Studio: V522 [CWE-476, CERT-EXP34-C, SEC-NULL] Dereferencing of the null pointer 'env' might take place. autototem.cpp 757
Явное разыменование нулевого указателя.
Или бессмысленные сравнения значения типа
int с константой 0.1f:int sdk::minecraft_client::get_attack_cooldown() { .... }
void enhance::modules::shield_breaker::run()
{
....
if (sdk::instance->get_attack_cooldown() > 0.1f)
....
}Предупреждение PVS-Studio: V674 [CWE-682, CERT-FLP36-C] The '0.1f' literal of the 'float' type is compared to a value of the 'int' type. shield_breaker.cpp 628
Такие ляпы нет смысла серьёзно разбирать и описывать.
Можно спросить: "А что ты хочешь от поделок за 15$?" Да, в общем-то, ничего, но вместо нормальных проектов попадаются они. Мне интересно изучить большие открытые проекты нормального качества, при написании которых используется GenAI. А то пока ощущение, что термин "вайб-кодинг" есть, а C++ проектов нет. Или за них стыдно? :)
Если вы знаете подобные большие проекты, то присылайте ссылки на них в комментарии. Заранее спасибо.
👍8😁1
Появилась публичная запись доклада моих коллег с C++Russia 2025. Юрий Минаев, Олег Лысый – Семантика C++ изнутри компилятора.
Смотреть: VKvideo, Youtube, Cppconf.
Смотреть: VKvideo, Youtube, Cppconf.
Поговорим о семантике C++ с точки зрения статического анализатора или фронтенда компилятора. Рассмотрим, как устроена таблица символов и как происходит поиск имен, а также как семантика влияет на парсинг. Поговорим о том, как происходит выбор перегрузок и каким образом компилятор находит функции, которые даже не видны в текущей точке программы. Еще затронем тему шаблонов и их инстанцирования.
👍7
Forwarded from PVS-Studio: поиск ошибок в коде
Про новые интеграции ⚡️
Начиная с релиза 7.42 у нас появилось еще больше новых интеграций:
1️⃣ Qt Creator 19
Появилась поддержка плагина PVS-Studio для Qt Creator версий 19.x. Плагин позволяет запускать анализ, просматривать предупреждения и работать с кодом, не покидая привычную среду разработки. Подробнее о работе с плагином можно прочитать в документации.
2️⃣ Интеграция в SourceCraft
SourceCraft — платформа, с помощью которой можно разрабатывать исходный код, управлять версиями, тестировать, собирать, развёртывать и сопровождать программные продукты. Мы проверили техническую совместимость PVS-Studio с этой платформой и описали процесс её использования в нашей документации.
3️⃣ Официальная интеграция в CMake
Начиная с версии 4.3.0 сборочная система CMake имеет встроенный механизм для работы с PVS-Studio, при котором срабатывания анализатора будут появляться в процессе компиляции проекта. Подробнее об этом можно прочитать в документации.
А тут вы найдете полную заметку со всеми последними обновлениями 👈🏻
#PVS_Studio
Начиная с релиза 7.42 у нас появилось еще больше новых интеграций:
1️⃣ Qt Creator 19
Появилась поддержка плагина PVS-Studio для Qt Creator версий 19.x. Плагин позволяет запускать анализ, просматривать предупреждения и работать с кодом, не покидая привычную среду разработки. Подробнее о работе с плагином можно прочитать в документации.
2️⃣ Интеграция в SourceCraft
SourceCraft — платформа, с помощью которой можно разрабатывать исходный код, управлять версиями, тестировать, собирать, развёртывать и сопровождать программные продукты. Мы проверили техническую совместимость PVS-Studio с этой платформой и описали процесс её использования в нашей документации.
3️⃣ Официальная интеграция в CMake
Начиная с версии 4.3.0 сборочная система CMake имеет встроенный механизм для работы с PVS-Studio, при котором срабатывания анализатора будут появляться в процессе компиляции проекта. Подробнее об этом можно прочитать в документации.
А тут вы найдете полную заметку со всеми последними обновлениями 👈🏻
#PVS_Studio
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤2👌2
НЕкурс про разработку безопасного программного обеспечения (РБПО)
Мы подготовили раздел материалов, посвящённых разработке безопасного ПО (РБПО) по ГОСТ Р 56939—2024. Теперь эти материалы представлены в виде бесплатного онлайн-курса из 28 уроков. Такая структура поможет, во-первых, распределить нагрузку при знакомстве с теорией, а во-вторых, проверить свои знания.
Материалы о РБПО по ГОСТ Р 56939—2024
Компания ООО "ПВС" совместно с учебным центром "Маском" провела цикл вебинаров, посвящённых разработке безопасного программного обеспечения (РБПО). Совместно с приглашёнными экспертами из различных компаний мы рассмотрели 25 процессов, приведённых в ГОСТ Р 56939—2024.
Общее количество вебинаров — 30: каждому из 25 процессов ГОСТа посвящено по одному вебинару и 5 записано дополнительно на смежные темы. Записи всех вебинаров и подборка дополнительной информации доступна бесплатно по ссылке: ГОСТ56939.РФ.
Материалы ориентированы на специалистов, которые начинают знакомиться с темой РБПО. Для них они станут отправной точкой погружения в процессы безопасной разработки и внедрением их в компании. Те, кто уже знаком с темой, также найдут для себя новое и полезное.
Теперь с этими материалами и вебинарами можно знакомиться ещё и в формате уроков.
Чем не является курс
Чтобы избежать неправильных ожиданий, просим обратить внимание, что это не курс в области информационной безопасности в классическом понимании.
Во-первых, предлагаемый материал рассчитан на самостоятельное знакомство и не включает практическую часть или взаимодействие с преподавателем.
Во-вторых, существует перечень организаций, осуществляющих образовательную деятельность, имеющих дополнительные профессиональные программы в области информационной безопасности, согласованные с ФСТЭК. Мы не ведём образовательную деятельность, не входим в этот список и не выдаём удостоверяющие документы.
Если вам необходимо направить сотрудников на курсы повышения квалификации и получить подтверждающие документы, то вы можете обратиться в одну из организаций, приведённых в списке. Например, вы можете обратиться в УЦ "Маском", вместе с которым мы проводили вебинары. ФСТЭК России согласовала их программу повышения квалификации М-БРПО "Специалист по процессам разработки безопасного программного обеспечения" (200 часов).
Чем является курс
Суммарное время предлагаемых к изучению вебинаров составляет около 50 часов. Их можно смотреть на ускорении. Однако даже в этом случае с учётом дополнительных материалов и отсылок на внешние ресурсы изучение займёт около двух рабочих недель.
Это достаточно большая задача, поэтому мы решили помочь и разбили материалы на отдельные уроки. Так будет проще усваивать материал, а интерфейс позволяет отмечать, с чем вы уже познакомились.
После завершения курса вы можете пройти тестирование для самопроверки. В качестве приятного бонуса при хорошем прохождении теста вы получите ачивку – сертификат о знакомстве с курсом. Сертификат автоматически генерируется по окончании обучения и тестирования.
Тестирование также может использовать руководитель, чтобы убедиться, что сотрудники действительно изучили материалы и познакомились с основами РБПО.
Начать знакомство c курсом можно после регистрации/авторизации: Разработка безопасного программного обеспечения (РБПО) по ГОСТ Р 56939—2024
Мы подготовили раздел материалов, посвящённых разработке безопасного ПО (РБПО) по ГОСТ Р 56939—2024. Теперь эти материалы представлены в виде бесплатного онлайн-курса из 28 уроков. Такая структура поможет, во-первых, распределить нагрузку при знакомстве с теорией, а во-вторых, проверить свои знания.
Материалы о РБПО по ГОСТ Р 56939—2024
Компания ООО "ПВС" совместно с учебным центром "Маском" провела цикл вебинаров, посвящённых разработке безопасного программного обеспечения (РБПО). Совместно с приглашёнными экспертами из различных компаний мы рассмотрели 25 процессов, приведённых в ГОСТ Р 56939—2024.
Общее количество вебинаров — 30: каждому из 25 процессов ГОСТа посвящено по одному вебинару и 5 записано дополнительно на смежные темы. Записи всех вебинаров и подборка дополнительной информации доступна бесплатно по ссылке: ГОСТ56939.РФ.
Материалы ориентированы на специалистов, которые начинают знакомиться с темой РБПО. Для них они станут отправной точкой погружения в процессы безопасной разработки и внедрением их в компании. Те, кто уже знаком с темой, также найдут для себя новое и полезное.
Теперь с этими материалами и вебинарами можно знакомиться ещё и в формате уроков.
Чем не является курс
Чтобы избежать неправильных ожиданий, просим обратить внимание, что это не курс в области информационной безопасности в классическом понимании.
Во-первых, предлагаемый материал рассчитан на самостоятельное знакомство и не включает практическую часть или взаимодействие с преподавателем.
Во-вторых, существует перечень организаций, осуществляющих образовательную деятельность, имеющих дополнительные профессиональные программы в области информационной безопасности, согласованные с ФСТЭК. Мы не ведём образовательную деятельность, не входим в этот список и не выдаём удостоверяющие документы.
Если вам необходимо направить сотрудников на курсы повышения квалификации и получить подтверждающие документы, то вы можете обратиться в одну из организаций, приведённых в списке. Например, вы можете обратиться в УЦ "Маском", вместе с которым мы проводили вебинары. ФСТЭК России согласовала их программу повышения квалификации М-БРПО "Специалист по процессам разработки безопасного программного обеспечения" (200 часов).
Чем является курс
Суммарное время предлагаемых к изучению вебинаров составляет около 50 часов. Их можно смотреть на ускорении. Однако даже в этом случае с учётом дополнительных материалов и отсылок на внешние ресурсы изучение займёт около двух рабочих недель.
Это достаточно большая задача, поэтому мы решили помочь и разбили материалы на отдельные уроки. Так будет проще усваивать материал, а интерфейс позволяет отмечать, с чем вы уже познакомились.
После завершения курса вы можете пройти тестирование для самопроверки. В качестве приятного бонуса при хорошем прохождении теста вы получите ачивку – сертификат о знакомстве с курсом. Сертификат автоматически генерируется по окончании обучения и тестирования.
Тестирование также может использовать руководитель, чтобы убедиться, что сотрудники действительно изучили материалы и познакомились с основами РБПО.
Начать знакомство c курсом можно после регистрации/авторизации: Разработка безопасного программного обеспечения (РБПО) по ГОСТ Р 56939—2024
👍4
Просто интересное событие: SEI CERT опубликовал первый стандарт безопасного программирования на Fortran
Forwarded from SourceCraft
Мы уже рассказывали, как подключить собственный анализатор кода в SourceCraft, чтобы использовать его в процессах безопасной разработки. Настало время делиться кейсом из практики.
Недавно команда PVS-Studio интегрировала с нашей платформой свой инструмент статического анализа и добавила в документацию инструкцию для его подключения. Теперь все находки этого инструмента можно обрабатывать в интерфейсе SourceCraft Security и ускорять разбор уязвимостей с помощью встроенной функции ИИ-триажа.
Механизм интеграции открыт для всех анализаторов кода, совместимых с SARIF, и расширяет возможности стандартных проверок SourceCraft.
А какие внешние инструменты ждёте вы в SourceCraft?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤1🔥1
Время от времени начал сталкиваться с тем, что разные люди присылают выхлоп нейросети как ответ или как описание чего-то. Я не про коллег. Сотрудников, как учат в Стратоплане, можно "учить-лечить-мочить". Есть внешний мир людей, с которым сложно что-то делать.
Поскольку бессмысленных и беспощадных текстов будет становиться всё больше, появилась задумка сделать специальную мини-статью или даже раздел на сайте и отправлять туда всех, кто стал прокладкой между мной и ИИ :) Уверен, другим такой ресурс тоже пригодится.
Неудивительно, что такая же идея пришла в голову не только мне. Так что всё уже сделано. Держите ссылку: Не вставляй мне нейросеть, пожалуйста.
Поскольку бессмысленных и беспощадных текстов будет становиться всё больше, появилась задумка сделать специальную мини-статью или даже раздел на сайте и отправлять туда всех, кто стал прокладкой между мной и ИИ :) Уверен, другим такой ресурс тоже пригодится.
Неудивительно, что такая же идея пришла в голову не только мне. Так что всё уже сделано. Держите ссылку: Не вставляй мне нейросеть, пожалуйста.
Dontquotetheai
Не цитируй мне нейросеть, пожалуйста
Если кто-то задаёт тебе вопрос — отправь свой ответ, а не ответ чат-бота.
😁6👍3
Раз речь зашла об использовании ИИ для подготовки материалов, хочу законспектировать ещё одну мысль: ИИ можно использовать для поиска данных, анализа материала, исследований и т. д.
Но надо чётко понимать, что исследования являются, во-первых, "археологическими" (что было в интернете, книгах, ...), а во-вторых, ограничено доступным для ИИ материалом. Если нет материала, не будет и никакого исследования, а только словоблудие. Боюсь, что не все и не всегда это понимают, создавая "обзоры продуктов", "сравнение с конкурентами", "исследования рынка" и так далее.
Попробую объяснить на примере. Если начать делать с помощью ИИ сравнение PVS-Studio и Cppcheck, то не будет никакого исследования на самом-то деле! Вернее, будет, на основе того, что написано в интернете, и не более того. Неизвестно, насколько это старая/полная информация и насколько полученный вывод будет соответствовать действительности. Ведь ИИ не пойдёт сам скачивать анализаторы, смотреть их интерфейс и запускать на разных проектах.
Можно сказать, что это всё и так понятно, но наблюдая безудержный рост ИИ-статей, в том числе "исследовательских", стоит лишний раз проговорить банальную вещь. Ответы ИИ – это переваренный материал из интернета. Кто больше/громче про себя написал, тот в исследовании и будет лучше. Вот и вся достоверность.
Между исследованием и "ИИ, сравни эти штуки" может лежать пропасть. Например, если говорить об испытаниях анализаторов, несколько компаний занимались этим год и то не сделали всё, что хотели (Кратко об итогах испытаний статических анализаторов исходного кода в 2025 году). Это можно назвать исследованием, а не вот это вот всё...
P.S. Ради интереса задал пару вопросов DeepSeek про детекторы утечек памяти: 1, 2. Как пафосно он нахваливает PVS-Studio! :) Я бы постеснялся быть таким безапелляционным. А ему-то что — про PVS-Studio подробно написано, вот и результат. Единственный вывод: мы молодцы и хорошо описываем наши возможности :)
Но надо чётко понимать, что исследования являются, во-первых, "археологическими" (что было в интернете, книгах, ...), а во-вторых, ограничено доступным для ИИ материалом. Если нет материала, не будет и никакого исследования, а только словоблудие. Боюсь, что не все и не всегда это понимают, создавая "обзоры продуктов", "сравнение с конкурентами", "исследования рынка" и так далее.
Попробую объяснить на примере. Если начать делать с помощью ИИ сравнение PVS-Studio и Cppcheck, то не будет никакого исследования на самом-то деле! Вернее, будет, на основе того, что написано в интернете, и не более того. Неизвестно, насколько это старая/полная информация и насколько полученный вывод будет соответствовать действительности. Ведь ИИ не пойдёт сам скачивать анализаторы, смотреть их интерфейс и запускать на разных проектах.
Можно сказать, что это всё и так понятно, но наблюдая безудержный рост ИИ-статей, в том числе "исследовательских", стоит лишний раз проговорить банальную вещь. Ответы ИИ – это переваренный материал из интернета. Кто больше/громче про себя написал, тот в исследовании и будет лучше. Вот и вся достоверность.
Между исследованием и "ИИ, сравни эти штуки" может лежать пропасть. Например, если говорить об испытаниях анализаторов, несколько компаний занимались этим год и то не сделали всё, что хотели (Кратко об итогах испытаний статических анализаторов исходного кода в 2025 году). Это можно назвать исследованием, а не вот это вот всё...
P.S. Ради интереса задал пару вопросов DeepSeek про детекторы утечек памяти: 1, 2. Как пафосно он нахваливает PVS-Studio! :) Я бы постеснялся быть таким безапелляционным. А ему-то что — про PVS-Studio подробно написано, вот и результат. Единственный вывод: мы молодцы и хорошо описываем наши возможности :)
🔥9🤔1
Forwarded from PVS-Studio: поиск ошибок в коде
Продолжаем делиться докладами с прошедших конференций! На этот раз у нас тут доклад с Joker 2025 🔥
Тема: "Как компилятор видит код. Поиск уязвимостей на графах"
Посмотрели, как код превращается из исходного представления в графовое, чтобы ответить на вопрос: «Как компилятор видит код?». Прошлись по технологиям фронтенда — от AST и графов на его основе до карты вызовов — и посмотрели на их визуализацию.
В качестве кейса взяли поиск уязвимостей небезопасной обработки внешних данных с помощью taint-анализа. Заодно узнали, почему обход графов — это не только про задачи на литкоде.
Доклад будет полезен как тем, кто хочет создать свой инструмент для работы с кодом, так и тем, кто хочет узнать, из чего состоит фронтенд компилятора, как он видит код и как использует это представление.
Посмотреть можно тут:
- наш сайт
- VK Video
- Rutube
- YouTube
#доклад
Тема: "Как компилятор видит код. Поиск уязвимостей на графах"
Посмотрели, как код превращается из исходного представления в графовое, чтобы ответить на вопрос: «Как компилятор видит код?». Прошлись по технологиям фронтенда — от AST и графов на его основе до карты вызовов — и посмотрели на их визуализацию.
В качестве кейса взяли поиск уязвимостей небезопасной обработки внешних данных с помощью taint-анализа. Заодно узнали, почему обход графов — это не только про задачи на литкоде.
Доклад будет полезен как тем, кто хочет создать свой инструмент для работы с кодом, так и тем, кто хочет узнать, из чего состоит фронтенд компилятора, как он видит код и как использует это представление.
Посмотреть можно тут:
- наш сайт
- VK Video
- Rutube
- YouTube
#доклад
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥2