07 июля | 2024г. | 00:53:06


АвторТема: OpenАTV Общие вопросы (Все ресиверы, обсуждение и решение проблем)  (Прочитано 195507 раз)

0 Пользователей и 4 Гостей смотрят эту тему.

Оффлайн сергей 999sАвтор темы

  • Мастер Джедай
  • ***
  • Сообщений: 17088
  • Поблагодарили: 92128
  • Уважение: +1335
Для информации от Captain

Обновление openATV 7.3

Гугл перевод

Спойлер   :
Обновление openATV 7.3

* Графика (#3048)

[eWindowStyle]
* добавление getColor

[eRectangle]
* удаление свойств границы, поскольку они теперь находятся в родительском классе

[ePixmap]
* добавление новой отдельной библиотеки рисования
* удаление drawGradient
* добавление нового drawRectangle
* добавление углового радиуса для растровые изображения
* добавить новый прозрачный флаг

[eWidget]
* включить угловой радиус и градиентную краску
* добавить свойства границы
* добавить setBorderWidth, setBorderColor для совместимости
* добавить setWidgetBorderWidth, setWidgetBorderColor
* добавить setCornerRadius
* автокоррекцию неправильных значений радиуса

[MultiContentEntryRectangle]
* добавить угловые атрибуты

[eWindow]
* добавить setCornerRadius

[eWidgetDesktop]
* улучшить клип для углов
* улучшить фон, если установлен градиент

[gPainter]
* удалить drawGradient
* добавить новый drawRectangle, включая setGradient, setRadius и setBorder
* улучшить Alphablend

[eListboxcontent]
* заменить drawGradient на drawRectangle
* добавить радиус функция для типа RECT
* добавить флаг RT_BLEND для каждого текста, если установлен градиент

[eListbox]
* улучшить угловой радиус и градиент для элементов
* добавить угловой радиус по умолчанию
* добавить градиент и радиус полосы прокрутки

[epng/picload]
* обнаружить прозрачность из png, установить прозрачность значение false для jpg и bmp
* исправить возможную утечку памяти

[grc]
* учитывать новый флаг прозрачности и отключить смешивание, если он не прозрачен

[TemplateMultiContent]
* добавить константы радиуса краев

[eListboxPythonStringContent, eListboxPythonConfigContent]
* добавить угловой радиус
* исправить градиент

[eListboxPythonMultiContent]
* добавить радиус и градиент для прогресса
* добавить радиус для прогресса растровых изображений
* добавить угловой радиус для TEXT_TYPE

[blit]
* улучшить Alphablend

[шрифт]
* исправить Alphablend, особенно для градиентных фонов

[мультиконтент]
* добавить радиус в градиент

[eLabel]
* добавить флаг RT_BLEND, если градиент установить

[eSlider]
* добавить радиус и градиент

[скин]
* добавить атрибуты angularRadius, itemCornerRadius, widgetBorderColor, widgetBorderWidth
* добавить новые атрибуты полосы прокрутки

Графические обновления

[eLabel]
* добавить setAlphatest, чтобы разрешить альфа-смесь для eLabel
* исправить предупреждения сонара

[eListbox]
* добавить setDefaultScrollbarRadius
* исправление градиента полосы прокрутки
* улучшение перерисовки полосы прокрутки

[Scollable]
* добавление атрибута ScrollbarGradient
* добавление поддержки радиуса

[скин]
* добавление стилей окон по умолчанию для Scollabel и радиуса списка

[eSlider]
* исправление некоторых предупреждений сонара
* форматирование кода
* исправление предупреждений сонара

[eWidget]
* используйте bool для m_have_background_color

[elistboxmulticontent]
* исправьте радиус для TYPE_PROGRESS
* подготовьте содержимое списка сервисов

[TaskView]
* исправьте зеленое действие
* скройте параметры после события, если они отключены

[startwizard]
* включите цифровые клавиши для настроек часового пояса

[eListboxPythonMultiContent]
* исправьте цветовой диапазон градиента прогресса


[eListboxPythonServiceContent] ]
* представить новую программу eListboxPythonServiceContent

ProgrammlistenUpdater, исправить BSOD
07:24:20.5139 FileNotFoundError: [Errno 2] Нет такого файла или каталога: '/etc/enigma2/lamedb'

