From ea36958381316840290e68de35d98309b5984faf Mon Sep 17 00:00:00 2001 From: Yevhen Boichuk Date: Sun, 27 Sep 2026 15:44:23 +0300 Subject: [PATCH 1/6] remove: remove pio, move everything into clear esp-idf build with git submodules --- .editorconfig | 4 +- .gitattributes | 2 +- .github/workflows/firmware.yml | 64 +- .gitignore | 3 +- .gitmodules | 52 + .vscode/extensions.json | 4 +- AGENTS.md | 18 +- CMakeLists.txt | 61 ++ Makefile | 87 +- README.md | 21 +- boards/lilka_v2/board.cmake | 17 + boards/lilka_v2/partitions.csv | 7 + boards/lilka_v2/sdkconfig.defaults | 92 ++ components/AnimatedGIF/AnimatedGIF | 1 + components/AnimatedGIF/CMakeLists.txt | 8 + components/ArduinoJson/ArduinoJson | 1 + components/ArduinoJson/CMakeLists.txt | 5 + components/Arduino_GFX/Arduino_GFX | 1 + components/Arduino_GFX/CMakeLists.txt | 19 + components/ESP8266Audio/CMakeLists.txt | 10 + components/ESP8266Audio/ESP8266Audio | 1 + components/ESPTelnet/CMakeLists.txt | 10 + components/ESPTelnet/ESPTelnet | 1 + components/JPEGDEC/CMakeLists.txt | 10 + components/JPEGDEC/JPEGDEC | 1 + components/SimpleFTPServer/CMakeLists.txt | 8 + .../SimpleFTPServer/library.json | 0 .../SimpleFTPServer/src/FtpServer.cpp | 0 .../SimpleFTPServer/src/FtpServer.h | 0 .../SimpleFTPServer/src/FtpServerKey.h | 0 components/U8g2/CMakeLists.txt | 12 + components/U8g2/U8g2_Arduino | 1 + components/arduino | 1 + components/arduino_tinyusb/CMakeLists.txt | 67 ++ components/arduino_tinyusb/Kconfig.projbuild | 243 +++++ .../arduino_tinyusb/include/tusb_config.h | 143 +++ components/arduino_tinyusb/src/dcd_esp32sx.c | 965 ++++++++++++++++++ components/arduino_tinyusb/tinyusb | 1 + components/esp-dsp | 1 + components/lilka/CMakeLists.txt | 40 + components/lilka/lilka_sdk_version.h.in | 10 + components/lilka/sdk | 1 + components/lua/CMakeLists.txt | 16 + components/lua/arduino-lua | 1 + components/mJS/CMakeLists.txt | 7 + {lib => components}/mJS/library.json | 0 {lib => components}/mJS/src/mjs.c | 0 {lib => components}/mJS/src/mjs.h | 0 components/nofrendo/CMakeLists.txt | 11 + components/nofrendo/arduino-nofrendo | 1 + {assets => data/assets}/keira_splash.xcf | Bin {assets => data/assets}/letris_splash.xcf | Bin {img => data/img}/keira.dia | 0 {img => data/img}/keira.png | Bin {img => data/img}/menu.jpg | Bin {img => data/img}/v21.jpg | Bin data/{ => spiffs}/.gitignore | 0 data/{ => spiffs}/autorun.lua | 0 data/{ => spiffs}/chase.nes | Bin data/{ => spiffs}/thewit.nes | Bin data/{ => spiffs}/wallpaper.gif | Bin data/{ => spiffs}/wallpaper.lua | 0 dependencies.lock | 9 + {addons => docs/addons}/lualilka/config.json | 0 .../addons}/lualilka/library/UI.lua | 0 .../addons}/lualilka/library/audio.lua | 0 .../addons}/lualilka/library/buzzer.lua | 0 .../addons}/lualilka/library/controller.lua | 0 .../addons}/lualilka/library/crypto.lua | 0 .../addons}/lualilka/library/display.lua | 0 .../addons}/lualilka/library/fs.lua | 0 .../addons}/lualilka/library/geometry.lua | 0 .../addons}/lualilka/library/gpio.lua | 0 .../addons}/lualilka/library/http.lua | 0 .../addons}/lualilka/library/httpserver.lua | 0 .../addons}/lualilka/library/i2c.lua | 0 .../addons}/lualilka/library/lilka.lua | 0 .../addons}/lualilka/library/math.lua | 0 .../addons}/lualilka/library/mqtt.lua | 0 .../addons}/lualilka/library/net.lua | 0 .../addons}/lualilka/library/pwm.lua | 0 .../addons}/lualilka/library/resources.lua | 0 .../addons}/lualilka/library/sdcard.lua | 0 .../addons}/lualilka/library/serial.lua | 0 .../addons}/lualilka/library/service.lua | 0 .../addons}/lualilka/library/spi.lua | 0 .../addons}/lualilka/library/state.lua | 0 .../addons}/lualilka/library/transforms.lua | 0 .../addons}/lualilka/library/util.lua | 0 .../addons}/lualilka/library/wifi.lua | 0 .../addons}/lualilka/library/ws2812.lua | 0 docs/conf.py | 2 +- docs/custom_apps.rst | 4 +- docs/features.rst | 2 +- docs/flashing.rst | 62 +- docs/images/05_installed_platformio.png | Bin 169227 -> 0 bytes docs/images/11_open_pio_project.png | Bin 84240 -> 0 bytes docs/images/11_open_pio_project_cropped.png | Bin 42161 -> 0 bytes docs/images/12_wait_pio_project_init.png | Bin 103885 -> 0 bytes docs/images/13_wait_pio_project_init_more.png | Bin 125577 -> 0 bytes .../13_wait_pio_project_init_more_cropped.png | Bin 53950 -> 0 bytes docs/images/14_pio_build_v2.png | Bin 125292 -> 0 bytes docs/images/14_pio_build_v2_cropped.png | Bin 62446 -> 0 bytes docs/images/15_pio_build_v2_progress.png | Bin 126439 -> 0 bytes .../15_pio_build_v2_progress_cropped.png | Bin 24724 -> 0 bytes docs/images/16_pio_build_ok.png | Bin 123374 -> 0 bytes docs/images/16_pio_build_ok_cropped.png | Bin 27188 -> 0 bytes docs/images/17_run_upload_v2.png | Bin 130979 -> 0 bytes docs/images/17_run_upload_v2_cropped.png | Bin 45029 -> 0 bytes docs/images/18_upload_progress.png | Bin 129410 -> 0 bytes docs/images/18_upload_progress_cropped.png | Bin 29049 -> 0 bytes docs/images/19_upload_complete.png | Bin 76412 -> 0 bytes legacy/v1_partitions.csv | 8 - platformio.ini | 43 - src/CMakeLists.txt | 13 + src/apps/nes/osd.cpp | 10 - src/apps/tests/scan_i2c/scan_i2c.cpp | 9 - src/keira/debug.h | 8 +- src/keira/ksystem.cpp | 2 +- targets.py | 32 - tests/validate_workflow.sh | 2 +- wallpaper_216.gif | Bin 217593 -> 0 bytes 122 files changed, 2005 insertions(+), 230 deletions(-) create mode 100644 .gitmodules create mode 100644 CMakeLists.txt create mode 100644 boards/lilka_v2/board.cmake create mode 100644 boards/lilka_v2/partitions.csv create mode 100644 boards/lilka_v2/sdkconfig.defaults create mode 160000 components/AnimatedGIF/AnimatedGIF create mode 100644 components/AnimatedGIF/CMakeLists.txt create mode 160000 components/ArduinoJson/ArduinoJson create mode 100644 components/ArduinoJson/CMakeLists.txt create mode 160000 components/Arduino_GFX/Arduino_GFX create mode 100644 components/Arduino_GFX/CMakeLists.txt create mode 100644 components/ESP8266Audio/CMakeLists.txt create mode 160000 components/ESP8266Audio/ESP8266Audio create mode 100644 components/ESPTelnet/CMakeLists.txt create mode 160000 components/ESPTelnet/ESPTelnet create mode 100644 components/JPEGDEC/CMakeLists.txt create mode 160000 components/JPEGDEC/JPEGDEC create mode 100644 components/SimpleFTPServer/CMakeLists.txt rename {lib => components}/SimpleFTPServer/library.json (100%) rename {lib => components}/SimpleFTPServer/src/FtpServer.cpp (100%) rename {lib => components}/SimpleFTPServer/src/FtpServer.h (100%) rename {lib => components}/SimpleFTPServer/src/FtpServerKey.h (100%) create mode 100644 components/U8g2/CMakeLists.txt create mode 160000 components/U8g2/U8g2_Arduino create mode 160000 components/arduino create mode 100644 components/arduino_tinyusb/CMakeLists.txt create mode 100755 components/arduino_tinyusb/Kconfig.projbuild create mode 100755 components/arduino_tinyusb/include/tusb_config.h create mode 100755 components/arduino_tinyusb/src/dcd_esp32sx.c create mode 160000 components/arduino_tinyusb/tinyusb create mode 160000 components/esp-dsp create mode 100644 components/lilka/CMakeLists.txt create mode 100644 components/lilka/lilka_sdk_version.h.in create mode 160000 components/lilka/sdk create mode 100644 components/lua/CMakeLists.txt create mode 160000 components/lua/arduino-lua create mode 100644 components/mJS/CMakeLists.txt rename {lib => components}/mJS/library.json (100%) rename {lib => components}/mJS/src/mjs.c (100%) rename {lib => components}/mJS/src/mjs.h (100%) create mode 100644 components/nofrendo/CMakeLists.txt create mode 160000 components/nofrendo/arduino-nofrendo rename {assets => data/assets}/keira_splash.xcf (100%) rename {assets => data/assets}/letris_splash.xcf (100%) rename {img => data/img}/keira.dia (100%) rename {img => data/img}/keira.png (100%) rename {img => data/img}/menu.jpg (100%) rename {img => data/img}/v21.jpg (100%) rename data/{ => spiffs}/.gitignore (100%) rename data/{ => spiffs}/autorun.lua (100%) rename data/{ => spiffs}/chase.nes (100%) rename data/{ => spiffs}/thewit.nes (100%) rename data/{ => spiffs}/wallpaper.gif (100%) rename data/{ => spiffs}/wallpaper.lua (100%) create mode 100644 dependencies.lock rename {addons => docs/addons}/lualilka/config.json (100%) rename {addons => docs/addons}/lualilka/library/UI.lua (100%) rename {addons => docs/addons}/lualilka/library/audio.lua (100%) rename {addons => docs/addons}/lualilka/library/buzzer.lua (100%) rename {addons => docs/addons}/lualilka/library/controller.lua (100%) rename {addons => docs/addons}/lualilka/library/crypto.lua (100%) rename {addons => docs/addons}/lualilka/library/display.lua (100%) rename {addons => docs/addons}/lualilka/library/fs.lua (100%) rename {addons => docs/addons}/lualilka/library/geometry.lua (100%) rename {addons => docs/addons}/lualilka/library/gpio.lua (100%) rename {addons => docs/addons}/lualilka/library/http.lua (100%) rename {addons => docs/addons}/lualilka/library/httpserver.lua (100%) rename {addons => docs/addons}/lualilka/library/i2c.lua (100%) rename {addons => docs/addons}/lualilka/library/lilka.lua (100%) rename {addons => docs/addons}/lualilka/library/math.lua (100%) rename {addons => docs/addons}/lualilka/library/mqtt.lua (100%) rename {addons => docs/addons}/lualilka/library/net.lua (100%) rename {addons => docs/addons}/lualilka/library/pwm.lua (100%) rename {addons => docs/addons}/lualilka/library/resources.lua (100%) rename {addons => docs/addons}/lualilka/library/sdcard.lua (100%) rename {addons => docs/addons}/lualilka/library/serial.lua (100%) rename {addons => docs/addons}/lualilka/library/service.lua (100%) rename {addons => docs/addons}/lualilka/library/spi.lua (100%) rename {addons => docs/addons}/lualilka/library/state.lua (100%) rename {addons => docs/addons}/lualilka/library/transforms.lua (100%) rename {addons => docs/addons}/lualilka/library/util.lua (100%) rename {addons => docs/addons}/lualilka/library/wifi.lua (100%) rename {addons => docs/addons}/lualilka/library/ws2812.lua (100%) delete mode 100644 docs/images/05_installed_platformio.png delete mode 100644 docs/images/11_open_pio_project.png delete mode 100644 docs/images/11_open_pio_project_cropped.png delete mode 100644 docs/images/12_wait_pio_project_init.png delete mode 100644 docs/images/13_wait_pio_project_init_more.png delete mode 100644 docs/images/13_wait_pio_project_init_more_cropped.png delete mode 100644 docs/images/14_pio_build_v2.png delete mode 100644 docs/images/14_pio_build_v2_cropped.png delete mode 100644 docs/images/15_pio_build_v2_progress.png delete mode 100644 docs/images/15_pio_build_v2_progress_cropped.png delete mode 100644 docs/images/16_pio_build_ok.png delete mode 100644 docs/images/16_pio_build_ok_cropped.png delete mode 100644 docs/images/17_run_upload_v2.png delete mode 100644 docs/images/17_run_upload_v2_cropped.png delete mode 100644 docs/images/18_upload_progress.png delete mode 100644 docs/images/18_upload_progress_cropped.png delete mode 100644 docs/images/19_upload_complete.png delete mode 100644 legacy/v1_partitions.csv delete mode 100644 platformio.ini create mode 100644 src/CMakeLists.txt delete mode 100644 targets.py delete mode 100644 wallpaper_216.gif diff --git a/.editorconfig b/.editorconfig index 7931b7b0..a2246052 100644 --- a/.editorconfig +++ b/.editorconfig @@ -3,7 +3,7 @@ indent_style = space indent_size = 4 trim_trailing_whitespace = true -[platformio.ini] -indent_style = tab +[{CMakeLists.txt,*.cmake}] +indent_style = space indent_size = 4 trim_trailing_whitespace = true diff --git a/.gitattributes b/.gitattributes index d5e5d277..48e8e591 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1 +1 @@ -lib/** linguist-vendored +components/** linguist-vendored diff --git a/.github/workflows/firmware.yml b/.github/workflows/firmware.yml index 196b5df0..3e53daf7 100644 --- a/.github/workflows/firmware.yml +++ b/.github/workflows/firmware.yml @@ -17,26 +17,21 @@ permissions: jobs: keira: runs-on: ubuntu-latest + # Must match KEIRA_IDF_VERSION in boards/lilka_v2/board.cmake + container: espressif/idf:v4.4.7 + defaults: + run: + shell: bash steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: - submodules: recursive - fetch-depth: 0 + submodules: true - - uses: actions/cache@v3 + - uses: actions/cache@v4 with: - path: | - ~/.cache/pip - ~/.platformio/.cache - ./.pio - key: ${{ runner.os }}-keira - - - uses: actions/setup-python@v4 - with: - python-version: '3.9' - - - name: Install PlatformIO Core - run: pip install --upgrade platformio + path: .ccache + key: ccache-${{ hashFiles('.gitmodules', 'boards/**') }}-${{ github.sha }} + restore-keys: ccache-${{ hashFiles('.gitmodules', 'boards/**') }}- - name: Extract version and generate Keira header id: version @@ -73,39 +68,36 @@ jobs: #endif // KEIRA_VERSION_AUTO_GEN_H EOF + echo "VERSION_TYPE=$VERSION_TYPE" >> "$GITHUB_OUTPUT" + echo "Generated version:" cat src/keira/keira_version_auto_gen.h - name: Build and package firmware run: | + # container: jobs skip the image entrypoint, so set up the IDF environment here + . "$IDF_PATH/export.sh" + export CCACHE_DIR="$GITHUB_WORKSPACE/.ccache" + + # build [compile flags] + build() { + idf.py -B "$1" -DKEIRA_BUILD_FLAGS="$3" build + cp "$1/keira.bin" "out/keira$2.bin" + cp "$1/partition_table/partition-table.bin" out/partitions.bin + cp "$1/bootloader/bootloader.bin" out/bootloader.bin + (cd "$1" && esptool.py --chip esp32s3 merge_bin -o "$GITHUB_WORKSPACE/out/KeiraOS_merged$2.bin" @flash_args) + } + mkdir -p out if [[ "${{ steps.version.outputs.VERSION_TYPE }}" != "KEIRA_VERSION_TYPE_DEV" ]]; then echo "Tag detected - building for all languages" for lang in $(cat languages.txt); do echo "Building for $lang" - PLATFORMIO_BUILD_FLAGS=-D$lang pio run -e v2 - cp .pio/build/v2/firmware.bin out/keira_${lang}.bin - cp .pio/build/v2/partitions.bin out/partitions.bin - cp .pio/build/v2/bootloader.bin out/bootloader.bin - pip install esptool - esptool.py --chip esp32s3 merge_bin \ - -o out/KeiraOS_merged_${lang}.bin \ - 0x0 out/bootloader.bin \ - 0x8000 out/partitions.bin \ - 0x10000 out/keira_${lang}.bin + build "build/$lang" "_$lang" "-D$lang" done else echo "Main branch or PR - building for default language only" - pio run -e v2 - cp .pio/build/v2/firmware.bin out/keira.bin - cp .pio/build/v2/partitions.bin out/partitions.bin - cp .pio/build/v2/bootloader.bin out/bootloader.bin - pip install esptool - esptool.py --chip esp32s3 merge_bin \ - -o out/KeiraOS_merged.bin \ - 0x0 out/bootloader.bin \ - 0x8000 out/partitions.bin \ - 0x10000 out/keira.bin + build build "" fi - name: Upload firmware artifacts diff --git a/.gitignore b/.gitignore index 4cd3662e..867ef680 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ -.pio .vscode *.cache* compile_commands.json +build/ +build.log diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000..ca1e8a4d --- /dev/null +++ b/.gitmodules @@ -0,0 +1,52 @@ +[submodule "components/arduino"] + path = components/arduino + url = https://github.com/espressif/arduino-esp32.git + shallow = true +[submodule "components/lilka/sdk"] + path = components/lilka/sdk + url = https://github.com/lilka-dev/sdk.git + shallow = true +[submodule "components/Arduino_GFX/Arduino_GFX"] + path = components/Arduino_GFX/Arduino_GFX + url = https://github.com/moononournation/Arduino_GFX.git + shallow = true +[submodule "components/ArduinoJson/ArduinoJson"] + path = components/ArduinoJson/ArduinoJson + url = https://github.com/bblanchon/ArduinoJson.git + shallow = true +[submodule "components/ESPTelnet/ESPTelnet"] + path = components/ESPTelnet/ESPTelnet + url = https://github.com/LennartHennigs/ESPTelnet.git + shallow = true +[submodule "components/ESP8266Audio/ESP8266Audio"] + path = components/ESP8266Audio/ESP8266Audio + url = https://github.com/earlephilhower/ESP8266Audio.git + shallow = true +[submodule "components/AnimatedGIF/AnimatedGIF"] + path = components/AnimatedGIF/AnimatedGIF + url = https://github.com/bitbank2/AnimatedGIF.git + shallow = true +[submodule "components/JPEGDEC/JPEGDEC"] + path = components/JPEGDEC/JPEGDEC + url = https://github.com/bitbank2/JPEGDEC.git + shallow = true +[submodule "components/lua/arduino-lua"] + path = components/lua/arduino-lua + url = https://github.com/mischief/arduino-lua.git + shallow = true +[submodule "components/U8g2/U8g2_Arduino"] + path = components/U8g2/U8g2_Arduino + url = https://github.com/olikraus/U8g2_Arduino.git + shallow = true +[submodule "components/nofrendo/arduino-nofrendo"] + path = components/nofrendo/arduino-nofrendo + url = https://github.com/lilka-dev/arduino-nofrendo.git + shallow = true +[submodule "components/arduino_tinyusb/tinyusb"] + path = components/arduino_tinyusb/tinyusb + url = https://github.com/hathach/tinyusb.git + shallow = true +[submodule "components/esp-dsp"] + path = components/esp-dsp + url = https://github.com/espressif/esp-dsp.git + shallow = true diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 080e70d0..d1b92606 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -2,9 +2,9 @@ // See http://go.microsoft.com/fwlink/?LinkId=827846 // for the documentation about the extensions.json format "recommendations": [ - "platformio.platformio-ide" + "espressif.esp-idf-extension" ], "unwantedRecommendations": [ - "ms-vscode.cpptools-extension-pack" + "platformio.platformio-ide" ] } diff --git a/AGENTS.md b/AGENTS.md index c7b8faa2..7b2d012b 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -21,14 +21,22 @@ ## What not to touch - `src/keira/keira_version_auto_gen.h` — auto-generated at build time -- `.pio/` — generated by PlatformIO -- `lib/mJS/` and `lib/SimpleFTPServer/` — vendored, don't reformat +- `build/` — generated by ESP-IDF +- Submodules under `components/` (see `.gitmodules`) — pinned upstream code, never edit in place; bump the submodule instead +- `components/arduino_tinyusb/` — vendored TinyUSB glue from esp32-arduino-lib-builder +- `components/mJS/` and `components/SimpleFTPServer/` — vendored, don't reformat ## Build gotchas -- The [Lilka SDK](https://github.com/lilka-dev/sdk) must be checked out as a **sibling directory** to `keira/` — `lib_dir = ../../sdk/lib` in `platformio.ini` -- **v2** (ESP32-S3) is the primary target — default in PlatformIO and the one to test against -- **v1** (ESP32-C3) is legacy — only touch if explicitly asked +- Native ESP-IDF CMake project: `make build` (local ESP-IDF) or `make docker-build` (pinned `espressif/idf` image); `make help` lists everything +- ESP-IDF version is pinned per board in `boards//board.cmake` and enforced at configure time — currently **v4.4.7** with arduino-esp32 **2.0.17** as an IDF component +- Layout: `src/` is the Keira IDF component (`src/CMakeLists.txt`, explicit `REQUIRES`); `components//` is one component per library — our `CMakeLists.txt` plus the upstream code as a shallow git submodule inside (`components/arduino` and `components/esp-dsp` are submodules that are IDF components themselves) +- `data/spiffs/` becomes the internal filesystem image (`make flash-fs`); `data/img/` and `data/assets/` are repo-only images and design sources +- Bumping the Lilka SDK submodule (`components/lilka/sdk`): also update `LILKA_SDK_VERSION` in `components/lilka/CMakeLists.txt` (configure fails on mismatch) +- A board is a `boards//` dir with `board.cmake`, `sdkconfig.defaults` and `partitions.csv`; select it with `make BOARD=` +- sdkconfig is generated in the build dir; persist config changes in `boards//sdkconfig.defaults` +- One-off compile flags: `make FLAGS="-DLANG_EN -DFMANAGER_DEBUG"` (`-DKEIRA_BUILD_FLAGS=...` for `idf.py`) +- **v2** (ESP32-S3) is the only supported board; v1 support was removed - `clang-format` and `cppcheck` are enforced in CI — run `make clang-format` and `make cppcheck` before committing ## Arduino vs esp-idf diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 00000000..550718ef --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,61 @@ +# Keira OS — ESP-IDF project. +# +# Build: idf.py build (board defaults to lilka_v2) +# idf.py -DKEIRA_BOARD= build (any directory under boards/) +# or via make, see make help +# +# Layout: src/ is the Keira component; components// wraps each library, with the +# upstream code as a pinned git submodule inside. The ESP-IDF version is pinned per +# board in boards//board.cmake and checked below. + +cmake_minimum_required(VERSION 3.16) + +set(KEIRA_BOARD "lilka_v2" CACHE STRING "Target board, one of boards/") +set(KEIRA_BOARD_DIR "${CMAKE_CURRENT_LIST_DIR}/boards/${KEIRA_BOARD}") +if(NOT EXISTS "${KEIRA_BOARD_DIR}/board.cmake") + message(FATAL_ERROR "Unknown board '${KEIRA_BOARD}': ${KEIRA_BOARD_DIR}/board.cmake not found") +endif() + +# Sets IDF_TARGET, KEIRA_IDF_VERSION and KEIRA_BOARD_DEFINITIONS +include("${KEIRA_BOARD_DIR}/board.cmake") + +# Extra flags for a single build, e.g. -DKEIRA_BUILD_FLAGS="-DLANG_EN;-DFMANAGER_DEBUG" +set(KEIRA_BUILD_FLAGS "" CACHE STRING "Extra compile flags (semicolon separated)") + +set(SDKCONFIG_DEFAULTS "${KEIRA_BOARD_DIR}/sdkconfig.defaults") +# Keep the generated sdkconfig next to the build, so switching boards is just switching build dirs +set(SDKCONFIG "${CMAKE_BINARY_DIR}/sdkconfig") + +# components/* is picked up automatically +set(EXTRA_COMPONENT_DIRS + "${CMAKE_CURRENT_LIST_DIR}/src" + "$ENV{IDF_PATH}/examples/common_components/qrcode" +) + +include($ENV{IDF_PATH}/tools/cmake/project.cmake) + +set(idf_version "${IDF_VERSION_MAJOR}.${IDF_VERSION_MINOR}.${IDF_VERSION_PATCH}") +if(NOT idf_version VERSION_EQUAL KEIRA_IDF_VERSION AND NOT "$ENV{KEIRA_SKIP_IDF_VERSION_CHECK}") + message(FATAL_ERROR "Board ${KEIRA_BOARD} requires ESP-IDF v${KEIRA_IDF_VERSION}, " + "but IDF_PATH points to v${idf_version}. " + "Set KEIRA_SKIP_IDF_VERSION_CHECK=1 to build anyway.") +endif() + +foreach(def ${KEIRA_BOARD_DEFINITIONS}) + idf_build_set_property(COMPILE_DEFINITIONS "-D${def}" APPEND) +endforeach() +foreach(flag ${KEIRA_BUILD_FLAGS}) + idf_build_set_property(COMPILE_OPTIONS "${flag}" APPEND) +endforeach() +idf_build_set_property(CXX_COMPILE_OPTIONS "-Wno-pmf-conversions" APPEND) + +project(keira) + +# IDF builds with -Werror=all; Keira and its libraries were never built that way under PlatformIO. +# The option list is evaluated at generate time, so dropping it here applies to every component. +idf_build_get_property(compile_options COMPILE_OPTIONS) +list(REMOVE_ITEM compile_options "-Werror=all") +idf_build_set_property(COMPILE_OPTIONS "${compile_options}") + +# Filesystem image from data/spiffs/, flashed on demand only (idf.py spiffs-flash) so user files are not wiped +spiffs_create_partition_image(spiffs "${CMAKE_CURRENT_LIST_DIR}/data/spiffs") diff --git a/Makefile b/Makefile index dbb1a7a9..2ee12896 100644 --- a/Makefile +++ b/Makefile @@ -1,53 +1,79 @@ -ENV ?= v2 +BOARD ?= lilka_v2 +BUILD_DIR ?= build/$(BOARD) +PORT ?= +# Extra compile flags for one build, e.g. make FLAGS="-DLANG_EN -DFMANAGER_DEBUG" +FLAGS ?= + +# ESP-IDF version pinned by the board, also used as the Docker image tag +IDF_VERSION := $(shell sed -n 's/.*KEIRA_IDF_VERSION "\(.*\)".*/\1/p' boards/$(BOARD)/board.cmake) +IDF_IMAGE ?= espressif/idf:v$(IDF_VERSION) +DOCKER ?= docker + +IDF_PY = idf.py -B $(BUILD_DIR) -DKEIRA_BOARD=$(BOARD) -DKEIRA_BUILD_FLAGS="$(subst $() ,;,$(strip $(FLAGS)))" $(if $(PORT),-p $(PORT)) CPPCHECK ?= cppcheck CLANG_FORMAT ?= $(shell command -v clang-format-20 2>/dev/null || echo clang-format) +# Not our code, or generated +LINT_EXCLUDE = .ccls-cache build components doomgeneric bak LodePNG + help: ## Show this help @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-16s\033[0m %s\n", $$1, $$2}' -all: - pio -f -c vim run -e $(ENV) +.PHONY: submodules +submodules: ## Fetch pinned library submodules + git submodule update --init --depth 1 + +.PHONY: all build +all: build +build: ## Build firmware (needs ESP-IDF in the environment) + $(IDF_PY) build -upload-usb: - pio -f -c vim run --target upload -e $(ENV) +.PHONY: docker-build +docker-build: ## Build firmware in the pinned ESP-IDF Docker image + $(DOCKER) run --rm -u $$(id -u):$$(id -g) -e HOME=/tmp -v "$(CURDIR)":/project -w /project $(IDF_IMAGE) \ + $(IDF_PY) build -clean: - pio -f -c vim run --target clean -e $(ENV) +.PHONY: flash +flash: ## Flash bootloader, partition table and firmware + $(IDF_PY) flash -program: - pio -f -c vim run --target program -e $(ENV) +.PHONY: flash-fs +flash-fs: ## Flash the SPIFFS image built from data/spiffs/ (overwrites files on the device) + $(IDF_PY) spiffs-flash -update: - pio -f -c vim update +.PHONY: monitor +monitor: ## Serial monitor with backtrace decoding + $(IDF_PY) monitor -compile_commands: - pio run -t compiledb -e $(ENV) +.PHONY: menuconfig +menuconfig: ## Edit sdkconfig for this build dir (persist changes in boards/$(BOARD)/sdkconfig.defaults) + $(IDF_PY) menuconfig -uploadfs: - pio run -t uploadfs -e $(ENV) +.PHONY: clean fullclean +clean: ## Remove build outputs + $(IDF_PY) clean +fullclean: ## Remove the whole build dir, including sdkconfig + $(IDF_PY) fullclean + +.PHONY: compile_commands +compile_commands: ## Link compile_commands.json from the build dir + ln -sf $(BUILD_DIR)/compile_commands.json compile_commands.json + +.PHONY: decode_backtrace +decode_backtrace: ## Decode a backtrace: make decode_backtrace BT="0x4200...:0x3fc9... ..." + xtensa-esp32s3-elf-addr2line -pfiaC -e $(BUILD_DIR)/keira.elf $(BT) .PHONY: clang-format clang-format: ## Run clang-format check - find \ - . \ - -not \( -name .ccls-cache -prune \) \ - -not \( -name .pio -prune \) \ - -not \( -name doomgeneric -prune \) \ - -not \( -name bak -prune \) \ - -not \( -name mJS -prune \) \ - -not \( -name SimpleFTPServer -prune \) \ - -not \( -name LodePNG -prune \) \ - -iname *.h \ - -o -iname *.cpp \ - -o -iname *.c \ - -o -iname *.hpp \ - -o -iname *.h \ + find . \ + \( $(foreach d,$(LINT_EXCLUDE),-name $(notdir $(d)) -o) -false \) -prune \ + -o \( -iname '*.h' -o -iname '*.hpp' -o -iname '*.c' -o -iname '*.cpp' \) -print \ | xargs $(CLANG_FORMAT) --dry-run --Werror .PHONY: cppcheck cppcheck: ## Run cppcheck check - $(CPPCHECK) . -i.ccls-cache -i.pio -idoomgeneric -ibak -imJS -iSimpleFTPServer -iLodePNG \ + $(CPPCHECK) . $(foreach d,$(LINT_EXCLUDE),-i$(d)) \ --enable=performance,style \ --suppress=knownPointerToBool \ --suppress=noCopyConstructor \ @@ -55,6 +81,7 @@ cppcheck: ## Run cppcheck check --suppress=useStlAlgorithm \ --inline-suppr \ --error-exitcode=1 + .PHONY: checklang checklang: ## Run localization files check python tools/checklang.py diff --git a/README.md b/README.md index ce9986bb..184b4bfd 100644 --- a/README.md +++ b/README.md @@ -9,8 +9,8 @@ KeiraOS, операційна система для консолей [![Lilka](https://github.com/lilka-dev/lilka)] -![Лілка v2](./img/v21.jpg) -![Main menu](./img/menu.jpg) +![Лілка v2](./data/img/v21.jpg) +![Main menu](./data/img/menu.jpg) ## 🛠️ Як прошити Lilka (KeiraOS) @@ -83,12 +83,27 @@ KeiraOS, операційна система для консолей [![Lilka](h --- +## Збірка з вихідного коду + +Keira збирається за допомогою ESP-IDF **v4.4.7** та Arduino-ESP32 **2.0.17** як компонента ESP-IDF. Усі бібліотеки підключені як git-підмодулі з зафіксованими версіями в `components/`. + +```bash +git clone --recurse-submodules --shallow-submodules https://github.com/lilka-dev/keira +cd keira +make docker-build # збірка в Docker-образі espressif/idf:v4.4.7 +# або з локальним ESP-IDF v4.4.7: +make build +make flash PORT=/dev/ttyACM0 +``` + +`make help` покаже всі доступні команди. Детальніше: [документація](https://docs.lilka.dev/projects/keira/uk/latest/flashing/). + ## Документація Повна документація проєкту буде доступна ось тут: ## Архітектура -![Keira Architecture](./img/keira.png) +![Keira Architecture](./data/img/keira.png) ## Спільнота diff --git a/boards/lilka_v2/board.cmake b/boards/lilka_v2/board.cmake new file mode 100644 index 00000000..fd62da88 --- /dev/null +++ b/boards/lilka_v2/board.cmake @@ -0,0 +1,17 @@ +# Lilka v2: ESP32-S3, 16 MB QIO flash, 8 MB octal PSRAM + +set(IDF_TARGET "esp32s3" CACHE STRING "IDF Build Target") + +# arduino-esp32 2.0.17 supports ESP-IDF 4.4.x only +set(KEIRA_IDF_VERSION "4.4.7") + +set(KEIRA_BOARD_DEFINITIONS + ARDUINO_LILKA + LILKA_VERSION=2 + ARDUINO_USB_MODE=1 + ARDUINO_USB_CDC_ON_BOOT=1 + ARDUINO_RUNNING_CORE=1 + ARDUINO_EVENT_RUNNING_CORE=1 + BOARD_HAS_PSRAM + F_CPU=240000000L +) diff --git a/boards/lilka_v2/partitions.csv b/boards/lilka_v2/partitions.csv new file mode 100644 index 00000000..28511d0a --- /dev/null +++ b/boards/lilka_v2/partitions.csv @@ -0,0 +1,7 @@ +# Name, Type, SubType, Offset, Size, Flags +nvs, data, nvs, 0x9000, 0x5000, +otadata, data, ota, 0xe000, 0x2000, +app0, app, ota_0, 0x10000, 0x640000, +app1, app, ota_1, 0x650000,0x640000, +spiffs, data, spiffs, 0xc90000,0x360000, +coredump, data, coredump,0xFF0000,0x10000, \ No newline at end of file diff --git a/boards/lilka_v2/sdkconfig.defaults b/boards/lilka_v2/sdkconfig.defaults new file mode 100644 index 00000000..85531250 --- /dev/null +++ b/boards/lilka_v2/sdkconfig.defaults @@ -0,0 +1,92 @@ +# Lilka v2 (ESP32-S3) sdkconfig defaults for ESP-IDF 4.4.7 + arduino-esp32 2.0.17. +# Derived from arduino-esp32 2.0.17's prebuilt esp32s3 sdkconfig (qio_opi variant), the one +# PlatformIO builds linked against, minimized to non-default values. + +CONFIG_BOOTLOADER_LOG_LEVEL_NONE=y +CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y +CONFIG_BOOTLOADER_SKIP_VALIDATE_IN_DEEP_SLEEP=y +CONFIG_ESPTOOLPY_FLASHMODE_QIO=y +CONFIG_ESPTOOLPY_FLASHSIZE_16MB=y +# CONFIG_ESPTOOLPY_FLASHSIZE_DETECT is not set +CONFIG_PARTITION_TABLE_CUSTOM=y +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="boards/lilka_v2/partitions.csv" +CONFIG_AUTOSTART_ARDUINO=y +CONFIG_ARDUHAL_ESP_LOG=y +CONFIG_COMPILER_OPTIMIZATION_SIZE=y +CONFIG_COMPILER_CXX_EXCEPTIONS=y +CONFIG_COMPILER_STACK_CHECK_MODE_NORM=y +CONFIG_COMPILER_WARN_WRITE_STRINGS=y +CONFIG_BT_ENABLED=y +CONFIG_BT_BLE_42_FEATURES_SUPPORTED=y +CONFIG_BLE_MESH=y +# CONFIG_SPI_MASTER_ISR_IN_IRAM is not set +# CONFIG_SPI_SLAVE_ISR_IN_IRAM is not set +CONFIG_ESP32S3_DEFAULT_CPU_FREQ_240=y +CONFIG_ESP32S3_SPIRAM_SUPPORT=y +CONFIG_SPIRAM_MODE_OCT=y +CONFIG_SPIRAM_SPEED_80M=y +# CONFIG_SPIRAM_BOOT_INIT is not set +CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=4096 +CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP=y +CONFIG_SPIRAM_MALLOC_RESERVE_INTERNAL=0 +CONFIG_ESP32S3_RTC_CLK_CAL_CYCLES=576 +CONFIG_ETH_SPI_ETHERNET_DM9051=y +CONFIG_ETH_SPI_ETHERNET_W5500=y +CONFIG_ESP_HTTP_CLIENT_ENABLE_BASIC_AUTH=y +CONFIG_HTTPD_MAX_REQ_HDR_LEN=1024 +CONFIG_HTTPD_WS_SUPPORT=y +CONFIG_ESP_HTTPS_SERVER_ENABLE=y +CONFIG_ESP32S3_UNIVERSAL_MAC_ADDRESSES_TWO=y +# CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND is not set +CONFIG_ESP_IPC_TASK_STACK_SIZE=1024 +CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=2048 +CONFIG_ESP_MAIN_TASK_STACK_SIZE=4096 +CONFIG_ESP_TASK_WDT_PANIC=y +# CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU1 is not set +CONFIG_ESP_TIMER_TASK_STACK_SIZE=4096 +CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=8 +CONFIG_ESP32_WIFI_STATIC_TX_BUFFER_NUM=8 +CONFIG_ESP32_WIFI_CACHE_TX_BUFFER_NUM=16 +CONFIG_ESP32_WIFI_CSI_ENABLED=y +# CONFIG_ESP32_WIFI_IRAM_OPT is not set +# CONFIG_ESP32_WIFI_RX_IRAM_OPT is not set +CONFIG_ESP_WIFI_FTM_ENABLE=y +CONFIG_ESP_COREDUMP_ENABLE_TO_FLASH=y +CONFIG_ESP_COREDUMP_STACK_SIZE=1024 +CONFIG_FATFS_CODEPAGE_850=y +CONFIG_FATFS_LFN_STACK=y +CONFIG_FATFS_API_ENCODING_UTF_8=y +# CONFIG_FMB_CONTROLLER_SLAVE_ID_SUPPORT is not set +CONFIG_FMB_TIMER_PORT_ENABLED=y +CONFIG_FREERTOS_HZ=1000 +# CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION is not set +CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK=y +CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1024 +CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=3120 +CONFIG_HEAP_POISONING_LIGHT=y +CONFIG_LOG_DEFAULT_LEVEL_ERROR=y +# CONFIG_LOG_COLORS is not set +CONFIG_LWIP_MAX_SOCKETS=16 +CONFIG_LWIP_ETHARP_TRUST_IP_MAC=y +# CONFIG_LWIP_DHCP_DOES_ARP_CHECK is not set +CONFIG_LWIP_DHCP_RESTORE_LAST_IP=y +CONFIG_LWIP_DHCP_OPTIONS_LEN=128 +CONFIG_LWIP_IPV6_AUTOCONFIG=y +CONFIG_LWIP_TCP_SYNMAXRTX=6 +CONFIG_LWIP_TCP_MSS=1436 +CONFIG_LWIP_TCP_RTO_TIME=3000 +CONFIG_LWIP_TCPIP_TASK_STACK_SIZE=2560 +CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU0=y +CONFIG_LWIP_SNTP_MAX_SERVERS=3 +CONFIG_LWIP_DHCP_GET_NTP_SRV=y +CONFIG_LWIP_SNTP_UPDATE_DELAY=10800000 +# CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN is not set +CONFIG_MBEDTLS_PSK_MODES=y +CONFIG_MBEDTLS_KEY_EXCHANGE_PSK=y +CONFIG_MBEDTLS_SSL_PROTO_DTLS=y +CONFIG_MBEDTLS_CAMELLIA_C=y +CONFIG_OPENSSL_ASSERT_DO_NOTHING=y +CONFIG_PTHREAD_TASK_STACK_SIZE_DEFAULT=2048 +CONFIG_SPI_FLASH_ERASE_YIELD_DURATION_MS=10 +CONFIG_SPI_FLASH_ERASE_YIELD_TICKS=2 +CONFIG_SPI_FLASH_WRITE_CHUNK_SIZE=4096 diff --git a/components/AnimatedGIF/AnimatedGIF b/components/AnimatedGIF/AnimatedGIF new file mode 160000 index 00000000..4a42a942 --- /dev/null +++ b/components/AnimatedGIF/AnimatedGIF @@ -0,0 +1 @@ +Subproject commit 4a42a942003e2f697deae5faf59b6718b7b5159e diff --git a/components/AnimatedGIF/CMakeLists.txt b/components/AnimatedGIF/CMakeLists.txt new file mode 100644 index 00000000..7b53a365 --- /dev/null +++ b/components/AnimatedGIF/CMakeLists.txt @@ -0,0 +1,8 @@ +# AnimatedGIF (AnimatedGIF/ submodule) +set(root "${CMAKE_CURRENT_LIST_DIR}/AnimatedGIF/src") + +idf_component_register( + SRCS "${root}/AnimatedGIF.cpp" + INCLUDE_DIRS "${root}" + REQUIRES arduino +) diff --git a/components/ArduinoJson/ArduinoJson b/components/ArduinoJson/ArduinoJson new file mode 160000 index 00000000..36e1eecc --- /dev/null +++ b/components/ArduinoJson/ArduinoJson @@ -0,0 +1 @@ +Subproject commit 36e1eecc7d246d829bc51e61d6ac541893c646a3 diff --git a/components/ArduinoJson/CMakeLists.txt b/components/ArduinoJson/CMakeLists.txt new file mode 100644 index 00000000..38b39da4 --- /dev/null +++ b/components/ArduinoJson/CMakeLists.txt @@ -0,0 +1,5 @@ +# ArduinoJson (ArduinoJson/ submodule), header only +idf_component_register( + INCLUDE_DIRS "${CMAKE_CURRENT_LIST_DIR}/ArduinoJson/src" + REQUIRES arduino +) diff --git a/components/Arduino_GFX/Arduino_GFX b/components/Arduino_GFX/Arduino_GFX new file mode 160000 index 00000000..e7f29f12 --- /dev/null +++ b/components/Arduino_GFX/Arduino_GFX @@ -0,0 +1 @@ +Subproject commit e7f29f12b247015c0cf99f59a525e30cd1b1dab1 diff --git a/components/Arduino_GFX/CMakeLists.txt b/components/Arduino_GFX/CMakeLists.txt new file mode 100644 index 00000000..449e4719 --- /dev/null +++ b/components/Arduino_GFX/CMakeLists.txt @@ -0,0 +1,19 @@ +# Arduino_GFX (Arduino_GFX/ submodule) +# Only the ST7789 display over ESP32 SPI is used by Lilka, so other drivers are not compiled. +set(root "${CMAKE_CURRENT_LIST_DIR}/Arduino_GFX/src") + +file(GLOB srcs "${root}/*.cpp" "${root}/canvas/*.cpp") +# Factory for every supported display, would pull in all drivers +list(REMOVE_ITEM srcs "${root}/Arduino_GFX_Library.cpp") +list(APPEND srcs + "${root}/databus/Arduino_ESP32SPI.cpp" + "${root}/databus/Arduino_HWSPI.cpp" + "${root}/display/Arduino_ST7789.cpp" +) + +idf_component_register( + SRCS ${srcs} + INCLUDE_DIRS "${root}" + # U8g2 font support is enabled by __has_include(), so it must be visible here + REQUIRES arduino U8g2 esp_lcd driver +) diff --git a/components/ESP8266Audio/CMakeLists.txt b/components/ESP8266Audio/CMakeLists.txt new file mode 100644 index 00000000..f5eeee07 --- /dev/null +++ b/components/ESP8266Audio/CMakeLists.txt @@ -0,0 +1,10 @@ +# ESP8266Audio (ESP8266Audio/ submodule) +set(root "${CMAKE_CURRENT_LIST_DIR}/ESP8266Audio/src") + +file(GLOB_RECURSE srcs "${root}/*.c" "${root}/*.cpp") + +idf_component_register( + SRCS ${srcs} + INCLUDE_DIRS "${root}" + REQUIRES arduino driver +) diff --git a/components/ESP8266Audio/ESP8266Audio b/components/ESP8266Audio/ESP8266Audio new file mode 160000 index 00000000..724b6d60 --- /dev/null +++ b/components/ESP8266Audio/ESP8266Audio @@ -0,0 +1 @@ +Subproject commit 724b6d606ee3581c6addc16392cfa836cef3aba7 diff --git a/components/ESPTelnet/CMakeLists.txt b/components/ESPTelnet/CMakeLists.txt new file mode 100644 index 00000000..99523db6 --- /dev/null +++ b/components/ESPTelnet/CMakeLists.txt @@ -0,0 +1,10 @@ +# ESPTelnet (ESPTelnet/ submodule) +set(root "${CMAKE_CURRENT_LIST_DIR}/ESPTelnet/src") + +file(GLOB srcs "${root}/*.cpp") + +idf_component_register( + SRCS ${srcs} + INCLUDE_DIRS "${root}" + REQUIRES arduino +) diff --git a/components/ESPTelnet/ESPTelnet b/components/ESPTelnet/ESPTelnet new file mode 160000 index 00000000..e8bfb78e --- /dev/null +++ b/components/ESPTelnet/ESPTelnet @@ -0,0 +1 @@ +Subproject commit e8bfb78e3c9a5dad064fe7147736d89ba28278de diff --git a/components/JPEGDEC/CMakeLists.txt b/components/JPEGDEC/CMakeLists.txt new file mode 100644 index 00000000..c631bd25 --- /dev/null +++ b/components/JPEGDEC/CMakeLists.txt @@ -0,0 +1,10 @@ +# JPEGDEC (JPEGDEC/ submodule), with ESP32-S3 SIMD routines +set(root "${CMAKE_CURRENT_LIST_DIR}/JPEGDEC/src") + +file(GLOB srcs "${root}/*.cpp" "${root}/*.S") + +idf_component_register( + SRCS ${srcs} + INCLUDE_DIRS "${root}" + REQUIRES arduino esp-dsp +) diff --git a/components/JPEGDEC/JPEGDEC b/components/JPEGDEC/JPEGDEC new file mode 160000 index 00000000..ae9705ab --- /dev/null +++ b/components/JPEGDEC/JPEGDEC @@ -0,0 +1 @@ +Subproject commit ae9705abeeebd057c3d0a50c1e58bdec532c76c6 diff --git a/components/SimpleFTPServer/CMakeLists.txt b/components/SimpleFTPServer/CMakeLists.txt new file mode 100644 index 00000000..4335c97b --- /dev/null +++ b/components/SimpleFTPServer/CMakeLists.txt @@ -0,0 +1,8 @@ +# SimpleFTPServer (vendored in src/) +set(root "${CMAKE_CURRENT_LIST_DIR}/src") + +idf_component_register( + SRCS "${root}/FtpServer.cpp" + INCLUDE_DIRS "${root}" + REQUIRES arduino +) diff --git a/lib/SimpleFTPServer/library.json b/components/SimpleFTPServer/library.json similarity index 100% rename from lib/SimpleFTPServer/library.json rename to components/SimpleFTPServer/library.json diff --git a/lib/SimpleFTPServer/src/FtpServer.cpp b/components/SimpleFTPServer/src/FtpServer.cpp similarity index 100% rename from lib/SimpleFTPServer/src/FtpServer.cpp rename to components/SimpleFTPServer/src/FtpServer.cpp diff --git a/lib/SimpleFTPServer/src/FtpServer.h b/components/SimpleFTPServer/src/FtpServer.h similarity index 100% rename from lib/SimpleFTPServer/src/FtpServer.h rename to components/SimpleFTPServer/src/FtpServer.h diff --git a/lib/SimpleFTPServer/src/FtpServerKey.h b/components/SimpleFTPServer/src/FtpServerKey.h similarity index 100% rename from lib/SimpleFTPServer/src/FtpServerKey.h rename to components/SimpleFTPServer/src/FtpServerKey.h diff --git a/components/U8g2/CMakeLists.txt b/components/U8g2/CMakeLists.txt new file mode 100644 index 00000000..3e92305e --- /dev/null +++ b/components/U8g2/CMakeLists.txt @@ -0,0 +1,12 @@ +# U8g2 (U8g2_Arduino/ submodule) +# Only font data is used, so the u8x8 display drivers are not compiled. +set(root "${CMAKE_CURRENT_LIST_DIR}/U8g2_Arduino/src") + +file(GLOB srcs "${root}/*.cpp" "${root}/clib/*.c") +list(FILTER srcs EXCLUDE REGEX "/clib/u8x8[^/]*\\.c$") + +idf_component_register( + SRCS ${srcs} + INCLUDE_DIRS "${root}" + REQUIRES arduino +) diff --git a/components/U8g2/U8g2_Arduino b/components/U8g2/U8g2_Arduino new file mode 160000 index 00000000..ca1caf36 --- /dev/null +++ b/components/U8g2/U8g2_Arduino @@ -0,0 +1 @@ +Subproject commit ca1caf364434809734e82e7d7cf66947d4e77bdf diff --git a/components/arduino b/components/arduino new file mode 160000 index 00000000..5e19e086 --- /dev/null +++ b/components/arduino @@ -0,0 +1 @@ +Subproject commit 5e19e086c43d0fa5e5a596497ff8f11a0a43f6c2 diff --git a/components/arduino_tinyusb/CMakeLists.txt b/components/arduino_tinyusb/CMakeLists.txt new file mode 100644 index 00000000..b3494300 --- /dev/null +++ b/components/arduino_tinyusb/CMakeLists.txt @@ -0,0 +1,67 @@ +# TinyUSB glue for arduino-esp32, from espressif/esp32-arduino-lib-builder@3eb9cb0 (release/v4.4), +# components/arduino_tinyusb. TinyUSB itself is the tinyusb/ submodule. +# Only change from upstream: the app component is src, not main. + +idf_component_register(REQUIRES esp_rom freertos soc PRIV_REQUIRES arduino src) + +if(CONFIG_TINYUSB_ENABLED) + + ### variables ### + ################# + # if(IDF_TARGET STREQUAL "esp32s2") + set(compile_options + "-DCFG_TUSB_MCU=OPT_MCU_ESP32S2" + "-DCFG_TUSB_DEBUG=${CONFIG_TINYUSB_DEBUG_LEVEL}" + "-Wno-type-limits" # needed for the vanila tinyusb with turned off classes + ) + # elseif(IDF_TARGET STREQUAL "esp32s3") + # set(compile_options + # "-DCFG_TUSB_MCU=OPT_MCU_ESP32S2" + # "-DCFG_TUSB_DEBUG=${CONFIG_TINYUSB_DEBUG_LEVEL}" + # "-Wno-type-limits" # needed for the vanila tinyusb with turned off classes + # ) + # endif() + idf_component_get_property(FREERTOS_ORIG_INCLUDE_PATH freertos + ORIG_INCLUDE_PATH) + set(includes_private + # tusb: + "${COMPONENT_DIR}/tinyusb/hw/bsp/" + "${COMPONENT_DIR}/tinyusb/src/" + "${COMPONENT_DIR}/tinyusb/src/device" + ) + + set(includes_public + # tusb: + "${FREERTOS_ORIG_INCLUDE_PATH}" + "${COMPONENT_DIR}/tinyusb/src/" + # espressif: + "${COMPONENT_DIR}/include") + set(srcs + # espressif: + "${COMPONENT_DIR}/src/dcd_esp32sx.c" + # tusb: + #"${COMPONENT_DIR}/tinyusb/src/portable/espressif/esp32sx/dcd_esp32sx.c" + "${COMPONENT_DIR}/tinyusb/src/class/cdc/cdc_device.c" + "${COMPONENT_DIR}/tinyusb/src/class/hid/hid_device.c" + "${COMPONENT_DIR}/tinyusb/src/class/midi/midi_device.c" + "${COMPONENT_DIR}/tinyusb/src/class/msc/msc_device.c" + "${COMPONENT_DIR}/tinyusb/src/class/video/video_device.c" + "${COMPONENT_DIR}/tinyusb/src/class/dfu/dfu_rt_device.c" + "${COMPONENT_DIR}/tinyusb/src/class/dfu/dfu_device.c" + "${COMPONENT_DIR}/tinyusb/src/class/vendor/vendor_device.c" + "${COMPONENT_DIR}/tinyusb/src/common/tusb_fifo.c" + "${COMPONENT_DIR}/tinyusb/src/device/usbd_control.c" + "${COMPONENT_DIR}/tinyusb/src/device/usbd.c" + "${COMPONENT_DIR}/tinyusb/src/tusb.c") + + ### tinyusb lib ### + ################### + add_library(arduino_tinyusb STATIC ${srcs}) + target_include_directories( + arduino_tinyusb + PUBLIC ${includes_public} + PRIVATE ${includes_private}) + target_compile_options(arduino_tinyusb PRIVATE ${compile_options}) + target_link_libraries(${COMPONENT_TARGET} INTERFACE arduino_tinyusb) + +endif() diff --git a/components/arduino_tinyusb/Kconfig.projbuild b/components/arduino_tinyusb/Kconfig.projbuild new file mode 100755 index 00000000..80983657 --- /dev/null +++ b/components/arduino_tinyusb/Kconfig.projbuild @@ -0,0 +1,243 @@ +menu "Arduino TinyUSB" + + config TINYUSB_ENABLED + bool "Enable TinyUSB driver" + default y + depends on IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3 + select FREERTOS_SUPPORT_STATIC_ALLOCATION + select FREERTOS_USE_AUTHENTIC_INCLUDE_PATHS + help + Adds support for TinyUSB + + menu "Serial (CDC) driver" + depends on TINYUSB_ENABLED + + config TINYUSB_CDC_ENABLED + bool "Enable USB Serial (CDC) TinyUSB driver" + default y + help + Enable USB Serial (CDC) TinyUSB driver. + + config TINYUSB_DESC_CDC_STRING + string "CDC Device String" + default "Espressif CDC Device" + depends on TINYUSB_CDC_ENABLED + help + Specify name of the CDC device + + config TINYUSB_CDC_RX_BUFSIZE + int "CDC FIFO size of RX" + default 64 + depends on TINYUSB_CDC_ENABLED + help + CDC FIFO size of RX + + config TINYUSB_CDC_TX_BUFSIZE + int "CDC FIFO size of TX" + default 64 + depends on TINYUSB_CDC_ENABLED + help + CDC FIFO size of TX + + endmenu + + menu "Mass Storage (MSC) driver" + depends on TINYUSB_ENABLED + + config TINYUSB_MSC_ENABLED + bool "Enable USB Mass Storage (MSC) TinyUSB driver" + default y + help + Enable USB Mass Storage (MSC) TinyUSB driver. + + config TINYUSB_DESC_MSC_STRING + string "MSC Device String" + default "Espressif MSC Device" + depends on TINYUSB_MSC_ENABLED + help + Specify name of the MSC device + + config TINYUSB_MSC_BUFSIZE + int "MSC Buffer size" + range 512 4096 + default 4096 + depends on TINYUSB_MSC_ENABLED + help + MSC Buffer size + + endmenu + + menu "Human Interface (HID) driver" + depends on TINYUSB_ENABLED + + config TINYUSB_HID_ENABLED + bool "Enable USB Human Interface (HID) TinyUSB driver" + default y + help + Enable USB Human Interface (HID) TinyUSB driver. + + config TINYUSB_DESC_HID_STRING + string "HID Device String" + default "Espressif HID Device" + depends on TINYUSB_HID_ENABLED + help + Specify name of the HID device + + config TINYUSB_HID_BUFSIZE + int "HID Buffer size" + default 64 + depends on TINYUSB_HID_ENABLED + help + HID Buffer size. Should be sufficient to hold ID (if any) + Data + + endmenu + + menu "MIDI driver" + depends on TINYUSB_ENABLED + + config TINYUSB_MIDI_ENABLED + bool "Enable USB MIDI TinyUSB driver" + default y + help + Enable USB MIDI TinyUSB driver. + + config TINYUSB_DESC_MIDI_STRING + string "MIDI Device String" + default "Espressif MIDI Device" + depends on TINYUSB_MIDI_ENABLED + help + Specify name of the MIDI device + + config TINYUSB_MIDI_RX_BUFSIZE + int "MIDI FIFO size of RX" + default 64 + depends on TINYUSB_MIDI_ENABLED + help + MIDI FIFO size of RX + + config TINYUSB_MIDI_TX_BUFSIZE + int "MIDI FIFO size of TX" + default 64 + depends on TINYUSB_MIDI_ENABLED + help + MIDI FIFO size of TX + + endmenu + + menu "VIDEO driver" + depends on TINYUSB_ENABLED + + config TINYUSB_VIDEO_ENABLED + bool "Enable USB VIDEO TinyUSB driver" + default y + help + Enable USB VIDEO TinyUSB driver. + + config TINYUSB_DESC_VIDEO_STRING + string "VIDEO Device String" + default "Espressif VIDEO Device" + depends on TINYUSB_VIDEO_ENABLED + help + Specify name of the VIDEO device + + config TINYUSB_VIDEO_STREAMING_BUFSIZE + int "VIDEO streaming endpoint size" + range 0 64 + default 64 + depends on TINYUSB_VIDEO_ENABLED + help + VIDEO streaming endpoint size + + config TINYUSB_VIDEO_STREAMING_IFS + int "Number of VIDEO streaming interfaces" + range 1 3 + default 1 + depends on TINYUSB_VIDEO_ENABLED + help + The number of VIDEO streaming interfaces + endmenu + + menu "DFU Runtime driver" + depends on TINYUSB_ENABLED + + config TINYUSB_DFU_RT_ENABLED + bool "Enable USB DFU Runtime TinyUSB driver" + default y + help + Enable USB DFU Runtime TinyUSB driver. + + config TINYUSB_DESC_DFU_RT_STRING + string "DFU_RT Device String" + default "Espressif DFU_RT Device" + depends on TINYUSB_DFU_RT_ENABLED + help + Specify name of the DFU_RT device + + endmenu + + menu "DFU driver" + depends on TINYUSB_ENABLED + + config TINYUSB_DFU_ENABLED + bool "Enable USB DFU TinyUSB driver" + default y + help + Enable USB DFU TinyUSB driver. + + config TINYUSB_DESC_DFU_STRING + string "DFU Device String" + default "Espressif DFU Device" + depends on TINYUSB_DFU_ENABLED + help + Specify name of the DFU device + + config TINYUSB_DFU_BUFSIZE + int "DFU buffer size" + default 4096 + depends on TINYUSB_DFU_ENABLED + help + DFU buffer size + + endmenu + + menu "VENDOR driver" + depends on TINYUSB_ENABLED + + config TINYUSB_VENDOR_ENABLED + bool "Enable USB VENDOR TinyUSB driver" + default y + help + Enable USB VENDOR TinyUSB driver. + + config TINYUSB_DESC_VENDOR_STRING + string "VENDOR Device String" + default "Espressif VENDOR Device" + depends on TINYUSB_VENDOR_ENABLED + help + Specify name of the VENDOR device + + config TINYUSB_VENDOR_RX_BUFSIZE + int "VENDOR FIFO size of RX" + default 64 + depends on TINYUSB_VENDOR_ENABLED + help + VENDOR FIFO size of RX + + config TINYUSB_VENDOR_TX_BUFSIZE + int "VENDOR FIFO size of TX" + default 64 + depends on TINYUSB_VENDOR_ENABLED + help + VENDOR FIFO size of TX + + endmenu + + config TINYUSB_DEBUG_LEVEL + int "TinyUSB log level (0-3)" + default 0 + range 0 3 + depends on TINYUSB_ENABLED + help + Define amount of log output from TinyUSB + +endmenu diff --git a/components/arduino_tinyusb/include/tusb_config.h b/components/arduino_tinyusb/include/tusb_config.h new file mode 100755 index 00000000..ee1e5d27 --- /dev/null +++ b/components/arduino_tinyusb/include/tusb_config.h @@ -0,0 +1,143 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2019 Ha Thach (tinyusb.org), + * Additions Copyright (c) 2020, Espressif Systems (Shanghai) PTE LTD + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ + +#pragma once +#include "tusb_option.h" +#include "sdkconfig.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* */ +/* KCONFIG */ +/* */ + +#ifndef CONFIG_TINYUSB_CDC_ENABLED +# define CONFIG_TINYUSB_CDC_ENABLED 0 +#endif + +#ifndef CONFIG_TINYUSB_MSC_ENABLED +# define CONFIG_TINYUSB_MSC_ENABLED 0 +#endif + +#ifndef CONFIG_TINYUSB_HID_ENABLED +# define CONFIG_TINYUSB_HID_ENABLED 0 +#endif + +#ifndef CONFIG_TINYUSB_MIDI_ENABLED +# define CONFIG_TINYUSB_MIDI_ENABLED 0 +#endif + +#ifndef CONFIG_TINYUSB_VIDEO_ENABLED +# define CONFIG_TINYUSB_VIDEO_ENABLED 0 +#endif + +#ifndef CONFIG_TINYUSB_CUSTOM_CLASS_ENABLED +# define CONFIG_TINYUSB_CUSTOM_CLASS_ENABLED 0 +#endif + +#ifndef CONFIG_TINYUSB_DFU_RT_ENABLED +# define CONFIG_TINYUSB_DFU_RT_ENABLED 0 +#endif + +#ifndef CONFIG_TINYUSB_DFU_ENABLED +# define CONFIG_TINYUSB_DFU_ENABLED 0 +#endif + +#ifndef CONFIG_TINYUSB_VENDOR_ENABLED +# define CONFIG_TINYUSB_VENDOR_ENABLED 0 +#endif + +/* */ +/* COMMON CONFIGURATION */ +/* */ + +#define CFG_TUSB_MCU OPT_MCU_ESP32S2 +#define CFG_TUSB_RHPORT0_MODE OPT_MODE_DEVICE +#define CFG_TUSB_OS OPT_OS_FREERTOS + +/* USB DMA on some MCUs can only access a specific SRAM region with restriction on alignment. + * Tinyusb use follows macros to declare transferring memory so that they can be put + * into those specific section. + * e.g + * - CFG_TUSB_MEM SECTION : __attribute__ (( section(".usb_ram") )) + * - CFG_TUSB_MEM_ALIGN : __attribute__ ((aligned(4))) + */ +#ifndef CFG_TUSB_MEM_SECTION +# define CFG_TUSB_MEM_SECTION +#endif + +#ifndef CFG_TUSB_MEM_ALIGN +# define CFG_TUSB_MEM_ALIGN TU_ATTR_ALIGNED(4) +#endif + +/* */ +/* DRIVER CONFIGURATION */ +/* */ + +#define CFG_TUD_MAINTASK_SIZE 4096 +#define CFG_TUD_ENDOINT0_SIZE 64 + +// Enabled Drivers +#define CFG_TUD_CDC CONFIG_TINYUSB_CDC_ENABLED +#define CFG_TUD_MSC CONFIG_TINYUSB_MSC_ENABLED +#define CFG_TUD_HID CONFIG_TINYUSB_HID_ENABLED +#define CFG_TUD_MIDI CONFIG_TINYUSB_MIDI_ENABLED +#define CFG_TUD_VIDEO CONFIG_TINYUSB_VIDEO_ENABLED +#define CFG_TUD_CUSTOM_CLASS CONFIG_TINYUSB_CUSTOM_CLASS_ENABLED +#define CFG_TUD_DFU_RUNTIME CONFIG_TINYUSB_DFU_RT_ENABLED +#define CFG_TUD_DFU CONFIG_TINYUSB_DFU_ENABLED +#define CFG_TUD_VENDOR CONFIG_TINYUSB_VENDOR_ENABLED + +// CDC FIFO size of TX and RX +#define CFG_TUD_CDC_RX_BUFSIZE CONFIG_TINYUSB_CDC_RX_BUFSIZE +#define CFG_TUD_CDC_TX_BUFSIZE CONFIG_TINYUSB_CDC_TX_BUFSIZE + +// MSC Buffer size of Device Mass storage: +#define CFG_TUD_MSC_BUFSIZE CONFIG_TINYUSB_MSC_BUFSIZE + +// HID buffer size Should be sufficient to hold ID (if any) + Data +#define CFG_TUD_HID_BUFSIZE CONFIG_TINYUSB_HID_BUFSIZE + +// MIDI FIFO size of TX and RX +#define CFG_TUD_MIDI_RX_BUFSIZE CONFIG_TINYUSB_MIDI_RX_BUFSIZE +#define CFG_TUD_MIDI_TX_BUFSIZE CONFIG_TINYUSB_MIDI_TX_BUFSIZE + +// The number of video streaming interfaces and endpoint size +#define CFG_TUD_VIDEO_STREAMING CONFIG_TINYUSB_VIDEO_STREAMING_IFS +#define CFG_TUD_VIDEO_STREAMING_EP_BUFSIZE CONFIG_TINYUSB_VIDEO_STREAMING_BUFSIZE + +// DFU buffer size +#define CFG_TUD_DFU_XFER_BUFSIZE CONFIG_TINYUSB_DFU_BUFSIZE + +// VENDOR FIFO size of TX and RX +#define CFG_TUD_VENDOR_RX_BUFSIZE CONFIG_TINYUSB_VENDOR_RX_BUFSIZE +#define CFG_TUD_VENDOR_TX_BUFSIZE CONFIG_TINYUSB_VENDOR_TX_BUFSIZE + +#ifdef __cplusplus +} +#endif diff --git a/components/arduino_tinyusb/src/dcd_esp32sx.c b/components/arduino_tinyusb/src/dcd_esp32sx.c new file mode 100755 index 00000000..324aad59 --- /dev/null +++ b/components/arduino_tinyusb/src/dcd_esp32sx.c @@ -0,0 +1,965 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2018 Scott Shawcroft, 2019 William D. Jones for Adafruit Industries + * Copyright (c) 2019 Ha Thach (tinyusb.org) + * Additions Copyright (c) 2020, Espressif Systems (Shanghai) Co. Ltd. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * This file is part of the TinyUSB stack. + */ + +#include "tusb_option.h" + +#if (((CFG_TUSB_MCU == OPT_MCU_ESP32S2) || (CFG_TUSB_MCU == OPT_MCU_ESP32S3)) && CFG_TUD_ENABLED) + +// Espressif +#include "freertos/xtensa_api.h" +#include "esp_intr_alloc.h" +#include "esp_log.h" +#include "soc/dport_reg.h" +#include "soc/gpio_sig_map.h" +#include "soc/usb_periph.h" +#include "soc/usb_reg.h" +#include "soc/usb_struct.h" +#include "soc/periph_defs.h" // for interrupt source +#include "soc/usb_wrap_struct.h" + +#include "device/dcd.h" + +#ifndef USB_OUT_EP_NUM +#define USB_OUT_EP_NUM ((int) (sizeof(USB0.out_ep_reg) / sizeof(USB0.out_ep_reg[0]))) +#endif + +#ifndef USB_IN_EP_NUM +#define USB_IN_EP_NUM ((int) (sizeof(USB0.in_ep_reg) / sizeof(USB0.in_ep_reg[0]))) +#endif + +// Max number of bi-directional endpoints including EP0 +// Note: ESP32S2 specs say there are only up to 5 IN active endpoints include EP0 +// We should probably prohibit enabling Endpoint IN > 4 (not done yet) +#define EP_MAX USB_OUT_EP_NUM + +// FIFO size in bytes +#define EP_FIFO_SIZE 1024 + +// Max number of IN EP FIFOs +#define EP_FIFO_NUM 5 + +typedef struct { + uint8_t *buffer; + // tu_fifo_t * ff; // TODO support dcd_edpt_xfer_fifo API + uint16_t total_len; + uint16_t queued_len; + uint16_t max_size; + bool short_packet; + uint8_t interval; +} xfer_ctl_t; + +static const char *TAG = "TUSB:DCD"; +static intr_handle_t usb_ih; + + +static uint32_t _setup_packet[2]; + +#define XFER_CTL_BASE(_ep, _dir) &xfer_status[_ep][_dir] +static xfer_ctl_t xfer_status[EP_MAX][2]; + +// Keep count of how many FIFOs are in use +static uint8_t _allocated_fifos = 1; //FIFO0 is always in use + +// Will either return an unused FIFO number, or 0 if all are used. +static uint8_t get_free_fifo(void) +{ + if (_allocated_fifos < EP_FIFO_NUM) return _allocated_fifos++; + return 0; +} + +// Setup the control endpoint 0. +static void bus_reset(void) +{ + for (int ep_num = 0; ep_num < USB_OUT_EP_NUM; ep_num++) { + USB0.out_ep_reg[ep_num].doepctl |= USB_DO_SNAK0_M; // DOEPCTL0_SNAK + } + + // clear device address + USB0.dcfg &= ~USB_DEVADDR_M; + + USB0.daintmsk = USB_OUTEPMSK0_M | USB_INEPMSK0_M; + USB0.doepmsk = USB_SETUPMSK_M | USB_XFERCOMPLMSK; + USB0.diepmsk = USB_TIMEOUTMSK_M | USB_DI_XFERCOMPLMSK_M /*| USB_INTKNTXFEMPMSK_M*/; + + // "USB Data FIFOs" section in reference manual + // Peripheral FIFO architecture + // + // --------------- 320 or 1024 ( 1280 or 4096 bytes ) + // | IN FIFO MAX | + // --------------- + // | ... | + // --------------- y + x + 16 + GRXFSIZ + // | IN FIFO 2 | + // --------------- x + 16 + GRXFSIZ + // | IN FIFO 1 | + // --------------- 16 + GRXFSIZ + // | IN FIFO 0 | + // --------------- GRXFSIZ + // | OUT FIFO | + // | ( Shared ) | + // --------------- 0 + // + // According to "FIFO RAM allocation" section in RM, FIFO RAM are allocated as follows (each word 32-bits): + // - Each EP IN needs at least max packet size, 16 words is sufficient for EP0 IN + // + // - All EP OUT shared a unique OUT FIFO which uses + // * 10 locations in hardware for setup packets + setup control words (up to 3 setup packets). + // * 2 locations for OUT endpoint control words. + // * 16 for largest packet size of 64 bytes. ( TODO Highspeed is 512 bytes) + // * 1 location for global NAK (not required/used here). + // * It is recommended to allocate 2 times the largest packet size, therefore + // Recommended value = 10 + 1 + 2 x (16+2) = 47 --> Let's make it 52 + USB0.grstctl |= 0x10 << USB_TXFNUM_S; // fifo 0x10, + USB0.grstctl |= USB_TXFFLSH_M; // Flush fifo + USB0.grxfsiz = 52; + + // Control IN uses FIFO 0 with 64 bytes ( 16 32-bit word ) + USB0.gnptxfsiz = (16 << USB_NPTXFDEP_S) | (USB0.grxfsiz & 0x0000ffffUL); + + // Ready to receive SETUP packet + USB0.out_ep_reg[0].doeptsiz |= USB_SUPCNT0_M; + + USB0.gintmsk |= USB_IEPINTMSK_M | USB_OEPINTMSK_M; +} + +static void enum_done_processing(void) +{ + ESP_EARLY_LOGV(TAG, "dcd_int_handler - Speed enumeration done! Sending DCD_EVENT_BUS_RESET then"); + // On current silicon on the Full Speed core, speed is fixed to Full Speed. + // However, keep for debugging and in case Low Speed is ever supported. + uint32_t enum_spd = (USB0.dsts >> USB_ENUMSPD_S) & (USB_ENUMSPD_V); + + // Maximum packet size for EP 0 is set for both directions by writing DIEPCTL + if (enum_spd == 0x03) { // Full-Speed (PHY on 48 MHz) + USB0.in_ep_reg[0].diepctl &= ~USB_D_MPS0_V; // 64 bytes + USB0.in_ep_reg[0].diepctl &= ~USB_D_STALL0_M; // clear Stall + xfer_status[0][TUSB_DIR_OUT].max_size = 64; + xfer_status[0][TUSB_DIR_IN].max_size = 64; + } else { + USB0.in_ep_reg[0].diepctl |= USB_D_MPS0_V; // 8 bytes + USB0.in_ep_reg[0].diepctl &= ~USB_D_STALL0_M; // clear Stall + xfer_status[0][TUSB_DIR_OUT].max_size = 8; + xfer_status[0][TUSB_DIR_IN].max_size = 8; + } +} + + +/*------------------------------------------------------------------*/ +/* Controller API + *------------------------------------------------------------------*/ +void dcd_init(uint8_t rhport) +{ + ESP_LOGV(TAG, "DCD init - Start"); + + bool did_persist = (USB_WRAP.date.val & (1 << 31)) != 0; + + if (did_persist) { + //Clear persistence of USB peripheral through reset + USB_WRAP.date.val = 0; + } else { + // A. Disconnect + ESP_LOGV(TAG, "DCD init - Soft DISCONNECT and Setting up"); + USB0.dctl |= USB_SFTDISCON_M; // Soft disconnect + + // B. Programming DCFG + /* If USB host misbehaves during status portion of control xfer + (non zero-length packet), send STALL back and discard. Full speed. */ + USB0.dcfg |= USB_NZSTSOUTHSHK_M | // NonZero .... STALL + (3 << 0); // dev speed: fullspeed 1.1 on 48 mhz // TODO no value in usb_reg.h (IDF-1476) + } + + USB0.gahbcfg |= USB_NPTXFEMPLVL_M | USB_GLBLLNTRMSK_M; // Global interruptions ON + USB0.gusbcfg |= USB_FORCEDEVMODE_M; // force devmode + USB0.gotgctl &= ~(USB_BVALIDOVVAL_M | USB_BVALIDOVEN_M | USB_VBVALIDOVVAL_M); //no overrides + + // C. Setting SNAKs, then connect + for (int n = 0; n < USB_OUT_EP_NUM; n++) { + USB0.out_ep_reg[n].doepctl |= USB_DO_SNAK0_M; // DOEPCTL0_SNAK + } + + if (!did_persist) { + // D. Interruption masking + USB0.gintmsk = 0; //mask all + USB0.gotgint = ~0U; //clear OTG ints + USB0.gintsts = ~0U; //clear pending ints + } + + USB0.gintmsk = USB_OTGINTMSK_M | + USB_MODEMISMSK_M | + USB_RXFLVIMSK_M | + USB_ERLYSUSPMSK_M | + USB_USBSUSPMSK_M | + USB_USBRSTMSK_M | + USB_ENUMDONEMSK_M | + USB_RESETDETMSK_M | + USB_DISCONNINTMSK_M; // host most only + if (did_persist) { + USB0.grstctl &= ~USB_TXFNUM_M; + USB0.grstctl |= 0x10 << USB_TXFNUM_S; + USB0.grstctl |= USB_TXFFLSH; + USB0.grxfsiz = 52; + + for (int n = 0; n < USB_IN_EP_NUM; n++) { + USB0.in_ep_reg[n].diepint = USB_D_XFERCOMPL0_M | USB_D_TXFEMP0_M; + USB0.in_ep_reg[n].diepctl &= ~USB_D_STALL0_M; // clear Stall + USB0.in_ep_reg[n].diepctl |= USB_D_CNAK0 | USB_D_EPENA0; // clear NAK + } + USB0.dtknqr4_fifoemptymsk &= ~(0x7F); + + USB0.gnptxfsiz = (16 << USB_NPTXFDEP_S) | (USB0.grxfsiz & 0x0000ffffUL); + + USB0.daintmsk |= USB_OUTEPMSK0_M | USB_INEPMSK0_M; + USB0.doepmsk |= USB_SETUP0 | USB_XFERCOMPLMSK; + USB0.diepmsk |= USB_TIMEOUTMSK_M | USB_DI_XFERCOMPLMSK_M;//USB_INEPNAKEFFMSK + + USB0.gintmsk |= USB_IEPINTMSK_M | USB_OEPINTMSK_M; + USB0.gotgint = ~0; //clear OTG ints + USB0.gintsts = ~0; //clear pending ints + enum_done_processing(); + dcd_event_bus_signal(0, DCD_EVENT_BUS_RESET, true); + tusb_control_request_t request = { + .bmRequestType_bit = { .recipient = TUSB_REQ_RCPT_DEVICE, .type = TUSB_REQ_TYPE_STANDARD, .direction = TUSB_DIR_OUT }, + .bRequest = TUSB_REQ_SET_CONFIGURATION, + .wValue = 1, + .wIndex = 0, + .wLength = 0 + }; + dcd_event_setup_received(0, (uint8_t *)&request, true); + } else { + dcd_connect(rhport); + } +} + +void dcd_set_address(uint8_t rhport, uint8_t dev_addr) +{ + (void)rhport; + ESP_LOGV(TAG, "DCD init - Set address : %u", dev_addr); + USB0.dcfg |= ((dev_addr & USB_DEVADDR_V) << USB_DEVADDR_S); + // Response with status after changing device address + dcd_edpt_xfer(rhport, tu_edpt_addr(0, TUSB_DIR_IN), NULL, 0); +} + +void dcd_remote_wakeup(uint8_t rhport) +{ + (void)rhport; + + // set remote wakeup + USB0.dctl |= USB_RMTWKUPSIG_M; + + // enable SOF to detect bus resume + USB0.gintsts = USB_SOF_M; + USB0.gintmsk |= USB_SOFMSK_M; + + // Per specs: remote wakeup signal bit must be clear within 1-15ms + vTaskDelay(pdMS_TO_TICKS(1)); + + USB0.dctl &= ~USB_RMTWKUPSIG_M; +} + +// connect by enabling internal pull-up resistor on D+/D- +void dcd_connect(uint8_t rhport) +{ + (void) rhport; + USB0.dctl &= ~USB_SFTDISCON_M; +} + +// disconnect by disabling internal pull-up resistor on D+/D- +void dcd_disconnect(uint8_t rhport) +{ + (void) rhport; + USB0.dctl |= USB_SFTDISCON_M; +} + +void dcd_sof_enable(uint8_t rhport, bool en) +{ + (void) rhport; + (void) en; + + // TODO implement later +} + +/*------------------------------------------------------------------*/ +/* DCD Endpoint port + *------------------------------------------------------------------*/ + +bool dcd_edpt_open(uint8_t rhport, tusb_desc_endpoint_t const *desc_edpt) +{ + ESP_LOGV(TAG, "DCD endpoint opened"); + (void)rhport; + + usb_out_endpoint_t *out_ep = &(USB0.out_ep_reg[0]); + usb_in_endpoint_t *in_ep = &(USB0.in_ep_reg[0]); + + uint8_t const epnum = tu_edpt_number(desc_edpt->bEndpointAddress); + uint8_t const dir = tu_edpt_dir(desc_edpt->bEndpointAddress); + + TU_ASSERT(epnum < EP_MAX); + + xfer_ctl_t *xfer = XFER_CTL_BASE(epnum, dir); + xfer->max_size = tu_edpt_packet_size(desc_edpt); + xfer->interval = desc_edpt->bInterval; + + if (dir == TUSB_DIR_OUT) { + out_ep[epnum].doepctl &= ~(USB_D_EPTYPE0_M | USB_D_MPS0_M); + out_ep[epnum].doepctl |= USB_USBACTEP1_M | + desc_edpt->bmAttributes.xfer << USB_EPTYPE1_S | + (desc_edpt->bmAttributes.xfer != TUSB_XFER_ISOCHRONOUS ? USB_DO_SETD0PID1_M : 0) | + xfer->max_size << USB_MPS1_S; + USB0.daintmsk |= (1 << (16 + epnum)); + } else { + // "USB Data FIFOs" section in reference manual + // Peripheral FIFO architecture + // + // --------------- 320 or 1024 ( 1280 or 4096 bytes ) + // | IN FIFO MAX | + // --------------- + // | ... | + // --------------- y + x + 16 + GRXFSIZ + // | IN FIFO 2 | + // --------------- x + 16 + GRXFSIZ + // | IN FIFO 1 | + // --------------- 16 + GRXFSIZ + // | IN FIFO 0 | + // --------------- GRXFSIZ + // | OUT FIFO | + // | ( Shared ) | + // --------------- 0 + // + // Since OUT FIFO = GRXFSIZ, FIFO 0 = 16, for simplicity, we equally allocated for the rest of endpoints + // - Size : (FIFO_SIZE/4 - GRXFSIZ - 16) / (EP_MAX-1) + // - Offset: GRXFSIZ + 16 + Size*(epnum-1) + // - IN EP 1 gets FIFO 1, IN EP "n" gets FIFO "n". + + uint8_t fifo_num = 0; + // Special Case for EP5, which is used by CDC but not actually called by the driver + // we can give it a fake FIFO + if (epnum == 5) { + fifo_num = EP_FIFO_NUM; + } else { + fifo_num = get_free_fifo(); + } + TU_ASSERT(fifo_num != 0); + + in_ep[epnum].diepctl &= ~(USB_D_TXFNUM1_M | USB_D_EPTYPE1_M | USB_DI_SETD0PID1 | USB_D_MPS1_M); + in_ep[epnum].diepctl |= USB_D_USBACTEP1_M | + fifo_num << USB_D_TXFNUM1_S | + desc_edpt->bmAttributes.xfer << USB_D_EPTYPE1_S | + (desc_edpt->bmAttributes.xfer != TUSB_XFER_ISOCHRONOUS ? (1 << USB_DI_SETD0PID1_S) : 0) | + xfer->max_size << 0; + + USB0.daintmsk |= (1 << (0 + epnum)); + + // Both TXFD and TXSA are in unit of 32-bit words. + // IN FIFO 0 was configured during enumeration, hence the "+ 16". + uint16_t const allocated_size = (USB0.grxfsiz & 0x0000ffff) + 16; + uint16_t const fifo_size = (EP_FIFO_SIZE/4 - allocated_size) / (EP_FIFO_NUM-1); + uint32_t const fifo_offset = allocated_size + fifo_size*(fifo_num-1); + + // DIEPTXF starts at FIFO #1. + USB0.dieptxf[epnum - 1] = (fifo_size << USB_NPTXFDEP_S) | fifo_offset; + } + return true; +} + +void dcd_edpt_close_all(uint8_t rhport) +{ + (void) rhport; + + usb_out_endpoint_t *out_ep = &(USB0.out_ep_reg[0]); + usb_in_endpoint_t *in_ep = &(USB0.in_ep_reg[0]); + + // Disable non-control interrupt + USB0.daintmsk = USB_OUTEPMSK0_M | USB_INEPMSK0_M; + + for(uint8_t n = 1; n < EP_MAX; n++) + { + // disable OUT endpoint + out_ep[n].doepctl = 0; + xfer_status[n][TUSB_DIR_OUT].max_size = 0; + + // disable IN endpoint + in_ep[n].diepctl = 0; + xfer_status[n][TUSB_DIR_IN].max_size = 0; + } + + _allocated_fifos = 1; +} + +bool dcd_edpt_xfer(uint8_t rhport, uint8_t ep_addr, uint8_t *buffer, uint16_t total_bytes) +{ + (void)rhport; + + uint8_t const epnum = tu_edpt_number(ep_addr); + uint8_t const dir = tu_edpt_dir(ep_addr); + + xfer_ctl_t * xfer = XFER_CTL_BASE(epnum, dir); + xfer->buffer = buffer; + // xfer->ff = NULL; // TODO support dcd_edpt_xfer_fifo API + xfer->total_len = total_bytes; + xfer->queued_len = 0; + xfer->short_packet = false; + + uint16_t num_packets = (total_bytes / xfer->max_size); + uint8_t short_packet_size = total_bytes % xfer->max_size; + + // Zero-size packet is special case. + if (short_packet_size > 0 || (total_bytes == 0)) { + num_packets++; + } + + ESP_LOGV(TAG, "Transfer <-> EP%i, %s, pkgs: %i, bytes: %i", + epnum, ((dir == TUSB_DIR_IN) ? "USB0.HOST (in)" : "HOST->DEV (out)"), + num_packets, total_bytes); + + // IN and OUT endpoint xfers are interrupt-driven, we just schedule them + // here. + if (dir == TUSB_DIR_IN) { + // A full IN transfer (multiple packets, possibly) triggers XFRC. + USB0.in_ep_reg[epnum].dieptsiz = (num_packets << USB_D_PKTCNT0_S) | total_bytes; + USB0.in_ep_reg[epnum].diepctl |= USB_D_EPENA1_M | USB_D_CNAK1_M; // Enable | CNAK + + // For ISO endpoint with interval=1 set correct DATA0/DATA1 bit for next frame + if ((USB0.in_ep_reg[epnum].diepctl & USB_D_EPTYPE0_M) == (1 << USB_D_EPTYPE1_S) && xfer->interval == 1) { + // Take odd/even bit from frame counter. + uint32_t const odd_frame_now = (USB0.dsts & (1u << USB_SOFFN_S)); + USB0.in_ep_reg[epnum].diepctl |= (odd_frame_now ? USB_DI_SETD0PID1 : USB_DI_SETD1PID1); + } + + // Enable fifo empty interrupt only if there are something to put in the fifo. + if(total_bytes != 0) { + USB0.dtknqr4_fifoemptymsk |= (1 << epnum); + } + } else { + // Each complete packet for OUT xfers triggers XFRC. + USB0.out_ep_reg[epnum].doeptsiz |= USB_PKTCNT0_M | ((xfer->max_size & USB_XFERSIZE0_V) << USB_XFERSIZE0_S); + USB0.out_ep_reg[epnum].doepctl |= USB_EPENA0_M | USB_CNAK0_M; + + // For ISO endpoint with interval=1 set correct DATA0/DATA1 bit for next frame + if ((USB0.out_ep_reg[epnum].doepctl & USB_D_EPTYPE0_M) == (1 << USB_D_EPTYPE1_S) && xfer->interval == 1) { + // Take odd/even bit from frame counter. + uint32_t const odd_frame_now = (USB0.dsts & (1u << USB_SOFFN_S)); + USB0.out_ep_reg[epnum].doepctl |= (odd_frame_now ? USB_DO_SETD0PID1 : USB_DO_SETD1PID1); + } + } + return true; +} + +#if 0 // TODO support dcd_edpt_xfer_fifo API +bool dcd_edpt_xfer_fifo (uint8_t rhport, uint8_t ep_addr, tu_fifo_t * ff, uint16_t total_bytes) +{ + (void)rhport; +} +#endif + +void dcd_edpt_stall(uint8_t rhport, uint8_t ep_addr) +{ + (void)rhport; + + usb_out_endpoint_t *out_ep = &(USB0.out_ep_reg[0]); + usb_in_endpoint_t *in_ep = &(USB0.in_ep_reg[0]); + + uint8_t const epnum = tu_edpt_number(ep_addr); + uint8_t const dir = tu_edpt_dir(ep_addr); + + if (dir == TUSB_DIR_IN) { + // Only disable currently enabled non-control endpoint + if ((epnum == 0) || !(in_ep[epnum].diepctl & USB_D_EPENA1_M)) { + in_ep[epnum].diepctl |= (USB_DI_SNAK1_M | USB_D_STALL1_M); + } else { + // Stop transmitting packets and NAK IN xfers. + in_ep[epnum].diepctl |= USB_DI_SNAK1_M; + // while ((in_ep[epnum].diepint & USB_DI_SNAK1_M) == 0) ; + while ((in_ep[epnum].diepint & USB_D_INEPNAKEFF1_M) == 0) ; + + // Disable the endpoint. Note that both SNAK and STALL are set here. + in_ep[epnum].diepctl |= (USB_DI_SNAK1_M | USB_D_STALL1_M | USB_D_EPDIS1_M); + while ((in_ep[epnum].diepint & USB_D_EPDISBLD0_M) == 0) ; + in_ep[epnum].diepint = USB_D_EPDISBLD0_M; + } + + // Flush the FIFO, and wait until we have confirmed it cleared. + uint8_t const fifo_num = ((in_ep[epnum].diepctl >> USB_D_TXFNUM1_S) & USB_D_TXFNUM1_V); + // USB0.grstctl |= (fifo_num << USB_TXFNUM_S); + // USB0.grstctl |= USB_TXFFLSH_M; + // while ((USB0.grstctl & USB_TXFFLSH_M) != 0) ; + uint32_t rstctl_last = USB0.grstctl; + uint32_t rstctl = USB_TXFFLSH_M; + rstctl |= (fifo_num << USB_TXFNUM_S); + USB0.grstctl = rstctl; + while ((USB0.grstctl & USB_TXFFLSH_M) != 0) ; + USB0.grstctl = rstctl_last; + // TODO: Clear grstctl::fifo_num after fifo flsh + } else { + // Only disable currently enabled non-control endpoint + if ((epnum == 0) || !(out_ep[epnum].doepctl & USB_EPENA0_M)) { + out_ep[epnum].doepctl |= USB_STALL0_M; + } else { + // Asserting GONAK is required to STALL an OUT endpoint. + // Simpler to use polling here, we don't use the "B"OUTNAKEFF interrupt + // anyway, and it can't be cleared by user code. If this while loop never + // finishes, we have bigger problems than just the stack. + USB0.dctl |= USB_SGOUTNAK_M; + while ((USB0.gintsts & USB_GOUTNAKEFF_M) == 0) ; + + // Ditto here- disable the endpoint. Note that only STALL and not SNAK + // is set here. + out_ep[epnum].doepctl |= (USB_STALL0_M | USB_EPDIS0_M); + while ((out_ep[epnum].doepint & USB_EPDISBLD0_M) == 0) ; + out_ep[epnum].doepint = USB_EPDISBLD0_M; + + // Allow other OUT endpoints to keep receiving. + USB0.dctl |= USB_CGOUTNAK_M; + } + } +} + +void dcd_edpt_clear_stall(uint8_t rhport, uint8_t ep_addr) +{ + (void)rhport; + + usb_out_endpoint_t *out_ep = &(USB0.out_ep_reg[0]); + usb_in_endpoint_t *in_ep = &(USB0.in_ep_reg[0]); + + uint8_t const epnum = tu_edpt_number(ep_addr); + uint8_t const dir = tu_edpt_dir(ep_addr); + + if (dir == TUSB_DIR_IN) { + in_ep[epnum].diepctl &= ~USB_D_STALL1_M; + + uint8_t eptype = (in_ep[epnum].diepctl & USB_D_EPTYPE1_M) >> USB_D_EPTYPE1_S; + // Required by USB spec to reset DATA toggle bit to DATA0 on interrupt + // and bulk endpoints. + if (eptype == 2 || eptype == 3) { + in_ep[epnum].diepctl |= USB_DI_SETD0PID1_M; + } + } else { + out_ep[epnum].doepctl &= ~USB_STALL1_M; + + uint8_t eptype = (out_ep[epnum].doepctl & USB_EPTYPE1_M) >> USB_EPTYPE1_S; + // Required by USB spec to reset DATA toggle bit to DATA0 on interrupt + // and bulk endpoints. + if (eptype == 2 || eptype == 3) { + out_ep[epnum].doepctl |= USB_DO_SETD0PID1_M; + } + } +} + +/*------------------------------------------------------------------*/ + +static void receive_packet(xfer_ctl_t *xfer, /* usb_out_endpoint_t * out_ep, */ uint16_t xfer_size) +{ + ESP_EARLY_LOGV(TAG, "USB - receive_packet"); + volatile uint32_t *rx_fifo = USB0.fifo[0]; + + // See above TODO + // uint16_t remaining = (out_ep->DOEPTSIZ & UsbDOEPTSIZ_XFRSIZ_Msk) >> UsbDOEPTSIZ_XFRSIZ_Pos; + // xfer->queued_len = xfer->total_len - remaining; + + uint16_t remaining = xfer->total_len - xfer->queued_len; + uint16_t to_recv_size; + + if (remaining <= xfer->max_size) { + // Avoid buffer overflow. + to_recv_size = (xfer_size > remaining) ? remaining : xfer_size; + } else { + // Room for full packet, choose recv_size based on what the microcontroller + // claims. + to_recv_size = (xfer_size > xfer->max_size) ? xfer->max_size : xfer_size; + } + + // Common buffer read +#if 0 // TODO support dcd_edpt_xfer_fifo API + if (xfer->ff) + { + // Ring buffer + tu_fifo_write_n_const_addr_full_words(xfer->ff, (const void *) rx_fifo, to_recv_size); + } + else +#endif + { + uint8_t to_recv_rem = to_recv_size % 4; + uint16_t to_recv_size_aligned = to_recv_size - to_recv_rem; + + // Do not assume xfer buffer is aligned. + uint8_t *base = (xfer->buffer + xfer->queued_len); + + // This for loop always runs at least once- skip if less than 4 bytes + // to collect. + if (to_recv_size >= 4) { + for (uint16_t i = 0; i < to_recv_size_aligned; i += 4) { + uint32_t tmp = (*rx_fifo); + base[i] = tmp & 0x000000FF; + base[i + 1] = (tmp & 0x0000FF00) >> 8; + base[i + 2] = (tmp & 0x00FF0000) >> 16; + base[i + 3] = (tmp & 0xFF000000) >> 24; + } + } + + // Do not read invalid bytes from RX FIFO. + if (to_recv_rem != 0) { + uint32_t tmp = (*rx_fifo); + uint8_t *last_32b_bound = base + to_recv_size_aligned; + + last_32b_bound[0] = tmp & 0x000000FF; + if (to_recv_rem > 1) { + last_32b_bound[1] = (tmp & 0x0000FF00) >> 8; + } + if (to_recv_rem > 2) { + last_32b_bound[2] = (tmp & 0x00FF0000) >> 16; + } + } + } + + xfer->queued_len += xfer_size; + + // Per USB spec, a short OUT packet (including length 0) is always + // indicative of the end of a transfer (at least for ctl, bulk, int). + xfer->short_packet = (xfer_size < xfer->max_size); +} + +static void transmit_packet(xfer_ctl_t *xfer, volatile usb_in_endpoint_t *in_ep, uint8_t fifo_num) +{ + ESP_EARLY_LOGV(TAG, "USB - transmit_packet"); + volatile uint32_t *tx_fifo = USB0.fifo[fifo_num]; + + uint16_t remaining = (in_ep->dieptsiz & 0x7FFFFU) >> USB_D_XFERSIZE0_S; + xfer->queued_len = xfer->total_len - remaining; + + uint16_t to_xfer_size = (remaining > xfer->max_size) ? xfer->max_size : remaining; + +#if 0 // TODO support dcd_edpt_xfer_fifo API + if (xfer->ff) + { + tu_fifo_read_n_const_addr_full_words(xfer->ff, (void *) tx_fifo, to_xfer_size); + } + else +#endif + { + uint8_t to_xfer_rem = to_xfer_size % 4; + uint16_t to_xfer_size_aligned = to_xfer_size - to_xfer_rem; + + // Buffer might not be aligned to 32b, so we need to force alignment + // by copying to a temp var. + uint8_t *base = (xfer->buffer + xfer->queued_len); + + // This for loop always runs at least once- skip if less than 4 bytes + // to send off. + if (to_xfer_size >= 4) { + for (uint16_t i = 0; i < to_xfer_size_aligned; i += 4) { + uint32_t tmp = base[i] | (base[i + 1] << 8) | + (base[i + 2] << 16) | (base[i + 3] << 24); + (*tx_fifo) = tmp; + } + } + + // Do not read beyond end of buffer if not divisible by 4. + if (to_xfer_rem != 0) { + uint32_t tmp = 0; + uint8_t *last_32b_bound = base + to_xfer_size_aligned; + + tmp |= last_32b_bound[0]; + if (to_xfer_rem > 1) { + tmp |= (last_32b_bound[1] << 8); + } + if (to_xfer_rem > 2) { + tmp |= (last_32b_bound[2] << 16); + } + + (*tx_fifo) = tmp; + } + } +} + +static void read_rx_fifo(void) +{ + // Pop control word off FIFO (completed xfers will have 2 control words, + // we only pop one ctl word each interrupt). + uint32_t const ctl_word = USB0.grxstsp; + uint8_t const pktsts = (ctl_word & USB_PKTSTS_M) >> USB_PKTSTS_S; + uint8_t const epnum = (ctl_word & USB_CHNUM_M ) >> USB_CHNUM_S; + uint16_t const bcnt = (ctl_word & USB_BCNT_M ) >> USB_BCNT_S; + + switch (pktsts) { + case 0x01: // Global OUT NAK (Interrupt) + ESP_EARLY_LOGV(TAG, "TUSB IRQ - RX type : Global OUT NAK"); + break; + + case 0x02: { // Out packet recvd + ESP_EARLY_LOGV(TAG, "TUSB IRQ - RX type : Out packet"); + xfer_ctl_t *xfer = XFER_CTL_BASE(epnum, TUSB_DIR_OUT); + receive_packet(xfer, bcnt); + } + break; + + case 0x03: // Out packet done (Interrupt) + ESP_EARLY_LOGV(TAG, "TUSB IRQ - RX type : Out packet done"); + break; + + case 0x04: // Step 2: Setup transaction completed (Interrupt) + // After this event, OEPINT interrupt will occur with SETUP bit set + ESP_EARLY_LOGV(TAG, "TUSB IRQ - RX : Setup packet done"); + USB0.out_ep_reg[epnum].doeptsiz |= USB_SUPCNT0_M; + break; + + case 0x06: { // Step1: Setup data packet received + volatile uint32_t *rx_fifo = USB0.fifo[0]; + + // We can receive up to three setup packets in succession, but + // only the last one is valid. Therefore we just overwrite it + _setup_packet[0] = (*rx_fifo); + _setup_packet[1] = (*rx_fifo); + + ESP_EARLY_LOGV(TAG, "TUSB IRQ - RX : Setup packet : 0x%08x 0x%08x", _setup_packet[0], _setup_packet[1]); + } + break; + + default: // Invalid, do something here, like breakpoint? + TU_BREAKPOINT(); + break; + } +} + +static void handle_epout_ints(void) +{ + // GINTSTS will be cleared with DAINT == 0 + // DAINT for a given EP clears when DOEPINTx is cleared. + // DOEPINT will be cleared when DAINT's out bits are cleared. + for (int n = 0; n < USB_OUT_EP_NUM; n++) { + xfer_ctl_t *xfer = XFER_CTL_BASE(n, TUSB_DIR_OUT); + + if (USB0.daint & (1 << (16 + n))) { + // SETUP packet Setup Phase done. + if ((USB0.out_ep_reg[n].doepint & USB_SETUP0_M)) { + USB0.out_ep_reg[n].doepint = USB_STUPPKTRCVD0_M | USB_SETUP0_M; // clear + dcd_event_setup_received(0, (uint8_t *)&_setup_packet[0], true); + } + + // OUT XFER complete (single packet).q + if (USB0.out_ep_reg[n].doepint & USB_XFERCOMPL0_M) { + + ESP_EARLY_LOGV(TAG, "TUSB IRQ - EP OUT - XFER complete (single packet)"); + USB0.out_ep_reg[n].doepint = USB_XFERCOMPL0_M; + + // Transfer complete if short packet or total len is transferred + if (xfer->short_packet || (xfer->queued_len == xfer->total_len)) { + xfer->short_packet = false; + dcd_event_xfer_complete(0, n, xfer->queued_len, XFER_RESULT_SUCCESS, true); + } else { + // Schedule another packet to be received. + USB0.out_ep_reg[n].doeptsiz |= USB_PKTCNT0_M | ((xfer->max_size & USB_XFERSIZE0_V) << USB_XFERSIZE0_S); + USB0.out_ep_reg[n].doepctl |= USB_EPENA0_M | USB_CNAK0_M; + } + } + } + } +} + +static void handle_epin_ints(void) +{ + // GINTSTS will be cleared with DAINT == 0 + // DAINT for a given EP clears when DIEPINTx is cleared. + // IEPINT will be cleared when DAINT's out bits are cleared. + for (uint32_t n = 0; n < USB_IN_EP_NUM; n++) { + xfer_ctl_t *xfer = &xfer_status[n][TUSB_DIR_IN]; + + if (USB0.daint & (1 << (0 + n))) { + ESP_EARLY_LOGV(TAG, "TUSB IRQ - EP IN %u", n); + + if (USB0.in_ep_reg[n].diepint & BIT(15)) { + USB0.in_ep_reg[n].diepint = BIT(15); + ESP_EARLY_LOGE(TAG, "Unknown Condition");//todo: + bus_reset(); + } + + // IN XFER complete (entire xfer). + if (USB0.in_ep_reg[n].diepint & USB_D_XFERCOMPL0_M) { + ESP_EARLY_LOGV(TAG, "TUSB IRQ - IN XFER complete!"); + USB0.in_ep_reg[n].diepint = USB_D_XFERCOMPL0_M; + dcd_event_xfer_complete(0, n | TUSB_DIR_IN_MASK, xfer->total_len, XFER_RESULT_SUCCESS, true); + if (!(USB0.in_ep_reg[n].diepint & USB_D_TXFEMP0_M)) { + ESP_EARLY_LOGE(TAG, "Complete but not empty: %u/%u", xfer->queued_len, xfer->total_len);//todo: + } + } + + // XFER FIFO empty + if (USB0.in_ep_reg[n].diepint & USB_D_TXFEMP0_M) { + ESP_EARLY_LOGV(TAG, "TUSB IRQ - IN XFER FIFO empty!"); + USB0.in_ep_reg[n].diepint = USB_D_TXFEMP0_M; + transmit_packet(xfer, &USB0.in_ep_reg[n], n); + + // Turn off TXFE if all bytes are written. + if (xfer->queued_len == xfer->total_len) + { + USB0.dtknqr4_fifoemptymsk &= ~(1 << n); + } + } + + // XFER Timeout + if (USB0.in_ep_reg[n].diepint & USB_D_TIMEOUT0_M) { + // Clear interrupt or enpoint will hang. + USB0.in_ep_reg[n].diepint = USB_D_TIMEOUT0_M; + ESP_EARLY_LOGE(TAG, "XFER Timeout");//todo: + // Maybe retry? + } + } + } +} + + +static void _dcd_int_handler(void* arg) +{ + (void) arg; + uint8_t const rhport = 0; + + const uint32_t int_msk = USB0.gintmsk; + const uint32_t int_status = USB0.gintsts & int_msk; + + if (int_status & USB_USBRST_M) { + // start of reset + ESP_EARLY_LOGV(TAG, "dcd_int_handler - reset"); + USB0.gintsts = USB_USBRST_M; + // FIFOs will be reassigned when the endpoints are reopen + _allocated_fifos = 1; + bus_reset(); + } + + if (int_status & USB_RESETDET_M) { + ESP_EARLY_LOGV(TAG, "dcd_int_handler - reset while suspend"); + USB0.gintsts = USB_RESETDET_M; + // no need to double reset + if ((int_status & USB_USBRST_M) == 0) { + _allocated_fifos = 1; + bus_reset(); + } + } + + if (int_status & USB_ENUMDONE_M) { + // ENUMDNE detects speed of the link. For full-speed, we + // always expect the same value. This interrupt is considered + // the end of reset. + USB0.gintsts = USB_ENUMDONE_M; + enum_done_processing(); + dcd_event_bus_reset(rhport, TUSB_SPEED_FULL, true); + } + + if(int_status & USB_USBSUSP_M) + { + USB0.gintsts = USB_USBSUSP_M; + //dcd_event_bus_signal(rhport, DCD_EVENT_SUSPEND, true); + dcd_event_bus_signal(rhport, DCD_EVENT_UNPLUGGED, true); + _allocated_fifos = 1; + } + + if(int_status & USB_WKUPINT_M) + { + USB0.gintsts = USB_WKUPINT_M; + dcd_event_bus_signal(rhport, DCD_EVENT_RESUME, true); + } + + if (int_status & USB_OTGINT_M) + { + // OTG INT bit is read-only + ESP_EARLY_LOGV(TAG, "dcd_int_handler - disconnected"); + + uint32_t const otg_int = USB0.gotgint; + + if (otg_int & USB_SESENDDET_M) + { + dcd_event_bus_signal(rhport, DCD_EVENT_UNPLUGGED, true); + _allocated_fifos = 1; + } + + USB0.gotgint = otg_int; + } + + if (int_status & USB_SOF_M) { + USB0.gintsts = USB_SOF_M; + + // Disable SOF interrupt since currently only used for remote wakeup detection + USB0.gintmsk &= ~USB_SOFMSK_M; + + dcd_event_bus_signal(rhport, DCD_EVENT_SOF, true); + } + + + if (int_status & USB_RXFLVI_M) { + // RXFLVL bit is read-only + ESP_EARLY_LOGV(TAG, "dcd_int_handler - rx!"); + + // Mask out RXFLVL while reading data from FIFO + USB0.gintmsk &= ~USB_RXFLVIMSK_M; + read_rx_fifo(); + USB0.gintmsk |= USB_RXFLVIMSK_M; + } + + // OUT endpoint interrupt handling. + if (int_status & USB_OEPINT_M) { + // OEPINT is read-only + ESP_EARLY_LOGV(TAG, "dcd_int_handler - OUT endpoint!"); + handle_epout_ints(); + } + + // IN endpoint interrupt handling. + if (int_status & USB_IEPINT_M) { + // IEPINT bit read-only + ESP_EARLY_LOGV(TAG, "dcd_int_handler - IN endpoint!"); + handle_epin_ints(); + } + + // Without handling + USB0.gintsts |= USB_CURMOD_INT_M | + USB_MODEMIS_M | + USB_OTGINT_M | + USB_NPTXFEMP_M | + USB_GINNAKEFF_M | + USB_GOUTNAKEFF | + USB_ERLYSUSP_M | + USB_USBSUSP_M | + USB_ISOOUTDROP_M | + USB_EOPF_M | + USB_EPMIS_M | + USB_INCOMPISOIN_M | + USB_INCOMPIP_M | + USB_FETSUSP_M | + USB_PTXFEMP_M; +} + +void dcd_int_enable (uint8_t rhport) +{ + (void) rhport; + esp_intr_alloc(ETS_USB_INTR_SOURCE, ESP_INTR_FLAG_LOWMED, (intr_handler_t) _dcd_int_handler, NULL, &usb_ih); +} + +void dcd_int_disable (uint8_t rhport) +{ + (void) rhport; + esp_intr_free(usb_ih); +} + +#endif // #if OPT_MCU_ESP32S2 || OPT_MCU_ESP32S3 + diff --git a/components/arduino_tinyusb/tinyusb b/components/arduino_tinyusb/tinyusb new file mode 160000 index 00000000..a0e5626b --- /dev/null +++ b/components/arduino_tinyusb/tinyusb @@ -0,0 +1 @@ +Subproject commit a0e5626bc50d484a23f33000c48082179f0cc2dd diff --git a/components/esp-dsp b/components/esp-dsp new file mode 160000 index 00000000..9b4a8b42 --- /dev/null +++ b/components/esp-dsp @@ -0,0 +1 @@ +Subproject commit 9b4a8b42b98f2f7cd614e47bb4d159acbe500bee diff --git a/components/lilka/CMakeLists.txt b/components/lilka/CMakeLists.txt new file mode 100644 index 00000000..771e5f6f --- /dev/null +++ b/components/lilka/CMakeLists.txt @@ -0,0 +1,40 @@ +# Lilka SDK (sdk/ submodule) +set(root "${CMAKE_CURRENT_LIST_DIR}/sdk/lib/lilka/src") + +file(GLOB_RECURSE srcs "${root}/*.c" "${root}/*.cpp") +# Weak default setup()/loop(); Keira provides its own +list(REMOVE_ITEM srcs "${root}/main.cpp") + +idf_component_register( + SRCS ${srcs} + INCLUDE_DIRS "${root}" + REQUIRES arduino Arduino_GFX U8g2 driver fatfs spiffs app_update esp_wifi nvs_flash +) + +# The SDK sources carry a placeholder version header (0.0.0/Dev). The real version is pinned here and +# force-included; it defines the same guard, so the placeholder is skipped. +# Keep in sync with the components/lilka/sdk submodule; checked against its tag when tags are fetched. +set(LILKA_SDK_VERSION "2.5.15") +set(LILKA_SDK_VERSION_TYPE SDK_VERSION_TYPE_RELEASE) + +execute_process( + COMMAND git describe --tags --exact-match + WORKING_DIRECTORY "${root}" + OUTPUT_VARIABLE sdk_tag + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_QUIET +) +if(sdk_tag AND NOT sdk_tag STREQUAL "v${LILKA_SDK_VERSION}") + message(FATAL_ERROR "components/lilka/sdk is at ${sdk_tag}, but LILKA_SDK_VERSION is ${LILKA_SDK_VERSION}. " + "Update LILKA_SDK_VERSION in ${CMAKE_CURRENT_LIST_FILE}.") +endif() + +string(REPLACE "." ";" sdk_version_parts "${LILKA_SDK_VERSION}") +list(GET sdk_version_parts 0 SDK_VERSION_MAJOR) +list(GET sdk_version_parts 1 SDK_VERSION_MINOR) +list(GET sdk_version_parts 2 SDK_VERSION_PATCH) +set(SDK_VERSION_TYPE ${LILKA_SDK_VERSION_TYPE}) + +set(version_header "${CMAKE_CURRENT_BINARY_DIR}/lilka_sdk_version.h") +configure_file("${CMAKE_CURRENT_LIST_DIR}/lilka_sdk_version.h.in" "${version_header}") +target_compile_options(${COMPONENT_LIB} PUBLIC "-include${version_header}") diff --git a/components/lilka/lilka_sdk_version.h.in b/components/lilka/lilka_sdk_version.h.in new file mode 100644 index 00000000..3e3c4e20 --- /dev/null +++ b/components/lilka/lilka_sdk_version.h.in @@ -0,0 +1,10 @@ +#pragma once + +// Generated from LILKA_SDK_VERSION in components/lilka/CMakeLists.txt. Defines VERSION_AUTO_GEN_H so the +// placeholder lilka/version_auto_gen.h from the SDK sources is skipped. +#define VERSION_AUTO_GEN_H + +#define SDK_VERSION_MAJOR @SDK_VERSION_MAJOR@ +#define SDK_VERSION_MINOR @SDK_VERSION_MINOR@ +#define SDK_VERSION_PATCH @SDK_VERSION_PATCH@ +#define SDK_VERSION_TYPE @SDK_VERSION_TYPE@ diff --git a/components/lilka/sdk b/components/lilka/sdk new file mode 160000 index 00000000..ff84e1d4 --- /dev/null +++ b/components/lilka/sdk @@ -0,0 +1 @@ +Subproject commit ff84e1d4931075087469b0edab82a3cfbaca8884 diff --git a/components/lua/CMakeLists.txt b/components/lua/CMakeLists.txt new file mode 100644 index 00000000..d7097dc1 --- /dev/null +++ b/components/lua/CMakeLists.txt @@ -0,0 +1,16 @@ +# Lua 5.4 (arduino-lua/ submodule) +set(root "${CMAKE_CURRENT_LIST_DIR}/arduino-lua") + +# Same set as the library's srcFilter: the core and standard libraries, without the lua/luac executables +set(names + lapi lcode lctype ldebug ldo ldump lfunc lgc llex lmem lobject lopcodes lparser lstate lstring + ltable ltm lundump lvm lzio ltests lauxlib lbaselib ldblib liolib lmathlib loslib ltablib lstrlib + lutf8lib loadlib lcorolib linit +) +list(TRANSFORM names PREPEND "${root}/src/" OUTPUT_VARIABLE srcs) +list(TRANSFORM srcs APPEND ".c") + +idf_component_register( + SRCS ${srcs} + INCLUDE_DIRS "${root}/include" "${root}/src" +) diff --git a/components/lua/arduino-lua b/components/lua/arduino-lua new file mode 160000 index 00000000..6bccad91 --- /dev/null +++ b/components/lua/arduino-lua @@ -0,0 +1 @@ +Subproject commit 6bccad9105aae658d61942e2894cae474218023b diff --git a/components/mJS/CMakeLists.txt b/components/mJS/CMakeLists.txt new file mode 100644 index 00000000..46371c18 --- /dev/null +++ b/components/mJS/CMakeLists.txt @@ -0,0 +1,7 @@ +# mJS (vendored in src/) +set(root "${CMAKE_CURRENT_LIST_DIR}/src") + +idf_component_register( + SRCS "${root}/mjs.c" + INCLUDE_DIRS "${root}" +) diff --git a/lib/mJS/library.json b/components/mJS/library.json similarity index 100% rename from lib/mJS/library.json rename to components/mJS/library.json diff --git a/lib/mJS/src/mjs.c b/components/mJS/src/mjs.c similarity index 100% rename from lib/mJS/src/mjs.c rename to components/mJS/src/mjs.c diff --git a/lib/mJS/src/mjs.h b/components/mJS/src/mjs.h similarity index 100% rename from lib/mJS/src/mjs.h rename to components/mJS/src/mjs.h diff --git a/components/nofrendo/CMakeLists.txt b/components/nofrendo/CMakeLists.txt new file mode 100644 index 00000000..8f9dc74f --- /dev/null +++ b/components/nofrendo/CMakeLists.txt @@ -0,0 +1,11 @@ +# Nofrendo NES emulator (arduino-nofrendo/ submodule) +set(root "${CMAKE_CURRENT_LIST_DIR}/arduino-nofrendo/src") + +file(GLOB_RECURSE srcs "${root}/*.c") + +idf_component_register( + SRCS ${srcs} + INCLUDE_DIRS "${root}" + # The osd_* platform layer (osd.h) is implemented by Keira in src/apps/nes + PRIV_REQUIRES src +) diff --git a/components/nofrendo/arduino-nofrendo b/components/nofrendo/arduino-nofrendo new file mode 160000 index 00000000..a5a5c1a1 --- /dev/null +++ b/components/nofrendo/arduino-nofrendo @@ -0,0 +1 @@ +Subproject commit a5a5c1a1fdc603434e09079c817ec99209b1824e diff --git a/assets/keira_splash.xcf b/data/assets/keira_splash.xcf similarity index 100% rename from assets/keira_splash.xcf rename to data/assets/keira_splash.xcf diff --git a/assets/letris_splash.xcf b/data/assets/letris_splash.xcf similarity index 100% rename from assets/letris_splash.xcf rename to data/assets/letris_splash.xcf diff --git a/img/keira.dia b/data/img/keira.dia similarity index 100% rename from img/keira.dia rename to data/img/keira.dia diff --git a/img/keira.png b/data/img/keira.png similarity index 100% rename from img/keira.png rename to data/img/keira.png diff --git a/img/menu.jpg b/data/img/menu.jpg similarity index 100% rename from img/menu.jpg rename to data/img/menu.jpg diff --git a/img/v21.jpg b/data/img/v21.jpg similarity index 100% rename from img/v21.jpg rename to data/img/v21.jpg diff --git a/data/.gitignore b/data/spiffs/.gitignore similarity index 100% rename from data/.gitignore rename to data/spiffs/.gitignore diff --git a/data/autorun.lua b/data/spiffs/autorun.lua similarity index 100% rename from data/autorun.lua rename to data/spiffs/autorun.lua diff --git a/data/chase.nes b/data/spiffs/chase.nes similarity index 100% rename from data/chase.nes rename to data/spiffs/chase.nes diff --git a/data/thewit.nes b/data/spiffs/thewit.nes similarity index 100% rename from data/thewit.nes rename to data/spiffs/thewit.nes diff --git a/data/wallpaper.gif b/data/spiffs/wallpaper.gif similarity index 100% rename from data/wallpaper.gif rename to data/spiffs/wallpaper.gif diff --git a/data/wallpaper.lua b/data/spiffs/wallpaper.lua similarity index 100% rename from data/wallpaper.lua rename to data/spiffs/wallpaper.lua diff --git a/dependencies.lock b/dependencies.lock new file mode 100644 index 00000000..ff3092c6 --- /dev/null +++ b/dependencies.lock @@ -0,0 +1,9 @@ +dependencies: + idf: + component_hash: null + source: + type: idf + version: 4.4.7 +manifest_hash: 35c8226bcd985aca67275a59cd9c6e814a3e898cd1baa73d4c6561461d080821 +target: esp32s3 +version: 1.0.0 diff --git a/addons/lualilka/config.json b/docs/addons/lualilka/config.json similarity index 100% rename from addons/lualilka/config.json rename to docs/addons/lualilka/config.json diff --git a/addons/lualilka/library/UI.lua b/docs/addons/lualilka/library/UI.lua similarity index 100% rename from addons/lualilka/library/UI.lua rename to docs/addons/lualilka/library/UI.lua diff --git a/addons/lualilka/library/audio.lua b/docs/addons/lualilka/library/audio.lua similarity index 100% rename from addons/lualilka/library/audio.lua rename to docs/addons/lualilka/library/audio.lua diff --git a/addons/lualilka/library/buzzer.lua b/docs/addons/lualilka/library/buzzer.lua similarity index 100% rename from addons/lualilka/library/buzzer.lua rename to docs/addons/lualilka/library/buzzer.lua diff --git a/addons/lualilka/library/controller.lua b/docs/addons/lualilka/library/controller.lua similarity index 100% rename from addons/lualilka/library/controller.lua rename to docs/addons/lualilka/library/controller.lua diff --git a/addons/lualilka/library/crypto.lua b/docs/addons/lualilka/library/crypto.lua similarity index 100% rename from addons/lualilka/library/crypto.lua rename to docs/addons/lualilka/library/crypto.lua diff --git a/addons/lualilka/library/display.lua b/docs/addons/lualilka/library/display.lua similarity index 100% rename from addons/lualilka/library/display.lua rename to docs/addons/lualilka/library/display.lua diff --git a/addons/lualilka/library/fs.lua b/docs/addons/lualilka/library/fs.lua similarity index 100% rename from addons/lualilka/library/fs.lua rename to docs/addons/lualilka/library/fs.lua diff --git a/addons/lualilka/library/geometry.lua b/docs/addons/lualilka/library/geometry.lua similarity index 100% rename from addons/lualilka/library/geometry.lua rename to docs/addons/lualilka/library/geometry.lua diff --git a/addons/lualilka/library/gpio.lua b/docs/addons/lualilka/library/gpio.lua similarity index 100% rename from addons/lualilka/library/gpio.lua rename to docs/addons/lualilka/library/gpio.lua diff --git a/addons/lualilka/library/http.lua b/docs/addons/lualilka/library/http.lua similarity index 100% rename from addons/lualilka/library/http.lua rename to docs/addons/lualilka/library/http.lua diff --git a/addons/lualilka/library/httpserver.lua b/docs/addons/lualilka/library/httpserver.lua similarity index 100% rename from addons/lualilka/library/httpserver.lua rename to docs/addons/lualilka/library/httpserver.lua diff --git a/addons/lualilka/library/i2c.lua b/docs/addons/lualilka/library/i2c.lua similarity index 100% rename from addons/lualilka/library/i2c.lua rename to docs/addons/lualilka/library/i2c.lua diff --git a/addons/lualilka/library/lilka.lua b/docs/addons/lualilka/library/lilka.lua similarity index 100% rename from addons/lualilka/library/lilka.lua rename to docs/addons/lualilka/library/lilka.lua diff --git a/addons/lualilka/library/math.lua b/docs/addons/lualilka/library/math.lua similarity index 100% rename from addons/lualilka/library/math.lua rename to docs/addons/lualilka/library/math.lua diff --git a/addons/lualilka/library/mqtt.lua b/docs/addons/lualilka/library/mqtt.lua similarity index 100% rename from addons/lualilka/library/mqtt.lua rename to docs/addons/lualilka/library/mqtt.lua diff --git a/addons/lualilka/library/net.lua b/docs/addons/lualilka/library/net.lua similarity index 100% rename from addons/lualilka/library/net.lua rename to docs/addons/lualilka/library/net.lua diff --git a/addons/lualilka/library/pwm.lua b/docs/addons/lualilka/library/pwm.lua similarity index 100% rename from addons/lualilka/library/pwm.lua rename to docs/addons/lualilka/library/pwm.lua diff --git a/addons/lualilka/library/resources.lua b/docs/addons/lualilka/library/resources.lua similarity index 100% rename from addons/lualilka/library/resources.lua rename to docs/addons/lualilka/library/resources.lua diff --git a/addons/lualilka/library/sdcard.lua b/docs/addons/lualilka/library/sdcard.lua similarity index 100% rename from addons/lualilka/library/sdcard.lua rename to docs/addons/lualilka/library/sdcard.lua diff --git a/addons/lualilka/library/serial.lua b/docs/addons/lualilka/library/serial.lua similarity index 100% rename from addons/lualilka/library/serial.lua rename to docs/addons/lualilka/library/serial.lua diff --git a/addons/lualilka/library/service.lua b/docs/addons/lualilka/library/service.lua similarity index 100% rename from addons/lualilka/library/service.lua rename to docs/addons/lualilka/library/service.lua diff --git a/addons/lualilka/library/spi.lua b/docs/addons/lualilka/library/spi.lua similarity index 100% rename from addons/lualilka/library/spi.lua rename to docs/addons/lualilka/library/spi.lua diff --git a/addons/lualilka/library/state.lua b/docs/addons/lualilka/library/state.lua similarity index 100% rename from addons/lualilka/library/state.lua rename to docs/addons/lualilka/library/state.lua diff --git a/addons/lualilka/library/transforms.lua b/docs/addons/lualilka/library/transforms.lua similarity index 100% rename from addons/lualilka/library/transforms.lua rename to docs/addons/lualilka/library/transforms.lua diff --git a/addons/lualilka/library/util.lua b/docs/addons/lualilka/library/util.lua similarity index 100% rename from addons/lualilka/library/util.lua rename to docs/addons/lualilka/library/util.lua diff --git a/addons/lualilka/library/wifi.lua b/docs/addons/lualilka/library/wifi.lua similarity index 100% rename from addons/lualilka/library/wifi.lua rename to docs/addons/lualilka/library/wifi.lua diff --git a/addons/lualilka/library/ws2812.lua b/docs/addons/lualilka/library/ws2812.lua similarity index 100% rename from addons/lualilka/library/ws2812.lua rename to docs/addons/lualilka/library/ws2812.lua diff --git a/docs/conf.py b/docs/conf.py index e99db378..c5ff8e9f 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -92,7 +92,7 @@ def setup(app): extensions.append("sphinxcontrib.luadomain") extensions.append("sphinx_lua") -lua_source_path = ["../addons/lualilka/"] +lua_source_path = ["addons/lualilka/"] lua_source_encoding = "utf8" lua_source_comment_prefix = "---" lua_source_use_emmy_lua_syntax = True diff --git a/docs/custom_apps.rst b/docs/custom_apps.rst index 28f565c2..6097e453 100644 --- a/docs/custom_apps.rst +++ b/docs/custom_apps.rst @@ -247,8 +247,8 @@ Keira підтримує завантаження та виконання про ~~~~~~~~~~ Для компіляції потрібен крос-компілятор ``xtensa-esp32s3-elf-gcc``. -Якщо у вас встановлено PlatformIO, він вже є за шляхом -``~/.platformio/packages/toolchain-xtensa-esp32s3/bin/``. +Він входить до складу ESP-IDF і доступний у ``PATH`` після ``. $IDF_PATH/export.sh`` +(або в Docker-образі ``espressif/idf:v4.4.7``). **За допомогою Make:** diff --git a/docs/features.rst b/docs/features.rst index 362696a9..886481ef 100644 --- a/docs/features.rst +++ b/docs/features.rst @@ -66,7 +66,7 @@ Keira підтримує динамічне завантаження та вик Файли ``.so`` — це ELF shared objects, скомпільовані для архітектури Xtensa (ESP32-S3). Вбудований ELF-завантажувач розміщує код в PSRAM, виконує релокації та надає доступ до API Keira (дисплей, контролер, зуммер, таймери). -Для компіляції використовується крос-компілятор ``xtensa-esp32s3-elf-gcc`` (входить до складу PlatformIO). Приклад програми та інструкції з компіляції знаходяться в ``examples/dynapp_demo/``. +Для компіляції використовується крос-компілятор ``xtensa-esp32s3-elf-gcc`` (входить до складу ESP-IDF). Приклад програми та інструкції з компіляції знаходяться в ``examples/dynapp_demo/``. Детальніше дивіться розділ :ref:`dynapp-native`. diff --git a/docs/flashing.rst b/docs/flashing.rst index d642c0ae..56859258 100644 --- a/docs/flashing.rst +++ b/docs/flashing.rst @@ -10,44 +10,37 @@ Клонування репозиторію та побудова прошивки ------------------------------------------- -1. Перейдіть на вкладку **Source Control** (``Ctrl`` + ``Shift`` + ``G``) та клонуйте репозиторій `Lilka `_: +Keira збирається за допомогою `ESP-IDF `_ **v4.4.7** та Arduino-ESP32 **2.0.17**, підключеного як компонент ESP-IDF. Усі бібліотеки (Lilka SDK, Arduino-ESP32, Arduino_GFX тощо) підключені як git-підмодулі з зафіксованими версіями в директорії ``components/``. - .. image:: ./images/08_clone_repo_cropped.png - :width: 80% +1. Клонуйте репозиторій разом з підмодулями: - Для цього натисніть "**Clone Repository**" та введіть адресу репозиторію: + .. code-block:: bash - ``https://github.com/lilka-dev/keira`` + git clone --recurse-submodules --shallow-submodules https://github.com/lilka-dev/keira + cd keira - .. image:: ./images/09_clone_cropped.png - :width: 80% + Якщо ви вже клонували репозиторій без підмодулів, виконайте ``make submodules``. -2. Після клонування репозиторію перейдіть на вкладку **PlatformIO** та імпортуйте проєкт прошивки Keira для Лілки. Для цього натисніть "**Open Project**" та виберіть директорію Кіри. +2. Зберіть прошивку. Є два способи: - .. image:: ./images/11_open_pio_project_cropped.png - :width: 80% + **Через Docker** (нічого, крім Docker, встановлювати не потрібно): -3. Тепер нам потрібно дочекатися налаштування середовища розробки. + .. code-block:: bash - **PlatformIO** автоматично встановить необхідні залежності, такі як компілятори, бібліотеки та інші інструменти, що необхідні для написання програм для Лілки. + make docker-build - .. image:: ./images/13_wait_pio_project_init_more_cropped.png - :width: 80% + **З локально встановленим ESP-IDF v4.4.7** (встановіть його за `інструкцією Espressif `_ або через розширення **ESP-IDF** для VS Code, обравши версію ``v4.4.7``): -4. Після налаштування середовища розробки перейдіть на вкладку **PlatformIO** та виберіть ``v2`` в якості цільової платформи. Потім натисніть "**Build**". + .. code-block:: bash - .. image:: ./images/14_pio_build_v2_cropped.png - :width: 80% + . $HOME/esp/esp-idf/export.sh # шлях до вашого ESP-IDF + make build - Тепер потрібно дочекатися завершення збірки. Перша збірка може зайняти деякий час. + Перша збірка може зайняти деякий час. Результат збірки знаходиться в ``build/lilka_v2/``. - .. image:: ./images/15_pio_build_v2_progress_cropped.png - :width: 80% + .. note:: - Щойно збірка завершиться, ви побачите повідомлення про успішне завершення збірки: - - .. image:: ./images/16_pio_build_ok_cropped.png - :width: 80% + Збірка перевіряє версію ESP-IDF і не запуститься з іншою версією, ніж зафіксована для плати в ``boards/lilka_v2/board.cmake``. Завантаження прошивки в Лілку ----------------------------- @@ -63,22 +56,15 @@ Тепер вам потрібно натиснути та утримувати кнопку ``SELECT`` і увімкнути Лілку. Після цього можна відпустити кнопку ``SELECT``. Це переведе Лілку в **режим завантаження** (**bootloader mode**): в цьому режимі ви можете завантажити в неї нову прошику. -2. Тепер перейдіть на вкладку **PlatformIO** та виберіть ``v2`` в якості цільової платформи. Потім натисніть "**Upload**". - - Спершу **PlatformIO** виконає підготовчі дії, а потім розпочне завантаження нашої свіжозібраної прошивки в Лілку. - - .. image:: ./images/17_run_upload_v2_cropped.png - :width: 80% +2. Завантажте прошивку (потрібен локально встановлений ESP-IDF, див. вище), вказавши порт Лілки: - Початок завантаження виглядатиме ось так: + .. code-block:: bash - .. image:: ./images/18_upload_progress_cropped.png - :width: 80% + make flash PORT=/dev/ttyACM0 # у Windows: PORT=COM3, у macOS: PORT=/dev/cu.usbmodem... - Тепер потрібно дочекатися завершення завантаження. Щойно завантаження завершиться, ви побачите повідомлення про успішне завершення завантаження: + Щоб переглядати лог Лілки, виконайте ``make monitor PORT=...``. Він також автоматично розшифровує backtrace у разі падіння. - .. image:: ./images/19_upload_complete.png - :width: 80% + Файли з директорії ``data/spiffs/`` можна завантажити у внутрішню файлову систему Лілки командою ``make flash-fs PORT=...``. **Увага:** це перезапише всі файли, що вже є у внутрішній пам'яті. 3. Коли завантаження завершиться, натисніть кнопку ``RESET`` на Лілці та насолоджуйтесь новою прошивкою! @@ -86,9 +72,9 @@ **Тепер вам не потрібно щоразу вручну переводити Лілку в режим завантаження, щоб завантажити нову прошивку!** - Крім прошивки Keira, ви щойно завантажили в Лілку ще й програму-завантажувач (bootloader). Тепер ви можете завантажувати нові прошивки в Лілку безпосередньо з **PlatformIO**. + Крім прошивки Keira, ви щойно завантажили в Лілку ще й програму-завантажувач (bootloader). Тепер ви можете завантажувати нові прошивки в Лілку просто командою ``make flash``. - Просто натисніть кнопку ``Upload`` в **PlatformIO** і вона автоматично переведе Лілку в режим завантаження та завантажить нову прошивку! + Вона автоматично переведе Лілку в режим завантаження та завантажить нову прошивку! Вітаємо! -------- diff --git a/docs/images/05_installed_platformio.png b/docs/images/05_installed_platformio.png deleted file mode 100644 index 247bbc0a8c9df0c7e2ccf0cf1db732dd56819130..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 169227 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%0A4OWC{*ivg58R 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 diff --git a/docs/images/11_open_pio_project.png b/docs/images/11_open_pio_project.png deleted file mode 100644 index b97d9afbdcfd0928fd2ddcd42c71554e2e2419f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 84240 zcmaI71yoeww>Cb2pa@7Q4Z_gfU4kPeAt2q2bR&(Tgp?qi(jYQ)clRLO-7Pi55Z?iR z_kRDizWcxLS}uok-t*Sk@$6^s6Y@?`8tW;^QxFJ*B`X6_0f8R*gFq;TPmn<%&@AH@ zB;Y@E2N^AA5a?OQ{Xe8w=4YfJ5G6?&#Tq_}_CJs%bD?iA-D@$19gU zU*UMqXjkyN-HRfEU6=%j0#2Ze$Sk=Kxh4B+3RlrL>fk6f#^~Bd)~X>edDZ1~t^kpeM<} z!NEN}GGghAlarG(Gc%*3_y@rt%8rspxS+PZE>iow{r#JbWc#}M`Y0cy7By&badCY; zBH6xadv~|~sEf3n{2AyA1s(_J3B6eQOI+Ne{p!U)VH}WuX-;FKC>Z>CXfp`-^GT@@ zt>KTF>qPOJ7kARw({x5dXrM={b-PgRMET_iWRM|Co%iLj>!cpx0Ru4qXYnu8PCFIb z*fD2s9L(3}OzQ0emW%CuPbMex`|;YAK!$C}TxN1!US2g>{)Liqa(%$OY|o$C@+FU3 z+1l8MI4pt84UAZJ4-V3Rel=M{I$$t3&0{0+D+Zwy1d}J!uzXtV?)t>w?rIXH*yd$_ zW9uUVQ)B|y*Pbe^T@<8_S2pUTxWi$>6ivRZWhT338DY;rbalX4U5n#{eSUfSH>kF@ zHcv5irqVio+J@lCqv}Op#Ljr(qR;t!ar3Rv+%VF`P!u`5FDvJV(_O8COZ_G49-UH=hyVIZS>)@E-tE$obm&&O1k}AVJ>bs z?qe>-84koEoq8!Ht*neIJg4VAUuiLvR)0`u?a~!1Lvz@0qWGs>&|X8+W~wA3Gt>C$ zbbI+J2su6_g(XU+M%V5MLS9BDf!pF4EF!3M?`pT$pv3T#V%}`CU-PsL9XM zF6tF$L@IlHZ(! z;@m9M?3aN)100Cc_DBw^P8H7ZlX*6G_jy+h35nLX?2T(-iyjtJL{i}pFd!ZlDU2P> zw`ax5HP<0jjEs!DyyKQU+AJBmOxHK(i_W#WrJA}129c}LMmBwYeZYGZa@qQ>aT!G| zt^QjxDlKi{&z~iI-;=9v>BEPiX?Ld^XD^gGZcK8Hv0>3ceQ?uM-Gb|O1}SWi!wVCl zu0qooe2ze)3hkmr4sQ$;9vS4WK{ZW;O{sg)otS9e$xw3|xYoJvu6A_Bni`y3G<4b; zdaCgH@Rz}lK`97d87d(}Lt`?6TzKk>MRxecxhvlrP9n@VZ{9#$4ja!GKCXsm$hAmK z4`)f=orvG5f};dhhhVUSotC>k?BnlD| zNb&u8P2L`gim>t_G2t=xD?L5E?g(-dKi~6t_tf=!@gGR!4%q_kp47=(h|JH=+c%!Y zAs}SJKiu}FO0%uAmSxjB^1PlV~b33H8`bDOm-Dk=i5ES4C(mXt)E&6~7vSqUPvK3@mmeE<)UTM^-fWdHox;-NH^&u2H+bGt`2bEwzYhyDmTN`?n-ny^1H zU@%qqydwmE(eLg?CJY&;0yx>JDb2-WM%7#h1ab<8NBGKsKoW@Kes(Oh_Km^hRIiq% z>*Ich$1gmM(h*LZX#rT=h)jude@7diR6p-uh1=;9V#&P5Wv(-G`lNX$J^F9Q{mQ2a zanEM*t0O&aP04#3{b1~inC)Z&4u*qCyj0UJJU&;afMo(M_!}h<>VI4ozg-odTeP*Z zy6R;2HR2&T-=EcZ|DI=TZx`4na17^*e$5cDBRg;wD7c)MfKfd&07nI%FvER)u@N#r&opQXuzy%tDP=33)t%a1}%*@QPva&Sq za1ZI2;l4>Jgz%q2M2cW#Ax7{ z&#XwFgg{0{N1ac%l$-76fs@?x!)|it6~Gq1{@dh(pzys|zSVEKyG2Bb!lyW-iBWB! zzJO`K?Q7Dsc}74?Ea(N_vxe51uc0A7k<`&4O&@B$z1nT;16*rXW+vLj{JnaAJL5}He!;u9kZaRIJ~x|v~r<+1{S?yjz`s%)m6HdEcX0BK2ex0^0QrFRHJ=6g))3x9)@ z_Ib*yDFWKu>o(|0_H5X-Z6RCBWse=^UgX2K;?QHBWq8ghEiEm6+(R8Ha{T118R9Tq zX12e-zc(fgNV%e-qPMp<4#toTabRM{{xF?k-; zZl;vG0S87+o%QS2H?mQ=(Od;*I_1mDOW4N<3Q^B)a`!pFMDQVMD;-Jk;^|jHHeEwMbLL05ucf6QBQolTbeaGq>yKltcUVTQXFCE$33^8UbbnI- zIu9%X&@W(Zq)X0sJB7tbNlD1t`;WyhkRrQDYZRTFoctS+!Xnt4E+oNGEP8bnfOOQ? zC$m0(@`x*O4;V=zJwN2?cTJV~KP=k6ZV{ zAE87~2*<}QUAvok#IKcnE8FJbVvCIHXwJGZ$5DSc-%VY|3K_Fr{XQtwf$oN(`O~W< zr55P#%qZaW%D9FBpyY!1ihMNZSID21s+(_$ zPRszafa~h&ii&3n9B_T zuw-F(J2y8s;J7nh2LXF8D=*K=$_ns0Rkg8Usb4LGLhaW3V)rDVO_Q#G)NXBU869AG zoec6X0(J^y5MeerIJmvNtpU{)^u50L>xEbeWxw)brlX@{W)5v%20HP#zkEXZ1#s`C zrlwX_R*;jYI z-4ohfb0U0q*Vb670`8KK#%~vy#e05_jyTevGQpu3JVjH6Sfm* zczD>RtxHZu=8196A_$OhCuirAlM@pYlN9<5pZCZq;*fF>NU1+;N)Fcd zSbq^ELlY&VqM{-sBm_U0_X2z$rLaPZTe;|{XTHr)BwKTx(|R5RJ9fYKsoorjgQ-UM zz;u>eYXSHO<^ApY9|kry24G&5N)`%`};-mi~_UgZc~v z@-2ykkgiMkjI#1Q#;9v=O+#@j_;8$N95E=C*SqXMmwJ^vIJeN5FVI1?ll5}WdLLsO zDfs5zFyZ0hq0KY#F`V-{?YRsd%-3raX;*q*I>DbqGTv?Jr_aB8KF1ggC?H^VPDmnx z^*y(9EYf}ASS^N_t^sLFQAj!ZzFJ@j^k4@d0QZncJKuD*{Y%`Nn?pZ?N~;%MPcxl6 z0K^EO<4=QEbMC3Aj#*dEz@e=7$4^d7Ts5tqa~msxaYG<`6U6{V9ZKMA_h@`wY1U5w zuXw$Q4D&(210b}Tg>OO$K2**C`0k4^fj?ykBolC94$_=~0!qtHaTh*9xb+-|m6Q6U z9~r;f+uxwC5zE|Q?Wj>0+N{-1h6V$j0Zh&fXFsH_c#J6}{T-bMSF2dz>RgUD2%l4w zchH==zk8>t**^HoVB1}^YHOe2)QuKm4Y697|8}q zQZEo&J$0uvk%2%ufLBxQu-q0L{0Tn%C?PIveZdeJLkx);yvsZ3%C^vAD@@_I7MarY z{YHWu1f>9AyLtH~pw}4glpv4^EQV3_qX>n1HL^TMyIczh6v)WOr%s8ZTjM}A_Xz|F z6Xc(B2pG29+uC{pJb)t?kn;Hnh$9oQ13;t<_}Us2BoL7faF(8)p5J|tT~{&0KjiUS93(^e;Ly;} z@bK`EkVFv=ry3I^ApA~COM}5+fI9cbvj+(ifQWEqfCb(+DRlV%Mgd45qdj!vkOLoG zkU#wNAI64~yX{EzY9sIL;71HGA9>wB(?-h$&m?2G?gF#D(ssj_ve}tRigf)BmUQBu-Nud16Cc#vcSLU6JmKcz0%SKh_@>pA3#$~{ zE^WtMN%j&&gKOL1*5gAs?UX=}JrTO*!0&ZzHUg>h6FZH5>BBwYuf=`p0ny+FCA-fQenOT^+=HwN9RB9b#-SdY6M(fa^>X2tn{Av z4`{vEmsJ8a3Tx;zN!zp65+65H#gAEUhEv_2N{bWR@4e-bC<;OUri#T4ebUTZG5bMn z{jvmD>YhxW_Vtnz$+!o{n_6`?V?UnV{-WSWjMR(@VAbFc33$A{?_=c{ht49j z4AeDK51Go(SM>*nc|BrCcx;^ZcV=XBf4w*7iFpyXWBRM_bDSi?%Wham2L;n`X0OJ} zZ#2WF^w5PhsGTY^U#nKtS95A~wtE?8dP{EJ0Kc37579=iMx9y2JNR~nZ;17`p#iXu z*%;T6vzgs}&VyS6+pE}YnX-+8!8?bz8_Ut#$!}j=OZ|K;-HE7CfQ?ZFhli(fTPVJN z{~UKPnLm;>h2LHufG|g^-NHgbZ6tbI;bT-}jpWjW3y3x3@GFr7ErTu&%=Q>wQ-=N* zH{&Y7Z_LXnm1wC)VhOl_%iDu!SnV8PqLs!5QwFp63|_KYuLH|eXv^KriZycyd&pN4 z2a!t=f6A^gDLl$IKe&-ZTO+Uu{ey#{wK+XA7NM6%?3oD$Ghi^i#UiiAt(@CIVfT#J zW&7Q>@Re_IxF^D<(Z_VZ{1RRQg);J4%SNr5sT;G@HnQQ-xuu8*h?TK}XKwz~eao%L zoMd|0Z;Vk!QRrR7P*h+{Ud9e=*wGX)Qa(OD2ELc;-FEj8SW{Dz><_xH!gYU03m&nU zcd;Jpn7ioIF=*FZw9e*5{^7V8RpU=U_^475Y*pLa{|xiiYIdC~B$SbDo)-+sWo8{C z%0W%rj)vB?vfz}>6I)v`3?*hnWm0BI*#F&A$?d}@=79>byUHf&FHNAeM8f)9^;qe> zJZ*8g3H44i)gUu%0CfW3irr)WIQL1%uyBa!K6PREZ=bPU`a5Ip5{Ormqz>%|1qJBj zo3~}gv)W9-Q!j#8{C1yJPw;p(?fzQu{$19iwySAo7GAhAL6Xk)n8M=S-IVuv(zjd| zGqZIQEv-m3b*AzpCJ{P-LIr`klA`2Vz$Rb0%?A=Vd6R+}gaU;n+fS90DQQQyeHZXC zNPfB2?R?_mh|(<_x2l|xi*BJ((wEJJSQ@W^!K8?o$a)8PwVtS63%HM zTf5@$lN&;W7tfHB=N_|S@lMiSacG=rC*OF{ zy|5>jDcUIl{HyFG{!K@$N@> zY1fq$K8Sy?ixcpxnj~^a0o|CK%zrhbFOTuN4CUH2)uOtW573jSsH;B0zZ4vP78LMu zij%RXV^tU-dTrqWKDH?I=TWv?k-97d4QsXWs9%wafam>oaDH7zjevoakl*+m+_d+7 zCkiG*v~{J^xsMS9k_{cvAYcd{1LWPrhf&$1gz(W)&bhaqfpOA)(yjnm=I)n9*>V6Y z^;|+Lhos1!P1|%Fl|K&4Us>v<=a;R*D>6A@7t)$O!tYhjbkz#6xm9~#OH;IMNKudH zsHdk|P7}J7opqxwt38^oGEwUDf?%dlSS~;F@6yd+bP;4XI9Nz*wh^|_uY@Nc;Lp&kgbj&OC?2iO`ZA25ckAxuqj+#0kB>K3^JQZqa$kk&j|}nJBBRtnP`s} z7F=gcVfcM>h!}L#joaKkL!0579SOY__Sd~#AzOp2rL@_~qvEmxkx&Ina9_`Eldt;P zLgf!np^*H^E~@14;MczKlx4(IKia@dfNoc$x->2@$?jS@@1@EiWSvix$XJDDzNMfi zWW_#?jQ(Lu{`Sio2$C)B2{C<%xt(vthdb*xAL#pi8xr}{n3&J$jnTmXxh3Gd-uI$# zJn8%QKNAxhEGa^+zs9W^oz~?pR!9npy^+`?!q%M&PUh%I;k!QIjXB|e|>499_8ESVZH?N4U9K)Q` zm4w7C?GM$VI9$$ypTf^v6Y2MF6ZcQ%MFG+`y@($kco5{~j!_m27`}3N>D{a!nv~Yt zDz;uQyafwkeU2g^BxXX0R@R{S#$})CL?=3SYf6T%2B{m}pBll$;(fE$JBfkOubBIy zvC8j9digfs9SsM{w2KV%$cufU7m5;577Pa_XLjvc@c)%(eyzlO0W9z;Q zfA`5sR8O{GYUe!VNa(o|2STJD;&-o4E$pS1x46emFDIN3QqLTNuVkDeD~ImzTjq)it*>OYGk04q zfz2qa4Rq&cI@qZzoaAn7C_o@%r+G0V8d7S?0`W|dw#FLI+`Ox%3p)zo{=i;9^?tRr z)cZqza7~Ac$U*nwg8K69q1W4w@6EBlebXh7t7!t_vuC*E;=Uqt%VCuFK>}#poRwXR zOy{n{rDZOA@aA#Nd9DmpQq$qUG6ub zgR7VD&Fz8@d}WToqbFywyQE@%-$7uC$e=}TU`mtGzjz$~4=l?^k~IE2=#Qiup4rT+ zt8uoKv);V!0RHX6mmJ=NSUbl}zqUgbtHl8Z_-PQAH1gQGjlAP005RnsDHE8ic)f}D zJFQqBYwBTVqMxN(ickYOCj6y?ue>I}iT56^-!~3A0AHDJ z?`38aSNE(pqD&@tL}oxkjpo+>gO#NorTVAd%?iI{^>a81BMz9@%lA99-wYuCci*s$ zsEeWmrixhjE2iTs69faG4bXJeN*-fA{4$K8MEZA)i1xp6x~#ufi^B#LNS+KJD3_nz zLrbU%5}hGZy2q63GJcB36Oc*5w9Pa3`$amOJ-v7i0i43a+Ci_D{@0<=0k-A7`73{Z z^j|A@g{nPNu}hKR=B`Fvxqu8#QSr2pT2d%DN>a1bq; z99{S&UzM8Fm2X|rlyW-<5$lIcw|O6p?pR$}rN9*8qkb9kvGm~brf;btBe8aq$+9t< z@{?B<_BHcSM%!|40}}kB*De0`{GKG$CDx={v`v%O+ZkBuiSi}p`I;jHPJFlICMppQ zgdRXM;sRzH@;y7*XI(KKA`44C?_XquoXx(~zy5s}$CcsVVtc7jmvdz2AdBr@aV`A;h%ca(rkU z&GG2x^yI5CT9~|)UJgILl6H$ZJC|B%%;p^KhTmCc7Isy}i3|3d%XgbU_Yln~K_92e z8HyuB)CGSPo|;QPrBjWqABwk}g+FG-0jve6>El3PN0Bp4U$$lquJ7iODWwp>-LWOfN!SoY6Qv zdJQEvaH|{Hzl@bDkb$x)O<-ihN(ZmXMwV@*AEe!1xkFY??x{N_8=$fPvA(PjM^N=& zwEz*wlp;U?J!tM+ll8E5Tpqd_ij-c+Z!{c+n7Zd&q$N-vcI<3`quN> zxEi7J1NvgVjfG$lzJzjp?zYYL%%1GNJIMdY9xt*Rqs~#~;KqIa`82$4Ar9()t|Adl8XFq}NJq!_vu^U(B$y>P z!VsvMxNiwhJ}b6pYtJ%p$;Obq8qcp-D?nn`_*biukPqCeQ%b9SHFt_yjwU+CVWbSl zI<;LLe%t!&KVwrpYJU71VQK3lo&A@R~$PmkWe9W_{-c4zX>`x?#)7~U#f+ye$Wnm2+6Ecf&27J&oo5@WoE zjE!8RZ@lb%j8oe=st0h`o22)Y+nqA>5!Kr5vCCaV01v@8^j=-_S9x<>0aNTXNiIax z3O5XN7)r7ae^@yVmjs>RButBqu-h#avDG*e3USdrnK+W=MDOK}HlAiIfxQik3r)>x z+K3OUVUH}F?C5fq#Ai{} zPMZBl#~`_8noFvmmkn=Lg1x{Xt!);1SmElzpL2h~I0~z-H5i*~Y+5$zQ@5+az`-wT z$UemF0D)mCqhAn>IukF$2DKmxWE@R?<6*k-hh#Ho$c2;e{V5B?G^_pWlJhmJ>y^0=@oJ)I!7f%qn73E; z)6$-$n)f4*#?sJg*dzMQ`%aOi9mNUP?wGu->QKAJLdj**g}+YW)}&>3e)5C-TXsJV z{{6wOuS`J+5F_oJG8)<@IP0Ft0nmk0kY<_x}bnq#v4r21xS&)_%+JcBAxnG}Q3h4-5 zNA{c-0Y<@oXsO`k`cLS{CSy)Ed$|Q+7s2FbKD|(7Mi>pr3?4u5Yg@o_(RQAKcqc?g zWB#3P3Olu)`KK|>_N`!32+e(nEbUb;J8}0tPhmqux^gtFvkfT;I6dvs&oV_gp_pg1 zHdIQ##;jr^m;yhsk1hHL?rU|vNKVIiT4Nr%sp(r=)I?M6yHxk@ z&kh?A+eE3?PJe)q)Z$&`DsyuSYh)BUD#ZsFPHA!xkyQ6Bi`z4e6n53WdLi!|NE1JL zSBEj)$F$gE0d;Z)T0bezulpB$%WqK~49Fzb5cQOcA4I{&?%Usx&r3}uKe^*0q=dSf zFp32JFh5LBWRI--nTXrE_WE%MPhdO+{I#C_QZ3&L#;4hPbgUzlMC8f&roW84=lUsu z$DP@vsod<$fQb2>)F(~De0R1i(km%CJ=cKg(#UU9Io@X|n<{lXXrF3ySsZ>J060aL z95c5WAqk1NvCC$NFPC`aE8%PXYZpu8!>2aEn4v+~+6mcqI*T}U$dJ48gl#hJKOT&FAE*k*8tW?^AMJR3%eeR0iNi~pR3=s_-{%ORa z_F$|zA`H>NEt;QbgYWO-FW|iF_-A%Ot&;!Ev;Pki_}VX-mgnmLuf@{R2UuJ6LUPG~ zQb_JEvb?AVoS}Y{IltW7f4>$`mgUNzf8v=LCSYw;0p>Fx35%;LY^*)}#k#hcRDh^h zAft89JFET|)I9&H1H*XnZO{f%p%uBWm|-+dN_kWCMEKJd={=k;bH=PNc+7G|a$=-u zMyyUw%>ZCrz0EXf8hgL05z-tL0GwB)ev7?EYkbADUh4YmWSY*GuKM}9(m=fU`xBJZ@Q*;?cVQ_1BlmwPi7Wmi^A@yh zoF83cqEaKqvGN+)J(iezzqLYUZu@>3CA6uK0~S#wtBY4_J*jX-_VNrmMGP3GG8DL(2@Sb;t|bk}F|Xs&BtTmWIY4y)zE67+l*W4#U| zH3Yk&1CfhxG2z4ENliUc1YVF+RK|j{^N+d?u?KsMJ*WG?rbZ-E>wO59pmC!SH1~E>&bc`Tt|aQXk`?RqQ}_~3zHkkphQFr$yHELG8m2Zs{19aS zvosg7rd>3rrX$6b(UOJxu->q;ka&MAhq9kOLC;MVsnkR?HAI?bpOv+8=Sbx5VjVYl z6K{*avqRpPtB(8clc9JG=3QdJSRbD>VwZUjNj;3g(MR_e4`Pt$oo4b>CN8~|w5IHy zQjQj`QU@HV*e-F9oL&xn!N|U$)P1tykNtT(+qdJr@oUy>G7$m5b{x|2L`reR_8~4h zsYKbZ9tI7x1Edh^m0l*U^)%`?^MKaUb6}JqRVKix7QYCs8T(a4ni;2UcU0i&dvEWCX_21ghp2}Gs;BlAhh7BWknPtf zsQ<0A-9?R6BBg~aPnd)UQ!)Mlff5x0#jJ+ETk!6Eqdz(}kcxYlP3r$bbFMW}!ynN( z$DJ5oN~0hX_Cr3${QF058>w;sQ*jI7?jSD7o_nmpf+yu(ks|DVAZf7|HhbX3;f}da z^`Pq@qV_-@6oOb*{BAeio3rzmY1_2mZ;9pJN3WtW zI?Nrx8F9 zfLq$u64$)8o%gDDA$(2B^)Oq@1y4x#Dyn|{$#pGsZ5pVEL$m@cnD2Mq@L8{eEYWd; zv#G_1zT2VLlNBLFtGkPXMHd4eEqnQ)8b(@_pIsyJ93m=lC3WMaD5Y>|=j@kjg$2TnF>1a7K_Osis2tN8j+jlWwelw zh`;!}?;-0cHMvvdb>7ry6m>J6iDiE{U+?N#GT0qMWq<*~oc*4TA_bYJQzcZ^kWQXN zV;2*T>oMMOh}GTR11CKnAOdk5b+US{6?kprVO%Q1GP``3Ck~&P$bdKwM9;1k$Uc=; zt(DpqQLMX*-yNWAkJaohoFPQ}H0~s6F zjBQjajDv*nE4MkaCFZUrL!> zu3D7tI}=@{={@x8i*xRQ>?9p}o|OBT-^GWY!Y!bs9Y^=!=rIP>d23o7v4hhSH(jS+ z{?=p%l>a7cuMCfrqv_p#8#0$$M<6nUA*1x7+b4*2m^G-37kj($HgE&Q;;K zJptjrWw2-o7E;>x+H7p!q?_k3>B2PnowNRT!QG1U4izLuFsK*-e(PMc2*7qjqGyw- z`|z}#KK+=soc_VVc^a7^1-ICtwDf_TgN>}05uP#kB-iEbZ&(COHVQ(1=I31qSIHNC z?2n!~Z3)Jsdux~3ZqcxyU9r4hiN}Vk%vA2q{u*LY$vm-7lUeg7lHp~KEUrUVa4-w2 zt5=on<=?QvC}o7a?eQuztt4COji2l1yVYhwP{Nj&$jo(1%IW)F@YNr&QeI*HSf#Gl z^$}0_fTAFlkc`y5mwwUCqo@!IQfwUMfxY^dex`{XP0W?EE>&*bx#ZHwm(hdMiu118?jd@KE9Vca4gkmhDX)Y zNPzLmYEb7+4uivg1NejLHS_#-V%#E*|$ zOu}@ioW)gIkxa(khjQN5b>(_Z0Bmy7s+jr4Iu=`oE|~*j&QnowXC#mB{I^bZ zxob-XgZb_1kT}z_d-}LoweNZ2UjJh{e!3w8p`h7gkNuE-NL-h>^k7GQHS~q9*n6** zh30I_{nhYDTjv{GCXe;i5c-9WA5&NPR}>1X?aTpTRR|AymRk8P#t`l;d!=Gl`?I-o z);F`>wS9sYuPF<|Zs+<L zX1C778_}EV9n|fC8Gh$OL4CwRKb+_H+3LKon0^J7#izecClTZa&gxyOFYIH4ZuQBW z)z8d_Qv_?PN0uY^4^QaReV{Jl_0?H-`oJd&yK{?Ebt0m?9=@2VTQuLaqQO58R$YS% z%4?^4vU5$@vu<8S-xxkKF|lRFjas*{)tct(u28Za+GStMHD?daAVW) zv*ItB^#}}(@U2;8C{i>KqW`u3H-emkw7;gUrfbsopeM!3OW%)5gCjXn0oG1f>llA7 z+OS_@QnNN5d1V*d_~C3~Fl_Bpce%LlktK-Vcz6bk-aJc8j=OJIE>!$T{=58)Lge&r zM~d1F)KbwCrgG&VK4`$D^D3_Hn=8AYO))7UAz@1oh{J#B-2aV|LYPhA;);9scRp0&mdm6bD5!6;I&^#FD;x5IXJa!Vcs0+`W6)1}vV8B#h) z&B+@J_!~&-OTKD6$5j=*7c7H-LP{Zn@bx!a&8d~0u2jHa?WDB5sm*ciSgCO6A^z10MwHpq7A-&e$DE} z(e`?tN(Y&1H8rM4@jwM-!va5XWSC10h(oMmf{(=6d8z<UT|2`4;IhV*#peu#C?0UCaWq~(FU074m~e-&LVe*| z$2PZ5ATMYh7#5f;{+mx@`K|oxN3FlvO^5=G61W;)QH+VimD0YSjwb|8keME9^(U2} z`HW;y`Pr(il8w-x5%Sokwc+X8-MI?S-Q;y^iXPc@#e)yRjx|;4I-5Q%-b&a_Kn>0= zWM2zkc)Zfa*YkO*XleH?V%cF{3(nAy@P-k26DgRpTI>eF&riUbnkrD+?F5&x-T(C3 z;&ES7FmNK~8TmEud#@8dF$-PxdIxG!JrNZR(0!~^u(+6(`m*_Ys-3o&Twp;`61_b4 zda$VQv2Gy<6hJzInP8cy%T-ype&{#ne*IKI?mL@7=~kQ>fBG!1I>lMe|3h_o4Co7N zvWb`rG~@~I>F!UNLnqA}eRkd`LkGD(kZ`T3P@Hjdj|^?e`GyCs?FrlM>pDwBv`GXx zB#SvU>`pgxYu^>^g#%e2!BX+Q_pyCpfn{ww-kX@2CrkrZW&7_3_|&W_QAu*wDoip< z?~GChu}H9bJI_!CD7WRTpH{5MXO7+;P|X%_f6P(W`N_z=&X^+tj#5wFysSE>&*7KL z0V7`gB|Swhi0M`@fLZ8V)T#mW|Jat}NA^@iTfqlT() z#~2WTq%82Tju=|^^C$WBmlsIj%!Jqh zWMB9GPYOzV4!=9-g{l|M+@_D?sHRe8i%R{-$ zzh`PEsr1|1ltVsJf*%x{wW8_CBJ_!3ZsM{ucE@W}8=k2}FAo`RK1u_KAhz%E21g`x zq1=xCb^#Tq0l?k!G>W0QaY}IVW=Y7Hmu&InHL`+2IyV7*>vL2U6NQ2Z(_eD6Eu8h4 z8UFMddzVjy=}o|3mEhE3S?#^OK>ER~eIQgP36MExwD{mZ{Km<#@jNCnQ#Wz=-G-{i z64mi#1Rcep(A9a^gompb3P5Y1DW}Pq8^EgPS+S!Em{Pf40Z}=?lw@(1IID|=#H1U| zCr^gzF<&BYIB$wlmo#%(66HQ5{c^@EUqXLVz20u16=7^nYeWWvmCTyGcV20Q?{%-J>0&|qRPL=)W$8YgSO61FuU6^L|$t0 zS$Og{nl}GHr$bbrjuKt~rR~+-6eRtP5?%!9J#miC%CC&lI}xGhjL6R`8m`4=GS{*b znygl0w{WxbTy<7`zcYfB+?e;Z#&NqHquJF@593YFCbV(Ihv?Dda=BvU%-zaw51)IZH2gnZ3W>JDeLY?^zL`s{hhF2;t2|$5%GTeqy zKZ5Iogmh8o^%~(ToB^qinAz#wu0rQY*JS7bCaPft2#(S8e&+&|ABmLhVcC0W$WAmK z0tcX>h+#?Q($GvOe-99hgEcl$!tES>N0?H>;&InELoj(Ub#(OXzlU;9!_Y_o5|%dN zb{EU3w0v&3`JSZe8*;IyR=p&bxetFa-ZOoA)!f)|^K4r?tPiu;2(c>6;)TD*7*+?N zp7{27=an)WAu$gv1PaMd7e0)akKMdl+Z+Ax6wHg8c&26-5|a@)-=aSMj%B_6E@j&% z)qM2Bai%pV)1^&CT6s2(fZg$D>3%{HLz@q_qRtc132D(uOl#2vc6U&9aAuu4wX6#5 zx%iEYn}t=1*-hwUQk{hNMs}AcbJTF^%vu8c;TFH!qixhYDrDU^Qw3~DUZ6%D4|)Uw zvc$*fwq{vq)=DNjTu8c+Vwmn6r5Ml3^YQ7#RfD~&^&#d?%lC-oZ65h)yQ(&*+x@ebjv1W)%4H6Sz|-n%o; z-_8%?ciDmMJR`om?V_H+58!{~e~a}2?f3dh_4Cv!!?;y@Do$r}+NjDRGaJ$4w*Y?; z6-@GL-ym!L91VC4BEB0-K0RNM7mMfN0q_d#Y82`@AZzM_fkHfAlpzDH{1GZcd74&q zBK#$DZoC6qFZ5h0(f6^6#y09mSm6Ew1_5BUu!#FI$ho$}Y(TT+A60Th$&Ty$oLYnr zdslx5+j1cmx-yPV5(V#W-o*>J1yUhMGTUbt{!FCus-$q}Mc4CKC~_@2!B6y(Q}S5d z54=qbvKZxR47W$-Ob^U5C&*`+cCnW`eF_fkk5j( zz#3vZcn&@7;-%+;3|JV2|5(z%+X!<09DOUhv3(t!aS18sl%wp`t8)Q9FgZcZT}AZW z7SCq&gD8mr=A!=igR9S#=t`%!4)114LA=j~ll1(i$$s-|x3rEZztZWiH(wV!`oz=D ze=Fxi8?bJMIXgPA??&wXWw_ezhNinib(Y~6{RnzxmvAN@++*JV1N zES$y7Zkcd!Qw3{m=UZ)W7qv%$d)ZCnz%wqUHW6|ZpDy1*gli^cQopWnQ8u8BBn{EN^M#X z`SSe2Qx7?S@un%)&*I9HR$D}d) zc+h3ynTEDIg2*)FlZvJa?Gt9@%ok=Hcx`HJzBlW~5l}X{t1UJ&n>0&`naq3WYDf z|1GFL>iOg#jqLDZm4=q~t1w#p#l;024hOzyIEJp!L(ZMo#BuIxo{|SY(VYX&1!&z| z&z_iQ>kOsvy3u|ruKllC0DQ+E7H>D6)S7;ntMt9OeRW=g^r{ET0}Ye%<9)pYNgwbz z08mN(xvRYEQjjrP7m;`|pBq; zG*JANzXI6?6V!i|1@a$Xi=h7FfI*+X{&%g<|5{JL)rtqCX{%IdNi$$(zxv*}v8k#> z7?z-5{u+PAVJGg+@n}*kGhIQ3p|5hr>CJy?8A5D6(;BXZ00ktBWPRMFK&klcaloq| zg7+ywvw=Td(*5o8~tlc-hv;V=1HpuY3inuo^1%l$B9 z@h727j!0DxZ<9qT2}0mD(9PQPK5<}O=>hF8>;6v9H5T)+niKKfBnU^)%K>Xg)#InN z`?F=sHRsB-qF8O)Pl1fvhvi4#5*m^`U^2CmZZ1oku;_;*29Ie^j)-)rJCBvPyWBlq zjs+^>Ma0#_Gp-u-?iURTNc#8|$74if26msn4O7YS=}nWACjmZK&y`mKaui`Q%FqEz zhWo%HWpO5z7RYp1kI(g0siui)9nk@~hy7HHH7KuLCgu$6{>=MOJrRbmrumDP+RW}~ zw*N8^KO|Pmecu7}JNKBd6JI)p>wRH6NkHLapzz7cl$jfFH*$yL;kU(lxxZWj*B5$R zEA>}_G!M*p(;|!WZ#L?!IEnaRipH;BF7tV4(mc0^zh~cpJ!;$dlaLN#y7P9tXZQQ0 zZP7Q!shq}Ll_t#W#I_I9>$1OAe-ReDe>LxtKB6aRHP7GfYXT)Yp&d_w%FK|P`Ub#c z$U`7`3g$pb)p%H{lvBlT{=XNAX=XsZjA!{GE*6ROW)3eJV26OtE7%WFS*pxtU)8O6GVH}eFpEK)*8=cWDV9yBq>juW{_50 z=FkB9wx@s+kzjgB3`OL#v5sT8SlnQ(8Yx7;QJ;OA=pNuc%B%9k}L{O%^d z^CTU9n3)C6x@6XGL=wEG;N>at9nmv?Ks)o-%Ejx7s;JA;f`K$c;<|Q``a#u(63wL5 zdPJA`kFYt_WdHk|%XMtMeFKm$ja`ukM@BRT#YIv6$>6>e;Sw~s)U~`5K@+g$+Vn6Z zym{2}1F&d0tFf&JIpkHhEaV7*`z(!@g~#o|Z;RAhu^+FxU2k=O@=tvAd(%fi8K^J4 zX^>v>kzjg+sP1^Uxk;bHxw8U9)Kl^Q>@!H^cCK20+L=!yj^s!cMCY| z`rR6^H}nS#uZe7;y*;q8?5YHe^GtO^EVGLMyCaXw*`Cf(G2;y8njwhed1J$_0!CWN zla25>oJpTES*OON(OFTa*Pt+A+=mtw6{TKSSy!NExO=a&e*#m z>OLT0Y%pMUNvuy=yJw9Hgc@QxpMcD-xpG>gJdkC(d^xQ320+Au?k2TB21`U^@*A?( z`-65sS@aKT@Wxw|@|;+5$^J@;dSJG&37iHuq+4qMdFmob!zZ|23({ZZXh~0Df#$mQ znxO)9+FowlSkjEXorUNp1Yd-SKtwNR?0sjH;4k<+q!@%YPu(zft1u$%q~WN4(tCP( zfRAGVoA0L3K+I9TKr>-g34x#?hWB>x!ZrJ$$=sxv@IiSBi=~2){QKPIuCAWN9}Zfp z)O(vXj4pSI(>4ZOv9sv0i)IT-54Dj$ZU#}z9VatEG$yzdh9eP^6h@Y;@oaro`3E;9> zkggHCHoTh!*%h9yCeY!6^IsDMnM21lC)>A$$o(#Fy4gF}ihu$2`(K!>ziE3F*gi(Q zoMe{UsC&ErNH<&}5%MGb@@1*G$_|DF^Z#*$e~PZ%4PLEFY6v!Bjm^=btr%bp7-)ZZ zaI59cva%CFJ(KgKyWD0>a61DFPrE;6pV4A0G-Bn{TJp47naRalC2or5%%55}T*=rM zSpQ?>QDJ_sxfKNqI-IudtkKFmQ{r+V1MrxwfWw&v~d3 zS~Awmb@|olt@+vieOX-W#^B0UwU<{nedVK33D)KVL35O#039{0u*~VE04p$K4Rn*q zKu6JwxS5r7FBxxbc$XY-1Yxn>-j$QjxKdpbnTGVK!aV^N<6-;+;CkD~UaYkLb~xw> z$l84G*h7?4o*k>^EG|c z2<19DZB$+8V!adSJ}*FkL=)qcQwP2|c#SphYuxeqQI}?9xVP@uvTme~O_VTNK%YX7 zAb}C@{*sr;{cU_N@ba&nlT!YZJ{Jh|*30L`a=mo`UTM43aQ}QtS>QpW-C}Xv|M5!0 zPAT5Ir>}2@FwHmf7!a4fO<^HYe`E*<7GyNV#r~uc_@0|F#c4Ogn1;$_Jc%z?>*ldf zh1ET)K~2Gc0=kC6OW*V#-zsNY%N$|{!5n!E1Lyg_~q9kch z7vj-jvlE6XPm%J{L&uUvc6VSNdPeC*SvfuJGsAYzDeLGvGb?XWZ($*)@l5hOEjbcO z!60Z!#S9@tmCoxTtoY`fU%haUzCNStlm5CK$p4xdg1vUBl5*ZzeFP7Z_{)??+<-ry zGL02(+gi!>oTsW}-Gr7>1Y~)ZyL_EFEjYTbw0P2O{JR)f>oc?KH7DR-bZ7P)U7KsB zQde|#{s-B&mj^_L=TR-}Cquha zF?Vsrc-oyu&#dZHCOxNOoXVfw<+4EE0<(%V{(32L{16e6eyS0h_FSj7Vxu&`&K*AV zj|Np;j*Wbej-sdZJ+s|2+Tw%NgL@a8!NGJZqL`Q>d6 zWFpK&4wfQgwcb?5u@iNWeWTM;VmIfRFik7cmEwp0J3%wDDeS2(ap{%eB9CQ+DaBQi zlC~{TK1Xf;lP$K~DrQ%Ow<&>~nx~r8t?F?R&s4eJ|L7&F~pf1lRIqT!Ysvg<_lK+bUc7B_N+Wpw@@L&8InF)^9 z2Xiz2xBMIbz7n68u}Ma4>V@>xWbO-(?JL(nT8m;+Cbg!jQg01&g7^ZGItRPIpKQic z*3tOg1*gHgusRE2Z^`UKn8qEPxD~`;>Elh^Gg5_p%k$rl zp5Q>0jnn?Rh}T|63J*IQbYb**%Ou({>VGg#;8VKKEeZHF{^3b6X;JvFS2V{%qOj6vwzL4jlzFNx@4{s zp^Bn;cXJZWdd${2#+#fqy?-heWo69=?c6^dyjd#&Ykmw2q>O~63J&ti#%N_G4oHA}jgMrteSfp9^#0b7?pFR%>5D4h z5g{MksgTP7pXMTkW%AX)+j%$$-F>ciweKsP39-M)h47?8nb4&3e4BkvtQRBs`$TZx zRsPT5boey&MV0HqlJRe>Ccm$(l~rc4S8+!7$*P2;P4xaIG2!00&Xy9dzpXJ1xO4Nz z%Ho+8Ej`Z&cs?i99z^iIRyU!#pm zH)=TA*GJaC_4rz!XD(j3z(GyXw$!zH?8vF+;W%pzY=9}?Lxg!|Na?!?B3+X&_ z;_(`+AeXTd5`|i1lGX}_X4P3#W83ZQt>Ot#(9fFv5p9^-xS1>*nC{8pNzUuJt9cbSr330ri`75}J$ zmcERn$l&#Cfv<@d{PxV4UH~US4P%50PMwkR@)r&$>!?#z`^S1tKKSa;9h6_}xhlq@ zG?!{D8n?78+UI@M)96Vh*1KM)X)zN|^&n{}SvJU%??X?Aa0Akcq~2h9dG(})b$tdo zId_0>V9>-75eGZjcL-1A?jnfXM^T2@jE8Y~tb+?KnGwF&J-Y?fIQ%A{P8NQ=#p>C- zIZf$H9m=;GzvEWXjak(WO>Y%$bZl~-e?s@g_e)p!D9PEnCPBl&nQ!MOwi+4UGeqOQ z$v98O`@ zKSerj>5vAXh?J)4nA=vm?}ZS8yx!h$3imd!0E$KEb2uE+tdgyu;ATj4{)G{QeMeqV zj(Z3piL`w5aS;Q9#W{@M+dkk5Wlh+5yq$|&!^QP9m2+2DD2Vw611b_!a_Ufm$U5TF zRaVwo1Jhq+@|KkSs-Ph5*g4KALWVknxB%m*PSAJsJHh}U>79gCO+H0)FKa0%J9H=! zwTb>F&x6oTitmV%B|5b#qAEWAw<*D5#XGe)mFwSC<;DXd6APRIVV7YufXD)>g%)P? zIp!uQlz~X+0XTjm3=G7zFPnI&WLp|@mFJSNA6~$bg9U^b$YVv*-cn|Hb)&`f|hmDSi>KAW)m=C|0BDf-bZ=m?@L`&cs zaYq}5vDugzCWT-&G}90SgNEa|oD0fER~# z-tB1U6Nmc!@`T(a|1SsFoZbsPvZ8D!)I_M=XtbLj&*ctBi9_`uarsubd%z66-l4^{Iu zR_kb0WTAVw@NC}Wnl*XL^K}v@BFqfG;`f72Xth@lqgqH2So}Ynk;7ilt`hcfT`FzU*(NRzkec zFx{Fz+%-K4R%d_-pu5@tq;sVg;q_13^m(Ud>&<~@?%%o!&!#U)CDz&K)Vf3+b0f0l zIOO+GORwSdcGteG2agdokLDe#&P>mGK3cW6{rK6!=oZ|~!oeFDtG@|J0wzWEVu@;2 z6?E3ScoGJ`(Nc%nTAoaKFmWpc(I2iD^-5V;DLYJ0_Jv!Ej$&uW1t9I`za6g4!RvRQXkfktia3=Th(A zG7iSzigF6UY7&!%@3%PF5~Hc2bZdBmBHNR%VIiC1zbabGB~D&!k}QAE!#mtdo{mz7 zDh%_60L6U!_B@>M8QQ2$qD&=WYode=zig49P>4-Bt<{8Ult<@&toq$1co+@o3UWQC z{ry|f#zLZ%=kSB23`3fHMHn_g7v*WjHbDW+=kf!S{k0WQlXq&HPtjOsp`UI7nD^$E zmu(48yA}@1d6_q8&!9j}&g;kaIy<%*3kmzaj2uLIPMZl^2a)Hy>zeJW)9azC;r!5G zI%+21sWiwOrU%w9W8WW7+Be7zYa2y(ax4Yj&>HI)0Q7_hig+gOKU+U$x68)?-ERrO zlHAz+_+uWd8gkr*UXn=u^(BOW_X`N*^yM|Zh5`pPDE-a5Mn`U&yg-}+{7~XaQv)dI zV6anuZ{Le5btGpvWl{PFyc1h5oJg+W4^-I`d zY(lMJUTyLuq$JO$(QO*@$54l8Lo{Kn;VmxEBtpZ&J*X(pv?K|@O$PUceNj}E97B(! ztq>L^mY@|@P>%EM=q?=-ky z?>7%Wyv_)|Z&UYg>ca37AqPfX$ICW?f%F``j^C&bUr(GicYdZ+zFl{|Ng{$yMBmIi z52;!1Q{HovAi%+af`+wOQ8DXA0Hpoah&*0jb*zt>=zC7w7LJatmgVQ?7Yer;O+XTG z9)5K&KN5#&xlAHr*6}YqQoAAoP;Z5I$0nEK1EOGTobf5Lse_SF?87>;vkj92`Wm#0L_HoT@$y*H_S^{mhd z7EPQTns%<7*+G7sp0$+wI<#8i1+a-;BmpQMuylQOq5&u^z7;lqw~mgGvYuW}b>A%P zA1;Xq-Ga8h@*BCImcpC%4;*kF*~PY3jB1VVql&o&fmfXip3pz*b3}ONQ4oE2~?KoLU@D3*)Yqk~1Z}iC3=Z?O|9o6~tP1`t|5JQ_B`Mztw$)HGeJ9ZOkUP3#zNz~Cuy-JsQb2(3vf2Pwuk0wk^VYLgw_~%D-Ke=o z92g@M4KB3;;tJ%@_r4CQ3+8;Z#g*SWCdhY4=0C>~5RJN$6ydDKub*AzGdoueua%tw zP*QqY9{LA#Hz&)G9ldgeXN-JyS;u%QQG(ZZ+O%Ly#d@^4uuy>qiK+$dTI?tSO;kqBPG5;0r<)=N z2WP;Cub_$`4~pLR^|Mz9z#xzWU}h4YTi@K-!SE+*$?m=FL>u~R7mfi{bDCTZN)C#S ztfeN$DT&NtD&Q-(^K6w81-Z+(FdRH4j2`29!uF8hK1P5xB0SZOIA9X(VdKPNvES!R zwBIFr1=_Drx~;#IzLpX6F!Q+{FW6i@syXlJ0Ih9i_MMBm_!}y3FDGv5W;%t)HrQwC zUR0SD6cOZ4f~7JV34OZfO#6~r#Pldij74hU%4hzq7%yctPys$fBn;<(WYvyL9*crW zcAp*@3tKA6g>a^K*FX zuQi_h#U*mEJ`@uYYU&);?AEhLJD6VC0@pXDwy?Mke*o{INTRWU2&r`?pS(r71dvv0 z^3blCKHAz6q#-;9^r;`XKE~|Wr70v zwNKom6}}SulX~P~$+uW-QXlkk%kvuh34bOT_1n;%;Oz_)ZJPRhGza`@% z5Fj7bWXQZ(q0pm9^CFog;#kN0P%DtsA8DxBs^lg=J~7O}QfP~q2s6_wHv|W_a&e(~ zeS8a6gj`gU9XmZf+o`<0@2PucQJ3jUZW+~x_CNp7a%$Ol8Dge7@42M1yT~t1>R|+A ztHqGSf5JnE*9;a;up!#MTx5t~!%eNF>OYM7zp(&KD$41~KUB5-z>D?jer}RoVK=yr zy0K$?(O;t$HK)8!`^)^N>JayKX@y&YkmbEg#yaL;-)2VtUK5v?ITkS?xA9JZwrE6`LSJM6S2SOAE0h% zsMv2c#5wohH7__NjeXj#`Y#EoR zh;|vIZ0n!V!w6Z8S)gLcoCCT4mn@{vW-H@w)d;;%IBnU`H5n|w;+PkXiD)=ZX2%=U zeN@#+zhjIv2l37DJwTJ2EsqSg;0JeaJ`R%4(mVbwDgVC66l8Wu4x^V#qY}Mn8 zgWWfLr;SCZoyI^#(4YJ z2hEd#;Fn3RN2^I@6l>AU5^L%HbBTmGvHZ_LtQs4(D(+C2W`JS^cGuUiuYD%tHnsR9 z$jc)|VI|kNO^Ove(&>TO=9R7_I~b|#l$Io9XqZGos%fT8?GDB{)!riv--~J0CAzkG zpW2En@dmvH9^AX|?^ko+iYjcejO_YAbGw7oD(EmEp#t3D%|+`>#!bKCux$fSN7qs& zW}m`+c`Gsc#6hjdy}mWM-UcsI1GAHar)x8WF!GoC$n5nEUO%`+huS1-GrQqLeh&Ac z2D_5Njm11P;>Gb}y68eIS~3d-96)mQM<3f4q*T+osbc^_Ey^Smu~-IUNLds|3(0Tf zh(KH`1{M)bNupcsk2E@>EnBYF2|~oERnZIlgDMU=a|vn{W{q*CY%R^m`Ph&R_Vx19 zukMi;X;y@bKlq^JM|}D3!v{rv*mJO2HnKoZ{$=a%wjV?>)UFOefwFiiBUBPd;!S?Y zH|{<#1?^(0j6W8NJFI(OGmM_pion+wpfUY}?>U91PfYf#<$7vCGh@*9zX4iClAXgL ze##mV%AC^|Q6i1#Cpo1Ldz^2l%376m zW%l@QJgqB$to+o=5q;(i-VU5};atY5v-8z2Tm3Kd(+=3oTPRkgn!bcQH665Ns-V#QWR8 zyMa1;&B0N`doJz_6JuG~&=HPGG2~0b9&Io@Z7}^XP8g2GWM@zEedQW#_MU1wB}vUN zON8V2AH?5$S(x`mQu#Pp=C)>(g*EEuj%tXr#}qvbA#?6%R56M(fRV?=jFya3jTj5) zHkPn(R<3@Uvy14DWr~BJ6Jha9H4Uub9Gj5|G6gov%ItehI&$XVDZ6FT_e9vJW2RMB zeSfkEAMAMoj+K9w575pLzKmYsKb(-h5fIS+V#Jk2W1d%pSX4 zu_c={Ik)zj!^B^MYkR41K@4O6-aGk`yY<2Ssn=#f+B&LL4xniBDsvJfB;;zdqiJ{I z2}??l{U=flfw!C6x|#PU4Dt!Xv%8zyZ9@{dCSw?iC(A1iG1OqUQWpv%r`9?@i)A z5Db9b4)sOOQ-e`7D4O86Xc~cwrs@5DQtQ4@s)3n_HEH1uc8s6agHfujq3AMss zA$P6oR{MddMPSR#xxgEE@a1+o2y9l9^jcU7pFu)j1KW&>Q?B=siq_VTbyJQ%3>v@| zlG=h@EMd<1-n_SJH`07r@|S;Zs%wFigOjf ziv*aSCgB>r|DgQ7%H|hq*DCP#sF>=mWUys76O3;zvxNcg$_``^c=@VDEDQOJJOOm% zGtdzZNLS29;S2?*rn zL;EIr{4asc=9prv)Fr{;R#Firn6V^HpyjFXZQ|$t0!GhnE5y4z1fA{mQgrZ4TQh{= zWu}tsyN2-m{zl!Hl26=l4bqGE@`5FVx{nyM6)N|CQzL?mp7yKB;vuNkB>V@+Wgm?2 z&atu4Xym&2Uu)+45|Jg##+;$pR^66;dU4Q%bEEi;ncs=Y0YN$DPQOiNBzs$On)j!@&_j#gkqBp81l>4j44HiPK?y2~ts0hXjvU~Wsy1spp7`{h%7raswlf_=!)sFN{mUKr`P&$>1Hp%^{k$PuOP`?7mas#!2t5&kL8 z^8QfrNy5QcYSf(uGWzZa(6gc9SZ4p{MNA?aYB)p9y90Iic3t|1cKUr={ONkKONNEGC(1%3j zukuJh%Y%&3LIHp_-3xB-ti$g2KNJ{dY^04~rdy*K05FNMg~T>d&j&KCZ)bf{Pum=U zGSW73k&urH6Q>>~-{LN}w253gOYG$9-HCtHEqL@)#rvXJ@^f8gt9DG)Nu8eF<7DBo z5-HL)bF-uEuH7KaIiWRI!yxD?cRRKwc$G>3YsyR=*jc)axV0`-(j|>mYcNF&dCJTy zGY!2Hl15ZHuq)^pDxiH5x||@5`sk%O)DVa$P$%E3jKmvNz0iSa zE{R0C4Ta^O;qoQ|jKi`)l%I9j+v6K0KTN!I`B?F-4~eJGrRdnR?~!`%UCh)$$7?Kk<8aXzNh-LV)0dalN|+^b;S!RQcAYX?#Zth4V<6uAL#{E zd&|t8%V6~sm5Q5Ejpol+#8)<;K@Nuf$mOLHu&YY#iXz8wDwH&#>C3t~`2 z1~KN`jmv5firGXBd4o~tOb~zd-zrcDgcswGmmz83lSr_GV-hKYL}?NWk3=by1WsL8zg0w7FEv;)qTSeqquXvdIK|EE53F**yew|{mbPToQVZ~E35FvV ziNcm6)NCUpKjsOcTX4ay-_fa!&2#So6j6#5#S(p{5pw-zyA%T3*i>U!-jUK|7 zohe!n6nYR9V4`L?O(}lXQEw!fXXcJSM7>-d@ou++0Nve$NO(TNyK3sm*AYwk&&l)O zC2>FuVl8#hF!Wadc$b{4K;g_Xgdl2}2Pvn3Whu~{Ro4E-XoSsgXeAyFV@YT%rpzp9$FO_V)JbS4qk+x525^q9&{*z8z&h8|>h!NdW#o z>S52a+?E>i!MoY;WX}gLlfrZ*fQz#`$$0XfRLaKmbh7yr82J-GJqn($oIMKyniXA` zU0?Q2q&nr7H@Gd_x#k4#nUwjtPhW(+fE(F*p+c>UMb{mIe@=?RE_~o7KUvRt>l~bo z^7nK7ak;3K-J3FF>a~ai3ZwzwnF+}XZgv0Hyd&|X0qfJz6yv9O-;z4&l;h0Q zlUv#RnbQ;H!6R?H3akb-66YBjzaU9E!9^5(lxqlLX@Q#UMX4TD=ju7kuhc?0)+s{2?=V?Ud2df))tszH1 z9gDuDdzk)gZ#=r7Hkx4gMr*$I0YUsAj4m!QD^=a^!58qi(0%ltT#oJOO5Ph(30{r8x4Id(Z|h+H;5CnfP-;ZiYTrg`M+kaL zb}`x!JxUJ7JBR}a@AF_3_&Lt=MyYl0lAaXv_qubxNE=+w6!(NlgY?8M6cQbmF+i7* zZ8!Z#U*K@LFn)K)YLAl)`ZucpVL2essdq;r*VzSNw=Bd`tL!*lyxY@|c@NBzBTYf> z4r)qy<@dGqKJ*X%OHG$lyfLEKM{Eb!{MajY7=}6`Kvd#gi#90FB+>TU7(dXFhBzj0 zy2YK#0cRstvs_~N#hcTI**wQ1VkXSxqtEm*<>`pE>hx#m=N5dkV?5sfLs#esSJ?6$ z{x5;QMF(&@YwVM7#x0S&_&J>|V`7f|rTK6jM8$Gju|&s&A$@UPN~J;1Q9`l{FH>JCNs&I$3ZS&47^XO*XX_akA?*IpY#m8}(H>P(ZY_-qN>*kco(#}fInL&N6I=Mq=> z)bT($jUl_qWGv+yS>deo0=fl1cRobiTiM!Le_Y{^zG)8Z)VlXF<^P%fTO6%`pA}d~ z(12EQf8u}ZMQ@NtfY0aUb9R-Qa@X|C-1^|jjH$nG}NG*r87&0|)B4XGZUSkVkPHjAUJ9!(tFX+{m{v;bEc?8Tz+-?@jRlsC zqx;mXMK$ki1@`B$Tj7lvNEnbGaa7*n&^HG5tB5!dR$Fr$X&@Cq@1nP16}gn7kpWg) zFA3=t8yG0%1j}Qfh~AL>;`819ehMRHPa*3UV0Ntfw`Wq z+PCwGSbh}}>gw(7b&$N&Ykv3Y$snkBMPe&|FER44JI^;5#|i#@UP}l#H^d8P7Rogn zR~3i@HrLxdHRvlOYaloQKN)>yvY?FjOYncuMFp#^uE^+20jj?|@6YL7VQD{8=>4~1 zc>6hhJKv8^jS)77f^_K&PhiXOJzlk1NM1N z+a3~RcJT7(=;+OjmL`^9nO($xvuzn>d*W&1dRgcikT7<7S|*X3+`8KH>4RMcM}FH0fT$SW@YlOcd_2e zQF!PB%7~ITAF$i~&rdMoceen&tcyqJbe+)bh z7pz>jKsIJeBG(4n<9Pr>4bb)xmP#n~>AoJFj-g+KKY9;bWJmfKtN;CmfdoeAqpiSR zEyM%{SbP8d<>PW4+4j}MTztV;uAR2_TJuX2c_duwC7I%BYIZ-w_ojcR|LX4x zEAwxBoE#IzHtNiqbN}nA2Ck)Lh5Yp;?T~Zp)ecP*r>NFjMb^A4Er__h&c>EYT}XkJ zl(nYm#Svyp+hVY9J2Lc$=Zaxu;?Ks3j*>qAvsQ{D>PyW1UT6 zi!(6?M_Ng*)4E%;il`n{thQRBOhUC|>{?gkPmQ!XqMA#Z;~d}tMMzgxT5ruj43&`z zl1;)A3`!pqlb|JmT$;OYhXtYs%{)ADTZK*Hp8ECS%;?2(s~yuyWhpxq$9y=QqdTX2 zX!?5p9#I5ARg?ICVUNa?g~F@_`@ncj+%oa=8oTidxL|>=aezhOMOi&`^SsM46*m?3 z2kU>>%Vu+$N?-K!IA9YJ@OkY5M{Vz*aiGmCy7w-V>lAmIhK5wxK|&gTF8O;2*;IEh zTH)6*fRltY#2<7{j;xjUML5=t+x}LHipe&8qh(L$gfw0IetnrJR{zN%i8^kS%9@b{ zdCez_!bK!%M9}oqW?}wxn$0f^N!;!85>W+_j2{seh}h;{^{|C6bBiX`j_&E&@+vYX zp^d~mf2kT`)-Ij|Wu+Awr2}I{H7iL%Nty5AY|n~&S)#r&lj%_L44?1Z-ek@ zM~w3IL|b)fo9XkYn?BJ;I)0{C*uVzzECcLm1_p@v%oZqIEI zf2+=>RM{y1P}P<2-Q!U01j!~J9S8!)I*g9S3Y*HUu>c;VEcc3_QysQwp|hY3u`Dhr4uGs)N_8BzP0P3(fwUY=@QsK_G-_) zvuAqkzVhlc<)BEUvKJrG`J~P@>wSHvKXX}*p9$>zl@@iu zr>hQ>xLbjO)D*2nbKHdE0T$1K3LKKexqmU zLRWnL@(l#N^2R9wNJbNXrl&n}{rsGX9|E*lJ%ndcaKTUq7X7F4%d3F7@4?|~-%-s6 z4CQeCaAm^GZqkH6erQ3^iA|wSN4kf5bI%VJ41!OLGs9Vc_Ok%jcD(SzV#i@-c+b-J z>Mwe9SO~BeSJU$G!L@sBLnziCX)-!S0@B%C4D`I{q$(M8Uq)&=qR6)3A& z?d5t5kJKTP#`9$!J<4|n6P>Let1b>A+kC0D#g`8lz}l=WKiIjNFy7fuD($bAe`6kk z^8~!9cbT?sm+t~k0I#U(K2iS-Cm43!{MeV|@*5sSfSSErYRXPt9ysWOVpSgR;WFYf zBbgIiaKd1095xL7o63v!F%SG)miCaNB0zM4^hptpgUJ_m4EFNYn%a}&8vUI5hB=RO zVm2aQIN(|B0yN z%1m0lgm?$foe}ab!4Wnv`&M*CtHZ6VarF;wV16E&O8hqz(hmipio(fthX}H&SZ!a8 z1V)Od?!d!$Xri_*Ur3;3ra58aoNY~E zC;&AD7~e>rIe;e_vC*t*1qRJ-fSVY5$-n!591-zog&A4X3Z z@8W6oSim$n6y6?;!zFf%?>85X>JC}YWjLs#^|KGz#OIlN8&?RijX>yJawij)AKPd( z&scWnYmdx+>6N=PR^--J|K8tfMeveX*c zf0j;gDjO$kzst!{AYg?Y$J?(Cc?DP?t!E#JQ31zi+j1AmgMkWvgP z`bqa)e6G0JNj8pf3^bV!IEZ!3Y)MN?@NH198#0eATe!I!Y`@^?MbUGntp-=Ge^Uih z7I`2PY+CYPam!LM=m|nRS*X-Kr$X^?ixu>hk(H%)CH@c9W@B`vcdiqFpyLbgB9ZRa zbhUqGY-QOe&_u}6$l5v`S0frl>C15!p?+tC&>;rbVbb9_1k=mVVtzrOP6k|2;3ztM z$pa3o7TZKSDBbQ`vrO!*6G`#0v5RF?N`S>h{5bvRO@TSst!oMhP9OomAH3bcM`(!p z$=$g>)JLX?aWstb-~Qx z#*1~Hw!TAz)bpuIodz0INVgssY=w(5Bf&Y_7K*&F;;@+c0G? z0f*(iz>kJ}spj%G4<$F60RNT}2a>UtS^57P3*aq!__HTD7`7ZG$&dTjh$5=U$jL?$ z^~5yHamUbB-GR|MF6`=WMK{5X47S7yVW)~Elau1N;89n%N_@2lsJ2Nd8!fOcmDHu) zkRJVtat=zuent+4E>tGz|H1M81GdUffH_g~T0!@>CoJ)+hWQ%9E!z4O0NUHD zu#p`lzLj)3R9!6n!(tqT94R0s(;H~;9EQgo?NCLC{=<(~k*IeUI1ggE&1rTQIJ;e) zi8%0DeT^vW*y;B8^|t%4_Npu6^(2^5aOA1vXO6A$wZG%Kz0>zSvajT<0!H+tv;N?D zDf*>z!{dEtq^|_C*(Q=)@1sG6k)2-D`1?YpWcZMTO1m-I}J}$cfWye_Gz37TgNJ33z_t z6nlM>JDTNR6~HSe7DW}*$+2Jt)5L`T+Vz8O9?!PT{(655S>U0|=BJvjH#-&8;qFiz zaES3e);hRMouazJ$Cx=jI>^KV&L50hFKxK8T2j?d|QV zrkNhc#lTJl-X-sI6*oLQ{ETd$of574wIX~QoUJf^{!FnEskc8UZYg<*D_Ok7Bx&4~ z$Ce|=gokTNW2N5NwhRko1k^HHL8#3K{+zGcj#t@;)U9KG9I@2P-P1NW(mG-MtX&+~ zZY1pa#q;jTXr^Q>3fN=3Gzyq$lr9j?diOF%?oKQa!y<1gW&v2BXC#zF$HMpB>AxR!Lb$Ot z;LfMcJsa0xe$c1Ph@e%yzg@gXg@)qb;8c%wfP}KYzw8jbKa9I}d>jP5>gpEW4^+Gj zlllV(icw7=;QdbPF%)AFU%;;E-8!+p?5rqeOt6cM8y^+}bA7!xpj%?c1O=eX)%7gZ zn!F>AQWUyy(Q+weeavqr*2-%YFHK=Ps~_gLdmGNS3q-(0WC=zn%USd(_j#Q0fHluP z-|wA^bAiP4H0ZIb7wxSu4FxE`5>(Ijf3zPnBG}U0%9EPK|FC#lZ7fT->WjP5E;WPu z*$EsX)nQKmg{?sWDM2iq^s=RcWmRVE4DVVESamJSm>*utgJ|EE+{((z@IXlkiMxvp zK~rWPwTBuq5}L(CfX?Mv3u$|@tFDE~;@#~@Gzx{XDxr`CV%X7d;fqZ_d~7&;W*?rw zu^pNg;##4<3Uj-kIW5ZNLgDiOuH2uj(j$uJ|CgDmRp)d4kuz5CBEmV%n5fOCM6a1Q zqz>O|3JcctHv@tqaRfLDzObbX z65Y9iTSqG>$nD}+(n-oXqde%ut>XAUlh7n`6rcy1lifi6GxI|_JK7I zoL-H|`90CS&tzfF7=mlv-%x~}vpp8DD%E{0kvBBe8W)s#kh&%;vwG&TlYZ(b4ehW0 zJf&jri?fuy1T31tzkrdldn(w9H9UvjT86ZA7B|+{K)}jq!1)`P#@{CZVPvm2jkPooh;}Bk}k9L65=Xbk|nxCc%&Yn;9BqH`b{zK5`Ul zwJhantYaUSt3VAz=>^G$`~PIK|EbKxGXVR?M~Wg|5$eCx*;BXbe+K&Pw=rupj-GlH z9t#OQnHwn^X&Q9~bWC7|OxQ|FN*C?-gsEcRoE#i?z3B3EGoQr{HafsSZ7-vW zqzv(z$$NSY?0MvI{uB&*di&%%BL4eNzioZlRUJg)%boHS|-vMR@=Fy6?505_(^Q{uqd5MO>8!o2Fh!>AYiGvB_*G zt}ONa9e7!zb^hn*&16k%)s4QgrXuY+nSN7JCxRgmKK-ofpyLu0^VXVT0ShEjucqi& z|I50N)Ar<-KFk>gzQE@N_-f-*s}S<7DvL{GGJt|BzimWSE9>(; zWX63O1%k$t-09fU>+9*rjYO5BKzq1Q=2nt!mR(Q&V`jouQ3Fu9{74#nF{Joax2#3{ z4z9sul7nGyfMiX^cMA+DRF-7H6X+uxV`yNM<}IV63ByrMyz6_11W)m<(yoA1k-=`) zSFQenn@Uj9E>AUY>ybc70ODo*XMc$HJ#bwkav>%e8-G?Ems`vjacWlg?os(sMNHVO1SM}{!2*h&?q3#}UP z#>J!_8>b{Hii=5x`VxP<{b$2&7J@axMWY82A<4)z@IkmnjjPZiQkh5|`9Tc#z*sh^J zdD_XzjeQs>tGe6kwtOGb#FEnp9E5taph1(VRDfLqYScc3fttGb$cxc3t~nz+GdDNA zPHP*NIKqF|ci+3NFm%mcT%>I94iHr|EIvJW7R8j*Tq}7<%fx-CfksR3- zq7)pQtw|3Lx<>yG5vV8nXw)E3>H1HC^1wjfBb1X6=?G;ynm;#;AYWI^N^Q%ujSN)~ zPBOgqb@gNoGR~Wg&dBh$dhN#bN7XpdO|lc^G;4ahJfu59Gs8+z3T!mQaj_953BkK< z7~R3_-xQLp4zGb7Te4HeD6jsYRc&u!^|K)w3RKEmx(9ea#;${IyIZ*AceatQRS4wh zh6)68{N|Nb$$OCX70UHK2h+W($2l$(^ ze%u$zttw;F&>IWEibadD`iJNZZrkDX^y+UY1hCpn9AD*VxGlNb4Z~at(2A;xs?SLP zuVfJ{pryX`ApwYo=RUUOAuB8_OeEv>JoTBEle5-pr5P}tr0}|&jfoOUOGwz-*#VZ6 zz=4{+ z(bvS|2~DCmkD)MNQgoH+U2j|K?FAy3z4`wFW7 zWR$@dqZBaV(p-O3-_Am(>V;Mq2PCC)Fj#oa8~v3TGc z1T;{vh|gyyBPV4t8ec?v`k?InU1JzVdcz9Ks7#X*`ob6}X8t>z zGMfCWQ}z6wCG-oB5|nUj=^GxUeO$fK=Ndsu%JmAfR}n}}kWehDSrXzhH=OeUI(zyh zMp$}6C0Pkb&_QQG?b?T1CU*+|>F|1NLP1%z1lE{XxrGm}D*?104$skgL-(Gc`ILzB8H-X_9b8?BMsf?AX`5WQ4#bLg;=G9?2c>e+&SY z2-##Ku%izf?@t`wU{kd7iI2Z0MeA%&5G=qj=64f!{i=XH(c>+W0p-9E*P~mWHS)d zFc9;4$%M12IAl08r=V^aGeF$tvW~z$I0XS&M=)RCS7L~(fj*h}S3gO~;o^f}B9h|9 z&a<%KL662Gi>F_lgjgg%S^$TDSf>UeN%ZOjF>`g>jd9YmL=e{M_@#k(=1(R#1N+!G zuqRn8P$E#Ei+O_l=PRpD_nXp&v#P^n0mUVDJZ!mK+8iuXt8JH5*y{xjD~+H2nW?U# zVP@-C9Iq>h&c#}R>bHQV_;jiD>|kw;3|a=tl<4(@h8L&~^=+PIh=zrRg+aHzh%G0e zf(eDdZQoo4jhj=r8aw=HUCA>+K5s5=_x18WD2uhUstIGCM1-eer6bk9+YodXFRRCr}f&c?*A%I}_@Zp+3^yTvorYv07H`oF4lzL<$AD znlmypHSIkJvR~_j2T;gHDNI8GkM}FjPj~wzvNAFeRu0@taD;9r{WK+oe_#d~?WE=Q z%{yU>__pr3=Hs{hzeN#_%0IoQ&oZ{jK>s-^*mTm4aNg88$6OkEcJ>;mL8PfFF7BqL z7B=nO7r;z=WDs%?R@&i{D1) zF9NUO)pKmdacVPY|FM0j9a@hczXld}gy2ApuAI>RE65Q^i94t0s??r62cAVZ~y_*C0$ckB+ifBK+0T4l)OwiVfV9L zSqr;yni3i~o{f@3z9pMCC84FF>c?VDrn>|Y@qQ~4u-(}!!^;ayRf#}BC^GPqG@!Nl z{F$U+`(f3^d}5YxP9ik~2;xF&(7If2)~Mve0R6*X1Ncu^zU?eN5Qxy!3d?1sx@PIE z>xsH_D}l>KcnB`X)1j4T1-GWEs%eT>)AQ4P_dyUC876V)>f*xwVzG2{%bI-kZ8?sv zy`e#O3v-5`u`*&u@zOEiEno8HBW6>+=gjCU1{$fbZ_EoAGHi zIYv22v1Iw@GP#;DWT&K#2f-lFXvl?Ae}X=Uh=%U6&y_16HV!lX&2QXYD-$S?S5U}| zE*TFAsys>k{$OO(7;%v(I!CB&kpSM^Xj=jTzswEtkv1zIIW#^x+bE$qEINh}H8Nlx$eqQN9(r zw?={_io~8TAWt?i!c;1T5W4i?-KXWL^Kq8TN$te^`DF{@jJ=((g%5)}EviC8A@&z0 z3F)*9v=fE_usl~ehrsJomc(F4hM>_rdtM#!(f98!;y%H?+8g{?!JG6-$Cu>iC)n{% z-Uk$%6`}xotXYx~IoV^?STF%)lcKQL|R-VGg_u~Ni z-W(oV!yJ|=fE7YX4kP%nufoE8onK{nQ^^- z>f94X$UsTS>2!pLl9iPO3k&;r&HiInzmBU;q2z4+qP{S6k1mP%D_|{*_nXB*&st`nk8jb;=<=>*-3ApHS0glR*#9 z3XsNfV#sYS3f)U;tdcPsC^E!@N|(QP*qjs;NUPdJ&hWkUHyeV z7A+i1l9!tsC*bKJEj@HTBJd1oqi(JiLP#JMXduWoPD)CUjdA>W#t-Z1?xY=c8bK0M z1Tqgno3npcJw;hOP1Vf4^NvxvmgBhxi9uhwt1^JeHA&V3zyy8dB3Qp8Bmr0 zON;3|n-;>>&Q5QmcBreXYxDUq5BMVW`8G8YlL0g+2vl5P&|X;_hsfXOaNbV=#f-Gi zm`1!&!Ukp3giJPm6XVObkD~z30r?D-bcU zvEyQ6w+{~7o}b*ylzDe;Wc^FO;H~gYE0GlBU3KH$^F%>umvauQ{n=0cCecMz4^pcSh3=7ivVo;6jxO!?ASX1b$o& zOZ9SnaS;(;F)~{xCyI0-KSUMl=Z@ON3Ed*WRp;(E2wgdL>#WD$gyk+jf7c!_XV6L0 z#B)X2OLB@L2HVu-4B5lRVOU;xCX7G4cgcz7rn}Nfh)T6IiJ^Tv`)%0KCF#Rl;>XqF zyr+?#_7(0vzAi|~V&@9QP!)7*CJq5XHBi6n(@)RfEomYs(sUrPyGFBHyvrjXE%CT) zHvm)cN)PejOgg;!!8g_T+BR|-XL@CaRV zL00)|Xm1dg)sy&!X;HMR8!{diiQw+@OPnRohkAP35N{hPR^@gtEgJV1oM&ndA?U9C z9@K)by-eU!Z$a7c4|=RduRi(*d&42s*Voglla4m|4Ov7LWuG_7H(NruaG+&7iz{Hd2 z_LKJn3qqLobU+gW_?z2QLkc*#MZym+FJ!0s`A_xPaai`iQAh!IcoUbw=cVTT9GP5P znZ@T%m-GBp?E3KMxqIFVJtRkx0Xx4&APfR`Ydo<^db8k3Ro6%FLvZIZ?dbvi;a2ty zH)=SzobL0bPtKxzV=y-RF2~tGht?*_#0~7J<|YctF<(HVWhxlWw?0hfo;daT>tbBS z-ubK6NO|gLM@O_LXJ}BQOrC-&&rcImT^emLDh1D_01HvAIwx0rZH4sn<8VFF#Oxw4{}494|Ss*ivrO$zcP$QQQ2Zm_~lbo zbS1KuaC|6ihVQ5?PsDo9OefbARpESl6T7=+D@y^%ow?~3GYYT@ru^xXP{q*%3|8PU zcii5{yL^XIBMYg zc$;IqhcPFqnJxdqArapQtj>uIZBv7d8p2MCt=2W3e>gYD%%Mf9ps*Z<)I$`)tsiF< zxx~p9oaYaMdUM^I_KTxn9q!`{xZ$%-zRt*A7(#i83keB%dwWlZzS1rRMho~h9jcp< zVEsx2{P_5&qN0-Ob{5c=;qLC<@_1-9lEihc|DBIZM~7KSwWMX7v|oYlQ9-kjtNXgW zYqQ%f%U~}$9pJ;vMMj6$>uDbRJK*v%UnN% zx(FT$T_(irNU@oe*T`k~4}@&z}3hEhG>wAU#2!CUUEDha>=167#{#$^v{5RgC+MbqC zl*_u$6H3-GD5gk6hn-X3nz`@p70FX5Y~QU>+h~a-leOya9v>T3 zbHjiNun7nVu(3-W(I;lsOU6?9-Rp~sErHFkKGE9k`SJR=@jO(q#W5Z&nhw(lExx#N zf{L1K4!gjaY~OOS+2kOm>%Myzi&ZAd?-ZtuJ}K07o$FFBY=Eyx{85!7prCOn93N9^ zQf$3d8Z#(z%1VDp)|m<+3SdBzW?2BGJnrUL~!mDC=Q*Jl+?Cv zariGy19WBcwD=B$#>V@XI63_lcgFbS!tM3+*7r+V2(YlOfsGCbeB1_2*OQ~WjP4fX&9hb=Hhi8Ns z#PQx=P5FKJlSnxEHi3_p45~ z=9Qn6=a*;yKftODi7D^!RDLkDTi9d zA?cjAA28i;r0X~`)A*7?UPV{N0*$Pn76FX~Hjp__;qf4PN6Nv?v0AyY|F>?L?Fddk zUvg3YLSk?-G|hEk9y(^=)W-<$ICEPtV0UDlgfjQ13NJ0* z`;9p)lyFwX@;NB zWJ0Lk^m!245Vb=C`Tau8%A807Q3&QV@JF?$%l}JtoDTiz-#Y}9-YOWFmjfyLy{LWc z-CK+m3aCcs9yz{AJQ&+W`0&6(t&<7zG(ZA$zT{YUYY)rp6yP_;8Eq{h;1eK(&;P0W ztW7M|`u7(QEe!m>YOr2D|5cZv6q!u>-$l$H|0&wgD)?V@qLuxV0cCbN6zcCC+A^(g z|NG-SW^gZ88E+5%lDP#yr`v`g$(I!k5Z((_I?_(y0IB~#pg2WybMvi{R4XGtBrXtU z*F#gs@UW$|b!khBr@nsYJc_jZO(GDO1sbGAz@+_j1*fT%{J3W{6$JL|2qu{-xfd=Aml7bU$O#B+lgspgqEZuUI0^!95f z6}^rGb3-*QPa#$N)6a`7J*s1`S`U2x)+LS`THHb^4t*b&8Yg;%peP;MtUr?OJ0dns zFF!xH{t$+OyWm3q1ZD?=9TCjeuUo#kXPsFtEQun13&sN(e*DXZjEQ{P{MdJ21KIEQ z%rgV|Ca>Nns|bUU2$+l5`Eq6iF3&6>sUHXLiJtaRwD50QR>Ig>XgE!TR0ZQ|SR%9D zzq??KG3QceVvA)`Oka62*5lN8HeO#fTPN&PO{n7tnei~(UbXF7AFOe-vPo~b8~P-x z_ISJQvx%w*+4rej`nVoS#%v)v&+KWG4*wn($y@uva~_(nNJ#<_OKYDECmRC&uUR!a z0A|g*ChlKUV!D9bZoh5 z9RVVkoN7J!lk2vQhpRMcF*#);laGV`@4X@n13c7hq@?ER-alrJsF5-BMG983i!`>5 z7wy(3el+zAOS5_fypdeEyxOC*ib=oS+Z>3VQNy5pHo!f1Bn!TxNoOAY=6-v&IS^a2 zyi<9ND7zTf;zT!cvjhA>Q@oT=kKnZnL!+&YFWdsJA-lvbx=@G@R)w;Ktol648Q$$yyX`nhh5Pe0o-+s~zKOghm|3hC7rLBt06dAWmeyg}ocG zgxGpR@^dalwKoaFl%7xXnRfTXG{K?m>fd1o$E)9XuWS$NXR}zX z9ocijt}`#PYQwd%Sa?&Gm+sx$^ion*-APA2DnA+u#zuNn>hOk}p+Az_`y9Yq0%h6< z6*XnffmMw%c0$DV91lY{*83*po!o(=>AmlUMj@7m3Cl{jh%Xk*M_$?$9@Lf&!xX+D zr!#xz`>a9Df|%Fb?^uJ7;`*AE!%cX`WA1o(kl$ah#$p}utQXUBoXgVE%dk?$>cN({ z@{kgb&VBcPJx`64YS+)Yqu%1EG(X-dY)(SrvM?3l-cwAeAZ%+fQ!)?NL;F>eA@&6I zos15i-%tC2tK6Kr`X$bXpZMvMzn1&)ReBZzA{+z0!BHzt*_d5pQq*fb8|y(L@_A)- zoi(=OsUFx5q=U|l(E8LE@CZo76)B^;Lv+ZCmF4TOo6BlB5AQske4mxi*~J~2tV%+r zgX=wxZdPsKKP=~l6?0lhU04;N({#Xm9|oTpp01**CiXRsEov0~!O&S|9aZ;G&QbYl zo6XNn6Nr`k31c%uBbh*4TwHo%7`vr3%iiN5L%aGjeEP?_ZwH9(D+R|hJh2Z0n}2V2Of$cT0|n(u zqMIfWR!UJuP6tcbbtt(1`RX*IUe?6;6N?N_zgS!>kKA_Axi8WuCTBAzecE%1z8qMW z^nRIdzllgm3!68rH4Si4suZ_2H}M5Z76dpgyor8IK@_86De4zxXeri*bv$H}mB218 zu&K*CI*^{iA^+*%E5xgOfu!*2(-V~rx$HF}-H%PlWrL{>$K9}UZF#Que~{TfP?xl@ zeF}QGp(T-cb8bhZ3lV;eCif#1>-}Q>j7lk!yT-u@jOIPpSYCkzv^l`NWak3-F*D=u z#oNsH>KwAuPjCAae<|XL$Ii-WT8HV`*GMz_9w1EST~>_Iz_)|S z5^x>Dir=K!L=NX*xZ>sQW&sHd$+3*ZYV5i=fG`d z3_RMTsoKkWHSNOHRQap7!;Ea?vhxP>QF}gUh^vlG@YwSbuHI@UFtn$g9o&rAhZB~`MyaQyc9n*z4L_u}aN6-p6V_r9_-S4Dp^u8NY4x8Wqr zwvthi4TRxG?Z2DmvPLO50C|xWPGxUFC<;$L_*Sfyw%fsHrm_2YkoRn(%&YS~yCQf) zwQRvBAJ?2;FYq07P=3NhACGUng=007NneBD%qzJH=>|*q^gcP?@i51p4Ht#Zj9)cUG0+=bCH0rE_yq;0x71_ls?4Jh&5m z_U39o+x8ubkGjpSh4}4?W)G_}o0dfEQ+pc(XM0v4xF7v1CRz{8Fy8Zl5ec9K&Q4D+ zL!LI5-NFhB(|M-f)2wp97I+__8{jcNNxlXR^0L*yr5xSCF_|HvJd0r2<cz#eeMoay&ieS;2dYrV^}K0nLc-aL}IqHli-F>jV_r{$#J1fY1NrC5SR2C z5D$aFZAZgk^k_x(!d(W!OHwyIn?8e*N&}{Lcc%6f!_%@3qjxN<->k=d6(wCfj%eZF zIzmn{nhejlCTzgVC3$xOT`uAcM57F}+{&w6mL*({L5j6eJ=eOoTu6)5 z0#=JFzZ#X&83h_7MnVSI4*Rd}Xl6_;Kk%7y%wr^?92`ka=4<5SA0K?Qoi1kku$a3% z?3#=mEd|4t+yoXeQ@s0k)e)-dIy`nAvtE|oF+?D4g@yDg-lr}^zkE=)t zT2q8ga-|$hMC_M7=|Wm+EY!eEJLs%bn7#oqy3n&DHM`#9LRO5+%d%XqqV7`dx3Df& zb<5SnBw*iroCcQge8+?vJWG*KCzQc9EP$Hi2RZzcO@OS!?ns`vVbb(>`0Jq!*` z5l_0M-B?RQtnBB%8$4|pjw6ig;~m1kC9$F)2r8!X_uuR(r(o`nK*y*#`gjMSlTH`D z#-VX7;aXC|#BBVLl-p!DUOhKs-mcTWu5P1eB%9vSK$z+eFBeTD-F}1zOkZ|LjiX{5 zOP|%GdVDLm@J}U1n|ZyG3nJA_k}oiYTP~sXJVpJ2SNASy#|0~Ft|%WYmzb92$la#h z);Q9R-)bN<<2oD|1$OgJquRQ6o1N?}!;Ks`Y6upOIFBtI2OA}|@H5!+h0l$PK2}!9 zuvh+2k)24mjv%rJ|Mr+E^J+XuBBV|+cS4Q}e>(N6=Lu+rB1i*IOSgiwztwqIEjwvN zKi%AVl0q<1!bfCxrdB45%*68UDEZRez~E3C1iaek^bb=HGZ6_5TZGXi0*(hiW?%OTfM+U$d8Gocfml~{)(|ogdsjcH&%P3%F;;z>)&d15T zm?+IR6NJz+EPA+bP-l4ek?ZrN0P5%{Uhp3*FCOr!oR#!1|RJX z362F0rCF!D_wjubE38mnw~V-GS5$Qn*d19@%mLA)F2ag*2&b->C@}mRywr%0XH1UmjH406fWMm#D zDv8|GbN_$&6NU)Qht3M>kKXX3EV<|%WzVmA%#2x(d-fOW)3#y-g|U>HVksNYWYR>rkT)k+TusSb1bh5;8t)Tt9gc5UOE_0b@P_>^msbEO z#zfyo$``0UChb};`oAO3kMo>(dQhrL0<8XCtGpBC21l#RkifNg`Ivn$>M< zYrCbm^9R~^OyfCFfcH?l%<1YG;h>fRIG_$fidxFm)(xPu=b4P_>goW`7~j>&_YjP0 z453Ku5&iS#@NLw>$V1@x@hg;lhUpgY+&fJme07@Oeadv@>=(Az^2BvT%docqm_-tQ z9xgYIk2mg-cQAN~Oy?VRlRr0 z>N0UFucdk$&kBkIA^Pbpa;`YuD6L*kus=_4-E#EGXeiDu335mfUcIM(CmFv@V63Mn z1ZHJr{0d3GP(J!@m2~G@s>0fe7B5L?P7b2cj+w+PuPD*2nGs7tIBzbiC;n+1^qH_s zsD{X%EYM#8LXb^(7}|G^(|1mSV|wt#C{A%D6+*1ggpeK}mqAD94(y`4qnEPre0orF zZBFjTwpf$yPO1JoEL}^ySbH8x8#$jQ#oGT|D;fln#|(^zRSRS^QApwIsrAa#r`7A5 z7FrUeUzBXpz|6whOqXe)-*@At4U*%Hz}(iqTP)^u{iV`zCho~X>}9Dn+q8+4&sHKZ zz2){$;Qy0DXoSE*yJ+#!@aMp%AZMp<;j6^~8DaXWyl!HRJVI`eU+RNXA!O2+I# zU<+a%Y4$w_c7EUhOP#@DBP*3;Gl}pszQ2uwdraw4b(zcqqBVA%-~KK&ngNFMotxSd zoP}%F&6&gm11Sk`S~I;BHviS}X=1w}q`ag|Bp;R0#ao$2!KV3Wcz*=8471F?TTbc~ zh-FH2rGEM8_eRz86S@C$eUlX#mw?cDvcGw5ORTHa`{g`~C$qk7ttrptwZH=eP&Ohe zW9i#t?69mn8Dv36gq5l3UHil?iKw_5haV?zS)02R#H-t#( zDLh&U60stLdGiF7>%+12qTCx2Bv@f@A{+c(wVIC!m_tPNzPi-VofSYopOH?7xpSoq zBZAq1v%`wDsHTm)=DF+wdmYXB&=3eD4_IK8M`sbI#LDg4Lvs?nk`hRl}J3_8ynxXa#6@G!K~(+QmX%FPGrSTq+HAb|uM zH~XC!U?v0=v|sUq7^M~5t*_MTycwQ{>rxbe~dXT zlM@ZaUEtaY=!OQKjQfGX2#TXe2Ux0Y1Pg}DT=O<3*+}3<&tkNM1QjXioxxSSQMH7+ zeU5QQ8ueWdoM`9B0S5SC&y!I0;cg$33uS?Vbu!JeW0)i#*I~n%^|CkMmF_wFLQSdL ztRf^dT^$qXg&h7HphDc$%3p{p!g0YA4a(?JH7}+*YzWH3-HM!`y^x*|*4Q@+qq7>QD+21$jluIiZi zfk5D!9^>VMJCd#ElAAWcmA2Jz@ptgrNeAW@c!W!iHv%SMd>wfABmf?ss!Y4>6%P;k z4M=(A&mV0qt<&$O+_rruME-HkP)!%x~Wd(CXe$HLQyuRz+xkeyq>1=)%s zd{`+h6s)JIdE!9~iLCK?Vk!9w8Yr_TTg~%Wz%2;8ZejP+eM!n&x6RdbYcsf4j5+TS z5wEVV)p!C;-i~+yM)=mkHTB1`A>^kEL~X$8_u^^-Y~NbvoOq#CdZW5!%3%b2<&Nl} z={DUm04G|A4-0AyHkz2(pR`V38#OS~V=*7Wsa7*S^w-8YjllNwCX)&Uile5br2)lU zIs^31FB<_-8cV$p|FsmybrC)YB!T?T5%52DBfR-*w+Gt%ANV8~ zGqSd0Qw9U70K31C`EcL(__*AWUwmS8idI4@e^r_a@-_M~pZE==s#txZ=TP3PgM*OS zRP(rg-~ezRc!~c6Z0NMZj7a`NTwICFUQ~uxmRTjizvoG*sP?avRCsfDy&p~AO&vBg z)2%hz2aa51wp63xg$b|$_B>3$o6x!zI6VEeQ({PT=}* z0se(?K-w|MRnQLfoRuO(&FBt!afR0n7KC5?+kf*p9vF_b&Lg(0Oe-~Elv{W@P6W*(} zR(-J-;+`jQ_&}aBE<#g6b2x2cWEFGr;2?^B=5o9#>TvBAd!j%`?tz@`;pwpZNWl7Y zFN~r?OSy?>WsLaxL>p~vdVD;Z{FnzAdc2pR#{q`^tfp8hhg$W+m|XZ*VPHgH393ZD zUMYp=&*z&oX4xOS;l~#j&r82}_}bQQpHH2x+-!%&0t{sykw6n=L2jCG>vqpqMGTZI zzt@$l`f}#O;!pwdUjyTi8g6$LMN-Y7Vba#3qG$sF<@RzYX*T~+F)F16P;<9g%JXy% z-fa5<7fFETi$2dQ#|;3t5wyH1TJT7=3p6M7-X?-0%NPLb3)u``dm+){9s>* z?I0rxOw21&6QXmuFQ1UnU;!r1UuO@{A}HTT(O3J)9Zh{~G)_%&6%qRaCXfuc*<8)P z65{_b;z+nI9@njrV|gH{h>CLRoR&3H^AX^22ECwt&*V`W@(qSG2Im=?-pMhv>+9s5 z6A=HG?ph~g7@Zr2{10eO)E60>9!`2{`4N4cc)RQchJX zJa>&JTX(e|riH6Wx`QiP$t%#l%Qv%l8CuHY4d?nN6foFGJby{;g(mMo%IznA>CX%O zuF{L2K1n45l?LWNV$eZ7Jh(NB9?p?WolB7r)DAK_>^Rb1h` z))*?X=>uMvI-iv}qQLJgL0kkDH~}$8nehF!QvCa_&a9A*IHtXn(7^Iey6z!Y4zL}p zG@tFIG;5awRmnbrVz==4WJ3|JQS)8sBt|ZCR$#;elJl_Jf4~WQ-SzZ6!if3JsC{q? z0sfhuyB>dPN41{uFyQmaB<^C5;4+qA? zMTmnLoL>bEVpLaG10K!67JdMAZRW?~t^@lHRG7JAPUmR`Gesch-ahH>k+&z)Gd)U_ z4)1Yez878~aI!z?ofqR2h@&bYG!c+6$riQ?KJYKf%2J!^P!r+On@SEX8XlB%k&S$! za@Q3NVg2+)mHJCd_;n{LR|OBwJ2-4V-J|hty+Q0DUOGcO;mD)a{Kx$tXOfbVu!e7u zgHrzhmDK)W0e0Imz8xlhw1|^@PPOiUJ>H)xr8F@(!BQfyBpX$7z z(O*uUIqnm#vdxn{%Wjq2cK(dUN>5+_;2ERUGOw8^6rI$S!%#aN|U0A{N8m3 zBR4^je;y}JD$?UPeQS)bPaQw5_weT1okUX*8&-eh0Rop{FgH}^oij39Tu{69R1qaj zRer9 zvA*O7tg?pvC@?oyoMq(*y?v%=zT+jdiE8)4H13D{>zRilmPZ7Hu)g78#5pXlDJHho zTwzxD{WB0FJ~~@vDe1Dpad~nx^N$4TeE-}$(PH{k$&r~tlj;Yf8J>KFDOXOwuWq&Nni-yiQzYnr`CN}BCK*gVyvH8s{T zt4@>B%A0@CA(4xt&xKIB|G6@)Gi5)blJyi1yNjo}il~xmaNon!x;sjXiu#L}U~Vf} zc6Ch4aGeXhFArKb)&O7>$%_JAqE(i)%fM18_*~yad6kLplqM?LiBzH#isZbr|8niqTzRPaxGD=1UWtW zG^S{ygnIt$mgTN$e|i7>Zo?G=9O?kE1nS##UUm6{831YleU7A(XWo+W;q22m+a8NHnRGNB zPuIY&pDhyL$xB#SD>y`w&Ac~#hVW=bjl~yN-m!{l9;L@u#XxQ|v1C5n_dAb7gAY%p zAC|bAPE#in9(<-0?W<#2qUT^yFak3=gtR~tFi%Vgdh5HpCWqLSi;If@P7qMGyc}xl z>iYDVUpO5K5LrsgDjbFw6p)I}iiJ-46OjD(j#XtI7|@qCINZq67j#A#MGWEOSm_FY z^x#c#8Cl?aj#-cJ@)<@H;!AdsDUa+oED$Gn%x7hg9V-89+)tzR7cJ)KB&B7|D7%7zq#WTyxojwX71X-u{TGC=73^ZgcRBbV z7rJoEFEFnIIM{rRT3;R-KDl(nZt_lUSbF~bNBy=}=lFN^QMTuzMS}zGC<|#0 z5#;iYnl$t&yCy-Av9T4pDJItor5tp_snTRtP1ep%0iEV}dZP@J6Yf0<{_ zMC)59jyd3Q6i(wF0zd{NdnUz}Gs76w|K-O`KFT-g>}UM^n~$@v&GPh6Wovk=<4j$tukCy+zm8|A`W=RhnAXIMJYB4!4L<63Gv zZ9j^W`H=t_4GUcD`}25W!!^dv7vEvI(_tLeHevE_S_Whd_Wp;`9QWc7>GMvxw|qB9&)#|-3Q!jbz6-y|`Q^@+yDj*piaOQs|w z68-A9o6;QobiFh;7xnGSCW8g9<4~2MfD@}1*QS*_g^Yv2Kl)ZN7?fn4Lz>XhI-7x2*c~7dVGKy(h>vcQ5A*)B4I$)`Rri6$!5g$X}?^}V; zT}tToJ{Xwf@2=m5W}nZaeim-Xl>3hdFx zmkhILA6|lKaTI0UPgl<`!6A*MdIOD3BmpED(D*9qQ+KYoBZSKuOx+)$r7-@XYkJ;c@a9U|2c3>tL{7Q$a$b-{zHZ<_lT-L+QNwwh;DyGt zSQJvSqKJg0n%oYscOr>!V$Y{Rs)9lWFgYFhS-b*Hn08&{**dN?@ed{06|ueUgR>!m zjLiK-fJ5p0qtOq*_^Q>k*=p*db{P-tgOQ=d+B*5^FKo?jSWHh%Yf%2o?w)Y@S+fR|->F*W3oQ3k>cO8W6``c+ZTBRtt zP$KSXEH|5v5q<>TAc&8OL0>99vDHOEp~83@qxDsg5fc2Nr!BdLop|UE6q5!U`8u}U zJdXG_i0cG(Std}u-f<@Xq>Mx{ilZ9k_T0&UoK7PlsxIg_hkvb07cIP8>GRPTE=f!aG7UE|m4(GYT#f5tXk+kCF#!r;$T6CE)vJ@te*ivS%6u#M;-yX3EVcsMwK?PUV}KQKoiya&kk z0%!%Ti!bP3Mz4}-7K9aOKhv{0{1-q#_)Aq+Y9bV^j`LpvVmu2*Glc%G zf(m4Q*jKF=KU?7cSzeU?Z!9T5k08+h4&C|xTw@1?_+G?7?vTH>72r=Ze$3W*H9a+D zaEJ^lg!XiQd6BrwFFybP8bJSZTx<3c`-`-`ws%DLbD=BXuQim-st*rd3D;~`R*r~) zXU_YQG#Cwh3h(I+;-YO&2xzlL`im)3%4|ijmoF4l9#5t1T`(=Y80$bFmPvapC_NsY z3JPm*vMM~xtM9+1`UCp;lW{qQ<$*wy`LZA0Q%iSfR)K533h#bwEO z7(|bSB#3Wf8*ogyPf43yDSTBw+SMF$G9_D`5*>d9cLu`PgS+9l#1Y zKJXAe->*tDy&h^;l*5bA{91$>z&w!I8KC-+70*IK-I6y}e~K_)DUSO3U`%6V9=(g$ zB>wbHe(|geFG5jCvg$)zUVL0@KkHngaadk-p*B|NRfzFOiUbzv8`XOkbM-{iTou-)_qf;eN-Q)2(qng`o@C%y?lp(s#R& zZH#k6L6AMRmrjCTO{|dzbpa+xbxJbSDaim%xjEf3*QMcF*uOm)7MrAaq4Y5vjt#WU zo-QExEV{~VrAgXGLQ7G|t?P0Ne;uP@n*6e@6)lyYbEs=dKJh(I5}8F9OxBP7ra!ZD zLmdc8lB)XKR%_;oz*KP%{fgP5|i0%IRLMozi1~e(HWvdhYpVrS(i`I4nW$YOwO=$uw%tkOSHaFa?8_^ z%1n}9l0=q%;aEaV&ih}iy>(nwU$;KG{i>)SARr)8iqhRks+4qhcXu}i(jXn1P?}A5 zmvl=vNH<6~+_~_5&-tDEJNJHWoc+&M_F8kzIoFsYp7D%1qw&(U5vvU>ZWdYLG=PrI z{L$oV`!Y_vYR@1axx;imizVJ7s1XOBMi#^Wq8O9R(dtltJ5*S*mnGL+A0N8nx56jB zYSzqf52@5#a1S-LL?5K_eI)y*&SFhOl`IRLnLuCnd2AhsOZ1uI%2J^=y(w8PFc}Cp z4)4dI^gR6Qd>huOBzoWJq4@Xz@b>?uARBvpZ+(BzmH(uI|BosQKLDE+27nr~2^oST zE|a(yaxJBnDd=Nc+45y5D6O69&5~aa)`DMP;si8rNE`xIE%?NCQfr$V8669R8h0Yl zk->Udf9Up=lnpwV+Rhl@%pZJYESnnc&lSuV)&&FjnivldIyoxraYy$#r|{ z)QNYtC6DjW$~Qm6Ea~5+T&3O0Ph)B*5&Tx2Vv#PtPVA4VUMfgx+lU!Gk|^;e`;X!+ zg}k(lw3?O-Jc=CNteSdAnFBpA*`sl%=DenYx0bLx+uE(R&lH#IIx*B|`W&6PJYLPiqGu0 zMz|q2k++XvsOz1+7xcl?BvccvEo4rUVreum2&Ywultz5zxq%uef??TGcByG@v6hrC zSN2``!8nhgKwL}Lxsr0qNd(5^Ffphc;bCBeWoaT#CY#wMdA^yXbp^5;h*RIT-}4W1 z#l0}USc0J0GiBwLRQX2R0 zB+}xLGw*`(yZcyEA<~hQ-`^J@qOD14@R;!F5dEOM(A1$^QDP|6feeUk?oi`+sWD$5ptz*U4{9m++C0qK9>F zl4#CtDh~J)AOq;}6V%!Wg9=Tm^?+_LR=USH`T@BFe^)}!KOY+HfuiC$jIO0R$$dok zw0*VB|5(0lIjPUFN?xe5Q=NpwB#w-BC_gS6-^XX+bf*{|7?H|xu5mjl+Gx$p+MHi> z)PaIWy6>CfN@=vW&#{8a{w7!R#gm8k9^~+ZORctHU_3%8!JXr#0Dt<#B+HIzld`bR z4{9_iB5Wg2e4=a7Zl^6a>6`cZW~Iepqmo{Q_<^cwhH4kkr~aMY3$}|@gJK9)W>DI< zh}mNwrQp?38nBVRG>^}|`~%86f{F@XOaTv~dK-cBH_C-5nW^>R9WQ)LK>=8fCJ>DU zeTSOdDTcAZb*MrH2D8HhS}(=b#P)KZ12Np&2*#jtg16YWQEOh6orw84lTG^ey4W!3 zParbNh)*eI4YkQ;7rc~?(6m`pX#e8Vscur|m$knj5il7Uh|GU``7>pm9dJ|;FZ9O$X=*YJT^g#g zLGoR+l?sf=7XPj&)Tz6u`FI|Yg_a$OPnK|=_4h8YZVV-tlf-00#0oXl)OW}}W7Ep4 zG?@md8c?-kezi$IiaQd*i!GGSm8D=A!i;fKok{830d<|%oK~O%fhay3k7D~k$ABMK z*{NGn_44+uDBr~_eB`HAANwkgonkYm)>+QbG)nAQThwUa2YLGCHnX7@IzJ5WY->AI zR7G!Pp^cDCHNgW*P}-H>FOvC=FgH_zl2ihJruz?a3|`Y>JuG#IxNTS41Jw3l;E>q` z7t@A2us?Uqt)0=~=A>iSWK{+2(rD&uwjnQycFUs}N4XvQiI=v3XQ^e`_NOxjJ{zf{ z2Ce~K{>1Ij8(BU{a6Gn7DQ;abCt;p4vsVA)f2b6-;LZ~?SX{Xr_-0V7$9N!a<5Z%1 zF{^k`KuPZNQAur^rAqDYDe@y~D<}P$pd4~=eBT{3--BT}sfmf;tA;#KSjrT)HQ(%u z;|Fw928i~N^hX}_j&1{kQ$@)o{viz>(@Lw=vtFtHEdqSMlq^-ybh z{K#?Mepm@p#{dPUt?IUsojGoP+}QZm%j+gK(Zbw(+?);LCD?&G)=c^n2S$_|ok&$D zCtN3sEuLMO5-UG|mKu%WxY z&3K?13~c!+wHg+NkuKXgZ{4;7x?F;SS?G^pfQ+W-_B!W;qDRyH;JeI^6ow$`8W$NS zi5#%{@Ys3TLxA!cc-*fk9?T*XsC;3eiCB`N0Y-D9J1x~WdnZT(=x~}=P)`N|DQ=#- zpFZJW27^5eGL?b8HpKhCQ|!*-QhZmX>U6{V@gUa9m z`C)3jwi7INPx=yEs*Q1HPX!*$HA6Fblo`E;Celxj{f&b(-4CR`$jSY(OgH`ko({^b zQDHd3sjoB`dTzPfdV+j?Z2bPN+Vf!pPlbyUvyuXk^n3@ykO@?ldzfV+SJAeT;2y!N zQqd5=Ql+klall#nPK}Slk-fJEB$+pl@mIVj4-lXHAsXK&3D>*2c9ND3mWU%iKW*kb zZ1;?aoyf_LoH6MzkD+6C?IgJLrs<9#oJ7-^=o~WlVr-%rxA^7!e}sNj9bn?Mm*y1 zPo2l2)+Gr^O3K%0*hl~KQrJ6Veo;};t}s;>Sn?YJxSi~88MoJ@&__`GQ^cDhd5{Nr z=e|;i-nmS~TO=T`{^QPMX^3&IC6o<*EeYyHMBWTOEoJ4?pnrNqq5(BENt9t=Ch%ZL zm*K?=KVIkpSuqSXvAN+|PdSH=>t|}8<3rXoz3({QOXk%HaT3T{l|Ua!(Bz4dY@tN` zu@Pw+gu>|Z0JV?W^3juLkB4~1s;?9jF2>UR)Bv^dwO~~1b6;VBzscc92Ne~hnO@nO z4!MwF*Vt-y7=ztyQDrQ*7~9IKm5a>}%ON03=BhjP2cc(JJ@tNm0mZT*EcY!~-C?d9tQVDJX17>C^^-{-d!pqs)w4;7TPge_djQeL>ac8JFhKkvA9+M z9)i4E^tzV9K$>K~{2>3`;U?*k>np*h@aC~{@UMVqZ)u0FLD`}PQP#j6vlV1ryVE-e zAu!`O84985c0PheX3Gedz~bW4CPv0}0dYYU-4P4otM@(A@2(D@jBQgPf{XC0glkZ< zo*_3^6Dv((jrzb(v;`@17MM8sZFyTPx5LfJ?oEHWR_&f{UiGka-6`w9Ab&8(Cn91O zY6mZ0G#iA2R@4#|3b=OU*UNm7FhHW~;rq`NqvTnsIvRrgol)tXLqvfpw^$w@L!{rR37bt*db7k>K$%Rfc98q?0F4);Z%?&98lQp|Bk$r-B$K4jaHoi7Ji&!go zR|B?3>^D8QzWh*j${Oau-jg-iKu6KQ!lD7cc((UvfQ%--B`fPkItvSrALsL9IR#gc zh&_Cfl2P*2<>%T=5HaUqXV!S%SCaruv2V;ZsXs)mzNi?=K9d{9&6-5#OZSuSFJ`pg z5zGyJAoIBjWk7EqEkpuNvYM&1-fu-#OOCbFv-9kREgr_OeQVRTWoNGBuDve*9QK!Z z773KCU+U3&wyrFhp`Z`(-xXR{9sc!mlvg+MUnxbuc-JK&kaU;A8tVMqe7%s6sEy@J8G8LlE)GdDGYknI_V^4U2LsadRTO)#-y23(6g*lCvuen&A>i%+{Y5sB z%GYqy-uhsW{p`r|LLg8};R0VV+SGJqSnV-5dLc6E{aHE!nJY0p4H1yR{^}D;r@ZeA zZ}F(r;6Vuuz4l?G=ee>9+aUF~kqR^u5-rw5QK-t&(D1|fXOsook7#LW6$odv1O)_D z7Nkd>xrhZ$b1dK#Rg%82-$G&ZdLW!Br<3Ks4l?CArfU3h^LW3uHA@?G4JhS&v#~fZ zWW=!QvQbgba2v({YXJRUQ**G;b+Bh%bhiVq4*j9~UhDT`F|FWm&!UMfV$V~Z4SqNw z(BWr1i*z!>gERVGUuChGba!36RsNyY26GUhZEgK)bkxz=S^4OCV5UK%noHCRA0OV- z^iE8GEt9b|K-kdw_&%%za1Fh0lIt$eEpw`|8g3q)y~Coml>fZ=^#1cQ0TMwq-GOkQ z*{$Mz-XWS3{OzH(R`|zsjg@_A?uVRGWUjG|rll5N3*xp){TREy>r{9|>x_`ixI|XX z*k?M{z{O1d>CjOUFJzh#;~x&^Ko$K=@SObPYG}?}w82@-*7)uiUsy;V&+2r}CZ2~a z@2Wa17HPtK)UX7YLwB$d$D*QUsqsLuL3iw7(o52QIXW_=e;NtiA?s3-?$4J1Yx$Q8 zK(HA-oBwT~aOcypC+ianai`eL5AW{f+fys$mrj_AMF-s^!=Y^f3`=$!ZanV_-G{}> z#R7y}+qD+#lGP#)^PYUzh$tb;Tv#~a5_}C`>y!vI!I;^Nd>@80;1TECwR|$!g$PC{ z%TO3{&y{P9d5|iAIfnIUaX&COmuw))04W61nuY-mvcpRy;66SchS&_5UX zXSD^eD09XmY?qPC{4^=V^0&W`$8Ud0f!T#IOU68ld`k*aq~Ue1uKce zte5-#s) zb9i2!nxo$v@`jny2xT?Mom2`whC1l~vS7?a(1^4|++aSwZZ1BF%2Sg`M}ek?Y=JUn z&I~K;d%jcK$lFqmb_I`71k>w5l4^1lM%;`qHFf+3So#BRzZdUz-Dz*#b;1GYN<#IH z*r9zoS0I*x&z<0?OKSGOUG8glZ`M{>Uctnd5G3}yNJk_krng92T9&3 zA%wvnf&=GN=hD9Dwf>BJ{IzIG#*9>f|4^bi}hrL|zQIv=+=aUc>crdM1M zMY4^kaA;Qqfj}I;ZkZxfY$f$k&gFrlI zPrQ!PjD!%gp4a~r78zqSlsp;G$8rO;_2a87i)S5850BuIQYIh1fANqk;lr&Hh{)*O z!I9xq4`1uW{Ys@r@rvhlUPuvJiZoCKLqRz2shaIvc0#p%_?Z!#*LI3XNt+L}8drE_pHPq2 zzSBSt2uj>h#94i8SX|%rt#N(K!KbJy1|_x0M_A1nKq|Ll62EB=j|3Qlc1Wf9dRQsfh!@Y9CO zGDuo!BuFT|Sz*$X4j zU}WE4#=Fn25}g!?3KG`~E9`nQ#G6mshEjQ9+l-(SD=b~?6t87^ihP(3D!U+ z@!6$$=s(PYfol%&zhvFoJ*H}3d4zf_)?8U7W8+Dl@Zmo^3U;oTS&c1Xjw6H<&73VQ zN?FndHmR#6yI*!DhFZq!N2I-w{D!d+ZcP&_#zc^qVf>|f8iOafEjH%~Y8C(u7G*H} zcO*_fwI;&s<^%DRy5*iw$9I#t%8&fY4e#npz2i{G!IEQzfoIg{(2@D!T(BjmT_TfQ zDT&MXyFS*QK-5;F@r#{KR9>@qAH2drJ9?g>><}#c-MKp23SrTeKg@2&$+@cXGIBj0 zHJThuEAw2V*Ok_hr4}=Le=Lr}smylf>Lm8taW`}M6erwFR)q^(mF4D$InDW^m$;rEt|3;FUZGU|IsK-DAzOGe_{X7awEF{v0_)b8 z!E%Ro4f5lq0+*>#!jq1`sz9|-gvxcRpZrCDu!A#`R>7eg?d*e*`ay(~+!;mtno*Z% zO`j7zcC$-G+UDgSDk~%y@g;nG$pOkX?-2R*2Q_fx@>_cLKYo7i&Rq$q2f;WmiNj1J*y3Bb`#3|>M8B*{* zQgMwhSyk?jo1aHs#m?60S?sj`$)e`Ijv+ZyG}ZW{?p?I$6OkGaFfbL8cP0~CynP)k zOjVt;9~I)k9_&#+wAz7Elk1Fl%`mBqpyRbH+6lBRTh#9~sF$^g6zuVQ;JP z#cuC?C+dd7m#3@H$qqZ!8Mzba=s)zQlfPy;a};7xqMD?hDqVH#e5zYGeBEA8E5$o| zC9X_#9pZivXK8ePX2n;|$9f&6_u{^ds(kK9d_$ylg_5iX%5U)kYjQ1~=xhp3Chf@r zjaP%^BdaVY*j~~^F7t8Cj-bQg2n)0AxS`$AF}aKeEzyu!=dp7=-(Gj>2qG_wWjDhW z9O3h}p6xu7+N(GC3mqu^1kqDFlgc@L&RU{Vipf`hnDvA?@OP_eOA6fU^%gZMI_Ggw z1j$c!Ct^B7e|oz9F7%kXTIPR#6*X$Z-un{jO;JG^68mwmS_YW75aSAB&%IW?;%k&( zuBlgdGlrc84!m}v40j4J?Z#)M1ndG-z9xGut*cL9IVojZVB?^@=CTo***|Kyn)Aw; zsjn?|Kifw4*!1Fa?57?2)%rO7MW4ml8ug#yk9Vc+r-&Gx3`b|CAM+hs7p!lACs}4r zT>Ozwq1Qn&@7k}qjN8MDn@PkHwW|{{649lbbRM&?Js;Umam;-4=Tk?U+4joYiT=X~ za;D>BRuYoqDWX{qxbjUfZ=2T!SH<>hokZH7nUntSEDrFPf3i)Y0`nC>rvu!he2k@lJ%}Mb}>h`!`MVOVi;jS zoMZIpL#|w|H|crw^LXsG+6{bb-8l8MrpUkskFzs33-b$K!dSaxwASMpcQXcxbeH{m z6D~=+m*=q~HPec$rjZr$KZAWT950H9lesC|my+m9Mf5PwK+h85t|QDQ+pn?c(5!|} zEJhLlq|l?`R1m`}aq*Fr*0KLpve)+d*pBDIoy@aZHcsZfgHY}nn_hUonN$NA^bSI% zKgOz9abL6qhPrPiHH<9nrW7n0)kM!-|Ek#0guCwTrdWyd;|?W#8ec-;JCP{R5J({9 z^1|hC@UTl^kI84}H5lW2aHH%wVYh3kmsUfqVpO^xT2o$VSh^u z+gbg&uWh_vfU9Ze7Esi#Z)g{_N$Pl~JOQM5k8&iJ|R$nr~t_&58D z&Gj{GU16^*w3L(a#_0!>E`BdT%dWy=rpT?rs*je9lG~c(L<`w&^~^R(sWOBsj^S(inLm>@ebPZq?b9D7U(ft$}ljLc^!KR zJPrFXCOFzS1UJs?lDoa4V)6J+M=Nr13+i-d^{%WCE<5hRC30ybu$n9X2bR|wT6A=7 z+e^Dd*5w|a@}xc9=$bC)k0||{qUZ9jwr9-b_$VHA7)nO8FMc4CBU#vY9_-ZDXzFxq zV8>G0CA=8>fiqBH-}O=D{A|3Qd2pN2ty>Nag>gK8-i^G(zPs$G6DZ@@x)XQd`ZMtp zW+}QvS!9ws&lp1G&w4GeEo!}-EQ>@v!&CK1rRl2jPWjfz4;rX8H;5;w9X3PU%F89DLhCN&76NWg!n`=D+#l z1yos$p$Jcw?>JYwV{7!{SI93r7*B23O>S4+Y(44hvA?HCBsp@9m49hR-2C`bK^N`f z@|6_dx4F2*OE?Kh0ne4+fxj`!PYjI4_bO>a)Tp z1VD%CZSGD?lG)mNd99TD1_r9K&EEX6h`Zj`(gA`<->#W=<2%uLbrpAXa=L}}#t=D3 z`sQ23Qk;wG>ovj+bUc#JaSL|%WXBA5U-8Hvm--0Nfy(b{y+bF4YQ<}@H!dW4^fb@F z29_3z>tV#i1#PoncYF(ihP*b~v^>7F)=pZ<qK6(AXQhiD+ntI~dAwC6cf9tL zEzMeR9XqdT>^5y)+i^6YXtqwq?LQX6u$#*#j-gp9a=h&0+F#VGuaS(r`jbEH?9S;G zsV3#vL7rrU#ZwjKZ_sbiLFQV$(eFv&G5KCEniGfKVBLvf13C0sHl+4X&mE#pf6rR+f(Oi6^x(`PM_FFaC&SY`T{k6(2y3BDw z%C#oUV7la(ikz2xJhp3`%srg?{oi-4;X6HU-IT7H-RbbI%JWFQth@{|vNg?a6Qswt zup}SGWIj{!uj-trUATN>_BpP9Zb$v)vRiNDDoMN)-{6VB;m1tkut7X}TMYcQ&q_%% zd!nga8g=$@N4gV(BTR7`o4gsXm^)63h%mR6QJW$-mnsIaG_z4( z&oPDfMAH>I?Ae$R??K%Bq?<>KCBGMN!9z9$1^OBeLe%YcT7hGcCoS(R3K>udk4Q zo6{KcBSRjelC}etw!Fe$5KM6Ygb${zzW6{pHj@nBd&Jys1Tk%!t$^0vYG0kt6$mp& z04xbaMK~$*C1<(KCF}OR@uZpoG$VfV7Y9xDVw8~W2yq7KAGo*ilhYauZjT1c<->c&`K)Sp{;5iO`~E9{xd;z zKjVQ{V>*cY)m+7h`=6s`4OMyndg#zQXs3Ax*699CGIK0n!|iB9sUJcSKm^Tcv(R#S zWKH@426D5Ny6W}rXJZZ5M<8@*T*B}k$pDr18JP^^D`@SXG~vpj&Zu~2$Pg3|Cvj-+ zGwnl8yJQxruokuRy^gPfHZ$BxyvI2|>(BSE?=N5hlAd{1<-RXS29N7PCWt_=Rw;`C zV4mL12qJ~D6oj?_b8c4WO4&({>01GT&B#iGP~L9@SMIZyskxspcly{f1V81=hsFmE z=*~Cg*N4RNIdOQK`niLlM} zy^8{YUhlQLnaGf#Q(zcTxZ(pYduWmmaG13t^nmMeOtsuv`aaA&#Svf9tMk=XF`nT2 zk3_;WS)1=LA=Jm)#UEyF`&8JBjagacS;+nED@C*)m>~{IT!mSxkp|o0SpZA8Cw$u` z5~UxO_JO0Simzzp6m@oe*BdGj8HRQNC?QW#PDo3%c1DjIBS>8UT&?Y?i8*wM6bs@=WRkCnm|X#Meq<@<|FLRsB}11KJGHmnTF;##?r+~96+ z>gg0vT{S_(FC!+_9mi~B==QX6>-Y5ofVrLg6*h0Am(c5k{ZD?IJ)=z#E}bBPgxOoA zRKNTILng(%@-MUQx=x^X-nZq3fF1yF?I#rFr$BfM1YPbxxEPpA7(*z-UAAa|5?DC} zJ|i)Z(`)rF3V+X>kCakH;zl*FaWt7r0&u28#bD+fGim_v)wa6X8~a6K^_0qnLk}JIIuH?n(_Tr#!#xi9|rQ0VF5r%((W@mB^W1aifr`~;-a?X zi3+)XP$gVqgRm2nCwG*6em-YlT_4b^64ajP(JpG!CWE7VFZHu5!bHw_CK@Wq5QO9^ zoBur@R~4Fs!naSngDK-#EF3HR{FZL8F)%7-*do~kAQ;QD8O<(;O*Eq#$klZ^#)hmy z8GxyZ>A|rKu)=TPK9K{ClDKymsq|3}=LbI^w4zsE9$c*BDRv;Acqfod0$u?+JE}51 z$Lsr7o_^?Hg&?z8NsoO72d=e^e0xbElqL2PAUPLy=^wNFzPNJj8)T?>AkjQuvw6DF zvY0XSD$0$#_yGy@Om7-fGc))$IEov&xnK0E^QC@6&BIXI!Y7Ct69A6+u7LKYFDU2ZT4lR2#!SrmIx^m9jby=V z*WqbUJ`00UH2tTLxnbsAi}dQDrh^O`_{cXu9#;;M_R8F`35@(I2T)-yz^8<-ts{$g zwt=OcxR(?}zgFhY;V=^e{)k74WjZ0?87>aJ8{Ljg2Y@Zt4HA}SV&-WU^dg4FbO>b? z=QfI!A-VtE)$({;z?jH?HKQE@1cRhwp0k5Z?%%SUfZqNG_GmX`LaD@%vJ5YB*%lc= zye5&1Ib4Z_>0Ylk*`^)E@}pn}zkdOHB5$E#kN;k+$e$KPVkf^ zzNjRbHxmH&N1OzhH^!qNBh;86h^%`x?WpD{E4FSuVX6cmMwLvyh8?j-7edR-k`Jr= zpsTnWA1hy_K$n!lqg)PdF3;V)OdjAi!VbIt2LL+2I%oFY?;3n7# z&!~5BvjqTpQNtvQTs~J5^~As}Fmol0xsKtW=Vt^j|SH84F`)b#V17+eoqc_sU# zJp(M^U1{zo*kQ(l_UAd~5f~uvBbBKk>(Q2lZa%wnIg3AE$Yh8`Lb611t77jkYh#O+ z-0Q7GtdQrX{58U!7?d-)yr6$xW+_I)!wM|lMFsj<4ck&l+SbUXL4u8@mh{$1ik$;F z9|k4s8({N#+|ocnAPn~Q^Al(5&pn6D9@7$jS~ni)70HqY_Nz9Cj)kSE1&!I z&00gh&^%VMhK-h*MkVlYasQACDE3dv|E5znN>ZKg_V6ckMNcj@`+b|C)c#97{mg>w z;@ZxN%_^_Uiya9pW2)!UKtIPwF%6Scr*m)rA`FSb1=3g~Gy#8)f*}#OhGFrO95OQ6 zyw$dM3;An^w2$mWtHC`7)pp zf}F4ZSPW$o6in2X-bd&V@4b=R;eNp#tRh{8iK7IZi7NAC^P2vsc=bb463ZG33KKv3 z0Lb^zuAjCKe739*d?@`(Gbisysm!Jx)DaW_{doI#Sl{eCFc`C&8x}%4mSj7}B;B%$ zzq*5w7eb4Hee02>zR%(B6t)ORb&$Oay>SL~jZR9x`^{H1y9y2NH%qAn%D=dtq6-MV zj%P`{Hl?lwi4{8rSN~r_5F=cG9rM} zC}uV9ulE-9U>9=K-uk$Nec~{}9>RuXRC_+-MIQle3NG=r!UrWtL&IdBe60F(0Tz_@ z?5qC>1VC*p3D8u0+!aNsE)= z1)9N>A^dFc%I=uS;M<`l&iwztXBE+?=*iqrk$E`#IUiN+u^pc zP7b4s>+F)yeFIvu$dqKs)2P`>C4Ci0M~hWtHCtbI{B*4GV~l>cW99-l+Ka@;vg;E| z*r>bFnXYfKMFc_D2!)%R@k?e7ik*?n+&;oqBqXUkN7XVEJNs?5a;}oknTj=IbP>gG zst~ta?O3LN3NhC!q&io6)g}Xf41u=4ipo79+%&J+`7ks4Z!Q2{G1N)5$p^W*7p8Ac z2gS}lWT_%A7~jogvRvi#O%t40iEfI~?7DB~vlEl&u%c=)S6pWg}YHfn1I#I5-o`gVo%qya8Fxw@vbJxN&^0;#BdxoC!uK zjarS%#qoQW42R*alEXiRusj!)sVUVK?t-ytR}5VVwqBLu6jSFYd#MP~ zt#RZ|dl79sCo9fvpQ~1vyKg5fC#RF2?NL^@zjzK!)fgH&(X%IEALa0BYE*wN7MCR* zt8Yt~Ee}tbgdP6*Q#`UsaQ1T=_CV4A*&%%=(x{ohc4zUDTdPn zlx@D%c{%Ea4*E$20#Ct2`$?LhJ(R6RjDYy~3$}^+B}7c`@w%tIND&uJ1xKeA$BqM8 zejX8ONvh#Kh%zAMN=^1FATOA&?kQ>(=75I|>2oGgE}GoNNbON9TP+U<^XJCYYB4dovqsJjTJql0wG#HT6%7CxQ^dApxcx^C)h_a z%VWXU>u4=R?QxawE^x?qYP4Lt>!8M~MDT`6A+AjZ*_HvN& zHbgwL9pc&e@QUYY>6mHG`8Tmr&bDV#>tRB!6l)-2N;Ljq^)CmIJ_9Sn;XVqPs|0w6 zH#P1ZWeYYpk*o-G-)V!UfCb|`#VLylk&KkGM>`1PUiA9{rJSR}lp&*&ds;^?R|O+7 z=Ei>b$rw1NhfP$@2;4Pgsp!AdR+<}EVkju$l7LKhNx;*V=K!x6UGFbYmHo+^85a}~ zMZLP+gKd^r)v5{TOq++xIE<7!TFXq-ARyMFQa~pqKymfWJ*+bxqzOrt*Lijex7=Fv z30sj*qLo|?Px8R104&skPowh1VEdCXp~|!J(YQ@Rf-3cvqI~Vye@&Z@9#SsOt6@@* z4visEO85e?AI@}{iP#g9)GeF@Dwyt<_&bwq;*Y4#+hy}+D#RNrPd}-zZ5|X!H78jd zaNtpzp$df3?|@Yijhb@)jryyRG3g@6zgIu*+--}cCNio=RBGr#s|q`eG5`0yeCTyC zc>QkyH{&}4wK`lAj5^!QlQ()nFZH4|!fxXYvQJN2D5+MiqXtN>1I%lxz;BSMi#3Um zdZ%8ye-5{tu^w_@SHJMjImlD5{xiG2*x<6cwrN#&aJ{^a_d7v;Uwa{Zx*?n#4Oi~Z zO27s`q>q1nh!B0JzFvDE=Hxoc;*V{c=M$*g^>R)0Ct8#+L-`fTm?m%H@XfN8SKPTqxoQ0T^44xos&M#jzOvh5F#e>Ks?BAv zmeHoUS8D(^I7jr|)#9BMtbaZHpF86LaPV-x`s4k*!gW z+o9>vf2U;5_2BuNn9DQ#vrhV|l|H_?U$0lg`P_^8dv-az&OAzXTZzf~MM_r1oHQc} zz^Nt4ES-x>fsSHaSeK>blzSjnidbxUZ{*nHA0(kIO{Uk-0aX zs%dAF;q8HSH=}!YgYGluQE~({(5qMP+<4R&uf*c7FB#3-zd2}tq2hj2Y&sI7QK!5# z=z~Hk7#D#TmVwPav;pBxDKMb)!;kTY4%vW1x2JdOYgvs{JZh(S zB|Imt70y~Q;~>^L`utdJr`jS|U6fqYtKmFsDAQyFk>T$t8`&FBAxBLO)X!>Z(5-8Y zP>~f*v|FX~OP!#To&LfvG<)9JZ&iKLPYB<=nnW!i=1$<|p^*qtvufyFG>%4DPrhEt z3o9nu>g~0C>0!w!T)#eGDwQr?AdKa|f>J8E zD^2o}ZZi>B+wCjU7gQ<0hRQ)uRS{Whq&3Z2SrkrizMRAl#dVu{aqi`PHwy^dds{l* zFd`_Tvv>MF`!=k|?+#~I2!$d-hMbMKJ6u;aCjwg`0TPe<8;%P0mfnP|;9Dv*oF5f< zU2SSz*@dR6&?Sly`87Dy*XGyt((TXgN_MkwmR>Z?mS%Dl4=FKCjVw(aC9H@aBenV0 z3kaMalc{?6un0ibt+QUHEYiA%{?^FS3TgctpimfI2NoB@LY^9@H=-a4a9Qik;A7-< z0KKpoTJI;!5e(4qo9haY|Hb_L7Q_PGl<&6Y*^QrHMo27fw-MG0eIuk$htceZSFlS^_g*dksd!1n+(X zr$Cyp&8f1OsA^E^BoA%%JB2~$t#aMcMbz5tmrBmIphf_>z-Ki21tA&z#c`DOLUe`p zpia%IuG4LX+M@wD@8w*(R{@zSUvE}3`7S%v&Q=)${W=z+`naw(zM^`$SPe1yd79W&+L0$y(2;J6d}_xoeIo=+`YnJtAdsS(>6E3#DzN@cff8W1 zEuR2tV}M!>%(=cn$dB77`Z{qPCp+Fpxd-KGCz+53cWmeRK8V^iPFCminFG=UzYex4 zLLv4d4j#c`58#h!j9tCHg-Gl^Xxxd_*OW@LIy*phnoV-viwfe{-FJ&$R^RuX!@nX} z>E4BV&|eRA(p%k>;O|@x_O{;~^&U`L&brGTq#sIYC4W2>6VR{pI{93@S!HGV>VYu* zLwqTFE0R&dQG)zYf!$c00E~?;T10@c(A$>y464AwjYpuwsB8FVSDva6J?Ri<_qhT= z-h}wkS~n&tz>$bfKbx;U1QXoz$YJLb$Ns34ri&7+P8@9Jr(H^dbZK7a1qD67 z4#$R7O#C_-GyO!1kpMQtBoO3Hg~1bJYYgBkAv&=EQ9J@O;ueT~M;Oi8yS0X#{&~X| zx4NUhKv3+0))DhBbV?LyPLkBI%n)r=@!^)w%)kyg4>=8vQ`=t44M&qX%ZK#W>spv) z#D`^r7fMi39;A_JqoglsSFM)#k8EgrDOrlidZ9ZAjy<8H@NbIw=6_*PW| zo;quZKem=-qN2-Y>{oBjyKd$!qwU(gj+=>V&ugeqgLVFGkB>f{efewV;Ny>#`$Sh0 zwW^0oGDHOEG@N%2J5LTaYohbaYmTv$=rO|Pog(;dI{SMkOY~D2?t1^*K*Hr=hAN|u zLxdI6?lY)W-^5yw+e2u^gdkf7Gd4E*gJMeRvidbh? zp<6QunYEXTv+FN|Bw3zz#o&+y?MDbgDE;4TL{N^1lqX%5{y!F%XC*%lvrH(>EX|le z5&{svB_)CakRV*j(wBs(O z#4Z`*(h=uo(yhf@VF%IkGY?8U9(*t{p8mKQamd768i3Sna3^9=r(fcGD`3K|l*+O^ z!EMOjte&N<8^THijN05GW3WVw;bQ#~EQlsjeQVc5+12#p`cSz^I(5ZPp% zY3DFF#pZyCyQOJU4M1fFFG%ibFN5yK2L>V!L;wm{izam!695=TFZIJF_^5Ij-hWhA zVKEuq5&=0AN#^`Ei6R#+Rt${Rf%x9Xk|w9?KTLTX+|oG;l=@detb|#2RstMyznoOV zkTj4tLx}I5n0;P4nOqTls4_OJ9>vhd1D#+AGMW6yx{qjO)yvcED|35U zQabmd?Xb~oN^uNBSVHZ#0-#`tX5vhG^KeqYT;bp{MT9vym7;9_QJLS473~VDqzH@2 zWbMq^o=GCB+%rMjz}4!4pv*+b%PaB2E5sbAi&K6Xn$M7~Cn3GuZDzh^1f>nJB}zu0 zGu#G*KDBL7S{JpKDmx*LYFD$TQgy5T^)@|xP3G=U*@z&3=XKm$nc3c7C02tP7YOvm zfV9{_&5P({=@}_$$T7o-{@>8izw8a*lZXA?@douh3|f`2|I2Tt5sS5(C8_HryW|V? z`E9SOF|Vstuj|#PQ;??ib}<35N+1rcYOQn8kt<+D09^=bp61WM@rucOH}k&4<)x*O zp4G+!DeM3CSIM~V9=Fna+BAPf{i;L2<7yAiitFv|ZMXraAs?m^YgF5>cWYhS+Swg| zGvrDpw!Wg`KNWNVCu~1%K3z)+7IlWol~6LBKxiytvRBcms{N#UG1gaC*Ada;Cc9eT5nHI8!S5`o!zz z#4NwcaHiUU_+q?$)@3!(wOYAIxAg(BJHuJYo&0~t7IkKgyx^$wIp@V-FhM_bo;95H zS{?7s-IOF>nd|E>fw6)Ud=(SH&eYeM$~G!iY(vt@9Mwa58TvL+Zy zP$Cr1!_@IMB;H*@M@Uba6r&f}OF_>MDh)i-UnNdh?16^GFdvW&MG9W3NV za1!BV8@`pYn>hiWCwHQx+OmX%1pBo0XFu@&>G%uGFohgNm%3T7(fBLj5J01GnQZ6L zLv9KH-o4&@lfN(>|9V{f8K{bBD0?;wnwJi(6n^jqD0iCRyJa5)u=HHtzl8V?hUyBb zRrw@3g71e0S-^l9c7ut%X*H@3!9X226Tv$M(~cbmM*372!FQg@SG^d*mAfB^OMkt9 z+i<#jb8UrDL`4I-ORaU*1*(Sn6S<7ySHL;Eo?tEDal_a3p~|UHwKSFls=h0IEKqsW zDaCx>p^kYrVh<|7%FMsOgvychaS$Aj(*JEIO8k>F*U={B{1pqv3`f>C3(>NfOwt7} z^9<5&St0X|eVv3<3gir$HS8S?|h(}zQG;5V=y6ryI?+Er~{TQv*&we(Sr}_wnRz_?iN{m&vnKWS)!SrSW=7^Dunl=LI zPUq4Oka-7>SX>AlVZL3lM+hg}mZ40kn<2idp?Z%CG-6)&l^(pD!t`_l&@FJZup*3& zf#DC(1U<;WmApEcBYyVGuYGaA_z+@Ti3fR-nSgR3rf>d8wsP-*I#;`}{);F+4u=rM zB=^P$i7i@_u`P7GGcqyFsjZzZww%}OXoiTOS8%+9U*5=zGCz5ZEFUUbD~;V2y$ze_ zqU&nH{*xR~U)IVY5!Lz*Adme&BFR}KdY*UtsxQkdi+^lYJ7BC1^ zXoD8qcgZ6pZJMwUi zZI0&ET%T`(y|oJx$a_Y|8Kpro``FX$;t?sqCJ{(@a%7pNv0x0Ot)Dnh=tkz(fEegzmWWOomExtZ_?DGG^2;rz z443he-q?|aeV_rWqLzWP~If%~%5&7oAH57405_${=W(Hkhs-kAv0bbp{N@eoVvDu+99M9k3?pfgwPE zAJmf39zRZ#%?90`2Z|LO^)30brI^b7Pt${&W2>8E_}ryoTie_RP|TI8_9#GQsHdO~ z)NVrP;%;t-GF12&a^LRE{fI{{m+jTCfiWlqBB2C;K)z|P(A^E~BC{MjjBLHPqiq2` zL_$gk0)Buy8u(G9SHXSIAS)jU5iJyrMxaivi)pD=Sk3@dmHU8kY-P`x&1x1}Np~Nh z4WCgI0%qk;G~&kh&Hn<+YEV-ADra`2JT~Njf$_XL8p{g@C#NcH(RcwWAv-IpN&z^N z;k=J)ciOrc6`##KHh&(n2aQo?MZIi&x@6t$eAhO~{T24>gE3m36ROK)I?YH8bGt{b z{Yg9*vu?Zoe$Dfz8%hnX-Lw^c9Y6zI06U$;=XDKqu6mv8(cWVF%^zRBpsDVt5~T+W zSCyb961Gz3dbbcLLYDudthWq`t81c#2ZAL8cbDK2+}$m>1{>TZIKf>)2=49E zA*mmPU+;F3j*bIJvb6^Ox887putnzgXp27$0}XMdqKNAkZG3Nkk))=jX_jj_9848N z`95yFexi`ce^&;6It0X5!=y}*ovqb-jqm`4vKR}nEN)%75`b(8^<^7??tJoj0Za)Q zYw!7f!JFz=AiZ#3xp$t-l_2r{I~jy;j>G+b!-;D!t|E1>rP09xJFjzicSlkHL&XYk z@#rnGaTFG7SWr8p&hb* zBUyfsipp{RewTNMfmDpa_o@t8G5*|0hJrImYPev;>;99IB7)ovgG zBf3Mx4Bi2zkr-nx{D)MQT7PojKmAHRfanV(hBnF2K43D7_v-1FFyF;T`Imn!ZMuC@ zpv{V=QzI6TEBMF0(W7)wWk((G#RS+;GEpu+0qd26s`-D;6gl9^Wy;ohv~yaUsE23^ z=BV4c|K@21{Bp-TKv}*$^w|5P2=}_%uZXR?WG#qa)rJ$aEa0(JgcAcQ0w_D}Y*HEi zf61c;Stqi@(o!qMAuI;)SHPUNF{?2X2ZR;~FHd$*ui$$#aS*GouKs2cUyP9_X=nqm z7A6vEkiQj~FwYe9$qxbre*cBehJgEmRA3Fq`=9e;K-0oSR{29$%eb!s;WvP0wytg+ zm-_TJEdNLw5-{NlcgfeIAdjd68`q<^l%9 z>8b#4U-m}foTmX!G2GwR z9{}C2{&j->|4@BC(SlkHXQxW8*S44MP+0WlueHRTZlvCyeIiWt_`h6$TiWA*rrp#t?$MFQ#mo}b%$vWL!Hs}d>5>_C`st>Wh zRBhacw>(?s+gF#b7yM~C)lhaO_lUJ_+C9aduy!hzGQ-Rbq)2(E!8vjfLEcj&@5F)N zAO^5FQgU+n%m-p$=ZN8sPvV95Y(6zm3#ryV&)13rOlv7#0I{YlH8q5-#1Ks;6MxO7 zHX>ibMEzlIOn!Le3I2Xs6-l0|VzAbBPi&e0W5Xl-z2IF>VS5hIdX^}|hKKWVOCw50yWMhL<(u`4gXG?e3D>idTjMc-mp_Y;$TQ+0 z9D9$ygQJ7yD7H(p?UcN6h6dAxQjp^n_7yiJFU4oEX;r=sPm8(JS0*k4=Esvky)*@H z-~M*^sbAz%+lx21W9M-<{Zw2Zm`gBwz5coYE{!2;C=Tug)MDEn33&{Ts|Q=?rVN^c zMU3yt0i?+r9Kqixm!fh6^w;^9&)yf|`_TG0eDAit?DE0|?cc?9`gGae`jB+@OHqMU zv1Sm*$Ls1GLh_zp2VXUlXaTYixGqz1x^ibxZw65GN_ZX%ZI^aq0^1d@i3u0WZOeE_ zw84QKUmHA625-;jy~?KHQDoxGBW@-*O%n!kdZi!c8;E(6_4k%J->hnD*uE8NoaV#y z{?cDNe(KK5yS;j+>pomsQvaIfo7r{WpJbdOS@I@*k@MkhKC8ATv02JpQl59;IO1 zL;E*BH)-an)R|Mo>g8zXwD|XqnWRi`b?P9mCmewQa{u)-p2%sd5K5hE9V2K1X`pd4xU56_!gHg_7&LQXJ-H0!YQO%ximnELiC7q z(&l)yrDA1N6B{@=Y?n6&-&3_Ad5hs)D!$Q?S_@XAm5V@-=PrfysmbXK~_Kznn&v+{nLQhZ6 zb;D;7zEv;1zfXL|&vVX#k=srdoU`^`?9WEF@=9xZeeHsSC=owPYpEzphoa_)U`quW zgMuwFSr($BB?my{HN|!0LKEEw(Uz9I%Gp~8&eJx~R?_G2Xk0!E=&Y+j&n~#q_|hP; zpzI)F^z3it*QbvcrTXn2I_;WAW!qjtXK`&UN6ipM7sU+E@krJr>^ZZ-o)YNs);~?v zp1%Xq4_%L_m%UjB8t%*5dCj}Otyb!zz=)u}UdrU`TCRH)e+)Et4J|JM7G}T8>vR3xx z-%1B)t21h1ESs|`@qdlQvvU+e#h*K+4hfn}lT>&dQ06gX|B>8i;G!=L8F{eLUhRuq z&jiRqqwBj2mH0+MOLVqtcyiW9RNB^v8BHEXJxx=M>oy}=84sB$F21;_=vXRlZ8Kj* zyhPcse*{i(EvCc*jZkcD0oy%SuV8wPab%$(cY^N}YBV^l1HbmN!wWBRU04Z=uYf{(Ss~KnX zl0qEwcuMW*{JywR6n@`dbN;9)<+poOA;^n8LqbRR9J~_~+Nos3u z?yZ+^oN^S>!@53Eo7)K-Oh5$^+zwKLG2u%UTb!VCBZgb z(AzkLmb-UUuM6$Jr{9a0r;0I}BuBySx3o2T5?=DreP7iUD&qUIon;oWxewt(uv}>* zyJcBpN1}?R2ce4QE~B%j^=f=Ev#K#ANO&oq%Xvdzvdyf_!Bh(P$VK8l^zq6?eiD+tjqD#Ubx&v% zt-zoI)jnVhVby|7$Oe65)rjP^@_dKheyWQ3$C0n|w`)T#%aJ6$P1Wb|vmH1*yvDQE<9KC_?KPj(Y-Gkl z;{^3wZqM04s*Cqvp8LtHrY}b1>^&`QERPdyGFLW5-O=0*8@;w(w#wDQk+^$>RGb=w z^{ss6WyQp-c7{v4gfX)F-Bx1gS;ND_?<1|N?BM+xZldG&E-y*x^7Zm>$o|`~Vdll$ zYPTo7BHbX=SZ+IAi{F#)a0O`#4)(*#K#^ErET1yv2WSwq{o}8%rQJ_Lc&=`9BJ&BU zKCM(TLCD}{Zz-}czodM&1_=if}_dO0yW(X9w$aj~EcTC^P&>p#bMkxwUfaMMQu#Y)Ar(Ut@&T zM$<`K#xEHmJ)tSI3q`MH^C?u<+idb0hj z>^`g(=3dx*vsm;|blPvlr5d}Uxy^51`0yMBlzts(gC;nzP0Xr(uY&%vg08j^*JypE ziAIO`LHo!_j=f++oGRwYGJgCdrjZy+jhb$8NmJ!aYm?i~nL#qm+0lr`*P6F307raA zQvpPylnoNL*-_3GKYYjSDIu#b<}j>=K)pybPtStFjw{GM>5h#fxh>{TUwBlGrwooX!Mc((B0uJvbFYOE*$?~;)QFTT+S;$}S> zeIpIy>gu1Ar9MQkg{x4Q`67;xz(31%C^fni>yCG}@SL7-SmN56$D|^g;DY5w;jkne z{*B{+7x`{xH=0o3su!(<&D9!zHvd>j0e;KZ8O1*=24c z91s8SU1&-{GUA@1Rl4-KU1|ifN2fI8!U(>Re$jL6a2_@*ORw^`FW+T@BZMN3_I9qX z&sbQW{@XcI9Hfpy`A0@w+kB6w4}DzL41ZaWZ)gM$xz)M3_`jNFA1S&FyFl?97pQ){ z3%2Y{@a(pbrZ|>~CFb^PQmWpX5hh27?_S;oh*Wu>$eqQaND+(z2MDGA1mLiopYOt6 zE#B&JeT!8@{eCLo4O?;@rO7vYpe6<-ehN=?V8s8SRWw0d0>71eEKaFZ!z^_8sWFxb z&xz5va&-L)UVnh2PdBa8yo|Jn@i3L9TA-JX+3j{ap>itzV2l~+-#HMchbo?iNo~{1 z6z(w4lX@TzK>3zcpIc-%lfCASP^xFYg=neyopzxeIe zv`Q^&;iBkf=ns4$K}HVx4;dKpgp>&jB6qO~D$&vtFnS$wD=7gqwmLINj*xHZ>8Ar{ zM*4E&1Ir%@>w1w+XBmq%e`|_xb)dAU?uFnY1T+O@cI;+!dACY4sA+a>t$pTjO&K>+ z2=DY(pFLVWs{*yG^CR-jPPZt>uJyeq{!O_Tto;qU9l`6sHpusy222MJgCf8bdf4$3 zOQgm67EFoGq$=}Ui+6nXA9`QE+r+7 zIBx#F2|pl0b0~aF=cX{fzKp=~4G;f;DUq>bvS*qU9WosgRDX2&#Kcvv-VHs6XXmv# zg=Se!cpEYICldr$7zmY3K@$cH{S#MUMe=Fd(@YDrSG(7d{0D{35fGU-Wb}4J zs%_7#Brw+Qx1PfQyoAd!Oa^hsV02XcUT(hRxzSOXgbv1BeC(?6{jCjn0 zmjc-nEaPR;2;tj_4HyE4n_>m~ca^c^@lF#=)fP~@R->6~5{(W1I3&M?HUI8(` zT&zXOr!QDw|6a7P41@?)GIXk)slSC?2`6wZc==Va>TzNIR<(~sS*wmoLKHO%l@y#2 z_Hg^8;;9GfY*fOd;}zkB(#EcFCf^+$OXqaC96G(1ks`#4(Z4f~8O z-*m@X5RY2Fl!S=$?R*Y1ydTm7{T9;y9Fry8wms-znVi>=UHKW1y#EKGJ3S=hv1feo z{lB-E9SIM}jU94y4l!!3WhD_R5)sjxqGCmb6uWC2dlj38`&dlH8b%WN{Ezz15>Ny@ z$NmFrXc&Ehj-4z%2BME!cuxCKIC?bwAL<%KtZT*HAp;@~Vp+|dNl<<08M z(0Fic1cW_^{hH`&!FsZ*SlE~46a`41II7e+HU$0tNQ=(t^kJ!$hOVV6;j2oRuW}n_ z2BasFkj3WocqEtU$76p>Bp`4N8OBuKSVqRzmQ6x}O{U_RXa9H=$X=A5pyy^%tv>gM zSzh&EjL?^NS1JWhL_>DT0|j4_GY0l{D6i7e(ykCAnrguMmtIazh~S5z&rkR1;8AI! zmpbktmY@OYVv3a1_W^3@3I*w~p#64h((5`IZNj^a*i2D&dIO)CdWvw8Yn!1h$#4WK zs9oX-^+@aM&}99T|g# z>%c&cc)LWfI&ijO_8fmJE+@^+Tqj7i$j`cT`wQG-{W1mvXn@j1Kd?UGh!+ zU)y5#wF)bf%)jLTPLuj{ovjo2fL(UYTkM8oJ_eu72gaPk+?@2Rw9EEjfP}dd2H`kn zdFy+BE+vshv&<@FUH5d4cRoLb`rcp5F?}aw`Lx)Z6r1i`b9)tb{^iE_^o-L>TkG{L zA`a7w>Jnx{URjZ%Z2S2}34U9wo={ zLOqDSLyr#W^RwwB3)1T(v$~zYfq*mL8)Za4I@HiCMcO74&#ImH{)ZcU09t_EW9+8I@8A@{63O% zu3t1Jw)JC@SybQE$IkrbHsIL@TsVSE$r;M@mCUbhDACRXFI0si{)jV#OB^hp7w6xED#` zCz=e06WApLaZ4}gJ!5oE7Of^xvQZ+($`0x9u z02PX2*%kM0DV!UqX@d7kZpbKd#^nr$rls(RzkqH!&JPD2q4vnQzhOeZBn5&nmb|P7 z67syQ6j9~Uw%LtfM7+eQy`FXLRH%;;$@H?r!@`7{5AB8zJllsCL1t^mBN;kt>&-jf z*Sxsk(B&qd(MMp}8*f)G9yfOg=Bn`Avo6NLr}o9_^>E*VsLxRXXL1TrPpb+g&xKS} z898QamgXzlADX%Q)c6E#kH>(%!9Wn({@IoXmgf0vD&|8-N!hSIyw0e9AlU5D(dv^k zCRidY{D+6AM(C|kJKH%H^AM>1C%lUXGq#nSjR60X{;AJizsSzR1G_FV9OXv{)sEjbsjs?|)6eSMz9!Ok zX8r*@Xm}LgUno58w`suZqUU@03*RKkn;%N_HF>a~%5WJ<>zORk7JNgP^TM@*TZ*h4hPMIK3p zu2TW$-st=a)3-p!h*lFL0j(rIJx_?eZYLb*M?$&*5|~4XyX42oDX~C{Z;R(uQ7hMa zvnM3xV*E?>B4Q!{BO|FX`uYyYHcPTkqalE82O{+ypBp()O-s|s1h?t#6Rqi>gbg{K zl)~)z7Lt1pq_MumjtH+v*?e25MkQN=&Djgf6ee1AVj>*N9gTCe>fNQaRq?y0&W+i{ z)_+lZg&;MIs^*0lrgq5r`JT!Qgb^+aRfWi9R=W zeFQsON9L6+P3S2ZgmfLAFBB5IDDLxQ8K~jQ+S%SvU4X8~+#h2kSa7;7I5M2gB;)tz zot}6U1&(IZKhf&c@NPD-+{Ar^@2D)8XKBNYcXCF`nNeWl3J;JznOQm{VM|66z*IkfT z&;BUuLhYsh6K5*1!{i;tHL0jL>}`1@CCW5;K(G(5W(fv$Eq3Tmbc2Gzc%8Aw`V zE5%RZ6fW~!Krz7iy|py{ygc9akiaegOM*^FVzbC&KKETSal~9GlU4{Ggz^K|kS?bvO>yC}TV@7t3d!a1%pick-+i1fZ~Il!?A9;* znmF4GR%5l|dXug2R8QJ?*zWuZ=Bozv8qq+zV`C=sZGe??tTp&{P*lC6-kyWAQoq*c zIlcV+Co`zH?Mq2h{$G@r`e%QW@C0!$mRVo=1^#EA_c{{#sI!S5Xpx~(bhHN%bK&l= zP%WAdG0IAU-3Op|2~3v8nkx(#zPI=k#Y6uB8ADl}-`;NZH~Ctj9CoMFwKS$}**&%k zSP6Tt$0TMGH>ic&*yXHK%byU;b)F?`{z1k_?E>N=(PPLL>+$5h1kxyax=EqN2rWeSyND{Fvxn}R%9Da9y4pXRK+Hfix1FKBSIdywYCyM-y1Nd| zP*YdWnwT<;eQtkTc_B15Mik^r2V62Psl{j1$yoZi)o*c`aWY+4eOzA3rz5AXlNYX+ zJJzC+5|cz>YFJSDeuLc}A|^Jw4AunT@KtORkSGF(`MoL4Q}(lj4)!|(D9{O?-5_IS z?Ye|WBByoAdko`eU@q+_*AQ3{oa+|PoiaaJ?^?r8R!be}sEbxQw~ ztU%d*VAMYZ0N9mpdTzUoZ2^hJitEggc$lZ$oC`I#P#fJWUWRGeVh-vFc~WwOufZ-^ z@F*DAT^^7h$-t@DQZ#)>b@Fzs?4$0t;};Ol7}Y7?7mCi2^5frKwCbQ{Yp(5QyFf9x z%w!m0t9iyUvunWjC&3qh2E7yH8^J~d@suTX-VF6f^~qPXeF;DFH5@&hcLMaFP_^-m z#AC=~#rANhq|iXrki$TSG&xc|o$HM9#*}KAxgS=`6cny?ue)3r(UEVq3SEl)togPr-qDr?4H$E`35uWS&i> zxWNJP7#@Fs5NyFy_418x zsap_erTQEC9b^+#%%Jzc!HdX+kJW;$*_txypKH4)F_+v>{Mn%&`{Po4Uj zut!*(~a( zl)XpC#Q(G{&Y7rHE45I=r#3DjpLO$h2mh#C`C}_763E1~5E6M*Yr1^exc0M5=I}x4 z51n{+;G)8DM!vdzQY%?g3qL1p_3mMPYT0~x(G`1{pw;IqS}2fg2}@bM&bS7r*M5~w zm`j)#8=9;T-e`oP8DpdY;2zKNDg^q9}i|JG3 zFffR&=Lo7gp2nz>dZYb(i9XNDO?@ezsCNv@IDN1|O4cY)*6~n9Ox7+xX}K%XB>X_c zyFCZ*gk|I{14+~YIOumMfrTrGkwwQ>HlDF5Kj!`vmI=Ic%!6yl?j_u+z5;6$@MDtd zEkYGtVfp%2?n=q1RYcAZIb91yiTVxf5;bp2-R*hFG*&u1a{m$~_V0@)@;-5?42EaX z=#0?`YTnWr{Ca5xKiq!yw5v59w`U_CL$p@W5n64=(B6w6rV0}eme@>`yW7dPp>rkS z{sE=tHGAz@KCWb)c3s9?o5bWI-SN=%bp(f{U+5F-*^+`=52 z!HBfr#)G7N4i0v`EoM7<3y~BPQ06whSBzkTa}=Hb0w}UJq?ZNO+Mb~o;IogG=VYh6 za~z#b-Y?#K{mPrV^Jf^C6DsV-4_>pV8gujU=Ho|p+CiB(>d2@tgzGYUl19@h=FVdSIvt zs&4ZJGpf@#@hT=9|QPRD<7Xlqv}_OT}yKIFaNi_mXS^g}Ds z1ESFQdhK=2Bns=UweC&&`ZIOaHasm89lfXWP;~d6%_0z?x`aH6L0;1 z{w&CKdRp;82nd_}g>rxp0E2(KEBqLWQ-pS|q|vU1Z{Nm;sj&(R#Vn9vz6y!lC2eq{ zUFc=skYWn+n!pVCFHOjA|;mEpxuSJ6S85o8FteCMP7`*5A_S@hhY)wqYxQT2WJ3+k9OKSHnX zb)Hq_LOcfKu$f`k{odJ5wjy&n+`0Nj{1IMk3w>gQ{ulKNTXWzY9j}L?IeJktB+tD! z3O}jJcY_~CiP4*7Oy}K*4&ug*W9Q!ZB4g>)3M28PX7JhZWa`$3gqi%ZH|$jc;35`t zEI*(O4B^x9zw_4mWE+a%PX5gttACD@6?g{ttxOm{b4& diff --git a/docs/images/11_open_pio_project_cropped.png b/docs/images/11_open_pio_project_cropped.png deleted file mode 100644 index 538da4ff07fd4ff322a21f0da6615fe3544b1902..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42161 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%0D7>56;UGQD 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�wXm`}1f3O{auT%y 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%0DM7%zrT)!2gt2zn^sL*YvPrGhON+K;jFzU%X%F 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 diff --git a/docs/images/13_wait_pio_project_init_more_cropped.png b/docs/images/13_wait_pio_project_init_more_cropped.png deleted file mode 100644 index 5981c81c38d97fdfefdbb9893aa8a1ac770a1836..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53950 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 c&Xa`k%jC*RAe1gb^Lk1 z4|E}Nni-;w+rU?VDn>)&@Q)wJs5E4;*}n7wV|IRVaojuPWp#DYAmr|^!DCVvdU)tH z72ez1>qRS)e(Ux7_e;a>;#sgHeh!!yFI}O5xj@Nls_5wGsL166F|wKzIq?ehVfI6{4h{9d+8RcYJXqP^*TI1hRG9%ML4{G4uTX5RLYLV85`~bp*xa*8ig!P<@Vy{`81^aIisEHLG^dB6E0k(H3UoP9x zt7*bPl!B7-Qplpsq5u^>%;PXH5`_TiC!(zb6$%rfYS?NN-kv`iVBr3MGwKdIfVw$!PQlJ->r|7(8LuAR|&N| z#X+kweE|Oel_K$&T3ktkSWuz=yNwW(JMii;IaAWW_;X4D(AxxOrn>(*olddTHNCsMJh_FD)${R*h72_BX=9^OerAoYbsbn$J~y zD~M{KJAOEij6U|Bs@tCBX$%5~O`o1l-`O~K3j4(JtUUqtJ+OD?kTxQx1w7f3s+`Y@l%Ntiu^66utcS}EPeX+g5Te(n7Mi?8*u5&=Hfbw~b^E{?U zYqT!Ub!c1#0sy!X1cG%5*qU{AVnXkENCXiB@>I}rCy#shsn2q^;5LsH>w`yLg zTv$u0<@@a_o}8RK)ANjrDLCvhFIcOhi$D9dfu#6L1Dee1F<5@e|~E--A_al)b;Ur6|KPa0lRCSRIUfLX*QO2@AVJCwgu7ifxcll3m)So53hU#6AUjSOJ>Ul z4}QwZ^C#Zd_HTdz$qTBZgML;3%`m2kC_LfOaI<#XDo$?E?I>(;dV(5}Ukp2xiJPb6 zAT9AfTUaUjrbxE;gOM*6*j%GWOsWn=DY3f?nQiTeMI{ifPjPCiiQSbrr^aAk3R7a zV2fE{Y&*zOy#V9O#VrI*aVl__RHJy{PettlG(IDSOI*n{;D%{oVWH^!-n9PX`Z%~* z_KDv|zn)If^6c5A>=u)2zRO(Bx|gOR${z0G(FpEeyal4NE663Hm5S^VnXoF4My+QJh(6Q*l+LSWlj zDn*|gQ$@D=D*E)7oy3&Q-#v&ZrlN*^g;|z&RM!^-^o&&aEZ-46{ycN``p}_^aUi4a zByUOANF})oYaHTNl4GS^?)7FrG_B1u6<&t#VKJM7wpL$UVw>aXV2=MZnVFKBO4b9;Ep4z8p}uhmW6}nuI3uLtzdhL4*lO^| z>-#GPq-phz275mK;D%Etj4Q|2J;%Uhfk!Gz`Q|tgG{wQ{mYiO#yLAC}Vwiqc$D$_Q zP`on+7#JjPpgCWwU}MYE38F_hy4u#<=Ov~O38AFA1-mT;h~z*R>3UlDYw{#1A@aAFZNAm$ar2kQYMhLLl(SkLsiFZ^Oj9%bFyr!Kx-)AdaeC0jH2Ic_Pm%oW5^wwlN3_1pH-%%|~ zNBAh*mL#%a2yN$&e0+N=SwZ)2uI6vutd++Ed1378a2vBkO(lqYmPJaM-BL9eO?=i2 z8iF*o)ZaWXY{`CkHLAqBEnU#M8|?~qOp`m^o?k))nO=m3sj;!-2cKcO0^`|!)=07t z6eCu=D`~-dwGl5Dtf7ZE#3&q67B$>GhM<6f1<4S%Gw*Nd!mYfr2U@b7)n^iPOERs! zj;0#UsZv#&38w^H=*@fgI7w!Oezk%%}O=&60T0u=t;zbZN{+<$PB- zdLBA?Vxk(SM&h^n|4Hf!)@ce~gom}L3vqP3kbnDqoBCn+#Nt|wOS}s|mofOu5z#&p zNOxMFxULi`7_4eXs4yaScIoEyvG$Xb;WJA2mPzSffu14<5d&d)xng%>2oI;%LI{oZ zJ@Q&?E*L8q3sHr{osm{--!bX^PJ9hI`9aBAI$*kV}?Z zi*sw#E7{K35w7B)x?ORnfqS7_tE8COT3>+#9!_NuwgP z-a>Kgn>D?wnHU!17P`h{ZN#wIdnI92ZjuWLjJz_jJK0zV-l6SicHfF-%!r(&IGmm3=9rQ$$G+R=<@trt~X=_XN$+P{$J8nd_(q-KkF%k$1U3@!o29``|UQr!21_0cU)YE&X(tSM&;fz)~T@W9OYtyCn;sYYb~Lr*x=z zz2|sh8}ezm*e@9x@f&vVX2x%54vl6Pn$wvL&bFZXGRWPkeQ>F~iywR%6VWvd&js z>uxMoA1ZPC4cbYqq>YgE;F?ozhTl&k72%S+X4WBdGmLxH7-%M?7p%2ChZ}5HuJi%;FT`ej~ZDEeUFpiz3!BExkU;kP3eDiI7XUsiXb}CXGQwJxEVj&hiIjV zk3_UkI;8Lzoq6n;WX_tI(8YmwY-NhXis%iG18DaWGdZR?+Eg56p6;BORP0agDiPTh zqGldX7+(uqTlPg=f6eI`nGvw#6)CIG`Za#a-*9iLN3HgVQBMlNBA7=LLgk0*!h8Gi zoSdrSFXS5-w$)WCDNxg)B`9i7W#vBO{2{n#Y{_V%&ll+8$Pvc+^BH+`SwvLUi*ipn&`rSBd=~@ z`s)HKI+#@m5F#Wm>taHF0Y!juu=1d`-+~0Ka5H_0ThTyu#n$dxKhNYx;S0sw*1V-!J+d-eyyYRC6*Pd!qcbnm8IGrznu(=T1D2;?^@l&%PQWqX;=5MTl;OeaUc)>@d7cHdgb`FO+%q58G2^Z=ZTt6Y|8l$@A=foE zmeC^q#=kO?HZ-JuYVD$n81}ILviu{DO~WQu?!&!p=cTEYUxb(u*k!IJ^-uEVNL(f8 zu#-j1CvVuQ1gr@>UpL@q<`VSf!57}`T7Jdup`+MhIh@~@=le8CG7SqdAF;8spF9uD zB#4g3DTzn!yI`FSAM#J7qjNU7p*?amlcf!elOmc|U3>iPuMVNKcRlgYco<6GDe|JL z)a4pwqsLh%J+tbDh=N`iD!WvJNx#7@ili~+b4gD1NC^= zl)#b>eplUnZY(UZRL0%4!-MyR-y-#)A7UVs3l@Ih*BrPJM!sIrPWK0VUvH_aztV|Z zS25rLYzUF=152+6mouRDp4Sfm)loT5lp#Y0TGW+B2l2KsYw-7)+X1@)AOb+hn*Zj_ z4d+`;>;S{c15OMX(SdW$fCtOQlgcpTWtg7W%vE7uodfsw)viI=6tX+D2D*EY=K<z8$?FWqy*v}s4St$_PLZbR8af5Ww#k%G?>0; z4%l`nvwJJE0SQ5de8yM2$6t->;U{U*r2T7UJnXPC=|F% zA}G~j&*#sJ@;th=a5W;LqK8Wm-9o0laF|kfEt;8vf`Z%&jBb%!k|P=^K0(9@v*7)E zxZXK1nM7b7j%dD&&kcQLC6{l@0(yy|S7HpzCo~9FXI#bk{~?*%`R!>WZM00E2-p4nWVof7kJ!M$0WIxB%1UWDLHx z#1;bcj7Jqv4Uoga0lxv5-~dJSeg1rou9P)3#RBD^rdN`mAC1vmE`FdKpj?RP=Nk8? z<`<#g0ua=Pw@6w-5p|_Aqin~dPoPuR`;}0|(UF(Ivm(f^VKLf$O&@&@%2vk2>KYnc zis=AP0RN3L4Fx4q^qhf0s&1ciK!??J&C?=Zf3hEPy3Ng51*p|-miG+|aCK-3L0;mS zfsO)n6X-vROk>QG$DsI$2J-W(r%!Z{3EOI}Dd|%Uy+1`8R&%@Fmy(!a;X%udq-r-L zcgAZuV(8sHim;>kzu()vpV_ZEKzXu^kJfgyJDy|}l*(U+DXh_a!mLtpUemV})RkVadjYqd z=;OOvPXP@CeA;8{X60p|ujfMx4gkbJiAI3A_x`(F{&4%TMKYci@_NXCD{=6^()@bp zaZ!cMB7i<2Uza5ltwEJ5>_SMcu=-V8gLJs1L$Ryr`&)Mxi5M536};r=%l0~RIuc-t zYEzSn;btI*d7@N_2|!H;J|S3T3{FfuNl&N#IF@Z?n8^&Q0}Sr-sPy3uus_Q6kC(gW z;bFeyLGdhBsWk=*?%EylOCdXoZ9xnRV`WJCHem#Ywfbgz9CzMJ+^D>EjfV#iVW$K^ z35mC2{S$vj6w!$FDJ##>h#`fy6`sSktWarfnZ{#fUEUv3e@`FzCJ?D~bQ>S3Sn-_R zGu$^BB8&K%%KBNy@m~#eqEQ7n`cO}@{3Zl@K9J=cYPY-_CvHdKupSl*5$n@3$%tmQ zL=8XUG)>DOGg`W0cF$E4!Tk1*K@o^XyGDtVk}Mkv0)Rd>^nXK+fbAAE{O0KatWAm- z)`c4Jr=IWqh|_v=eLrg{C_tUSY$zB95L5urfnv*&DT*ZZKh`2@Yp)}KdB*e!oAk+M zdnCF&T%munOo?6Bn+p9$762}S4y^CfQ47l|Lm=Zg@BI8+^RW=Dl+k4}-Nr1-6eqDj zPA%ux>G=6U(ZR%YXiE0U^*aFI{}nAg&Jy3#qN7*Lfk+Qj`%t;AN;K5evko`759Dv( zCeZNl_s>>I**Wyphi)h8*UkG=KETz#qaO}XqJr_ze+jMLLMiZVU=fGad}X~CKDFlF zeh&UzohbPBP=#|Cbh5_A#txPMghliU&rYE<(9jRN9a68=;&GROq9$bj3hPCZ1YVU@ zHp9{!!1jf{38p(6iI+YA8JZ57rczBV>+l-VGEh-zPT;vo#4e2iDMrj=oepZh2TQZe zqA-beT-!~I=;3KuwUg_w9|f5x{I&0_PfZ-VUy+-O0&C5|a6DXG@VD%`1BOS+>kbzIkGZE%$h+D%g8~ncujG5UN%xSwlUD|VC@^g7Oya3Z2+7Ln^O0MVk{a(;^JACBRP`ct&lw9#zM}M}thcu> z#G@Ba?yttk@nw{NyC9=IZg)+NbGb;%B+>7%RaDJ*=9s(!Y$P-^oNBM~@MU|FQ3U9J zaq5Ls#YoGX;|+%HUV>~^`Xq>@%ER``AN7fOaz-gOw8F%Z+E?;-8}C|sdQ!nK8%F^+ zCc^Rv!x$~T99__DXkKeU9a^hr;^t27e#UziHilhAVteJ=)c$0^EP2h6Qu&ai021P3 z&&5kbS=Ie6Bh>h-J&993{axmTTT0xKZ-I>gp*XhMOYhs2{Y6h%-2DYsvd4V9KahB{ za~>-z{w1tMDpHwN1)C+_!HiB@$?;Se931D7nW`GT3Lp}41t@t^lk>`G@XRR}QtXVZ z^r^$PUIBGKdq88b{`Z#aLJCkg6x~@{kGUv8+gX_Ycuevt&?(F};M(L`eoY zb(Up=xM|{)^m?I-6K7F91}XB^zaQfkZjKanmDbi5VJpyAIZo#JWx{0)VW7!UFiNq? z4c!>=vlT6U_^8t~S?X`np&K50cDE-wyh(g|f|{EuG9*%eO=M2${q5HsFzYpf_M^5> zGY&MG1E25;GEPu-pBHqmnG0HuqfSun#FlQPjIzNUCVMPuZJqs?BJLtqpS~E=K=hm7 z-#xkEBH)tDtVYaS@`%*^qB$+`2etF-C#nxh=eI{|)16V`%}T5>$7RpfS7DMt?g;TR zcP?|(tN7d-^{A89rtcc9Ovo3&!a=+Fl_D@AC{;>;r2M%KPd19<0yz?7XJT)$C=%av zaStX-Fhc$J0jW-7gxKsB+9(l>HnkpH!!#=gPh76MX&1{XyWmb;NT4X8d`yBup|h$f z%H3tYdW(Vbw$RqJ2WmDCHOs}c`BkID8@U$N%wS&cWv;8{kHnwK&P4V##xiFbWqUs& zTib%ORj%M=d@%7~4~xg(eEvgiY)|L-k5O<6d>&D1nfvpM*lF;dgLfR7)&s_#Y;P0o zn*IA$z)FB?N?F3LvIuZ zk-B+g65I2Gjn?kUHush~7JFRcCh~Z&IyQG6BlL~53x#D3w&~q78Jip#eRCMw$bs&<_c+i zLPG1Y%4%T!($<=!NC;DR^}Zt6`GRr{H+b&8FOF`7-c8tW8uk^PQazDz%}rfC`A_Uh z?y6XF7=ighNa(zfY)tamT}O$ovPP9R^R70$q*WxGy-d|4INf5Gj8P3_l_D3bw~0T5 zSVkG7-yLS2MWUPaxhOZ(IQD^q%m~@7zAS&FR~x&)K&2UYnp#@)F1hcnAOhAWKP#DgpqsHvmBC!b1W8u=v3b0(^O6BdKl= z04QCrKM*mrDEI(C0!WE|RCY=JyX>y1WSlB^YJD8;mn0;FjJ@fMkPs1{P4%|%nq=yb5L=OA-9XX#kh&=TCU5OPUYlN}aF5fdW4r9t8? zBq@wxclTr)X(NmQzmCy$^1xo&5*cNmdXWsB@cmX`)SkM%z186foofbSk2&CSj87976qHqJU| z!hM$a_xH*)F`5h~2M2bqXY_r13Q5TPmO|QfWzz&wq_drzoDLj#eB0NKiAepz7eD1I z^Q0W_?iw@UBqk<;S1&D-`;Ad|k_N()aw5KYGk$ngTwJVCj5UcZyoU~ss?xADH!p10 zg@5zL*4Y_NI13dDN4PKL@$oTF`M?(rb!i#h4=wQv4-ZeCazR>JS|hIy8lE9Jf-YOw zYLOtp<=2L8$xd#3cv7|7+gk@Gr-nvscv3cWM@PrI+uJ(uL&oQwdoqH{50k=a{1)ko znOH9)b+&1j=MTkkzkS5HgHuG{<=j$JQwa$PkB?yzho~_JCKUvmb=x5o6cnNZZ3a8!N+`yZ>MU0X5*p5-dz`)3xYA=8n&pPWR_TqEc8(Sk^q_Q(N z!LVocX3iaXqy3_hhE5HeH3AQy)tuj@_o~GhQ-&Fxpb1A2rpWiczzORI3~oO^-?Z-9 zaA7lOhD*N3L@-?M@E?q0OyjUz=nlbNUgq`tnLc~C@1R+>Fwo?Bu``?`Av3;9tILV%D-=Kz)8Krv0!}ko zI0N`l58-Xd+fyG9@%E+QgEEtbM<$U^-3Qtitz1qFg{vLx{g$kn^o9&;Oc1JQ(0z$aB8L2G)xKZJ_J2fozs z67Ld;e=DCmc8ZW>OZBjEX!xj&w}b}qYXBSealOx10p)7BMcB{!cl`Skilm22SOl0h zcrDJZALDO?_#lE2`Qed~J-`XN@DZIUQ${tP_2BDAQ%p=u%#>)EyShC;-o2%gpIg4@ z@JAHIB5QCyT40xOM+y7x==37ISwSulR#jU|%w+@gP`DMVR~kLtUwPdP>d-yaHnEBl z_sCgT{G}~z>R7i4%)L2YwpTm9%D$?MELCT zGMQOlTwNVEqJ{3@;NW<*l^7S7`y8m*K26BhdP#}Bc!FR22v2GdXW3yJJVVX zxR3Y~NjKSWpT~FHT`tFM+!!yNSyT36<1c-=;OioUMzsqkq-phB4EG^62mlzll#r-;#mGc+21!X5b z9tV7|%(I)D+{t~GgrRGS1X(OhOty2S?`6iFaOBo7p!Hyv8NfrU?Ww#L6WI5zV~@Oq z5rJj8li;0ieL?haL-LT%ylKT2mN86Q5z6@Fuv}cw0hO)-={*9hxj_sG*tz!l+@22` zut?NK8|3Fv$4C$Ahy?j4=;^KBUmbE2j4V`}V>4?1?V#oj6<5;Mmgjr!6@1p4_uT4> z0JjW6NJ^^Td$8(KqHsEu&oxprketSJdwUzSt9(S(GezpgBgw88!<@Ai^WR(>ua6ev z!ovX|wlnA~RPgC?GE*!hUN*-Zy{e@}nPzq5&wK<$Et!<(bE!B2EV&5p=o^o29mLQO*<2SaL zz;2Ih-x*19f4H`+*5HSw`e-r-npPxO-{tw!t`h{%$m4)hP*BWwczJ$`<<|`O1{5;ycpGS+s_^w8;jt?$HTh^4UEV0-7Z)oyXDDYW- zhlW-wPl%F@o0m3&UjrIgr<0ZD$jC@!e2#Em6Ag{TPt@O!s%QHGpn$0UUtwV@pv3{l zayT9+pW~*eX=@*!oG7s2;Nu^joLKkALNAU6-gaI*-d#ZG4n%*@D2}bm-2x319KqqQ zxw*NPmX@!zR`VXF;LN&O;TD~z*+&Imz|p&DUeB%)3W9fAQC<(VUijV z(0QN-B8lft>VNyj$H&+6mk%DxBY-BR4c^_5(R$?*sK91 zZOkZvNF3*vF!Cind8LfL>GR^K#Gs7|C`AqPIai=BJwOsq|I}sz9UMZzgcWkN5yIGV zyAiVH61Y~NQV4p-zzGR;_4$qNkf*07EgTmP^BFoa{njgVNx_RQly@Z5haTSuHnI+ieeozaD6z;uozi z53Qn9gfY*;A|jv)J>Ko6z2()cvsnivoD3G(ta?E~;O-B&#Nbh1@48TB%Ako@|FKcM z@0xYOgbgp$2y_*-R?8a~cf-TOUHaePuuF}<`T`%9*%w6xXf zXkpJY47ECRe-u6*7~M*C?O7L?5dJLQqEy`7+iPFH)P9p7;Nd1GH*9ksI2O-@7iwr| zI2cP`2rAl(D;GES{OD+DUS8kI$MsQBuLix&RIvoA=cggW+GqF9pC{Ocskb-L^rug7 zrylZn%=6}-cY?54uswA7uLd37TX26j${!AaC%r_&Y3kaFUH6KbK!X^P%urN&?C(n| zF1({U-Tk2k0G~2rm2!G;p3fu-RNsJ#0|Oe>;6kOgN>TF`Ly%;xyQfE^ zW%73f=s%LVY{@{qub$QBbv-u_5rK;8uY#7(l-YW6=md1y z?vLNULF=lgrIpf5ZYH>V0Ren}ky&hgP~G}&?P=oXIJnL_>X+n{jC|UhLcZ=BykMLO z*8+O)te;JMPkRg^ztPRnvbdma0|6sRxA{H6$vn#80g7{-kE`c=-(>`2qQRBfN3Dk4YLRsvVMf6fH%m9-U6MZQJ z&>`Jqkocq|ByIi?p1vf{vB}BFe~*qVIiD6%CTd*HHn{C~lvPyN+1Q|=p+Q{@i09i` zmrbfE`!ioyJwqSesdKp>Sp|=WrXIHa2 ztM&F&q@<(*0xP;qlGzj1txu|j(~3W*_ndJ^*`B!wM!*Gdr7R*YH*INfY|(C(jmd7$u8JY^;%6e1)8X5ccKF$qEUZ=$=7SHjfqlwZlkQ690nv7}Sj+5@@rI0yY$L%q z^#da#sPT!il#Mp)9jnjRwJ&#RFL&pIj9StJ^CC3<113W8Icrv?2>Cz`0MiDX zwa(&-J3@%UF=*DIp`kHtDVLK*^!A}|Co1L2TP`;^9xYUN(FA@MNNW;g&giRFK?4_5 zwOE6F%>g)#Ykk}fxf{DByZ8JW7`Si&f>f3l{n0S_4nm}_! z#l$jUf)EH9!7w{AJY4q%%L_}sCo*UWFR@D#RToIVIQ>k&+H3ld;P%AUJ;oWlEDX<2 z*3sGd4nfS?y7U!Q3cn4@&83PP>?SRRmtz4DCWs@2S5{W|h)V10=a&gT!e_iOKA6g9 zNswiTYiuNk&lqO|1qK|Ivt?H=pL=n0HD!JXQ0j?gacWj=$?kiZ2|vt9jHmO#=vyT4 zY5u`|Hu*i52g3hF{=}DIVJOZw8EK%>`yHSPZ}zXQzFZ%$f=C#TdS?UnvH5jm#<;Mv zGaQ=mQ^#}pz_OMQ$EnrT>(}A&bHV+8<`Zz*{%2|?$^ZY!hyUZ?i~wBUhB%1?v4zt* zMta4*WHqX;n%%f1}|k zj`NElF(o~4;v61qQM`+9d3_qT`&;1*VX}QYXHJ5}c#K(f>IGS8s~U9%eud-;^x&Uq z$Ks)bB51jc4^QX1a{4KRmePRkS)8>tem7Bf37Mb8rw>acMhnubnaIzx9P%IT)zV_V zYsAZlpxK9*h1jL6@D`^x)qqD6$#9JQeCk4ieeSzxRJV?$%!LKg#4inQ?5jrPURMX% zBB=!66S{4Q{W%#KS*Z=%J@(|g)GYCKeXtdxsMol4Y#f&PY|a`hqUF!W<#xAI%~ax8 zcFAWO?Cp|A&7Yj8f)t*r)+U&gsAADbjv35yPRiVwv6w}3yGOKSc>@$tR2H7^yu z@67CW>MCA8G=LV^{Xy3=y_l!oX||r3E6qK0nvB5huDFs|$MUCbsqY7A)DTe+wb(dz zr8YT8xMw56Aiyww;6+d8qE&g15rh&)^T(eoLed~uwd?Jqy^=SJCATJFc`ga>_*ArM zZ)bKB<^^b(Qp3L=bZx;iAQ=ppQu>FJIW1}VS$xKA#1byABR`xx-qFr-EiAbUfK%V) z4dI{T?!13c#uNOcedfRUJ*o#ax>hAVttjxi8C41O__HxC`*Dv??a1wHkOwR{d z#7!-jEz7MiU}6lObPI<{&-fTc&v^Yuc_PntuYpF(_pg}J2}7hg_Wa2`G~VT%v47~^ zOwzEoZ7{ArI_%-3^ptPVP9p>`<{-Le_lBv6h}va#dh|7x{`Q^Fk0sNvRW-|?vubwK zq-jwsUONlgF%T0AH;^(3ZxP6BP&QjO_~sNTq%o&+F)+%dIY3V6JBH?SC!43ZOA{)l z<#EV(;{X6cqn39vH^^dU`p0s}@Fq^EL-YmojFN-&1z=9^i1-ehaBq3WCDRK#Bd!4jPvjQH8^FN&BJLEOS{eg*aTFhx1aj+-H1wTrUjr<)iP@=I%*xNtQ|4kbptGUroDQDm*GYf%a~3 zzd<&AliaG1?G0y$;Jb0UwwF?FxDFn>W=18{l2C<^YF3|*c(|}ZA3)U7D#}oLyU`Ui zRsSHfbsqTyj+1I770jom_Tq2&CRon+{x4fC4C`!ntbahjs2o2!;T}DzX8GGNzkn0Q zh|yp4Gz)JeK&Li3?IKYs3B`o$Sp;~qxr0kv9LQnZwI^g9xMFJ6>+mMl=;xTrLHCrF zPFrwR8j%)+&fktpe^AGedsr?{(|tGMD)#Kmms*ydk+33CYZa&)HCe2*2w3&6Vn+A5 zb+2dmq8C@I&%bMDZ%egR6yy7Mp2Q8-*}8Xa@B<|Dn8?YuhLH?gDrxkv-n7%aPVcFN z%bS-a?JF=UossN>!G%v2PQ``=fIDLu#F<>EEhG=nyiQRa*0lxu-(!?bGQf&l8p4k2Z( zlPI0V;M{6sQp((x&FqhJpsDB6+#rFqF6?)_Zy~dS;xcxUU2AXz(V7-p;1&2GfKba) zDk0pn_$5-;?)25ipq4ps)nrL1%ob$KHr8q zM}@P+Wj}#Ym0)<7-end)!L-q?(AzzGZhvEEpN(3Qw(luzsUq z*#F}f>d%xG1~v9SU6z`F^>UR(@E0m1GwNo(rC9OFFCN?WcJP_C#Bj=vYKRZZ2M$Mm z$FcDQ5ZM6_R5$aoI~C+F79SY1z2-wfcZ8|EuYL}6Y!poiOO|VhWpNcsVwIBzaq6Cu z?N4(}(2(xCx^EbW`BF;w72(>;VDhJ?$|&YwJ{2nbq5{VBBRxVmWbZ<~71c8N49c9t zr-hoqH8>Aul>b6SKd4-`B=;tVYKGP(JnnEWjnfF1)a2bvA8%9-TBN+F)uOyP))RjS z%H{D%sB5JPHX&04E-iB{5;c`y=3fkq7CSN z@Z@ej7I*aQNn3HFwVyqm#0J=i1fQVn`&(L%WE0mB*LcZI-L;)qE&?WdskT=od(BYh zL_0zkMTT}UcC({$%^-j+nLm*0;ctq#Xs>J>{pw@*J;lftX})@jlZGqe0b6Osu)P^H zf+EWBIYCC>Y!!F)G=CByD}`uY^y~%`rC0C`zl57QV9Bl8YCTiIwU$iW{@96+QvK9o zMfq9k0G0Ed<#|GRJ@BenMm{NDICOX4?HDpUQ400vYe7Y!-AUTnRJ^_WTRr3D%cKbL zivXZ^ohS$i>mp(+cDhdiYA^7LO5rR=$Jl@4NJ(^*BezYq){zPe!sKty_gG#IZ2a=>S8X-EQB@r4=N@g8Igh`T7v;zbb)$6nP7MKo zdPMrjtNkFTQx2*&aa1|k?4h7u-w9QyPesrvFO7DJSZkesItmg_4+@hByCyhg$sZ&w?#lu5wMn>=Y&_8eg zoI(9?5pIC)JyD%6d~lAL(rl8H&kfDhmW?S*bw!WMkN_iR0I+Jgn#uJVbiFeSM-jL% zzx*H*c0$9Q8n0Cb6^1O3wWlZX1_j0GTWwx7?qD-TuEO=I)4WrN2gG2F73M(e5U&pR zttSAiot&(WkFR%y!OIChKR+Y*Z#IHj#Ge-PxA>(>TFu0HD?|OGEB9ro_PP(~k7uD; zaoBcbc{CZYy%=9Z$mm;!FBgnMnS&IYxUECtSZ!c{b<#w@*)`nBBeS}~(K2u6Eu{(} zvWMkPyE$jrEPP#fnB16WoXG@=S=m}4+1GeLh>b02>VDH zfjA}gU%WnFA$VkL2jY@3^7r3MhUuhUgLqQ5Fd}~yH1z)fiixmIJ!FouDG8T_lytD? z>63}4#aLCHZ7lwOe}|VtV}L8W9~F4CJKEXS(-S%V5cmC2y}2+KtbzQ)1XB9Y_HD{B zyD!FT3+J604q!3z^)7xyAO8O#3KusV(k!1SJb%OE)6?=Y%0hm@{$F^#O7tqvl|1L2Ea#m)3b#R8oFd zCl<+FY$T9l2r*=EYtZO7+cEEOPWp`^qu7YE!7qslCH_)9dp9JRO?;+$-v(%-e;M| z%;B&tSwkJqpVY);HCsldzqeTEZ3A-mp!M8F9;A#bojleYiZgVag_200cbnnmO`eqmU$BW!sA4$4f`u*3;;0 z-!G-U@y3wTYLEtxhv$y+c*vETJMU^>y^8$l%GMmO?|-=fB_$i1xSS!gM=RVuigR^Y zigh1{s^~K5LltH6-9I<2CF+!@B(JuDWAV z<@-FPqBqc25Wy44?qJ`p7bP*gsKwczF zR8|(dg~vCOham<}bmHED&YCLBeBZ_CPvyy0SEh7Qn%?IXn< zBZIis?Z*^Q9f=iNeeHv;u3w!QsCiuM163z(PNa5XTbk$PRh6Vi4Ec2`7&x5|Q=dG# zMY^>LBLX1Hxw;>PK{zf?(H`Ntw5o5-GMi>JFQn(H*dBEz8@#(&+wiR8pJ6y8zf6f= z{VzHtWebu!1!BuC_N;zved+lM)lzR4sqJALAap)+VI9N8RZ;i3hDv@7+tf?{n_VP; znQa_oJ=v|^8;N+`MPW#_^EI1_7Yym4)2aE5R!X_d^T_|!L=v>ah?(ZoF^nX)kv-J` zJB!Ub#)j%C_7VixfBf^+yMdtZMEh=?!#qyb(>Tj6s1qITJExF=jB{Bw}<}yV<|W1@Vrhf{kNL3$*8_tV^HGSw=~G-`h7LHye zZ}k?2q~=o9PRCQB4fS?*b}N5!BU&uMTqJzT9#O#yX}F)!Io<~V@6^TfxMTd_sh*`I zJhU+af`Q~pG=Y&J@MxOh*qs+Fsql21MyiWV0FS$I!uX5E-EV6XI;?^XS^hcZ2?^?6 zt(P}NL*{ZhRJEi#^?$p6I13EC*YNG0AMK7$OdvubHa1Gcz_dr%^)xav+NsXj53#p1 z`a*=tSG&0bTaVz5{LdH3A-(1EhM*3qC}P2(GIiE&5Q?-`!mK1YpGf5@$v1)qa=OUm ze+Wky;;gkf?1X1tmPvxSiJ@X{k94S=M-?QMl;CIRSW=94(sED4XdQIC5JI-91$#F6 z9S(A+rtl&E05LUxjis+iXN`XLudQY7eRL6G4ks6>MSHs&D%y)$!&Iv+>!(tmrOQ8# z^Cw<))^9ZVAOF?}kMtxjB_ByOWqh^E>aDN(;Hi9?{_-R>+Pu(mFAwZBI1_0uYIo0`5wz|3Imq^s~a{u$&Z@zWFF)_J>1tS)e#Td=}g6IYJK!s%E?IRPp>7 zD5>{HsV`U&F&pr~RGgt1k$#8%q3C5UKx(7sz2{Xwd1!yVahI`O6#nnzq8$oLhkZGE zQ;TiH87@zcQ18_RF3IdEQB{XW8@-s-f#kP~cWTekPPa6y``e+9J(CHG=Z5_+j^9Qx z@h;O50Sn;DF=wfcANBV5k^PsVef2M|=rvXv~MA05c%!p#*pijh~TIRjpe(3Uo;6aWPnj<*kIR*yC&wgBGA z2EmnzV*ZL7wB>UZZhGIGejM$I4H7Wfesm&3gVW$Z{^I3n0;YHRD*I%W8vOQmPIkZ9 z2B&-V#7WuCFlTOVG`(L-7-^;olhHul%21rnUqhVHY^M1PcxOu6IfiYXL?-)ok0U`vK7|jKR>jh ze>#wk4nPV+F&I%7|Hbpm_1M`y{hG&hIM@bdlECd7)=yLwh(?FjAnsk~ogj_ESY!*! zcmg);3r!~!`SVv1851$}DfQu!%@JEI-Zl{_0%Q(kvG}znxUay1O0NGnl}jonAqG2ncdMY@@C!w0yr`t`xgz zY;zW$xX0!!!L<8hT$vogJJ2%-m)4qC#&5iv`qnm^YIPy`!yHZqmwP=e#lzEY=z)pJ zghtAH3<3ZcBb#kHSZU$K;1(9HoVE5@^QTCg?cI8H9F}ZZPAWX+Qz1=@nLLqb+t7s zt8=+oXwy5YjGxy-$^Z>pXq=}0`&JtqM)pZ!va@zo1Ae@!ot-xJo+!*gahj;uW|iq>n3hX#pPuLNLe~%*MRs{mO3hZ zJ>#X3P3ypQ9`5}g*V5!swghB9hW>mF2D^KgmqQ|W7W23dj|Kj#W@KsAUzRP~FJv8E!TEHc8D3ih3+Y>Z9IF5_7{)Ky$QzAKVI^H=4g|I*2LdA2h zt8Nb1+)9N;Q){&Gd<#_e-5S|}Pgg2XfD4S<1P*4kX5lPugXd>R?@SRnW5p|vpKw?F z7CKn7t65nsxw*x&);z_z&2jruCrXEx9r~YWvDX5WiCcJE5hn@fUOzbl& zRBqWG0PuuXRA!&|mU>2C?@8=J|J!x=jG(|g@A^h;)X)exCa1lM=$H;6Ebrrw_F5rW zfOiiHJW2>QKQ?3OLqXZ;?g)AsH0fpD1|Q+m79;~8q_v%`#7}NML~CV@X}gQuJ^Xdm zGl$Ujgpzt>a$JGIyWob#%;5NVz~<6xhNRIpuO_Cde0$?cF^KnJCnwdV`zRFQxZ!2^ zjAKy8&6k7z7b;ZzU%^iJi~z*X5aeCONz0mdLb>CUILc|d^3$`(q!*C+4hTXo77Quk ztII{oj;3U(TQ^l#k8#=rkJ4>rS<0!fNW@@u<^ttkMBogroGVQ4@5Vm zwL=kRtil)abk{erfw72b z3y(#sy~OVnin#3#?MAIb4I*nDq*wUET{9N62!;FTebOY|lUJ3__U9YPhuE`zTyEn7 zn6annk3}03#%-=V_flTFcpESb9zT=}pYP?dsy@)TU@9&FLkWw!68G1FR37xlqwXTv z5)-K+Cw$j_>xCFGTZ~V>mH5d&L$PsMfr6FBUPGr{`Y|9`>l zg@Pz^=M?-HPvKYW3g|j+WS~kN@PUOpJ|2FdK!ceMWSOB{BKal$NGxg%dsnF z9tvUjP%=9h3u*Y;+-7WmuPGjrhQdx=@}J=CwM=pWV~fRCr{5r9_UQ2ZAzPP@*M`px zT_*PF@KVGO6R`U>SdKkz5EnYFQMmtUdh-+$%$t#_j4eP9I>WmRfzU zIKT1H%V{Dmq2Tf0+%G!|)o+TfbhCn$o?giOAHF}0jv|4eM96B}2$*ELW z_w$1Ps+^(nZg`GPs-pI?j=giZNVi zt={UaU%r(WGhSH-tqwu~hbPr^I;$V?%ew@Xkc)j4nhX|>-__2x9#Zn!L8#eQR(wW# zw|}@N!wLYq`{8R112Q?~X8hUMhJ_d&Tx+s&QeTzmLNt$vq4|s3lIuNMtk14`>bvqP zpIIXjf5v{a4J!x?>(!1NbgsY;F#GEILq;e5Biq^53hvV)p<^sI4sK4K+h~P|!v2Rz z@lyb8K))Zu>wWD$e_qDHbW=nRTi|U$5wRV>83%^_o4ntVS zs_ePgN+Wv#UI@^rVM$k=X|aG*9%n_pXWd(zYB?48_$6|mnYHkurw+oWs20H zsZx8o7*q3zkp3q}yygO#&HZ7vJ!C+a4F{L*-dh}pu0eQwadKvnc2tEy z0V;sR<10RIJcbLjRg7iIXWb;pLnWOj@~+T$M?jbD+kRF`zdML?4#3GCKfj85=d&u_ zJ8Ud%9op}W0>*}xrw6?Iu8pLd^v105s;2Cs(X|Xz)`epu4H1gHB2VwKpMFsDE6`yf z2K1=~kI?M$1dPR--yK^Z0xtE9#N=pI{jFzXSBk*Kpl$N0TmBzVupN0t(4;aTRT(v_ z@rG7|5?E^`Y^_%sE)!w{$rP*MaAu6Aj7Bqt-j#vrV=>1rn->V){JF>b9iIqpYum`rxuZfmpWx(VSt zZ$ZZ7@4ZLTspfGrG8YT|rJT7A+CS2s_jvT5*~=lzC|B%i)sB+uL7oYAmU`28x?~E!r9*1meKJiK@XNnij zKog^1HC?)A!A%jHJVf&RZslCb!WNsWa>YFVD<^F+S6oi7VjngoLOP3S9*HKDMPIM1 zL1Iz!F8vVOFze5*ctqr-;nQO zSAs3+CL8DVosKfeRg7V+Mze^-bC^c3QH>&g6nmyd8n|EmVi}^0zCQ{%h7pwr3XI?f z6MM=lnBnb@T86ao_~Bgs776NkgeGAgVn{Q$`7cmjJG;T%>+jc?)A;uK-e<2*PP~F%h~=n69g?60NqTXAXOJJJ49$mBD>t?H0Kc zDxN$*evK%mOs`;lBc!wQwlz{z6{4FgLNq|v`x9>Y+95U)uY5VFcR%lN+?1*d@(9fE zuL)U)&$9DeaW?0~as*x@Ui&uc*Rljv>=h%C`I@GAndkj*lg^F=qkm(GiniZx(vPCG zxno_M3=Ev#_QgpmMMl2Oz^On~O#k$r%x*fh>2l-OBhqITuL9|z>p}s#0UAml4Q;n) zw1@&O+G?Btl1vGo6Qtaq&FJ@Vnh*drk0y_P+{8zQNcP0mrkd1-6$B=eAKkI4)l@p=+EXr+$-@Tv3~64Nth2`Z5;odT(@_Q97VYnb;UfCRpiar6ESs=R;8f+L87gJv z>^&eUIgdciZw^5(SLMv37=1>1mt zZ+jjXn7z^P#ca2b`N|Utl5uH>P3BwZU_;~yvSZDCjT*0Nk4$X1y-nG8bSs-7k|m?G zJuLvk+@)!IZm`(MYaLK_HV5Je%peR-%CkZRBM!>lRM&*U@Z=#L^^|7YEYrvILNG;j~j|%fA$fFh*-S9yMGEHetqheR!U;< zfcoN*U}s45@P`+9R?~cr%a8a3*si>e*pOL?eZsLC$#)TmIWQioiwID#iVNiXChCOm zUL0=Ptarm|I&F-Kq&)MblZmBd(;={TsP3>2r!3}lTu3fLpv|O7)^OjGaFN$ z6Zokp5rD|U@``+2vQ|TitvjsBVczsp&~4;zGrK-?4sHW8b5pRazA%#?7ucpsh7u-o zy)`$MY{cTeOsK`$huDbT+u~DT$I`h*AOf1}krW9S^C7~E>1;?r^HPwepJ9dWKgp0` zWW5n1n>1i9@+Ng&6E9InG}iDTzfY(#!D(##VcO6@GBsVD0+=0PzoMhX8{K`x zoX`GQ?l;=o#_v{zE~DJBApzS^-yQM8!M`U%-ba7*(kg23Iib?nhNbbobLG|S+|thp zr13dn0vZZht>vbqrdcv)No)gbxBmVSISNW&l`QVQL$oQbl6xFG#&8~F!ZHTec)IGG z2~QO?0{}he2`$#8T3dA5a$$ug`q_n1D^-?5!Zr78KUL`>uK2xc)ReZ*sY+~+0eL+s zSky!&u7~{jbIT5xR9&*vt}qzc{H!*rhVmRku@-cvwB8>2RiFLTu5KR@DByWV3u7Lp z74!a$pQc#M)&X9-wAikCTw^#`E2ffHr5=Fu{vPBo7NiAMDf-@vPRM}S`S-vlkWLa6 zoebaI{a-~Vo8bnA)R?+p1S@Q^AX!6<6PQz{wg$lUiTg{aZU5*N+WZt0gFm!TbR99J z9XYi?py$ku=8i8H;xu=x4grvmQ-1p~!I#wc8I`a~KQ1d0dAL8RAbbsj9g+Ha!rHi!TIl%5AR^3Fq`#(RHiUo2Y9+e~3jv@)Lb~ zv1@lorpLjm-p4G%$-w3`+TOwiuH*M0zF^OU#HzKrW~}7};l;gxNSem(dUumov!TYX zR{5-4<~%U3k&9YcqKs8fCknco&)4JXY+xQ_)p*SGN*S-)1VDJ_)>uu40!2M$Q)oGp zX^Lm4lcq7NxQvU{t8W|cVYd8qNdF&BKC7zzI;prUWdX4#sF^#?sU}d?OpntUHDWON zFvU|W4c__vj2OXg?cf!+?!s3cnH_6P26VA$WT&X@HAAwD+MMI_&~gnga=qT3^=w9f zT0pBx!1!=vrnWYSrSbb)=ba{kaTl-@v(0!eB=Vtr47gDrfudNWp zCvm|{P3lS!=tFSY=?}>ieSCej1l`=uFIq!)Oz=uQzdy&Oc#9>q{Jm*?CqK^SdAF{M zTl`8YKAJZ6QJ`#Gp)j_^s4>oE3_{v~q}HH_`%Q2wlzFKYbukj6>I^k0EnhNRrIkiR zIt%t;^p4A@VH5tYultx0|7SH}+@-9(u)@8O)u{-(jbM2_1U34n5ZdA!0wBz!kk)2{t*$@+_=P~BaDtg{50i%Ji$i8lH}Yw8ZNV1;@lFLxaMyz% z6Pr}FyD!-Ayrr`~!@ptz3^y^DKjRI{tj?I;uRZHD_{dl$f*F0_bp8xOvFRWlC&pS+%R zFohE;#8(~N^b0mC7d50k)0q?Wc4i9hrSe%+W}0lU(_r+K@0co31a4PuF(=7VW3%dr z?)Wsn#s-7-f;OSAm~|`T4Z`IgX6jh~w;=fbeC76Ob#uRytfBqtX74C9eR2Y%#z?FG+U2#(Pt$_ zPod%s_cH7c&Hg1@!Bzt1YK>u|N^>)_cv&M65nt(S1Vluzam={^%CW|!MPWUsOeSv4ojcb9X6@-G zM<&qT$H!IxJQ5PLcWNrpAQUR<@B4eVYK`T|NhLKku-P_{o({_#1A90b-0Bd|G_uQB z8G+~Cn=g;Tdl{UD*8{7f?ofcx=5)u&aee(iMunRRF0z}icJJA4?TZ5i)AcO>Rjq02 zl2gCh+1VMVSt77@yxh3ep=M%|mwmduzi-Nf6U(6Gb};op#usewvucbl-!*v66v_pm zLKC_# zt-y{lcSb!vZrnCyM^3YY1y6>qi~x8!gy4coodlwlLTk_)o^lfgt?|sG8qSu6daUd&ipo2=$UL-y7)?-utlE| z>5OWiUG|dok7NN}p4HKf&#XX#==5v}x2xIHo~gHVwD7w>8Vh8}5084N84)j^>1<$I zI!&pjXf_@$L;2Y8*}m(>pOH?GViCLiKJ(Wj zNa6hE4bF{Atpp;&)=*wYzx6glZD}QMt>j^qz}miAH1u_HZ$f)EsJ-fCkPWUlX7|}? zI2e=bNO9t^h2J0OgWcL-^YhynX|SWd>xbausfdjYQ;GmLSx_bA@H9=x$^Z#V{PkUJ zaKM6k{?>bo(fJ6vQ+-Gi-fXonLn21o=S961(ZtAqkrNQkfGJ6VOMbv7yh-n3^#>am zdXO97`zE5$oon1{M3R|Pi0I=11;`**`=N;6_Jd;%6y!;gzd!paJ zKZfG#6n`oA>D?TTXZ9W3=3r;lX3%ze1MeLU?%rBy2dTVy|e{0RQtSQsw&)~g*PE3t#r4vfOK~WsI(y6-AE%X9nt~<0@4lA-5^MJNK1Fa|KYv&z487t z&T#1PoPGA*U#zv}oNMmxbq5a*53Tp_O$L+f_vhENL-j}DUvkiPBsWoxI=awtl#tFP z=#FnEe!2e}xxnj{OmL-G>X*bClZ!+J6Uye38LT|uN{7<3t@4=ZRaNU5;j(iK*6+q@ne zcKD+q)-1t*n+vC6Om`#~wcUCnfSP|=7!}|Ui zlZ?R9ay=GapvC@NgX7?06Jf^0CpbtR&l-aQ-}smDe?LL>dX5IpUx%jf3_W#@v2db) z&WtHibnNNIF&S^;;hYyUqP*(L#D0>TVaC zJb?BT!XzbKoSekP#9ZFlnVX)*$HjF4&2m3~@{o~b&@1Q8H+%8Z(r&c*BSIoM@6Zt7 zj&zIF=BB1L*ViR;-sP)Ucz86_)^f+oSzB13AR}+@@23lTaIxhNPEAeey?piRRX|`M z0V;y7?ow_pE!c48=7@-iZwFXgJkKW7!3v_jKAbVlh`0`{trA2+|N3VzJx&iP%km3N zk83<}?c$^}1;?46NBw^``jL*(`ug`QiEypJOy#|nR)mzHk`e|49BrC%a@N5z0BwK3 z5(b#afbP8a#cDb4ww>xhcujttJ7EC>8ni((^q&?LhHB82$HOz-)03B(*#`2CoOkB0 zQo!dL;`+f+L2?q-1u_A6=uf&KI7;CJ0s_MO>*dATtr)cb_Ty!~#l^xBRcQq#JD~Y6 zQ0(aV7}ghDAz=iU$GMgKlU-n10XlfCxIBQT0SIUUq)|V7?d!Dt+eB{F3nzktg0OMQ zKoSAsLFJ4UOJbo~;gzR1=p8gOGqbj4j*y~a&~vC0;NnUE7CZ2MV|hx$8Nw~a#Sud$ zx=rpl(4xnI;6*bp{Qvp`Gk>$$;FNh>?9ZsR8We z@JK)Ok+B?f4cz#D7*3bSM*#bivh$A`X92z~oLX*%>4jQ_Rq&zjKK^&E9auWcqj)BE zeFqffPaqMOjrv{5d0Y8`;FKQ4GmQp;@k8t_ZtqYrJI2G53E^0g;C0>S|x zN>Mg_$ey~SqBK)hDa#gS)7YjLbRua5yl-!-I%y!;dtiq2HeUsp4S}|5;Fge?NkK{3 zuJ`g31kKY^6%`eH)F9ovzv_<;9*K!lQNs6^(}qz`5Dh#A(7v!hh5_0p z-KjZ0un33?q_BIe+op$l9;!~jU7VX;4*GoG1mmDTIhZQ`(ANCOfv%2nsAK8+kcml9 z5)x_ql!&=wv|L0%0DNZds@dMjymJFKNCH;62?g>TJD<%7C3Tf;(d)155Hb7UP$YqjQ1hY7!l47sZQ9uS{6t)VAYo8dP81WOi*A&EClLc9Wi{;C2Y zLjTEA$D1O_u~+@gphn55=Kv((6f4S-xpv*_oUtuUZ3O%_Q-)1Zag0DQ^XodnKeFCu z+!1eOGvg)C_Pym1{2%4y^Zuk)Ni_$6MC)s5ZjhT?nC9%@MiSv#J~#!*pLqSX_^cg5 zF>;4`@rI`2%kjm#)rN0AB8lqrIuG3!Ut&7lKJR^RUx@QCh4O{b5yfLIy%G`udA#A` zIff-hEXD$z*TRiB9J%Lr7LZ&%>^6C*XgSv(K0wxHvam2I^71dW-I1r?P-}iHqI|K3 z%1KVDl*Z?9`UCES@6`30Xlb=Vc$K%%cF8e_*WDy?=Vi?*G5%hmavlkPi9UIPx|WA% zVTFuUDvGE)IrgmfPxy)snw-NM!-KS4k&;*Q8N&_}Mh6Gp=O<0OhhFC=o*A~iC1U!L z&0_7(+xv@ttyjN+P1X>CuuX2GD&@@bY)#=cSzN_ z6#Wg6ngcct#gPOvF7c%yEWxUs$=33qKTOE_kqIdZspn4j!?!am5;?N9>Z%ln-cO%? zha*)mXf)WMwRTP)cJ65@Lv}ZlDuc6T$4fu9UIbe+MdA?+=Eo zuPtAo2U~|%>I*^=l9CEa3j9`v=yMtda^W3Z2`@IFR)stA#Fj;UA~@(qA+LiAw~`Ai z*2lMJCr%~TET_ArXJ<7nmx-6yuCKk3msrtI*|;mII2@{|8gJ?WHoto*3;zWkoTy)t z=>%fBU@%S&8s2CN-e2)5lO?)O?iwc$=V}xa{wbqFP6x@~>@VxMhuA@AafyY4 z{@;|{^d&3ub5+H485655oQzVTnbh`BPf4*0w+dIvQMKkkczkT{C-f@z*Vk$h@r>%m zvc_BykyXuG_FGyY#qE#3xZ);Bp7hXcu0WlyQO0kpRcrB2_?-%_Pj#$9I$n&7X`0Y=3hC8P z^F>u=Up;mFBg2?a&{$W_>6eTj&@d+I!8`7HUZLy<9Y#8QeoJzuy%PK_lFP6YWW^^ex^v8CGRu!NQj8>B|^y=Q{P%*yjEx% zw@zFjB&p=miRG9+nn`i~YUa%(oy5iV5e^Cp4u)wpD6gunh5<_@;v$ut!9vD|p20++ zk=nHEt}@AaO)J|xDJ2EJrv3Evbo>zfL8)dfB=Wcv=mYNk5dkv+?7}@UDlOS-KFT-+`*xdP%_B>BoYK~} z49&l1xKZ3ZV_GMTpXf(I;Ur%up2yT2(@}R)v|$=$6;ln^A6vsF_P}M?PDbNa@Cv|? zpddj|H}4h+GW-q?`I{dCXz1rQ7t$xHv$W%9Kd7uODUd3j6L5I3S!7Hn#XIp^FtE+c z*BMA}Dy?zULPS|ET?PC@k_bJG#$Pi0SgztT7#{lH7U)uchr$irniJ zr*v*M8jP!-a}}n}gnAx6XDgNOa8G)p_W^7e-{QiOAcj;Cg6ZWINrFu5yKdrJXTMb~ z@%HjQC#21gM>W7Ivc*6@`JD~E2@yXHI(ZW6hp6{ca8P^bZI;DPLn5Yx9;)2|%HIvX zx*D{0rR~R^-0#1_Bbk}z*FG>)TCXe1gosmO-YYD1E&lL@v4Qg?M+)>no1S&HB(5np zlD)kQ**RbPau?+2@W;hK?sWw<*wWI{Q(RCZdyWiXS~=aHLX&{D^tH5d_J{YyB3@4?IJ&xyYe1gzUpuF6un|p{V@&-cta;N-Z1Ai zf8)+mx!)UvqG+)_&s!&OR$)ZF7OE- zUhin=F^{8tqec(13?1D0G|dc(>{PAenAn`? zp9Cure~Gi@YZ~N-*L44g>)Yme0LP_Y>;K}F2i0o<%T}bl^`}NjaV2@obQ!2&?A$I% z13&h{lk)#QXMnleNKcMomCw&&uj5TE-6?boQ`v?Bnw#Mm;PUA0%q;lU7}(|EearpX zrY_#+Y-oNmtgbe{k|fOt*Hvh>Xn2DW7;kh9FU5JcoVGtatHz<8tsa}B0t1cBh?N-k zt8TzdH_TN9_*vjc6`;zNut)U|Z05C*q)0L1l$q}Glq#qW%JMI@7jreSeGsiFXwtHU zXM-ROq3r~<(I&WMsy%Aw=(^$QvOe^8xp<853ix8TXvn31YY8f0^O)_qYBPd&DOH88 z;uSw`F?&W{5#5DzOQGidVAt&*bpK;GQePjb6ZBWx;>UcOizkvFd11th7@6l%_P@o4 z?`3d>+05AaZ7Q*qxw=aUe&20R*U2>TD=8}8=k9*rnl5>RQt2j8Hs^KceCiXFRdC)B z9v0Q|$KD$G{J!E`Gdb#I%uA;Hg4y>xcHhutz%vV0tPCOz@du!HaHy_PFVv_NySF1~#0v zOWqA2;|>UbPaT?^tq(mXdNqe2dHem1T+lj<;W}>bAG&(Qslt{9Gzhcy?#PrZVQ-M{ zLcd45s*&SnL8Kx~*UQo;X#Xsu@jhqCa>-}iJa0;MQn^%smw&XZ zphkA%alpzAN+Q{dN>vu}FwzkU40o2_z9k0RD&fY2|O-IfZGYreeVWX|h)VdaMF(;Am zLOh|G)4u((cz^DIZ$KRkp&vOC zJDq{S%rBxP$rHmK8$w&9@NVSM?xOCb>K)(3`>@lf&k|XnewUDzZb&oK^*jocp?+U! z;=KL@wXnuyp_Zz`W1l%OmFSfT9;2~oogaq3HA%YO_0OW?JXd)G7)Z~u#^7Rk%I8{q zpwU=8+o}u8SVw&SWYFi zz!k(5p@{hW)cD5xhpXntgl>+K!65}WZSbz(3;Fz^MTh)zs7{C6vg5n&O{Po0TFcrx z1K8P(tvl=i+cDspM@2)+_7aH9hu{d>~w{vjcXc4j;`|PF;A@{jG*l)?xp1I(!rpV&+SQWSl!&{!H)hTlL z@U@A25Mxv#QubmBk?fWp5#p&pB=eLsy~}4RlGOVCM2&nAAx-*6AsB#Z4C#?eF-&+- z@K$@4J(<4Ur}evh$CRhpii;??qkP6HE-udA-X2(fa@Pr1m7jeu%IaVecDm|VYC6+N zMbm4)?BkdAo*H5M%Uj23NEN=7@(Z6BvTM*iY0LW%SDswK9HTOg_p7qyWBut-Mu3?Y zjIVbHrm2AYQC1`biIp~7ngu1{j|MxB@ug9SpG#0WrBk4l_;uXWI+M0_20z|XKl0wc zlw6`bXk)+Giq;y)w4WuC_s$ub=F!QyMutAu^|^BfXaktqpcBlF=O1#RmiY#tAUgo3 z)UoQq3$BCLt`7>Lg=nR$IB-AG(00S|1WO4>6K6kz*yLG%RIcAuD%~E>WN0mZ%sj>6 zFJ0bj@w89fK4sLORRp80Tqklu=$!m2rlXH%dfX{mD9Ym##edGM(6=pe7$T?Tv}w0V zPH~bf)mKY1rGWlLBOLf zShentB^TD2;@O9KqyBm3o8Og0;o>FuB{E;1^Jgi0OolMieAOlO+8)SW?Ai74TJLLN zi3H(#kP+5f-IAgM8bn9FP>LI) z;>m5hT#XQ=SFK)j!ypVu;jhnG7?Bu{aj<>gaLI^7=R^$He5g$4x7hofxE8MIkxTnw zC-xm}(4a^|3npz08V2#+@dXHvgZ9!kKfzEyi`BOyuj>_b*I3*$T+Buk@PYwDKKTm-FD{!fUfbpeC^wAPUQJHt&}Z&wp|(RN=d=3k_BZXD^) z8edd|EGw!ZRls5vt@^4)nQ&B~Z0+t66A-}olJL7|FeL!qEw}>)qNk@fsk~}9Xa;nX zZi{!*Z?mlI(bhh4A7vnQ+mApAiwwJ<>UA>4q$c1M3b)SDv-#VRI6$CcZHqEMcn)Pqz&I zaD`l1;osK76tlu>{;_l2IPg7>YLucE13*)|Eh@0TS4tQ z26+kZDp!w1PY=pK->dGF53vezv;&B5yPvHgh}1$2)LJl8XMJ@>^H}urRBEw>gC`6J ztYV+@KWm9+w8N>!#ljiAQnAAy65HvBFMPLmy8ilL(h3buWlUYGoV}3SUtcAK4zP|y zM)cG#J3N*n$P^MrqL=$s`*Pj$z7)}m{~TVVE*wEf?NeT}zxe1|;b}||phlJPSUu(l z9CMHaY_}BS6S7lr5r{RW+e;C_!iV|mBOO(JUaB#0ffpHhyCW|Ch|GvhiM6s8y+#B{ z=`8#O64SdJ4$HrlR3>U1Uovt<_>1as`4vxyayx=Yaf{1SG zxtgxdPOJH!_P}oN(RtRufHHL`GAs<(TsHvA)yiR^8!}*^4GaN+7dZLD8Qs`sKU-Yi z+R6BouFu{ zz%}ywZI>ENyG%vsH}Mav5KK#%gJUk2uX!7Qmj0Nr7N&k!lPLaSpzSpe(;B~t`oq#4 z>NS6p@U7ZbC032Ek;1>3m4So&BPmMfjP=zPoCKMe6dqAg)#Q?)@x1<02uwLz~GTP99t z)S%WFlj&bmu8a(o-)9Fl5xMZz?L_hJGZF!j4~cyHQB^Zh_1-sLGp+Ci0j)wO)TC*& z3$UB{CUf4!f=CG@$_ArKr=Q|pPHKkNR*XSGyRo}j7DBvTcxr2-Vj9U4b*D%fGeM2y zDOP^U#TJZEr9$Iu=zmcdbdgq8CyaK?c4;pQGhS~^-L%3V_;1KEdgoKozn~d5yfHk% z^W$lt`U=WPBV~m`1YhDRhvX$veZpy!c!>N*+lFi7?_8=!#EEZSv_{p4)DHeLv0C97 z@P!5;0>s(0v@~dBX=!O}3@kkkUS3aUiH-kh0c72qq@<*pum2Y2=hF*iC}F~19T+e+ z+s%K1N$5mOEy>@`(wE}84m1WEN0P!5(RSMPMXQmF2@F{3p_4S?l$1%g=0NWA{gbu9 zZa%Auypw?YrPu*3S+_|pi^)HK`6if4UgP?8z@iV?*N5A*YA5t#`F8d9GhrqXX^Cqe z4YSDN%rp!uKVuKh{awH$qvwwXwaO@@;#o=H+*4!AQ>;3Ip_THr&2%v^MbFh$oUcwYj%Eo~FJ zfj>4RrmIvRrELO7p%D4RSENbSQYf37%0Hkeg}ZrHE@?GCx3X@kNDc?t>VsN|hJke< zMKO}PdYJ0_=vIVO8{a%5JHqp+NFMti{&J3xf zB%4G))xxCD>_@@%U!;K}((5W|abagGb?&&_=K%>vU7H`_{y`tb!9e2*&(aM)%|2k0^2F|qejuaPn6@vn$)d`Dq|8@G>fM@bMr#WH zq!1M1qvcDebaD8@<+cK#Sx~v()h&*b+-jW9?j+iL-#FGMw24r1;3{&BP+TO;Xq;ht z;X$2N&C-2YUEIRYjx4#M=i6n~8{G*5&0AUWnBt?U5sOCC^laQB^6ZhN>7X5?@Z6h9 zLXb<|u+(AX3B|5s!^Po8q!S87a*tMF30-{KhCcOsBR$pD7tK)T@yC_7-!PzY> z!#MOgdF4L=Mm`%b6fGX?_Au3_l>MEIl2{reGj&Qc2an0Wc1Z{^Q3FfS*ET&NF#=;Cn{j zQy8`3UaK5l2-gR@8#W)^_dih7UFKo1vi1p_Ao*QV84pM;+jy>BSzWhwOQ#QWeXzQ` zy*9AGLI2hKw)aqI%@l#G(`1>g5#$_@kc z&jcg>T!V|@s76kV5CEx};g`7Ze{aI-eHu1z0!Hp_8H}Z`5&1kLKg53c;wk;dWJOvW z#1+(8LTQ|M^UnDK@?|{scZ5=05t%JV8@oh-0<+(%IJ{h4?|rFy)3E;oUavkg{B5Zz zdttRLcype6a}j~DfVpN5mdtCu;CUiH>zRu6V2ppbb>n8b$Gdm$K-2@Mpm)QQ(>WU_=V5WnN0Q@nrX{bU z44e5JMW2As^u?6(Nm9rb!XSBcLK)?i0$QUhElbli52-RLrm8K$_4G0JyJ>3S!5pR&ifUCxY>hj7c(97WEU2 z7*%JIMJ>b^R8$gZPwhiHp1sRT+J>3OgzF41O)G7uHQ7oRkGYxprLHVMY$ToK#421Ff61vVB~zMtSMw#cx3Wg@tY zRG}CC-b2p)~M5lQ018L0tZOHNPH`f3lVYrI3 z4I0h&=;U&@UmH97Je2McLR59h)auF7l3~25bHm~;F`km<}J2M5^7K|Y(shI8(O#G)iVruOi1XH+;;e+vW_-Ny=MW!?l@&s0lTPxNYI>Aqu#k=G>I(+-=%7=b}V~*ro zFC(KhAiIEviq#svF|g2NNl?B$eD_>4ifnqw_Tl8<*C|_6r?kyL>Dtau${A9&JH=Ge{3q~U@jtbq1fAkMcSst$+`74vT zZy{vwY%0qH^k`4WLpTnG>QD81UO*!A=S*0y2^APk21+Gx2S(nwe~Y~THRpKAedDum zI;Q#L!?j^li<5<@^HVuhYvrSnM=Vs+N)odZtxksIB1bgZE!e?AA3Z2uo+*l8m|g}m zI35pCG&)BDpoFWV1Pha7eJ<)k4GTO@sq>C*YdfX5ZmipGo!-|YV|k`zB?Z>8PqZ)9 zROeLoWigkH$0&L&{1iKU!NwwN3A6X|@S5R0_FBR8qEI+{GpcVxH zeham-YBgf5bF*512%HtK)3+|igyV25LUy&X<-^bZpG}FrH46CKkK6VsMu@O%;uFeY zjJtic3NQQ*)`1DHIU0}{5W83ERhJaAk@VsAua+u7JryFXmM)}c_QLr1 zlxc^NT(tr<>m=OP@&`D!19?u%WZj;gHIB1DwstNfGc&W70^IRk@Kf0Mc?4-Wd3lU+ z7?r*)*!}>yIY8b@Txd-UESTz)??f`x)@lNXrq^i^_dICd` zIPH)dhZ#a&*f%0lf@#S+CToYC^GPn<*`xk1I`QH2qzAeG;zmf=$nEH&+N3b9RW(lPFC~=4i)-p>T?9!cs&`WS`t=?7chhe@GG~Y5?He%f6uOTKtZ0Uyzd|Fvx68<6VHJO! zg2Ejx97=rI{Sv;=I)qS+(y5hM5}Dc*Q1*rfeuynrSsyT7lxFxDmiN2yWkX6B8e^q< z+gVHwec{#a@_M@;qx$-=|8x!p$Pd&Dj^hh z9B}2>|HZ-zr+6P>0a!@S=6fUJ+T0P>wDy-CeNsftl#1}s>SI2QWdR?Q=keRb5IG}_ zymEr5mO|8%c|7*!>-J&nt|hZU~w6c;F)+(o6;NrsAwbQ zCS|z->jNR5@r_e6dDXat!7qkr+E|3O>=0yf4c9=OYNhJxe5>jhgc(H(@VsBGSD#eg zp(~3A*+Cu`RtjQRe{y&im`M9L5Q_7P8)v`fe>VLQFkrRv4+tQ5%NVv9=& zFylB4PT9r9$uJ~kkS+t)mOssiw=V<@>Hskckd4Tw5^$fLXc<&Jj<0Bc}(r5nma48diV!Q69s!7|xMZG1DYVI=l(co2Z7zV7V|~vWkBApmFsP zp_+>_iWPghcj{RdD!TqpQWc0&D9lcR)jTHtF|pK;N-{gfGI_4Hd^OIqEb2$O z%qQYKkFih0!eHKjTj0I1Y!vC~(r2=57ks@HijgdZNlmThgpCd_3X93gym;Yx)x0@y zv4{19RnYViiJ&QeH!v-#(C!3hf*G>V2e-Sh8O0B^0>nUo3xLd-_KZbDFU5&_;y(I* z%hjCJk4x)#2I~vN781N`?tCR0Vq3z<9I?^HYVUXN-JD~Tw7AZ@70gj83eHZ#fs z1-p}!Vh{-G(6gyDlAn;SkhVXAebkyP1aAoGZyt$yq@`r<*u3;WOENT9yu>Nl;Vpf# zZPR>keeGwXCB>>`O;{fpjz!AW=&l^g3qElar z-hxj1?XkGT-YDYjXI(evp3cWryoWT5!N?6HA5ZbxU%qbAq|-ft^HnD&gD_n#q#K4_ zD|OXJz8eVm`kv@*G825TWC9cWxrHCk7bK4t%I2i0a4Q}RV$T&pgm=YLi~X$`6Y<%= z9$Q4Br}u5>6_bpba_`0=ykvpXu)X2s1*$REzpykNX~J4(bNwNz zrJ4D~gs-J34CoPXwuak8*{m zimyWvHepi-y?K>MAU@5Di4XxP52yTZNdC|8tWT$~6$`idaSaB==f*aQrBZDyqjEjR zRXnZ08ER`ck$%n(U%4;v9z%+G)+Ebg96#~GZ7`4KpagA*cI8R)?H)yool6^;Xa#IIDZTTwrY5h0-ubD^}5tX*jj~gQcQUW^u zP=6eMPXaFZi?qA#BO+&9l6C@=U3Irs*<{t6|T8ePbmUd%vl+V?BKRYP5aMjtL1_)6@klx36WRVihKZA*g z;qjW}-!^C5u zm+m3xB@tspuX<{#q$u_mE%KjwqIH9X*h+EN>anux)#DPIvrahlx6C4XnTX6Y>+1#! zL9Gsr)y0$`>4A3z zTlP6SZ^ct8*mdP}1sIn|2CeLXlm>nDjhL(#N+Jk@@LzPh{#9l1Ga?u!Wa90*T3(|H zD(`59W^E{0zab6||1?lj&cuERr*?-nJ2SXa?qFdpp~LqZd;S;d2$m5(-Ps#_{_!4? zMSqU1URNNO!ctWz)RC8w#Yox@Y9>!4IF^g#7N%O_#~h!|l)Aw4E3(Ow$hy+@CZp}^ z>s$JgHmD|yb4_zE@L>x^Jb^s6VgK0mZ`JP7fz7-$CZnA$3y7qY`p9mr8;C%MW|5&4 zY3r+6Id{yEPuuku|LO!eUdu<;#EQ;w(qnH6)93*iB!dEvHCe`UIa#prA+g&=vyLae zyIm2W08j@3zhBOhh#Fd<$=WcTO8P~P`DmH)A4tH9aS+S5$>T}0usEiX_oE&z+Ra}F zx5Y0Ly8$5AtLVZZsj4rJH=pt8*&+x3b(7>03#jM?guTV%XEBZTN0Nv3F{OU(#1Dcq za|r%fA6etVT!Y=Ffh$LeR3Xt8kwm3%AJ*cvIh1$|v)t#CBlPiP_2F!Pg$_@L_5UQ% zX{wtrVGWzxiRtyOCqX=r-MOpR*}V_xjXTq{R5? zo&SB?v%FtG@9JT=h3uo5W4l?8>88-#YvGjWtHVzz53V(F{fOD>J~y`d$a1ONBsev^F!e8!yR9^tFLDA(Lhi8pCE^4hW512}$*Z4M9ObXICxe1bsY+v0U z{pxCVRN2oSwHT<$fbweLj2kvN!SShmm^t1fN(jVpY2KkdG>#G|OBX7;zkfG_@N?$O z{Lpg2vNe55ehE}~n=yjt3j+~P`8ta`;`vs!?JxYK_}W0xEASu2 zn+lIeQAgKGVI%UTw4TkbZ-o&B4^vq2;3$QdRvZNf(1jJI9%zJ403kCjj5R1kqKyaA zXjkw#zuv4K%+`FlT}a;@-DJ0}S4#QCY|L16HuP{XImRmJY&!{uVGP4_(;(#aAROgI zk{*t-{o&V26trBJdUr$i^Fhb#4&_+)8j*m=shRaMd-2kr?8`lV^EDMDpve#hhbng3 z1yra8g_xvo-@XkiZYPO$us!eX3L3_1eFQu;DGh_KKX&>M{4_w;f9Mp&uk5TK4ZFFD z1Dn_UimO^J`p9&_@3x}S$9jz(1A-pY!P&3h1HOJbfyZQPd%LC))-D2XSHRf z#^upkNLDz##R}*j=LB(x46a0v>rfA>^_;vsSwg%}?ZoL-2GOg#S}KZ{zd zo-ZaKO*etC8bt0tr)R}gobA9};4v{!N_HkL`|AvbAXdSyK-K!mXvn)SsLGDIvT9gP zpvVH%N`f^uS6nwLNH`wJU_p+L5CqbLM^1HI6osCNf^MW}(85(;&BU37^^LI!E=vJ^ zUIg){tWj{2Eso5#0Gc$~EgO}%6LnhhkwLK?2v(m(6yuqR`%R80aX#^sTr|^CxFO*M z3RB4{%*SGg^WpYw>e&BN{K)JKz(PG*6GqRfUq%RiD<};GRIvqkP%eW!L#4SB1l#<) zq|j1Z1Z8P}dn_oK^{2x{bdvqNx-Be3$6DJvompaECSMVTa%q(|gbXm3&=LN=279k2g#;7Y z-QK+=S`VtLph~l}%Y*Wbako-xN(r+jBa`-fpXw#k*31ig_MsqCs*Pt4$MeYb-=_8l z7YY8V;{i(?6iBm;#x{t?e)SWhqM7iO3nTP>m)>XjGc%dj;X>ob(!ONNHLMLJqz+>` z$jn-T1}E^vd>Z=fK;>qBf>Qm0@wA)ghz?!xQ&UGJJk`!e@$H%hga`QojlB5-;1Z1U ziD5K~TK_}f4u36m?83IxLYr}UObe?X6YxB%xaTH#=l+jufps=Y!$0l)f_;2Ib9z-p zBPS|>oOOShJrLW=y%QInfQO(@iORple>BlQ)=*m8QXpM=Ckd+s*4>n&5KV&_HyO6T z6IjDsR17euMxWzuY3o&+Z@m%8o0M8B2Wm$M4gw|F#QFlBxBD|lU!=9qrrr(2>CDK~R}%uzo@@f7-85e^7<4r^aL(}1 znG|6|wmymhQhxW8&h*6D%lUEYlYDEzpG|tKcx?P5uuhOg5L2!@GV>2uim0<;1Y?q$ zJ>teEUcM&5@MyvfrbEqD{PB8vkDO+q29$(RFU|iuj|MxW2GKj}geP~ld^>4cm{2v5 zZr|&UjX`Ba%pCoS2p0?g(*krK8(S(UDY2>&S&gv4=Fe06wslP!mGs6+wqmKWi`C6z z1vUR`m-Iui~Q9;Z2X%CHXQsV%W~7Qh0P&;Ixa=(YN>`s?iZq< znQlM?BGHOZWlx?#zGajxKL|IB{D(9IHbg<0!{xNafgcmC4+y7tv5PCh)Mt8XjXA7l z{GtD9C@TH|AKOLb06~KpJ?+kyzSQ#hun@WDl`}y1qK*3ntUEm$9^QA9QyutNd|exm z%h2L-`y1odR(r+?RJ4MELsiYWdHMeGr0-PaERTh|W0swDVUs*;99-w+iw~6QxcTol zE>5Zu!U2@RSa{X8(Yw+HPS-HFJ~#fl^fyYZ5e391V#kg>z2=o%!p#1aNk8pnlv35l ziX0F|}QUX%A(J zSun{RqV9h4^%-olih*^u^yNI0D#!XoSNEJd^{#|@2qJ%- z-8mU2to1HZXVX?I;P zk1oftzxB3a8`}*sqxvL1mZ&rdXJ#q?kN%xN2)$52_-kozWsMvAXa3XoSs|fcD*sjo zyegCL{Ezb8$%q6e9gxHB1O<+=N>6@PPHS3QzxRG?-25EWk~aR@_T<0+LzBs*Y$n?| zey_?Np37T%B(y|C`GiS1JTk>-zG*uyT0EN_z=Q3+XA1+i{wVDQDCG zv_#N!I`F^B#`L_B_~2!s0D1;Q8@wK8lNHNgKI!tz4Q7bAv?vMeREjKr8o2$RVySM( zCnF=9(@mfvD-OSLG8Hv4;`{;vGpt&i6`7QoyWO)=UHX}>Jf_)CV+luJT`q0ClgaeweWrP4W>FTnGOzkDq064+Z@Se%Jjt@9FFUqcW|}yk$^^B=;ceG zB~tQEYuX?1G7>jf7OBEP+~!U)q(p?*?D|*=X9T*PUdk;my#mVGjRWBvmMy{oCU zQRyey&7nx8@y%OX`oV>F$F3eVu{C(PD;hcQHO;`vff+Y!pnBKeLW4;SDAAy3uIbaF zd7{dwBCyk=Bl!gc|7*Iy^27fu!TPv;kCMNFW3usok-H>No^!h`7&{%4DwX|I<1_Y* zp;AwVciu{a#_yoH4e#MulVuYDm3po2s6edMJT$Z^F(*%o!cf2p#_I#&@W47D5UryG z+R)+qNgxI1=6aPoi`@RPvQZySwR4yPYDi3@b*xaBgr6rzdC#rpYHKuPcSH7-dVa+e zo=IW|-cZfl<P#;knl%ck3XvxjXn=00-WiMjI zP8_JVS>UV9vplPB1e4}5r}hmn@J0Jzaj9}T-l5e6{c_2U8=!gigg=5dk4dW$ht@_% zMVAm(&-jagYN%+i3}%9r$$5xxE*{7O!5iCmL=2N;O6d2xP@W8|i_5m-42L56-(T9K zuuw>1h{5mk|5ME!iT{x0F)*Bh=5KG)Hf)>FZJFKnyT=dte}VwggiXmfacbaKgZrO@|B2ed><`BW4Ejm}c&P;|U@ zGRR_R`J7FKuD8N}CBN`m%UE)+)+?|6-_;s9V}>FYDFF|KzBg)#a@1POv##MB^z@%! zn%8@7r|37IhQ0XnH*a5_`jzeN+KA@pwyL`4kjA; zX3CUFLl+RY^Sq#|9Y6hQO8n~8Pb#!Ri`0IOUPClT6(mtHa`S=oo{H6EY2v-dG>iRE zpX#5Wo5@z}$QMTBb!b2f!lcn+%T5W;HCPx8E~b_G5icy|wZB;=qI-PL*ZZB$w}Z~> zlrET4EdmfylF#eCVJkA`k1u~!@3NZy8!Od4(Yor)s>j!9^)Ku3E58q)(@JBe@Y(zG z4TF`wz^T5Yqe3f>modu5jF(#nB8Ea02G`x`x4OEeDh#I2KW-$O>iFE9AuY1K9H8!Y zIBXcR<^KBp;bxZ>Dkr840de(lD-+E8*lO^O)cyLv=!i;+N~VIW@XPe;yKKx_(LvLW zkl#qLgMz}doJV;aOHl}T)sz&kq+gV(FCeD;@vmTj1iea@?d*dxGru_4RTJ~wNPyOc zZzby^F#T`U@;JT>Ku|$?wEqTYfziSz1kE@r7{>B1G71W+`6}S4*SE8?vxKdF?;dSs z2qBl24dz;C|g*Pqj1yaca0Szsv4rp3ik2uywdt0N2^Rg(UT&P=;gWY`(Kcp@n*fz*P)V*tvcfmal0;Z8F<~u@n#{sf?5pTl!$=e>w zMLOGywCrIP=hxCp4}Y5dFPbhF4_rTtpNbXSiY7;M{(p46Wmr{F*Dg#+cZYOIH%LoK zi!{=WbV#?Lv?5&s(n^x5buB7KdLW6~pA$E9T?!YAC3e15CeAdMm?na#&t%rsNGFcRX_*g()+9bBZ8(-CE*%Q2=^{G(XHWKMdOYwm0-0v=Nh%PQ2%? z=oC30kzmH(+np#F7CIa7xmwUvRUMz3lSc-v)Mp{H5Y<_%TWidlB1MIDbJL1I4$4a~ z4It6=MYRdlHG`>2cLoX(h4 z*)J_FEG*2;d2RH?{kERkTwjN3`ARAX2>Rpn@yW@=BqVnrkr}E5WKzQ;AjqmZY_u#S zvACXJW`Lxlzw7o9(S>>wFYv5Ci_OP_d%i#$U6`TBRse+DF`;@)gVIQ&kp{mN{`!Rk z)iUx{fEvlTKZAY+kQ4x^;m-}M3zWll59@7W>#MwPg@VV)(>|3Mt>4PDrvRc8-syQ* z3#e#^{7~0>22XNzdE)CC!9dcFnL}9HNn93S_#*X*GdA${6;|C}NzsD?E&U(XL?72W zIzG*9OaSfe*{*?_`J7?O87qdI>YsojEEs}H;c`Kc+q+K{{P5%a+tf!8udcd p2r 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
4oWvG$JCr5pr{t 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 P%8s@=9k^lb#;jrpq diff --git a/docs/images/14_pio_build_v2_cropped.png b/docs/images/14_pio_build_v2_cropped.png deleted file mode 100644 index 7d6cd834bb9618e8641f824156d3db93877299d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62446 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 F`Y&`la{T}R diff --git a/docs/images/15_pio_build_v2_progress.png b/docs/images/15_pio_build_v2_progress.png deleted file mode 100644 index d31d86b69ebac2d31e0ea1323522f8008f5d97b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 126439 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 diff --git a/docs/images/15_pio_build_v2_progress_cropped.png b/docs/images/15_pio_build_v2_progress_cropped.png deleted file mode 100644 index b71c64e7b6665f1d1104dbe56995d31c7a8a4164..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24724 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 WZrLYIO>IcY4O^I?j2T8}Z~p;g|I5Pw diff --git a/docs/images/16_pio_build_ok.png b/docs/images/16_pio_build_ok.png deleted file mode 100644 index eb49e193bf8722911b898f28d3089e84c31dbffb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 123374 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 diff --git a/docs/images/16_pio_build_ok_cropped.png b/docs/images/16_pio_build_ok_cropped.png deleted file mode 100644 index 5d2f96fd78422202c111b41b54a558f3ce59c909..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27188 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%0Ax*5b;1AVw)}h*sJl&0Z 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�}>MAG@ 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 Z9t;21{k34@L5(9`O?90|*oQW+{tNjBF#iAm diff --git a/docs/images/17_run_upload_v2.png b/docs/images/17_run_upload_v2.png deleted file mode 100644 index cff246a7920ac09c1bb248c6b7ec2bbb1dc55f0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 130979 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 diff --git a/docs/images/18_upload_progress.png b/docs/images/18_upload_progress.png deleted file mode 100644 index 7ffb79838864785ec4ad8365960db39808e7e540..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 129410 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%0A>C(PZ&-;8>I=`)qhocC1azmx?^-nPy1pznAR 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 * 4)); if (!audio_frame) { lilka::serial.err("Failed to allocate audio_frame\n"); @@ -180,9 +176,6 @@ int osd_init_sound() { i2s_zero_dma_buffer(esp_i2s::I2S_NUM_0); audio_callback = 0; return OSD_OK; -#endif - - return OSD_INIT_FAILED; } void osd_stopsound() { @@ -225,8 +218,6 @@ void do_audio_frame() { } void osd_setsound(void (*playfunc)(void* buffer, int length)) { -#if LILKA_VERSION == 1 -#elif LILKA_VERSION == 2 audio_callback = playfunc; xTaskCreatePinnedToCore( [](void* arg) { @@ -252,7 +243,6 @@ void osd_setsound(void (*playfunc)(void* buffer, int length)) { &audioTaskHandle, 1 ); -#endif } void osd_getsoundinfo(sndinfo_t* info) { diff --git a/src/apps/tests/scan_i2c/scan_i2c.cpp b/src/apps/tests/scan_i2c/scan_i2c.cpp index dd2bff05..3e017263 100644 --- a/src/apps/tests/scan_i2c/scan_i2c.cpp +++ b/src/apps/tests/scan_i2c/scan_i2c.cpp @@ -9,7 +9,6 @@ ScanI2CApp::ScanI2CApp() : App("I2C Scanner") { } void ScanI2CApp::run() { -#if LILKA_VERSION >= 2 lilka::Canvas buffer(canvas->width(), canvas->height()); buffer.begin(); buffer.fillScreen(0); @@ -51,12 +50,4 @@ void ScanI2CApp::run() { while (!lilka::controller.getState().a.justPressed) { taskYIELD(); } -#else - lilka::Alert alert(K_S_ERROR, K_S_LILKA_V2_OR_HIGHER_REQUIRED); - alert.draw(canvas); - queueDraw(); - while (!alert.isFinished()) { - alert.update(); - } -#endif } diff --git a/src/keira/debug.h b/src/keira/debug.h index 1d1231b1..12222b21 100644 --- a/src/keira/debug.h +++ b/src/keira/debug.h @@ -10,14 +10,14 @@ // So far Keira OS supports various features to provide a bit easier debugging for custom apps. // Most of those come in a form of togglable macro, which you can use together with -// PLATFORMIO_BUILD_FLAGS env variable, to set those options before Keira OS buildage +// FLAGS make variable (KEIRA_BUILD_FLAGS for idf.py), to set those options before Keira OS buildage // example =================================================================== -// PLATFORMIO_BUILD_FLAGS='-DFMANAGER_DEBUG' pio run -t upload +// make FLAGS='-DFMANAGER_DEBUG' build flash // would define macro FMANAGER_DEBUG and build a firmware with it //============================================================================ -// Same thing could be also set directly in platformio.ini recipe file using build_flags option +// Same thing with idf.py directly: idf.py -DKEIRA_BUILD_FLAGS='-DFMANAGER_DEBUG' build // Watchdog service @@ -30,7 +30,7 @@ // default launcher // example =================================================================== -// PLATFORMIO_BUILD_FLAGS='-DKEIRA_DEBUG_APP=FileManagerApp -DKEIRA_DEBUG_APP_PARAMS=\"/sd\"' +// make FLAGS='-DKEIRA_DEBUG_APP=FileManagerApp -DKEIRA_DEBUG_APP_PARAMS=\"/sd\"' // would allow u to autorun FileManagerApp and pass to it path to /sd folder //============================================================================ diff --git a/src/keira/ksystem.cpp b/src/keira/ksystem.cpp index f3e27673..cf007846 100644 --- a/src/keira/ksystem.cpp +++ b/src/keira/ksystem.cpp @@ -42,7 +42,7 @@ ////////////////////////////////////////////////////////////////////////////// // GUIDELINE: external libraries to use <> in includes ////////////////////////////////////////////////////////////////////////////// -// Even though PlatformIO allows us to do everything wrong way, it's still +// Even though the build allows us to do everything wrong way, it's still // a thing for further code reusage and visually shows local/global scopes // of code parts ////////////////////////////////////////////////////////////////////////////// diff --git a/targets.py b/targets.py deleted file mode 100644 index e97d0cf6..00000000 --- a/targets.py +++ /dev/null @@ -1,32 +0,0 @@ -import os -from pathlib import Path - -Import("env") - -def decode_backtrace(*args, **kwargs): - args = env.get('PROGRAM_ARGS') - args = list(filter(None, map(str.strip, ' '.join(args).split(' ')))) - - if not args: - print('No backtrace to decode.\nUsage:\n pio run -e v2 -t decode_backtrace -a "0x11111111:0x22222222 0x33333333:0x44444444 ..."') - return - - # Find bin directory of the toolchain - bin_dir = Path(env.PioPlatform().get_package_dir("toolchain-riscv32-esp")) / "bin" - - # Find the addr2line binary - if os.name == 'nt': - addr2line = next(bin_dir.glob("*-addr2line.exe"), None) - else: - addr2line = next(bin_dir.glob("*-addr2line"), None) - # Get .elf file - src_path = Path(env.subst("$PROGPATH")) - print('Decoding backtrace for', src_path) - - # Execute addr2line - os.system(f"{addr2line} -e {src_path} {' '.join(args)}") - -# Add the custom target to the environment -env.AddCustomTarget( - "decode_backtrace", None, decode_backtrace, "Decode backtrace using addr2line", -) diff --git a/tests/validate_workflow.sh b/tests/validate_workflow.sh index 359b8ecc..97f7008e 100644 --- a/tests/validate_workflow.sh +++ b/tests/validate_workflow.sh @@ -53,7 +53,7 @@ test_language_detection() { echo "" echo "Testing build flag generation:" for lang in $(cat "$REPO_ROOT/languages.txt"); do - echo "Would build with: PLATFORMIO_BUILD_FLAGS=-D$lang" + echo "Would build with: idf.py -DKEIRA_BUILD_FLAGS=-D$lang build" done } diff --git a/wallpaper_216.gif b/wallpaper_216.gif deleted file mode 100644 index b35ef609c9bf08f3fc3fda504790f4f78a590262..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 217593 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%0ANKOJAG_rU%{LcbeKg{YZs#9Kf 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 Date: Sun, 27 Sep 2026 16:40:17 +0300 Subject: [PATCH 2/6] fix: fix using memory for wallpaper --- .github/workflows/firmware.yml | 2 +- .gitignore | 1 + AGENTS.md | 4 ++- CMakeLists.txt | 7 ++++ Makefile | 33 +++++++++++++------ boards/lilka_v2/sdkconfig.defaults | 8 +++-- docs/flashing.rst | 18 +++++++++-- src/apps/launcher/launcher.cpp | 5 +-- src/apps/launcher/wallpaper.cpp | 51 ++++++++++++++++++++++-------- src/apps/launcher/wallpaper.h | 4 +++ 10 files changed, 100 insertions(+), 33 deletions(-) diff --git a/.github/workflows/firmware.yml b/.github/workflows/firmware.yml index 3e53daf7..169dc6d0 100644 --- a/.github/workflows/firmware.yml +++ b/.github/workflows/firmware.yml @@ -93,7 +93,7 @@ jobs: echo "Tag detected - building for all languages" for lang in $(cat languages.txt); do echo "Building for $lang" - build "build/$lang" "_$lang" "-D$lang" + build "build-$lang" "_$lang" "-D$lang" done else echo "Main branch or PR - building for default language only" diff --git a/.gitignore b/.gitignore index 867ef680..f9352454 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ *.cache* compile_commands.json build/ +build-*/ build.log diff --git a/AGENTS.md b/AGENTS.md index 7b2d012b..489942a1 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -34,7 +34,9 @@ - `data/spiffs/` becomes the internal filesystem image (`make flash-fs`); `data/img/` and `data/assets/` are repo-only images and design sources - Bumping the Lilka SDK submodule (`components/lilka/sdk`): also update `LILKA_SDK_VERSION` in `components/lilka/CMakeLists.txt` (configure fails on mismatch) - A board is a `boards//` dir with `board.cmake`, `sdkconfig.defaults` and `partitions.csv`; select it with `make BOARD=` -- sdkconfig is generated in the build dir; persist config changes in `boards//sdkconfig.defaults` +- Build dirs: `build/` (default board, same as plain `idf.py`), `build-/` for others, `

-docker/` for Docker builds — never mix host and Docker builds in one dir +- Local ESP-IDF must be the pinned tag with matching submodules (`git submodule update --init --recursive`) and its own CMake 3.x (`idf_tools.py install cmake`); CMake 4 is rejected at configure time +- sdkconfig is generated in the build dir and is not refreshed from defaults; after changing `boards//sdkconfig.defaults` run `make fullclean` - One-off compile flags: `make FLAGS="-DLANG_EN -DFMANAGER_DEBUG"` (`-DKEIRA_BUILD_FLAGS=...` for `idf.py`) - **v2** (ESP32-S3) is the only supported board; v1 support was removed - `clang-format` and `cppcheck` are enforced in CI — run `make clang-format` and `make cppcheck` before committing diff --git a/CMakeLists.txt b/CMakeLists.txt index 550718ef..08936553 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,6 +10,13 @@ cmake_minimum_required(VERSION 3.16) +# ESP-IDF 4.4 does not configure with CMake 4 (dropped compatibility with its old cmake_minimum_required calls) +if(CMAKE_VERSION VERSION_GREATER_EQUAL 4.0) + message(FATAL_ERROR "CMake ${CMAKE_VERSION} is not supported by ESP-IDF 4.4, use the CMake shipped with it: " + "run '$IDF_PATH/tools/idf_tools.py install cmake', then re-source export.sh " + "(or build with 'make docker-build').") +endif() + set(KEIRA_BOARD "lilka_v2" CACHE STRING "Target board, one of boards/") set(KEIRA_BOARD_DIR "${CMAKE_CURRENT_LIST_DIR}/boards/${KEIRA_BOARD}") if(NOT EXISTS "${KEIRA_BOARD_DIR}/board.cmake") diff --git a/Makefile b/Makefile index 2ee12896..0fffae6d 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,8 @@ BOARD ?= lilka_v2 -BUILD_DIR ?= build/$(BOARD) +# Default board builds in build/, same as plain idf.py; other boards get build-/ +BUILD_DIR ?= $(if $(filter lilka_v2,$(BOARD)),build,build-$(BOARD)) +# Host and container paths differ, so Docker builds can't share a build dir with local ones +DOCKER_BUILD_DIR ?= $(BUILD_DIR)-docker PORT ?= # Extra compile flags for one build, e.g. make FLAGS="-DLANG_EN -DFMANAGER_DEBUG" FLAGS ?= @@ -9,7 +12,7 @@ IDF_VERSION := $(shell sed -n 's/.*KEIRA_IDF_VERSION "\(.*\)".*/\1/p' boards/$(B IDF_IMAGE ?= espressif/idf:v$(IDF_VERSION) DOCKER ?= docker -IDF_PY = idf.py -B $(BUILD_DIR) -DKEIRA_BOARD=$(BOARD) -DKEIRA_BUILD_FLAGS="$(subst $() ,;,$(strip $(FLAGS)))" $(if $(PORT),-p $(PORT)) +IDF_PY = idf.py -B $(1) -DKEIRA_BOARD=$(BOARD) -DKEIRA_BUILD_FLAGS="$(subst $() ,;,$(strip $(FLAGS)))" $(if $(PORT),-p $(PORT)) CPPCHECK ?= cppcheck CLANG_FORMAT ?= $(shell command -v clang-format-20 2>/dev/null || echo clang-format) @@ -27,34 +30,44 @@ submodules: ## Fetch pinned library submodules .PHONY: all build all: build build: ## Build firmware (needs ESP-IDF in the environment) - $(IDF_PY) build + $(call IDF_PY,$(BUILD_DIR)) build .PHONY: docker-build docker-build: ## Build firmware in the pinned ESP-IDF Docker image $(DOCKER) run --rm -u $$(id -u):$$(id -g) -e HOME=/tmp -v "$(CURDIR)":/project -w /project $(IDF_IMAGE) \ - $(IDF_PY) build + $(call IDF_PY,$(DOCKER_BUILD_DIR)) build + +.PHONY: docker-flash +docker-flash: ## Flash the docker-build output (needs only esptool.py locally) + cd $(DOCKER_BUILD_DIR) && esptool.py --chip esp32s3 $(if $(PORT),-p $(PORT)) -b 460800 \ + --before default_reset --after hard_reset write_flash @flash_args + +.PHONY: docker-monitor +docker-monitor: ## Serial monitor for the docker-build output (no local CMake/build needed), PORT is required + python $(IDF_PATH)/tools/idf_monitor.py --port $(PORT) --baud 115200 \ + --toolchain-prefix xtensa-esp32s3-elf- --target esp32s3 $(DOCKER_BUILD_DIR)/keira.elf .PHONY: flash flash: ## Flash bootloader, partition table and firmware - $(IDF_PY) flash + $(call IDF_PY,$(BUILD_DIR)) flash .PHONY: flash-fs flash-fs: ## Flash the SPIFFS image built from data/spiffs/ (overwrites files on the device) - $(IDF_PY) spiffs-flash + $(call IDF_PY,$(BUILD_DIR)) spiffs-flash .PHONY: monitor monitor: ## Serial monitor with backtrace decoding - $(IDF_PY) monitor + $(call IDF_PY,$(BUILD_DIR)) monitor .PHONY: menuconfig menuconfig: ## Edit sdkconfig for this build dir (persist changes in boards/$(BOARD)/sdkconfig.defaults) - $(IDF_PY) menuconfig + $(call IDF_PY,$(BUILD_DIR)) menuconfig .PHONY: clean fullclean clean: ## Remove build outputs - $(IDF_PY) clean + $(call IDF_PY,$(BUILD_DIR)) clean fullclean: ## Remove the whole build dir, including sdkconfig - $(IDF_PY) fullclean + rm -rf $(BUILD_DIR) .PHONY: compile_commands compile_commands: ## Link compile_commands.json from the build dir diff --git a/boards/lilka_v2/sdkconfig.defaults b/boards/lilka_v2/sdkconfig.defaults index 85531250..91bc8d7c 100644 --- a/boards/lilka_v2/sdkconfig.defaults +++ b/boards/lilka_v2/sdkconfig.defaults @@ -1,6 +1,7 @@ # Lilka v2 (ESP32-S3) sdkconfig defaults for ESP-IDF 4.4.7 + arduino-esp32 2.0.17. -# Derived from arduino-esp32 2.0.17's prebuilt esp32s3 sdkconfig (qio_opi variant), the one -# PlatformIO builds linked against, minimized to non-default values. +# Derived from arduino-esp32 2.0.17's prebuilt esp32s3 sdkconfig plus the qio_opi variant +# overrides (octal PSRAM, initialized at boot), the one PlatformIO builds linked against, +# minimized to non-default values. CONFIG_BOOTLOADER_LOG_LEVEL_NONE=y CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y @@ -25,7 +26,8 @@ CONFIG_ESP32S3_DEFAULT_CPU_FREQ_240=y CONFIG_ESP32S3_SPIRAM_SUPPORT=y CONFIG_SPIRAM_MODE_OCT=y CONFIG_SPIRAM_SPEED_80M=y -# CONFIG_SPIRAM_BOOT_INIT is not set +CONFIG_SPIRAM_BOOT_INIT=y +CONFIG_SPIRAM_IGNORE_NOTFOUND=y CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=4096 CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP=y CONFIG_SPIRAM_MALLOC_RESERVE_INTERNAL=0 diff --git a/docs/flashing.rst b/docs/flashing.rst index 56859258..0ee45e52 100644 --- a/docs/flashing.rst +++ b/docs/flashing.rst @@ -29,14 +29,26 @@ Keira збирається за допомогою `ESP-IDF `_ або через розширення **ESP-IDF** для VS Code, обравши версію ``v4.4.7``): + Зібрану в Docker прошивку можна завантажити командою ``make docker-flash PORT=...`` (потрібен лише ``esptool.py``). + + **З локально встановленим ESP-IDF v4.4.7**: .. code-block:: bash - . $HOME/esp/esp-idf/export.sh # шлях до вашого ESP-IDF + git clone -b v4.4.7 --recursive --shallow-submodules https://github.com/espressif/esp-idf ~/esp/esp-idf-v4.4.7 + cd ~/esp/esp-idf-v4.4.7 + ./install.sh esp32s3 + python tools/idf_tools.py install cmake # ESP-IDF 4.4 не працює з CMake 4 + + . ~/esp/esp-idf-v4.4.7/export.sh + cd <шлях до keira> make build - Перша збірка може зайняти деякий час. Результат збірки знаходиться в ``build/lilka_v2/``. + .. warning:: + + Підмодулі ESP-IDF мають відповідати тегу ``v4.4.7``. Якщо ви перемкнули наявний репозиторій ESP-IDF на цей тег, обов'язково виконайте ``git submodule update --init --recursive`` в ньому — інакше збірка використає бібліотеки Wi-Fi/PHY з іншої версії. + + Перша збірка може зайняти деякий час. Результат збірки знаходиться в ``build/`` (для Docker — в ``build-docker/``). .. note:: diff --git a/src/apps/launcher/launcher.cpp b/src/apps/launcher/launcher.cpp index eadedeb7..5c804f24 100644 --- a/src/apps/launcher/launcher.cpp +++ b/src/apps/launcher/launcher.cpp @@ -521,8 +521,9 @@ void LauncherApp::homeScreen(item_t& mainMenu) { ); queueDraw(); - // Wait for the next frame while staying responsive to buttons - TickType_t frameEnd = xTaskGetTickCount() + pdMS_TO_TICKS(delayMs > 0 ? delayMs : 30); + // Wait for the next frame while staying responsive to buttons. + // Frame delay counts from the frame start, so decoding time is not added on top of it + TickType_t frameEnd = now + pdMS_TO_TICKS(delayMs > 0 ? delayMs : 30); bool openMenu = false; do { if (lilka::controller.getState().a.justPressed) { diff --git a/src/apps/launcher/wallpaper.cpp b/src/apps/launcher/wallpaper.cpp index b0f1c9aa..46fd0b4a 100644 --- a/src/apps/launcher/wallpaper.cpp +++ b/src/apps/launcher/wallpaper.cpp @@ -5,6 +5,8 @@ // Delay between redraws of a static (non-animated) wallpaper #define WALLPAPER_STATIC_DELAY_MS 100 +// Bigger GIFs are streamed from the file instead of being loaded into PSRAM +#define WALLPAPER_GIF_MAX_MEMORY_SIZE (4 * 1024 * 1024) Wallpaper::~Wallpaper() { close(); @@ -48,19 +50,24 @@ bool Wallpaper::open(const char* path, int16_t bufferWidth, int16_t bufferHeight bool Wallpaper::openGIF(const char* path) { gif.reset(new AnimatedGIF()); gif->begin(GIF_PALETTE_RGB565_LE); - if (!gif->open( - path, - fileOpen, - fileClose, - [](GIFFILE* f, uint8_t* buf, int32_t len) { - return fileRead(static_cast(f->fHandle), f->iSize, &f->iPos, buf, len); - }, - [](GIFFILE* f, int32_t position) { - fseek(static_cast(f->fHandle), position, SEEK_SET); - return f->iPos = position; - }, - gifDraw - )) { + int32_t gifSize = 0; + gifData = readFile(path, WALLPAPER_GIF_MAX_MEMORY_SIZE, &gifSize); + int opened = gifData != nullptr + ? gif->open(gifData, gifSize, gifDraw) + : gif->open( + path, + fileOpen, + fileClose, + [](GIFFILE* f, uint8_t* buf, int32_t len) { + return fileRead(static_cast(f->fHandle), f->iSize, &f->iPos, buf, len); + }, + [](GIFFILE* f, int32_t position) { + fseek(static_cast(f->fHandle), position, SEEK_SET); + return f->iPos = position; + }, + gifDraw + ); + if (!opened) { if (gif->getLastError() == GIF_TOO_WIDE) { lilka::serial.err("Wallpaper: %s is too wide, max GIF width is %d px", path, MAX_WIDTH); } else { @@ -141,6 +148,10 @@ void Wallpaper::close() { gif->close(); gif.reset(); } + if (gifData != nullptr) { + free(gifData); + gifData = nullptr; + } if (buffer != nullptr) { free(buffer); buffer = nullptr; @@ -183,6 +194,20 @@ void Wallpaper::blit(const uint16_t* pixels, int x, int y, int w, int h, int str } } +uint8_t* Wallpaper::readFile(const char* path, int32_t maxSize, int32_t* size) { + int32_t fileSize = 0; + FILE* file = static_cast(fileOpen(path, &fileSize)); + if (file == nullptr) return nullptr; + uint8_t* data = fileSize > 0 && fileSize <= maxSize ? static_cast(ps_malloc(fileSize)) : nullptr; + if (data != nullptr && fread(data, 1, fileSize, file) != static_cast(fileSize)) { + free(data); + data = nullptr; + } + fclose(file); + *size = fileSize; + return data; +} + void* Wallpaper::fileOpen(const char* path, int32_t* size) { FILE* file = fopen(path, "rb"); if (file == nullptr) return nullptr; diff --git a/src/apps/launcher/wallpaper.h b/src/apps/launcher/wallpaper.h index a38a41e7..2e49b6be 100644 --- a/src/apps/launcher/wallpaper.h +++ b/src/apps/launcher/wallpaper.h @@ -26,6 +26,8 @@ class Wallpaper { // Copies a block of pixels into buffer at image position (x, y), clipping it to buffer bounds void blit(const uint16_t* pixels, int x, int y, int w, int h, int stride); + // Reads whole file into PSRAM, returns nullptr if it is bigger than maxSize or can't be read + static uint8_t* readFile(const char* path, int32_t maxSize, int32_t* size); static void* fileOpen(const char* path, int32_t* size); static void fileClose(void* handle); static int32_t fileRead(FILE* file, int32_t size, int32_t* pos, uint8_t* buf, int32_t len); @@ -35,6 +37,8 @@ class Wallpaper { static void gifFree(void* p); std::unique_ptr gif; + // GIF file contents, decoded from memory to keep the SD card bus free while frames are drawn + uint8_t* gifData = nullptr; uint16_t* buffer = nullptr; int16_t width = 0; int16_t height = 0; From ac98b9eb9b5f15561f3d97df553cb72857e92c73 Mon Sep 17 00:00:00 2001 From: Yevhen Boichuk Date: Sun, 27 Sep 2026 18:26:55 +0300 Subject: [PATCH 3/6] fix: fix display synced --- src/keira/appmanager.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/keira/appmanager.cpp b/src/keira/appmanager.cpp index ccce88ec..97b6e17c 100644 --- a/src/keira/appmanager.cpp +++ b/src/keira/appmanager.cpp @@ -10,6 +10,19 @@ #define MAX_FPS 60 +// Arduino_TFT skips address window commands (CASET/RASET) when the window did not change since the last write. +// The display shares its SPI bus with the SD card, and a command can be lost right after SD transfers. With the +// cache, a single lost RASET leaves every following frame written into a stale window (e.g. a fullscreen app drawn +// 24px lower, over the previous app's area). Invalidating the cache re-sends the window with each frame. +struct DisplayWindowCache : Arduino_TFT { + static void invalidate(Arduino_TFT& tft) { + tft.*(&DisplayWindowCache::_currentX) = 0xFFFF; + tft.*(&DisplayWindowCache::_currentY) = 0xFFFF; + tft.*(&DisplayWindowCache::_currentW) = 0xFFFF; + tft.*(&DisplayWindowCache::_currentH) = 0xFFFF; + } +}; + AppManager::AppManager() { setName(APPMANAGER_NAME); setktStackSize(APPMANAGER_STACK); @@ -90,6 +103,7 @@ void AppManager::run() { // Redraw app if (app->getRedraw()) { + DisplayWindowCache::invalidate(lilka::display); if (app->flags & AppFlags::APP_FLAG_INTERLACED) { lilka::display.drawCanvasInterlaced(app->backCanvas, app->frame % 2); } else { From cd4780797fe657bd8347665ced2e8117bcbad3f4 Mon Sep 17 00:00:00 2001 From: Yevhen Boichuk Date: Sun, 27 Sep 2026 20:58:11 +0300 Subject: [PATCH 4/6] fix: fox usbmsc --- Makefile | 11 +- boards/lilka_v2/sdkconfig.defaults | 7 + src/CMakeLists.txt | 12 +- src/apps/usbdrive/usbdrive.cpp | 425 +++++++----------- src/apps/usbdrive/usbdrive.h | 42 +- src/keira/ksystem.cpp | 5 + src/keira/localizations/lang_en.h | 3 +- src/keira/localizations/lang_uk.h | 4 +- src/keira/usb/usbcomposite.cpp | 667 +++++++++++++++++++++++++++++ src/keira/usb/usbcomposite.h | 133 ++++++ src/keira/usb/usbphy.c | 134 ++++++ src/keira/usb/usbphy.h | 30 ++ 12 files changed, 1194 insertions(+), 279 deletions(-) create mode 100644 src/keira/usb/usbcomposite.cpp create mode 100644 src/keira/usb/usbcomposite.h create mode 100644 src/keira/usb/usbphy.c create mode 100644 src/keira/usb/usbphy.h diff --git a/Makefile b/Makefile index 0fffae6d..a9712b85 100644 --- a/Makefile +++ b/Makefile @@ -38,9 +38,16 @@ docker-build: ## Build firmware in the pinned ESP-IDF Docker image $(call IDF_PY,$(DOCKER_BUILD_DIR)) build .PHONY: docker-flash -docker-flash: ## Flash the docker-build output (needs only esptool.py locally) +docker-flash: ## Flash the docker-build output (needs only esptool.py locally, one that has --after watchdog_reset) + @# While USB Drive is open, the port is Keira's TinyUSB CDC: the reset drops the board into download mode + @# on USB-Serial/JTAG and the port re-enumerates under the same name, which esptool can't follow. + @# So kick it first, wait for the port, then flash. Harmless otherwise + -@esptool.py --chip esp32s3 $(if $(PORT),-p $(PORT)) --before default_reset --after no_reset \ + --connect-attempts 1 read_mac >/dev/null 2>&1; \ + sleep 1; for i in $$(seq 20); do [ -z "$(PORT)" ] || [ -e "$(PORT)" ] && break; sleep 0.25; done + @# A hard reset (RTS) through USB-Serial/JTAG leaves the chip in download mode, the watchdog reset boots the app cd $(DOCKER_BUILD_DIR) && esptool.py --chip esp32s3 $(if $(PORT),-p $(PORT)) -b 460800 \ - --before default_reset --after hard_reset write_flash @flash_args + --before default_reset --after watchdog_reset write_flash @flash_args .PHONY: docker-monitor docker-monitor: ## Serial monitor for the docker-build output (no local CMake/build needed), PORT is required diff --git a/boards/lilka_v2/sdkconfig.defaults b/boards/lilka_v2/sdkconfig.defaults index 91bc8d7c..e92c6613 100644 --- a/boards/lilka_v2/sdkconfig.defaults +++ b/boards/lilka_v2/sdkconfig.defaults @@ -92,3 +92,10 @@ CONFIG_PTHREAD_TASK_STACK_SIZE_DEFAULT=2048 CONFIG_SPI_FLASH_ERASE_YIELD_DURATION_MS=10 CONFIG_SPI_FLASH_ERASE_YIELD_TICKS=2 CONFIG_SPI_FLASH_WRITE_CHUNK_SIZE=4096 +# TinyUSB: only CDC + MSC are used (apps/usbdrive); the other class drivers need callbacks nobody provides +# CONFIG_TINYUSB_HID_ENABLED is not set +# CONFIG_TINYUSB_MIDI_ENABLED is not set +# CONFIG_TINYUSB_VIDEO_ENABLED is not set +# CONFIG_TINYUSB_DFU_RT_ENABLED is not set +# CONFIG_TINYUSB_DFU_ENABLED is not set +# CONFIG_TINYUSB_VENDOR_ENABLED is not set diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 41404a2e..069732d6 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -7,7 +7,17 @@ idf_component_register( REQUIRES # Libraries arduino lilka Arduino_GFX U8g2 ArduinoJson ESPTelnet ESP8266Audio AnimatedGIF JPEGDEC lua nofrendo mJS - SimpleFTPServer qrcode + SimpleFTPServer qrcode arduino_tinyusb # ESP-IDF app_update driver esp_http_client esp_http_server esp_wifi fatfs mbedtls mdns mqtt nvs_flash spiffs vfs ) + +# While the composite CDC+MSC device owns the USB PHY, Serial (HWCDC) output is sent to its CDC port. +# See keira/usb/usbcomposite.cpp +target_link_libraries( + ${COMPONENT_LIB} + INTERFACE + "-Wl,--wrap=_ZN5HWCDC5writeEPKhj" + "-Wl,--wrap=_ZN5HWCDC17availableForWriteEv" + "-Wl,--wrap=_ZN5HWCDC5flushEv" +) diff --git a/src/apps/usbdrive/usbdrive.cpp b/src/apps/usbdrive/usbdrive.cpp index 06f4507a..070e6b90 100644 --- a/src/apps/usbdrive/usbdrive.cpp +++ b/src/apps/usbdrive/usbdrive.cpp @@ -4,174 +4,75 @@ #include #include -#include - -// TinyUSB includes for composite device (CDC + MSC) -#include "USB.h" -#include "USBCDC.h" -#include "USBMSC.h" - -// Global pointers for MSC callbacks -static USBMSC* mscDevice = nullptr; -static bool sdCardReady = false; -static bool driveEjected = false; // Track if host safely ejected the drive -static uint32_t sdCardSectors = 0; -static uint16_t sdCardSectorSize = 512; - -// MSC Callbacks - these are called by TinyUSB -static int32_t onMSCRead(uint32_t lba, uint32_t offset, void* buffer, uint32_t bufsize) { - if (!sdCardReady) return -1; - - uint32_t bytesToRead = bufsize; - uint8_t* buf = static_cast(buffer); - - // Read sectors - uint32_t sectorsToRead = (bytesToRead + sdCardSectorSize - 1) / sdCardSectorSize; - for (uint32_t i = 0; i < sectorsToRead; i++) { - if (!SD.readRAW(buf + i * sdCardSectorSize, lba + i)) { - return -1; - } - } - - return bytesToRead; -} - -static int32_t onMSCWrite(uint32_t lba, uint32_t offset, uint8_t* buffer, uint32_t bufsize) { - if (!sdCardReady) return -1; - - uint32_t bytesToWrite = bufsize; - - // Write sectors - uint32_t sectorsToWrite = (bytesToWrite + sdCardSectorSize - 1) / sdCardSectorSize; - for (uint32_t i = 0; i < sectorsToWrite; i++) { - if (!SD.writeRAW(buffer + i * sdCardSectorSize, lba + i)) { - return -1; - } - } - - return bytesToWrite; -} - -// Called when host wants to eject the drive -static bool onMSCStartStop(uint8_t power_condition, bool start, bool load_eject) { - lilka::serial.log("USB MSC: StartStop power=%d start=%d eject=%d", power_condition, start, load_eject); - - if (load_eject) { - if (!start) { - // Host is ejecting the drive - mark as safely ejected - sdCardReady = false; - driveEjected = true; - lilka::serial.log("USB MSC: Drive safely ejected by host"); - } else { - // Host is loading/mounting the drive - sdCardReady = true; - driveEjected = false; - lilka::serial.log("USB MSC: Drive mounted by host"); - } - } - - return true; -} - -// Called to check if device is ready -static bool onMSCReady() { - return sdCardReady; -} - -// Check if drive was safely ejected -bool USBDriveApp::isDriveEjected() { - return driveEjected; -} - -USBDriveApp::USBDriveApp() : App("USB Drive"), mscInitialized(false) { - setFlags(APP_FLAG_FULLSCREEN); -} - -bool USBDriveApp::initUSBMSC() { - // Check if SD card is available - if (!lilka::fileutils.isSDAvailable()) { - lilka::serial.err("USB MSC: SD card not available"); +#include +#include +#include + +bool SDBlockDevice::begin() { + uint32_t count = SD.numSectors(); + uint16_t size = SD.sectorSize(); + if (count == 0) { + lilka::serial.err("USB MSC: failed to get SD card size"); return false; } - - // Get SD card info - uint64_t cardSize = SD.cardSize(); - if (cardSize == 0) { - lilka::serial.err("USB MSC: Failed to get card size"); - return false; - } - - // Get sector size from SD card (typically 512 bytes, but can vary) // SD cards use 512-byte sectors at the physical level - sdCardSectorSize = SD.sectorSize(); - if (sdCardSectorSize == 0) { - // Fallback to standard sector size if not available - sdCardSectorSize = 512; - lilka::serial.log("USB MSC: Using default sector size: %d", sdCardSectorSize); - } - - sdCardSectors = cardSize / sdCardSectorSize; - sdCardReady = true; - + sectorSize = size ? size : 512; + sectors = count; + pdrv = findDrive(); lilka::serial.log( - "USB MSC: Card size: %llu bytes, sector size: %d, sectors: %lu", cardSize, sdCardSectorSize, sdCardSectors + "USB MSC: SD card %llu bytes, sector size %u, sectors %lu, %s", + static_cast(sectors) * sectorSize, + static_cast(sectorSize), + static_cast(sectors), + pdrv == NO_DRIVE ? "single-sector access" : "multi-sector access" ); + return true; +} - // Create MSC device - mscDevice = new USBMSC(); - if (!mscDevice) { - lilka::serial.err("USB MSC: Failed to create MSC device"); - sdCardReady = false; - return false; +// SD.readRAW()/writeRAW() move one sector per SD command, which makes USB MSC slow (the host reads +// megabytes of FAT on mount). The same driver does multi-sector transfers (CMD18/CMD25) through the +// FatFs diskio layer, but the SD object keeps its drive number private: find it here. Every slot below +// the first free one is registered, and the SD card is the one returning the same sector 0 +uint8_t SDBlockDevice::findDrive() { + BYTE firstFree = FF_VOLUMES; + if (ff_diskio_get_drive(&firstFree) != ESP_OK) firstFree = FF_VOLUMES; + if (sectorSize > sizeof(probe) / 2) return NO_DRIVE; + if (!SD.readRAW(probe, 0)) return NO_DRIVE; + for (BYTE drive = 0; drive < firstFree; drive++) { + if (disk_read(drive, probe + sectorSize, 0, 1) != RES_OK) continue; + if (memcmp(probe, probe + sectorSize, sectorSize) == 0) return drive; } + return NO_DRIVE; +} - // Configure MSC - mscDevice->vendorID("Lilka"); - mscDevice->productID("SD Card"); - mscDevice->productRevision("1.0"); - mscDevice->onRead(onMSCRead); - mscDevice->onWrite(onMSCWrite); - mscDevice->onStartStop(onMSCStartStop); - mscDevice->mediaPresent(true); - - // Begin MSC with sector count and size - if (!mscDevice->begin(sdCardSectors, sdCardSectorSize)) { - lilka::serial.err("USB MSC: Failed to begin MSC"); - delete mscDevice; - mscDevice = nullptr; - sdCardReady = false; - return false; +bool SDBlockDevice::readBlocks(uint32_t lba, uint8_t* dst, uint32_t count) { + if (pdrv != NO_DRIVE) return disk_read(pdrv, dst, lba, count) == RES_OK; + for (uint32_t i = 0; i < count; i++) { + if (!SD.readRAW(dst + i * sectorSize, lba + i)) return false; } + return true; +} - // Configure composite USB device (CDC + MSC) - // CDC is already configured at boot (ARDUINO_USB_CDC_ON_BOOT=1) - // We just need to ensure USB is started - it will enumerate as composite device - USB.productName("Lilka"); - USB.manufacturerName("Lilka Team"); - - if (!USB) { - USB.begin(); +bool SDBlockDevice::writeBlocks(uint32_t lba, const uint8_t* src, uint32_t count) { + if (pdrv != NO_DRIVE) return disk_write(pdrv, src, lba, count) == RES_OK; + for (uint32_t i = 0; i < count; i++) { + // writeRAW doesn't modify the buffer, its signature just lacks const + if (!SD.writeRAW(const_cast(src + i * sectorSize), lba + i)) return false; } - - lilka::serial.log("USB MSC: Composite device (CDC+MSC) initialized"); return true; } -void USBDriveApp::deinitUSBMSC() { - if (mscInitialized) { - sdCardReady = false; +USBDriveApp::USBDriveApp() : App("USB Drive") { + setFlags(APP_FLAG_FULLSCREEN); +} - if (mscDevice) { - mscDevice->end(); - delete mscDevice; - mscDevice = nullptr; +void USBDriveApp::waitForExit() { + while (true) { + lilka::State state = lilka::controller.getState(); + if (state.a.justPressed || state.b.justPressed) { + return; } - - // Note: USB.end() might cause issues, so we just disable the MSC - // The USB stack will be reset on reboot - - mscInitialized = false; - lilka::serial.log("USB MSC: Deinitialized"); + vTaskDelay(50 / portTICK_PERIOD_MS); } } @@ -190,15 +91,8 @@ void USBDriveApp::run() { canvas->setCursor(16, 120); canvas->print(K_S_USB_DRIVE_PRESS_A_TO_EXIT); queueDraw(); - - // Wait for button press - while (true) { - lilka::State state = lilka::controller.getState(); - if (state.a.justPressed || state.b.justPressed) { - return; - } - vTaskDelay(50 / portTICK_PERIOD_MS); - } + waitForExit(); + return; } canvas->fillScreen(lilka::colors::Black); @@ -212,10 +106,9 @@ void USBDriveApp::run() { canvas->print(K_S_USB_DRIVE_CONNECT_USB); queueDraw(); - // Try to initialize USB MSC - mscInitialized = initUSBMSC(); - - if (!mscInitialized) { + // Switch the port to the CDC + MSC device, the serial monitor keeps working on it + if (!sd.begin() || !usb.begin() || !usb.attachDisk(&sd)) { + stop(); // Show error - SD card is OK but USB init failed canvas->fillScreen(lilka::colors::Black); canvas->setTextColor(lilka::colors::Red); @@ -226,126 +119,128 @@ void USBDriveApp::run() { canvas->setCursor(16, 120); canvas->print(K_S_USB_DRIVE_PRESS_A_TO_EXIT); queueDraw(); - - // Wait for button press - while (true) { - lilka::State state = lilka::controller.getState(); - if (state.a.justPressed || state.b.justPressed) { - return; - } - vTaskDelay(50 / portTICK_PERIOD_MS); - } + waitForExit(); + return; } - // Show success screen with instructions + // Redraw only when the status changes: the display shares the SPI bus with the SD card + int shownStatus = -1; while (true) { - canvas->fillScreen(lilka::colors::Black); - - // Title - canvas->setTextColor(lilka::colors::Jasmine); - canvas->setFont(FONT_9x15); - canvas->setCursor(16, 30); - canvas->print(K_S_USB_DRIVE_TITLE); + int status = usb.isEjected() ? 0 : (!usb.isMounted() ? 1 : 2); + if (status != shownStatus) { + shownStatus = status; + drawStatus(status); + } - // USB icon (simple representation) - int centerX = canvas->width() / 2; - int iconY = 60; - canvas->fillRoundRect(centerX - 20, iconY, 40, 50, 5, lilka::colors::Dim_gray); - canvas->fillRect(centerX - 15, iconY + 5, 30, 20, lilka::colors::White); - canvas->fillRect(centerX - 5, iconY + 50, 10, 15, lilka::colors::Dim_gray); + vTaskDelay(50 / portTICK_PERIOD_MS); + lilka::State state = lilka::controller.getState(); + if (!state.a.justPressed) continue; - // Status - show different message if ejected - if (isDriveEjected()) { + // Warn if not safely ejected + if (!usb.isEjected()) { + canvas->fillScreen(lilka::colors::Black); + canvas->setTextColor(lilka::colors::Red); + canvas->setFont(FONT_9x15); + canvas->setCursor(16, 60); + canvas->print(K_S_USB_DRIVE_NOT_EJECTED); + canvas->setTextColor(lilka::colors::White); + canvas->setFont(FONT_6x13); + canvas->setCursor(16, 100); + canvas->print(K_S_USB_DRIVE_EJECT_WARNING); canvas->setTextColor(lilka::colors::Arylide_yellow); canvas->setCursor(16, 140); - canvas->print(K_S_USB_DRIVE_EJECTED); - } else { - canvas->setTextColor(lilka::colors::Mint); - canvas->setCursor(16, 140); - canvas->print(K_S_USB_DRIVE_CONNECTED); - } + canvas->print(K_S_USB_DRIVE_PRESS_START_CONTINUE); + canvas->setCursor(16, 160); + canvas->print(K_S_USB_DRIVE_PRESS_B_CANCEL); + queueDraw(); - // Instructions - canvas->setTextColor(lilka::colors::Light_gray); - canvas->setFont(FONT_6x13); - canvas->setCursor(16, 170); - canvas->print(K_S_USB_DRIVE_PC_INSTRUCTION); + // Wait for confirmation + bool cancelled = false; + while (true) { + lilka::State confirmState = lilka::controller.getState(); + if (confirmState.start.justPressed) { + break; // Continue with exit + } + if (confirmState.b.justPressed) { + cancelled = true; + break; // Cancel - go back to main loop + } + vTaskDelay(50 / portTICK_PERIOD_MS); + } - canvas->setCursor(16, 185); - canvas->print(K_S_USB_DRIVE_SAFE_EJECT); + if (cancelled) { + shownStatus = -1; // Back to the main screen + continue; + } + } - // Exit instruction + canvas->fillScreen(lilka::colors::Black); canvas->setTextColor(lilka::colors::Arylide_yellow); - canvas->setCursor(16, 205); - canvas->print(K_S_USB_DRIVE_PRESS_A_TO_EXIT); - + canvas->setFont(FONT_9x15); + canvas->setCursor(16, 80); + canvas->print(K_S_USB_DRIVE_DISCONNECTING); queueDraw(); - // Check for exit button with delay to prevent flickering - vTaskDelay(50 / portTICK_PERIOD_MS); - lilka::State state = lilka::controller.getState(); - if (state.a.justPressed) { - // Warn if not safely ejected - if (!isDriveEjected()) { - canvas->fillScreen(lilka::colors::Black); - canvas->setTextColor(lilka::colors::Red); - canvas->setFont(FONT_9x15); - canvas->setCursor(16, 60); - canvas->print(K_S_USB_DRIVE_NOT_EJECTED); - canvas->setTextColor(lilka::colors::White); - canvas->setFont(FONT_6x13); - canvas->setCursor(16, 100); - canvas->print(K_S_USB_DRIVE_EJECT_WARNING); - canvas->setTextColor(lilka::colors::Arylide_yellow); - canvas->setCursor(16, 140); - canvas->print(K_S_USB_DRIVE_PRESS_START_CONTINUE); - canvas->setCursor(16, 160); - canvas->print(K_S_USB_DRIVE_PRESS_B_CANCEL); - queueDraw(); + stop(); + return; + } +} - // Wait for confirmation - bool cancelled = false; - while (true) { - lilka::State confirmState = lilka::controller.getState(); - if (confirmState.start.justPressed) { - break; // Continue with exit - } - if (confirmState.b.justPressed) { - cancelled = true; - break; // Cancel - go back to main loop - } - vTaskDelay(50 / portTICK_PERIOD_MS); - } +void USBDriveApp::drawStatus(int status) { + canvas->fillScreen(lilka::colors::Black); - if (cancelled) { - continue; // Cancel - go back to main screen - } - } + // Title + canvas->setTextColor(lilka::colors::Jasmine); + canvas->setFont(FONT_9x15); + canvas->setCursor(16, 30); + canvas->print(K_S_USB_DRIVE_TITLE); + + // USB icon (simple representation) + int centerX = canvas->width() / 2; + int iconY = 60; + canvas->fillRoundRect(centerX - 20, iconY, 40, 50, 5, lilka::colors::Dim_gray); + canvas->fillRect(centerX - 15, iconY + 5, 30, 20, lilka::colors::White); + canvas->fillRect(centerX - 5, iconY + 50, 10, 15, lilka::colors::Dim_gray); + + // Status + canvas->setCursor(16, 140); + if (status == 0) { + canvas->setTextColor(lilka::colors::Arylide_yellow); + canvas->print(K_S_USB_DRIVE_EJECTED); + } else if (status == 1) { + canvas->setTextColor(lilka::colors::Light_gray); + canvas->print(K_S_USB_DRIVE_CONNECT_USB); + } else { + canvas->setTextColor(lilka::colors::Mint); + canvas->print(K_S_USB_DRIVE_CONNECTED); + } - // Show reboot message - USB stack changes require reboot - canvas->fillScreen(lilka::colors::Black); - canvas->setTextColor(lilka::colors::Arylide_yellow); - canvas->setFont(FONT_9x15); - canvas->setCursor(16, 80); - canvas->print(K_S_USB_DRIVE_DISCONNECTING); - canvas->setTextColor(lilka::colors::White); - canvas->setFont(FONT_6x13); - canvas->setCursor(16, 120); - canvas->print(K_S_USB_DRIVE_REBOOT_REQUIRED); - queueDraw(); + // Instructions + canvas->setTextColor(lilka::colors::Light_gray); + canvas->setFont(FONT_6x13); + canvas->setCursor(16, 170); + canvas->print(K_S_USB_DRIVE_PC_INSTRUCTION); - deinitUSBMSC(); - vTaskDelay(2000 / portTICK_PERIOD_MS); + canvas->setCursor(16, 185); + canvas->print(K_S_USB_DRIVE_SAFE_EJECT); - // Reboot the device - ESP.restart(); - return; - } + // Exit instruction + canvas->setTextColor(lilka::colors::Arylide_yellow); + canvas->setCursor(16, 205); + canvas->print(K_S_USB_DRIVE_PRESS_A_TO_EXIT); - vTaskDelay(100 / portTICK_PERIOD_MS); - } + queueDraw(); +} + +// Give the port back to USB-Serial/JTAG and let Keira see what the host changed +void USBDriveApp::stop() { + if (!usb.isActive()) return; + usb.end(); + // The host wrote to the card behind FATFS's back, its cached state is stale: remount + SD.end(); + lilka::fileutils.initSD(); } void USBDriveApp::onExit() { - deinitUSBMSC(); + stop(); } diff --git a/src/apps/usbdrive/usbdrive.h b/src/apps/usbdrive/usbdrive.h index 8cdc2719..cbb35cde 100644 --- a/src/apps/usbdrive/usbdrive.h +++ b/src/apps/usbdrive/usbdrive.h @@ -1,10 +1,37 @@ #pragma once #include "keira/app.h" +#include "keira/usb/usbcomposite.h" -/// USB Mass Storage Class app that exposes SD card to PC via USB. -/// Creates a composite USB device (CDC + MSC) so serial still works. -/// When active, the SD card is accessible from PC as a removable drive. +/// Raw sector access to the SD card for USB MSC. +class SDBlockDevice : public USBBlockDevice { +public: + bool begin(); + + uint32_t blockCount() override { + return sectors; + } + uint16_t blockSize() override { + return sectorSize; + } + bool readBlocks(uint32_t lba, uint8_t* dst, uint32_t count) override; + bool writeBlocks(uint32_t lba, const uint8_t* src, uint32_t count) override; + +private: + static constexpr uint8_t NO_DRIVE = 0xFF; + + uint8_t findDrive(); + + uint32_t sectors = 0; + uint16_t sectorSize = 512; + // FatFs physical drive of the SD card, NO_DRIVE: fall back to SD.readRAW()/writeRAW() + uint8_t pdrv = NO_DRIVE; + uint8_t probe[1024] = {}; +}; + +/// Exposes the SD card to PC as a removable drive. +/// While open, USB runs as a composite device (CDC + MSC), so the serial monitor keeps working. +/// On exit the port goes back to USB-Serial/JTAG and the SD card is remounted, no reboot needed. class USBDriveApp : public App { public: USBDriveApp(); @@ -13,9 +40,10 @@ class USBDriveApp : public App { void run() override; void onExit() override; - bool initUSBMSC(); - void deinitUSBMSC(); - bool isDriveEjected(); + void waitForExit(); + void drawStatus(int status); + void stop(); - bool mscInitialized; + SDBlockDevice sd; + USBComposite usb; }; diff --git a/src/keira/ksystem.cpp b/src/keira/ksystem.cpp index cf007846..29b25723 100644 --- a/src/keira/ksystem.cpp +++ b/src/keira/ksystem.cpp @@ -3,6 +3,7 @@ // Boot: #include #include +#include "keira/usb/usbphy.h" // Services: #ifdef KEIRA_WATCHDOG @@ -211,6 +212,10 @@ void KeiraSystem::showStartupScreen() { // Prepare system to launch void KeiraSystem::setup() { + // A crash while USB Drive was open leaves the USB PHY on USB-OTG (it survives resets): take it back, + // or there's no serial port + if (usb_phy_is_otg()) usb_phy_switch_to_serial_jtag(); + // Init Hardware lilka::begin(); diff --git a/src/keira/localizations/lang_en.h b/src/keira/localizations/lang_en.h index 1112bb22..361066b2 100644 --- a/src/keira/localizations/lang_en.h +++ b/src/keira/localizations/lang_en.h @@ -401,7 +401,7 @@ // apps/usbdrive/usbdrive.cpp ///////////////////////////////////////////////////////////////////////// #define K_S_USB_DRIVE_TITLE "USB Drive" #define K_S_USB_DRIVE_EXPERIMENTAL_TITLE "Warning" -#define K_S_USB_DRIVE_EXPERIMENTAL_WARNING "Experimental feature.\nSerial will be disabled.\n\n[START] - OK [A] - Cancel" +#define K_S_USB_DRIVE_EXPERIMENTAL_WARNING "Experimental feature.\nSerial port reconnects\nwhile the drive is on.\n\n[START] - OK [A] - Cancel" #define K_S_USB_DRIVE_INITIALIZING "Initializing USB..." #define K_S_USB_DRIVE_INIT_ERROR "USB initialization error" #define K_S_USB_DRIVE_NO_SD "SD card not available" @@ -412,7 +412,6 @@ #define K_S_USB_DRIVE_SAFE_EJECT "Safely eject before exit" #define K_S_USB_DRIVE_PRESS_A_TO_EXIT "[A] - exit" #define K_S_USB_DRIVE_DISCONNECTING "Disconnecting..." -#define K_S_USB_DRIVE_REBOOT_REQUIRED "Device will reboot..." #define K_S_USB_DRIVE_NOT_EJECTED "Not safely ejected!" #define K_S_USB_DRIVE_EJECT_WARNING "Data may be corrupted" #define K_S_USB_DRIVE_PRESS_START_CONTINUE "[START] - continue" diff --git a/src/keira/localizations/lang_uk.h b/src/keira/localizations/lang_uk.h index a7f0bfc7..cfe30f2f 100644 --- a/src/keira/localizations/lang_uk.h +++ b/src/keira/localizations/lang_uk.h @@ -393,7 +393,8 @@ #define K_S_USB_DRIVE_TITLE "USB-накопичувач" #define K_S_USB_DRIVE_EXPERIMENTAL_TITLE "Увага" #define K_S_USB_DRIVE_EXPERIMENTAL_WARNING "Експериментальна функція.\n" \ - "Serial буде вимкнено.\n\n" \ + "Serial-порт перепідключиться\n" \ + "на час роботи накопичувача.\n\n" \ "[START] - OK [A] - Скасувати" #define K_S_USB_DRIVE_INITIALIZING "Ініціалізація USB..." #define K_S_USB_DRIVE_INIT_ERROR "Помилка ініціалізації USB" @@ -405,7 +406,6 @@ #define K_S_USB_DRIVE_SAFE_EJECT "Вийміть диск перед виходом" #define K_S_USB_DRIVE_PRESS_A_TO_EXIT "[A] - вихід" #define K_S_USB_DRIVE_DISCONNECTING "Від'єднання..." -#define K_S_USB_DRIVE_REBOOT_REQUIRED "Пристрій перезавантажиться..." #define K_S_USB_DRIVE_NOT_EJECTED "Не вилучено безпечно!" #define K_S_USB_DRIVE_EJECT_WARNING "Дані можуть бути пошкоджені" #define K_S_USB_DRIVE_PRESS_START_CONTINUE "[START] - продовжити" diff --git a/src/keira/usb/usbcomposite.cpp b/src/keira/usb/usbcomposite.cpp new file mode 100644 index 00000000..2c489e01 --- /dev/null +++ b/src/keira/usb/usbcomposite.cpp @@ -0,0 +1,667 @@ +#include "usbcomposite.h" + +#include + +#include +#include +#include + +#include "tusb.h" +#include "device/dcd.h" +#include "usbphy.h" + +#include +#include "keira/utils/acquire.h" + +// TinyUSB callbacks are global C functions, they reach the device through this pointer +static USBComposite* activeDevice = nullptr; + +////////////////////////////////////////////////////////////////////////////// +// Descriptors +////////////////////////////////////////////////////////////////////////////// + +static constexpr uint16_t DEVICE_VID = 0x303A; // Espressif +static constexpr uint16_t DEVICE_PID = 0x0002; // Same as arduino-esp32 TinyUSB default + +enum { + ITF_CDC = 0, + ITF_CDC_DATA, + ITF_MSC, + ITF_TOTAL, +}; + +enum { + STR_LANGUAGE = 0, + STR_MANUFACTURER, + STR_PRODUCT, + STR_CDC, + STR_MSC, +}; + +static constexpr uint8_t EP_CDC_NOTIF = 0x81; +static constexpr uint8_t EP_CDC_OUT = 0x02; +static constexpr uint8_t EP_CDC_IN = 0x82; +static constexpr uint8_t EP_MSC_OUT = 0x03; +static constexpr uint8_t EP_MSC_IN = 0x83; +static constexpr uint16_t EP_SIZE = 64; // Full speed bulk + +static constexpr uint16_t CONFIG_TOTAL_LEN = TUD_CONFIG_DESC_LEN + TUD_CDC_DESC_LEN + TUD_MSC_DESC_LEN; + +static const tusb_desc_device_t deviceDescriptor = { + .bLength = sizeof(tusb_desc_device_t), + .bDescriptorType = TUSB_DESC_DEVICE, + .bcdUSB = 0x0200, + // IAD is required for a composite device with CDC + .bDeviceClass = TUSB_CLASS_MISC, + .bDeviceSubClass = MISC_SUBCLASS_COMMON, + .bDeviceProtocol = MISC_PROTOCOL_IAD, + .bMaxPacketSize0 = CFG_TUD_ENDPOINT0_SIZE, + .idVendor = DEVICE_VID, + .idProduct = DEVICE_PID, + .bcdDevice = 0x0100, + .iManufacturer = STR_MANUFACTURER, + .iProduct = STR_PRODUCT, + // No serial number: macOS then names the port after its physical location, same as USB-Serial/JTAG + // (/dev/cu.usbmodem), so one port path works for monitor, reset and flashing + .iSerialNumber = 0, + .bNumConfigurations = 1, +}; + +static const uint8_t configDescriptor[] = { + TUD_CONFIG_DESCRIPTOR(1, ITF_TOTAL, 0, CONFIG_TOTAL_LEN, 0, 500), + TUD_CDC_DESCRIPTOR(ITF_CDC, STR_CDC, EP_CDC_NOTIF, 8, EP_CDC_OUT, EP_CDC_IN, EP_SIZE), + TUD_MSC_DESCRIPTOR(ITF_MSC, STR_MSC, EP_MSC_OUT, EP_MSC_IN, EP_SIZE), +}; + +extern "C" uint8_t const* tud_descriptor_device_cb(void) { + return reinterpret_cast(&deviceDescriptor); +} + +extern "C" uint8_t const* tud_descriptor_configuration_cb(uint8_t index) { + return configDescriptor; +} + +extern "C" uint16_t const* tud_descriptor_string_cb(uint8_t index, uint16_t langid) { + // Must stay valid after return, TinyUSB sends it asynchronously + static uint16_t descriptor[32]; + const char* str; + size_t len; + + if (index == STR_LANGUAGE) { + descriptor[1] = 0x0409; // English + len = 1; + } else { + switch (index) { + case STR_MANUFACTURER: + str = "Lilka"; + break; + case STR_PRODUCT: + str = "Lilka"; + break; + case STR_CDC: + str = "Lilka Serial"; + break; + case STR_MSC: + str = "Lilka SD Card"; + break; + default: + return nullptr; + } + len = strnlen(str, sizeof(descriptor) / sizeof(descriptor[0]) - 1); + for (size_t i = 0; i < len; i++) { + descriptor[1 + i] = str[i]; + } + } + + descriptor[0] = (TUSB_DESC_STRING << 8) | (2 * len + 2); + return descriptor; +} + +////////////////////////////////////////////////////////////////////////////// +// TinyUSB callbacks +////////////////////////////////////////////////////////////////////////////// + +static void copyPadded(uint8_t* dst, size_t size, const char* src) { + memset(dst, ' ', size); + memcpy(dst, src, strnlen(src, size)); +} + +extern "C" void tud_msc_inquiry_cb(uint8_t lun, uint8_t vendor_id[8], uint8_t product_id[16], uint8_t product_rev[4]) { + copyPadded(vendor_id, 8, "Lilka"); + copyPadded(product_id, 16, "SD Card"); + copyPadded(product_rev, 4, "1.0"); +} + +extern "C" bool tud_msc_test_unit_ready_cb(uint8_t lun) { + USBComposite* usb = activeDevice; + if (!usb) { + tud_msc_set_sense(lun, SCSI_SENSE_NOT_READY, 0x3A, 0x00); + return false; + } + return usb->mscReady(lun); +} + +extern "C" void tud_msc_capacity_cb(uint8_t lun, uint32_t* block_count, uint16_t* block_size) { + USBComposite* usb = activeDevice; + if (!usb) { + *block_count = 0; + *block_size = 512; + return; + } + usb->mscCapacity(block_count, block_size); +} + +extern "C" bool tud_msc_start_stop_cb(uint8_t lun, uint8_t power_condition, bool start, bool load_eject) { + USBComposite* usb = activeDevice; + if (usb) usb->mscStartStop(start, load_eject); + return true; +} + +extern "C" int32_t tud_msc_read10_cb(uint8_t lun, uint32_t lba, uint32_t offset, void* buffer, uint32_t bufsize) { + USBComposite* usb = activeDevice; + return usb ? usb->mscRead(lba, offset, buffer, bufsize) : -1; +} + +// Signature is fixed by TinyUSB +// cppcheck-suppress constParameterPointer +extern "C" int32_t tud_msc_write10_cb(uint8_t lun, uint32_t lba, uint32_t offset, uint8_t* buffer, uint32_t bufsize) { + USBComposite* usb = activeDevice; + return usb ? usb->mscWrite(lba, offset, buffer, bufsize) : -1; +} + +extern "C" int32_t tud_msc_scsi_cb(uint8_t lun, uint8_t const scsi_cmd[16], void* buffer, uint16_t bufsize) { + switch (scsi_cmd[0]) { + case SCSI_CMD_PREVENT_ALLOW_MEDIUM_REMOVAL: + // Nothing to lock, accept it + return 0; + default: + // Invalid command operation code + tud_msc_set_sense(lun, SCSI_SENSE_ILLEGAL_REQUEST, 0x20, 0x00); + return -1; + } +} + +// Bus event counters, for diagnostics +static volatile uint32_t mountCount = 0; +static volatile uint32_t umountCount = 0; +static volatile uint32_t suspendCount = 0; +static volatile uint32_t resumeCount = 0; + +extern "C" void tud_mount_cb(void) { + mountCount = mountCount + 1; +} + +extern "C" void tud_umount_cb(void) { + umountCount = umountCount + 1; + USBComposite* usb = activeDevice; + if (usb) usb->cdcHostGone(); +} + +extern "C" void tud_suspend_cb(bool remote_wakeup_en) { + suspendCount = suspendCount + 1; +} + +extern "C" void tud_resume_cb(void) { + resumeCount = resumeCount + 1; +} + +extern "C" void tud_cdc_line_state_cb(uint8_t itf, bool dtr, bool rts) { + USBComposite* usb = activeDevice; + if (usb) usb->cdcLineState(dtr, rts); +} + +extern "C" void tud_cdc_line_coding_cb(uint8_t itf, cdc_line_coding_t const* p_line_coding) { + USBComposite* usb = activeDevice; + if (usb) usb->cdcLineCoding(p_line_coding->bit_rate); +} + +////////////////////////////////////////////////////////////////////////////// +// Serial forwarding +////////////////////////////////////////////////////////////////////////////// +// `Serial` is HWCDC (USB-Serial/JTAG). While the composite device owns the PHY, +// HWCDC::write(const uint8_t*, size_t) is redirected to the CDC-ACM port, and +// availableForWrite()/flush() stop looking at the USB-Serial/JTAG ring buffer: it's stuck +// once its host is gone, and lilka::serial spins forever when availableForWrite() is 0. +// Enabled with -Wl,--wrap=... in src/CMakeLists.txt. + +extern "C" size_t __real__ZN5HWCDC5writeEPKhj(void* self, const uint8_t* buffer, size_t size); + +extern "C" size_t __wrap__ZN5HWCDC5writeEPKhj(void* self, const uint8_t* buffer, size_t size) { + USBComposite* usb = activeDevice; + if (usb && usb->isActive()) { + return usb->writeSerial(buffer, size); + } + return __real__ZN5HWCDC5writeEPKhj(self, buffer, size); +} + +extern "C" int __real__ZN5HWCDC17availableForWriteEv(void* self); + +extern "C" int __wrap__ZN5HWCDC17availableForWriteEv(void* self) { + const USBComposite* usb = activeDevice; + if (usb && usb->isActive()) { + // writeSerial() never blocks for long and takes any size + return 4096; + } + return __real__ZN5HWCDC17availableForWriteEv(self); +} + +extern "C" void __real__ZN5HWCDC5flushEv(void* self); + +extern "C" void __wrap__ZN5HWCDC5flushEv(void* self) { + const USBComposite* usb = activeDevice; + if (usb && usb->isActive()) return; + __real__ZN5HWCDC5flushEv(self); +} + +// Keeps the boot log and anything written while no monitor is attached +static constexpr size_t BACKLOG_SIZE = 16 * 1024; +// Terminals (pyserial, idf_monitor) raise DTR while opening the port and flush their input right after, +// so anything sent in that moment is lost. Hold output back for a bit after DTR goes up +static constexpr TickType_t SERIAL_OPEN_GRACE = pdMS_TO_TICKS(200); +// Don't stall the writer for long if the host stops reading +static constexpr TickType_t SERIAL_WRITE_TIMEOUT = pdMS_TO_TICKS(50); + +void USBComposite::backlogAppend(const uint8_t* data, size_t size) { + if (!backlog) return; + // Ring buffer, the oldest output is overwritten + for (size_t i = 0; i < size; i++) { + backlog[backlogHead] = data[i]; + backlogHead = (backlogHead + 1) % BACKLOG_SIZE; + if (backlogLen < BACKLOG_SIZE) backlogLen++; + } +} + +// Non-blocking: sends as much of the backlog as the CDC FIFO takes right now +void USBComposite::backlogDrain() { + while (backlogLen > 0) { + uint32_t available = tud_cdc_write_available(); + if (available == 0) break; + size_t tail = (backlogHead + BACKLOG_SIZE - backlogLen) % BACKLOG_SIZE; + size_t chunk = backlogLen; + if (chunk > BACKLOG_SIZE - tail) chunk = BACKLOG_SIZE - tail; + if (chunk > available) chunk = available; + uint32_t written = tud_cdc_write(backlog + tail, chunk); + if (written == 0) break; + backlogLen -= written; + } + tud_cdc_write_flush(); +} + +// A host "listens" once it has opened the port: DTR up, or at least line coding/state set since the device +// was mounted. idf_monitor keeps DTR low on purpose (it would reset UART boards), so DTR alone isn't enough. +// There's no close notification without DTR, so after such a tool exits output just goes nowhere, as on a UART +bool USBComposite::serialReady() const { + return tud_mounted() && (tud_cdc_connected() || hostOpened) && + xTaskGetTickCount() - openedSince > SERIAL_OPEN_GRACE; +} + +void USBComposite::cdcHostOpened() { + if (!hostOpened) openedSince = xTaskGetTickCount(); + hostOpened = true; +} + +void USBComposite::cdcHostGone() { + hostOpened = false; + serialStalled = false; +} + +size_t USBComposite::writeSerial(const uint8_t* data, size_t size) { + Acquire lock(serialMutex); + + // Everything goes through the backlog, so older output is always sent first + backlogAppend(data, size); + if (!serialReady() || serialStalled) return size; + + TickType_t lastProgress = xTaskGetTickCount(); + size_t lastLen = backlogLen; + while (backlogLen > 0) { + backlogDrain(); + if (backlogLen == 0) break; + if (backlogLen != lastLen) { + lastLen = backlogLen; + lastProgress = xTaskGetTickCount(); + } else if (xTaskGetTickCount() - lastProgress > SERIAL_WRITE_TIMEOUT) { + // Host stopped reading: stop waiting on every write, the USB task picks it up once it moves again + serialStalled = true; + break; + } + vTaskDelay(1); + } + return size; +} + +////////////////////////////////////////////////////////////////////////////// +// Download mode reset +////////////////////////////////////////////////////////////////////////////// + +// Set right before a restart into download mode, read by the shutdown handler +static volatile bool downloadRestart = false; + +// esp_restart() resets only the CPUs, the PHY selection (RTC domain) survives: hand the port back +// to USB-Serial/JTAG, so the next boot has its serial port +static void onRestart() { + // For download mode this is the second switch, right before the ROM starts: without it the ROM's + // port never showed up + if (downloadRestart || usb_phy_is_otg()) usb_phy_switch_to_serial_jtag(); +} + +void USBComposite::rebootToDownloadMode() { + // ROM download mode talks over USB-Serial/JTAG, give it the PHY back first + tud_disconnect(); + vTaskDelay(pdMS_TO_TICKS(100)); + usb_phy_switch_to_serial_jtag(); + downloadRestart = true; + REG_WRITE(RTC_CNTL_OPTION1_REG, RTC_CNTL_FORCE_DOWNLOAD_BOOT); + esp_restart(); +} + +// Reboot to download mode on esptool's reset sequence. Modeled on the auto-reset circuit of UART boards +// (RTS pulls EN, DTR pulls IO0), so both the classic (0,1)->(1,1)->(1,0)->(0,0) and the tight +// (0,1)->(1,0)->(0,0) (DTR,RTS) sequences match. A lone RTS pulse deliberately does nothing: macOS pulses +// RTS whenever a port is opened, and since the port re-enumerates on every reboot a monitor would +// reset the board on each reconnect, forever +void USBComposite::cdcLineState(bool dtr, bool rts) { + cdcHostOpened(); + if (dtr == lineDtr && rts == lineRts) return; + if (dtr && !lineDtr) openedSince = xTaskGetTickCount(); + lineDtr = dtr; + lineRts = rts; + + if (rts && !dtr) { + // EN low: "held in reset" + resetStep = 1; + } else if (resetStep == 0 || (dtr && rts)) { + // Not in a reset sequence, or both asserted (no change on real boards) + } else if (dtr) { + // EN released while IO0 is low: boot to download mode once the host lets go + resetStep = 2; + } else { + // Both released + if (resetStep == 2) rebootToDownloadMode(); + resetStep = 0; + } +} + +void USBComposite::cdcLineCoding(uint32_t baudRate) { + cdcHostOpened(); + // "1200 baud touch", used by Arduino IDE and friends + if (baudRate == 1200) rebootToDownloadMode(); +} + +////////////////////////////////////////////////////////////////////////////// +// Mass storage +////////////////////////////////////////////////////////////////////////////// + +bool USBComposite::attachDisk(USBBlockDevice* blockDevice) { + Acquire lock(diskMutex); + if (disk) return false; + disk = blockDevice; + readAheadState = READ_AHEAD_IDLE; + ejected = false; + // Report "medium may have changed" once, so the host rereads it + mediumChanged = true; + lilka::serial.log("USB MSC: disk attached"); + return true; +} + +void USBComposite::detachDisk() { + Acquire lock(diskMutex); + if (!disk) return; + disk = nullptr; + readAheadState = READ_AHEAD_IDLE; + ejected = false; + lilka::serial.log("USB MSC: disk detached"); +} + +bool USBComposite::mscReady(uint8_t lun) { + Acquire lock(diskMutex); + if (!disk || ejected) { + // Medium not present + tud_msc_set_sense(lun, SCSI_SENSE_NOT_READY, 0x3A, 0x00); + return false; + } + if (mediumChanged) { + // Not ready to ready change, medium may have changed + mediumChanged = false; + tud_msc_set_sense(lun, SCSI_SENSE_UNIT_ATTENTION, 0x28, 0x00); + return false; + } + return true; +} + +void USBComposite::mscCapacity(uint32_t* blockCount, uint16_t* blockSize) { + Acquire lock(diskMutex); + *blockCount = disk ? disk->blockCount() : 0; + *blockSize = disk ? disk->blockSize() : 512; +} + +void USBComposite::mscStartStop(bool start, bool loadEject) { + if (!loadEject) return; + Acquire lock(diskMutex); + if (!disk) return; + ejected = !start; + lilka::serial.log("USB MSC: disk %s by host", start ? "loaded" : "ejected"); +} + +// Read-ahead: MSC handles one chunk at a time (read from the disk, then send it), and hosts read +// sequentially. So right after a chunk is read, the next one is fetched by readAheadTask while USB +// sends this one. Doubles as a check of the SD card being the slow side (SPI + software CRC per block) + +static_assert(CFG_TUD_MSC_BUFSIZE <= 4096, "MSC chunks must fit the read-ahead buffer"); + +void USBComposite::readAheadTask(void* arg) { + auto* self = static_cast(arg); + while (true) { + ulTaskNotifyTake(pdTRUE, portMAX_DELAY); + { + Acquire lock(self->diskMutex); + // Attach/detach reset the state under this lock: don't mark stale data as ready + if (self->readAheadState == READ_AHEAD_BUSY) { + bool ok = + self->disk && self->disk->readBlocks(self->readAheadLba, self->readAhead, self->readAheadCount); + self->readAheadState = ok ? READ_AHEAD_READY : READ_AHEAD_IDLE; + } + } + xSemaphoreGive(self->readAheadDone); + } +} + +// Only the USB task starts and waits for read-aheads +void USBComposite::readAheadWait() { + if (!readAheadPending) return; + xSemaphoreTake(readAheadDone, portMAX_DELAY); + readAheadPending = false; +} + +int32_t USBComposite::mscRead(uint32_t lba, uint32_t offset, void* buffer, uint32_t size) { + // A read-ahead in flight holds the disk, let it finish first + readAheadWait(); + + Acquire lock(diskMutex); + if (!disk || ejected) return -1; + + // TinyUSB asks for whole blocks as long as CFG_TUD_MSC_BUFSIZE is a multiple of the block size + uint16_t blockSize = disk->blockSize(); + if (offset != 0 || size % blockSize != 0) return -1; + uint32_t count = size / blockSize; + + if (readAheadState == READ_AHEAD_READY && readAheadLba == lba && readAheadCount == count) { + memcpy(buffer, readAhead, size); + } else if (!disk->readBlocks(lba, static_cast(buffer), count)) { + readAheadState = READ_AHEAD_IDLE; + return -1; + } + readAheadState = READ_AHEAD_IDLE; + + // Fetch the next chunk while this one goes out; the task starts once the lock is released + if (readAheadTaskHandle && size <= READ_AHEAD_SIZE && lba + 2 * count <= disk->blockCount()) { + readAheadLba = lba + count; + readAheadCount = count; + readAheadState = READ_AHEAD_BUSY; + readAheadPending = true; + xTaskNotifyGive(readAheadTaskHandle); + } + return static_cast(size); +} + +int32_t USBComposite::mscWrite(uint32_t lba, uint32_t offset, const uint8_t* buffer, uint32_t size) { + readAheadWait(); + Acquire lock(diskMutex); + // Writes go straight to the disk, drop read-ahead data that may be outdated now + readAheadState = READ_AHEAD_IDLE; + if (!disk || ejected) return -1; + + uint16_t blockSize = disk->blockSize(); + if (offset != 0 || size % blockSize != 0) return -1; + + if (!disk->writeBlocks(lba, buffer, size / blockSize)) return -1; + return static_cast(size); +} + +////////////////////////////////////////////////////////////////////////////// +// Lifecycle +////////////////////////////////////////////////////////////////////////////// + +USBComposite::~USBComposite() { + end(); + if (readAheadTaskHandle) vTaskDelete(readAheadTaskHandle); + free(readAhead); + vSemaphoreDelete(readAheadDone); + free(backlog); + vSemaphoreDelete(diskMutex); + vSemaphoreDelete(serialMutex); +} + +bool USBComposite::begin() { + if (active || activeDevice) { + lilka::serial.err("USB: composite device is already active"); + return false; + } + + if (!backlog) { + backlog = static_cast(heap_caps_malloc(BACKLOG_SIZE, MALLOC_CAP_SPIRAM)); + if (!backlog) backlog = static_cast(malloc(BACKLOG_SIZE)); + if (!backlog) { + lilka::serial.err("USB: no memory for the serial backlog"); + activeDevice = nullptr; + return false; + } + } + if (!readAheadTaskHandle) { + readAhead = static_cast(malloc(READ_AHEAD_SIZE)); + // Without it reads just aren't overlapped + if (readAhead) xTaskCreate(readAheadTask, "usb_msc_ra", 4096, this, 1, &readAheadTaskHandle); + } + backlogHead = 0; + backlogLen = 0; + resetStep = 0; + hostOpened = false; + serialStalled = false; + stopRequested = false; + activeDevice = this; + + bool firstStart = !tusb_inited(); + if (firstStart) { + // esp_restart() keeps the PHY on USB-OTG (the selection lives in the RTC domain) but resets only + // the CPUs: detach on the way down, so the host notices the reboot at once + esp_register_shutdown_handler(onRestart); + } + + // From here on USB-Serial/JTAG is gone, the log continues on the CDC port + lilka::serial.log("USB: switching PHY to USB-OTG (CDC + MSC)"); + vTaskDelay(pdMS_TO_TICKS(50)); // Let lilka::serial flush the line above + usb_phy_switch_to_otg(); + + if (firstStart) { + if (!tusb_init()) { + usb_phy_switch_to_serial_jtag(); + activeDevice = nullptr; + lilka::serial.err("USB: TinyUSB init failed"); + return false; + } + } else { + // Restarted after end(): stack and controller are still set up, just reconnect + dcd_int_enable(0); + tud_connect(); + } + + if (xTaskCreate(usbTask, "usbd", 4096, this, 2, &taskHandle) != pdPASS) { + taskHandle = nullptr; + tud_disconnect(); + dcd_int_disable(0); + usb_phy_switch_to_serial_jtag(); + activeDevice = nullptr; + lilka::serial.err("USB: failed to create USB task"); + return false; + } + + startTick = xTaskGetTickCount(); + active = true; + lilka::serial.log("USB: composite device started"); + return true; +} + +void USBComposite::end() { + if (!active) return; + + detachDisk(); + + { + // Stop forwarding Serial first so nothing writes to CDC while the stack goes down + Acquire lock(serialMutex); + active = false; + } + tud_disconnect(); + vTaskDelay(pdMS_TO_TICKS(100)); // Give the host time to notice the removal + + stopRequested = true; + for (int i = 0; i < 50 && taskHandle; i++) { + vTaskDelay(pdMS_TO_TICKS(10)); + } + dcd_int_disable(0); + + usb_phy_switch_to_serial_jtag(); + activeDevice = nullptr; + lilka::serial.log("USB: PHY returned to USB-Serial/JTAG"); +} + +void USBComposite::usbTask(void* arg) { + auto* self = static_cast(arg); + while (!self->stopRequested) { + // Short timeout, so the backlog goes out soon after a monitor opens the port + tud_task_ext(10, false); + if (self->backlogLen > 0 && self->serialReady() && xSemaphoreTake(self->serialMutex, 0) == pdTRUE) { + size_t before = self->backlogLen; + self->backlogDrain(); + if (self->backlogLen < before) self->serialStalled = false; + xSemaphoreGive(self->serialMutex); + } + } + self->taskHandle = nullptr; + vTaskDelete(nullptr); +} + +bool USBComposite::isMounted() const { + return active && tud_mounted(); +} + +void USBComposite::diagnose(char* buf, size_t size) { + char regs[256]; + usb_phy_dump(regs, sizeof(regs)); + snprintf( + buf, + size, + "connected=%d mounted=%d mount=%u umount=%u suspend=%u resume=%u %s", + tud_connected(), + tud_mounted(), + static_cast(mountCount), + static_cast(umountCount), + static_cast(suspendCount), + static_cast(resumeCount), + regs + ); +} + +bool USBComposite::isSerialConnected() const { + return active && tud_cdc_connected(); +} diff --git a/src/keira/usb/usbcomposite.h b/src/keira/usb/usbcomposite.h new file mode 100644 index 00000000..50624316 --- /dev/null +++ b/src/keira/usb/usbcomposite.h @@ -0,0 +1,133 @@ +#pragma once + +#include +#include +#include +#include +#include + +////////////////////////////////////////////////////////////////////////////// +// USB composite device: CDC-ACM (serial monitor) + MSC (mass storage) +////////////////////////////////////////////////////////////////////////////// +// ESP32-S3 has a single USB PHY shared between USB-Serial/JTAG and USB-OTG. +// At power-on it belongs to USB-Serial/JTAG (ARDUINO_USB_MODE=1), which +// carries `Serial` and therefore lilka::serial. Keira keeps it that way and +// starts this device only while the USB Drive app is open. +// +// begin() moves the PHY to USB-OTG and enumerates one composite device: +// - CDC-ACM port: everything written to `Serial` is forwarded here +// (lilka::serial, ESP logs and stdout all end up in HWCDC::write, +// which is wrapped at link time, see src/CMakeLists.txt). Output written +// while no host has the port open is kept in a backlog and sent on connect. +// esptool's DTR/RTS reset sequence and a 1200 baud touch reboot to download +// mode (on USB-Serial/JTAG), so flashing works without buttons. No USB serial +// number, so macOS names the port by location, the same as USB-Serial/JTAG. +// - MSC LUN that behaves like a card reader: no medium until attachDisk() +// end() disconnects it and hands the PHY back to USB-Serial/JTAG. +// A restart while active hands the PHY back to USB-Serial/JTAG as well. +// +// Only one instance can be active at a time (TinyUSB callbacks are global). +////////////////////////////////////////////////////////////////////////////// + +/// Block device exposed through MSC. Methods are called from the USB task. +class USBBlockDevice { +public: + virtual ~USBBlockDevice() = default; + virtual uint32_t blockCount() = 0; + virtual uint16_t blockSize() = 0; + virtual bool readBlocks(uint32_t lba, uint8_t* dst, uint32_t count) = 0; + virtual bool writeBlocks(uint32_t lba, const uint8_t* src, uint32_t count) = 0; +}; + +class USBComposite { +public: + USBComposite() = default; + ~USBComposite(); + + bool begin(); + void end(); + + bool isActive() const { + return active; + } + // Host has configured the device + bool isMounted() const; + // Host has the CDC port open (DTR set) + bool isSerialConnected() const; + // Ticks since begin() + TickType_t uptime() const { + return xTaskGetTickCount() - startTick; + } + // Stack state and registers, for logs + static void diagnose(char* buf, size_t size); + + // MSC medium. Without one the drive reports "no medium", like an empty card reader + bool attachDisk(USBBlockDevice* blockDevice); + void detachDisk(); + bool isDiskAttached() const { + return disk != nullptr; + } + // Host has "safely removed" the attached disk + bool isEjected() const { + return ejected; + } + + // Called from the HWCDC::write wrapper + size_t writeSerial(const uint8_t* data, size_t size); + + // Called from TinyUSB callbacks (USB task) + bool mscReady(uint8_t lun); + void mscCapacity(uint32_t* blockCount, uint16_t* blockSize); + int32_t mscRead(uint32_t lba, uint32_t offset, void* buffer, uint32_t size); + int32_t mscWrite(uint32_t lba, uint32_t offset, const uint8_t* buffer, uint32_t size); + void mscStartStop(bool start, bool loadEject); + void cdcLineState(bool dtr, bool rts); + void cdcLineCoding(uint32_t baudRate); + void cdcHostGone(); + +private: + static void usbTask(void* arg); + static void rebootToDownloadMode(); + + bool serialReady() const; + void cdcHostOpened(); + static void readAheadTask(void* arg); + void readAheadWait(); + + void backlogAppend(const uint8_t* data, size_t size); + void backlogDrain(); + + TaskHandle_t taskHandle = nullptr; + TickType_t startTick = 0; + volatile bool active = false; + volatile bool stopRequested = false; + + // MSC + SemaphoreHandle_t diskMutex = xSemaphoreCreateMutex(); + USBBlockDevice* volatile disk = nullptr; + volatile bool ejected = false; + bool mediumChanged = false; + + // MSC read-ahead, see mscRead() + static constexpr size_t READ_AHEAD_SIZE = 4096; // >= CFG_TUD_MSC_BUFSIZE, checked in the .cpp + enum ReadAheadState : uint8_t { READ_AHEAD_IDLE, READ_AHEAD_BUSY, READ_AHEAD_READY }; + TaskHandle_t readAheadTaskHandle = nullptr; + SemaphoreHandle_t readAheadDone = xSemaphoreCreateBinary(); + uint8_t* readAhead = nullptr; + volatile ReadAheadState readAheadState = READ_AHEAD_IDLE; + uint32_t readAheadLba = 0; + uint32_t readAheadCount = 0; + bool readAheadPending = false; + + // CDC + SemaphoreHandle_t serialMutex = xSemaphoreCreateMutex(); + uint8_t* backlog = nullptr; + size_t backlogHead = 0; + size_t backlogLen = 0; + uint8_t resetStep = 0; + bool lineDtr = false; + bool lineRts = false; + volatile TickType_t openedSince = 0; + volatile bool hostOpened = false; + volatile bool serialStalled = false; +}; diff --git a/src/keira/usb/usbphy.c b/src/keira/usb/usbphy.c new file mode 100644 index 00000000..d8640116 --- /dev/null +++ b/src/keira/usb/usbphy.c @@ -0,0 +1,134 @@ +#include "usbphy.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// Both controllers can override the pad pull-ups. Take D+ pull-up away on both, +// so the host sees a clean detach whichever one owns the PHY right now +static void force_detach(void) { + USB_SERIAL_JTAG.conf0.pad_pull_override = 1; + USB_SERIAL_JTAG.conf0.dp_pullup = 0; + USB_WRAP.otg_conf.pad_pull_override = 1; + USB_WRAP.otg_conf.dp_pullup = 0; +} + +static void release_pulls(void) { + USB_WRAP.otg_conf.pad_pull_override = 0; + USB_SERIAL_JTAG.conf0.dp_pullup = 1; + USB_SERIAL_JTAG.conf0.pad_pull_override = 0; +} + +// USB_WRAP and USB0 registers are only accessible while the USB-OTG clock runs, +// touching them otherwise can stall the CPU. Clock gating here is not reference counted +// (unlike periph_module_enable), so "off" really means off +static void otg_clock_on(void) { + if (!periph_ll_periph_enabled(PERIPH_USB_MODULE)) periph_ll_enable_clk_clear_rst(PERIPH_USB_MODULE); +} + +void usb_phy_switch_to_otg(void) { + // Reset the controller only when it isn't running: TinyUSB is initialized once and keeps its state, + // a controller reset under it on a later start leaves the device invisible to the host + if (!periph_ll_periph_enabled(PERIPH_USB_MODULE)) { + periph_ll_disable_clk_set_rst(PERIPH_USB_MODULE); + periph_ll_enable_clk_clear_rst(PERIPH_USB_MODULE); + } + + force_detach(); + // Long enough for any host to register the detach + esp_rom_delay_us(100 * 1000); + + // USB_WRAP.date doubles as the ROM's "USB persist" flag register and survives resets. + // With bit 31 left set, dcd_init restores a "persisted" session instead of connecting, + // so the device never pulls D+ up and the host never sees it + USB_WRAP.date.val = 0; + + // Connect USB-OTG to the internal PHY + usb_hal_context_t hal = {.use_external_phy = false}; + usb_hal_init(&hal); + + // Route the internal OTG signals (VBUS valid, ID, etc.) + for (const usb_iopin_dsc_t* iopin = usb_periph_iopins; iopin->pin != -1; ++iopin) { + if (iopin->ext_phy_only) continue; + esp_rom_gpio_pad_select_gpio(iopin->pin); + if (iopin->is_output) { + esp_rom_gpio_connect_out_signal(iopin->pin, iopin->func, false, false); + } else { + esp_rom_gpio_connect_in_signal(iopin->pin, iopin->func, false); + if (iopin->pin != GPIO_FUNC_IN_LOW && iopin->pin != GPIO_FUNC_IN_HIGH) { + gpio_ll_input_enable(&GPIO, iopin->pin); + } + } + esp_rom_gpio_pad_unhold(iopin->pin); + } + gpio_set_drive_capability(USBPHY_DM_NUM, GPIO_DRIVE_CAP_3); + gpio_set_drive_capability(USBPHY_DP_NUM, GPIO_DRIVE_CAP_3); + + // The core starts in whatever mode the (debounced) ID signal says, which is still "host" here. + // Device registers (DCFG, DCTL) written in host mode are dropped and reset once the core flips, + // leaving DCTL.SftDiscon set: the device never connects. Force device mode and wait for the switch + USB0.gusbcfg |= USB_FORCEDEVMODE_M; + for (int i = 0; i < 100 && (USB0.gintsts & USB_CURMOD_INT_M); i++) { + esp_rom_delay_us(1000); + } + + // The OTG controller drives its own pull-up from here (soft connect in dcd_init) + release_pulls(); +} + +void usb_phy_switch_to_serial_jtag(void) { + bool clockWasOff = !periph_ll_periph_enabled(PERIPH_USB_MODULE); + otg_clock_on(); + force_detach(); + esp_rom_delay_us(100 * 1000); + release_pulls(); + usb_phy_ll_int_jtag_enable(&USB_SERIAL_JTAG); + if (clockWasOff) periph_ll_disable_clk_set_rst(PERIPH_USB_MODULE); +} + +void usb_phy_otg_detach(void) { + if (!periph_ll_periph_enabled(PERIPH_USB_MODULE)) return; + // Soft disconnect (DCTL.SftDiscon), the host sees the device leave right away + USB0.dctl |= USB_SFTDISCON_M; +} + +void usb_phy_dump(char* buf, size_t size) { + if (!periph_ll_periph_enabled(PERIPH_USB_MODULE)) { + snprintf(buf, size, "USB-OTG clock off"); + return; + } + snprintf( + buf, + size, + "rtc.usb_conf=%08x wrap.otg_conf=%08x wrap.date=%08x usj.conf0=%08x " + "gotgctl=%08x gusbcfg=%08x gintsts=%08x gintmsk=%08x dcfg=%08x dctl=%08x dsts=%08x", + (unsigned)RTCCNTL.usb_conf.val, + (unsigned)USB_WRAP.otg_conf.val, + (unsigned)USB_WRAP.date.val, + (unsigned)USB_SERIAL_JTAG.conf0.val, + (unsigned)USB0.gotgctl, + (unsigned)USB0.gusbcfg, + (unsigned)USB0.gintsts, + (unsigned)USB0.gintmsk, + (unsigned)USB0.dcfg, + (unsigned)USB0.dctl, + (unsigned)USB0.dsts + ); +} + +bool usb_phy_is_otg(void) { + return RTCCNTL.usb_conf.sw_hw_usb_phy_sel && RTCCNTL.usb_conf.sw_usb_phy_sel; +} diff --git a/src/keira/usb/usbphy.h b/src/keira/usb/usbphy.h new file mode 100644 index 00000000..480c5104 --- /dev/null +++ b/src/keira/usb/usbphy.h @@ -0,0 +1,30 @@ +#pragma once + +// ESP32-S3 USB PHY ownership switching. Kept in C: IDF's usb_phy_ll.h doesn't compile as C++. + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/// Detach USB-Serial/JTAG from the bus, reset and clock USB-OTG, and connect it to the internal PHY +void usb_phy_switch_to_otg(void); + +/// Give the internal PHY back to USB-Serial/JTAG. Safe in a shutdown handler. +/// PHY selection lives in the RTC domain and survives a software reset. +void usb_phy_switch_to_serial_jtag(void); + +/// The internal PHY is selected for USB-OTG. The selection lives in the RTC domain and survives resets +bool usb_phy_is_otg(void); + +/// Soft-disconnect USB-OTG from the bus, PHY selection unchanged. Safe in a shutdown handler +void usb_phy_otg_detach(void); + +/// Human-readable dump of the PHY/OTG registers, for diagnostics +void usb_phy_dump(char* buf, size_t size); + +#ifdef __cplusplus +} +#endif From 97b797bfcdb30d6fbde5133a92e4260c9a1e0cf3 Mon Sep 17 00:00:00 2001 From: Yevhen Boichuk Date: Thu, 8 Oct 2026 22:32:10 +0300 Subject: [PATCH 5/6] merge: merge sdk and keira for faster updates os --- .gitmodules | 4 - AGENTS.md | 3 +- components/lilka/CMakeLists.txt | 20 +- components/lilka/sdk | 1 - .../lilka/src/contrib/LodePNG/lodepng.cpp | 7055 +++ .../lilka/src/contrib/LodePNG/lodepng.h | 2095 + components/lilka/src/lilka.cpp | 34 + components/lilka/src/lilka.h | 31 + components/lilka/src/lilka/alert.cpp | 81 + components/lilka/src/lilka/audio.cpp | 137 + components/lilka/src/lilka/audio.h | 45 + components/lilka/src/lilka/battery.cpp | 82 + components/lilka/src/lilka/battery.h | 72 + components/lilka/src/lilka/board.cpp | 62 + components/lilka/src/lilka/board.h | 64 + components/lilka/src/lilka/buzzer.cpp | 275 + components/lilka/src/lilka/buzzer.h | 118 + components/lilka/src/lilka/colors565.h | 1088 + components/lilka/src/lilka/config.h | 119 + components/lilka/src/lilka/controller.cpp | 193 + components/lilka/src/lilka/controller.h | 157 + components/lilka/src/lilka/default_splash.h | 43006 ++++++++++++++++ components/lilka/src/lilka/default_splash.png | Bin 0 -> 51875 bytes components/lilka/src/lilka/display.cpp | 541 + components/lilka/src/lilka/display.h | 507 + components/lilka/src/lilka/dynloader.cpp | 745 + components/lilka/src/lilka/dynloader.h | 310 + components/lilka/src/lilka/fileutils.cpp | 368 + components/lilka/src/lilka/fileutils.h | 164 + components/lilka/src/lilka/fmath.cpp | 92 + components/lilka/src/lilka/fmath.h | 40 + components/lilka/src/lilka/icons/backspace.h | 409 + .../lilka/src/lilka/icons/backspace.png | Bin 0 -> 638 bytes components/lilka/src/lilka/icons/shift.h | 409 + components/lilka/src/lilka/icons/shift.png | Bin 0 -> 599 bytes components/lilka/src/lilka/icons/shifted.h | 409 + components/lilka/src/lilka/icons/shifted.png | Bin 0 -> 4369 bytes components/lilka/src/lilka/icons/whitespace.h | 409 + .../lilka/src/lilka/icons/whitespace.png | Bin 0 -> 568 bytes components/lilka/src/lilka/inputdialog.cpp | 341 + components/lilka/src/lilka/menu.cpp | 354 + components/lilka/src/lilka/multiboot.cpp | 333 + components/lilka/src/lilka/multiboot.h | 102 + components/lilka/src/lilka/partitions.cpp | 236 + components/lilka/src/lilka/partitions.h | 69 + components/lilka/src/lilka/ping.h | 2760 + components/lilka/src/lilka/progressdialog.cpp | 86 + components/lilka/src/lilka/resources.cpp | 133 + components/lilka/src/lilka/resources.h | 65 + components/lilka/src/lilka/sdk.cpp | 28 + components/lilka/src/lilka/sdk.h | 42 + components/lilka/src/lilka/serial.cpp | 302 + components/lilka/src/lilka/serial.h | 87 + components/lilka/src/lilka/spi.cpp | 73 + components/lilka/src/lilka/spi.h | 31 + components/lilka/src/lilka/stringutils.cpp | 55 + components/lilka/src/lilka/stringutils.h | 27 + components/lilka/src/lilka/ui.h | 375 + components/lilka/src/lilka/version_auto_gen.h | 10 + components/lilka/src/main.cpp | 16 + src/keira/ksystem.cpp | 6 + src/services/uartinput/uartinput.cpp | 115 + src/services/uartinput/uartinput.h | 35 + 63 files changed, 64804 insertions(+), 22 deletions(-) delete mode 160000 components/lilka/sdk create mode 100644 components/lilka/src/contrib/LodePNG/lodepng.cpp create mode 100644 components/lilka/src/contrib/LodePNG/lodepng.h create mode 100644 components/lilka/src/lilka.cpp create mode 100644 components/lilka/src/lilka.h create mode 100644 components/lilka/src/lilka/alert.cpp create mode 100644 components/lilka/src/lilka/audio.cpp create mode 100644 components/lilka/src/lilka/audio.h create mode 100644 components/lilka/src/lilka/battery.cpp create mode 100644 components/lilka/src/lilka/battery.h create mode 100644 components/lilka/src/lilka/board.cpp create mode 100644 components/lilka/src/lilka/board.h create mode 100644 components/lilka/src/lilka/buzzer.cpp create mode 100644 components/lilka/src/lilka/buzzer.h create mode 100644 components/lilka/src/lilka/colors565.h create mode 100644 components/lilka/src/lilka/config.h create mode 100644 components/lilka/src/lilka/controller.cpp create mode 100644 components/lilka/src/lilka/controller.h create mode 100644 components/lilka/src/lilka/default_splash.h create mode 100644 components/lilka/src/lilka/default_splash.png create mode 100644 components/lilka/src/lilka/display.cpp create mode 100644 components/lilka/src/lilka/display.h create mode 100644 components/lilka/src/lilka/dynloader.cpp create mode 100644 components/lilka/src/lilka/dynloader.h create mode 100644 components/lilka/src/lilka/fileutils.cpp create mode 100644 components/lilka/src/lilka/fileutils.h create mode 100644 components/lilka/src/lilka/fmath.cpp create mode 100644 components/lilka/src/lilka/fmath.h create mode 100644 components/lilka/src/lilka/icons/backspace.h create mode 100644 components/lilka/src/lilka/icons/backspace.png create mode 100644 components/lilka/src/lilka/icons/shift.h create mode 100644 components/lilka/src/lilka/icons/shift.png create mode 100644 components/lilka/src/lilka/icons/shifted.h create mode 100644 components/lilka/src/lilka/icons/shifted.png create mode 100644 components/lilka/src/lilka/icons/whitespace.h create mode 100644 components/lilka/src/lilka/icons/whitespace.png create mode 100644 components/lilka/src/lilka/inputdialog.cpp create mode 100644 components/lilka/src/lilka/menu.cpp create mode 100644 components/lilka/src/lilka/multiboot.cpp create mode 100644 components/lilka/src/lilka/multiboot.h create mode 100644 components/lilka/src/lilka/partitions.cpp create mode 100644 components/lilka/src/lilka/partitions.h create mode 100644 components/lilka/src/lilka/ping.h create mode 100644 components/lilka/src/lilka/progressdialog.cpp create mode 100644 components/lilka/src/lilka/resources.cpp create mode 100644 components/lilka/src/lilka/resources.h create mode 100644 components/lilka/src/lilka/sdk.cpp create mode 100644 components/lilka/src/lilka/sdk.h create mode 100644 components/lilka/src/lilka/serial.cpp create mode 100644 components/lilka/src/lilka/serial.h create mode 100644 components/lilka/src/lilka/spi.cpp create mode 100644 components/lilka/src/lilka/spi.h create mode 100644 components/lilka/src/lilka/stringutils.cpp create mode 100644 components/lilka/src/lilka/stringutils.h create mode 100644 components/lilka/src/lilka/ui.h create mode 100644 components/lilka/src/lilka/version_auto_gen.h create mode 100644 components/lilka/src/main.cpp create mode 100644 src/services/uartinput/uartinput.cpp create mode 100644 src/services/uartinput/uartinput.h diff --git a/.gitmodules b/.gitmodules index ca1e8a4d..79b64996 100644 --- a/.gitmodules +++ b/.gitmodules @@ -2,10 +2,6 @@ path = components/arduino url = https://github.com/espressif/arduino-esp32.git shallow = true -[submodule "components/lilka/sdk"] - path = components/lilka/sdk - url = https://github.com/lilka-dev/sdk.git - shallow = true [submodule "components/Arduino_GFX/Arduino_GFX"] path = components/Arduino_GFX/Arduino_GFX url = https://github.com/moononournation/Arduino_GFX.git diff --git a/AGENTS.md b/AGENTS.md index 489942a1..d4687887 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -23,6 +23,7 @@ - `src/keira/keira_version_auto_gen.h` — auto-generated at build time - `build/` — generated by ESP-IDF - Submodules under `components/` (see `.gitmodules`) — pinned upstream code, never edit in place; bump the submodule instead +- `components/lilka/src/` — vendored Lilka SDK, re-sync from upstream instead of editing. Local patches (keep them when re-syncing until upstreamed): `Controller::setVirtualPressed()` in `controller.{h,cpp}`, used by `UARTInputService` - `components/arduino_tinyusb/` — vendored TinyUSB glue from esp32-arduino-lib-builder - `components/mJS/` and `components/SimpleFTPServer/` — vendored, don't reformat @@ -32,7 +33,7 @@ - ESP-IDF version is pinned per board in `boards//board.cmake` and enforced at configure time — currently **v4.4.7** with arduino-esp32 **2.0.17** as an IDF component - Layout: `src/` is the Keira IDF component (`src/CMakeLists.txt`, explicit `REQUIRES`); `components//` is one component per library — our `CMakeLists.txt` plus the upstream code as a shallow git submodule inside (`components/arduino` and `components/esp-dsp` are submodules that are IDF components themselves) - `data/spiffs/` becomes the internal filesystem image (`make flash-fs`); `data/img/` and `data/assets/` are repo-only images and design sources -- Bumping the Lilka SDK submodule (`components/lilka/sdk`): also update `LILKA_SDK_VERSION` in `components/lilka/CMakeLists.txt` (configure fails on mismatch) +- The Lilka SDK is vendored (not a submodule): `components/lilka/src/` is a verbatim copy of upstream `lib/lilka/src`. Don't edit it in place — to bump, replace the whole dir with the new tag's `lib/lilka/src` and update `LILKA_SDK_VERSION` in `components/lilka/CMakeLists.txt` - A board is a `boards//` dir with `board.cmake`, `sdkconfig.defaults` and `partitions.csv`; select it with `make BOARD=` - Build dirs: `build/` (default board, same as plain `idf.py`), `build-/` for others, `-docker/` for Docker builds — never mix host and Docker builds in one dir - Local ESP-IDF must be the pinned tag with matching submodules (`git submodule update --init --recursive`) and its own CMake 3.x (`idf_tools.py install cmake`); CMake 4 is rejected at configure time diff --git a/components/lilka/CMakeLists.txt b/components/lilka/CMakeLists.txt index 771e5f6f..35b4a4bd 100644 --- a/components/lilka/CMakeLists.txt +++ b/components/lilka/CMakeLists.txt @@ -1,5 +1,5 @@ -# Lilka SDK (sdk/ submodule) -set(root "${CMAKE_CURRENT_LIST_DIR}/sdk/lib/lilka/src") +# Lilka SDK, vendored from https://github.com/lilka-dev/sdk (lib/lilka/src, see LILKA_SDK_VERSION below) +set(root "${CMAKE_CURRENT_LIST_DIR}/src") file(GLOB_RECURSE srcs "${root}/*.c" "${root}/*.cpp") # Weak default setup()/loop(); Keira provides its own @@ -13,22 +13,10 @@ idf_component_register( # The SDK sources carry a placeholder version header (0.0.0/Dev). The real version is pinned here and # force-included; it defines the same guard, so the placeholder is skipped. -# Keep in sync with the components/lilka/sdk submodule; checked against its tag when tags are fetched. -set(LILKA_SDK_VERSION "2.5.15") +# Keep in sync with the vendored sources in src/ when re-syncing from upstream. +set(LILKA_SDK_VERSION "2.5.16") set(LILKA_SDK_VERSION_TYPE SDK_VERSION_TYPE_RELEASE) -execute_process( - COMMAND git describe --tags --exact-match - WORKING_DIRECTORY "${root}" - OUTPUT_VARIABLE sdk_tag - OUTPUT_STRIP_TRAILING_WHITESPACE - ERROR_QUIET -) -if(sdk_tag AND NOT sdk_tag STREQUAL "v${LILKA_SDK_VERSION}") - message(FATAL_ERROR "components/lilka/sdk is at ${sdk_tag}, but LILKA_SDK_VERSION is ${LILKA_SDK_VERSION}. " - "Update LILKA_SDK_VERSION in ${CMAKE_CURRENT_LIST_FILE}.") -endif() - string(REPLACE "." ";" sdk_version_parts "${LILKA_SDK_VERSION}") list(GET sdk_version_parts 0 SDK_VERSION_MAJOR) list(GET sdk_version_parts 1 SDK_VERSION_MINOR) diff --git a/components/lilka/sdk b/components/lilka/sdk deleted file mode 160000 index ff84e1d4..00000000 --- a/components/lilka/sdk +++ /dev/null @@ -1 +0,0 @@ -Subproject commit ff84e1d4931075087469b0edab82a3cfbaca8884 diff --git a/components/lilka/src/contrib/LodePNG/lodepng.cpp b/components/lilka/src/contrib/LodePNG/lodepng.cpp new file mode 100644 index 00000000..48b64fe8 --- /dev/null +++ b/components/lilka/src/contrib/LodePNG/lodepng.cpp @@ -0,0 +1,7055 @@ +/* +LodePNG version 20241215 + +Copyright (c) 2005-2024 Lode Vandevenne + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +/* +The manual and changelog are in the header file "lodepng.h" +Rename this file to lodepng.cpp to use it for C++, or to lodepng.c to use it for C. +*/ + +#include "lodepng.h" + +#ifdef LODEPNG_COMPILE_DISK +#include /* LONG_MAX */ +#include /* file handling */ +#endif /* LODEPNG_COMPILE_DISK */ + +#ifdef LODEPNG_COMPILE_ALLOCATORS +#include /* allocations */ +#endif /* LODEPNG_COMPILE_ALLOCATORS */ + +#if defined(_MSC_VER) && (_MSC_VER >= 1310) /*Visual Studio: A few warning types are not desired here.*/ +#pragma warning( disable : 4244 ) /*implicit conversions: not warned by gcc -Wall -Wextra and requires too much casts*/ +#pragma warning( disable : 4996 ) /*VS does not like fopen, but fopen_s is not standard C so unusable here*/ +#endif /*_MSC_VER */ + +const char* LODEPNG_VERSION_STRING = "20241215"; + +/* +This source file is divided into the following large parts. The code sections +with the "LODEPNG_COMPILE_" #defines divide this up further in an intermixed way. +-Tools for C and common code for PNG and Zlib +-C Code for Zlib (huffman, deflate, ...) +-C Code for PNG (file format chunks, adam7, PNG filters, color conversions, ...) +-The C++ wrapper around all of the above +*/ + +/* ////////////////////////////////////////////////////////////////////////// */ +/* ////////////////////////////////////////////////////////////////////////// */ +/* // Tools for C, and common code for PNG and Zlib. // */ +/* ////////////////////////////////////////////////////////////////////////// */ +/* ////////////////////////////////////////////////////////////////////////// */ + +/*The malloc, realloc and free functions defined here with "lodepng_" in front +of the name, so that you can easily change them to others related to your +platform if needed. Everything else in the code calls these. Pass +-DLODEPNG_NO_COMPILE_ALLOCATORS to the compiler, or comment out +#define LODEPNG_COMPILE_ALLOCATORS in the header, to disable the ones here and +define them in your own project's source files without needing to change +lodepng source code. Don't forget to remove "static" if you copypaste them +from here.*/ + +#ifdef LODEPNG_COMPILE_ALLOCATORS +static void* lodepng_malloc(size_t size) { +#ifdef LODEPNG_MAX_ALLOC + if(size > LODEPNG_MAX_ALLOC) return 0; +#endif + return malloc(size); +} + +/* NOTE: when realloc returns NULL, it leaves the original memory untouched */ +static void* lodepng_realloc(void* ptr, size_t new_size) { +#ifdef LODEPNG_MAX_ALLOC + if(new_size > LODEPNG_MAX_ALLOC) return 0; +#endif + return realloc(ptr, new_size); +} + +static void lodepng_free(void* ptr) { + free(ptr); +} +#else /*LODEPNG_COMPILE_ALLOCATORS*/ +/* TODO: support giving additional void* payload to the custom allocators */ +void* lodepng_malloc(size_t size); +void* lodepng_realloc(void* ptr, size_t new_size); +void lodepng_free(void* ptr); +#endif /*LODEPNG_COMPILE_ALLOCATORS*/ + +/* convince the compiler to inline a function, for use when this measurably improves performance */ +/* inline is not available in C90, but use it when supported by the compiler */ +#if (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined(__cplusplus) && (__cplusplus >= 199711L)) +#define LODEPNG_INLINE inline +#else +#define LODEPNG_INLINE /* not available */ +#endif + +/* restrict is not available in C90, but use it when supported by the compiler */ +#if (defined(__GNUC__) && (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1))) ||\ + (defined(_MSC_VER) && (_MSC_VER >= 1400)) || \ + (defined(__WATCOMC__) && (__WATCOMC__ >= 1250) && !defined(__cplusplus)) +#define LODEPNG_RESTRICT __restrict +#else +#define LODEPNG_RESTRICT /* not available */ +#endif + +/* Replacements for C library functions such as memcpy and strlen, to support platforms +where a full C library is not available. The compiler can recognize them and compile +to something as fast. */ + +static void lodepng_memcpy(void* LODEPNG_RESTRICT dst, + const void* LODEPNG_RESTRICT src, size_t size) { + size_t i; + for(i = 0; i < size; i++) ((char*)dst)[i] = ((const char*)src)[i]; +} + +static void lodepng_memset(void* LODEPNG_RESTRICT dst, + int value, size_t num) { + size_t i; + for(i = 0; i < num; i++) ((char*)dst)[i] = (char)value; +} + +/* does not check memory out of bounds, do not use on untrusted data */ +static size_t lodepng_strlen(const char* a) { + const char* orig = a; + /* avoid warning about unused function in case of disabled COMPILE... macros */ + (void)(&lodepng_strlen); + while(*a) a++; + return (size_t)(a - orig); +} + +#define LODEPNG_MAX(a, b) (((a) > (b)) ? (a) : (b)) +#define LODEPNG_MIN(a, b) (((a) < (b)) ? (a) : (b)) + +#if defined(LODEPNG_COMPILE_PNG) || defined(LODEPNG_COMPILE_DECODER) +/* Safely check if adding two integers will overflow (no undefined +behavior, compiler removing the code, etc...) and output result. */ +static int lodepng_addofl(size_t a, size_t b, size_t* result) { + *result = a + b; /* Unsigned addition is well defined and safe in C90 */ + return *result < a; +} +#endif /*defined(LODEPNG_COMPILE_PNG) || defined(LODEPNG_COMPILE_DECODER)*/ + +#ifdef LODEPNG_COMPILE_DECODER +/* Safely check if multiplying two integers will overflow (no undefined +behavior, compiler removing the code, etc...) and output result. */ +static int lodepng_mulofl(size_t a, size_t b, size_t* result) { + *result = a * b; /* Unsigned multiplication is well defined and safe in C90 */ + return (a != 0 && *result / a != b); +} + +#ifdef LODEPNG_COMPILE_ZLIB +/* Safely check if a + b > c, even if overflow could happen. */ +static int lodepng_gtofl(size_t a, size_t b, size_t c) { + size_t d; + if(lodepng_addofl(a, b, &d)) return 1; + return d > c; +} +#endif /*LODEPNG_COMPILE_ZLIB*/ +#endif /*LODEPNG_COMPILE_DECODER*/ + + +/* +Often in case of an error a value is assigned to a variable and then it breaks +out of a loop (to go to the cleanup phase of a function). This macro does that. +It makes the error handling code shorter and more readable. + +Example: if(!uivector_resize(&lz77_encoded, datasize)) ERROR_BREAK(83); +*/ +#define CERROR_BREAK(errorvar, code){\ + errorvar = code;\ + break;\ +} + +/*version of CERROR_BREAK that assumes the common case where the error variable is named "error"*/ +#define ERROR_BREAK(code) CERROR_BREAK(error, code) + +/*Set error var to the error code, and return it.*/ +#define CERROR_RETURN_ERROR(errorvar, code){\ + errorvar = code;\ + return code;\ +} + +/*Try the code, if it returns error, also return the error.*/ +#define CERROR_TRY_RETURN(call){\ + unsigned error = call;\ + if(error) return error;\ +} + +/*Set error var to the error code, and return from the void function.*/ +#define CERROR_RETURN(errorvar, code){\ + errorvar = code;\ + return;\ +} + +/* +About uivector, ucvector and string: +-All of them wrap dynamic arrays or text strings in a similar way. +-LodePNG was originally written in C++. The vectors replace the std::vectors that were used in the C++ version. +-The string tools are made to avoid problems with compilers that declare things like strncat as deprecated. +-They're not used in the interface, only internally in this file as static functions. +-As with many other structs in this file, the init and cleanup functions serve as ctor and dtor. +*/ + +#ifdef LODEPNG_COMPILE_ZLIB +#ifdef LODEPNG_COMPILE_ENCODER +/*dynamic vector of unsigned ints*/ +typedef struct uivector { + unsigned* data; + size_t size; /*size in number of unsigned longs*/ + size_t allocsize; /*allocated size in bytes*/ +} uivector; + +static void uivector_cleanup(void* p) { + ((uivector*)p)->size = ((uivector*)p)->allocsize = 0; + lodepng_free(((uivector*)p)->data); + ((uivector*)p)->data = NULL; +} + +/*returns 1 if success, 0 if failure ==> nothing done*/ +static unsigned uivector_resize(uivector* p, size_t size) { + size_t allocsize = size * sizeof(unsigned); + if(allocsize > p->allocsize) { + size_t newsize = allocsize + (p->allocsize >> 1u); + void* data = lodepng_realloc(p->data, newsize); + if(data) { + p->allocsize = newsize; + p->data = (unsigned*)data; + } + else return 0; /*error: not enough memory*/ + } + p->size = size; + return 1; /*success*/ +} + +static void uivector_init(uivector* p) { + p->data = NULL; + p->size = p->allocsize = 0; +} + +/*returns 1 if success, 0 if failure ==> nothing done*/ +static unsigned uivector_push_back(uivector* p, unsigned c) { + if(!uivector_resize(p, p->size + 1)) return 0; + p->data[p->size - 1] = c; + return 1; +} +#endif /*LODEPNG_COMPILE_ENCODER*/ +#endif /*LODEPNG_COMPILE_ZLIB*/ + +/* /////////////////////////////////////////////////////////////////////////// */ + +/*dynamic vector of unsigned chars*/ +typedef struct ucvector { + unsigned char* data; + size_t size; /*used size*/ + size_t allocsize; /*allocated size*/ +} ucvector; + +/*returns 1 if success, 0 if failure ==> nothing done*/ +static unsigned ucvector_reserve(ucvector* p, size_t size) { + if(size > p->allocsize) { + size_t newsize = size + (p->allocsize >> 1u); + void* data = lodepng_realloc(p->data, newsize); + if(data) { + p->allocsize = newsize; + p->data = (unsigned char*)data; + } + else return 0; /*error: not enough memory*/ + } + return 1; /*success*/ +} + +/*returns 1 if success, 0 if failure ==> nothing done*/ +static unsigned ucvector_resize(ucvector* p, size_t size) { + p->size = size; + return ucvector_reserve(p, size); +} + +static ucvector ucvector_init(unsigned char* buffer, size_t size) { + ucvector v; + v.data = buffer; + v.allocsize = v.size = size; + return v; +} + +/* ////////////////////////////////////////////////////////////////////////// */ + +#ifdef LODEPNG_COMPILE_PNG +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + +/*free string pointer and set it to NULL*/ +static void string_cleanup(char** out) { + lodepng_free(*out); + *out = NULL; +} + +/*also appends null termination character*/ +static char* alloc_string_sized(const char* in, size_t insize) { + char* out = (char*)lodepng_malloc(insize + 1); + if(out) { + lodepng_memcpy(out, in, insize); + out[insize] = 0; + } + return out; +} + +/* dynamically allocates a new string with a copy of the null terminated input text */ +static char* alloc_string(const char* in) { + return alloc_string_sized(in, lodepng_strlen(in)); +} +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ +#endif /*LODEPNG_COMPILE_PNG*/ + +/* ////////////////////////////////////////////////////////////////////////// */ + +#if defined(LODEPNG_COMPILE_DECODER) || defined(LODEPNG_COMPILE_PNG) +static unsigned lodepng_read32bitInt(const unsigned char* buffer) { + return (((unsigned)buffer[0] << 24u) | ((unsigned)buffer[1] << 16u) | + ((unsigned)buffer[2] << 8u) | (unsigned)buffer[3]); +} +#endif /*defined(LODEPNG_COMPILE_DECODER) || defined(LODEPNG_COMPILE_PNG)*/ + +#if defined(LODEPNG_COMPILE_PNG) || defined(LODEPNG_COMPILE_ENCODER) +/*buffer must have at least 4 allocated bytes available*/ +static void lodepng_set32bitInt(unsigned char* buffer, unsigned value) { + buffer[0] = (unsigned char)((value >> 24) & 0xff); + buffer[1] = (unsigned char)((value >> 16) & 0xff); + buffer[2] = (unsigned char)((value >> 8) & 0xff); + buffer[3] = (unsigned char)((value ) & 0xff); +} +#endif /*defined(LODEPNG_COMPILE_PNG) || defined(LODEPNG_COMPILE_ENCODER)*/ + +/* ////////////////////////////////////////////////////////////////////////// */ +/* / File IO / */ +/* ////////////////////////////////////////////////////////////////////////// */ + +#ifdef LODEPNG_COMPILE_DISK + +/* returns negative value on error. This should be pure C compatible, so no fstat. */ +static long lodepng_filesize(const char* filename) { + FILE* file; + long size; + file = fopen(filename, "rb"); + if(!file) return -1; + + if(fseek(file, 0, SEEK_END) != 0) { + fclose(file); + return -1; + } + + size = ftell(file); + /* It may give LONG_MAX as directory size, this is invalid for us. */ + if(size == LONG_MAX) size = -1; + + fclose(file); + return size; +} + +/* load file into buffer that already has the correct allocated size. Returns error code.*/ +static unsigned lodepng_buffer_file(unsigned char* out, size_t size, const char* filename) { + FILE* file; + size_t readsize; + file = fopen(filename, "rb"); + if(!file) return 78; + + readsize = fread(out, 1, size, file); + fclose(file); + + if(readsize != size) return 78; + return 0; +} + +unsigned lodepng_load_file(unsigned char** out, size_t* outsize, const char* filename) { + long size = lodepng_filesize(filename); + if(size < 0) return 78; + *outsize = (size_t)size; + + *out = (unsigned char*)lodepng_malloc((size_t)size); + if(!(*out) && size > 0) return 83; /*the above malloc failed*/ + + return lodepng_buffer_file(*out, (size_t)size, filename); +} + +/*write given buffer to the file, overwriting the file, it doesn't append to it.*/ +unsigned lodepng_save_file(const unsigned char* buffer, size_t buffersize, const char* filename) { + FILE* file; + file = fopen(filename, "wb" ); + if(!file) return 79; + fwrite(buffer, 1, buffersize, file); + fclose(file); + return 0; +} + +#endif /*LODEPNG_COMPILE_DISK*/ + +/* ////////////////////////////////////////////////////////////////////////// */ +/* ////////////////////////////////////////////////////////////////////////// */ +/* // End of common code and tools. Begin of Zlib related code. // */ +/* ////////////////////////////////////////////////////////////////////////// */ +/* ////////////////////////////////////////////////////////////////////////// */ + +#ifdef LODEPNG_COMPILE_ZLIB +#ifdef LODEPNG_COMPILE_ENCODER + +typedef struct { + ucvector* data; + unsigned char bp; /*ok to overflow, indicates bit pos inside byte*/ +} LodePNGBitWriter; + +static void LodePNGBitWriter_init(LodePNGBitWriter* writer, ucvector* data) { + writer->data = data; + writer->bp = 0; +} + +/*TODO: this ignores potential out of memory errors*/ +#define WRITEBIT(writer, bit){\ + /* append new byte */\ + if(((writer->bp) & 7u) == 0) {\ + if(!ucvector_resize(writer->data, writer->data->size + 1)) return;\ + writer->data->data[writer->data->size - 1] = 0;\ + }\ + (writer->data->data[writer->data->size - 1]) |= (bit << ((writer->bp) & 7u));\ + ++writer->bp;\ +} + +/* LSB of value is written first, and LSB of bytes is used first */ +static void writeBits(LodePNGBitWriter* writer, unsigned value, size_t nbits) { + if(nbits == 1) { /* compiler should statically compile this case if nbits == 1 */ + WRITEBIT(writer, value); + } else { + /* TODO: increase output size only once here rather than in each WRITEBIT */ + size_t i; + for(i = 0; i != nbits; ++i) { + WRITEBIT(writer, (unsigned char)((value >> i) & 1)); + } + } +} + +/* This one is to use for adding huffman symbol, the value bits are written MSB first */ +static void writeBitsReversed(LodePNGBitWriter* writer, unsigned value, size_t nbits) { + size_t i; + for(i = 0; i != nbits; ++i) { + /* TODO: increase output size only once here rather than in each WRITEBIT */ + WRITEBIT(writer, (unsigned char)((value >> (nbits - 1u - i)) & 1u)); + } +} +#endif /*LODEPNG_COMPILE_ENCODER*/ + +#ifdef LODEPNG_COMPILE_DECODER + +typedef struct { + const unsigned char* data; + size_t size; /*size of data in bytes*/ + size_t bitsize; /*size of data in bits, end of valid bp values, should be 8*size*/ + size_t bp; + unsigned buffer; /*buffer for reading bits. NOTE: 'unsigned' must support at least 32 bits*/ +} LodePNGBitReader; + +/* data size argument is in bytes. Returns error if size too large causing overflow */ +static unsigned LodePNGBitReader_init(LodePNGBitReader* reader, const unsigned char* data, size_t size) { + size_t temp; + reader->data = data; + reader->size = size; + /* size in bits, return error if overflow (if size_t is 32 bit this supports up to 500MB) */ + if(lodepng_mulofl(size, 8u, &reader->bitsize)) return 105; + /*ensure incremented bp can be compared to bitsize without overflow even when it would be incremented 32 too much and + trying to ensure 32 more bits*/ + if(lodepng_addofl(reader->bitsize, 64u, &temp)) return 105; + reader->bp = 0; + reader->buffer = 0; + return 0; /*ok*/ +} + +/* +ensureBits functions: +Ensures the reader can at least read nbits bits in one or more readBits calls, +safely even if not enough bits are available. +The nbits parameter is unused but is given for documentation purposes, error +checking for amount of bits must be done beforehand. +*/ + +/*See ensureBits documentation above. This one ensures up to 9 bits */ +static LODEPNG_INLINE void ensureBits9(LodePNGBitReader* reader, size_t nbits) { + size_t start = reader->bp >> 3u; + size_t size = reader->size; + if(start + 1u < size) { + reader->buffer = (unsigned)reader->data[start + 0] | ((unsigned)reader->data[start + 1] << 8u); + reader->buffer >>= (reader->bp & 7u); + } else { + reader->buffer = 0; + if(start + 0u < size) reader->buffer = reader->data[start + 0]; + reader->buffer >>= (reader->bp & 7u); + } + (void)nbits; +} + +/*See ensureBits documentation above. This one ensures up to 17 bits */ +static LODEPNG_INLINE void ensureBits17(LodePNGBitReader* reader, size_t nbits) { + size_t start = reader->bp >> 3u; + size_t size = reader->size; + if(start + 2u < size) { + reader->buffer = (unsigned)reader->data[start + 0] | ((unsigned)reader->data[start + 1] << 8u) | + ((unsigned)reader->data[start + 2] << 16u); + reader->buffer >>= (reader->bp & 7u); + } else { + reader->buffer = 0; + if(start + 0u < size) reader->buffer |= reader->data[start + 0]; + if(start + 1u < size) reader->buffer |= ((unsigned)reader->data[start + 1] << 8u); + reader->buffer >>= (reader->bp & 7u); + } + (void)nbits; +} + +/*See ensureBits documentation above. This one ensures up to 25 bits */ +static LODEPNG_INLINE void ensureBits25(LodePNGBitReader* reader, size_t nbits) { + size_t start = reader->bp >> 3u; + size_t size = reader->size; + if(start + 3u < size) { + reader->buffer = (unsigned)reader->data[start + 0] | ((unsigned)reader->data[start + 1] << 8u) | + ((unsigned)reader->data[start + 2] << 16u) | ((unsigned)reader->data[start + 3] << 24u); + reader->buffer >>= (reader->bp & 7u); + } else { + reader->buffer = 0; + if(start + 0u < size) reader->buffer |= reader->data[start + 0]; + if(start + 1u < size) reader->buffer |= ((unsigned)reader->data[start + 1] << 8u); + if(start + 2u < size) reader->buffer |= ((unsigned)reader->data[start + 2] << 16u); + reader->buffer >>= (reader->bp & 7u); + } + (void)nbits; +} + +/*See ensureBits documentation above. This one ensures up to 32 bits */ +static LODEPNG_INLINE void ensureBits32(LodePNGBitReader* reader, size_t nbits) { + size_t start = reader->bp >> 3u; + size_t size = reader->size; + if(start + 4u < size) { + reader->buffer = (unsigned)reader->data[start + 0] | ((unsigned)reader->data[start + 1] << 8u) | + ((unsigned)reader->data[start + 2] << 16u) | ((unsigned)reader->data[start + 3] << 24u); + reader->buffer >>= (reader->bp & 7u); + reader->buffer |= (((unsigned)reader->data[start + 4] << 24u) << (8u - (reader->bp & 7u))); + } else { + reader->buffer = 0; + if(start + 0u < size) reader->buffer |= reader->data[start + 0]; + if(start + 1u < size) reader->buffer |= ((unsigned)reader->data[start + 1] << 8u); + if(start + 2u < size) reader->buffer |= ((unsigned)reader->data[start + 2] << 16u); + if(start + 3u < size) reader->buffer |= ((unsigned)reader->data[start + 3] << 24u); + reader->buffer >>= (reader->bp & 7u); + } + (void)nbits; +} + +/* Get bits without advancing the bit pointer. Must have enough bits available with ensureBits. Max nbits is 31. */ +static LODEPNG_INLINE unsigned peekBits(LodePNGBitReader* reader, size_t nbits) { + /* The shift allows nbits to be only up to 31. */ + return reader->buffer & ((1u << nbits) - 1u); +} + +/* Must have enough bits available with ensureBits */ +static LODEPNG_INLINE void advanceBits(LodePNGBitReader* reader, size_t nbits) { + reader->buffer >>= nbits; + reader->bp += nbits; +} + +/* Must have enough bits available with ensureBits */ +static LODEPNG_INLINE unsigned readBits(LodePNGBitReader* reader, size_t nbits) { + unsigned result = peekBits(reader, nbits); + advanceBits(reader, nbits); + return result; +} +#endif /*LODEPNG_COMPILE_DECODER*/ + +static unsigned reverseBits(unsigned bits, unsigned num) { + /*TODO: implement faster lookup table based version when needed*/ + unsigned i, result = 0; + for(i = 0; i < num; i++) result |= ((bits >> (num - i - 1u)) & 1u) << i; + return result; +} + +/* ////////////////////////////////////////////////////////////////////////// */ +/* / Deflate - Huffman / */ +/* ////////////////////////////////////////////////////////////////////////// */ + +#define FIRST_LENGTH_CODE_INDEX 257 +#define LAST_LENGTH_CODE_INDEX 285 +/*256 literals, the end code, some length codes, and 2 unused codes*/ +#define NUM_DEFLATE_CODE_SYMBOLS 288 +/*the distance codes have their own symbols, 30 used, 2 unused*/ +#define NUM_DISTANCE_SYMBOLS 32 +/*the code length codes. 0-15: code lengths, 16: copy previous 3-6 times, 17: 3-10 zeros, 18: 11-138 zeros*/ +#define NUM_CODE_LENGTH_CODES 19 + +/*the base lengths represented by codes 257-285*/ +static const unsigned LENGTHBASE[29] + = {3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, + 67, 83, 99, 115, 131, 163, 195, 227, 258}; + +/*the extra bits used by codes 257-285 (added to base length)*/ +static const unsigned LENGTHEXTRA[29] + = {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, + 4, 4, 4, 4, 5, 5, 5, 5, 0}; + +/*the base backwards distances (the bits of distance codes appear after length codes and use their own huffman tree)*/ +static const unsigned DISTANCEBASE[30] + = {1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, + 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577}; + +/*the extra bits of backwards distances (added to base)*/ +static const unsigned DISTANCEEXTRA[30] + = {0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, + 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13}; + +/*the order in which "code length alphabet code lengths" are stored as specified by deflate, out of this the huffman +tree of the dynamic huffman tree lengths is generated*/ +static const unsigned CLCL_ORDER[NUM_CODE_LENGTH_CODES] + = {16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15}; + +/* ////////////////////////////////////////////////////////////////////////// */ + +/* +Huffman tree struct, containing multiple representations of the tree +*/ +typedef struct HuffmanTree { + unsigned* codes; /*the huffman codes (bit patterns representing the symbols)*/ + unsigned* lengths; /*the lengths of the huffman codes*/ + unsigned maxbitlen; /*maximum number of bits a single code can get*/ + unsigned numcodes; /*number of symbols in the alphabet = number of codes*/ + /* for reading only */ + unsigned char* table_len; /*length of symbol from lookup table, or max length if secondary lookup needed*/ + unsigned short* table_value; /*value of symbol from lookup table, or pointer to secondary table if needed*/ +} HuffmanTree; + +static void HuffmanTree_init(HuffmanTree* tree) { + tree->codes = 0; + tree->lengths = 0; + tree->table_len = 0; + tree->table_value = 0; +} + +static void HuffmanTree_cleanup(HuffmanTree* tree) { + lodepng_free(tree->codes); + lodepng_free(tree->lengths); + lodepng_free(tree->table_len); + lodepng_free(tree->table_value); +} + +/* amount of bits for first huffman table lookup (aka root bits), see HuffmanTree_makeTable and huffmanDecodeSymbol.*/ +/* values 8u and 9u work the fastest */ +#define FIRSTBITS 9u + +/* a symbol value too big to represent any valid symbol, to indicate reading disallowed huffman bits combination, +which is possible in case of only 0 or 1 present symbols. */ +#define INVALIDSYMBOL 65535u + +/* make table for huffman decoding */ +static unsigned HuffmanTree_makeTable(HuffmanTree* tree) { + static const unsigned headsize = 1u << FIRSTBITS; /*size of the first table*/ + static const unsigned mask = (1u << FIRSTBITS) /*headsize*/ - 1u; + size_t i, numpresent, pointer, size; /*total table size*/ + unsigned* maxlens = (unsigned*)lodepng_malloc(headsize * sizeof(unsigned)); + if(!maxlens) return 83; /*alloc fail*/ + + /* compute maxlens: max total bit length of symbols sharing prefix in the first table*/ + lodepng_memset(maxlens, 0, headsize * sizeof(*maxlens)); + for(i = 0; i < tree->numcodes; i++) { + unsigned symbol = tree->codes[i]; + unsigned l = tree->lengths[i]; + unsigned index; + if(l <= FIRSTBITS) continue; /*symbols that fit in first table don't increase secondary table size*/ + /*get the FIRSTBITS MSBs, the MSBs of the symbol are encoded first. See later comment about the reversing*/ + index = reverseBits(symbol >> (l - FIRSTBITS), FIRSTBITS); + maxlens[index] = LODEPNG_MAX(maxlens[index], l); + } + /* compute total table size: size of first table plus all secondary tables for symbols longer than FIRSTBITS */ + size = headsize; + for(i = 0; i < headsize; ++i) { + unsigned l = maxlens[i]; + if(l > FIRSTBITS) size += (((size_t)1) << (l - FIRSTBITS)); + } + tree->table_len = (unsigned char*)lodepng_malloc(size * sizeof(*tree->table_len)); + tree->table_value = (unsigned short*)lodepng_malloc(size * sizeof(*tree->table_value)); + if(!tree->table_len || !tree->table_value) { + lodepng_free(maxlens); + /* freeing tree->table values is done at a higher scope */ + return 83; /*alloc fail*/ + } + /*initialize with an invalid length to indicate unused entries*/ + for(i = 0; i < size; ++i) tree->table_len[i] = 16; + + /*fill in the first table for long symbols: max prefix size and pointer to secondary tables*/ + pointer = headsize; + for(i = 0; i < headsize; ++i) { + unsigned l = maxlens[i]; + if(l <= FIRSTBITS) continue; + tree->table_len[i] = l; + tree->table_value[i] = (unsigned short)pointer; + pointer += (((size_t)1) << (l - FIRSTBITS)); + } + lodepng_free(maxlens); + + /*fill in the first table for short symbols, or secondary table for long symbols*/ + numpresent = 0; + for(i = 0; i < tree->numcodes; ++i) { + unsigned l = tree->lengths[i]; + unsigned symbol, reverse; + if(l == 0) continue; + symbol = tree->codes[i]; /*the huffman bit pattern. i itself is the value.*/ + /*reverse bits, because the huffman bits are given in MSB first order but the bit reader reads LSB first*/ + reverse = reverseBits(symbol, l); + numpresent++; + + if(l <= FIRSTBITS) { + /*short symbol, fully in first table, replicated num times if l < FIRSTBITS*/ + unsigned num = 1u << (FIRSTBITS - l); + unsigned j; + for(j = 0; j < num; ++j) { + /*bit reader will read the l bits of symbol first, the remaining FIRSTBITS - l bits go to the MSB's*/ + unsigned index = reverse | (j << l); + if(tree->table_len[index] != 16) return 55; /*invalid tree: long symbol shares prefix with short symbol*/ + tree->table_len[index] = l; + tree->table_value[index] = (unsigned short)i; + } + } else { + /*long symbol, shares prefix with other long symbols in first lookup table, needs second lookup*/ + /*the FIRSTBITS MSBs of the symbol are the first table index*/ + unsigned index = reverse & mask; + unsigned maxlen = tree->table_len[index]; + /*log2 of secondary table length, should be >= l - FIRSTBITS*/ + unsigned tablelen = maxlen - FIRSTBITS; + unsigned start = tree->table_value[index]; /*starting index in secondary table*/ + unsigned num = 1u << (tablelen - (l - FIRSTBITS)); /*amount of entries of this symbol in secondary table*/ + unsigned j; + if(maxlen < l) return 55; /*invalid tree: long symbol shares prefix with short symbol*/ + for(j = 0; j < num; ++j) { + unsigned reverse2 = reverse >> FIRSTBITS; /* l - FIRSTBITS bits */ + unsigned index2 = start + (reverse2 | (j << (l - FIRSTBITS))); + tree->table_len[index2] = l; + tree->table_value[index2] = (unsigned short)i; + } + } + } + + if(numpresent < 2) { + /* In case of exactly 1 symbol, in theory the huffman symbol needs 0 bits, + but deflate uses 1 bit instead. In case of 0 symbols, no symbols can + appear at all, but such huffman tree could still exist (e.g. if distance + codes are never used). In both cases, not all symbols of the table will be + filled in. Fill them in with an invalid symbol value so returning them from + huffmanDecodeSymbol will cause error. */ + for(i = 0; i < size; ++i) { + if(tree->table_len[i] == 16) { + /* As length, use a value smaller than FIRSTBITS for the head table, + and a value larger than FIRSTBITS for the secondary table, to ensure + valid behavior for advanceBits when reading this symbol. */ + tree->table_len[i] = (i < headsize) ? 1 : (FIRSTBITS + 1); + tree->table_value[i] = INVALIDSYMBOL; + } + } + } else { + /* A good huffman tree has N * 2 - 1 nodes, of which N - 1 are internal nodes. + If that is not the case (due to too long length codes), the table will not + have been fully used, and this is an error (not all bit combinations can be + decoded): an oversubscribed huffman tree, indicated by error 55. */ + for(i = 0; i < size; ++i) { + if(tree->table_len[i] == 16) return 55; + } + } + + return 0; +} + +/* +Second step for the ...makeFromLengths and ...makeFromFrequencies functions. +numcodes, lengths and maxbitlen must already be filled in correctly. return +value is error. +*/ +static unsigned HuffmanTree_makeFromLengths2(HuffmanTree* tree) { + unsigned* blcount; + unsigned* nextcode; + unsigned error = 0; + unsigned bits, n; + + tree->codes = (unsigned*)lodepng_malloc(tree->numcodes * sizeof(unsigned)); + blcount = (unsigned*)lodepng_malloc((tree->maxbitlen + 1) * sizeof(unsigned)); + nextcode = (unsigned*)lodepng_malloc((tree->maxbitlen + 1) * sizeof(unsigned)); + if(!tree->codes || !blcount || !nextcode) error = 83; /*alloc fail*/ + + if(!error) { + for(n = 0; n != tree->maxbitlen + 1; n++) blcount[n] = nextcode[n] = 0; + /*step 1: count number of instances of each code length*/ + for(bits = 0; bits != tree->numcodes; ++bits) ++blcount[tree->lengths[bits]]; + /*step 2: generate the nextcode values*/ + for(bits = 1; bits <= tree->maxbitlen; ++bits) { + nextcode[bits] = (nextcode[bits - 1] + blcount[bits - 1]) << 1u; + } + /*step 3: generate all the codes*/ + for(n = 0; n != tree->numcodes; ++n) { + if(tree->lengths[n] != 0) { + tree->codes[n] = nextcode[tree->lengths[n]]++; + /*remove superfluous bits from the code*/ + tree->codes[n] &= ((1u << tree->lengths[n]) - 1u); + } + } + } + + lodepng_free(blcount); + lodepng_free(nextcode); + + if(!error) error = HuffmanTree_makeTable(tree); + return error; +} + +/* +given the code lengths (as stored in the PNG file), generate the tree as defined +by Deflate. maxbitlen is the maximum bits that a code in the tree can have. +return value is error. +*/ +static unsigned HuffmanTree_makeFromLengths(HuffmanTree* tree, const unsigned* bitlen, + size_t numcodes, unsigned maxbitlen) { + unsigned i; + tree->lengths = (unsigned*)lodepng_malloc(numcodes * sizeof(unsigned)); + if(!tree->lengths) return 83; /*alloc fail*/ + for(i = 0; i != numcodes; ++i) tree->lengths[i] = bitlen[i]; + tree->numcodes = (unsigned)numcodes; /*number of symbols*/ + tree->maxbitlen = maxbitlen; + return HuffmanTree_makeFromLengths2(tree); +} + +#ifdef LODEPNG_COMPILE_ENCODER + +/*BPM: Boundary Package Merge, see "A Fast and Space-Economical Algorithm for Length-Limited Coding", +Jyrki Katajainen, Alistair Moffat, Andrew Turpin, 1995.*/ + +/*chain node for boundary package merge*/ +typedef struct BPMNode { + int weight; /*the sum of all weights in this chain*/ + unsigned index; /*index of this leaf node (called "count" in the paper)*/ + struct BPMNode* tail; /*the next nodes in this chain (null if last)*/ + int in_use; +} BPMNode; + +/*lists of chains*/ +typedef struct BPMLists { + /*memory pool*/ + unsigned memsize; + BPMNode* memory; + unsigned numfree; + unsigned nextfree; + BPMNode** freelist; + /*two heads of lookahead chains per list*/ + unsigned listsize; + BPMNode** chains0; + BPMNode** chains1; +} BPMLists; + +/*creates a new chain node with the given parameters, from the memory in the lists */ +static BPMNode* bpmnode_create(BPMLists* lists, int weight, unsigned index, BPMNode* tail) { + unsigned i; + BPMNode* result; + + /*memory full, so garbage collect*/ + if(lists->nextfree >= lists->numfree) { + /*mark only those that are in use*/ + for(i = 0; i != lists->memsize; ++i) lists->memory[i].in_use = 0; + for(i = 0; i != lists->listsize; ++i) { + BPMNode* node; + for(node = lists->chains0[i]; node != 0; node = node->tail) node->in_use = 1; + for(node = lists->chains1[i]; node != 0; node = node->tail) node->in_use = 1; + } + /*collect those that are free*/ + lists->numfree = 0; + for(i = 0; i != lists->memsize; ++i) { + if(!lists->memory[i].in_use) lists->freelist[lists->numfree++] = &lists->memory[i]; + } + lists->nextfree = 0; + } + + result = lists->freelist[lists->nextfree++]; + result->weight = weight; + result->index = index; + result->tail = tail; + return result; +} + +/*sort the leaves with stable mergesort*/ +static void bpmnode_sort(BPMNode* leaves, size_t num) { + BPMNode* mem = (BPMNode*)lodepng_malloc(sizeof(*leaves) * num); + size_t width, counter = 0; + for(width = 1; width < num; width *= 2) { + BPMNode* a = (counter & 1) ? mem : leaves; + BPMNode* b = (counter & 1) ? leaves : mem; + size_t p; + for(p = 0; p < num; p += 2 * width) { + size_t q = (p + width > num) ? num : (p + width); + size_t r = (p + 2 * width > num) ? num : (p + 2 * width); + size_t i = p, j = q, k; + for(k = p; k < r; k++) { + if(i < q && (j >= r || a[i].weight <= a[j].weight)) b[k] = a[i++]; + else b[k] = a[j++]; + } + } + counter++; + } + if(counter & 1) lodepng_memcpy(leaves, mem, sizeof(*leaves) * num); + lodepng_free(mem); +} + +/*Boundary Package Merge step, numpresent is the amount of leaves, and c is the current chain.*/ +static void boundaryPM(BPMLists* lists, BPMNode* leaves, size_t numpresent, int c, int num) { + unsigned lastindex = lists->chains1[c]->index; + + if(c == 0) { + if(lastindex >= numpresent) return; + lists->chains0[c] = lists->chains1[c]; + lists->chains1[c] = bpmnode_create(lists, leaves[lastindex].weight, lastindex + 1, 0); + } else { + /*sum of the weights of the head nodes of the previous lookahead chains.*/ + int sum = lists->chains0[c - 1]->weight + lists->chains1[c - 1]->weight; + lists->chains0[c] = lists->chains1[c]; + if(lastindex < numpresent && sum > leaves[lastindex].weight) { + lists->chains1[c] = bpmnode_create(lists, leaves[lastindex].weight, lastindex + 1, lists->chains1[c]->tail); + return; + } + lists->chains1[c] = bpmnode_create(lists, sum, lastindex, lists->chains1[c - 1]); + /*in the end we are only interested in the chain of the last list, so no + need to recurse if we're at the last one (this gives measurable speedup)*/ + if(num + 1 < (int)(2 * numpresent - 2)) { + boundaryPM(lists, leaves, numpresent, c - 1, num); + boundaryPM(lists, leaves, numpresent, c - 1, num); + } + } +} + +unsigned lodepng_huffman_code_lengths(unsigned* lengths, const unsigned* frequencies, + size_t numcodes, unsigned maxbitlen) { + unsigned error = 0; + unsigned i; + size_t numpresent = 0; /*number of symbols with non-zero frequency*/ + BPMNode* leaves; /*the symbols, only those with > 0 frequency*/ + + if(numcodes == 0) return 80; /*error: a tree of 0 symbols is not supposed to be made*/ + if((1u << maxbitlen) < (unsigned)numcodes) return 80; /*error: represent all symbols*/ + + leaves = (BPMNode*)lodepng_malloc(numcodes * sizeof(*leaves)); + if(!leaves) return 83; /*alloc fail*/ + + for(i = 0; i != numcodes; ++i) { + if(frequencies[i] > 0) { + leaves[numpresent].weight = (int)frequencies[i]; + leaves[numpresent].index = i; + ++numpresent; + } + } + + lodepng_memset(lengths, 0, numcodes * sizeof(*lengths)); + + /*ensure at least two present symbols. There should be at least one symbol + according to RFC 1951 section 3.2.7. Some decoders incorrectly require two. To + make these work as well ensure there are at least two symbols. The + Package-Merge code below also doesn't work correctly if there's only one + symbol, it'd give it the theoretical 0 bits but in practice zlib wants 1 bit*/ + if(numpresent == 0) { + lengths[0] = lengths[1] = 1; /*note that for RFC 1951 section 3.2.7, only lengths[0] = 1 is needed*/ + } else if(numpresent == 1) { + lengths[leaves[0].index] = 1; + lengths[leaves[0].index == 0 ? 1 : 0] = 1; + } else { + BPMLists lists; + BPMNode* node; + + bpmnode_sort(leaves, numpresent); + + lists.listsize = maxbitlen; + lists.memsize = 2 * maxbitlen * (maxbitlen + 1); + lists.nextfree = 0; + lists.numfree = lists.memsize; + lists.memory = (BPMNode*)lodepng_malloc(lists.memsize * sizeof(*lists.memory)); + lists.freelist = (BPMNode**)lodepng_malloc(lists.memsize * sizeof(BPMNode*)); + lists.chains0 = (BPMNode**)lodepng_malloc(lists.listsize * sizeof(BPMNode*)); + lists.chains1 = (BPMNode**)lodepng_malloc(lists.listsize * sizeof(BPMNode*)); + if(!lists.memory || !lists.freelist || !lists.chains0 || !lists.chains1) error = 83; /*alloc fail*/ + + if(!error) { + for(i = 0; i != lists.memsize; ++i) lists.freelist[i] = &lists.memory[i]; + + bpmnode_create(&lists, leaves[0].weight, 1, 0); + bpmnode_create(&lists, leaves[1].weight, 2, 0); + + for(i = 0; i != lists.listsize; ++i) { + lists.chains0[i] = &lists.memory[0]; + lists.chains1[i] = &lists.memory[1]; + } + + /*each boundaryPM call adds one chain to the last list, and we need 2 * numpresent - 2 chains.*/ + for(i = 2; i != 2 * numpresent - 2; ++i) boundaryPM(&lists, leaves, numpresent, (int)maxbitlen - 1, (int)i); + + for(node = lists.chains1[maxbitlen - 1]; node; node = node->tail) { + for(i = 0; i != node->index; ++i) ++lengths[leaves[i].index]; + } + } + + lodepng_free(lists.memory); + lodepng_free(lists.freelist); + lodepng_free(lists.chains0); + lodepng_free(lists.chains1); + } + + lodepng_free(leaves); + return error; +} + +/*Create the Huffman tree given the symbol frequencies*/ +static unsigned HuffmanTree_makeFromFrequencies(HuffmanTree* tree, const unsigned* frequencies, + size_t mincodes, size_t numcodes, unsigned maxbitlen) { + unsigned error = 0; + while(!frequencies[numcodes - 1] && numcodes > mincodes) --numcodes; /*trim zeroes*/ + tree->lengths = (unsigned*)lodepng_malloc(numcodes * sizeof(unsigned)); + if(!tree->lengths) return 83; /*alloc fail*/ + tree->maxbitlen = maxbitlen; + tree->numcodes = (unsigned)numcodes; /*number of symbols*/ + + error = lodepng_huffman_code_lengths(tree->lengths, frequencies, numcodes, maxbitlen); + if(!error) error = HuffmanTree_makeFromLengths2(tree); + return error; +} +#endif /*LODEPNG_COMPILE_ENCODER*/ + +/*get the literal and length code tree of a deflated block with fixed tree, as per the deflate specification*/ +static unsigned generateFixedLitLenTree(HuffmanTree* tree) { + unsigned i, error = 0; + unsigned* bitlen = (unsigned*)lodepng_malloc(NUM_DEFLATE_CODE_SYMBOLS * sizeof(unsigned)); + if(!bitlen) return 83; /*alloc fail*/ + + /*288 possible codes: 0-255=literals, 256=endcode, 257-285=lengthcodes, 286-287=unused*/ + for(i = 0; i <= 143; ++i) bitlen[i] = 8; + for(i = 144; i <= 255; ++i) bitlen[i] = 9; + for(i = 256; i <= 279; ++i) bitlen[i] = 7; + for(i = 280; i <= 287; ++i) bitlen[i] = 8; + + error = HuffmanTree_makeFromLengths(tree, bitlen, NUM_DEFLATE_CODE_SYMBOLS, 15); + + lodepng_free(bitlen); + return error; +} + +/*get the distance code tree of a deflated block with fixed tree, as specified in the deflate specification*/ +static unsigned generateFixedDistanceTree(HuffmanTree* tree) { + unsigned i, error = 0; + unsigned* bitlen = (unsigned*)lodepng_malloc(NUM_DISTANCE_SYMBOLS * sizeof(unsigned)); + if(!bitlen) return 83; /*alloc fail*/ + + /*there are 32 distance codes, but 30-31 are unused*/ + for(i = 0; i != NUM_DISTANCE_SYMBOLS; ++i) bitlen[i] = 5; + error = HuffmanTree_makeFromLengths(tree, bitlen, NUM_DISTANCE_SYMBOLS, 15); + + lodepng_free(bitlen); + return error; +} + +#ifdef LODEPNG_COMPILE_DECODER + +/* +returns the code. The bit reader must already have been ensured at least 15 bits +*/ +static unsigned huffmanDecodeSymbol(LodePNGBitReader* reader, const HuffmanTree* codetree) { + unsigned short code = peekBits(reader, FIRSTBITS); + unsigned short l = codetree->table_len[code]; + unsigned short value = codetree->table_value[code]; + if(l <= FIRSTBITS) { + advanceBits(reader, l); + return value; + } else { + advanceBits(reader, FIRSTBITS); + value += peekBits(reader, l - FIRSTBITS); + advanceBits(reader, codetree->table_len[value] - FIRSTBITS); + return codetree->table_value[value]; + } +} +#endif /*LODEPNG_COMPILE_DECODER*/ + +#ifdef LODEPNG_COMPILE_DECODER + +/* ////////////////////////////////////////////////////////////////////////// */ +/* / Inflator (Decompressor) / */ +/* ////////////////////////////////////////////////////////////////////////// */ + +/*get the tree of a deflated block with fixed tree, as specified in the deflate specification +Returns error code.*/ +static unsigned getTreeInflateFixed(HuffmanTree* tree_ll, HuffmanTree* tree_d) { + unsigned error = generateFixedLitLenTree(tree_ll); + if(error) return error; + return generateFixedDistanceTree(tree_d); +} + +/*get the tree of a deflated block with dynamic tree, the tree itself is also Huffman compressed with a known tree*/ +static unsigned getTreeInflateDynamic(HuffmanTree* tree_ll, HuffmanTree* tree_d, + LodePNGBitReader* reader) { + /*make sure that length values that aren't filled in will be 0, or a wrong tree will be generated*/ + unsigned error = 0; + unsigned n, HLIT, HDIST, HCLEN, i; + + /*see comments in deflateDynamic for explanation of the context and these variables, it is analogous*/ + unsigned* bitlen_ll = 0; /*lit,len code lengths*/ + unsigned* bitlen_d = 0; /*dist code lengths*/ + /*code length code lengths ("clcl"), the bit lengths of the huffman tree used to compress bitlen_ll and bitlen_d*/ + unsigned* bitlen_cl = 0; + HuffmanTree tree_cl; /*the code tree for code length codes (the huffman tree for compressed huffman trees)*/ + + if(reader->bitsize - reader->bp < 14) return 49; /*error: the bit pointer is or will go past the memory*/ + ensureBits17(reader, 14); + + /*number of literal/length codes + 257. Unlike the spec, the value 257 is added to it here already*/ + HLIT = readBits(reader, 5) + 257; + /*number of distance codes. Unlike the spec, the value 1 is added to it here already*/ + HDIST = readBits(reader, 5) + 1; + /*number of code length codes. Unlike the spec, the value 4 is added to it here already*/ + HCLEN = readBits(reader, 4) + 4; + + bitlen_cl = (unsigned*)lodepng_malloc(NUM_CODE_LENGTH_CODES * sizeof(unsigned)); + if(!bitlen_cl) return 83 /*alloc fail*/; + + HuffmanTree_init(&tree_cl); + + while(!error) { + /*read the code length codes out of 3 * (amount of code length codes) bits*/ + if(lodepng_gtofl(reader->bp, HCLEN * 3, reader->bitsize)) { + ERROR_BREAK(50); /*error: the bit pointer is or will go past the memory*/ + } + for(i = 0; i != HCLEN; ++i) { + ensureBits9(reader, 3); /*out of bounds already checked above */ + bitlen_cl[CLCL_ORDER[i]] = readBits(reader, 3); + } + for(i = HCLEN; i != NUM_CODE_LENGTH_CODES; ++i) { + bitlen_cl[CLCL_ORDER[i]] = 0; + } + + error = HuffmanTree_makeFromLengths(&tree_cl, bitlen_cl, NUM_CODE_LENGTH_CODES, 7); + if(error) break; + + /*now we can use this tree to read the lengths for the tree that this function will return*/ + bitlen_ll = (unsigned*)lodepng_malloc(NUM_DEFLATE_CODE_SYMBOLS * sizeof(unsigned)); + bitlen_d = (unsigned*)lodepng_malloc(NUM_DISTANCE_SYMBOLS * sizeof(unsigned)); + if(!bitlen_ll || !bitlen_d) ERROR_BREAK(83 /*alloc fail*/); + lodepng_memset(bitlen_ll, 0, NUM_DEFLATE_CODE_SYMBOLS * sizeof(*bitlen_ll)); + lodepng_memset(bitlen_d, 0, NUM_DISTANCE_SYMBOLS * sizeof(*bitlen_d)); + + /*i is the current symbol we're reading in the part that contains the code lengths of lit/len and dist codes*/ + i = 0; + while(i < HLIT + HDIST) { + unsigned code; + ensureBits25(reader, 22); /* up to 15 bits for huffman code, up to 7 extra bits below*/ + code = huffmanDecodeSymbol(reader, &tree_cl); + if(code <= 15) /*a length code*/ { + if(i < HLIT) bitlen_ll[i] = code; + else bitlen_d[i - HLIT] = code; + ++i; + } else if(code == 16) /*repeat previous*/ { + unsigned replength = 3; /*read in the 2 bits that indicate repeat length (3-6)*/ + unsigned value; /*set value to the previous code*/ + + if(i == 0) ERROR_BREAK(54); /*can't repeat previous if i is 0*/ + + replength += readBits(reader, 2); + + if(i < HLIT + 1) value = bitlen_ll[i - 1]; + else value = bitlen_d[i - HLIT - 1]; + /*repeat this value in the next lengths*/ + for(n = 0; n < replength; ++n) { + if(i >= HLIT + HDIST) ERROR_BREAK(13); /*error: i is larger than the amount of codes*/ + if(i < HLIT) bitlen_ll[i] = value; + else bitlen_d[i - HLIT] = value; + ++i; + } + } else if(code == 17) /*repeat "0" 3-10 times*/ { + unsigned replength = 3; /*read in the bits that indicate repeat length*/ + replength += readBits(reader, 3); + + /*repeat this value in the next lengths*/ + for(n = 0; n < replength; ++n) { + if(i >= HLIT + HDIST) ERROR_BREAK(14); /*error: i is larger than the amount of codes*/ + + if(i < HLIT) bitlen_ll[i] = 0; + else bitlen_d[i - HLIT] = 0; + ++i; + } + } else if(code == 18) /*repeat "0" 11-138 times*/ { + unsigned replength = 11; /*read in the bits that indicate repeat length*/ + replength += readBits(reader, 7); + + /*repeat this value in the next lengths*/ + for(n = 0; n < replength; ++n) { + if(i >= HLIT + HDIST) ERROR_BREAK(15); /*error: i is larger than the amount of codes*/ + + if(i < HLIT) bitlen_ll[i] = 0; + else bitlen_d[i - HLIT] = 0; + ++i; + } + } else /*if(code == INVALIDSYMBOL)*/ { + ERROR_BREAK(16); /*error: tried to read disallowed huffman symbol*/ + } + /*check if any of the ensureBits above went out of bounds*/ + if(reader->bp > reader->bitsize) { + /*return error code 10 or 11 depending on the situation that happened in huffmanDecodeSymbol + (10=no endcode, 11=wrong jump outside of tree)*/ + /* TODO: revise error codes 10,11,50: the above comment is no longer valid */ + ERROR_BREAK(50); /*error, bit pointer jumps past memory*/ + } + } + if(error) break; + + if(bitlen_ll[256] == 0) ERROR_BREAK(64); /*the length of the end code 256 must be larger than 0*/ + + /*now we've finally got HLIT and HDIST, so generate the code trees, and the function is done*/ + error = HuffmanTree_makeFromLengths(tree_ll, bitlen_ll, NUM_DEFLATE_CODE_SYMBOLS, 15); + if(error) break; + error = HuffmanTree_makeFromLengths(tree_d, bitlen_d, NUM_DISTANCE_SYMBOLS, 15); + + break; /*end of error-while*/ + } + + lodepng_free(bitlen_cl); + lodepng_free(bitlen_ll); + lodepng_free(bitlen_d); + HuffmanTree_cleanup(&tree_cl); + + return error; +} + +/*inflate a block with dynamic of fixed Huffman tree. btype must be 1 or 2.*/ +static unsigned inflateHuffmanBlock(ucvector* out, LodePNGBitReader* reader, + unsigned btype, size_t max_output_size) { + unsigned error = 0; + HuffmanTree tree_ll; /*the huffman tree for literal and length codes*/ + HuffmanTree tree_d; /*the huffman tree for distance codes*/ + const size_t reserved_size = 260; /* must be at least 258 for max length, and a few extra for adding a few extra literals */ + int done = 0; + + if(!ucvector_reserve(out, out->size + reserved_size)) return 83; /*alloc fail*/ + + HuffmanTree_init(&tree_ll); + HuffmanTree_init(&tree_d); + + if(btype == 1) error = getTreeInflateFixed(&tree_ll, &tree_d); + else /*if(btype == 2)*/ error = getTreeInflateDynamic(&tree_ll, &tree_d, reader); + + + while(!error && !done) /*decode all symbols until end reached, breaks at end code*/ { + /*code_ll is literal, length or end code*/ + unsigned code_ll; + /* ensure enough bits for 2 huffman code reads (15 bits each): if the first is a literal, a second literal is read at once. This + appears to be slightly faster, than ensuring 20 bits here for 1 huffman symbol and the potential 5 extra bits for the length symbol.*/ + ensureBits32(reader, 30); + code_ll = huffmanDecodeSymbol(reader, &tree_ll); + if(code_ll <= 255) { + /*slightly faster code path if multiple literals in a row*/ + out->data[out->size++] = (unsigned char)code_ll; + code_ll = huffmanDecodeSymbol(reader, &tree_ll); + } + if(code_ll <= 255) /*literal symbol*/ { + out->data[out->size++] = (unsigned char)code_ll; + } else if(code_ll >= FIRST_LENGTH_CODE_INDEX && code_ll <= LAST_LENGTH_CODE_INDEX) /*length code*/ { + unsigned code_d, distance; + unsigned numextrabits_l, numextrabits_d; /*extra bits for length and distance*/ + size_t start, backward, length; + + /*part 1: get length base*/ + length = LENGTHBASE[code_ll - FIRST_LENGTH_CODE_INDEX]; + + /*part 2: get extra bits and add the value of that to length*/ + numextrabits_l = LENGTHEXTRA[code_ll - FIRST_LENGTH_CODE_INDEX]; + if(numextrabits_l != 0) { + /* bits already ensured above */ + ensureBits25(reader, 5); + length += readBits(reader, numextrabits_l); + } + + /*part 3: get distance code*/ + ensureBits32(reader, 28); /* up to 15 for the huffman symbol, up to 13 for the extra bits */ + code_d = huffmanDecodeSymbol(reader, &tree_d); + if(code_d > 29) { + if(code_d <= 31) { + ERROR_BREAK(18); /*error: invalid distance code (30-31 are never used)*/ + } else /* if(code_d == INVALIDSYMBOL) */{ + ERROR_BREAK(16); /*error: tried to read disallowed huffman symbol*/ + } + } + distance = DISTANCEBASE[code_d]; + + /*part 4: get extra bits from distance*/ + numextrabits_d = DISTANCEEXTRA[code_d]; + if(numextrabits_d != 0) { + /* bits already ensured above */ + distance += readBits(reader, numextrabits_d); + } + + /*part 5: fill in all the out[n] values based on the length and dist*/ + start = out->size; + if(distance > start) ERROR_BREAK(52); /*too long backward distance*/ + backward = start - distance; + + out->size += length; + if(distance < length) { + size_t forward; + lodepng_memcpy(out->data + start, out->data + backward, distance); + start += distance; + for(forward = distance; forward < length; ++forward) { + out->data[start++] = out->data[backward++]; + } + } else { + lodepng_memcpy(out->data + start, out->data + backward, length); + } + } else if(code_ll == 256) { + done = 1; /*end code, finish the loop*/ + } else /*if(code_ll == INVALIDSYMBOL)*/ { + ERROR_BREAK(16); /*error: tried to read disallowed huffman symbol*/ + } + if(out->allocsize - out->size < reserved_size) { + if(!ucvector_reserve(out, out->size + reserved_size)) ERROR_BREAK(83); /*alloc fail*/ + } + /*check if any of the ensureBits above went out of bounds*/ + if(reader->bp > reader->bitsize) { + /*return error code 10 or 11 depending on the situation that happened in huffmanDecodeSymbol + (10=no endcode, 11=wrong jump outside of tree)*/ + /* TODO: revise error codes 10,11,50: the above comment is no longer valid */ + ERROR_BREAK(51); /*error, bit pointer jumps past memory*/ + } + if(max_output_size && out->size > max_output_size) { + ERROR_BREAK(109); /*error, larger than max size*/ + } + } + + HuffmanTree_cleanup(&tree_ll); + HuffmanTree_cleanup(&tree_d); + + return error; +} + +static unsigned inflateNoCompression(ucvector* out, LodePNGBitReader* reader, + const LodePNGDecompressSettings* settings) { + size_t bytepos; + size_t size = reader->size; + unsigned LEN, NLEN, error = 0; + + /*go to first boundary of byte*/ + bytepos = (reader->bp + 7u) >> 3u; + + /*read LEN (2 bytes) and NLEN (2 bytes)*/ + if(bytepos + 4 >= size) return 52; /*error, bit pointer will jump past memory*/ + LEN = (unsigned)reader->data[bytepos] + ((unsigned)reader->data[bytepos + 1] << 8u); bytepos += 2; + NLEN = (unsigned)reader->data[bytepos] + ((unsigned)reader->data[bytepos + 1] << 8u); bytepos += 2; + + /*check if 16-bit NLEN is really the one's complement of LEN*/ + if(!settings->ignore_nlen && LEN + NLEN != 65535) { + return 21; /*error: NLEN is not one's complement of LEN*/ + } + + if(!ucvector_resize(out, out->size + LEN)) return 83; /*alloc fail*/ + + /*read the literal data: LEN bytes are now stored in the out buffer*/ + if(bytepos + LEN > size) return 23; /*error: reading outside of in buffer*/ + + /*out->data can be NULL (when LEN is zero), and arithmetics on NULL ptr is undefined*/ + if (LEN) { + lodepng_memcpy(out->data + out->size - LEN, reader->data + bytepos, LEN); + bytepos += LEN; + } + + reader->bp = bytepos << 3u; + + return error; +} + +static unsigned lodepng_inflatev(ucvector* out, + const unsigned char* in, size_t insize, + const LodePNGDecompressSettings* settings) { + unsigned BFINAL = 0; + LodePNGBitReader reader; + unsigned error = LodePNGBitReader_init(&reader, in, insize); + + if(error) return error; + + while(!BFINAL) { + unsigned BTYPE; + if(reader.bitsize - reader.bp < 3) return 52; /*error, bit pointer will jump past memory*/ + ensureBits9(&reader, 3); + BFINAL = readBits(&reader, 1); + BTYPE = readBits(&reader, 2); + + if(BTYPE == 3) return 20; /*error: invalid BTYPE*/ + else if(BTYPE == 0) error = inflateNoCompression(out, &reader, settings); /*no compression*/ + else error = inflateHuffmanBlock(out, &reader, BTYPE, settings->max_output_size); /*compression, BTYPE 01 or 10*/ + if(!error && settings->max_output_size && out->size > settings->max_output_size) error = 109; + if(error) break; + } + + return error; +} + +unsigned lodepng_inflate(unsigned char** out, size_t* outsize, + const unsigned char* in, size_t insize, + const LodePNGDecompressSettings* settings) { + ucvector v = ucvector_init(*out, *outsize); + unsigned error = lodepng_inflatev(&v, in, insize, settings); + *out = v.data; + *outsize = v.size; + return error; +} + +static unsigned inflatev(ucvector* out, const unsigned char* in, size_t insize, + const LodePNGDecompressSettings* settings) { + if(settings->custom_inflate) { + unsigned error = settings->custom_inflate(&out->data, &out->size, in, insize, settings); + out->allocsize = out->size; + if(error) { + /*the custom inflate is allowed to have its own error codes, however, we translate it to code 110*/ + error = 110; + /*if there's a max output size, and the custom zlib returned error, then indicate that error instead*/ + if(settings->max_output_size && out->size > settings->max_output_size) error = 109; + } + return error; + } else { + return lodepng_inflatev(out, in, insize, settings); + } +} + +#endif /*LODEPNG_COMPILE_DECODER*/ + +#ifdef LODEPNG_COMPILE_ENCODER + +/* ////////////////////////////////////////////////////////////////////////// */ +/* / Deflator (Compressor) / */ +/* ////////////////////////////////////////////////////////////////////////// */ + +static const unsigned MAX_SUPPORTED_DEFLATE_LENGTH = 258; + +/*search the index in the array, that has the largest value smaller than or equal to the given value, +given array must be sorted (if no value is smaller, it returns the size of the given array)*/ +static size_t searchCodeIndex(const unsigned* array, size_t array_size, size_t value) { + /*binary search (only small gain over linear). TODO: use CPU log2 instruction for getting symbols instead*/ + size_t left = 1; + size_t right = array_size - 1; + + while(left <= right) { + size_t mid = (left + right) >> 1; + if(array[mid] >= value) right = mid - 1; + else left = mid + 1; + } + if(left >= array_size || array[left] > value) left--; + return left; +} + +static void addLengthDistance(uivector* values, size_t length, size_t distance) { + /*values in encoded vector are those used by deflate: + 0-255: literal bytes + 256: end + 257-285: length/distance pair (length code, followed by extra length bits, distance code, extra distance bits) + 286-287: invalid*/ + + unsigned length_code = (unsigned)searchCodeIndex(LENGTHBASE, 29, length); + unsigned extra_length = (unsigned)(length - LENGTHBASE[length_code]); + unsigned dist_code = (unsigned)searchCodeIndex(DISTANCEBASE, 30, distance); + unsigned extra_distance = (unsigned)(distance - DISTANCEBASE[dist_code]); + + size_t pos = values->size; + /*TODO: return error when this fails (out of memory)*/ + unsigned ok = uivector_resize(values, values->size + 4); + if(ok) { + values->data[pos + 0] = length_code + FIRST_LENGTH_CODE_INDEX; + values->data[pos + 1] = extra_length; + values->data[pos + 2] = dist_code; + values->data[pos + 3] = extra_distance; + } +} + +/*3 bytes of data get encoded into two bytes. The hash cannot use more than 3 +bytes as input because 3 is the minimum match length for deflate*/ +static const unsigned HASH_NUM_VALUES = 65536; +static const unsigned HASH_BIT_MASK = 65535; /*HASH_NUM_VALUES - 1, but C90 does not like that as initializer*/ + +typedef struct Hash { + int* head; /*hash value to head circular pos - can be outdated if went around window*/ + /*circular pos to prev circular pos*/ + unsigned short* chain; + int* val; /*circular pos to hash value*/ + + /*TODO: do this not only for zeros but for any repeated byte. However for PNG + it's always going to be the zeros that dominate, so not important for PNG*/ + int* headz; /*similar to head, but for chainz*/ + unsigned short* chainz; /*those with same amount of zeros*/ + unsigned short* zeros; /*length of zeros streak, used as a second hash chain*/ +} Hash; + +static unsigned hash_init(Hash* hash, unsigned windowsize) { + unsigned i; + hash->head = (int*)lodepng_malloc(sizeof(int) * HASH_NUM_VALUES); + hash->val = (int*)lodepng_malloc(sizeof(int) * windowsize); + hash->chain = (unsigned short*)lodepng_malloc(sizeof(unsigned short) * windowsize); + + hash->zeros = (unsigned short*)lodepng_malloc(sizeof(unsigned short) * windowsize); + hash->headz = (int*)lodepng_malloc(sizeof(int) * (MAX_SUPPORTED_DEFLATE_LENGTH + 1)); + hash->chainz = (unsigned short*)lodepng_malloc(sizeof(unsigned short) * windowsize); + + if(!hash->head || !hash->chain || !hash->val || !hash->headz|| !hash->chainz || !hash->zeros) { + return 83; /*alloc fail*/ + } + + /*initialize hash table*/ + for(i = 0; i != HASH_NUM_VALUES; ++i) hash->head[i] = -1; + for(i = 0; i != windowsize; ++i) hash->val[i] = -1; + for(i = 0; i != windowsize; ++i) hash->chain[i] = i; /*same value as index indicates uninitialized*/ + + for(i = 0; i <= MAX_SUPPORTED_DEFLATE_LENGTH; ++i) hash->headz[i] = -1; + for(i = 0; i != windowsize; ++i) hash->chainz[i] = i; /*same value as index indicates uninitialized*/ + + return 0; +} + +static void hash_cleanup(Hash* hash) { + lodepng_free(hash->head); + lodepng_free(hash->val); + lodepng_free(hash->chain); + + lodepng_free(hash->zeros); + lodepng_free(hash->headz); + lodepng_free(hash->chainz); +} + + + +static unsigned getHash(const unsigned char* data, size_t size, size_t pos) { + unsigned result = 0; + if(pos + 2 < size) { + /*A simple shift and xor hash is used. Since the data of PNGs is dominated + by zeroes due to the filters, a better hash does not have a significant + effect on speed in traversing the chain, and causes more time spend on + calculating the hash.*/ + result ^= ((unsigned)data[pos + 0] << 0u); + result ^= ((unsigned)data[pos + 1] << 4u); + result ^= ((unsigned)data[pos + 2] << 8u); + } else { + size_t amount, i; + if(pos >= size) return 0; + amount = size - pos; + for(i = 0; i != amount; ++i) result ^= ((unsigned)data[pos + i] << (i * 8u)); + } + return result & HASH_BIT_MASK; +} + +static unsigned countZeros(const unsigned char* data, size_t size, size_t pos) { + const unsigned char* start = data + pos; + const unsigned char* end = start + MAX_SUPPORTED_DEFLATE_LENGTH; + if(end > data + size) end = data + size; + data = start; + while(data != end && *data == 0) ++data; + /*subtracting two addresses returned as 32-bit number (max value is MAX_SUPPORTED_DEFLATE_LENGTH)*/ + return (unsigned)(data - start); +} + +/*wpos = pos & (windowsize - 1)*/ +static void updateHashChain(Hash* hash, size_t wpos, unsigned hashval, unsigned short numzeros) { + hash->val[wpos] = (int)hashval; + if(hash->head[hashval] != -1) hash->chain[wpos] = hash->head[hashval]; + hash->head[hashval] = (int)wpos; + + hash->zeros[wpos] = numzeros; + if(hash->headz[numzeros] != -1) hash->chainz[wpos] = hash->headz[numzeros]; + hash->headz[numzeros] = (int)wpos; +} + +/* +LZ77-encode the data. Return value is error code. The input are raw bytes, the output +is in the form of unsigned integers with codes representing for example literal bytes, or +length/distance pairs. +It uses a hash table technique to let it encode faster. When doing LZ77 encoding, a +sliding window (of windowsize) is used, and all past bytes in that window can be used as +the "dictionary". A brute force search through all possible distances would be slow, and +this hash technique is one out of several ways to speed this up. +*/ +static unsigned encodeLZ77(uivector* out, Hash* hash, + const unsigned char* in, size_t inpos, size_t insize, unsigned windowsize, + unsigned minmatch, unsigned nicematch, unsigned lazymatching) { + size_t pos; + unsigned i, error = 0; + /*for large window lengths, assume the user wants no compression loss. Otherwise, max hash chain length speedup.*/ + unsigned maxchainlength = windowsize >= 8192 ? windowsize : windowsize / 8u; + unsigned maxlazymatch = windowsize >= 8192 ? MAX_SUPPORTED_DEFLATE_LENGTH : 64; + + unsigned usezeros = 1; /*not sure if setting it to false for windowsize < 8192 is better or worse*/ + unsigned numzeros = 0; + + unsigned offset; /*the offset represents the distance in LZ77 terminology*/ + unsigned length; + unsigned lazy = 0; + unsigned lazylength = 0, lazyoffset = 0; + unsigned hashval; + unsigned current_offset, current_length; + unsigned prev_offset; + const unsigned char *lastptr, *foreptr, *backptr; + unsigned hashpos; + + if(windowsize == 0 || windowsize > 32768) return 60; /*error: windowsize smaller/larger than allowed*/ + if((windowsize & (windowsize - 1)) != 0) return 90; /*error: must be power of two*/ + + if(nicematch > MAX_SUPPORTED_DEFLATE_LENGTH) nicematch = MAX_SUPPORTED_DEFLATE_LENGTH; + + for(pos = inpos; pos < insize; ++pos) { + size_t wpos = pos & (windowsize - 1); /*position for in 'circular' hash buffers*/ + unsigned chainlength = 0; + + hashval = getHash(in, insize, pos); + + if(usezeros && hashval == 0) { + if(numzeros == 0) numzeros = countZeros(in, insize, pos); + else if(pos + numzeros > insize || in[pos + numzeros - 1] != 0) --numzeros; + } else { + numzeros = 0; + } + + updateHashChain(hash, wpos, hashval, numzeros); + + /*the length and offset found for the current position*/ + length = 0; + offset = 0; + + hashpos = hash->chain[wpos]; + + lastptr = &in[insize < pos + MAX_SUPPORTED_DEFLATE_LENGTH ? insize : pos + MAX_SUPPORTED_DEFLATE_LENGTH]; + + /*search for the longest string*/ + prev_offset = 0; + for(;;) { + if(chainlength++ >= maxchainlength) break; + current_offset = (unsigned)(hashpos <= wpos ? wpos - hashpos : wpos - hashpos + windowsize); + + if(current_offset < prev_offset) break; /*stop when went completely around the circular buffer*/ + prev_offset = current_offset; + if(current_offset > 0) { + /*test the next characters*/ + foreptr = &in[pos]; + backptr = &in[pos - current_offset]; + + /*common case in PNGs is lots of zeros. Quickly skip over them as a speedup*/ + if(numzeros >= 3) { + unsigned skip = hash->zeros[hashpos]; + if(skip > numzeros) skip = numzeros; + backptr += skip; + foreptr += skip; + } + + while(foreptr != lastptr && *backptr == *foreptr) /*maximum supported length by deflate is max length*/ { + ++backptr; + ++foreptr; + } + current_length = (unsigned)(foreptr - &in[pos]); + + if(current_length > length) { + length = current_length; /*the longest length*/ + offset = current_offset; /*the offset that is related to this longest length*/ + /*jump out once a length of max length is found (speed gain). This also jumps + out if length is MAX_SUPPORTED_DEFLATE_LENGTH*/ + if(current_length >= nicematch) break; + } + } + + if(hashpos == hash->chain[hashpos]) break; + + if(numzeros >= 3 && length > numzeros) { + hashpos = hash->chainz[hashpos]; + if(hash->zeros[hashpos] != numzeros) break; + } else { + hashpos = hash->chain[hashpos]; + /*outdated hash value, happens if particular value was not encountered in whole last window*/ + if(hash->val[hashpos] != (int)hashval) break; + } + } + + if(lazymatching) { + if(!lazy && length >= 3 && length <= maxlazymatch && length < MAX_SUPPORTED_DEFLATE_LENGTH) { + lazy = 1; + lazylength = length; + lazyoffset = offset; + continue; /*try the next byte*/ + } + if(lazy) { + lazy = 0; + if(pos == 0) ERROR_BREAK(81); + if(length > lazylength + 1) { + /*push the previous character as literal*/ + if(!uivector_push_back(out, in[pos - 1])) ERROR_BREAK(83 /*alloc fail*/); + } else { + length = lazylength; + offset = lazyoffset; + hash->head[hashval] = -1; /*the same hashchain update will be done, this ensures no wrong alteration*/ + hash->headz[numzeros] = -1; /*idem*/ + --pos; + } + } + } + if(length >= 3 && offset > windowsize) ERROR_BREAK(86 /*too big (or overflown negative) offset*/); + + /*encode it as length/distance pair or literal value*/ + if(length < 3) /*only lengths of 3 or higher are supported as length/distance pair*/ { + if(!uivector_push_back(out, in[pos])) ERROR_BREAK(83 /*alloc fail*/); + } else if(length < minmatch || (length == 3 && offset > 4096)) { + /*compensate for the fact that longer offsets have more extra bits, a + length of only 3 may be not worth it then*/ + if(!uivector_push_back(out, in[pos])) ERROR_BREAK(83 /*alloc fail*/); + } else { + addLengthDistance(out, length, offset); + for(i = 1; i < length; ++i) { + ++pos; + wpos = pos & (windowsize - 1); + hashval = getHash(in, insize, pos); + if(usezeros && hashval == 0) { + if(numzeros == 0) numzeros = countZeros(in, insize, pos); + else if(pos + numzeros > insize || in[pos + numzeros - 1] != 0) --numzeros; + } else { + numzeros = 0; + } + updateHashChain(hash, wpos, hashval, numzeros); + } + } + } /*end of the loop through each character of input*/ + + return error; +} + +/* /////////////////////////////////////////////////////////////////////////// */ + +static unsigned deflateNoCompression(ucvector* out, const unsigned char* data, size_t datasize) { + /*non compressed deflate block data: 1 bit BFINAL,2 bits BTYPE,(5 bits): it jumps to start of next byte, + 2 bytes LEN, 2 bytes NLEN, LEN bytes literal DATA*/ + + size_t i, numdeflateblocks = (datasize + 65534u) / 65535u; + size_t datapos = 0; + for(i = 0; i != numdeflateblocks; ++i) { + unsigned BFINAL, BTYPE, LEN, NLEN; + unsigned char firstbyte; + size_t pos = out->size; + + BFINAL = (i == numdeflateblocks - 1); + BTYPE = 0; + + LEN = 65535; + if(datasize - datapos < 65535u) LEN = (unsigned)datasize - (unsigned)datapos; + NLEN = 65535 - LEN; + + if(!ucvector_resize(out, out->size + LEN + 5)) return 83; /*alloc fail*/ + + firstbyte = (unsigned char)(BFINAL + ((BTYPE & 1u) << 1u) + ((BTYPE & 2u) << 1u)); + out->data[pos + 0] = firstbyte; + out->data[pos + 1] = (unsigned char)(LEN & 255); + out->data[pos + 2] = (unsigned char)(LEN >> 8u); + out->data[pos + 3] = (unsigned char)(NLEN & 255); + out->data[pos + 4] = (unsigned char)(NLEN >> 8u); + lodepng_memcpy(out->data + pos + 5, data + datapos, LEN); + datapos += LEN; + } + + return 0; +} + +/* +write the lz77-encoded data, which has lit, len and dist codes, to compressed stream using huffman trees. +tree_ll: the tree for lit and len codes. +tree_d: the tree for distance codes. +*/ +static void writeLZ77data(LodePNGBitWriter* writer, const uivector* lz77_encoded, + const HuffmanTree* tree_ll, const HuffmanTree* tree_d) { + size_t i = 0; + for(i = 0; i != lz77_encoded->size; ++i) { + unsigned val = lz77_encoded->data[i]; + writeBitsReversed(writer, tree_ll->codes[val], tree_ll->lengths[val]); + if(val > 256) /*for a length code, 3 more things have to be added*/ { + unsigned length_index = val - FIRST_LENGTH_CODE_INDEX; + unsigned n_length_extra_bits = LENGTHEXTRA[length_index]; + unsigned length_extra_bits = lz77_encoded->data[++i]; + + unsigned distance_code = lz77_encoded->data[++i]; + + unsigned distance_index = distance_code; + unsigned n_distance_extra_bits = DISTANCEEXTRA[distance_index]; + unsigned distance_extra_bits = lz77_encoded->data[++i]; + + writeBits(writer, length_extra_bits, n_length_extra_bits); + writeBitsReversed(writer, tree_d->codes[distance_code], tree_d->lengths[distance_code]); + writeBits(writer, distance_extra_bits, n_distance_extra_bits); + } + } +} + +/*Deflate for a block of type "dynamic", that is, with freely, optimally, created huffman trees*/ +static unsigned deflateDynamic(LodePNGBitWriter* writer, Hash* hash, + const unsigned char* data, size_t datapos, size_t dataend, + const LodePNGCompressSettings* settings, unsigned final) { + unsigned error = 0; + + /* + A block is compressed as follows: The PNG data is lz77 encoded, resulting in + literal bytes and length/distance pairs. This is then huffman compressed with + two huffman trees. One huffman tree is used for the lit and len values ("ll"), + another huffman tree is used for the dist values ("d"). These two trees are + stored using their code lengths, and to compress even more these code lengths + are also run-length encoded and huffman compressed. This gives a huffman tree + of code lengths "cl". The code lengths used to describe this third tree are + the code length code lengths ("clcl"). + */ + + /*The lz77 encoded data, represented with integers since there will also be length and distance codes in it*/ + uivector lz77_encoded; + HuffmanTree tree_ll; /*tree for lit,len values*/ + HuffmanTree tree_d; /*tree for distance codes*/ + HuffmanTree tree_cl; /*tree for encoding the code lengths representing tree_ll and tree_d*/ + unsigned* frequencies_ll = 0; /*frequency of lit,len codes*/ + unsigned* frequencies_d = 0; /*frequency of dist codes*/ + unsigned* frequencies_cl = 0; /*frequency of code length codes*/ + unsigned* bitlen_lld = 0; /*lit,len,dist code lengths (int bits), literally (without repeat codes).*/ + unsigned* bitlen_lld_e = 0; /*bitlen_lld encoded with repeat codes (this is a rudimentary run length compression)*/ + size_t datasize = dataend - datapos; + + /* + If we could call "bitlen_cl" the the code length code lengths ("clcl"), that is the bit lengths of codes to represent + tree_cl in CLCL_ORDER, then due to the huffman compression of huffman tree representations ("two levels"), there are + some analogies: + bitlen_lld is to tree_cl what data is to tree_ll and tree_d. + bitlen_lld_e is to bitlen_lld what lz77_encoded is to data. + bitlen_cl is to bitlen_lld_e what bitlen_lld is to lz77_encoded. + */ + + unsigned BFINAL = final; + size_t i; + size_t numcodes_ll, numcodes_d, numcodes_lld, numcodes_lld_e, numcodes_cl; + unsigned HLIT, HDIST, HCLEN; + + uivector_init(&lz77_encoded); + HuffmanTree_init(&tree_ll); + HuffmanTree_init(&tree_d); + HuffmanTree_init(&tree_cl); + /* could fit on stack, but >1KB is on the larger side so allocate instead */ + frequencies_ll = (unsigned*)lodepng_malloc(286 * sizeof(*frequencies_ll)); + frequencies_d = (unsigned*)lodepng_malloc(30 * sizeof(*frequencies_d)); + frequencies_cl = (unsigned*)lodepng_malloc(NUM_CODE_LENGTH_CODES * sizeof(*frequencies_cl)); + + if(!frequencies_ll || !frequencies_d || !frequencies_cl) error = 83; /*alloc fail*/ + + /*This while loop never loops due to a break at the end, it is here to + allow breaking out of it to the cleanup phase on error conditions.*/ + while(!error) { + lodepng_memset(frequencies_ll, 0, 286 * sizeof(*frequencies_ll)); + lodepng_memset(frequencies_d, 0, 30 * sizeof(*frequencies_d)); + lodepng_memset(frequencies_cl, 0, NUM_CODE_LENGTH_CODES * sizeof(*frequencies_cl)); + + if(settings->use_lz77) { + error = encodeLZ77(&lz77_encoded, hash, data, datapos, dataend, settings->windowsize, + settings->minmatch, settings->nicematch, settings->lazymatching); + if(error) break; + } else { + if(!uivector_resize(&lz77_encoded, datasize)) ERROR_BREAK(83 /*alloc fail*/); + for(i = datapos; i < dataend; ++i) lz77_encoded.data[i - datapos] = data[i]; /*no LZ77, but still will be Huffman compressed*/ + } + + /*Count the frequencies of lit, len and dist codes*/ + for(i = 0; i != lz77_encoded.size; ++i) { + unsigned symbol = lz77_encoded.data[i]; + ++frequencies_ll[symbol]; + if(symbol > 256) { + unsigned dist = lz77_encoded.data[i + 2]; + ++frequencies_d[dist]; + i += 3; + } + } + frequencies_ll[256] = 1; /*there will be exactly 1 end code, at the end of the block*/ + + /*Make both huffman trees, one for the lit and len codes, one for the dist codes*/ + error = HuffmanTree_makeFromFrequencies(&tree_ll, frequencies_ll, 257, 286, 15); + if(error) break; + /*2, not 1, is chosen for mincodes: some buggy PNG decoders require at least 2 symbols in the dist tree*/ + error = HuffmanTree_makeFromFrequencies(&tree_d, frequencies_d, 2, 30, 15); + if(error) break; + + numcodes_ll = LODEPNG_MIN(tree_ll.numcodes, 286); + numcodes_d = LODEPNG_MIN(tree_d.numcodes, 30); + /*store the code lengths of both generated trees in bitlen_lld*/ + numcodes_lld = numcodes_ll + numcodes_d; + bitlen_lld = (unsigned*)lodepng_malloc(numcodes_lld * sizeof(*bitlen_lld)); + /*numcodes_lld_e never needs more size than bitlen_lld*/ + bitlen_lld_e = (unsigned*)lodepng_malloc(numcodes_lld * sizeof(*bitlen_lld_e)); + if(!bitlen_lld || !bitlen_lld_e) ERROR_BREAK(83); /*alloc fail*/ + numcodes_lld_e = 0; + + for(i = 0; i != numcodes_ll; ++i) bitlen_lld[i] = tree_ll.lengths[i]; + for(i = 0; i != numcodes_d; ++i) bitlen_lld[numcodes_ll + i] = tree_d.lengths[i]; + + /*run-length compress bitlen_ldd into bitlen_lld_e by using repeat codes 16 (copy length 3-6 times), + 17 (3-10 zeroes), 18 (11-138 zeroes)*/ + for(i = 0; i != numcodes_lld; ++i) { + unsigned j = 0; /*amount of repetitions*/ + while(i + j + 1 < numcodes_lld && bitlen_lld[i + j + 1] == bitlen_lld[i]) ++j; + + if(bitlen_lld[i] == 0 && j >= 2) /*repeat code for zeroes*/ { + ++j; /*include the first zero*/ + if(j <= 10) /*repeat code 17 supports max 10 zeroes*/ { + bitlen_lld_e[numcodes_lld_e++] = 17; + bitlen_lld_e[numcodes_lld_e++] = j - 3; + } else /*repeat code 18 supports max 138 zeroes*/ { + if(j > 138) j = 138; + bitlen_lld_e[numcodes_lld_e++] = 18; + bitlen_lld_e[numcodes_lld_e++] = j - 11; + } + i += (j - 1); + } else if(j >= 3) /*repeat code for value other than zero*/ { + size_t k; + unsigned num = j / 6u, rest = j % 6u; + bitlen_lld_e[numcodes_lld_e++] = bitlen_lld[i]; + for(k = 0; k < num; ++k) { + bitlen_lld_e[numcodes_lld_e++] = 16; + bitlen_lld_e[numcodes_lld_e++] = 6 - 3; + } + if(rest >= 3) { + bitlen_lld_e[numcodes_lld_e++] = 16; + bitlen_lld_e[numcodes_lld_e++] = rest - 3; + } + else j -= rest; + i += j; + } else /*too short to benefit from repeat code*/ { + bitlen_lld_e[numcodes_lld_e++] = bitlen_lld[i]; + } + } + + /*generate tree_cl, the huffmantree of huffmantrees*/ + for(i = 0; i != numcodes_lld_e; ++i) { + ++frequencies_cl[bitlen_lld_e[i]]; + /*after a repeat code come the bits that specify the number of repetitions, + those don't need to be in the frequencies_cl calculation*/ + if(bitlen_lld_e[i] >= 16) ++i; + } + + error = HuffmanTree_makeFromFrequencies(&tree_cl, frequencies_cl, + NUM_CODE_LENGTH_CODES, NUM_CODE_LENGTH_CODES, 7); + if(error) break; + + /*compute amount of code-length-code-lengths to output*/ + numcodes_cl = NUM_CODE_LENGTH_CODES; + /*trim zeros at the end (using CLCL_ORDER), but minimum size must be 4 (see HCLEN below)*/ + while(numcodes_cl > 4u && tree_cl.lengths[CLCL_ORDER[numcodes_cl - 1u]] == 0) { + numcodes_cl--; + } + + /* + Write everything into the output + + After the BFINAL and BTYPE, the dynamic block consists out of the following: + - 5 bits HLIT, 5 bits HDIST, 4 bits HCLEN + - (HCLEN+4)*3 bits code lengths of code length alphabet + - HLIT + 257 code lengths of lit/length alphabet (encoded using the code length + alphabet, + possible repetition codes 16, 17, 18) + - HDIST + 1 code lengths of distance alphabet (encoded using the code length + alphabet, + possible repetition codes 16, 17, 18) + - compressed data + - 256 (end code) + */ + + /*Write block type*/ + writeBits(writer, BFINAL, 1); + writeBits(writer, 0, 1); /*first bit of BTYPE "dynamic"*/ + writeBits(writer, 1, 1); /*second bit of BTYPE "dynamic"*/ + + /*write the HLIT, HDIST and HCLEN values*/ + /*all three sizes take trimmed ending zeroes into account, done either by HuffmanTree_makeFromFrequencies + or in the loop for numcodes_cl above, which saves space. */ + HLIT = (unsigned)(numcodes_ll - 257); + HDIST = (unsigned)(numcodes_d - 1); + HCLEN = (unsigned)(numcodes_cl - 4); + writeBits(writer, HLIT, 5); + writeBits(writer, HDIST, 5); + writeBits(writer, HCLEN, 4); + + /*write the code lengths of the code length alphabet ("bitlen_cl")*/ + for(i = 0; i != numcodes_cl; ++i) writeBits(writer, tree_cl.lengths[CLCL_ORDER[i]], 3); + + /*write the lengths of the lit/len AND the dist alphabet*/ + for(i = 0; i != numcodes_lld_e; ++i) { + writeBitsReversed(writer, tree_cl.codes[bitlen_lld_e[i]], tree_cl.lengths[bitlen_lld_e[i]]); + /*extra bits of repeat codes*/ + if(bitlen_lld_e[i] == 16) writeBits(writer, bitlen_lld_e[++i], 2); + else if(bitlen_lld_e[i] == 17) writeBits(writer, bitlen_lld_e[++i], 3); + else if(bitlen_lld_e[i] == 18) writeBits(writer, bitlen_lld_e[++i], 7); + } + + /*write the compressed data symbols*/ + writeLZ77data(writer, &lz77_encoded, &tree_ll, &tree_d); + /*error: the length of the end code 256 must be larger than 0*/ + if(tree_ll.lengths[256] == 0) ERROR_BREAK(64); + + /*write the end code*/ + writeBitsReversed(writer, tree_ll.codes[256], tree_ll.lengths[256]); + + break; /*end of error-while*/ + } + + /*cleanup*/ + uivector_cleanup(&lz77_encoded); + HuffmanTree_cleanup(&tree_ll); + HuffmanTree_cleanup(&tree_d); + HuffmanTree_cleanup(&tree_cl); + lodepng_free(frequencies_ll); + lodepng_free(frequencies_d); + lodepng_free(frequencies_cl); + lodepng_free(bitlen_lld); + lodepng_free(bitlen_lld_e); + + return error; +} + +static unsigned deflateFixed(LodePNGBitWriter* writer, Hash* hash, + const unsigned char* data, + size_t datapos, size_t dataend, + const LodePNGCompressSettings* settings, unsigned final) { + HuffmanTree tree_ll; /*tree for literal values and length codes*/ + HuffmanTree tree_d; /*tree for distance codes*/ + + unsigned BFINAL = final; + unsigned error = 0; + size_t i; + + HuffmanTree_init(&tree_ll); + HuffmanTree_init(&tree_d); + + error = generateFixedLitLenTree(&tree_ll); + if(!error) error = generateFixedDistanceTree(&tree_d); + + if(!error) { + writeBits(writer, BFINAL, 1); + writeBits(writer, 1, 1); /*first bit of BTYPE*/ + writeBits(writer, 0, 1); /*second bit of BTYPE*/ + + if(settings->use_lz77) /*LZ77 encoded*/ { + uivector lz77_encoded; + uivector_init(&lz77_encoded); + error = encodeLZ77(&lz77_encoded, hash, data, datapos, dataend, settings->windowsize, + settings->minmatch, settings->nicematch, settings->lazymatching); + if(!error) writeLZ77data(writer, &lz77_encoded, &tree_ll, &tree_d); + uivector_cleanup(&lz77_encoded); + } else /*no LZ77, but still will be Huffman compressed*/ { + for(i = datapos; i < dataend; ++i) { + writeBitsReversed(writer, tree_ll.codes[data[i]], tree_ll.lengths[data[i]]); + } + } + /*add END code*/ + if(!error) writeBitsReversed(writer,tree_ll.codes[256], tree_ll.lengths[256]); + } + + /*cleanup*/ + HuffmanTree_cleanup(&tree_ll); + HuffmanTree_cleanup(&tree_d); + + return error; +} + +static unsigned lodepng_deflatev(ucvector* out, const unsigned char* in, size_t insize, + const LodePNGCompressSettings* settings) { + unsigned error = 0; + size_t i, blocksize, numdeflateblocks; + Hash hash; + LodePNGBitWriter writer; + + LodePNGBitWriter_init(&writer, out); + + if(settings->btype > 2) return 61; + else if(settings->btype == 0) return deflateNoCompression(out, in, insize); + else if(settings->btype == 1) blocksize = insize; + else /*if(settings->btype == 2)*/ { + /*on PNGs, deflate blocks of 65-262k seem to give most dense encoding*/ + blocksize = insize / 8u + 8; + if(blocksize < 65536) blocksize = 65536; + if(blocksize > 262144) blocksize = 262144; + } + + numdeflateblocks = (insize + blocksize - 1) / blocksize; + if(numdeflateblocks == 0) numdeflateblocks = 1; + + error = hash_init(&hash, settings->windowsize); + + if(!error) { + for(i = 0; i != numdeflateblocks && !error; ++i) { + unsigned final = (i == numdeflateblocks - 1); + size_t start = i * blocksize; + size_t end = start + blocksize; + if(end > insize) end = insize; + + if(settings->btype == 1) error = deflateFixed(&writer, &hash, in, start, end, settings, final); + else if(settings->btype == 2) error = deflateDynamic(&writer, &hash, in, start, end, settings, final); + } + } + + hash_cleanup(&hash); + + return error; +} + +unsigned lodepng_deflate(unsigned char** out, size_t* outsize, + const unsigned char* in, size_t insize, + const LodePNGCompressSettings* settings) { + ucvector v = ucvector_init(*out, *outsize); + unsigned error = lodepng_deflatev(&v, in, insize, settings); + *out = v.data; + *outsize = v.size; + return error; +} + +static unsigned deflate(unsigned char** out, size_t* outsize, + const unsigned char* in, size_t insize, + const LodePNGCompressSettings* settings) { + if(settings->custom_deflate) { + unsigned error = settings->custom_deflate(out, outsize, in, insize, settings); + /*the custom deflate is allowed to have its own error codes, however, we translate it to code 111*/ + return error ? 111 : 0; + } else { + return lodepng_deflate(out, outsize, in, insize, settings); + } +} + +#endif /*LODEPNG_COMPILE_DECODER*/ + +/* ////////////////////////////////////////////////////////////////////////// */ +/* / Adler32 / */ +/* ////////////////////////////////////////////////////////////////////////// */ + +static unsigned update_adler32(unsigned adler, const unsigned char* data, unsigned len) { + unsigned s1 = adler & 0xffffu; + unsigned s2 = (adler >> 16u) & 0xffffu; + + while(len != 0u) { + unsigned i; + /*at least 5552 sums can be done before the sums overflow, saving a lot of module divisions*/ + unsigned amount = len > 5552u ? 5552u : len; + len -= amount; + for(i = 0; i != amount; ++i) { + s1 += (*data++); + s2 += s1; + } + s1 %= 65521u; + s2 %= 65521u; + } + + return (s2 << 16u) | s1; +} + +/*Return the adler32 of the bytes data[0..len-1]*/ +static unsigned adler32(const unsigned char* data, unsigned len) { + return update_adler32(1u, data, len); +} + +/* ////////////////////////////////////////////////////////////////////////// */ +/* / Zlib / */ +/* ////////////////////////////////////////////////////////////////////////// */ + +#ifdef LODEPNG_COMPILE_DECODER + +static unsigned lodepng_zlib_decompressv(ucvector* out, + const unsigned char* in, size_t insize, + const LodePNGDecompressSettings* settings) { + unsigned error = 0; + unsigned CM, CINFO, FDICT; + + if(insize < 2) return 53; /*error, size of zlib data too small*/ + /*read information from zlib header*/ + if((in[0] * 256 + in[1]) % 31 != 0) { + /*error: 256 * in[0] + in[1] must be a multiple of 31, the FCHECK value is supposed to be made that way*/ + return 24; + } + + CM = in[0] & 15; + CINFO = (in[0] >> 4) & 15; + /*FCHECK = in[1] & 31;*/ /*FCHECK is already tested above*/ + FDICT = (in[1] >> 5) & 1; + /*FLEVEL = (in[1] >> 6) & 3;*/ /*FLEVEL is not used here*/ + + if(CM != 8 || CINFO > 7) { + /*error: only compression method 8: inflate with sliding window of 32k is supported by the PNG spec*/ + return 25; + } + if(FDICT != 0) { + /*error: the specification of PNG says about the zlib stream: + "The additional flags shall not specify a preset dictionary."*/ + return 26; + } + + error = inflatev(out, in + 2, insize - 2, settings); + if(error) return error; + + if(!settings->ignore_adler32) { + unsigned ADLER32 = lodepng_read32bitInt(&in[insize - 4]); + unsigned checksum = adler32(out->data, (unsigned)(out->size)); + if(checksum != ADLER32) return 58; /*error, adler checksum not correct, data must be corrupted*/ + } + + return 0; /*no error*/ +} + + +unsigned lodepng_zlib_decompress(unsigned char** out, size_t* outsize, const unsigned char* in, + size_t insize, const LodePNGDecompressSettings* settings) { + ucvector v = ucvector_init(*out, *outsize); + unsigned error = lodepng_zlib_decompressv(&v, in, insize, settings); + *out = v.data; + *outsize = v.size; + return error; +} + +/*expected_size is expected output size, to avoid intermediate allocations. Set to 0 if not known. */ +static unsigned zlib_decompress(unsigned char** out, size_t* outsize, size_t expected_size, + const unsigned char* in, size_t insize, const LodePNGDecompressSettings* settings) { + unsigned error; + if(settings->custom_zlib) { + error = settings->custom_zlib(out, outsize, in, insize, settings); + if(error) { + /*the custom zlib is allowed to have its own error codes, however, we translate it to code 110*/ + error = 110; + /*if there's a max output size, and the custom zlib returned error, then indicate that error instead*/ + if(settings->max_output_size && *outsize > settings->max_output_size) error = 109; + } + } else { + ucvector v = ucvector_init(*out, *outsize); + if(expected_size) { + /*reserve the memory to avoid intermediate reallocations*/ + ucvector_resize(&v, *outsize + expected_size); + v.size = *outsize; + } + error = lodepng_zlib_decompressv(&v, in, insize, settings); + *out = v.data; + *outsize = v.size; + } + return error; +} + +#endif /*LODEPNG_COMPILE_DECODER*/ + +#ifdef LODEPNG_COMPILE_ENCODER + +unsigned lodepng_zlib_compress(unsigned char** out, size_t* outsize, const unsigned char* in, + size_t insize, const LodePNGCompressSettings* settings) { + size_t i; + unsigned error; + unsigned char* deflatedata = 0; + size_t deflatesize = 0; + + error = deflate(&deflatedata, &deflatesize, in, insize, settings); + + *out = NULL; + *outsize = 0; + if(!error) { + *outsize = deflatesize + 6; + *out = (unsigned char*)lodepng_malloc(*outsize); + if(!*out) error = 83; /*alloc fail*/ + } + + if(!error) { + unsigned ADLER32 = adler32(in, (unsigned)insize); + /*zlib data: 1 byte CMF (CM+CINFO), 1 byte FLG, deflate data, 4 byte ADLER32 checksum of the Decompressed data*/ + unsigned CMF = 120; /*0b01111000: CM 8, CINFO 7. With CINFO 7, any window size up to 32768 can be used.*/ + unsigned FLEVEL = 0; + unsigned FDICT = 0; + unsigned CMFFLG = 256 * CMF + FDICT * 32 + FLEVEL * 64; + unsigned FCHECK = 31 - CMFFLG % 31; + CMFFLG += FCHECK; + + (*out)[0] = (unsigned char)(CMFFLG >> 8); + (*out)[1] = (unsigned char)(CMFFLG & 255); + for(i = 0; i != deflatesize; ++i) (*out)[i + 2] = deflatedata[i]; + lodepng_set32bitInt(&(*out)[*outsize - 4], ADLER32); + } + + lodepng_free(deflatedata); + return error; +} + +/* compress using the default or custom zlib function */ +static unsigned zlib_compress(unsigned char** out, size_t* outsize, const unsigned char* in, + size_t insize, const LodePNGCompressSettings* settings) { + if(settings->custom_zlib) { + unsigned error = settings->custom_zlib(out, outsize, in, insize, settings); + /*the custom zlib is allowed to have its own error codes, however, we translate it to code 111*/ + return error ? 111 : 0; + } else { + return lodepng_zlib_compress(out, outsize, in, insize, settings); + } +} + +#endif /*LODEPNG_COMPILE_ENCODER*/ + +#else /*no LODEPNG_COMPILE_ZLIB*/ + +#ifdef LODEPNG_COMPILE_DECODER +static unsigned zlib_decompress(unsigned char** out, size_t* outsize, size_t expected_size, + const unsigned char* in, size_t insize, const LodePNGDecompressSettings* settings) { + if(!settings->custom_zlib) return 87; /*no custom zlib function provided */ + (void)expected_size; + return settings->custom_zlib(out, outsize, in, insize, settings); +} +#endif /*LODEPNG_COMPILE_DECODER*/ +#ifdef LODEPNG_COMPILE_ENCODER +static unsigned zlib_compress(unsigned char** out, size_t* outsize, const unsigned char* in, + size_t insize, const LodePNGCompressSettings* settings) { + if(!settings->custom_zlib) return 87; /*no custom zlib function provided */ + return settings->custom_zlib(out, outsize, in, insize, settings); +} +#endif /*LODEPNG_COMPILE_ENCODER*/ + +#endif /*LODEPNG_COMPILE_ZLIB*/ + +/* ////////////////////////////////////////////////////////////////////////// */ + +#ifdef LODEPNG_COMPILE_ENCODER + +/*this is a good tradeoff between speed and compression ratio*/ +#define DEFAULT_WINDOWSIZE 2048 + +void lodepng_compress_settings_init(LodePNGCompressSettings* settings) { + /*compress with dynamic huffman tree (not in the mathematical sense, just not the predefined one)*/ + settings->btype = 2; + settings->use_lz77 = 1; + settings->windowsize = DEFAULT_WINDOWSIZE; + settings->minmatch = 3; + settings->nicematch = 128; + settings->lazymatching = 1; + + settings->custom_zlib = 0; + settings->custom_deflate = 0; + settings->custom_context = 0; +} + +const LodePNGCompressSettings lodepng_default_compress_settings = {2, 1, DEFAULT_WINDOWSIZE, 3, 128, 1, 0, 0, 0}; + + +#endif /*LODEPNG_COMPILE_ENCODER*/ + +#ifdef LODEPNG_COMPILE_DECODER + +void lodepng_decompress_settings_init(LodePNGDecompressSettings* settings) { + settings->ignore_adler32 = 0; + settings->ignore_nlen = 0; + settings->max_output_size = 0; + + settings->custom_zlib = 0; + settings->custom_inflate = 0; + settings->custom_context = 0; +} + +const LodePNGDecompressSettings lodepng_default_decompress_settings = {0, 0, 0, 0, 0, 0}; + +#endif /*LODEPNG_COMPILE_DECODER*/ + +/* ////////////////////////////////////////////////////////////////////////// */ +/* ////////////////////////////////////////////////////////////////////////// */ +/* // End of Zlib related code. Begin of PNG related code. // */ +/* ////////////////////////////////////////////////////////////////////////// */ +/* ////////////////////////////////////////////////////////////////////////// */ + +#ifdef LODEPNG_COMPILE_PNG + +/* ////////////////////////////////////////////////////////////////////////// */ +/* / CRC32 / */ +/* ////////////////////////////////////////////////////////////////////////// */ + + +#ifdef LODEPNG_COMPILE_CRC + +static const unsigned lodepng_crc32_table0[256] = { + 0x00000000u, 0x77073096u, 0xee0e612cu, 0x990951bau, 0x076dc419u, 0x706af48fu, 0xe963a535u, 0x9e6495a3u, + 0x0edb8832u, 0x79dcb8a4u, 0xe0d5e91eu, 0x97d2d988u, 0x09b64c2bu, 0x7eb17cbdu, 0xe7b82d07u, 0x90bf1d91u, + 0x1db71064u, 0x6ab020f2u, 0xf3b97148u, 0x84be41deu, 0x1adad47du, 0x6ddde4ebu, 0xf4d4b551u, 0x83d385c7u, + 0x136c9856u, 0x646ba8c0u, 0xfd62f97au, 0x8a65c9ecu, 0x14015c4fu, 0x63066cd9u, 0xfa0f3d63u, 0x8d080df5u, + 0x3b6e20c8u, 0x4c69105eu, 0xd56041e4u, 0xa2677172u, 0x3c03e4d1u, 0x4b04d447u, 0xd20d85fdu, 0xa50ab56bu, + 0x35b5a8fau, 0x42b2986cu, 0xdbbbc9d6u, 0xacbcf940u, 0x32d86ce3u, 0x45df5c75u, 0xdcd60dcfu, 0xabd13d59u, + 0x26d930acu, 0x51de003au, 0xc8d75180u, 0xbfd06116u, 0x21b4f4b5u, 0x56b3c423u, 0xcfba9599u, 0xb8bda50fu, + 0x2802b89eu, 0x5f058808u, 0xc60cd9b2u, 0xb10be924u, 0x2f6f7c87u, 0x58684c11u, 0xc1611dabu, 0xb6662d3du, + 0x76dc4190u, 0x01db7106u, 0x98d220bcu, 0xefd5102au, 0x71b18589u, 0x06b6b51fu, 0x9fbfe4a5u, 0xe8b8d433u, + 0x7807c9a2u, 0x0f00f934u, 0x9609a88eu, 0xe10e9818u, 0x7f6a0dbbu, 0x086d3d2du, 0x91646c97u, 0xe6635c01u, + 0x6b6b51f4u, 0x1c6c6162u, 0x856530d8u, 0xf262004eu, 0x6c0695edu, 0x1b01a57bu, 0x8208f4c1u, 0xf50fc457u, + 0x65b0d9c6u, 0x12b7e950u, 0x8bbeb8eau, 0xfcb9887cu, 0x62dd1ddfu, 0x15da2d49u, 0x8cd37cf3u, 0xfbd44c65u, + 0x4db26158u, 0x3ab551ceu, 0xa3bc0074u, 0xd4bb30e2u, 0x4adfa541u, 0x3dd895d7u, 0xa4d1c46du, 0xd3d6f4fbu, + 0x4369e96au, 0x346ed9fcu, 0xad678846u, 0xda60b8d0u, 0x44042d73u, 0x33031de5u, 0xaa0a4c5fu, 0xdd0d7cc9u, + 0x5005713cu, 0x270241aau, 0xbe0b1010u, 0xc90c2086u, 0x5768b525u, 0x206f85b3u, 0xb966d409u, 0xce61e49fu, + 0x5edef90eu, 0x29d9c998u, 0xb0d09822u, 0xc7d7a8b4u, 0x59b33d17u, 0x2eb40d81u, 0xb7bd5c3bu, 0xc0ba6cadu, + 0xedb88320u, 0x9abfb3b6u, 0x03b6e20cu, 0x74b1d29au, 0xead54739u, 0x9dd277afu, 0x04db2615u, 0x73dc1683u, + 0xe3630b12u, 0x94643b84u, 0x0d6d6a3eu, 0x7a6a5aa8u, 0xe40ecf0bu, 0x9309ff9du, 0x0a00ae27u, 0x7d079eb1u, + 0xf00f9344u, 0x8708a3d2u, 0x1e01f268u, 0x6906c2feu, 0xf762575du, 0x806567cbu, 0x196c3671u, 0x6e6b06e7u, + 0xfed41b76u, 0x89d32be0u, 0x10da7a5au, 0x67dd4accu, 0xf9b9df6fu, 0x8ebeeff9u, 0x17b7be43u, 0x60b08ed5u, + 0xd6d6a3e8u, 0xa1d1937eu, 0x38d8c2c4u, 0x4fdff252u, 0xd1bb67f1u, 0xa6bc5767u, 0x3fb506ddu, 0x48b2364bu, + 0xd80d2bdau, 0xaf0a1b4cu, 0x36034af6u, 0x41047a60u, 0xdf60efc3u, 0xa867df55u, 0x316e8eefu, 0x4669be79u, + 0xcb61b38cu, 0xbc66831au, 0x256fd2a0u, 0x5268e236u, 0xcc0c7795u, 0xbb0b4703u, 0x220216b9u, 0x5505262fu, + 0xc5ba3bbeu, 0xb2bd0b28u, 0x2bb45a92u, 0x5cb36a04u, 0xc2d7ffa7u, 0xb5d0cf31u, 0x2cd99e8bu, 0x5bdeae1du, + 0x9b64c2b0u, 0xec63f226u, 0x756aa39cu, 0x026d930au, 0x9c0906a9u, 0xeb0e363fu, 0x72076785u, 0x05005713u, + 0x95bf4a82u, 0xe2b87a14u, 0x7bb12baeu, 0x0cb61b38u, 0x92d28e9bu, 0xe5d5be0du, 0x7cdcefb7u, 0x0bdbdf21u, + 0x86d3d2d4u, 0xf1d4e242u, 0x68ddb3f8u, 0x1fda836eu, 0x81be16cdu, 0xf6b9265bu, 0x6fb077e1u, 0x18b74777u, + 0x88085ae6u, 0xff0f6a70u, 0x66063bcau, 0x11010b5cu, 0x8f659effu, 0xf862ae69u, 0x616bffd3u, 0x166ccf45u, + 0xa00ae278u, 0xd70dd2eeu, 0x4e048354u, 0x3903b3c2u, 0xa7672661u, 0xd06016f7u, 0x4969474du, 0x3e6e77dbu, + 0xaed16a4au, 0xd9d65adcu, 0x40df0b66u, 0x37d83bf0u, 0xa9bcae53u, 0xdebb9ec5u, 0x47b2cf7fu, 0x30b5ffe9u, + 0xbdbdf21cu, 0xcabac28au, 0x53b39330u, 0x24b4a3a6u, 0xbad03605u, 0xcdd70693u, 0x54de5729u, 0x23d967bfu, + 0xb3667a2eu, 0xc4614ab8u, 0x5d681b02u, 0x2a6f2b94u, 0xb40bbe37u, 0xc30c8ea1u, 0x5a05df1bu, 0x2d02ef8du +}; + +static const unsigned lodepng_crc32_table1[256] = { + 0x00000000u, 0x191b3141u, 0x32366282u, 0x2b2d53c3u, 0x646cc504u, 0x7d77f445u, 0x565aa786u, 0x4f4196c7u, + 0xc8d98a08u, 0xd1c2bb49u, 0xfaefe88au, 0xe3f4d9cbu, 0xacb54f0cu, 0xb5ae7e4du, 0x9e832d8eu, 0x87981ccfu, + 0x4ac21251u, 0x53d92310u, 0x78f470d3u, 0x61ef4192u, 0x2eaed755u, 0x37b5e614u, 0x1c98b5d7u, 0x05838496u, + 0x821b9859u, 0x9b00a918u, 0xb02dfadbu, 0xa936cb9au, 0xe6775d5du, 0xff6c6c1cu, 0xd4413fdfu, 0xcd5a0e9eu, + 0x958424a2u, 0x8c9f15e3u, 0xa7b24620u, 0xbea97761u, 0xf1e8e1a6u, 0xe8f3d0e7u, 0xc3de8324u, 0xdac5b265u, + 0x5d5daeaau, 0x44469febu, 0x6f6bcc28u, 0x7670fd69u, 0x39316baeu, 0x202a5aefu, 0x0b07092cu, 0x121c386du, + 0xdf4636f3u, 0xc65d07b2u, 0xed705471u, 0xf46b6530u, 0xbb2af3f7u, 0xa231c2b6u, 0x891c9175u, 0x9007a034u, + 0x179fbcfbu, 0x0e848dbau, 0x25a9de79u, 0x3cb2ef38u, 0x73f379ffu, 0x6ae848beu, 0x41c51b7du, 0x58de2a3cu, + 0xf0794f05u, 0xe9627e44u, 0xc24f2d87u, 0xdb541cc6u, 0x94158a01u, 0x8d0ebb40u, 0xa623e883u, 0xbf38d9c2u, + 0x38a0c50du, 0x21bbf44cu, 0x0a96a78fu, 0x138d96ceu, 0x5ccc0009u, 0x45d73148u, 0x6efa628bu, 0x77e153cau, + 0xbabb5d54u, 0xa3a06c15u, 0x888d3fd6u, 0x91960e97u, 0xded79850u, 0xc7cca911u, 0xece1fad2u, 0xf5facb93u, + 0x7262d75cu, 0x6b79e61du, 0x4054b5deu, 0x594f849fu, 0x160e1258u, 0x0f152319u, 0x243870dau, 0x3d23419bu, + 0x65fd6ba7u, 0x7ce65ae6u, 0x57cb0925u, 0x4ed03864u, 0x0191aea3u, 0x188a9fe2u, 0x33a7cc21u, 0x2abcfd60u, + 0xad24e1afu, 0xb43fd0eeu, 0x9f12832du, 0x8609b26cu, 0xc94824abu, 0xd05315eau, 0xfb7e4629u, 0xe2657768u, + 0x2f3f79f6u, 0x362448b7u, 0x1d091b74u, 0x04122a35u, 0x4b53bcf2u, 0x52488db3u, 0x7965de70u, 0x607eef31u, + 0xe7e6f3feu, 0xfefdc2bfu, 0xd5d0917cu, 0xcccba03du, 0x838a36fau, 0x9a9107bbu, 0xb1bc5478u, 0xa8a76539u, + 0x3b83984bu, 0x2298a90au, 0x09b5fac9u, 0x10aecb88u, 0x5fef5d4fu, 0x46f46c0eu, 0x6dd93fcdu, 0x74c20e8cu, + 0xf35a1243u, 0xea412302u, 0xc16c70c1u, 0xd8774180u, 0x9736d747u, 0x8e2de606u, 0xa500b5c5u, 0xbc1b8484u, + 0x71418a1au, 0x685abb5bu, 0x4377e898u, 0x5a6cd9d9u, 0x152d4f1eu, 0x0c367e5fu, 0x271b2d9cu, 0x3e001cddu, + 0xb9980012u, 0xa0833153u, 0x8bae6290u, 0x92b553d1u, 0xddf4c516u, 0xc4eff457u, 0xefc2a794u, 0xf6d996d5u, + 0xae07bce9u, 0xb71c8da8u, 0x9c31de6bu, 0x852aef2au, 0xca6b79edu, 0xd37048acu, 0xf85d1b6fu, 0xe1462a2eu, + 0x66de36e1u, 0x7fc507a0u, 0x54e85463u, 0x4df36522u, 0x02b2f3e5u, 0x1ba9c2a4u, 0x30849167u, 0x299fa026u, + 0xe4c5aeb8u, 0xfdde9ff9u, 0xd6f3cc3au, 0xcfe8fd7bu, 0x80a96bbcu, 0x99b25afdu, 0xb29f093eu, 0xab84387fu, + 0x2c1c24b0u, 0x350715f1u, 0x1e2a4632u, 0x07317773u, 0x4870e1b4u, 0x516bd0f5u, 0x7a468336u, 0x635db277u, + 0xcbfad74eu, 0xd2e1e60fu, 0xf9ccb5ccu, 0xe0d7848du, 0xaf96124au, 0xb68d230bu, 0x9da070c8u, 0x84bb4189u, + 0x03235d46u, 0x1a386c07u, 0x31153fc4u, 0x280e0e85u, 0x674f9842u, 0x7e54a903u, 0x5579fac0u, 0x4c62cb81u, + 0x8138c51fu, 0x9823f45eu, 0xb30ea79du, 0xaa1596dcu, 0xe554001bu, 0xfc4f315au, 0xd7626299u, 0xce7953d8u, + 0x49e14f17u, 0x50fa7e56u, 0x7bd72d95u, 0x62cc1cd4u, 0x2d8d8a13u, 0x3496bb52u, 0x1fbbe891u, 0x06a0d9d0u, + 0x5e7ef3ecu, 0x4765c2adu, 0x6c48916eu, 0x7553a02fu, 0x3a1236e8u, 0x230907a9u, 0x0824546au, 0x113f652bu, + 0x96a779e4u, 0x8fbc48a5u, 0xa4911b66u, 0xbd8a2a27u, 0xf2cbbce0u, 0xebd08da1u, 0xc0fdde62u, 0xd9e6ef23u, + 0x14bce1bdu, 0x0da7d0fcu, 0x268a833fu, 0x3f91b27eu, 0x70d024b9u, 0x69cb15f8u, 0x42e6463bu, 0x5bfd777au, + 0xdc656bb5u, 0xc57e5af4u, 0xee530937u, 0xf7483876u, 0xb809aeb1u, 0xa1129ff0u, 0x8a3fcc33u, 0x9324fd72u +}; + +static const unsigned lodepng_crc32_table2[256] = { + 0x00000000u, 0x01c26a37u, 0x0384d46eu, 0x0246be59u, 0x0709a8dcu, 0x06cbc2ebu, 0x048d7cb2u, 0x054f1685u, + 0x0e1351b8u, 0x0fd13b8fu, 0x0d9785d6u, 0x0c55efe1u, 0x091af964u, 0x08d89353u, 0x0a9e2d0au, 0x0b5c473du, + 0x1c26a370u, 0x1de4c947u, 0x1fa2771eu, 0x1e601d29u, 0x1b2f0bacu, 0x1aed619bu, 0x18abdfc2u, 0x1969b5f5u, + 0x1235f2c8u, 0x13f798ffu, 0x11b126a6u, 0x10734c91u, 0x153c5a14u, 0x14fe3023u, 0x16b88e7au, 0x177ae44du, + 0x384d46e0u, 0x398f2cd7u, 0x3bc9928eu, 0x3a0bf8b9u, 0x3f44ee3cu, 0x3e86840bu, 0x3cc03a52u, 0x3d025065u, + 0x365e1758u, 0x379c7d6fu, 0x35dac336u, 0x3418a901u, 0x3157bf84u, 0x3095d5b3u, 0x32d36beau, 0x331101ddu, + 0x246be590u, 0x25a98fa7u, 0x27ef31feu, 0x262d5bc9u, 0x23624d4cu, 0x22a0277bu, 0x20e69922u, 0x2124f315u, + 0x2a78b428u, 0x2bbade1fu, 0x29fc6046u, 0x283e0a71u, 0x2d711cf4u, 0x2cb376c3u, 0x2ef5c89au, 0x2f37a2adu, + 0x709a8dc0u, 0x7158e7f7u, 0x731e59aeu, 0x72dc3399u, 0x7793251cu, 0x76514f2bu, 0x7417f172u, 0x75d59b45u, + 0x7e89dc78u, 0x7f4bb64fu, 0x7d0d0816u, 0x7ccf6221u, 0x798074a4u, 0x78421e93u, 0x7a04a0cau, 0x7bc6cafdu, + 0x6cbc2eb0u, 0x6d7e4487u, 0x6f38fadeu, 0x6efa90e9u, 0x6bb5866cu, 0x6a77ec5bu, 0x68315202u, 0x69f33835u, + 0x62af7f08u, 0x636d153fu, 0x612bab66u, 0x60e9c151u, 0x65a6d7d4u, 0x6464bde3u, 0x662203bau, 0x67e0698du, + 0x48d7cb20u, 0x4915a117u, 0x4b531f4eu, 0x4a917579u, 0x4fde63fcu, 0x4e1c09cbu, 0x4c5ab792u, 0x4d98dda5u, + 0x46c49a98u, 0x4706f0afu, 0x45404ef6u, 0x448224c1u, 0x41cd3244u, 0x400f5873u, 0x4249e62au, 0x438b8c1du, + 0x54f16850u, 0x55330267u, 0x5775bc3eu, 0x56b7d609u, 0x53f8c08cu, 0x523aaabbu, 0x507c14e2u, 0x51be7ed5u, + 0x5ae239e8u, 0x5b2053dfu, 0x5966ed86u, 0x58a487b1u, 0x5deb9134u, 0x5c29fb03u, 0x5e6f455au, 0x5fad2f6du, + 0xe1351b80u, 0xe0f771b7u, 0xe2b1cfeeu, 0xe373a5d9u, 0xe63cb35cu, 0xe7fed96bu, 0xe5b86732u, 0xe47a0d05u, + 0xef264a38u, 0xeee4200fu, 0xeca29e56u, 0xed60f461u, 0xe82fe2e4u, 0xe9ed88d3u, 0xebab368au, 0xea695cbdu, + 0xfd13b8f0u, 0xfcd1d2c7u, 0xfe976c9eu, 0xff5506a9u, 0xfa1a102cu, 0xfbd87a1bu, 0xf99ec442u, 0xf85cae75u, + 0xf300e948u, 0xf2c2837fu, 0xf0843d26u, 0xf1465711u, 0xf4094194u, 0xf5cb2ba3u, 0xf78d95fau, 0xf64fffcdu, + 0xd9785d60u, 0xd8ba3757u, 0xdafc890eu, 0xdb3ee339u, 0xde71f5bcu, 0xdfb39f8bu, 0xddf521d2u, 0xdc374be5u, + 0xd76b0cd8u, 0xd6a966efu, 0xd4efd8b6u, 0xd52db281u, 0xd062a404u, 0xd1a0ce33u, 0xd3e6706au, 0xd2241a5du, + 0xc55efe10u, 0xc49c9427u, 0xc6da2a7eu, 0xc7184049u, 0xc25756ccu, 0xc3953cfbu, 0xc1d382a2u, 0xc011e895u, + 0xcb4dafa8u, 0xca8fc59fu, 0xc8c97bc6u, 0xc90b11f1u, 0xcc440774u, 0xcd866d43u, 0xcfc0d31au, 0xce02b92du, + 0x91af9640u, 0x906dfc77u, 0x922b422eu, 0x93e92819u, 0x96a63e9cu, 0x976454abu, 0x9522eaf2u, 0x94e080c5u, + 0x9fbcc7f8u, 0x9e7eadcfu, 0x9c381396u, 0x9dfa79a1u, 0x98b56f24u, 0x99770513u, 0x9b31bb4au, 0x9af3d17du, + 0x8d893530u, 0x8c4b5f07u, 0x8e0de15eu, 0x8fcf8b69u, 0x8a809decu, 0x8b42f7dbu, 0x89044982u, 0x88c623b5u, + 0x839a6488u, 0x82580ebfu, 0x801eb0e6u, 0x81dcdad1u, 0x8493cc54u, 0x8551a663u, 0x8717183au, 0x86d5720du, + 0xa9e2d0a0u, 0xa820ba97u, 0xaa6604ceu, 0xaba46ef9u, 0xaeeb787cu, 0xaf29124bu, 0xad6fac12u, 0xacadc625u, + 0xa7f18118u, 0xa633eb2fu, 0xa4755576u, 0xa5b73f41u, 0xa0f829c4u, 0xa13a43f3u, 0xa37cfdaau, 0xa2be979du, + 0xb5c473d0u, 0xb40619e7u, 0xb640a7beu, 0xb782cd89u, 0xb2cddb0cu, 0xb30fb13bu, 0xb1490f62u, 0xb08b6555u, + 0xbbd72268u, 0xba15485fu, 0xb853f606u, 0xb9919c31u, 0xbcde8ab4u, 0xbd1ce083u, 0xbf5a5edau, 0xbe9834edu +}; + +static const unsigned lodepng_crc32_table3[256] = { + 0x00000000u, 0xb8bc6765u, 0xaa09c88bu, 0x12b5afeeu, 0x8f629757u, 0x37def032u, 0x256b5fdcu, 0x9dd738b9u, + 0xc5b428efu, 0x7d084f8au, 0x6fbde064u, 0xd7018701u, 0x4ad6bfb8u, 0xf26ad8ddu, 0xe0df7733u, 0x58631056u, + 0x5019579fu, 0xe8a530fau, 0xfa109f14u, 0x42acf871u, 0xdf7bc0c8u, 0x67c7a7adu, 0x75720843u, 0xcdce6f26u, + 0x95ad7f70u, 0x2d111815u, 0x3fa4b7fbu, 0x8718d09eu, 0x1acfe827u, 0xa2738f42u, 0xb0c620acu, 0x087a47c9u, + 0xa032af3eu, 0x188ec85bu, 0x0a3b67b5u, 0xb28700d0u, 0x2f503869u, 0x97ec5f0cu, 0x8559f0e2u, 0x3de59787u, + 0x658687d1u, 0xdd3ae0b4u, 0xcf8f4f5au, 0x7733283fu, 0xeae41086u, 0x525877e3u, 0x40edd80du, 0xf851bf68u, + 0xf02bf8a1u, 0x48979fc4u, 0x5a22302au, 0xe29e574fu, 0x7f496ff6u, 0xc7f50893u, 0xd540a77du, 0x6dfcc018u, + 0x359fd04eu, 0x8d23b72bu, 0x9f9618c5u, 0x272a7fa0u, 0xbafd4719u, 0x0241207cu, 0x10f48f92u, 0xa848e8f7u, + 0x9b14583du, 0x23a83f58u, 0x311d90b6u, 0x89a1f7d3u, 0x1476cf6au, 0xaccaa80fu, 0xbe7f07e1u, 0x06c36084u, + 0x5ea070d2u, 0xe61c17b7u, 0xf4a9b859u, 0x4c15df3cu, 0xd1c2e785u, 0x697e80e0u, 0x7bcb2f0eu, 0xc377486bu, + 0xcb0d0fa2u, 0x73b168c7u, 0x6104c729u, 0xd9b8a04cu, 0x446f98f5u, 0xfcd3ff90u, 0xee66507eu, 0x56da371bu, + 0x0eb9274du, 0xb6054028u, 0xa4b0efc6u, 0x1c0c88a3u, 0x81dbb01au, 0x3967d77fu, 0x2bd27891u, 0x936e1ff4u, + 0x3b26f703u, 0x839a9066u, 0x912f3f88u, 0x299358edu, 0xb4446054u, 0x0cf80731u, 0x1e4da8dfu, 0xa6f1cfbau, + 0xfe92dfecu, 0x462eb889u, 0x549b1767u, 0xec277002u, 0x71f048bbu, 0xc94c2fdeu, 0xdbf98030u, 0x6345e755u, + 0x6b3fa09cu, 0xd383c7f9u, 0xc1366817u, 0x798a0f72u, 0xe45d37cbu, 0x5ce150aeu, 0x4e54ff40u, 0xf6e89825u, + 0xae8b8873u, 0x1637ef16u, 0x048240f8u, 0xbc3e279du, 0x21e91f24u, 0x99557841u, 0x8be0d7afu, 0x335cb0cau, + 0xed59b63bu, 0x55e5d15eu, 0x47507eb0u, 0xffec19d5u, 0x623b216cu, 0xda874609u, 0xc832e9e7u, 0x708e8e82u, + 0x28ed9ed4u, 0x9051f9b1u, 0x82e4565fu, 0x3a58313au, 0xa78f0983u, 0x1f336ee6u, 0x0d86c108u, 0xb53aa66du, + 0xbd40e1a4u, 0x05fc86c1u, 0x1749292fu, 0xaff54e4au, 0x322276f3u, 0x8a9e1196u, 0x982bbe78u, 0x2097d91du, + 0x78f4c94bu, 0xc048ae2eu, 0xd2fd01c0u, 0x6a4166a5u, 0xf7965e1cu, 0x4f2a3979u, 0x5d9f9697u, 0xe523f1f2u, + 0x4d6b1905u, 0xf5d77e60u, 0xe762d18eu, 0x5fdeb6ebu, 0xc2098e52u, 0x7ab5e937u, 0x680046d9u, 0xd0bc21bcu, + 0x88df31eau, 0x3063568fu, 0x22d6f961u, 0x9a6a9e04u, 0x07bda6bdu, 0xbf01c1d8u, 0xadb46e36u, 0x15080953u, + 0x1d724e9au, 0xa5ce29ffu, 0xb77b8611u, 0x0fc7e174u, 0x9210d9cdu, 0x2aacbea8u, 0x38191146u, 0x80a57623u, + 0xd8c66675u, 0x607a0110u, 0x72cfaefeu, 0xca73c99bu, 0x57a4f122u, 0xef189647u, 0xfdad39a9u, 0x45115eccu, + 0x764dee06u, 0xcef18963u, 0xdc44268du, 0x64f841e8u, 0xf92f7951u, 0x41931e34u, 0x5326b1dau, 0xeb9ad6bfu, + 0xb3f9c6e9u, 0x0b45a18cu, 0x19f00e62u, 0xa14c6907u, 0x3c9b51beu, 0x842736dbu, 0x96929935u, 0x2e2efe50u, + 0x2654b999u, 0x9ee8defcu, 0x8c5d7112u, 0x34e11677u, 0xa9362eceu, 0x118a49abu, 0x033fe645u, 0xbb838120u, + 0xe3e09176u, 0x5b5cf613u, 0x49e959fdu, 0xf1553e98u, 0x6c820621u, 0xd43e6144u, 0xc68bceaau, 0x7e37a9cfu, + 0xd67f4138u, 0x6ec3265du, 0x7c7689b3u, 0xc4caeed6u, 0x591dd66fu, 0xe1a1b10au, 0xf3141ee4u, 0x4ba87981u, + 0x13cb69d7u, 0xab770eb2u, 0xb9c2a15cu, 0x017ec639u, 0x9ca9fe80u, 0x241599e5u, 0x36a0360bu, 0x8e1c516eu, + 0x866616a7u, 0x3eda71c2u, 0x2c6fde2cu, 0x94d3b949u, 0x090481f0u, 0xb1b8e695u, 0xa30d497bu, 0x1bb12e1eu, + 0x43d23e48u, 0xfb6e592du, 0xe9dbf6c3u, 0x516791a6u, 0xccb0a91fu, 0x740cce7au, 0x66b96194u, 0xde0506f1u +}; + +static const unsigned lodepng_crc32_table4[256] = { + 0x00000000u, 0x3d6029b0u, 0x7ac05360u, 0x47a07ad0u, 0xf580a6c0u, 0xc8e08f70u, 0x8f40f5a0u, 0xb220dc10u, + 0x30704bc1u, 0x0d106271u, 0x4ab018a1u, 0x77d03111u, 0xc5f0ed01u, 0xf890c4b1u, 0xbf30be61u, 0x825097d1u, + 0x60e09782u, 0x5d80be32u, 0x1a20c4e2u, 0x2740ed52u, 0x95603142u, 0xa80018f2u, 0xefa06222u, 0xd2c04b92u, + 0x5090dc43u, 0x6df0f5f3u, 0x2a508f23u, 0x1730a693u, 0xa5107a83u, 0x98705333u, 0xdfd029e3u, 0xe2b00053u, + 0xc1c12f04u, 0xfca106b4u, 0xbb017c64u, 0x866155d4u, 0x344189c4u, 0x0921a074u, 0x4e81daa4u, 0x73e1f314u, + 0xf1b164c5u, 0xccd14d75u, 0x8b7137a5u, 0xb6111e15u, 0x0431c205u, 0x3951ebb5u, 0x7ef19165u, 0x4391b8d5u, + 0xa121b886u, 0x9c419136u, 0xdbe1ebe6u, 0xe681c256u, 0x54a11e46u, 0x69c137f6u, 0x2e614d26u, 0x13016496u, + 0x9151f347u, 0xac31daf7u, 0xeb91a027u, 0xd6f18997u, 0x64d15587u, 0x59b17c37u, 0x1e1106e7u, 0x23712f57u, + 0x58f35849u, 0x659371f9u, 0x22330b29u, 0x1f532299u, 0xad73fe89u, 0x9013d739u, 0xd7b3ade9u, 0xead38459u, + 0x68831388u, 0x55e33a38u, 0x124340e8u, 0x2f236958u, 0x9d03b548u, 0xa0639cf8u, 0xe7c3e628u, 0xdaa3cf98u, + 0x3813cfcbu, 0x0573e67bu, 0x42d39cabu, 0x7fb3b51bu, 0xcd93690bu, 0xf0f340bbu, 0xb7533a6bu, 0x8a3313dbu, + 0x0863840au, 0x3503adbau, 0x72a3d76au, 0x4fc3fedau, 0xfde322cau, 0xc0830b7au, 0x872371aau, 0xba43581au, + 0x9932774du, 0xa4525efdu, 0xe3f2242du, 0xde920d9du, 0x6cb2d18du, 0x51d2f83du, 0x167282edu, 0x2b12ab5du, + 0xa9423c8cu, 0x9422153cu, 0xd3826fecu, 0xeee2465cu, 0x5cc29a4cu, 0x61a2b3fcu, 0x2602c92cu, 0x1b62e09cu, + 0xf9d2e0cfu, 0xc4b2c97fu, 0x8312b3afu, 0xbe729a1fu, 0x0c52460fu, 0x31326fbfu, 0x7692156fu, 0x4bf23cdfu, + 0xc9a2ab0eu, 0xf4c282beu, 0xb362f86eu, 0x8e02d1deu, 0x3c220dceu, 0x0142247eu, 0x46e25eaeu, 0x7b82771eu, + 0xb1e6b092u, 0x8c869922u, 0xcb26e3f2u, 0xf646ca42u, 0x44661652u, 0x79063fe2u, 0x3ea64532u, 0x03c66c82u, + 0x8196fb53u, 0xbcf6d2e3u, 0xfb56a833u, 0xc6368183u, 0x74165d93u, 0x49767423u, 0x0ed60ef3u, 0x33b62743u, + 0xd1062710u, 0xec660ea0u, 0xabc67470u, 0x96a65dc0u, 0x248681d0u, 0x19e6a860u, 0x5e46d2b0u, 0x6326fb00u, + 0xe1766cd1u, 0xdc164561u, 0x9bb63fb1u, 0xa6d61601u, 0x14f6ca11u, 0x2996e3a1u, 0x6e369971u, 0x5356b0c1u, + 0x70279f96u, 0x4d47b626u, 0x0ae7ccf6u, 0x3787e546u, 0x85a73956u, 0xb8c710e6u, 0xff676a36u, 0xc2074386u, + 0x4057d457u, 0x7d37fde7u, 0x3a978737u, 0x07f7ae87u, 0xb5d77297u, 0x88b75b27u, 0xcf1721f7u, 0xf2770847u, + 0x10c70814u, 0x2da721a4u, 0x6a075b74u, 0x576772c4u, 0xe547aed4u, 0xd8278764u, 0x9f87fdb4u, 0xa2e7d404u, + 0x20b743d5u, 0x1dd76a65u, 0x5a7710b5u, 0x67173905u, 0xd537e515u, 0xe857cca5u, 0xaff7b675u, 0x92979fc5u, + 0xe915e8dbu, 0xd475c16bu, 0x93d5bbbbu, 0xaeb5920bu, 0x1c954e1bu, 0x21f567abu, 0x66551d7bu, 0x5b3534cbu, + 0xd965a31au, 0xe4058aaau, 0xa3a5f07au, 0x9ec5d9cau, 0x2ce505dau, 0x11852c6au, 0x562556bau, 0x6b457f0au, + 0x89f57f59u, 0xb49556e9u, 0xf3352c39u, 0xce550589u, 0x7c75d999u, 0x4115f029u, 0x06b58af9u, 0x3bd5a349u, + 0xb9853498u, 0x84e51d28u, 0xc34567f8u, 0xfe254e48u, 0x4c059258u, 0x7165bbe8u, 0x36c5c138u, 0x0ba5e888u, + 0x28d4c7dfu, 0x15b4ee6fu, 0x521494bfu, 0x6f74bd0fu, 0xdd54611fu, 0xe03448afu, 0xa794327fu, 0x9af41bcfu, + 0x18a48c1eu, 0x25c4a5aeu, 0x6264df7eu, 0x5f04f6ceu, 0xed242adeu, 0xd044036eu, 0x97e479beu, 0xaa84500eu, + 0x4834505du, 0x755479edu, 0x32f4033du, 0x0f942a8du, 0xbdb4f69du, 0x80d4df2du, 0xc774a5fdu, 0xfa148c4du, + 0x78441b9cu, 0x4524322cu, 0x028448fcu, 0x3fe4614cu, 0x8dc4bd5cu, 0xb0a494ecu, 0xf704ee3cu, 0xca64c78cu +}; + +static const unsigned lodepng_crc32_table5[256] = { + 0x00000000u, 0xcb5cd3a5u, 0x4dc8a10bu, 0x869472aeu, 0x9b914216u, 0x50cd91b3u, 0xd659e31du, 0x1d0530b8u, + 0xec53826du, 0x270f51c8u, 0xa19b2366u, 0x6ac7f0c3u, 0x77c2c07bu, 0xbc9e13deu, 0x3a0a6170u, 0xf156b2d5u, + 0x03d6029bu, 0xc88ad13eu, 0x4e1ea390u, 0x85427035u, 0x9847408du, 0x531b9328u, 0xd58fe186u, 0x1ed33223u, + 0xef8580f6u, 0x24d95353u, 0xa24d21fdu, 0x6911f258u, 0x7414c2e0u, 0xbf481145u, 0x39dc63ebu, 0xf280b04eu, + 0x07ac0536u, 0xccf0d693u, 0x4a64a43du, 0x81387798u, 0x9c3d4720u, 0x57619485u, 0xd1f5e62bu, 0x1aa9358eu, + 0xebff875bu, 0x20a354feu, 0xa6372650u, 0x6d6bf5f5u, 0x706ec54du, 0xbb3216e8u, 0x3da66446u, 0xf6fab7e3u, + 0x047a07adu, 0xcf26d408u, 0x49b2a6a6u, 0x82ee7503u, 0x9feb45bbu, 0x54b7961eu, 0xd223e4b0u, 0x197f3715u, + 0xe82985c0u, 0x23755665u, 0xa5e124cbu, 0x6ebdf76eu, 0x73b8c7d6u, 0xb8e41473u, 0x3e7066ddu, 0xf52cb578u, + 0x0f580a6cu, 0xc404d9c9u, 0x4290ab67u, 0x89cc78c2u, 0x94c9487au, 0x5f959bdfu, 0xd901e971u, 0x125d3ad4u, + 0xe30b8801u, 0x28575ba4u, 0xaec3290au, 0x659ffaafu, 0x789aca17u, 0xb3c619b2u, 0x35526b1cu, 0xfe0eb8b9u, + 0x0c8e08f7u, 0xc7d2db52u, 0x4146a9fcu, 0x8a1a7a59u, 0x971f4ae1u, 0x5c439944u, 0xdad7ebeau, 0x118b384fu, + 0xe0dd8a9au, 0x2b81593fu, 0xad152b91u, 0x6649f834u, 0x7b4cc88cu, 0xb0101b29u, 0x36846987u, 0xfdd8ba22u, + 0x08f40f5au, 0xc3a8dcffu, 0x453cae51u, 0x8e607df4u, 0x93654d4cu, 0x58399ee9u, 0xdeadec47u, 0x15f13fe2u, + 0xe4a78d37u, 0x2ffb5e92u, 0xa96f2c3cu, 0x6233ff99u, 0x7f36cf21u, 0xb46a1c84u, 0x32fe6e2au, 0xf9a2bd8fu, + 0x0b220dc1u, 0xc07ede64u, 0x46eaaccau, 0x8db67f6fu, 0x90b34fd7u, 0x5bef9c72u, 0xdd7beedcu, 0x16273d79u, + 0xe7718facu, 0x2c2d5c09u, 0xaab92ea7u, 0x61e5fd02u, 0x7ce0cdbau, 0xb7bc1e1fu, 0x31286cb1u, 0xfa74bf14u, + 0x1eb014d8u, 0xd5ecc77du, 0x5378b5d3u, 0x98246676u, 0x852156ceu, 0x4e7d856bu, 0xc8e9f7c5u, 0x03b52460u, + 0xf2e396b5u, 0x39bf4510u, 0xbf2b37beu, 0x7477e41bu, 0x6972d4a3u, 0xa22e0706u, 0x24ba75a8u, 0xefe6a60du, + 0x1d661643u, 0xd63ac5e6u, 0x50aeb748u, 0x9bf264edu, 0x86f75455u, 0x4dab87f0u, 0xcb3ff55eu, 0x006326fbu, + 0xf135942eu, 0x3a69478bu, 0xbcfd3525u, 0x77a1e680u, 0x6aa4d638u, 0xa1f8059du, 0x276c7733u, 0xec30a496u, + 0x191c11eeu, 0xd240c24bu, 0x54d4b0e5u, 0x9f886340u, 0x828d53f8u, 0x49d1805du, 0xcf45f2f3u, 0x04192156u, + 0xf54f9383u, 0x3e134026u, 0xb8873288u, 0x73dbe12du, 0x6eded195u, 0xa5820230u, 0x2316709eu, 0xe84aa33bu, + 0x1aca1375u, 0xd196c0d0u, 0x5702b27eu, 0x9c5e61dbu, 0x815b5163u, 0x4a0782c6u, 0xcc93f068u, 0x07cf23cdu, + 0xf6999118u, 0x3dc542bdu, 0xbb513013u, 0x700de3b6u, 0x6d08d30eu, 0xa65400abu, 0x20c07205u, 0xeb9ca1a0u, + 0x11e81eb4u, 0xdab4cd11u, 0x5c20bfbfu, 0x977c6c1au, 0x8a795ca2u, 0x41258f07u, 0xc7b1fda9u, 0x0ced2e0cu, + 0xfdbb9cd9u, 0x36e74f7cu, 0xb0733dd2u, 0x7b2fee77u, 0x662adecfu, 0xad760d6au, 0x2be27fc4u, 0xe0beac61u, + 0x123e1c2fu, 0xd962cf8au, 0x5ff6bd24u, 0x94aa6e81u, 0x89af5e39u, 0x42f38d9cu, 0xc467ff32u, 0x0f3b2c97u, + 0xfe6d9e42u, 0x35314de7u, 0xb3a53f49u, 0x78f9ececu, 0x65fcdc54u, 0xaea00ff1u, 0x28347d5fu, 0xe368aefau, + 0x16441b82u, 0xdd18c827u, 0x5b8cba89u, 0x90d0692cu, 0x8dd55994u, 0x46898a31u, 0xc01df89fu, 0x0b412b3au, + 0xfa1799efu, 0x314b4a4au, 0xb7df38e4u, 0x7c83eb41u, 0x6186dbf9u, 0xaada085cu, 0x2c4e7af2u, 0xe712a957u, + 0x15921919u, 0xdececabcu, 0x585ab812u, 0x93066bb7u, 0x8e035b0fu, 0x455f88aau, 0xc3cbfa04u, 0x089729a1u, + 0xf9c19b74u, 0x329d48d1u, 0xb4093a7fu, 0x7f55e9dau, 0x6250d962u, 0xa90c0ac7u, 0x2f987869u, 0xe4c4abccu +}; + +static const unsigned lodepng_crc32_table6[256] = { + 0x00000000u, 0xa6770bb4u, 0x979f1129u, 0x31e81a9du, 0xf44f2413u, 0x52382fa7u, 0x63d0353au, 0xc5a73e8eu, + 0x33ef4e67u, 0x959845d3u, 0xa4705f4eu, 0x020754fau, 0xc7a06a74u, 0x61d761c0u, 0x503f7b5du, 0xf64870e9u, + 0x67de9cceu, 0xc1a9977au, 0xf0418de7u, 0x56368653u, 0x9391b8ddu, 0x35e6b369u, 0x040ea9f4u, 0xa279a240u, + 0x5431d2a9u, 0xf246d91du, 0xc3aec380u, 0x65d9c834u, 0xa07ef6bau, 0x0609fd0eu, 0x37e1e793u, 0x9196ec27u, + 0xcfbd399cu, 0x69ca3228u, 0x582228b5u, 0xfe552301u, 0x3bf21d8fu, 0x9d85163bu, 0xac6d0ca6u, 0x0a1a0712u, + 0xfc5277fbu, 0x5a257c4fu, 0x6bcd66d2u, 0xcdba6d66u, 0x081d53e8u, 0xae6a585cu, 0x9f8242c1u, 0x39f54975u, + 0xa863a552u, 0x0e14aee6u, 0x3ffcb47bu, 0x998bbfcfu, 0x5c2c8141u, 0xfa5b8af5u, 0xcbb39068u, 0x6dc49bdcu, + 0x9b8ceb35u, 0x3dfbe081u, 0x0c13fa1cu, 0xaa64f1a8u, 0x6fc3cf26u, 0xc9b4c492u, 0xf85cde0fu, 0x5e2bd5bbu, + 0x440b7579u, 0xe27c7ecdu, 0xd3946450u, 0x75e36fe4u, 0xb044516au, 0x16335adeu, 0x27db4043u, 0x81ac4bf7u, + 0x77e43b1eu, 0xd19330aau, 0xe07b2a37u, 0x460c2183u, 0x83ab1f0du, 0x25dc14b9u, 0x14340e24u, 0xb2430590u, + 0x23d5e9b7u, 0x85a2e203u, 0xb44af89eu, 0x123df32au, 0xd79acda4u, 0x71edc610u, 0x4005dc8du, 0xe672d739u, + 0x103aa7d0u, 0xb64dac64u, 0x87a5b6f9u, 0x21d2bd4du, 0xe47583c3u, 0x42028877u, 0x73ea92eau, 0xd59d995eu, + 0x8bb64ce5u, 0x2dc14751u, 0x1c295dccu, 0xba5e5678u, 0x7ff968f6u, 0xd98e6342u, 0xe86679dfu, 0x4e11726bu, + 0xb8590282u, 0x1e2e0936u, 0x2fc613abu, 0x89b1181fu, 0x4c162691u, 0xea612d25u, 0xdb8937b8u, 0x7dfe3c0cu, + 0xec68d02bu, 0x4a1fdb9fu, 0x7bf7c102u, 0xdd80cab6u, 0x1827f438u, 0xbe50ff8cu, 0x8fb8e511u, 0x29cfeea5u, + 0xdf879e4cu, 0x79f095f8u, 0x48188f65u, 0xee6f84d1u, 0x2bc8ba5fu, 0x8dbfb1ebu, 0xbc57ab76u, 0x1a20a0c2u, + 0x8816eaf2u, 0x2e61e146u, 0x1f89fbdbu, 0xb9fef06fu, 0x7c59cee1u, 0xda2ec555u, 0xebc6dfc8u, 0x4db1d47cu, + 0xbbf9a495u, 0x1d8eaf21u, 0x2c66b5bcu, 0x8a11be08u, 0x4fb68086u, 0xe9c18b32u, 0xd82991afu, 0x7e5e9a1bu, + 0xefc8763cu, 0x49bf7d88u, 0x78576715u, 0xde206ca1u, 0x1b87522fu, 0xbdf0599bu, 0x8c184306u, 0x2a6f48b2u, + 0xdc27385bu, 0x7a5033efu, 0x4bb82972u, 0xedcf22c6u, 0x28681c48u, 0x8e1f17fcu, 0xbff70d61u, 0x198006d5u, + 0x47abd36eu, 0xe1dcd8dau, 0xd034c247u, 0x7643c9f3u, 0xb3e4f77du, 0x1593fcc9u, 0x247be654u, 0x820cede0u, + 0x74449d09u, 0xd23396bdu, 0xe3db8c20u, 0x45ac8794u, 0x800bb91au, 0x267cb2aeu, 0x1794a833u, 0xb1e3a387u, + 0x20754fa0u, 0x86024414u, 0xb7ea5e89u, 0x119d553du, 0xd43a6bb3u, 0x724d6007u, 0x43a57a9au, 0xe5d2712eu, + 0x139a01c7u, 0xb5ed0a73u, 0x840510eeu, 0x22721b5au, 0xe7d525d4u, 0x41a22e60u, 0x704a34fdu, 0xd63d3f49u, + 0xcc1d9f8bu, 0x6a6a943fu, 0x5b828ea2u, 0xfdf58516u, 0x3852bb98u, 0x9e25b02cu, 0xafcdaab1u, 0x09baa105u, + 0xfff2d1ecu, 0x5985da58u, 0x686dc0c5u, 0xce1acb71u, 0x0bbdf5ffu, 0xadcafe4bu, 0x9c22e4d6u, 0x3a55ef62u, + 0xabc30345u, 0x0db408f1u, 0x3c5c126cu, 0x9a2b19d8u, 0x5f8c2756u, 0xf9fb2ce2u, 0xc813367fu, 0x6e643dcbu, + 0x982c4d22u, 0x3e5b4696u, 0x0fb35c0bu, 0xa9c457bfu, 0x6c636931u, 0xca146285u, 0xfbfc7818u, 0x5d8b73acu, + 0x03a0a617u, 0xa5d7ada3u, 0x943fb73eu, 0x3248bc8au, 0xf7ef8204u, 0x519889b0u, 0x6070932du, 0xc6079899u, + 0x304fe870u, 0x9638e3c4u, 0xa7d0f959u, 0x01a7f2edu, 0xc400cc63u, 0x6277c7d7u, 0x539fdd4au, 0xf5e8d6feu, + 0x647e3ad9u, 0xc209316du, 0xf3e12bf0u, 0x55962044u, 0x90311ecau, 0x3646157eu, 0x07ae0fe3u, 0xa1d90457u, + 0x579174beu, 0xf1e67f0au, 0xc00e6597u, 0x66796e23u, 0xa3de50adu, 0x05a95b19u, 0x34414184u, 0x92364a30u +}; + +static const unsigned lodepng_crc32_table7[256] = { + 0x00000000u, 0xccaa009eu, 0x4225077du, 0x8e8f07e3u, 0x844a0efau, 0x48e00e64u, 0xc66f0987u, 0x0ac50919u, + 0xd3e51bb5u, 0x1f4f1b2bu, 0x91c01cc8u, 0x5d6a1c56u, 0x57af154fu, 0x9b0515d1u, 0x158a1232u, 0xd92012acu, + 0x7cbb312bu, 0xb01131b5u, 0x3e9e3656u, 0xf23436c8u, 0xf8f13fd1u, 0x345b3f4fu, 0xbad438acu, 0x767e3832u, + 0xaf5e2a9eu, 0x63f42a00u, 0xed7b2de3u, 0x21d12d7du, 0x2b142464u, 0xe7be24fau, 0x69312319u, 0xa59b2387u, + 0xf9766256u, 0x35dc62c8u, 0xbb53652bu, 0x77f965b5u, 0x7d3c6cacu, 0xb1966c32u, 0x3f196bd1u, 0xf3b36b4fu, + 0x2a9379e3u, 0xe639797du, 0x68b67e9eu, 0xa41c7e00u, 0xaed97719u, 0x62737787u, 0xecfc7064u, 0x205670fau, + 0x85cd537du, 0x496753e3u, 0xc7e85400u, 0x0b42549eu, 0x01875d87u, 0xcd2d5d19u, 0x43a25afau, 0x8f085a64u, + 0x562848c8u, 0x9a824856u, 0x140d4fb5u, 0xd8a74f2bu, 0xd2624632u, 0x1ec846acu, 0x9047414fu, 0x5ced41d1u, + 0x299dc2edu, 0xe537c273u, 0x6bb8c590u, 0xa712c50eu, 0xadd7cc17u, 0x617dcc89u, 0xeff2cb6au, 0x2358cbf4u, + 0xfa78d958u, 0x36d2d9c6u, 0xb85dde25u, 0x74f7debbu, 0x7e32d7a2u, 0xb298d73cu, 0x3c17d0dfu, 0xf0bdd041u, + 0x5526f3c6u, 0x998cf358u, 0x1703f4bbu, 0xdba9f425u, 0xd16cfd3cu, 0x1dc6fda2u, 0x9349fa41u, 0x5fe3fadfu, + 0x86c3e873u, 0x4a69e8edu, 0xc4e6ef0eu, 0x084cef90u, 0x0289e689u, 0xce23e617u, 0x40ace1f4u, 0x8c06e16au, + 0xd0eba0bbu, 0x1c41a025u, 0x92cea7c6u, 0x5e64a758u, 0x54a1ae41u, 0x980baedfu, 0x1684a93cu, 0xda2ea9a2u, + 0x030ebb0eu, 0xcfa4bb90u, 0x412bbc73u, 0x8d81bcedu, 0x8744b5f4u, 0x4beeb56au, 0xc561b289u, 0x09cbb217u, + 0xac509190u, 0x60fa910eu, 0xee7596edu, 0x22df9673u, 0x281a9f6au, 0xe4b09ff4u, 0x6a3f9817u, 0xa6959889u, + 0x7fb58a25u, 0xb31f8abbu, 0x3d908d58u, 0xf13a8dc6u, 0xfbff84dfu, 0x37558441u, 0xb9da83a2u, 0x7570833cu, + 0x533b85dau, 0x9f918544u, 0x111e82a7u, 0xddb48239u, 0xd7718b20u, 0x1bdb8bbeu, 0x95548c5du, 0x59fe8cc3u, + 0x80de9e6fu, 0x4c749ef1u, 0xc2fb9912u, 0x0e51998cu, 0x04949095u, 0xc83e900bu, 0x46b197e8u, 0x8a1b9776u, + 0x2f80b4f1u, 0xe32ab46fu, 0x6da5b38cu, 0xa10fb312u, 0xabcaba0bu, 0x6760ba95u, 0xe9efbd76u, 0x2545bde8u, + 0xfc65af44u, 0x30cfafdau, 0xbe40a839u, 0x72eaa8a7u, 0x782fa1beu, 0xb485a120u, 0x3a0aa6c3u, 0xf6a0a65du, + 0xaa4de78cu, 0x66e7e712u, 0xe868e0f1u, 0x24c2e06fu, 0x2e07e976u, 0xe2ade9e8u, 0x6c22ee0bu, 0xa088ee95u, + 0x79a8fc39u, 0xb502fca7u, 0x3b8dfb44u, 0xf727fbdau, 0xfde2f2c3u, 0x3148f25du, 0xbfc7f5beu, 0x736df520u, + 0xd6f6d6a7u, 0x1a5cd639u, 0x94d3d1dau, 0x5879d144u, 0x52bcd85du, 0x9e16d8c3u, 0x1099df20u, 0xdc33dfbeu, + 0x0513cd12u, 0xc9b9cd8cu, 0x4736ca6fu, 0x8b9ccaf1u, 0x8159c3e8u, 0x4df3c376u, 0xc37cc495u, 0x0fd6c40bu, + 0x7aa64737u, 0xb60c47a9u, 0x3883404au, 0xf42940d4u, 0xfeec49cdu, 0x32464953u, 0xbcc94eb0u, 0x70634e2eu, + 0xa9435c82u, 0x65e95c1cu, 0xeb665bffu, 0x27cc5b61u, 0x2d095278u, 0xe1a352e6u, 0x6f2c5505u, 0xa386559bu, + 0x061d761cu, 0xcab77682u, 0x44387161u, 0x889271ffu, 0x825778e6u, 0x4efd7878u, 0xc0727f9bu, 0x0cd87f05u, + 0xd5f86da9u, 0x19526d37u, 0x97dd6ad4u, 0x5b776a4au, 0x51b26353u, 0x9d1863cdu, 0x1397642eu, 0xdf3d64b0u, + 0x83d02561u, 0x4f7a25ffu, 0xc1f5221cu, 0x0d5f2282u, 0x079a2b9bu, 0xcb302b05u, 0x45bf2ce6u, 0x89152c78u, + 0x50353ed4u, 0x9c9f3e4au, 0x121039a9u, 0xdeba3937u, 0xd47f302eu, 0x18d530b0u, 0x965a3753u, 0x5af037cdu, + 0xff6b144au, 0x33c114d4u, 0xbd4e1337u, 0x71e413a9u, 0x7b211ab0u, 0xb78b1a2eu, 0x39041dcdu, 0xf5ae1d53u, + 0x2c8e0fffu, 0xe0240f61u, 0x6eab0882u, 0xa201081cu, 0xa8c40105u, 0x646e019bu, 0xeae10678u, 0x264b06e6u +}; + +/* Computes the cyclic redundancy check as used by PNG chunks*/ +unsigned lodepng_crc32(const unsigned char* data, size_t length) { + /*Using the Slicing by Eight algorithm*/ + unsigned r = 0xffffffffu; + while(length >= 8) { + r = lodepng_crc32_table7[(data[0] ^ (r & 0xffu))] ^ + lodepng_crc32_table6[(data[1] ^ ((r >> 8) & 0xffu))] ^ + lodepng_crc32_table5[(data[2] ^ ((r >> 16) & 0xffu))] ^ + lodepng_crc32_table4[(data[3] ^ ((r >> 24) & 0xffu))] ^ + lodepng_crc32_table3[data[4]] ^ + lodepng_crc32_table2[data[5]] ^ + lodepng_crc32_table1[data[6]] ^ + lodepng_crc32_table0[data[7]]; + data += 8; + length -= 8; + } + while(length--) { + r = lodepng_crc32_table0[(r ^ *data++) & 0xffu] ^ (r >> 8); + } + return r ^ 0xffffffffu; +} +#else /* LODEPNG_COMPILE_CRC */ +/*in this case, the function is only declared here, and must be defined externally +so that it will be linked in. + +Example implementation that uses a much smaller lookup table for memory constrained cases: + +unsigned lodepng_crc32(const unsigned char* data, size_t length) { + unsigned r = 0xffffffffu; + static const unsigned table[16] = { + 0x00000000, 0x1db71064, 0x3b6e20c8, 0x26d930ac, 0x76dc4190, 0x6b6b51f4, 0x4db26158, 0x5005713c, + 0xedb88320, 0xf00f9344, 0xd6d6a3e8, 0xcb61b38c, 0x9b64c2b0, 0x86d3d2d4, 0xa00ae278, 0xbdbdf21c + }; + while(length--) { + r = table[(r ^ *data) & 0xf] ^ (r >> 4); + r = table[(r ^ (*data >> 4)) & 0xf] ^ (r >> 4); + data++; + } + return r ^ 0xffffffffu; +} +*/ +unsigned lodepng_crc32(const unsigned char* data, size_t length); +#endif /* LODEPNG_COMPILE_CRC */ + +/* ////////////////////////////////////////////////////////////////////////// */ +/* / Reading and writing PNG color channel bits / */ +/* ////////////////////////////////////////////////////////////////////////// */ + +/* The color channel bits of less-than-8-bit pixels are read with the MSB of bytes first, +so LodePNGBitWriter and LodePNGBitReader can't be used for those. */ + +static unsigned char readBitFromReversedStream(size_t* bitpointer, const unsigned char* bitstream) { + unsigned char result = (unsigned char)((bitstream[(*bitpointer) >> 3] >> (7 - ((*bitpointer) & 0x7))) & 1); + ++(*bitpointer); + return result; +} + +/* TODO: make this faster */ +static unsigned readBitsFromReversedStream(size_t* bitpointer, const unsigned char* bitstream, size_t nbits) { + unsigned result = 0; + size_t i; + for(i = 0 ; i < nbits; ++i) { + result <<= 1u; + result |= (unsigned)readBitFromReversedStream(bitpointer, bitstream); + } + return result; +} + +static void setBitOfReversedStream(size_t* bitpointer, unsigned char* bitstream, unsigned char bit) { + /*the current bit in bitstream may be 0 or 1 for this to work*/ + if(bit == 0) bitstream[(*bitpointer) >> 3u] &= (unsigned char)(~(1u << (7u - ((*bitpointer) & 7u)))); + else bitstream[(*bitpointer) >> 3u] |= (1u << (7u - ((*bitpointer) & 7u))); + ++(*bitpointer); +} + +/* ////////////////////////////////////////////////////////////////////////// */ +/* / PNG chunks / */ +/* ////////////////////////////////////////////////////////////////////////// */ + +unsigned lodepng_chunk_length(const unsigned char* chunk) { + return lodepng_read32bitInt(chunk); +} + +void lodepng_chunk_type(char type[5], const unsigned char* chunk) { + unsigned i; + for(i = 0; i != 4; ++i) type[i] = (char)chunk[4 + i]; + type[4] = 0; /*null termination char*/ +} + +unsigned char lodepng_chunk_type_equals(const unsigned char* chunk, const char* type) { + if(lodepng_strlen(type) != 4) return 0; + return (chunk[4] == type[0] && chunk[5] == type[1] && chunk[6] == type[2] && chunk[7] == type[3]); +} + +unsigned char lodepng_chunk_ancillary(const unsigned char* chunk) { + return((chunk[4] & 32) != 0); +} + +unsigned char lodepng_chunk_private(const unsigned char* chunk) { + return((chunk[6] & 32) != 0); +} + +unsigned char lodepng_chunk_safetocopy(const unsigned char* chunk) { + return((chunk[7] & 32) != 0); +} + +unsigned char* lodepng_chunk_data(unsigned char* chunk) { + return &chunk[8]; +} + +const unsigned char* lodepng_chunk_data_const(const unsigned char* chunk) { + return &chunk[8]; +} + +unsigned lodepng_chunk_check_crc(const unsigned char* chunk) { + unsigned length = lodepng_chunk_length(chunk); + unsigned CRC = lodepng_read32bitInt(&chunk[length + 8]); + /*the CRC is taken of the data and the 4 chunk type letters, not the length*/ + unsigned checksum = lodepng_crc32(&chunk[4], length + 4); + if(CRC != checksum) return 1; + else return 0; +} + +void lodepng_chunk_generate_crc(unsigned char* chunk) { + unsigned length = lodepng_chunk_length(chunk); + unsigned CRC = lodepng_crc32(&chunk[4], length + 4); + lodepng_set32bitInt(chunk + 8 + length, CRC); +} + +unsigned char* lodepng_chunk_next(unsigned char* chunk, unsigned char* end) { + size_t available_size = (size_t)(end - chunk); + if(chunk >= end || available_size < 12) return end; /*too small to contain a chunk*/ + if(chunk[0] == 0x89 && chunk[1] == 0x50 && chunk[2] == 0x4e && chunk[3] == 0x47 + && chunk[4] == 0x0d && chunk[5] == 0x0a && chunk[6] == 0x1a && chunk[7] == 0x0a) { + /* Is PNG magic header at start of PNG file. Jump to first actual chunk. */ + return chunk + 8; + } else { + size_t total_chunk_length; + if(lodepng_addofl(lodepng_chunk_length(chunk), 12, &total_chunk_length)) return end; + if(total_chunk_length > available_size) return end; /*outside of range*/ + return chunk + total_chunk_length; + } +} + +const unsigned char* lodepng_chunk_next_const(const unsigned char* chunk, const unsigned char* end) { + size_t available_size = (size_t)(end - chunk); + if(chunk >= end || available_size < 12) return end; /*too small to contain a chunk*/ + if(chunk[0] == 0x89 && chunk[1] == 0x50 && chunk[2] == 0x4e && chunk[3] == 0x47 + && chunk[4] == 0x0d && chunk[5] == 0x0a && chunk[6] == 0x1a && chunk[7] == 0x0a) { + /* Is PNG magic header at start of PNG file. Jump to first actual chunk. */ + return chunk + 8; + } else { + size_t total_chunk_length; + if(lodepng_addofl(lodepng_chunk_length(chunk), 12, &total_chunk_length)) return end; + if(total_chunk_length > available_size) return end; /*outside of range*/ + return chunk + total_chunk_length; + } +} + +unsigned char* lodepng_chunk_find(unsigned char* chunk, unsigned char* end, const char type[5]) { + for(;;) { + if(chunk >= end || end - chunk < 12) return 0; /* past file end: chunk + 12 > end */ + if(lodepng_chunk_type_equals(chunk, type)) return chunk; + chunk = lodepng_chunk_next(chunk, end); + } +} + +const unsigned char* lodepng_chunk_find_const(const unsigned char* chunk, const unsigned char* end, const char type[5]) { + for(;;) { + if(chunk >= end || end - chunk < 12) return 0; /* past file end: chunk + 12 > end */ + if(lodepng_chunk_type_equals(chunk, type)) return chunk; + chunk = lodepng_chunk_next_const(chunk, end); + } +} + +unsigned lodepng_chunk_append(unsigned char** out, size_t* outsize, const unsigned char* chunk) { + unsigned i; + size_t total_chunk_length, new_length; + unsigned char *chunk_start, *new_buffer; + + if(lodepng_addofl(lodepng_chunk_length(chunk), 12, &total_chunk_length)) return 77; + if(lodepng_addofl(*outsize, total_chunk_length, &new_length)) return 77; + + new_buffer = (unsigned char*)lodepng_realloc(*out, new_length); + if(!new_buffer) return 83; /*alloc fail*/ + (*out) = new_buffer; + (*outsize) = new_length; + chunk_start = &(*out)[new_length - total_chunk_length]; + + for(i = 0; i != total_chunk_length; ++i) chunk_start[i] = chunk[i]; + + return 0; +} + +/*Sets length and name and allocates the space for data and crc but does not +set data or crc yet. Returns the start of the chunk in chunk. The start of +the data is at chunk + 8. To finalize chunk, add the data, then use +lodepng_chunk_generate_crc */ +static unsigned lodepng_chunk_init(unsigned char** chunk, + ucvector* out, + size_t length, const char* type) { + size_t new_length = out->size; + if(lodepng_addofl(new_length, length, &new_length)) return 77; + if(lodepng_addofl(new_length, 12, &new_length)) return 77; + if(!ucvector_resize(out, new_length)) return 83; /*alloc fail*/ + *chunk = out->data + new_length - length - 12u; + + /*1: length*/ + lodepng_set32bitInt(*chunk, (unsigned)length); + + /*2: chunk name (4 letters)*/ + lodepng_memcpy(*chunk + 4, type, 4); + + return 0; +} + +/* like lodepng_chunk_create but with custom allocsize */ +static unsigned lodepng_chunk_createv(ucvector* out, + size_t length, const char* type, const unsigned char* data) { + unsigned char* chunk; + CERROR_TRY_RETURN(lodepng_chunk_init(&chunk, out, length, type)); + + /*3: the data*/ + lodepng_memcpy(chunk + 8, data, length); + + /*4: CRC (of the chunkname characters and the data)*/ + lodepng_chunk_generate_crc(chunk); + + return 0; +} + +unsigned lodepng_chunk_create(unsigned char** out, size_t* outsize, + size_t length, const char* type, const unsigned char* data) { + ucvector v = ucvector_init(*out, *outsize); + unsigned error = lodepng_chunk_createv(&v, length, type, data); + *out = v.data; + *outsize = v.size; + return error; +} + +/* ////////////////////////////////////////////////////////////////////////// */ +/* / Color types, channels, bits / */ +/* ////////////////////////////////////////////////////////////////////////// */ + +/*checks if the colortype is valid and the bitdepth bd is allowed for this colortype. +Return value is a LodePNG error code.*/ +static unsigned checkColorValidity(LodePNGColorType colortype, unsigned bd) { + switch(colortype) { + case LCT_GREY: if(!(bd == 1 || bd == 2 || bd == 4 || bd == 8 || bd == 16)) return 37; break; + case LCT_RGB: if(!( bd == 8 || bd == 16)) return 37; break; + case LCT_PALETTE: if(!(bd == 1 || bd == 2 || bd == 4 || bd == 8 )) return 37; break; + case LCT_GREY_ALPHA: if(!( bd == 8 || bd == 16)) return 37; break; + case LCT_RGBA: if(!( bd == 8 || bd == 16)) return 37; break; + case LCT_MAX_OCTET_VALUE: return 31; /* invalid color type */ + default: return 31; /* invalid color type */ + } + return 0; /*allowed color type / bits combination*/ +} + +static unsigned getNumColorChannels(LodePNGColorType colortype) { + switch(colortype) { + case LCT_GREY: return 1; + case LCT_RGB: return 3; + case LCT_PALETTE: return 1; + case LCT_GREY_ALPHA: return 2; + case LCT_RGBA: return 4; + case LCT_MAX_OCTET_VALUE: return 0; /* invalid color type */ + default: return 0; /*invalid color type*/ + } +} + +static unsigned lodepng_get_bpp_lct(LodePNGColorType colortype, unsigned bitdepth) { + /*bits per pixel is amount of channels * bits per channel*/ + return getNumColorChannels(colortype) * bitdepth; +} + +/* ////////////////////////////////////////////////////////////////////////// */ + +void lodepng_color_mode_init(LodePNGColorMode* info) { + info->key_defined = 0; + info->key_r = info->key_g = info->key_b = 0; + info->colortype = LCT_RGBA; + info->bitdepth = 8; + info->palette = 0; + info->palettesize = 0; +} + +/*allocates palette memory if needed, and initializes all colors to black*/ +static void lodepng_color_mode_alloc_palette(LodePNGColorMode* info) { + size_t i; + /*if the palette is already allocated, it will have size 1024 so no reallocation needed in that case*/ + /*the palette must have room for up to 256 colors with 4 bytes each.*/ + if(!info->palette) info->palette = (unsigned char*)lodepng_malloc(1024); + if(!info->palette) return; /*alloc fail*/ + for(i = 0; i != 256; ++i) { + /*Initialize all unused colors with black, the value used for invalid palette indices. + This is an error according to the PNG spec, but common PNG decoders make it black instead. + That makes color conversion slightly faster due to no error handling needed.*/ + info->palette[i * 4 + 0] = 0; + info->palette[i * 4 + 1] = 0; + info->palette[i * 4 + 2] = 0; + info->palette[i * 4 + 3] = 255; + } +} + +void lodepng_color_mode_cleanup(LodePNGColorMode* info) { + lodepng_palette_clear(info); +} + +unsigned lodepng_color_mode_copy(LodePNGColorMode* dest, const LodePNGColorMode* source) { + lodepng_color_mode_cleanup(dest); + lodepng_memcpy(dest, source, sizeof(LodePNGColorMode)); + if(source->palette) { + dest->palette = (unsigned char*)lodepng_malloc(1024); + if(!dest->palette && source->palettesize) return 83; /*alloc fail*/ + lodepng_memcpy(dest->palette, source->palette, source->palettesize * 4); + } + return 0; +} + +LodePNGColorMode lodepng_color_mode_make(LodePNGColorType colortype, unsigned bitdepth) { + LodePNGColorMode result; + lodepng_color_mode_init(&result); + result.colortype = colortype; + result.bitdepth = bitdepth; + return result; +} + +static int lodepng_color_mode_equal(const LodePNGColorMode* a, const LodePNGColorMode* b) { + size_t i; + if(a->colortype != b->colortype) return 0; + if(a->bitdepth != b->bitdepth) return 0; + if(a->key_defined != b->key_defined) return 0; + if(a->key_defined) { + if(a->key_r != b->key_r) return 0; + if(a->key_g != b->key_g) return 0; + if(a->key_b != b->key_b) return 0; + } + if(a->palettesize != b->palettesize) return 0; + for(i = 0; i != a->palettesize * 4; ++i) { + if(a->palette[i] != b->palette[i]) return 0; + } + return 1; +} + +void lodepng_palette_clear(LodePNGColorMode* info) { + if(info->palette) lodepng_free(info->palette); + info->palette = 0; + info->palettesize = 0; +} + +unsigned lodepng_palette_add(LodePNGColorMode* info, + unsigned char r, unsigned char g, unsigned char b, unsigned char a) { + if(!info->palette) /*allocate palette if empty*/ { + lodepng_color_mode_alloc_palette(info); + if(!info->palette) return 83; /*alloc fail*/ + } + if(info->palettesize >= 256) { + return 108; /*too many palette values*/ + } + info->palette[4 * info->palettesize + 0] = r; + info->palette[4 * info->palettesize + 1] = g; + info->palette[4 * info->palettesize + 2] = b; + info->palette[4 * info->palettesize + 3] = a; + ++info->palettesize; + return 0; +} + +/*calculate bits per pixel out of colortype and bitdepth*/ +unsigned lodepng_get_bpp(const LodePNGColorMode* info) { + return lodepng_get_bpp_lct(info->colortype, info->bitdepth); +} + +unsigned lodepng_get_channels(const LodePNGColorMode* info) { + return getNumColorChannels(info->colortype); +} + +unsigned lodepng_is_greyscale_type(const LodePNGColorMode* info) { + return info->colortype == LCT_GREY || info->colortype == LCT_GREY_ALPHA; +} + +unsigned lodepng_is_alpha_type(const LodePNGColorMode* info) { + return (info->colortype & 4) != 0; /*4 or 6*/ +} + +unsigned lodepng_is_palette_type(const LodePNGColorMode* info) { + return info->colortype == LCT_PALETTE; +} + +unsigned lodepng_has_palette_alpha(const LodePNGColorMode* info) { + size_t i; + for(i = 0; i != info->palettesize; ++i) { + if(info->palette[i * 4 + 3] < 255) return 1; + } + return 0; +} + +unsigned lodepng_can_have_alpha(const LodePNGColorMode* info) { + return info->key_defined + || lodepng_is_alpha_type(info) + || lodepng_has_palette_alpha(info); +} + +static size_t lodepng_get_raw_size_lct(unsigned w, unsigned h, LodePNGColorType colortype, unsigned bitdepth) { + size_t bpp = lodepng_get_bpp_lct(colortype, bitdepth); + size_t n = (size_t)w * (size_t)h; + return ((n / 8u) * bpp) + ((n & 7u) * bpp + 7u) / 8u; +} + +size_t lodepng_get_raw_size(unsigned w, unsigned h, const LodePNGColorMode* color) { + return lodepng_get_raw_size_lct(w, h, color->colortype, color->bitdepth); +} + + +#ifdef LODEPNG_COMPILE_PNG + +/*in an idat chunk, each scanline is a multiple of 8 bits, unlike the lodepng output buffer, +and in addition has one extra byte per line: the filter byte. So this gives a larger +result than lodepng_get_raw_size. Set h to 1 to get the size of 1 row including filter byte. */ +static size_t lodepng_get_raw_size_idat(unsigned w, unsigned h, unsigned bpp) { + /* + 1 for the filter byte, and possibly plus padding bits per line. */ + /* Ignoring casts, the expression is equal to (w * bpp + 7) / 8 + 1, but avoids overflow of w * bpp */ + size_t line = ((size_t)(w / 8u) * bpp) + 1u + ((w & 7u) * bpp + 7u) / 8u; + return (size_t)h * line; +} + +#ifdef LODEPNG_COMPILE_DECODER +/*Safely checks whether size_t overflow can be caused due to amount of pixels. +This check is overcautious rather than precise. If this check indicates no overflow, +you can safely compute in a size_t (but not an unsigned): +-(size_t)w * (size_t)h * 8 +-amount of bytes in IDAT (including filter, padding and Adam7 bytes) +-amount of bytes in raw color model +Returns 1 if overflow possible, 0 if not. +*/ +static int lodepng_pixel_overflow(unsigned w, unsigned h, + const LodePNGColorMode* pngcolor, const LodePNGColorMode* rawcolor) { + size_t bpp = LODEPNG_MAX(lodepng_get_bpp(pngcolor), lodepng_get_bpp(rawcolor)); + size_t numpixels, total; + size_t line; /* bytes per line in worst case */ + + if(lodepng_mulofl((size_t)w, (size_t)h, &numpixels)) return 1; + if(lodepng_mulofl(numpixels, 8, &total)) return 1; /* bit pointer with 8-bit color, or 8 bytes per channel color */ + + /* Bytes per scanline with the expression "(w / 8u) * bpp) + ((w & 7u) * bpp + 7u) / 8u" */ + if(lodepng_mulofl((size_t)(w / 8u), bpp, &line)) return 1; + if(lodepng_addofl(line, ((w & 7u) * bpp + 7u) / 8u, &line)) return 1; + + if(lodepng_addofl(line, 5, &line)) return 1; /* 5 bytes overhead per line: 1 filterbyte, 4 for Adam7 worst case */ + if(lodepng_mulofl(line, h, &total)) return 1; /* Total bytes in worst case */ + + return 0; /* no overflow */ +} +#endif /*LODEPNG_COMPILE_DECODER*/ +#endif /*LODEPNG_COMPILE_PNG*/ + +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + +static void LodePNGUnknownChunks_init(LodePNGInfo* info) { + unsigned i; + for(i = 0; i != 3; ++i) info->unknown_chunks_data[i] = 0; + for(i = 0; i != 3; ++i) info->unknown_chunks_size[i] = 0; +} + +static void LodePNGUnknownChunks_cleanup(LodePNGInfo* info) { + unsigned i; + for(i = 0; i != 3; ++i) lodepng_free(info->unknown_chunks_data[i]); +} + +static unsigned LodePNGUnknownChunks_copy(LodePNGInfo* dest, const LodePNGInfo* src) { + unsigned i; + + LodePNGUnknownChunks_cleanup(dest); + + for(i = 0; i != 3; ++i) { + size_t j; + dest->unknown_chunks_size[i] = src->unknown_chunks_size[i]; + dest->unknown_chunks_data[i] = (unsigned char*)lodepng_malloc(src->unknown_chunks_size[i]); + if(!dest->unknown_chunks_data[i] && dest->unknown_chunks_size[i]) return 83; /*alloc fail*/ + for(j = 0; j < src->unknown_chunks_size[i]; ++j) { + dest->unknown_chunks_data[i][j] = src->unknown_chunks_data[i][j]; + } + } + + return 0; +} + +/******************************************************************************/ + +static void LodePNGText_init(LodePNGInfo* info) { + info->text_num = 0; + info->text_keys = NULL; + info->text_strings = NULL; +} + +static void LodePNGText_cleanup(LodePNGInfo* info) { + size_t i; + for(i = 0; i != info->text_num; ++i) { + string_cleanup(&info->text_keys[i]); + string_cleanup(&info->text_strings[i]); + } + lodepng_free(info->text_keys); + lodepng_free(info->text_strings); +} + +static unsigned LodePNGText_copy(LodePNGInfo* dest, const LodePNGInfo* source) { + size_t i = 0; + dest->text_keys = NULL; + dest->text_strings = NULL; + dest->text_num = 0; + for(i = 0; i != source->text_num; ++i) { + CERROR_TRY_RETURN(lodepng_add_text(dest, source->text_keys[i], source->text_strings[i])); + } + return 0; +} + +static unsigned lodepng_add_text_sized(LodePNGInfo* info, const char* key, const char* str, size_t size) { + char** new_keys = (char**)(lodepng_realloc(info->text_keys, sizeof(char*) * (info->text_num + 1))); + char** new_strings = (char**)(lodepng_realloc(info->text_strings, sizeof(char*) * (info->text_num + 1))); + + if(new_keys) info->text_keys = new_keys; + if(new_strings) info->text_strings = new_strings; + + if(!new_keys || !new_strings) return 83; /*alloc fail*/ + + ++info->text_num; + info->text_keys[info->text_num - 1] = alloc_string(key); + info->text_strings[info->text_num - 1] = alloc_string_sized(str, size); + if(!info->text_keys[info->text_num - 1] || !info->text_strings[info->text_num - 1]) return 83; /*alloc fail*/ + + return 0; +} + +unsigned lodepng_add_text(LodePNGInfo* info, const char* key, const char* str) { + return lodepng_add_text_sized(info, key, str, lodepng_strlen(str)); +} + +void lodepng_clear_text(LodePNGInfo* info) { + LodePNGText_cleanup(info); +} + +/******************************************************************************/ + +static void LodePNGIText_init(LodePNGInfo* info) { + info->itext_num = 0; + info->itext_keys = NULL; + info->itext_langtags = NULL; + info->itext_transkeys = NULL; + info->itext_strings = NULL; +} + +static void LodePNGIText_cleanup(LodePNGInfo* info) { + size_t i; + for(i = 0; i != info->itext_num; ++i) { + string_cleanup(&info->itext_keys[i]); + string_cleanup(&info->itext_langtags[i]); + string_cleanup(&info->itext_transkeys[i]); + string_cleanup(&info->itext_strings[i]); + } + lodepng_free(info->itext_keys); + lodepng_free(info->itext_langtags); + lodepng_free(info->itext_transkeys); + lodepng_free(info->itext_strings); +} + +static unsigned LodePNGIText_copy(LodePNGInfo* dest, const LodePNGInfo* source) { + size_t i = 0; + dest->itext_keys = NULL; + dest->itext_langtags = NULL; + dest->itext_transkeys = NULL; + dest->itext_strings = NULL; + dest->itext_num = 0; + for(i = 0; i != source->itext_num; ++i) { + CERROR_TRY_RETURN(lodepng_add_itext(dest, source->itext_keys[i], source->itext_langtags[i], + source->itext_transkeys[i], source->itext_strings[i])); + } + return 0; +} + +void lodepng_clear_itext(LodePNGInfo* info) { + LodePNGIText_cleanup(info); +} + +static unsigned lodepng_add_itext_sized(LodePNGInfo* info, const char* key, const char* langtag, + const char* transkey, const char* str, size_t size) { + char** new_keys = (char**)(lodepng_realloc(info->itext_keys, sizeof(char*) * (info->itext_num + 1))); + char** new_langtags = (char**)(lodepng_realloc(info->itext_langtags, sizeof(char*) * (info->itext_num + 1))); + char** new_transkeys = (char**)(lodepng_realloc(info->itext_transkeys, sizeof(char*) * (info->itext_num + 1))); + char** new_strings = (char**)(lodepng_realloc(info->itext_strings, sizeof(char*) * (info->itext_num + 1))); + + if(new_keys) info->itext_keys = new_keys; + if(new_langtags) info->itext_langtags = new_langtags; + if(new_transkeys) info->itext_transkeys = new_transkeys; + if(new_strings) info->itext_strings = new_strings; + + if(!new_keys || !new_langtags || !new_transkeys || !new_strings) return 83; /*alloc fail*/ + + ++info->itext_num; + + info->itext_keys[info->itext_num - 1] = alloc_string(key); + info->itext_langtags[info->itext_num - 1] = alloc_string(langtag); + info->itext_transkeys[info->itext_num - 1] = alloc_string(transkey); + info->itext_strings[info->itext_num - 1] = alloc_string_sized(str, size); + + return 0; +} + +unsigned lodepng_add_itext(LodePNGInfo* info, const char* key, const char* langtag, + const char* transkey, const char* str) { + return lodepng_add_itext_sized(info, key, langtag, transkey, str, lodepng_strlen(str)); +} + +unsigned lodepng_set_icc(LodePNGInfo* info, const char* name, const unsigned char* profile, unsigned profile_size) { + if(info->iccp_defined) lodepng_clear_icc(info); + + if(profile_size == 0) return 100; /*invalid ICC profile size*/ + + info->iccp_name = alloc_string(name); + if(!info->iccp_name) return 83; /*alloc fail*/ + + info->iccp_profile = (unsigned char*)lodepng_malloc(profile_size); + if(!info->iccp_profile) { + lodepng_free(info->iccp_name); + return 83; /*alloc fail*/ + } + + lodepng_memcpy(info->iccp_profile, profile, profile_size); + info->iccp_profile_size = profile_size; + info->iccp_defined = 1; + + return 0; /*ok*/ +} + +void lodepng_clear_icc(LodePNGInfo* info) { + string_cleanup(&info->iccp_name); + lodepng_free(info->iccp_profile); + info->iccp_profile = NULL; + info->iccp_profile_size = 0; + info->iccp_defined = 0; +} + +unsigned lodepng_set_exif(LodePNGInfo* info, const unsigned char* exif, unsigned exif_size) { + if(info->exif_defined) lodepng_clear_exif(info); + info->exif = (unsigned char*)lodepng_malloc(exif_size); + + if(!info->exif) return 83; /*alloc fail*/ + + lodepng_memcpy(info->exif, exif, exif_size); + info->exif_size = exif_size; + info->exif_defined = 1; + + return 0; /*ok*/ +} + +void lodepng_clear_exif(LodePNGInfo* info) { + lodepng_free(info->exif); + info->exif = NULL; + info->exif_size = 0; + info->exif_defined = 0; +} +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ + +void lodepng_info_init(LodePNGInfo* info) { + lodepng_color_mode_init(&info->color); + info->interlace_method = 0; + info->compression_method = 0; + info->filter_method = 0; +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + info->background_defined = 0; + info->background_r = info->background_g = info->background_b = 0; + + LodePNGText_init(info); + LodePNGIText_init(info); + + info->time_defined = 0; + info->phys_defined = 0; + + info->gama_defined = 0; + info->chrm_defined = 0; + info->srgb_defined = 0; + info->iccp_defined = 0; + info->iccp_name = NULL; + info->iccp_profile = NULL; + + info->exif_defined = 0; + info->exif = NULL; + info->exif_size = 0; + + info->sbit_defined = 0; + info->sbit_r = info->sbit_g = info->sbit_b = info->sbit_a = 0; + + LodePNGUnknownChunks_init(info); +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ +} + +void lodepng_info_cleanup(LodePNGInfo* info) { + lodepng_color_mode_cleanup(&info->color); +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + LodePNGText_cleanup(info); + LodePNGIText_cleanup(info); + + lodepng_clear_icc(info); + lodepng_clear_exif(info); + + LodePNGUnknownChunks_cleanup(info); +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ +} + +unsigned lodepng_info_copy(LodePNGInfo* dest, const LodePNGInfo* source) { + lodepng_info_cleanup(dest); + lodepng_memcpy(dest, source, sizeof(LodePNGInfo)); + lodepng_color_mode_init(&dest->color); + CERROR_TRY_RETURN(lodepng_color_mode_copy(&dest->color, &source->color)); + +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + CERROR_TRY_RETURN(LodePNGText_copy(dest, source)); + CERROR_TRY_RETURN(LodePNGIText_copy(dest, source)); + if(source->iccp_defined) { + dest->iccp_defined = 0; /*the memcpy above set this to 1 while it shouldn't*/ + CERROR_TRY_RETURN(lodepng_set_icc(dest, source->iccp_name, source->iccp_profile, source->iccp_profile_size)); + } + if(source->exif_defined) { + dest->exif_defined = 0; /*the memcpy above set this to 1 while it shouldn't*/ + CERROR_TRY_RETURN(lodepng_set_exif(dest, source->exif, source->exif_size)); + } + + LodePNGUnknownChunks_init(dest); + CERROR_TRY_RETURN(LodePNGUnknownChunks_copy(dest, source)); +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ + return 0; +} + +/* ////////////////////////////////////////////////////////////////////////// */ + +/*index: bitgroup index, bits: bitgroup size(1, 2 or 4), in: bitgroup value, out: octet array to add bits to*/ +static void addColorBits(unsigned char* out, size_t index, unsigned bits, unsigned in) { + unsigned m = bits == 1 ? 7 : bits == 2 ? 3 : 1; /*8 / bits - 1*/ + /*p = the partial index in the byte, e.g. with 4 palettebits it is 0 for first half or 1 for second half*/ + unsigned p = index & m; + in &= (1u << bits) - 1u; /*filter out any other bits of the input value*/ + in = in << (bits * (m - p)); + if(p == 0) out[index * bits / 8u] = in; + else out[index * bits / 8u] |= in; +} + +typedef struct ColorTree ColorTree; + +/* +One node of a color tree +This is the data structure used to count the number of unique colors and to get a palette +index for a color. It's like an octree, but because the alpha channel is used too, each +node has 16 instead of 8 children. +*/ +struct ColorTree { + ColorTree* children[16]; /*up to 16 pointers to ColorTree of next level*/ + int index; /*the payload. Only has a meaningful value if this is in the last level*/ +}; + +static void color_tree_init(ColorTree* tree) { + lodepng_memset(tree->children, 0, 16 * sizeof(*tree->children)); + tree->index = -1; +} + +static void color_tree_cleanup(ColorTree* tree) { + int i; + for(i = 0; i != 16; ++i) { + if(tree->children[i]) { + color_tree_cleanup(tree->children[i]); + lodepng_free(tree->children[i]); + } + } +} + +/*returns -1 if color not present, its index otherwise*/ +static int color_tree_get(ColorTree* tree, unsigned char r, unsigned char g, unsigned char b, unsigned char a) { + int bit = 0; + for(bit = 0; bit < 8; ++bit) { + int i = 8 * ((r >> bit) & 1) + 4 * ((g >> bit) & 1) + 2 * ((b >> bit) & 1) + 1 * ((a >> bit) & 1); + if(!tree->children[i]) return -1; + else tree = tree->children[i]; + } + return tree ? tree->index : -1; +} + +#ifdef LODEPNG_COMPILE_ENCODER +static int color_tree_has(ColorTree* tree, unsigned char r, unsigned char g, unsigned char b, unsigned char a) { + return color_tree_get(tree, r, g, b, a) >= 0; +} +#endif /*LODEPNG_COMPILE_ENCODER*/ + +/*color is not allowed to already exist. +Index should be >= 0 (it's signed to be compatible with using -1 for "doesn't exist") +Returns error code, or 0 if ok*/ +static unsigned color_tree_add(ColorTree* tree, + unsigned char r, unsigned char g, unsigned char b, unsigned char a, unsigned index) { + int bit; + for(bit = 0; bit < 8; ++bit) { + int i = 8 * ((r >> bit) & 1) + 4 * ((g >> bit) & 1) + 2 * ((b >> bit) & 1) + 1 * ((a >> bit) & 1); + if(!tree->children[i]) { + tree->children[i] = (ColorTree*)lodepng_malloc(sizeof(ColorTree)); + if(!tree->children[i]) return 83; /*alloc fail*/ + color_tree_init(tree->children[i]); + } + tree = tree->children[i]; + } + tree->index = (int)index; + return 0; +} + +/*put a pixel, given its RGBA color, into image of any color type*/ +static unsigned rgba8ToPixel(unsigned char* out, size_t i, + const LodePNGColorMode* mode, ColorTree* tree /*for palette*/, + unsigned char r, unsigned char g, unsigned char b, unsigned char a) { + if(mode->colortype == LCT_GREY) { + unsigned char gray = r; /*((unsigned short)r + g + b) / 3u;*/ + if(mode->bitdepth == 8) out[i] = gray; + else if(mode->bitdepth == 16) out[i * 2 + 0] = out[i * 2 + 1] = gray; + else { + /*take the most significant bits of gray*/ + gray = ((unsigned)gray >> (8u - mode->bitdepth)) & ((1u << mode->bitdepth) - 1u); + addColorBits(out, i, mode->bitdepth, gray); + } + } else if(mode->colortype == LCT_RGB) { + if(mode->bitdepth == 8) { + out[i * 3 + 0] = r; + out[i * 3 + 1] = g; + out[i * 3 + 2] = b; + } else { + out[i * 6 + 0] = out[i * 6 + 1] = r; + out[i * 6 + 2] = out[i * 6 + 3] = g; + out[i * 6 + 4] = out[i * 6 + 5] = b; + } + } else if(mode->colortype == LCT_PALETTE) { + int index = color_tree_get(tree, r, g, b, a); + if(index < 0) return 82; /*color not in palette*/ + if(mode->bitdepth == 8) out[i] = index; + else addColorBits(out, i, mode->bitdepth, (unsigned)index); + } else if(mode->colortype == LCT_GREY_ALPHA) { + unsigned char gray = r; /*((unsigned short)r + g + b) / 3u;*/ + if(mode->bitdepth == 8) { + out[i * 2 + 0] = gray; + out[i * 2 + 1] = a; + } else if(mode->bitdepth == 16) { + out[i * 4 + 0] = out[i * 4 + 1] = gray; + out[i * 4 + 2] = out[i * 4 + 3] = a; + } + } else if(mode->colortype == LCT_RGBA) { + if(mode->bitdepth == 8) { + out[i * 4 + 0] = r; + out[i * 4 + 1] = g; + out[i * 4 + 2] = b; + out[i * 4 + 3] = a; + } else { + out[i * 8 + 0] = out[i * 8 + 1] = r; + out[i * 8 + 2] = out[i * 8 + 3] = g; + out[i * 8 + 4] = out[i * 8 + 5] = b; + out[i * 8 + 6] = out[i * 8 + 7] = a; + } + } + + return 0; /*no error*/ +} + +/*put a pixel, given its RGBA16 color, into image of any color 16-bitdepth type*/ +static void rgba16ToPixel(unsigned char* out, size_t i, + const LodePNGColorMode* mode, + unsigned short r, unsigned short g, unsigned short b, unsigned short a) { + if(mode->colortype == LCT_GREY) { + unsigned short gray = r; /*((unsigned)r + g + b) / 3u;*/ + out[i * 2 + 0] = (gray >> 8) & 255; + out[i * 2 + 1] = gray & 255; + } else if(mode->colortype == LCT_RGB) { + out[i * 6 + 0] = (r >> 8) & 255; + out[i * 6 + 1] = r & 255; + out[i * 6 + 2] = (g >> 8) & 255; + out[i * 6 + 3] = g & 255; + out[i * 6 + 4] = (b >> 8) & 255; + out[i * 6 + 5] = b & 255; + } else if(mode->colortype == LCT_GREY_ALPHA) { + unsigned short gray = r; /*((unsigned)r + g + b) / 3u;*/ + out[i * 4 + 0] = (gray >> 8) & 255; + out[i * 4 + 1] = gray & 255; + out[i * 4 + 2] = (a >> 8) & 255; + out[i * 4 + 3] = a & 255; + } else if(mode->colortype == LCT_RGBA) { + out[i * 8 + 0] = (r >> 8) & 255; + out[i * 8 + 1] = r & 255; + out[i * 8 + 2] = (g >> 8) & 255; + out[i * 8 + 3] = g & 255; + out[i * 8 + 4] = (b >> 8) & 255; + out[i * 8 + 5] = b & 255; + out[i * 8 + 6] = (a >> 8) & 255; + out[i * 8 + 7] = a & 255; + } +} + +/*Get RGBA8 color of pixel with index i (y * width + x) from the raw image with given color type.*/ +static void getPixelColorRGBA8(unsigned char* r, unsigned char* g, + unsigned char* b, unsigned char* a, + const unsigned char* in, size_t i, + const LodePNGColorMode* mode) { + if(mode->colortype == LCT_GREY) { + if(mode->bitdepth == 8) { + *r = *g = *b = in[i]; + if(mode->key_defined && *r == mode->key_r) *a = 0; + else *a = 255; + } else if(mode->bitdepth == 16) { + *r = *g = *b = in[i * 2 + 0]; + if(mode->key_defined && 256U * in[i * 2 + 0] + in[i * 2 + 1] == mode->key_r) *a = 0; + else *a = 255; + } else { + unsigned highest = ((1U << mode->bitdepth) - 1U); /*highest possible value for this bit depth*/ + size_t j = i * mode->bitdepth; + unsigned value = readBitsFromReversedStream(&j, in, mode->bitdepth); + *r = *g = *b = (value * 255) / highest; + if(mode->key_defined && value == mode->key_r) *a = 0; + else *a = 255; + } + } else if(mode->colortype == LCT_RGB) { + if(mode->bitdepth == 8) { + *r = in[i * 3 + 0]; *g = in[i * 3 + 1]; *b = in[i * 3 + 2]; + if(mode->key_defined && *r == mode->key_r && *g == mode->key_g && *b == mode->key_b) *a = 0; + else *a = 255; + } else { + *r = in[i * 6 + 0]; + *g = in[i * 6 + 2]; + *b = in[i * 6 + 4]; + if(mode->key_defined && 256U * in[i * 6 + 0] + in[i * 6 + 1] == mode->key_r + && 256U * in[i * 6 + 2] + in[i * 6 + 3] == mode->key_g + && 256U * in[i * 6 + 4] + in[i * 6 + 5] == mode->key_b) *a = 0; + else *a = 255; + } + } else if(mode->colortype == LCT_PALETTE) { + unsigned index; + if(mode->bitdepth == 8) index = in[i]; + else { + size_t j = i * mode->bitdepth; + index = readBitsFromReversedStream(&j, in, mode->bitdepth); + } + /*out of bounds of palette not checked: see lodepng_color_mode_alloc_palette.*/ + *r = mode->palette[index * 4 + 0]; + *g = mode->palette[index * 4 + 1]; + *b = mode->palette[index * 4 + 2]; + *a = mode->palette[index * 4 + 3]; + } else if(mode->colortype == LCT_GREY_ALPHA) { + if(mode->bitdepth == 8) { + *r = *g = *b = in[i * 2 + 0]; + *a = in[i * 2 + 1]; + } else { + *r = *g = *b = in[i * 4 + 0]; + *a = in[i * 4 + 2]; + } + } else if(mode->colortype == LCT_RGBA) { + if(mode->bitdepth == 8) { + *r = in[i * 4 + 0]; + *g = in[i * 4 + 1]; + *b = in[i * 4 + 2]; + *a = in[i * 4 + 3]; + } else { + *r = in[i * 8 + 0]; + *g = in[i * 8 + 2]; + *b = in[i * 8 + 4]; + *a = in[i * 8 + 6]; + } + } +} + +/*Similar to getPixelColorRGBA8, but with all the for loops inside of the color +mode test cases, optimized to convert the colors much faster, when converting +to the common case of RGBA with 8 bit per channel. buffer must be RGBA with +enough memory.*/ +static void getPixelColorsRGBA8(unsigned char* LODEPNG_RESTRICT buffer, size_t numpixels, + const unsigned char* LODEPNG_RESTRICT in, + const LodePNGColorMode* mode) { + unsigned num_channels = 4; + size_t i; + if(mode->colortype == LCT_GREY) { + if(mode->bitdepth == 8) { + for(i = 0; i != numpixels; ++i, buffer += num_channels) { + buffer[0] = buffer[1] = buffer[2] = in[i]; + buffer[3] = 255; + } + if(mode->key_defined) { + buffer -= numpixels * num_channels; + for(i = 0; i != numpixels; ++i, buffer += num_channels) { + if(buffer[0] == mode->key_r) buffer[3] = 0; + } + } + } else if(mode->bitdepth == 16) { + for(i = 0; i != numpixels; ++i, buffer += num_channels) { + buffer[0] = buffer[1] = buffer[2] = in[i * 2]; + buffer[3] = mode->key_defined && 256U * in[i * 2 + 0] + in[i * 2 + 1] == mode->key_r ? 0 : 255; + } + } else { + unsigned highest = ((1U << mode->bitdepth) - 1U); /*highest possible value for this bit depth*/ + size_t j = 0; + for(i = 0; i != numpixels; ++i, buffer += num_channels) { + unsigned value = readBitsFromReversedStream(&j, in, mode->bitdepth); + buffer[0] = buffer[1] = buffer[2] = (value * 255) / highest; + buffer[3] = mode->key_defined && value == mode->key_r ? 0 : 255; + } + } + } else if(mode->colortype == LCT_RGB) { + if(mode->bitdepth == 8) { + for(i = 0; i != numpixels; ++i, buffer += num_channels) { + lodepng_memcpy(buffer, &in[i * 3], 3); + buffer[3] = 255; + } + if(mode->key_defined) { + buffer -= numpixels * num_channels; + for(i = 0; i != numpixels; ++i, buffer += num_channels) { + if(buffer[0] == mode->key_r && buffer[1]== mode->key_g && buffer[2] == mode->key_b) buffer[3] = 0; + } + } + } else { + for(i = 0; i != numpixels; ++i, buffer += num_channels) { + buffer[0] = in[i * 6 + 0]; + buffer[1] = in[i * 6 + 2]; + buffer[2] = in[i * 6 + 4]; + buffer[3] = mode->key_defined + && 256U * in[i * 6 + 0] + in[i * 6 + 1] == mode->key_r + && 256U * in[i * 6 + 2] + in[i * 6 + 3] == mode->key_g + && 256U * in[i * 6 + 4] + in[i * 6 + 5] == mode->key_b ? 0 : 255; + } + } + } else if(mode->colortype == LCT_PALETTE) { + if(mode->bitdepth == 8) { + for(i = 0; i != numpixels; ++i, buffer += num_channels) { + unsigned index = in[i]; + /*out of bounds of palette not checked: see lodepng_color_mode_alloc_palette.*/ + lodepng_memcpy(buffer, &mode->palette[index * 4], 4); + } + } else { + size_t j = 0; + for(i = 0; i != numpixels; ++i, buffer += num_channels) { + unsigned index = readBitsFromReversedStream(&j, in, mode->bitdepth); + /*out of bounds of palette not checked: see lodepng_color_mode_alloc_palette.*/ + lodepng_memcpy(buffer, &mode->palette[index * 4], 4); + } + } + } else if(mode->colortype == LCT_GREY_ALPHA) { + if(mode->bitdepth == 8) { + for(i = 0; i != numpixels; ++i, buffer += num_channels) { + buffer[0] = buffer[1] = buffer[2] = in[i * 2 + 0]; + buffer[3] = in[i * 2 + 1]; + } + } else { + for(i = 0; i != numpixels; ++i, buffer += num_channels) { + buffer[0] = buffer[1] = buffer[2] = in[i * 4 + 0]; + buffer[3] = in[i * 4 + 2]; + } + } + } else if(mode->colortype == LCT_RGBA) { + if(mode->bitdepth == 8) { + lodepng_memcpy(buffer, in, numpixels * 4); + } else { + for(i = 0; i != numpixels; ++i, buffer += num_channels) { + buffer[0] = in[i * 8 + 0]; + buffer[1] = in[i * 8 + 2]; + buffer[2] = in[i * 8 + 4]; + buffer[3] = in[i * 8 + 6]; + } + } + } +} + +/*Similar to getPixelColorsRGBA8, but with 3-channel RGB output.*/ +static void getPixelColorsRGB8(unsigned char* LODEPNG_RESTRICT buffer, size_t numpixels, + const unsigned char* LODEPNG_RESTRICT in, + const LodePNGColorMode* mode) { + const unsigned num_channels = 3; + size_t i; + if(mode->colortype == LCT_GREY) { + if(mode->bitdepth == 8) { + for(i = 0; i != numpixels; ++i, buffer += num_channels) { + buffer[0] = buffer[1] = buffer[2] = in[i]; + } + } else if(mode->bitdepth == 16) { + for(i = 0; i != numpixels; ++i, buffer += num_channels) { + buffer[0] = buffer[1] = buffer[2] = in[i * 2]; + } + } else { + unsigned highest = ((1U << mode->bitdepth) - 1U); /*highest possible value for this bit depth*/ + size_t j = 0; + for(i = 0; i != numpixels; ++i, buffer += num_channels) { + unsigned value = readBitsFromReversedStream(&j, in, mode->bitdepth); + buffer[0] = buffer[1] = buffer[2] = (value * 255) / highest; + } + } + } else if(mode->colortype == LCT_RGB) { + if(mode->bitdepth == 8) { + lodepng_memcpy(buffer, in, numpixels * 3); + } else { + for(i = 0; i != numpixels; ++i, buffer += num_channels) { + buffer[0] = in[i * 6 + 0]; + buffer[1] = in[i * 6 + 2]; + buffer[2] = in[i * 6 + 4]; + } + } + } else if(mode->colortype == LCT_PALETTE) { + if(mode->bitdepth == 8) { + for(i = 0; i != numpixels; ++i, buffer += num_channels) { + unsigned index = in[i]; + /*out of bounds of palette not checked: see lodepng_color_mode_alloc_palette.*/ + lodepng_memcpy(buffer, &mode->palette[index * 4], 3); + } + } else { + size_t j = 0; + for(i = 0; i != numpixels; ++i, buffer += num_channels) { + unsigned index = readBitsFromReversedStream(&j, in, mode->bitdepth); + /*out of bounds of palette not checked: see lodepng_color_mode_alloc_palette.*/ + lodepng_memcpy(buffer, &mode->palette[index * 4], 3); + } + } + } else if(mode->colortype == LCT_GREY_ALPHA) { + if(mode->bitdepth == 8) { + for(i = 0; i != numpixels; ++i, buffer += num_channels) { + buffer[0] = buffer[1] = buffer[2] = in[i * 2 + 0]; + } + } else { + for(i = 0; i != numpixels; ++i, buffer += num_channels) { + buffer[0] = buffer[1] = buffer[2] = in[i * 4 + 0]; + } + } + } else if(mode->colortype == LCT_RGBA) { + if(mode->bitdepth == 8) { + for(i = 0; i != numpixels; ++i, buffer += num_channels) { + lodepng_memcpy(buffer, &in[i * 4], 3); + } + } else { + for(i = 0; i != numpixels; ++i, buffer += num_channels) { + buffer[0] = in[i * 8 + 0]; + buffer[1] = in[i * 8 + 2]; + buffer[2] = in[i * 8 + 4]; + } + } + } +} + +/*Get RGBA16 color of pixel with index i (y * width + x) from the raw image with +given color type, but the given color type must be 16-bit itself.*/ +static void getPixelColorRGBA16(unsigned short* r, unsigned short* g, unsigned short* b, unsigned short* a, + const unsigned char* in, size_t i, const LodePNGColorMode* mode) { + if(mode->colortype == LCT_GREY) { + *r = *g = *b = 256 * in[i * 2 + 0] + in[i * 2 + 1]; + if(mode->key_defined && 256U * in[i * 2 + 0] + in[i * 2 + 1] == mode->key_r) *a = 0; + else *a = 65535; + } else if(mode->colortype == LCT_RGB) { + *r = 256u * in[i * 6 + 0] + in[i * 6 + 1]; + *g = 256u * in[i * 6 + 2] + in[i * 6 + 3]; + *b = 256u * in[i * 6 + 4] + in[i * 6 + 5]; + if(mode->key_defined + && 256u * in[i * 6 + 0] + in[i * 6 + 1] == mode->key_r + && 256u * in[i * 6 + 2] + in[i * 6 + 3] == mode->key_g + && 256u * in[i * 6 + 4] + in[i * 6 + 5] == mode->key_b) *a = 0; + else *a = 65535; + } else if(mode->colortype == LCT_GREY_ALPHA) { + *r = *g = *b = 256u * in[i * 4 + 0] + in[i * 4 + 1]; + *a = 256u * in[i * 4 + 2] + in[i * 4 + 3]; + } else if(mode->colortype == LCT_RGBA) { + *r = 256u * in[i * 8 + 0] + in[i * 8 + 1]; + *g = 256u * in[i * 8 + 2] + in[i * 8 + 3]; + *b = 256u * in[i * 8 + 4] + in[i * 8 + 5]; + *a = 256u * in[i * 8 + 6] + in[i * 8 + 7]; + } +} + +unsigned lodepng_convert(unsigned char* out, const unsigned char* in, + const LodePNGColorMode* mode_out, const LodePNGColorMode* mode_in, + unsigned w, unsigned h) { + size_t i; + ColorTree tree; + size_t numpixels = (size_t)w * (size_t)h; + unsigned error = 0; + + if(mode_in->colortype == LCT_PALETTE && !mode_in->palette) { + return 107; /* error: must provide palette if input mode is palette */ + } + + if(lodepng_color_mode_equal(mode_out, mode_in)) { + size_t numbytes = lodepng_get_raw_size(w, h, mode_in); + lodepng_memcpy(out, in, numbytes); + return 0; + } + + if(mode_out->colortype == LCT_PALETTE) { + size_t palettesize = mode_out->palettesize; + const unsigned char* palette = mode_out->palette; + size_t palsize = (size_t)1u << mode_out->bitdepth; + /*if the user specified output palette but did not give the values, assume + they want the values of the input color type (assuming that one is palette). + Note that we never create a new palette ourselves.*/ + if(palettesize == 0) { + palettesize = mode_in->palettesize; + palette = mode_in->palette; + /*if the input was also palette with same bitdepth, then the color types are also + equal, so copy literally. This to preserve the exact indices that were in the PNG + even in case there are duplicate colors in the palette.*/ + if(mode_in->colortype == LCT_PALETTE && mode_in->bitdepth == mode_out->bitdepth) { + size_t numbytes = lodepng_get_raw_size(w, h, mode_in); + lodepng_memcpy(out, in, numbytes); + return 0; + } + } + if(palettesize < palsize) palsize = palettesize; + color_tree_init(&tree); + for(i = 0; i != palsize; ++i) { + const unsigned char* p = &palette[i * 4]; + error = color_tree_add(&tree, p[0], p[1], p[2], p[3], (unsigned)i); + if(error) break; + } + } + + if(!error) { + if(mode_in->bitdepth == 16 && mode_out->bitdepth == 16) { + for(i = 0; i != numpixels; ++i) { + unsigned short r = 0, g = 0, b = 0, a = 0; + getPixelColorRGBA16(&r, &g, &b, &a, in, i, mode_in); + rgba16ToPixel(out, i, mode_out, r, g, b, a); + } + } else if(mode_out->bitdepth == 8 && mode_out->colortype == LCT_RGBA) { + getPixelColorsRGBA8(out, numpixels, in, mode_in); + } else if(mode_out->bitdepth == 8 && mode_out->colortype == LCT_RGB) { + getPixelColorsRGB8(out, numpixels, in, mode_in); + } else { + unsigned char r = 0, g = 0, b = 0, a = 0; + for(i = 0; i != numpixels; ++i) { + getPixelColorRGBA8(&r, &g, &b, &a, in, i, mode_in); + error = rgba8ToPixel(out, i, mode_out, &tree, r, g, b, a); + if(error) break; + } + } + } + + if(mode_out->colortype == LCT_PALETTE) { + color_tree_cleanup(&tree); + } + + return error; +} + + +/* Converts a single rgb color without alpha from one type to another, color bits truncated to +their bitdepth. In case of single channel (gray or palette), only the r channel is used. Slow +function, do not use to process all pixels of an image. Alpha channel not supported on purpose: +this is for bKGD, supporting alpha may prevent it from finding a color in the palette, from the +specification it looks like bKGD should ignore the alpha values of the palette since it can use +any palette index but doesn't have an alpha channel. Idem with ignoring color key. */ +unsigned lodepng_convert_rgb( + unsigned* r_out, unsigned* g_out, unsigned* b_out, + unsigned r_in, unsigned g_in, unsigned b_in, + const LodePNGColorMode* mode_out, const LodePNGColorMode* mode_in) { + unsigned r = 0, g = 0, b = 0; + unsigned mul = 65535 / ((1u << mode_in->bitdepth) - 1u); /*65535, 21845, 4369, 257, 1*/ + unsigned shift = 16 - mode_out->bitdepth; + + if(mode_in->colortype == LCT_GREY || mode_in->colortype == LCT_GREY_ALPHA) { + r = g = b = r_in * mul; + } else if(mode_in->colortype == LCT_RGB || mode_in->colortype == LCT_RGBA) { + r = r_in * mul; + g = g_in * mul; + b = b_in * mul; + } else if(mode_in->colortype == LCT_PALETTE) { + if(r_in >= mode_in->palettesize) return 82; + r = mode_in->palette[r_in * 4 + 0] * 257u; + g = mode_in->palette[r_in * 4 + 1] * 257u; + b = mode_in->palette[r_in * 4 + 2] * 257u; + } else { + return 31; + } + + /* now convert to output format */ + if(mode_out->colortype == LCT_GREY || mode_out->colortype == LCT_GREY_ALPHA) { + *r_out = r >> shift ; + } else if(mode_out->colortype == LCT_RGB || mode_out->colortype == LCT_RGBA) { + *r_out = r >> shift ; + *g_out = g >> shift ; + *b_out = b >> shift ; + } else if(mode_out->colortype == LCT_PALETTE) { + unsigned i; + /* a 16-bit color cannot be in the palette */ + if((r >> 8) != (r & 255) || (g >> 8) != (g & 255) || (b >> 8) != (b & 255)) return 82; + for(i = 0; i < mode_out->palettesize; i++) { + unsigned j = i * 4; + if((r >> 8) == mode_out->palette[j + 0] && (g >> 8) == mode_out->palette[j + 1] && + (b >> 8) == mode_out->palette[j + 2]) { + *r_out = i; + return 0; + } + } + return 82; + } else { + return 31; + } + + return 0; +} + +#ifdef LODEPNG_COMPILE_ENCODER + +void lodepng_color_stats_init(LodePNGColorStats* stats) { + /*stats*/ + stats->colored = 0; + stats->key = 0; + stats->key_r = stats->key_g = stats->key_b = 0; + stats->alpha = 0; + stats->numcolors = 0; + stats->bits = 1; + stats->numpixels = 0; + /*settings*/ + stats->allow_palette = 1; + stats->allow_greyscale = 1; +} + +/*function used for debug purposes with C++*/ +/*void printColorStats(LodePNGColorStats* p) { + std::cout << "colored: " << (int)p->colored << ", "; + std::cout << "key: " << (int)p->key << ", "; + std::cout << "key_r: " << (int)p->key_r << ", "; + std::cout << "key_g: " << (int)p->key_g << ", "; + std::cout << "key_b: " << (int)p->key_b << ", "; + std::cout << "alpha: " << (int)p->alpha << ", "; + std::cout << "numcolors: " << (int)p->numcolors << ", "; + std::cout << "bits: " << (int)p->bits << std::endl; +}*/ + +/*Returns how many bits needed to represent given value (max 8 bit)*/ +static unsigned getValueRequiredBits(unsigned char value) { + if(value == 0 || value == 255) return 1; + /*The scaling of 2-bit and 4-bit values uses multiples of 85 and 17*/ + if(value % 17 == 0) return value % 85 == 0 ? 2 : 4; + return 8; +} + +/*stats must already have been inited. */ +unsigned lodepng_compute_color_stats(LodePNGColorStats* stats, + const unsigned char* in, unsigned w, unsigned h, + const LodePNGColorMode* mode_in) { + size_t i; + ColorTree tree; + size_t numpixels = (size_t)w * (size_t)h; + unsigned error = 0; + + /* mark things as done already if it would be impossible to have a more expensive case */ + unsigned colored_done = lodepng_is_greyscale_type(mode_in) ? 1 : 0; + unsigned alpha_done = lodepng_can_have_alpha(mode_in) ? 0 : 1; + unsigned numcolors_done = 0; + unsigned bpp = lodepng_get_bpp(mode_in); + unsigned bits_done = (stats->bits == 1 && bpp == 1) ? 1 : 0; + unsigned sixteen = 0; /* whether the input image is 16 bit */ + unsigned maxnumcolors = 257; + if(bpp <= 8) maxnumcolors = LODEPNG_MIN(257, stats->numcolors + (1u << bpp)); + + stats->numpixels += numpixels; + + /*if palette not allowed, no need to compute numcolors*/ + if(!stats->allow_palette) numcolors_done = 1; + + color_tree_init(&tree); + + /*If the stats was already filled in from previous data, fill its palette in tree + and mark things as done already if we know they are the most expensive case already*/ + if(stats->alpha) alpha_done = 1; + if(stats->colored) colored_done = 1; + if(stats->bits == 16) numcolors_done = 1; + if(stats->bits >= bpp) bits_done = 1; + if(stats->numcolors >= maxnumcolors) numcolors_done = 1; + + if(!numcolors_done) { + for(i = 0; i < stats->numcolors; i++) { + const unsigned char* color = &stats->palette[i * 4]; + error = color_tree_add(&tree, color[0], color[1], color[2], color[3], (unsigned)i); + if(error) goto cleanup; + } + } + + /*Check if the 16-bit input is truly 16-bit*/ + if(mode_in->bitdepth == 16 && !sixteen) { + unsigned short r = 0, g = 0, b = 0, a = 0; + for(i = 0; i != numpixels; ++i) { + getPixelColorRGBA16(&r, &g, &b, &a, in, i, mode_in); + if((r & 255) != ((r >> 8) & 255) || (g & 255) != ((g >> 8) & 255) || + (b & 255) != ((b >> 8) & 255) || (a & 255) != ((a >> 8) & 255)) /*first and second byte differ*/ { + stats->bits = 16; + sixteen = 1; + bits_done = 1; + numcolors_done = 1; /*counting colors no longer useful, palette doesn't support 16-bit*/ + break; + } + } + } + + if(sixteen) { + unsigned short r = 0, g = 0, b = 0, a = 0; + + for(i = 0; i != numpixels; ++i) { + getPixelColorRGBA16(&r, &g, &b, &a, in, i, mode_in); + + if(!colored_done && (r != g || r != b)) { + stats->colored = 1; + colored_done = 1; + } + + if(!alpha_done) { + unsigned matchkey = (r == stats->key_r && g == stats->key_g && b == stats->key_b); + if(a != 65535 && (a != 0 || (stats->key && !matchkey))) { + stats->alpha = 1; + stats->key = 0; + alpha_done = 1; + } else if(a == 0 && !stats->alpha && !stats->key) { + stats->key = 1; + stats->key_r = r; + stats->key_g = g; + stats->key_b = b; + } else if(a == 65535 && stats->key && matchkey) { + /* Color key cannot be used if an opaque pixel also has that RGB color. */ + stats->alpha = 1; + stats->key = 0; + alpha_done = 1; + } + } + if(alpha_done && numcolors_done && colored_done && bits_done) break; + } + + if(stats->key && !stats->alpha) { + for(i = 0; i != numpixels; ++i) { + getPixelColorRGBA16(&r, &g, &b, &a, in, i, mode_in); + if(a != 0 && r == stats->key_r && g == stats->key_g && b == stats->key_b) { + /* Color key cannot be used if an opaque pixel also has that RGB color. */ + stats->alpha = 1; + stats->key = 0; + alpha_done = 1; + } + } + } + } else /* < 16-bit */ { + unsigned char r = 0, g = 0, b = 0, a = 0; + unsigned char pr = 0, pg = 0, pb = 0, pa = 0; + for(i = 0; i != numpixels; ++i) { + getPixelColorRGBA8(&r, &g, &b, &a, in, i, mode_in); + + /*skip if color same as before, this speeds up large non-photographic + images with many same colors by avoiding 'color_tree_has' below */ + if(i != 0 && r == pr && g == pg && b == pb && a == pa) continue; + pr = r; + pg = g; + pb = b; + pa = a; + + if(!bits_done && stats->bits < 8) { + /*only r is checked, < 8 bits is only relevant for grayscale*/ + unsigned bits = getValueRequiredBits(r); + if(bits > stats->bits) stats->bits = bits; + } + bits_done = (stats->bits >= bpp); + + if(!colored_done && (r != g || r != b)) { + stats->colored = 1; + colored_done = 1; + if(stats->bits < 8) stats->bits = 8; /*PNG has no colored modes with less than 8-bit per channel*/ + } + + if(!alpha_done) { + unsigned matchkey = (r == stats->key_r && g == stats->key_g && b == stats->key_b); + if(a != 255 && (a != 0 || (stats->key && !matchkey))) { + stats->alpha = 1; + stats->key = 0; + alpha_done = 1; + if(stats->bits < 8) stats->bits = 8; /*PNG has no alphachannel modes with less than 8-bit per channel*/ + } else if(a == 0 && !stats->alpha && !stats->key) { + stats->key = 1; + stats->key_r = r; + stats->key_g = g; + stats->key_b = b; + } else if(a == 255 && stats->key && matchkey) { + /* Color key cannot be used if an opaque pixel also has that RGB color. */ + stats->alpha = 1; + stats->key = 0; + alpha_done = 1; + if(stats->bits < 8) stats->bits = 8; /*PNG has no alphachannel modes with less than 8-bit per channel*/ + } + } + + if(!numcolors_done) { + if(!color_tree_has(&tree, r, g, b, a)) { + error = color_tree_add(&tree, r, g, b, a, stats->numcolors); + if(error) goto cleanup; + if(stats->numcolors < 256) { + unsigned char* p = stats->palette; + unsigned n = stats->numcolors; + p[n * 4 + 0] = r; + p[n * 4 + 1] = g; + p[n * 4 + 2] = b; + p[n * 4 + 3] = a; + } + ++stats->numcolors; + numcolors_done = stats->numcolors >= maxnumcolors; + } + } + + if(alpha_done && numcolors_done && colored_done && bits_done) break; + } + + if(stats->key && !stats->alpha) { + for(i = 0; i != numpixels; ++i) { + getPixelColorRGBA8(&r, &g, &b, &a, in, i, mode_in); + if(a != 0 && r == stats->key_r && g == stats->key_g && b == stats->key_b) { + /* Color key cannot be used if an opaque pixel also has that RGB color. */ + stats->alpha = 1; + stats->key = 0; + alpha_done = 1; + if(stats->bits < 8) stats->bits = 8; /*PNG has no alphachannel modes with less than 8-bit per channel*/ + } + } + } + + /*make the stats's key always 16-bit for consistency - repeat each byte twice*/ + stats->key_r += (stats->key_r << 8); + stats->key_g += (stats->key_g << 8); + stats->key_b += (stats->key_b << 8); + } + +cleanup: + color_tree_cleanup(&tree); + return error; +} + +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS +/*Adds a single color to the color stats. The stats must already have been inited. The color must be given as 16-bit +(with 2 bytes repeating for 8-bit and 65535 for opaque alpha channel). This function is expensive, do not call it for +all pixels of an image but only for a few additional values. */ +static unsigned lodepng_color_stats_add(LodePNGColorStats* stats, + unsigned r, unsigned g, unsigned b, unsigned a) { + unsigned error = 0; + unsigned char image[8]; + LodePNGColorMode mode; + lodepng_color_mode_init(&mode); + image[0] = r >> 8; image[1] = r; image[2] = g >> 8; image[3] = g; + image[4] = b >> 8; image[5] = b; image[6] = a >> 8; image[7] = a; + mode.bitdepth = 16; + mode.colortype = LCT_RGBA; + error = lodepng_compute_color_stats(stats, image, 1, 1, &mode); + lodepng_color_mode_cleanup(&mode); + return error; +} +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ + +/*Computes a minimal PNG color model that can contain all colors as indicated by the stats. +The stats should be computed with lodepng_compute_color_stats. +mode_in is raw color profile of the image the stats were computed on, to copy palette order from when relevant. +Minimal PNG color model means the color type and bit depth that gives smallest amount of bits in the output image, +e.g. gray if only grayscale pixels, palette if less than 256 colors, color key if only single transparent color, ... +This is used if auto_convert is enabled (it is by default). +*/ +static unsigned auto_choose_color(LodePNGColorMode* mode_out, + const LodePNGColorMode* mode_in, + const LodePNGColorStats* stats) { + unsigned error = 0; + unsigned palettebits; + size_t i, n; + size_t numpixels = stats->numpixels; + unsigned palette_ok, gray_ok; + + unsigned alpha = stats->alpha; + unsigned key = stats->key; + unsigned bits = stats->bits; + + mode_out->key_defined = 0; + + if(key && numpixels <= 16) { + alpha = 1; /*too few pixels to justify tRNS chunk overhead*/ + key = 0; + if(bits < 8) bits = 8; /*PNG has no alphachannel modes with less than 8-bit per channel*/ + } + + gray_ok = !stats->colored; + if(!stats->allow_greyscale) gray_ok = 0; + if(!gray_ok && bits < 8) bits = 8; + + n = stats->numcolors; + palettebits = n <= 2 ? 1 : (n <= 4 ? 2 : (n <= 16 ? 4 : 8)); + palette_ok = n <= 256 && bits <= 8 && n != 0; /*n==0 means likely numcolors wasn't computed*/ + if(numpixels < n * 2) palette_ok = 0; /*don't add palette overhead if image has only a few pixels*/ + if(gray_ok && !alpha && bits <= palettebits) palette_ok = 0; /*gray is less overhead*/ + if(!stats->allow_palette) palette_ok = 0; + + if(palette_ok) { + const unsigned char* p = stats->palette; + lodepng_palette_clear(mode_out); /*remove potential earlier palette*/ + for(i = 0; i != stats->numcolors; ++i) { + error = lodepng_palette_add(mode_out, p[i * 4 + 0], p[i * 4 + 1], p[i * 4 + 2], p[i * 4 + 3]); + if(error) break; + } + + mode_out->colortype = LCT_PALETTE; + mode_out->bitdepth = palettebits; + + if(mode_in->colortype == LCT_PALETTE && mode_in->palettesize >= mode_out->palettesize + && mode_in->bitdepth == mode_out->bitdepth) { + /*If input should have same palette colors, keep original to preserve its order and prevent conversion*/ + lodepng_color_mode_cleanup(mode_out); /*clears palette, keeps the above set colortype and bitdepth fields as-is*/ + lodepng_color_mode_copy(mode_out, mode_in); + } + } else /*8-bit or 16-bit per channel*/ { + mode_out->bitdepth = bits; + mode_out->colortype = alpha ? (gray_ok ? LCT_GREY_ALPHA : LCT_RGBA) + : (gray_ok ? LCT_GREY : LCT_RGB); + if(key) { + unsigned mask = (1u << mode_out->bitdepth) - 1u; /*stats always uses 16-bit, mask converts it*/ + mode_out->key_r = stats->key_r & mask; + mode_out->key_g = stats->key_g & mask; + mode_out->key_b = stats->key_b & mask; + mode_out->key_defined = 1; + } + } + + return error; +} + +#endif /* #ifdef LODEPNG_COMPILE_ENCODER */ + +/*Paeth predictor, used by PNG filter type 4*/ +static unsigned char paethPredictor(unsigned char a, unsigned char b, unsigned char c) { + /* the subtractions of unsigned char cast it to a signed type. + With gcc, short is faster than int, with clang int is as fast (as of april 2023)*/ + short pa = (b - c) < 0 ? -(b - c) : (b - c); + short pb = (a - c) < 0 ? -(a - c) : (a - c); + /* writing it out like this compiles to something faster than introducing a temp variable*/ + short pc = (a + b - c - c) < 0 ? -(a + b - c - c) : (a + b - c - c); + /* return input value associated with smallest of pa, pb, pc (with certain priority if equal) */ + if(pb < pa) { a = b; pa = pb; } + return (pc < pa) ? c : a; +} + +/*shared values used by multiple Adam7 related functions*/ + +static const unsigned ADAM7_IX[7] = { 0, 4, 0, 2, 0, 1, 0 }; /*x start values*/ +static const unsigned ADAM7_IY[7] = { 0, 0, 4, 0, 2, 0, 1 }; /*y start values*/ +static const unsigned ADAM7_DX[7] = { 8, 8, 4, 4, 2, 2, 1 }; /*x delta values*/ +static const unsigned ADAM7_DY[7] = { 8, 8, 8, 4, 4, 2, 2 }; /*y delta values*/ + +/* +Outputs various dimensions and positions in the image related to the Adam7 reduced images. +passw: output containing the width of the 7 passes +passh: output containing the height of the 7 passes +filter_passstart: output containing the index of the start and end of each + reduced image with filter bytes +padded_passstart output containing the index of the start and end of each + reduced image when without filter bytes but with padded scanlines +passstart: output containing the index of the start and end of each reduced + image without padding between scanlines, but still padding between the images +w, h: width and height of non-interlaced image +bpp: bits per pixel +"padded" is only relevant if bpp is less than 8 and a scanline or image does not + end at a full byte +*/ +static void Adam7_getpassvalues(unsigned passw[7], unsigned passh[7], size_t filter_passstart[8], + size_t padded_passstart[8], size_t passstart[8], unsigned w, unsigned h, unsigned bpp) { + /*the passstart values have 8 values: the 8th one indicates the byte after the end of the 7th (= last) pass*/ + unsigned i; + + /*calculate width and height in pixels of each pass*/ + for(i = 0; i != 7; ++i) { + passw[i] = (w + ADAM7_DX[i] - ADAM7_IX[i] - 1) / ADAM7_DX[i]; + passh[i] = (h + ADAM7_DY[i] - ADAM7_IY[i] - 1) / ADAM7_DY[i]; + if(passw[i] == 0) passh[i] = 0; + if(passh[i] == 0) passw[i] = 0; + } + + filter_passstart[0] = padded_passstart[0] = passstart[0] = 0; + for(i = 0; i != 7; ++i) { + /*if passw[i] is 0, it's 0 bytes, not 1 (no filtertype-byte)*/ + filter_passstart[i + 1] = filter_passstart[i] + + ((passw[i] && passh[i]) ? passh[i] * (1u + (passw[i] * bpp + 7u) / 8u) : 0); + /*bits padded if needed to fill full byte at end of each scanline*/ + padded_passstart[i + 1] = padded_passstart[i] + passh[i] * ((passw[i] * bpp + 7u) / 8u); + /*only padded at end of reduced image*/ + passstart[i + 1] = passstart[i] + (passh[i] * passw[i] * bpp + 7u) / 8u; + } +} + +#ifdef LODEPNG_COMPILE_DECODER + +/* ////////////////////////////////////////////////////////////////////////// */ +/* / PNG Decoder / */ +/* ////////////////////////////////////////////////////////////////////////// */ + +/*read the information from the header and store it in the LodePNGInfo. return value is error*/ +unsigned lodepng_inspect(unsigned* w, unsigned* h, LodePNGState* state, + const unsigned char* in, size_t insize) { + unsigned width, height; + LodePNGInfo* info = &state->info_png; + if(insize == 0 || in == 0) { + CERROR_RETURN_ERROR(state->error, 48); /*error: the given data is empty*/ + } + if(insize < 33) { + CERROR_RETURN_ERROR(state->error, 27); /*error: the data length is smaller than the length of a PNG header*/ + } + + /*when decoding a new PNG image, make sure all parameters created after previous decoding are reset*/ + /* TODO: remove this. One should use a new LodePNGState for new sessions */ + lodepng_info_cleanup(info); + lodepng_info_init(info); + + if(in[0] != 137 || in[1] != 80 || in[2] != 78 || in[3] != 71 + || in[4] != 13 || in[5] != 10 || in[6] != 26 || in[7] != 10) { + CERROR_RETURN_ERROR(state->error, 28); /*error: the first 8 bytes are not the correct PNG signature*/ + } + if(lodepng_chunk_length(in + 8) != 13) { + CERROR_RETURN_ERROR(state->error, 94); /*error: header size must be 13 bytes*/ + } + if(!lodepng_chunk_type_equals(in + 8, "IHDR")) { + CERROR_RETURN_ERROR(state->error, 29); /*error: it doesn't start with a IHDR chunk!*/ + } + + /*read the values given in the header*/ + width = lodepng_read32bitInt(&in[16]); + height = lodepng_read32bitInt(&in[20]); + /*TODO: remove the undocumented feature that allows to give null pointers to width or height*/ + if(w) *w = width; + if(h) *h = height; + info->color.bitdepth = in[24]; + info->color.colortype = (LodePNGColorType)in[25]; + info->compression_method = in[26]; + info->filter_method = in[27]; + info->interlace_method = in[28]; + + /*errors returned only after the parsing so other values are still output*/ + + /*error: invalid image size*/ + if(width == 0 || height == 0) CERROR_RETURN_ERROR(state->error, 93); + /*error: invalid colortype or bitdepth combination*/ + state->error = checkColorValidity(info->color.colortype, info->color.bitdepth); + if(state->error) return state->error; + /*error: only compression method 0 is allowed in the specification*/ + if(info->compression_method != 0) CERROR_RETURN_ERROR(state->error, 32); + /*error: only filter method 0 is allowed in the specification*/ + if(info->filter_method != 0) CERROR_RETURN_ERROR(state->error, 33); + /*error: only interlace methods 0 and 1 exist in the specification*/ + if(info->interlace_method > 1) CERROR_RETURN_ERROR(state->error, 34); + + if(!state->decoder.ignore_crc) { + unsigned CRC = lodepng_read32bitInt(&in[29]); + unsigned checksum = lodepng_crc32(&in[12], 17); + if(CRC != checksum) { + CERROR_RETURN_ERROR(state->error, 57); /*invalid CRC*/ + } + } + + return state->error; +} + +static unsigned unfilterScanline(unsigned char* recon, const unsigned char* scanline, const unsigned char* precon, + size_t bytewidth, unsigned char filterType, size_t length) { + /* + For PNG filter method 0 + unfilter a PNG image scanline by scanline. when the pixels are smaller than 1 byte, + the filter works byte per byte (bytewidth = 1) + precon is the previous unfiltered scanline, recon the result, scanline the current one + the incoming scanlines do NOT include the filtertype byte, that one is given in the parameter filterType instead + recon and scanline MAY be the same memory address! precon must be disjoint. + */ + + size_t i; + switch(filterType) { + case 0: + for(i = 0; i != length; ++i) recon[i] = scanline[i]; + break; + case 1: { + size_t j = 0; + for(i = 0; i != bytewidth; ++i) recon[i] = scanline[i]; + for(i = bytewidth; i != length; ++i, ++j) recon[i] = scanline[i] + recon[j]; + break; + } + case 2: + if(precon) { + for(i = 0; i != length; ++i) recon[i] = scanline[i] + precon[i]; + } else { + for(i = 0; i != length; ++i) recon[i] = scanline[i]; + } + break; + case 3: + if(precon) { + size_t j = 0; + for(i = 0; i != bytewidth; ++i) recon[i] = scanline[i] + (precon[i] >> 1u); + /* Unroll independent paths of this predictor. A 6x and 8x version is also possible but that adds + too much code. Whether this speeds up anything depends on compiler and settings. */ + if(bytewidth >= 4) { + for(; i + 3 < length; i += 4, j += 4) { + unsigned char s0 = scanline[i + 0], s1 = scanline[i + 1], s2 = scanline[i + 2], s3 = scanline[i + 3]; + unsigned char r0 = recon[j + 0], r1 = recon[j + 1], r2 = recon[j + 2], r3 = recon[j + 3]; + unsigned char p0 = precon[i + 0], p1 = precon[i + 1], p2 = precon[i + 2], p3 = precon[i + 3]; + recon[i + 0] = s0 + ((r0 + p0) >> 1u); + recon[i + 1] = s1 + ((r1 + p1) >> 1u); + recon[i + 2] = s2 + ((r2 + p2) >> 1u); + recon[i + 3] = s3 + ((r3 + p3) >> 1u); + } + } else if(bytewidth >= 3) { + for(; i + 2 < length; i += 3, j += 3) { + unsigned char s0 = scanline[i + 0], s1 = scanline[i + 1], s2 = scanline[i + 2]; + unsigned char r0 = recon[j + 0], r1 = recon[j + 1], r2 = recon[j + 2]; + unsigned char p0 = precon[i + 0], p1 = precon[i + 1], p2 = precon[i + 2]; + recon[i + 0] = s0 + ((r0 + p0) >> 1u); + recon[i + 1] = s1 + ((r1 + p1) >> 1u); + recon[i + 2] = s2 + ((r2 + p2) >> 1u); + } + } else if(bytewidth >= 2) { + for(; i + 1 < length; i += 2, j += 2) { + unsigned char s0 = scanline[i + 0], s1 = scanline[i + 1]; + unsigned char r0 = recon[j + 0], r1 = recon[j + 1]; + unsigned char p0 = precon[i + 0], p1 = precon[i + 1]; + recon[i + 0] = s0 + ((r0 + p0) >> 1u); + recon[i + 1] = s1 + ((r1 + p1) >> 1u); + } + } + for(; i != length; ++i, ++j) recon[i] = scanline[i] + ((recon[j] + precon[i]) >> 1u); + } else { + size_t j = 0; + for(i = 0; i != bytewidth; ++i) recon[i] = scanline[i]; + for(i = bytewidth; i != length; ++i, ++j) recon[i] = scanline[i] + (recon[j] >> 1u); + } + break; + case 4: + if(precon) { + /* Unroll independent paths of this predictor. Whether this speeds up + anything depends on compiler and settings. */ + if(bytewidth == 8) { + unsigned char a0, b0 = 0, c0, d0 = 0, a1, b1 = 0, c1, d1 = 0; + unsigned char a2, b2 = 0, c2, d2 = 0, a3, b3 = 0, c3, d3 = 0; + unsigned char a4, b4 = 0, c4, d4 = 0, a5, b5 = 0, c5, d5 = 0; + unsigned char a6, b6 = 0, c6, d6 = 0, a7, b7 = 0, c7, d7 = 0; + for(i = 0; i + 7 < length; i += 8) { + c0 = b0; c1 = b1; c2 = b2; c3 = b3; + c4 = b4; c5 = b5; c6 = b6; c7 = b7; + b0 = precon[i + 0]; b1 = precon[i + 1]; b2 = precon[i + 2]; b3 = precon[i + 3]; + b4 = precon[i + 4]; b5 = precon[i + 5]; b6 = precon[i + 6]; b7 = precon[i + 7]; + a0 = d0; a1 = d1; a2 = d2; a3 = d3; + a4 = d4; a5 = d5; a6 = d6; a7 = d7; + d0 = scanline[i + 0] + paethPredictor(a0, b0, c0); + d1 = scanline[i + 1] + paethPredictor(a1, b1, c1); + d2 = scanline[i + 2] + paethPredictor(a2, b2, c2); + d3 = scanline[i + 3] + paethPredictor(a3, b3, c3); + d4 = scanline[i + 4] + paethPredictor(a4, b4, c4); + d5 = scanline[i + 5] + paethPredictor(a5, b5, c5); + d6 = scanline[i + 6] + paethPredictor(a6, b6, c6); + d7 = scanline[i + 7] + paethPredictor(a7, b7, c7); + recon[i + 0] = d0; recon[i + 1] = d1; recon[i + 2] = d2; recon[i + 3] = d3; + recon[i + 4] = d4; recon[i + 5] = d5; recon[i + 6] = d6; recon[i + 7] = d7; + } + } else if(bytewidth == 6) { + unsigned char a0, b0 = 0, c0, d0 = 0, a1, b1 = 0, c1, d1 = 0; + unsigned char a2, b2 = 0, c2, d2 = 0, a3, b3 = 0, c3, d3 = 0; + unsigned char a4, b4 = 0, c4, d4 = 0, a5, b5 = 0, c5, d5 = 0; + for(i = 0; i + 5 < length; i += 6) { + c0 = b0; c1 = b1; c2 = b2; + c3 = b3; c4 = b4; c5 = b5; + b0 = precon[i + 0]; b1 = precon[i + 1]; b2 = precon[i + 2]; + b3 = precon[i + 3]; b4 = precon[i + 4]; b5 = precon[i + 5]; + a0 = d0; a1 = d1; a2 = d2; + a3 = d3; a4 = d4; a5 = d5; + d0 = scanline[i + 0] + paethPredictor(a0, b0, c0); + d1 = scanline[i + 1] + paethPredictor(a1, b1, c1); + d2 = scanline[i + 2] + paethPredictor(a2, b2, c2); + d3 = scanline[i + 3] + paethPredictor(a3, b3, c3); + d4 = scanline[i + 4] + paethPredictor(a4, b4, c4); + d5 = scanline[i + 5] + paethPredictor(a5, b5, c5); + recon[i + 0] = d0; recon[i + 1] = d1; recon[i + 2] = d2; + recon[i + 3] = d3; recon[i + 4] = d4; recon[i + 5] = d5; + } + } else if(bytewidth == 4) { + unsigned char a0, b0 = 0, c0, d0 = 0, a1, b1 = 0, c1, d1 = 0; + unsigned char a2, b2 = 0, c2, d2 = 0, a3, b3 = 0, c3, d3 = 0; + for(i = 0; i + 3 < length; i += 4) { + c0 = b0; c1 = b1; c2 = b2; c3 = b3; + b0 = precon[i + 0]; b1 = precon[i + 1]; b2 = precon[i + 2]; b3 = precon[i + 3]; + a0 = d0; a1 = d1; a2 = d2; a3 = d3; + d0 = scanline[i + 0] + paethPredictor(a0, b0, c0); + d1 = scanline[i + 1] + paethPredictor(a1, b1, c1); + d2 = scanline[i + 2] + paethPredictor(a2, b2, c2); + d3 = scanline[i + 3] + paethPredictor(a3, b3, c3); + recon[i + 0] = d0; recon[i + 1] = d1; recon[i + 2] = d2; recon[i + 3] = d3; + } + } else if(bytewidth == 3) { + unsigned char a0, b0 = 0, c0, d0 = 0; + unsigned char a1, b1 = 0, c1, d1 = 0; + unsigned char a2, b2 = 0, c2, d2 = 0; + for(i = 0; i + 2 < length; i += 3) { + c0 = b0; c1 = b1; c2 = b2; + b0 = precon[i + 0]; b1 = precon[i + 1]; b2 = precon[i + 2]; + a0 = d0; a1 = d1; a2 = d2; + d0 = scanline[i + 0] + paethPredictor(a0, b0, c0); + d1 = scanline[i + 1] + paethPredictor(a1, b1, c1); + d2 = scanline[i + 2] + paethPredictor(a2, b2, c2); + recon[i + 0] = d0; recon[i + 1] = d1; recon[i + 2] = d2; + } + } else if(bytewidth == 2) { + unsigned char a0, b0 = 0, c0, d0 = 0; + unsigned char a1, b1 = 0, c1, d1 = 0; + for(i = 0; i + 1 < length; i += 2) { + c0 = b0; c1 = b1; + b0 = precon[i + 0]; + b1 = precon[i + 1]; + a0 = d0; a1 = d1; + d0 = scanline[i + 0] + paethPredictor(a0, b0, c0); + d1 = scanline[i + 1] + paethPredictor(a1, b1, c1); + recon[i + 0] = d0; + recon[i + 1] = d1; + } + } else if(bytewidth == 1) { + unsigned char a, b = 0, c, d = 0; + for(i = 0; i != length; ++i) { + c = b; + b = precon[i]; + a = d; + d = scanline[i] + paethPredictor(a, b, c); + recon[i] = d; + } + } else { + /* Normally not a possible case, but this would handle it correctly */ + for(i = 0; i != bytewidth; ++i) { + recon[i] = (scanline[i] + precon[i]); /*paethPredictor(0, precon[i], 0) is always precon[i]*/ + } + } + /* finish any remaining bytes */ + for(; i != length; ++i) { + recon[i] = (scanline[i] + paethPredictor(recon[i - bytewidth], precon[i], precon[i - bytewidth])); + } + } else { + size_t j = 0; + for(i = 0; i != bytewidth; ++i) { + recon[i] = scanline[i]; + } + for(i = bytewidth; i != length; ++i, ++j) { + /*paethPredictor(recon[i - bytewidth], 0, 0) is always recon[i - bytewidth]*/ + recon[i] = (scanline[i] + recon[j]); + } + } + break; + default: return 36; /*error: invalid filter type given*/ + } + return 0; +} + +static unsigned unfilter(unsigned char* out, const unsigned char* in, unsigned w, unsigned h, unsigned bpp) { + /* + For PNG filter method 0 + this function unfilters a single image (e.g. without interlacing this is called once, with Adam7 seven times) + out must have enough bytes allocated already, in must have the scanlines + 1 filtertype byte per scanline + w and h are image dimensions or dimensions of reduced image, bpp is bits per pixel + in and out are allowed to be the same memory address (but aren't the same size since in has the extra filter bytes) + */ + + unsigned y; + unsigned char* prevline = 0; + + /*bytewidth is used for filtering, is 1 when bpp < 8, number of bytes per pixel otherwise*/ + size_t bytewidth = (bpp + 7u) / 8u; + /*the width of a scanline in bytes, not including the filter type*/ + size_t linebytes = lodepng_get_raw_size_idat(w, 1, bpp) - 1u; + + for(y = 0; y < h; ++y) { + size_t outindex = linebytes * y; + size_t inindex = (1 + linebytes) * y; /*the extra filterbyte added to each row*/ + unsigned char filterType = in[inindex]; + + CERROR_TRY_RETURN(unfilterScanline(&out[outindex], &in[inindex + 1], prevline, bytewidth, filterType, linebytes)); + + prevline = &out[outindex]; + } + + return 0; +} + +/* +in: Adam7 interlaced image, with no padding bits between scanlines, but between + reduced images so that each reduced image starts at a byte. +out: the same pixels, but re-ordered so that they're now a non-interlaced image with size w*h +bpp: bits per pixel +out has the following size in bits: w * h * bpp. +in is possibly bigger due to padding bits between reduced images. +out must be big enough AND must be 0 everywhere if bpp < 8 in the current implementation +(because that's likely a little bit faster) +NOTE: comments about padding bits are only relevant if bpp < 8 +*/ +static void Adam7_deinterlace(unsigned char* out, const unsigned char* in, unsigned w, unsigned h, unsigned bpp) { + unsigned passw[7], passh[7]; + size_t filter_passstart[8], padded_passstart[8], passstart[8]; + unsigned i; + + Adam7_getpassvalues(passw, passh, filter_passstart, padded_passstart, passstart, w, h, bpp); + + if(bpp >= 8) { + for(i = 0; i != 7; ++i) { + unsigned x, y, b; + size_t bytewidth = bpp / 8u; + for(y = 0; y < passh[i]; ++y) + for(x = 0; x < passw[i]; ++x) { + size_t pixelinstart = passstart[i] + (y * passw[i] + x) * bytewidth; + size_t pixeloutstart = ((ADAM7_IY[i] + (size_t)y * ADAM7_DY[i]) * (size_t)w + + ADAM7_IX[i] + (size_t)x * ADAM7_DX[i]) * bytewidth; + for(b = 0; b < bytewidth; ++b) { + out[pixeloutstart + b] = in[pixelinstart + b]; + } + } + } + } else /*bpp < 8: Adam7 with pixels < 8 bit is a bit trickier: with bit pointers*/ { + for(i = 0; i != 7; ++i) { + unsigned x, y, b; + unsigned ilinebits = bpp * passw[i]; + unsigned olinebits = bpp * w; + size_t obp, ibp; /*bit pointers (for out and in buffer)*/ + for(y = 0; y < passh[i]; ++y) + for(x = 0; x < passw[i]; ++x) { + ibp = (8 * passstart[i]) + (y * ilinebits + x * bpp); + obp = (ADAM7_IY[i] + (size_t)y * ADAM7_DY[i]) * olinebits + (ADAM7_IX[i] + (size_t)x * ADAM7_DX[i]) * bpp; + for(b = 0; b < bpp; ++b) { + unsigned char bit = readBitFromReversedStream(&ibp, in); + setBitOfReversedStream(&obp, out, bit); + } + } + } + } +} + +static void removePaddingBits(unsigned char* out, const unsigned char* in, + size_t olinebits, size_t ilinebits, unsigned h) { + /* + After filtering there are still padding bits if scanlines have non multiple of 8 bit amounts. They need + to be removed (except at last scanline of (Adam7-reduced) image) before working with pure image buffers + for the Adam7 code, the color convert code and the output to the user. + in and out are allowed to be the same buffer, in may also be higher but still overlapping; in must + have >= ilinebits*h bits, out must have >= olinebits*h bits, olinebits must be <= ilinebits + also used to move bits after earlier such operations happened, e.g. in a sequence of reduced images from Adam7 + only useful if (ilinebits - olinebits) is a value in the range 1..7 + */ + unsigned y; + size_t diff = ilinebits - olinebits; + size_t ibp = 0, obp = 0; /*input and output bit pointers*/ + for(y = 0; y < h; ++y) { + size_t x; + for(x = 0; x < olinebits; ++x) { + unsigned char bit = readBitFromReversedStream(&ibp, in); + setBitOfReversedStream(&obp, out, bit); + } + ibp += diff; + } +} + +/*out must be buffer big enough to contain full image, and in must contain the full decompressed data from +the IDAT chunks (with filter index bytes and possible padding bits) +return value is error*/ +static unsigned postProcessScanlines(unsigned char* out, unsigned char* in, + unsigned w, unsigned h, const LodePNGInfo* info_png) { + /* + This function converts the filtered-padded-interlaced data into pure 2D image buffer with the PNG's colortype. + Steps: + *) if no Adam7: 1) unfilter 2) remove padding bits (= possible extra bits per scanline if bpp < 8) + *) if adam7: 1) 7x unfilter 2) 7x remove padding bits 3) Adam7_deinterlace + NOTE: the in buffer will be overwritten with intermediate data! + */ + unsigned bpp = lodepng_get_bpp(&info_png->color); + if(bpp == 0) return 31; /*error: invalid colortype*/ + + if(info_png->interlace_method == 0) { + if(bpp < 8 && w * bpp != ((w * bpp + 7u) / 8u) * 8u) { + CERROR_TRY_RETURN(unfilter(in, in, w, h, bpp)); + removePaddingBits(out, in, w * bpp, ((w * bpp + 7u) / 8u) * 8u, h); + } + /*we can immediately filter into the out buffer, no other steps needed*/ + else CERROR_TRY_RETURN(unfilter(out, in, w, h, bpp)); + } else /*interlace_method is 1 (Adam7)*/ { + unsigned passw[7], passh[7]; size_t filter_passstart[8], padded_passstart[8], passstart[8]; + unsigned i; + + Adam7_getpassvalues(passw, passh, filter_passstart, padded_passstart, passstart, w, h, bpp); + + for(i = 0; i != 7; ++i) { + CERROR_TRY_RETURN(unfilter(&in[padded_passstart[i]], &in[filter_passstart[i]], passw[i], passh[i], bpp)); + /*TODO: possible efficiency improvement: if in this reduced image the bits fit nicely in 1 scanline, + move bytes instead of bits or move not at all*/ + if(bpp < 8) { + /*remove padding bits in scanlines; after this there still may be padding + bits between the different reduced images: each reduced image still starts nicely at a byte*/ + removePaddingBits(&in[passstart[i]], &in[padded_passstart[i]], passw[i] * bpp, + ((passw[i] * bpp + 7u) / 8u) * 8u, passh[i]); + } + } + + Adam7_deinterlace(out, in, w, h, bpp); + } + + return 0; +} + +static unsigned readChunk_PLTE(LodePNGColorMode* color, const unsigned char* data, size_t chunkLength) { + unsigned pos = 0, i; + color->palettesize = chunkLength / 3u; + if(color->palettesize == 0 || color->palettesize > 256) return 38; /*error: palette too small or big*/ + lodepng_color_mode_alloc_palette(color); + if(!color->palette && color->palettesize) { + color->palettesize = 0; + return 83; /*alloc fail*/ + } + + for(i = 0; i != color->palettesize; ++i) { + color->palette[4 * i + 0] = data[pos++]; /*R*/ + color->palette[4 * i + 1] = data[pos++]; /*G*/ + color->palette[4 * i + 2] = data[pos++]; /*B*/ + color->palette[4 * i + 3] = 255; /*alpha*/ + } + + return 0; /* OK */ +} + +static unsigned readChunk_tRNS(LodePNGColorMode* color, const unsigned char* data, size_t chunkLength) { + unsigned i; + if(color->colortype == LCT_PALETTE) { + /*error: more alpha values given than there are palette entries*/ + if(chunkLength > color->palettesize) return 39; + + for(i = 0; i != chunkLength; ++i) color->palette[4 * i + 3] = data[i]; + } else if(color->colortype == LCT_GREY) { + /*error: this chunk must be 2 bytes for grayscale image*/ + if(chunkLength != 2) return 30; + + color->key_defined = 1; + color->key_r = color->key_g = color->key_b = 256u * data[0] + data[1]; + } else if(color->colortype == LCT_RGB) { + /*error: this chunk must be 6 bytes for RGB image*/ + if(chunkLength != 6) return 41; + + color->key_defined = 1; + color->key_r = 256u * data[0] + data[1]; + color->key_g = 256u * data[2] + data[3]; + color->key_b = 256u * data[4] + data[5]; + } + else return 42; /*error: tRNS chunk not allowed for other color models*/ + + return 0; /* OK */ +} + + +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS +/*background color chunk (bKGD)*/ +static unsigned readChunk_bKGD(LodePNGInfo* info, const unsigned char* data, size_t chunkLength) { + if(info->color.colortype == LCT_PALETTE) { + /*error: this chunk must be 1 byte for indexed color image*/ + if(chunkLength != 1) return 43; + + /*error: invalid palette index, or maybe this chunk appeared before PLTE*/ + if(data[0] >= info->color.palettesize) return 103; + + info->background_defined = 1; + info->background_r = info->background_g = info->background_b = data[0]; + } else if(info->color.colortype == LCT_GREY || info->color.colortype == LCT_GREY_ALPHA) { + /*error: this chunk must be 2 bytes for grayscale image*/ + if(chunkLength != 2) return 44; + + /*the values are truncated to bitdepth in the PNG file*/ + info->background_defined = 1; + info->background_r = info->background_g = info->background_b = 256u * data[0] + data[1]; + } else if(info->color.colortype == LCT_RGB || info->color.colortype == LCT_RGBA) { + /*error: this chunk must be 6 bytes for grayscale image*/ + if(chunkLength != 6) return 45; + + /*the values are truncated to bitdepth in the PNG file*/ + info->background_defined = 1; + info->background_r = 256u * data[0] + data[1]; + info->background_g = 256u * data[2] + data[3]; + info->background_b = 256u * data[4] + data[5]; + } + + return 0; /* OK */ +} + +/*text chunk (tEXt)*/ +static unsigned readChunk_tEXt(LodePNGInfo* info, const unsigned char* data, size_t chunkLength) { + unsigned error = 0; + char *key = 0, *str = 0; + + while(!error) /*not really a while loop, only used to break on error*/ { + unsigned length, string2_begin; + + length = 0; + while(length < chunkLength && data[length] != 0) ++length; + /*even though it's not allowed by the standard, no error is thrown if + there's no null termination char, if the text is empty*/ + if(length < 1 || length > 79) CERROR_BREAK(error, 89); /*keyword too short or long*/ + + key = (char*)lodepng_malloc(length + 1); + if(!key) CERROR_BREAK(error, 83); /*alloc fail*/ + + lodepng_memcpy(key, data, length); + key[length] = 0; + + string2_begin = length + 1; /*skip keyword null terminator*/ + + length = (unsigned)(chunkLength < string2_begin ? 0 : chunkLength - string2_begin); + str = (char*)lodepng_malloc(length + 1); + if(!str) CERROR_BREAK(error, 83); /*alloc fail*/ + + lodepng_memcpy(str, data + string2_begin, length); + str[length] = 0; + + error = lodepng_add_text(info, key, str); + + break; + } + + lodepng_free(key); + lodepng_free(str); + + return error; +} + +/*compressed text chunk (zTXt)*/ +static unsigned readChunk_zTXt(LodePNGInfo* info, const LodePNGDecoderSettings* decoder, + const unsigned char* data, size_t chunkLength) { + unsigned error = 0; + + /*copy the object to change parameters in it*/ + LodePNGDecompressSettings zlibsettings = decoder->zlibsettings; + + unsigned length, string2_begin; + char *key = 0; + unsigned char* str = 0; + size_t size = 0; + + while(!error) /*not really a while loop, only used to break on error*/ { + for(length = 0; length < chunkLength && data[length] != 0; ++length) ; + if(length + 2 >= chunkLength) CERROR_BREAK(error, 75); /*no null termination, corrupt?*/ + if(length < 1 || length > 79) CERROR_BREAK(error, 89); /*keyword too short or long*/ + + key = (char*)lodepng_malloc(length + 1); + if(!key) CERROR_BREAK(error, 83); /*alloc fail*/ + + lodepng_memcpy(key, data, length); + key[length] = 0; + + if(data[length + 1] != 0) CERROR_BREAK(error, 72); /*the 0 byte indicating compression must be 0*/ + + string2_begin = length + 2; + if(string2_begin > chunkLength) CERROR_BREAK(error, 75); /*no null termination, corrupt?*/ + + length = (unsigned)chunkLength - string2_begin; + zlibsettings.max_output_size = decoder->max_text_size; + /*will fail if zlib error, e.g. if length is too small*/ + error = zlib_decompress(&str, &size, 0, &data[string2_begin], + length, &zlibsettings); + /*error: compressed text larger than decoder->max_text_size*/ + if(error && size > zlibsettings.max_output_size) error = 112; + if(error) break; + error = lodepng_add_text_sized(info, key, (char*)str, size); + break; + } + + lodepng_free(key); + lodepng_free(str); + + return error; +} + +/*international text chunk (iTXt)*/ +static unsigned readChunk_iTXt(LodePNGInfo* info, const LodePNGDecoderSettings* decoder, + const unsigned char* data, size_t chunkLength) { + unsigned error = 0; + unsigned i; + + /*copy the object to change parameters in it*/ + LodePNGDecompressSettings zlibsettings = decoder->zlibsettings; + + unsigned length, begin, compressed; + char *key = 0, *langtag = 0, *transkey = 0; + + while(!error) /*not really a while loop, only used to break on error*/ { + /*Quick check if the chunk length isn't too small. Even without check + it'd still fail with other error checks below if it's too short. This just gives a different error code.*/ + if(chunkLength < 5) CERROR_BREAK(error, 30); /*iTXt chunk too short*/ + + /*read the key*/ + for(length = 0; length < chunkLength && data[length] != 0; ++length) ; + if(length + 3 >= chunkLength) CERROR_BREAK(error, 75); /*no null termination char, corrupt?*/ + if(length < 1 || length > 79) CERROR_BREAK(error, 89); /*keyword too short or long*/ + + key = (char*)lodepng_malloc(length + 1); + if(!key) CERROR_BREAK(error, 83); /*alloc fail*/ + + lodepng_memcpy(key, data, length); + key[length] = 0; + + /*read the compression method*/ + compressed = data[length + 1]; + if(data[length + 2] != 0) CERROR_BREAK(error, 72); /*the 0 byte indicating compression must be 0*/ + + /*even though it's not allowed by the standard, no error is thrown if + there's no null termination char, if the text is empty for the next 3 texts*/ + + /*read the langtag*/ + begin = length + 3; + length = 0; + for(i = begin; i < chunkLength && data[i] != 0; ++i) ++length; + + langtag = (char*)lodepng_malloc(length + 1); + if(!langtag) CERROR_BREAK(error, 83); /*alloc fail*/ + + lodepng_memcpy(langtag, data + begin, length); + langtag[length] = 0; + + /*read the transkey*/ + begin += length + 1; + length = 0; + for(i = begin; i < chunkLength && data[i] != 0; ++i) ++length; + + transkey = (char*)lodepng_malloc(length + 1); + if(!transkey) CERROR_BREAK(error, 83); /*alloc fail*/ + + lodepng_memcpy(transkey, data + begin, length); + transkey[length] = 0; + + /*read the actual text*/ + begin += length + 1; + + length = (unsigned)chunkLength < begin ? 0 : (unsigned)chunkLength - begin; + + if(compressed) { + unsigned char* str = 0; + size_t size = 0; + zlibsettings.max_output_size = decoder->max_text_size; + /*will fail if zlib error, e.g. if length is too small*/ + error = zlib_decompress(&str, &size, 0, &data[begin], + length, &zlibsettings); + /*error: compressed text larger than decoder->max_text_size*/ + if(error && size > zlibsettings.max_output_size) error = 112; + if(!error) error = lodepng_add_itext_sized(info, key, langtag, transkey, (char*)str, size); + lodepng_free(str); + } else { + error = lodepng_add_itext_sized(info, key, langtag, transkey, (char*)(data + begin), length); + } + + break; + } + + lodepng_free(key); + lodepng_free(langtag); + lodepng_free(transkey); + + return error; +} + +static unsigned readChunk_tIME(LodePNGInfo* info, const unsigned char* data, size_t chunkLength) { + if(chunkLength != 7) return 73; /*invalid tIME chunk size*/ + + info->time_defined = 1; + info->time.year = 256u * data[0] + data[1]; + info->time.month = data[2]; + info->time.day = data[3]; + info->time.hour = data[4]; + info->time.minute = data[5]; + info->time.second = data[6]; + + return 0; /* OK */ +} + +static unsigned readChunk_pHYs(LodePNGInfo* info, const unsigned char* data, size_t chunkLength) { + if(chunkLength != 9) return 74; /*invalid pHYs chunk size*/ + + info->phys_defined = 1; + info->phys_x = 16777216u * data[0] + 65536u * data[1] + 256u * data[2] + data[3]; + info->phys_y = 16777216u * data[4] + 65536u * data[5] + 256u * data[6] + data[7]; + info->phys_unit = data[8]; + + return 0; /* OK */ +} + +static unsigned readChunk_gAMA(LodePNGInfo* info, const unsigned char* data, size_t chunkLength) { + if(chunkLength != 4) return 96; /*invalid gAMA chunk size*/ + + info->gama_defined = 1; + info->gama_gamma = 16777216u * data[0] + 65536u * data[1] + 256u * data[2] + data[3]; + + return 0; /* OK */ +} + +static unsigned readChunk_cHRM(LodePNGInfo* info, const unsigned char* data, size_t chunkLength) { + if(chunkLength != 32) return 97; /*invalid cHRM chunk size*/ + + info->chrm_defined = 1; + info->chrm_white_x = 16777216u * data[ 0] + 65536u * data[ 1] + 256u * data[ 2] + data[ 3]; + info->chrm_white_y = 16777216u * data[ 4] + 65536u * data[ 5] + 256u * data[ 6] + data[ 7]; + info->chrm_red_x = 16777216u * data[ 8] + 65536u * data[ 9] + 256u * data[10] + data[11]; + info->chrm_red_y = 16777216u * data[12] + 65536u * data[13] + 256u * data[14] + data[15]; + info->chrm_green_x = 16777216u * data[16] + 65536u * data[17] + 256u * data[18] + data[19]; + info->chrm_green_y = 16777216u * data[20] + 65536u * data[21] + 256u * data[22] + data[23]; + info->chrm_blue_x = 16777216u * data[24] + 65536u * data[25] + 256u * data[26] + data[27]; + info->chrm_blue_y = 16777216u * data[28] + 65536u * data[29] + 256u * data[30] + data[31]; + + return 0; /* OK */ +} + +static unsigned readChunk_sRGB(LodePNGInfo* info, const unsigned char* data, size_t chunkLength) { + if(chunkLength != 1) return 98; /*invalid sRGB chunk size (this one is never ignored)*/ + + info->srgb_defined = 1; + info->srgb_intent = data[0]; + + return 0; /* OK */ +} + +static unsigned readChunk_iCCP(LodePNGInfo* info, const LodePNGDecoderSettings* decoder, + const unsigned char* data, size_t chunkLength) { + unsigned error = 0; + unsigned i; + size_t size = 0; + /*copy the object to change parameters in it*/ + LodePNGDecompressSettings zlibsettings = decoder->zlibsettings; + + unsigned length, string2_begin; + + if(info->iccp_defined) lodepng_clear_icc(info); + info->iccp_defined = 1; + + for(length = 0; length < chunkLength && data[length] != 0; ++length) ; + if(length + 2 >= chunkLength) return 75; /*no null termination, corrupt?*/ + if(length < 1 || length > 79) return 89; /*keyword too short or long*/ + + info->iccp_name = (char*)lodepng_malloc(length + 1); + if(!info->iccp_name) return 83; /*alloc fail*/ + + info->iccp_name[length] = 0; + for(i = 0; i != length; ++i) info->iccp_name[i] = (char)data[i]; + + if(data[length + 1] != 0) return 72; /*the 0 byte indicating compression must be 0*/ + + string2_begin = length + 2; + if(string2_begin > chunkLength) return 75; /*no null termination, corrupt?*/ + + length = (unsigned)chunkLength - string2_begin; + zlibsettings.max_output_size = decoder->max_icc_size; + error = zlib_decompress(&info->iccp_profile, &size, 0, + &data[string2_begin], + length, &zlibsettings); + /*error: ICC profile larger than decoder->max_icc_size*/ + if(error && size > zlibsettings.max_output_size) error = 113; + info->iccp_profile_size = (unsigned)size; + if(!error && !info->iccp_profile_size) error = 100; /*invalid ICC profile size*/ + return error; +} + +static unsigned readChunk_eXIf(LodePNGInfo* info, const unsigned char* data, size_t chunkLength) { + return lodepng_set_exif(info, data, (unsigned)chunkLength); +} + +/*significant bits chunk (sBIT)*/ +static unsigned readChunk_sBIT(LodePNGInfo* info, const unsigned char* data, size_t chunkLength) { + unsigned bitdepth = (info->color.colortype == LCT_PALETTE) ? 8 : info->color.bitdepth; + if(info->color.colortype == LCT_GREY) { + /*error: this chunk must be 1 bytes for grayscale image*/ + if(chunkLength != 1) return 114; + if(data[0] == 0 || data[0] > bitdepth) return 115; + info->sbit_defined = 1; + info->sbit_r = info->sbit_g = info->sbit_b = data[0]; /*setting g and b is not required, but sensible*/ + } else if(info->color.colortype == LCT_RGB || info->color.colortype == LCT_PALETTE) { + /*error: this chunk must be 3 bytes for RGB and palette image*/ + if(chunkLength != 3) return 114; + if(data[0] == 0 || data[1] == 0 || data[2] == 0) return 115; + if(data[0] > bitdepth || data[1] > bitdepth || data[2] > bitdepth) return 115; + info->sbit_defined = 1; + info->sbit_r = data[0]; + info->sbit_g = data[1]; + info->sbit_b = data[2]; + } else if(info->color.colortype == LCT_GREY_ALPHA) { + /*error: this chunk must be 2 byte for grayscale with alpha image*/ + if(chunkLength != 2) return 114; + if(data[0] == 0 || data[1] == 0) return 115; + if(data[0] > bitdepth || data[1] > bitdepth) return 115; + info->sbit_defined = 1; + info->sbit_r = info->sbit_g = info->sbit_b = data[0]; /*setting g and b is not required, but sensible*/ + info->sbit_a = data[1]; + } else if(info->color.colortype == LCT_RGBA) { + /*error: this chunk must be 4 bytes for grayscale image*/ + if(chunkLength != 4) return 114; + if(data[0] == 0 || data[1] == 0 || data[2] == 0 || data[3] == 0) return 115; + if(data[0] > bitdepth || data[1] > bitdepth || data[2] > bitdepth || data[3] > bitdepth) return 115; + info->sbit_defined = 1; + info->sbit_r = data[0]; + info->sbit_g = data[1]; + info->sbit_b = data[2]; + info->sbit_a = data[3]; + } + + return 0; /* OK */ +} +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ + +unsigned lodepng_inspect_chunk(LodePNGState* state, size_t pos, + const unsigned char* in, size_t insize) { + const unsigned char* chunk = in + pos; + unsigned chunkLength; + const unsigned char* data; + unsigned unhandled = 0; + unsigned error = 0; + + if(pos + 4 > insize) return 30; + chunkLength = lodepng_chunk_length(chunk); + if(chunkLength > 2147483647) return 63; + data = lodepng_chunk_data_const(chunk); + if(chunkLength + 12 > insize - pos) return 30; + + if(lodepng_chunk_type_equals(chunk, "PLTE")) { + error = readChunk_PLTE(&state->info_png.color, data, chunkLength); + } else if(lodepng_chunk_type_equals(chunk, "tRNS")) { + error = readChunk_tRNS(&state->info_png.color, data, chunkLength); +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + } else if(lodepng_chunk_type_equals(chunk, "bKGD")) { + error = readChunk_bKGD(&state->info_png, data, chunkLength); + } else if(lodepng_chunk_type_equals(chunk, "tEXt")) { + error = readChunk_tEXt(&state->info_png, data, chunkLength); + } else if(lodepng_chunk_type_equals(chunk, "zTXt")) { + error = readChunk_zTXt(&state->info_png, &state->decoder, data, chunkLength); + } else if(lodepng_chunk_type_equals(chunk, "iTXt")) { + error = readChunk_iTXt(&state->info_png, &state->decoder, data, chunkLength); + } else if(lodepng_chunk_type_equals(chunk, "tIME")) { + error = readChunk_tIME(&state->info_png, data, chunkLength); + } else if(lodepng_chunk_type_equals(chunk, "pHYs")) { + error = readChunk_pHYs(&state->info_png, data, chunkLength); + } else if(lodepng_chunk_type_equals(chunk, "gAMA")) { + error = readChunk_gAMA(&state->info_png, data, chunkLength); + } else if(lodepng_chunk_type_equals(chunk, "cHRM")) { + error = readChunk_cHRM(&state->info_png, data, chunkLength); + } else if(lodepng_chunk_type_equals(chunk, "sRGB")) { + error = readChunk_sRGB(&state->info_png, data, chunkLength); + } else if(lodepng_chunk_type_equals(chunk, "iCCP")) { + error = readChunk_iCCP(&state->info_png, &state->decoder, data, chunkLength); + } else if(lodepng_chunk_type_equals(chunk, "eXIf")) { + error = readChunk_eXIf(&state->info_png, data, chunkLength); + } else if(lodepng_chunk_type_equals(chunk, "sBIT")) { + error = readChunk_sBIT(&state->info_png, data, chunkLength); +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ + } else { + /* unhandled chunk is ok (is not an error) */ + unhandled = 1; + } + + if(!error && !unhandled && !state->decoder.ignore_crc) { + if(lodepng_chunk_check_crc(chunk)) return 57; /*invalid CRC*/ + } + + return error; +} + +/*read a PNG, the result will be in the same color type as the PNG (hence "generic")*/ +static void decodeGeneric(unsigned char** out, unsigned* w, unsigned* h, + LodePNGState* state, + const unsigned char* in, size_t insize) { + unsigned char IEND = 0; + const unsigned char* chunk; /*points to beginning of next chunk*/ + unsigned char* idat; /*the data from idat chunks, zlib compressed*/ + size_t idatsize = 0; + unsigned char* scanlines = 0; + size_t scanlines_size = 0, expected_size = 0; + size_t outsize = 0; + + /*for unknown chunk order*/ + unsigned unknown = 0; +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + unsigned critical_pos = 1; /*1 = after IHDR, 2 = after PLTE, 3 = after IDAT*/ +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ + + + /* safe output values in case error happens */ + *out = 0; + *w = *h = 0; + + state->error = lodepng_inspect(w, h, state, in, insize); /*reads header and resets other parameters in state->info_png*/ + if(state->error) return; + + if(lodepng_pixel_overflow(*w, *h, &state->info_png.color, &state->info_raw)) { + CERROR_RETURN(state->error, 92); /*overflow possible due to amount of pixels*/ + } + + /*the input filesize is a safe upper bound for the sum of idat chunks size*/ + idat = (unsigned char*)lodepng_malloc(insize); + if(!idat) CERROR_RETURN(state->error, 83); /*alloc fail*/ + + chunk = &in[33]; /*first byte of the first chunk after the header*/ + + /*loop through the chunks, ignoring unknown chunks and stopping at IEND chunk. + IDAT data is put at the start of the in buffer*/ + while(!IEND && !state->error) { + unsigned chunkLength; + const unsigned char* data; /*the data in the chunk*/ + size_t pos = (size_t)(chunk - in); + + /*error: next chunk out of bounds of the in buffer*/ + if(chunk < in || pos + 12 > insize) { + if(state->decoder.ignore_end) break; /*other errors may still happen though*/ + CERROR_BREAK(state->error, 30); + } + + /*length of the data of the chunk, excluding the 12 bytes for length, chunk type and CRC*/ + chunkLength = lodepng_chunk_length(chunk); + /*error: chunk length larger than the max PNG chunk size*/ + if(chunkLength > 2147483647) { + if(state->decoder.ignore_end) break; /*other errors may still happen though*/ + CERROR_BREAK(state->error, 63); + } + + if(pos + (size_t)chunkLength + 12 > insize || pos + (size_t)chunkLength + 12 < pos) { + CERROR_BREAK(state->error, 64); /*error: size of the in buffer too small to contain next chunk (or int overflow)*/ + } + + data = lodepng_chunk_data_const(chunk); + + unknown = 0; + + /*IDAT chunk, containing compressed image data*/ + if(lodepng_chunk_type_equals(chunk, "IDAT")) { + size_t newsize; + if(lodepng_addofl(idatsize, chunkLength, &newsize)) CERROR_BREAK(state->error, 95); + if(newsize > insize) CERROR_BREAK(state->error, 95); + lodepng_memcpy(idat + idatsize, data, chunkLength); + idatsize += chunkLength; +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + critical_pos = 3; +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ + } else if(lodepng_chunk_type_equals(chunk, "IEND")) { + /*IEND chunk*/ + IEND = 1; + } else if(lodepng_chunk_type_equals(chunk, "PLTE")) { + /*palette chunk (PLTE)*/ + state->error = readChunk_PLTE(&state->info_png.color, data, chunkLength); + if(state->error) break; +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + critical_pos = 2; +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ + } else if(lodepng_chunk_type_equals(chunk, "tRNS")) { + /*palette transparency chunk (tRNS). Even though this one is an ancillary chunk , it is still compiled + in without 'LODEPNG_COMPILE_ANCILLARY_CHUNKS' because it contains essential color information that + affects the alpha channel of pixels. */ + state->error = readChunk_tRNS(&state->info_png.color, data, chunkLength); + if(state->error) break; +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + /*background color chunk (bKGD)*/ + } else if(lodepng_chunk_type_equals(chunk, "bKGD")) { + state->error = readChunk_bKGD(&state->info_png, data, chunkLength); + if(state->error) break; + } else if(lodepng_chunk_type_equals(chunk, "tEXt")) { + /*text chunk (tEXt)*/ + if(state->decoder.read_text_chunks) { + state->error = readChunk_tEXt(&state->info_png, data, chunkLength); + if(state->error) break; + } + } else if(lodepng_chunk_type_equals(chunk, "zTXt")) { + /*compressed text chunk (zTXt)*/ + if(state->decoder.read_text_chunks) { + state->error = readChunk_zTXt(&state->info_png, &state->decoder, data, chunkLength); + if(state->error) break; + } + } else if(lodepng_chunk_type_equals(chunk, "iTXt")) { + /*international text chunk (iTXt)*/ + if(state->decoder.read_text_chunks) { + state->error = readChunk_iTXt(&state->info_png, &state->decoder, data, chunkLength); + if(state->error) break; + } + } else if(lodepng_chunk_type_equals(chunk, "tIME")) { + state->error = readChunk_tIME(&state->info_png, data, chunkLength); + if(state->error) break; + } else if(lodepng_chunk_type_equals(chunk, "pHYs")) { + state->error = readChunk_pHYs(&state->info_png, data, chunkLength); + if(state->error) break; + } else if(lodepng_chunk_type_equals(chunk, "gAMA")) { + state->error = readChunk_gAMA(&state->info_png, data, chunkLength); + if(state->error) break; + } else if(lodepng_chunk_type_equals(chunk, "cHRM")) { + state->error = readChunk_cHRM(&state->info_png, data, chunkLength); + if(state->error) break; + } else if(lodepng_chunk_type_equals(chunk, "sRGB")) { + state->error = readChunk_sRGB(&state->info_png, data, chunkLength); + if(state->error) break; + } else if(lodepng_chunk_type_equals(chunk, "iCCP")) { + state->error = readChunk_iCCP(&state->info_png, &state->decoder, data, chunkLength); + if(state->error) break; + } else if(lodepng_chunk_type_equals(chunk, "eXIf")) { + state->error = readChunk_eXIf(&state->info_png, data, chunkLength); + if(state->error) break; + } else if(lodepng_chunk_type_equals(chunk, "sBIT")) { + state->error = readChunk_sBIT(&state->info_png, data, chunkLength); + if(state->error) break; +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ + } else /*it's not an implemented chunk type, so ignore it: skip over the data*/ { + /*error: unknown critical chunk (5th bit of first byte of chunk type is 0)*/ + if(!state->decoder.ignore_critical && !lodepng_chunk_ancillary(chunk)) { + CERROR_BREAK(state->error, 69); + } + + unknown = 1; +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + if(state->decoder.remember_unknown_chunks) { + state->error = lodepng_chunk_append(&state->info_png.unknown_chunks_data[critical_pos - 1], + &state->info_png.unknown_chunks_size[critical_pos - 1], chunk); + if(state->error) break; + } +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ + } + + if(!state->decoder.ignore_crc && !unknown) /*check CRC if wanted, only on known chunk types*/ { + if(lodepng_chunk_check_crc(chunk)) CERROR_BREAK(state->error, 57); /*invalid CRC*/ + } + + if(!IEND) chunk = lodepng_chunk_next_const(chunk, in + insize); + } + + if(!state->error && state->info_png.color.colortype == LCT_PALETTE && !state->info_png.color.palette) { + state->error = 106; /* error: PNG file must have PLTE chunk if color type is palette */ + } + + if(!state->error) { + /*predict output size, to allocate exact size for output buffer to avoid more dynamic allocation. + If the decompressed size does not match the prediction, the image must be corrupt.*/ + if(state->info_png.interlace_method == 0) { + unsigned bpp = lodepng_get_bpp(&state->info_png.color); + expected_size = lodepng_get_raw_size_idat(*w, *h, bpp); + } else { + unsigned bpp = lodepng_get_bpp(&state->info_png.color); + /*Adam-7 interlaced: expected size is the sum of the 7 sub-images sizes*/ + expected_size = 0; + expected_size += lodepng_get_raw_size_idat((*w + 7) >> 3, (*h + 7) >> 3, bpp); + if(*w > 4) expected_size += lodepng_get_raw_size_idat((*w + 3) >> 3, (*h + 7) >> 3, bpp); + expected_size += lodepng_get_raw_size_idat((*w + 3) >> 2, (*h + 3) >> 3, bpp); + if(*w > 2) expected_size += lodepng_get_raw_size_idat((*w + 1) >> 2, (*h + 3) >> 2, bpp); + expected_size += lodepng_get_raw_size_idat((*w + 1) >> 1, (*h + 1) >> 2, bpp); + if(*w > 1) expected_size += lodepng_get_raw_size_idat((*w + 0) >> 1, (*h + 1) >> 1, bpp); + expected_size += lodepng_get_raw_size_idat((*w + 0), (*h + 0) >> 1, bpp); + } + + state->error = zlib_decompress(&scanlines, &scanlines_size, expected_size, idat, idatsize, &state->decoder.zlibsettings); + } + if(!state->error && scanlines_size != expected_size) state->error = 91; /*decompressed size doesn't match prediction*/ + lodepng_free(idat); + + if(!state->error) { + outsize = lodepng_get_raw_size(*w, *h, &state->info_png.color); + *out = (unsigned char*)lodepng_malloc(outsize); + if(!*out) state->error = 83; /*alloc fail*/ + } + if(!state->error) { + lodepng_memset(*out, 0, outsize); + state->error = postProcessScanlines(*out, scanlines, *w, *h, &state->info_png); + } + lodepng_free(scanlines); +} + +unsigned lodepng_decode(unsigned char** out, unsigned* w, unsigned* h, + LodePNGState* state, + const unsigned char* in, size_t insize) { + *out = 0; + decodeGeneric(out, w, h, state, in, insize); + if(state->error) return state->error; + if(!state->decoder.color_convert || lodepng_color_mode_equal(&state->info_raw, &state->info_png.color)) { + /*same color type, no copying or converting of data needed*/ + /*store the info_png color settings on the info_raw so that the info_raw still reflects what colortype + the raw image has to the end user*/ + if(!state->decoder.color_convert) { + state->error = lodepng_color_mode_copy(&state->info_raw, &state->info_png.color); + if(state->error) return state->error; + } + } else { /*color conversion needed*/ + unsigned char* data = *out; + size_t outsize; + + /*TODO: check if this works according to the statement in the documentation: "The converter can convert + from grayscale input color type, to 8-bit grayscale or grayscale with alpha"*/ + if(!(state->info_raw.colortype == LCT_RGB || state->info_raw.colortype == LCT_RGBA) + && !(state->info_raw.bitdepth == 8)) { + return 56; /*unsupported color mode conversion*/ + } + + outsize = lodepng_get_raw_size(*w, *h, &state->info_raw); + *out = (unsigned char*)lodepng_malloc(outsize); + if(!(*out)) { + state->error = 83; /*alloc fail*/ + } + else state->error = lodepng_convert(*out, data, &state->info_raw, + &state->info_png.color, *w, *h); + lodepng_free(data); + } + return state->error; +} + +unsigned lodepng_decode_memory(unsigned char** out, unsigned* w, unsigned* h, const unsigned char* in, + size_t insize, LodePNGColorType colortype, unsigned bitdepth) { + unsigned error; + LodePNGState state; + lodepng_state_init(&state); + state.info_raw.colortype = colortype; + state.info_raw.bitdepth = bitdepth; +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + /*disable reading things that this function doesn't output*/ + state.decoder.read_text_chunks = 0; + state.decoder.remember_unknown_chunks = 0; +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ + error = lodepng_decode(out, w, h, &state, in, insize); + lodepng_state_cleanup(&state); + return error; +} + +unsigned lodepng_decode32(unsigned char** out, unsigned* w, unsigned* h, const unsigned char* in, size_t insize) { + return lodepng_decode_memory(out, w, h, in, insize, LCT_RGBA, 8); +} + +unsigned lodepng_decode24(unsigned char** out, unsigned* w, unsigned* h, const unsigned char* in, size_t insize) { + return lodepng_decode_memory(out, w, h, in, insize, LCT_RGB, 8); +} + +#ifdef LODEPNG_COMPILE_DISK +unsigned lodepng_decode_file(unsigned char** out, unsigned* w, unsigned* h, const char* filename, + LodePNGColorType colortype, unsigned bitdepth) { + unsigned char* buffer = 0; + size_t buffersize; + unsigned error; + /* safe output values in case error happens */ + *out = 0; + *w = *h = 0; + error = lodepng_load_file(&buffer, &buffersize, filename); + if(!error) error = lodepng_decode_memory(out, w, h, buffer, buffersize, colortype, bitdepth); + lodepng_free(buffer); + return error; +} + +unsigned lodepng_decode32_file(unsigned char** out, unsigned* w, unsigned* h, const char* filename) { + return lodepng_decode_file(out, w, h, filename, LCT_RGBA, 8); +} + +unsigned lodepng_decode24_file(unsigned char** out, unsigned* w, unsigned* h, const char* filename) { + return lodepng_decode_file(out, w, h, filename, LCT_RGB, 8); +} +#endif /*LODEPNG_COMPILE_DISK*/ + +void lodepng_decoder_settings_init(LodePNGDecoderSettings* settings) { + settings->color_convert = 1; +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + settings->read_text_chunks = 1; + settings->remember_unknown_chunks = 0; + settings->max_text_size = 16777216; + settings->max_icc_size = 16777216; /* 16MB is much more than enough for any reasonable ICC profile */ +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ + settings->ignore_crc = 0; + settings->ignore_critical = 0; + settings->ignore_end = 0; + lodepng_decompress_settings_init(&settings->zlibsettings); +} + +#endif /*LODEPNG_COMPILE_DECODER*/ + +#if defined(LODEPNG_COMPILE_DECODER) || defined(LODEPNG_COMPILE_ENCODER) + +void lodepng_state_init(LodePNGState* state) { +#ifdef LODEPNG_COMPILE_DECODER + lodepng_decoder_settings_init(&state->decoder); +#endif /*LODEPNG_COMPILE_DECODER*/ +#ifdef LODEPNG_COMPILE_ENCODER + lodepng_encoder_settings_init(&state->encoder); +#endif /*LODEPNG_COMPILE_ENCODER*/ + lodepng_color_mode_init(&state->info_raw); + lodepng_info_init(&state->info_png); + state->error = 1; +} + +void lodepng_state_cleanup(LodePNGState* state) { + lodepng_color_mode_cleanup(&state->info_raw); + lodepng_info_cleanup(&state->info_png); +} + +void lodepng_state_copy(LodePNGState* dest, const LodePNGState* source) { + lodepng_state_cleanup(dest); + *dest = *source; + lodepng_color_mode_init(&dest->info_raw); + lodepng_info_init(&dest->info_png); + dest->error = lodepng_color_mode_copy(&dest->info_raw, &source->info_raw); if(dest->error) return; + dest->error = lodepng_info_copy(&dest->info_png, &source->info_png); if(dest->error) return; +} + +#endif /* defined(LODEPNG_COMPILE_DECODER) || defined(LODEPNG_COMPILE_ENCODER) */ + +#ifdef LODEPNG_COMPILE_ENCODER + +/* ////////////////////////////////////////////////////////////////////////// */ +/* / PNG Encoder / */ +/* ////////////////////////////////////////////////////////////////////////// */ + + +static unsigned writeSignature(ucvector* out) { + size_t pos = out->size; + const unsigned char signature[] = {137, 80, 78, 71, 13, 10, 26, 10}; + /*8 bytes PNG signature, aka the magic bytes*/ + if(!ucvector_resize(out, out->size + 8)) return 83; /*alloc fail*/ + lodepng_memcpy(out->data + pos, signature, 8); + return 0; +} + +static unsigned addChunk_IHDR(ucvector* out, unsigned w, unsigned h, + LodePNGColorType colortype, unsigned bitdepth, unsigned interlace_method) { + unsigned char *chunk, *data; + CERROR_TRY_RETURN(lodepng_chunk_init(&chunk, out, 13, "IHDR")); + data = chunk + 8; + + lodepng_set32bitInt(data + 0, w); /*width*/ + lodepng_set32bitInt(data + 4, h); /*height*/ + data[8] = (unsigned char)bitdepth; /*bit depth*/ + data[9] = (unsigned char)colortype; /*color type*/ + data[10] = 0; /*compression method*/ + data[11] = 0; /*filter method*/ + data[12] = interlace_method; /*interlace method*/ + + lodepng_chunk_generate_crc(chunk); + return 0; +} + +/* only adds the chunk if needed (there is a key or palette with alpha) */ +static unsigned addChunk_PLTE(ucvector* out, const LodePNGColorMode* info) { + unsigned char* chunk; + size_t i, j = 8; + + if(info->palettesize == 0 || info->palettesize > 256) { + return 68; /*invalid palette size, it is only allowed to be 1-256*/ + } + + CERROR_TRY_RETURN(lodepng_chunk_init(&chunk, out, info->palettesize * 3, "PLTE")); + + for(i = 0; i != info->palettesize; ++i) { + /*add all channels except alpha channel*/ + chunk[j++] = info->palette[i * 4 + 0]; + chunk[j++] = info->palette[i * 4 + 1]; + chunk[j++] = info->palette[i * 4 + 2]; + } + + lodepng_chunk_generate_crc(chunk); + return 0; +} + +static unsigned addChunk_tRNS(ucvector* out, const LodePNGColorMode* info) { + unsigned char* chunk = 0; + + if(info->colortype == LCT_PALETTE) { + size_t i, amount = info->palettesize; + /*the tail of palette values that all have 255 as alpha, does not have to be encoded*/ + for(i = info->palettesize; i != 0; --i) { + if(info->palette[4 * (i - 1) + 3] != 255) break; + --amount; + } + if(amount) { + CERROR_TRY_RETURN(lodepng_chunk_init(&chunk, out, amount, "tRNS")); + /*add the alpha channel values from the palette*/ + for(i = 0; i != amount; ++i) chunk[8 + i] = info->palette[4 * i + 3]; + } + } else if(info->colortype == LCT_GREY) { + if(info->key_defined) { + CERROR_TRY_RETURN(lodepng_chunk_init(&chunk, out, 2, "tRNS")); + chunk[8] = (unsigned char)(info->key_r >> 8); + chunk[9] = (unsigned char)(info->key_r & 255); + } + } else if(info->colortype == LCT_RGB) { + if(info->key_defined) { + CERROR_TRY_RETURN(lodepng_chunk_init(&chunk, out, 6, "tRNS")); + chunk[8] = (unsigned char)(info->key_r >> 8); + chunk[9] = (unsigned char)(info->key_r & 255); + chunk[10] = (unsigned char)(info->key_g >> 8); + chunk[11] = (unsigned char)(info->key_g & 255); + chunk[12] = (unsigned char)(info->key_b >> 8); + chunk[13] = (unsigned char)(info->key_b & 255); + } + } + + if(chunk) lodepng_chunk_generate_crc(chunk); + return 0; +} + +static unsigned addChunk_IDAT(ucvector* out, const unsigned char* data, size_t datasize, + LodePNGCompressSettings* zlibsettings) { + unsigned error = 0; + unsigned char* zlib = 0; + size_t pos = 0; + size_t zlibsize = 0; + /* max chunk length allowed by the specification is 2147483647 bytes */ + const size_t max_chunk_length = 2147483647u; + + error = zlib_compress(&zlib, &zlibsize, data, datasize, zlibsettings); + while(!error) { + if(zlibsize - pos > max_chunk_length) { + error = lodepng_chunk_createv(out, max_chunk_length, "IDAT", zlib + pos); + pos += max_chunk_length; + } else { + error = lodepng_chunk_createv(out, zlibsize - pos, "IDAT", zlib + pos); + break; + } + } + lodepng_free(zlib); + return error; +} + +static unsigned addChunk_IEND(ucvector* out) { + return lodepng_chunk_createv(out, 0, "IEND", 0); +} + +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + +static unsigned addChunk_tEXt(ucvector* out, const char* keyword, const char* textstring) { + unsigned char* chunk = 0; + size_t keysize = lodepng_strlen(keyword), textsize = lodepng_strlen(textstring); + size_t size = keysize + 1 + textsize; + if(keysize < 1 || keysize > 79) return 89; /*error: invalid keyword size*/ + CERROR_TRY_RETURN(lodepng_chunk_init(&chunk, out, size, "tEXt")); + lodepng_memcpy(chunk + 8, keyword, keysize); + chunk[8 + keysize] = 0; /*null termination char*/ + lodepng_memcpy(chunk + 9 + keysize, textstring, textsize); + lodepng_chunk_generate_crc(chunk); + return 0; +} + +static unsigned addChunk_zTXt(ucvector* out, const char* keyword, const char* textstring, + LodePNGCompressSettings* zlibsettings) { + unsigned error = 0; + unsigned char* chunk = 0; + unsigned char* compressed = 0; + size_t compressedsize = 0; + size_t textsize = lodepng_strlen(textstring); + size_t keysize = lodepng_strlen(keyword); + if(keysize < 1 || keysize > 79) return 89; /*error: invalid keyword size*/ + + error = zlib_compress(&compressed, &compressedsize, + (const unsigned char*)textstring, textsize, zlibsettings); + if(!error) { + size_t size = keysize + 2 + compressedsize; + error = lodepng_chunk_init(&chunk, out, size, "zTXt"); + } + if(!error) { + lodepng_memcpy(chunk + 8, keyword, keysize); + chunk[8 + keysize] = 0; /*null termination char*/ + chunk[9 + keysize] = 0; /*compression method: 0*/ + lodepng_memcpy(chunk + 10 + keysize, compressed, compressedsize); + lodepng_chunk_generate_crc(chunk); + } + + lodepng_free(compressed); + return error; +} + +static unsigned addChunk_iTXt(ucvector* out, unsigned compress, const char* keyword, const char* langtag, + const char* transkey, const char* textstring, LodePNGCompressSettings* zlibsettings) { + unsigned error = 0; + unsigned char* chunk = 0; + unsigned char* compressed = 0; + size_t compressedsize = 0; + size_t textsize = lodepng_strlen(textstring); + size_t keysize = lodepng_strlen(keyword), langsize = lodepng_strlen(langtag), transsize = lodepng_strlen(transkey); + + if(keysize < 1 || keysize > 79) return 89; /*error: invalid keyword size*/ + + if(compress) { + error = zlib_compress(&compressed, &compressedsize, + (const unsigned char*)textstring, textsize, zlibsettings); + } + if(!error) { + size_t size = keysize + 3 + langsize + 1 + transsize + 1 + (compress ? compressedsize : textsize); + error = lodepng_chunk_init(&chunk, out, size, "iTXt"); + } + if(!error) { + size_t pos = 8; + lodepng_memcpy(chunk + pos, keyword, keysize); + pos += keysize; + chunk[pos++] = 0; /*null termination char*/ + chunk[pos++] = (compress ? 1 : 0); /*compression flag*/ + chunk[pos++] = 0; /*compression method: 0*/ + lodepng_memcpy(chunk + pos, langtag, langsize); + pos += langsize; + chunk[pos++] = 0; /*null termination char*/ + lodepng_memcpy(chunk + pos, transkey, transsize); + pos += transsize; + chunk[pos++] = 0; /*null termination char*/ + if(compress) { + lodepng_memcpy(chunk + pos, compressed, compressedsize); + } else { + lodepng_memcpy(chunk + pos, textstring, textsize); + } + lodepng_chunk_generate_crc(chunk); + } + + lodepng_free(compressed); + return error; +} + +static unsigned addChunk_bKGD(ucvector* out, const LodePNGInfo* info) { + unsigned char* chunk = 0; + if(info->color.colortype == LCT_GREY || info->color.colortype == LCT_GREY_ALPHA) { + CERROR_TRY_RETURN(lodepng_chunk_init(&chunk, out, 2, "bKGD")); + chunk[8] = (unsigned char)(info->background_r >> 8); + chunk[9] = (unsigned char)(info->background_r & 255); + } else if(info->color.colortype == LCT_RGB || info->color.colortype == LCT_RGBA) { + CERROR_TRY_RETURN(lodepng_chunk_init(&chunk, out, 6, "bKGD")); + chunk[8] = (unsigned char)(info->background_r >> 8); + chunk[9] = (unsigned char)(info->background_r & 255); + chunk[10] = (unsigned char)(info->background_g >> 8); + chunk[11] = (unsigned char)(info->background_g & 255); + chunk[12] = (unsigned char)(info->background_b >> 8); + chunk[13] = (unsigned char)(info->background_b & 255); + } else if(info->color.colortype == LCT_PALETTE) { + CERROR_TRY_RETURN(lodepng_chunk_init(&chunk, out, 1, "bKGD")); + chunk[8] = (unsigned char)(info->background_r & 255); /*palette index*/ + } + if(chunk) lodepng_chunk_generate_crc(chunk); + return 0; +} + +static unsigned addChunk_tIME(ucvector* out, const LodePNGTime* time) { + unsigned char* chunk; + CERROR_TRY_RETURN(lodepng_chunk_init(&chunk, out, 7, "tIME")); + chunk[8] = (unsigned char)(time->year >> 8); + chunk[9] = (unsigned char)(time->year & 255); + chunk[10] = (unsigned char)time->month; + chunk[11] = (unsigned char)time->day; + chunk[12] = (unsigned char)time->hour; + chunk[13] = (unsigned char)time->minute; + chunk[14] = (unsigned char)time->second; + lodepng_chunk_generate_crc(chunk); + return 0; +} + +static unsigned addChunk_pHYs(ucvector* out, const LodePNGInfo* info) { + unsigned char* chunk; + CERROR_TRY_RETURN(lodepng_chunk_init(&chunk, out, 9, "pHYs")); + lodepng_set32bitInt(chunk + 8, info->phys_x); + lodepng_set32bitInt(chunk + 12, info->phys_y); + chunk[16] = info->phys_unit; + lodepng_chunk_generate_crc(chunk); + return 0; +} + +static unsigned addChunk_gAMA(ucvector* out, const LodePNGInfo* info) { + unsigned char* chunk; + CERROR_TRY_RETURN(lodepng_chunk_init(&chunk, out, 4, "gAMA")); + lodepng_set32bitInt(chunk + 8, info->gama_gamma); + lodepng_chunk_generate_crc(chunk); + return 0; +} + +static unsigned addChunk_cHRM(ucvector* out, const LodePNGInfo* info) { + unsigned char* chunk; + CERROR_TRY_RETURN(lodepng_chunk_init(&chunk, out, 32, "cHRM")); + lodepng_set32bitInt(chunk + 8, info->chrm_white_x); + lodepng_set32bitInt(chunk + 12, info->chrm_white_y); + lodepng_set32bitInt(chunk + 16, info->chrm_red_x); + lodepng_set32bitInt(chunk + 20, info->chrm_red_y); + lodepng_set32bitInt(chunk + 24, info->chrm_green_x); + lodepng_set32bitInt(chunk + 28, info->chrm_green_y); + lodepng_set32bitInt(chunk + 32, info->chrm_blue_x); + lodepng_set32bitInt(chunk + 36, info->chrm_blue_y); + lodepng_chunk_generate_crc(chunk); + return 0; +} + +static unsigned addChunk_sRGB(ucvector* out, const LodePNGInfo* info) { + unsigned char data = info->srgb_intent; + return lodepng_chunk_createv(out, 1, "sRGB", &data); +} + +static unsigned addChunk_iCCP(ucvector* out, const LodePNGInfo* info, LodePNGCompressSettings* zlibsettings) { + unsigned error = 0; + unsigned char* chunk = 0; + unsigned char* compressed = 0; + size_t compressedsize = 0; + size_t keysize = lodepng_strlen(info->iccp_name); + + if(keysize < 1 || keysize > 79) return 89; /*error: invalid keyword size*/ + error = zlib_compress(&compressed, &compressedsize, + info->iccp_profile, info->iccp_profile_size, zlibsettings); + if(!error) { + size_t size = keysize + 2 + compressedsize; + error = lodepng_chunk_init(&chunk, out, size, "iCCP"); + } + if(!error) { + lodepng_memcpy(chunk + 8, info->iccp_name, keysize); + chunk[8 + keysize] = 0; /*null termination char*/ + chunk[9 + keysize] = 0; /*compression method: 0*/ + lodepng_memcpy(chunk + 10 + keysize, compressed, compressedsize); + lodepng_chunk_generate_crc(chunk); + } + + lodepng_free(compressed); + return error; +} + +static unsigned addChunk_eXIf(ucvector* out, const LodePNGInfo* info) { + return lodepng_chunk_createv(out, info->exif_size, "eXIf", info->exif); +} + +static unsigned addChunk_sBIT(ucvector* out, const LodePNGInfo* info) { + unsigned bitdepth = (info->color.colortype == LCT_PALETTE) ? 8 : info->color.bitdepth; + unsigned char* chunk = 0; + if(info->color.colortype == LCT_GREY) { + if(info->sbit_r == 0 || info->sbit_r > bitdepth) return 115; + CERROR_TRY_RETURN(lodepng_chunk_init(&chunk, out, 1, "sBIT")); + chunk[8] = info->sbit_r; + } else if(info->color.colortype == LCT_RGB || info->color.colortype == LCT_PALETTE) { + if(info->sbit_r == 0 || info->sbit_g == 0 || info->sbit_b == 0) return 115; + if(info->sbit_r > bitdepth || info->sbit_g > bitdepth || info->sbit_b > bitdepth) return 115; + CERROR_TRY_RETURN(lodepng_chunk_init(&chunk, out, 3, "sBIT")); + chunk[8] = info->sbit_r; + chunk[9] = info->sbit_g; + chunk[10] = info->sbit_b; + } else if(info->color.colortype == LCT_GREY_ALPHA) { + if(info->sbit_r == 0 || info->sbit_a == 0) return 115; + if(info->sbit_r > bitdepth || info->sbit_a > bitdepth) return 115; + CERROR_TRY_RETURN(lodepng_chunk_init(&chunk, out, 2, "sBIT")); + chunk[8] = info->sbit_r; + chunk[9] = info->sbit_a; + } else if(info->color.colortype == LCT_RGBA) { + if(info->sbit_r == 0 || info->sbit_g == 0 || info->sbit_b == 0 || info->sbit_a == 0 || + info->sbit_r > bitdepth || info->sbit_g > bitdepth || + info->sbit_b > bitdepth || info->sbit_a > bitdepth) { + return 115; + } + CERROR_TRY_RETURN(lodepng_chunk_init(&chunk, out, 4, "sBIT")); + chunk[8] = info->sbit_r; + chunk[9] = info->sbit_g; + chunk[10] = info->sbit_b; + chunk[11] = info->sbit_a; + } + if(chunk) lodepng_chunk_generate_crc(chunk); + return 0; +} + +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ + +static void filterScanline(unsigned char* out, const unsigned char* scanline, const unsigned char* prevline, + size_t length, size_t bytewidth, unsigned char filterType) { + size_t i; + switch(filterType) { + case 0: /*None*/ + for(i = 0; i != length; ++i) out[i] = scanline[i]; + break; + case 1: /*Sub*/ + for(i = 0; i != bytewidth; ++i) out[i] = scanline[i]; + for(i = bytewidth; i < length; ++i) out[i] = scanline[i] - scanline[i - bytewidth]; + break; + case 2: /*Up*/ + if(prevline) { + for(i = 0; i != length; ++i) out[i] = scanline[i] - prevline[i]; + } else { + for(i = 0; i != length; ++i) out[i] = scanline[i]; + } + break; + case 3: /*Average*/ + if(prevline) { + for(i = 0; i != bytewidth; ++i) out[i] = scanline[i] - (prevline[i] >> 1); + for(i = bytewidth; i < length; ++i) out[i] = scanline[i] - ((scanline[i - bytewidth] + prevline[i]) >> 1); + } else { + for(i = 0; i != bytewidth; ++i) out[i] = scanline[i]; + for(i = bytewidth; i < length; ++i) out[i] = scanline[i] - (scanline[i - bytewidth] >> 1); + } + break; + case 4: /*Paeth*/ + if(prevline) { + /*paethPredictor(0, prevline[i], 0) is always prevline[i]*/ + for(i = 0; i != bytewidth; ++i) out[i] = (scanline[i] - prevline[i]); + for(i = bytewidth; i < length; ++i) { + out[i] = (scanline[i] - paethPredictor(scanline[i - bytewidth], prevline[i], prevline[i - bytewidth])); + } + } else { + for(i = 0; i != bytewidth; ++i) out[i] = scanline[i]; + /*paethPredictor(scanline[i - bytewidth], 0, 0) is always scanline[i - bytewidth]*/ + for(i = bytewidth; i < length; ++i) out[i] = (scanline[i] - scanline[i - bytewidth]); + } + break; + default: return; /*invalid filter type given*/ + } +} + +/* integer binary logarithm, max return value is 31 */ +static size_t ilog2(size_t i) { + size_t result = 0; + if(i >= 65536) { result += 16; i >>= 16; } + if(i >= 256) { result += 8; i >>= 8; } + if(i >= 16) { result += 4; i >>= 4; } + if(i >= 4) { result += 2; i >>= 2; } + if(i >= 2) { result += 1; /*i >>= 1;*/ } + return result; +} + +/* integer approximation for i * log2(i), helper function for LFS_ENTROPY */ +static size_t ilog2i(size_t i) { + size_t l; + if(i == 0) return 0; + l = ilog2(i); + /* approximate i*log2(i): l is integer logarithm, ((i - (1u << l)) << 1u) + linearly approximates the missing fractional part multiplied by i */ + return i * l + ((i - (((size_t)1) << l)) << 1u); +} + +static unsigned filter(unsigned char* out, const unsigned char* in, unsigned w, unsigned h, + const LodePNGColorMode* color, const LodePNGEncoderSettings* settings) { + /* + For PNG filter method 0 + out must be a buffer with as size: h + (w * h * bpp + 7u) / 8u, because there are + the scanlines with 1 extra byte per scanline + */ + + unsigned bpp = lodepng_get_bpp(color); + /*the width of a scanline in bytes, not including the filter type*/ + size_t linebytes = lodepng_get_raw_size_idat(w, 1, bpp) - 1u; + + /*bytewidth is used for filtering, is 1 when bpp < 8, number of bytes per pixel otherwise*/ + size_t bytewidth = (bpp + 7u) / 8u; + const unsigned char* prevline = 0; + unsigned x, y; + unsigned error = 0; + LodePNGFilterStrategy strategy = settings->filter_strategy; + + /* + There is a heuristic called the minimum sum of absolute differences heuristic, suggested by the PNG standard: + * If the image type is Palette, or the bit depth is smaller than 8, then do not filter the image (i.e. + use fixed filtering, with the filter None). + * (The other case) If the image type is Grayscale or RGB (with or without Alpha), and the bit depth is + not smaller than 8, then use adaptive filtering heuristic as follows: independently for each row, apply + all five filters and select the filter that produces the smallest sum of absolute values per row. + This heuristic is used if filter strategy is LFS_MINSUM and filter_palette_zero is true. + + If filter_palette_zero is true and filter_strategy is not LFS_MINSUM, the above heuristic is followed, + but for "the other case", whatever strategy filter_strategy is set to instead of the minimum sum + heuristic is used. + */ + if(settings->filter_palette_zero && + (color->colortype == LCT_PALETTE || color->bitdepth < 8)) strategy = LFS_ZERO; + + if(bpp == 0) return 31; /*error: invalid color type*/ + + if(strategy >= LFS_ZERO && strategy <= LFS_FOUR) { + unsigned char type = (unsigned char)strategy; + for(y = 0; y != h; ++y) { + size_t outindex = (1 + linebytes) * y; /*the extra filterbyte added to each row*/ + size_t inindex = linebytes * y; + out[outindex] = type; /*filter type byte*/ + filterScanline(&out[outindex + 1], &in[inindex], prevline, linebytes, bytewidth, type); + prevline = &in[inindex]; + } + } else if(strategy == LFS_MINSUM) { + /*adaptive filtering*/ + unsigned char* attempt[5]; /*five filtering attempts, one for each filter type*/ + size_t smallest = 0; + unsigned char type, bestType = 0; + + for(type = 0; type != 5; ++type) { + attempt[type] = (unsigned char*)lodepng_malloc(linebytes); + if(!attempt[type]) error = 83; /*alloc fail*/ + } + + if(!error) { + for(y = 0; y != h; ++y) { + /*try the 5 filter types*/ + for(type = 0; type != 5; ++type) { + size_t sum = 0; + filterScanline(attempt[type], &in[y * linebytes], prevline, linebytes, bytewidth, type); + + /*calculate the sum of the result*/ + if(type == 0) { + for(x = 0; x != linebytes; ++x) sum += (unsigned char)(attempt[type][x]); + } else { + for(x = 0; x != linebytes; ++x) { + /*For differences, each byte should be treated as signed, values above 127 are negative + (converted to signed char). Filtertype 0 isn't a difference though, so use unsigned there. + This means filtertype 0 is almost never chosen, but that is justified.*/ + unsigned char s = attempt[type][x]; + sum += s < 128 ? s : (255U - s); + } + } + + /*check if this is smallest sum (or if type == 0 it's the first case so always store the values)*/ + if(type == 0 || sum < smallest) { + bestType = type; + smallest = sum; + } + } + + prevline = &in[y * linebytes]; + + /*now fill the out values*/ + out[y * (linebytes + 1)] = bestType; /*the first byte of a scanline will be the filter type*/ + for(x = 0; x != linebytes; ++x) out[y * (linebytes + 1) + 1 + x] = attempt[bestType][x]; + } + } + + for(type = 0; type != 5; ++type) lodepng_free(attempt[type]); + } else if(strategy == LFS_ENTROPY) { + unsigned char* attempt[5]; /*five filtering attempts, one for each filter type*/ + size_t bestSum = 0; + unsigned type, bestType = 0; + unsigned count[256]; + + for(type = 0; type != 5; ++type) { + attempt[type] = (unsigned char*)lodepng_malloc(linebytes); + if(!attempt[type]) error = 83; /*alloc fail*/ + } + + if(!error) { + for(y = 0; y != h; ++y) { + /*try the 5 filter types*/ + for(type = 0; type != 5; ++type) { + size_t sum = 0; + filterScanline(attempt[type], &in[y * linebytes], prevline, linebytes, bytewidth, type); + lodepng_memset(count, 0, 256 * sizeof(*count)); + for(x = 0; x != linebytes; ++x) ++count[attempt[type][x]]; + ++count[type]; /*the filter type itself is part of the scanline*/ + for(x = 0; x != 256; ++x) { + sum += ilog2i(count[x]); + } + /*check if this is smallest sum (or if type == 0 it's the first case so always store the values)*/ + if(type == 0 || sum > bestSum) { + bestType = type; + bestSum = sum; + } + } + + prevline = &in[y * linebytes]; + + /*now fill the out values*/ + out[y * (linebytes + 1)] = bestType; /*the first byte of a scanline will be the filter type*/ + for(x = 0; x != linebytes; ++x) out[y * (linebytes + 1) + 1 + x] = attempt[bestType][x]; + } + } + + for(type = 0; type != 5; ++type) lodepng_free(attempt[type]); + } else if(strategy == LFS_PREDEFINED) { + for(y = 0; y != h; ++y) { + size_t outindex = (1 + linebytes) * y; /*the extra filterbyte added to each row*/ + size_t inindex = linebytes * y; + unsigned char type = settings->predefined_filters[y]; + out[outindex] = type; /*filter type byte*/ + filterScanline(&out[outindex + 1], &in[inindex], prevline, linebytes, bytewidth, type); + prevline = &in[inindex]; + } + } else if(strategy == LFS_BRUTE_FORCE) { + /*brute force filter chooser. + deflate the scanline after every filter attempt to see which one deflates best. + This is very slow and gives only slightly smaller, sometimes even larger, result*/ + size_t size[5]; + unsigned char* attempt[5]; /*five filtering attempts, one for each filter type*/ + size_t smallest = 0; + unsigned type = 0, bestType = 0; + unsigned char* dummy; + LodePNGCompressSettings zlibsettings; + lodepng_memcpy(&zlibsettings, &settings->zlibsettings, sizeof(LodePNGCompressSettings)); + /*use fixed tree on the attempts so that the tree is not adapted to the filtertype on purpose, + to simulate the true case where the tree is the same for the whole image. Sometimes it gives + better result with dynamic tree anyway. Using the fixed tree sometimes gives worse, but in rare + cases better compression. It does make this a bit less slow, so it's worth doing this.*/ + zlibsettings.btype = 1; + /*a custom encoder likely doesn't read the btype setting and is optimized for complete PNG + images only, so disable it*/ + zlibsettings.custom_zlib = 0; + zlibsettings.custom_deflate = 0; + for(type = 0; type != 5; ++type) { + attempt[type] = (unsigned char*)lodepng_malloc(linebytes); + if(!attempt[type]) error = 83; /*alloc fail*/ + } + if(!error) { + for(y = 0; y != h; ++y) /*try the 5 filter types*/ { + for(type = 0; type != 5; ++type) { + unsigned testsize = (unsigned)linebytes; + /*if(testsize > 8) testsize /= 8;*/ /*it already works good enough by testing a part of the row*/ + + filterScanline(attempt[type], &in[y * linebytes], prevline, linebytes, bytewidth, type); + size[type] = 0; + dummy = 0; + zlib_compress(&dummy, &size[type], attempt[type], testsize, &zlibsettings); + lodepng_free(dummy); + /*check if this is smallest size (or if type == 0 it's the first case so always store the values)*/ + if(type == 0 || size[type] < smallest) { + bestType = type; + smallest = size[type]; + } + } + prevline = &in[y * linebytes]; + out[y * (linebytes + 1)] = bestType; /*the first byte of a scanline will be the filter type*/ + for(x = 0; x != linebytes; ++x) out[y * (linebytes + 1) + 1 + x] = attempt[bestType][x]; + } + } + for(type = 0; type != 5; ++type) lodepng_free(attempt[type]); + } + else return 88; /* unknown filter strategy */ + + return error; +} + +static void addPaddingBits(unsigned char* out, const unsigned char* in, + size_t olinebits, size_t ilinebits, unsigned h) { + /*The opposite of the removePaddingBits function + olinebits must be >= ilinebits*/ + unsigned y; + size_t diff = olinebits - ilinebits; + size_t obp = 0, ibp = 0; /*bit pointers*/ + for(y = 0; y != h; ++y) { + size_t x; + for(x = 0; x < ilinebits; ++x) { + unsigned char bit = readBitFromReversedStream(&ibp, in); + setBitOfReversedStream(&obp, out, bit); + } + /*obp += diff; --> no, fill in some value in the padding bits too, to avoid + "Use of uninitialised value of size ###" warning from valgrind*/ + for(x = 0; x != diff; ++x) setBitOfReversedStream(&obp, out, 0); + } +} + +/* +in: non-interlaced image with size w*h +out: the same pixels, but re-ordered according to PNG's Adam7 interlacing, with + no padding bits between scanlines, but between reduced images so that each + reduced image starts at a byte. +bpp: bits per pixel +there are no padding bits, not between scanlines, not between reduced images +in has the following size in bits: w * h * bpp. +out is possibly bigger due to padding bits between reduced images +NOTE: comments about padding bits are only relevant if bpp < 8 +*/ +static void Adam7_interlace(unsigned char* out, const unsigned char* in, unsigned w, unsigned h, unsigned bpp) { + unsigned passw[7], passh[7]; + size_t filter_passstart[8], padded_passstart[8], passstart[8]; + unsigned i; + + Adam7_getpassvalues(passw, passh, filter_passstart, padded_passstart, passstart, w, h, bpp); + + if(bpp >= 8) { + for(i = 0; i != 7; ++i) { + unsigned x, y, b; + size_t bytewidth = bpp / 8u; + for(y = 0; y < passh[i]; ++y) + for(x = 0; x < passw[i]; ++x) { + size_t pixelinstart = ((ADAM7_IY[i] + y * ADAM7_DY[i]) * w + ADAM7_IX[i] + x * ADAM7_DX[i]) * bytewidth; + size_t pixeloutstart = passstart[i] + (y * passw[i] + x) * bytewidth; + for(b = 0; b < bytewidth; ++b) { + out[pixeloutstart + b] = in[pixelinstart + b]; + } + } + } + } else /*bpp < 8: Adam7 with pixels < 8 bit is a bit trickier: with bit pointers*/ { + for(i = 0; i != 7; ++i) { + unsigned x, y, b; + unsigned ilinebits = bpp * passw[i]; + unsigned olinebits = bpp * w; + size_t obp, ibp; /*bit pointers (for out and in buffer)*/ + for(y = 0; y < passh[i]; ++y) + for(x = 0; x < passw[i]; ++x) { + ibp = (ADAM7_IY[i] + y * ADAM7_DY[i]) * olinebits + (ADAM7_IX[i] + x * ADAM7_DX[i]) * bpp; + obp = (8 * passstart[i]) + (y * ilinebits + x * bpp); + for(b = 0; b < bpp; ++b) { + unsigned char bit = readBitFromReversedStream(&ibp, in); + setBitOfReversedStream(&obp, out, bit); + } + } + } + } +} + +/*out must be buffer big enough to contain uncompressed IDAT chunk data, and in must contain the full image. +return value is error**/ +static unsigned preProcessScanlines(unsigned char** out, size_t* outsize, const unsigned char* in, + unsigned w, unsigned h, + const LodePNGInfo* info_png, const LodePNGEncoderSettings* settings) { + /* + This function converts the pure 2D image with the PNG's colortype, into filtered-padded-interlaced data. Steps: + *) if no Adam7: 1) add padding bits (= possible extra bits per scanline if bpp < 8) 2) filter + *) if adam7: 1) Adam7_interlace 2) 7x add padding bits 3) 7x filter + */ + size_t bpp = lodepng_get_bpp(&info_png->color); + unsigned error = 0; + if(info_png->interlace_method == 0) { + /*image size plus an extra byte per scanline + possible padding bits*/ + *outsize = (size_t)h + ((size_t)h * (((size_t)w * bpp + 7u) / 8u)); + *out = (unsigned char*)lodepng_malloc(*outsize); + if(!(*out) && (*outsize)) error = 83; /*alloc fail*/ + + if(!error) { + /*non multiple of 8 bits per scanline, padding bits needed per scanline*/ + if(bpp < 8 && (size_t)w * bpp != (((size_t)w * bpp + 7u) / 8u) * 8u) { + unsigned char* padded = (unsigned char*)lodepng_malloc(h * ((w * bpp + 7u) / 8u)); + if(!padded) error = 83; /*alloc fail*/ + if(!error) { + addPaddingBits(padded, in, (((size_t)w * bpp + 7u) / 8u) * 8u, (size_t)w * bpp, h); + error = filter(*out, padded, w, h, &info_png->color, settings); + } + lodepng_free(padded); + } else { + /*we can immediately filter into the out buffer, no other steps needed*/ + error = filter(*out, in, w, h, &info_png->color, settings); + } + } + } else /*interlace_method is 1 (Adam7)*/ { + unsigned passw[7], passh[7]; + size_t filter_passstart[8], padded_passstart[8], passstart[8]; + unsigned char* adam7; + + Adam7_getpassvalues(passw, passh, filter_passstart, padded_passstart, passstart, w, h, (unsigned)bpp); + + *outsize = filter_passstart[7]; /*image size plus an extra byte per scanline + possible padding bits*/ + *out = (unsigned char*)lodepng_malloc(*outsize); + if(!(*out)) error = 83; /*alloc fail*/ + + adam7 = (unsigned char*)lodepng_malloc(passstart[7]); + if(!adam7 && passstart[7]) error = 83; /*alloc fail*/ + + if(!error) { + unsigned i; + + Adam7_interlace(adam7, in, w, h, (unsigned)bpp); + for(i = 0; i != 7; ++i) { + if(bpp < 8) { + unsigned char* padded = (unsigned char*)lodepng_malloc(padded_passstart[i + 1] - padded_passstart[i]); + if(!padded) ERROR_BREAK(83); /*alloc fail*/ + addPaddingBits(padded, &adam7[passstart[i]], + (((size_t)passw[i] * bpp + 7u) / 8u) * 8u, (size_t)passw[i] * bpp, passh[i]); + error = filter(&(*out)[filter_passstart[i]], padded, + passw[i], passh[i], &info_png->color, settings); + lodepng_free(padded); + } else { + error = filter(&(*out)[filter_passstart[i]], &adam7[padded_passstart[i]], + passw[i], passh[i], &info_png->color, settings); + } + + if(error) break; + } + } + + lodepng_free(adam7); + } + + return error; +} + +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS +static unsigned addUnknownChunks(ucvector* out, unsigned char* data, size_t datasize) { + unsigned char* inchunk = data; + while((size_t)(inchunk - data) < datasize) { + CERROR_TRY_RETURN(lodepng_chunk_append(&out->data, &out->size, inchunk)); + out->allocsize = out->size; /*fix the allocsize again*/ + inchunk = lodepng_chunk_next(inchunk, data + datasize); + } + return 0; +} + +static unsigned isGrayICCProfile(const unsigned char* profile, unsigned size) { + /* + It is a gray profile if bytes 16-19 are "GRAY", rgb profile if bytes 16-19 + are "RGB ". We do not perform any full parsing of the ICC profile here, other + than check those 4 bytes to grayscale profile. Other than that, validity of + the profile is not checked. This is needed only because the PNG specification + requires using a non-gray color model if there is an ICC profile with "RGB " + (sadly limiting compression opportunities if the input data is grayscale RGB + data), and requires using a gray color model if it is "GRAY". + */ + if(size < 20) return 0; + return profile[16] == 'G' && profile[17] == 'R' && profile[18] == 'A' && profile[19] == 'Y'; +} + +static unsigned isRGBICCProfile(const unsigned char* profile, unsigned size) { + /* See comment in isGrayICCProfile*/ + if(size < 20) return 0; + return profile[16] == 'R' && profile[17] == 'G' && profile[18] == 'B' && profile[19] == ' '; +} +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ + +unsigned lodepng_encode(unsigned char** out, size_t* outsize, + const unsigned char* image, unsigned w, unsigned h, + LodePNGState* state) { + unsigned char* data = 0; /*uncompressed version of the IDAT chunk data*/ + size_t datasize = 0; + ucvector outv = ucvector_init(NULL, 0); + LodePNGInfo info; + const LodePNGInfo* info_png = &state->info_png; + LodePNGColorMode auto_color; + + lodepng_info_init(&info); + lodepng_color_mode_init(&auto_color); + + /*provide some proper output values if error will happen*/ + *out = 0; + *outsize = 0; + state->error = 0; + + /*check input values validity*/ + if((info_png->color.colortype == LCT_PALETTE || state->encoder.force_palette) + && (info_png->color.palettesize == 0 || info_png->color.palettesize > 256)) { + /*this error is returned even if auto_convert is enabled and thus encoder could + generate the palette by itself: while allowing this could be possible in theory, + it may complicate the code or edge cases, and always requiring to give a palette + when setting this color type is a simpler contract*/ + state->error = 68; /*invalid palette size, it is only allowed to be 1-256*/ + goto cleanup; + } + if(state->encoder.zlibsettings.btype > 2) { + state->error = 61; /*error: invalid btype*/ + goto cleanup; + } + if(info_png->interlace_method > 1) { + state->error = 71; /*error: invalid interlace mode*/ + goto cleanup; + } + state->error = checkColorValidity(info_png->color.colortype, info_png->color.bitdepth); + if(state->error) goto cleanup; /*error: invalid color type given*/ + state->error = checkColorValidity(state->info_raw.colortype, state->info_raw.bitdepth); + if(state->error) goto cleanup; /*error: invalid color type given*/ + + /* color convert and compute scanline filter types */ + lodepng_info_copy(&info, &state->info_png); + if(state->encoder.auto_convert) { + LodePNGColorStats stats; + unsigned allow_convert = 1; + lodepng_color_stats_init(&stats); +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + if(info_png->iccp_defined && + isGrayICCProfile(info_png->iccp_profile, info_png->iccp_profile_size)) { + /*the PNG specification does not allow to use palette with a GRAY ICC profile, even + if the palette has only gray colors, so disallow it.*/ + stats.allow_palette = 0; + } + if(info_png->iccp_defined && + isRGBICCProfile(info_png->iccp_profile, info_png->iccp_profile_size)) { + /*the PNG specification does not allow to use grayscale color with RGB ICC profile, so disallow gray.*/ + stats.allow_greyscale = 0; + } +#endif /* LODEPNG_COMPILE_ANCILLARY_CHUNKS */ + state->error = lodepng_compute_color_stats(&stats, image, w, h, &state->info_raw); + if(state->error) goto cleanup; +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + if(info_png->background_defined) { + /*the background chunk's color must be taken into account as well*/ + unsigned r = 0, g = 0, b = 0; + LodePNGColorMode mode16 = lodepng_color_mode_make(LCT_RGB, 16); + lodepng_convert_rgb(&r, &g, &b, + info_png->background_r, info_png->background_g, info_png->background_b, &mode16, &info_png->color); + state->error = lodepng_color_stats_add(&stats, r, g, b, 65535); + if(state->error) goto cleanup; + } +#endif /* LODEPNG_COMPILE_ANCILLARY_CHUNKS */ + state->error = auto_choose_color(&auto_color, &state->info_raw, &stats); + if(state->error) goto cleanup; +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + if(info_png->sbit_defined) { + /*if sbit is defined, due to strict requirements of which sbit values can be present for which color modes, + auto_convert can't be done in many cases. However, do support a few cases here. + TODO: more conversions may be possible, and it may also be possible to get a more appropriate color type out of + auto_choose_color if knowledge about sbit is used beforehand + */ + unsigned sbit_max = LODEPNG_MAX(LODEPNG_MAX(LODEPNG_MAX(info_png->sbit_r, info_png->sbit_g), + info_png->sbit_b), info_png->sbit_a); + unsigned equal = (!info_png->sbit_g || info_png->sbit_g == info_png->sbit_r) + && (!info_png->sbit_b || info_png->sbit_b == info_png->sbit_r) + && (!info_png->sbit_a || info_png->sbit_a == info_png->sbit_r); + allow_convert = 0; + if(info.color.colortype == LCT_PALETTE && + auto_color.colortype == LCT_PALETTE) { + /* input and output are palette, and in this case it may happen that palette data is + expected to be copied from info_raw into the info_png */ + allow_convert = 1; + } + /*going from 8-bit RGB to palette (or 16-bit as long as sbit_max <= 8) is possible + since both are 8-bit RGB for sBIT's purposes*/ + if(info.color.colortype == LCT_RGB && + auto_color.colortype == LCT_PALETTE && sbit_max <= 8) { + allow_convert = 1; + } + /*going from 8-bit RGBA to palette is also ok but only if sbit_a is exactly 8*/ + if(info.color.colortype == LCT_RGBA && auto_color.colortype == LCT_PALETTE && + info_png->sbit_a == 8 && sbit_max <= 8) { + allow_convert = 1; + } + /*going from 16-bit RGB(A) to 8-bit RGB(A) is ok if all sbit values are <= 8*/ + if((info.color.colortype == LCT_RGB || info.color.colortype == LCT_RGBA) && info.color.bitdepth == 16 && + auto_color.colortype == info.color.colortype && auto_color.bitdepth == 8 && + sbit_max <= 8) { + allow_convert = 1; + } + /*going to less channels is ok if all bit values are equal (all possible values in sbit, + as well as the chosen bitdepth of the result). Due to how auto_convert works, + we already know that auto_color.colortype has less than or equal amount of channels than + info.colortype. Palette is not used here. This conversion is not allowed if + info_png->sbit_r < auto_color.bitdepth, because specifically for alpha, non-presence of + an sbit value heavily implies that alpha's bit depth is equal to the PNG bit depth (rather + than the bit depths set in the r, g and b sbit values, by how the PNG specification describes + handling tRNS chunk case with sBIT), so be conservative here about ignoring user input.*/ + if(info.color.colortype != LCT_PALETTE && auto_color.colortype != LCT_PALETTE && + equal && info_png->sbit_r == auto_color.bitdepth) { + allow_convert = 1; + } + } +#endif + if(state->encoder.force_palette) { + if(info.color.colortype != LCT_GREY && info.color.colortype != LCT_GREY_ALPHA && + (auto_color.colortype == LCT_GREY || auto_color.colortype == LCT_GREY_ALPHA)) { + /*user speficially forced a PLTE palette, so cannot convert to grayscale types because + the PNG specification only allows writing a suggested palette in PLTE for truecolor types*/ + allow_convert = 0; + } + } + if(allow_convert) { + lodepng_color_mode_copy(&info.color, &auto_color); +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + /*also convert the background chunk*/ + if(info_png->background_defined) { + if(lodepng_convert_rgb(&info.background_r, &info.background_g, &info.background_b, + info_png->background_r, info_png->background_g, info_png->background_b, &info.color, &info_png->color)) { + state->error = 104; + goto cleanup; + } + } +#endif /* LODEPNG_COMPILE_ANCILLARY_CHUNKS */ + } + } +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + if(info_png->iccp_defined) { + unsigned gray_icc = isGrayICCProfile(info_png->iccp_profile, info_png->iccp_profile_size); + unsigned rgb_icc = isRGBICCProfile(info_png->iccp_profile, info_png->iccp_profile_size); + unsigned gray_png = info.color.colortype == LCT_GREY || info.color.colortype == LCT_GREY_ALPHA; + if(!gray_icc && !rgb_icc) { + state->error = 100; /* Disallowed profile color type for PNG */ + goto cleanup; + } + if(gray_icc != gray_png) { + /*Not allowed to use RGB/RGBA/palette with GRAY ICC profile or vice versa, + or in case of auto_convert, it wasn't possible to find appropriate model*/ + state->error = state->encoder.auto_convert ? 102 : 101; + goto cleanup; + } + } +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ + if(!lodepng_color_mode_equal(&state->info_raw, &info.color)) { + unsigned char* converted; + size_t size = ((size_t)w * (size_t)h * (size_t)lodepng_get_bpp(&info.color) + 7u) / 8u; + + converted = (unsigned char*)lodepng_malloc(size); + if(!converted && size) state->error = 83; /*alloc fail*/ + if(!state->error) { + state->error = lodepng_convert(converted, image, &info.color, &state->info_raw, w, h); + } + if(!state->error) { + state->error = preProcessScanlines(&data, &datasize, converted, w, h, &info, &state->encoder); + } + lodepng_free(converted); + if(state->error) goto cleanup; + } else { + state->error = preProcessScanlines(&data, &datasize, image, w, h, &info, &state->encoder); + if(state->error) goto cleanup; + } + + /* output all PNG chunks */ { +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + size_t i; +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ + /*write signature and chunks*/ + state->error = writeSignature(&outv); + if(state->error) goto cleanup; + /*IHDR*/ + state->error = addChunk_IHDR(&outv, w, h, info.color.colortype, info.color.bitdepth, info.interlace_method); + if(state->error) goto cleanup; +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + /*unknown chunks between IHDR and PLTE*/ + if(info.unknown_chunks_data[0]) { + state->error = addUnknownChunks(&outv, info.unknown_chunks_data[0], info.unknown_chunks_size[0]); + if(state->error) goto cleanup; + } + /*color profile chunks must come before PLTE */ + if(info.iccp_defined) { + state->error = addChunk_iCCP(&outv, &info, &state->encoder.zlibsettings); + if(state->error) goto cleanup; + } + if(info.srgb_defined) { + state->error = addChunk_sRGB(&outv, &info); + if(state->error) goto cleanup; + } + if(info.gama_defined) { + state->error = addChunk_gAMA(&outv, &info); + if(state->error) goto cleanup; + } + if(info.chrm_defined) { + state->error = addChunk_cHRM(&outv, &info); + if(state->error) goto cleanup; + } + if(info_png->sbit_defined) { + state->error = addChunk_sBIT(&outv, &info); + if(state->error) goto cleanup; + } + if(info.exif_defined) { + state->error = addChunk_eXIf(&outv, &info); + if(state->error) goto cleanup; + } +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ + /*PLTE*/ + if(info.color.colortype == LCT_PALETTE) { + state->error = addChunk_PLTE(&outv, &info.color); + if(state->error) goto cleanup; + } + if(state->encoder.force_palette && (info.color.colortype == LCT_RGB || info.color.colortype == LCT_RGBA)) { + /*force_palette means: write suggested palette for truecolor in PLTE chunk*/ + state->error = addChunk_PLTE(&outv, &info.color); + if(state->error) goto cleanup; + } + /*tRNS (this will only add if when necessary) */ + state->error = addChunk_tRNS(&outv, &info.color); + if(state->error) goto cleanup; +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + /*bKGD (must come between PLTE and the IDAt chunks*/ + if(info.background_defined) { + state->error = addChunk_bKGD(&outv, &info); + if(state->error) goto cleanup; + } + /*pHYs (must come before the IDAT chunks)*/ + if(info.phys_defined) { + state->error = addChunk_pHYs(&outv, &info); + if(state->error) goto cleanup; + } + + /*unknown chunks between PLTE and IDAT*/ + if(info.unknown_chunks_data[1]) { + state->error = addUnknownChunks(&outv, info.unknown_chunks_data[1], info.unknown_chunks_size[1]); + if(state->error) goto cleanup; + } +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ + /*IDAT (multiple IDAT chunks must be consecutive)*/ + state->error = addChunk_IDAT(&outv, data, datasize, &state->encoder.zlibsettings); + if(state->error) goto cleanup; +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + /*tIME*/ + if(info.time_defined) { + state->error = addChunk_tIME(&outv, &info.time); + if(state->error) goto cleanup; + } + /*tEXt and/or zTXt*/ + for(i = 0; i != info.text_num; ++i) { + if(lodepng_strlen(info.text_keys[i]) > 79) { + state->error = 66; /*text chunk too large*/ + goto cleanup; + } + if(lodepng_strlen(info.text_keys[i]) < 1) { + state->error = 67; /*text chunk too small*/ + goto cleanup; + } + if(state->encoder.text_compression) { + state->error = addChunk_zTXt(&outv, info.text_keys[i], info.text_strings[i], &state->encoder.zlibsettings); + if(state->error) goto cleanup; + } else { + state->error = addChunk_tEXt(&outv, info.text_keys[i], info.text_strings[i]); + if(state->error) goto cleanup; + } + } + /*LodePNG version id in text chunk*/ + if(state->encoder.add_id) { + unsigned already_added_id_text = 0; + for(i = 0; i != info.text_num; ++i) { + const char* k = info.text_keys[i]; + /* Could use strcmp, but we're not calling or reimplementing this C library function for this use only */ + if(k[0] == 'L' && k[1] == 'o' && k[2] == 'd' && k[3] == 'e' && + k[4] == 'P' && k[5] == 'N' && k[6] == 'G' && k[7] == '\0') { + already_added_id_text = 1; + break; + } + } + if(already_added_id_text == 0) { + state->error = addChunk_tEXt(&outv, "LodePNG", LODEPNG_VERSION_STRING); /*it's shorter as tEXt than as zTXt chunk*/ + if(state->error) goto cleanup; + } + } + /*iTXt*/ + for(i = 0; i != info.itext_num; ++i) { + if(lodepng_strlen(info.itext_keys[i]) > 79) { + state->error = 66; /*text chunk too large*/ + goto cleanup; + } + if(lodepng_strlen(info.itext_keys[i]) < 1) { + state->error = 67; /*text chunk too small*/ + goto cleanup; + } + state->error = addChunk_iTXt( + &outv, state->encoder.text_compression, + info.itext_keys[i], info.itext_langtags[i], info.itext_transkeys[i], info.itext_strings[i], + &state->encoder.zlibsettings); + if(state->error) goto cleanup; + } + + /*unknown chunks between IDAT and IEND*/ + if(info.unknown_chunks_data[2]) { + state->error = addUnknownChunks(&outv, info.unknown_chunks_data[2], info.unknown_chunks_size[2]); + if(state->error) goto cleanup; + } +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ + state->error = addChunk_IEND(&outv); + if(state->error) goto cleanup; + } + +cleanup: + lodepng_info_cleanup(&info); + lodepng_free(data); + lodepng_color_mode_cleanup(&auto_color); + + /*instead of cleaning the vector up, give it to the output*/ + *out = outv.data; + *outsize = outv.size; + + return state->error; +} + +unsigned lodepng_encode_memory(unsigned char** out, size_t* outsize, const unsigned char* image, + unsigned w, unsigned h, LodePNGColorType colortype, unsigned bitdepth) { + unsigned error; + LodePNGState state; + lodepng_state_init(&state); + state.info_raw.colortype = colortype; + state.info_raw.bitdepth = bitdepth; + state.info_png.color.colortype = colortype; + state.info_png.color.bitdepth = bitdepth; + lodepng_encode(out, outsize, image, w, h, &state); + error = state.error; + lodepng_state_cleanup(&state); + return error; +} + +unsigned lodepng_encode32(unsigned char** out, size_t* outsize, const unsigned char* image, unsigned w, unsigned h) { + return lodepng_encode_memory(out, outsize, image, w, h, LCT_RGBA, 8); +} + +unsigned lodepng_encode24(unsigned char** out, size_t* outsize, const unsigned char* image, unsigned w, unsigned h) { + return lodepng_encode_memory(out, outsize, image, w, h, LCT_RGB, 8); +} + +#ifdef LODEPNG_COMPILE_DISK +unsigned lodepng_encode_file(const char* filename, const unsigned char* image, unsigned w, unsigned h, + LodePNGColorType colortype, unsigned bitdepth) { + unsigned char* buffer; + size_t buffersize; + unsigned error = lodepng_encode_memory(&buffer, &buffersize, image, w, h, colortype, bitdepth); + if(!error) error = lodepng_save_file(buffer, buffersize, filename); + lodepng_free(buffer); + return error; +} + +unsigned lodepng_encode32_file(const char* filename, const unsigned char* image, unsigned w, unsigned h) { + return lodepng_encode_file(filename, image, w, h, LCT_RGBA, 8); +} + +unsigned lodepng_encode24_file(const char* filename, const unsigned char* image, unsigned w, unsigned h) { + return lodepng_encode_file(filename, image, w, h, LCT_RGB, 8); +} +#endif /*LODEPNG_COMPILE_DISK*/ + +void lodepng_encoder_settings_init(LodePNGEncoderSettings* settings) { + lodepng_compress_settings_init(&settings->zlibsettings); + settings->filter_palette_zero = 1; + settings->filter_strategy = LFS_MINSUM; + settings->auto_convert = 1; + settings->force_palette = 0; + settings->predefined_filters = 0; +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + settings->add_id = 0; + settings->text_compression = 1; +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ +} + +#endif /*LODEPNG_COMPILE_ENCODER*/ +#endif /*LODEPNG_COMPILE_PNG*/ + +#ifdef LODEPNG_COMPILE_ERROR_TEXT +/* +This returns the description of a numerical error code in English. This is also +the documentation of all the error codes. +*/ +const char* lodepng_error_text(unsigned code) { + switch(code) { + case 0: return "no error, everything went ok"; + case 1: return "nothing done yet"; /*the Encoder/Decoder has done nothing yet, error checking makes no sense yet*/ + case 10: return "end of input memory reached without huffman end code"; /*while huffman decoding*/ + case 11: return "error in code tree made it jump outside of huffman tree"; /*while huffman decoding*/ + case 13: return "problem while processing dynamic deflate block"; + case 14: return "problem while processing dynamic deflate block"; + case 15: return "problem while processing dynamic deflate block"; + /*this error could happen if there are only 0 or 1 symbols present in the huffman code:*/ + case 16: return "invalid code while processing dynamic deflate block"; + case 17: return "end of out buffer memory reached while inflating"; + case 18: return "invalid distance code while inflating"; + case 19: return "end of out buffer memory reached while inflating"; + case 20: return "invalid deflate block BTYPE encountered while decoding"; + case 21: return "NLEN is not ones complement of LEN in a deflate block"; + + /*end of out buffer memory reached while inflating: + This can happen if the inflated deflate data is longer than the amount of bytes required to fill up + all the pixels of the image, given the color depth and image dimensions. Something that doesn't + happen in a normal, well encoded, PNG image.*/ + case 22: return "end of out buffer memory reached while inflating"; + case 23: return "end of in buffer memory reached while inflating"; + case 24: return "invalid FCHECK in zlib header"; + case 25: return "invalid compression method in zlib header"; + case 26: return "FDICT encountered in zlib header while it's not used for PNG"; + case 27: return "PNG file is smaller than a PNG header"; + /*Checks the magic file header, the first 8 bytes of the PNG file*/ + case 28: return "incorrect PNG signature, it's no PNG or corrupted"; + case 29: return "first chunk is not the header chunk"; + case 30: return "chunk length too large, chunk broken off at end of file"; + case 31: return "illegal PNG color type or bpp"; + case 32: return "illegal PNG compression method"; + case 33: return "illegal PNG filter method"; + case 34: return "illegal PNG interlace method"; + case 35: return "chunk length of a chunk is too large or the chunk too small"; + case 36: return "illegal PNG filter type encountered"; + case 37: return "illegal bit depth for this color type given"; + case 38: return "the palette is too small or too big"; /*0, or more than 256 colors*/ + case 39: return "tRNS chunk before PLTE or has more entries than palette size"; + case 40: return "tRNS chunk has wrong size for grayscale image"; + case 41: return "tRNS chunk has wrong size for RGB image"; + case 42: return "tRNS chunk appeared while it was not allowed for this color type"; + case 43: return "bKGD chunk has wrong size for palette image"; + case 44: return "bKGD chunk has wrong size for grayscale image"; + case 45: return "bKGD chunk has wrong size for RGB image"; + case 48: return "empty input buffer given to decoder. Maybe caused by non-existing file?"; + case 49: return "jumped past memory while generating dynamic huffman tree"; + case 50: return "jumped past memory while generating dynamic huffman tree"; + case 51: return "jumped past memory while inflating huffman block"; + case 52: return "jumped past memory while inflating"; + case 53: return "size of zlib data too small"; + case 54: return "repeat symbol in tree while there was no value symbol yet"; + /*jumped past tree while generating huffman tree, this could be when the + tree will have more leaves than symbols after generating it out of the + given lengths. They call this an oversubscribed dynamic bit lengths tree in zlib.*/ + case 55: return "jumped past tree while generating huffman tree"; + case 56: return "given output image colortype or bitdepth not supported for color conversion"; + case 57: return "invalid CRC encountered (checking CRC can be disabled)"; + case 58: return "invalid ADLER32 encountered (checking ADLER32 can be disabled)"; + case 59: return "requested color conversion not supported"; + case 60: return "invalid window size given in the settings of the encoder (must be 0-32768)"; + case 61: return "invalid BTYPE given in the settings of the encoder (only 0, 1 and 2 are allowed)"; + /*LodePNG leaves the choice of RGB to grayscale conversion formula to the user.*/ + case 62: return "conversion from color to grayscale not supported"; + /*(2^31-1)*/ + case 63: return "length of a chunk too long, max allowed for PNG is 2147483647 bytes per chunk"; + /*this would result in the inability of a deflated block to ever contain an end code. It must be at least 1.*/ + case 64: return "the length of the END symbol 256 in the Huffman tree is 0"; + case 66: return "the length of a text chunk keyword given to the encoder is longer than the maximum of 79 bytes"; + case 67: return "the length of a text chunk keyword given to the encoder is smaller than the minimum of 1 byte"; + case 68: return "tried to encode a PLTE chunk with a palette that has less than 1 or more than 256 colors"; + case 69: return "unknown chunk type with 'critical' flag encountered by the decoder"; + case 71: return "invalid interlace mode given to encoder (must be 0 or 1)"; + case 72: return "while decoding, invalid compression method encountering in zTXt or iTXt chunk (it must be 0)"; + case 73: return "invalid tIME chunk size"; + case 74: return "invalid pHYs chunk size"; + /*length could be wrong, or data chopped off*/ + case 75: return "no null termination char found while decoding text chunk"; + case 76: return "iTXt chunk too short to contain required bytes"; + case 77: return "integer overflow in buffer size"; + case 78: return "failed to open file for reading"; /*file doesn't exist or couldn't be opened for reading*/ + case 79: return "failed to open file for writing"; + case 80: return "tried creating a tree of 0 symbols"; + case 81: return "lazy matching at pos 0 is impossible"; + case 82: return "color conversion to palette requested while a color isn't in palette, or index out of bounds"; + case 83: return "memory allocation failed"; + case 84: return "given image too small to contain all pixels to be encoded"; + case 86: return "impossible offset in lz77 encoding (internal bug)"; + case 87: return "must provide custom zlib function pointer if LODEPNG_COMPILE_ZLIB is not defined"; + case 88: return "invalid filter strategy given for LodePNGEncoderSettings.filter_strategy"; + case 89: return "text chunk keyword too short or long: must have size 1-79"; + /*the windowsize in the LodePNGCompressSettings. Requiring POT(==> & instead of %) makes encoding 12% faster.*/ + case 90: return "windowsize must be a power of two"; + case 91: return "invalid decompressed idat size"; + case 92: return "integer overflow due to too many pixels"; + case 93: return "zero width or height is invalid"; + case 94: return "header chunk must have a size of 13 bytes"; + case 95: return "integer overflow with combined idat chunk size"; + case 96: return "invalid gAMA chunk size"; + case 97: return "invalid cHRM chunk size"; + case 98: return "invalid sRGB chunk size"; + case 99: return "invalid sRGB rendering intent"; + case 100: return "invalid ICC profile color type, the PNG specification only allows RGB or GRAY"; + case 101: return "PNG specification does not allow RGB ICC profile on gray color types and vice versa"; + case 102: return "not allowed to set grayscale ICC profile with colored pixels by PNG specification"; + case 103: return "invalid palette index in bKGD chunk. Maybe it came before PLTE chunk?"; + case 104: return "invalid bKGD color while encoding (e.g. palette index out of range)"; + case 105: return "integer overflow of bitsize"; + case 106: return "PNG file must have PLTE chunk if color type is palette"; + case 107: return "color convert from palette mode requested without setting the palette data in it"; + case 108: return "tried to add more than 256 values to a palette"; + /*this limit can be configured in LodePNGDecompressSettings*/ + case 109: return "tried to decompress zlib or deflate data larger than desired max_output_size"; + case 110: return "custom zlib or inflate decompression failed"; + case 111: return "custom zlib or deflate compression failed"; + /*max text size limit can be configured in LodePNGDecoderSettings. This error prevents + unreasonable memory consumption when decoding due to impossibly large text sizes.*/ + case 112: return "compressed text unreasonably large"; + /*max ICC size limit can be configured in LodePNGDecoderSettings. This error prevents + unreasonable memory consumption when decoding due to impossibly large ICC profile*/ + case 113: return "ICC profile unreasonably large"; + case 114: return "sBIT chunk has wrong size for the color type of the image"; + case 115: return "sBIT value out of range"; + } + return "unknown error code"; +} +#endif /*LODEPNG_COMPILE_ERROR_TEXT*/ + +/* ////////////////////////////////////////////////////////////////////////// */ +/* ////////////////////////////////////////////////////////////////////////// */ +/* // C++ Wrapper // */ +/* ////////////////////////////////////////////////////////////////////////// */ +/* ////////////////////////////////////////////////////////////////////////// */ + +#ifdef LODEPNG_COMPILE_CPP +namespace lodepng { + +#ifdef LODEPNG_COMPILE_DISK +unsigned load_file(std::vector& buffer, const std::string& filename) { + long size = lodepng_filesize(filename.c_str()); + if(size < 0) return 78; + buffer.resize((size_t)size); + return size == 0 ? 0 : lodepng_buffer_file(&buffer[0], (size_t)size, filename.c_str()); +} + +/*write given buffer to the file, overwriting the file, it doesn't append to it.*/ +unsigned save_file(const std::vector& buffer, const std::string& filename) { + return lodepng_save_file(buffer.empty() ? 0 : &buffer[0], buffer.size(), filename.c_str()); +} +#endif /* LODEPNG_COMPILE_DISK */ + +#ifdef LODEPNG_COMPILE_ZLIB +#ifdef LODEPNG_COMPILE_DECODER +unsigned decompress(std::vector& out, const unsigned char* in, size_t insize, + const LodePNGDecompressSettings& settings) { + unsigned char* buffer = 0; + size_t buffersize = 0; + unsigned error = zlib_decompress(&buffer, &buffersize, 0, in, insize, &settings); + if(buffer) { + out.insert(out.end(), buffer, &buffer[buffersize]); + lodepng_free(buffer); + } + return error; +} + +unsigned decompress(std::vector& out, const std::vector& in, + const LodePNGDecompressSettings& settings) { + return decompress(out, in.empty() ? 0 : &in[0], in.size(), settings); +} +#endif /* LODEPNG_COMPILE_DECODER */ + +#ifdef LODEPNG_COMPILE_ENCODER +unsigned compress(std::vector& out, const unsigned char* in, size_t insize, + const LodePNGCompressSettings& settings) { + unsigned char* buffer = 0; + size_t buffersize = 0; + unsigned error = zlib_compress(&buffer, &buffersize, in, insize, &settings); + if(buffer) { + out.insert(out.end(), buffer, &buffer[buffersize]); + lodepng_free(buffer); + } + return error; +} + +unsigned compress(std::vector& out, const std::vector& in, + const LodePNGCompressSettings& settings) { + return compress(out, in.empty() ? 0 : &in[0], in.size(), settings); +} +#endif /* LODEPNG_COMPILE_ENCODER */ +#endif /* LODEPNG_COMPILE_ZLIB */ + + +#ifdef LODEPNG_COMPILE_PNG + +State::State() { + lodepng_state_init(this); +} + +State::State(const State& other) { + lodepng_state_init(this); + lodepng_state_copy(this, &other); +} + +State::~State() { + lodepng_state_cleanup(this); +} + +State& State::operator=(const State& other) { + lodepng_state_copy(this, &other); + return *this; +} + +#ifdef LODEPNG_COMPILE_DECODER + +unsigned decode(std::vector& out, unsigned& w, unsigned& h, const unsigned char* in, + size_t insize, LodePNGColorType colortype, unsigned bitdepth) { + unsigned char* buffer = 0; + unsigned error = lodepng_decode_memory(&buffer, &w, &h, in, insize, colortype, bitdepth); + if(buffer && !error) { + State state; + state.info_raw.colortype = colortype; + state.info_raw.bitdepth = bitdepth; + size_t buffersize = lodepng_get_raw_size(w, h, &state.info_raw); + out.insert(out.end(), buffer, &buffer[buffersize]); + } + lodepng_free(buffer); + return error; +} + +unsigned decode(std::vector& out, unsigned& w, unsigned& h, + const std::vector& in, LodePNGColorType colortype, unsigned bitdepth) { + return decode(out, w, h, in.empty() ? 0 : &in[0], (unsigned)in.size(), colortype, bitdepth); +} + +unsigned decode(std::vector& out, unsigned& w, unsigned& h, + State& state, + const unsigned char* in, size_t insize) { + unsigned char* buffer = NULL; + unsigned error = lodepng_decode(&buffer, &w, &h, &state, in, insize); + if(buffer && !error) { + size_t buffersize = lodepng_get_raw_size(w, h, &state.info_raw); + out.insert(out.end(), buffer, &buffer[buffersize]); + } + lodepng_free(buffer); + return error; +} + +unsigned decode(std::vector& out, unsigned& w, unsigned& h, + State& state, + const std::vector& in) { + return decode(out, w, h, state, in.empty() ? 0 : &in[0], in.size()); +} + +#ifdef LODEPNG_COMPILE_DISK +unsigned decode(std::vector& out, unsigned& w, unsigned& h, const std::string& filename, + LodePNGColorType colortype, unsigned bitdepth) { + std::vector buffer; + /* safe output values in case error happens */ + w = h = 0; + unsigned error = load_file(buffer, filename); + if(error) return error; + return decode(out, w, h, buffer, colortype, bitdepth); +} +#endif /* LODEPNG_COMPILE_DECODER */ +#endif /* LODEPNG_COMPILE_DISK */ + +#ifdef LODEPNG_COMPILE_ENCODER +unsigned encode(std::vector& out, const unsigned char* in, unsigned w, unsigned h, + LodePNGColorType colortype, unsigned bitdepth) { + unsigned char* buffer; + size_t buffersize; + unsigned error = lodepng_encode_memory(&buffer, &buffersize, in, w, h, colortype, bitdepth); + if(buffer) { + out.insert(out.end(), buffer, &buffer[buffersize]); + lodepng_free(buffer); + } + return error; +} + +unsigned encode(std::vector& out, + const std::vector& in, unsigned w, unsigned h, + LodePNGColorType colortype, unsigned bitdepth) { + if(lodepng_get_raw_size_lct(w, h, colortype, bitdepth) > in.size()) return 84; + return encode(out, in.empty() ? 0 : &in[0], w, h, colortype, bitdepth); +} + +unsigned encode(std::vector& out, + const unsigned char* in, unsigned w, unsigned h, + State& state) { + unsigned char* buffer; + size_t buffersize; + unsigned error = lodepng_encode(&buffer, &buffersize, in, w, h, &state); + if(buffer) { + out.insert(out.end(), buffer, &buffer[buffersize]); + lodepng_free(buffer); + } + return error; +} + +unsigned encode(std::vector& out, + const std::vector& in, unsigned w, unsigned h, + State& state) { + if(lodepng_get_raw_size(w, h, &state.info_raw) > in.size()) return 84; + return encode(out, in.empty() ? 0 : &in[0], w, h, state); +} + +#ifdef LODEPNG_COMPILE_DISK +unsigned encode(const std::string& filename, + const unsigned char* in, unsigned w, unsigned h, + LodePNGColorType colortype, unsigned bitdepth) { + std::vector buffer; + unsigned error = encode(buffer, in, w, h, colortype, bitdepth); + if(!error) error = save_file(buffer, filename); + return error; +} + +unsigned encode(const std::string& filename, + const std::vector& in, unsigned w, unsigned h, + LodePNGColorType colortype, unsigned bitdepth) { + if(lodepng_get_raw_size_lct(w, h, colortype, bitdepth) > in.size()) return 84; + return encode(filename, in.empty() ? 0 : &in[0], w, h, colortype, bitdepth); +} +#endif /* LODEPNG_COMPILE_DISK */ +#endif /* LODEPNG_COMPILE_ENCODER */ +#endif /* LODEPNG_COMPILE_PNG */ +} /* namespace lodepng */ +#endif /*LODEPNG_COMPILE_CPP*/ diff --git a/components/lilka/src/contrib/LodePNG/lodepng.h b/components/lilka/src/contrib/LodePNG/lodepng.h new file mode 100644 index 00000000..5d3500ef --- /dev/null +++ b/components/lilka/src/contrib/LodePNG/lodepng.h @@ -0,0 +1,2095 @@ +/* +LodePNG version 20241215 + +Copyright (c) 2005-2024 Lode Vandevenne + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#ifndef LODEPNG_H +#define LODEPNG_H + +#include /*for size_t*/ + +extern const char* LODEPNG_VERSION_STRING; + +/* +The following #defines are used to create code sections. They can be disabled +to disable code sections, which can give faster compile time and smaller binary. +The "NO_COMPILE" defines are designed to be used to pass as defines to the +compiler command to disable them without modifying this header, e.g. +-DLODEPNG_NO_COMPILE_ZLIB for gcc or clang. +*/ +/*deflate & zlib. If disabled, you must specify alternative zlib functions in +the custom_zlib field of the compress and decompress settings*/ +#ifndef LODEPNG_NO_COMPILE_ZLIB +/*pass -DLODEPNG_NO_COMPILE_ZLIB to the compiler to disable this, or comment out LODEPNG_COMPILE_ZLIB below*/ +#define LODEPNG_COMPILE_ZLIB +#endif + +/*png encoder and png decoder*/ +#ifndef LODEPNG_NO_COMPILE_PNG +/*pass -DLODEPNG_NO_COMPILE_PNG to the compiler to disable this, or comment out LODEPNG_COMPILE_PNG below*/ +#define LODEPNG_COMPILE_PNG +#endif + +/*deflate&zlib decoder and png decoder*/ +#ifndef LODEPNG_NO_COMPILE_DECODER +/*pass -DLODEPNG_NO_COMPILE_DECODER to the compiler to disable this, or comment out LODEPNG_COMPILE_DECODER below*/ +#define LODEPNG_COMPILE_DECODER +#endif + +/*deflate&zlib encoder and png encoder*/ +#ifndef LODEPNG_NO_COMPILE_ENCODER +/*pass -DLODEPNG_NO_COMPILE_ENCODER to the compiler to disable this, or comment out LODEPNG_COMPILE_ENCODER below*/ +#define LODEPNG_COMPILE_ENCODER +#endif + +/*the optional built in harddisk file loading and saving functions*/ +#ifndef LODEPNG_NO_COMPILE_DISK +/*pass -DLODEPNG_NO_COMPILE_DISK to the compiler to disable this, or comment out LODEPNG_COMPILE_DISK below*/ +#define LODEPNG_COMPILE_DISK +#endif + +/*support for chunks other than IHDR, IDAT, PLTE, tRNS, IEND: ancillary and unknown chunks*/ +#ifndef LODEPNG_NO_COMPILE_ANCILLARY_CHUNKS +/*pass -DLODEPNG_NO_COMPILE_ANCILLARY_CHUNKS to the compiler to disable this, +or comment out LODEPNG_COMPILE_ANCILLARY_CHUNKS below*/ +#define LODEPNG_COMPILE_ANCILLARY_CHUNKS +#endif + +/*ability to convert error numerical codes to English text string*/ +#ifndef LODEPNG_NO_COMPILE_ERROR_TEXT +/*pass -DLODEPNG_NO_COMPILE_ERROR_TEXT to the compiler to disable this, +or comment out LODEPNG_COMPILE_ERROR_TEXT below*/ +#define LODEPNG_COMPILE_ERROR_TEXT +#endif + +/*Compile the default allocators (C's free, malloc and realloc). If you disable this, +you can define the functions lodepng_free, lodepng_malloc and lodepng_realloc in your +source files with custom allocators.*/ +#ifndef LODEPNG_NO_COMPILE_ALLOCATORS +/*pass -DLODEPNG_NO_COMPILE_ALLOCATORS to the compiler to disable the built-in ones, +or comment out LODEPNG_COMPILE_ALLOCATORS below*/ +#define LODEPNG_COMPILE_ALLOCATORS +#endif + +/*Disable built-in CRC function, in that case a custom implementation of +lodepng_crc32 must be defined externally so that it can be linked in. +The default built-in CRC code comes with 8KB of lookup tables, so for memory constrained environment you may want it +disabled and provide a much smaller implementation externally as said above. You can find such an example implementation +in a comment in the lodepng.c(pp) file in the 'else' case of the searchable LODEPNG_COMPILE_CRC section.*/ +#ifndef LODEPNG_NO_COMPILE_CRC +/*pass -DLODEPNG_NO_COMPILE_CRC to the compiler to disable the built-in one, +or comment out LODEPNG_COMPILE_CRC below*/ +#define LODEPNG_COMPILE_CRC +#endif + +/*compile the C++ version (you can disable the C++ wrapper here even when compiling for C++)*/ +#ifdef __cplusplus +#ifndef LODEPNG_NO_COMPILE_CPP +/*pass -DLODEPNG_NO_COMPILE_CPP to the compiler to disable C++ (not needed if a C-only compiler), +or comment out LODEPNG_COMPILE_CPP below*/ +#define LODEPNG_COMPILE_CPP +#endif +#endif + +#ifdef LODEPNG_COMPILE_CPP +#include +#include +#endif /*LODEPNG_COMPILE_CPP*/ + +#ifdef LODEPNG_COMPILE_PNG +/*The PNG color types (also used for raw image).*/ +typedef enum LodePNGColorType { + LCT_GREY = 0, /*grayscale: 1,2,4,8,16 bit*/ + LCT_RGB = 2, /*RGB: 8,16 bit*/ + LCT_PALETTE = 3, /*palette: 1,2,4,8 bit*/ + LCT_GREY_ALPHA = 4, /*grayscale with alpha: 8,16 bit*/ + LCT_RGBA = 6, /*RGB with alpha: 8,16 bit*/ + /*LCT_MAX_OCTET_VALUE lets the compiler allow this enum to represent any invalid + byte value from 0 to 255 that could be present in an invalid PNG file header. Do + not use, compare with or set the name LCT_MAX_OCTET_VALUE, instead either use + the valid color type names above, or numeric values like 1 or 7 when checking for + particular disallowed color type byte values, or cast to integer to print it.*/ + LCT_MAX_OCTET_VALUE = 255 +} LodePNGColorType; + +#ifdef LODEPNG_COMPILE_DECODER +/* +Converts PNG data in memory to raw pixel data. +out: Output parameter. Pointer to buffer that will contain the raw pixel data. + After decoding, its size is w * h * (bytes per pixel) bytes larger than + initially. Bytes per pixel depends on colortype and bitdepth. + Must be freed after usage with free(*out). + Note: for 16-bit per channel colors, uses big endian format like PNG does. +w: Output parameter. Pointer to width of pixel data. +h: Output parameter. Pointer to height of pixel data. +in: Memory buffer with the PNG file. +insize: size of the in buffer. +colortype: the desired color type for the raw output image. See explanation on PNG color types. +bitdepth: the desired bit depth for the raw output image. See explanation on PNG color types. +Return value: LodePNG error code (0 means no error). +*/ +unsigned lodepng_decode_memory(unsigned char** out, unsigned* w, unsigned* h, + const unsigned char* in, size_t insize, + LodePNGColorType colortype, unsigned bitdepth); + +/*Same as lodepng_decode_memory, but always decodes to 32-bit RGBA raw image*/ +unsigned lodepng_decode32(unsigned char** out, unsigned* w, unsigned* h, + const unsigned char* in, size_t insize); + +/*Same as lodepng_decode_memory, but always decodes to 24-bit RGB raw image*/ +unsigned lodepng_decode24(unsigned char** out, unsigned* w, unsigned* h, + const unsigned char* in, size_t insize); + +#ifdef LODEPNG_COMPILE_DISK +/* +Load PNG from disk, from file with given name. +Same as the other decode functions, but instead takes a filename as input. + +NOTE: Wide-character filenames are not supported, you can use an external method +to handle such files and decode in-memory.*/ +unsigned lodepng_decode_file(unsigned char** out, unsigned* w, unsigned* h, + const char* filename, + LodePNGColorType colortype, unsigned bitdepth); + +/*Same as lodepng_decode_file, but always decodes to 32-bit RGBA raw image. + +NOTE: Wide-character filenames are not supported, you can use an external method +to handle such files and decode in-memory.*/ +unsigned lodepng_decode32_file(unsigned char** out, unsigned* w, unsigned* h, + const char* filename); + +/*Same as lodepng_decode_file, but always decodes to 24-bit RGB raw image. + +NOTE: Wide-character filenames are not supported, you can use an external method +to handle such files and decode in-memory.*/ +unsigned lodepng_decode24_file(unsigned char** out, unsigned* w, unsigned* h, + const char* filename); +#endif /*LODEPNG_COMPILE_DISK*/ +#endif /*LODEPNG_COMPILE_DECODER*/ + + +#ifdef LODEPNG_COMPILE_ENCODER +/* +Converts raw pixel data into a PNG image in memory. The colortype and bitdepth + of the output PNG image cannot be chosen, they are automatically determined + by the colortype, bitdepth and content of the input pixel data. + Note: for 16-bit per channel colors, needs big endian format like PNG does. +out: Output parameter. Pointer to buffer that will contain the PNG image data. + Must be freed after usage with free(*out). +outsize: Output parameter. Pointer to the size in bytes of the out buffer. +image: The raw pixel data to encode. The size of this buffer should be + w * h * (bytes per pixel), bytes per pixel depends on colortype and bitdepth. +w: width of the raw pixel data in pixels. +h: height of the raw pixel data in pixels. +colortype: the color type of the raw input image. See explanation on PNG color types. +bitdepth: the bit depth of the raw input image. See explanation on PNG color types. +Return value: LodePNG error code (0 means no error). +*/ +unsigned lodepng_encode_memory(unsigned char** out, size_t* outsize, + const unsigned char* image, unsigned w, unsigned h, + LodePNGColorType colortype, unsigned bitdepth); + +/*Same as lodepng_encode_memory, but always encodes from 32-bit RGBA raw image.*/ +unsigned lodepng_encode32(unsigned char** out, size_t* outsize, + const unsigned char* image, unsigned w, unsigned h); + +/*Same as lodepng_encode_memory, but always encodes from 24-bit RGB raw image.*/ +unsigned lodepng_encode24(unsigned char** out, size_t* outsize, + const unsigned char* image, unsigned w, unsigned h); + +#ifdef LODEPNG_COMPILE_DISK +/* +Converts raw pixel data into a PNG file on disk. +Same as the other encode functions, but instead takes a filename as output. + +NOTE: This overwrites existing files without warning! + +NOTE: Wide-character filenames are not supported, you can use an external method +to handle such files and encode in-memory.*/ +unsigned lodepng_encode_file(const char* filename, + const unsigned char* image, unsigned w, unsigned h, + LodePNGColorType colortype, unsigned bitdepth); + +/*Same as lodepng_encode_file, but always encodes from 32-bit RGBA raw image. + +NOTE: Wide-character filenames are not supported, you can use an external method +to handle such files and encode in-memory.*/ +unsigned lodepng_encode32_file(const char* filename, + const unsigned char* image, unsigned w, unsigned h); + +/*Same as lodepng_encode_file, but always encodes from 24-bit RGB raw image. + +NOTE: Wide-character filenames are not supported, you can use an external method +to handle such files and encode in-memory.*/ +unsigned lodepng_encode24_file(const char* filename, + const unsigned char* image, unsigned w, unsigned h); +#endif /*LODEPNG_COMPILE_DISK*/ +#endif /*LODEPNG_COMPILE_ENCODER*/ + + +#ifdef LODEPNG_COMPILE_CPP +namespace lodepng { +#ifdef LODEPNG_COMPILE_DECODER +/*Same as lodepng_decode_memory, but decodes to an std::vector. The colortype +is the format to output the pixels to. Default is RGBA 8-bit per channel.*/ +unsigned decode(std::vector& out, unsigned& w, unsigned& h, + const unsigned char* in, size_t insize, + LodePNGColorType colortype = LCT_RGBA, unsigned bitdepth = 8); +unsigned decode(std::vector& out, unsigned& w, unsigned& h, + const std::vector& in, + LodePNGColorType colortype = LCT_RGBA, unsigned bitdepth = 8); +#ifdef LODEPNG_COMPILE_DISK +/* +Converts PNG file from disk to raw pixel data in memory. +Same as the other decode functions, but instead takes a filename as input. + +NOTE: Wide-character filenames are not supported, you can use an external method +to handle such files and decode in-memory. +*/ +unsigned decode(std::vector& out, unsigned& w, unsigned& h, + const std::string& filename, + LodePNGColorType colortype = LCT_RGBA, unsigned bitdepth = 8); +#endif /* LODEPNG_COMPILE_DISK */ +#endif /* LODEPNG_COMPILE_DECODER */ + +#ifdef LODEPNG_COMPILE_ENCODER +/*Same as lodepng_encode_memory, but encodes to an std::vector. colortype +is that of the raw input data. The output PNG color type will be auto chosen.*/ +unsigned encode(std::vector& out, + const unsigned char* in, unsigned w, unsigned h, + LodePNGColorType colortype = LCT_RGBA, unsigned bitdepth = 8); +unsigned encode(std::vector& out, + const std::vector& in, unsigned w, unsigned h, + LodePNGColorType colortype = LCT_RGBA, unsigned bitdepth = 8); +#ifdef LODEPNG_COMPILE_DISK +/* +Converts 32-bit RGBA raw pixel data into a PNG file on disk. +Same as the other encode functions, but instead takes a filename as output. + +NOTE: This overwrites existing files without warning! + +NOTE: Wide-character filenames are not supported, you can use an external method +to handle such files and decode in-memory. +*/ +unsigned encode(const std::string& filename, + const unsigned char* in, unsigned w, unsigned h, + LodePNGColorType colortype = LCT_RGBA, unsigned bitdepth = 8); +unsigned encode(const std::string& filename, + const std::vector& in, unsigned w, unsigned h, + LodePNGColorType colortype = LCT_RGBA, unsigned bitdepth = 8); +#endif /* LODEPNG_COMPILE_DISK */ +#endif /* LODEPNG_COMPILE_ENCODER */ +} /* namespace lodepng */ +#endif /*LODEPNG_COMPILE_CPP*/ +#endif /*LODEPNG_COMPILE_PNG*/ + +#ifdef LODEPNG_COMPILE_ERROR_TEXT +/*Returns an English description of the numerical error code.*/ +const char* lodepng_error_text(unsigned code); +#endif /*LODEPNG_COMPILE_ERROR_TEXT*/ + +#ifdef LODEPNG_COMPILE_DECODER +/*Settings for zlib decompression*/ +typedef struct LodePNGDecompressSettings LodePNGDecompressSettings; +struct LodePNGDecompressSettings { + /* Check LodePNGDecoderSettings for more ignorable errors such as ignore_crc */ + unsigned ignore_adler32; /*if 1, continue and don't give an error message if the Adler32 checksum is corrupted*/ + unsigned ignore_nlen; /*ignore complement of len checksum in uncompressed blocks*/ + + /*Maximum decompressed size, beyond this the decoder may (and is encouraged to) stop decoding, + return an error, output a data size > max_output_size and all the data up to that point. This is + not hard limit nor a guarantee, but can prevent excessive memory usage. This setting is + ignored by the PNG decoder, but is used by the deflate/zlib decoder and can be used by custom ones. + Set to 0 to impose no limit (the default).*/ + size_t max_output_size; + + /*use custom zlib decoder instead of built in one (default: null). + Should return 0 if success, any non-0 if error (numeric value not exposed).*/ + unsigned (*custom_zlib)(unsigned char**, size_t*, + const unsigned char*, size_t, + const LodePNGDecompressSettings*); + /*use custom deflate decoder instead of built in one (default: null) + if custom_zlib is not null, custom_inflate is ignored (the zlib format uses deflate). + Should return 0 if success, any non-0 if error (numeric value not exposed).*/ + unsigned (*custom_inflate)(unsigned char**, size_t*, + const unsigned char*, size_t, + const LodePNGDecompressSettings*); + + const void* custom_context; /*optional custom settings for custom functions*/ +}; + +extern const LodePNGDecompressSettings lodepng_default_decompress_settings; +void lodepng_decompress_settings_init(LodePNGDecompressSettings* settings); +#endif /*LODEPNG_COMPILE_DECODER*/ + +#ifdef LODEPNG_COMPILE_ENCODER +/* +Settings for zlib compression. Tweaking these settings tweaks the balance +between speed and compression ratio. +*/ +typedef struct LodePNGCompressSettings LodePNGCompressSettings; +struct LodePNGCompressSettings /*deflate = compress*/ { + /*LZ77 related settings*/ + unsigned btype; /*the block type for LZ (0, 1, 2 or 3, see zlib standard). Should be 2 for proper compression.*/ + unsigned use_lz77; /*whether or not to use LZ77. Should be 1 for proper compression.*/ + unsigned windowsize; /*must be a power of two <= 32768. higher compresses more but is slower. Default value: 2048.*/ + unsigned minmatch; /*minimum lz77 length. 3 is normally best, 6 can be better for some PNGs. Default: 0*/ + unsigned nicematch; /*stop searching if >= this length found. Set to 258 for best compression. Default: 128*/ + unsigned lazymatching; /*use lazy matching: better compression but a bit slower. Default: true*/ + + /*use custom zlib encoder instead of built in one (default: null)*/ + unsigned (*custom_zlib)(unsigned char**, size_t*, + const unsigned char*, size_t, + const LodePNGCompressSettings*); + /*use custom deflate encoder instead of built in one (default: null) + if custom_zlib is used, custom_deflate is ignored since only the built in + zlib function will call custom_deflate*/ + unsigned (*custom_deflate)(unsigned char**, size_t*, + const unsigned char*, size_t, + const LodePNGCompressSettings*); + + const void* custom_context; /*optional custom settings for custom functions*/ +}; + +extern const LodePNGCompressSettings lodepng_default_compress_settings; +void lodepng_compress_settings_init(LodePNGCompressSettings* settings); +#endif /*LODEPNG_COMPILE_ENCODER*/ + +#ifdef LODEPNG_COMPILE_PNG +/* +Color mode of an image. Contains all information required to decode the pixel +bits to RGBA colors. This information is the same as used in the PNG file +format, and is used both for PNG and raw image data in LodePNG. +*/ +typedef struct LodePNGColorMode { + /*header (IHDR)*/ + LodePNGColorType colortype; /*color type, see PNG standard or documentation further in this header file*/ + unsigned bitdepth; /*bits per sample, see PNG standard or documentation further in this header file*/ + + /* + palette (PLTE and tRNS) + + Dynamically allocated with the colors of the palette, including alpha. + This field may not be allocated directly, use lodepng_color_mode_init first, + then lodepng_palette_add per color to correctly initialize it (to ensure size + of exactly 1024 bytes). + + The alpha channels must be set as well, set them to 255 for opaque images. + + When decoding, with the default settings you can ignore this palette, since + LodePNG already fills the palette colors in the pixels of the raw RGBA output, + but when decoding to the original PNG color mode it is needed to reconstruct + the colors. + + The palette is only supported for color type 3. + */ + unsigned char* palette; /*palette in RGBARGBA... order. Must be either 0, or when allocated must have 1024 bytes*/ + size_t palettesize; /*palette size in number of colors (amount of used bytes is 4 * palettesize)*/ + + /* + transparent color key (tRNS) + + This color uses the same bit depth as the bitdepth value in this struct, which can be 1-bit to 16-bit. + For grayscale PNGs, r, g and b will all 3 be set to the same. + + When decoding, by default you can ignore this information, since LodePNG sets + pixels with this key to transparent already in the raw RGBA output. + + The color key is only supported for color types 0 and 2. + */ + unsigned key_defined; /*is a transparent color key given? 0 = false, 1 = true*/ + unsigned key_r; /*red/grayscale component of color key*/ + unsigned key_g; /*green component of color key*/ + unsigned key_b; /*blue component of color key*/ +} LodePNGColorMode; + +/*init, cleanup and copy functions to use with this struct*/ +void lodepng_color_mode_init(LodePNGColorMode* info); +void lodepng_color_mode_cleanup(LodePNGColorMode* info); +/*return value is error code (0 means no error)*/ +unsigned lodepng_color_mode_copy(LodePNGColorMode* dest, const LodePNGColorMode* source); +/* Makes a temporary LodePNGColorMode that does not need cleanup (no palette) */ +LodePNGColorMode lodepng_color_mode_make(LodePNGColorType colortype, unsigned bitdepth); + +void lodepng_palette_clear(LodePNGColorMode* info); +/*add 1 color to the palette*/ +unsigned lodepng_palette_add(LodePNGColorMode* info, + unsigned char r, unsigned char g, unsigned char b, unsigned char a); + +/*get the total amount of bits per pixel, based on colortype and bitdepth in the struct*/ +unsigned lodepng_get_bpp(const LodePNGColorMode* info); +/*get the amount of color channels used, based on colortype in the struct. +If a palette is used, it counts as 1 channel.*/ +unsigned lodepng_get_channels(const LodePNGColorMode* info); +/*is it a grayscale type? (only colortype 0 or 4)*/ +unsigned lodepng_is_greyscale_type(const LodePNGColorMode* info); +/*has it got an alpha channel? (only colortype 2 or 6)*/ +unsigned lodepng_is_alpha_type(const LodePNGColorMode* info); +/*has it got a palette? (only colortype 3)*/ +unsigned lodepng_is_palette_type(const LodePNGColorMode* info); +/*only returns true if there is a palette and there is a value in the palette with alpha < 255. +Loops through the palette to check this.*/ +unsigned lodepng_has_palette_alpha(const LodePNGColorMode* info); +/* +Check if the given color info indicates the possibility of having non-opaque pixels in the PNG image. +Returns true if the image can have translucent or invisible pixels (it still be opaque if it doesn't use such pixels). +Returns false if the image can only have opaque pixels. +In detail, it returns true only if it's a color type with alpha, or has a palette with non-opaque values, +or if "key_defined" is true. +*/ +unsigned lodepng_can_have_alpha(const LodePNGColorMode* info); +/*Returns the byte size of a raw image buffer with given width, height and color mode*/ +size_t lodepng_get_raw_size(unsigned w, unsigned h, const LodePNGColorMode* color); + +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS +/*The information of a Time chunk in PNG.*/ +typedef struct LodePNGTime { + unsigned year; /*2 bytes used (0-65535)*/ + unsigned month; /*1-12*/ + unsigned day; /*1-31*/ + unsigned hour; /*0-23*/ + unsigned minute; /*0-59*/ + unsigned second; /*0-60 (to allow for leap seconds)*/ +} LodePNGTime; +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ + +/*Information about the PNG image, except pixels, width and height.*/ +typedef struct LodePNGInfo { + /*header (IHDR), palette (PLTE) and transparency (tRNS) chunks*/ + unsigned compression_method;/*compression method of the original file. Always 0.*/ + unsigned filter_method; /*filter method of the original file*/ + unsigned interlace_method; /*interlace method of the original file: 0=none, 1=Adam7*/ + LodePNGColorMode color; /*color type and bits, palette and transparency of the PNG file*/ + +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + /* + Suggested background color chunk (bKGD) + + This uses the same color mode and bit depth as the PNG (except no alpha channel), + with values truncated to the bit depth in the unsigned integer. + + For grayscale and palette PNGs, the value is stored in background_r. The values + in background_g and background_b are then unused. The decoder will set them + equal to background_r, the encoder ignores them in this case. + + When decoding, you may get these in a different color mode than the one you requested + for the raw pixels: the colortype and bitdepth defined by info_png.color, that is the + ones defined in the header of the PNG image, are used. + + When encoding with auto_convert, you must use the color model defined in info_png.color for + these values. The encoder normally ignores info_png.color when auto_convert is on, but will + use it to interpret these values (and convert copies of them to its chosen color model). + + When encoding, avoid setting this to an expensive color, such as a non-gray value + when the image is gray, or the compression will be worse since it will be forced to + write the PNG with a more expensive color mode (when auto_convert is on). + + The decoder does not use this background color to edit the color of pixels. This is a + completely optional metadata feature. + */ + unsigned background_defined; /*is a suggested background color given?*/ + unsigned background_r; /*red/gray/palette component of suggested background color*/ + unsigned background_g; /*green component of suggested background color*/ + unsigned background_b; /*blue component of suggested background color*/ + + /* + Non-international text chunks (tEXt and zTXt) + + The char** arrays each contain num strings. The actual messages are in + text_strings, while text_keys are keywords that give a short description what + the actual text represents, e.g. Title, Author, Description, or anything else. + + All the string fields below including strings, keys, names and language tags are null terminated. + The PNG specification uses null characters for the keys, names and tags, and forbids null + characters to appear in the main text which is why we can use null termination everywhere here. + + A keyword is minimum 1 character and maximum 79 characters long (plus the + additional null terminator). It's discouraged to use a single line length + longer than 79 characters for texts. + + Don't allocate these text buffers yourself. Use the init/cleanup functions + correctly and use lodepng_add_text and lodepng_clear_text. + + Standard text chunk keywords and strings are encoded using Latin-1. + */ + size_t text_num; /*the amount of texts in these char** buffers (there may be more texts in itext)*/ + char** text_keys; /*the keyword of a text chunk (e.g. "Comment")*/ + char** text_strings; /*the actual text*/ + + /* + International text chunks (iTXt) + Similar to the non-international text chunks, but with additional strings + "langtags" and "transkeys", and the following text encodings are used: + keys: Latin-1, langtags: ASCII, transkeys and strings: UTF-8. + keys must be 1-79 characters (plus the additional null terminator), the other + strings are any length. + */ + size_t itext_num; /*the amount of international texts in this PNG*/ + char** itext_keys; /*the English keyword of the text chunk (e.g. "Comment")*/ + char** itext_langtags; /*language tag for this text's language, ISO/IEC 646 string, e.g. ISO 639 language tag*/ + char** itext_transkeys; /*keyword translated to the international language - UTF-8 string*/ + char** itext_strings; /*the actual international text - UTF-8 string*/ + + /* + Optional exif metadata in exif_size bytes. + Don't allocate this buffer yourself. Use the init/cleanup functions + correctly and use lodepng_set_exif and lodepng_clear_exif. + The exif data is in exif-encoded form but without JPEG markers, starting with the 'II' or 'MM' marker that indicates + endianness. It's up to an exif handling library to encode/decode its information. + */ + unsigned exif_defined; /* Whether exif metadata is present, that is, the PNG image has an eXIf chunk */ + unsigned char* exif; /* The bytes of the exif metadata, if present */ + unsigned exif_size; /* The size of the exif data in bytes */ + + + /*time chunk (tIME)*/ + unsigned time_defined; /*set to 1 to make the encoder generate a tIME chunk*/ + LodePNGTime time; + + /*phys chunk (pHYs)*/ + unsigned phys_defined; /*if 0, there is no pHYs chunk and the values below are undefined, if 1 else there is one*/ + unsigned phys_x; /*pixels per unit in x direction*/ + unsigned phys_y; /*pixels per unit in y direction*/ + unsigned phys_unit; /*may be 0 (unknown unit) or 1 (metre)*/ + + /* + Color profile related chunks: gAMA, cHRM, sRGB, iCPP, sBIT + + LodePNG does not apply any color conversions on pixels in the encoder or decoder and does not interpret these color + profile values. It merely passes on the information. If you wish to use color profiles and convert colors, please + use these values with a color management library. + + See the PNG, ICC and sRGB specifications for more information about the meaning of these values. + */ + + /* gAMA chunk: optional, overridden by sRGB or iCCP if those are present. */ + unsigned gama_defined; /* Whether a gAMA chunk is present (0 = not present, 1 = present). */ + unsigned gama_gamma; /* Gamma exponent times 100000 */ + + /* cHRM chunk: optional, overridden by sRGB or iCCP if those are present. */ + unsigned chrm_defined; /* Whether a cHRM chunk is present (0 = not present, 1 = present). */ + unsigned chrm_white_x; /* White Point x times 100000 */ + unsigned chrm_white_y; /* White Point y times 100000 */ + unsigned chrm_red_x; /* Red x times 100000 */ + unsigned chrm_red_y; /* Red y times 100000 */ + unsigned chrm_green_x; /* Green x times 100000 */ + unsigned chrm_green_y; /* Green y times 100000 */ + unsigned chrm_blue_x; /* Blue x times 100000 */ + unsigned chrm_blue_y; /* Blue y times 100000 */ + + /* + sRGB chunk: optional. May not appear at the same time as iCCP. + If gAMA is also present gAMA must contain value 45455. + If cHRM is also present cHRM must contain respectively 31270,32900,64000,33000,30000,60000,15000,6000. + */ + unsigned srgb_defined; /* Whether an sRGB chunk is present (0 = not present, 1 = present). */ + unsigned srgb_intent; /* Rendering intent: 0=perceptual, 1=rel. colorimetric, 2=saturation, 3=abs. colorimetric */ + + /* + iCCP chunk: optional. May not appear at the same time as sRGB. + + LodePNG does not parse or use the ICC profile (except its color space header field for an edge case), a + separate library to handle the ICC data (not included in LodePNG) format is needed to use it for color + management and conversions. + + For encoding, if iCCP is present, gAMA and cHRM are recommended to be added as well with values that match the ICC + profile as closely as possible, if you wish to do this you should provide the correct values for gAMA and cHRM and + enable their '_defined' flags since LodePNG will not automatically compute them from the ICC profile. + + For encoding, the ICC profile is required by the PNG specification to be an "RGB" profile for non-gray + PNG color types and a "GRAY" profile for gray PNG color types. If you disable auto_convert, you must ensure + the ICC profile type matches your requested color type, else the encoder gives an error. If auto_convert is + enabled (the default), and the ICC profile is not a good match for the pixel data, this will result in an encoder + error if the pixel data has non-gray pixels for a GRAY profile, or a silent less-optimal compression of the pixel + data if the pixels could be encoded as grayscale but the ICC profile is RGB. + + To avoid this do not set an ICC profile in the image unless there is a good reason for it, and when doing so + make sure you compute it carefully to avoid the above problems. + */ + unsigned iccp_defined; /* Whether an iCCP chunk is present (0 = not present, 1 = present). */ + char* iccp_name; /* Null terminated string with profile name, 1-79 bytes */ + /* + The ICC profile in iccp_profile_size bytes. + Don't allocate this buffer yourself. Use the init/cleanup functions + correctly and use lodepng_set_icc and lodepng_clear_icc. + */ + unsigned char* iccp_profile; + unsigned iccp_profile_size; /* The size of iccp_profile in bytes */ + + /* + sBIT chunk: significant bits. Optional metadata, only set this if needed. + + If defined, these values give the bit depth of the original data. Since PNG only stores 1, 2, 4, 8 or 16-bit + per channel data, the significant bits value can be used to indicate the original encoded data has another + sample depth, such as 10 or 12. + + Encoders using this value, when storing the pixel data, should use the most significant bits + of the data to store the original bits, and use a good sample depth scaling method such as + "left bit replication" to fill in the least significant bits, rather than fill zeroes. + + Decoders using this value, if able to work with data that's e.g. 10-bit or 12-bit, should right + shift the data to go back to the original bit depth, but decoders are also allowed to ignore + sbit and work e.g. with the 8-bit or 16-bit data from the PNG directly, since thanks + to the encoder contract, the values encoded in PNG are in valid range for the PNG bit depth. + + For grayscale images, sbit_g and sbit_b are not used, and for images that don't use color + type RGBA or grayscale+alpha, sbit_a is not used (it's not used even for palette images with + translucent palette values, or images with color key). The values that are used must be + greater than zero and smaller than or equal to the PNG bit depth. + + The color type from the header in the PNG image defines these used and unused fields: if + decoding with a color mode conversion, such as always decoding to RGBA, this metadata still + only uses the color type of the original PNG, and may e.g. lack the alpha channel info + if the PNG was RGB. When encoding with auto_convert (as well as without), also always the + color model defined in info_png.color determines this. + + NOTE: enabling sbit can hurt compression, because the encoder can then not always use + auto_convert to choose a more optimal color mode for the data, because the PNG format has + strict requirements for the allowed sbit values in combination with color modes. + For example, setting these fields to 10-bit will force the encoder to keep using a 16-bit per channel + color mode, even if the pixel data would in fact fit in a more efficient 8-bit mode. + */ + unsigned sbit_defined; /*is significant bits given? if not, the values below are unused*/ + unsigned sbit_r; /*red or gray component of significant bits*/ + unsigned sbit_g; /*green component of significant bits*/ + unsigned sbit_b; /*blue component of significant bits*/ + unsigned sbit_a; /*alpha component of significant bits*/ + + /* End of color profile related chunks */ + + + /* + unknown chunks: chunks not known by LodePNG, passed on byte for byte. + + There are 3 buffers, one for each position in the PNG where unknown chunks can appear. + Each buffer contains all unknown chunks for that position consecutively. + The 3 positions are: + 0: between IHDR and PLTE, 1: between PLTE and IDAT, 2: between IDAT and IEND. + + For encoding, do not store critical chunks or known chunks that are enabled with a "_defined" flag + above in here, since the encoder will blindly follow this and could then encode an invalid PNG file + (such as one with two IHDR chunks or the disallowed combination of sRGB with iCCP). But do use + this if you wish to store an ancillary chunk that is not supported by LodePNG (such as sPLT or hIST), + or any non-standard PNG chunk. + + Do not allocate or traverse this data yourself. Use the chunk traversing functions declared + later, such as lodepng_chunk_next and lodepng_chunk_append, to read/write this struct. + */ + unsigned char* unknown_chunks_data[3]; + size_t unknown_chunks_size[3]; /*size in bytes of the unknown chunks, given for protection*/ +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ +} LodePNGInfo; + +/*init, cleanup and copy functions to use with this struct*/ +void lodepng_info_init(LodePNGInfo* info); +void lodepng_info_cleanup(LodePNGInfo* info); +/*return value is error code (0 means no error)*/ +unsigned lodepng_info_copy(LodePNGInfo* dest, const LodePNGInfo* source); + +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS +unsigned lodepng_add_text(LodePNGInfo* info, const char* key, const char* str); /*push back both texts at once*/ +void lodepng_clear_text(LodePNGInfo* info); /*use this to clear the texts again after you filled them in*/ + +unsigned lodepng_add_itext(LodePNGInfo* info, const char* key, const char* langtag, + const char* transkey, const char* str); /*push back the 4 texts of 1 chunk at once*/ +void lodepng_clear_itext(LodePNGInfo* info); /*use this to clear the itexts again after you filled them in*/ + +/*replaces if exists*/ +unsigned lodepng_set_icc(LodePNGInfo* info, const char* name, const unsigned char* profile, unsigned profile_size); +void lodepng_clear_icc(LodePNGInfo* info); /*use this to clear the profile again after you filled it in*/ + +/*replaces if exists*/ +unsigned lodepng_set_exif(LodePNGInfo* info, const unsigned char* exif, unsigned exif_size); +void lodepng_clear_exif(LodePNGInfo* info); /*use this to clear the exif metadata again after you filled it in*/ +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ + +/* +Converts raw buffer from one color type to another color type, based on +LodePNGColorMode structs to describe the input and output color type. +See the reference manual at the end of this header file to see which color conversions are supported. +return value = LodePNG error code (0 if all went ok, an error if the conversion isn't supported) +The out buffer must have size (w * h * bpp + 7) / 8, where bpp is the bits per pixel +of the output color type (lodepng_get_bpp). +For < 8 bpp images, there should not be padding bits at the end of scanlines. +For 16-bit per channel colors, uses big endian format like PNG does. +Return value is LodePNG error code +*/ +unsigned lodepng_convert(unsigned char* out, const unsigned char* in, + const LodePNGColorMode* mode_out, const LodePNGColorMode* mode_in, + unsigned w, unsigned h); + +#ifdef LODEPNG_COMPILE_DECODER +/* +Settings for the decoder. This contains settings for the PNG and the Zlib +decoder, but not the Info settings from the Info structs. +*/ +typedef struct LodePNGDecoderSettings { + LodePNGDecompressSettings zlibsettings; /*in here is the setting to ignore Adler32 checksums*/ + + /* Check LodePNGDecompressSettings for more ignorable errors such as ignore_adler32 */ + unsigned ignore_crc; /*ignore CRC checksums*/ + unsigned ignore_critical; /*ignore unknown critical chunks*/ + unsigned ignore_end; /*ignore issues at end of file if possible (missing IEND chunk, too large chunk, ...)*/ + /* TODO: make a system involving warnings with levels and a strict mode instead. Other potentially recoverable + errors: srgb rendering intent value, size of content of ancillary chunks, more than 79 characters for some + strings, placement/combination rules for ancillary chunks, crc of unknown chunks, allowed characters + in string keys, etc... */ + + unsigned color_convert; /*whether to convert the PNG to the color type you want. Default: yes*/ + +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + unsigned read_text_chunks; /*if false but remember_unknown_chunks is true, they're stored in the unknown chunks*/ + + /*store all bytes from unknown chunks in the LodePNGInfo (off by default, useful for a png editor)*/ + unsigned remember_unknown_chunks; + + /* maximum size for decompressed text chunks. If a text chunk's text is larger than this, an error is returned, + unless reading text chunks is disabled or this limit is set higher or disabled. Set to 0 to allow any size. + By default it is a value that prevents unreasonably large strings from hogging memory. */ + size_t max_text_size; + + /* maximum size for compressed ICC chunks. If the ICC profile is larger than this, an error will be returned. Set to + 0 to allow any size. By default this is a value that prevents ICC profiles that would be much larger than any + legitimate profile could be to hog memory. */ + size_t max_icc_size; +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ +} LodePNGDecoderSettings; + +void lodepng_decoder_settings_init(LodePNGDecoderSettings* settings); +#endif /*LODEPNG_COMPILE_DECODER*/ + +#ifdef LODEPNG_COMPILE_ENCODER +/*automatically use color type with less bits per pixel if losslessly possible. Default: AUTO*/ +typedef enum LodePNGFilterStrategy { + /*every filter at zero*/ + LFS_ZERO = 0, + /*every filter at 1, 2, 3 or 4 (paeth), unlike LFS_ZERO not a good choice, but for testing*/ + LFS_ONE = 1, + LFS_TWO = 2, + LFS_THREE = 3, + LFS_FOUR = 4, + /*Use filter that gives minimum sum, as described in the official PNG filter heuristic.*/ + LFS_MINSUM, + /*Use the filter type that gives smallest Shannon entropy for this scanline. Depending + on the image, this is better or worse than minsum.*/ + LFS_ENTROPY, + /* + Brute-force-search PNG filters by compressing each filter for each scanline. + Experimental, very slow, and only rarely gives better compression than MINSUM. + */ + LFS_BRUTE_FORCE, + /*use predefined_filters buffer: you specify the filter type for each scanline*/ + LFS_PREDEFINED +} LodePNGFilterStrategy; + +/*Gives characteristics about the integer RGBA colors of the image (count, alpha channel usage, bit depth, ...), +which helps decide which color model to use for encoding. +Used internally by default if "auto_convert" is enabled. Public because it's useful for custom algorithms.*/ +typedef struct LodePNGColorStats { + unsigned colored; /*not grayscale*/ + unsigned key; /*image is not opaque and color key is possible instead of full alpha*/ + unsigned short key_r; /*key values, always as 16-bit, in 8-bit case the byte is duplicated, e.g. 65535 means 255*/ + unsigned short key_g; + unsigned short key_b; + unsigned alpha; /*image is not opaque and alpha channel or alpha palette required*/ + unsigned numcolors; /*amount of colors, up to 257. Not valid if bits == 16 or allow_palette is disabled.*/ + unsigned char palette[1024]; /*Remembers up to the first 256 RGBA colors, in no particular order, only valid when numcolors is valid*/ + unsigned bits; /*bits per channel (not for palette). 1,2 or 4 for grayscale only. 16 if 16-bit per channel required.*/ + size_t numpixels; + + /*user settings for computing/using the stats*/ + unsigned allow_palette; /*default 1. if 0, disallow choosing palette colortype in auto_choose_color, and don't count numcolors*/ + unsigned allow_greyscale; /*default 1. if 0, choose RGB or RGBA even if the image only has gray colors*/ +} LodePNGColorStats; + +void lodepng_color_stats_init(LodePNGColorStats* stats); + +/*Get a LodePNGColorStats of the image. The stats must already have been inited. +Returns error code (e.g. alloc fail) or 0 if ok.*/ +unsigned lodepng_compute_color_stats(LodePNGColorStats* stats, + const unsigned char* image, unsigned w, unsigned h, + const LodePNGColorMode* mode_in); + +/*Settings for the encoder.*/ +typedef struct LodePNGEncoderSettings { + LodePNGCompressSettings zlibsettings; /*settings for the zlib encoder, such as window size, ...*/ + + /*automatically choose output PNG color type. If false, must explicitely choose the output color + type in state.info_png.color.colortype, info_png.color.bitdepth and optionally its palette. + Default: true*/ + unsigned auto_convert; + + /*If true, follows the official PNG heuristic: if the PNG uses a palette or lower than + 8 bit depth, set all filters to zero. Otherwise use the filter_strategy. Note that to + completely follow the official PNG heuristic, filter_palette_zero must be true and + filter_strategy must be LFS_MINSUM*/ + unsigned filter_palette_zero; + /*Which filter strategy to use when not using zeroes due to filter_palette_zero. + Set filter_palette_zero to 0 to ensure always using your chosen strategy. Default: LFS_MINSUM*/ + LodePNGFilterStrategy filter_strategy; + /*used if filter_strategy is LFS_PREDEFINED. In that case, this must point to a buffer with + the same length as the amount of scanlines in the image, and each value must <= 5. You + have to cleanup this buffer, LodePNG will never free it. Don't forget that filter_palette_zero + must be set to 0 to ensure this is also used on palette or low bitdepth images.*/ + const unsigned char* predefined_filters; + + /*force creating a PLTE chunk if colortype is 2 or 6 (= a suggested palette). + If colortype is 3, PLTE is always created. If color type is explicitely set + to a grayscale type (1 or 4), this is not done and is ignored. If enabling this, + a palette must be present in the info_png. + NOTE: enabling this may worsen compression if auto_convert is used to choose + optimal color mode, because it cannot use grayscale color modes in this case*/ + unsigned force_palette; +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + /*add LodePNG identifier and version as a text chunk, for debugging*/ + unsigned add_id; + /*encode text chunks as zTXt chunks instead of tEXt chunks, and use compression in iTXt chunks*/ + unsigned text_compression; +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ +} LodePNGEncoderSettings; + +void lodepng_encoder_settings_init(LodePNGEncoderSettings* settings); +#endif /*LODEPNG_COMPILE_ENCODER*/ + + +#if defined(LODEPNG_COMPILE_DECODER) || defined(LODEPNG_COMPILE_ENCODER) +/*The settings, state and information for extended encoding and decoding.*/ +typedef struct LodePNGState { +#ifdef LODEPNG_COMPILE_DECODER + LodePNGDecoderSettings decoder; /*the decoding settings*/ +#endif /*LODEPNG_COMPILE_DECODER*/ +#ifdef LODEPNG_COMPILE_ENCODER + LodePNGEncoderSettings encoder; /*the encoding settings*/ +#endif /*LODEPNG_COMPILE_ENCODER*/ + LodePNGColorMode info_raw; /*specifies the format in which you would like to get the raw pixel buffer*/ + LodePNGInfo info_png; /*info of the PNG image obtained after decoding*/ + unsigned error; +} LodePNGState; + +/*init, cleanup and copy functions to use with this struct*/ +void lodepng_state_init(LodePNGState* state); +void lodepng_state_cleanup(LodePNGState* state); +void lodepng_state_copy(LodePNGState* dest, const LodePNGState* source); +#endif /* defined(LODEPNG_COMPILE_DECODER) || defined(LODEPNG_COMPILE_ENCODER) */ + +#ifdef LODEPNG_COMPILE_DECODER +/* +Same as lodepng_decode_memory, but uses a LodePNGState to allow custom settings and +getting much more information about the PNG image and color mode. +*/ +unsigned lodepng_decode(unsigned char** out, unsigned* w, unsigned* h, + LodePNGState* state, + const unsigned char* in, size_t insize); + +/* +Read the PNG header, but not the actual data. This returns only the information +that is in the IHDR chunk of the PNG, such as width, height and color type. The +information is placed in the info_png field of the LodePNGState. +*/ +unsigned lodepng_inspect(unsigned* w, unsigned* h, + LodePNGState* state, + const unsigned char* in, size_t insize); +#endif /*LODEPNG_COMPILE_DECODER*/ + +/* +Reads one metadata chunk (other than IHDR, which is handled by lodepng_inspect) +of the PNG file and outputs what it read in the state. Returns error code on failure. +Use lodepng_inspect first with a new state, then e.g. lodepng_chunk_find_const +to find the desired chunk type, and if non null use lodepng_inspect_chunk (with +chunk_pointer - start_of_file as pos). +Supports most metadata chunks from the PNG standard (gAMA, bKGD, tEXt, ...). +Ignores unsupported, unknown, non-metadata or IHDR chunks (without error). +Requirements: &in[pos] must point to start of a chunk, must use regular +lodepng_inspect first since format of most other chunks depends on IHDR, and if +there is a PLTE chunk, that one must be inspected before tRNS or bKGD. +*/ +unsigned lodepng_inspect_chunk(LodePNGState* state, size_t pos, + const unsigned char* in, size_t insize); + +#ifdef LODEPNG_COMPILE_ENCODER +/*This function allocates the out buffer with standard malloc and stores the size in *outsize.*/ +unsigned lodepng_encode(unsigned char** out, size_t* outsize, + const unsigned char* image, unsigned w, unsigned h, + LodePNGState* state); +#endif /*LODEPNG_COMPILE_ENCODER*/ + +/* +The lodepng_chunk functions are normally not needed, except to traverse the +unknown chunks stored in the LodePNGInfo struct, or add new ones to it. +It also allows traversing the chunks of an encoded PNG file yourself. + +The chunk pointer always points to the beginning of the chunk itself, that is +the first byte of the 4 length bytes. + +In the PNG file format, chunks have the following format: +-4 bytes length: length of the data of the chunk in bytes (chunk itself is 12 bytes longer) +-4 bytes chunk type (ASCII a-z,A-Z only, see below) +-length bytes of data (may be 0 bytes if length was 0) +-4 bytes of CRC, computed on chunk name + data + +The first chunk starts at the 8th byte of the PNG file, the entire rest of the file +exists out of concatenated chunks with the above format. + +PNG standard chunk ASCII naming conventions: +-First byte: uppercase = critical, lowercase = ancillary +-Second byte: uppercase = public, lowercase = private +-Third byte: must be uppercase +-Fourth byte: uppercase = unsafe to copy, lowercase = safe to copy +*/ + +/* +Gets the length of the data of the chunk. Total chunk length has 12 bytes more. +There must be at least 4 bytes to read from. If the result value is too large, +it may be corrupt data. +*/ +unsigned lodepng_chunk_length(const unsigned char* chunk); + +/*puts the 4-byte type in null terminated string*/ +void lodepng_chunk_type(char type[5], const unsigned char* chunk); + +/*check if the type is the given type*/ +unsigned char lodepng_chunk_type_equals(const unsigned char* chunk, const char* type); + +/*0: it's one of the critical chunk types, 1: it's an ancillary chunk (see PNG standard)*/ +unsigned char lodepng_chunk_ancillary(const unsigned char* chunk); + +/*0: public, 1: private (see PNG standard)*/ +unsigned char lodepng_chunk_private(const unsigned char* chunk); + +/*0: the chunk is unsafe to copy, 1: the chunk is safe to copy (see PNG standard)*/ +unsigned char lodepng_chunk_safetocopy(const unsigned char* chunk); + +/*get pointer to the data of the chunk, where the input points to the header of the chunk*/ +unsigned char* lodepng_chunk_data(unsigned char* chunk); +const unsigned char* lodepng_chunk_data_const(const unsigned char* chunk); + +/*returns 0 if the crc is correct, 1 if it's incorrect (0 for OK as usual!)*/ +unsigned lodepng_chunk_check_crc(const unsigned char* chunk); + +/*generates the correct CRC from the data and puts it in the last 4 bytes of the chunk*/ +void lodepng_chunk_generate_crc(unsigned char* chunk); + +/* +Iterate to next chunks, allows iterating through all chunks of the PNG file. +Input must be at the beginning of a chunk (result of a previous lodepng_chunk_next call, +or the 8th byte of a PNG file which always has the first chunk), or alternatively may +point to the first byte of the PNG file (which is not a chunk but the magic header, the +function will then skip over it and return the first real chunk). +Will output pointer to the start of the next chunk, or at or beyond end of the file if there +is no more chunk after this or possibly if the chunk is corrupt. +Start this process at the 8th byte of the PNG file. +In a non-corrupt PNG file, the last chunk should have name "IEND". +*/ +unsigned char* lodepng_chunk_next(unsigned char* chunk, unsigned char* end); +const unsigned char* lodepng_chunk_next_const(const unsigned char* chunk, const unsigned char* end); + +/*Finds the first chunk with the given type in the range [chunk, end), or returns NULL if not found.*/ +unsigned char* lodepng_chunk_find(unsigned char* chunk, unsigned char* end, const char type[5]); +const unsigned char* lodepng_chunk_find_const(const unsigned char* chunk, const unsigned char* end, const char type[5]); + +/* +Appends chunk to the data in out. The given chunk should already have its chunk header. +The out variable and outsize are updated to reflect the new reallocated buffer. +Returns error code (0 if it went ok) +*/ +unsigned lodepng_chunk_append(unsigned char** out, size_t* outsize, const unsigned char* chunk); + +/* +Appends new chunk to out. The chunk to append is given by giving its length, type +and data separately. The type is a 4-letter string. +The out variable and outsize are updated to reflect the new reallocated buffer. +Returne error code (0 if it went ok) +*/ +unsigned lodepng_chunk_create(unsigned char** out, size_t* outsize, size_t length, + const char* type, const unsigned char* data); + + +/*Calculate CRC32 of buffer*/ +unsigned lodepng_crc32(const unsigned char* buf, size_t len); +#endif /*LODEPNG_COMPILE_PNG*/ + + +#ifdef LODEPNG_COMPILE_ZLIB +/* +This zlib part can be used independently to zlib compress and decompress a +buffer. It cannot be used to create gzip files however, and it only supports the +part of zlib that is required for PNG, it does not support dictionaries. +*/ + +#ifdef LODEPNG_COMPILE_DECODER +/*Inflate a buffer. Inflate is the decompression step of deflate. Out buffer must be freed after use.*/ +unsigned lodepng_inflate(unsigned char** out, size_t* outsize, + const unsigned char* in, size_t insize, + const LodePNGDecompressSettings* settings); + +/* +Decompresses Zlib data. Reallocates the out buffer and appends the data. The +data must be according to the zlib specification. +Either, *out must be NULL and *outsize must be 0, or, *out must be a valid +buffer and *outsize its size in bytes. out must be freed by user after usage. +*/ +unsigned lodepng_zlib_decompress(unsigned char** out, size_t* outsize, + const unsigned char* in, size_t insize, + const LodePNGDecompressSettings* settings); +#endif /*LODEPNG_COMPILE_DECODER*/ + +#ifdef LODEPNG_COMPILE_ENCODER +/* +Compresses data with Zlib. Reallocates the out buffer and appends the data. +Zlib adds a small header and trailer around the deflate data. +The data is output in the format of the zlib specification. +Either, *out must be NULL and *outsize must be 0, or, *out must be a valid +buffer and *outsize its size in bytes. out must be freed by user after usage. +*/ +unsigned lodepng_zlib_compress(unsigned char** out, size_t* outsize, + const unsigned char* in, size_t insize, + const LodePNGCompressSettings* settings); + +/* +Find length-limited Huffman code for given frequencies. This function is in the +public interface only for tests, it's used internally by lodepng_deflate. +*/ +unsigned lodepng_huffman_code_lengths(unsigned* lengths, const unsigned* frequencies, + size_t numcodes, unsigned maxbitlen); + +/*Compress a buffer with deflate. See RFC 1951. Out buffer must be freed after use.*/ +unsigned lodepng_deflate(unsigned char** out, size_t* outsize, + const unsigned char* in, size_t insize, + const LodePNGCompressSettings* settings); + +#endif /*LODEPNG_COMPILE_ENCODER*/ +#endif /*LODEPNG_COMPILE_ZLIB*/ + +#ifdef LODEPNG_COMPILE_DISK +/* +Load a file from disk into buffer. The function allocates the out buffer, and +after usage you should free it. +out: output parameter, contains pointer to loaded buffer. +outsize: output parameter, size of the allocated out buffer +filename: the path to the file to load +return value: error code (0 means ok) + +NOTE: Wide-character filenames are not supported, you can use an external method +to handle such files and decode in-memory. +*/ +unsigned lodepng_load_file(unsigned char** out, size_t* outsize, const char* filename); + +/* +Save a file from buffer to disk. Warning, if it exists, this function overwrites +the file without warning! +buffer: the buffer to write +buffersize: size of the buffer to write +filename: the path to the file to save to +return value: error code (0 means ok) + +NOTE: Wide-character filenames are not supported, you can use an external method +to handle such files and encode in-memory +*/ +unsigned lodepng_save_file(const unsigned char* buffer, size_t buffersize, const char* filename); +#endif /*LODEPNG_COMPILE_DISK*/ + +#ifdef LODEPNG_COMPILE_CPP +/* The LodePNG C++ wrapper uses std::vectors instead of manually allocated memory buffers. */ +namespace lodepng { +#ifdef LODEPNG_COMPILE_PNG +class State : public LodePNGState { + public: + State(); + State(const State& other); + ~State(); + State& operator=(const State& other); +}; + +#ifdef LODEPNG_COMPILE_DECODER +/* Same as other lodepng::decode, but using a State for more settings and information. */ +unsigned decode(std::vector& out, unsigned& w, unsigned& h, + State& state, + const unsigned char* in, size_t insize); +unsigned decode(std::vector& out, unsigned& w, unsigned& h, + State& state, + const std::vector& in); +#endif /*LODEPNG_COMPILE_DECODER*/ + +#ifdef LODEPNG_COMPILE_ENCODER +/* Same as other lodepng::encode, but using a State for more settings and information. */ +unsigned encode(std::vector& out, + const unsigned char* in, unsigned w, unsigned h, + State& state); +unsigned encode(std::vector& out, + const std::vector& in, unsigned w, unsigned h, + State& state); +#endif /*LODEPNG_COMPILE_ENCODER*/ + +#ifdef LODEPNG_COMPILE_DISK +/* +Load a file from disk into an std::vector. +return value: error code (0 means ok) + +NOTE: Wide-character filenames are not supported, you can use an external method +to handle such files and decode in-memory +*/ +unsigned load_file(std::vector& buffer, const std::string& filename); + +/* +Save the binary data in an std::vector to a file on disk. The file is overwritten +without warning. + +NOTE: Wide-character filenames are not supported, you can use an external method +to handle such files and encode in-memory +*/ +unsigned save_file(const std::vector& buffer, const std::string& filename); +#endif /* LODEPNG_COMPILE_DISK */ +#endif /* LODEPNG_COMPILE_PNG */ + +#ifdef LODEPNG_COMPILE_ZLIB +#ifdef LODEPNG_COMPILE_DECODER +/* Zlib-decompress an unsigned char buffer */ +unsigned decompress(std::vector& out, const unsigned char* in, size_t insize, + const LodePNGDecompressSettings& settings = lodepng_default_decompress_settings); + +/* Zlib-decompress an std::vector */ +unsigned decompress(std::vector& out, const std::vector& in, + const LodePNGDecompressSettings& settings = lodepng_default_decompress_settings); +#endif /* LODEPNG_COMPILE_DECODER */ + +#ifdef LODEPNG_COMPILE_ENCODER +/* Zlib-compress an unsigned char buffer */ +unsigned compress(std::vector& out, const unsigned char* in, size_t insize, + const LodePNGCompressSettings& settings = lodepng_default_compress_settings); + +/* Zlib-compress an std::vector */ +unsigned compress(std::vector& out, const std::vector& in, + const LodePNGCompressSettings& settings = lodepng_default_compress_settings); +#endif /* LODEPNG_COMPILE_ENCODER */ +#endif /* LODEPNG_COMPILE_ZLIB */ +} /* namespace lodepng */ +#endif /*LODEPNG_COMPILE_CPP*/ + +/* +TODO: +[.] test if there are no memory leaks or security exploits - done a lot but needs to be checked often +[.] check compatibility with various compilers - done but needs to be redone for every newer version +[X] converting color to 16-bit per channel types +[X] support color profile chunk types (but never let them touch RGB values by default) +[ ] support all second edition public PNG chunk types (almost done except sPLT and hIST) +[ ] support non-animation third edition public PNG chunk types: eXIf, cICP, mDCv, cLLi +[ ] make sure encoder generates no chunks with size > (2^31)-1 +[ ] partial decoding (stream processing) +[X] let the "isFullyOpaque" function check color keys and transparent palettes too +[X] better name for the variables "codes", "codesD", "codelengthcodes", "clcl" and "lldl" +[ ] allow treating some errors like warnings, when image is recoverable (e.g. 69, 57, 58) +[ ] make warnings like: oob palette, checksum fail, data after iend, wrong/unknown crit chunk, no null terminator in text, ... +[ ] error messages with line numbers (and version) +[ ] errors in state instead of as return code? +[ ] new errors/warnings like suspiciously big decompressed ztxt or iccp chunk +[ ] let the C++ wrapper catch exceptions coming from the standard library and return LodePNG error codes +[ ] allow user to provide custom color conversion functions, e.g. for premultiplied alpha, padding bits or not, ... +[ ] allow user to give data (void*) to custom allocator +[X] provide alternatives for C library functions not present on some platforms (memcpy, ...) +*/ + +#endif /*LODEPNG_H inclusion guard*/ + +/* +LodePNG Documentation +--------------------- + +0. table of contents +-------------------- + + 1. about + 1.1. supported features + 1.2. features not supported + 2. C and C++ version + 3. security + 4. decoding + 5. encoding + 6. color conversions + 6.1. PNG color types + 6.2. color conversions + 6.3. padding bits + 6.4. A note about 16-bits per channel and endianness + 7. error values + 8. chunks and PNG editing + 9. compiler support + 10. examples + 10.1. decoder C++ example + 10.2. decoder C example + 11. state settings reference + 12. changes + 13. contact information + + +1. about +-------- + +PNG is a file format to store raster images losslessly with good compression, +supporting different color types and alpha channel. + +LodePNG is a PNG codec according to the Portable Network Graphics (PNG) +Specification (Second Edition) - W3C Recommendation 10 November 2003. + +The specifications used are: + +*) Portable Network Graphics (PNG) Specification (Second Edition): + http://www.w3.org/TR/2003/REC-PNG-20031110 +*) RFC 1950 ZLIB Compressed Data Format version 3.3: + http://www.gzip.org/zlib/rfc-zlib.html +*) RFC 1951 DEFLATE Compressed Data Format Specification ver 1.3: + http://www.gzip.org/zlib/rfc-deflate.html + +The most recent version of LodePNG can currently be found at +http://lodev.org/lodepng/ + +LodePNG works both in C (ISO C90) and C++, with a C++ wrapper that adds +extra functionality. + +LodePNG exists out of two files: +-lodepng.h: the header file for both C and C++ +-lodepng.c(pp): give it the name lodepng.c or lodepng.cpp (or .cc) depending on your usage + +If you want to start using LodePNG right away without reading this doc, get the +examples from the LodePNG website to see how to use it in code, or check the +smaller examples in chapter 13 here. + +LodePNG is simple but only supports the basic requirements. To achieve +simplicity, the following design choices were made: There are no dependencies +on any external library. There are functions to decode and encode a PNG with +a single function call, and extended versions of these functions taking a +LodePNGState struct allowing to specify or get more information. By default +the colors of the raw image are always RGB or RGBA, no matter what color type +the PNG file uses. To read and write files, there are simple functions to +convert the files to/from buffers in memory. + +This all makes LodePNG suitable for loading textures in games, demos and small +programs, ... It's less suitable for full fledged image editors, loading PNGs +over network (it requires all the image data to be available before decoding can +begin), life-critical systems, ... + +1.1. supported features +----------------------- + +The following features are supported by the decoder: + +*) decoding of PNGs with any color type, bit depth and interlace mode, to a 24- or 32-bit color raw image, + or the same color type as the PNG +*) encoding of PNGs, from any raw image to 24- or 32-bit color, or the same color type as the raw image +*) Adam7 interlace and deinterlace for any color type +*) loading the image from harddisk or decoding it from a buffer from other sources than harddisk +*) support for alpha channels, including RGBA color model, translucent palettes and color keying +*) zlib decompression (inflate) +*) zlib compression (deflate) +*) CRC32 and ADLER32 checksums +*) colorimetric color profile conversions: currently experimentally available in lodepng_util.cpp only, + plus alternatively ability to pass on chroma/gamma/ICC profile information to other color management system. +*) handling of unknown chunks, allowing making a PNG editor that stores custom and unknown chunks. +*) the following chunks are supported by both encoder and decoder: + IHDR: header information + PLTE: color palette + IDAT: pixel data + IEND: the final chunk + tRNS: transparency for palettized images + tEXt: textual information + zTXt: compressed textual information + iTXt: international textual information + bKGD: suggested background color + pHYs: physical dimensions + tIME: modification time + cHRM: RGB chromaticities + gAMA: RGB gamma correction + iCCP: ICC color profile + sRGB: rendering intent + sBIT: significant bits + +1.2. features not supported +--------------------------- + +The following features are not (yet) supported: + +*) some features needed to make a conformant PNG-Editor might be still missing. +*) partial loading/stream processing. All data must be available and is processed in one call. +*) The hIST and sPLT public chunks are not (yet) supported but treated as unknown chunks + + +2. C and C++ version +-------------------- + +The C version uses buffers allocated with alloc that you need to free() +yourself. You need to use init and cleanup functions for each struct whenever +using a struct from the C version to avoid exploits and memory leaks. + +The C++ version has extra functions with std::vectors in the interface and the +lodepng::State class which is a LodePNGState with constructor and destructor. + +These files work without modification for both C and C++ compilers because all +the additional C++ code is in "#ifdef __cplusplus" blocks that make C-compilers +ignore it, and the C code is made to compile both with strict ISO C90 and C++. + +To use the C++ version, you need to rename the source file to lodepng.cpp +(instead of lodepng.c), and compile it with a C++ compiler. + +To use the C version, you need to rename the source file to lodepng.c (instead +of lodepng.cpp), and compile it with a C compiler. + + +3. Security +----------- + +Even if carefully designed, it's always possible that LodePNG contains possible +exploits. If you discover one, please let me know, and it will be fixed. + +When using LodePNG, care has to be taken with the C version of LodePNG, as well +as the C-style structs when working with C++. The following conventions are used +for all C-style structs: + +-if a struct has a corresponding init function, always call the init function when making a new one +-if a struct has a corresponding cleanup function, call it before the struct disappears to avoid memory leaks +-if a struct has a corresponding copy function, use the copy function instead of "=". + The destination must also be inited already. + + +4. Decoding +----------- + +Decoding converts a PNG compressed image to a raw pixel buffer. + +Most documentation on using the decoder is at its declarations in the header +above. For C, simple decoding can be done with functions such as +lodepng_decode32, and more advanced decoding can be done with the struct +LodePNGState and lodepng_decode. For C++, all decoding can be done with the +various lodepng::decode functions, and lodepng::State can be used for advanced +features. + +When using the LodePNGState, it uses the following fields for decoding: +*) LodePNGInfo info_png: it stores extra information about the PNG (the input) in here +*) LodePNGColorMode info_raw: here you can say what color mode of the raw image (the output) you want to get +*) LodePNGDecoderSettings decoder: you can specify a few extra settings for the decoder to use + +LodePNGInfo info_png +-------------------- + +After decoding, this contains extra information of the PNG image, except the actual +pixels, width and height because these are already gotten directly from the decoder +functions. + +It contains for example the original color type of the PNG image, text comments, +suggested background color, etc... More details about the LodePNGInfo struct are +at its declaration documentation. + +LodePNGColorMode info_raw +------------------------- + +When decoding, here you can specify which color type you want +the resulting raw image to be. If this is different from the colortype of the +PNG, then the decoder will automatically convert the result. This conversion +always works, except if you want it to convert a color PNG to grayscale or to +a palette with missing colors. + +By default, 32-bit color is used for the result. + +LodePNGDecoderSettings decoder +------------------------------ + +The settings can be used to ignore the errors created by invalid CRC and Adler32 +chunks, and to disable the decoding of tEXt chunks. + +There's also a setting color_convert, true by default. If false, no conversion +is done, the resulting data will be as it was in the PNG (after decompression) +and you'll have to puzzle the colors of the pixels together yourself using the +color type information in the LodePNGInfo. + + +5. Encoding +----------- + +Encoding converts a raw pixel buffer to a PNG compressed image. + +Most documentation on using the encoder is at its declarations in the header +above. For C, simple encoding can be done with functions such as +lodepng_encode32, and more advanced decoding can be done with the struct +LodePNGState and lodepng_encode. For C++, all encoding can be done with the +various lodepng::encode functions, and lodepng::State can be used for advanced +features. + +Like the decoder, the encoder can also give errors. However it gives less errors +since the encoder input is trusted, the decoder input (a PNG image that could +be forged by anyone) is not trusted. + +When using the LodePNGState, it uses the following fields for encoding: +*) LodePNGInfo info_png: here you specify how you want the PNG (the output) to be. +*) LodePNGColorMode info_raw: here you say what color type of the raw image (the input) has +*) LodePNGEncoderSettings encoder: you can specify a few settings for the encoder to use + +LodePNGInfo info_png +-------------------- + +When encoding, you use this the opposite way as when decoding: for encoding, +you fill in the values you want the PNG to have before encoding. By default it's +not needed to specify a color type for the PNG since it's automatically chosen, +but it's possible to choose it yourself given the right settings. + +The encoder will not always exactly match the LodePNGInfo struct you give, +it tries as close as possible. Some things are ignored by the encoder. The +encoder uses, for example, the following settings from it when applicable: +colortype and bitdepth, text chunks, time chunk, the color key, the palette, the +background color, the interlace method, unknown chunks, ... + +When encoding to a PNG with colortype 3, the encoder will generate a PLTE chunk. +If the palette contains any colors for which the alpha channel is not 255 (so +there are translucent colors in the palette), it'll add a tRNS chunk. + +LodePNGColorMode info_raw +------------------------- + +You specify the color type of the raw image that you give to the input here, +including a possible transparent color key and palette you happen to be using in +your raw image data. + +By default, 32-bit color is assumed, meaning your input has to be in RGBA +format with 4 bytes (unsigned chars) per pixel. + +LodePNGEncoderSettings encoder +------------------------------ + +The following settings are supported (some are in sub-structs): +*) auto_convert: when this option is enabled, the encoder will +automatically choose the smallest possible color mode (including color key) that +can encode the colors of all pixels without information loss. +*) btype: the block type for LZ77. 0 = uncompressed, 1 = fixed huffman tree, + 2 = dynamic huffman tree (best compression). Should be 2 for proper + compression. +*) use_lz77: whether or not to use LZ77 for compressed block types. Should be + true for proper compression. +*) windowsize: the window size used by the LZ77 encoder (1 - 32768). Has value + 2048 by default, but can be set to 32768 for better, but slow, compression. +*) force_palette: if colortype is 2 or 6, you can make the encoder write a PLTE + chunk if force_palette is true. This can used as suggested palette to convert + to by viewers that don't support more than 256 colors (if those still exist) +*) add_id: add text chunk "Encoder: LodePNG " to the image. +*) text_compression: default 1. If 1, it'll store texts as zTXt instead of tEXt chunks. + zTXt chunks use zlib compression on the text. This gives a smaller result on + large texts but a larger result on small texts (such as a single program name). + It's all tEXt or all zTXt though, there's no separate setting per text yet. + + +6. color conversions +-------------------- + +An important thing to note about LodePNG, is that the color type of the PNG, and +the color type of the raw image, are completely independent. By default, when +you decode a PNG, you get the result as a raw image in the color type you want, +no matter whether the PNG was encoded with a palette, grayscale or RGBA color. +And if you encode an image, by default LodePNG will automatically choose the PNG +color type that gives good compression based on the values of colors and amount +of colors in the image. It can be configured to let you control it instead as +well, though. + +To be able to do this, LodePNG does conversions from one color mode to another. +It can convert from almost any color type to any other color type, except the +following conversions: RGB to grayscale is not supported, and converting to a +palette when the palette doesn't have a required color is not supported. This is +not supported on purpose: this is information loss which requires a color +reduction algorithm that is beyond the scope of a PNG encoder (yes, RGB to gray +is easy, but there are multiple ways if you want to give some channels more +weight). + +By default, when decoding, you get the raw image in 32-bit RGBA or 24-bit RGB +color, no matter what color type the PNG has. And by default when encoding, +LodePNG automatically picks the best color model for the output PNG, and expects +the input image to be 32-bit RGBA or 24-bit RGB. So, unless you want to control +the color format of the images yourself, you can skip this chapter. + +6.1. PNG color types +-------------------- + +A PNG image can have many color types, ranging from 1-bit color to 64-bit color, +as well as palettized color modes. After the zlib decompression and unfiltering +in the PNG image is done, the raw pixel data will have that color type and thus +a certain amount of bits per pixel. If you want the output raw image after +decoding to have another color type, a conversion is done by LodePNG. + +The PNG specification gives the following color types: + +0: grayscale, bit depths 1, 2, 4, 8, 16 +2: RGB, bit depths 8 and 16 +3: palette, bit depths 1, 2, 4 and 8 +4: grayscale with alpha, bit depths 8 and 16 +6: RGBA, bit depths 8 and 16 + +Bit depth is the amount of bits per pixel per color channel. So the total amount +of bits per pixel is: amount of channels * bitdepth. + +6.2. color conversions +---------------------- + +As explained in the sections about the encoder and decoder, you can specify +color types and bit depths in info_png and info_raw to change the default +behaviour. + +If, when decoding, you want the raw image to be something else than the default, +you need to set the color type and bit depth you want in the LodePNGColorMode, +or the parameters colortype and bitdepth of the simple decoding function. + +If, when encoding, you use another color type than the default in the raw input +image, you need to specify its color type and bit depth in the LodePNGColorMode +of the raw image, or use the parameters colortype and bitdepth of the simple +encoding function. + +If, when encoding, you don't want LodePNG to choose the output PNG color type +but control it yourself, you need to set auto_convert in the encoder settings +to false, and specify the color type you want in the LodePNGInfo of the +encoder (including palette: it can generate a palette if auto_convert is true, +otherwise not). + +If the input and output color type differ (whether user chosen or auto chosen), +LodePNG will do a color conversion, which follows the rules below, and may +sometimes result in an error. + +To avoid some confusion: +-the decoder converts from PNG to raw image +-the encoder converts from raw image to PNG +-the colortype and bitdepth in LodePNGColorMode info_raw, are those of the raw image +-the colortype and bitdepth in the color field of LodePNGInfo info_png, are those of the PNG +-when encoding, the color type in LodePNGInfo is ignored if auto_convert + is enabled, it is automatically generated instead +-when decoding, the color type in LodePNGInfo is set by the decoder to that of the original + PNG image, but it can be ignored since the raw image has the color type you requested instead +-if the color type of the LodePNGColorMode and PNG image aren't the same, a conversion + between the color types is done if the color types are supported. If it is not + supported, an error is returned. If the types are the same, no conversion is done. +-even though some conversions aren't supported, LodePNG supports loading PNGs from any + colortype and saving PNGs to any colortype, sometimes it just requires preparing + the raw image correctly before encoding. +-both encoder and decoder use the same color converter. + +The function lodepng_convert does the color conversion. It is available in the +interface but normally isn't needed since the encoder and decoder already call +it. + +Non supported color conversions: +-color to grayscale when non-gray pixels are present: no error is thrown, but +the result will look ugly because only the red channel is taken (it assumes all +three channels are the same in this case so ignores green and blue). The reason +no error is given is to allow converting from three-channel grayscale images to +one-channel even if there are numerical imprecisions. +-anything to palette when the palette does not have an exact match for a from-color +in it: in this case an error is thrown + +Supported color conversions: +-anything to 8-bit RGB, 8-bit RGBA, 16-bit RGB, 16-bit RGBA +-any gray or gray+alpha, to gray or gray+alpha +-anything to a palette, as long as the palette has the requested colors in it +-removing alpha channel +-higher to smaller bitdepth, and vice versa + +If you want no color conversion to be done (e.g. for speed or control): +-In the encoder, you can make it save a PNG with any color type by giving the +raw color mode and LodePNGInfo the same color mode, and setting auto_convert to +false. +-In the decoder, you can make it store the pixel data in the same color type +as the PNG has, by setting the color_convert setting to false. Settings in +info_raw are then ignored. + +6.3. padding bits +----------------- + +In the PNG file format, if a less than 8-bit per pixel color type is used and the scanlines +have a bit amount that isn't a multiple of 8, then padding bits are used so that each +scanline starts at a fresh byte. But that is NOT true for the LodePNG raw input and output. +The raw input image you give to the encoder, and the raw output image you get from the decoder +will NOT have these padding bits, e.g. in the case of a 1-bit image with a width +of 7 pixels, the first pixel of the second scanline will the 8th bit of the first byte, +not the first bit of a new byte. + +6.4. A note about 16-bits per channel and endianness +---------------------------------------------------- + +LodePNG uses unsigned char arrays for 16-bit per channel colors too, just like +for any other color format. The 16-bit values are stored in big endian (most +significant byte first) in these arrays. This is the opposite order of the +little endian used by x86 CPU's. + +LodePNG always uses big endian because the PNG file format does so internally. +Conversions to other formats than PNG uses internally are not supported by +LodePNG on purpose, there are myriads of formats, including endianness of 16-bit +colors, the order in which you store R, G, B and A, and so on. Supporting and +converting to/from all that is outside the scope of LodePNG. + +This may mean that, depending on your use case, you may want to convert the big +endian output of LodePNG to little endian with a for loop. This is certainly not +always needed, many applications and libraries support big endian 16-bit colors +anyway, but it means you cannot simply cast the unsigned char* buffer to an +unsigned short* buffer on x86 CPUs. + + +7. error values +--------------- + +All functions in LodePNG that return an error code, return 0 if everything went +OK, or a non-zero code if there was an error. + +The meaning of the LodePNG error values can be retrieved with the function +lodepng_error_text: given the numerical error code, it returns a description +of the error in English as a string. + +Check the implementation of lodepng_error_text to see the meaning of each code. + +It is not recommended to use the numerical values to programmatically make +different decisions based on error types as the numbers are not guaranteed to +stay backwards compatible. They are for human consumption only. Programmatically +only 0 or non-0 matter. + + +8. chunks and PNG editing +------------------------- + +If you want to add extra chunks to a PNG you encode, or use LodePNG for a PNG +editor that should follow the rules about handling of unknown chunks, or if your +program is able to read other types of chunks than the ones handled by LodePNG, +then that's possible with the chunk functions of LodePNG. + +A PNG chunk has the following layout: + +4 bytes length +4 bytes type name +length bytes data +4 bytes CRC + +8.1. iterating through chunks +----------------------------- + +If you have a buffer containing the PNG image data, then the first chunk (the +IHDR chunk) starts at byte number 8 of that buffer. The first 8 bytes are the +signature of the PNG and are not part of a chunk. But if you start at byte 8 +then you have a chunk, and can check the following things of it. + +NOTE: none of these functions check for memory buffer boundaries. To avoid +exploits, always make sure the buffer contains all the data of the chunks. +When using lodepng_chunk_next, make sure the returned value is within the +allocated memory. + +unsigned lodepng_chunk_length(const unsigned char* chunk): + +Get the length of the chunk's data. The total chunk length is this length + 12. + +void lodepng_chunk_type(char type[5], const unsigned char* chunk): +unsigned char lodepng_chunk_type_equals(const unsigned char* chunk, const char* type): + +Get the type of the chunk or compare if it's a certain type + +unsigned char lodepng_chunk_critical(const unsigned char* chunk): +unsigned char lodepng_chunk_private(const unsigned char* chunk): +unsigned char lodepng_chunk_safetocopy(const unsigned char* chunk): + +Check if the chunk is critical in the PNG standard (only IHDR, PLTE, IDAT and IEND are). +Check if the chunk is private (public chunks are part of the standard, private ones not). +Check if the chunk is safe to copy. If it's not, then, when modifying data in a critical +chunk, unsafe to copy chunks of the old image may NOT be saved in the new one if your +program doesn't handle that type of unknown chunk. + +unsigned char* lodepng_chunk_data(unsigned char* chunk): +const unsigned char* lodepng_chunk_data_const(const unsigned char* chunk): + +Get a pointer to the start of the data of the chunk. + +unsigned lodepng_chunk_check_crc(const unsigned char* chunk): +void lodepng_chunk_generate_crc(unsigned char* chunk): + +Check if the crc is correct or generate a correct one. + +unsigned char* lodepng_chunk_next(unsigned char* chunk): +const unsigned char* lodepng_chunk_next_const(const unsigned char* chunk): + +Iterate to the next chunk. This works if you have a buffer with consecutive chunks. Note that these +functions do no boundary checking of the allocated data whatsoever, so make sure there is enough +data available in the buffer to be able to go to the next chunk. + +unsigned lodepng_chunk_append(unsigned char** out, size_t* outsize, const unsigned char* chunk): +unsigned lodepng_chunk_create(unsigned char** out, size_t* outsize, unsigned length, + const char* type, const unsigned char* data): + +These functions are used to create new chunks that are appended to the data in *out that has +length *outsize. The append function appends an existing chunk to the new data. The create +function creates a new chunk with the given parameters and appends it. Type is the 4-letter +name of the chunk. + +8.2. chunks in info_png +----------------------- + +The LodePNGInfo struct contains fields with the unknown chunk in it. It has 3 +buffers (each with size) to contain 3 types of unknown chunks: +the ones that come before the PLTE chunk, the ones that come between the PLTE +and the IDAT chunks, and the ones that come after the IDAT chunks. +It's necessary to make the distinction between these 3 cases because the PNG +standard forces to keep the ordering of unknown chunks compared to the critical +chunks, but does not force any other ordering rules. + +info_png.unknown_chunks_data[0] is the chunks before PLTE +info_png.unknown_chunks_data[1] is the chunks after PLTE, before IDAT +info_png.unknown_chunks_data[2] is the chunks after IDAT + +The chunks in these 3 buffers can be iterated through and read by using the same +way described in the previous subchapter. + +When using the decoder to decode a PNG, you can make it store all unknown chunks +if you set the option settings.remember_unknown_chunks to 1. By default, this +option is off (0). + +The encoder will always encode unknown chunks that are stored in the info_png. +If you need it to add a particular chunk that isn't known by LodePNG, you can +use lodepng_chunk_append or lodepng_chunk_create to the chunk data in +info_png.unknown_chunks_data[x]. + +Chunks that are known by LodePNG should not be added in that way. E.g. to make +LodePNG add a bKGD chunk, set background_defined to true and add the correct +parameters there instead. + + +9. compiler support +------------------- + +No libraries other than the current standard C library are needed to compile +LodePNG. For the C++ version, only the standard C++ library is needed on top. +Add the files lodepng.c(pp) and lodepng.h to your project, include +lodepng.h where needed, and your program can read/write PNG files. + +It is compatible with C90 and up, and C++03 and up. + +If performance is important, use optimization when compiling! For both the +encoder and decoder, this makes a large difference. + +Make sure that LodePNG is compiled with the same compiler of the same version +and with the same settings as the rest of the program, or the interfaces with +std::vectors and std::strings in C++ can be incompatible. + +CHAR_BITS must be 8 or higher, because LodePNG uses unsigned chars for octets. + +*) gcc and g++ + +LodePNG is developed in gcc so this compiler is natively supported. It gives no +warnings with compiler options "-Wall -Wextra -pedantic -ansi", with gcc and g++ +version 4.7.1 on Linux, 32-bit and 64-bit. + +*) Clang + +Fully supported and warning-free. + +*) Mingw + +The Mingw compiler (a port of gcc for Windows) should be fully supported by +LodePNG. + +*) Visual Studio and Visual C++ Express Edition + +LodePNG should be warning-free with warning level W4. Two warnings were disabled +with pragmas though: warning 4244 about implicit conversions, and warning 4996 +where it wants to use a non-standard function fopen_s instead of the standard C +fopen. + +Visual Studio may want "stdafx.h" files to be included in each source file and +give an error "unexpected end of file while looking for precompiled header". +This is not standard C++ and will not be added to the stock LodePNG. You can +disable it for lodepng.cpp only by right clicking it, Properties, C/C++, +Precompiled Headers, and set it to Not Using Precompiled Headers there. + +NOTE: Modern versions of VS should be fully supported, but old versions, e.g. +VS6, are not guaranteed to work. + +*) Compilers on Macintosh + +LodePNG has been reported to work both with gcc and LLVM for Macintosh, both for +C and C++. + +*) Other Compilers + +If you encounter problems on any compilers, feel free to let me know and I may +try to fix it if the compiler is modern and standards compliant. + + +10. examples +------------ + +This decoder example shows the most basic usage of LodePNG. More complex +examples can be found on the LodePNG website. + +NOTE: these examples do not support wide-character filenames, you can use an +external method to handle such files and encode or decode in-memory + +10.1. decoder C++ example +------------------------- + +#include "lodepng.h" +#include + +int main(int argc, char *argv[]) { + const char* filename = argc > 1 ? argv[1] : "test.png"; + + //load and decode + std::vector image; + unsigned width, height; + unsigned error = lodepng::decode(image, width, height, filename); + + //if there's an error, display it + if(error) std::cout << "decoder error " << error << ": " << lodepng_error_text(error) << std::endl; + + //the pixels are now in the vector "image", 4 bytes per pixel, ordered RGBARGBA..., use it as texture, draw it, ... +} + +10.2. decoder C example +----------------------- + +#include "lodepng.h" + +int main(int argc, char *argv[]) { + unsigned error; + unsigned char* image; + size_t width, height; + const char* filename = argc > 1 ? argv[1] : "test.png"; + + error = lodepng_decode32_file(&image, &width, &height, filename); + + if(error) printf("decoder error %u: %s\n", error, lodepng_error_text(error)); + + / * use image here * / + + free(image); + return 0; +} + +11. state settings reference +---------------------------- + +A quick reference of some settings to set on the LodePNGState + +For decoding: + +state.decoder.zlibsettings.ignore_adler32: ignore ADLER32 checksums +state.decoder.zlibsettings.custom_...: use custom inflate function +state.decoder.ignore_crc: ignore CRC checksums +state.decoder.ignore_critical: ignore unknown critical chunks +state.decoder.ignore_end: ignore missing IEND chunk. May fail if this corruption causes other errors +state.decoder.color_convert: convert internal PNG color to chosen one +state.decoder.read_text_chunks: whether to read in text metadata chunks +state.decoder.remember_unknown_chunks: whether to read in unknown chunks +state.info_raw.colortype: desired color type for decoded image +state.info_raw.bitdepth: desired bit depth for decoded image +state.info_raw....: more color settings, see struct LodePNGColorMode +state.info_png....: no settings for decoder but ouput, see struct LodePNGInfo + +For encoding: + +state.encoder.zlibsettings.btype: disable compression by setting it to 0 +state.encoder.zlibsettings.use_lz77: use LZ77 in compression +state.encoder.zlibsettings.windowsize: tweak LZ77 windowsize +state.encoder.zlibsettings.minmatch: tweak min LZ77 length to match +state.encoder.zlibsettings.nicematch: tweak LZ77 match where to stop searching +state.encoder.zlibsettings.lazymatching: try one more LZ77 matching +state.encoder.zlibsettings.custom_...: use custom deflate function +state.encoder.auto_convert: choose optimal PNG color type, if 0 uses info_png +state.encoder.filter_palette_zero: PNG filter strategy for palette +state.encoder.filter_strategy: PNG filter strategy to encode with +state.encoder.force_palette: add palette even if not encoding to one +state.encoder.add_id: add LodePNG identifier and version as a text chunk +state.encoder.text_compression: use compressed text chunks for metadata +state.info_raw.colortype: color type of raw input image you provide +state.info_raw.bitdepth: bit depth of raw input image you provide +state.info_raw: more color settings, see struct LodePNGColorMode +state.info_png.color.colortype: desired color type if auto_convert is false +state.info_png.color.bitdepth: desired bit depth if auto_convert is false +state.info_png.color....: more color settings, see struct LodePNGColorMode +state.info_png....: more PNG related settings, see struct LodePNGInfo + + +12. changes +----------- + +The version number of LodePNG is the date of the change given in the format +yyyymmdd. + +Some changes aren't backwards compatible. Those are indicated with a (!) +symbol. + +Not all changes are listed here, the commit history in github lists more: +https://github.com/lvandeve/lodepng + +*) 15 dec 2024: added support for the eXIf chunk (for png third edition spec) +*) 10 apr 2023: faster CRC32 implementation, but with larger lookup table. +*) 13 jun 2022: added support for the sBIT chunk. +*) 09 jan 2022: minor decoder speed improvements. +*) 27 jun 2021: added warnings that file reading/writing functions don't support + wide-character filenames (support for this is not planned, opening files is + not the core part of PNG decoding/decoding and is platform dependent). +*) 17 okt 2020: prevent decoding too large text/icc chunks by default. +*) 06 mar 2020: simplified some of the dynamic memory allocations. +*) 12 jan 2020: (!) added 'end' argument to lodepng_chunk_next to allow correct + overflow checks. +*) 14 aug 2019: around 25% faster decoding thanks to huffman lookup tables. +*) 15 jun 2019: (!) auto_choose_color API changed (for bugfix: don't use palette + if gray ICC profile) and non-ICC LodePNGColorProfile renamed to + LodePNGColorStats. +*) 30 dec 2018: code style changes only: removed newlines before opening braces. +*) 10 sep 2018: added way to inspect metadata chunks without full decoding. +*) 19 aug 2018: (!) fixed color mode bKGD is encoded with and made it use + palette index in case of palette. +*) 10 aug 2018: (!) added support for gAMA, cHRM, sRGB and iCCP chunks. This + change is backwards compatible unless you relied on unknown_chunks for those. +*) 11 jun 2018: less restrictive check for pixel size integer overflow +*) 14 jan 2018: allow optionally ignoring a few more recoverable errors +*) 17 sep 2017: fix memory leak for some encoder input error cases +*) 27 nov 2016: grey+alpha auto color model detection bugfix +*) 18 apr 2016: Changed qsort to custom stable sort (for platforms w/o qsort). +*) 09 apr 2016: Fixed colorkey usage detection, and better file loading (within + the limits of pure C90). +*) 08 dec 2015: Made load_file function return error if file can't be opened. +*) 24 okt 2015: Bugfix with decoding to palette output. +*) 18 apr 2015: Boundary PM instead of just package-merge for faster encoding. +*) 24 aug 2014: Moved to github +*) 23 aug 2014: Reduced needless memory usage of decoder. +*) 28 jun 2014: Removed fix_png setting, always support palette OOB for + simplicity. Made ColorProfile public. +*) 09 jun 2014: Faster encoder by fixing hash bug and more zeros optimization. +*) 22 dec 2013: Power of two windowsize required for optimization. +*) 15 apr 2013: Fixed bug with LAC_ALPHA and color key. +*) 25 mar 2013: Added an optional feature to ignore some PNG errors (fix_png). +*) 11 mar 2013: (!) Bugfix with custom free. Changed from "my" to "lodepng_" + prefix for the custom allocators and made it possible with a new #define to + use custom ones in your project without needing to change lodepng's code. +*) 28 jan 2013: Bugfix with color key. +*) 27 okt 2012: Tweaks in text chunk keyword length error handling. +*) 8 okt 2012: (!) Added new filter strategy (entropy) and new auto color mode. + (no palette). Better deflate tree encoding. New compression tweak settings. + Faster color conversions while decoding. Some internal cleanups. +*) 23 sep 2012: Reduced warnings in Visual Studio a little bit. +*) 1 sep 2012: (!) Removed #define's for giving custom (de)compression functions + and made it work with function pointers instead. +*) 23 jun 2012: Added more filter strategies. Made it easier to use custom alloc + and free functions and toggle #defines from compiler flags. Small fixes. +*) 6 may 2012: (!) Made plugging in custom zlib/deflate functions more flexible. +*) 22 apr 2012: (!) Made interface more consistent, renaming a lot. Removed + redundant C++ codec classes. Reduced amount of structs. Everything changed, + but it is cleaner now imho and functionality remains the same. Also fixed + several bugs and shrunk the implementation code. Made new samples. +*) 6 nov 2011: (!) By default, the encoder now automatically chooses the best + PNG color model and bit depth, based on the amount and type of colors of the + raw image. For this, autoLeaveOutAlphaChannel replaced by auto_choose_color. +*) 9 okt 2011: simpler hash chain implementation for the encoder. +*) 8 sep 2011: lz77 encoder lazy matching instead of greedy matching. +*) 23 aug 2011: tweaked the zlib compression parameters after benchmarking. + A bug with the PNG filtertype heuristic was fixed, so that it chooses much + better ones (it's quite significant). A setting to do an experimental, slow, + brute force search for PNG filter types is added. +*) 17 aug 2011: (!) changed some C zlib related function names. +*) 16 aug 2011: made the code less wide (max 120 characters per line). +*) 17 apr 2011: code cleanup. Bugfixes. Convert low to 16-bit per sample colors. +*) 21 feb 2011: fixed compiling for C90. Fixed compiling with sections disabled. +*) 11 dec 2010: encoding is made faster, based on suggestion by Peter Eastman + to optimize long sequences of zeros. +*) 13 nov 2010: added LodePNG_InfoColor_hasPaletteAlpha and + LodePNG_InfoColor_canHaveAlpha functions for convenience. +*) 7 nov 2010: added LodePNG_error_text function to get error code description. +*) 30 okt 2010: made decoding slightly faster +*) 26 okt 2010: (!) changed some C function and struct names (more consistent). + Reorganized the documentation and the declaration order in the header. +*) 08 aug 2010: only changed some comments and external samples. +*) 05 jul 2010: fixed bug thanks to warnings in the new gcc version. +*) 14 mar 2010: fixed bug where too much memory was allocated for char buffers. +*) 02 sep 2008: fixed bug where it could create empty tree that linux apps could + read by ignoring the problem but windows apps couldn't. +*) 06 jun 2008: added more error checks for out of memory cases. +*) 26 apr 2008: added a few more checks here and there to ensure more safety. +*) 06 mar 2008: crash with encoding of strings fixed +*) 02 feb 2008: support for international text chunks added (iTXt) +*) 23 jan 2008: small cleanups, and #defines to divide code in sections +*) 20 jan 2008: support for unknown chunks allowing using LodePNG for an editor. +*) 18 jan 2008: support for tIME and pHYs chunks added to encoder and decoder. +*) 17 jan 2008: ability to encode and decode compressed zTXt chunks added + Also various fixes, such as in the deflate and the padding bits code. +*) 13 jan 2008: Added ability to encode Adam7-interlaced images. Improved + filtering code of encoder. +*) 07 jan 2008: (!) changed LodePNG to use ISO C90 instead of C++. A + C++ wrapper around this provides an interface almost identical to before. + Having LodePNG be pure ISO C90 makes it more portable. The C and C++ code + are together in these files but it works both for C and C++ compilers. +*) 29 dec 2007: (!) changed most integer types to unsigned int + other tweaks +*) 30 aug 2007: bug fixed which makes this Borland C++ compatible +*) 09 aug 2007: some VS2005 warnings removed again +*) 21 jul 2007: deflate code placed in new namespace separate from zlib code +*) 08 jun 2007: fixed bug with 2- and 4-bit color, and small interlaced images +*) 04 jun 2007: improved support for Visual Studio 2005: crash with accessing + invalid std::vector element [0] fixed, and level 3 and 4 warnings removed +*) 02 jun 2007: made the encoder add a tag with version by default +*) 27 may 2007: zlib and png code separated (but still in the same file), + simple encoder/decoder functions added for more simple usage cases +*) 19 may 2007: minor fixes, some code cleaning, new error added (error 69), + moved some examples from here to lodepng_examples.cpp +*) 12 may 2007: palette decoding bug fixed +*) 24 apr 2007: changed the license from BSD to the zlib license +*) 11 mar 2007: very simple addition: ability to encode bKGD chunks. +*) 04 mar 2007: (!) tEXt chunk related fixes, and support for encoding + palettized PNG images. Plus little interface change with palette and texts. +*) 03 mar 2007: Made it encode dynamic Huffman shorter with repeat codes. + Fixed a bug where the end code of a block had length 0 in the Huffman tree. +*) 26 feb 2007: Huffman compression with dynamic trees (BTYPE 2) now implemented + and supported by the encoder, resulting in smaller PNGs at the output. +*) 27 jan 2007: Made the Adler-32 test faster so that a timewaste is gone. +*) 24 jan 2007: gave encoder an error interface. Added color conversion from any + greyscale type to 8-bit greyscale with or without alpha. +*) 21 jan 2007: (!) Totally changed the interface. It allows more color types + to convert to and is more uniform. See the manual for how it works now. +*) 07 jan 2007: Some cleanup & fixes, and a few changes over the last days: + encode/decode custom tEXt chunks, separate classes for zlib & deflate, and + at last made the decoder give errors for incorrect Adler32 or Crc. +*) 01 jan 2007: Fixed bug with encoding PNGs with less than 8 bits per channel. +*) 29 dec 2006: Added support for encoding images without alpha channel, and + cleaned out code as well as making certain parts faster. +*) 28 dec 2006: Added "Settings" to the encoder. +*) 26 dec 2006: The encoder now does LZ77 encoding and produces much smaller files now. + Removed some code duplication in the decoder. Fixed little bug in an example. +*) 09 dec 2006: (!) Placed output parameters of public functions as first parameter. + Fixed a bug of the decoder with 16-bit per color. +*) 15 okt 2006: Changed documentation structure +*) 09 okt 2006: Encoder class added. It encodes a valid PNG image from the + given image buffer, however for now it's not compressed. +*) 08 sep 2006: (!) Changed to interface with a Decoder class +*) 30 jul 2006: (!) LodePNG_InfoPng , width and height are now retrieved in different + way. Renamed decodePNG to decodePNGGeneric. +*) 29 jul 2006: (!) Changed the interface: image info is now returned as a + struct of type LodePNG::LodePNG_Info, instead of a vector, which was a bit clumsy. +*) 28 jul 2006: Cleaned the code and added new error checks. + Corrected terminology "deflate" into "inflate". +*) 23 jun 2006: Added SDL example in the documentation in the header, this + example allows easy debugging by displaying the PNG and its transparency. +*) 22 jun 2006: (!) Changed way to obtain error value. Added + loadFile function for convenience. Made decodePNG32 faster. +*) 21 jun 2006: (!) Changed type of info vector to unsigned. + Changed position of palette in info vector. Fixed an important bug that + happened on PNGs with an uncompressed block. +*) 16 jun 2006: Internally changed unsigned into unsigned where + needed, and performed some optimizations. +*) 07 jun 2006: (!) Renamed functions to decodePNG and placed them + in LodePNG namespace. Changed the order of the parameters. Rewrote the + documentation in the header. Renamed files to lodepng.cpp and lodepng.h +*) 22 apr 2006: Optimized and improved some code +*) 07 sep 2005: (!) Changed to std::vector interface +*) 12 aug 2005: Initial release (C++, decoder only) +*/ diff --git a/components/lilka/src/lilka.cpp b/components/lilka/src/lilka.cpp new file mode 100644 index 00000000..256f6589 --- /dev/null +++ b/components/lilka/src/lilka.cpp @@ -0,0 +1,34 @@ +#include +#include + +#include "lilka.h" + +namespace lilka { + +void begin() { + serial.begin(); + board.begin(); + multiboot.begin(); + buzzer.begin(); // Play notification sound + audio.begin(); + spi_begin(); + fileutils.begin(); + display.begin(); // Must be initialized AFTER SD card + controller.begin(); // Must be initialized AFTER SD card (since SD card somehow messes with GPIO) + battery.begin(); + // TODO: I2S + // TODO: Delete Task Watchdog Timer - we'll be running long tasks + // TODO: Maybe keep it? + TaskHandle_t idle_0 = xTaskGetIdleTaskHandleForCPU(0); + if (idle_0 != NULL) { + esp_task_wdt_delete(idle_0); + } +#if LILKA_VERSION > 1 + TaskHandle_t idle_1 = xTaskGetIdleTaskHandleForCPU(1); + if (idle_1 != NULL) { + esp_task_wdt_delete(idle_1); + } +#endif +} + +} // namespace lilka diff --git a/components/lilka/src/lilka.h b/components/lilka/src/lilka.h new file mode 100644 index 00000000..47715070 --- /dev/null +++ b/components/lilka/src/lilka.h @@ -0,0 +1,31 @@ +#ifndef LILKA_H +#define LILKA_H + +#include "lilka/board.h" +#include "lilka/serial.h" +#include "lilka/spi.h" +#include "lilka/controller.h" +#include "lilka/display.h" +#include "lilka/fileutils.h" +#include "lilka/battery.h" +#include "lilka/buzzer.h" +#include "lilka/ui.h" +#include "lilka/multiboot.h" +#include "lilka/resources.h" +#include "lilka/partitions.h" +#include "lilka/stringutils.h" +#include "lilka/fmath.h" +#include "lilka/audio.h" +#include "lilka/sdk.h" +#include "lilka/dynloader.h" + +namespace lilka { +/// Ініціалізація Лілки +/// +/// Ініціалізує всі підсистеми Лілки - дисплей, кнопки, файлову систему, SD-карту, батарею, п'єзо-динамік і т.д. +/// +/// Рекомендується викликати цю функцію один раз на початку програми в вашій функції ``setup()``. +void begin(); +} // namespace lilka + +#endif // LILKA_H diff --git a/components/lilka/src/lilka/alert.cpp b/components/lilka/src/lilka/alert.cpp new file mode 100644 index 00000000..cd610cd1 --- /dev/null +++ b/components/lilka/src/lilka/alert.cpp @@ -0,0 +1,81 @@ +#include "ui.h" + +namespace lilka { + +Alert::Alert(const String& title, const String& message) { + this->title = title; + this->message = message; + this->done = false; + this->button = Button::COUNT; + activationButtons.push_back(Button::A); +} + +void Alert::setTitle(const String& title) { + this->title = title; +} + +void Alert::setMessage(const String& message) { + this->message = message; +} + +void Alert::update() { + State state = controller.getState(); + lilka::_StateButtons& buttonsArray = *reinterpret_cast(&state); + std::vector