[LCD]
* исправить dumplcd для 32-разрядной версии

[действия]
* удалить динамическую генерацию eActionList

[TagEditor.py] Используйте f-строки

[Information.py] Улучшите согласованность текста

, добавьте действие сборки gcc 12,13 и Python 3.12.
Обновления перевода.
PicturePlayer: используйте деление по этажам, чтобы получить целое число.


Рефакторинг экрана ServiceInfo

. Переместите экран модуля ServiceInfo.py в ServiceInfo. Информация.py. Переименуйте экран в ServiceInformation. Удалите исходный модуль ServiceInfo.py. Выполните рефакторинг кода, чтобы он соответствовал стилю информации.

[Information.py]
— добавьте новый экран под названием ServiceInformation.
- ServiceInformation больше не требует нажатия ЖЕЛТОГО для переключения между текущим и всеми PID/данными. Все PID и данные теперь отображаются по умолчанию с текущим PID звука и, если выбрано, текущая опция субтитров отображается выделенным цветом.
- Экран служебной информации больше не требует нажатия СИНЕГО цвета для переключения между настроенной и актуальной информацией о транспондере. Текущие данные всегда отображаются, а данные конфигурации отображаются в скобках, если они отличаются от оперативной информации.
- ServiceInformation при вызове из меню теперь автоматически обновляет данные, если служба изменяется в фоновом режиме.
- В ServiceInformation теперь есть экран СПРАВКИ.
- Реализуйте f-строки.
— Удалите некоторые неиспользуемые строки перевода.
- Оптимизировать некоторый код.

[ServiceInfo.py]
— Модуль удален.

[ChannelSelection.py]
— заменить импорт ServiceInfo информацией.
— Замените экранный вызов с ServiceInfo на ServiceInformation.

[меню.xml]
- Замените модуль ServiceInfo и экран ServiceInfo на информационный модуль и экран ServiceInformation соответственно.

[Config.py] Правильное действие cancel().

ConfigElement.cancel() имел обходной путь, позволяющий избежать проблем с использованием None в записях ConfigLocations. Это обходное решение приводит к проблемам с неправильной пометкой отредактированных записей конфигурации как измененных при отмене изменения.

Это изменение устраняет обходной путь и исправляет любое использование ConfigLocations для использования пустых списков, а не None для представления случая отсутствия данных.

Кроме того, используйте f-строки для оптимизации производительности.

[NetworkSetup.py] Правильное использование ConfigLocations.
[UsageConfig.py] Правильное использование ConfigLocations.

[ui.py] Выполните исправления Python 3.
Этот запрос на включение основан на запросе на включение № 3088, который не исправляет все ошибки деления. (Этот коммит исправил ошибки вертикального выравнивания, но не исправил горизонтальные ошибки.)


Добавление встроенной функции потокового реле (#3087)

* Добавление встроенной функции потокового реле
Ретрансляция потока — это функция, которую предлагает, например, Oscam, и это метод, при котором
аппаратное обеспечение блока почему-то не удалось зашифровать конкретный сервис.
Streamrelay использует промежуточный поток, где шифрование моделируется
программным обеспечением. С помощью этого коммита вы можете пометить ссылки на сервисы, хранящиеся в
белом списке /etc/enigma2/whitelist_streamrelay. Когда вы пытаетесь настроить одну
из этих служб, ссылка службы адаптируется в Navigate.py таким образом
, что она воспроизводит службу через сервер ретрансляции потока, определенный двумя
конфигурациями (IP, локальный хост по умолчанию и порт по умолчанию 17999). Белый список
также можно загрузить на ваш приемник, и тогда вам больше не нужны специальные
пользовательские букеты ретрансляции потока. Вы также можете добавлять/удалять сервисы через
контекстное меню списка каналов.

Некоторые части взяты из этого коммита.
OpenPLi/enigma2@3b9d7f3

Спасибо @littlesat

[FCC]
* не используйте FCC для каналов ретрансляции потока

[Quadpip]
* добавьте поддержку ретрансляции потока

[Навигация]

* добавьте параметр ignoreStreamRelay для отключенияstreamrelayChecker
* не используйтеstreamrelayChecker для записей epgrefresh

[ elistboxmulticontent]
* исправить радиус для TYPE_PROGRESS
* подготовить содержимое списка сервисов

[TaskView]
* исправить зеленое действие
* скрыть параметры после события, если они отключены

[startwizard]
* включить цифровые клавиши для настроек часового пояса

[eListboxPythonMultiContent]
* исправить цветовой диапазон градиента прогресса


[eListboxPythonServiceContent]
* ввести новый eListboxPythonServiceContent

ProgrammlistenUpdater исправляет BSOD
07:24:20.5139 FileNotFoundError: [Errno 2] Нет такого файла или каталога: '/etc/enigma2/lamedb' [

LCD]
* исправьте dumplcd для 32-разрядной версии

[действия]
* удалите динамическое создание eActionList

[TagEditor.py ] Используйте f-строки

[Information.py] Улучшите согласованность текста

, добавьте действие сборки gcc 12,13 и Python 3.12.
Обновления перевода.
PicturePlayer: используйте деление по этажам, чтобы получить целое число.


Рефакторинг экрана ServiceInfo

. Переместите экран модуля ServiceInfo.py ServiceInfo в Information.py. Переименуйте экран в ServiceInformation. Удалите исходный модуль ServiceInfo.py. Выполните рефакторинг кода, чтобы он соответствовал стилю информации.

[Information.py]
— добавьте новый экран под названием ServiceInformation.
- ServiceInformation больше не требует нажатия ЖЕЛТОГО для переключения между текущим и всеми PID/данными. Все PID и данные теперь отображаются по умолчанию с текущим PID звука и, если выбрано, текущая опция субтитров отображается выделенным цветом.
- Экран служебной информации больше не требует нажатия СИНЕГО цвета для переключения между настроенной и актуальной информацией о транспондере. Текущие данные всегда отображаются, а данные конфигурации отображаются в скобках, если они отличаются от оперативной информации.
- ServiceInformation при вызове из меню теперь автоматически обновляет данные, если служба изменяется в фоновом режиме.
- В ServiceInformation теперь есть экран СПРАВКИ.
- Реализуйте f-строки.
— Удалите некоторые неиспользуемые строки перевода.
- Оптимизировать некоторый код.

[ServiceInfo.py]
— Модуль удален.

[ChannelSelection.py]
— заменить импорт ServiceInfo информацией.
— Замените экранный вызов с ServiceInfo на ServiceInformation.

[menu.xml]
— заменить модуль ServiceInfo и экран ServiceInfo на информационный модуль и экран ServiceInformation соответственно.

[Config.py] Правильное действие cancel().

ConfigElement.cancel() имел обходной путь, позволяющий избежать проблем с использованием None в записях ConfigLocations. Это обходное решение приводит к проблемам с неправильной пометкой отредактированных записей конфигурации как измененных при отмене изменения.

Это изменение устраняет обходной путь и исправляет любое использование ConfigLocations для использования пустых списков, а не None для представления случая отсутствия данных.

Кроме того, используйте f-строки для оптимизации производительности.

[NetworkSetup.py] Правильное использование ConfigLocations
[UsageConfig.py] Правильное использование ConfigLocations

[ui.py] Завершите исправления Python 3
Этот запрос на включение основан на запросе на включение № 3088, который не исправляет все ошибки разделения. (Этот коммит исправил ошибки вертикального выравнивания, но не исправил горизонтальные ошибки.)


Добавление встроенной функции потокового реле (#3087)

* Добавление встроенной функции потокового реле
Ретрансляция потока — это функция, которую предлагает, например, Oscam, и это метод, при котором
аппаратное обеспечение блока почему-то не удалось зашифровать конкретный сервис.
Streamrelay использует промежуточный поток, где шифрование моделируется
программным обеспечением. С помощью этого коммита вы можете пометить ссылки на сервисы, хранящиеся в
белом списке /etc/enigma2/whitelist_streamrelay. Когда вы пытаетесь настроить одну
из этих служб, ссылка службы адаптируется в Navigate.py таким образом
, что она воспроизводит службу через сервер ретрансляции потока, определенный двумя
конфигурациями (IP, локальный хост по умолчанию и порт по умолчанию 17999). Белый список
также можно загрузить на ваш приемник, и тогда вам больше не нужны специальные
пользовательские букеты ретрансляции потока. Вы также можете добавлять/удалять сервисы через
контекстное меню списка каналов.

Некоторые части взяты из этого коммита.
OpenPLi/enigma2@3b9d7f3

Благодаря @littlesat

[FCC]
* не используйте FCC для каналов ретрансляции потока

[Quadpip]
* добавьте поддержку ретрансляции потока

[Навигация]

* добавьте параметр ignoreStreamRelay для отключенияstreamrelayChecker
* не используйтеstreamrelayChecker для записей epgrefresh

Обновить Цифровая платформа 42°E

[ДОКУМЕНТАЦИЯ] Добавить точку, касающуюся пунктуации

[International.py] Добавить страну, не являющуюся ISO, «KU» для «Курдистан».

Запись страны «Курдистан» добавляется для решения некоторых культурных проблем. Данные, используемые для этой записи, НЕ являются официальными. Используемые значения были выбраны так, чтобы не противоречить текущим обозначениям ISO. Хотя есть некоторые противоречия с обозначениями НАТО, код Enigma2 основан на ISO, поэтому противоречия пока будут игнорироваться.

[PliExtraInfo]

* добавлена ​​поддержка параметров цвета
* удалено много кода копирования и вставки
* используйте больше f-строк

[eLCD]

* используйте новый setLCDMode для записи /proc/stb/lcd/mode

[eLCD]

* добавьте setLCDMode

[CI] Исправлено дескремблирование при использовании тюнер BH

Это не решает проблему VU со вторым тюнером FBC!


и многое другое

Оригинал
Спойлер   :
Update openATV 7.3

* Graphics (#3048)

[eWindowStyle]
* add getColor

[eRectangle]
* remove border properties because they are now in parent class

[ePixmap]
* add new separate drawing lib
* remove drawGradient
* add new drawRectangle
* add corner radius for pixmaps
* add new transparent flag

[eWidget]
* enable corner radius and gradient paint
* add border properties
* add setBorderWidth, setBorderColor for compatibility reasons
* add setWidgetBorderWidth, setWidgetBorderColor
* add setCornerRadius
* auto correction of wrong radius values

[MultiContentEntryRectangle]
* add corner attributes

[eWindow]
* add setCornerRadius

[eWidgetDesktop]
* improve clip for corners
* improve background if gradient set

[gPainter]
* remove drawGradient
* add new drawRectangle including setGradient, setRadius and setBorder
* improve alphablend

[eListboxcontent]
* replace drawGradient with drawRectangle
* add radius feature for RECT type
* add RT_BLEND flag for each text if gradient set

[eListbox]
* improve corner radius and gradient for the items
* add default corner radius
* add scrollbar gradient and radius

[epng/picload]
* detect transparency from png, set transparency to false for jpg and bmp
* fix possible memory leak

[grc]
* respect new transparent flag and disable blend if not transparent

[TemplatedMultiContent]
* add radius edges constants

[eListboxPythonStringContent, eListboxPythonConfigContent]
* add corner radius
* fix gradient

[eListboxPythonMultiContent]
* add radius and gradient for progress
* add radius for pixmap progress
* add corner radius for TEXT_TYPE

[blit]
* improve alphablend

[font]
* fix alphablend especially for gradient backgrounds

[multicontent]
* add radius to gradient

[eLabel]
* add RT_BLEND flag if gradient set

[eSlider]
* add radius and gradient

[skin]
* add cornerRadius, itemCornerRadius, widgetBorderColor, widgetBorderWidth attibutes
* add new scrollbar attributes

Graphic updates

[eLabel]
* add setAlphatest to allow alphablend for eLabel
* fix sonar warnings

[eListbox]
* add setDefaultScrollbarRadius
* correction of scrollbargradient
* improve scrollbar repaint

[Scollable]
* add scrollbarGradient attribute
* add radius support

[skin]
* add windowstyle defaults for Scollabel and listbox radius

[eSlider]
* fix some sonar warnings
* code formating
* fix sonar warnings

[eWidget]
* use bool for m_have_background_color

[elistboxmulticontent]
* fix radius for TYPE_PROGRESS
* prepare servicelist content

[TaskView]
* fix green action
* hide afterevent options if disabled

[startwizard]
* enable number keys for timezone settings

[eListboxPythonMultiContent]
* fix progress gradient color range


[eListboxPythonServiceContent]
* introduce new eListboxPythonServiceContent

ProgrammlistenUpdater fix BSOD
07:24:20.5139 FileNotFoundError: [Errno 2] No such file or directory: '/etc/enigma2/lamedb'

[LCD]
* fix dumplcd for 32 Bit

[actions]
* remove dynamic generation of eActionList

[TagEditor.py] Use f-strings

[Information.py] Improve text consistency

add gcc 12,13 and python 3.12 build action
Translation Updates
PicturePlayer: use floor division to get integer


Refactor ServiceInfo screen

Move the ServiceInfo.py module screen ServiceInfo into Information.py. Rename the screen to ServiceInformation. Delete the original ServiceInfo.py module. Refactor the code to match the Information style.

[Information.py]
- Add a new screen called ServiceInformation.
- ServiceInformation no longer requires pressing YELLOW to toggle between the current and all PIDs / data. All the PIDs and data are now shown by default with the current audio PID and, if selected, the current subtitle option displayed in a highlight color.
- ServiceInformation screen no longer requires pressing BLUE to toggle between the configured and live transponder information. The live data is always show while the configuration data is shown in brackets if it differs from the live information.
- ServiceInformation when called from the menu will now update the data automatically if the service is changed in the background.
- ServiceInformation now has a HELP screen.
- Implement f-strings.
- Remove some unused translation strings.
- Optimize some code.

[ServiceInfo.py]
- Module deleted.

[ChannelSelection.py]
- Replace ServiceInfo import with Information.
- Replace the screen call from ServiceInfo to ServiceInformation.

[menu.xml]
- Replace ServiceInfo module and ServiceInfo screen with the Information module and the ServiceInformation screen respectively.

[Config.py] Correct action of cancel()

ConfigElement.cancel() had a work-around to avoid issues with None being used in ConfigLocations entries. This work-around causes issues with edited config entries being incorrectly marked as changed when the change is cancelled.

This change removes the workaround and corrects all use of ConfigLocations to use empty lists rather than None to represent the no data case.

Also, use f-strings to optimized performance.

[NetworkSetup.py] Correct use of ConfigLocations
[UsageConfig.py] Correct use of ConfigLocations

[ui.py] Complete the Python 3 corrections
This pull request builds on Pull Request #3088 that does not fix all the division errors. (That commit fixed the vertical alignment errors but did not correct the horizontal errors.)


Add embeded streamrelay functionality (#3087)

* Add embeded streamrelay functionality
Stream relay is a function that e.g. Oscam offers and is a method where
the hardware of the box is somehow not able to encrypt specific service.
Streamrelay users a stream in between where the enryption is simulated
in software. With this commit you can mark service refeerences stored in
a whitelist /etc/enigma2/whitelist_streamrelay. When you try to tune one
of these services the service ref is adapted in Navigate.py such a way
that it plays the service via a stream relay server defined by two
configs (IP, default local host and port default 17999). The whitelist
can also be downloaded to you receiver and then you do not need special
stream relay user bouquets anymore. You can also add/remove services via
the channel list context menu.

Some parts are taken from this commit.
OpenPLi/enigma2@3b9d7f3

Thanks to @littlesat

[FCC]
* don't use FCC for stream relay channels

[Quadpip]
* add stream relay support

[Navigation]

* add ignoreStreamRelay parameter to disable streamrelayChecker
* don't use streamrelayChecker for epgrefresh recordings

[elistboxmulticontent]
* fix radius for TYPE_PROGRESS
* prepare servicelist content

[TaskView]
* fix green action
* hide afterevent options if disabled

[startwizard]
* enable number keys for timezone settings

[eListboxPythonMultiContent]
* fix progress gradient color range


[eListboxPythonServiceContent]
* introduce new eListboxPythonServiceContent

ProgrammlistenUpdater fix BSOD
07:24:20.5139 FileNotFoundError: [Errno 2] No such file or directory: '/etc/enigma2/lamedb'

[LCD]
* fix dumplcd for 32 Bit

[actions]
* remove dynamic generation of eActionList

[TagEditor.py] Use f-strings

[Information.py] Improve text consistency

add gcc 12,13 and python 3.12 build action
Translation Updates
PicturePlayer: use floor division to get integer


Refactor ServiceInfo screen

Move the ServiceInfo.py module screen ServiceInfo into Information.py. Rename the screen to ServiceInformation. Delete the original ServiceInfo.py module. Refactor the code to match the Information style.

[Information.py]
- Add a new screen called ServiceInformation.
- ServiceInformation no longer requires pressing YELLOW to toggle between the current and all PIDs / data. All the PIDs and data are now shown by default with the current audio PID and, if selected, the current subtitle option displayed in a highlight color.
- ServiceInformation screen no longer requires pressing BLUE to toggle between the configured and live transponder information. The live data is always show while the configuration data is shown in brackets if it differs from the live information.
- ServiceInformation when called from the menu will now update the data automatically if the service is changed in the background.
- ServiceInformation now has a HELP screen.
- Implement f-strings.
- Remove some unused translation strings.
- Optimize some code.

[ServiceInfo.py]
- Module deleted.

[ChannelSelection.py]
- Replace ServiceInfo import with Information.
- Replace the screen call from ServiceInfo to ServiceInformation.

[menu.xml]
- Replace ServiceInfo module and ServiceInfo screen with the Information module and the ServiceInformation screen respectively.

[Config.py] Correct action of cancel()

ConfigElement.cancel() had a work-around to avoid issues with None being used in ConfigLocations entries. This work-around causes issues with edited config entries being incorrectly marked as changed when the change is cancelled.

This change removes the workaround and corrects all use of ConfigLocations to use empty lists rather than None to represent the no data case.

Also, use f-strings to optimized performance.

[NetworkSetup.py] Correct use of ConfigLocations
[UsageConfig.py] Correct use of ConfigLocations

[ui.py] Complete the Python 3 corrections
This pull request builds on Pull Request #3088 that does not fix all the division errors. (That commit fixed the vertical alignment errors but did not correct the horizontal errors.)


Add embeded streamrelay functionality (#3087)

* Add embeded streamrelay functionality
Stream relay is a function that e.g. Oscam offers and is a method where
the hardware of the box is somehow not able to encrypt specific service.
Streamrelay users a stream in between where the enryption is simulated
in software. With this commit you can mark service refeerences stored in
a whitelist /etc/enigma2/whitelist_streamrelay. When you try to tune one
of these services the service ref is adapted in Navigate.py such a way
that it plays the service via a stream relay server defined by two
configs (IP, default local host and port default 17999). The whitelist
can also be downloaded to you receiver and then you do not need special
stream relay user bouquets anymore. You can also add/remove services via
the channel list context menu.

Some parts are taken from this commit.
OpenPLi/enigma2@3b9d7f3

Thanks to @littlesat

[FCC]
* don't use FCC for stream relay channels

[Quadpip]
* add stream relay support

[Navigation]

* add ignoreStreamRelay parameter to disable streamrelayChecker
* don't use streamrelayChecker for epgrefresh recordings

Update Digital Platform 42°E

[DOCUMENTATION] Add point regarding punctuation

[International.py] Add a non ISO country of "KU" for "Kurdistan"

The country entry of "Kurdistan" is being added to address some cultural issues. The data used for this entry is NOT official. The values used have been selected to not clash with current ISO designations. While there is some clash with NATO designations the Enigma2 code is based on ISO so the clashes will be ignored for now.

[PliExtraInfo]

* add color parameter support
* remove many copy paste code
* use more f-strings

[eLCD]

* use new setLCDMode for writing /proc/stb/lcd/mode

[eLCD]

* add setLCDMode

[CI] Fix descrambling when using tuner B-H

This doesn't fix VU problem with second fbc tuner!


and many more



Теги:
 

Похожие темы

  Тема / Автор Ответов Последний ответ
1631 Ответов
313428 Просмотров
Последний ответ 19 июля | 2014г. | 15:53:51
от gemchug74
554 Ответов
283275 Просмотров
Последний ответ 22 июля | 2022г. | 15:54:14
от Doni
1481 Ответов
483554 Просмотров
Последний ответ 11 апреля | 2018г. | 23:06:57
от Ednaz
1 Ответов
1677 Просмотров
Последний ответ 21 июля | 2021г. | 12:03:41
от yuju
47 Ответов
4526 Просмотров
Последний ответ 12 минут назад
от tyts



X

Добро пожаловать!

Мы заметили, что у Вас установлено расширение AdBlock или ему подобное. Пожалуйста добавьте наш Клуб в белый список, внесите этим посильную лепту в его развитие. Спасибо!