Full Code of shantigilbert/EmuELEC for AI

dev 2587930f1857 cached
5232 files
24.8 MB
6.9M tokens
1323 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (27,364K chars total). Download the full file to get everything.
Repository: shantigilbert/EmuELEC
Branch: dev
Commit: 2587930f1857
Files: 5232
Total size: 24.8 MB

Directory structure:
gitextract_da2ktlda/

├── .editorconfig
├── .github/
│   ├── FUNDING.yml
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.md
│   │   ├── config.yml
│   │   ├── feature_request.md
│   │   └── other-issue.md
│   └── config.yml
├── .gitignore
├── CHANGELOG
├── CONTRIBUTING.md
├── Makefile
├── README.md
├── config/
│   ├── addon/
│   │   ├── dummy.xml
│   │   ├── xbmc.broken.xml
│   │   ├── xbmc.python.module.xml
│   │   ├── xbmc.python.script.xml
│   │   ├── xbmc.service.library.xml
│   │   ├── xbmc.service.pluginsource.xml
│   │   └── xbmc.service.xml
│   ├── arch.aarch64
│   ├── arch.arm
│   ├── arch.x86_64
│   ├── docker/
│   │   ├── changelog.txt
│   │   ├── package.mk
│   │   └── source/
│   │       ├── bin/
│   │       │   └── docker
│   │       ├── default.py
│   │       ├── resources/
│   │       │   ├── language/
│   │       │   │   └── English/
│   │       │   │       └── strings.po
│   │       │   └── settings.xml
│   │       └── system.d/
│   │           └── docker.service
│   ├── functions
│   ├── graphic
│   ├── multithread
│   ├── noobs/
│   │   ├── marketing/
│   │   │   ├── slides/
│   │   │   │   └── noobs.psd
│   │   │   └── slides_vga/
│   │   │       └── noobs_vga.psd
│   │   ├── os.json
│   │   ├── partition_setup.sh
│   │   └── partitions.json
│   ├── optimize
│   ├── options
│   ├── options32
│   ├── path
│   ├── show_config
│   └── sources
├── create_tar.sh
├── distributions/
│   ├── CoreELEC/
│   │   ├── options
│   │   ├── show_config
│   │   ├── splash/
│   │   │   ├── Amlogic-ne/
│   │   │   │   └── progress/
│   │   │   │       └── splash-1080-config
│   │   │   └── Amlogic-ng/
│   │   │       └── progress/
│   │   │           └── splash-1080-config
│   │   └── version
│   ├── EmuELEC/
│   │   ├── options
│   │   ├── show_config
│   │   ├── splash/
│   │   │   ├── Amlogic-ne/
│   │   │   │   └── progress/
│   │   │   │       └── splash-1080-config
│   │   │   ├── Amlogic-ng/
│   │   │   │   └── progress/
│   │   │   │       └── splash-1080-config
│   │   │   └── Amlogic-no/
│   │   │       └── progress/
│   │   │           └── splash-1080-config
│   │   └── version
│   └── LibreELEC/
│       ├── kernel_options
│       ├── options
│       ├── show_config
│       └── version
├── licenses/
│   ├── 7-Zip.txt
│   ├── APL-1.0.txt
│   ├── APSL-2.0.txt
│   ├── APSL.txt
│   ├── ATI.txt
│   ├── Apache-2.0.txt
│   ├── Artistic.txt
│   ├── BSD-1-Clause.txt
│   ├── BSD-2-Clause.txt
│   ├── BSD-3-Clause.txt
│   ├── BSD-4-Clause.txt
│   ├── BSL.txt
│   ├── Clarified_Artistic.txt
│   ├── FDL.txt
│   ├── FDL1_2.txt
│   ├── FDL1_3.txt
│   ├── FLIRC.txt
│   ├── GPL-1.0-only.txt
│   ├── GPL-2.0-only.txt
│   ├── GPL-2.0-or-later.txt
│   ├── GPL-3.0-only.txt
│   ├── GPL-3.0-or-later.txt
│   ├── HIDAPI-orig.txt
│   ├── ISC.txt
│   ├── Info-ZIP.txt
│   ├── LGPL-2.0-only.txt
│   ├── LGPL-2.0-or-later.txt
│   ├── LGPL-2.1-only.txt
│   ├── LGPL-2.1-or-later.txt
│   ├── LGPL-3.0-only.txt
│   ├── LGPL-3.0-or-later.txt
│   ├── LibPNG2.txt
│   ├── MIT.txt
│   ├── MIT_Modified.txt
│   ├── MPL-1.1.txt
│   ├── MPL-2.0.txt
│   ├── NVIDIA.txt
│   ├── NextPVR.txt
│   ├── OFL-1.1.txt
│   ├── QCA.txt
│   ├── Radeon_rlc.txt
│   ├── Vim.txt
│   └── Zlib.txt
├── package_bump.sh
├── packages/
│   ├── README.md
│   ├── addons/
│   │   ├── addon-depends/
│   │   │   ├── adafruit-libraries-depends/
│   │   │   │   ├── Adafruit_Python_ADS1x15/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── Adafruit_Python_ADXL345/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── Adafruit_Python_BMP/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── Adafruit_Python_CharLCD/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── Adafruit_Python_DHT/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── Adafruit_Python_GPIO/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── Adafruit_Python_LED_Backpack/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── Adafruit_Python_LSM303/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── Adafruit_Python_MCP3008/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── Adafruit_Python_MCP4725/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── Adafruit_Python_PCA9685/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── Adafruit_Python_PureIO/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── Adafruit_Python_SI1145/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── Adafruit_Python_SSD1306/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── Adafruit_Python_TCS34725/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── Adafruit_Python_VCNL40xx/
│   │   │   │   │   └── package.mk
│   │   │   │   └── Adafruit_Python_WS2801/
│   │   │   │       └── package.mk
│   │   │   ├── argtable2/
│   │   │   │   └── package.mk
│   │   │   ├── ccid/
│   │   │   │   └── package.mk
│   │   │   ├── chrome-depends/
│   │   │   │   ├── at-spi2-atk/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── at-spi2-core/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── atk/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── chrome-libXcomposite/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── chrome-libXdamage/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── chrome-libXfixes/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── chrome-libXi/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── chrome-libXrender/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── chrome-libXtst/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── chrome-libxcb/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── chrome-libxkbcommon/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── chrome-libxshmfence/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── cups/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── gtk3/
│   │   │   │   │   ├── files/
│   │   │   │   │   │   └── settings.ini
│   │   │   │   │   ├── package.mk
│   │   │   │   │   └── patches/
│   │   │   │   │       └── disable-to-pixdata-build.patch
│   │   │   │   ├── harfbuzz-icu/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── libXScrnSaver/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── libXcursor/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── libXft/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── libxss/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── scrnsaverproto/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── unclutter/
│   │   │   │   │   └── package.mk
│   │   │   │   └── unix_ar/
│   │   │   │       └── package.mk
│   │   │   ├── comskip/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── Comskip-0001-Fix-compilation-with-gcc10.patch
│   │   │   ├── cxxtools/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       ├── cxxtools-2.2-Char_operator_eq_unsigned_int.patch
│   │   │   │       ├── cxxtools-2.2-hdstream_stdio.patch
│   │   │   │       ├── cxxtools-2.2.1-make-cxxtools-char-a-trivial-class-by-defining-the-default.patch
│   │   │   │       ├── cxxtools-3.0-gcc12-time.patch
│   │   │   │       ├── cxxtools-3.0-lld-linking-openssl.patch
│   │   │   │       └── cxxtools-crosscompile.patch
│   │   │   ├── docker/
│   │   │   │   ├── cli/
│   │   │   │   │   ├── package.mk
│   │   │   │   │   └── patches/
│   │   │   │   │       └── cli-0001-path-for-cli-plugins.patch
│   │   │   │   ├── containerd/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── ctop/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── moby/
│   │   │   │   │   ├── package.mk
│   │   │   │   │   └── patches/
│   │   │   │   │       ├── moby-001-user-addon-storage-location.patch
│   │   │   │   │       └── moby-002-use-unconfined-seccomp-profile-as-default.patch
│   │   │   │   └── tini/
│   │   │   │       └── package.mk
│   │   │   ├── dotnet-runtime-depends/
│   │   │   │   └── aspnet6-runtime/
│   │   │   │       └── package.mk
│   │   │   ├── dvb-tools-depends/
│   │   │   │   ├── blindscan-s2/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── depends/
│   │   │   │   │   ├── bitstream/
│   │   │   │   │   │   └── package.mk
│   │   │   │   │   └── libev/
│   │   │   │   │       └── package.mk
│   │   │   │   ├── dvb-apps/
│   │   │   │   │   ├── package.mk
│   │   │   │   │   └── patches/
│   │   │   │   │       ├── dvb-apps-10_reorder-includes.patch
│   │   │   │   │       ├── dvb-apps-20_build-static-libs.patch
│   │   │   │   │       ├── dvb-apps-30_remove-av7110_loadkeys.patch
│   │   │   │   │       ├── dvb-apps-40-kernel-fix-4.14.patch
│   │   │   │   │       ├── dvb-apps-50-glibc-2.31-fix.patch
│   │   │   │   │       └── dvb-apps-60-dont-build-tests.patch
│   │   │   │   ├── dvblast/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── dvbsnoop/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── mumudvb/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── szap-s2/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── t2scan/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── tune-s2/
│   │   │   │   │   └── package.mk
│   │   │   │   └── w_scan/
│   │   │   │       ├── package.mk
│   │   │   │       └── patches/
│   │   │   │           └── w_scan-0001-Fix-building-with-gcc10.patch
│   │   │   ├── enca/
│   │   │   │   └── package.mk
│   │   │   ├── enet/
│   │   │   │   └── package.mk
│   │   │   ├── faad2/
│   │   │   │   └── package.mk
│   │   │   ├── ffmpegx/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── ffmpeg-openssl3.patch
│   │   │   ├── ffmpegx-depends/
│   │   │   │   ├── x264/
│   │   │   │   │   └── package.mk
│   │   │   │   └── x265/
│   │   │   │       └── package.mk
│   │   │   ├── game-tools/
│   │   │   │   ├── bchunk/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── ecm-tools/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── iat/
│   │   │   │   │   └── package.mk
│   │   │   │   └── linuxconsoletools/
│   │   │   │       ├── package.mk
│   │   │   │       └── patches/
│   │   │   │           └── linuxconsoletools-0001-disable-building-ffmvforce.patch
│   │   │   ├── go/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── go-0001-add-ca-cert-location.patch
│   │   │   ├── hidapi/
│   │   │   │   └── package.mk
│   │   │   ├── icu/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── icu-01_ldflags.patch
│   │   │   ├── inadyn/
│   │   │   │   └── libconfuse/
│   │   │   │       ├── package.mk
│   │   │   │       └── patches/
│   │   │   │           └── gettext-0.20-libconfuse.patch
│   │   │   ├── jre-depends/
│   │   │   │   ├── apache-ant/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── jdk-aarch64-zulu/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── jdk-arm-zulu/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── jdk-x86_64-zulu/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── jre-libXinerama/
│   │   │   │   │   └── package.mk
│   │   │   │   └── jre-libbluray/
│   │   │   │       └── package.mk
│   │   │   ├── lcdd-depends/
│   │   │   │   ├── libugpio/
│   │   │   │   │   └── package.mk
│   │   │   │   └── serdisplib/
│   │   │   │       └── package.mk
│   │   │   ├── libconfig/
│   │   │   │   └── package.mk
│   │   │   ├── libdvbcsa/
│   │   │   │   └── package.mk
│   │   │   ├── libexif/
│   │   │   │   └── package.mk
│   │   │   ├── libhdhomerun/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── shared-to-static.patch
│   │   │   ├── libiconv/
│   │   │   │   └── package.mk
│   │   │   ├── libid3tag/
│   │   │   │   ├── package.mk
│   │   │   │   └── sources/
│   │   │   │       └── id3tag.pc
│   │   │   ├── libimobiledevice/
│   │   │   │   └── package.mk
│   │   │   ├── libmad/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       ├── libmad-0.15.1b-automake_1.13.patch
│   │   │   │       ├── libmad-0.15.1b-cflags-O2.patch
│   │   │   │       └── libmad-0.15.1b-cflags.patch
│   │   │   ├── libmpdclient/
│   │   │   │   └── package.mk
│   │   │   ├── librespot-depends/
│   │   │   │   └── rustup.rs/
│   │   │   │       └── package.mk
│   │   │   ├── libseccomp/
│   │   │   │   └── package.mk
│   │   │   ├── libusbmuxd/
│   │   │   │   └── package.mk
│   │   │   ├── libvncserver/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── fix-build-with-openssl-3.0.0.patch
│   │   │   ├── libvpx/
│   │   │   │   └── package.mk
│   │   │   ├── libzip/
│   │   │   │   └── package.mk
│   │   │   ├── moonlight-common-c/
│   │   │   │   └── package.mk
│   │   │   ├── moonlight-embedded/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── 01-surround-fix.patch
│   │   │   ├── mpd-mpc/
│   │   │   │   └── package.mk
│   │   │   ├── multimedia-tools-depends/
│   │   │   │   ├── depends/
│   │   │   │   │   ├── libmediainfo/
│   │   │   │   │   │   └── package.mk
│   │   │   │   │   └── libzen/
│   │   │   │   │       └── package.mk
│   │   │   │   ├── mediainfo/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── mesa-demos/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── mpg123/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── mpv-drmprime/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── opencaster/
│   │   │   │   │   ├── package.mk
│   │   │   │   │   └── patches/
│   │   │   │   │       ├── opencaster-02_headers.patch
│   │   │   │   │       └── opencaster-03_dont-build-dvbobjects.patch
│   │   │   │   ├── squeezelite/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── tsdecrypt/
│   │   │   │   │   └── package.mk
│   │   │   │   └── tstools/
│   │   │   │       ├── package.mk
│   │   │   │       └── patches/
│   │   │   │           ├── build.patch
│   │   │   │           └── crossstrip.patch
│   │   │   ├── network-tools-depends/
│   │   │   │   ├── bwm-ng/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── depends/
│   │   │   │   │   ├── libpcap/
│   │   │   │   │   │   ├── package.mk
│   │   │   │   │   │   └── patches/
│   │   │   │   │   │       └── remove-manpages.patch
│   │   │   │   │   └── libstatgrab/
│   │   │   │   │       └── package.mk
│   │   │   │   ├── iftop/
│   │   │   │   │   ├── package.mk
│   │   │   │   │   └── patches/
│   │   │   │   │       ├── iftop-Fix-building-with-gcc10.patch
│   │   │   │   │       ├── iftop-boo.patch
│   │   │   │   │       └── iftop-variable-to-be-local-due-to-pcap-1-10-0.patch
│   │   │   │   ├── iperf/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── irssi/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── lftp/
│   │   │   │   │   ├── package.mk
│   │   │   │   │   └── patches/
│   │   │   │   │       └── lftp-0001-link-readline-with-termcap.patch
│   │   │   │   ├── ncftp/
│   │   │   │   │   ├── package.mk
│   │   │   │   │   └── patches/
│   │   │   │   │       └── ncftpd-gcc10-build-fix.patch
│   │   │   │   ├── ngrep/
│   │   │   │   │   ├── package.mk
│   │   │   │   │   └── patches/
│   │   │   │   │       └── port-to-pcre2-api-and-enable-jit-compilation.patch
│   │   │   │   ├── nmap/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── rar2fs/
│   │   │   │   │   ├── package.mk
│   │   │   │   │   └── patches/
│   │   │   │   │       └── 001-remove-man-pages-1.29.3.patch
│   │   │   │   ├── sshfs/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── tcpdump/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── udpxy/
│   │   │   │   │   └── package.mk
│   │   │   │   └── wireless_tools/
│   │   │   │       └── package.mk
│   │   │   ├── opus/
│   │   │   │   └── package.mk
│   │   │   ├── pcsc-lite/
│   │   │   │   └── package.mk
│   │   │   ├── pngquant/
│   │   │   │   └── package.mk
│   │   │   ├── protobuf/
│   │   │   │   └── package.mk
│   │   │   ├── qtbase/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       ├── qtbase-0001-use-sysroot-path-for-pkgconfig-and-libtool.patch
│   │   │   │       ├── qtbase-0002-fix-build-with-gcc-11.patch
│   │   │   │       └── qtbase-0003-More-build-fixes-for-GCC-11.patch
│   │   │   ├── rpi-tools-depends/
│   │   │   │   ├── RPi.GPIO/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── colorzero/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── gpiozero/
│   │   │   │   │   └── package.mk
│   │   │   │   └── lan951x-led-ctl/
│   │   │   │       └── package.mk
│   │   │   ├── rpi_ws281x/
│   │   │   │   └── package.mk
│   │   │   ├── rsyslog-depends/
│   │   │   │   ├── libestr/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── libfastjson/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── liblogging/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── liblognorm/
│   │   │   │   │   └── package.mk
│   │   │   │   └── librelp/
│   │   │   │       └── package.mk
│   │   │   ├── runc/
│   │   │   │   └── package.mk
│   │   │   ├── sdlgamecontrollerdb/
│   │   │   │   └── package.mk
│   │   │   ├── snapcast-depends/
│   │   │   │   ├── aixlog/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── alsa-plugins/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── asio/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── libsodium/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── nqptp/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── popl/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── shairport-sync/
│   │   │   │   │   └── package.mk
│   │   │   │   └── snapcast/
│   │   │   │       ├── package.mk
│   │   │   │       └── patches/
│   │   │   │           ├── snapcast-01_makefiles.patch
│   │   │   │           └── snapcast-02_avahi.patch
│   │   │   ├── system-tools-depends/
│   │   │   │   ├── autossh/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── bottom/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── depends/
│   │   │   │   │   ├── efivar/
│   │   │   │   │   │   ├── package.mk
│   │   │   │   │   │   └── patches/
│   │   │   │   │   │       ├── efivar-01-compile-with-glibc-2.36.patch
│   │   │   │   │   │       └── efivar-01-static_lib.patch
│   │   │   │   │   ├── libmtp/
│   │   │   │   │   │   ├── package.mk
│   │   │   │   │   │   └── patches/
│   │   │   │   │   │       └── libmtp-0001-dont-execute-compiled-tools.patch
│   │   │   │   │   ├── libssh2/
│   │   │   │   │   │   └── package.mk
│   │   │   │   │   └── oniguruma/
│   │   │   │   │       └── package.mk
│   │   │   │   ├── diffutils/
│   │   │   │   │   ├── package.mk
│   │   │   │   │   └── patches/
│   │   │   │   │       └── diffutils-001-no-man-or-doc.patch
│   │   │   │   ├── dool/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── dtach/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── efibootmgr/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── encfs/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── evtest/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── fdupes/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── file/
│   │   │   │   │   ├── package.mk
│   │   │   │   │   └── patches/
│   │   │   │   │       └── file-move-magic.mgc-to-addon-data.patch
│   │   │   │   ├── getscancodes/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── hd-idle/
│   │   │   │   │   ├── package.mk
│   │   │   │   │   └── patches/
│   │   │   │   │       └── hd-idle-makefile.patch
│   │   │   │   ├── hddtemp/
│   │   │   │   │   ├── package.mk
│   │   │   │   │   └── patches/
│   │   │   │   │       ├── hddtemp-0001-add-missing-default-Language-PO-header-field.patch
│   │   │   │   │       └── hddtemp-0002-Allow-building-with-gettext-0-20.patch
│   │   │   │   ├── hid_mapper/
│   │   │   │   │   ├── package.mk
│   │   │   │   │   └── patches/
│   │   │   │   │       ├── hid_mapper-01_crosscompile.patch
│   │   │   │   │       ├── hid_mapper-02_include-sys-time.patch
│   │   │   │   │       └── hid_mapper-03_fix-parser.patch
│   │   │   │   ├── htop/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── i2c-tools/
│   │   │   │   │   ├── package.mk
│   │   │   │   │   └── patches/
│   │   │   │   │       └── pyinstalldir.patch
│   │   │   │   ├── inotify-tools/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── jq/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── libgpiod/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── lm_sensors/
│   │   │   │   │   ├── package.mk
│   │   │   │   │   └── patches/
│   │   │   │   │       └── lm_sensors-01_link-static.patch
│   │   │   │   ├── lshw/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── mc/
│   │   │   │   │   ├── package.mk
│   │   │   │   │   └── wrapper/
│   │   │   │   │       ├── mc
│   │   │   │   │       ├── mcedit
│   │   │   │   │       └── mcview
│   │   │   │   ├── mmc-utils/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── mtpfs/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── nmon/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── patch/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── pv/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── screen/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── sdparm/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── smartmontools/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── st/
│   │   │   │   │   ├── package.mk
│   │   │   │   │   └── patches/
│   │   │   │   │       ├── st-001-le_fixes.patch
│   │   │   │   │       └── st-002-scrollback-20200419-72e3f6c.patch
│   │   │   │   ├── stress-ng/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── unrar/
│   │   │   │   │   └── package.mk
│   │   │   │   └── usb-modeswitch/
│   │   │   │       └── package.mk
│   │   │   ├── tinc-depends/
│   │   │   │   └── miniupnpc/
│   │   │   │       └── package.mk
│   │   │   ├── tntnet/
│   │   │   │   └── package.mk
│   │   │   ├── tslib/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       ├── tslib-02-add-additional-eGalax-touchscreens.patch
│   │   │   │       ├── tslib-06-linear-print-coordinates.patch
│   │   │   │       ├── tslib-10-ts_uinput_touch-daemon.patch
│   │   │   │       ├── tslib-20-fbutils_fix_x64_execution.patch
│   │   │   │       └── tslib-30-support-time-bits-64.patch
│   │   │   ├── ttyd-depends/
│   │   │   │   ├── libuv/
│   │   │   │   │   └── package.mk
│   │   │   │   └── libwebsockets/
│   │   │   │       └── package.mk
│   │   │   ├── tvh-dtv-scan-tables/
│   │   │   │   └── package.mk
│   │   │   ├── vdr/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       ├── vdr-01-decrease-channels.conf-autosave-delay.patch
│   │   │   │       └── vdr-02-disable-logspam.patch
│   │   │   └── vdr-plugins/
│   │   │       ├── vdr-plugin-ddci2/
│   │   │       │   └── package.mk
│   │   │       ├── vdr-plugin-dummydevice/
│   │   │       │   └── package.mk
│   │   │       ├── vdr-plugin-dvbapi/
│   │   │       │   ├── package.mk
│   │   │       │   └── patches/
│   │   │       │       └── vdr-plugin-dvbapi-01_crosscompiling.patch
│   │   │       ├── vdr-plugin-eepg/
│   │   │       │   └── package.mk
│   │   │       ├── vdr-plugin-epgfixer/
│   │   │       │   └── package.mk
│   │   │       ├── vdr-plugin-epgsearch/
│   │   │       │   ├── package.mk
│   │   │       │   └── patches/
│   │   │       │       ├── vdr-plugin-epgsearch-02_don-t-build-unused-plugins.patch
│   │   │       │       └── vdr-plugin-epgsearch-03-no_docs.patch
│   │   │       ├── vdr-plugin-iptv/
│   │   │       │   └── package.mk
│   │   │       ├── vdr-plugin-live/
│   │   │       │   └── package.mk
│   │   │       ├── vdr-plugin-restfulapi/
│   │   │       │   ├── package.mk
│   │   │       │   └── patches/
│   │   │       │       ├── vdr-plugin-restfulapi-01-static-lib-order.patch
│   │   │       │       └── vdr-plugin-restfulapi-02-webapp-path.patch
│   │   │       ├── vdr-plugin-robotv/
│   │   │       │   └── package.mk
│   │   │       ├── vdr-plugin-satip/
│   │   │       │   └── package.mk
│   │   │       ├── vdr-plugin-streamdev/
│   │   │       │   ├── package.mk
│   │   │       │   └── patches/
│   │   │       │       ├── vdr-plugin-streamdev-01_4k_hevc_support.patch
│   │   │       │       ├── vdr-plugin-streamdev-02_2.3.9_lock_fix.patch
│   │   │       │       ├── vdr-plugin-streamdev-03_i18n.patch
│   │   │       │       └── vdr-plugin-streamdev-04_fix_vdr_2.6.x_build_error.patch
│   │   │       ├── vdr-plugin-vnsiserver/
│   │   │       │   └── package.mk
│   │   │       ├── vdr-plugin-wirbelscan/
│   │   │       │   ├── package.mk
│   │   │       │   ├── patches/
│   │   │       │   │   ├── vdr-plugin-wirbelscan-01-fixes.patch
│   │   │       │   │   └── vdr-plugin-wirbelscan-02-countries_utf8.patch
│   │   │       │   └── sources/
│   │   │       │       └── Makefile
│   │   │       ├── vdr-plugin-wirbelscancontrol/
│   │   │       │   ├── package.mk
│   │   │       │   └── patches/
│   │   │       │       └── vdr-plugin-wirbelscancontrol-02-vdr_2.3.patch
│   │   │       └── vdr-plugin-xmltv2vdr/
│   │   │           ├── package.mk
│   │   │           └── patches/
│   │   │               ├── vdr-plugin-xmltv2vdr-02_gcc721_fixes.patch
│   │   │               └── vdr-plugin-xmltv2vdr-03-fix-epgdata2xmltv-linking.patch
│   │   ├── browser/
│   │   │   ├── chrome/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── config/
│   │   │   │   │   ├── Xdefaults
│   │   │   │   │   ├── pango.modules
│   │   │   │   │   ├── pangorc
│   │   │   │   │   └── pixbuf.loaders.cache
│   │   │   │   ├── package.mk
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   ├── chrome-downloader
│   │   │   │       │   ├── chrome-start
│   │   │   │       │   └── deb_extract_data
│   │   │   │       ├── default.py
│   │   │   │       ├── resources/
│   │   │   │       │   ├── language/
│   │   │   │       │   │   └── English/
│   │   │   │       │   │       └── strings.po
│   │   │   │       │   └── settings.xml
│   │   │   │       └── settings-default.xml
│   │   │   └── chromium/
│   │   │       └── package.mk
│   │   ├── driver/
│   │   │   ├── hdhomerun/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── config/
│   │   │   │   │   └── dvbhdhomerun.sample
│   │   │   │   ├── package.mk
│   │   │   │   ├── settings-default.xml
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   └── userspace-driver.sh
│   │   │   │       ├── default.py
│   │   │   │       ├── resources/
│   │   │   │       │   ├── actions.py
│   │   │   │       │   ├── language/
│   │   │   │       │   │   └── English/
│   │   │   │       │   │       └── strings.xml
│   │   │   │       │   ├── lib/
│   │   │   │       │   │   ├── functions.py
│   │   │   │       │   │   └── xmlpp.py
│   │   │   │       │   └── settings.xml
│   │   │   │       └── sleep.d/
│   │   │   │           └── 99-hdhomerun.power
│   │   │   ├── imon-mce/
│   │   │   │   └── package.mk
│   │   │   ├── sapphire/
│   │   │   │   └── package.mk
│   │   │   ├── steamcontroller/
│   │   │   │   └── package.mk
│   │   │   └── sundtek-mediatv/
│   │   │       ├── changelog.txt
│   │   │       ├── config/
│   │   │       │   ├── sundtek.conf
│   │   │       │   └── sundtek.conf.full
│   │   │       ├── package.mk
│   │   │       ├── settings-default.xml
│   │   │       └── source/
│   │   │           ├── bin/
│   │   │           │   ├── sundtek-mediatv.start
│   │   │           │   ├── sundtek-mediatv.stop
│   │   │           │   ├── sundtek-update-driver.sh
│   │   │           │   └── userspace-driver.sh
│   │   │           ├── default.py
│   │   │           ├── resources/
│   │   │           │   ├── actions.py
│   │   │           │   ├── language/
│   │   │           │   │   ├── resource.language.de_de/
│   │   │           │   │   │   └── strings.po
│   │   │           │   │   └── resource.language.en_gb/
│   │   │           │   │       └── strings.po
│   │   │           │   ├── lib/
│   │   │           │   │   ├── functions.py
│   │   │           │   │   └── xmlpp.py
│   │   │           │   └── settings.xml
│   │   │           ├── sleep.d/
│   │   │           │   └── 99-sundtek-mediatv.power
│   │   │           └── system.d/
│   │   │               └── driver.dvb.sundtek-mediatv.service
│   │   ├── libraries/
│   │   │   └── adafruit-libraries/
│   │   │       ├── changelog.txt
│   │   │       ├── package.mk
│   │   │       └── source/
│   │   │           └── default.py
│   │   ├── repository/
│   │   │   └── repository.linuxserver.docker/
│   │   │       ├── changelog.txt
│   │   │       ├── package.mk
│   │   │       └── sources/
│   │   │           └── addon.xml
│   │   ├── script/
│   │   │   ├── driverselect/
│   │   │   │   └── package.mk
│   │   │   ├── luna/
│   │   │   │   └── package.mk
│   │   │   ├── moonlight/
│   │   │   │   └── package.mk
│   │   │   └── script.config.vdr/
│   │   │       ├── changelog.txt
│   │   │       ├── package.mk
│   │   │       └── sources/
│   │   │           └── addon.xml
│   │   ├── service/
│   │   │   ├── bluetooth-audio/
│   │   │   │   ├── changelog.txt
│   │   │   │   └── package.mk
│   │   │   ├── boblightd/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── config/
│   │   │   │   │   ├── boblight.X11.sample
│   │   │   │   │   └── boblight.conf
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   └── boblightd-2.0.5-getopt-includes.patch
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   └── boblightd.start
│   │   │   │       ├── default.py
│   │   │   │       ├── sleep.d/
│   │   │   │       │   └── boblightd.power
│   │   │   │       └── system.d/
│   │   │   │           └── service.multimedia.boblightd.service
│   │   │   ├── dispmanx_vnc/
│   │   │   │   └── package.mk
│   │   │   ├── docker/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   └── docker-config
│   │   │   │       ├── config/
│   │   │   │       │   └── docker.conf
│   │   │   │       ├── default.py
│   │   │   │       ├── examples/
│   │   │   │       │   ├── couchpotato.service
│   │   │   │       │   ├── mysql.service
│   │   │   │       │   ├── sabnzbd.service
│   │   │   │       │   ├── sickbeard.service
│   │   │   │       │   ├── transmission.service
│   │   │   │       │   └── var-lib-docker.mount
│   │   │   │       ├── lib/
│   │   │   │       │   └── dockermon.py
│   │   │   │       ├── resources/
│   │   │   │       │   ├── language/
│   │   │   │       │   │   └── English/
│   │   │   │       │   │       └── strings.po
│   │   │   │       │   └── settings.xml
│   │   │   │       └── system.d/
│   │   │   │           └── service.system.docker.service
│   │   │   ├── emby/
│   │   │   │   └── package.mk
│   │   │   ├── emby4/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   └── emby4.start
│   │   │   │       ├── default.py
│   │   │   │       ├── resources/
│   │   │   │       │   ├── language/
│   │   │   │       │   │   └── English/
│   │   │   │       │   │       └── strings.po
│   │   │   │       │   └── settings.xml
│   │   │   │       ├── settings-default.xml
│   │   │   │       └── system.d/
│   │   │   │           └── service.emby4.service
│   │   │   ├── hyperion/
│   │   │   │   ├── changelog.txt
│   │   │   │   └── package.mk
│   │   │   ├── inadyn/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   └── inadyn-service
│   │   │   │       ├── default.py
│   │   │   │       ├── resources/
│   │   │   │       │   ├── language/
│   │   │   │       │   │   └── English/
│   │   │   │       │   │       └── strings.po
│   │   │   │       │   └── settings.xml
│   │   │   │       ├── settings-default.xml
│   │   │   │       └── system.d/
│   │   │   │           └── service.system.inadyn.service
│   │   │   ├── jellyfin/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   ├── jellyfin-downloader
│   │   │   │       │   └── jellyfin-start
│   │   │   │       ├── default.py
│   │   │   │       ├── resources/
│   │   │   │       │   ├── language/
│   │   │   │       │   │   └── English/
│   │   │   │       │   │       └── strings.po
│   │   │   │       │   └── settings.xml
│   │   │   │       ├── settings-default.xml
│   │   │   │       └── system.d/
│   │   │   │           └── service.jellyfin.service
│   │   │   ├── lcdd/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   ├── lcdd-0.5.6-dm140_henlar_v0.2.patch
│   │   │   │   │   └── lcdd-0.5.6-libftdi1.patch
│   │   │   │   ├── resources/
│   │   │   │   │   └── settings.xml
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   └── lcdd.start
│   │   │   │       ├── default.py
│   │   │   │       ├── resources/
│   │   │   │       │   └── language/
│   │   │   │       │       └── English/
│   │   │   │       │           └── strings.po
│   │   │   │       └── system.d/
│   │   │   │           └── service.lcdd.service
│   │   │   ├── librespot/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   └── onevent.py
│   │   │   │       ├── default.py
│   │   │   │       └── resources/
│   │   │   │           ├── language/
│   │   │   │           │   └── English/
│   │   │   │           │       └── strings.po
│   │   │   │           ├── lib/
│   │   │   │           │   ├── external_player.py
│   │   │   │           │   ├── internal_player.py
│   │   │   │           │   ├── librespot.py
│   │   │   │           │   ├── librespot_alsa.py
│   │   │   │           │   ├── librespot_pulseaudio_rtp.py
│   │   │   │           │   ├── player.py
│   │   │   │           │   └── service.py
│   │   │   │           └── settings.xml
│   │   │   ├── locale/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   ├── resources/
│   │   │   │   │   └── settings.xml
│   │   │   │   └── source/
│   │   │   │       ├── default.py
│   │   │   │       ├── resources/
│   │   │   │       │   └── language/
│   │   │   │       │       └── resource.language.en_gb/
│   │   │   │       │           └── strings.po
│   │   │   │       └── settings-default.xml
│   │   │   ├── mariadb/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   └── mariadb-0001-disable-plugin-auth-pam.patch
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   ├── mariadb.start
│   │   │   │       │   └── mariadb.stop
│   │   │   │       ├── config/
│   │   │   │       │   └── my.cnf
│   │   │   │       ├── default.py
│   │   │   │       ├── profile.d/
│   │   │   │       │   └── 99-mysql-histfile.profile
│   │   │   │       ├── resources/
│   │   │   │       │   ├── language/
│   │   │   │       │   │   └── English/
│   │   │   │       │   │       └── strings.po
│   │   │   │       │   └── settings.xml
│   │   │   │       ├── settings-default.xml
│   │   │   │       └── system.d/
│   │   │   │           └── service.mariadb.service
│   │   │   ├── minidlna/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   └── minidlna-01-fix-config.patch
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   └── minidlna.start
│   │   │   │       ├── config/
│   │   │   │       │   └── minidlna.conf
│   │   │   │       ├── default.py
│   │   │   │       ├── resources/
│   │   │   │       │   ├── language/
│   │   │   │       │   │   └── English/
│   │   │   │       │   │       └── strings.po
│   │   │   │       │   └── settings.xml
│   │   │   │       ├── settings-default.xml
│   │   │   │       ├── sleep.d/
│   │   │   │       │   └── minidlna.power
│   │   │   │       └── system.d/
│   │   │   │           └── service.minidlna.service
│   │   │   ├── minisatip/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   └── minisatip.start
│   │   │   │       ├── default.py
│   │   │   │       ├── resources/
│   │   │   │       │   ├── language/
│   │   │   │       │   │   └── English/
│   │   │   │       │   │       └── strings.po
│   │   │   │       │   └── settings.xml
│   │   │   │       ├── settings-default.xml
│   │   │   │       ├── sleep.d/
│   │   │   │       │   └── minisatip.power
│   │   │   │       └── system.d/
│   │   │   │           └── service.minisatip.service
│   │   │   ├── mpd/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   └── mpd.start
│   │   │   │       ├── config/
│   │   │   │       │   └── mpd.conf
│   │   │   │       ├── default.py
│   │   │   │       ├── resources/
│   │   │   │       │   ├── language/
│   │   │   │       │   │   └── English/
│   │   │   │       │   │       └── strings.po
│   │   │   │       │   └── settings.xml
│   │   │   │       ├── settings-default.xml
│   │   │   │       ├── sleep.d/
│   │   │   │       │   └── mpd.power
│   │   │   │       └── system.d/
│   │   │   │           └── service.multimedia.mpd.service
│   │   │   ├── net-snmp/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   ├── net-snmp-0001-read_config.c.patch
│   │   │   │   │   └── net-snmp-0002-net-snmp-create-v3-user.in.patch
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   ├── snmpd.start
│   │   │   │       │   └── snmpd.stop
│   │   │   │       ├── default.py
│   │   │   │       ├── resources/
│   │   │   │       │   ├── language/
│   │   │   │       │   │   └── English/
│   │   │   │       │   │       └── strings.po
│   │   │   │       │   └── settings.xml
│   │   │   │       └── system.d/
│   │   │   │           └── service.net-snmp.service
│   │   │   ├── nextpvr/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   └── source/
│   │   │   │       ├── addon.py
│   │   │   │       ├── bin/
│   │   │   │       │   ├── nextpvr-downloader
│   │   │   │       │   └── nextpvr.start
│   │   │   │       ├── default.py
│   │   │   │       ├── resources/
│   │   │   │       │   ├── Language/
│   │   │   │       │   │   └── English/
│   │   │   │       │   │       └── strings.po
│   │   │   │       │   └── settings.xml
│   │   │   │       ├── settings-default.xml
│   │   │   │       └── system.d/
│   │   │   │           └── service.nextpvr.service
│   │   │   ├── oscam/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   ├── oscam-01-revision.patch
│   │   │   │   │   ├── oscam-02-link-with-ludev.patch
│   │   │   │   │   └── oscam-03-pcsc-pthread.patch
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   └── oscam.start
│   │   │   │       ├── default.py
│   │   │   │       ├── oscam-default.conf
│   │   │   │       ├── resources/
│   │   │   │       │   ├── language/
│   │   │   │       │   │   └── English/
│   │   │   │       │   │       └── strings.po
│   │   │   │       │   └── settings.xml
│   │   │   │       ├── settings-default.xml
│   │   │   │       ├── sleep.d/
│   │   │   │       │   └── oscam.power
│   │   │   │       └── system.d/
│   │   │   │           └── service.softcam.oscam.service
│   │   │   ├── pcscd/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── config/
│   │   │   │   │   └── reader.conf
│   │   │   │   ├── package.mk
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   └── pcscd.start
│   │   │   │       ├── default.py
│   │   │   │       └── system.d/
│   │   │   │           └── service.pcscd.service
│   │   │   ├── proftpd/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   └── proftpd-100-llu.patch
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   └── proftpd.start
│   │   │   │       ├── default.py
│   │   │   │       ├── etc/
│   │   │   │       │   ├── openssl.cnf
│   │   │   │       │   └── proftpd.conf
│   │   │   │       ├── resources/
│   │   │   │       │   ├── language/
│   │   │   │       │   │   └── resource.language.en_gb/
│   │   │   │       │   │       └── strings.po
│   │   │   │       │   └── settings.xml
│   │   │   │       ├── settings-default.xml
│   │   │   │       └── system.d/
│   │   │   │           └── service.proftpd.service
│   │   │   ├── prometheus-node-exporter/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   └── prometheus-node-exporter.start
│   │   │   │       ├── default.py
│   │   │   │       ├── resources/
│   │   │   │       │   ├── language/
│   │   │   │       │   │   └── English/
│   │   │   │       │   │       └── strings.po
│   │   │   │       │   └── settings.xml
│   │   │   │       ├── settings-default.xml
│   │   │   │       └── system.d/
│   │   │   │           └── service.prometheus-node-exporter.service
│   │   │   ├── rsyslog/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   └── rsyslog.init
│   │   │   │       ├── config/
│   │   │   │       │   ├── common.conf
│   │   │   │       │   ├── journal.conf
│   │   │   │       │   ├── kodi.conf
│   │   │   │       │   └── relp.conf
│   │   │   │       ├── default.py
│   │   │   │       ├── resources/
│   │   │   │       │   ├── language/
│   │   │   │       │   │   └── English/
│   │   │   │       │   │       └── strings.po
│   │   │   │       │   └── settings.xml
│   │   │   │       ├── settings-default.xml
│   │   │   │       └── system.d/
│   │   │   │           └── service.rsyslog.service
│   │   │   ├── snapclient/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   └── source/
│   │   │   │       ├── addon.py
│   │   │   │       ├── bin/
│   │   │   │       │   └── snapclient.start
│   │   │   │       ├── default.py
│   │   │   │       ├── resources/
│   │   │   │       │   ├── language/
│   │   │   │       │   │   └── English/
│   │   │   │       │   │       └── strings.po
│   │   │   │       │   └── settings.xml
│   │   │   │       ├── settings-default.xml
│   │   │   │       └── system.d/
│   │   │   │           └── service.snapclient.service
│   │   │   ├── snapserver/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   ├── snapweb/
│   │   │   │   │   ├── 3rd-party/
│   │   │   │   │   │   └── libflac.js
│   │   │   │   │   ├── config.js
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── manifest.json
│   │   │   │   │   ├── snapcontrol.js
│   │   │   │   │   ├── snapstream.js
│   │   │   │   │   └── styles.css
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   └── snapserver.start
│   │   │   │       ├── config/
│   │   │   │       │   └── pulseaudio.conf
│   │   │   │       ├── default.py
│   │   │   │       ├── resources/
│   │   │   │       │   ├── language/
│   │   │   │       │   │   └── English/
│   │   │   │       │   │       └── strings.po
│   │   │   │       │   └── settings.xml
│   │   │   │       ├── settings-default.xml
│   │   │   │       └── system.d/
│   │   │   │           └── service.snapserver.service
│   │   │   ├── syncthing/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   └── syncthing-service
│   │   │   │       ├── default.py
│   │   │   │       ├── resources/
│   │   │   │       │   ├── language/
│   │   │   │       │   │   └── English/
│   │   │   │       │   │       └── strings.po
│   │   │   │       │   └── settings.xml
│   │   │   │       ├── settings-default.xml
│   │   │   │       └── system.d/
│   │   │   │           └── service.system.syncthing.service
│   │   │   ├── tigervnc/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   └── tigervnc-system-notests.patch
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   └── tigervnc.start
│   │   │   │       ├── config/
│   │   │   │       │   └── passwd
│   │   │   │       ├── default.py
│   │   │   │       ├── resources/
│   │   │   │       │   ├── language/
│   │   │   │       │   │   └── English/
│   │   │   │       │   │       └── strings.po
│   │   │   │       │   └── settings.xml
│   │   │   │       ├── settings-default.xml
│   │   │   │       └── system.d/
│   │   │   │           └── service.tigervnc.service
│   │   │   ├── tinc/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   └── tinc-0001-fix-autoconf-archive.patch
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   └── tinc.start
│   │   │   │       ├── config/
│   │   │   │       │   ├── subnet-down
│   │   │   │       │   ├── subnet-up
│   │   │   │       │   ├── tinc-up
│   │   │   │       │   └── tinc.conf
│   │   │   │       ├── default.py
│   │   │   │       ├── resources/
│   │   │   │       │   ├── language/
│   │   │   │       │   │   └── English/
│   │   │   │       │   │       └── strings.po
│   │   │   │       │   └── settings.xml
│   │   │   │       ├── settings-default.xml
│   │   │   │       └── system.d/
│   │   │   │           └── service.system.tinc.service
│   │   │   ├── touchscreen/
│   │   │   │   ├── addon.xml
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   ├── ts_calibrate.sh
│   │   │   │       │   ├── ts_env.sh
│   │   │   │       │   └── ts_uinput_touch.sh
│   │   │   │       ├── calibrate.py
│   │   │   │       ├── config/
│   │   │   │       │   ├── ts.conf-generic
│   │   │   │       │   ├── ts.conf-udoo_15_6
│   │   │   │       │   ├── ts.conf-udoo_7
│   │   │   │       │   ├── ts.conf-waveshare
│   │   │   │       │   ├── ts_env.sh-sample
│   │   │   │       │   └── ts_env.sh-waveshare
│   │   │   │       ├── lock-screen.py
│   │   │   │       ├── resources/
│   │   │   │       │   ├── language/
│   │   │   │       │   │   ├── English/
│   │   │   │       │   │   │   └── strings.xml
│   │   │   │       │   │   └── German/
│   │   │   │       │   │       └── strings.xml
│   │   │   │       │   └── settings.xml
│   │   │   │       ├── service.py
│   │   │   │       └── system.d/
│   │   │   │           └── service.touchscreen.service
│   │   │   ├── ttyd/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   └── ttyd.start
│   │   │   │       ├── default.py
│   │   │   │       ├── resources/
│   │   │   │       │   ├── language/
│   │   │   │       │   │   └── English/
│   │   │   │       │   │       └── strings.po
│   │   │   │       │   └── settings.xml
│   │   │   │       ├── settings-default.xml
│   │   │   │       └── system.d/
│   │   │   │           └── service.ttyd.service
│   │   │   ├── tvheadend/
│   │   │   │   └── package.mk
│   │   │   ├── tvheadend42/
│   │   │   │   ├── addon.xml
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   ├── tvheadend42-01-dvb-scan-path.patch
│   │   │   │   │   ├── tvheadend42-02-hdhomerun-includes.patch
│   │   │   │   │   ├── tvheadend42-03-hdhomerun-fix.patch
│   │   │   │   │   ├── tvheadend42-04-Fix-building-with-fno-common.patch
│   │   │   │   │   ├── tvheadend42-05-webui-query-url-fix.patch
│   │   │   │   │   └── tvheadend42-06-satip-upnp-fix.patch
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   ├── tv_grab_file
│   │   │   │       │   └── tvheadend42.start
│   │   │   │       ├── default.py
│   │   │   │       ├── defaults/
│   │   │   │       │   ├── comskip/
│   │   │   │       │   │   └── comskip.ini
│   │   │   │       │   ├── config
│   │   │   │       │   ├── dvr/
│   │   │   │       │   │   └── config/
│   │   │   │       │   │       └── 8d0f5b7ae354d956d7fe5db25f5d0d24
│   │   │   │       │   ├── epggrab/
│   │   │   │       │   │   └── config
│   │   │   │       │   ├── timeshift/
│   │   │   │       │   │   └── config
│   │   │   │       │   └── xmltv/
│   │   │   │       │       └── config
│   │   │   │       ├── download.py
│   │   │   │       ├── resources/
│   │   │   │       │   ├── language/
│   │   │   │       │   │   └── English/
│   │   │   │       │   │       └── strings.po
│   │   │   │       │   └── settings.xml
│   │   │   │       ├── settings-default.xml
│   │   │   │       ├── sleep.d/
│   │   │   │       │   └── tvheadend.power
│   │   │   │       └── system.d/
│   │   │   │           └── service.tvheadend42.service
│   │   │   ├── tvheadend43/
│   │   │   │   ├── addon.xml
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   ├── tvheadend43-01-dvb-scan-path.patch
│   │   │   │   │   └── tvheadend43-02-hdhomerun-includes.patch
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   ├── tv_grab_file
│   │   │   │       │   └── tvheadend43.start
│   │   │   │       ├── default.py
│   │   │   │       ├── defaults/
│   │   │   │       │   ├── comskip/
│   │   │   │       │   │   └── comskip.ini
│   │   │   │       │   ├── config
│   │   │   │       │   ├── dvr/
│   │   │   │       │   │   └── config/
│   │   │   │       │   │       └── 8d0f5b7ae354d956d7fe5db25f5d0d24
│   │   │   │       │   ├── epggrab/
│   │   │   │       │   │   └── config
│   │   │   │       │   ├── timeshift/
│   │   │   │       │   │   └── config
│   │   │   │       │   └── xmltv/
│   │   │   │       │       └── config
│   │   │   │       ├── download.py
│   │   │   │       ├── resources/
│   │   │   │       │   ├── language/
│   │   │   │       │   │   └── English/
│   │   │   │       │   │       └── strings.po
│   │   │   │       │   └── settings.xml
│   │   │   │       ├── settings-default.xml
│   │   │   │       ├── sleep.d/
│   │   │   │       │   └── tvheadend.power
│   │   │   │       └── system.d/
│   │   │   │           └── service.tvheadend43.service
│   │   │   ├── tvmosaic/
│   │   │   │   └── package.mk
│   │   │   ├── usbmuxd/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   └── usbmuxd-0001-remove-duplicate-functions.patch
│   │   │   │   └── source/
│   │   │   │       ├── default.py
│   │   │   │       └── system.d/
│   │   │   │           └── service.usbmuxd.service
│   │   │   ├── vdr-addon/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   └── vdr.start
│   │   │   │       ├── default.py
│   │   │   │       ├── resources/
│   │   │   │       │   ├── language/
│   │   │   │       │   │   └── English/
│   │   │   │       │   │       └── strings.po
│   │   │   │       │   └── settings.xml
│   │   │   │       ├── settings-default.xml
│   │   │   │       ├── sleep.d/
│   │   │   │       │   └── vdr.power
│   │   │   │       └── system.d/
│   │   │   │           └── service.multimedia.vdr-addon.service
│   │   │   └── webgrabplus/
│   │   │       └── package.mk
│   │   ├── skin/
│   │   │   └── estouchy/
│   │   │       └── package.mk
│   │   └── tools/
│   │       ├── btrfs-progs/
│   │       │   ├── changelog.txt
│   │       │   ├── package.mk
│   │       │   └── source/
│   │       │       └── default.py
│   │       ├── dotnet-runtime/
│   │       │   ├── changelog.txt
│   │       │   └── package.mk
│   │       ├── dvb-tools/
│   │       │   ├── changelog.txt
│   │       │   ├── package.mk
│   │       │   └── source/
│   │       │       └── default.py
│   │       ├── ffmpeg-tools/
│   │       │   ├── changelog.txt
│   │       │   ├── package.mk
│   │       │   └── source/
│   │       │       ├── default.py
│   │       │       └── resources/
│   │       │           └── language/
│   │       │               └── English/
│   │       │                   └── strings.po
│   │       ├── flirc_util/
│   │       │   ├── changelog.txt
│   │       │   ├── package.mk
│   │       │   └── source/
│   │       │       └── default.py
│   │       ├── game-tools/
│   │       │   ├── changelog.txt
│   │       │   ├── package.mk
│   │       │   └── source/
│   │       │       └── default.py
│   │       ├── jre.zulu/
│   │       │   ├── changelog.txt
│   │       │   ├── package.mk
│   │       │   ├── profile.d/
│   │       │   │   └── jre.profile
│   │       │   └── source/
│   │       │       └── default.py
│   │       ├── mono/
│   │       │   └── package.mk
│   │       ├── multimedia-tools/
│   │       │   ├── changelog.txt
│   │       │   ├── package.mk
│   │       │   └── source/
│   │       │       └── default.py
│   │       ├── network-tools/
│   │       │   ├── changelog.txt
│   │       │   ├── package.mk
│   │       │   └── source/
│   │       │       └── default.py
│   │       ├── rpi-tools/
│   │       │   ├── changelog.txt
│   │       │   ├── package.mk
│   │       │   └── source/
│   │       │       └── default.py
│   │       └── system-tools/
│   │           ├── changelog.txt
│   │           ├── package.mk
│   │           └── source/
│   │               ├── bin/
│   │               │   ├── 7z
│   │               │   └── 7za
│   │               └── default.py
│   ├── audio/
│   │   ├── alsa-lib/
│   │   │   ├── config/
│   │   │   │   └── modprobe.d/
│   │   │   │       └── disable-spdif-for-hd-audio.conf
│   │   │   ├── modprobe.d/
│   │   │   │   ├── alsa-base.conf
│   │   │   │   └── intel-audio.conf
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── alsa-lib-asound.conf_configdir.patch
│   │   ├── alsa-topology-conf/
│   │   │   └── package.mk
│   │   ├── alsa-ucm-conf/
│   │   │   └── package.mk
│   │   ├── alsa-utils/
│   │   │   ├── package.mk
│   │   │   ├── scripts/
│   │   │   │   └── soundconfig
│   │   │   └── udev.d/
│   │   │       └── 90-alsa-restore.rules
│   │   ├── espeak-ng/
│   │   │   ├── package.mk
│   │   │   ├── patches/
│   │   │   │   └── PR1858-fix-compiling-in-build-directory.patch
│   │   │   └── pcaudiolib/
│   │   │       └── package.mk
│   │   ├── flac/
│   │   │   └── package.mk
│   │   ├── fluidsynth/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── libsndfile-use-static-libraries.patch
│   │   ├── lame/
│   │   │   └── package.mk
│   │   ├── ldacBT/
│   │   │   └── package.mk
│   │   ├── libcdio/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── 0001-Use-getmntent-setmntent-for-reading-mounts.patch
│   │   ├── libfreeaptx/
│   │   │   └── package.mk
│   │   ├── libldac/
│   │   │   └── package.mk
│   │   ├── libmodplug/
│   │   │   └── package.mk
│   │   ├── libogg/
│   │   │   └── package.mk
│   │   ├── libopenmpt/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── libopenmpt-add-libvorbisfile-to-pkgconfig.patch
│   │   ├── libsamplerate/
│   │   │   └── package.mk
│   │   ├── libsndfile/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── libsndfile-add-required-static-libaries-to-pkg-config.patch
│   │   ├── libvorbis/
│   │   │   └── package.mk
│   │   ├── openal-soft/
│   │   │   └── package.mk
│   │   ├── pipewire/
│   │   │   └── package.mk
│   │   ├── pulseaudio/
│   │   │   ├── config/
│   │   │   │   ├── pulse-daemon.conf.d/
│   │   │   │   │   └── README
│   │   │   │   └── system.pa
│   │   │   ├── package.mk
│   │   │   ├── patches/
│   │   │   │   ├── pulseaudio-100.01-never-append-dirty-to-server-module-version.patch
│   │   │   │   └── pulseaudio-100.02-check_uid.patch
│   │   │   ├── profile.d/
│   │   │   │   └── 99-pulseaudio.conf
│   │   │   └── system.d/
│   │   │       └── pulseaudio.service
│   │   ├── rpi-cirrus-config/
│   │   │   ├── config/
│   │   │   │   └── rpi-cirrus-config.sh.sample
│   │   │   ├── modprobe.d/
│   │   │   │   └── rpi-cirrus.conf
│   │   │   ├── package.mk
│   │   │   ├── scripts/
│   │   │   │   └── rpi-cirrus-config
│   │   │   └── udev.d/
│   │   │       └── 90-alsa-restore.rules
│   │   ├── sbc/
│   │   │   └── package.mk
│   │   ├── sidplay-libs/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── sidplay-libs-01-m4-tests.patch
│   │   │       ├── sidplay-libs-02-inherited.patch
│   │   │       ├── sidplay-libs-03-operator.patch
│   │   │       └── sidplay-libs-04-includes.patch
│   │   ├── soxr/
│   │   │   └── package.mk
│   │   ├── speex/
│   │   │   └── package.mk
│   │   ├── speexdsp/
│   │   │   └── package.mk
│   │   ├── taglib/
│   │   │   └── package.mk
│   │   ├── wavpack/
│   │   │   └── package.mk
│   │   └── wireplumber/
│   │       └── package.mk
│   ├── compress/
│   │   ├── 7-zip/
│   │   │   └── package.mk
│   │   ├── bzip2/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── bzip2-1.0.8-cflags.patch
│   │   ├── libarchive/
│   │   │   └── package.mk
│   │   ├── lz4/
│   │   │   └── package.mk
│   │   ├── lzo/
│   │   │   └── package.mk
│   │   ├── p7zip/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── p7zip-0100-CVE-2016-9296.patch
│   │   │       ├── p7zip-0200-CVE-2017-17969.patch
│   │   │       ├── p7zip-0300-CVE-2018-5996.patch
│   │   │       ├── p7zip-0400-CVE-2018-10115.patch
│   │   │       ├── p7zip-0500-gcc10-build-fix.patch
│   │   │       └── p7zip-0501-change-numMethods-from-bool-to-unsigned.patch
│   │   ├── pigz/
│   │   │   └── package.mk
│   │   ├── xz/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── xz-01-init-uninitialized-variables.patch
│   │   ├── zip/
│   │   │   └── package.mk
│   │   ├── zlib/
│   │   │   └── package.mk
│   │   └── zstd/
│   │       └── package.mk
│   ├── databases/
│   │   ├── mariadb-connector-c/
│   │   │   └── package.mk
│   │   └── sqlite/
│   │       ├── package.mk
│   │       └── patches/
│   │           └── sqlite-01_map_populate.patch
│   ├── debug/
│   │   ├── edid-decode/
│   │   │   └── package.mk
│   │   ├── gdb/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── 0001-gdbserver-ctrl-c-handling.patch
│   │   │       └── gdb-001-notex.patch
│   │   ├── libunwind/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── libunwind-0001-fix-multiple-definition.patch
│   │   │       └── libunwind-0002-add-dependant-static-libraries.patch
│   │   ├── libva-utils/
│   │   │   └── package.mk
│   │   ├── memtester/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── memtester-001-cross-compile.patch
│   │   ├── strace/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── strace-0001-autoreconf.patch
│   │   │       └── strace-0002-fix-autoconf-archive.patch
│   │   ├── vadumpcaps/
│   │   │   └── package.mk
│   │   ├── valgrind/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── valgrind-0001-enable-armv8.patch
│   │   ├── vdpauinfo/
│   │   │   └── package.mk
│   │   └── xorg-intel-gpu-tools/
│   │       └── package.mk
│   ├── devel/
│   │   ├── arm-mem/
│   │   │   └── package.mk
│   │   ├── asn1c/
│   │   │   └── package.mk
│   │   ├── attr/
│   │   │   └── package.mk
│   │   ├── autoconf/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── autoconf-autoreconf-exclude.patch
│   │   │       └── man-exclude.patch
│   │   ├── autoconf-archive/
│   │   │   └── package.mk
│   │   ├── automake/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── automake-01-fix-help2man.patch
│   │   ├── binutils/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── binutils-01-warn-for-uses-of-system-directories-when-link.patch
│   │   │       └── binutils-02-binutils-2-39-dont-error-on-missing-makeinfo.patch
│   │   ├── binutils-aarch64/
│   │   │   └── package.mk
│   │   ├── binutils-arm-none-eabi/
│   │   │   └── package.mk
│   │   ├── binutils-bpf/
│   │   │   └── package.mk
│   │   ├── binutils-or1k/
│   │   │   └── package.mk
│   │   ├── bison/
│   │   │   └── package.mk
│   │   ├── boost/
│   │   │   └── package.mk
│   │   ├── ccache/
│   │   │   └── package.mk
│   │   ├── cmake/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── cmake-001-disable-free-comp-methods.patch
│   │   ├── configtools/
│   │   │   └── package.mk
│   │   ├── crossguid/
│   │   │   └── package.mk
│   │   ├── dbus-glib/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── dbus-glib-01-dont-build-tools-examples.patch
│   │   ├── elfutils/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── elfutils-001-make-executables-optional.patch
│   │   ├── fakeroot/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── fakeroot-001-disable-docs-tests.patch
│   │   ├── flatbuffers/
│   │   │   └── package.mk
│   │   ├── flex/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── c5a26b17a2b091c560f6c4e6703e55f496bf74fa.patch
│   │   │       └── flex-002-nocrap.patch
│   │   ├── fribidi/
│   │   │   ├── package.mk
│   │   │   └── scripts/
│   │   │       └── fribidi-config
│   │   ├── gettext/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── gettext-0.18.2-non_interactive.patch
│   │   │       └── gettext-dont_build_docs_and_examples.patch
│   │   ├── glib/
│   │   │   └── package.mk
│   │   ├── glibc/
│   │   │   ├── config/
│   │   │   │   ├── gai.conf
│   │   │   │   ├── host.conf
│   │   │   │   ├── nsswitch-init.conf
│   │   │   │   └── nsswitch-target.conf
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── arm/
│   │   │       │   ├── 0001-Revert-Linux-statx-syscall-number-is-always-availabl.patch
│   │   │       │   ├── 0002-Linux-arm-fixup-statx-syscall-number-missing.patch
│   │   │       │   └── 0003-arm-disable-__NR_statx-as-it-s-not-available-in-4.9.patch
│   │   │       ├── glibc-fix-dns-with-broken-routers.patch
│   │   │       ├── glibc-ld.so.cache-to-writable-cache.patch
│   │   │       └── widevine-arm/
│   │   │           ├── glibc-HACK-Don-t-check-GLIBC_ABI_DT_RELR-support-for-Chrom.patch
│   │   │           └── glibc-tls-libwidevinecdm.so-since-4.10.2252.0-has-TLS-with.patch
│   │   ├── gmp/
│   │   │   └── package.mk
│   │   ├── gnulib/
│   │   │   └── package.mk
│   │   ├── gobject-introspection/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── gobject-introspection-0004-fix-7568.patch
│   │   ├── gperftools/
│   │   │   └── package.mk
│   │   ├── heimdal/
│   │   │   └── package.mk
│   │   ├── intltool/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── intltool-0001-fix-regex-expressions.patch
│   │   ├── json-c/
│   │   │   └── package.mk
│   │   ├── json-glib/
│   │   │   └── package.mk
│   │   ├── libaio/
│   │   │   └── package.mk
│   │   ├── libbpf/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── libbpf-fix-crosscompile-and-sysroot.patch
│   │   ├── libcap/
│   │   │   └── package.mk
│   │   ├── libcec/
│   │   │   └── package.mk
│   │   ├── libdaemon/
│   │   │   └── package.mk
│   │   ├── libevent/
│   │   │   └── package.mk
│   │   ├── libffi/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── libffi-Fix-installation-location-of-libffi.patch
│   │   │       └── libffi-fix-pkgconf.patch
│   │   ├── libfmt/
│   │   │   └── package.mk
│   │   ├── libfstrcmp/
│   │   │   └── package.mk
│   │   ├── libftdi1/
│   │   │   └── package.mk
│   │   ├── libirman/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── libirman-0001-fix-poll-include.patch
│   │   ├── libplist/
│   │   │   └── package.mk
│   │   ├── libpthread-stubs/
│   │   │   └── package.mk
│   │   ├── libtool/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── libtool-01_dont_relink_against_host.patch
│   │   │       ├── libtool-02-use_ld.patch
│   │   │       └── libtool-03-remove-help2man-dependency.patch
│   │   ├── m4/
│   │   │   └── package.mk
│   │   ├── make/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── make-02-fix-large-command-line-on-POSIX-systems.patch
│   │   ├── mimalloc/
│   │   │   └── package.mk
│   │   ├── mold/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── mold-999.01-PR740-allow-custom-mold-binary-install-path.patch
│   │   ├── mpc/
│   │   │   └── package.mk
│   │   ├── mpfr/
│   │   │   └── package.mk
│   │   ├── ncurses/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── ncurses-001-terminfo-xterm.patch
│   │   │       ├── ncurses-002-alloc-fallbacks.patch
│   │   │       ├── ncurses-003-fix_hints.patch
│   │   │       └── ncurses-004-fix_configure_pkgconfig.patch
│   │   ├── pcre/
│   │   │   └── package.mk
│   │   ├── pcre2/
│   │   │   └── package.mk
│   │   ├── pkg-config/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── 0001-Add-support-for-multiple-sysroots.patch
│   │   ├── popt/
│   │   │   └── package.mk
│   │   ├── rapidjson/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── rapidjson-0001-remove_custom_cxx_flags.patch
│   │   ├── readline/
│   │   │   └── package.mk
│   │   ├── shared-mime-info/
│   │   │   └── package.mk
│   │   ├── slang/
│   │   │   └── package.mk
│   │   ├── spdlog/
│   │   │   └── package.mk
│   │   ├── swig/
│   │   │   └── package.mk
│   │   ├── tbb/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── tbb-999.01-PR824-retry-if-pthread_create-fails-with-EAGAIN.patch
│   │   ├── xxd/
│   │   │   └── package.mk
│   │   └── yajl/
│   │       └── package.mk
│   ├── emulation/
│   │   ├── cyclone68000/
│   │   │   └── package.mk
│   │   ├── libretro-2048/
│   │   │   └── package.mk
│   │   ├── libretro-atari800/
│   │   │   └── package.mk
│   │   ├── libretro-beetle-bsnes/
│   │   │   └── package.mk
│   │   ├── libretro-beetle-gba/
│   │   │   └── package.mk
│   │   ├── libretro-beetle-lynx/
│   │   │   └── package.mk
│   │   ├── libretro-beetle-ngp/
│   │   │   └── package.mk
│   │   ├── libretro-beetle-pce-fast/
│   │   │   └── package.mk
│   │   ├── libretro-beetle-pcfx/
│   │   │   └── package.mk
│   │   ├── libretro-beetle-psx/
│   │   │   └── package.mk
│   │   ├── libretro-beetle-supergrafx/
│   │   │   └── package.mk
│   │   ├── libretro-beetle-vb/
│   │   │   └── package.mk
│   │   ├── libretro-beetle-wswan/
│   │   │   └── package.mk
│   │   ├── libretro-bluemsx/
│   │   │   └── package.mk
│   │   ├── libretro-bnes/
│   │   │   └── package.mk
│   │   ├── libretro-bsnes-mercury-accuracy/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── libretro-bsnes-mercury-accuracy-0001_fix-cross-compile.patch
│   │   ├── libretro-bsnes-mercury-balanced/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── libretro-bsnes-mercury-balanced-0001_fix-cross-compile.patch
│   │   ├── libretro-bsnes-mercury-performance/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── libretro-bsnes-mercury-performance-0001_fix-cross-compile.patch
│   │   ├── libretro-cap32/
│   │   │   └── package.mk
│   │   ├── libretro-common/
│   │   │   └── package.mk
│   │   ├── libretro-dinothawr/
│   │   │   └── package.mk
│   │   ├── libretro-dosbox/
│   │   │   └── package.mk
│   │   ├── libretro-dosbox-pure/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── libretro-dosbox-pure-001-cross-compile-fix.patch
│   │   ├── libretro-fbneo/
│   │   │   └── package.mk
│   │   ├── libretro-fceumm/
│   │   │   └── package.mk
│   │   ├── libretro-fmsx/
│   │   │   └── package.mk
│   │   ├── libretro-fsuae/
│   │   │   └── package.mk
│   │   ├── libretro-fuse/
│   │   │   └── package.mk
│   │   ├── libretro-gambatte/
│   │   │   └── package.mk
│   │   ├── libretro-genplus/
│   │   │   └── package.mk
│   │   ├── libretro-gw/
│   │   │   └── package.mk
│   │   ├── libretro-handy/
│   │   │   └── package.mk
│   │   ├── libretro-hatari/
│   │   │   └── package.mk
│   │   ├── libretro-mame2000/
│   │   │   └── package.mk
│   │   ├── libretro-mame2003/
│   │   │   └── package.mk
│   │   ├── libretro-mame2003_plus/
│   │   │   └── package.mk
│   │   ├── libretro-mame2010/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── libretro-mame2010-0001_fix-cross-build.patch
│   │   ├── libretro-mame2015/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── libretro-mame2015-100.01-cross-compile.patch
│   │   │       └── libretro-mame2015-100.02-python-3.patch
│   │   ├── libretro-mame2016/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── bgfx.patch
│   │   │       ├── build.patch
│   │   │       ├── genie.patch
│   │   │       ├── pregenerate.patch
│   │   │       └── python3.patch
│   │   ├── libretro-mesen/
│   │   │   └── package.mk
│   │   ├── libretro-meteor/
│   │   │   └── package.mk
│   │   ├── libretro-mgba/
│   │   │   └── package.mk
│   │   ├── libretro-mrboom/
│   │   │   └── package.mk
│   │   ├── libretro-nestopia/
│   │   │   └── package.mk
│   │   ├── libretro-nx/
│   │   │   └── package.mk
│   │   ├── libretro-o2em/
│   │   │   └── package.mk
│   │   ├── libretro-opera/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── libretro-opera-995.01-crosscompile.patch
│   │   ├── libretro-pcsx-rearmed/
│   │   │   └── package.mk
│   │   ├── libretro-picodrive/
│   │   │   └── package.mk
│   │   ├── libretro-pokemini/
│   │   │   └── package.mk
│   │   ├── libretro-prboom/
│   │   │   └── package.mk
│   │   ├── libretro-prosystem/
│   │   │   └── package.mk
│   │   ├── libretro-quicknes/
│   │   │   └── package.mk
│   │   ├── libretro-sameboy/
│   │   │   └── package.mk
│   │   ├── libretro-scummvm/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── 0001-libretro-Move-scummvm.ini-to-writable-save-directory.patch
│   │   ├── libretro-snes9x/
│   │   │   └── package.mk
│   │   ├── libretro-snes9x2002/
│   │   │   └── package.mk
│   │   ├── libretro-snes9x2010/
│   │   │   └── package.mk
│   │   ├── libretro-stella/
│   │   │   └── package.mk
│   │   ├── libretro-tgbdual/
│   │   │   └── package.mk
│   │   ├── libretro-tyrquake/
│   │   │   └── package.mk
│   │   ├── libretro-uae/
│   │   │   └── package.mk
│   │   ├── libretro-uae4arm/
│   │   │   └── package.mk
│   │   ├── libretro-vba-next/
│   │   │   └── package.mk
│   │   ├── libretro-vbam/
│   │   │   └── package.mk
│   │   ├── libretro-vecx/
│   │   │   └── package.mk
│   │   ├── libretro-vice/
│   │   │   └── package.mk
│   │   ├── libretro-vircon32/
│   │   │   └── package.mk
│   │   ├── libretro-virtualjaguar/
│   │   │   └── package.mk
│   │   ├── libretro-yabause/
│   │   │   └── package.mk
│   │   └── rcheevos/
│   │       ├── package.mk
│   │       └── source/
│   │           └── CMakeLists.txt
│   ├── graphics/
│   │   ├── assimp/
│   │   │   └── package.mk
│   │   ├── bcm2835-driver/
│   │   │   └── package.mk
│   │   ├── cairo/
│   │   │   └── package.mk
│   │   ├── ftgl/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── ftgl-01-cmake.patch
│   │   │       └── ftgl-01-ftgl-disable-docs.patch
│   │   ├── gdk-pixbuf/
│   │   │   └── package.mk
│   │   ├── giflib/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── giflib-01-static-lib.patch
│   │   ├── glew/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── glew-01-fix-pkgconf.patch
│   │   ├── glm/
│   │   │   ├── config/
│   │   │   │   ├── glm.pc
│   │   │   │   ├── glmConfig.cmake
│   │   │   │   ├── glmConfigVersion.cmake
│   │   │   │   └── glmTargets.cmake
│   │   │   └── package.mk
│   │   ├── glmark2/
│   │   │   └── package.mk
│   │   ├── glu/
│   │   │   └── package.mk
│   │   ├── harfbuzz/
│   │   │   └── package.mk
│   │   ├── jasper/
│   │   │   └── package.mk
│   │   ├── kmscube/
│   │   │   └── package.mk
│   │   ├── kmsxx/
│   │   │   └── package.mk
│   │   ├── lcms2/
│   │   │   └── package.mk
│   │   ├── libde265/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── libde265-0002-Add-CMake-option-ENABLE-ENCODER.patch
│   │   ├── libdrm/
│   │   │   └── package.mk
│   │   ├── libepoxy/
│   │   │   └── package.mk
│   │   ├── libglvnd/
│   │   │   └── package.mk
│   │   ├── libheif/
│   │   │   └── package.mk
│   │   ├── libjpeg-turbo/
│   │   │   └── package.mk
│   │   ├── libmali/
│   │   │   ├── package.mk
│   │   │   ├── scripts/
│   │   │   │   └── libmali-setup
│   │   │   └── system.d/
│   │   │       └── libmali-setup.service
│   │   ├── libpng/
│   │   │   └── package.mk
│   │   ├── libprojectM/
│   │   │   └── package.mk
│   │   ├── libraw/
│   │   │   └── package.mk
│   │   ├── libspng/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── libspng-0001-implement-BGRA8-for-framebuffer.patch
│   │   ├── libwebp/
│   │   │   └── package.mk
│   │   ├── mesa/
│   │   │   └── package.mk
│   │   ├── nvidia/
│   │   │   ├── modprobe.d/
│   │   │   │   └── nvidia-modesetting.conf
│   │   │   └── package.mk
│   │   ├── pango/
│   │   │   ├── config/
│   │   │   │   ├── pango.modules
│   │   │   │   └── pangorc
│   │   │   └── package.mk
│   │   ├── tiff/
│   │   │   └── package.mk
│   │   └── vulkan/
│   │       ├── glslang/
│   │       │   ├── package.mk
│   │       │   └── patches/
│   │       │       └── glslang-100.01-build-static-spirv-tools.patch
│   │       ├── spirv-headers/
│   │       │   └── package.mk
│   │       ├── spirv-tools/
│   │       │   └── package.mk
│   │       ├── vkmark/
│   │       │   ├── package.mk
│   │       │   └── patches/
│   │       │       └── vkmark-999.01-PR47-drop-the-vkCreateDmaBufImageINTEL-extension.patch
│   │       ├── vulkan-headers/
│   │       │   └── package.mk
│   │       ├── vulkan-loader/
│   │       │   └── package.mk
│   │       └── vulkan-tools/
│   │           ├── package.mk
│   │           └── patches/
│   │               ├── vulkan-tools-995.01-cmakelists-opts.patch
│   │               └── vulkan-tools-995.04-fix-glslangValidator-logik.patch
│   ├── lang/
│   │   ├── Python3/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── 0001-Make-the-build-of-pyc-files-conditional.patch
│   │   │       ├── 0002-Disable-buggy_getaddrinfo-configure-test-when-cross-.patch
│   │   │       ├── 0003-Add-infrastructure-to-disable-the-build-of-certain-e.patch
│   │   │       ├── 0004-Adjust-library-header-paths-for-cross-compilation.patch
│   │   │       ├── 0005-Don-t-look-in-usr-lib-termcap-for-libraries.patch
│   │   │       ├── 0006-Don-t-add-multiarch-paths.patch
│   │   │       ├── 0007-Abort-on-failed-module-build.patch
│   │   │       ├── 0008-Serial-ioctl-workaround.patch
│   │   │       ├── 0009-Do-not-adjust-the-shebang-of-Python-scripts-for-cros.patch
│   │   │       ├── 0010-Misc-python-config.sh.in-ensure-sed-invocations-only.patch
│   │   │       ├── 0011-Add-an-option-to-disable-pydoc.patch
│   │   │       ├── 0012-Add-an-option-to-disable-lib2to3.patch
│   │   │       ├── 0013-Add-option-to-disable-the-sqlite3-module.patch
│   │   │       ├── 0014-Add-an-option-to-disable-the-tk-module.patch
│   │   │       ├── 0015-Add-an-option-to-disable-the-curses-module.patch
│   │   │       ├── 0016-Add-an-option-to-disable-expat.patch
│   │   │       ├── 0017-Add-an-option-to-disable-CJK-codecs.patch
│   │   │       ├── 0018-Add-an-option-to-disable-NIS.patch
│   │   │       ├── 0019-Add-an-option-to-disable-unicodedata.patch
│   │   │       ├── 0020-Add-an-option-to-disable-IDLE.patch
│   │   │       ├── 0021-Add-an-option-to-disable-decimal.patch
│   │   │       ├── 0022-Add-an-option-to-disable-the-ossaudiodev-module.patch
│   │   │       ├── 0023-Add-an-option-to-disable-openssl-support.patch
│   │   │       ├── 0024-Add-an-option-to-disable-the-readline-module.patch
│   │   │       ├── 0025-Add-options-to-disable-zlib-bzip2-and-xz-modules.patch
│   │   │       ├── 0026-python-config.sh-don-t-reassign-prefix.patch
│   │   │       ├── 0027-Add-an-option-to-disable-uuid-module.patch
│   │   │       ├── 0029-configure.ac-fixup-CC-print-multiarch-output-for-mus.patch
│   │   │       ├── 0030-Add-an-option-to-disable-the-berkeleydb-module.patch
│   │   │       ├── 0031-lib-crypt-uClibc-ng-doesn-t-set-errno-when-encryptio.patch
│   │   │       ├── Python3-0000-default-is-optimized.patch
│   │   │       ├── Python3-0201-xcompile.patch
│   │   │       ├── Python3-0202-xcompile.patch
│   │   │       ├── Python3-0300-generate-legacy-pyc-bytecode.patch
│   │   │       ├── Python3-0400-fix-bpo5537.patch
│   │   │       └── arm/
│   │   │           └── Python3-0001-fix_platform_machine_func_for_32bit_userspace.patch
│   │   ├── gcc/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── gcc-4.8.2-disable_multilib_i386_linux64.patch
│   │   │       ├── gcc-allow-newer-autoconf.patch
│   │   │       └── gcc-crosscompile-badness.patch
│   │   ├── gcc-aarch64/
│   │   │   └── package.mk
│   │   ├── gcc-arm-none-eabi/
│   │   │   └── package.mk
│   │   ├── gcc-bpf/
│   │   │   └── package.mk
│   │   ├── gcc-or1k/
│   │   │   └── package.mk
│   │   ├── llvm/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── llvm-14.0.0-force-disable-cmakelist-options.patch
│   │   │       └── llvm-15.0.0-D108864-misleading-indentation.patch
│   │   ├── lua52/
│   │   │   ├── config/
│   │   │   │   └── lua52.pc
│   │   │   └── package.mk
│   │   ├── lua54/
│   │   │   ├── config/
│   │   │   │   └── lua54.pc
│   │   │   └── package.mk
│   │   └── nasm/
│   │       └── package.mk
│   ├── lib32/
│   │   ├── audio/
│   │   │   ├── lib32-SDL2_mixer/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-alsa-lib/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-flac/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-libmodplug/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-libogg/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-libpulse/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-libsndfile/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-libvorbis/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-libvorbisidec/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-mpg123-compat/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-openal-soft/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-opus/
│   │   │   │   └── package.mk
│   │   │   └── lib32-opusfile/
│   │   │       └── package.mk
│   │   ├── compress/
│   │   │   ├── lib32-bzip2/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-libzip/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-zlib/
│   │   │   │   └── package.mk
│   │   │   └── lib32-zstd/
│   │   │       └── package.mk
│   │   ├── devel/
│   │   │   ├── lib32-binutils/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-fribidi/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-glib/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-glibc/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-gmp/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-libcap/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-libffi/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-libpcap/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-libtool/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-linux-headers/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-pcre/
│   │   │   │   └── package.mk
│   │   │   └── lib32-pcre2/
│   │   │       └── package.mk
│   │   ├── emuelec/
│   │   │   ├── emulators/
│   │   │   │   ├── lib32-box86/
│   │   │   │   │   └── package.mk
│   │   │   │   └── lib32-droidports/
│   │   │   │       └── package.mk
│   │   │   ├── libretro/
│   │   │   │   ├── lib32-desmume/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── lib32-flycast/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── lib32-mupen64plus/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── lib32-parallel-n64/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── lib32-pcsx_rearmed/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── lib32-retroarch/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── lib32-retrorun/
│   │   │   │   │   └── package.mk
│   │   │   │   └── lib32-uae4arm/
│   │   │   │       └── package.mk
│   │   │   └── ports/
│   │   │       └── lib32-bennugd-monolithic/
│   │   │           └── package.mk
│   │   ├── graphics/
│   │   │   ├── lib32-SDL2_image/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-cairo/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-gl4es/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-harfbuzz/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-libdrm/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-libpng/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-librga/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-mali-bifrost/
│   │   │   │   └── package.mk
│   │   │   └── lib32-opengl-meson/
│   │   │       └── package.mk
│   │   ├── lang/
│   │   │   └── lib32-gcc/
│   │   │       └── package.mk
│   │   ├── multimedia/
│   │   │   ├── lib32-SDL2/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-ffmpeg/
│   │   │   │   └── package.mk
│   │   │   └── lib32-libass/
│   │   │       └── package.mk
│   │   ├── print/
│   │   │   └── lib32-freetype/
│   │   │       └── package.mk
│   │   ├── readme.MD
│   │   ├── security/
│   │   │   ├── lib32-gnutls/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-nettle/
│   │   │   │   └── package.mk
│   │   │   └── lib32-openssl/
│   │   │       └── package.mk
│   │   ├── sysutils/
│   │   │   ├── lib32-dbus/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-libevdev/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-libgo2/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-libusb/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-systemd-libs/
│   │   │   │   └── package.mk
│   │   │   └── lib32-util-linux/
│   │   │       └── package.mk
│   │   ├── textproc/
│   │   │   ├── lib32-expat/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-libidn2/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-libxml2/
│   │   │   │   └── package.mk
│   │   │   └── lib32-tre/
│   │   │       └── package.mk
│   │   ├── tools/
│   │   │   ├── lib32-ldconfig/
│   │   │   │   ├── package.mk
│   │   │   │   └── system.d/
│   │   │   │       └── ldconfig.service
│   │   │   └── lib32-nold/
│   │   │       └── package.mk
│   │   ├── virtual/
│   │   │   ├── lib32-essential/
│   │   │   │   └── package.mk
│   │   │   └── lib32-toolchain/
│   │   │       └── package.mk
│   │   └── x11/
│   │       ├── lib/
│   │       │   ├── lib32-libpciaccess/
│   │       │   │   └── package.mk
│   │       │   └── lib32-pixman/
│   │       │       └── package.mk
│   │       ├── other/
│   │       │   └── lib32-fontconfig/
│   │       │       └── package.mk
│   │       └── util/
│   │           └── lib32-util-macros/
│   │               └── package.mk
│   ├── linux/
│   │   ├── package.mk
│   │   ├── patches/
│   │   │   ├── default/
│   │   │   │   ├── linux-020-ALSA-pcm-fix-ELD-constraints-for-E-AC3-DTS-HD-and-ML.patch
│   │   │   │   ├── linux-021-ASoC-hdmi-codec-don-t-set-channel-and-speaker-info-f.patch
│   │   │   │   ├── linux-022-ASoC-hdmi-codec-Fix-broken-channel-map-reporting.patch
│   │   │   │   ├── linux-051-ouya_controller_support.patch
│   │   │   │   ├── linux-058.05-hid_sony-add_autorepeat_for_PS3_remotes.patch
│   │   │   │   ├── linux-062-imon_pad_ignore_diagonal.patch
│   │   │   │   ├── linux-121-rtw88-linux-next-6-2.patch
│   │   │   │   ├── linux-122-rtw88-USB-fixes.patch
│   │   │   │   ├── linux-122-rtw88-USB-fixes2.patch
│   │   │   │   ├── linux-122-rtw88-fix-rcu-lock.patch
│   │   │   │   ├── linux-122-rtw88-rfc-v1.patch
│   │   │   │   ├── linux-150-dev_input_xpad_add_8bitdo_pro_2_wired_controller_support.patch
│   │   │   │   ├── linux-999-no-lzma-in-x86-perf-build.patch
│   │   │   │   └── linux-999.02-0001-pm-disable-async-suspend-resume-by-default.patch
│   │   │   └── raspberrypi/
│   │   │       ├── linux-051-ouya_controller_support.patch
│   │   │       └── linux-058.05-hid_sony-add_autorepeat_for_PS3_remotes.patch
│   │   ├── sysctl.d/
│   │   │   ├── network.conf
│   │   │   └── qdisc.conf
│   │   └── udev.d/
│   │       ├── 30-disable-wakeup.rules
│   │       └── 40-modeswitch.rules
│   ├── linux-driver-addons/
│   │   └── dvb/
│   │       ├── crazycat/
│   │       │   ├── changelog.txt
│   │       │   ├── package.mk
│   │       │   ├── patches/
│   │       │   │   └── disable-pci/
│   │       │   │       └── crazycat-03-disable-partly-pci.patch
│   │       │   └── source/
│   │       │       └── default.py
│   │       ├── depends/
│   │       │   ├── media_tree/
│   │       │   │   └── package.mk
│   │       │   └── media_tree_cc/
│   │       │       └── package.mk
│   │       ├── digital_devices/
│   │       │   ├── changelog.txt
│   │       │   ├── package.mk
│   │       │   └── source/
│   │       │       └── default.py
│   │       └── dvb-latest/
│   │           ├── changelog.txt
│   │           ├── package.mk
│   │           ├── patches/
│   │           │   └── disable-pci/
│   │           │       └── dvb-latest-03-disable-partly-pci.patch
│   │           └── source/
│   │               └── default.py
│   ├── linux-drivers/
│   │   ├── RTL8192DU/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── RTL8192DU-0001-remove_overlapping_pids.patch
│   │   │       └── aarch64/
│   │   │           └── RTL8192DU-0101-PR63.patch
│   │   ├── RTL8812AU/
│   │   │   └── package.mk
│   │   ├── bcm_sta/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── bcm_sta-0001-change-eth-to-wlan.patch
│   │   │       ├── bcm_sta-0002-user_ioctl.patch
│   │   │       ├── bcm_sta-0003-remove-date-time-macros.patch
│   │   │       ├── bcm_sta-0004-null-pointer-crash.patch
│   │   │       ├── bcm_sta-0005-rdtscl.patch
│   │   │       ├── bcm_sta-0006-kernel-4.7.patch
│   │   │       ├── bcm_sta-0007-kernel-4.8.patch
│   │   │       ├── bcm_sta-0008-kernel-4.11.patch
│   │   │       ├── bcm_sta-0009-kernel-4.12.patch
│   │   │       ├── bcm_sta-0010-kernel-4.15.patch
│   │   │       ├── bcm_sta-0011-fix-kernel-warnings.patch
│   │   │       ├── bcm_sta-0012-kernel-4.14.patch
│   │   │       ├── bcm_sta-0200-kernel-5.1-rc1-fix.patch
│   │   │       ├── bcm_sta-0300-kernel-5.6-rc1-fix.patch
│   │   │       ├── bcm_sta-0400-kernel-5.9-fix.patch
│   │   │       ├── bcm_sta-0500-kernel-5.10-fix.patch
│   │   │       ├── bcm_sta-0600-kernel-5.17-fix.patch
│   │   │       ├── bcm_sta-0600-kernel-5.18-fix.patch
│   │   │       ├── bcm_sta-0600-kernel-6.0-fix.patch
│   │   │       └── bcm_sta-0600-kernel-6.1-fix.patch
│   │   ├── mali-bifrost/
│   │   │   └── package.mk
│   │   ├── mali-midgard/
│   │   │   └── package.mk
│   │   └── mali-utgard/
│   │       └── package.mk
│   ├── linux-firmware/
│   │   ├── brcmfmac_sdio-firmware/
│   │   │   ├── package.mk
│   │   │   ├── scripts/
│   │   │   │   └── brcmfmac-firmware-setup
│   │   │   └── system.d/
│   │   │       └── brcmfmac-firmware.service
│   │   ├── brcmfmac_sdio-firmware-imx/
│   │   │   ├── package.mk
│   │   │   ├── system.d/
│   │   │   │   └── brcmfmac_sdio-firmware@.service
│   │   │   └── udev.d/
│   │   │       └── 80-brcmfmac_sdio.rules
│   │   ├── brcmfmac_sdio-firmware-rpi/
│   │   │   └── package.mk
│   │   ├── dvb-firmware/
│   │   │   └── package.mk
│   │   ├── firmware-dragonboard/
│   │   │   └── package.mk
│   │   ├── firmware-imx/
│   │   │   └── package.mk
│   │   ├── intel-ucode/
│   │   │   ├── package.mk
│   │   │   └── sources/
│   │   │       └── intel-microcode2ucode.c
│   │   ├── iwlwifi-firmware/
│   │   │   └── package.mk
│   │   ├── kernel-firmware/
│   │   │   └── package.mk
│   │   ├── misc-firmware/
│   │   │   └── package.mk
│   │   ├── rtl8723bs_bt/
│   │   │   ├── package.mk
│   │   │   ├── patches/
│   │   │   │   ├── rtl8723bs_bt-001-Makefile.patch
│   │   │   │   └── rtl8723bs_bt-002-firmware_path.patch
│   │   │   ├── system.d/
│   │   │   │   └── rtl8723bs_bt-firmware.service
│   │   │   └── udev.d/
│   │   │       └── 80-rtl8723_bt.rules
│   │   └── wlan-firmware/
│   │       └── package.mk
│   ├── mediacenter/
│   │   ├── JsonSchemaBuilder/
│   │   │   └── package.mk
│   │   ├── LibreELEC-settings/
│   │   │   ├── package.mk
│   │   │   ├── scripts/
│   │   │   │   ├── backup-restore
│   │   │   │   └── factory-reset
│   │   │   └── system.d/
│   │   │       ├── backup-restore.service
│   │   │       ├── backup-restore.target
│   │   │       ├── factory-reset.service
│   │   │       └── factory-reset.target
│   │   ├── TexturePacker/
│   │   │   └── package.mk
│   │   ├── kodi/
│   │   │   ├── config/
│   │   │   │   ├── 70-libinput-ignore-power-button.rules
│   │   │   │   ├── advancedsettings.xml
│   │   │   │   ├── appliance-gbm-generic.xml
│   │   │   │   ├── appliance-gbm.xml
│   │   │   │   ├── appliance.xml
│   │   │   │   ├── guisettings.xml
│   │   │   │   ├── kodi.conf.in
│   │   │   │   ├── network_wait
│   │   │   │   ├── repository.libreelec.tv/
│   │   │   │   │   └── addon.xml
│   │   │   │   └── sources.xml
│   │   │   ├── debug.d/
│   │   │   │   └── kodi.conf
│   │   │   ├── package.mk
│   │   │   ├── patches/
│   │   │   │   ├── README.patches
│   │   │   │   ├── cec-framework/
│   │   │   │   │   └── kodi-100.17-tinker-s-cec-disable-polling.patch
│   │   │   │   ├── drmprime-filter/
│   │   │   │   │   ├── 0001-WIP-DVDVideoCodecDRMPRIME-add-support-for-filters.patch
│   │   │   │   │   ├── 0002-WIP-DRMPRIME-deinterlace-filter.patch
│   │   │   │   │   ├── 0003-DVDVideoCodecDRMPRIME-Avoid-exception-with-AV_PIX_FM.patch
│   │   │   │   │   ├── 0004-DVDVideoCodecDRMPRIME-Leave-deinterlace-filter-activ.patch
│   │   │   │   │   ├── 0005-SetVideoInterlaced-Set-and-unset-deinterlace-method-.patch
│   │   │   │   │   ├── 0006-DVDVideoCodecDRMPRIME-Close-deinterlace-filter-on-er.patch
│   │   │   │   │   └── 0007-DVDVideoCodecDRMPRIME-Fix-missing-flush-after-eof.patch
│   │   │   │   ├── kodi-100.02-add-libreelec.tv-RSS-news.patch
│   │   │   │   ├── kodi-100.03-disable-online-check.patch
│   │   │   │   ├── kodi-100.04-use-udevil-to-umount.patch
│   │   │   │   ├── kodi-100.05-make-binary-addons-executable.patch
│   │   │   │   ├── kodi-100.07-disable-minimize.patch
│   │   │   │   ├── kodi-100.08-setup-timezone.patch
│   │   │   │   ├── kodi-100.09-use-a-wrapper-to-setup-service-addons.patch
│   │   │   │   ├── kodi-100.10-handle-SIGTERM.patch
│   │   │   │   ├── kodi-100.13-udevprovider-filter-out-OE-specific-mounts.patch
│   │   │   │   ├── kodi-100.15-rename-default-pulse-device.patch
│   │   │   │   ├── kodi-100.16-remove-sysinfo-battery.patch
│   │   │   │   ├── kodi-100.25-hack-fix-texture-packer-cmake-source-dir.patch
│   │   │   │   ├── kodi-100.26-disable-internal-texturepacker.patch
│   │   │   │   ├── kodi-100.30-addons-refresh-etc-environment.patch
│   │   │   │   ├── kodi-100.32.add-le-repository-to-officials.patch
│   │   │   │   ├── kodi-100.40-estuary-settings-icon.patch
│   │   │   │   ├── kodi-995.10-devinputmappings.patch
│   │   │   │   ├── kodi-995.21-keymaps-change-remote-poweroff-action-to-show-shutdo.patch
│   │   │   │   ├── kodi-999.15-disable-using-tv-menu-language-by-default.patch
│   │   │   │   ├── kodi-999.20-headers-only.patch
│   │   │   │   └── wayland/
│   │   │   │       ├── kodi-995.01-fix-missing-wayland-scanner-pkg-config.patch
│   │   │   │       └── kodi-999.16-PR20632-base-m_bFullScreenRoot-setting-on-res-infos-bFullScreen.patch
│   │   │   ├── profile.d/
│   │   │   │   ├── 00-addons.conf
│   │   │   │   └── 99-kodi.conf
│   │   │   ├── scripts/
│   │   │   │   ├── kodi-config
│   │   │   │   ├── kodi-remote
│   │   │   │   ├── kodi-safe-mode
│   │   │   │   ├── kodi.sh
│   │   │   │   ├── pastekodi
│   │   │   │   ├── service-addon-wrapper
│   │   │   │   ├── setwakeup.sh
│   │   │   │   └── xml_merge.py
│   │   │   ├── sleep.d/
│   │   │   │   └── openelec-sleep.sh
│   │   │   ├── sleep.d.serial/
│   │   │   │   ├── 10-addon-sleep.sh
│   │   │   │   └── 20-custom-sleep.sh
│   │   │   ├── system.d/
│   │   │   │   ├── kodi-autostart.service
│   │   │   │   ├── kodi-cleanlogs.service
│   │   │   │   ├── kodi-halt.service
│   │   │   │   ├── kodi-lirc-suspend.service
│   │   │   │   ├── kodi-poweroff.service
│   │   │   │   ├── kodi-reboot.service
│   │   │   │   ├── kodi-waitonnetwork.service
│   │   │   │   ├── kodi.service
│   │   │   │   └── kodi.target
│   │   │   └── tmpfiles.d/
│   │   │       ├── kodi-userdirs.conf
│   │   │       └── kodi.conf
│   │   ├── kodi-binary-addons/
│   │   │   ├── audiodecoder.2sf/
│   │   │   │   └── package.mk
│   │   │   ├── audiodecoder.asap/
│   │   │   │   └── package.mk
│   │   │   ├── audiodecoder.dumb/
│   │   │   │   └── package.mk
│   │   │   ├── audiodecoder.fluidsynth/
│   │   │   │   └── package.mk
│   │   │   ├── audiodecoder.gme/
│   │   │   │   └── package.mk
│   │   │   ├── audiodecoder.gsf/
│   │   │   │   └── package.mk
│   │   │   ├── audiodecoder.modplug/
│   │   │   │   └── package.mk
│   │   │   ├── audiodecoder.ncsf/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       ├── audiodecoder.ncsf-0001-fix-build-with-gcc5.patch
│   │   │   │       └── audiodecoder.ncsf-0002-fix-build-with-gcc-10.patch
│   │   │   ├── audiodecoder.nosefart/
│   │   │   │   └── package.mk
│   │   │   ├── audiodecoder.openmpt/
│   │   │   │   └── package.mk
│   │   │   ├── audiodecoder.organya/
│   │   │   │   └── package.mk
│   │   │   ├── audiodecoder.qsf/
│   │   │   │   └── package.mk
│   │   │   ├── audiodecoder.sacd/
│   │   │   │   └── package.mk
│   │   │   ├── audiodecoder.sidplay/
│   │   │   │   └── package.mk
│   │   │   ├── audiodecoder.snesapu/
│   │   │   │   └── package.mk
│   │   │   ├── audiodecoder.ssf/
│   │   │   │   └── package.mk
│   │   │   ├── audiodecoder.stsound/
│   │   │   │   └── package.mk
│   │   │   ├── audiodecoder.timidity/
│   │   │   │   └── package.mk
│   │   │   ├── audiodecoder.upse/
│   │   │   │   └── package.mk
│   │   │   ├── audiodecoder.usf/
│   │   │   │   └── package.mk
│   │   │   ├── audiodecoder.vgmstream/
│   │   │   │   └── package.mk
│   │   │   ├── audiodecoder.wsr/
│   │   │   │   └── package.mk
│   │   │   ├── audioencoder.flac/
│   │   │   │   └── package.mk
│   │   │   ├── audioencoder.lame/
│   │   │   │   └── package.mk
│   │   │   ├── audioencoder.vorbis/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.2048/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.atari800/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.beetle-bsnes/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.beetle-gba/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.beetle-lynx/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.beetle-ngp/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.beetle-pce-fast/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.beetle-pcfx/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.beetle-psx/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.beetle-supergrafx/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.beetle-vb/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.beetle-wswan/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.bluemsx/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.bnes/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.bsnes-mercury-accuracy/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.bsnes-mercury-balanced/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.bsnes-mercury-performance/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.cap32/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.dinothawr/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.dosbox/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.dosbox-pure/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.fbneo/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.fceumm/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.fmsx/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.fsuae/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.fuse/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.gambatte/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.genplus/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.gw/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.handy/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.hatari/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.mame2000/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.mame2003/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.mame2003_plus/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.mame2010/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.mame2015/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.mame2016/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.mesen/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.meteor/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.mgba/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.mrboom/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.nestopia/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.nx/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.o2em/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.opera/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.pcsx-rearmed/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.picodrive/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.pokemini/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.prboom/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.prosystem/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.quicknes/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.sameboy/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.scummvm/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.snes9x/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.snes9x2002/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.snes9x2010/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.stella/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.tgbdual/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.tyrquake/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.uae/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.uae4arm/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.vba-next/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.vbam/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.vecx/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.vice/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.virtualjaguar/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.yabause/
│   │   │   │   └── package.mk
│   │   │   ├── imagedecoder.heif/
│   │   │   │   └── package.mk
│   │   │   ├── imagedecoder.mpo/
│   │   │   │   └── package.mk
│   │   │   ├── imagedecoder.raw/
│   │   │   │   └── package.mk
│   │   │   ├── inputstream.adaptive/
│   │   │   │   └── package.mk
│   │   │   ├── inputstream.ffmpegdirect/
│   │   │   │   └── package.mk
│   │   │   ├── inputstream.rtmp/
│   │   │   │   └── package.mk
│   │   │   ├── peripheral.joystick/
│   │   │   │   └── package.mk
│   │   │   ├── peripheral.xarcade/
│   │   │   │   └── package.mk
│   │   │   ├── pvr.argustv/
│   │   │   │   └── package.mk
│   │   │   ├── pvr.demo/
│   │   │   │   └── package.mk
│   │   │   ├── pvr.dvblink/
│   │   │   │   └── package.mk
│   │   │   ├── pvr.dvbviewer/
│   │   │   │   └── package.mk
│   │   │   ├── pvr.filmon/
│   │   │   │   └── package.mk
│   │   │   ├── pvr.freebox/
│   │   │   │   └── package.mk
│   │   │   ├── pvr.hdhomerun/
│   │   │   │   └── package.mk
│   │   │   ├── pvr.hts/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── pvr.hts-0001-set-speed.patch
│   │   │   ├── pvr.iptvsimple/
│   │   │   │   └── package.mk
│   │   │   ├── pvr.mediaportal.tvserver/
│   │   │   │   └── package.mk
│   │   │   ├── pvr.mythtv/
│   │   │   │   └── package.mk
│   │   │   ├── pvr.nextpvr/
│   │   │   │   └── package.mk
│   │   │   ├── pvr.njoy/
│   │   │   │   └── package.mk
│   │   │   ├── pvr.octonet/
│   │   │   │   └── package.mk
│   │   │   ├── pvr.pctv/
│   │   │   │   └── package.mk
│   │   │   ├── pvr.plutotv/
│   │   │   │   └── package.mk
│   │   │   ├── pvr.sledovanitv.cz/
│   │   │   │   └── package.mk
│   │   │   ├── pvr.stalker/
│   │   │   │   └── package.mk
│   │   │   ├── pvr.teleboy/
│   │   │   │   └── package.mk
│   │   │   ├── pvr.vbox/
│   │   │   │   └── package.mk
│   │   │   ├── pvr.vdr.vnsi/
│   │   │   │   └── package.mk
│   │   │   ├── pvr.vuplus/
│   │   │   │   └── package.mk
│   │   │   ├── pvr.waipu/
│   │   │   │   └── package.mk
│   │   │   ├── pvr.wmc/
│   │   │   │   └── package.mk
│   │   │   ├── pvr.zattoo/
│   │   │   │   └── package.mk
│   │   │   ├── screensaver.asteroids/
│   │   │   │   └── package.mk
│   │   │   ├── screensaver.asterwave/
│   │   │   │   └── package.mk
│   │   │   ├── screensaver.biogenesis/
│   │   │   │   └── package.mk
│   │   │   ├── screensaver.greynetic/
│   │   │   │   └── package.mk
│   │   │   ├── screensaver.matrixtrails/
│   │   │   │   └── package.mk
│   │   │   ├── screensaver.pingpong/
│   │   │   │   └── package.mk
│   │   │   ├── screensaver.pyro/
│   │   │   │   └── package.mk
│   │   │   ├── screensaver.shadertoy/
│   │   │   │   └── package.mk
│   │   │   ├── screensaver.stars/
│   │   │   │   └── package.mk
│   │   │   ├── vfs.libarchive/
│   │   │   │   └── package.mk
│   │   │   ├── vfs.sftp/
│   │   │   │   └── package.mk
│   │   │   ├── visualization.fishbmc/
│   │   │   │   └── package.mk
│   │   │   ├── visualization.goom/
│   │   │   │   └── package.mk
│   │   │   ├── visualization.matrix/
│   │   │   │   └── package.mk
│   │   │   ├── visualization.pictureit/
│   │   │   │   └── package.mk
│   │   │   ├── visualization.projectm/
│   │   │   │   └── package.mk
│   │   │   ├── visualization.shadertoy/
│   │   │   │   └── package.mk
│   │   │   ├── visualization.spectrum/
│   │   │   │   └── package.mk
│   │   │   ├── visualization.starburst/
│   │   │   │   └── package.mk
│   │   │   └── visualization.waveform/
│   │   │       └── package.mk
│   │   ├── kodi-platform/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── kodi-platform-01_crosscompile-badness.patch
│   │   ├── kodi-theme-Estuary/
│   │   │   └── package.mk
│   │   └── p8-platform/
│   │       ├── package.mk
│   │       └── patches/
│   │           ├── p8-platform-01-revert-cc-badness.patch
│   │           └── p8-platform-02-cmake_install_prefix_toolchain.patch
│   ├── multimedia/
│   │   ├── SDL2/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── Amlogic/
│   │   │       │   └── 0001-mali-fbdev-add-driver.patch
│   │   │       ├── OdroidGoAdvance/
│   │   │       │   ├── 0005-SDL2-2.28.1.odroidgoa-support.patch
│   │   │       │   └── 0006-KMSDRM-Also-rotate-the-cursor.patch
│   │   │       └── Rockchip/
│   │   │           └── 0001-kmsdrm-Workaround-missing-gbm_bo_get_offset-and-SDL_.patch
│   │   ├── aom/
│   │   │   └── package.mk
│   │   ├── bento4/
│   │   │   └── package.mk
│   │   ├── dav1d/
│   │   │   └── package.mk
│   │   ├── ffmpeg/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── dav1d/
│   │   │       │   └── ffmpeg-support-dav1d-1-0-0.patch
│   │   │       ├── dv/
│   │   │       │   ├── ffmpeg-001-avformat-dovi_isom-Implement-Dolby-Vision-configurat.patch
│   │   │       │   └── ffmpeg-002-avformat-matroska-dec-enc-Parse-BlockAdditionMapping.patch
│   │   │       ├── ffmpeg-force_sdl2.patch
│   │   │       ├── ffmpeg-openssl3.patch
│   │   │       ├── kodi/
│   │   │       │   └── ffmpeg-001-kodi.patch
│   │   │       ├── libreelec/
│   │   │       │   └── ffmpeg-001-libreelec.patch
│   │   │       ├── rpi/
│   │   │       │   └── ffmpeg-001-rpi.patch
│   │   │       ├── v4l2-drmprime/
│   │   │       │   └── ffmpeg-001-v4l2-drmprime.patch
│   │   │       └── v4l2-request/
│   │   │           └── ffmpeg-001-v4l2-request.patch
│   │   ├── gmmlib/
│   │   │   └── package.mk
│   │   ├── gstreamer/
│   │   │   ├── gst-plugins-bad/
│   │   │   │   └── package.mk
│   │   │   ├── gst-plugins-base/
│   │   │   │   └── package.mk
│   │   │   └── gstreamer/
│   │   │       └── package.mk
│   │   ├── intel-vaapi-driver/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── 0001-intel-vaapi-driver-2.4.1-Handle-odd-resolution.patch
│   │   ├── libaacs/
│   │   │   └── package.mk
│   │   ├── libass/
│   │   │   └── package.mk
│   │   ├── libbdplus/
│   │   │   └── package.mk
│   │   ├── libbluray/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── libbluray-00-fix-build-with-autoconf-archive-2016-or-later.patch
│   │   │       └── libbluray-03-set-headless-false.patch
│   │   ├── libdvdcss/
│   │   │   └── package.mk
│   │   ├── libdvdnav/
│   │   │   └── package.mk
│   │   ├── libdvdread/
│   │   │   └── package.mk
│   │   ├── libmpeg2/
│   │   │   └── package.mk
│   │   ├── libudfread/
│   │   │   └── package.mk
│   │   ├── libva/
│   │   │   └── package.mk
│   │   ├── libvdpau/
│   │   │   └── package.mk
│   │   ├── media-driver/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── media-driver-999.01-PR1162-use-forward_references-as-the-reference-for-ADI.patch
│   │   ├── nv-codec-headers/
│   │   │   └── package.mk
│   │   ├── nvidia-vaapi-driver/
│   │   │   └── package.mk
│   │   ├── rtmpdump/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── 001_fix-racing-build-issue.patch
│   │   │       └── 002_build-with-openssl11.patch
│   │   └── zvbi/
│   │       ├── package.mk
│   │       └── patches/
│   │           ├── zvbi-0010-fix-static-linking.patch
│   │           ├── zvbi-0020-ioctl.patch
│   │           ├── zvbi-0030-ssize_max.patch
│   │           ├── zvbi-0040-fix-clang-support.patch
│   │           └── zvbi-0050-prevent-test.patch
│   ├── network/
│   │   ├── avahi/
│   │   │   ├── debug.d/
│   │   │   │   └── avahi.conf
│   │   │   ├── default.d/
│   │   │   │   └── avahi.conf
│   │   │   ├── package.mk
│   │   │   └── system.d/
│   │   │       ├── avahi-daemon.service
│   │   │       └── avahi-defaults.service
│   │   ├── bluez/
│   │   │   ├── debug.d/
│   │   │   │   ├── bluez.conf
│   │   │   │   └── obexd.conf
│   │   │   ├── default.d/
│   │   │   │   └── bluez.conf
│   │   │   ├── package.mk
│   │   │   ├── patches/
│   │   │   │   ├── bluez-01_add-obexd-policy.patch
│   │   │   │   ├── bluez-02_obexd-use-system-bus.patch
│   │   │   │   ├── bluez-03_storagedir.patch
│   │   │   │   ├── bluez-04_work-around-Logitech-diNovo-Edge-keyboard-firmware-i.patch
│   │   │   │   ├── bluez-05-046d-c52b-Logitech-Inc.-Unifying-Receiver.patch
│   │   │   │   ├── bluez-06-raspberry-pi-mods.patch
│   │   │   │   ├── bluez-08-hciattach-retry-device-reset-when-no-response.patch
│   │   │   │   ├── bluez-11_sixaxis-fix-PID-navigation-controller.patch
│   │   │   │   ├── bluez-12-fix-obexd-after-5_50.patch
│   │   │   │   ├── bluez-21-hciattach-add-QCA9377-Tuffello-support.patch
│   │   │   │   ├── bluez-40-Add-support-for-sprd-type-in-hciattach.patch
│   │   │   │   └── fake-ps3.patch
│   │   │   ├── system.d/
│   │   │   │   ├── bluetooth-defaults.service
│   │   │   │   ├── bluetooth.service
│   │   │   │   └── obex.service
│   │   │   └── tmpfiles.d/
│   │   │       └── z_05_bluez.conf
│   │   ├── connman/
│   │   │   ├── config/
│   │   │   │   └── settings
│   │   │   ├── debug.d/
│   │   │   │   └── connman.conf
│   │   │   ├── package.mk
│   │   │   ├── patches/
│   │   │   │   ├── connman-01-do-not-cleanup-routes.patch
│   │   │   │   ├── connman-04-ipv6-disabled-by-default.patch
│   │   │   │   └── connman-05_link-against-ncurses.patch
│   │   │   ├── scripts/
│   │   │   │   └── connman-setup
│   │   │   ├── system.d/
│   │   │   │   ├── connman-vpn.service
│   │   │   │   ├── connman.service
│   │   │   │   └── network-online.service
│   │   │   └── tmpfiles.d/
│   │   │       └── z_03_connman.conf
│   │   ├── ethtool/
│   │   │   ├── package.mk
│   │   │   └── udev.d/
│   │   │       └── 99-wakeup-eth.rules
│   │   ├── iptables/
│   │   │   ├── config/
│   │   │   │   ├── README
│   │   │   │   ├── home.v4
│   │   │   │   ├── home.v6
│   │   │   │   ├── public.v4
│   │   │   │   └── public.v6
│   │   │   ├── package.mk
│   │   │   ├── patches/
│   │   │   │   └── iptables-0002-xshared-fix-for-build-in-sub-directory.patch
│   │   │   ├── scripts/
│   │   │   │   └── iptables_helper
│   │   │   └── system.d/
│   │   │       └── iptables.service
│   │   ├── iw/
│   │   │   ├── package.mk
│   │   │   ├── scripts/
│   │   │   │   └── setregdomain
│   │   │   └── udev.d/
│   │   │       └── 60-iw-regdomain.rules
│   │   ├── iwd/
│   │   │   └── package.mk
│   │   ├── libdnet/
│   │   │   └── package.mk
│   │   ├── libmnl/
│   │   │   └── package.mk
│   │   ├── libnfs/
│   │   │   └── package.mk
│   │   ├── libnftnl/
│   │   │   └── package.mk
│   │   ├── libnl/
│   │   │   └── package.mk
│   │   ├── libshairplay/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── libshairplay-read_airportkey_from_etc.patch
│   │   ├── libssh/
│   │   │   └── package.mk
│   │   ├── libtirpc/
│   │   │   └── package.mk
│   │   ├── netbase/
│   │   │   └── package.mk
│   │   ├── nfs-utils/
│   │   │   ├── config/
│   │   │   │   └── exports.sample
│   │   │   ├── package.mk
│   │   │   ├── patches/
│   │   │   │   └── nfs-utils-01-ce-specific.patch
│   │   │   ├── system.d/
│   │   │   │   └── load-module-nfsd.service
│   │   │   └── tmpfiles.d/
│   │   │       └── nfs-utils.conf
│   │   ├── nss-mdns/
│   │   │   ├── config/
│   │   │   │   └── nsswitch.conf
│   │   │   └── package.mk
│   │   ├── openssh/
│   │   │   ├── package.mk
│   │   │   ├── patches/
│   │   │   │   ├── openssh-8.9p1-keydir.patch
│   │   │   │   ├── openssh-motd-add-device-info.patch
│   │   │   │   ├── openssh-silence-missing-identity-error.patch
│   │   │   │   └── openssh-source-etc-environment.patch
│   │   │   ├── system.d/
│   │   │   │   └── sshd.service
│   │   │   └── tmpfiles.d/
│   │   │       └── z_04_openssh.conf
│   │   ├── openvpn/
│   │   │   └── package.mk
│   │   ├── rpcbind/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── rpcbind-01-drop-warm-start-as-it-fails.patch
│   │   │       └── rpcbind-1.2.6-vulnerability_fixes-1.patch
│   │   ├── rpcsvc-proto/
│   │   │   └── package.mk
│   │   ├── rsync/
│   │   │   └── package.mk
│   │   ├── samba/
│   │   │   ├── config/
│   │   │   │   ├── samba4-cache.txt
│   │   │   │   └── smb.conf
│   │   │   ├── default.d/
│   │   │   │   └── samba.conf
│   │   │   ├── package.mk
│   │   │   ├── patches/
│   │   │   │   ├── samba-200-4.11-fix-ASN1-bso14164.patch
│   │   │   │   ├── samba-950-no-man.patch
│   │   │   │   └── samba-951-no-man-4.16.patch
│   │   │   ├── scripts/
│   │   │   │   ├── samba-autoshare
│   │   │   │   ├── samba-config
│   │   │   │   └── smbpasswd
│   │   │   ├── system.d/
│   │   │   │   └── samba-config.service
│   │   │   └── system.d.opt/
│   │   │       ├── nmbd.service
│   │   │       └── smbd.service
│   │   ├── sshpass/
│   │   │   └── package.mk
│   │   ├── wireguard-linux-compat/
│   │   │   ├── modules-load.d/
│   │   │   │   └── wireguard.conf
│   │   │   └── package.mk
│   │   ├── wireguard-tools/
│   │   │   ├── config/
│   │   │   │   ├── system.d/
│   │   │   │   │   └── wireguard.service.sample
│   │   │   │   └── wireguard/
│   │   │   │       └── wireguard.config.sample
│   │   │   ├── package.mk
│   │   │   ├── scripts/
│   │   │   │   └── wg-keygen
│   │   │   └── tmpfiles.d/
│   │   │       └── z_03_wireguard.conf
│   │   ├── wireless-regdb/
│   │   │   └── package.mk
│   │   ├── wpa_supplicant/
│   │   │   ├── config/
│   │   │   │   └── makefile.config
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── wpa_supplicant-2.4-libnl3-includes.patch
│   │   └── wsdd2/
│   │       └── package.mk
│   ├── oem/
│   │   └── package.mk
│   ├── packages.mk.addon_template
│   ├── packages.mk.template
│   ├── print/
│   │   └── freetype/
│   │       ├── package.mk
│   │       └── patches/
│   │           └── freetype-01-fix-pkgconf.patch
│   ├── python/
│   │   ├── devel/
│   │   │   ├── Jinja2/
│   │   │   │   └── package.mk
│   │   │   ├── Mako/
│   │   │   │   └── package.mk
│   │   │   ├── MarkupSafe/
│   │   │   │   └── package.mk
│   │   │   ├── distutilscross/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── distutilscross-0000-fix-python3.patch
│   │   │   ├── meson/
│   │   │   │   └── package.mk
│   │   │   ├── ninja/
│   │   │   │   └── package.mk
│   │   │   ├── pgi/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── pgi-0001-remove-type-as-it-s-not-Python-3-compatible.patch
│   │   │   ├── pygobject/
│   │   │   │   └── package.mk
│   │   │   ├── setuptools/
│   │   │   │   └── package.mk
│   │   │   └── waf/
│   │   │       └── package.mk
│   │   ├── graphics/
│   │   │   └── Pillow/
│   │   │       ├── package.mk
│   │   │       └── patches/
│   │   │           └── Pillow-0001-crosscompiling.patch
│   │   ├── python-uinput/
│   │   │   └── package.mk
│   │   ├── security/
│   │   │   └── pycryptodome/
│   │   │       └── package.mk
│   │   └── system/
│   │       ├── dbus-python/
│   │       │   └── package.mk
│   │       ├── dbussy/
│   │       │   └── package.mk
│   │       └── simplejson/
│   │           └── package.mk
│   ├── rust/
│   │   ├── cargo/
│   │   │   └── package.mk
│   │   ├── cargo-c/
│   │   │   └── package.mk
│   │   ├── cargo-snapshot/
│   │   │   └── package.mk
│   │   ├── rust/
│   │   │   ├── package.mk
│   │   │   └── targets/
│   │   │       ├── aarch64-libreelec-linux-gnu.json
│   │   │       ├── arm-libreelec-linux-gnueabihf.json
│   │   │       └── x86_64-libreelec-linux-gnu.json
│   │   ├── rust-std-snapshot/
│   │   │   └── package.mk
│   │   └── rustc-snapshot/
│   │       └── package.mk
│   ├── security/
│   │   ├── gnutls/
│   │   │   └── package.mk
│   │   ├── libgcrypt/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── libgcrypt-01-dont_replace_parts_of_path-0.1.patch
│   │   │       └── libgcrypt-ac_cv_sys_symbol_underscore.patch
│   │   ├── libgpg-error/
│   │   │   └── package.mk
│   │   ├── nettle/
│   │   │   └── package.mk
│   │   ├── nspr/
│   │   │   └── package.mk
│   │   ├── nss/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── nss-02_3.15.5-standalone-1.patch
│   │   │       ├── nss-04-skip_shlibsign.patch
│   │   │       ├── nss-05-disable_host_cflags.patch
│   │   │       └── nss-09-gcc-warning-workaround.patch
│   │   └── openssl/
│   │       ├── cert/
│   │       │   └── cacert.pem
│   │       ├── package.mk
│   │       ├── scripts/
│   │       │   └── openssl-config
│   │       └── system.d/
│   │           └── openssl-config.service
│   ├── sx05re/
│   │   ├── Amlogic/
│   │   │   └── package.mk
│   │   ├── Amlogic-ng/
│   │   │   └── package.mk
│   │   ├── Amlogic-no/
│   │   │   └── package.mk
│   │   ├── emuelec/
│   │   │   ├── bin/
│   │   │   │   ├── batocera/
│   │   │   │   │   ├── batocera-bluetooth
│   │   │   │   │   ├── batocera-bluetooth-agent
│   │   │   │   │   ├── batocera-brightness
│   │   │   │   │   ├── batocera-bt-list-devices
│   │   │   │   │   ├── batocera-bt-test-device
│   │   │   │   │   ├── batocera-btDaemon
│   │   │   │   │   ├── batocera-config
│   │   │   │   │   ├── batocera-es-thebezelproject
│   │   │   │   │   ├── batocera-es-theme
│   │   │   │   │   ├── batocera-info
│   │   │   │   │   ├── batocera-resolution
│   │   │   │   │   ├── batocera-retroachievements-info
│   │   │   │   │   ├── batocera-scraper
│   │   │   │   │   ├── batocera-settings
│   │   │   │   │   ├── batocera-systems
│   │   │   │   │   ├── batocera-wifi
│   │   │   │   │   ├── emuelec-bluetooth
│   │   │   │   │   ├── emuelec-bluetooth-legacy
│   │   │   │   │   └── emuelec-upgrade
│   │   │   │   ├── bezels.sh
│   │   │   │   ├── check_res.sh
│   │   │   │   ├── connectbtwii.sh
│   │   │   │   ├── emuelec-utils
│   │   │   │   ├── emuelecRunApp.sh
│   │   │   │   ├── emuelecRunEmu.sh
│   │   │   │   ├── emuelec_autostart.sh
│   │   │   │   ├── emueleclogs.sh
│   │   │   │   ├── emustation-config
│   │   │   │   ├── env.sh
│   │   │   │   ├── fbterm.sh
│   │   │   │   ├── find.sh
│   │   │   │   ├── gamelist-cleaner.sh
│   │   │   │   ├── hypseus.start.sh
│   │   │   │   ├── joy2key.py
│   │   │   │   ├── joy_common.sh
│   │   │   │   ├── killes.sh
│   │   │   │   ├── ldd_32
│   │   │   │   ├── mount_romfs.sh
│   │   │   │   ├── pico8.sh
│   │   │   │   ├── playvideo.sh
│   │   │   │   ├── romconf.sh
│   │   │   │   ├── rr_audio.sh
│   │   │   │   ├── runwiimote.sh
│   │   │   │   ├── scripts/
│   │   │   │   │   ├── scriptmodules/
│   │   │   │   │   │   ├── archivefuncs.sh
│   │   │   │   │   │   ├── helpers.sh
│   │   │   │   │   │   ├── inifuncs.sh
│   │   │   │   │   │   ├── packages.sh
│   │   │   │   │   │   ├── supplementary/
│   │   │   │   │   │   │   ├── bluetoothcontroller.py
│   │   │   │   │   │   │   ├── esthemes.sh
│   │   │   │   │   │   │   ├── reicast.sh
│   │   │   │   │   │   │   ├── scraper.sh
│   │   │   │   │   │   │   ├── skyscraper.sh
│   │   │   │   │   │   │   ├── systeminfo.sh
│   │   │   │   │   │   │   └── wifi.sh
│   │   │   │   │   │   └── system.sh
│   │   │   │   │   └── setup/
│   │   │   │   │       ├── CMD_MAKER.py
│   │   │   │   │       ├── EKA_INSTALL.py
│   │   │   │   │       ├── Skyscraper.start
│   │   │   │   │       ├── btconnect.sh
│   │   │   │   │       ├── btsetup.sh
│   │   │   │   │       ├── cmdmaker.sh
│   │   │   │   │       ├── copy_usb_roms_to_device.sh
│   │   │   │   │       ├── create_rom_dirs.sh
│   │   │   │   │       ├── eka-install.sh
│   │   │   │   │       ├── file_manager.sh
│   │   │   │   │       ├── gamelist.xml
│   │   │   │   │       ├── install_cheats.sh
│   │   │   │   │       ├── install_drastic.sh
│   │   │   │   │       ├── install_pixelcade.sh
│   │   │   │   │       ├── install_portmaster.sh
│   │   │   │   │       ├── launch_terminal_(kb).sh
│   │   │   │   │       ├── listmedia.txt
│   │   │   │   │       ├── macrorun.py
│   │   │   │   │       ├── macrorun.sh
│   │   │   │   │       ├── macrosetup.py
│   │   │   │   │       ├── macrosetup.sh
│   │   │   │   │       ├── scan_scummVM_games.sh
│   │   │   │   │       ├── scraper.start
│   │   │   │   │       ├── send_logs.sh
│   │   │   │   │       ├── show_last_emuelec.log.sh
│   │   │   │   │       ├── skyscraper.sh
│   │   │   │   │       ├── sselphs_scraper.sh
│   │   │   │   │       ├── system_info.sh
│   │   │   │   │       ├── wifi.sh
│   │   │   │   │       └── youtube_search.sh
│   │   │   │   ├── setres.sh
│   │   │   │   ├── setsettings.sh
│   │   │   │   ├── setterm
│   │   │   │   ├── show_splash.sh
│   │   │   │   └── updatecheck.sh
│   │   │   ├── config/
│   │   │   │   ├── EE_VERSION
│   │   │   │   ├── asound.conf-amlogic
│   │   │   │   ├── asound.conf-amlogic-ng
│   │   │   │   ├── asound.conf-amlogic-no
│   │   │   │   ├── autostart.sh
│   │   │   │   ├── custom_start.sh
│   │   │   │   ├── emuelec/
│   │   │   │   │   ├── bin/
│   │   │   │   │   │   └── put_user_bins_here
│   │   │   │   │   ├── configs/
│   │   │   │   │   │   ├── all/
│   │   │   │   │   │   │   ├── autoconf.cfg
│   │   │   │   │   │   │   ├── bluetooth.cfg
│   │   │   │   │   │   │   ├── scraper.cfg
│   │   │   │   │   │   │   └── skyscraper.cfg
│   │   │   │   │   │   ├── atari800.cfg
│   │   │   │   │   │   ├── bezels/
│   │   │   │   │   │   │   └── arcademap.cfg
│   │   │   │   │   │   ├── buttonmapping.cfg
│   │   │   │   │   │   ├── dimensions.conf
│   │   │   │   │   │   ├── emuelec.conf
│   │   │   │   │   │   ├── emuoptions.conf
│   │   │   │   │   │   ├── gptokeyb/
│   │   │   │   │   │   │   ├── fallout.gptk
│   │   │   │   │   │   │   └── sorr.gptk
│   │   │   │   │   │   ├── jslisten.cfg
│   │   │   │   │   │   ├── pico-8/
│   │   │   │   │   │   │   └── sdl_controllers.txt
│   │   │   │   │   │   └── tz
│   │   │   │   │   ├── lib/
│   │   │   │   │   │   └── put_user_libs_here
│   │   │   │   │   ├── lib32/
│   │   │   │   │   │   └── put_32b_user_libs_here
│   │   │   │   │   └── scripts/
│   │   │   │   │       └── put_user_scripts_here
│   │   │   │   ├── emulationstation/
│   │   │   │   │   └── scripts/
│   │   │   │   │       ├── es_env.sh
│   │   │   │   │       ├── inputconfiguration.sh
│   │   │   │   │       ├── pixel.sh
│   │   │   │   │       ├── setvolume.sh
│   │   │   │   │       └── wifi.sh
│   │   │   │   ├── profile.d/
│   │   │   │   │   └── 99-emuelec_functions.conf
│   │   │   │   ├── retroarch/
│   │   │   │   │   ├── config/
│   │   │   │   │   │   ├── DuckStation/
│   │   │   │   │   │   │   └── DuckStation.opt
│   │   │   │   │   │   ├── MAME/
│   │   │   │   │   │   │   └── MAME.opt
│   │   │   │   │   │   ├── Mupen64Plus-Next GLES2/
│   │   │   │   │   │   │   └── Mupen64Plus-Next GLES2.opt
│   │   │   │   │   │   ├── Neko Project II/
│   │   │   │   │   │   │   └── Neko_Project_II.opt
│   │   │   │   │   │   ├── Neko Project II kai/
│   │   │   │   │   │   │   └── Neko_Project_II_kai.opt
│   │   │   │   │   │   ├── SwanStation/
│   │   │   │   │   │   │   └── SwanStation.opt
│   │   │   │   │   │   └── remappings/
│   │   │   │   │   │       ├── Flycast/
│   │   │   │   │   │       │   └── Flycast.rmp
│   │   │   │   │   │       ├── Mupen64Plus/
│   │   │   │   │   │       │   └── Mupen64Plus.rmp
│   │   │   │   │   │       ├── Mupen64Plus GLES2/
│   │   │   │   │   │       │   └── Mupen64Plus GLES2.rmp
│   │   │   │   │   │       ├── Mupen64Plus-Next/
│   │   │   │   │   │       │   └── Mupen64Plus-Next.rmp
│   │   │   │   │   │       ├── Mupen64Plus-Next GLES2/
│   │   │   │   │   │       │   └── Mupen64Plus-Next GLES2.rmp
│   │   │   │   │   │       └── ParaLLEl N64/
│   │   │   │   │   │           └── ParaLLEl N64.rmp
│   │   │   │   │   └── retroarch-core-options.cfg
│   │   │   │   └── system.d/
│   │   │   │       ├── storage-roms.mount.sample
│   │   │   │       └── storage-roms.mount.sample.nfs
│   │   │   ├── gamepads/
│   │   │   │   ├── 8BitDo SN30 pro.cfg
│   │   │   │   ├── GO-Advance Gamepad (rev 1.1).cfg
│   │   │   │   ├── GO-Advance Gamepad (rev 1.1)_vertical.cfg
│   │   │   │   ├── GO-Advance Gamepad.cfg
│   │   │   │   ├── GO-Advance Gamepad_vertical.cfg
│   │   │   │   ├── GO-Super Gamepad.cfg
│   │   │   │   ├── GO-Super Gamepad_vertical.cfg
│   │   │   │   ├── GZ RX CO.,LTD. RX Gamepad.cfg
│   │   │   │   ├── Google LLC Stadia Controller rev. A.cfg
│   │   │   │   ├── HORI CO.,LTD. HORIPAD S.cfg
│   │   │   │   ├── Logitech Gamepad F310.cfg
│   │   │   │   ├── PlayGame PS2.cfg
│   │   │   │   ├── Sony Interactive Entertainment Wireless Controller.cfg
│   │   │   │   ├── Sony PLAYSTATION(R)3 Controller.cfg
│   │   │   │   ├── Xbox 360 Controller.cfg
│   │   │   │   ├── gameforce_gamepad.cfg
│   │   │   │   └── iNNEXT SNES.cfg
│   │   │   ├── overlay/
│   │   │   │   ├── bezels/
│   │   │   │   │   └── default.cfg
│   │   │   │   └── emuelec/
│   │   │   │       └── scanlines_single_1920x1080.cfg
│   │   │   ├── package.mk
│   │   │   ├── profile.d/
│   │   │   │   └── 99-emuelec.conf
│   │   │   ├── shaders/
│   │   │   │   ├── crt/
│   │   │   │   │   ├── crt-nes-mini.glslp
│   │   │   │   │   ├── crt-pi-vertical.glslp
│   │   │   │   │   ├── crt-pi.glslp
│   │   │   │   │   ├── fakelottes.glslp
│   │   │   │   │   ├── scanline.glslp
│   │   │   │   │   ├── shaders/
│   │   │   │   │   │   ├── crt-nes-mini.glsl
│   │   │   │   │   │   ├── crt-pi-vertical.glsl
│   │   │   │   │   │   ├── crt-pi.glsl
│   │   │   │   │   │   ├── fakelottes.glsl
│   │   │   │   │   │   ├── scanlines.glsl
│   │   │   │   │   │   └── zfast_crt.glsl
│   │   │   │   │   └── zfast-crt.glslp
│   │   │   │   ├── kurg/
│   │   │   │   │   ├── kurg-ROPi-scanlines-3x.glsl
│   │   │   │   │   ├── kurg-ROPi-scanlines-3x.glslp
│   │   │   │   │   ├── kurg-ROPi-scanlines-3x_v2.glsl
│   │   │   │   │   ├── kurg-ROPi-scanlines-3x_v2.glslp
│   │   │   │   │   ├── kurg_scanlines_source.glsl
│   │   │   │   │   └── kurg_scanlines_source_nearest.glslp
│   │   │   │   └── sharp/
│   │   │   │       ├── shaders/
│   │   │   │       │   ├── sharp-bilinear-scanlines.glsl
│   │   │   │       │   ├── sharp-bilinear-simple.glsl
│   │   │   │       │   └── stock.glsl
│   │   │   │       ├── sharp-bilinear-2x-prescale.glslp
│   │   │   │       ├── sharp-bilinear-scanlines.glslp
│   │   │   │       └── sharp-bilinear-simple.glslp
│   │   │   ├── system.d/
│   │   │   │   ├── emuelec-autostart.service
│   │   │   │   ├── emuelec-disable_small_cores.service
│   │   │   │   ├── emuelec-reboot.service
│   │   │   │   ├── emuelec-shutdown.service
│   │   │   │   └── emuelec.target
│   │   │   └── tmpfiles.d/
│   │   │       └── emuelec-dirs.conf
│   │   ├── emuelec-emulationstation/
│   │   │   ├── config/
│   │   │   │   ├── es_features.cfg
│   │   │   │   ├── es_input.cfg
│   │   │   │   ├── es_settings.cfg
│   │   │   │   ├── es_systems.json
│   │   │   │   ├── resources/
│   │   │   │   │   └── services/
│   │   │   │   │       ├── index.html
│   │   │   │   │       ├── main.css
│   │   │   │   │       └── main.js
│   │   │   │   └── scripts/
│   │   │   │       ├── combined/
│   │   │   │       │   └── example.sh.example
│   │   │   │       ├── configscripts/
│   │   │   │       │   ├── gamecontrollerdb.sh
│   │   │   │       │   └── retroarch.sh
│   │   │   │       └── say/
│   │   │   │           └── 01-say.sh
│   │   │   ├── depends/
│   │   │   │   └── fping/
│   │   │   │       └── package.mk
│   │   │   ├── generate_es_systems.py
│   │   │   ├── package.mk
│   │   │   ├── patches/
│   │   │   │   └── Rockchip/
│   │   │   │       ├── HH/
│   │   │   │       │   └── emuelec-emulationstation-oga-fixes.patch
│   │   │   │       └── emuelec-emulationstation-window-fix-rockchip.patch
│   │   │   ├── system.d/
│   │   │   │   └── emustation.service
│   │   │   └── themes/
│   │   │       ├── Crystal/
│   │   │       │   ├── Crystal-Collections/
│   │   │       │   │   └── package.mk
│   │   │       │   └── package.mk
│   │   │       └── es-theme-EmuELEC-carbon/
│   │   │           └── package.mk
│   │   ├── emuelec-ports/
│   │   │   ├── VVVVVV/
│   │   │   │   ├── config/
│   │   │   │   │   └── saves/
│   │   │   │   │       └── settings.vvv
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── VVVVVV-01-bios_path.patch
│   │   │   ├── abuse/
│   │   │   │   ├── config/
│   │   │   │   │   └── gptokeyb/
│   │   │   │   │       └── abuse.gptk
│   │   │   │   └── package.mk
│   │   │   ├── augustus/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── 01-augustus-EmuELEC-fixes.patch
│   │   │   ├── bennugd-monolithic/
│   │   │   │   ├── package.mk
│   │   │   │   └── tre/
│   │   │   │       └── package.mk
│   │   │   ├── bermuda/
│   │   │   │   └── package.mk
│   │   │   ├── broguece/
│   │   │   │   └── package.mk
│   │   │   ├── bstone/
│   │   │   │   ├── package.mk
│   │   │   │   └── scripts/
│   │   │   │       └── bstone.sh
│   │   │   ├── ccleste/
│   │   │   │   └── package.mk
│   │   │   ├── cdogs-sdl/
│   │   │   │   ├── package.mk
│   │   │   │   └── scripts/
│   │   │   │       └── cdogs-sdl.sh
│   │   │   ├── celeste/
│   │   │   │   ├── package.mk
│   │   │   │   └── sources/
│   │   │   │       ├── celeste.sh
│   │   │   │       └── celeste.tar.xz
│   │   │   ├── chocolate-doom/
│   │   │   │   ├── config/
│   │   │   │   │   ├── chocolate-doom.cfg
│   │   │   │   │   └── default.cfg
│   │   │   │   ├── package.mk
│   │   │   │   └── scripts/
│   │   │   │       └── chocodoom.sh
│   │   │   ├── commander-genius/
│   │   │   │   ├── config/
│   │   │   │   │   └── cgenius.cfg
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── commander-genius-02-show-emuelec-rom-path.patch
│   │   │   ├── devilutionX/
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   └── DevilutionX-fix-mouse.patch
│   │   │   │   └── scripts/
│   │   │   │       └── devilutionx.sh
│   │   │   ├── eduke/
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   ├── eduke-04-recast-function.patch
│   │   │   │   │   └── eduke-05-fix-emuelec-compile.patch
│   │   │   │   └── scripts/
│   │   │   │       └── eduke.sh
│   │   │   ├── falloutce1/
│   │   │   │   ├── config/
│   │   │   │   │   └── fallout.cfg
│   │   │   │   ├── package.mk
│   │   │   │   └── scripts/
│   │   │   │       └── falloutce1.sh
│   │   │   ├── falloutce2/
│   │   │   │   ├── config/
│   │   │   │   │   └── fallout2.cfg
│   │   │   │   ├── package.mk
│   │   │   │   └── scripts/
│   │   │   │       └── falloutce2.sh
│   │   │   ├── fheroes2/
│   │   │   │   ├── config/
│   │   │   │   │   └── fheroes2.cfg
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   └── fheroes2-01-init-game-controller-unconditionally.patch
│   │   │   │   └── scripts/
│   │   │   │       └── fheroes2.sh
│   │   │   ├── gzdoom/
│   │   │   │   ├── config/
│   │   │   │   │   ├── N2/
│   │   │   │   │   │   └── gzdoom.ini
│   │   │   │   │   └── OGA/
│   │   │   │   │       └── gzdoom.ini
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   └── 000-fix-build.patch
│   │   │   │   ├── scripts/
│   │   │   │   │   └── gzdoom.sh
│   │   │   │   └── zmusic/
│   │   │   │       └── package.mk
│   │   │   ├── hodesdl/
│   │   │   │   ├── package.mk
│   │   │   │   └── sources/
│   │   │   │       └── hode.ini
│   │   │   ├── hurrican/
│   │   │   │   ├── config/
│   │   │   │   │   └── gptokeyb/
│   │   │   │   │       └── hurrican.gptk
│   │   │   │   ├── package.mk
│   │   │   │   └── scripts/
│   │   │   │       └── hurrican.sh
│   │   │   ├── hydracastlelabyrinth/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── 01-change-back-to-guide.patch
│   │   │   ├── lzdoom/
│   │   │   │   ├── config/
│   │   │   │   │   └── lzdoom.ini
│   │   │   │   ├── package.mk
│   │   │   │   └── scripts/
│   │   │   │       └── lzdoom.sh
│   │   │   ├── openjazz/
│   │   │   │   └── package.mk
│   │   │   ├── opentyrian/
│   │   │   │   ├── config/
│   │   │   │   │   ├── opentyrian.cfg
│   │   │   │   │   ├── tyrian.cfg
│   │   │   │   │   └── tyrian.sav
│   │   │   │   └── package.mk
│   │   │   ├── package.mk
│   │   │   ├── rigelengine/
│   │   │   │   └── package.mk
│   │   │   ├── sdlpop/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── 001-addsdlgamecontrollerdb.patch
│   │   │   ├── shovelknight/
│   │   │   │   ├── package.mk
│   │   │   │   └── sources/
│   │   │   │       └── shovelknight.sh
│   │   │   ├── sonic2013/
│   │   │   │   ├── config/
│   │   │   │   │   └── settings.ini
│   │   │   │   └── package.mk
│   │   │   ├── soniccd/
│   │   │   │   ├── config/
│   │   │   │   │   └── settings.ini
│   │   │   │   ├── libtheora/
│   │   │   │   │   └── package.mk
│   │   │   │   └── package.mk
│   │   │   ├── sonicmania/
│   │   │   │   ├── config/
│   │   │   │   │   └── Settings.ini
│   │   │   │   └── package.mk
│   │   │   ├── sources/
│   │   │   │   ├── gamelist.xml.j2
│   │   │   │   ├── port.sh.j2
│   │   │   │   ├── port_builder.py
│   │   │   │   └── ports.yaml
│   │   │   ├── supermariowar/
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   └── supermariowar-emuelec-001-config-path.patch
│   │   │   │   └── scripts/
│   │   │   │       └── run_smw.sh
│   │   │   ├── supertux/
│   │   │   │   ├── config/
│   │   │   │   │   └── config
│   │   │   │   ├── package.mk
│   │   │   │   └── scripts/
│   │   │   │       └── run_supertux.sh
│   │   │   ├── supertuxkart/
│   │   │   │   ├── package.mk
│   │   │   │   └── scripts/
│   │   │   │       └── run_supertuxkart.sh
│   │   │   ├── tmntsr/
│   │   │   │   ├── package.mk
│   │   │   │   └── sources/
│   │   │   │       ├── tmntsr.sh
│   │   │   │       └── tmntsr.tar.xz
│   │   │   └── xash3d/
│   │   │       ├── files/
│   │   │       │   ├── config.cfg
│   │   │       │   └── xash3d.sh
│   │   │       ├── hlsdk-portable/
│   │   │       │   └── package.mk
│   │   │       ├── package.mk
│   │   │       └── tmpfiles.d/
│   │   │           └── xash3d.conf
│   │   ├── emulators/
│   │   │   ├── PPSSPPSDL/
│   │   │   │   ├── config/
│   │   │   │   │   └── PSP/
│   │   │   │   │       └── SYSTEM/
│   │   │   │   │           ├── Cheats/
│   │   │   │   │           │   ├── NPEG00023.ini
│   │   │   │   │           │   ├── NPEG00044.ini
│   │   │   │   │           │   ├── NPUG80325.ini
│   │   │   │   │           │   ├── UCES00019.ini
│   │   │   │   │           │   ├── UCES00842.ini
│   │   │   │   │           │   ├── UCES01184.ini
│   │   │   │   │           │   ├── UCES01401.ini
│   │   │   │   │           │   ├── UCES01473.ini
│   │   │   │   │           │   ├── UCUS98640.ini
│   │   │   │   │           │   ├── UCUS98653.ini
│   │   │   │   │           │   ├── UCUS98668.ini
│   │   │   │   │           │   ├── UCUS98737.ini
│   │   │   │   │           │   ├── ULES00033.ini
│   │   │   │   │           │   ├── ULES00034.ini
│   │   │   │   │           │   ├── ULES00035.ini
│   │   │   │   │           │   ├── ULES00125.ini
│   │   │   │   │           │   ├── ULES00483.ini
│   │   │   │   │           │   ├── ULES00625.ini
│   │   │   │   │           │   ├── ULES00626.ini
│   │   │   │   │           │   ├── ULES00703.ini
│   │   │   │   │           │   ├── ULES00968.ini
│   │   │   │   │           │   ├── ULES00981.ini
│   │   │   │   │           │   ├── ULES00982.ini
│   │   │   │   │           │   ├── ULES01214.ini
│   │   │   │   │           │   ├── ULES01402.ini
│   │   │   │   │           │   ├── ULES01406.ini
│   │   │   │   │           │   ├── ULUS00125.ini
│   │   │   │   │           │   ├── ULUS10014.ini
│   │   │   │   │           │   ├── ULUS10189.ini
│   │   │   │   │           │   ├── ULUS10197.ini
│   │   │   │   │           │   ├── ULUS10213.ini
│   │   │   │   │           │   ├── ULUS10236.ini
│   │   │   │   │           │   ├── ULUS10328.ini
│   │   │   │   │           │   ├── ULUS10345.ini
│   │   │   │   │           │   ├── ULUS10390.ini
│   │   │   │   │           │   └── ULUS10507.ini
│   │   │   │   │           ├── NPUG80325_ppsspp.ini
│   │   │   │   │           ├── UCES00422_ppsspp.ini
│   │   │   │   │           ├── UCUS98737_ppsspp.ini
│   │   │   │   │           ├── ULUS10001_ppsspp.ini
│   │   │   │   │           ├── ULUS10064_ppsspp.ini
│   │   │   │   │           ├── controls.ini
│   │   │   │   │           └── ppsspp.ini
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   ├── PPSSPPSDL-05-fix-fmv-stutter.patch
│   │   │   │   │   └── emuelec-paths.patch
│   │   │   │   └── scripts/
│   │   │   │       ├── ppsspp.sh
│   │   │   │       ├── ppssppcheevos.sh
│   │   │   │       └── set_ppsspp_joy.sh
│   │   │   ├── advancemame/
│   │   │   │   ├── bin/
│   │   │   │   │   ├── advmame.sh
│   │   │   │   │   └── set_advmame_joy.sh
│   │   │   │   ├── config/
│   │   │   │   │   ├── advmame.rc
│   │   │   │   │   ├── advmame.rc_gf
│   │   │   │   │   └── advmame.rc_oga
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       ├── advancemame-002-fix-vfb.patch
│   │   │   │       ├── advancemame-999-modify-advj.patch
│   │   │   │       ├── advancemame-fix-slang.patch
│   │   │   │       ├── advancemame-fix-vfb-fps.patch
│   │   │   │       └── advancemame-return-0-on-terminate.patch
│   │   │   ├── amiberry/
│   │   │   │   ├── config/
│   │   │   │   │   └── conf/
│   │   │   │   │       ├── AmigaA1200-default.uae
│   │   │   │   │       ├── AmigaA500-default.uae
│   │   │   │   │       └── amiberry.conf
│   │   │   │   ├── libenet/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── libportmidi/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── libserialport/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   ├── 001-default_fullscreen.patch
│   │   │   │   │   ├── 002-paths.patch
│   │   │   │   │   ├── 003-use_udev_gamepad_name.patch
│   │   │   │   │   └── fix_fbdev_window.patch
│   │   │   │   └── scripts/
│   │   │   │       └── amiberry.start
│   │   │   ├── amiberry-lite/
│   │   │   │   ├── config/
│   │   │   │   │   └── conf/
│   │   │   │   │       ├── AmigaA1200-default.uae
│   │   │   │   │       ├── AmigaA500-default.uae
│   │   │   │   │       ├── adfdir.conf
│   │   │   │   │       └── amiberry-lite.conf
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       ├── 001-default_fullscreen.patch
│   │   │   │       ├── 002-paths.patch
│   │   │   │       ├── 003-use_udev_gamepad_name.patch
│   │   │   │       └── fix_fbdev_window.patch
│   │   │   ├── atari800sa/
│   │   │   │   └── package.mk
│   │   │   ├── biginstinct/
│   │   │   │   ├── package.mk
│   │   │   │   └── scripts/
│   │   │   │       └── biginstinctstart.sh
│   │   │   ├── bigpemu/
│   │   │   │   ├── package.mk
│   │   │   │   └── scripts/
│   │   │   │       └── bigpemustart.sh
│   │   │   ├── box64/
│   │   │   │   └── package.mk
│   │   │   ├── box86/
│   │   │   │   └── package.mk
│   │   │   ├── dolphinSA/
│   │   │   │   ├── config/
│   │   │   │   │   ├── Dolphin.ini
│   │   │   │   │   ├── GCPadNew.ini
│   │   │   │   │   ├── GFX.ini
│   │   │   │   │   ├── Logger.ini
│   │   │   │   │   └── WiimoteNew.ini
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   ├── 000-hotkeys.patch
│   │   │   │   │   ├── 001-padorder.patch
│   │   │   │   │   └── 002-savestat-names.patch
│   │   │   │   └── scripts/
│   │   │   │       ├── dolphin.sh
│   │   │   │       └── set_dolphin_joy.sh
│   │   │   ├── dosbox-sdl2/
│   │   │   │   ├── config/
│   │   │   │   │   ├── dosbox-SDL2-MT32.conf
│   │   │   │   │   ├── dosbox-SDL2.conf
│   │   │   │   │   ├── dosbox-SVN.conf
│   │   │   │   │   └── games/
│   │   │   │   │       └── + Scan DOSBox Games.sh
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   └── dosbox-sdl2.995.01-add-mt32emu-MIDI-device.patch
│   │   │   │   └── scripts/
│   │   │   │       └── dosbox.start
│   │   │   ├── dosbox-staging/
│   │   │   │   ├── config/
│   │   │   │   │   └── dosbox-staging.conf
│   │   │   │   ├── package.mk
│   │   │   │   └── scripts/
│   │   │   │       └── dosbox.start
│   │   │   ├── dosbox-x/
│   │   │   │   ├── config/
│   │   │   │   │   ├── dosbox-x-SDL2-MT32.conf
│   │   │   │   │   ├── dosbox-x-SDL2.conf
│   │   │   │   │   ├── dosbox-x-SVN.conf
│   │   │   │   │   └── dosbox-x.conf
│   │   │   │   ├── include/
│   │   │   │   │   └── gpio.h
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   ├── 000-arm_configure.patch
│   │   │   │   │   ├── 001-sdl-config.patch
│   │   │   │   │   └── 003-dosboxconf.patch
│   │   │   │   └── scripts/
│   │   │   │       └── dosbox-x.start
│   │   │   ├── droidports/
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   └── 01-EmuELEC-set-save-path.patch
│   │   │   │   └── scripts/
│   │   │   │       └── gmloader.sh
│   │   │   ├── duckstation/
│   │   │   │   ├── config/
│   │   │   │   │   └── settings.ini
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   ├── 000-fix-cmake.patch
│   │   │   │   │   ├── 001-path-program.patch
│   │   │   │   │   ├── 002-path-getdirectory.patch
│   │   │   │   │   ├── 003-path-language.patch
│   │   │   │   │   └── 006-maxbuttons.patch
│   │   │   │   └── scripts/
│   │   │   │       ├── duckstation.sh
│   │   │   │       ├── duckstationcheevos.sh
│   │   │   │       └── set_duckstation_joy.sh
│   │   │   ├── ecwolf/
│   │   │   │   ├── config/
│   │   │   │   │   └── ecwolf.cfg
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   ├── ecwolf-001-add-video-modes.patch
│   │   │   │   │   └── ecwolf-002-add-exit-menu.patch
│   │   │   │   └── scripts/
│   │   │   │       └── ecwolf.sh
│   │   │   ├── eka2l1/
│   │   │   │   ├── config/
│   │   │   │   │   └── eka.gptk
│   │   │   │   ├── package.mk
│   │   │   │   └── scripts/
│   │   │   │       └── ekastart.sh
│   │   │   ├── fbneoSA/
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   └── fbneoSA-EmuELEC-rom-path.patch
│   │   │   │   └── scripts/
│   │   │   │       └── fbneo.sh
│   │   │   ├── flycast-dojo/
│   │   │   │   ├── config/
│   │   │   │   │   └── emu.cfg
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   ├── 03-sdl.patch
│   │   │   │   │   └── arm/
│   │   │   │   │       └── 01-EmuELEC-fix-arm-compile.patch
│   │   │   │   └── scripts/
│   │   │   │       └── flycastdojo.sh
│   │   │   ├── flycastsa/
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   ├── 03-sdl.patch
│   │   │   │   │   └── arm/
│   │   │   │   │       └── 01-EmuELEC-fix-arm-compile.patch
│   │   │   │   └── scripts/
│   │   │   │       ├── flycast.sh
│   │   │   │       ├── flycastcheevos.sh
│   │   │   │       └── set_flycast_joy.sh
│   │   │   ├── hatarisa/
│   │   │   │   ├── config/
│   │   │   │   │   └── conf/
│   │   │   │   │       └── Atari-ST-default.cfg
│   │   │   │   ├── package.mk
│   │   │   │   ├── portaudio/
│   │   │   │   │   └── package.mk
│   │   │   │   └── scripts/
│   │   │   │       └── hatari.start
│   │   │   ├── hypseus-singe/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       ├── hypseus-singe-001-buildfix.patch
│   │   │   │       ├── hypseus-singe-002-headersfix.patch
│   │   │   │       └── manymouse.patch
│   │   │   ├── ikemen-go/
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   └── 0001-enhance_joystick_and_game_controller_support.patch
│   │   │   │   ├── sdlgamepadmap/
│   │   │   │   │   ├── package.mk
│   │   │   │   │   └── src/
│   │   │   │   │       └── sdl_gamepadmap.c
│   │   │   │   └── src/
│   │   │   │       ├── Ikemen_Go.sh
│   │   │   │       └── asound-ikemen.conf
│   │   │   ├── jzintv/
│   │   │   │   ├── config/
│   │   │   │   │   └── jzintv_keyb.hack
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   └── 01-emuelec-only-build-emu.patch
│   │   │   │   └── scripts/
│   │   │   │       └── jzintv.sh
│   │   │   ├── mesen2/
│   │   │   │   ├── package.mk
│   │   │   │   └── sources/
│   │   │   │       └── makefile
│   │   │   ├── mupen64plussa/
│   │   │   │   ├── mupen64plussa-audio-sdl/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── mupen64plussa-core/
│   │   │   │   │   ├── config/
│   │   │   │   │   │   └── mupen64plus.cfg
│   │   │   │   │   ├── m64p.sh
│   │   │   │   │   ├── package.mk
│   │   │   │   │   └── set_mupen64_joy.sh
│   │   │   │   ├── mupen64plussa-input-sdl/
│   │   │   │   │   ├── config/
│   │   │   │   │   │   └── InputAutoCfg.ini
│   │   │   │   │   └── package.mk
│   │   │   │   ├── mupen64plussa-rsp-hle/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── mupen64plussa-ui-console/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── mupen64plussa-video-glide64mk2/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── mupen64plussa-video-rice/
│   │   │   │   │   └── package.mk
│   │   │   │   └── package.mk
│   │   │   ├── openbor/
│   │   │   │   ├── config/
│   │   │   │   │   ├── gptokeyb/
│   │   │   │   │   │   └── openbor.gptk
│   │   │   │   │   └── master.cfg
│   │   │   │   ├── openborff/
│   │   │   │   │   ├── config/
│   │   │   │   │   │   └── master.cfg
│   │   │   │   │   ├── package.mk
│   │   │   │   │   └── patches/
│   │   │   │   │       └── emuelec-aarch64/
│   │   │   │   │           └── openborff-01-addplatform_fixes.patch
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   ├── 002openbor-defaultfs.patch
│   │   │   │   │   ├── 007-version.patch
│   │   │   │   │   ├── arm/
│   │   │   │   │   │   └── openbor-02-addplatform.patch
│   │   │   │   │   └── emuelec-aarch64/
│   │   │   │   │       └── openbor-02-addplatform.patch
│   │   │   │   └── scripts/
│   │   │   │       └── openbor.sh
│   │   │   ├── oricutron/
│   │   │   │   ├── config/
│   │   │   │   │   ├── oricutron.cfg
│   │   │   │   │   └── oricutron.gptk
│   │   │   │   ├── package.mk
│   │   │   │   └── scripts/
│   │   │   │       └── oricutronstart.sh
│   │   │   ├── picodrivesa/
│   │   │   │   └── package.mk
│   │   │   ├── scummvmsa/
│   │   │   │   ├── bin/
│   │   │   │   │   └── scummvm.start
│   │   │   │   ├── config/
│   │   │   │   │   └── scummvm.ini
│   │   │   │   └── package.mk
│   │   │   ├── simcoupe/
│   │   │   │   ├── config/
│   │   │   │   │   └── simcoupe.gptk
│   │   │   │   ├── package.mk
│   │   │   │   └── scripts/
│   │   │   │       └── simcoupestart.sh
│   │   │   ├── solarus/
│   │   │   │   ├── config/
│   │   │   │   │   └── pads.ini
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   ├── solarus-001-addFindOpenGles2.patch
│   │   │   │   │   ├── solarus-002-pad.patch
│   │   │   │   │   └── solarus-003-dirs.patch
│   │   │   │   └── scripts/
│   │   │   │       └── solarus.sh
│   │   │   ├── stellasa/
│   │   │   │   ├── package.mk
│   │   │   │   └── scripts/
│   │   │   │       └── stella.sh
│   │   │   ├── sundog/
│   │   │   │   └── package.mk
│   │   │   ├── ti99sim/
│   │   │   │   ├── package.mk
│   │   │   │   └── scripts/
│   │   │   │       └── ti99sdlstart.sh
│   │   │   ├── vector06sdl/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── patch.patch
│   │   │   ├── viceSA/
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   └── viceSA-001-no-docs.patch
│   │   │   │   └── xa/
│   │   │   │       └── package.mk
│   │   │   ├── x16/
│   │   │   │   ├── package.mk
│   │   │   │   └── scripts/
│   │   │   │       └── x16emustart.sh
│   │   │   ├── xroar/
│   │   │   │   ├── config/
│   │   │   │   │   └── xroar.gptk
│   │   │   │   ├── package.mk
│   │   │   │   └── scripts/
│   │   │   │       └── xroar.sh
│   │   │   ├── yabasanshiroSA_1_11/
│   │   │   │   ├── config/
│   │   │   │   │   └── input.cfg
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   ├── 02-yabasanshiroSA-use-system-libpng.patch
│   │   │   │   │   └── 04-yabasanshiroSA-use-paths.patch
│   │   │   │   └── scripts/
│   │   │   │       ├── set_yabasanshiro_joy.sh
│   │   │   │       └── yabasanshiro.sh
│   │   │   └── yabasanshiroSA_1_5/
│   │   │       ├── config/
│   │   │       │   └── input.cfg
│   │   │       ├── package.mk
│   │   │       ├── patches/
│   │   │       │   ├── 01-yabasanshiroSA-EmuELEC-add-missing-include.patch
│   │   │       │   ├── 02-yabasanshiroSA-EmuELEC-use-system-libpng.patch
│   │   │       │   ├── 03-yabasanshiroSA-removegl3ext.patch
│   │   │       │   └── 04-yabasanshiroSA-use-EmuELEC-paths.patch
│   │   │       └── scripts/
│   │   │           ├── set_yabasanshiro_joy.sh
│   │   │           └── yabasanshiro1_5.sh
│   │   ├── libretro/
│   │   │   ├── 2048/
│   │   │   │   └── package.mk
│   │   │   ├── 81/
│   │   │   │   └── package.mk
│   │   │   ├── a5200/
│   │   │   │   └── package.mk
│   │   │   ├── arduous/
│   │   │   │   └── package.mk
│   │   │   ├── atari800/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       ├── aarch64/
│   │   │   │       │   └── atari800-01-add-emuelec-platform.patch
│   │   │   │       └── arm/
│   │   │   │           └── atari800-01-add-emuelec-platform.patch
│   │   │   ├── b2/
│   │   │   │   └── package.mk
│   │   │   ├── beetle-gba/
│   │   │   │   └── package.mk
│   │   │   ├── beetle-lynx/
│   │   │   │   └── package.mk
│   │   │   ├── beetle-ngp/
│   │   │   │   └── package.mk
│   │   │   ├── beetle-pce/
│   │   │   │   └── package.mk
│   │   │   ├── beetle-pcfx/
│   │   │   │   └── package.mk
│   │   │   ├── beetle-psx-hw/
│   │   │   │   └── package.mk
│   │   │   ├── beetle-saturn/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── 02.patch
│   │   │   ├── beetle-supergrafx/
│   │   │   │   └── package.mk
│   │   │   ├── beetle-vb/
│   │   │   │   └── package.mk
│   │   │   ├── beetle-wswan/
│   │   │   │   └── package.mk
│   │   │   ├── bk/
│   │   │   │   └── package.mk
│   │   │   ├── bluemsx/
│   │   │   │   └── package.mk
│   │   │   ├── bnes/
│   │   │   │   └── package.mk
│   │   │   ├── bsnes_hd/
│   │   │   │   └── package.mk
│   │   │   ├── cannonball/
│   │   │   │   └── package.mk
│   │   │   ├── cap32/
│   │   │   │   └── package.mk
│   │   │   ├── chaigame/
│   │   │   │   └── package.mk
│   │   │   ├── chailove/
│   │   │   │   └── package.mk
│   │   │   ├── clownmdemu/
│   │   │   │   └── package.mk
│   │   │   ├── craft/
│   │   │   │   └── package.mk
│   │   │   ├── crocods/
│   │   │   │   └── package.mk
│   │   │   ├── daphne/
│   │   │   │   └── package.mk
│   │   │   ├── desmume/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       ├── desmume-001-arm64-build-fix.patch
│   │   │   │       └── desmume-002-disable-ogl.patch
│   │   │   ├── desmume-2015/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── desmume-2015-001-arm64-build-fix.patch
│   │   │   ├── dice/
│   │   │   │   └── package.mk
│   │   │   ├── dinothawr/
│   │   │   │   └── package.mk
│   │   │   ├── dosbox/
│   │   │   │   └── package.mk
│   │   │   ├── dosbox-pure/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── dosbox-pure-add-emuelec-platform.patch
│   │   │   ├── dosbox-svn/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── dosbox-svn-use-sdl-config.patch
│   │   │   ├── duckstation-lr/
│   │   │   │   └── package.mk
│   │   │   ├── easyrpg/
│   │   │   │   ├── liblcf/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── libspeexdsp/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── libxmp-lite/
│   │   │   │   │   ├── package.mk
│   │   │   │   │   └── sources/
│   │   │   │   │       └── CMakeLists.txt
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── easyrpg-disable-manpage-doxygen.patch
│   │   │   ├── emuscv/
│   │   │   │   └── package.mk
│   │   │   ├── emux-sms/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── emux-sms-01-buildfix.patch
│   │   │   ├── ep128emu/
│   │   │   │   └── package.mk
│   │   │   ├── fake_08/
│   │   │   │   └── package.mk
│   │   │   ├── fbalpha/
│   │   │   │   └── package.mk
│   │   │   ├── fbalpha2012/
│   │   │   │   └── package.mk
│   │   │   ├── fbneo/
│   │   │   │   └── package.mk
│   │   │   ├── fceumm/
│   │   │   │   └── package.mk
│   │   │   ├── fceumm-mod/
│   │   │   │   └── package.mk
│   │   │   ├── flycast/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── Amlogic/
│   │   │   │           ├── flycast-01-buildfix.patch
│   │   │   │           └── flycast-02-set_optim.patch
│   │   │   ├── fmsx-libretro/
│   │   │   │   └── package.mk
│   │   │   ├── freechaf/
│   │   │   │   └── package.mk
│   │   │   ├── freeintv/
│   │   │   │   └── package.mk
│   │   │   ├── freej2me/
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   └── 01-emuelec-paths.patch
│   │   │   │   └── scripts/
│   │   │   │       └── freej2me.sh
│   │   │   ├── frodo/
│   │   │   │   └── package.mk
│   │   │   ├── fsuae/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── fsuae-libretro-001-link-glib.patch
│   │   │   ├── fuse-libretro/
│   │   │   │   └── package.mk
│   │   │   ├── gambatte/
│   │   │   │   └── package.mk
│   │   │   ├── gearboy/
│   │   │   │   └── package.mk
│   │   │   ├── gearcoleco/
│   │   │   │   └── package.mk
│   │   │   ├── geargrafx/
│   │   │   │   └── package.mk
│   │   │   ├── gearlynx/
│   │   │   │   └── package.mk
│   │   │   ├── gearsystem/
│   │   │   │   └── package.mk
│   │   │   ├── genesis-plus-gx/
│   │   │   │   └── package.mk
│   │   │   ├── genesis-plus-gx-wide/
│   │   │   │   └── package.mk
│   │   │   ├── genesis_plus_gx_cart_special/
│   │   │   │   ├── genesis_plus_gx_cart_special.info
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── ae77caee6d249667d3cbdbb1bcdfa8d5186f949b.patch
│   │   │   ├── geolith/
│   │   │   │   └── package.mk
│   │   │   ├── gme/
│   │   │   │   └── package.mk
│   │   │   ├── gpsp/
│   │   │   │   └── package.mk
│   │   │   ├── gw-libretro/
│   │   │   │   └── package.mk
│   │   │   ├── handy/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── aarch64/
│   │   │   │           └── handy-01-add-emuelec.patch
│   │   │   ├── hatari/
│   │   │   │   └── package.mk
│   │   │   ├── imame4all/
│   │   │   │   └── package.mk
│   │   │   ├── jaxe/
│   │   │   │   └── package.mk
│   │   │   ├── jollycv/
│   │   │   │   └── package.mk
│   │   │   ├── libretro-bash-launcher/
│   │   │   │   └── package.mk
│   │   │   ├── lowresnx/
│   │   │   │   └── package.mk
│   │   │   ├── lr-dolphin/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       ├── 001-openglmessage.patch
│   │   │   │       └── dolphin-01-buildfix-libusb.patch
│   │   │   ├── lutro/
│   │   │   │   └── package.mk
│   │   │   ├── m2000/
│   │   │   │   └── package.mk
│   │   │   ├── mame/
│   │   │   │   ├── config/
│   │   │   │   │   ├── MAME/
│   │   │   │   │   │   └── MAME.opt
│   │   │   │   │   └── ini/
│   │   │   │   │       ├── fmtownsftv.ini
│   │   │   │   │       ├── fmtownshr.ini
│   │   │   │   │       ├── fmtownsux.ini
│   │   │   │   │       └── mame.ini
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   ├── mame-crosscompile.patch
│   │   │   │   │   ├── mame-remove-bgfx.patch
│   │   │   │   │   ├── mame-workaround-for-arm-cross-compilation.patch
│   │   │   │   │   ├── neww.patch
│   │   │   │   │   └── thread-patch
│   │   │   │   └── scripts/
│   │   │   │       └── mame.sh
│   │   │   ├── mame2000/
│   │   │   │   └── package.mk
│   │   │   ├── mame2003/
│   │   │   │   └── package.mk
│   │   │   ├── mame2003-midway/
│   │   │   │   └── package.mk
│   │   │   ├── mame2003-plus/
│   │   │   │   └── package.mk
│   │   │   ├── mame2003-xtreme/
│   │   │   │   ├── package.mk
│   │   │   │   └── sources/
│   │   │   │       └── km_mame2003_xtreme_libretro.info
│   │   │   ├── mame2010/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       ├── libretro-mame2010-0001_fix-cross-build.patch
│   │   │   │       └── libretro-mame2010-0002_fix-cheats.patch
│   │   │   ├── mame2015/
│   │   │   │   └── package.mk
│   │   │   ├── mame2016/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       ├── 57.patch
│   │   │   │       ├── bgfx.patch
│   │   │   │       ├── build.patch
│   │   │   │       ├── genie.patch
│   │   │   │       ├── mame2016-libretro-crosscompile.patch
│   │   │   │       ├── pregenerate.patch
│   │   │   │       └── pythonfix.patch
│   │   │   ├── melonds/
│   │   │   │   └── package.mk
│   │   │   ├── meowpc98/
│   │   │   │   └── package.mk
│   │   │   ├── mesen/
│   │   │   │   └── package.mk
│   │   │   ├── mesen-s/
│   │   │   │   └── package.mk
│   │   │   ├── meteor/
│   │   │   │   └── package.mk
│   │   │   ├── mgba/
│   │   │   │   └── package.mk
│   │   │   ├── minivmac/
│   │   │   │   └── package.mk
│   │   │   ├── mojozork/
│   │   │   │   └── package.mk
│   │   │   ├── mrboom/
│   │   │   │   └── package.mk
│   │   │   ├── multiemu/
│   │   │   │   ├── config/
│   │   │   │   │   └── ini/
│   │   │   │   │       ├── fmtownsftv.ini
│   │   │   │   │       ├── fmtownshr.ini
│   │   │   │   │       ├── fmtownsux.ini
│   │   │   │   │       └── mame.ini
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   ├── fmtownshash.patch
│   │   │   │   │   ├── mame-crosscompile.patch
│   │   │   │   │   ├── mame-remove-bgfx.patch
│   │   │   │   │   ├── mame-workaround-for-arm-cross-compilation.patch
│   │   │   │   │   ├── mutex.patch
│   │   │   │   │   ├── new.patch
│   │   │   │   │   └── thread-patch
│   │   │   │   └── scripts/
│   │   │   │       └── multiemu.sh
│   │   │   ├── mupen64plus/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       ├── mupen64plus-fixdouble.patch
│   │   │   │       ├── mupen64plus-gcc10-32bit-fix.patch
│   │   │   │       └── mupen64plus-sx05re-neonfix.patch
│   │   │   ├── mupen64plus-nx/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── mupen64plus-nx-01-add-amlogic64.patch
│   │   │   ├── mupen64plus-nx-alt/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── mupen64plus-nx-01-add-amlogic64.patch
│   │   │   ├── neocd_libretro/
│   │   │   │   └── package.mk
│   │   │   ├── nestopia/
│   │   │   │   └── package.mk
│   │   │   ├── nestopiaCV/
│   │   │   │   └── package.mk
│   │   │   ├── np2kai/
│   │   │   │   └── package.mk
│   │   │   ├── nxengine/
│   │   │   │   └── package.mk
│   │   │   ├── o2em/
│   │   │   │   └── package.mk
│   │   │   ├── opera/
│   │   │   │   └── package.mk
│   │   │   ├── parallel-n64/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       ├── emuelec-aarch64/
│   │   │   │       │   └── parallel-n64-add_platform.patch
│   │   │   │       └── emuelec-arm32/
│   │   │   │           └── parallel-n64-add_platform.patch
│   │   │   ├── pcsx_rearmed/
│   │   │   │   └── package.mk
│   │   │   ├── picodrive/
│   │   │   │   └── package.mk
│   │   │   ├── pocketcdg/
│   │   │   │   └── package.mk
│   │   │   ├── pokemini/
│   │   │   │   └── package.mk
│   │   │   ├── potator/
│   │   │   │   └── package.mk
│   │   │   ├── ppsspp/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── ppsspp-x86_64-fix.patch
│   │   │   ├── prboom/
│   │   │   │   └── package.mk
│   │   │   ├── prosystem/
│   │   │   │   └── package.mk
│   │   │   ├── psp1/
│   │   │   │   └── package.mk
│   │   │   ├── puae/
│   │   │   │   └── package.mk
│   │   │   ├── puae2021/
│   │   │   │   └── package.mk
│   │   │   ├── px68k/
│   │   │   │   └── package.mk
│   │   │   ├── quasi88/
│   │   │   │   └── package.mk
│   │   │   ├── quicknes/
│   │   │   │   └── package.mk
│   │   │   ├── reminiscence/
│   │   │   │   └── package.mk
│   │   │   ├── same_cdi/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── mame-crosscompile.patch
│   │   │   ├── sameboy/
│   │   │   │   └── package.mk
│   │   │   ├── sameduck/
│   │   │   │   └── package.mk
│   │   │   ├── scummvm/
│   │   │   │   └── package.mk
│   │   │   ├── snes9x/
│   │   │   │   └── package.mk
│   │   │   ├── snes9x2002/
│   │   │   │   └── package.mk
│   │   │   ├── snes9x2005/
│   │   │   │   └── package.mk
│   │   │   ├── snes9x2005_plus/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       ├── aarch64/
│   │   │   │       │   └── 01-snes9x2005_plux-01-fix-fpic.patch
│   │   │   │       └── arm/
│   │   │   │           └── 01-snes9x2005_plux-01-fix-fpic.patch
│   │   │   ├── snes9x2010/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── snes9x2010-add-oga.patch
│   │   │   ├── spring/
│   │   │   │   ├── package.mk
│   │   │   │   └── sources/
│   │   │   │       ├── retroarch32.sh
│   │   │   │       ├── spring_pcsx_rearmed32_libretro.info
│   │   │   │       ├── spring_ppsspp_libretro.info
│   │   │   │       └── spring_shell_libretro.info
│   │   │   ├── stella/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── stella-01-emuelec-platform.patch
│   │   │   ├── supafaust/
│   │   │   │   └── package.mk
│   │   │   ├── swanstation/
│   │   │   │   └── package.mk
│   │   │   ├── tgbdual/
│   │   │   │   └── package.mk
│   │   │   ├── theodore/
│   │   │   │   └── package.mk
│   │   │   ├── tic-80/
│   │   │   │   └── package.mk
│   │   │   ├── tyrquake/
│   │   │   │   └── package.mk
│   │   │   ├── uae4arm/
│   │   │   │   └── package.mk
│   │   │   ├── uzebox/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── uzebox-01-buildfix.patch
│   │   │   ├── uzem/
│   │   │   │   └── package.mk
│   │   │   ├── vba-next/
│   │   │   │   └── package.mk
│   │   │   ├── vbam/
│   │   │   │   └── package.mk
│   │   │   ├── vecx/
│   │   │   │   └── package.mk
│   │   │   ├── vice/
│   │   │   │   └── package.mk
│   │   │   ├── vircon32/
│   │   │   │   └── package.mk
│   │   │   ├── virtualjaguar/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── 001-optimize.patch
│   │   │   ├── wasm4/
│   │   │   │   └── package.mk
│   │   │   ├── xmil/
│   │   │   │   └── package.mk
│   │   │   ├── xrick/
│   │   │   │   └── package.mk
│   │   │   ├── yabasanshiro/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── aarch64/
│   │   │   │           └── 01-optimization.patch
│   │   │   └── yabause/
│   │   │       └── package.mk
│   │   ├── libretro_base/
│   │   │   ├── common-shaders/
│   │   │   │   └── package.mk
│   │   │   ├── core-info/
│   │   │   │   └── package.mk
│   │   │   ├── glsl-shaders/
│   │   │   │   └── package.mk
│   │   │   ├── libretro-database/
│   │   │   │   └── package.mk
│   │   │   ├── retroarch/
│   │   │   │   ├── modprobe.d/
│   │   │   │   │   └── usbhid.conf
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   ├── 13pixel.patch
│   │   │   │   │   ├── Amlogic-old/
│   │   │   │   │   │   └── 01-ALSA_fix.patch
│   │   │   │   │   ├── OdroidGoAdvance/
│   │   │   │   │   │   ├── 0001-video_thread_wrapper-implement-RETRO_ENVIRONMENT_GET.patch
│   │   │   │   │   │   ├── 999-emuelec-add-vertical.patch
│   │   │   │   │   │   ├── 999-enable_rga_scaling_for_gf.patch
│   │   │   │   │   │   └── 9999-emuelec-unify-brightness.patch
│   │   │   │   │   ├── retroarch-01-xkb-fix.patch
│   │   │   │   │   ├── retroarch-02_disable_search.patch
│   │   │   │   │   ├── retroarch-04-enablecontent.patch
│   │   │   │   │   ├── retroarch-10-Exit_menu.patch
│   │   │   │   │   └── retroarch-12-input_sort_devices.patch
│   │   │   │   ├── scripts/
│   │   │   │   │   └── retroarch-config
│   │   │   │   ├── system.d/
│   │   │   │   │   ├── retroarch.service
│   │   │   │   │   ├── tmp-assets.mount
│   │   │   │   │   ├── tmp-cores.mount
│   │   │   │   │   ├── tmp-database.mount
│   │   │   │   │   ├── tmp-joypads.mount
│   │   │   │   │   ├── tmp-overlays.mount
│   │   │   │   │   └── tmp-shaders.mount
│   │   │   │   ├── tmpfiles.d/
│   │   │   │   │   └── retroarch-userdirs.conf
│   │   │   │   └── udev.d/
│   │   │   │       ├── 99-8bitdo-bluetooth-controllers.rules
│   │   │   │       ├── 99-ION-iCade-bluetooth.rules
│   │   │   │       ├── 99-bluetooth-power-on.rules
│   │   │   │       ├── 99-evdev.rules
│   │   │   │       ├── 99-gen-game-s3-controller.rules
│   │   │   │       ├── 99-homatics-gamepad.rules
│   │   │   │       ├── 99-juyao-dual-arcade.rules
│   │   │   │       ├── 99-nintendo-wii-remote.rules
│   │   │   │       ├── 99-ninteno-wii-remote.rules
│   │   │   │       ├── 99-nv-shield-controller.rules
│   │   │   │       ├── 99-ouya-controller.rules
│   │   │   │       └── 99-terios-t3.rules
│   │   │   ├── retroarch-assets/
│   │   │   │   └── package.mk
│   │   │   ├── retroarch-overlays/
│   │   │   │   └── package.mk
│   │   │   └── wii-u-gc-adapter/
│   │   │       ├── package.mk
│   │   │       └── system.d/
│   │   │           └── wii-u-gc-adapter.service
│   │   └── tools/
│   │       ├── 32bit/
│   │       │   ├── emuelec-32bit-info/
│   │       │   │   └── package.mk
│   │       │   └── emuelec-32bit-libs/
│   │       │       ├── infos/
│   │       │       │   ├── flycast_32b_libretro.info
│   │       │       │   ├── mupen64plus_32b_libretro.info
│   │       │       │   ├── mupen64plus_next_alt_libretro.info
│   │       │       │   ├── pcsx_rearmed_32b_libretro.info
│   │       │       │   ├── uae4arm_32b_libretro.info
│   │       │       │   └── vice_x64dtv_libretro.info
│   │       │       └── package.mk
│   │       ├── SDL/
│   │       │   └── SDL_net/
│   │       │       └── package.mk
│   │       ├── SDL2/
│   │       │   ├── SDL2_gfx/
│   │       │   │   └── package.mk
│   │       │   ├── SDL2_image/
│   │       │   │   └── package.mk
│   │       │   ├── SDL2_mixer/
│   │       │   │   └── package.mk
│   │       │   ├── SDL2_net/
│   │       │   │   └── package.mk
│   │       │   ├── SDL2_ttf/
│   │       │   │   ├── package.mk
│   │       │   │   └── patches/
│   │       │   │       └── SDL2_ttf-001-opengl-only-with-x.patch
│   │       │   └── SDL_sound/
│   │       │       └── package.mk
│   │       ├── btop/
│   │       │   └── package.mk
│   │       ├── emuelec-tools/
│   │       │   └── package.mk
│   │       ├── qt-everywhere/
│   │       │   ├── package.mk
│   │       │   └── patches/
│   │       │       └── qt-everywhere-5.15.0.GCC11-limits.patch
│   │       ├── scrapers/
│   │       │   └── Skyscraper/
│   │       │       ├── config/
│   │       │       │   ├── artwork.xml
│   │       │       │   └── config.ini
│   │       │       ├── package.mk
│   │       │       └── scripts/
│   │       │           └── skyscraper
│   │       ├── sdl12-compat/
│   │       │   ├── package.mk
│   │       │   └── patches/
│   │       │       ├── fix-pkgconfig.patch
│   │       │       └── fix-sdlconfig.patch
│   │       ├── sound/
│   │       │   ├── espeak/
│   │       │   │   ├── package.mk
│   │       │   │   └── patches/
│   │       │   │       ├── espeak-1.47-ftbs-ld-libm.patch
│   │       │   │       ├── espeak-1.47-wav-close.patch
│   │       │   │       └── espeak-1.48-gcc-6-fix.patch
│   │       │   ├── fluidsynth-git/
│   │       │   │   ├── config/
│   │       │   │   │   └── fluidsynth.conf
│   │       │   │   ├── package.mk
│   │       │   │   └── system.d/
│   │       │   │       └── fluidsynth.service
│   │       │   ├── libvorbisidec/
│   │       │   │   └── package.mk
│   │       │   ├── modplug/
│   │       │   │   └── package.mk
│   │       │   ├── mpg123-compat/
│   │       │   │   └── package.mk
│   │       │   ├── opusfile/
│   │       │   │   └── package.mk
│   │       │   ├── soundfont-generaluser/
│   │       │   │   └── package.mk
│   │       │   ├── timidity/
│   │       │   │   ├── config/
│   │       │   │   │   ├── GeneralUser.cfg
│   │       │   │   │   ├── fluidr3_gm.cfg
│   │       │   │   │   ├── fluidr3_gs.cfg
│   │       │   │   │   ├── freepats.cfg
│   │       │   │   │   ├── soundfont_readme.txt
│   │       │   │   │   └── timidity.cfg
│   │       │   │   ├── package.mk
│   │       │   │   └── patches/
│   │       │   │       ├── 02-calcnewt-host-build.patch
│   │       │   │       └── 03-ar-cru-fix.patch
│   │       │   └── wildmidi/
│   │       │       ├── package.mk
│   │       │       └── sources/
│   │       │           └── CMakeLists.txt
│   │       ├── sysutils/
│   │       │   ├── 351Files/
│   │       │   │   ├── config/
│   │       │   │   │   └── gptokeyb/
│   │       │   │   │       └── 351Files.gptk
│   │       │   │   ├── package.mk
│   │       │   │   └── patches/
│   │       │   │       └── 01-EmuELEC.patch
│   │       │   ├── MC/
│   │       │   │   ├── etc/
│   │       │   │   │   ├── edit.indent.rc
│   │       │   │   │   ├── edit.spell.rc
│   │       │   │   │   ├── filehighlight.ini
│   │       │   │   │   ├── ini
│   │       │   │   │   ├── mc.ext
│   │       │   │   │   ├── mc.keymap
│   │       │   │   │   ├── mc.keymap.default
│   │       │   │   │   ├── mc.keymap.emacs
│   │       │   │   │   ├── mc.menu
│   │       │   │   │   ├── mc.menu.sr
│   │       │   │   │   ├── mcedit.menu
│   │       │   │   │   ├── panels.ini
│   │       │   │   │   └── sfs.ini
│   │       │   │   ├── package.mk
│   │       │   │   ├── patches/
│   │       │   │   │   └── MC-01-utf8.patch
│   │       │   │   └── profile.d/
│   │       │   │       └── 52-mc.conf
│   │       │   ├── SDL_GameControllerDB/
│   │       │   │   ├── package.mk
│   │       │   │   └── patches/
│   │       │   │       └── add-emuelec-gamepads.patch
│   │       │   ├── TvTextViewer/
│   │       │   │   └── package.mk
│   │       │   ├── bluetool/
│   │       │   │   ├── package.mk
│   │       │   │   └── patches/
│   │       │   │       └── 12.patch
│   │       │   ├── coreutils/
│   │       │   │   └── package.mk
│   │       │   ├── dasbus/
│   │       │   │   └── package.mk
│   │       │   ├── dialog/
│   │       │   │   └── package.mk
│   │       │   ├── ee_utils/
│   │       │   │   ├── package.mk
│   │       │   │   └── sources/
│   │       │   │       ├── ee_asd.c
│   │       │   │       └── ees.c
│   │       │   ├── eemount/
│   │       │   │   └── package.mk
│   │       │   ├── empty/
│   │       │   │   └── package.mk
│   │       │   ├── evdev_tools/
│   │       │   │   ├── package.mk
│   │       │   │   └── sources/
│   │       │   │       ├── evkill.c
│   │       │   │       ├── evtest.c
│   │       │   │       ├── remap.c
│   │       │   │       └── send.c
│   │       │   ├── exfat/
│   │       │   │   ├── package.mk
│   │       │   │   └── patches/
│   │       │   │       └── 01-no-fuse.patch
│   │       │   ├── exfat-linux/
│   │       │   │   └── package.mk
│   │       │   ├── fbdump/
│   │       │   │   └── package.mk
│   │       │   ├── fbfix/
│   │       │   │   ├── package.mk
│   │       │   │   └── sources/
│   │       │   │       └── fbfix.c
│   │       │   ├── fbgrab/
│   │       │   │   ├── package.mk
│   │       │   │   └── sources/
│   │       │   │       └── screenshot.sh
│   │       │   ├── fbterm/
│   │       │   │   ├── package.mk
│   │       │   │   └── patches/
│   │       │   │       ├── 0001-fbio.cpp-improxy.cpp-fbterm.cpp-fix-musl-compile.patch
│   │       │   │       └── gcc-6-build-fixes.patch
│   │       │   ├── freeimage/
│   │       │   │   ├── package.mk
│   │       │   │   └── patches/
│   │       │   │       └── freeimage-02-makefix.patch
│   │       │   ├── git/
│   │       │   │   └── package.mk
│   │       │   ├── gptokeyb/
│   │       │   │   └── package.mk
│   │       │   ├── grep/
│   │       │   │   └── package.mk
│   │       │   ├── iotop/
│   │       │   │   └── package.mk
│   │       │   ├── joyutils/
│   │       │   │   └── package.mk
│   │       │   ├── jslisten/
│   │       │   │   └── package.mk
│   │       │   ├── light/
│   │       │   │   └── package.mk
│   │       │   ├── luajit/
│   │       │   │   ├── package.mk
│   │       │   │   └── patches/
│   │       │   │       └── luajit-crosscompile.patch
│   │       │   ├── munt/
│   │       │   │   ├── munt_alsadrv/
│   │       │   │   │   └── package.mk
│   │       │   │   └── package.mk
│   │       │   ├── patchelf/
│   │       │   │   └── package.mk
│   │       │   ├── physfs/
│   │       │   │   └── package.mk
│   │       │   ├── poppler/
│   │       │   │   └── package.mk
│   │       │   ├── progressor/
│   │       │   │   ├── package.mk
│   │       │   │   └── patches/
│   │       │   │       └── gles.patch
│   │       │   ├── pygame/
│   │       │   │   └── package.mk
│   │       │   ├── python-evdev/
│   │       │   │   └── package.mk
│   │       │   ├── python3-protobuf/
│   │       │   │   ├── package.mk
│   │       │   │   └── patches/
│   │       │   │       └── python3-protobuf-001-add-experimental_allow_proto3_optional.patch
│   │       │   ├── pyudev/
│   │       │   │   ├── package.mk
│   │       │   │   └── patches/
│   │       │   │       └── pyudev-001-libraryfix.patch
│   │       │   ├── pyyaml/
│   │       │   │   └── package.mk
│   │       │   ├── rclone/
│   │       │   │   ├── bin/
│   │       │   │   │   └── ra_rclone.sh
│   │       │   │   ├── config/
│   │       │   │   │   └── emuelec-cloud-filter.cfg
│   │       │   │   └── package.mk
│   │       │   ├── rs97-commander-sdl2/
│   │       │   │   └── package.mk
│   │       │   ├── sdljoytest/
│   │       │   │   └── package.mk
│   │       │   ├── sdlterm/
│   │       │   │   ├── package.mk
│   │       │   │   └── sources/
│   │       │   │       └── sdlterm.cpp
│   │       │   ├── six/
│   │       │   │   └── package.mk
│   │       │   ├── sixaxis/
│   │       │   │   ├── package.mk
│   │       │   │   ├── system.d/
│   │       │   │   │   └── sixaxis@.service
│   │       │   │   └── udev.d/
│   │       │   │       └── 99-sixaxis.rules
│   │       │   ├── sixpair/
│   │       │   │   └── package.mk
│   │       │   ├── tcpbridge/
│   │       │   │   └── package.mk
│   │       │   ├── triggerhappy/
│   │       │   │   └── package.mk
│   │       │   ├── vim/
│   │       │   │   └── package.mk
│   │       │   ├── wget/
│   │       │   │   └── package.mk
│   │       │   ├── xow/
│   │       │   │   └── package.mk
│   │       │   └── yasm/
│   │       │       └── package.mk
│   │       ├── unused/
│   │       │   ├── eigen/
│   │       │   │   └── package.mk
│   │       │   ├── emulators/
│   │       │   │   ├── fba4arm/
│   │       │   │   │   └── package.mk
│   │       │   │   ├── mba.mini.plus/
│   │       │   │   │   ├── package.mk
│   │       │   │   │   └── patches/
│   │       │   │   │       └── emuelec-aarch64/
│   │       │   │   │           └── mba.mini.plus-01-add-emuelec-64b.patch
│   │       │   │   └── reicastsa/
│   │       │   │       ├── config/
│   │       │   │       │   └── reicast/
│   │       │   │       │       ├── emu_new.cfg
│   │       │   │       │       ├── f310.cfg
│   │       │   │       │       ├── mappings/
│   │       │   │       │       │   ├── Logitech Gamepad F310.cfg
│   │       │   │       │       │   ├── controller_gcwz.cfg
│   │       │   │       │       │   ├── controller_generic.cfg
│   │       │   │       │       │   ├── controller_pandora.cfg
│   │       │   │       │       │   ├── controller_xboxdrv.cfg
│   │       │   │       │       │   ├── controller_xpad.cfg
│   │       │   │       │       │   └── keyboard.cfg
│   │       │   │       │       └── x360.cfg
│   │       │   │       ├── package.mk
│   │       │   │       ├── patches/
│   │       │   │       │   ├── Amlogic/
│   │       │   │       │   │   ├── reicastsa-02-add_platform_OdroidC2.patch
│   │       │   │       │   │   └── reicastsa-03-mali.patch
│   │       │   │       │   ├── Amlogic-ng/
│   │       │   │       │   │   ├── reicastsa-02-add_platform_OdroidC2.patch
│   │       │   │       │   │   ├── reicastsa-03-mali.patch
│   │       │   │       │   │   └── reicastsa-05-fix-gles.patch
│   │       │   │       │   ├── reicastsa-01-libpng-fix-arm-neon.patch
│   │       │   │       │   └── reicastsa-04-fix-neon.patch
│   │       │   │       ├── reicastsa_old/
│   │       │   │       │   ├── config/
│   │       │   │       │   │   └── reicast/
│   │       │   │       │   │       └── emu_old.cfg
│   │       │   │       │   ├── package.mk
│   │       │   │       │   └── patches/
│   │       │   │       │       ├── Amlogic/
│   │       │   │       │       │   └── reicastsa-02-add_platform_OdroidC2.patch
│   │       │   │       │       ├── Amlogic-ng/
│   │       │   │       │       │   └── reicastsa-02-add_platform_OdroidC2.patch
│   │       │   │       │       ├── reicastsa-01-libpng-fix-arm-neon.patch
│   │       │   │       │       └── reicastsa-04-fix-neon.patch
│   │       │   │       └── scripts/
│   │       │   │           └── reicast.sh
│   │       │   ├── fbida/
│   │       │   │   └── package.mk
│   │       │   ├── fbpad/
│   │       │   │   ├── package.mk
│   │       │   │   └── sources/
│   │       │   │       ├── Makefile
│   │       │   │       ├── conf.h
│   │       │   │       ├── courr.tf
│   │       │   │       ├── draw.c
│   │       │   │       └── fbpad-256
│   │       │   ├── munt_neon/
│   │       │   │   ├── math_neon/
│   │       │   │   │   └── package.mk
│   │       │   │   └── package.mk_
│   │       │   └── steam-controller/
│   │       │       ├── package.mk
│   │       │       ├── patches/
│   │       │       │   ├── steamcontroller-0001-fix-include-dir.patch
│   │       │       │   ├── steamcontroller-0002-append-python-path.patch
│   │       │       │   ├── steamcontroller-0003-wait-for-controller-connection.patch
│   │       │       │   ├── steamcontroller-0004-use-run-for-pid-directory.patch
│   │       │       │   └── steamcontroller-0005-steam-client-will-never-be-running.patch
│   │       │       └── system.d/
│   │       │           └── driver.steam-controller.service
│   │       ├── video/
│   │       │   ├── capsimg/
│   │       │   │   └── package.mk
│   │       │   ├── gl4es/
│   │       │   │   ├── axe11/
│   │       │   │   │   ├── X11/
│   │       │   │   │   │   ├── X.h
│   │       │   │   │   │   ├── Xatom.h
│   │       │   │   │   │   ├── Xdefs.h
│   │       │   │   │   │   ├── Xfuncproto.h
│   │       │   │   │   │   ├── Xlib.h
│   │       │   │   │   │   ├── Xmd.h
│   │       │   │   │   │   ├── Xosdefs.h
│   │       │   │   │   │   ├── Xutil.h
│   │       │   │   │   │   ├── extensions/
│   │       │   │   │   │   │   ├── Xrandr.h
│   │       │   │   │   │   │   ├── Xrender.h
│   │       │   │   │   │   │   ├── randr.h
│   │       │   │   │   │   │   ├── render.h
│   │       │   │   │   │   │   ├── xf86vm.h
│   │       │   │   │   │   │   └── xf86vmode.h
│   │       │   │   │   │   ├── keysym.h
│   │       │   │   │   │   └── keysymdef.h
│   │       │   │   │   ├── package.mk
│   │       │   │   │   └── patches/
│   │       │   │   │       └── 01-EmuELEC-compile-fix.patch
│   │       │   │   ├── libglu/
│   │       │   │   │   ├── gl.pc
│   │       │   │   │   └── package.mk
│   │       │   │   ├── package.mk
│   │       │   │   └── pkgconfig/
│   │       │   │       └── gl.pc
│   │       │   ├── imagemagick/
│   │       │   │   └── package.mk
│   │       │   ├── libdvbpsi/
│   │       │   │   └── package.mk
│   │       │   ├── mpv/
│   │       │   │   └── package.mk
│   │       │   ├── vlc/
│   │       │   │   └── package.mk
│   │       │   └── youtube-dl/
│   │       │       └── package.mk
│   │       └── vksdl/
│   │           ├── package.mk
│   │           └── virtual_keyboard.cpp
│   ├── sysutils/
│   │   ├── bash/
│   │   │   └── package.mk
│   │   ├── bkeymaps/
│   │   │   └── package.mk
│   │   ├── busybox/
│   │   │   ├── config/
│   │   │   │   ├── busybox-init.conf
│   │   │   │   ├── busybox-target.conf
│   │   │   │   ├── inputrc
│   │   │   │   ├── profile
│   │   │   │   └── suspend-modules.conf
│   │   │   ├── default.d/
│   │   │   │   └── crond.conf
│   │   │   ├── package.mk
│   │   │   ├── patches/
│   │   │   │   ├── busybox-00_halt_no_init.patch
│   │   │   │   ├── busybox-02_silence-crond-startup-logging.patch
│   │   │   │   ├── busybox-03-make_unicode_printable.patch
│   │   │   │   ├── busybox-04-revert-dd-fsync-change.patch
│   │   │   │   ├── busybox-05-update-shadow-or-passwd-not-both.patch
│   │   │   │   ├── busybox-06-prevent-root-weak-passwd.patch
│   │   │   │   └── busybox-10-add-MS_BIND-option-when-remouting-bind-mount.patch
│   │   │   ├── profile.d/
│   │   │   │   ├── 10-locale.conf
│   │   │   │   └── 98-busybox.conf
│   │   │   ├── scripts/
│   │   │   │   ├── apt-get
│   │   │   │   ├── convert_dtname
│   │   │   │   ├── create-edid-cpio
│   │   │   │   ├── createlog
│   │   │   │   ├── dthelper
│   │   │   │   ├── dump-active-edids-drm
│   │   │   │   ├── fs-resize
│   │   │   │   ├── functions
│   │   │   │   ├── getedid
│   │   │   │   ├── getedid-drm
│   │   │   │   ├── init
│   │   │   │   ├── kernel-overlays-setup
│   │   │   │   ├── ledfix
│   │   │   │   ├── libreelec-target-generator
│   │   │   │   ├── lsb_release
│   │   │   │   ├── pastebinit
│   │   │   │   ├── rpi-flash-firmware
│   │   │   │   ├── sudo
│   │   │   │   ├── update-bootloader-edid-rpi
│   │   │   │   └── vfd-clock
│   │   │   ├── sleep.d.serial/
│   │   │   │   └── 99-suspend-modules.sh
│   │   │   ├── sysctl.d/
│   │   │   │   ├── 99-coredump.conf
│   │   │   │   ├── cdrom.conf
│   │   │   │   └── memory.conf
│   │   │   ├── system.d/
│   │   │   │   ├── fs-resize.service
│   │   │   │   ├── fs-resize.target
│   │   │   │   ├── ledfix.service
│   │   │   │   ├── locale.service
│   │   │   │   ├── rpi-flash-firmware.service
│   │   │   │   ├── rpi-flash-firmware.target
│   │   │   │   ├── shell.service
│   │   │   │   ├── show-version.service
│   │   │   │   ├── storage-log.service
│   │   │   │   ├── textmode.target
│   │   │   │   ├── var-log.mount
│   │   │   │   ├── var.mount
│   │   │   │   └── vfd-clock.service
│   │   │   ├── system.d.opt/
│   │   │   │   ├── cron-defaults.service
│   │   │   │   └── cron.service
│   │   │   └── tmpfiles.d/
│   │   │       └── z_01_busybox.conf
│   │   ├── cryptsetup/
│   │   │   └── package.mk
│   │   ├── dbus/
│   │   │   └── package.mk
│   │   ├── diskdev_cmds/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── diskdev_cmds-332.14-main.patch
│   │   ├── dosfstools/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── dosfstools-01-silence_backup_boot_sector_diff.patch
│   │   ├── e2fsprogs/
│   │   │   └── package.mk
│   │   ├── entropy/
│   │   │   ├── package.mk
│   │   │   ├── sources/
│   │   │   │   ├── add-entropy
│   │   │   │   └── add-random-at-shutdown
│   │   │   └── system.d/
│   │   │       ├── add-entropy.service
│   │   │       └── add-random-at-shutdown.service
│   │   ├── ethmactool/
│   │   │   ├── package.mk
│   │   │   ├── scripts/
│   │   │   │   └── ethmactool-config
│   │   │   └── system.d/
│   │   │       └── ethmactool-config.service
│   │   ├── eventlircd/
│   │   │   ├── evmap/
│   │   │   │   ├── 03_03eb_0002.evmap
│   │   │   │   ├── 03_0419_0001.evmap
│   │   │   │   ├── 03_046d_c101.evmap
│   │   │   │   ├── 03_05a4_9881.evmap
│   │   │   │   ├── 03_05ac_8241.evmap
│   │   │   │   ├── 03_0709_9137.evmap
│   │   │   │   ├── 03_0755_2626.evmap
│   │   │   │   ├── 03_0bc7_0006.evmap
│   │   │   │   ├── 03_1241_e000.evmap
│   │   │   │   ├── 03_13ec_0006.evmap
│   │   │   │   ├── 03_147a_e02d.evmap
│   │   │   │   ├── 03_18b1_0037.evmap
│   │   │   │   ├── 03_1d57_ac01.evmap
│   │   │   │   ├── aftvsremote.evmap
│   │   │   │   ├── bdremoteng.evmap
│   │   │   │   ├── cypress.evmap
│   │   │   │   ├── default.evmap
│   │   │   │   ├── mcekbd.evmap
│   │   │   │   ├── ps3remote.evmap
│   │   │   │   ├── skyqremote.evmap
│   │   │   │   ├── spinelplus.evmap
│   │   │   │   ├── tevii_s660.evmap
│   │   │   │   ├── topseed.evmap
│   │   │   │   ├── wiimote.evmap
│   │   │   │   ├── xiaomibtremote.evmap
│   │   │   │   └── xiaomibtremoteAM.evmap
│   │   │   ├── package.mk
│   │   │   ├── system.d/
│   │   │   │   └── eventlircd.service
│   │   │   ├── tmpfiles.d/
│   │   │   │   └── z_62_eventlircd.conf
│   │   │   └── udev.d/
│   │   │       └── 98-eventlircd.rules
│   │   ├── evrepeat/
│   │   │   ├── package.mk
│   │   │   └── udev.d/
│   │   │       └── 70-input-repeat.rules
│   │   ├── exfatprogs/
│   │   │   └── package.mk
│   │   ├── fuse/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── fuse-0001_aarch64-support.patch
│   │   │       ├── fuse-0002-dont-run-update-rc.d.patch
│   │   │       └── fuse-0003-build-with-glibc-2.34.patch
│   │   ├── fuse-exfat/
│   │   │   └── package.mk
│   │   ├── fuse3/
│   │   │   └── package.mk
│   │   ├── gptfdisk/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── 0001-Fix-failure-crash-of-sgdisk-when-compiled-with-lates.patch
│   │   │       ├── 0002-Updated-guid.cc-to-deal-with-minor-change-in-libuuid.patch
│   │   │       ├── 0003-Updated-URLs-in-man-pages-to-HTTPS-rather-than-HTTP.patch
│   │   │       ├── 0004-Fix-NULL-dereference-when-duplicating-string-argumen.patch
│   │   │       ├── 0005-Use-64bit-time_t-on-linux-as-well.patch
│   │   │       ├── 0006-Allow-partition-dynamically-allocated-by-largest-new.patch
│   │   │       ├── 0007-Document-recent-merge.patch
│   │   │       ├── 0008-Document-recent-mergest.patch
│   │   │       ├── 0009-Do-some-explicit-casts-in-gptcurses.cc-to-eliminate-.patch
│   │   │       ├── 0010-Truncate-decimal-inputs-e.g.-9.5G-becomes-9G.patch
│   │   │       ├── 0011-Document-previous-merge.patch
│   │   │       └── 0012-Minor-code-cleanup-based-on-valgrind-analysis.patch
│   │   ├── ir-bpf-decoders/
│   │   │   └── package.mk
│   │   ├── keyutils/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── keyutils-02-cflags.patch
│   │   ├── kmod/
│   │   │   ├── modprobe.d/
│   │   │   │   ├── aliases.conf
│   │   │   │   └── i2c.conf
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── kmod-02_fix-pkgconf.patch
│   │   ├── libdevmapper/
│   │   │   └── package.mk
│   │   ├── libevdev/
│   │   │   └── package.mk
│   │   ├── libhid/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── libhid-0.2.16-automake-1.13.patch
│   │   │       ├── libhid-disable_docs.patch
│   │   │       └── libhid-use_pkgconfig.patch
│   │   ├── libusb/
│   │   │   └── package.mk
│   │   ├── libusb-compat/
│   │   │   └── package.mk
│   │   ├── lirc/
│   │   │   ├── config/
│   │   │   │   └── lirc_options.conf
│   │   │   ├── default.d/
│   │   │   │   └── lircd.conf
│   │   │   ├── package.mk
│   │   │   ├── patches/
│   │   │   │   ├── lirc-0001-fix-zotac-poll.patch
│   │   │   │   └── lirc-0100-disable-python.patch
│   │   │   ├── scripts/
│   │   │   │   ├── lircd_helper
│   │   │   │   └── lircd_uinput_helper
│   │   │   ├── system.d/
│   │   │   │   ├── lircd-uinput.service
│   │   │   │   ├── lircd.service
│   │   │   │   └── lircd.socket
│   │   │   └── tmpfiles.d/
│   │   │       └── z_61_lirc.conf
│   │   ├── ntfs-3g_ntfsprogs/
│   │   │   └── package.mk
│   │   ├── open-iscsi/
│   │   │   ├── package.mk
│   │   │   ├── patches/
│   │   │   │   ├── open-iscsi-01_dynamic_linked_iscsistart.patch
│   │   │   │   ├── open-iscsi-02-cross_compile.patch
│   │   │   │   ├── open-iscsi-03_enable-multicast.patch
│   │   │   │   ├── open-iscsi-04-no_iscsiuio.patch
│   │   │   │   ├── open-iscsi-05-Updates-to-support-gcc-fno-common-option.patch
│   │   │   │   ├── open-iscsi-06-Fix-attribute.patch
│   │   │   │   └── open-iscsi-07-usr-run-for-config.patch
│   │   │   ├── system.d/
│   │   │   │   └── iscsi-initiator.service
│   │   │   └── tmpfiles.d/
│   │   │       └── iscsi.conf
│   │   ├── open-vm-tools/
│   │   │   ├── package.mk
│   │   │   └── system.d/
│   │   │       ├── vmtoolsd.service
│   │   │       └── vmware-vmblock-fuse.service
│   │   ├── parted/
│   │   │   └── package.mk
│   │   ├── pciutils/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── pciutils-01-fix-pkgconf.patch
│   │   ├── sed/
│   │   │   └── package.mk
│   │   ├── squashfs-tools/
│   │   │   └── package.mk
│   │   ├── systemd/
│   │   │   ├── config/
│   │   │   │   ├── hosts.conf
│   │   │   │   ├── hwdb.d/
│   │   │   │   │   └── README
│   │   │   │   ├── logind.conf.d/
│   │   │   │   │   └── README
│   │   │   │   ├── modules-load.d/
│   │   │   │   │   └── README
│   │   │   │   ├── sleep.conf.d/
│   │   │   │   │   ├── README
│   │   │   │   │   └── sleep.conf.sample
│   │   │   │   ├── sysctl.d/
│   │   │   │   │   └── README
│   │   │   │   ├── system.d/
│   │   │   │   │   ├── README
│   │   │   │   │   ├── cifs.mount.sample
│   │   │   │   │   ├── nfs.mount.sample
│   │   │   │   │   └── openvpn.service.sample
│   │   │   │   ├── timesyncd.conf.d/
│   │   │   │   │   └── README
│   │   │   │   ├── tmpfiles.d/
│   │   │   │   │   └── README
│   │   │   │   └── udev.rules.d/
│   │   │   │       └── README
│   │   │   ├── hwdb.d/
│   │   │   │   └── 70-local-keyboard.hwdb
│   │   │   ├── package.mk
│   │   │   ├── patches/
│   │   │   │   ├── systemd-0001-move-etc-systemd-system-to-storage-.config-system.d.patch
│   │   │   │   ├── systemd-0002-move-hwdb.bin-to-run.patch
│   │   │   │   ├── systemd-0003-remove-nonexistant-dependency.patch
│   │   │   │   ├── systemd-0200-persist-persistent-timer-stamps.patch
│   │   │   │   ├── systemd-0300-config-env-unhide-cursor.patch
│   │   │   │   ├── systemd-0500-Add-working-directory-storage-for-debug-shell.patch
│   │   │   │   ├── systemd-0600-SDCARDFS_SUPER_MAGIC.patch
│   │   │   │   └── systemd-501-Start-debug-service-after-locale-to-ensure-file-syst.patch
│   │   │   ├── profile.d/
│   │   │   │   └── 90-systemd.conf
│   │   │   ├── scripts/
│   │   │   │   ├── cpufreq
│   │   │   │   ├── environment-setup
│   │   │   │   ├── network-base-setup
│   │   │   │   ├── systemd-machine-id-setup
│   │   │   │   ├── systemd-timesyncd-setup
│   │   │   │   ├── usercache-setup
│   │   │   │   └── userconfig-setup
│   │   │   ├── system.d/
│   │   │   │   ├── cpufreq.service
│   │   │   │   ├── debugconfig.service
│   │   │   │   ├── envconfig.service
│   │   │   │   ├── flash.mount.d/
│   │   │   │   │   └── dependencies.conf
│   │   │   │   ├── machine-id.service
│   │   │   │   ├── network-base.service
│   │   │   │   ├── storage.mount.d/
│   │   │   │   │   └── dependencies.conf
│   │   │   │   ├── systemd-timesyncd-setup.service
│   │   │   │   ├── systemd-timesyncd.service.d/
│   │   │   │   │   └── depend-on-kernel-ip-config.conf
│   │   │   │   ├── usercache.service
│   │   │   │   └── userconfig.service
│   │   │   ├── tmpfiles.d/
│   │   │   │   └── z_01_openelec.conf
│   │   │   └── udev.d/
│   │   │       └── 60-not-joysticks.rules
│   │   ├── terminus-font/
│   │   │   └── package.mk
│   │   ├── tz/
│   │   │   ├── package.mk
│   │   │   └── system.d/
│   │   │       └── tz-data.service
│   │   ├── udevil/
│   │   │   ├── config/
│   │   │   │   └── udevil.conf
│   │   │   ├── package.mk
│   │   │   ├── patches/
│   │   │   │   └── udevil-fix-build.patch
│   │   │   ├── system.d/
│   │   │   │   └── udevil-mount@.service
│   │   │   └── udev.d/
│   │   │       └── 95-udevil-mount.rules
│   │   ├── usbutils/
│   │   │   └── package.mk
│   │   ├── util-linux/
│   │   │   ├── config/
│   │   │   │   └── swap.conf
│   │   │   ├── package.mk
│   │   │   ├── patches/
│   │   │   │   └── util-linux-01-fix-pkgconf.patch
│   │   │   ├── scripts/
│   │   │   │   └── mount-swap
│   │   │   ├── sysctl.d/
│   │   │   │   └── swappiness.conf
│   │   │   └── system.d/
│   │   │       ├── fstrim.service
│   │   │       ├── fstrim.timer
│   │   │       └── swap.service
│   │   ├── v4l-utils/
│   │   │   ├── config/
│   │   │   │   ├── rc_keymaps/
│   │   │   │   │   ├── README
│   │   │   │   │   └── protocols/
│   │   │   │   │       └── README
│   │   │   │   └── rc_maps.cfg.sample
│   │   │   ├── keymaps/
│   │   │   │   ├── a95x.toml
│   │   │   │   ├── beelink.toml
│   │   │   │   ├── beelink_bt_ir.toml
│   │   │   │   ├── beelink_pwr_only.toml
│   │   │   │   ├── cubox_i.toml
│   │   │   │   ├── kvim.toml
│   │   │   │   ├── kvim2.toml
│   │   │   │   ├── mecool.toml
│   │   │   │   ├── minix_neo_pwr_only.toml
│   │   │   │   ├── tanix.toml
│   │   │   │   ├── xbox_360.toml
│   │   │   │   ├── xbox_one.toml
│   │   │   │   └── zotac.toml
│   │   │   ├── package.mk
│   │   │   ├── patches/
│   │   │   │   ├── v4l-utils-001-disable-doxygen-in-automake.patch
│   │   │   │   ├── v4l-utils-002-support-libbpf-1-0-0.patch
│   │   │   │   ├── v4l-utils-003-add-power-on-argument.patch
│   │   │   │   └── v4l-utils-003-enable-bpf-without-clang.patch
│   │   │   └── udev.d/
│   │   │       └── 70-infrared.rules
│   │   └── wait-time-sync/
│   │       ├── package.mk
│   │       ├── sources/
│   │       │   ├── Makefile
│   │       │   └── wait-time-sync.c
│   │       └── system.d/
│   │           └── wait-time-sync.service
│   ├── testing/
│   │   └── package.mk
│   ├── textproc/
│   │   ├── expat/
│   │   │   └── package.mk
│   │   ├── itstool/
│   │   │   └── package.mk
│   │   ├── jsoncpp/
│   │   │   └── package.mk
│   │   ├── libidn2/
│   │   │   └── package.mk
│   │   ├── libxml2/
│   │   │   └── package.mk
│   │   ├── libxslt/
│   │   │   └── package.mk
│   │   ├── nlohmann-json/
│   │   │   └── package.mk
│   │   ├── pugixml/
│   │   │   └── package.mk
│   │   ├── tinyxml/
│   │   │   └── package.mk
│   │   ├── tinyxml2/
│   │   │   └── package.mk
│   │   └── xmlstarlet/
│   │       ├── package.mk
│   │       └── patches/
│   │           └── xmlstarlet-0001-usage2c.awk-fix-wrong-basename-regexp.patch
│   ├── tools/
│   │   ├── amlogic-boot-fip/
│   │   │   └── package.mk
│   │   ├── atf/
│   │   │   └── package.mk
│   │   ├── bcm2835-bootloader/
│   │   │   ├── files/
│   │   │   │   ├── config.txt
│   │   │   │   ├── distroconfig-composite.txt
│   │   │   │   ├── distroconfig.txt
│   │   │   │   └── update.sh
│   │   │   ├── package.mk
│   │   │   └── release
│   │   ├── bcmstat/
│   │   │   └── package.mk
│   │   ├── crust/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── fix-binutils-2-39.patch
│   │   │       └── fix-stack.patch
│   │   ├── dt-overlays/
│   │   │   └── package.mk
│   │   ├── dtc/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── dtc-0001-libfdt-soname-version.patch
│   │   │       ├── dtc-0002-link-with-libfdt-archive.patch
│   │   │       └── dtc-0003-Add-Amlogic-multi-dtb-and-add-gzipped-dtb-support.patch
│   │   ├── emmctool/
│   │   │   ├── package.mk
│   │   │   └── scripts/
│   │   │       └── emmctool
│   │   ├── exynos-boot-fip/
│   │   │   └── package.mk
│   │   ├── flashrom/
│   │   │   └── package.mk
│   │   ├── grub/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── grub-0001-Fix-Werror-array-bounds-array-subscript-0-is-outside-array-bounds.patch
│   │   │       ├── grub-0002-lib-reed-solomon-Fix-array-subscript-0-outside-array-bounds.patch
│   │   │       └── grub-gnulib-acprereq-2-64.patch
│   │   ├── hdparm/
│   │   │   ├── package.mk
│   │   │   ├── patches/
│   │   │   │   └── hdparm-9.42-cflags.patch
│   │   │   └── udev.d/
│   │   │       └── 61-cdrom.rules
│   │   ├── installer/
│   │   │   ├── config/
│   │   │   │   └── installer.conf
│   │   │   ├── package.mk
│   │   │   ├── scripts/
│   │   │   │   └── installer
│   │   │   └── system.d/
│   │   │       ├── installer.service
│   │   │       └── installer.target
│   │   ├── megatools/
│   │   │   └── package.mk
│   │   ├── mkbootimg/
│   │   │   └── package.mk
│   │   ├── mtools/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── mtools-05-fix-install.patch
│   │   ├── nano/
│   │   │   ├── config/
│   │   │   │   └── nanorc
│   │   │   ├── package.mk
│   │   │   └── profile.d/
│   │   │       └── 52-nano.conf
│   │   ├── newt/
│   │   │   └── package.mk
│   │   ├── plymouth-lite/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── plymouth-lite-0.6.0-01-fix-build.patch
│   │   │       ├── plymouth-lite-0.6.0-02-libpng_1.4.0.patch
│   │   │       ├── plymouth-lite-0.6.0-11-cursor.patch
│   │   │       ├── plymouth-lite-0.6.0-12-resize.patch
│   │   │       ├── plymouth-lite-0.6.0-21-16bpp.patch
│   │   │       └── plymouth-lite-0.6.0-22-link-static.patch
│   │   ├── populatefs/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── fix-compilation-issue.patch
│   │   ├── procps-ng/
│   │   │   └── package.mk
│   │   ├── qemu/
│   │   │   └── package.mk
│   │   ├── rkbin/
│   │   │   └── package.mk
│   │   ├── rpi-eeprom/
│   │   │   ├── config/
│   │   │   │   └── rpi-eeprom-update
│   │   │   ├── package.mk
│   │   │   └── source/
│   │   │       └── rpi-eeprom-update
│   │   ├── splash-image/
│   │   │   └── package.mk
│   │   ├── syslinux/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── syslinux-0001-fix-build-with-glibc_2.28.patch
│   │   │       └── syslinux-0002-fix-build-with-glibc_2.36.patch
│   │   ├── texturecache.py/
│   │   │   └── package.mk
│   │   ├── u-boot/
│   │   │   └── package.mk
│   │   ├── u-boot-script/
│   │   │   └── package.mk
│   │   └── u-boot-tools/
│   │       └── package.mk
│   ├── virtual/
│   │   ├── alsa/
│   │   │   └── package.mk
│   │   ├── autotools/
│   │   │   └── package.mk
│   │   ├── corefonts/
│   │   │   └── package.mk
│   │   ├── debug/
│   │   │   └── package.mk
│   │   ├── image/
│   │   │   └── package.mk
│   │   ├── initramfs/
│   │   │   ├── config/
│   │   │   │   └── initramfs.conf
│   │   │   └── package.mk
│   │   ├── libc/
│   │   │   └── package.mk
│   │   ├── linux-drivers/
│   │   │   └── package.mk
│   │   ├── linux-firmware/
│   │   │   └── package.mk
│   │   ├── mediacenter/
│   │   │   └── package.mk
│   │   ├── misc-packages/
│   │   │   └── package.mk
│   │   ├── network/
│   │   │   └── package.mk
│   │   ├── remote/
│   │   │   └── package.mk
│   │   ├── toolchain/
│   │   │   └── package.mk
│   │   ├── virtual/
│   │   │   └── package.mk
│   │   ├── wl/
│   │   │   └── package.mk
│   │   └── x11/
│   │       └── package.mk
│   ├── wayland/
│   │   ├── compositor/
│   │   │   └── sway/
│   │   │       ├── config/
│   │   │       │   ├── colorscheme
│   │   │       │   ├── config
│   │   │       │   └── sway-daemon.conf
│   │   │       ├── package.mk
│   │   │       ├── patches/
│   │   │       │   ├── sway-100.01-static-ipc-socket.patch
│   │   │       │   ├── sway-100.02-allow-running-as-root.patch
│   │   │       │   └── sway-100.03-do-not-use-git-version.patch
│   │   │       ├── profile.d/
│   │   │       │   └── 04-sway.conf
│   │   │       ├── scripts/
│   │   │       │   ├── sway-config
│   │   │       │   └── sway.sh
│   │   │       └── system.d/
│   │   │           └── sway.service
│   │   ├── lib/
│   │   │   ├── fcft/
│   │   │   │   └── package.mk
│   │   │   ├── hwdata/
│   │   │   │   └── package.mk
│   │   │   ├── seatd/
│   │   │   │   ├── package.mk
│   │   │   │   └── system.d/
│   │   │   │       └── seatd.service
│   │   │   ├── tllist/
│   │   │   │   └── package.mk
│   │   │   └── wlroots/
│   │   │       └── package.mk
│   │   ├── libinput/
│   │   │   └── package.mk
│   │   ├── libxkbcommon/
│   │   │   └── package.mk
│   │   ├── mtdev/
│   │   │   └── package.mk
│   │   ├── util/
│   │   │   ├── bemenu

================================================
FILE CONTENTS
================================================

================================================
FILE: .editorconfig
================================================
# EditorConfig is awesome: https://EditorConfig.org

# top-most EditorConfig file
root = true

# Unix-style newlines with a newline ending every file
[*]
end_of_line = lf
insert_final_newline = true
# Default indent via 2 spaces
indent_style = space
indent_size = 2
trim_trailing_whitespace = true

[*.py]
# Set default charset
charset = utf-8
# 4 space indentation, required by Python
indent_style = space
indent_size = 4

# Tab indentation (no size specified)
[Makefile]
indent_style = tab

[*.{md, markdown}]
# Trailing space has meaning
trim_trailing_whitespace = false
[CHANGELOG]
# Trailing space has meaning
trim_trailing_whitespace = false


================================================
FILE: .github/FUNDING.yml
================================================
# These are supported funding model platforms

github: shantigilbert # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: emuelec # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
custom: ['https://paypal.me/shantigilbert'] # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']


================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''

---

# BEFORE YOU OPEN AN ISSUE MAKE SURE IT IS NOT ALREADY RESOLVED IN THE WIKI https://github.com/EmuELEC/EmuELEC/wiki

# MAKE SURE YOUR DEVICE IS A [SUPPORTED DEVICE](https://github.com/EmuELEC/EmuELEC/wiki/Supported-Devices)  

# PLEASE DO NOT POST GENERAL HELP QUESTIONS! EITHER USE THE FORUM (https://emuelec.org) OR USE DISCORD FOR THAT (https://discord.gg/cbgtJTu), THIS IS ONLY FOR BUG/ISSUES REPORTING!

# DELETE EVERYTHING ABOVE THIS LINE (INCLUDING THIS LINE) BEFORE SUBMITTING TO MAKE SURE YOU'VE READ THIS!


**Describe the bug**
A clear and concise description of what the bug is.

**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error

**Expected behavior**
A clear and concise description of what you expected to happen.

**Screenshots**
If applicable, add screenshots to help explain your problem.

**EmuELEC version:**
 - Version [e.g. 22]

**Device (please complete the following information):**
 - SOC: [e.g. S095x3]
 - Brand: [e.g. Beelink]
 - Model [e.g. mini g1]
 - Version [e.g. 22]

**Additional context**
Add any other context about the problem here.


================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
contact_links:
  - name: EmuELEC Forum
    url: https://emuelec.org
    about: If you have a regular/general questions, please use the forum instead of a GH issue.
  - name: Discord
    url: https://discord.gg/jQWCFwTn5T
    about: If you have a regular/general question, please use discord instead of a GH issue.


================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''

---

# BEFORE YOU OPEN AN ISSUE MAKE SURE IT IS NOT ALREADY RESOLVED IN THE WIKI https://github.com/EmuELEC/EmuELEC/wiki

# MAKE SURE YOUR DEVICE IS A [SUPPORTED DEVICE](https://github.com/EmuELEC/EmuELEC/wiki/Supported-Devices)  

# PLEASE DO NOT POST GENERAL HELP QUESTIONS! EITHER USE THE FORUM (https://emuelec.org) OR USE DISCORD FOR THAT (https://discord.gg/cbgtJTu), THIS IS ONLY FOR BUG/ISSUES REPORTING!

# DELETE EVERYTHING ABOVE THIS LINE (INCLUDING THIS LINE) BEFORE SUBMITTING TO MAKE SURE YOU'VE READ THIS!

**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

**Describe the solution you'd like**
A clear and concise description of what you want to happen.

**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.

**Additional context**
Add any other context or screenshots about the feature request here.


================================================
FILE: .github/ISSUE_TEMPLATE/other-issue.md
================================================
---
name: Other issue
about: Describe this issue template's purpose here.
title: ''
labels: ''
assignees: ''

---

# BEFORE YOU OPEN AN ISSUE MAKE SURE IT IS NOT ALREADY RESOLVED IN THE WIKI https://github.com/EmuELEC/EmuELEC/wiki

# MAKE SURE YOUR DEVICE IS A [SUPPORTED DEVICE](https://github.com/EmuELEC/EmuELEC/wiki/Supported-Devices)  

# PLEASE DO NOT POST GENERAL HELP QUESTIONS! EITHER USE THE FORUM (https://emuelec.org) OR USE DISCORD FOR THAT (https://discord.gg/cbgtJTu), THIS IS ONLY FOR BUG/ISSUES REPORTING!

# DELETE EVERYTHING ABOVE THIS LINE (INCLUDING THIS LINE) BEFORE SUBMITTING TO MAKE SURE YOU'VE READ THIS!


================================================
FILE: .github/config.yml
================================================
blank_issues_enabled: false
contact_links:
  - name: EmuELEC Forum
    url: https://emuelec.org
    about: If you have a regular/general questions, please use the forum instead of a GH issue.
  - name: Discord
    url: https://discord.com/invite/cbgtJTu
    about: If you have a regular/general question, please use discord instead of a GH issue.


================================================
FILE: .gitignore
================================================
# build directorys
/build.*/
/builds
/.fakeroot.*

# automatically downloaded source files
/sources/

# prebuild target binarys to provide
/target/

# mkpkg temp
mkpkg-temp

# options
/.libreelec

# private working directory
/.work/

# dedicated filesystem
/lost+found/

# symlinks...
/sources
/.work

# ccache
/.ccache/

# backup files
*.orig

# crap
.DS_Store
.directory

# ignore git repos from update scripts
tools/mkpkg/*.git

# ignore old linux configs
projects/**/*.old

repo/
repo
local.conf
sx05re-kodi*.log

packages/sx05re/experimental/
packages/sx05re/emuelec-emulationstation/api_keys.txt


================================================
FILE: CHANGELOG
================================================
EmuELEC CHANGELOG
==================

# v4.8

Finally It's here!

## Changes

* Removed preinstalled ports:
Ports were taking a lof of space on the system partition and added a lot to the main build time, with PortMaster now fully mature and working extremly well, we decide to use it instead, all the ports we had preinstalled
are available in PortMaster. 
However one thing keep in mind is that all ports from PortMaster are intended for handheld devices, so EmuELEC on SBC's is not officially supported, worstcase_scenario has tested a lot of games running on a s905x2 SBC 
and installed directly from PortMaster: https://github.com/EmuELEC/EmuELEC/wiki/List-of-Ports-running-on-EmuElec-(work-in-progress)
Just remember to follow their instructions. https://portmaster.games/ as some games require special steps. 
To install PortMaster Scroll to the Setup Scripts, select "Install PortMaster" and follow the instructions, after restarting ES, you should now see "Launch Portmaster" in the Ports section.

* A new and improved Splash system:
Thanks to Langerz82 and worstcase_scenario it has never been as easy to customize how EmuELEC looks while loading a game! there are many splash options to display in game launching and exit available, including:

	* Default - Legacy option, will load the default splash.
	* Enable Platform/Rom loading: Legacy option, will look for a file in /storage/splash/{platform}/{rom_name}.png if not found it will look for /storage/splash/{platform}/launching.png
	* Custom - Select your own image/video!
	* Random - automatically selects video/image from the defined path!
	* Scraped media - This option will read your platform gamelist.xml for a predefined tag and use any media you have scraped, options: random, image, thumbnail, video, marquee, fanart

* Many other improvements:
We removed mame2016 and added MAME 0.282 (with full MESS support), while not everything has ben setup automatically, you can load any system that MAME supports from Retroarch directly.
Added Fmtowns using MESS. 
Added Satellaview and Sufami Turbo thanks to Qbertaddict for the suggestion
Wii Remotes are now easy to setup directly from ES
Volume is now controlled globally from ES
Updated Amiberry to v8, added Amiberry-lite
Added Ikemen-GO, a M.U.G.E.N alternative.
Full midi/mt32/fluidsynth support(core dependent)
The ability to use a normal IR sensor bar (or candles) with a wiimote inside retroarch
Automatic shutdown timer after user inactivity
script for saving and enabling multiple macros for controllers
Audio connection via Bluetooth devices
customizable scroll sound for ES menu
enabled cheat function for Mame2010
new and updated emulators: gearlynx bk electronika, supafaust, amiberry-lite, dosbox-pure, stella2023 and PUAE2021, most of the libretro cores

... and many other changes, 
If you find any issues with this update, please first test with a clean installation! if problem persists feel free to open an issue or visit us on [Discord](https://discord.gg/jQWCFwTn5T). 

## Other versions
While I tried testing as much as I could on Odroidm1, RK356x, OGA/OGS and GameForce, due to lack of time these devices are not properly tested, not everything is workin as smooth as on Amlogic devices, please update at your own risk.
If you find any issue with these versions, please open an issue or visit us on [Discord](https://discord.gg/jQWCFwTn5T). 

# v4.7

It has been a long time since we released a new version, and after many changes, many bug fixes and the help of many people, finally here it is v4.7!

If you find any issues with this update, please first test with a clean installation!

I apologize in advance, but the changelog is going to be automatically created from the GitHub commits and PRs since there are many and I will most likely miss some.

But here is a short (incomplete) version:

Added support for PortMaster! in addition we have added a few new ports.
Added FMtowns emulator
Updated most emulators to the latest version
Fixed many Bluetoth gamepad issues, specially with fake PS3 Gamepads (tested with shanwan and guo hua)
Added support for MT7668 BT chip
Updated to the latest CoreELEC base (CE-20 branch)
Autogamepad configs should now work much better and support more controllers
Fixed some issues with resolution switching 
Enabled TTS on Emulationstation
... And many, many changes under the hood!

## Thanks to the always supportive Patreons

Scott O'Connell
Libre Computer Project
John Johnson
victor manuel sanchez lopez
Daniel Iruegas
John Gamester
Matthew S
jmthill
Russ Crandall
Peter Shaw
Tony Escobar
Dennis W.
Michael Brown
AlienatedDiego2

And all the others that helped in the past, from the bottom of my heart thank you all!

## Special thanks

And in no particular order, I would like to personally thank:

Vpeter
Langerz82
7ji
Miwasp
Kelv
JohnnyonFlame
ebeem-sama
Qbertaddict
Dim (I still love the Crystal theme!)
SamWilson (Happy BD!)
AlienatedDiego
tobetter
portisch
danielmx
f.caruso
Pro-me3us
worstcase_scenario
Hardkernel
GameForce
LibreComputer
CoreELEC team
...And you!

Thanks! 


Please note that due to lack of testing time, some devices have not been properly tested, if you find a bug or an issue, please don't hesitate to let us know via [Discord](https://discord.gg/cbgtJTul), or opening an issue in github.

In other news...the EmuELEC forum is closing soon!.

We regret to inform you that the EmuELEC forum will be shut down by the end of February 2024. We hope to preserve the forum in read-only mode, but we cannot guarantee it.
The main reason for this decision is that we have outgrown the free package offered by discourse, and we do not have the resources to upgrade it.
The second reason is that most of the forum activity is from users of unsupported devices and unofficial images, which we cannot and do not want to moderate or endorse.
If you need support for our supported devices and official images, please join our [Discord](https://discord.gg/cbgtJTul) server.


## Github Automatic Changelog:  

* Updating Virtual Jaguar and enabling it by @Kelvfimer in https://github.com/EmuELEC/EmuELEC/pull/1068
* Added script for setting cheevos if entries are missing in settings.ini by @Kelvfimer in https://github.com/EmuELEC/EmuELEC/pull/1074
* Update flycast gles by @Kelvfimer in https://github.com/EmuELEC/EmuELEC/pull/1112
* ampart: remove package and installation script by @7Ji in https://github.com/EmuELEC/EmuELEC/pull/1119
* fix broken packages by @7Ji in https://github.com/EmuELEC/EmuELEC/pull/1123
* Add sharp x1 by @Kelvfimer in https://github.com/EmuELEC/EmuELEC/pull/1117
* Dev Retroarch setkillkey option by @Langerz82 in https://github.com/EmuELEC/EmuELEC/pull/1109
* ES input PS3 GamePad Default Controller Assignment Fix. by @Langerz82 in https://github.com/EmuELEC/EmuELEC/pull/1088
* Dev advmame joy update by @Langerz82 in https://github.com/EmuELEC/EmuELEC/pull/1103
* oga patch for scummvm is no longer needed by @miwasp in https://github.com/EmuELEC/EmuELEC/pull/1130
* Make python-evdev for oga/gf compilable again by @miwasp in https://github.com/EmuELEC/EmuELEC/pull/1131
* GF patch for scummvm is no longer needed. by @miwasp in https://github.com/EmuELEC/EmuELEC/pull/1133
* Fix brightness reset on GF (issue #1136) by @miwasp in https://github.com/EmuELEC/EmuELEC/pull/1139
* Revert ethtool to version 6.0 to make oga/gf compilable again by @miwasp in https://github.com/EmuELEC/EmuELEC/pull/1132
* Dev flycast joy fixes by @Langerz82 in https://github.com/EmuELEC/EmuELEC/pull/1113
* Updating version of emuelec-emulationstation by @miwasp in https://github.com/EmuELEC/EmuELEC/pull/1128
* Match kernel versions identical to 64 bit version by @miwasp in https://github.com/EmuELEC/EmuELEC/pull/1142
* Make glibc compilable for oga and gf by @miwasp in https://github.com/EmuELEC/EmuELEC/pull/1129
* Dev - Amlogic Different Resolutions other than 1080p fix. (in seperate PR) by @Langerz82 in https://github.com/EmuELEC/EmuELEC/pull/1171
* Enable CIFS on Odroid-M1 by @drizzt in https://github.com/EmuELEC/EmuELEC/pull/1175
* RTL8821CU: switch source to 8821cu-20210916 by @7Ji in https://github.com/EmuELEC/EmuELEC/pull/1176
* poppler: switch source to freedesktop's gitlab by @7Ji in https://github.com/EmuELEC/EmuELEC/pull/1177
* dosbox-svn: bump to 53ca2f6 (2023.04.08) by @7Ji in https://github.com/EmuELEC/EmuELEC/pull/1178
* scummvm: bump to b5ca1b3 (2023.04.09) by @7Ji in https://github.com/EmuELEC/EmuELEC/pull/1180
* xash3d: remove configure option --disable-vgui by @7Ji in https://github.com/EmuELEC/EmuELEC/pull/1182
* minor fix - advmame - joy assign - menu cancel button to left thumb by @Langerz82 in https://github.com/EmuELEC/EmuELEC/pull/1172
* Dev ppssppsdl auto joypad by @Langerz82 in https://github.com/EmuELEC/EmuELEC/pull/1134
* Dev auto gamepad yabasanshiro by @Langerz82 in https://github.com/EmuELEC/EmuELEC/pull/1126
* Dev joy common update by @Langerz82 in https://github.com/EmuELEC/EmuELEC/pull/1060
* inject_bl301: fix PKG_SHA256 and add PKG_ARCH by @7Ji in https://github.com/EmuELEC/EmuELEC/pull/1183
* opengl-meson: fix for Amlogic-ne by @7Ji in https://github.com/EmuELEC/EmuELEC/pull/1184
* amiberry: fix for Amlogic-ne and improve by @7Ji in https://github.com/EmuELEC/EmuELEC/pull/1185
* lib32-opengl-meson: support Amlogic-ne by @7Ji in https://github.com/EmuELEC/EmuELEC/pull/1186
* [EE - Emulator][FbNeoSA] Adds DPAD hats assignments by default. by @Langerz82 in https://github.com/EmuELEC/EmuELEC/pull/1187
* Amlogic-ne: fix cfgload by @7Ji in https://github.com/EmuELEC/EmuELEC/pull/1204
* EE - Display Resolution - Configurable FrameBuffer, and some fixes. by @Langerz82 in https://github.com/EmuELEC/EmuELEC/pull/1208
* [EE 4.4+ Fix] Better Game Controller Bluetooth Support. by @Langerz82 in https://github.com/EmuELEC/EmuELEC/pull/1201
* Emulators update for next Emuelec version by @Kelvfimer in https://github.com/EmuELEC/EmuELEC/pull/1205
* Modified patches for SDL2.28.1 OGA by @miwasp in https://github.com/EmuELEC/EmuELEC/pull/1215
* Modifed patch for RA version 1.15 OGA by @miwasp in https://github.com/EmuELEC/EmuELEC/pull/1216
* Bump bstone by @miwasp in https://github.com/EmuELEC/EmuELEC/pull/1214
* Added Vircon32 libretro core by @Chandler-Kluser in https://github.com/EmuELEC/EmuELEC/pull/1229
* Fix apache-ant version, 1.10.13 by @yingw in https://github.com/EmuELEC/EmuELEC/pull/1226
* New Emulators update for version 4.6.5 by @Kelvfimer in https://github.com/EmuELEC/EmuELEC/pull/1218
* Modified patch for Retroarch version 1.16 by @miwasp in https://github.com/EmuELEC/EmuELEC/pull/1219
* test function added to emuelec-utils. by @Langerz82 in https://github.com/EmuELEC/EmuELEC/pull/1234
* New updates for EmuElec 4.6.5 by @Kelvfimer in https://github.com/EmuELEC/EmuELEC/pull/1235
* EE - set fb and resize - fixes. by @Langerz82 in https://github.com/EmuELEC/EmuELEC/pull/1237
* opengl-meson: fix lib32 mali symlinks for Amlogic-ne by @7Ji in https://github.com/EmuELEC/EmuELEC/pull/1203
* EE - display - 480i support by @Langerz82 in https://github.com/EmuELEC/EmuELEC/pull/1206
* Update es_systems.cfg by @yingw in https://github.com/EmuELEC/EmuELEC/pull/1253
* System updates 4.7 by @Kelvfimer in https://github.com/EmuELEC/EmuELEC/pull/1251
* New emu update for 47 by @Kelvfimer in https://github.com/EmuELEC/EmuELEC/pull/1252
* Updated SDL2_mixer 32 bit and 64 by @Kelvfimer in https://github.com/EmuELEC/EmuELEC/pull/1250
* Fixes4.7 by @Kelvfimer in https://github.com/EmuELEC/EmuELEC/pull/1258
* Latest changes for Crystal theme by @miwasp in https://github.com/EmuELEC/EmuELEC/pull/1259
* Update submodule in dosbox-svn by @miwasp in https://github.com/EmuELEC/EmuELEC/pull/1262
* Update joy_common.sh GUID fix by @Langerz82 in https://github.com/EmuELEC/EmuELEC/pull/1271
* Update retroarch fix audio amlogic old by @bennydiamond in https://github.com/EmuELEC/EmuELEC/pull/1260
* Dev virtualjaguar clock experimental by @Langerz82 in https://github.com/EmuELEC/EmuELEC/pull/1236
* EE - setres.sh - 480cvbs 576cvbs default fix by @Langerz82 in https://github.com/EmuELEC/EmuELEC/pull/1270
* EE - hypseus gamepad config fix by @Langerz82 in https://github.com/EmuELEC/EmuELEC/pull/1199
* EE - Advmame auto gamepad fixes 2. by @Langerz82 in https://github.com/EmuELEC/EmuELEC/pull/1272
* Add missing dependency by @miwasp in https://github.com/EmuELEC/EmuELEC/pull/1275
* b2024 - Advmame Button Remap New Revision 2 by @Langerz82 in https://github.com/EmuELEC/EmuELEC/pull/1274
* [Bug Fix] GameForce chi - Retrorun-go2 - Rotation Fix. by @Langerz82 in https://github.com/EmuELEC/EmuELEC/pull/1267
* [Bug Fix] Fix EE Audio Volume Adjustment on reset. by @Langerz82 in https://github.com/EmuELEC/EmuELEC/pull/1266
* Update emuelec-bluetooth - v2.1 revision by @Langerz82 in https://github.com/EmuELEC/EmuELEC/pull/1276
* Update es_features.cfg by @Langerz82 in https://github.com/EmuELEC/EmuELEC/pull/1279
* EE 4.7 - emuelec-bluetooth - RSSI fix for Bluez 5.72 by @Langerz82 in https://github.com/EmuELEC/EmuELEC/pull/1281
* dev - OpenBOR - joypad fix by @Langerz82 in https://github.com/EmuELEC/EmuELEC/pull/1287
* Bump bstone by @miwasp in https://github.com/EmuELEC/EmuELEC/pull/1288
* Revert part of the latest changes in script image by @miwasp in https://github.com/EmuELEC/EmuELEC/pull/1293
* EE - Port - Native Video support, and virtual keyboard fixes by @Langerz82 in https://github.com/EmuELEC/EmuELEC/pull/1291
* Fixing Half Life and updating by @Kelvfimer in https://github.com/EmuELEC/EmuELEC/pull/1296
* xow package include in image. by @Langerz82 in https://github.com/EmuELEC/EmuELEC/pull/1298
* Multiemu Emulator by @Kelvfimer in https://github.com/EmuELEC/EmuELEC/pull/1300
* Last emus update 4.7 by @Kelvfimer in https://github.com/EmuELEC/EmuELEC/pull/1301
* Generate correct advmame.rc by @miwasp in https://github.com/EmuELEC/EmuELEC/pull/1303
* dev - auto gamepad - strip unneeded backslash in expressions by @Langerz82 in https://github.com/EmuELEC/EmuELEC/pull/1304
* Fix supertuxkart by @miwasp in https://github.com/EmuELEC/EmuELEC/pull/1306
* Fix segfault when exiting directly after startup by @miwasp in https://github.com/EmuELEC/EmuELEC/pull/1307
* EE - ES Shutdown/Restart Fix by @Langerz82 in https://github.com/EmuELEC/EmuELEC/pull/1308
* Bump some emulators by @Kelvfimer in https://github.com/EmuELEC/EmuELEC/pull/1311
* EE - Device Gameforce - Retrorun - Rotation and controls Fix by @Langerz82 in https://github.com/EmuELEC/EmuELEC/pull/1310

## New Contributors
* @drizzt made their first contribution in https://github.com/EmuELEC/EmuELEC/pull/1175
* @Chandler-Kluser made their first contribution in https://github.com/EmuELEC/EmuELEC/pull/1229
* @yingw made their first contribution in https://github.com/EmuELEC/EmuELEC/pull/1226
* @bennydiamond made their first contribution in https://github.com/EmuELEC/EmuELEC/pull/1260

**Full Changelog**: https://github.com/EmuELEC/EmuELEC/compare/v4.6...v4,7


# v4.6

## Please read the complete change-log before updating. A lot of the changes have been done to the base system. specially to the way the partitions are handled so you might need/want to do a clean install.

There is now a new tool for mounting systemd and external sources for ROMS
you can read more about it here: https://github.com/EmuELEC/EmuELEC/pull/980

EEROMS partition will only be created on SD cards bigger than 8gb. For detail explanation: https://github.com/EmuELEC/EmuELEC/pull/979
This also changes how the second partition is created, It is now 6GB (unless you use a 4GB sd card, then it will be 2GB) If you update from 4.5 or lower you will keep the 2GB STORAGE partition, but if you need your STORAGE partition to be bigger (6GB), then you will need to do a clean install on a SD card bigger than 8GB. 

The System base is now from CoreELEC 20 and all emulators, cores and ports have been 
updated to their most recent version at the time of this release.

Please note that due to lack of time, some devices have not been properly tested, if you find a bug or an issue, please don't hesitate to let us know via [Discord](https://discord.gg/cbgtJTul), the [EmuELEC forum](https://emuelec.org) or opening an issue in github.


# Thanks to the always supportive Patreons

John Johnson
victor manuel sanchez lopez
Daniel Iruegas
Victor Davis
John Gamester
Matthew S
jmthill
Russ Crandall
tailbøx
Peter Shaw
Noah Heninger
BSM_Mylock
Tony Escobar
Dennis W.
Nina Seramour
Michael Brown
Tomas Radej
Brian 
Chad Barker
AlienatedDiego
Bryan Pizzuti

And anyone else who has supported via other means, in the past, present and future, I really appreciate it!

## What's Changed
* fakeroot: bump to 1.28 (from no-longer-existing 1.27) by @JohnnyonFlame in https://github.com/EmuELEC/EmuELEC/pull/884
* Update libretro core cap32 by @miwasp in https://github.com/EmuELEC/EmuELEC/pull/886
* Update hypseus-singe to fix some games by @miwasp in https://github.com/EmuELEC/EmuELEC/pull/887
* Bump RigelEngine to latest version by @miwasp in https://github.com/EmuELEC/EmuELEC/pull/889
* Fix audio stuttering in lzdoom again by @miwasp in https://github.com/EmuELEC/EmuELEC/pull/888
* Multiple controller mappings - iNNEXT USB and PlayGame USB by @nwildner in https://github.com/EmuELEC/EmuELEC/pull/840
* dev joy advmame fix - 1 controller controlling 2 players and more bug. by @Langerz82 in https://github.com/EmuELEC/EmuELEC/pull/891
* Fix for mpv not compiling on OGA/OGS/GF by @miwasp in https://github.com/EmuELEC/EmuELEC/pull/919
* fix fs-resize would break on 4GB drives, and EEROMS was not properly formatted on USB drives by @7Ji in https://github.com/EmuELEC/EmuELEC/pull/921
* RK356x: update uboot for firefly devices by @shantigilbert in https://github.com/EmuELEC/EmuELEC/pull/926
* EE-ES Multidisc creation support. by @Langerz82 in https://github.com/EmuELEC/EmuELEC/pull/923
* implements installtointernal via a new package ampart by @7Ji in https://github.com/EmuELEC/EmuELEC/pull/928
* introduce new emmc installation method aminstall by @7Ji in https://github.com/EmuELEC/EmuELEC/pull/930
* Remove duplicate PKG_VERSION in bstone package.mk by @miwasp in https://github.com/EmuELEC/EmuELEC/pull/938
* mount_romfs.sh: rewrite to properly support 2-partition layout by @7Ji in https://github.com/EmuELEC/EmuELEC/pull/942
* ampart: bump version f0c3cc44; aminstall: misc fixes and better migration of EEROMS by @7Ji in https://github.com/EmuELEC/EmuELEC/pull/943
* mount_romfs.sh: ensure /storage/.update is always mounted as long as EEROMS is valid; mount EEROMS when user-defined storage-roms.mount failed by @7Ji in https://github.com/EmuELEC/EmuELEC/pull/944
* Misc packages fixes by @7Ji in https://github.com/EmuELEC/EmuELEC/pull/946
* Revert RTL8812AU to previous version by @miwasp in https://github.com/EmuELEC/EmuELEC/pull/947
* poppler: bump version 32fa288 (22.06.0) and deps fix by @7Ji in https://github.com/EmuELEC/EmuELEC/pull/948
* jslisten: add systemd as dependency as it includes libudev.h by @7Ji in https://github.com/EmuELEC/EmuELEC/pull/949
* emuelec-32bit-libs: fix typo PKG_BUID -> PKG_BUILD by @7Ji in https://github.com/EmuELEC/EmuELEC/pull/951
* exfat-linux: seperate from linux to save build time by @7Ji in https://github.com/EmuELEC/EmuELEC/pull/950
* Misc depedency fixes (qt-everywhere, ampart) by @7Ji in https://github.com/EmuELEC/EmuELEC/pull/953
* Introduce actual multilib support by @7Ji in https://github.com/EmuELEC/EmuELEC/pull/956
* Flycast Textures folders by @Kelvfimer in https://github.com/EmuELEC/EmuELEC/pull/960
* Fix typo description heart of darkness by @Kelvfimer in https://github.com/EmuELEC/EmuELEC/pull/959
* DuckStation Textures - Modify emuelec-dirs add /roms/psx/textures by @Kelvfimer in https://github.com/EmuELEC/EmuELEC/pull/958
* lib32: optimize, behaviour change and mali fix by @7Ji in https://github.com/EmuELEC/EmuELEC/pull/957
* Updating duckstation to the latest working version by @Kelvfimer in https://github.com/EmuELEC/EmuELEC/pull/967
* Adding symlink logic in duckstation.sh to redirect to texture replacement by @Kelvfimer in https://github.com/EmuELEC/EmuELEC/pull/966
* Add PKG_NEED_UNPACK to lib32 packages that need it. by @shantigilbert in https://github.com/EmuELEC/EmuELEC/pull/971
* fheroes2: fix controller not working; SDL2 cleanup by @7Ji in https://github.com/EmuELEC/EmuELEC/pull/974
* Fix assets dir in devilutionX by @miwasp in https://github.com/EmuELEC/EmuELEC/pull/976
* fs-resize: raise storage size to 6g, allow omitting eeroms manually by @7Ji in https://github.com/EmuELEC/EmuELEC/pull/979
* eemount: introduce package & change mount logic by @7Ji in https://github.com/EmuELEC/EmuELEC/pull/980
* eemount: bump 4adf3138; init: fix disabled systemds units by @7Ji in https://github.com/EmuELEC/EmuELEC/pull/983
* eemount: bump 2321603 by @7Ji in https://github.com/EmuELEC/EmuELEC/pull/984
* force overwrite file on unziping files by @lihexali in https://github.com/EmuELEC/EmuELEC/pull/989
* Update Emulators 4.6 by @Kelvfimer in https://github.com/EmuELEC/EmuELEC/pull/1013
* lib32-libdrm: keep up with generic-libdrm by @7Ji in https://github.com/EmuELEC/EmuELEC/pull/1016
* ffmpeg: fix dep x264; lib32-ffmpeg: switch to openssl by @7Ji in https://github.com/EmuELEC/EmuELEC/pull/1019
* options: raise default ccache limit to 20G by @7Ji in https://github.com/EmuELEC/EmuELEC/pull/1022
* package emulator advmame - patch for vsync to work with the fps. by @Langerz82 in https://github.com/EmuELEC/EmuELEC/pull/992
* Bump bstone to latest by @miwasp in https://github.com/EmuELEC/EmuELEC/pull/1023
* Update emulators 46 part 2 by @Kelvfimer in https://github.com/EmuELEC/EmuELEC/pull/1018
* emulator - duckstation standalone - game controller autoconfiguration by @Langerz82 in https://github.com/EmuELEC/EmuELEC/pull/994
* [Feature] Cloud Loading and Saving for retroarch auto saves and state saves. by @Langerz82 in https://github.com/EmuELEC/EmuELEC/pull/997
* EE - joy common - controller - order fix and revision by @Langerz82 in https://github.com/EmuELEC/EmuELEC/pull/936
* Check resolution fixes, Setres overhaul, cvbs fix other resolutions people could not see. Borders option added. AdvMame Exit Display Fix. by @Langerz82 in https://github.com/EmuELEC/EmuELEC/pull/1021
* Update es_systems.cfg by @miwasp in https://github.com/EmuELEC/EmuELEC/pull/1054
* Update 99-emuelec.conf by @miwasp in https://github.com/EmuELEC/EmuELEC/pull/1055
* Set Resolution - Fixes by @Langerz82 in https://github.com/EmuELEC/EmuELEC/pull/1058

## New Contributors
* @JohnnyonFlame made their first contribution in https://github.com/EmuELEC/EmuELEC/pull/884
* @7Ji made their first contribution in https://github.com/EmuELEC/EmuELEC/pull/921
* @lihexali made their first contribution in https://github.com/EmuELEC/EmuELEC/pull/989

# 4.5

## EmuELEC v4.5 - Core/Emulator Update

This version is just an emulators and cores update, but it also has some small bug fixes.

## Bug fixes

* Add 32-bit .info files for the libretro cores that need it, this fixes issues as save states not working.
* Fix audio stuttering in lzdoom again (#888)
* Fix an issue where gptokeyb would not kill emulators if hotkey was set to the `select` button
* Fixed a small issue with cloud sync if the configuration file was edited in windows

## Core and emulator updates

While this looks like a small changelog, keep in mind this is mostly an update for most cores, ports and emulators (60+) have been updated to the latest commits on github, we tested them internally but as always we cannot test with all devices and with all games, so if you find issues please post them on the forum or discord, unless, if you are 100% sure it's a reproducible bug then open a Github issue. 

## Special thanks!

I want to thank the [Patreon](https://patreon.com/emuelec)/[Github Sponsors](https://github.com/sponsors/shantigilbert) supporters that have made working on EmuELEC possible (In no particular order).

Dewen Hsu
John Gamester
Matthew Seashore
Craig Hibbert
jmthill
Russ Crandall
tailbøx
Peter Shaw
Noah Heninger
BSM_Mylock
Tony Escobar
Dennis W. 
Tim Wilson
Jason Burns
Nina Seramour
David Simmons
Michael Brown
pyjmj05
Tomas Radej
Brian Hoffman
Chad Barker
AlienatedDiego
Bryan Pizzuti
Sylvia van Os

And everyone else that has supported EmuELEC in the past in any way shape or form! 

Thank you for your support!


# 4.4

General: 

Huge update to base build system: 

* All Amlogic devices now use the same kernel 4.9-19! 
* You might notice a bit more performance on some emulators as well usage in general.
* IMPORTANT: S905 (GXBB, p201) for the moment is no longer supported. If you have one of those devices (s905 no letter after the 5) DO NOT UPDATE, stay in 4.3.

Fixed Bugs:

* One of the most annyoing bugs that plagued fbdev with Retroarch was finally fixed (Issue #76) 
  fixed in PR `mali_fbdev fix for fps drop after egl_destroy` (#789) by @spleen1981!
  This means that using retroarch as bootup option is now possible (some small changes need to be done).  
* Fixed bluetooth connectivity issues
* Fix zoom not working on manuals 
* Fix many external mounting issues
* Backup will now rename the file instead of deleting it after restore.
* Fixed SuperTux and SuperTuxKart data download 
* Fixed autoupdate would show update available even if there was none. 

Additions and other fixes: 

* Added WIP Mupen64plus Standalone
* Added fbneo Standalone
* Added Duckstation Standalone
* Added Yabasanshiro Standalone
* Added Blake Stone to ports
* Added iotop
* Added VIM
* Added External Mount settings in ES
* Added option to create key remaps for Advance MAME
* Switch to SDL 2.0.20 for all devices
* Support for Pixelcade (Install script is in Setup)
* Retroachievements encore is now configurable from ES
* Added Enable Integer Overscaling in ES
* Use toggle for fast forward instead of hold
* Add .68k .68K .sgd .SGD to genesis/md
* Added gamepad auto configuration for Dolphin and Flycast Thanks to Joshua L (@Langerz82)
* Reworked Advance MAME gamepad auto configuration Thanks to Joshua L (@Langerz82)
* Removed ceemmc because it's no longer compatible with 3 partitions
* Added option to backup to cloud services using rclone.
* Switch to parallel_n64_32b as default n64 emulator for handhelds. 
* Add Heart Of Darkness to ports (PR #863)
* Added a5200 core as default emulator for Atari 5200
* Added gearcoleco core (PR #859)
* Updated several emulators (PR #856)
* Added Messen-s to gameboy to allow for Super GameBoy emulation (PR #848)

And many other changes! for the full list check out the commit history. 

Cloud sync note:

Be sure to read https://rclone.org/remote_setup/#configuring-by-copying-the-config-file
Name your remote as `EmuELEC_Remote` and copy rclone.conf to `/emuelec/configs/rclone/` 
finally create a folder named `EmuELEC_Backup` on your cloud service. 

If you would like to use another name for the remote or backup folder you can create a file named 
`/emuelec/configs/rclone/ee_cloud_sync.cfg` and add this to the file:

```
EE_SYNC_REMOTE="your_remote_name"
EE_SYNC_PATH="your_backup_folder"
```

Cloud backup and restore options are in 
"Main Menu > EmuELEC Settings > Danger Zone > Cloud Backup Settings and Game Saves"
"Main Menu > EmuELEC Settings > Danger Zone > Cloud Restore Settings and Game Saves"

# 4.3

General: 

* Fix Autoupdate
* Fix no backup restore if EEROMS was set to fat32
* Fix no external ROMS if EEROMS was set to fat32
* Fix typo on Parallel N64 32b core name
* Unify Brightness between ES and RA
* Fix advmame.sh: unset DISPLAY for Amlogic and Amlogic-ng
* Fix SuperTux2: Fix sed in launch script
* Fix vertical mode not respecting index ratio
* Fix Connect to WiFi on first boot if using es_defaults.txt
* Fix volume resets to 98% using AV
* Fix Do not redirect stdout/stderr to /dev/null in maxperf and normperf. (#661)
* Fix Amstrad GX4000
* Fix create /storage/roms/amstradgx4000 on boot
* emuelecRunEmu.sh: remove hardcoded bin path, this allows to use most of the binaries/scripts be called from `/emuelec/bin` or `/usr/bin` in that order
* Add Megadrive MSU to es_systems.cfg
* Add fceumm-mod libretro core to play some additional NES ROM hacks. (#658)
* New Packages: Box64, Box86, GL4es, Axe11, libglu (for future use)
* Bump most cores and emulators to current versions
* Bump Retroarch to 1.9.6
* Add Flycast Stand Alone 
* Add Alternate version of Mupen64plus-nx
* Replace old filemanager for 351Files
* Cleanup es_systems.cfg remove and add some extentions
* Add Hurrican port (Handhelds currently have no working controls) 
* Atomiswave: Remove workaround for nvmem
* Fix Stadia Gamepad. Thanks to amuzulo#1322 
* Fix issue with lzdoom loading .doom files and sound on mods
* Update some sound packages
* Fix es_systems.cfg: Add extensions to c64/c128 and Amiga (#677)
* Add Cdogs-sdl to ports
* Add Abuse to ports NOTE: WIP controls
* Add Streets of Rage Remake
* Fix Retroarch display of CJK characters (Fixes #534 & #431)
* Fix SFC not scraping
* Updated most emulators and cores
* Create folders for fbneo consoles
* Minor changes to fix switching of resolutions.
* fheroes2: Add Free Heroes of Might & Magic II port
* SoRR: Fix controls on Gameforce and OGA
* Fix bezels downloaded to the wrong location
* Enable Random Boot videos (see note)
* es_systems.cfg: C64 add .tap extension
* Add "Set as bootgame" option to advance game options (see notes)
* Stop using autostart.sh and use /usr/bin/emuelec_autostart.sh (if you need to use autostart please use /storage/.config/custom_start.sh)
* emuelec-emulationstation: use GLES2 renderer
* Many small fixes I may have missed on this changelog

Amlogic-ng: 

* Add preliminary support for Raxda Zero 
* Add RTL8761 Bluetooth Support (#698)
* Include ssv6xxx-aml drivers

Odroid Go Advance: 
* Enable bluetooth support for OGA/OGS (#725)


Note about random intro videos: 
mp4 files only and they should be in `/storage/roms/splash/introvideos`
if no mp4 file is found the default intro video is shown.
In ES, enabling "Randomize Boot Video" will also enable "Always Show Boot Video"

Note about "Set as bootgame":
This will allow to select a single game to start at boot, useful for arcade systems or for handhelds if you have a favorite game and what to launch it on boot. 
This game is launched by ES before it loads the game gamelists, so any stats recorded by ES will saved (e.g. times played, last played, etc)

Select the game and open the "Advance Game Options" and then set "Launch This Game At Startup" to "On"

* After the game is ended (via hotkey+start) normal boot will continue.
* Not all systems support this (e.g, ports).
* Any retroarch settings (shaders, filters, bezels, splash, etc) will be respected. 
* To remove bootgame, select the game that is currently set to boot and set "Launch This Game At Startup" to "Off", or go into "System Settings > Developer > Stop Launching This Game At Startup"  
Fixes #728

# 4.2

A new forum has been open for emuelec: https://emuelec.org

General: 

* Add ee_fstype to set the EEROMS partitions to the desired file system, between FAT32 (default), EXT4, EXFAT and NTFS (read the warning about using NTFS). Instructions coming soon to Wiki/forum
* Fix OGG background music
* Update setres.sh and advmame.sh for resolution 1280x1024p60hz (PR #600)
* Fix drastic game saves & save states erased when resetting scripts & binaries to default (PR #595) 
* Add Potator a Watara Supervision emulator core, roms go into /storage/roms/supervision
* gptokeyb bump and fix missing trigger actions
* Crystal bump to latest
* emuelec-emulationstation bump to latest
* Bump Retroarch to v1.9.4
* Switch Duckstation name to Swanstation
* Rework 32bit core detection on emuelecRunEmu.sh
* Yabasanshiro: Revert back to 7ae0de7 as it gives much better performance
* Added freej2me Java games emulator, it accepts .jar files and they should go into /storage/roms/freej2me. Internet is required only on first run to download the Java JDK.
* Bump RigelEnfgine to fix a bug
* Hypseus replaced by Hypseus-singe
* Add auto gamepad configuration for Hypseus
* Add Non-Commercial Duckstation core (untested)
* Always update es_systems.cfg on system update
* Fix unusual bug that metadata would not save on quit or restart (You need to remove the directory /storage/.config/emulationstation/scripts/quit)
* Replace SDL1.2 with SDL1.2-compat
* Bezels will now respect ratio and integer scale set in menu

Amlogic-ng: 

* Enable qca6174 drivers (Fixes issues #611)
* Update SDL2 to SDL 2.0.12
* Fix Retroarch not updating after applying CPU video filter
* Bump kernel to 640e3a3

Odroid Go Advance/Super & GameForce: 

* Bump kernel to use latest Mali G31 blobs
* Introduce RetroRun, available for Flycast for the moment
* Use gptokeyb for controls on Solarus
* Fix reboot while charging
* Fix retrorun reversed analogs
* Convert screenshots from pbm to png

GameForce:

* Move global hotkey to button 1 to avoid conflicting hotkeys in retroarch, 1+Dpad up/down for volume, 1+Dpad lef/right for brightness
* Brightness was not correctly calculated on GameForce (PR #619)
* Fix hypseus controls (#622)
* Update U-boot and Kernel
* Fix Opentyrian
* Fix Advancemame

# New ee_fstype 
Starting with 4.2 a new option for people that are having issues with the EEROMS partition is available, but it comes with a few warnings, please read carefully and decide if this is for you:

* To be able to use this option a fresh install is required
* Do not change anything if FAT32 works for you
* Use EXFAT instead of NTFS when possible
* If you use Linux EXT4 might be the best option for you!
* I repeat do not change anything if FAT32 works for you
* Keep in mind this is a very experimental feature
* If you insist in using NTFS please read the warning below

## Intructions

If you would like to use FAT32 skip steps 2,3 and 4

1.- Flash the correct test image to your SD, it needs to be the .img.gz on a CLEAN sd, it will not work on update (.tar)
2.- Right after it is flashed open the first partition EMUELEC
3.- Create a file named ee_fstype (no extension!) on the root of the EMUELEC partition
4.- Open the file and type `exfat`,`ntfs` or `ext4` save it and close it
5.- Do whatever you do to the partition (dtb change, ee_default.txt, etc)
6.- Test

Keep in mind this is an experimental feature, only enable it if you would like to help testing it, please report any issues to the EmuELEC forum, Discord or Github

# NTFS Filesystem warning  

While I tried to do as much testing as possible with the new ee_fstype option, there still might be issues, NTFS is by far the most problematic so I suggest you first try fat32 or exfat, both will work on Windows computers and Macs. NTFS might have some issues with mounting the update folder, so please use it as a last resort.


# 4.1

General:
 
* Emulationstation: While in a game list, pressing X/Y will move to a random game/open game options, holding X/Y will mark it as favorite/open search (thanks to @lethal-guitar)
* Bump PPSSPPSDL to v1.11
* Bump Duckstation to abb7631
* Pico-8: Allow saving favorite carts, include binary in backup
* Update Sonic 1 and 2 so that they work with multiple gamepads
* Bump most emulators and cores to newest git hash (check commits for specifics)
* Bump Crystal theme which now includes a new panel (boxart), 16:9, 4:3 and CRT versions
* Enable bezels on OGS, not fully tested yet
* Bump Genesis-plus-gx and Genesis-plus-gx-wide to support FM music
* Use DinguxFileManager as default on all platforms
* Use gptokeyb as a fake keyboard for OpenBOR
* Bump Retroarch to 1.9.1
* API keys for Emulationstation have been changed, please refer to the emuelec-emulationstation/package.mk

Additions: 

* Added Chocolate-Doom and lzdoom with support for mods
* Added SuperTux and SuperTuxKart to ports
* Added Imagemagick (mainly for screenshot manipulation from CLI)
* Added logos to the ports (Thanks to Dim!)
* Added vertical aspect ratio option to OGA/S
* Added gptokeyb to enable video controls on all devices with SDL support! with configuration support
* Replace jslisten with gptokeyb to kill emulators
* Added easyrpg to es_systems.cfg
* Added Ecwolf with support for mods
* Added supermariowar to ports, on the first run a fake keyboard will be used, make sure you set your gamepad and restart the game, if you need to run the fake keyboard again delete /emuelec/configs/smw/nofakekeyb and run the game again.
* Added Flycast 32bit as core option for Dreamcast/Atomiswave/Naomi
* Added Amstrad GX4000

Fixes: 

* Removed unused scripts, and fixed many small issues with scripts
* Fixed many script that were causing hangups or other issues
* Fixed gamecontrollerdb.sh it will now replace the UUID from the one in the db, this fixes weird controllers that use the same UUID as others (but are not the same)
* Fixed an issue with unicode characters not displaying correctly on the EEROMS partition (CN, JP, etc)
* Fix SonicCD Gamepad for the OGS
* Fix Pico-8 disappearing splore file
* Fix Scummvm game scan
* Fix brightness not restored after reboot on OGA/S, thanks to @miwasp, fixes issue #470
* Fixed issue with OGA/S OC not beeing applied correctly (this does not solve the random lockups on some devices)
* Fix backup/restore issues
* Fixed Retroach video recording
* Fixed Eduke not running when having lots or ROMS in ES, by enabling swap (much testing needed!)
* Fixed an issue with ES not playing .ogg music files in BGM
* Fixed some errors messages were not wrapped and could not be read
* Fixed OpenBor would not work after playing one game
* Fixed DevilutionX character voices were wrong
* Fixed DevilutionX mouse emulation was not working
* ARM32 interpreter is now symlinked so no need for patchelf
* Fix some TimeZones not displaying/working correctly (#546)
* Fix hand-held bezels for 720p and 1080p


This version includes a big change on how binaries and scripts are stored, basically to deal with the issue of people not reading how to properly update 
and since I am getting tired of answering the same question over and over again, lets just move all binaries and scripts to RO /usr/bin, this will force 
update all of these and make updating much simpler.

If you use custom scripts /emuelec/bin and /emuelec/lib are still in the path so you will have to deal with it accordingly. 

All configurations regarding emuelec will still be handled in /emuelec/config

Note that this is probably not final, I still need to do a lot of testing, but keep that in mind if you want to update

# 4.0    

Yes its finally here :) 

The change log is HUGE so I am just going to focus on the most important parts (and the ones I can remember):

* EmuELEC is no longer 32bit, it has now moved to AARCH64 (With some small parts still being 32 bit, like PCSX_Rearmed and Parallel64)
* A brand new default theme made specifically for EmuELEC! Crystal! https://github.com/dm2912/Crystal
* For easy access with any computer a third partition (EEROMS) will now be created on the first boot as FAT32, which is where all the ROMS will be stored.
* Update folder is now located in EEROMS/.update in case you want to copy the update files directly, its also still accesible from the samba share
* S912 (Including most Pandora) will no longer be supported, if you have one of those 3.9 is the latest version 
* Most save states are now in one folder (/storage/roms/savestates/[system] or EEROMS/savestates/[system]) I might have missed a few of the standalone emulators, but if you find any issues with that, please let me know, please make sure you move them there if you plan to keep using your old ones
* Introduced ee_defaults.txt https://github.com/EmuELEC/EmuELEC/commit/9358efe01af501326526ce479ca6c5f55932e34a
* Switch all error messages and scripts to use [TvTextViewer](https://github.com/lethal-guitar/TvTextViewer), also improve how these are displayed
* New emulator/cores added Dosbox-pure, Solarus, Tic-80, Mesen, DosBox-Staging, DosBox-X and others
* Dolphin has been added to the Amlogic-ng devices, but it is only really playable on S922x devices and gamepad stills needs to be set manually. Will fix this on v4.1
* Added many ports including Duke Nukem 3D, Sonic 1, 2 and CD, RigelEngine, Bermuda Syndrome, Hydra Castle Labyrinth and others. Keep in mind most of the ports still need the DATA as it is not included! (check `Missing Bios` in the `Game Options`)
* Better Bluetooth manager and connection in general also Keep Bluetooth pairings even if doing a full reset
* Most emulators and cores are updated
* Support for the Odroid-Go Super

As well as many, many other issues, bug fixes and additions I probably forgot! but you can check the (mostly) full change log here: 
https://github.com/EmuELEC/EmuELEC/compare/v3.9...EmuELEC:master

# Very important note!
This version is NOT backwards compatible, meaning this release cannot be used to upgrade older versions! I know lots of people hate reinstalling, but due to the nature of the changes this is a MUST but now with the third partition you can copy the ROMS directly, faster and safer! no messing around with software that corrupts the data! be warned that if you do not do a clean install, you will have issues! 

This version also includes a new auto update script that will hopefully make it easier than ever to update when new versions come out.

If you are new to EmuELEC please READ the WiKi at https://github.com/EmuELEC/EmuELEC/wiki BEFORE asking for any help. You can also join us in discord! https://discord.gg/cbgtJTu If you want to support EmuELEC please click on the "Support" button on top to find out how! 

We have tried our best to test each and every aspect of EmuELEC but keep in mind we cannot test each and every game and setting, so I am sure you will find new and improved bugs and issues! so don't hesitate to jump into discord to let us know, or open an issue right here in GitHub (but please follow the template!) 

# 3.9    

This is the last 32bit release of EmuELEC, this also concludes support for the S912 devices (including Pandora boxes) as there is no 64bit drivers for this SOC. 

Starting from v4.0 EmuELEC will only be 64bits, this unfortunately means that you cannot upgrade from 3.9 to v4.0, so a clean install must be made, but you can do a backup of your roms and settings and copy them over to v4.0 if you like but this has to be done manually. 

This release is mostly bug fixes:

* Emuelec-Emulationstation: Bump to dbb576d
* Retroarch: Fix crash with CHD + Cheevos
* Odroid N2+ :Fix reboot after danger zone reset
* Add Pico-8 Support
* Rename n64.rmp to Mupen64Plus-Next.rmp and Fix remapping loading
* Disable digital to analog on ParaLLEl N64 too
* es-theme-EmuELEC-carbon: Bump to ca062ff
* Fix DOOM location (#308)
* Fix killall triggering crash detection (#303) 
* fix ee_backup 
* OdroidGoAdvance: FIX RGA scaling not covering the whole screen
* Other small changes and fixes. 


# 3.8   

Due to some confusion I removed the v11 from the OdroidGoAdvance name, since the image works on both v1.0 and v1.1, this should not affect functionality at all. 

As a reminder, starting with v4 there will be no more 32bit releases, only ARM64 and upgrading from one to the other is not possible. 

## BEFORE OPENING AN ISSUE OR ASKING FOR HELP I BEG YOU TO CHECK THE WIKI! IT IS VERY FRUSTRATING TO RESPOND TO THE SAME QUESTIONS OVER AND OVER AGAIN WHEN THE ANSWER IS ALREADY ON THE WIKI! https://github.com/EmuELEC/EmuELEC/wiki

## Please remember, EmuELEC is COMPLETELY FREE! it is not to be sold or included in ANY commercial products as a whole, if you have paid for EmuELEC or an image, DEMAND YOUR MONEY BACK! For more license info read https://github.com/EmuELEC/EmuELEC/blob/master/README.md

* Bios check will now be performed AFTER and ONLY if a game crashes
* OdroidGoAdvance: New feature! Added vertical mode for some cores (mostly arcade cores)
* New Emulationstation option: Random video screen saver, place videos in /storage/roms/mplayer
* Fix: ports showed error even on gracious exit 
* SDLPoP: Fix settings not being  saved
* Mupen64plus-nx: Use Gles3 for OdroidGoAdvance fixes #260
* emuelec-utils: Unify some small scripts for easy management
* Added a timezone selection to make it easier to set your current time
* S922x: Disabled small cores for a little performance boost
* Remove some unused cores for space
---beetle-lynx
---crocods
---dosbox-x
---easyrpg
---xow
---libretro-bash-launcher
They can be brought back if demand exists
* re-add ssv6xxx-aml: fixes #261 (hopefully) 
* Add DOSBox scan script (#292) - Easier way to add DOSBox games (untested)
* Use GCC optim -O3 system-wide - Squeeze a bit more performance on some cases 
* OdroidGoAdvance: use internal terminal to display error  - Uses proper rotation and error message will properly close!
* S922x/A311D: Use a service to handle small cores - Fixes the reboot issue
* Add pcenginecd to bios check
* Add .mdf for Sega Saturn (#288)
* Odroid Go Advance: Enable rs97-commander-sdl2
* VLC: bump to 3.0.11.1
* Fix MSX2 platform for scrapping
* Retroarch: Added some default core settings
* Amlogic-ng: Goodbye libhybris! - Use proper GLES headers, this fixes some gfx errors on some cores, like Mupen64
* Amiberry: Fix WHDload not working
* Bump Retroarch
* Bump Emulationstation
* Many other small under the hood fixes


# 3.7   

# Important notes

This release has many new features some of them that will require a bit of setting up if you are upgrading. The biggest change  is that the getcores.sh file that was responsible for showing what emulator was used for what platform is no longer used, this means that emuelec.conf and emuoptions.conf from earlier versions will no longer will compatible! (well only the core/emulator part) so if you previously had set some games to run on certain emulators this needs to be redone, sorry about that but its for the better! 

It is highly recommended to do a clean install and just transfer your /storage/roms folder again!
If you are doing this, also make sure your saves are transferred, since there was a bug on v3.6 that used `/storage/.config/retroarch/saves` instead of saving on the same path as the ROM.

**WARNING:** This will REPLACE the es_systems.cfg file, if you manually changed this file those changes will need to be redone, sorry can't seem to find a better way yet.

**WARNING 2:** If your saves are in /storage/.config/retroarch/save* (or any other place other than the /storage/roms folder) make a backup of them BEFORE you update! or they will be lost, RA should now save them on the same folder as the ROM (as it did before) but you need to replace the retroarch.cfg (you can just delete it from network share or ssh and reboot) or change the `savefiles_in_content_dir` and `savestates_in_content_dir` to true in the retroarch.cfg file

If you are updating, remember to run "RESET EMUELEC SCRIPTS AND BINARIES TO DEFAULT" from the EmuELEC meu > Danger Zone after the update is done, otherwise you will run into problems. 

# Project Support
If you wish to support EmuELEC you can use Patreon or Paypal, note that this is absolutely not required to enjoy EmuELEC but it helps a lot and it is greatly appreciated! 
https://patreon.com/emuelec
https://paypal.me/shantigilbert 

Also, we have started a new official EmuELEC Youtube channel aimed at showcasing EmuELEC running different systems on different boards/tv boxes, and why not maybe some tutorials or game-plays in the future!! please drop by and subscribe! 

https://www.youtube.com/emuelec

## We have very little time to fully test everything but we have tried our best to test each feature, keep in mind there are so many variables it is possible that we missed some! So if you find any sort of problem please don't hesitate to open an Issue, check out the (very WIP) wiki https://github.com/EmuELEC/EmuELEC/wiki (which you can also help by adding or editing it!) or you can also join us in discord: https://discord.gg/cbgtJTu

## BEFORE OPENING AN ISSUE OR ASKING FOR HELP I BEG YOU TO CHECK THE WIKI! IT IS VERY FRUSTRATING TO RESPOND TO THE SAME QUESTIONS OVER AND OVER AGAIN WHEN THE ANSWER IS ALREADY ON THE WIKI! https://github.com/EmuELEC/EmuELEC/wiki

## Please remember, EmuELEC is COMPLETELY FREE! it is not to be sold or included in ANY commercial products as a whole, if you have paid for EmuELEC or an image, DEMAND YOUR MONEY BACK! For more license info read https://github.com/EmuELEC/EmuELEC/blob/master/README.md

Now for the update notes!


# Fixes and new features
* Netplay lobby is now accessible directly from ES for the cores that support it
* Add support for Odroid N2+ (to OC you need to edit config.ini in the first partition `max_freq_a73=2400` and `max_freq_a53=2016`, watch your temps)
* Added (untested) support for LaFrite
* Introduce ee_check_bios: This will check for missing bios before launching a game, and it will display a dialog box if any required bios are missing. Based on #218 by @TheLastProject The only one I did not add to this list is Cgenius as it seems it can be used for several games not just one, so having a requirement for all games seemed bad.
* Add a Bluetooth on/off switch to ES, this will allow you to disable BT if you are not using it.
* setsettings.sh: fix atari800 loading and gambatte colorization
* es_systems.cfg: remove all groups
* Add support to read profile.d from /storage/.config 
* SDL_GameControllerDB: Fix Oga v1.1 mapping
* Emuelec-emulationstation: Change default settings
* advmame: Another attempt at auto config joysticks that should work on the OGA (hopefully)
* fbterm.sh: add "error" to display a dialog box with an error for 10 secs
* emustation-config: make sure the BT agent is not running (this one is important)
* Add sanity checks when launching Cave Story (#218)
* missing-bios: add --filter
* updatecheck.sh: Add forceupdate test
* Added NEC PC-9800 to es_systems.cfg
* Ports: Included hydracastlelabyrinth, OpenTyrian, HodeSDL, Bermuda but only OpenTyrian has a launch script, as soon as I test the others I will add the launch script
* Added a missing core "Quicknes"
* OdroidGoAdvance: Enable 3do and Saturn, I have no idea why people want to play these systems on the OGA, but by popular demand, here they are.
* Fix/improve Bluetooth pairing
* Bluetooth: Try to pair gamepads at boot, to make this work you need to set your game-pad in pairing mode when EmuELEC is booting
* Initial Bluetooth management menu (#209) under setup scripts you will find a new menu driven Bluetooth pairing method, by coach1988, very useful if the regular method does not work for you. 
* YouTube search: Add default search word to ES. under the EmuELEC settings menu there is a new option to set the default word to search, in case you don't have a keyboard this can be used, not ideal, but it works.
* Remove "tiggerhappy", was planing on using it but never got to, so it was just wasting space
* ES can now show PDF manuals from games. 
* set_advmame_joy.sh: force button "a" as "ui_select" 

## bumps
* Cyclone68000: bump to 94a9d9a
* Libretro: Bump some cores
* Retroarch: Bump to a308be6
* Advancemame: Bump to ceabee9
* Dosbox-x: bump to d13deeb
* Amiberry: Bump to 0209dbf
* PPSSPPSDL: Bump to 3403e28
* ResidualVM: Bump to 626c557
* ScummVMSA: Bump to 4d99e3a
* StellaSA: Bump to 5f5ac95
* OpenBOR: Bump to e761464
* Mupen64plus-nx: Bump Amlogic-ng to be9b85a
* HatariSA: Bump to 453e88b
* Skyscraper: Bump to e39e882
* youtube-dl: Bump to 2020.06.16.1
* xow: bump to 9e86c52 
* Parallel64: bump to 76193f8
* emuelec-emulationstation: Bump to 5e9dc64



# 3.6
	
	* Fixed AdvanceMame gamepad auto-configuration, a new option to enable/disable this has been set in the Main Menu - EmuELEC Settings.
    * Removed steam controller support, I don't think anyone was using it and it was just eating resources, if many people ask for it I will enable it again.
    * Added small youtube search engine (needs a keyboard) for now its included in the Setup menu script #14.
    * Mplayer: Added support for .twi and .ytb files, if you include a file with a twitch or youtube address it will be played by mplayer (needs internet).
    * Added Skip Song to ES, using the left thumb button (l3) you can skip the current song.
    * Added a small (VERY BETA) way to view videos directly from ES, drop your .mp4, .mkv, mpg, .mov videos to /storage/roms/mplayer and they will appear in ES, it still needs theming, so they will show up withouth an image/icon.
    * Fixed splash screen on 720p resolution or below.
    * Enabled CEC support and Remote support for devices that support it.
    * ES now has some new options to play with including hiding extensions per platform, so if you have .bin/.cue files you can hide one of them and now have no doubles, its available on the "select" menu from a gamelist, under "view customisation" (which has a typo, but thats besides the point).
    * Flycast is now working again, plus added PSP to the no rewind list so it should work even with no rewind enabled globally (it didn't before). 
    * Most emulators have been updated to the latest git.
	* OdroidGoAdvance: Use upstream PPSSPPSDL instead of PPSSPPSDL-GO, there might be gamepad issues.
	* OdroidGoAdvance: Add support for V1.1 with extra buttons and WiFi module, buttons might have changed a bit, taking suggestions on how to best set them up!.
	* OdroidGoAdvance: Besides all the changes mentioned above a sleep mode added by @KiwiHop (many thanks!).
	* OdroidGoAdvance: Fixed a bug that would trigger a black screen on the OGA 10 min after waking up the device.
	* OdroidGoAdvance: Switched global HOTKEY to F5.
	* Synched with CoreELEC 9.2.3.
	* Small script cleanups, other bug fixes and few other tweaks I am forgetting probably.	
	 
	EmuELEC will now force copy es_systems.cfg because when changes were made upstream to es_systems.cfg the update did not copy the new file, this version fixes that.
	WARNING: This will REPLACE the es_systems.cfg file, if you manually changed this file those changes will need to be redone, sorry can't seem to find a better way yet.


# 3.5

* Fixed FPS on Emulationstation would drop after returning from a game (Amlogic-ng)
* Add ee_alsa.always option emuelec.cong use to dissable pulseaudio, this might fix some issues when returning from a game, you will loose mixing sounds in ES
* Moved splash screens to /storage/roms/splash and also load splash per platform
* Backup will now backup more settings (like VVVVVVV,PPSSPP configs)
* Remove avahi requirement for pulseaudio in hopes that it will fix a rare bug
* Added many Wifi/Bt chips to Amlogic-ng project (Thanks to CE!)
* Added images and descriptions (only in ENG) for the setup scripts!
* Removed ev-tools as they were not being used, use regular evtest
* Updated emulators and cores to current GIT versions.
* Danger zone "reset system to default config" will now leave ROMS folders in place
* Introduce maxperf option (enabled by default) useful for OdroidGoAdvance and S912
* Removed core updater from retroarch to keep people from screwing up their installation
* Probably other changes I forgot to mention

New device supported! OdroidGoAdvance

This is the first official release for the OGA, although there are still many know issues, bugs and changes needed I felt it is at a place where I could release
the first official version. 

NOTE: I still expect MANY issues with the OGA release, please bear with me while I keep investigating on known issues and try to fix them 

# 3.4

This is a bug fix release that also adds a few features

* Added VVVVVV and 2048 to ports
* Reworked how bezels are used, they should now go into /storage/roms/bezels
* Fix Muppen64plus-nx on S905/S912
* Fix rare bug where ES would hang after returning from retroarch
* Reworked the "Danger Zone" options
* Use ffplay for intro video and splashes, this also enables gif splashes to be used (not yet configurable, s912 still has a few problems)
* Include extra WiFi drivers for Amlogic-ng 
* Bump Amiberry to 3.10
* Fix NeoCD not working with CHD
* Fix Scummvm libretro not loading games after scanning
* Make HatariSA use the same bios path as libretro /storage/roms/bios/tos.img
* Bumped a few libretro cores and emulators
* Other small bugfixes


Please remember, EmuELEC is COMPLETELY FREE! it is not to be sold or included in ANY commercial products, if you have paid for EmuELEC or an image, DEMAND YOUR MONEY BACK!

---------------------------
# 3.3

This is just a small bug fix release that also adds S905x3 support

* Added support for the S905x3 chip-sets, keep in mind many functions might still not work for your device (WiFi, Bluetooth, Ethernet, etc)
* Added script to open a terminal window, needs a Keyboard but you can kill it with Hotkey+start
* Added script to view last emuelec.log
* Fixed issue with rom names with single quotes not saving advanced options
* Fixed manual delay on show-splash script
* Remove unnecessary extensions for Saturn
* Sync base with CE
* Bumped a few emulator/cores to latest git.

---------------------------
# 3.2

* Added option to prioritize gamepads (for up tp 5 players) in Emulationstation 
* Added new script to copy ROMS from USB to internal storage
* Added newest changes to ES by Fabrice Caruso and the Batocera team, with some minor menu changes
* Added a new option to emuelec.conf "global.retroarch.menu_driver" to select the Retroarch menu driver from ozonoe (default), rgui and xmb
* Added Fakelottes, scanline and sharp shaders
* Added option to select RA menu driver in emuelec.conf
* Added option to set a delay to wait for slow external drives in emuelec.conf
* Added ports: Cannonball, Xrick (Rick Dangerous), Commander-Genius (Commander Keen), Doom, Doom2, Quake, Mr.Boom, REminiscence (FLASHBACK), Cave Story, Dinothawr. Thanks to KEgg
  Roms for each port should go into the /storage/roms/ports/[game]
* Added Steam Controller support (ONLY WITH DONGLE NO BT!)
* Added Stella stand alone
* Added PSPminis in Es menu
* Added support for PNG and MP4 splash screens
* Added a simple backup option to EmuELEC settings under danger zone
* Removed sixais as it seems its not needed for PS3/PS4 gamepads
* Reverted back to GIT e723594 for PPSSPPSDL and ppsspp_libretro as it seems it has better performance
* Switch to es-theme-EmuELEC-carbon with changes made by drixplm which now inlclude all system logos supported in EmuELEC!
* Switch back to Muppenplus64-next git version f77c16f for performance reasons (still not final change, maybe) 
* Separated configuration files to improve performance, emuoptions.conf now hold all the settings for games and platforms
* Bumped most libretro cores and emulators to latest version available
* Fixed a longstanding issue with advancemame and some games displaying only black screen!
* Fixed a rare issue where the system would hang if you ran Retroarch directly then return to Emulationstation
* Fixed many wrong and missing extensions in es_systems.cfg 
* Fixed Advmane not displaying correctly on 720p
* Fixed lot of other minor bugs 

------------------

# 3.1

Mostly bug fixes and emulator updates, but there is also a new feature that many have asked for, choosing emulators per game!
Change emulator per system: On the main menu select "GAME SETTINGS" > "ADVANCED" > [Choose system] > "EMULATOR"
Change emulator per game: Navigate to the game you want to choose emu for, press select on the gamepad (Game options menu) choose "ADVANCED GAME OPTIONS" > "EMULATOR"


------------------

# 3.0

Huge update!

New look, new logo (by Prizco), and intro video (by ElF0rma) included! 

Emulationstation now has many new options coming from Batocera-emulationstation and adapted for EmuELEC

Notable features include: 

* Game Settings: You can set some setting that are used on Retroarch directly on this menu, can be set (by priority) per game, per system or globally
* Background music has been upgraded and it now shows the titles, music still goes into /storage/roms/BGM
* Bluetooth controllers! Easy to pair Bluetooth controllers (still need a keybord or other gamepad first)
* Wifi has been revamped, you can still use the old method (By script in setup) or use the on-screen-keyboard to connect to WiFi directly from ES!
* ES Built-in scraper is now working, but Skyscrapper and Selph's scraper are still included
* Themes and Bezels can now be downloaded directly from ES (in menu: system settings, updates)
* Multi language support!
* Many other new features and small changes!


Fixes: 

All platforms:

* OpenBOR: Removed gl4es, it now uses less resources to run
* ResidualVM is now included, put roms in /storage/roms/residualvm, use the included "Scan ResidualVM games" script to populate the list (see note 1)
* ScummVM now includeds a "Scan ScummVM Games" script to populate the list
* Fixed Amiberry sound
* Almost all emulators/cores updated to current versions
* ComicBook theme has a bug that would play multiple videos at the same time so it has been replaced by es-theme-carbon (Fabrice Carusos's version)


S905

* Fixed Reicast sound issue 


Many more small bug fixes and changes, check the git history for those.

Note 1: ResidualVM still has a small bug where the pointer in GUI will not show, so you might need a keyboard to run some games, after the game has started you can use the gamepad withouth an issue.



# 2.7.1

Mostly small bugfixes

All platforms

* Return to fbterm because fbpad did not work with a keyboard
* Fix bezels not showing if first argument was "LIBRETRO"
* Skyscraper fix launch script

S922x/A311D/S905x2

* Fix audio not working on emulators

# 2.7

All platforms

* Emulationstation - Sound Mix! BG music, video music and theme audio now all sound at the same time (if you want)
* Switched fbterm for fbpad, much faster, lighter and looks better.
* Add option in ES to switch video mode
* Retroarch updated to 1.7.8
* Add more controllers to advmame
* Add Scummvm Standalone
* Most libretro cores bumped to latest git available
* A default bezel for retroarch cores is now included, disabled by default
* Added an automatic re-pair for bluetooth gamepads (not tested)
* Added Libretro Daphne (untested)
* Bug fixes

S922x/A311D/S905x2

* Amiberry is now working

S905/S912/PK7

* Fix scaling after video mode selection

-------------------------------

# 2.6

All platforms

* Update base to CoreELEC 9.2
* Consolidate all log files to /emuelec/log the samba share "logfiles" now also point to this location
* Removed less used cores and emulators to reduce space (see removed cores)
* Fixed parallel-n64 
* Updated PPSSPP
* Updated Flycast, performance is much better even on s905
* DosboxSDL is playable again
* Advancemame will now auto-configure P1 according to the gamepad that is connected on js0 as long as it has been configured in Emulationstation
* ES input configuration will automatically set the Keycombo to kill running emulators (HK + START) for the device in js0 (WIP may not work on all gamepads yet)
* ES will prompt you to configure a new gamepad by pressing any button
* ES sort emulator options and add SMS selection
* ES add Hatari emulator choice
* ES much needed system sort and cleanup
* Add HATARISA
* You can now use a global bezel for all platforms and games /storage/overlays/bezels/default.cfg
* Updated retroarch to latest git
* Most Libretro cores have been bumped to current versions
* Minor bug fixes
* Samba shares have been updated: added Bezels, Splash and pointed logfiles to /emuelec/logs.
  Important please delete /storage/.config/samba.conf if you can't see the new shares 

S922x/S905x2/A311D

* Add support for generic S922x (GT king)
* Add support for Khadas VIM3
* Preliminary support for S905X2 (very alpha, untested)
* Added Yabasanshiro, 4DO, MESEN and MESEN-S
* ES add Saturn (Yabasanshiro) to es_systems.cfg

 
Removed Cores:
cannonball
chailove
desmume
desmume-2015
dinothawr
higan-sfc
higan-sfc-balanced
lutro
mame2003-midway
mame2015
melonds
mrboom
mupen64plus (replaced by mupen64plus-next)
o2em
pocketcdg
quicknes
snes9x2005
snes9x2010
virtualjaguar
xrick

-------------------------------

# 2.5.4

All platforms

* Fix for manually set bezels 
* Fix for ROM folders not being created at first boot
* Amiberry now uses the same gamepad config as Retroarch
* Emulationstation now waits for mounts to be ready before it starts so fix the issue where external drives would not show any roms 
* Completely replace Final Burn Alpha with FinalBurn Neo (rom folder is now fbneo)
* Emulationstation: Add NES and SNES hacks to es_systems.cfg
* Emulationstation: Change SuperGrafx core
* Emulationstation: Change Openbor theme from Ports to Openbor
* Emulationstation: Fix favorites not being saved after restart 
* Remove Virtual Jaguar from supported platforms (as it was unplayable)
* Updated Mupen64plus-nx libretro core, it is now faster and uses GLideN64
* Update Parallel 64 
* Neocd Libretro updated to newest git, now supports CHD
* Add many missing platform and collections to es_systems.cfg
* Minor changes and fixes
* Bettle-dc is now Flycast
* New libretro core MBA Mini Plus (included but not yet enabled)
* Retroarch: let user set if they want shutdown and reboot from RA, useful if you want to use RA as the default launcher.
* Include extra cores for testing (dinothawr, higan-sfc, higan-sfc-balanced, lutro, mame2003-midway, mrboom, easyrpg, mesen, desmume, desmume-2015, pocketcdg, melonds, virtualjaguar)

Odroid N2

* OC by default freq_a73 "1908" freq_a53 "1992" governor "performance" 

Addon:

* Fixes for Odroid N2
* Fix for no audio
* Use Kodi option to set audio-output (HDMI or front)

-------------------------------

# 2.5.3

All platforms

* New feature "Force Update" that will hopefully solve the update process, updating only the files that need to be updated and leaving the rest intact. (More info on the Wiki)
* New feature custom_start.sh if you need anything to run at boot place it in this file /storage/.config/custom_start.sh
* Enable/Disable custom bezels and splash screens from the ES menu.
* Fix crash when disconnecting gamepad
* Fix DS4/DS3 motion controls causing problems with ES
* Fixed bug with some handheld platforms not showing bezels
* Fixed bug where bezels/splash would show a different game
* Added getcores_override.sh in case you add a new core and need it to appear as an option in ES.
* To avoid confusion libretro cores now have Libretro_ in the name when selecting an emulator in Emulationstation
* Change path to external fonts for ES
* Bezels will now make a backup copy of retroarch.cfg from when you enabled them, when they are disabled again that backup copy is restored, so make sure you change all of your settings before enabling bezels
* Replace Libretro Fbalpha with FbalphaFB
* Added PCengineCD, Saturn, Naomi, Atomiswave and MSX2 to es_systems.cfg
* Bumped several Libretro cores, PPSSPPSDL, REICASTSA, Retroarch, etc. to the newest version. 

-------------------------------

# 2.5.2

All platforms

* Fix scripts not displaying correctly
* Fix PPSSPP render error
* Added custom_scripts directory, any .sh script that is put in here will automatically appear in "Retropie" menu in ES

S912

* Disabled splash screen after quitting a game, it was causing rendering/resolution issues

-------------------------------

# 2.5.1

All platforms
* Fixed DOSBOX Rom path
* Fix for ES crashing when no es_settings.cfg was found
* Fixed a bug that prevented the mounting of USB roms if there were multiple "emuelecrom" files
* Improved logging, use emueleclogs.sh to create a support log file.
* Improved reicast.sh gamepad search
* Move ES resources folder to /storage/.emulationstation/resources for easy editing
* Removed pocketcdg and melonds
* New platform: Neo-Geo CD. ROMS should go into /storage/roms/neocd and bios into /storage/roms/bios
* Retroarch has been upgraded to 1.7.7
* Updated some Libretro Cores
* Bumped PPSSPPSDL, Skyscraper
* Bezels & Splash screens are still WIP but they should work if you use your own.

Odroid N2
* Fix Odroid N2 framebuffer issues with scripts, retroarch and some emus.

S912
* Fixed Reicast in S912/Pk7
* Fixed Retropie scripts for S912/Pk7

-------------------------------

# 2.5 

Initial EmuELEC release

Sx05RE is now EmuELEC, a pure emulation build that does not include Kodi or anything else related to Kodi in order to free resources and space.
The main goal of EmuELEC is to be the best and easiest wat to emulate retro games on Amlogic hardware.

However if you still like to have Kodi on the same installation, you can also use the Kodi Add-on version. But keep in mind it will have less features than EmuELEC


================================================
FILE: CONTRIBUTING.md
================================================
### Questions about LibreELEC?

To get your questions answered, please ask in the LibreELEC [Forum], on IRC: 
\#libreelec on Libera.Chat. 

Do not open an issue.

### Issue Reports

**BEFORE you report a bug make sure you got the latest testing version of 
LibreELEC. Your bug might be already fixed.**

If you are at all unsure whether it's a bug in LibreELEC or a problem with 
something else, post in the LibreELEC [Forum] instead. If it turns out that it is
a bug, an issue can always be opened later.

If you are sure that it's a bug in LibreELEC and you have not found a [similar issue], open a new [issue]
and try to answer the following questions:
- What did you do?
- What did you expect to happen?
- What happened instead?

**It is also importent to provide logs for debugging.
A zip file can be found in the [logfiles] samba share, this will contain all the logs needed.**

Make sure to specify which version of LibreELEC you are using.
- LibreELEC version
- LibreELEC build
- LibreELEC arch

Please don't paste log messages in the issue reports or issue comments - use 
[sprunge.us](http://sprunge.us) instead.

Feature requests are great, but they usually end up lying around the issue
tracker indefinitely. Sending a pull request is a much better way of getting a
particular feature into LibreELEC.

Please dont ask us to add 3rdparty drivers unless you are the maintainer/developer of the driver,
we have no manpower to support a non-mainlined kernel driver for your hardware.
However, LibreELEC comes with minimal set of kernel drivers enabled, if you are sure that your hardware
is supported in mainline kernel, feel free to send us a Pull Request to enable it in our
kernel defconfigs. We are always happy to support known-working hardware.

### Reporting build failures

As buildsystem / core packages (toolchain) / random libraries change from time to time, it is required
that you always do a clean build (make clean) before reporting build failures. Also make sure that you
have a clean, unmodified git clone, we can't fix bugs caused by you failed to merge / rebase on
your own fork.

### Pull Requests

- **Create topic branches**. Don't ask us to pull from your master branch.

- **One pull request per feature**. If you want to do more than one thing, send
  multiple pull requests.

- **Send coherent history**. Make sure each individual commit in your pull
  request is meaningful. If you had to make multiple intermediate commits while
  developing, please squash them before sending them to us.

Please follow this process; it's the best way to get your work included in the project:

- [Fork](http://help.github.com/fork-a-repo/) the project, clone your fork,
   and configure the remotes:

```bash
   # clone your fork of the repo into the current directory in terminal
   git clone git@github.com:<your username>/LibreELEC.tv.git
   # navigate to the newly cloned directory
   cd LibreELEC.tv
   # assign the original repo to a remote called "upstream"
   git remote add upstream https://github.com/LibreELEC/LibreELEC.tv.git
   ```

- If you cloned a while ago, get the latest changes from upstream:

   ```bash
   # fetch upstream changes
   git fetch upstream
   # make sure you are on your 'master' branch
   git checkout master
   # merge upstream changes
   git merge upstream/master
   ```

- Create a new topic branch to contain your feature, change, or fix:

   ```bash
   git checkout -b <topic-branch-name>
   ```

- Commit your changes in logical chunks. or your pull request is unlikely
   be merged into the main project. Use git's
   [interactive rebase](https://docs.github.com/en/github/getting-started-with-github/about-git-rebase) feature to tidy up your commits before making them public.

- Push your topic branch up to your fork:

   ```bash
   git push origin <topic-branch-name>
   ```

- [Open a Pull Request](https://help.github.com/articles/using-pull-requests) with a
    clear title and description.

[Forum]: https://forum.libreelec.tv/
[issue]: https://github.com/LibreELEC/LibreELEC.tv/issues
[logfiles]: https://wiki.libreelec.tv/index.php?title=LibreELEC_FAQ#Support_Logs
[similar issue]: https://github.com/LibreELEC/LibreELEC.tv/search?&ref=cmdform&type=Issues


================================================
FILE: Makefile
================================================
all: release

system:
	./scripts/image

release:
	./scripts/image release

image:
	./scripts/image mkimage

noobs:
	./scripts/image noobs

clean:
	./scripts/makefile_helper --clean

distclean:
	./scripts/makefile_helper --distclean

src-pkg:
	tar cvJf sources.tar.xz sources


================================================
FILE: README.md
================================================
# EmuELEC  
Retro emulation for Amlogic devices.
Based on  [CoreELEC](https://github.com/CoreELEC/CoreELEC) and [Lakka](https://github.com/libretro/Lakka-LibreELEC) with tidbits from [Batocera](https://github.com/batocera-linux/batocera.linux). I just combine them with [Batocera-Emulationstation](https://github.com/batocera-linux/batocera-emulationstation) and some standalone emulators ([Advancemame](https://github.com/amadvance/advancemame), [PPSSPP](https://github.com/hrydgard/ppsspp), [Reicast](https://github.com/reicast/reicast-emulator), [Amiberry](https://github.com/midwan/amiberry) and others). 

---
[![GitHub Release](https://img.shields.io/github/release/EmuELEC/EmuELEC.svg)](https://github.com/EmuELEC/EmuELEC/releases/latest)
[![GPL-2.0 Licensed](https://shields.io/badge/license-GPL2-blue)](https://github.com/EmuELEC/EmuELEC/blob/master/licenses/GPL2.txt)
[![Discord](https://img.shields.io/badge/chat-on%20discord-7289da.svg?logo=discord)](https://discord.gg/jQWCFwTn5T)

### ⚠️**IMPORTANT**⚠️
#### EmuELEC is now aarch64 ONLY, compiling and using the ARM version after version 3.9 is no longer supported. Please have a look at the master_32bit branch if you want to build the 32-bit version.

---
## Development

### Build prerequisites

These instructions are only for Debian/Ubuntu based systems.

```
$ apt install gcc make git unzip wget xz-utils libsdl2-dev libsdl2-mixer-dev libfreeimage-dev libfreetype6-dev libcurl4-openssl-dev rapidjson-dev libasound2-dev libgl1-mesa-dev build-essential libboost-all-dev cmake fonts-droid-fallback libvlc-dev libvlccore-dev vlc-bin texinfo premake4 golang libssl-dev curl patchelf xmlstarlet default-jre xsltproc libvpx-dev rdfind
```

### Building EmuELEC
To build EmuELEC locally do the following:

```
$ git clone https://github.com/EmuELEC/EmuELEC.git
$ cd EmuELEC
$ git checkout dev
$ PROJECT=Amlogic-ce DEVICE=Amlogic-ng ARCH=aarch64 DISTRO=EmuELEC make image
```

For the Odroid GO Advance/Super:
```
$ PROJECT=Rockchip DEVICE=OdroidGoAdvance ARCH=aarch64 DISTRO=EmuELEC make image
```

Note: In some cases you may also need to install the tzdata, xfonts-utils and/or lzop packages.
```
$ apt install tzdata xfonts-utils lzop
```


**Remember to use the proper DTB for your device!**

### Submitting patches
Please create a pull request with the changes you made in the dev branch and make sure to include a brief description of what you changed and why you did it.

## Get in touch
If you have a question, suggestions for new features, or need help configuring or installing EmuELEC, please visit [our forum](https://emuelec.org/). You may also want to visit our [wiki](https://github.com/EmuELEC/EmuELEC/wiki) or join our [Discord](https://discord.gg/jQWCFwTn5T).

**EmuELEC DOES NOT INCLUDE KODI**

Please note, this is mainly a personal project, I can't guarantee it will work with your box. I've spent many hours tweaking many things and making sure everything works, but I can't test everything and some things may not work yet. Also, be aware of hardware limitations and don't expect everything to run at 60FPS (especially N64, PSP, and Reicast). I can't guarantee that changes will be incorporated to fit your specific needs, but I welcome pull requests, help testing other boxes, and fixing problems in general.  
I'm working on this project in my spare time, I'm not making any money from it, so it will take me a while to test all the changes properly, but I'll do my best to help you fix any problems you might have on other boxes, in my spare time.

## License

EmuELEC is based on CoreELEC, which in turn is licensed under the GPLv2 (and GPLv2-or-later). All original files created by the EmuELEC team are licensed as GPLv2-or-later and marked as such.

However, the distro contains many non-commercial emulators/libraries/cores/binaries and therefore **cannot be sold, bundled, offered, included in commercial products/applications or anything similar, including but not limited to Android devices, smart TVs, TV boxes, handheld devices, computers, SBCs or anything else that can run EmuELEC** with the included emulators/libraries/cores/binaries.

Also note the license section from the README from the CoreELEC team, which has been adapted for EmuELEC:

As EmuELEC includes code from many upstream projects it includes many copyright owners. EmuELEC makes NO claim of copyright on any upstream code. Patches to upstream code have the same license as the upstream project, unless specified otherwise. For a complete copyright list please checkout the source code to examine license headers. Unless expressly stated otherwise all code submitted to the EmuELEC project (in any form) is licensed under GPLv2-or-later. You are absolutely free to retain copyright. To retain copyright simply add a copyright header to each submitted code page. If you submit code that is not your own work it is your responsibility to place a header stating the copyright.

### Branding

All EmuELEC related logos, videos, images and branding in general are the sole property of EmuELEC. They are all copyrighted by the EmuELEC team and may not be included in any commercial application without proper permission (yes, that includes EmuELEC bundled with ROMS for donations!).

However, you have permission to include/modify them in your forks/projects as long as they are fully open source and freely available (i.e. not under a bunch of "click on this sponsored ad to get the link!" buttons) and do not violate any copyright laws, even if you receive donations for such a project (we are not against donations for honest people!), we just ask that you give us the appropriate credits and if possible a link to this repo.

Happy retrogaming!


================================================
FILE: config/addon/dummy.xml
================================================


================================================
FILE: config/addon/xbmc.broken.xml
================================================
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="@PKG_ADDON_ID@"
       name="@ADDON_NAME@"
       version="@ADDON_VERSION@"
       provider-name="@PROVIDER_NAME@">
  <requires>
    <import addon="xbmc.python" version="3.0.0"/>
@REQUIRES@
  </requires>
  <extension point="xbmc.service" library="default.py">
    <provides>@PKG_ADDON_PROVIDES@</provides>
  </extension>
  <extension point="xbmc.addon.metadata">
    <summary>@PKG_SHORTDESC@</summary>
    <description>
@PKG_LONGDESC@
    </description>
    <disclaimer>
@PKG_DISCLAIMER@
    </disclaimer>
    <broken>
@PKG_ADDON_BROKEN@
    </broken>
    <platform>all</platform>
    <news>
@PKG_ADDON_NEWS@
    </news>
    <assets>
      <icon>resources/icon.png</icon>
      <fanart>resources/fanart.png</fanart>
@PKG_ADDON_SCREENSHOT@
    </assets>
  </extension>
</addon>


================================================
FILE: config/addon/xbmc.python.module.xml
================================================
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="@PKG_ADDON_ID@"
       name="@ADDON_NAME@"
       version="@ADDON_VERSION@"
       provider-name="@PROVIDER_NAME@">
  <requires>
    <import addon="xbmc.python" version="3.0.0"/>
@REQUIRES@
  </requires>
  <extension point="xbmc.python.script" library="default.py" />
  <extension point="xbmc.python.module" library="lib/">
  </extension>
  <extension point="xbmc.addon.metadata">
    <summary>@PKG_SHORTDESC@</summary>
    <description>
@PKG_LONGDESC@
    </description>
    <disclaimer>
@PKG_DISCLAIMER@
    </disclaimer>
    <platform>all</platform>
    <news>
@PKG_ADDON_NEWS@
    </news>
    <assets>
      <icon>resources/icon.png</icon>
      <fanart>resources/fanart.png</fanart>
@PKG_ADDON_SCREENSHOT@
    </assets>
  </extension>
</addon>


================================================
FILE: config/addon/xbmc.python.script.xml
================================================
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="@PKG_ADDON_ID@"
       name="@ADDON_NAME@"
       version="@ADDON_VERSION@"
       provider-name="@PROVIDER_NAME@">
  <requires>
    <import addon="xbmc.python" version="3.0.0"/>
@REQUIRES@
  </requires>
  <extension point="xbmc.python.script" library="default.py">
    <provides>@PKG_ADDON_PROVIDES@</provides>
  </extension>
  <extension point="xbmc.addon.metadata">
    <summary>@PKG_SHORTDESC@</summary>
    <description>
@PKG_LONGDESC@
    </description>
    <disclaimer>
@PKG_DISCLAIMER@
    </disclaimer>
    <platform>all</platform>
    <news>
@PKG_ADDON_NEWS@
    </news>
    <assets>
      <icon>resources/icon.png</icon>
      <fanart>resources/fanart.png</fanart>
@PKG_ADDON_SCREENSHOT@
    </assets>
  </extension>
</addon>


================================================
FILE: config/addon/xbmc.service.library.xml
================================================
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="@PKG_ADDON_ID@"
       name="@ADDON_NAME@"
       version="@ADDON_VERSION@"
       provider-name="@PROVIDER_NAME@">
  <requires>
    <import addon="xbmc.python" version="3.0.0"/>
@REQUIRES@
  </requires>
  <extension point="xbmc.service" library="default.py">
    <provides>@PKG_ADDON_PROVIDES@</provides>
  </extension>
  <extension point="xbmc.python.library" library="addon.py">
    <provides></provides>
  </extension>
  <extension point="xbmc.addon.metadata">
    <summary>@PKG_SHORTDESC@</summary>
    <description>
@PKG_LONGDESC@
    </description>
    <disclaimer>
@PKG_DISCLAIMER@
    </disclaimer>
    <platform>all</platform>
    <news>
@PKG_ADDON_NEWS@
    </news>
    <assets>
      <icon>resources/icon.png</icon>
      <fanart>resources/fanart.png</fanart>
@PKG_ADDON_SCREENSHOT@
    </assets>
  </extension>
</addon>


================================================
FILE: config/addon/xbmc.service.pluginsource.xml
================================================
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="@PKG_ADDON_ID@"
       name="@ADDON_NAME@"
       version="@ADDON_VERSION@"
       provider-name="@PROVIDER_NAME@">
  <requires>
    <import addon="xbmc.python" version="3.0.0"/>
@REQUIRES@
  </requires>
  <extension point="xbmc.python.pluginsource" library="addon.py">
    <provides>@PKG_ADDON_PROVIDES@</provides>
  </extension>
  <extension point="xbmc.service">
  </extension>
  <extension point="xbmc.addon.metadata">
    <summary>@PKG_SHORTDESC@</summary>
    <description>
@PKG_LONGDESC@
    </description>
    <disclaimer>
@PKG_DISCLAIMER@
    </disclaimer>
    <platform>all</platform>
    <news>
@PKG_ADDON_NEWS@
    </news>
    <assets>
      <icon>resources/icon.png</icon>
      <fanart>resources/fanart.png</fanart>
@PKG_ADDON_SCREENSHOT@
    </assets>
  </extension>
</addon>


================================================
FILE: config/addon/xbmc.service.xml
================================================
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="@PKG_ADDON_ID@"
       name="@ADDON_NAME@"
       version="@ADDON_VERSION@"
       provider-name="@PROVIDER_NAME@">
  <requires>
    <import addon="xbmc.python" version="3.0.0"/>
@REQUIRES@
  </requires>
  <extension point="xbmc.service" library="default.py">
    <provides>@PKG_ADDON_PROVIDES@</provides>
  </extension>
  <extension point="xbmc.addon.metadata">
    <summary>@PKG_SHORTDESC@</summary>
    <description>
@PKG_LONGDESC@
    </description>
    <disclaimer>
@PKG_DISCLAIMER@
    </disclaimer>
    <platform>all</platform>
    <news>
@PKG_ADDON_NEWS@
    </news>
    <assets>
      <icon>resources/icon.png</icon>
      <fanart>resources/fanart.png</fanart>
@PKG_ADDON_SCREENSHOT@
    </assets>
  </extension>
</addon>


================================================
FILE: config/arch.aarch64
================================================
# determines TARGET_CPU, if not forced by user
  if [ -z "$TARGET_CPU" ]; then
    TARGET_CPU=cortex-a53
  fi

  # 64bit userland and neon required by armv8
  if [ -z "${TARGET_FEATURES}" ]; then
    TARGET_FEATURES="64bit neon"
  else
    TARGET_FEATURES+=" 64bit neon"
  fi

# TARGET_CPU:
# generic cortex-a35 cortex-a53 cortex-a55 cortex-a57 cortex-a72 cortex-a76
# exynos-m1 qdf24xx thunderx xgene1 cortex-a57.cortex-a53
# cortex-a72.cortex-a53

# determine architecture's family
  case $TARGET_CPU in
    generic|cortex-a35|cortex-a53|cortex-a57|cortex-a72|exynos-m1|qdf24xx|thunderx|xgene1|cortex-a57.cortex-a53|cortex-a72.cortex-a53|cortex-a73.cortex-a53)
      TARGET_SUBARCH=aarch64
      TARGET_VARIANT=armv8-a
      TARGET_EXTRA_FLAGS="-mcpu=${TARGET_CPU}${TARGET_CPU_FLAGS}"
      ;;
    cortex-a76)
      TARGET_SUBARCH=aarch64
      TARGET_VARIANT=armv8.2-a
      ;;
  cortex-a55)
      TARGET_SUBARCH=aarch64
      TARGET_VARIANT=armv8.2-a
      TARGET_ABI=eabi
      TARGET_EXTRA_FLAGS="-mcpu=${TARGET_CPU}${TARGET_CPU_FLAGS}"
      TARGET_FEATURES+=" neon"
      ;;
  esac

  TARGET_GCC_ARCH=${TARGET_SUBARCH/-}
  TARGET_KERNEL_ARCH=arm64

# setup ARCH specific *FLAGS
  TARGET_CFLAGS="-march=${TARGET_VARIANT}${TARGET_CPU_FLAGS} -mabi=lp64 -Wno-psabi -mtune=$TARGET_CPU"
# Disable runtime checking support of ARMv8.0's optional LSE feature. Breaks gdb and mesa compile.
  TARGET_CFLAGS="${TARGET_CFLAGS} -mno-outline-atomics"
  TARGET_LDFLAGS=""
  TARGET_ARCH_GCC_OPTS="--with-abi=lp64 --with-arch=$TARGET_VARIANT"


================================================
FILE: config/arch.arm
================================================
# determines TARGET_CPU, if not forced by user
  if [ -z "$TARGET_CPU" ]; then
    TARGET_CPU=cortex-a8
  fi

  # 32bit userland
  if [ -z "${TARGET_FEATURES}" ]; then
    TARGET_FEATURES="32bit"
  else
    TARGET_FEATURES+=" 32bit"
  fi

# TARGET_CPU:
# arm2 arm250 arm3 arm6 arm60 arm600 arm610 arm620 arm7 arm7m arm7d
# arm7dm arm7di arm7dmi arm70 arm700 arm700i arm710 arm710c
# arm7100 arm720 arm7500 arm7500fe arm7tdmi arm7tdmi-s arm710t
# arm720t arm740t strongarm strongarm110 strongarm1100
# strongarm1110 arm8 arm810 arm9 arm9e arm920 arm920t arm922t
# arm946e-s arm966e-s arm968e-s arm926ej-s arm940t arm9tdmi
# arm10tdmi arm1020t arm1026ej-s arm10e arm1020e arm1022e
# arm1136j-s arm1136jf-s mpcore mpcorenovfp arm1156t2-s
# arm1176jz-s arm1176jzf-s cortex-a8 cortex-a9 cortex-r4
# cortex-r4f cortex-m3 cortex-m1 xscale iwmmxt iwmmxt2 ep9312.

# TARGET_FPU:
# This specifies what floating point hardware (or hardware emulation) is
# available on the target. Permissible names are:
# fpa fpe2 fpe3 maverick vfp vfpv3 vfpv3-fp16 vfpv3-d16 vfpv3-d16-fp16
# vfpv3xd vfpv3xd-fp16 neon neon-fp16 vfpv4 vfpv4-d16 fpv4-sp-d16
# neon-vfpv4.

# determine architecture's family
  case $TARGET_CPU in
    arm1176jzf-s)
      TARGET_SUBARCH=armv6zk
      TARGET_ABI=eabi
      TARGET_FPU_FLAGS="-mfloat-abi=$TARGET_FLOAT -mfpu=$TARGET_FPU"
      ;;
    cortex-a7|cortex-a15|cortex-a17|cortex-a15.cortex-a7|cortex-a17.cortex-a7)
      TARGET_SUBARCH=armv7ve
      TARGET_ABI=eabi
      TARGET_FPU_FLAGS="-mfloat-abi=$TARGET_FLOAT -mfpu=$TARGET_FPU"
      TARGET_FEATURES+=" neon"
      ;;
    cortex-a5|cortex-a8|cortex-a9)
      TARGET_SUBARCH=armv7-a
      TARGET_ABI=eabi
      TARGET_FPU_FLAGS="-mfloat-abi=$TARGET_FLOAT -mfpu=$TARGET_FPU"
      TARGET_FEATURES+=" neon"
      ;;
    cortex-a55|cortex-a53|cortex-a35|cortex-a72.cortex-a53)
      TARGET_SUBARCH=armv8-a
      TARGET_ABI=eabi
      TARGET_FPU_FLAGS="-mfloat-abi=$TARGET_FLOAT -mfpu=$TARGET_FPU"
      TARGET_FEATURES+=" neon"
      ;;
  esac

  if [ "${TARGET_FLOAT}" = "hard" ]; then
    TARGET_ABI+="hf"
  fi

  TARGET_VARIANT="${TARGET_SUBARCH}${TARGET_CPU_FLAGS}"
  TARGET_GCC_ARCH=${TARGET_SUBARCH/-}
  TARGET_KERNEL_ARCH=${TARGET_KERNEL_ARCH:-arm}

  if [ "${TARGET_KERNEL_ARCH}" = "arm64" ]; then
    TARGET_KERNEL_PATCH_ARCH="aarch64"
  fi

# setup ARCH specific *FLAGS
  TARGET_CFLAGS="-march=$TARGET_VARIANT -mtune=$TARGET_CPU -mabi=aapcs-linux -Wno-psabi -Wa,-mno-warn-deprecated"
  [ -n "$TARGET_FPU" ] && TARGET_CFLAGS="$TARGET_CFLAGS $TARGET_FPU_FLAGS"
  TARGET_LDFLAGS=""
  TARGET_ARCH_GCC_OPTS="--with-abi=aapcs-linux --with-arch=$TARGET_SUBARCH --with-float=$TARGET_FLOAT --with-fpu=$TARGET_FPU"


================================================
FILE: config/arch.x86_64
================================================
# determines TARGET_CPU, if not forced by user
  if [ -z "${TARGET_CPU}" ]; then
    TARGET_CPU="x86-64"
  fi

# determine architecture's family
  TARGET_SUBARCH="x86_64"

  TARGET_GCC_ARCH="${TARGET_SUBARCH/-/}"
  TARGET_KERNEL_ARCH="x86"

# setup ARCH specific *FLAGS
  TARGET_CFLAGS="-march=${TARGET_CPU}"
  TARGET_LDFLAGS=""

# build with microarchitecture feature support defined by the TARGET_CPU value
# see https://gitlab.com/x86-psABIs/x86-64-ABI/-/wikis/home for further details
  TARGET_FEATURES="64bit cmov cx8 fpu fxsr mmx osfxsr sce sse sse2"
  TARGET_FEATURES_X86_64_V2="cmpxchg16b lahf-sahf popcnt sse3 sse4_1 sse4_2 ssse3"
  TARGET_FEATURES_X86_64_V3="avx avx2 bmi1 bmi2 f16c fma lzcnt movbe osxsave"
  if [ "${TARGET_CPU}" = "x86-64" ]; then
    TARGET_FEATURES+=" no_sahf"
  elif [ "${TARGET_CPU}" = "x86-64-v2" ]; then
    TARGET_FEATURES+=" ${TARGET_FEATURES_X86_64_V2}"
  elif [ "${TARGET_CPU}" = "x86-64-v3" ]; then
    TARGET_FEATURES+=" ${TARGET_FEATURES_X86_64_V2} ${TARGET_FEATURES_X86_64_V3}"
  else
    TARGET_FEATURES+=" UNKNOWN_ADDITIONAL_CPU_SPECIFIC_FEATURES"
  fi
  TARGET_FEATURES="$(echo ${TARGET_FEATURES} | xargs -n1 | sort -u | xargs)"


================================================
FILE: config/docker/changelog.txt
================================================
100
- Initial addon


================================================
FILE: config/docker/package.mk
================================================
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)

PKG_NAME="@NAME@"
PKG_VERSION="@VERSION@" # Update bin/docker.@NAME@ accordingly
PKG_REV="100"
PKG_ARCH="@ARCH@"
PKG_DEPENDS_TARGET="toolchain"
PKG_SECTION="docker"
PKG_SITE=""
PKG_SHORTDESC=""
PKG_LONGDESC=""

PKG_IS_ADDON="yes"
PKG_ADDON_NAME=" (@IMAGE@:$PKG_VERSION)"
PKG_ADDON_PROJECTS="@PROJECTS@"
PKG_ADDON_REQUIRES="service.system.docker:0.0.0"
PKG_ADDON_TYPE="xbmc.service"

make_target() {
  : #
}

makeinstall_target() {
  : #
}

addon() {
  : #
}


================================================
FILE: config/docker/source/bin/docker
================================================
#!/bin/sh

# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)

name="$(basename $0)"
. /etc/profile
oe_setup_addon "$name"

docker rm "$name" 2>/dev/null
docker run --name="$name" \


================================================
FILE: config/docker/source/default.py
================================================
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)

import subprocess
import xbmc
import xbmcaddon


class Monitor(xbmc.Monitor):

   def __init__(self, *args, **kwargs):
      xbmc.Monitor.__init__(self)
      self.id = xbmcaddon.Addon().getAddonInfo('id')

   def onSettingsChanged(self):
      subprocess.call(['systemctl', 'restart', self.id])


if __name__ == '__main__':
   Monitor().waitForAbort()


================================================
FILE: config/docker/source/resources/language/English/strings.po
================================================
msgid ""
msgstr ""

msgctxt "#30000"
msgid "Configuration"
msgstr ""

msgctxt "#30001"
msgid "Note: Kodi remote sources can not be used as Docker volume host sources"
msgstr ""


================================================
FILE: config/docker/source/resources/settings.xml
================================================
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<settings>
   <category   label="30000">
      <setting label="30001" type="lsep" />
@SETTINGS@   </category>
</settings>


================================================
FILE: config/docker/source/system.d/docker.service
================================================
[Unit]
Description=%p container
Requires=service.system.docker.service
After=service.system.docker.service

[Service]
Restart=always
RestartSec=10s
TimeoutStartSec=0
ExecStart=/bin/sh /storage/.kodi/addons/%p/bin/%p
ExecStop=/storage/.kodi/addons/service.system.docker/bin/docker kill %p

[Install]
WantedBy=multi-user.target


================================================
FILE: config/functions
================================================
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)

### FUNCTION HELPERS ###
# die (message, code) abort with optional message and code
die() {
  if [ -n "$1" ]; then
    echo -e "$1" >&2
  fi
  exit "${2:-1}"
}

onexitcleanup() {
  [ $? -eq 0 ] && return

  local _BASH_COMMAND="${BASH_COMMAND}"
 
  if [ -n "${PKG_CURRENT_CALL}" ]; then
    print_color CLR_ERROR "FAILURE: $* during ${PKG_CURRENT_CALL} (${PKG_CURRENT_CALL_TYPE})"
    echo
  fi

  if [ -n "${_BASH_COMMAND}" ]; then
    if [[ ! ${_BASH_COMMAND} =~ ^exit\  ]] && [[ ! ${_BASH_COMMAND} =~ ^return\  ]]; then
      echo "*********** FAILED COMMAND ***********"
      echo "${_BASH_COMMAND}"
      echo "**************************************"
    fi
  fi
}
[ "${NOONEXIT}" != "yes" ] && trap "onexitcleanup $0 $@" EXIT

# return 0 if $2 in space-separated list $1, otherwise return 1
listcontains() {
  if [ -n "$1" -a -n "$2" ]; then
    [[ ${1} =~ (^|[[:space:]])${2}($|[[:space:]]) ]] && return 0 || return 1
  else
    return 1
  fi
}

# remove item(s) from list.
# looping makes it greedy (eg. listremoveitem "abc def ghi" "(abc|def)" removes both "abc" and "def").
listremoveitem() {
  local data="${1}" odata tmp_array
  if [ -n "$1" -a -n "$2" ]; then
    while [ : ]; do
      odata="${data}"
      data="$(echo "${data}" | sed -E "s (^|[[:space:]])${2}($|[[:space:]]) \  g")"
      [ "${odata}" = "${data}" ] && break
    done
  fi
  # Use array word splitting to squash spaces
  tmp_array=(${data})
  echo "${tmp_array[@]}"
}

print_color() {
  local clr_name="$1" clr_text="$2" clr_actual
  local black red green yellow blue magenta cyan white endcolor
  local boldblack boldred boldgreen boldyellow boldblue boldmagenta boldcyan boldwhite

  [ -z "${clr_name}" ] && return 0

  if [ "$DISABLE_COLORS" = "yes" ]; then
    [ $# -eq 2 ] && echo -en "${clr_text}"
    return 0
  fi

  black="\e[0;30m"
  boldblack="\e[1;30m"
  red="\e[0;31m"
  boldred="\e[1;31m"
  green="\e[0;32m"
  boldgreen="\e[1;32m"
  yellow="\e[0;33m"
  boldyellow="\e[1;33m"
  blue="\e[0;34m"
  boldblue="\e[1;34m"
  magenta="\e[0;35m"
  boldmagenta="\e[1;35m"
  cyan="\e[0;36m"
  boldcyan="\e[1;36m"
  white="\e[0;37m"
  boldwhite="\e[1;37m"
  endcolor="\e[0m"

  # $clr_name can be a color variable (boldgreen etc.) or a
  # "standard" color determined by an indirect name (CLR_ERROR etc.)
  #
  # If ${!clr_name} doesn't exist then assume it's a standard color.
  # If ${!clr_name} does exist then check it's not a custom color mapping.
  # Custom color mappings can be configured in options files.
  #
  clr_actual="${!clr_name}"

  if [ -n "${clr_actual}" ]; then
    clr_actual="${!clr_actual}"
  else
    case "${clr_name}" in
      CLR_ERROR)        clr_actual="${boldred}";;
      CLR_WARNING)      clr_actual="${boldred}";;
      CLR_WARNING_DIM)  clr_actual="${red}";;

      CLR_APPLY_PATCH)  clr_actual="${boldgreen}";;
      CLR_AUTORECONF)   clr_actual="${boldmagenta}";;
      CLR_BUILD)        clr_actual="${boldyellow}";;
      CLR_TOOLCHAIN)    clr_actual="${boldmagenta}";;
      CLR_CLEAN)        clr_actual="${boldred}";;
      CLR_FIXCONFIG)    clr_actual="${boldyellow}";;
      CLR_GET)          clr_actual="${boldcyan}";;
      CLR_INFO)         clr_actual="${boldgreen}";;
      CLR_INSTALL)      clr_actual="${boldgreen}";;
      CLR_PATCH_DESC)   clr_actual="${boldwhite}";;
      CLR_TARGET)       clr_actual="${boldwhite}";;
      CLR_UNPACK)       clr_actual="${boldcyan}";;
      CLR_AUTOREMOVE)   clr_actual="${boldblue}";;

      CLR_ENDCOLOR)     clr_actual="${endcolor}";;

      *)                clr_actual="${endcolor}";;
    esac
  fi

  if [ $# -eq 2 ]; then
    echo -en "${clr_actual}${clr_text}${endcolor}"
  else
    echo -en "${clr_actual}"
  fi
}

# print build progress messages
# param1: message color, p2: label, p3: text, p4: indent (optional)
build_msg() {
  local spaces

  [ -n "${BUILD_INDENT}" ] && spaces="$(printf "%${BUILD_INDENT}c" " ")" || spaces=""

  if [ -n "${3}" ]; then
    echo -e "${spaces}$(print_color "${1}" "${2}")      ${3}" >&${SILENT_OUT}
  else
    echo -e "${spaces}$(print_color "${1}" "${2}")" >&${SILENT_OUT}
  fi

  # pad left space to create "indent" effect
  if [ "${4}" = "indent" ]; then
    export BUILD_INDENT=$((${BUILD_INDENT:-0}+${BUILD_INDENT_SIZE}))
  elif [ -n "${4}" ]; then
    die "ERROR: ${0} unexpected parameter: ${4}"
  fi
}

print_qa_checks() {
[[ -d "${BUILD}/qa_checks" ]] || mkdir -p "${BUILD}/qa_checks"
  if [ -n "${PKG_NAME}" ]; then
    if [ -d "${PKG_QA_CHECKS}" ]; then
      for qa_check in ${PKG_QA_CHECKS}/*; do
        print_color CLR_WARNING "[QA CHECK] [${PKG_NAME}] [$(basename ${qa_check})]:\n$(cat ${qa_check})\n\n"
      done
    fi
  fi
}

log_qa_check() {
  local qa_check_title="${1}"
  local qa_check_message="${2}"

  if [ -n "${qa_check_title}" -a -n "${qa_check_message}" ]; then
    if [ -n "${PKG_NAME}" ]; then
      print_color CLR_WARNING "[QA CHECK] [${PKG_NAME}] [${qa_check_title}]:\n${qa_check_message}\n"
      mkdir -p "${PKG_QA_CHECKS}"
      echo -e "${qa_check_message}" >> ${PKG_QA_CHECKS}/${qa_check_title}
    else
      print_color CLR_WARNING "[QA CHECK] [general] [${qa_check_title}]:\n${qa_check_message}\n"
      mkdir -p "${BUILD}/qa_checks/general"
      echo -e "${qa_check_message}" >> ${BUILD}/qa_checks/general/${qa_check_title}
    fi
  fi
}

# prints a warning if the file slated for removal doesn't exist
# this allows us to continue instead of bailing out with just "rm"
safe_remove() {
  local path

  for path in "$@" ; do
    if [ -e "${path}" -o -L "${path}" ]; then
      rm -r "${path}"
    else
     log_qa_check "safe_remove" "path does not exist: ${path}"
    fi
  done
}

### BUILDSYSTEM HELPERS ###
# check if a flag is enabled
# $1: flag-name, $2: default (yes/no), $3: ingenious check (none,only-disable,only-enable)
# return 0 if flag is enabled, otherwise 1
flag_enabled() {
  # check flag
  if [ -n "${PKG_BUILD_FLAGS}" ] && listcontains "${PKG_BUILD_FLAGS}" "[+]?$1"; then
    if [ "${3:none}" = "only-disable" ]; then
      die "ERROR: $1 cannot enable via PKG_BUILD_FLAGS (found in $PKG_NAME)"
    fi
    return 0
  elif [ "$2" = "yes" ] && ! listcontains "${PKG_BUILD_FLAGS}" "-$1"; then
    return 0
  else
    if [ "${3:none}" = "only-enable" ]; then
      die "ERROR: $1 cannot disable via PKG_BUILD_FLAGS (found in $PKG_NAME)"
    fi
    return 1
  fi
}

setup_pkg_config_target() {
  export PKG_CONFIG="$TOOLCHAIN/bin/pkg-config"
  export PKG_CONFIG_PATH=""
  export PKG_CONFIG_LIBDIR="$SYSROOT_PREFIX/usr/lib/pkgconfig:$SYSROOT_PREFIX/usr/share/pkgconfig"
  export PKG_CONFIG_SYSROOT_BASE="$BUILD"
  export PKG_CONFIG_SYSROOT_DIR="$SYSROOT_PREFIX"
  export PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1
  export PKG_CONFIG_ALLOW_SYSTEM_LIBS=1
}

setup_pkg_config_host() {
  export PKG_CONFIG="$TOOLCHAIN/bin/pkg-config"
  export PKG_CONFIG_PATH=""
  export PKG_CONFIG_LIBDIR="$TOOLCHAIN/lib/pkgconfig:$TOOLCHAIN/share/pkgconfig"
  export PKG_CONFIG_SYSROOT_BASE=""
  export PKG_CONFIG_SYSROOT_DIR=""
  unset PKG_CONFIG_ALLOW_SYSTEM_CFLAGS
  unset PKG_CONFIG_ALLOW_SYSTEM_LIBS
}

check_toolchain_config() {
  local target=${1^^}
  local toolchain=${2^^}
  local var
  if [ "${toolchain}" == "AUTOTOOLS" ]; then
    toolchain="CONFIGURE"
  fi
  if [ "${toolchain}" == "CMAKE-MAKE" ]; then
    toolchain="CMAKE"
  fi
  for var in "${!PKG_@}"; do
    if [[ "${var}" =~ INSTALL_OPTS_ || "${var}" =~ _MAKE_OPTS || "${var}" =~ _TAR_COPY_OPTS ]]; then
      continue
    fi
    if [[ "${var}" =~ _OPTS_${target}$ \
            && ! "${var}" =~ _${toolchain}_OPTS_${target}$
          || "${var}" =~ _OPTS$ && ! "${var}" =~ _${toolchain}_OPTS$ ]]; then
      die "ERROR: using $2 toolchain but ${var} is configured."
    fi
  done
}

# args: linker, default availability yes/no
linker_allowed() {
  if flag_enabled "$1" "$2"; then
    # bfd is always available, others need to be enabled with <LINKER>_SUPPORT="yes"
    local linker_support="${1^^}_SUPPORT"
    if [ "$1" = "bfd" ] || [ "${!linker_support}" = "yes" ]; then
      return 0
    fi
  fi
  return 1
}

# return target linker to use for a package
get_target_linker() {
  # all known linkers, in descending order of priority
  # those are candidates for explicit opt-in via PKG_BUILD_FLAGS
  local all_linkers="mold gold bfd"

  # linkers to choose from unless disabled via PKG_BUILD_FLAGS
  local linker_candidates="${DEFAULT_LINKER:-bfd} ${all_linkers}"

  local linker

  # check if package prefers a specific linker
  for linker in ${all_linkers}; do
    if linker_allowed "${linker}" "no"; then
      echo "${linker}"
      return
    fi
  done

  # select linker which isn't disabled by PKG_BUILD_FLAGS
  for linker in ${linker_candidates}; do
    if linker_allowed "${linker}" "yes"; then
      echo "${linker}"
      return
    fi
  done

  # none of our linkers matched, use the compiler's default linker
  echo "compiler_default"
}

setup_toolchain() {
  if [ "$LTO_SUPPORT" = "yes" ]; then
    if flag_enabled "lto-parallel" "no"; then
      TARGET_CFLAGS+=" $FLAGS_OPTIM_LTO_PARALLEL $FLAGS_OPTIM_LTO_NO_FAT"
      TARGET_CXXFLAGS+=" $FLAGS_OPTIM_LTO_PARALLEL $FLAGS_OPTIM_LTO_NO_FAT"
      TARGET_LDFLAGS+=" $LDFLAGS_OPTIM_LTO_COMMON $FLAGS_OPTIM_LTO_PARALLEL"
    elif flag_enabled "lto-fat" "no"; then
      TARGET_CFLAGS+=" $FLAGS_OPTIM_LTO_NO_PARALLEL $FLAGS_OPTIM_LTO_FAT"
      TARGET_CXXFLAGS+=" $FLAGS_OPTIM_LTO_NO_PARALLEL $FLAGS_OPTIM_LTO_FAT"
      TARGET_LDFLAGS+=" $LDFLAGS_OPTIM_LTO_COMMON $FLAGS_OPTIM_LTO_NO_PARALLEL"
    elif flag_enabled "lto" "no"; then
      TARGET_CFLAGS+=" $FLAGS_OPTIM_LTO_NO_PARALLEL $FLAGS_OPTIM_LTO_NO_FAT"
      TARGET_CXXFLAGS+=" $FLAGS_OPTIM_LTO_NO_PARALLEL $FLAGS_OPTIM_LTO_NO_FAT"
      TARGET_LDFLAGS+=" $LDFLAGS_OPTIM_LTO_COMMON $FLAGS_OPTIM_LTO_NO_PARALLEL"
    fi
  fi

  if flag_enabled "lto-off" "no"; then
    TARGET_CFLAGS+=" $FLAGS_OPTIM_LTO_OFF"
    TARGET_CXXFLAGS+=" $FLAGS_OPTIM_LTO_OFF"
    TARGET_LDFLAGS+=" $FLAGS_OPTIM_LTO_OFF"
  fi

  local linker="$(get_target_linker)"
  local linker_opts="LDFLAGS_OPTIM_LINKER_${linker^^}"

  TARGET_LDFLAGS+=" ${!linker_opts}"

  # compiler optimization, descending priority: speed, size, default
  if [ "${BUILD_WITH_DEBUG}" = "yes" ]; then
    if [ "${SPLIT_DEBUG_INFO}" = "yes" -a "${linker}" = "gold" ]; then
      TARGET_CFLAGS+=" $CFLAGS_OPTIM_DEBUG_SPLIT"
      TARGET_CXXFLAGS+=" $CXXFLAGS_OPTIM_DEBUG_SPLIT"
      TARGET_LDFLAGS+=" $LDFLAGS_OPTIM_DEBUG_SPLIT"
    else
      TARGET_CFLAGS+=" $CFLAGS_OPTIM_DEBUG"
      TARGET_CXXFLAGS+=" $CXXFLAGS_OPTIM_DEBUG"
      TARGET_LDFLAGS+=" $LDFLAGS_OPTIM_DEBUG"
    fi
  elif flag_enabled "speed" "no"; then
    TARGET_CFLAGS+=" $CFLAGS_OPTIM_SPEED"
    TARGET_CXXFLAGS+=" $CXXFLAGS_OPTIM_SPEED"
  elif flag_enabled "size" "no"; then
    TARGET_CFLAGS+=" $CFLAGS_OPTIM_SIZE"
    TARGET_CXXFLAGS+=" $CXXFLAGS_OPTIM_SIZE"
  else
    TARGET_CFLAGS+=" $CFLAGS_OPTIM_DEFAULT"
    TARGET_CXXFLAGS+=" $CXXFLAGS_OPTIM_DEFAULT"
  fi

  # position-independent code
  if flag_enabled "pic" "no"; then
    TARGET_CFLAGS+=" $CFLAGS_OPTIM_PIC"
    TARGET_CXXFLAGS+=" $CXXFLAGS_OPTIM_PIC"
    TARGET_LDFLAGS+=" $LDFLAGS_OPTIM_PIC"
  fi
  if flag_enabled "pic:host" "no"; then
    HOST_CFLAGS+=" $CFLAGS_OPTIM_PIC"
    HOST_CXXFLAGS+=" $CXXFLAGS_OPTIM_PIC"
    HOST_LDFLAGS+=" $LDFLAGS_OPTIM_PIC"
  fi

  # hardening support
  if flag_enabled "hardening" "$HARDENING_SUPPORT"; then
    TARGET_CFLAGS+=" $CFLAGS_OPTIM_HARDENING"
    TARGET_CXXFLAGS+=" $CXXFLAGS_OPTIM_HARDENING"
    TARGET_CFLAGS+=" $CPPFLAGS_OPTIM_HARDENING"
    TARGET_LDFLAGS+=" $LDFLAGS_OPTIM_HARDENING"
  fi

  # parallel
  if flag_enabled "parallel" "yes"; then
    NINJA_OPTS="-j$CONCURRENCY_MAKE_LEVEL"
    MAKEFLAGS="-j$CONCURRENCY_MAKE_LEVEL"
  else
    NINJA_OPTS="-j1"
    MAKEFLAGS="-j1"
  fi

  # verbose flag
  if flag_enabled "verbose" "no"; then
    NINJA_OPTS+=" -v"
    MAKEFLAGS+=" V=1 VERBOSE=1"
  fi

  # average load limit
  if [ "${CONCURRENCY_LOAD}" != "0" ]; then
    NINJA_OPTS+=" -l${CONCURRENCY_LOAD}"
    MAKEFLAGS+=" -l${CONCURRENCY_LOAD}"
  fi
  export MAKEFLAGS

  case "$1:$2" in
    target:meson|init:meson)
      export DESTIMAGE="target"
      export AWK="gawk"
      export CC="$TOOLCHAIN/bin/host-gcc"
      export CXX="$TOOLCHAIN/bin/host-g++"
      export CPP="cpp"
      export LD="ld"
      export AS="as"
      export AR="ar"
      export NM="nm"
      export RANLIB="ranlib"
      export OBJCOPY="objcopy"
      export OBJDUMP="objdump"
      export STRIP="strip"
      export CPPFLAGS="$HOST_CPPFLAGS"
      export CFLAGS="$HOST_CFLAGS"
      export CXXFLAGS="$HOST_CXXFLAGS"
      export LDFLAGS="$HOST_LDFLAGS"
      setup_pkg_config_target
      export TARGET_CC="${TARGET_PREFIX}gcc"
      export TARGET_CXX="${TARGET_PREFIX}g++"
      export TARGET_AR="${TARGET_PREFIX}ar"
      export TARGET_STRIP="${TARGET_PREFIX}strip"
      export TARGET_CFLAGS="$TARGET_CFLAGS"
      export TARGET_CXXFLAGS="$TARGET_CXXFLAGS"
      export TARGET_LDFLAGS="$TARGET_LDFLAGS"
      export HOST_CC="$CC"
      export HOST_CXX="$CXX"
      export HOSTCC="$CC"
      export HOSTCXX="$CXX"
      export CC_FOR_BUILD="$CC"
      export CXX_FOR_BUILD="$CXX"
      export BUILD_CC="$CC"
      export BUILD_CXX="$CXX"
      export _python_sysroot="$SYSROOT_PREFIX"
      export _python_prefix=/usr
      export _python_exec_prefix=/usr
      ;;

    target:*|init:*)
      export DESTIMAGE="target"
      export CC="${TARGET_PREFIX}gcc"
      export CXX="${TARGET_PREFIX}g++"
      export CPP="${TARGET_PREFIX}cpp"
      export LD="${TARGET_PREFIX}ld"
      export AS="${TARGET_PREFIX}as"
      export AR="${TARGET_PREFIX}ar"
      export NM="${TARGET_PREFIX}nm"
      export RANLIB="${TARGET_PREFIX}ranlib"
      export OBJCOPY="${TARGET_PREFIX}objcopy"
      export OBJDUMP="${TARGET_PREFIX}objdump"
      export STRIP="${TARGET_PREFIX}strip"
      export CPPFLAGS="$TARGET_CPPFLAGS"
      export CFLAGS="$TARGET_CFLAGS"
      export CXXFLAGS="$TARGET_CXXFLAGS"
      export LDFLAGS="$TARGET_LDFLAGS"
      setup_pkg_config_target
      export CMAKE_CONF=$TOOLCHAIN/etc/cmake-$TARGET_NAME.conf
      export CMAKE="cmake -DCMAKE_TOOLCHAIN_FILE=$CMAKE_CONF -DCMAKE_INSTALL_PREFIX=/usr"
      if [ ! -f $CMAKE_CONF ] ; then
        mkdir -p $TOOLCHAIN/etc
        echo "SET(CMAKE_SYSTEM_NAME Linux)" >> $CMAKE_CONF
        echo "SET(CMAKE_SYSTEM_VERSION 1)"  >> $CMAKE_CONF
        echo "SET(CMAKE_SYSTEM_PROCESSOR  $TARGET_ARCH)" >> $CMAKE_CONF
        echo "SET(CMAKE_C_COMPILER   $CC)"  >> $CMAKE_CONF
        echo "SET(CMAKE_CXX_COMPILER $CXX)" >> $CMAKE_CONF
        echo "SET(CMAKE_CPP_COMPILER $CPP)" >> $CMAKE_CONF
        echo "SET(CMAKE_ASM_FLAGS_MINSIZEREL -DDUMMYOPT)" >> $CMAKE_CONF
        echo "SET(CMAKE_CXX_FLAGS_MINSIZEREL -DDUMMYOPT)" >> $CMAKE_CONF
        echo "SET(CMAKE_C_FLAGS_MINSIZEREL -DDUMMYOPT)" >> $CMAKE_CONF
        echo "SET(CMAKE_FIND_ROOT_PATH  $SYSROOT_PREFIX)"   >> $CMAKE_CONF
        echo "SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)" >> $CMAKE_CONF
        echo "SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)"  >> $CMAKE_CONF
        echo "SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)"  >> $CMAKE_CONF
        echo "SET(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)"  >> $CMAKE_CONF
        if [ "${DISPLAYSERVER}" = "x11" ]; then
          if [ "${OPENGL}" = "mesa" ] || listcontains "${GRAPHIC_DRIVERS}" "nvidia"; then
            echo "SET(OpenGL_GL_PREFERENCE GLVND)" >> $CMAKE_CONF
          fi
        fi
      fi
      export HOST_CC="$TOOLCHAIN/bin/host-gcc"
      export HOST_CXX="$TOOLCHAIN/bin/host-g++"
      export HOSTCC="$HOST_CC"
      export HOSTCXX="$HOST_CXX"
      export CC_FOR_BUILD="$HOST_CC"
      export CXX_FOR_BUILD="$HOST_CXX"
      export BUILD_CC="$HOST_CC"
      export BUILD_CXX="$HOST_CXX"
      export _python_sysroot="$SYSROOT_PREFIX"
      export _python_prefix=/usr
      export _python_exec_prefix=/usr

      # rust
      export CARGO_TARGET_DIR="${PKG_BUILD}/.${TARGET_NAME}/target"
      export CARGO_HOME="$(get_build_dir rust)/cargo_home"
      export RUST_TARGET_PATH="${TOOLCHAIN}/lib/rustlib/"

      ;;
    host:*|bootstrap:*)
      export DESTIMAGE="host"
      export AWK="gawk"
      if [ "$1" = "host" ] && flag_enabled "local-cc" "no"; then
        export CC="${LOCAL_CC}"
        export CXX="${LOCAL_CXX}"
        if [ -n "${LOCAL_CCACHE}" ]; then
          export CCACHE_DIR="${LOCAL_CCACHE_DIR}"
          export CC="${LOCAL_CCACHE} ${CC}";
          export CXX="${LOCAL_CCACHE} ${CXX}";
        fi
      else
        export CC="$TOOLCHAIN/bin/host-gcc"
        export CXX="$TOOLCHAIN/bin/host-g++"
      fi
      export CPP="cpp"
      export LD="ld"
      export AS="as"
      export AR="ar"
      export NM="nm"
      export RANLIB="ranlib"
      export OBJCOPY="objcopy"
      export OBJDUMP="objdump"
      export STRIP="strip"
      export CPPFLAGS="$HOST_CPPFLAGS"
      export CFLAGS="$HOST_CFLAGS"
      export CXXFLAGS="$HOST_CXXFLAGS"
      export LDFLAGS="$HOST_LDFLAGS"
      setup_pkg_config_host
      export CMAKE_CONF=$TOOLCHAIN/etc/cmake-$HOST_NAME.conf
      export CMAKE="cmake -DCMAKE_TOOLCHAIN_FILE=$CMAKE_CONF -DCMAKE_INSTALL_PREFIX=$TOOLCHAIN"
      if [ ! -f $CMAKE_CONF ] ; then
        mkdir -p $TOOLCHAIN/etc
        echo "SET(CMAKE_SYSTEM_NAME Linux)" >> $CMAKE_CONF
        echo "SET(CMAKE_SYSTEM_VERSION 1)"  >> $CMAKE_CONF
        echo "SET(CMAKE_SYSTEM_PROCESSOR ${MACHINE_HARDWARE_NAME})" >> $CMAKE_CONF
        echo "SET(CMAKE_C_COMPILER   $CC)"  >> $CMAKE_CONF
        echo "SET(CMAKE_CXX_COMPILER $CXX)" >> $CMAKE_CONF
        echo "SET(CMAKE_CPP_COMPILER $CXX)" >> $CMAKE_CONF
        echo "SET(CMAKE_ASM_FLAGS_RELEASE -DDUMMYOPT)" >> $CMAKE_CONF
        echo "SET(CMAKE_CXX_FLAGS_RELEASE -DDUMMYOPT)" >> $CMAKE_CONF
        echo "SET(CMAKE_C_FLAGS_RELEASE -DDUMMYOPT)" >> $CMAKE_CONF
        echo "SET(CMAKE_AR $AR CACHE FILEPATH "Archiver")" >> $CMAKE_CONF # hum?
        echo "SET(CMAKE_FIND_ROOT_PATH  $TOOLCHAIN)" >> $CMAKE_CONF
        echo "SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM BOTH)" >> $CMAKE_CONF
        echo "SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH)" >> $CMAKE_CONF
        echo "SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH)" >> $CMAKE_CONF
        echo "SET(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE BOTH)" >> $CMAKE_CONF
      fi
      export HOST_CC="$CC"
      export HOST_CXX="$CXX"
      export HOSTCC="$CC"
      export HOSTCXX="$CXX"
      export CC_FOR_BUILD="$CC"
      export CXX_FOR_BUILD="$CXX"
      export BUILD_CC="$CC"
      export BUILD_CXX="$CXX"
      export _python_sysroot="$TOOLCHAIN"
      export _python_prefix=/
      export _python_exec_prefix=/

      # rust
      case "${MACHINE_HARDWARE_NAME}" in
        "arm")
          RUST_HOST="arm-unknown-linux-gnueabihf"
          ;;
        "aarch64")
          RUST_HOST="aarch64-unknown-linux-gnu"
          ;;
        "x86_64")
          RUST_HOST="x86_64-unknown-linux-gnu"
          ;;
      esac

      export CARGO_TARGET_DIR="${PKG_BUILD}/.${RUST_HOST}/target"
      export CARGO_HOME="$(get_build_dir rust)/cargo_home"
      export RUST_TARGET_PATH="${TOOLCHAIN}/lib/rustlib/"
      ;;
  esac
}

create_meson_conf_host() {
  local properties
  properties="PKG_MESON_PROPERTIES_${1^^}"

  cat > $2 <<EOF
[binaries]
c = '$CC'
cpp = '$CXX'
ar = '$AR'
strip = '$STRIP'
pkgconfig = '$PKG_CONFIG'
llvm-config = '$TOOLCHAIN/bin/llvm-config'
libgcrypt-config = '$SYSROOT_PREFIX/usr/bin/libgcrypt-config'

[build_machine]
system = 'linux'
cpu_family = '${MACHINE_HARDWARE_NAME}'
cpu = '${MACHINE_HARDWARE_NAME}'
endian = 'little'

[host_machine]
system = 'linux'
cpu_family = '${MACHINE_HARDWARE_NAME}'
cpu = '${MACHINE_HARDWARE_NAME}'
endian = 'little'

[built-in options]
$(python3 -c "import os; print('c_args = {}'.format([x for x in os.getenv('CFLAGS').split()]))")
$(python3 -c "import os; print('c_link_args = {}'.format([x for x in os.getenv('LDFLAGS').split()]))")
$(python3 -c "import os; print('cpp_args = {}'.format([x for x in os.getenv('CXXFLAGS').split()]))")
$(python3 -c "import os; print('cpp_link_args = {}'.format([x for x in os.getenv('LDFLAGS').split()]))")

[properties]
root = '$TOOLCHAIN'
${!properties}
EOF
}

create_meson_conf_target() {
  local properties
  properties="PKG_MESON_PROPERTIES_${1^^}"

  cat > $2 <<EOF
[binaries]
c = '$TARGET_CC'
cpp = '$TARGET_CXX'
ar = '$TARGET_AR'
strip = '$TARGET_STRIP'
pkgconfig = '$PKG_CONFIG'
llvm-config = '$SYSROOT_PREFIX/usr/bin/llvm-config'
libgcrypt-config = '$SYSROOT_PREFIX/usr/bin/libgcrypt-config'

[build_machine]
system = 'linux'
cpu_family = '${MACHINE_HARDWARE_NAME}'
cpu = '${MACHINE_HARDWARE_NAME}'
endian = 'little'

[host_machine]
system = 'linux'
cpu_family = '$TARGET_ARCH'
cpu = '$TARGET_SUBARCH'
endian = 'little'

[built-in options]
$(python3 -c "import os; print('c_args = {}'.format([x for x in os.getenv('TARGET_CFLAGS').split()]))")
$(python3 -c "import os; print('c_link_args = {}'.format([x for x in os.getenv('TARGET_LDFLAGS').split()]))")
$(python3 -c "import os; print('cpp_args = {}'.format([x for x in os.getenv('TARGET_CXXFLAGS').split()]))")
$(python3 -c "import os; print('cpp_link_args = {}'.format([x for x in os.getenv('TARGET_LDFLAGS').split()]))")

[properties]
needs_exe_wrapper = true
root = '$SYSROOT_PREFIX/usr'
${!properties}
EOF
}


# unset all PKG_* vars apart from those exported by setup_toolchain, then set default values
reset_pkg_vars() {
  local vars var

  for var in ${!PKG_*}; do
    if [ "${var}" = "PKG_CONFIG" ] || \
       [ "${var}" = "PKG_CONFIG_PATH" ] || \
       [ "${var}" = "PKG_CONFIG_LIBDIR" ] || \
       [ "${var}" = "PKG_CONFIG_SYSROOT_BASE" ] || \
       [ "${var}" = "PKG_CONFIG_SYSROOT_DIR" ] || \
       [ "${var}" = "PKG_CONFIG_ALLOW_SYSTEM_CFLAGS" ] || \
       [ "${var}" = "PKG_CONFIG_ALLOW_SYSTEM_LIBS" ]; then
       continue
    fi
    vars+="${var} "
  done
  [ -n "${vars}" ] && unset -v ${vars}

  PKG_VERSION="0.0invalid"
  PKG_REV="0"
  PKG_ARCH="any"
  PKG_LICENSE="unknown"
  PKG_TOOLCHAIN="auto"
  PKG_IS_ADDON="no"
  PKG_PYTHON_VERSION="${DEFAULT_PYTHON_VERSION}"
}

set_debug_depends() {
  local pkg dep_pkg map tmp_array mpkg bpkg kvpair

  _DEBUG_DEPENDS_LIST=""
  _DEBUG_PACKAGE_LIST=""
  if [ "${DEBUG:-no}" != "no" ]; then
    # Convert DEBUG_GROUPS into array of groups, adding "all" if required
    declare -A debug_group_map
    for kvpair in ${DEBUG_GROUPS}; do
      debug_group_map+=(["${kvpair%=*}"]="${kvpair#*=}")
    done
    [ -z "${debug_group_map["all"]}" ] && debug_group_map+=(["all"]="all")

    # Expand $DEBUG into $_DEBUG_PACKAGE_LIST
    for pkg in ${DEBUG//,/ }; do
      [ "${pkg}" = "yes" ] && pkg="${DEBUG_GROUP_YES:-all}"
      map="${debug_group_map["${pkg}"]}"
      [ -z "${map}" ] && map="${pkg}"
      for mpkg in ${map//,/ }; do
        [[ ${mpkg} =~ ^[!-] ]] && bpkg="${mpkg:1}" || bpkg="${mpkg}"
        [[ ${bpkg} =~ \+$ ]] && bpkg="${bpkg::-1}"
        # Remove existing instances of this package
        listcontains "${_DEBUG_PACKAGE_LIST}" "[!-]?${bpkg}[+]?" && _DEBUG_PACKAGE_LIST="$(listremoveitem "${_DEBUG_PACKAGE_LIST}" "[!-]?${bpkg}[+]?")"
        # Add package
        _DEBUG_PACKAGE_LIST+=" ${mpkg}"
      done
    done
    # Use array word splitting to squash spaces
    tmp_array=(${_DEBUG_PACKAGE_LIST})
    _DEBUG_PACKAGE_LIST="${tmp_array[@]}"

    # Determine dependencies for each package+
    for pkg in ${_DEBUG_PACKAGE_LIST}; do
      if [ "${pkg}" != "all" ] && [[ ! ${pkg} =~ ^[!-] ]]; then
        ! listcontains "${_DEBUG_DEPENDS_LIST}" "${pkg}" && _DEBUG_DEPENDS_LIST+=" ${pkg}"
        [[ ! ${pkg} =~ \+$ ]] && continue
        for dep_pkg in $(get_pkg_variable ${pkg::-1} PKG_DEPENDS_TARGET); do
          [ "${dep_pkg}" = "toolchain" ] && continue
          [[ ${dep_pkg} =~ ^.*:host$ ]] && continue
          ! listcontains "${_DEBUG_DEPENDS_LIST}" "${dep_pkg}" && _DEBUG_DEPENDS_LIST+=" ${dep_pkg}"
        done
      fi
    done
    tmp_array=(${_DEBUG_DEPENDS_LIST})
    _DEBUG_DEPENDS_LIST="${tmp_array[@]}"
  fi
  export _DEBUG_DEPENDS_LIST _DEBUG_PACKAGE_LIST
}

# Return 0 if building with debug is enabled for the current package (or all packages).
# Examples: DEBUG=yes  DEBUG=all  DEBUG='all,!linux'  DEBUG=kodi  DEBUG=kodi,samba
build_with_debug() {
  if [ "${DEBUG:-no}" != "no" -a -n "${PKG_NAME}" -a -n "${_DEBUG_DEPENDS_LIST+x}" ]; then
    # Return 1 if this package is not to be built with debug
    listcontains "${_DEBUG_PACKAGE_LIST}" "[!-]${PKG_NAME}[+]?" && return 1

    # Build all packages with debug
    listcontains "${_DEBUG_PACKAGE_LIST}" "all" && return 0

    # Debugging is enabled for at least one package, so enable debug in the "debug" virtual package
    [ "${PKG_NAME}" = "debug" ] && return 0

    # Build addons with debug if we're building the mediacenter with debug and with dependencies
    [ "${PKG_IS_ADDON}" = "yes" -o "${PKG_IS_ADDON}" = "embedded" ] && listcontains "${_DEBUG_DEPENDS_LIST}" "${MEDIACENTER}\+" && return 0

    # Build kernel packages with debug if we're building the kernel with debug and with dependencies
    [ "${PKG_IS_KERNEL_PKG}" = "yes" ] && listcontains "${_DEBUG_DEPENDS_LIST}" "linux\+" && return 0

    # Build this package with debug if it's a resolved dependency
    listcontains "${_DEBUG_DEPENDS_LIST}" "${PKG_NAME}[+]?" && return 0
  fi

  return 1
}

# strip
debug_strip() {
  if [ -z "${BUILD_WITH_DEBUG}" ]; then
    die "ERROR: debug_strip() must not be called without configuring BUILD_WITH_DEBUG"
  fi

  if [ "${BUILD_WITH_DEBUG}" != "yes" ] && flag_enabled "strip" "yes"; then
    find $* -type f -executable | xargs $STRIP 2>/dev/null || :
  fi
}

init_package_cache() {
  local _ANCHOR="@?+?@"
  local temp_global temp_local

  # If the package caches are unset, then populate them
  if [ -z "${_CACHE_PACKAGE_LOCAL}" -o -z "${_CACHE_PACKAGE_GLOBAL}" -o -z "${_CACHE_PACKAGE_LOCAL_DEVICE}" ]; then
    temp_global="$(mktemp)"
    temp_local="$(mktemp)"
    temp_local_device="$(mktemp)"

    # cache project/device folder for packages
    if [ -n "${DEVICE}" ]; then
      find "${ROOT}/projects/${PROJECT}/devices/${DEVICE}/packages" -type f -name package.mk 2>/dev/null | sed "s#/package\.mk\$#${_ANCHOR}#" >> "${temp_local_device}"
    fi

    # cache project folder for packages
    find "${ROOT}/projects/${PROJECT}/packages" -type f -name package.mk 2>/dev/null | sed "s#/package\.mk\$#${_ANCHOR}#" >> "${temp_local}"

    # cache packages folder
    find "${ROOT}/${PACKAGES}" -type f -name package.mk 2>/dev/null | sed "s#/package\.mk\$#${_ANCHOR}#" >> "${temp_global}"

    _CACHE_PACKAGE_LOCAL="${BUILD}/.cache_package_local"
    _CACHE_PACKAGE_LOCAL_DEVICE="${BUILD}/.cache_package_local_device"
    _CACHE_PACKAGE_GLOBAL="${BUILD}/.cache_package_global"
    export _CACHE_PACKAGE_LOCAL _CACHE_PACKAGE_GLOBAL _CACHE_PACKAGE_LOCAL_DEVICE

    # overwrite existing cache files only when they are invalid, or not yet created
    mkdir -p "${_CACHE_PACKAGE_GLOBAL%/*}"
    if [ -f "${_CACHE_PACKAGE_LOCAL_DEVICE}" ] && cmp -s "${temp_local_device}" "${_CACHE_PACKAGE_LOCAL_DEVICE}"; then
      rm "${temp_local_device}"
    else
      mv "${temp_local_device}" "${_CACHE_PACKAGE_LOCAL_DEVICE}"
    fi
    if [ -f "${_CACHE_PACKAGE_LOCAL}" ] && cmp -s "${temp_local}" "${_CACHE_PACKAGE_LOCAL}"; then
      rm "${temp_local}"
    else
      mv "${temp_local}" "${_CACHE_PACKAGE_LOCAL}"
    fi
    if [ -f "${_CACHE_PACKAGE_GLOBAL}" ] && cmp -s "${temp_global}" "${_CACHE_PACKAGE_GLOBAL}"; then
      rm "${temp_global}"
    else
      mv "${temp_global}" "${_CACHE_PACKAGE_GLOBAL}"
    fi
  fi

  if [ -z "${_DEBUG_DEPENDS_LIST+x}" ]; then
    set_debug_depends
  fi
}

load_build_config() {
  if [ -d "${1}" -a -f ${1}/.build.conf ]; then
    source ${1}/.build.conf
    return 0
  fi
  return 1
}

save_build_config() {
  local var
  mkdir -p ${BUILD}
  rm -f ${BUILD}/.build.conf
  for var in PROJECT DEVICE ARCH DEBUG BUILD_SUFFIX; do
    echo "export ${var}=\"${!var}\"" >> ${BUILD}/.build.conf
  done
}

check_path() {
  local dashes="===========================" path_err_msg
  if [ "${PWD##/usr}" != "${PWD}" ]; then
    path_err_msg="\n ${dashes}${dashes}${dashes}"
    path_err_msg+="\n ERROR: Detected building inside /usr"
    path_err_msg+="\n ${dashes}${dashes}${dashes}"
    path_err_msg+="\n This is not supported by the buildsystem."
    path_err_msg+="\n Please use another directory (for example your \$HOME) to build ${DISTRONAME}"

    die "${path_err_msg}"
  fi
}

check_distro() {
  local dashes="===========================" distro_err_msg
  if [ -z "${DISTRO}" -o ! -d "${DISTRO_DIR}/${DISTRO}" ]; then
    distro_err_msg="\n ${dashes}${dashes}${dashes}"
    distro_err_msg+="\n ERROR: Distro not found, use a valid distro or create a new config"
    distro_err_msg+="\n ${dashes}${dashes}${dashes}"
    distro_err_msg+="\n\n Valid distros:"

    for distros in ${DISTRO_DIR}/*; do
      distro_err_msg+="\n - ${distros##*/}"
    done
    die "${distro_err_msg}"
  fi
}

check_project() {
  local dashes="===========================" project_err_msg
  if [ -z "${PROJECT}" -o ! -d "${PROJECT_DIR}/${PROJECT}" ]; then
    project_err_msg="\n ${dashes}${dashes}${dashes}"
    project_err_msg+="\n ERROR: Project not found. Use a valid project or create a new config"
    project_err_msg+="\n ${dashes}${dashes}${dashes}"
    project_err_msg+="\n\n Valid projects:"

    for projects in ${PROJECT_DIR}/*; do
      project_err_msg+="\n - ${projects##*/}"
    done
    die "${project_err_msg}"
  fi
}

check_device() {
  local dashes="===========================" device_err_msg
  if [ -n "${DEVICE}" -a ! -d "${PROJECT_DIR}/${PROJECT}/devices" ]; then
    device_err_msg="\n $dashes$dashes$dashes"
    device_err_msg+="\n ERROR: You must not specify DEVICE for the $PROJECT project"
    device_err_msg+="\n $dashes$dashes$dashes"
    device_err_msg+="\n\n There are no devices for project: ${PROJECT}"

    die "${device_err_msg}"
  elif [ \( -z "${DEVICE}" -a -d "${PROJECT_DIR}/${PROJECT}/devices" \) -o \
         \( -n "${DEVICE}" -a ! -d "${PROJECT_DIR}/${PROJECT}/devices/${DEVICE}" \) ]; then
    device_err_msg="\n ${dashes}${dashes}${dashes}"
    device_err_msg+="\n ERROR: Specify a valid device for the ${PROJECT} project"
    device_err_msg+="\n ${dashes}${dashes}${dashes}"
    device_err_msg+="\n\n Valid devices for project: ${PROJECT}"

    for device in ${PROJECT_DIR}/${PROJECT}/devices/*; do
      device_err_msg+="\n - ${device##*/}"
    done
    die "${device_err_msg}"
  fi
}

check_arch() {
  local dashes="===========================" arch_err_msg linux_config_dir
  if [ -d "${PROJECT_DIR}/${PROJECT}/devices/${DEVICE}/linux" ]; then
    linux_config_dir="${PROJECT_DIR}/${PROJECT}/devices/$DEVICE/linux"
  else
    linux_config_dir="${PROJECT_DIR}/${PROJECT}/linux"
  fi

  if [ ! -e "${linux_config_dir}/linux.${TARGET_KERNEL_PATCH_ARCH:-$TARGET_ARCH}.conf" ] &&
       ! ls "${linux_config_dir}/"*/linux.${TARGET_KERNEL_PATCH_ARCH:-$TARGET_ARCH}.conf &>/dev/null; then
    arch_err_msg="\n ${dashes}${dashes}${dashes}"
    arch_err_msg+="\n ERROR: Architecture not found. Use a valid Architecture"
    arch_err_msg+="\n for your project or create a new config"
    arch_err_msg+="\n ${dashes}${dashes}${dashes}"
    arch_err_msg+="\n\n Valid Architectures for project: ${PROJECT}"

    for arch in ${linux_config_dir}/*.conf ${linux_config_dir}/*/linux.${TARGET_ARCH}.conf; do
      [[ ${arch} =~ .*\*.* ]] && continue #ignore unexpanded wildcard
      arch_err_msg+="\n - $(echo ${arch##*/} | cut -f2 -d".")"
    done
    die "${arch_err_msg}"
  fi
}

check_config() {
  check_path
  check_distro
  check_project
  check_device
  check_arch
}

do_autoreconf() {
  export ACLOCAL_DIR=$SYSROOT_PREFIX/usr/share/aclocal

  if [ -e "$TOOLCHAIN/bin/autoconf" ]; then
    export AUTOCONF=$TOOLCHAIN/bin/autoconf
  fi

  if [ -e "$TOOLCHAIN/bin/automake" ]; then
    export AUTOMAKE=$TOOLCHAIN/bin/automake
  fi

  if [ -e "$TOOLCHAIN/bin/autopoint" ]; then
    export AUTOPOINT=$TOOLCHAIN/bin/autopoint
  fi

  if [ -e "$TOOLCHAIN/bin/libtoolize" ]; then
    export LIBTOOLIZE=$TOOLCHAIN/bin/libtoolize
  fi

  if [ -e "$TOOLCHAIN/bin/intltoolize" ]; then
    export INTLTOOLIZE=$TOOLCHAIN/bin/intltoolize
  fi

  if [ -e "$TOOLCHAIN/bin/aclocal" ]; then
    export ACLOCAL="$TOOLCHAIN/bin/aclocal -I $ACLOCAL_DIR"
  fi

  if [ -e "$TOOLCHAIN/bin/autoheader" ]; then
    export AUTOHEADER=$TOOLCHAIN/bin/autoheader
  fi

  if [ -e "$TOOLCHAIN/bin/libtool" ]; then
    export LIBTOOL=$TOOLCHAIN/bin/libtool
  fi

  # >autoconf-2.69 will call gtkdocize when used in macros
  # when called with --install parameter.
  # use "true" unless gtkdocsize is in the toolchain.
  if [ -e "$TOOLCHAIN/bin/gtkdocize" ]; then
    export GTKDOCIZE=$TOOLCHAIN/bin/gtkdocize
  else
    export GTKDOCIZE=true
  fi

  if [ -e "$TOOLCHAIN/bin/autoreconf" -a -e "$INTLTOOLIZE" ]; then
    mkdir -p $ACLOCAL_DIR
    if [ -e "$LIBTOOLIZE" ]; then
      export AUTORECONF="$TOOLCHAIN/bin/autoreconf --verbose --force --install -I $ACLOCAL_DIR"
    else
      export AUTORECONF="$TOOLCHAIN/bin/autoreconf --verbose --force -I $ACLOCAL_DIR"
    fi
    $AUTORECONF $@
  fi
}

# True if this is a sequential build, false if multithreaded
is_sequential_build() {
  [ "${MTWITHLOCKS}" != "yes" ] && return 0 || return 1
}

# arg1: filename (libtool) to remove hardcode rpath when --disable-rpath is not supported by configure
libtool_remove_rpath() {
  sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' ${1}
  sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' ${1}
}

### PACKAGE HELPERS ###
# get variable ($2) for package ($1).
# avoid infinite recursion if required package is already loaded.
get_pkg_variable() {
  if [ -n "$1" -a -n "$2" ] ; then
    if [ "$1" != "$PKG_NAME" ]; then
      source_package "${1}"
    fi
    echo "${!2}"
  fi
}

# get package's build dir
get_build_dir() {
  local _PKG_NAME="${1%:*}" _PKG_VERSION="$(get_pkg_version "$1")"
  if [ -n "$_PKG_NAME" -a -n "$_PKG_VERSION" ]; then
    echo $BUILD/build/${_PKG_NAME}-${_PKG_VERSION}
  fi
}

get_install_dir() {
  get_pkg_variable "$1" PKG_INSTALL
}

get_pkg_version() {
  get_pkg_variable "$1" PKG_VERSION
}

get_pkg_version_maj_min() {
  local pkg_version

  [ -n "${1}" ] && pkg_version="$(get_pkg_version "${1}")" || pkg_version="${PKG_VERSION}"

  if [[ ${pkg_version} =~ ^[0-9A-Za-z]*\.[0-9A-Za-z]*\.[0-9A-za-z]*$ ]]; then
    echo "${pkg_version%.*}"
  elif [[ ${pkg_version} =~ ^[0-9A-Za-z]*\.[0-9A-Za-z]*$ ]]; then
    echo "${pkg_version}"
  else
    echo "${pkg_version}"
  fi
}

get_pkg_directory() {
  local _PKG_ROOT_NAME=${1%:*} _ALL_DIRS _FOUND=0 _ANCHOR="@?+?@" _PKG_DIR _DIR

  # Check for any available local_device package in preference to a global package
  for _DIR in $(grep -F "/${_PKG_ROOT_NAME}${_ANCHOR}" "${_CACHE_PACKAGE_LOCAL_DEVICE}"); do
    _DIR="${_DIR%${_ANCHOR}}"
    # found first, set $_PKG_DIR
    _PKG_DIR="$_DIR"
    # keep track of dirs with package.mk for detecting multiple folders
    _ALL_DIRS+="${_DIR}\n"
    _FOUND=$((_FOUND+1))
  done

  # If there's no local_device package available, use the global package
  if [ $_FOUND -eq 0 ]; then
  # Check for any available local package in preference to a global package
  for _DIR in $(grep -F "/${_PKG_ROOT_NAME}${_ANCHOR}" "${_CACHE_PACKAGE_LOCAL}"); do
    _DIR="${_DIR%${_ANCHOR}}"
    # found first, set $_PKG_DIR
    _PKG_DIR="$_DIR"
    # keep track of dirs with package.mk for detecting multiple folders
    _ALL_DIRS+="${_DIR}\n"
    _FOUND=$((_FOUND+1))
  done
  fi

  # If there's no local package available, use the global package
  if [ $_FOUND -eq 0 ]; then
    for _DIR in $(grep -F "/${_PKG_ROOT_NAME}${_ANCHOR}" "${_CACHE_PACKAGE_GLOBAL}"); do
      _DIR="${_DIR%${_ANCHOR}}"
      # found first, set $_PKG_DIR
      _PKG_DIR="$_DIR"
      # keep track of dirs with package.mk for detecting multiple folders
      _ALL_DIRS+="${_DIR}\n"
      _FOUND=$((_FOUND+1))
    done
  fi

  # _FOUND multiple packages? fail
  if [ $_FOUND -gt 1 ]; then
    echo "Error - multiple package folders for package ${_PKG_ROOT_NAME}:" >&2
    echo -e "$_ALL_DIRS" >&2
    die
  fi

  echo "$_PKG_DIR"
}

# Return a list of sorted package names for this project/device/arch
get_all_package_names() {
  sed -e 's#@?+?@##g; s#.*/##g' ${_CACHE_PACKAGE_GLOBAL} ${_CACHE_PACKAGE_LOCAL} ${_CACHE_PACKAGE_LOCAL_DEVICE} | sort --ignore-case --unique
}

calculate_stamp() {
  local stamp data

  stamp="$PKG_DIR $PROJECT_DIR/$PROJECT/patches/$PKG_NAME $PROJECT_DIR/$PROJECT/packages/$PKG_NAME"
  [ -n "$DEVICE" ] && stamp+=" $PROJECT_DIR/$PROJECT/devices/$DEVICE/patches/$PKG_NAME"
  [ -n "$PKG_NEED_UNPACK" ] && stamp+=" $PKG_NEED_UNPACK"

  if [ -n "$PKG_STAMP_VAR" ]; then
    local TMP_VAR="$(get_build_dir $PKG_NAME)/.pkg_stamp_var"
    echo "$PKG_STAMP_VAR" > $TMP_VAR
    stamp+=" $TMP_VAR"
  fi

  data="$(find -L ${stamp} -type f -not -name '.*' 2>/dev/null | sed "s|^${ROOT}/||" | LC_ALL=C sort -u | xargs -d '\n' sha256sum)"
  [ -n "${PKG_STAMP}" ] && data+=$'\n'"$(echo "${PKG_STAMP}" | sha256sum)"

  echo "${data}" | sha256sum | cut -d" " -f1
}

target_has_feature() {
  listcontains "$TARGET_FEATURES" "$1"
}

# configure variables for go
go_configure() {
  unset GOARCH GOARM
  case ${TARGET_ARCH} in
    x86_64)
      export GOARCH=amd64
      ;;
    arm)
      export GOARCH=arm

      case ${TARGET_CPU} in
        arm1176jzf-s)
          export GOARM=6
          ;;
        *)
          export GOARM=7
          ;;
      esac
      ;;
    aarch64)
      export GOARCH=arm64
      ;;
  esac

  export GOOS=linux
  export GOROOT=${TOOLCHAIN}/lib/golang
  export PATH=${PATH}:${GOROOT}/bin

  go_configure_path

  export CGO_ENABLED=1
  export CGO_NO_EMULATION=1
  export CGO_CFLAGS=$CFLAGS
}

go_configure_path() {
  export GOLANG=${TOOLCHAIN}/lib/golang/bin/go
  export GOPATH=${PKG_BUILD}/.gopath
  export GOFLAGS="-modcacherw"
}

# find path for matching file or directory, searching standard directory hierarchy, using optional default
# if a path is located it will be set in FOUND_PATH and exit code will be 0.
find_path() {
  local test_func="$1" search="$2" default="$3"
  local dir match wildcard=0 ftype

  # support wildcard matches
  [[ $search =~ \* || $search =~ \? ]] && wildcard=1

  [ "$test_func" = "-f" ] && ftype="file" || ftype="dir"

  for dir in $PROJECT_DIR/$PROJECT/devices/$DEVICE/packages/$PKG_NAME \
             $PROJECT_DIR/$PROJECT/devices/$DEVICE \
             $PROJECT_DIR/$PROJECT/packages/$PKG_NAME \
             $PROJECT_DIR/$PROJECT \
             $DISTRO_DIR/$DISTRO/packages/$PKG_NAME \
             $DISTRO_DIR/$DISTRO \
             $PKG_DIR \
             ; do
    # ignore directories with missing DEVICE or PKG_NAME components
    [[ $dir =~ /packages/$ ]] && continue
    [[ $dir =~ /devices/$ ]] && continue
    [[ $dir =~ /devices//packages/$PKG_NAME$ ]] && continue

    if [ $wildcard -eq 1 ]; then
      ls $dir/$search 1>/dev/null 2>&1 && match="$dir/$search" && break
    else
      [ $test_func "$dir/$search" ] && match="$dir/$search" && break
    fi
  done

  if [ -z "$match" -a -n "$default" ]; then
    if [[ $default =~ \* || $default =~ \? ]]; then
      ls $default 1>/dev/null 2>&1 && match="$default"
    else
      [ $test_func "$default" ] && match="$default"
    fi
  fi

  if [ -n "$match" ]; then
    FOUND_PATH="$match"
    [ "${VERBOSE_FIND_PATH,,}" = "yes" ] && echo "find_path: Searching for $ftype: \"$search\", found: \"$FOUND_PATH\"" >&2
    return 0
  else
    unset FOUND_PATH
    [ "${VERBOSE_FIND_PATH,,}" = "yes" ] && echo "find_path: Searching for $ftype: \"$search\" - not found" >&2
    return 1
  fi
}

find_file_path() {
  find_path -f "$1" "$2"
}

find_dir_path() {
  find_path -d "$1" "$2"
}

# p1: name of function to test for
# return 0 if function exists, 1 if not
pkg_call_exists() {
  PKG_CURRENT_CALL="${1}"
  if [ "$(type -t ${1})" = "function" ]; then
    PKG_CURRENT_CALL_TYPE="package.mk"
    return 0
  else
    PKG_CURRENT_CALL_TYPE="default"
    return 1
  fi
}

# Optional variant of pkg_call_exists()
# Clear PKG_CURRENT_CALL when function is not implemented.
pkg_call_exists_opt() {
  if pkg_call_exists $1; then
    return 0
  else
    pkg_call_finish
    return 1
  fi
}

# Function to be called is set by pkg_call_exists/pkg_call_exists_opt
# Args: whatever the called function expects
# testing the exit code value of this function is likely to break set -e fail-on-error behaviour
pkg_call() {
  [ -n "${PKG_CURRENT_CALL}" ] || die "$(print_color CLR_ERROR "PKG_CURRENT_CALL is not set!")"
  [ -n "${PKG_NAME}" ] || die "$(print_color CLR_ERROR "FAILURE: Cannot call ${PKG_CURRENT_CALL} package function when package is not known!")"

  ${PKG_CURRENT_CALL} "${@}"
  pkg_call_finish
}

pkg_call_finish() {
  PKG_CURRENT_CALL=""
}

unset_functions() {
  local target

  unset -f configure_package

  unset -f pre_unpack unpack post_unpack
  unset -f pre_patch post_patch

  for target in target host init bootstrap; do
    unset -f pre_build_${target}
    unset -f pre_configure_${target} configure_${target} post_configure_${target}
    unset -f pre_make_${target} make_${target} post_make_${target}
    unset -f pre_makeinstall_${target} makeinstall_${target} post_makeinstall_${target}
  done

  unset -f pre_install post_install

  unset -f addon post_install_addon
}

# p1: name of package to be sourced
source_package() {
  local opwd="${PWD}"

  # Don't use BUILD_WITH_DEBUG in "global" package.mk - instead, call the function
  # build_with_debug() directly as the function depends on various package.mk
  # variables that will be in the process of being configured. Once package.mk is
  # fully sourced we can set this variable and use it in situations where we know the
  # package has already been sourced.
  unset BUILD_WITH_DEBUG

  reset_pkg_vars
  unset_functions

  if [ -n "${1}" ]; then
    [ -f "${1}" ] && PKG_DIR="${1%/*}" || PKG_DIR="$(get_pkg_directory "${1}")"

    [ -n "$PKG_DIR" -a -r $PKG_DIR/package.mk ] || die "FAILURE: unable to source package - ${1}/package.mk does not exist"

    cd "${ROOT}"
    . ${PKG_DIR}/package.mk || die "FAILURE: an error occurred while sourcing ${PKG_DIR}/package.mk"
    cd "${opwd}"

    PKG_SHORTDESC="${PKG_SHORTDESC:-${PKG_NAME} (autogenerated)}"
    PKG_LONGDESC="${PKG_LONGDESC:-${PKG_NAME} (autogenerated)}"

    if [ "$PKG_IS_ADDON" = "yes" -o "$PKG_IS_ADDON" = "embedded" ] ; then
      [ -z $PKG_SECTION ] && PKG_ADDON_ID="$PKG_NAME" || PKG_ADDON_ID="${PKG_SECTION//\//.}.$PKG_NAME"
      [ "$PKG_ADDON_IS_STANDALONE" != "yes" ] && PKG_NEED_UNPACK="${PKG_NEED_UNPACK} $(get_pkg_directory $MEDIACENTER)"
    fi

    if [ -n "${PKG_IS_KERNEL_PKG}" -a "${PKG_NAME}" != "linux" ]; then
      PKG_DEPENDS_TARGET="toolchain linux ${PKG_DEPENDS_TARGET}"
      PKG_DEPENDS_UNPACK="linux ${PKG_DEPENDS_UNPACK}"
      PKG_NEED_UNPACK="${LINUX_DEPENDS} ${PKG_NEED_UNPACK}"
    fi

    if [ -n "${PKG_DEPENDS_UNPACK}" ]; then
      for _p in ${PKG_DEPENDS_UNPACK}; do
        PKG_NEED_UNPACK+=" $(get_pkg_directory ${_p})"
      done
    fi

    # Automatically set PKG_SOURCE_NAME unless it is already defined.
    # PKG_SOURCE_NAME will be automatically set to a name based on
    # the $PKG_NAME-$PKG_VERSION convention.
    #
    # Any $PKG_URL that references more than a single url will abort
    # the build as these are no longer supported - use mkpkg instead.
    if [ -n "$PKG_URL" -a -z "$PKG_SOURCE_NAME" ]; then
      if [[ $PKG_URL =~ .*\ .* ]]; then
        echo "Error - packages with multiple urls are no longer supported, use mkpkg."
        echo "$PKG_URL"
        die
      fi
      if [[ ${PKG_URL} =~ .git$ || ${PKG_URL} =~ ^git:// ]]; then
        PKG_SOURCE_NAME=${PKG_NAME}-${PKG_VERSION}
      elif [[ ${PKG_URL} =~ ^file:// ]]; then
        PKG_SOURCE_NAME=${PKG_URL#file://}
        # if no specific PKG_TAR_COPY_OPTS then default to excluding .git and .svn as they can be huge
        [ -z "${PKG_TAR_COPY_OPTS+x}" ] && PKG_TAR_COPY_OPTS="--exclude=.git --exclude=.svn"
      else
        PKG_SOURCE_NAME="${PKG_URL##*/}"
        case $PKG_SOURCE_NAME in
          ${PKG_NAME}-${PKG_VERSION}.*)
            PKG_SOURCE_NAME=$PKG_SOURCE_NAME
            ;;
          *.tar | *.tbz | *.tgz | *.txz | *.tzst | *.7z | *.zip)
            PKG_SOURCE_NAME=${PKG_NAME}-${PKG_VERSION}.${PKG_SOURCE_NAME##*\.}
            ;;
          *.tar.bz2 | *.tar.gz | *.tar.xz | *.tar.zst )
            PKG_SOURCE_NAME=${PKG_NAME}-${PKG_VERSION}.tar.${PKG_SOURCE_NAME##*\.}
            ;;
          *.diff | *.patch | *.diff.bz2 | *.patch.bz2 | patch-*.bz2 | *.diff.gz | *.patch.gz | patch-*.gz)
            PKG_SOURCE_NAME=$PKG_SOURCE_NAME
            ;;
          *)
            PKG_SOURCE_NAME=${PKG_NAME}-${PKG_VERSION}.${PKG_SOURCE_NAME##*\.}
            ;;
        esac
      fi
    fi

    PKG_BUILD="$BUILD/build/${PKG_NAME}-${PKG_VERSION}"

    if [[ "${1}" =~ :target$ || "${1//:/}" = "${1}" ]]; then
      PKG_INSTALL="$BUILD/install_pkg/${PKG_NAME}-${PKG_VERSION}"
    elif [[ "${1}" =~ :init$ ]]; then
      PKG_INSTALL="$BUILD/install_init/${PKG_NAME}-${PKG_VERSION}"
    fi

    PKG_QA_CHECKS="${BUILD}/qa_checks/${PKG_NAME}-${PKG_VERSION}"
  fi

  build_with_debug && BUILD_WITH_DEBUG="yes" || BUILD_WITH_DEBUG="no"

  # Late variable binding - allow the package to now evaluate any variables
  # that we may have initialised after sourcing the package, typically
  # PKG_BUILD etc.
  if [ -n "${PKG_NAME}" ]; then
    if pkg_call_exists_opt configure_package; then
      pkg_call
    fi
  fi
}

# arg1: file, or directory to recursively compile.
python_compile() {
  local path="${1:-${INSTALL}/usr/lib/${PKG_PYTHON_VERSION}}"
  ${TOOLCHAIN}/bin/python3 -Wi -t -B ${TOOLCHAIN}/lib/${PKG_PYTHON_VERSION}/compileall.py -f -d "${path#${INSTALL}}" "${path}"
  python_remove_source "${path}"
}

# arg1: file, or directory from which to recursively remove all py source code
python_remove_source() {
  local path="${1:-${INSTALL}/usr/lib/${PKG_PYTHON_VERSION}}"
  if [ -d "${path}" ]; then
    find "${path}" -type f -name '*.py' -delete
  else
    rm -f "${path}"
  fi
}

# arg1: directory to process recursively
# strip incorrect build-host ABI from native Python3 modules (see PEP3149)
python_fix_abi() {
  local pymodule pyname

  for pymodule in $(find ${1} -type f -name '*.cpython-*.so' 2>/dev/null); do
    pyname=${pymodule##*/}
    pyname=${pyname%.so} # strip extension
    pyname=${pyname%.*}  # strip incorrect ABI
    echo "python_fix_abi: Removing ABI from ${pymodule} -> ${pyname}.so"
    mv ${pymodule} ${pymodule%/*}/${pyname}.so
  done
}

### KERNEL HELPERS ###
kernel_path() {
  get_build_dir linux
}

kernel_version() {
  get_pkg_version linux
}

kernel_config_path() {
  local cfg pkg_linux_dir pkg_linux_version config_name

  pkg_linux_version="$(get_pkg_version linux)"
  pkg_linux_dir="$(get_pkg_directory linux)"

  config_name="linux.${TARGET_KERNEL_PATCH_ARCH:-$TARGET_ARCH}.conf"

  for cfg in $PROJECT_DIR/$PROJECT/devices/$DEVICE/linux/$pkg_linux_version/$config_name \
             $PROJECT_DIR/$PROJECT/devices/$DEVICE/linux/$LINUX/$config_name \
             $PROJECT_DIR/$PROJECT/devices/$DEVICE/linux/$config_name \
             $PROJECT_DIR/$PROJECT/linux/$pkg_linux_version/$config_name \
             $PROJECT_DIR/$PROJECT/linux/$LINUX/$config_name \
             $PROJECT_DIR/$PROJECT/linux/$config_name \
             $pkg_linux_dir/config/$pkg_linux_version/$config_name \
             $pkg_linux_dir/config/$LINUX/$config_name \
             $pkg_linux_dir/config/$config_name \
             ; do
    [[ $cfg =~ /devices//linux/ ]] && continue
    [ -f "$cfg" ] && echo "$cfg" && return
  done

  die "ERROR: Unable to locate kernel config for ${LINUX} - looking for ${config_name}"
}

kernel_initramfs_confs() {
  local config_name cfg confs

  config_name="initramfs.${TARGET_KERNEL_PATCH_ARCH:-$TARGET_ARCH}.conf"
  confs="$(get_pkg_directory initramfs)/config/initramfs.conf"

  for cfg in $PROJECT_DIR/$PROJECT/packages/initramfs/config/$config_name \
             $PROJECT_DIR/$PROJECT/devices/$DEVICE/packages/initramfs/config/$config_name \
             ; do
    [[ $cfg =~ /devices//packages/ ]] && continue
    [ -f "$cfg" ] && confs+=" $cfg"
  done

  echo "$confs"
}

kernel_make() {
  (
    setup_pkg_config_host

    LDFLAGS="" make CROSS_COMPILE=$TARGET_KERNEL_PREFIX \
      ARCH="$TARGET_KERNEL_ARCH" \
      HOSTCC="$TOOLCHAIN/bin/host-gcc" \
      HOSTCXX="$TOOLCHAIN/bin/host-g++" \
      HOSTCFLAGS="$HOST_CFLAGS" \
      HOSTLDFLAGS="$HOST_LDFLAGS" \
      HOSTCXXFLAGS="$HOST_CXXFLAGS" \
      DEPMOD="$TOOLCHAIN/bin/depmod" \
      "$@"
  )
}

# get kernel module dir
get_module_dir() {
  if [ -n "${_CACHED_KERNEL_MODULE_DIR}" ]; then
    echo "${_CACHED_KERNEL_MODULE_DIR}"
  else
    basename $(ls -d $(get_install_dir linux)/usr/lib/kernel-overlays/base/lib/modules/*)
  fi
}

# get base path to kernel modules and firmware
get_kernel_overlay_dir() {
  echo "usr/lib/kernel-overlays/${1:-base}"
}

# get full path to kernel module dir
# optional parameter specifies overlay level (default is base)
get_full_module_dir() {
  echo "$(get_kernel_overlay_dir $1)/lib/modules/$(get_module_dir)"
}

# get full path to firmware dir
# optional parameter specifies overlay level (default is base)
get_full_firmware_dir() {
  echo "$(get_kernel_overlay_dir $1)/lib/firmware"
}


### ADDON HELPERS ###
install_binary_addon() {
  local addon_id="$1" addon_so

  mkdir -p $ADDON_BUILD/$addon_id/
  cp -R $PKG_INSTALL/usr/share/$MEDIACENTER/addons/$addon_id/* $ADDON_BUILD/$addon_id/

  addon_so=$(xmlstarlet sel -t -v "/addon/extension/@library_linux" $ADDON_BUILD/$addon_id/addon.xml || :)
  if [ -n "$addon_so" ]; then
    cp -L $PKG_INSTALL/usr/lib/$MEDIACENTER/addons/$addon_id/$addon_so $ADDON_BUILD/$addon_id/
    chmod +x $ADDON_BUILD/$addon_id/$addon_so
  fi

  if [ -d $PKG_INSTALL/usr/lib/kernel-overlays/$addon_id ] ; then
    mkdir -p $ADDON_BUILD/$addon_id/kernel-overlay
    cp -PR $PKG_INSTALL/usr/lib/kernel-overlays/$addon_id/* $ADDON_BUILD/$addon_id/kernel-overlay
  fi
}

install_addon_source() {
  if [ -d $PKG_DIR/source ]; then
    cp -R $PKG_DIR/source/* "$1"
  fi
}

install_addon_images() {
  local dest_dir="$1"

  if [ -f "$PKG_DIR/icon/icon.png" ]; then
    mkdir -p "$dest_dir/resources"
    cp "$PKG_DIR/icon/icon.png" "$dest_dir/resources"
  fi

  if [ -f "$DISTRO_DIR/$DISTRO/addons/fanart.png" ]; then
    mkdir -p "$dest_dir/resources"
    cp "$DISTRO_DIR/$DISTRO/addons/fanart.png" "$dest_dir/resources"
  fi
}

create_addon_xml() {
  local addon_xml addon_version addon_name provider_name requires requires_addonname requires_addonversion screenshots
  local tmp_changelog

  addon_xml="$1/addon.xml"

  IFS=" "
for i in $PKG_ADDON_REQUIRES; do
  requires_addonname=`echo $i | cut -f1 -d ":"`
  requires_addonversion=`echo $i | cut -f2 -d ":"`
  requires="$requires\n    <import addon=\"$requires_addonname\" version=\"$requires_addonversion\" />"
done
  unset IFS

  if [ ! -f "$addon_xml" ] ; then
    cp $ROOT/config/addon/${PKG_ADDON_TYPE}.xml "$addon_xml"
    addon_version=${PKG_ADDON_VERSION:-${ADDON_VERSION}.${PKG_REV}}
  else
    if  ! command -v xmlstarlet >/dev/null ; then
      die "*** ERROR: $ADDON has addon.xml shipped, you need 'xmlstarlet' ***" "255"
    fi
    addon_version="${PKG_ADDON_VERSION:-$(xmlstarlet sel -t -v "/addon/@version" "$addon_xml").$PKG_REV}"
    xmlstarlet ed --inplace -u "/addon[@version]/@version" -v "$addon_version" "$addon_xml"
  fi

  if [ -f $PKG_DIR/changelog.txt ]; then
    tmp_changelog="$(mktemp)"
    cat ${PKG_DIR}/changelog.txt | xmlstarlet esc >"${tmp_changelog}"
    sed -e "/@PKG_ADDON_NEWS@/ \
         {
           r ${tmp_changelog}
           d
         }" -i "$addon_xml"
    rm -f "${tmp_changelog}"
  else
    sed -e "s|@PKG_ADDON_NEWS@||g" -i "$addon_xml"
  fi

  provider_name=${PKG_MAINTAINER:-"Team ${DISTRONAME}"}
  addon_name=${PKG_ADDON_NAME:-"$PKG_NAME"}

  for f in $PKG_DIR/source/resources/screenshot-*.{jpg,png}; do
    if [ -f "$f" ]; then
      screenshots+="<screenshot>resources/${f##*/}</screenshot>\n"
    fi
  done

  sed -e "s|@PKG_ADDON_ID@|$PKG_ADDON_ID|g" \
      -e "s|@ADDON_NAME@|$addon_name|g" \
      -e "s|@ADDON_VERSION@|$addon_version|g" \
      -e "s|@REQUIRES@|$requires|g" \
      -e "s|@PKG_SHORTDESC@|$PKG_SHORTDESC|g" \
      -e "s|@OS_VERSION@|$OS_VERSION|g" \
      -e "s|@PKG_LONGDESC@|$PKG_LONGDESC|g" \
      -e "s|@PKG_DISCLAIMER@|$PKG_DISCLAIMER|g" \
      -e "s|@PROVIDER_NAME@|$provider_name|g" \
      -e "s|@PKG_ADDON_PROVIDES@|$PKG_ADDON_PROVIDES|g" \
      -e "s|@PKG_ADDON_SCREENSHOT@|$screenshots|g" \
      -e "s|@PKG_ADDON_BROKEN@|$PKG_ADDON_BROKEN|g" \
      -i "$addon_xml"
}

install_addon_files() {
  mkdir -p "$1"

  install_addon_source "$1"
  install_addon_images "$1"
  create_addon_xml "$1"
  python_fix_abi "$1"

  if pkg_call_exists_opt post_install_addon; then
    INSTALL="$1" pkg_call
  fi
}

install_driver_addon_files() {
  if [ "$#" -eq 0 ] ; then
    die "$(print_color CLR_ERROR "no module search path defined")"
  fi

  PKG_MODULE_DIR="$INSTALL/$(get_full_module_dir $PKG_ADDON_ID)/updates/$PKG_ADDON_ID"
  PKG_ADDON_DIR="$INSTALL/usr/share/$MEDIACENTER/addons/$PKG_ADDON_ID"

  mkdir -p $PKG_MODULE_DIR
  find $@ -name \*.ko -exec cp {} $PKG_MODULE_DIR \;

  find $PKG_MODULE_DIR -name \*.ko -exec ${TARGET_KERNEL_PREFIX}strip --strip-debug {} \;

  mkdir -p $PKG_ADDON_DIR
  cp $PKG_DIR/changelog.txt $PKG_ADDON_DIR
  install_addon_files "$PKG_ADDON_DIR"
}


### TARGET CONFIGURATION HELPERS ###
add_user() {
  # Usage: add_user "username" "password" "userid" "groupid" "description" "home" "shell"
  mkdir -p ${INSTALL}/etc
  touch ${INSTALL}/etc/passwd
  if ! grep -q "^$1:" ${INSTALL}/etc/passwd; then
    echo "$1:x:$3:$4:$5:$6:$7" >> ${INSTALL}/etc/passwd
  fi

  mkdir -p ${INSTALL}/usr/cache
  touch ${INSTALL}/usr/cache/shadow
  ln -sf /storage/.cache/shadow ${INSTALL}/etc/shadow 2>/dev/null || true

  PASSWORD="$2"
  if [ "$PASSWORD" = "x" ]; then
    PASSWORD="*"
  else
    PASSWORD=$(openssl passwd -6 "${PASSWORD}")
  fi
  if ! grep -q "^$1:" ${INSTALL}/usr/cache/shadow; then
    echo "$1:$PASSWORD:::::::" >> ${INSTALL}/usr/cache/shadow
  fi
}

add_group() {
  # Usage: add_group "groupname" "groupid" ("members")
  mkdir -p ${INSTALL}/etc
  touch ${INSTALL}/etc/group
  if [ -z "`grep "$1:" ${INSTALL}/etc/group`" ]; then
    echo "$1:x:$2:$3" >> ${INSTALL}/etc/group
  fi
}

# Usage: enable_service <unit> [target]
enable_service() {
  local unit="$1"
  local unit_dir="usr/lib/systemd/system"
  local target="$2"
  local target_dir=$INSTALL

  [ -f "$target_dir/$unit_dir/$unit" ] || die "ERROR: cannot enable non-existent service $target_dir/$unit_dir/$unit"

  if [ -z "$target" ] ; then
    for target in `grep '^WantedBy' $target_dir/$unit_dir/$unit | cut -f2 -d=` ; do
      if [ -n "$target" ]; then
        mkdir -p ${target_dir}/$unit_dir/${target}.wants
        ln -sf ../${unit} ${target_dir}/$unit_dir/${target}.wants/
      fi
    done
  fi
  for target in `grep '^Alias' $target_dir/$unit_dir/$unit | cut -f2 -d=` ; do
    if [ -n "$target" ]; then
      ln -sf ${unit} ${target_dir}/$unit_dir/${target}
    fi
  done
}


### MULTI-THREADED FUNCTION HELPERS ###
# flocks: 94 (pkg_lock_status)
#         95 (scripts/pkgbuild)
#         96 (acquire_exclusive_lock)
#         97 (acquire_update_lock)
#         98 (pkg_lock)
#         99 (scripts/get)

# Test build type so that these functions are a no-op during non-multithreaded builds.

# Prevent concurrent modifications to a package during certain activities.
# With dynamic scheduling we now only need to acquire the lock
# during unpack and reconf, all other activities do not need to acquire a
# lock as there should be no concurrent access however the existing code path
# potentially generates useful logging for minimal cost so keep it.
#
# If a package is already locked and the owner is ourselves
# then assume we already have the required lock.
pkg_lock() {
  is_sequential_build && return 0

  local pkg="$1" task="$2" parent_pkg="$3"
  local this_job="${MTJOBID}"
  local lock_job lock_seq lock_task lock_pkg locked=no idwidth

  if [ "${task}" = "unpack" -o "${task}" = "reconf" ]; then
    exec 98>"${THREAD_CONTROL}/locks/${pkg}.${task}"
    while [ : ]; do
      read -r lock_job lock_seq lock_task lock_pkg <<<$(cat "${THREAD_CONTROL}/locks/${pkg}.${task}.owner" 2>/dev/null)
      [ -n "${lock_job}" ] && break
      flock --wait 1 --exclusive 98 && locked=yes && break
    done

    if [ "${locked}" = "no" -a "${lock_job}/${lock_seq}" != "${this_job}/${PARALLEL_SEQ}" ]; then
      [ "${THREADCOUNT}" = "0" ] && idwidth=${#MTMAXJOBS} || idwidth=2
      pkg_lock_status "STALLED" "${parent_pkg}" "${task}" "$(printf "waiting on [%0*d] %s %s" ${idwidth} ${lock_job} "${lock_task}" "${lock_pkg}")"
      flock --exclusive 98
    fi
  fi

  pkg_lock_status "LOCKED" "${pkg}" "${task}"
}

# Log additional information for a locked package.
pkg_lock_status() {
  is_sequential_build && return 0

  local status="$1" pkg="$2" task="$3" msg="$4"
  local this_job="${MTJOBID}" line idwidth

  [ "${THREADCOUNT}" = "0" ] && idwidth=${#MTMAXJOBS} || idwidth=2

  (
    flock --exclusive 94

    # Write the configured number of slots to history to improve accuracy of later analysis
    if [ ! -f "${THREAD_CONTROL}/history" ]; then
      printf "%s: <%06d> [%0*d/%0*d] %-7s %-7s %s %s\n" \
        "$(date +%Y-%m-%d\ %H:%M:%S.%N)" $$ ${idwidth} 0 ${#MTMAXJOBS} 0 "IDLE" "config" "info" "slots=${MTMAXSLOT};jobs=${MTMAXJOBS}" >>"${THREAD_CONTROL}/history"
    fi

    printf -v line "%s: <%06d> [%0*d/%0*d] %-7s %-7s %-35s" \
      "$(date +%Y-%m-%d\ %H:%M:%S.%N)" $$ ${idwidth} ${this_job} ${#MTMAXJOBS} ${PARALLEL_SEQ:-0} "${status}" "${task}" "${pkg}"
    [ -n "${msg}" ] && line+=" (${msg})"

    echo "${line}" >>"${THREAD_CONTROL}/history"

    if [ "${DASHBOARD}" != "no" ]; then
      update_dashboard "${status}" "${pkg}" "${task}" "${msg}"
    fi
  ) 94>"${THREAD_CONTROL}/locks/.history"

  if [ "${status}" = "LOCKED" ]; then
    echo "${this_job} ${PARALLEL_SEQ} ${task} ${pkg}" >"${THREAD_CONTROL}/locks/${pkg}.${task}.owner"
  elif [ "${status}" = "UNLOCK" ]; then
    rm "${THREAD_CONTROL}/locks/${pkg}.${task}.owner"
  fi

  return 0
}

update_dashboard() {
  is_sequential_build && return 0

  local status="$1" pkg="$2" task="$3" msg="$4"
  local line preamble num elapsed projdevarch
  local boldred boldgreen boldyellow endcolor idwidth

  [ "${THREADCOUNT}" = "0" ] && idwidth=${#MTMAXSLOT} || idwidth=2

  if [ ! -s ${THREAD_CONTROL}/status ]; then
    echo "" >"${THREAD_CONTROL}/status"
    echo "" >>"${THREAD_CONTROL}/status"
    for i in $(seq 1 $((MTMAXSLOT))); do
      printf "[%0*d/%0*d] %-7s\n" ${idwidth} ${i} ${#MTMAXJOBS} 0 "IDLE" >>"${THREAD_CONTROL}/status"
    done
  fi

  num=$(< "${THREAD_CONTROL}/progress.prev")
  projdevarch="${PROJECT}/"
  [ -n "${DEVICE}" ] && projdevarch+="${DEVICE}/"
  projdevarch+="${TARGET_ARCH}"
  [ -n "${BUILD_SUFFIX}" ] && projdevarch+=", ${BUILD_SUFFIX}"
  TZ=UTC0 printf -v elapsed "%(%H:%M:%S)T" $(($(date +%s) - MTBUILDSTART))
  printf -v preamble "%s Dashboard (%s) - %d of %d jobs completed, %s elapsed" "${DISTRONAME}" "${projdevarch}" $((num + 1)) ${MTMAXJOBS} "${elapsed}"
  printf -v preamble "%b%-105s %s" "\e[2J\e[0;0H" "${preamble}" "$(date "+%Y-%m-%d %H:%M:%S")"

  if [ "${DISABLE_COLORS}" != "yes" ]; then
    boldred="\e[1;31m"
    boldgreen="\e[1;32m"
    boldyellow="\e[1;33m"
    white="\e[0;37m"
    endcolor="\e[0m"

    case "${status}" in
      IDLE)    color="${white}";;
      STALLED) color="${boldyellow}";;
      MUTEX/W) color="${boldyellow}";;
      FAILED ) color="${boldred}";;
      *)       color="${boldgreen}";;
    esac
  fi

  printf -v line "[%0*d/%0*d] %b%-7s%b %-7s %-35s" ${idwidth} ${MTJOBID} ${#MTMAXJOBS} ${PARALLEL_SEQ:-0} "${color}" "${status}" "${endcolor}" "${task}" "${pkg}"
  [ -n "${msg}" ] && line+=" ${msg}"

  sed -e "1s@.*@${preamble}@;$((MTJOBID + 2))s@.*@${line}@" -i "${THREAD_CONTROL}/status"
}

# Thread concurrency helpers to avoid concurrency issues with some code,
# eg. when Python installs directly into $TOOLCHAIN.
acquire_exclusive_lock() {
  is_sequential_build && return 0

  local pkg="$1" task="$2" lockfile="${3:-global}"
  local this_job="${MTJOBID}"
  local lock_job lock_seq lock_task lock_pkg locked=no idwidth

  exec 96>"${THREAD_CONTROL}/locks/.mutex.${lockfile}"
  while [ : ]; do
    read -r lock_job lock_seq lock_task lock_pkg <<<$(cat "${THREAD_CONTROL}/locks/.mutex.${lockfile}.owner" 2>/dev/null)
    [ -n "${lock_job}" ] && break
    flock --wait 1 --exclusive 96 && locked=yes && break
  done

  if [ "${locked}" = "no" -a "${lock_job}/${lock_seq}" != "${this_job}/${PARALLEL_SEQ}" ]; then
    [ "${THREADCOUNT}" = "0" ] && idwidth=${#MTMAXJOBS} || idwidth=2
    pkg_lock_status "MUTEX/W" "${pkg}" "${task}" "$(printf "mutex: %s; waiting on [%0*d] %s %s" "${lockfile}" ${idwidth} ${lock_job} "${lock_task}" "${lock_pkg}")"
    flock --exclusive 96
  fi

  pkg_lock_status "MUTEX" "${pkg}" "${task}" "mutex: ${lockfile}"

  echo "${this_job} ${PARALLEL_SEQ} ${task} ${pkg}" >"${THREAD_CONTROL}/locks/.mutex.${lockfile}.owner"
}

release_exclusive_lock() {
  is_sequential_build && return 0

  local pkg="$1" task="$2" lockfile="${3:-global}"

  pkg_lock_status "ACTIVE" "${pkg}" "${task}"

  rm "${THREAD_CONTROL}/locks/.mutex.${lockfile}.owner"
  flock --unlock 96 2>/dev/null
}

# Execute single command using mutex
exec_thread_safe() {
  local result
  acquire_exclusive_lock "${PKG_NAME:exec}" "execcmd"
  $@
  result=$?
  release_exclusive_lock "${PKG_NAME:exec}" "execcmd"
  return ${result}
}

# A lightweight target specific lock (eg. image, sysroot)
acquire_update_lock() {
  is_sequential_build && return 0

  exec 97>"${THREAD_CONTROL}/locks/.update.${1}"
  flock --exclusive 97
}

release_update_lock() {
  is_sequential_build && return 0

  flock --unlock 97 2>/dev/null
}

# Multilib support
use_32_options() {
  LIB64_TARGET_NAME="${TARGET_NAME}"
  TARGET_NAME="${LIB32_TARGET_NAME}"
  TARGET_ARCH="arm"
  TARGET_SUBARCH="${LIB32_TARGET_SUBARCH}"
  LIB64_TARGET_PREFIX="${TARGET_PREFIX}"
  TARGET_PREFIX="${LIB32_TARGET_PREFIX}"
  TARGET_CFLAGS="${LIB32_TARGET_CFLAGS}"
  TARGET_CXXFLAGS="${LIB32_TARGET_CXXFLAGS}"
  TARGET_LDFLAGS="${LIB32_TARGET_LDFLAGS}"
  SYSROOT_PREFIX="${LIB32_SYSROOT_PREFIX}"
}

# store current timestamp in TIMESTAMP_xxx variable (xxx set by arg)
# timestamps are seconds.milliseconds since epoch
record_timestamp() {
  if [ -n "${TRACE_BUILD_TIMING}" ]; then
    typeset -g "TIMESTAMP_$1=$(date +%s.%3N)"
  fi
}

# args: text, start timestamp, end timestamp
show_timestamp_diff() {
  if [ -n "${TRACE_BUILD_TIMING}" ]; then
    local start="TIMESTAMP_$2"
    local end="TIMESTAMP_$3"
    local timediff=$(echo "${!end}-${!start}" | bc)
    printf '%20s: %10.3f\n' "$1" "${timediff}"
  fi
}

# Use distribution functions if any
if [ -f "distributions/$DISTRO/config/functions" ]; then
  . distributions/$DISTRO/config/functions
fi


================================================
FILE: config/graphic
================================================
[ -z "${OPENGL}" ] && OPENGL="no"
[ -z "${OPENGLES}" ] && OPENGLES="no"
[ -z "${VULKAN}" ] && VULKAN="no"

if [ "${OPENGL}" = "no" ]; then
  OPENGL_SUPPORT="no"
else
  OPENGL_SUPPORT="yes"
fi

if [ "${OPENGLES}" = "no" ]; then
  OPENGLES_SUPPORT="no"
else
  OPENGLES_SUPPORT="yes"
fi

if [ "${VULKAN}" = "no" ]; then
  VULKAN_SUPPORT="no"
else
  VULKAN_SUPPORT="yes"
fi

get_graphicdrivers() {

  # set defaults
  GALLIUM_DRIVERS=""
  XORG_DRIVERS=""
  VULKAN_DRIVERS_CONFIG=""
  VULKAN_DRIVERS_MESA=""
  LLVM_SUPPORT="no"
  COMPOSITE_SUPPORT="no"
  VDPAU_SUPPORT="no"
  VAAPI_SUPPORT="no"
  V4L2_SUPPORT="no"

  if [ "${GRAPHIC_DRIVERS}" = "all" ]; then
    GRAPHIC_DRIVERS="crocus i915 iris r300 r600 radeonsi nvidia nvidia-legacy nvidia-ng vmware virtio vc4"
  fi

  if listcontains "${GRAPHIC_DRIVERS}" "crocus"; then
    GALLIUM_DRIVERS+=" crocus"
    XORG_DRIVERS+=" intel"
    COMPOSITE_SUPPORT="yes"
    VAAPI_SUPPORT="yes"
  fi

  if listcontains "${GRAPHIC_DRIVERS}" "etnaviv"; then
    GALLIUM_DRIVERS+=" etnaviv kmsro"
    V4L2_SUPPORT="yes"
    VAAPI_SUPPORT="no"
    VDPAU_SUPPORT="no"
  fi

  if listcontains "${GRAPHIC_DRIVERS}" "freedreno"; then
    GALLIUM_DRIVERS+=" freedreno"
    V4L2_SUPPORT="yes"
    VAAPI_SUPPORT="no"
    VDPAU_SUPPORT="no"
  fi

  if listcontains "${GRAPHIC_DRIVERS}" "i915"; then
    GALLIUM_DRIVERS+=" i915"
    XORG_DRIVERS+=" intel"
    COMPOSITE_SUPPORT="yes"
    VAAPI_SUPPORT="yes"
  fi

  if listcontains "${GRAPHIC_DRIVERS}" "iris"; then
    GALLIUM_DRIVERS+=" iris"
    XORG_DRIVERS+=" intel"
    VULKAN_DRIVERS_MESA+=" intel"
    COMPOSITE_SUPPORT="yes"
    VAAPI_SUPPORT="yes"
  fi

  if listcontains "${GRAPHIC_DRIVERS}" "lima"; then
    GALLIUM_DRIVERS+=" kmsro lima"
    V4L2_SUPPORT="yes"
  fi

  if listcontains "${GRAPHIC_DRIVERS}" "mali"; then
    V4L2_SUPPORT="yes"
  fi

  if listcontains "${GRAPHIC_DRIVERS}" "nvidia"; then
    XORG_DRIVERS+=" nvidia"
    VULKAN_DRIVERS_CONFIG+=" nvidia"
    VDPAU_SUPPORT="yes"
  fi

  if listcontains "${GRAPHIC_DRIVERS}" "nvidia-legacy"; then
    XORG_DRIVERS+=" nvidia-legacy"
    VDPAU_SUPPORT="yes"
  fi

  if listcontains "${GRAPHIC_DRIVERS}" "nvidia-ng"; then
    VULKAN_DRIVERS_CONFIG+=" nvidia-ng"
    VAAPI_SUPPORT="yes"
  fi

  if listcontains "${GRAPHIC_DRIVERS}" "panfrost"; then
    GALLIUM_DRIVERS+=" kmsro panfrost"
    VULKAN_DRIVERS_MESA+=" panfrost"
    V4L2_SUPPORT="yes"
  fi

  if listcontains "${GRAPHIC_DRIVERS}" "r300"; then
    GALLIUM_DRIVERS+=" r300"
    XORG_DRIVERS+=" ati"
    LLVM_SUPPORT="yes"
    COMPOSITE_SUPPORT="yes"
    VDPAU_SUPPORT="yes"
  fi

  if listcontains "${GRAPHIC_DRIVERS}" "r600"; then
    GALLIUM_DRIVERS+=" r600"
    XORG_DRIVERS+=" ati"
    LLVM_SUPPORT="yes"
    COMPOSITE_SUPPORT="yes"
    VDPAU_SUPPORT="yes"
    VAAPI_SUPPORT="yes"
  fi

  if listcontains "${GRAPHIC_DRIVERS}" "radeonsi"; then
    GALLIUM_DRIVERS+=" radeonsi"
    XORG_DRIVERS+=" ati amdgpu"
    VULKAN_DRIVERS_MESA+=" amd"
    LLVM_SUPPORT="yes"
    COMPOSITE_SUPPORT="yes"
    VDPAU_SUPPORT="yes"
    VAAPI_SUPPORT="yes"
  fi

  if listcontains "${GRAPHIC_DRIVERS}" "vc4"; then
    GALLIUM_DRIVERS+=" vc4 v3d kmsro"
    VULKAN_DRIVERS_MESA+=" broadcom"
    V4L2_SUPPORT="yes"
    VAAPI_SUPPORT="no"
    VDPAU_SUPPORT="no"
  fi

  if listcontains "${GRAPHIC_DRIVERS}" "virtio"; then
    GALLIUM_DRIVERS+=" virgl"
  fi

  if listcontains "${GRAPHIC_DRIVERS}" "vmware"; then
    GALLIUM_DRIVERS+=" svga"
    XORG_DRIVERS+=" vmware"
    COMPOSITE_SUPPORT="yes"
  fi

  # VDPAU Support depends on X11
  if [ ! "${DISPLAYSERVER}" = "x11" ]; then
    VDPAU_SUPPORT="no"
  fi

  # remove duplicate entries
  GALLIUM_DRIVERS="$(echo ${GALLIUM_DRIVERS} | xargs -n1 | sort -u | xargs)"
  GRAPHIC_DRIVERS="$(echo ${GRAPHIC_DRIVERS} | xargs -n1 | sort -u | xargs)"
  XORG_DRIVERS="$(echo ${XORG_DRIVERS} | xargs -n1 | sort -u | xargs)"
  VULKAN_DRIVERS_MESA="$(echo ${VULKAN_DRIVERS_MESA} | xargs -n1 | sort -u | xargs)"
  VULKAN_DRIVERS_CONFIG+=" ${VULKAN_DRIVERS_MESA}"
  VULKAN_DRIVERS_CONFIG="$(echo ${VULKAN_DRIVERS_CONFIG} | xargs -n1 | sort -u | xargs)"
}


================================================
FILE: config/multithread
================================================
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv)

THREADCOUNT=${THREADCOUNT:-$(nproc)}

start_multithread_build() {
  local buildopts result=0

  # init thread control folder
  rm -rf "${THREAD_CONTROL}"
  mkdir -p "${THREAD_CONTROL}/locks"
  echo -1 >"${THREAD_CONTROL}/progress.prev"
  echo 0 >"${THREAD_CONTROL}/progress"
  touch "${THREAD_CONTROL}/status"

  # Increase file descriptors if building one thread/package
  [ "${THREADCOUNT}" = "0" ] && ulimit -n ${ULIMITN:-10240}

  # create a single log file by default for a single threaded build (or the builder is a masochist)
  if [ ${THREADCOUNT} -eq 1 -a "${ONELOG,,}" != "no" ] || [ "${ONELOG,,}" = "yes" ]; then
    buildopts+=" --no-log-burst"
  else
    mkdir -p "${THREAD_CONTROL}/logs"
    buildopts+=" --log-burst"
  fi
  buildopts+=" --log-combine ${LOGCOMBINE:-always}"

  [ "${AUTOREMOVE}" = "yes" ] && buildopts+=" --auto-remove"

  # When building addons, don't halt on error - keep building all packages/addons
  [ "${MTADDONBUILD}" = "yes" ] && buildopts+=" --continue-on-error" || buildopts+=" --halt-on-error"

  [ "${MTPROGRESS}" = "yes" ] && buildopts+=" --progress"
  [ "${MTVERBOSE}" = "yes" ] && buildopts+=" --verbose"
  [ "${MTDEBUG}" = "yes" ] && buildopts+=" --debug"
  if [ "${DISABLE_COLORS}" = "yes" ]; then
    buildopts+=" --colors=never"
  else
    buildopts+=" --colors=${MTCOLORS:-auto}"
  fi
  [ "${MTBOOKENDS}" = "no" ] && buildopts+=" --without-bookends" || buildopts+=" --with-bookends"
  [ "${MTIMMEDIATE}" = "no" ] && buildopts+=" --fail-after-active" || buildopts+=" --fail-immediately"

  buildopts+=" --stats-interval ${MTINTERVAL:-60}"

  # pipefail: return value of a pipeline is the value of the last (rightmost) command to exit with a non-zero status
  set -o pipefail

  ${SCRIPTS}/pkgjson | ${SCRIPTS}/genbuildplan.py --show-wants --with-json "${THREAD_CONTROL}"/plan.json \
      --build ${@} > "${THREAD_CONTROL}"/plan || result=1

  if [ ${result} -eq 0 ]; then
    save_build_config

    # export the following vars so that they will be available to subprocesses of pkgbuilder.py
    export ROOT SCRIPTS THREAD_CONTROL

    MTBUILDSTART=$(date +%s) MTWITHLOCKS=yes ${SCRIPTS}/pkgbuilder.py \
        --plan "${THREAD_CONTROL}"/plan.json \
        --joblog "${THREAD_CONTROL}"/joblog \
        --loadstats "${THREAD_CONTROL}"/loadstats \
        --max-procs ${THREADCOUNT} ${buildopts} || result=1

    [ ${result} -eq 0 -a -f "${THREAD_CONTROL}"/history ] && echo && cat "${THREAD_CONTROL}"/history | ${ROOT}/tools/mtstats.py

    rm -f "${THREAD_CONTROL}/parallel.pid"
  fi

  set +o pipefail

  return ${result}
}


================================================
FILE: config/noobs/os.json
================================================
{
  "name": "@DISTRONAME@_@PROJECT@",
  "version": "@LIBREELEC_VERSION@",
  "release_date": "@RELEASE_DATE@",
  "kernel": "@KERNEL_VERSION@",
  "description": "@DESCRIPTION@",
  "username": "root",
  "password": "@ROOT_PASSWORD@",
  "supported_hex_revisions": "@NOOBS_HEX@",
  "supported_models": [@NOOBS_SUPPORTED_MODELS@]
}


================================================
FILE: config/noobs/partition_setup.sh
================================================
#!/bin/sh -x

# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)

MOUNTPOINT="/tmp/LibreELEC-System"

md5sumCheck() {
  ( cd $MOUNTPOINT
    echo "checking MD5: $1"
    md5sum -c $1.md5
    if [ "$?" = "1" ]; then
      echo "#######################################################"
      echo "#                                                     #"
      echo "# LibreELEC failed md5 check - Installation will quit #"
      echo "#                                                     #"
      echo "#    Your original download was probably corrupt.     #"
      echo "#   Please visit libreelec.tv and get another copy    #"
      echo "#                                                     #"
      echo "#######################################################"
      exit 1
    fi
    rm -rf $1.md5
  )
}

if [ -z $part1 -o -z $part2 -o -z $id1 -o -z $id2 ]; then
  echo "error: part1, part2, id1 or id2 not specified"
  echo "actual values:"
  echo "part1:" $part1
  echo "part2:" $part2
  echo "id1  :" $id1
  echo "id2  :" $id2
  exit 1
fi

# create mountpoint
  mkdir -p $MOUNTPOINT

# mount needed partition
  mount $part1 $MOUNTPOINT

# check md5sum
  md5sumCheck kernel.img
  md5sumCheck SYSTEM

# create bootloader configuration
  echo "creating bootloader configuration..."
  echo "boot=$id1 disk=$id2 quiet @EXTRA_CMDLINE@" > $MOUNTPOINT/cmdline.txt

# cleanup mountpoint
  umount $MOUNTPOINT
  rmdir $MOUNTPOINT


================================================
FILE: config/noobs/partitions.json
================================================
{
  "partitions": [
    {
      "label":                     "System",
      "filesystem_type":           "FAT",
      "partition_size_nominal":    @SYSTEM_SIZE@,
      "want_maximised":            false,
      "uncompressed_tarball_size": 120,
      "mkfs_options":              ""
    },
    {
      "label":                     "Storage",
      "filesystem_type":           "ext4",
      "partition_size_nominal":    512,
      "want_maximised":            true,
      "uncompressed_tarball_size": 10,
      "mkfs_options":              ""
    }
  ]
}


================================================
FILE: config/optimize
================================================
# Linker hash-style is set to gnu via gcc default
LD_OPTIM="-Wl,--as-needed"

TARGET_CPPFLAGS=""
TARGET_CFLAGS="$TARGET_CFLAGS -Wall -pipe $PROJECT_CFLAGS"
TARGET_CXXFLAGS="$TARGET_CFLAGS"
TARGET_LDFLAGS="$TARGET_LDFLAGS $LD_OPTIM"
TARGET_LIBDIR="$SYSROOT_PREFIX/lib $SYSROOT_PREFIX/usr/lib"
TARGET_INCDIR="$SYSROOT_PREFIX/include $SYSROOT_PREFIX/usr/include"

HOST_CPPFLAGS=""
HOST_CFLAGS="-march=native -O2 -Wall -pipe -I$TOOLCHAIN/include"
HOST_CXXFLAGS="$HOST_CFLAGS"
HOST_LDFLAGS="-Wl,-rpath,$TOOLCHAIN/lib -L$TOOLCHAIN/lib"
HOST_INCDIR="$TOOLCHAIN/include /usr/include"

# work around Ubuntu default C*FLAGS 
# see https://wiki.ubuntu.com/ToolChain/CompilerFlags#A-Wformat_-Wformat-security
HOST_CFLAGS="$HOST_CFLAGS -Wno-format-security"
HOST_CXXFLAGS="$HOST_CXXFLAGS -Wno-format-security" 

# lto flags
FLAGS_OPTIM_LTO_NO_PARALLEL="-flto"
FLAGS_OPTIM_LTO_PARALLEL="-flto=${CONCURRENCY_MAKE_LEVEL}"
FLAGS_OPTIM_LTO_NO_FAT="-fno-fat-lto-objects"
FLAGS_OPTIM_LTO_FAT="-ffat-lto-objects"
FLAGS_OPTIM_LTO_OFF="-fno-lto"
LDFLAGS_OPTIM_LTO_COMMON="-fuse-linker-plugin"

# linker specific flags
LDFLAGS_OPTIM_LINKER_COMPILER_DEFAULT=""
LDFLAGS_OPTIM_LINKER_BFD="-fuse-ld=bfd"
LDFLAGS_OPTIM_LINKER_GOLD="-fuse-ld=gold"
LDFLAGS_OPTIM_LINKER_MOLD="-fuse-ld=mold"

# default compiler optimization
CFLAGS_OPTIM_DEFAULT="-O2 -fomit-frame-pointer -DNDEBUG"
CXXFLAGS_OPTIM_DEFAULT="$CFLAGS_OPTIM_DEFAULT"
# speed flag
CFLAGS_OPTIM_SPEED="-O3 -fomit-frame-pointer -DNDEBUG"
CXXFLAGS_OPTIM_SPEED="$CFLAGS_OPTIM_SPEED"
# size flag
CFLAGS_OPTIM_SIZE="-Os -fomit-frame-pointer -DNDEBUG"
CXXFLAGS_OPTIM_SIZE="$CFLAGS_OPTIM_SIZE"
# debug settings
CFLAGS_OPTIM_DEBUG="-ggdb -Og"
CXXFLAGS_OPTIM_DEBUG="$CFLAGS_OPTIM_DEBUG"
LDFLAGS_OPTIM_DEBUG="-ggdb"
# split debug settings (requires gold)
CFLAGS_OPTIM_DEBUG_SPLIT="-gdwarf-4 -gsplit-dwarf -Og"
CXXFLAGS_OPTIM_DEBUG_SPLIT="$CFLAGS_OPTIM_DEBUG_SPLIT"
LDFLAGS_OPTIM_DEBUG_SPLIT="-gdwarf-4 -Wl,--gdb-index"

# position-independent code
CFLAGS_OPTIM_PIC="-fPIC -DPIC"
CXXFLAGS_OPTIM_PIC="-fPIC -DPIC"
LDFLAGS_OPTIM_PIC="-fPIC"

# hardening support
# TODO: basiclly copied from debian 9, should adjust for LE
CFLAGS_OPTIM_HARDENING="-fstack-protector-strong -Wformat -Werror=format-security -fPIE"
CXXFLAGS_OPTIM_HARDENING="-fstack-protector-strong -Wformat -Werror=format-security -fPIE"
CPPFLAGS_OPTIM_HARDENING="-D_FORTIFY_SOURCE=2"
LDFLAGS_OPTIM_HARDENING="-Wl,-z,relro -Wl,-z,now"

# add distro specific library dirs
if [ -z "$HOST_LIBDIR" ]; then
  HOST_LIBDIR="$TOOLCHAIN/lib"

  # ubuntu/debian specific "multiarch support"
  export MACHINE_HARDWARE_NAME="$(uname -m)"
  FAMILY_TRIPLET=$($LOCAL_CC -print-multiarch)
  if [ -n "$FAMILY_TRIPLET" ]; then
    if [ -d /lib/$FAMILY_TRIPLET ]; then
      HOST_LIBDIR="$HOST_LIBDIR /lib/$FAMILY_TRIPLET"
    fi
    if [ -d /usr/lib/$FAMILY_TRIPLET ]; then
      HOST_LIBDIR="$HOST_LIBDIR /usr/lib/$FAMILY_TRIPLET"
    fi
  fi

  # default multiarch support
  case "${MACHINE_HARDWARE_NAME}" in
    i*86)
      if [ -d /lib32 ]; then
        HOST_LIBDIR="$HOST_LIBDIR /lib32"
      fi
      if [ -d /usr/lib32 ]; then
        HOST_LIBDIR="$HOST_LIBDIR /usr/lib32"
      fi
    ;;
    x86_64)
      if [ -d /lib64 ]; then
        HOST_LIBDIR="$HOST_LIBDIR /lib64"
      fi
      if [ -d /usr/lib64 ]; then
        HOST_LIBDIR="$HOST_LIBDIR /usr/lib64"
      fi
    ;;
  esac

  # default dirs
  export HOST_LIBDIR="$HOST_LIBDIR /lib /usr/lib"
fi


================================================
FILE: config/options
================================================
# Do not build as root. Ever.
if [[ "${EUID}" -eq 0 ]]; then
  echo "Building as the root user is NOT supported. Use a regular user account for the build." 1>&2
  exit 1
fi

# Spaces in paths are verboten
if [[ ${PWD} =~ [[:space:]] ]]; then
  echo "Current PWD: \"${PWD}\"" 1>&2
  echo 1>&2
  echo "Building in a folder that includes spaces is NOT supported. Use a folder without spaces." 1>&2
  exit 1
fi

# set default language for buildsystem
export LC_ALL=C

# set default independent variables
ROOT="${PWD}"
DISTRO_DIR="${ROOT}/distributions"
PROJECT_DIR="${ROOT}/projects"

# determines DISTRO, if not forced by user
DISTRO="${DISTRO:-EmuELEC}"

# determines PROJECT, if not forced by user
export PROJECT="${PROJECT:-Amlogic-ce}"

# determines DEVICE, if not forced by user
export DEVICE="${DEVICE:-Amlogic-ng}"

# default to Generic device if building Generic project without device set
if [ "${PROJECT}" = "Generic" -a -z "${DEVICE}" ]; then
  export DEVICE="Generic"
fi

# determines TARGET_ARCH, if not forced by user
export ARCH="${ARCH:-aarch64}"
TARGET_ARCH="${ARCH}"

# include arm-mem package on arm
if [ "${TARGET_ARCH}" = "arm" ]; then
  ARM_MEM_SUPPORT="yes"
else
  ARM_MEM_SUPPORT="no"
fi

# include helper functions
. config/functions

# read DISTRO version information
. "${DISTRO_DIR}/${DISTRO}/version" || die "\nERROR: No distro version present\n"

# read DISTRO options
if [ -f "${DISTRO_DIR}/${DISTRO}/options" ]; then
  . "${DISTRO_DIR}/${DISTRO}/options"
fi

# read PROJECT options
if [ -f "${PROJECT_DIR}/${PROJECT}/options" ]; then
  . "${PROJECT_DIR}/${PROJECT}/options"
fi

# read DEVICE options
if [ -f "${PROJECT_DIR}/${PROJECT}/devices/${DEVICE}/options" ]; then
  . "${PROJECT_DIR}/${PROJECT}/devices/${DEVICE}/options"
fi

# read architecture defaults
if [ -f "config/arch.${TARGET_ARCH}" ]; then
  . "config/arch.${TARGET_ARCH}"
fi

# projects can set KERNEL_NAME (kernel.img)
KERNEL_NAME="${KERNEL_NAME:-KERNEL}"

LINUX_DEPENDS="${PROJECT_DIR}/${PROJECT}/linux ${PROJECT_DIR}/${PROJECT}/patches/linux ${PROJECT_DIR}/${PROJECT}/packages/linux ${ROOT}/packages/linux"
[ -n "${DEVICE}" ] && LINUX_DEPENDS+=" ${PROJECT_DIR}/${PROJECT}/devices/${DEVICE}/linux ${PROJECT_DIR}/${PROJECT}/devices/${DEVICE}/patches/linux ${PROJECT_DIR}/${PROJECT}/devices/${DEVICE}/packages/linux"

# Need to point to your actual cc
# If you have ccache installed, take care that LOCAL_CC does not point to it
[ -z "${LOCAL_CC}" ] && export LOCAL_CC="$(command -v gcc)"

if [ -z "${LOCAL_CC}" ]; then
  die "***** Please install gcc - run scripts/checkdeps *****" "127"
fi

# Need to point to your actual g++
# If you have ccache installed, take care that LOCAL_CXX does not point to it
[ -z "${LOCAL_CXX}" ] && export LOCAL_CXX="$(command -v g++)"

# verbose compilation mode (yes/no)
VERBOSE="${VERBOSE:-yes}"

# Concurrency make level (-j option)
#  Try values between 1 and number of processor cores present.
#  default: use all cores
[ -z "${CONCURRENCY_MAKE_LEVEL}" ] && export CONCURRENCY_MAKE_LEVEL=$(nproc)
[ -z "${CONCURRENCY_LOAD}" ] && export CONCURRENCY_LOAD=$(python3 -c "import os; print(f'{os.cpu_count() * 1.5:.2f}')")

# cache size for ccache
# Set the maximum size of the files stored in the cache. You can specify a
# value in gigabytes, megabytes or kilobytes by appending a G, M or K to the
# value. The default is gigabytes. The actual value stored is rounded down to
# the nearest multiple of 16 kilobytes.  Keep in mind this per project .ccache
# directory.
CCACHE_CACHE_SIZE="20G"

# compression level for ccache
# This option determines the level at which ccache will compress object files
# using the real-time compression algorithm Zstandard. It only has effect if
# compression is enabled (which it is by default). Zstandard is extremely fast
# for decompression and very fast for compression for lower compression
# levels. The default is 0. The value 0 means that ccache will choose a
# suitable zstd level, currently 1.
CCACHE_COMPRESSLEVEL="0"

# set addon paths
if [ -z "$ADDON_PATH" ]; then
  if [ -n "$ADDON_PROJECT" ]; then
    ADDON_PATH="$ADDON_VERSION/$ADDON_PROJECT/$TARGET_ARCH"
  else
    ADDON_PATH="$ADDON_VERSION/$TARGET_ARCH"
  fi
fi
if [ -z "$ADDON_URL" ]; then
  ADDON_URL="$ADDON_SERVER_URL/$ADDON_PATH"
fi

# read local persistent options from $ROOT if available
if [ -f "${ROOT}/.coreelec/options" ]; then
  . "${ROOT}/.coreelec/options"
fi

# read global persistent options from $HOME if available
if [ -f "${HOME}/.coreelec/options" ]; then
  . "${HOME}/.coreelec/options"
fi

if [ "${LOCAL_CCACHE_SUPPORT}" = "yes" ] && [ -z "${CCACHE_DISABLE}" ]; then
  # like LOCAL_CC check for local ccache only on the very first
  # call to config/options, before toolchain has been added to the path,
  # otherwise we might pick up ccache from toolchain/bin here
  if [ -z "${LOCAL_CCACHE}" ] && [ "${LOCAL_CCACHE_CHECKED}" != "yes" ]; then
    export LOCAL_CCACHE="$(command -v ccache)"
    export LOCAL_CCACHE_CHECKED="yes"
  fi
else
  export LOCAL_CCACHE=""
fi

# overwrite OEM_SUPPORT via commandline
if [ "${OEM}" = "yes" -o "${OEM}" = "no" ]; then
  OEM_SUPPORT="${OEM}"
fi

check_config

. config/graphic
. config/path $1

# Multilib Magics
if [ "$ARCH" = "aarch64" ]; then
  . config/options32
fi

## package processing

# If the package caches are unset, then populate them
init_package_cache

if [ -z "${DEFAULT_PYTHON_VERSION+set}" ]; then
  export DEFAULT_PYTHON_VERSION="$(get_pkg_variable Python3 PKG_PYTHON_VERSION)"
fi

# set package metadata
source_package "${1}"


================================================
FILE: config/options32
================================================
# This command requires BASH >= v4.0, since we're using Ubuntu 20 as a baseline, this should not be a problem
# This reads those options into an array, one element per line, and keep empty line as is, also removing trailing \n
readarray -t OPTIONS32 < <(
  ARCH=arm
  TARGET_ARCH=arm
  # read DEVICE options
  if [ -f "${PROJECT_DIR}/${PROJECT}/devices/${DEVICE}/options" ]; then
    . "${PROJECT_DIR}/${PROJECT}/devices/${DEVICE}/options"
  fi
  # read architecture defaults
  if [ -f "config/arch.${TARGET_ARCH}" ]; then
    . "config/arch.${TARGET_ARCH}"
  fi
  echo $TARGET_ABI
  echo $TARGET_GCC_ARCH
  echo $TARGET_CFLAGS
  echo $TARGET_LDFLAGS
  echo $TARGET_ARCH_GCC_OPTS
  echo $TARGET_CPU
  echo $TARGET_FPU
  echo $TARGET_SUBARCH
)

LIB32_TARGET_ABI="${OPTIONS32[0]}"
LIB32_TARGET_GCC_ARCH="${OPTIONS32[1]}"
LIB32_TARGET_CFLAGS="${OPTIONS32[2]}"
LIB32_TARGET_LDFLAGS="${OPTIONS32[3]}"
LIB32_TARGET_ARCH_GCC_OPTS="${OPTIONS32[4]}"
LIB32_TARGET_CPU="${OPTIONS32[5]}"
LIB32_TARGET_FPU="${OPTIONS32[6]}"
LIB32_TARGET_SUBARCH="${OPTIONS32[7]}"
LIB32_TARGET_NAME="${LIB32_TARGET_GCC_ARCH}-emuelec-linux-gnu${LIB32_TARGET_ABI}"
LIB32_SYSROOT_PREFIX="${TOOLCHAIN}/${LIB32_TARGET_NAME}/sysroot"
LIB32_TARGET_PREFIX="$TOOLCHAIN/bin/$LIB32_TARGET_NAME-"

LIB32_TARGET_CFLAGS="$LIB32_TARGET_CFLAGS -Wall -pipe $PROJECT_CFLAGS"
LIB32_TARGET_CXXFLAGS="$LIB32_TARGET_CFLAGS"
LIB32_TARGET_LDFLAGS="$LIB32_TARGET_LDFLAGS $LD_OPTIM"

unset OPTIONS32


================================================
FILE: config/path
================================================
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)

set -e

# setup initial directorys (relative to root)
  CONFIG=config
  SCRIPTS=scripts
  PACKAGES=packages
  SOURCES=${SOURCES_DIR:-$ROOT/sources}
  BUILD_ROOT=${BUILD_DIR:-$ROOT}
  BUILD_BASE=build
  TARGET_IMG=${TARGET_DIR:-$ROOT/target}
  ADDONS=addons

[ -z "${HOST_NAME}" ] && export HOST_NAME="$($LOCAL_CC -dumpmachine)"
TARGET_NAME=$TARGET_GCC_ARCH-libreelec-linux-gnu${TARGET_ABI}

BUILD=${BUILD_ROOT}/${BUILD_BASE}.${DISTRONAME}-${DEVICE:-$PROJECT}.${TARGET_ARCH}-${OS_MAJOR}

if [ -n "$BUILD_SUFFIX" ]; then
  BUILD=$BUILD-$BUILD_SUFFIX
fi

THREAD_CONTROL=${BUILD}/.threads

TARGET_ADDONS="$TARGET_IMG/$ADDONS/$ADDON_PATH"
ADDON_BUILD="$BUILD/$ADDONS/$1"
STAMPS=$BUILD/.stamps
STAMPS_INSTALL=$BUILD/image/.stamps
DOCS=DOCS
TOOLCHAIN=$BUILD/toolchain
SYSROOT_PREFIX=$TOOLCHAIN/$TARGET_NAME/sysroot
LIB_PREFIX=$SYSROOT_PREFIX/usr
TARGET_PREFIX=$TOOLCHAIN/bin/$TARGET_NAME-

FAKEROOT_SCRIPT=$BUILD/.fakeroot

if [ -z "$INSTALL" ]; then
  INSTALL=$BUILD/image/system
fi

. config/sources

MAKE="$TOOLCHAIN/bin/make"

XORG_PATH_DRI=/usr/lib/dri
XORG_PATH_XKB=/usr/share/X11/xkb
XORG_PATH_XKB_OUTPUT=/var/lib/xkb
XORG_PATH_RGB=/usr/lib/X11/rgb
XORG_PATH_MODULES=/usr/lib/xorg/modules
XORG_PATH_DRIVERS=/usr/lib/xorg/modules/drivers

. config/optimize

# use different toolchain for 64/32 split builds
if [ -z "$KERNEL_TOOLCHAIN" -a "$TARGET_KERNEL_ARCH" = "arm64" -a "$TARGET_ARCH" = "arm" ]; then
  KERNEL_TOOLCHAIN="aarch64"
fi
if [ -n "$KERNEL_TOOLCHAIN" ]; then
  TARGET_KERNEL_PREFIX=$KERNEL_TOOLCHAIN-none-elf-
else
  TARGET_KERNEL_PREFIX=$TARGET_PREFIX
fi

if [ -z "$CCACHE_DIR" ]; then
  export CCACHE_DIR=$BUILD/.ccache
fi

# keep a copy of ccache dir used for toolchain ccache
export BUILD_CCACHE_DIR="${CCACHE_DIR}"

# local ccache dir in case we build early packages with local ccache
if [ -z "${LOCAL_CCACHE_DIR}" ]; then
  export LOCAL_CCACHE_DIR="${BUILD}/.ccache-local"
fi

if [[ -z "$PATH" || ( "$PATH" != "$TOOLCHAIN/bin:$TOOLCHAIN/sbin" && "$PATH" = "${PATH#$TOOLCHAIN/bin:$TOOLCHAIN/sbin:}" ) ]]; then
  export PATH="$TOOLCHAIN/bin:$TOOLCHAIN/sbin${PATH:+":$PATH"}"
fi

# redirect formatted output
export BUILD_INDENT_SIZE=4
SILENT_OUT=3
VERBOSE_OUT=4

if [ "$VERBOSE" = yes ]; then
  exec 3>&1
  exec 4>&1
else
  exec 3>&2
  exec 4>/dev/null
fi

unset LD_LIBRARY_PATH

# multilib? nah
unset CONFIG_SITE

# Ignore custom python installs...
unset PYTHONHOME PYTHONPATH PYTHONSTARTUP
export PYTHONNOUSERSITE=yes #disable PEP 370

# Fix #4737
unset PYTHONDONTWRITEBYTECODE


================================================
FILE: config/show_config
================================================
#!/bin/bash

show_config() {
  # load graphic configuration
  get_graphicdrivers

  dashes="==========================="
  config_message="\n ${dashes}${dashes}${dashes}"
  config_message+="\n Configuration for ${DISTRONAME} "
  if [ "${OFFICIAL}" = "yes" ]; then
    config_message+="(official)"
  else
    config_message+="(community)"
  fi
  config_message+="\n ${dashes}${dashes}${dashes}"

  # Build options

  config_message+="\n\n Buildsystem configuration:"
  config_message+="\n ${dashes}${dashes}"

  config_message+="\n - CPU:\t\t\t\t\t ${TARGET_CPU}"
  config_message+="\n - Kernel Architecture:\t\t\t ${TARGET_KERNEL_ARCH}"
  config_message+="\n - Userland Architecture:\t\t ${TARGET_ARCH}"
  if [ -n "${TARGET_FLOAT}" ]; then
    config_message+="\n - FLOAT:\t\t\t\t ${TARGET_FLOAT}"
  fi
  if [ -n "${TARGET_FPU}" ]; then
    config_message+="\n - FPU:\t\t\t\t\t ${TARGET_FPU}"
  fi
  config_message+="\n - CPU features:\t\t\t ${TARGET_FEATURES}"
  config_message+="\n - LTO (Link Time Optimization) support: ${LTO_SUPPORT}"
  config_message+="\n - GOLD (Google Linker) Support:\t ${GOLD_SUPPORT}"
  config_message+="\n - MOLD (Modern Linker) Support:\t ${MOLD_SUPPORT}"
  config_message+="\n - Default Linker:\t\t\t ${DEFAULT_LINKER}"
  config_message+="\n - LLVM support:\t\t\t ${LLVM_SUPPORT}"
  config_message+="\n - DEBUG:\t\t\t\t ${DEBUG:-no}"
  config_message+="\n - CFLAGS:\t\t\t\t ${TARGET_CFLAGS}"
  config_message+="\n - LDFLAGS:\t\t\t\t $(sed 's/^ *//' <<< ${TARGET_LDFLAGS})"
  config_message+="\n - Local Ccache:\t\t\t ${LOCAL_CCACHE:-no}"

  # Misc. hardware configuration

  config_message+="\n\n Misc. hardware configuration:"
  config_message+="\n ${dashes}${dashes}"

  config_message+="\n - ALSA support:\t\t\t ${ALSA_SUPPORT}"
  config_message+="\n - Pulseaudio support:\t\t\t ${PULSEAUDIO_SUPPORT}"
  config_message+="\n - Bluetooth support:\t\t\t ${BLUETOOTH_SUPPORT}"

  for config_driver in ${ADDITIONAL_DRIVERS}; do
    config_message+="\n - Include driver:\t\t\t ${config_driver}"
  done

  if [ "${DRIVER_ADDONS_SUPPORT}" = "yes" ]; then
    for config_driver_addons in ${DRIVER_ADDONS}; do
      config_message+="\n - Include driver add-ons:\t\t ${config_driver_addons}"
    done
  fi

  for config_firmware in ${FIRMWARE}; do
    config_message+="\n - Include firmware:\t\t\t ${config_firmware}"
  done

  # Misc. Filesystems

  config_message+="\n\n Misc. Filesystems:"
  config_message+="\n ${dashes}${dashes}"

  config_message+="\n - Swap Support:\t\t\t ${SWAP_SUPPORT}"
  if [ "${SWAP_SUPPORT}" = "yes" ]; then
    config_message+="\n   - Swapfile default size:\t\t ${SWAPFILESIZE}"
  fi
  config_message+="\n - exFAT Support (via Fuse):\t\t ${EXFAT}"
  config_message+="\n - NTFS Support (via Fuse):\t\t ${NTFS3G}"
  config_message+="\n - Install HFS Tools:\t\t\t ${HFSTOOLS}"

  # Network service configuration

  config_message+="\n\n Network service configuration:"
  config_message+="\n ${dashes}${dashes}"

  config_message+="\n - Avahi (Zeroconf) support:\t\t ${AVAHI_DAEMON}"
  config_message+="\n - NFS mounting support:\t\t ${NFS_SUPPORT}"
  config_message+="\n - SAMBA mounting support:\t\t ${SAMBA_SUPPORT}"
  config_message+="\n - SAMBA server support:\t\t ${SAMBA_SERVER}"
  config_message+="\n - SFTP server support:\t\t\t ${SFTP_SERVER}"
  config_message+="\n - OpenVPN support:\t\t\t ${OPENVPN_SUPPORT}"
  config_message+="\n - WireGuard support:\t\t\t ${WIREGUARD_SUPPORT}"

  # Graphic configuration

  config_message+="\n\n Graphic configuration:"
  config_message+="\n ${dashes}${dashes}"
  config_message+="\n - Graphic Drivers:\t\t\t ${GRAPHIC_DRIVERS}"
  config_message+="\n - Display Server:\t\t\t ${DISPLAYSERVER}"
  if [ "${DISPLAYSERVER}" = "x11" ] ; then
    for drv in ${XORG_DRIVERS}; do
      XORG_DRIVERS_CONFIG+="xf86-video-${drv} "
    done
    config_message+="\n - X.Org Graphic Drivers:\t\t ${XORG_DRIVERS_CONFIG}"
    config_message+="\n - X.Org Composite support:\t\t ${COMPOSITE_SUPPORT}"
  fi
  config_message+="\n - Window Manager / Compositor:\t\t ${WINDOWMANAGER}"
  config_message+="\n - OpenGL (GLX) support (provider):\t ${OPENGL_SUPPORT}"
    [ "${OPENGL}" != "no" ] && config_message+=" (${OPENGL})"
  config_message+="\n - OpenGL ES support (provider):\t ${OPENGLES_SUPPORT}"
    [ "${OPENGLES}" != "no" ] && config_message+=" (${OPENGLES})"
  config_message+="\n - Vulkan API support (provider):\t ${VULKAN_SUPPORT}"
    [ "${VULKAN}" != "no" ] && config_message+=" (${VULKAN})"
  if [ "${VULKAN_SUPPORT}" = "yes" ]; then
    config_message+="\n - Vulkan Graphic Drivers:\t\t ${VULKAN_DRIVERS_CONFIG}"
  fi

  # Video Acceleration configuration

  config_message+="\n\n Video Acceleration configuration:"
  config_message+="\n ${dashes}${dashes}"
  config_message+="\n - VA-API Support:\t\t\t ${VAAPI_SUPPORT}"
  config_message+="\n - VDPAU Support:\t\t\t ${VDPAU_SUPPORT}"

  # OS configuration

  config_message+="\n\n OS configuration:"
  config_message+="\n ${dashes}${dashes}"

  config_message+="\n - OEM Support:\t\t\t\t ${OEM_SUPPORT}"
  config_message+="\n - Default ROOT Password:\t\t ${ROOT_PASSWORD}"
  config_message+="\n - Bootloader:\t\t\t\t ${BOOTLOADER}"
  config_message+="\n - UDevil support:\t\t\t ${UDEVIL}"
  config_message+="\n - Installer support:\t\t\t ${INSTALLER_SUPPORT}"
  for config_package in ${ADDITIONAL_PACKAGES}; do
    config_message+="\n - Include package:\t\t\t ${config_package}"
  done

  # Distribution specific configuration
  # show_distro_config() should be included in one of:
  #   $DISTRO/config/functions
  #   $DISTRO/show_config

  if [ -f distributions/${DISTRO}/show_config ]; then
    . distributions/${DISTRO}/show_config
  fi
  if [ "$(type -t show_distro_config)" = "function" ]; then
    show_distro_config
  fi

  config_message+="\n\n ${dashes}${dashes}${dashes}"
  config_message+="\n End Configuration for ${DISTRONAME}"
  config_message+="\n ${dashes}${dashes}${dashes}"
  config_message+="\n\n\n"

  echo -e "${config_message}"
}


================================================
FILE: config/sources
================================================
# Sourceforge download site
  SOURCEFORGE_SRC="https://prdownloads.sourceforge.net"


================================================
FILE: create_tar.sh
================================================
#!/bin/sh

git archive --format=tar --prefix=LibreELEC-source-$1/ tags/$1 | bzip2 > LibreELEC-source-$1.tar.bz2


================================================
FILE: distributions/CoreELEC/options
================================================
### DISTRO INFORMATION ###

# Name of the Distro to build (full name, without special characters)
  DISTRONAME="CoreELEC"

# short project description
  DESCRIPTION="CoreELEC is a fast and user-friendly Kodi Entertainment Center distribution."


### USER INTERFACE SETTINGS ###

# Welcome Message for e.g. SSH Server (up to 5 Lines)
  GREETING0="##############################################"
  GREETING1="#                  CoreELEC                  #"
  GREETING2="#            https://coreelec.org            #"
  GREETING3="##############################################"
  GREETING4=""

# Root password to integrate in the target system
  ROOT_PASSWORD="coreelec"

# Partition labels for USB/SD installation media
  DISTRO_BOOTLABEL="COREELEC"
  DISTRO_DISKLABEL="STORAGE"


### BUILDSYSTEM SETTINGS ####

# LTO (Link Time Optimization) support
  LTO_SUPPORT="yes"

# GOLD (Google Linker) support
  GOLD_SUPPORT="yes"

# MOLD (Modern Linker) support
  MOLD_SUPPORT="no"

# default linker (bfd / gold / mold)
  DEFAULT_LINKER="gold"

# HARDENING (security relevant linker and compiler flags) support
  HARDENING_SUPPORT="no"

# Default supported get handlers (archive, git, file etc.)
  GET_HANDLER_SUPPORT="archive"

# use local ccache on build host, if available, for early package
# builds before ccache has been built
  LOCAL_CCACHE_SUPPORT="yes"

### OS CONFIGURATION ###

# Install glibc locales to the build (yes / no)
  GLIBC_LOCALES="yes"

# additional drivers to install:
# for a list of additional drivers see packages/linux-drivers
# Space separated list is supported,
# e.g. ADDITIONAL_DRIVERS="DRIVER1 DRIVER2"
  ADDITIONAL_DRIVERS="gpu-aml openvfd-driver media_modules-aml wifi_dummy-aml ap6xxx-aml
                     uwe5631-aml RTL8812AU RTL8822BU-aml RTL8822CS-aml RTL8822CU-aml
                     RTL8852BS-aml RTL8152-aml w1-aml"

# Default size of system partition, in MB, eg. 512
  SYSTEM_SIZE=512

# Default system partition offset, in sectors, eg. 2048
  SYSTEM_PART_START=8192

# build with swap support (yes / no)
  SWAP_SUPPORT="yes"

# swap support enabled per default (yes / no)
  SWAP_ENABLED_DEFAULT="no"

# swapfile size if SWAP_SUPPORT=yes in MB
  SWAPFILESIZE="128"

# debug tty path
  DEBUG_TTY="/dev/ttyS0"


### KODI SETTINGS ###
# Mediacenter to use (kodi / no)
  MEDIACENTER="kodi"

# Skins to install (Estuary)
# Space separated list is supported,
# e.g. SKINS="Estuary"
  SKINS="Estuary"

# Default Skin (Estuary)
  SKIN_DEFAULT="Estuary"

# install extra subtitle Fonts for KODI (yes / no)
  KODI_EXTRA_FONTS="yes"

# build and install PulseAudio support (yes / no)
  PULSEAUDIO_SUPPORT="yes"

# build and install pipewire support (yes / no)
  PIPEWIRE_SUPPORT="no"

# build and install eSpeak-NG support (yes / no)
  ESPEAK_SUPPORT="no"

# build and install with BluRay support (yes / no)
  KODI_BLURAY_SUPPORT="yes"

# build and install with BD+ support
# (BD+ decryption support in KODI) (yes / no)
  BLURAY_BDPLUS_SUPPORT="yes"

# build and install with AACS support
# (BD decryption support in KODI) (yes / no)
  BLURAY_AACS_SUPPORT="yes"

# build and install with DVDCSS support
# (DVD decryption support in KODI) (yes / no)
  KODI_DVDCSS_SUPPORT="yes"

# build and install bluetooth support (yes / no)
  BLUETOOTH_SUPPORT="yes"

# build and install with KODI webfrontend (yes / no)
  KODI_WEBSERVER_SUPPORT="yes"

# build and install Avahi (Zeroconf) daemon (yes / no)
  AVAHI_DAEMON="yes"

# build with UPnP support (yes / no)
  KODI_UPNP_SUPPORT="yes"

# build with MySQL support (mariadb / none)
  KODI_MYSQL_SUPPORT="mariadb"

# build xbmc with optical drive support (yes / no)
  KODI_OPTICAL_SUPPORT="yes"

# build with AirPlay support (stream videos from iDevices to KODI) (yes / no)
  KODI_AIRPLAY_SUPPORT="yes"

# build with AirTunes support (stream music from iDevices to KODI) (yes / no)
  KODI_AIRTUNES_SUPPORT="yes"

# build with libnfs support (mounting nfs shares with KODI) (yes / no)
  KODI_NFS_SUPPORT="yes"

# build with Samba Client support (mounting SAMBA shares with KODI) (yes / no)
  KODI_SAMBA_SUPPORT="yes"

# build kodi with alsa support (yes/no)
  KODI_ALSA_SUPPORT="yes"

# build kodi with pulseaudio support (yes/no)
  KODI_PULSEAUDIO_SUPPORT="yes"

# build kodi with pipewire support (yes/no)
  KODI_PIPEWIRE_SUPPORT="no"

### KODI ADDONS ###

# Distribution Specific source location
  DISTRO_MIRROR="http://sources.coreelec.org http://sources.libreelec.tv/mirror"
  DISTRO_SRC="http://sources.libreelec.tv/$LIBREELEC_VERSION"

# Addon Server Url
  ADDON_SERVER_URL="https://addons.coreelec.org"

# ID of the default addon repository
  ADDON_REPO_ID="repository.coreelec"

# Name of the default addon repository
  ADDON_REPO_NAME="CoreELEC Add-ons"

# set the addon dirs
  ADDON_PATH="$DEVICE/$ADDON_VERSION/$TARGET_ARCH"

# Settings package name - blank if not required
  DISTRO_PKG_SETTINGS="CoreELEC-settings"
  DISTRO_PKG_SETTINGS_ID="service.coreelec.settings"


### ADDITIONAL PROGRAMS / FUNCTIONS ###

# Testpackages for development (yes / no)
  TESTING="no"

# Configure debug groups (space delimited key=value pairs, with each value comma-delimited) and default group when DEBUG=yes
# Use ! or - prefix to prevent a dependent package from being built with debug. Add + suffix to build dependenencies with debug.
  DEBUG_GROUPS="kodi+=kodi+,kodi-platform+,p8-platform+,!mesa"
  DEBUG_GROUP_YES="kodi+"

# wireless daemon to use (wpa_supplicant/iwd)
  WIRELESS_DAEMON="wpa_supplicant"

# build and install iSCSI support - iscsistart (yes / no)
  ISCSI_SUPPORT="no"

# build with NFS support (mounting nfs shares via the OS) (yes / no)
  NFS_SUPPORT="yes"

# build with Samba Client support (mounting samba shares via the OS) (yes / no)
  SAMBA_SUPPORT="yes"

# build and install Samba Server (yes / no)
  SAMBA_SERVER="yes"

# build and install SFTP Server (yes / no)
  SFTP_SERVER="yes"

# build a
Download .txt
Showing preview only (483K chars total). Download the full file or copy to clipboard to get everything.
gitextract_da2ktlda/

├── .editorconfig
├── .github/
│   ├── FUNDING.yml
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.md
│   │   ├── config.yml
│   │   ├── feature_request.md
│   │   └── other-issue.md
│   └── config.yml
├── .gitignore
├── CHANGELOG
├── CONTRIBUTING.md
├── Makefile
├── README.md
├── config/
│   ├── addon/
│   │   ├── dummy.xml
│   │   ├── xbmc.broken.xml
│   │   ├── xbmc.python.module.xml
│   │   ├── xbmc.python.script.xml
│   │   ├── xbmc.service.library.xml
│   │   ├── xbmc.service.pluginsource.xml
│   │   └── xbmc.service.xml
│   ├── arch.aarch64
│   ├── arch.arm
│   ├── arch.x86_64
│   ├── docker/
│   │   ├── changelog.txt
│   │   ├── package.mk
│   │   └── source/
│   │       ├── bin/
│   │       │   └── docker
│   │       ├── default.py
│   │       ├── resources/
│   │       │   ├── language/
│   │       │   │   └── English/
│   │       │   │       └── strings.po
│   │       │   └── settings.xml
│   │       └── system.d/
│   │           └── docker.service
│   ├── functions
│   ├── graphic
│   ├── multithread
│   ├── noobs/
│   │   ├── marketing/
│   │   │   ├── slides/
│   │   │   │   └── noobs.psd
│   │   │   └── slides_vga/
│   │   │       └── noobs_vga.psd
│   │   ├── os.json
│   │   ├── partition_setup.sh
│   │   └── partitions.json
│   ├── optimize
│   ├── options
│   ├── options32
│   ├── path
│   ├── show_config
│   └── sources
├── create_tar.sh
├── distributions/
│   ├── CoreELEC/
│   │   ├── options
│   │   ├── show_config
│   │   ├── splash/
│   │   │   ├── Amlogic-ne/
│   │   │   │   └── progress/
│   │   │   │       └── splash-1080-config
│   │   │   └── Amlogic-ng/
│   │   │       └── progress/
│   │   │           └── splash-1080-config
│   │   └── version
│   ├── EmuELEC/
│   │   ├── options
│   │   ├── show_config
│   │   ├── splash/
│   │   │   ├── Amlogic-ne/
│   │   │   │   └── progress/
│   │   │   │       └── splash-1080-config
│   │   │   ├── Amlogic-ng/
│   │   │   │   └── progress/
│   │   │   │       └── splash-1080-config
│   │   │   └── Amlogic-no/
│   │   │       └── progress/
│   │   │           └── splash-1080-config
│   │   └── version
│   └── LibreELEC/
│       ├── kernel_options
│       ├── options
│       ├── show_config
│       └── version
├── licenses/
│   ├── 7-Zip.txt
│   ├── APL-1.0.txt
│   ├── APSL-2.0.txt
│   ├── APSL.txt
│   ├── ATI.txt
│   ├── Apache-2.0.txt
│   ├── Artistic.txt
│   ├── BSD-1-Clause.txt
│   ├── BSD-2-Clause.txt
│   ├── BSD-3-Clause.txt
│   ├── BSD-4-Clause.txt
│   ├── BSL.txt
│   ├── Clarified_Artistic.txt
│   ├── FDL.txt
│   ├── FDL1_2.txt
│   ├── FDL1_3.txt
│   ├── FLIRC.txt
│   ├── GPL-1.0-only.txt
│   ├── GPL-2.0-only.txt
│   ├── GPL-2.0-or-later.txt
│   ├── GPL-3.0-only.txt
│   ├── GPL-3.0-or-later.txt
│   ├── HIDAPI-orig.txt
│   ├── ISC.txt
│   ├── Info-ZIP.txt
│   ├── LGPL-2.0-only.txt
│   ├── LGPL-2.0-or-later.txt
│   ├── LGPL-2.1-only.txt
│   ├── LGPL-2.1-or-later.txt
│   ├── LGPL-3.0-only.txt
│   ├── LGPL-3.0-or-later.txt
│   ├── LibPNG2.txt
│   ├── MIT.txt
│   ├── MIT_Modified.txt
│   ├── MPL-1.1.txt
│   ├── MPL-2.0.txt
│   ├── NVIDIA.txt
│   ├── NextPVR.txt
│   ├── OFL-1.1.txt
│   ├── QCA.txt
│   ├── Radeon_rlc.txt
│   ├── Vim.txt
│   └── Zlib.txt
├── package_bump.sh
├── packages/
│   ├── README.md
│   ├── addons/
│   │   ├── addon-depends/
│   │   │   ├── adafruit-libraries-depends/
│   │   │   │   ├── Adafruit_Python_ADS1x15/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── Adafruit_Python_ADXL345/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── Adafruit_Python_BMP/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── Adafruit_Python_CharLCD/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── Adafruit_Python_DHT/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── Adafruit_Python_GPIO/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── Adafruit_Python_LED_Backpack/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── Adafruit_Python_LSM303/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── Adafruit_Python_MCP3008/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── Adafruit_Python_MCP4725/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── Adafruit_Python_PCA9685/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── Adafruit_Python_PureIO/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── Adafruit_Python_SI1145/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── Adafruit_Python_SSD1306/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── Adafruit_Python_TCS34725/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── Adafruit_Python_VCNL40xx/
│   │   │   │   │   └── package.mk
│   │   │   │   └── Adafruit_Python_WS2801/
│   │   │   │       └── package.mk
│   │   │   ├── argtable2/
│   │   │   │   └── package.mk
│   │   │   ├── ccid/
│   │   │   │   └── package.mk
│   │   │   ├── chrome-depends/
│   │   │   │   ├── at-spi2-atk/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── at-spi2-core/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── atk/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── chrome-libXcomposite/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── chrome-libXdamage/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── chrome-libXfixes/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── chrome-libXi/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── chrome-libXrender/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── chrome-libXtst/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── chrome-libxcb/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── chrome-libxkbcommon/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── chrome-libxshmfence/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── cups/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── gtk3/
│   │   │   │   │   ├── files/
│   │   │   │   │   │   └── settings.ini
│   │   │   │   │   ├── package.mk
│   │   │   │   │   └── patches/
│   │   │   │   │       └── disable-to-pixdata-build.patch
│   │   │   │   ├── harfbuzz-icu/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── libXScrnSaver/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── libXcursor/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── libXft/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── libxss/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── scrnsaverproto/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── unclutter/
│   │   │   │   │   └── package.mk
│   │   │   │   └── unix_ar/
│   │   │   │       └── package.mk
│   │   │   ├── comskip/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── Comskip-0001-Fix-compilation-with-gcc10.patch
│   │   │   ├── cxxtools/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       ├── cxxtools-2.2-Char_operator_eq_unsigned_int.patch
│   │   │   │       ├── cxxtools-2.2-hdstream_stdio.patch
│   │   │   │       ├── cxxtools-2.2.1-make-cxxtools-char-a-trivial-class-by-defining-the-default.patch
│   │   │   │       ├── cxxtools-3.0-gcc12-time.patch
│   │   │   │       ├── cxxtools-3.0-lld-linking-openssl.patch
│   │   │   │       └── cxxtools-crosscompile.patch
│   │   │   ├── docker/
│   │   │   │   ├── cli/
│   │   │   │   │   ├── package.mk
│   │   │   │   │   └── patches/
│   │   │   │   │       └── cli-0001-path-for-cli-plugins.patch
│   │   │   │   ├── containerd/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── ctop/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── moby/
│   │   │   │   │   ├── package.mk
│   │   │   │   │   └── patches/
│   │   │   │   │       ├── moby-001-user-addon-storage-location.patch
│   │   │   │   │       └── moby-002-use-unconfined-seccomp-profile-as-default.patch
│   │   │   │   └── tini/
│   │   │   │       └── package.mk
│   │   │   ├── dotnet-runtime-depends/
│   │   │   │   └── aspnet6-runtime/
│   │   │   │       └── package.mk
│   │   │   ├── dvb-tools-depends/
│   │   │   │   ├── blindscan-s2/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── depends/
│   │   │   │   │   ├── bitstream/
│   │   │   │   │   │   └── package.mk
│   │   │   │   │   └── libev/
│   │   │   │   │       └── package.mk
│   │   │   │   ├── dvb-apps/
│   │   │   │   │   ├── package.mk
│   │   │   │   │   └── patches/
│   │   │   │   │       ├── dvb-apps-10_reorder-includes.patch
│   │   │   │   │       ├── dvb-apps-20_build-static-libs.patch
│   │   │   │   │       ├── dvb-apps-30_remove-av7110_loadkeys.patch
│   │   │   │   │       ├── dvb-apps-40-kernel-fix-4.14.patch
│   │   │   │   │       ├── dvb-apps-50-glibc-2.31-fix.patch
│   │   │   │   │       └── dvb-apps-60-dont-build-tests.patch
│   │   │   │   ├── dvblast/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── dvbsnoop/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── mumudvb/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── szap-s2/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── t2scan/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── tune-s2/
│   │   │   │   │   └── package.mk
│   │   │   │   └── w_scan/
│   │   │   │       ├── package.mk
│   │   │   │       └── patches/
│   │   │   │           └── w_scan-0001-Fix-building-with-gcc10.patch
│   │   │   ├── enca/
│   │   │   │   └── package.mk
│   │   │   ├── enet/
│   │   │   │   └── package.mk
│   │   │   ├── faad2/
│   │   │   │   └── package.mk
│   │   │   ├── ffmpegx/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── ffmpeg-openssl3.patch
│   │   │   ├── ffmpegx-depends/
│   │   │   │   ├── x264/
│   │   │   │   │   └── package.mk
│   │   │   │   └── x265/
│   │   │   │       └── package.mk
│   │   │   ├── game-tools/
│   │   │   │   ├── bchunk/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── ecm-tools/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── iat/
│   │   │   │   │   └── package.mk
│   │   │   │   └── linuxconsoletools/
│   │   │   │       ├── package.mk
│   │   │   │       └── patches/
│   │   │   │           └── linuxconsoletools-0001-disable-building-ffmvforce.patch
│   │   │   ├── go/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── go-0001-add-ca-cert-location.patch
│   │   │   ├── hidapi/
│   │   │   │   └── package.mk
│   │   │   ├── icu/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── icu-01_ldflags.patch
│   │   │   ├── inadyn/
│   │   │   │   └── libconfuse/
│   │   │   │       ├── package.mk
│   │   │   │       └── patches/
│   │   │   │           └── gettext-0.20-libconfuse.patch
│   │   │   ├── jre-depends/
│   │   │   │   ├── apache-ant/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── jdk-aarch64-zulu/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── jdk-arm-zulu/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── jdk-x86_64-zulu/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── jre-libXinerama/
│   │   │   │   │   └── package.mk
│   │   │   │   └── jre-libbluray/
│   │   │   │       └── package.mk
│   │   │   ├── lcdd-depends/
│   │   │   │   ├── libugpio/
│   │   │   │   │   └── package.mk
│   │   │   │   └── serdisplib/
│   │   │   │       └── package.mk
│   │   │   ├── libconfig/
│   │   │   │   └── package.mk
│   │   │   ├── libdvbcsa/
│   │   │   │   └── package.mk
│   │   │   ├── libexif/
│   │   │   │   └── package.mk
│   │   │   ├── libhdhomerun/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── shared-to-static.patch
│   │   │   ├── libiconv/
│   │   │   │   └── package.mk
│   │   │   ├── libid3tag/
│   │   │   │   ├── package.mk
│   │   │   │   └── sources/
│   │   │   │       └── id3tag.pc
│   │   │   ├── libimobiledevice/
│   │   │   │   └── package.mk
│   │   │   ├── libmad/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       ├── libmad-0.15.1b-automake_1.13.patch
│   │   │   │       ├── libmad-0.15.1b-cflags-O2.patch
│   │   │   │       └── libmad-0.15.1b-cflags.patch
│   │   │   ├── libmpdclient/
│   │   │   │   └── package.mk
│   │   │   ├── librespot-depends/
│   │   │   │   └── rustup.rs/
│   │   │   │       └── package.mk
│   │   │   ├── libseccomp/
│   │   │   │   └── package.mk
│   │   │   ├── libusbmuxd/
│   │   │   │   └── package.mk
│   │   │   ├── libvncserver/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── fix-build-with-openssl-3.0.0.patch
│   │   │   ├── libvpx/
│   │   │   │   └── package.mk
│   │   │   ├── libzip/
│   │   │   │   └── package.mk
│   │   │   ├── moonlight-common-c/
│   │   │   │   └── package.mk
│   │   │   ├── moonlight-embedded/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── 01-surround-fix.patch
│   │   │   ├── mpd-mpc/
│   │   │   │   └── package.mk
│   │   │   ├── multimedia-tools-depends/
│   │   │   │   ├── depends/
│   │   │   │   │   ├── libmediainfo/
│   │   │   │   │   │   └── package.mk
│   │   │   │   │   └── libzen/
│   │   │   │   │       └── package.mk
│   │   │   │   ├── mediainfo/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── mesa-demos/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── mpg123/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── mpv-drmprime/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── opencaster/
│   │   │   │   │   ├── package.mk
│   │   │   │   │   └── patches/
│   │   │   │   │       ├── opencaster-02_headers.patch
│   │   │   │   │       └── opencaster-03_dont-build-dvbobjects.patch
│   │   │   │   ├── squeezelite/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── tsdecrypt/
│   │   │   │   │   └── package.mk
│   │   │   │   └── tstools/
│   │   │   │       ├── package.mk
│   │   │   │       └── patches/
│   │   │   │           ├── build.patch
│   │   │   │           └── crossstrip.patch
│   │   │   ├── network-tools-depends/
│   │   │   │   ├── bwm-ng/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── depends/
│   │   │   │   │   ├── libpcap/
│   │   │   │   │   │   ├── package.mk
│   │   │   │   │   │   └── patches/
│   │   │   │   │   │       └── remove-manpages.patch
│   │   │   │   │   └── libstatgrab/
│   │   │   │   │       └── package.mk
│   │   │   │   ├── iftop/
│   │   │   │   │   ├── package.mk
│   │   │   │   │   └── patches/
│   │   │   │   │       ├── iftop-Fix-building-with-gcc10.patch
│   │   │   │   │       ├── iftop-boo.patch
│   │   │   │   │       └── iftop-variable-to-be-local-due-to-pcap-1-10-0.patch
│   │   │   │   ├── iperf/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── irssi/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── lftp/
│   │   │   │   │   ├── package.mk
│   │   │   │   │   └── patches/
│   │   │   │   │       └── lftp-0001-link-readline-with-termcap.patch
│   │   │   │   ├── ncftp/
│   │   │   │   │   ├── package.mk
│   │   │   │   │   └── patches/
│   │   │   │   │       └── ncftpd-gcc10-build-fix.patch
│   │   │   │   ├── ngrep/
│   │   │   │   │   ├── package.mk
│   │   │   │   │   └── patches/
│   │   │   │   │       └── port-to-pcre2-api-and-enable-jit-compilation.patch
│   │   │   │   ├── nmap/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── rar2fs/
│   │   │   │   │   ├── package.mk
│   │   │   │   │   └── patches/
│   │   │   │   │       └── 001-remove-man-pages-1.29.3.patch
│   │   │   │   ├── sshfs/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── tcpdump/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── udpxy/
│   │   │   │   │   └── package.mk
│   │   │   │   └── wireless_tools/
│   │   │   │       └── package.mk
│   │   │   ├── opus/
│   │   │   │   └── package.mk
│   │   │   ├── pcsc-lite/
│   │   │   │   └── package.mk
│   │   │   ├── pngquant/
│   │   │   │   └── package.mk
│   │   │   ├── protobuf/
│   │   │   │   └── package.mk
│   │   │   ├── qtbase/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       ├── qtbase-0001-use-sysroot-path-for-pkgconfig-and-libtool.patch
│   │   │   │       ├── qtbase-0002-fix-build-with-gcc-11.patch
│   │   │   │       └── qtbase-0003-More-build-fixes-for-GCC-11.patch
│   │   │   ├── rpi-tools-depends/
│   │   │   │   ├── RPi.GPIO/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── colorzero/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── gpiozero/
│   │   │   │   │   └── package.mk
│   │   │   │   └── lan951x-led-ctl/
│   │   │   │       └── package.mk
│   │   │   ├── rpi_ws281x/
│   │   │   │   └── package.mk
│   │   │   ├── rsyslog-depends/
│   │   │   │   ├── libestr/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── libfastjson/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── liblogging/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── liblognorm/
│   │   │   │   │   └── package.mk
│   │   │   │   └── librelp/
│   │   │   │       └── package.mk
│   │   │   ├── runc/
│   │   │   │   └── package.mk
│   │   │   ├── sdlgamecontrollerdb/
│   │   │   │   └── package.mk
│   │   │   ├── snapcast-depends/
│   │   │   │   ├── aixlog/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── alsa-plugins/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── asio/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── libsodium/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── nqptp/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── popl/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── shairport-sync/
│   │   │   │   │   └── package.mk
│   │   │   │   └── snapcast/
│   │   │   │       ├── package.mk
│   │   │   │       └── patches/
│   │   │   │           ├── snapcast-01_makefiles.patch
│   │   │   │           └── snapcast-02_avahi.patch
│   │   │   ├── system-tools-depends/
│   │   │   │   ├── autossh/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── bottom/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── depends/
│   │   │   │   │   ├── efivar/
│   │   │   │   │   │   ├── package.mk
│   │   │   │   │   │   └── patches/
│   │   │   │   │   │       ├── efivar-01-compile-with-glibc-2.36.patch
│   │   │   │   │   │       └── efivar-01-static_lib.patch
│   │   │   │   │   ├── libmtp/
│   │   │   │   │   │   ├── package.mk
│   │   │   │   │   │   └── patches/
│   │   │   │   │   │       └── libmtp-0001-dont-execute-compiled-tools.patch
│   │   │   │   │   ├── libssh2/
│   │   │   │   │   │   └── package.mk
│   │   │   │   │   └── oniguruma/
│   │   │   │   │       └── package.mk
│   │   │   │   ├── diffutils/
│   │   │   │   │   ├── package.mk
│   │   │   │   │   └── patches/
│   │   │   │   │       └── diffutils-001-no-man-or-doc.patch
│   │   │   │   ├── dool/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── dtach/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── efibootmgr/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── encfs/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── evtest/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── fdupes/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── file/
│   │   │   │   │   ├── package.mk
│   │   │   │   │   └── patches/
│   │   │   │   │       └── file-move-magic.mgc-to-addon-data.patch
│   │   │   │   ├── getscancodes/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── hd-idle/
│   │   │   │   │   ├── package.mk
│   │   │   │   │   └── patches/
│   │   │   │   │       └── hd-idle-makefile.patch
│   │   │   │   ├── hddtemp/
│   │   │   │   │   ├── package.mk
│   │   │   │   │   └── patches/
│   │   │   │   │       ├── hddtemp-0001-add-missing-default-Language-PO-header-field.patch
│   │   │   │   │       └── hddtemp-0002-Allow-building-with-gettext-0-20.patch
│   │   │   │   ├── hid_mapper/
│   │   │   │   │   ├── package.mk
│   │   │   │   │   └── patches/
│   │   │   │   │       ├── hid_mapper-01_crosscompile.patch
│   │   │   │   │       ├── hid_mapper-02_include-sys-time.patch
│   │   │   │   │       └── hid_mapper-03_fix-parser.patch
│   │   │   │   ├── htop/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── i2c-tools/
│   │   │   │   │   ├── package.mk
│   │   │   │   │   └── patches/
│   │   │   │   │       └── pyinstalldir.patch
│   │   │   │   ├── inotify-tools/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── jq/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── libgpiod/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── lm_sensors/
│   │   │   │   │   ├── package.mk
│   │   │   │   │   └── patches/
│   │   │   │   │       └── lm_sensors-01_link-static.patch
│   │   │   │   ├── lshw/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── mc/
│   │   │   │   │   ├── package.mk
│   │   │   │   │   └── wrapper/
│   │   │   │   │       ├── mc
│   │   │   │   │       ├── mcedit
│   │   │   │   │       └── mcview
│   │   │   │   ├── mmc-utils/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── mtpfs/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── nmon/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── patch/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── pv/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── screen/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── sdparm/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── smartmontools/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── st/
│   │   │   │   │   ├── package.mk
│   │   │   │   │   └── patches/
│   │   │   │   │       ├── st-001-le_fixes.patch
│   │   │   │   │       └── st-002-scrollback-20200419-72e3f6c.patch
│   │   │   │   ├── stress-ng/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── unrar/
│   │   │   │   │   └── package.mk
│   │   │   │   └── usb-modeswitch/
│   │   │   │       └── package.mk
│   │   │   ├── tinc-depends/
│   │   │   │   └── miniupnpc/
│   │   │   │       └── package.mk
│   │   │   ├── tntnet/
│   │   │   │   └── package.mk
│   │   │   ├── tslib/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       ├── tslib-02-add-additional-eGalax-touchscreens.patch
│   │   │   │       ├── tslib-06-linear-print-coordinates.patch
│   │   │   │       ├── tslib-10-ts_uinput_touch-daemon.patch
│   │   │   │       ├── tslib-20-fbutils_fix_x64_execution.patch
│   │   │   │       └── tslib-30-support-time-bits-64.patch
│   │   │   ├── ttyd-depends/
│   │   │   │   ├── libuv/
│   │   │   │   │   └── package.mk
│   │   │   │   └── libwebsockets/
│   │   │   │       └── package.mk
│   │   │   ├── tvh-dtv-scan-tables/
│   │   │   │   └── package.mk
│   │   │   ├── vdr/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       ├── vdr-01-decrease-channels.conf-autosave-delay.patch
│   │   │   │       └── vdr-02-disable-logspam.patch
│   │   │   └── vdr-plugins/
│   │   │       ├── vdr-plugin-ddci2/
│   │   │       │   └── package.mk
│   │   │       ├── vdr-plugin-dummydevice/
│   │   │       │   └── package.mk
│   │   │       ├── vdr-plugin-dvbapi/
│   │   │       │   ├── package.mk
│   │   │       │   └── patches/
│   │   │       │       └── vdr-plugin-dvbapi-01_crosscompiling.patch
│   │   │       ├── vdr-plugin-eepg/
│   │   │       │   └── package.mk
│   │   │       ├── vdr-plugin-epgfixer/
│   │   │       │   └── package.mk
│   │   │       ├── vdr-plugin-epgsearch/
│   │   │       │   ├── package.mk
│   │   │       │   └── patches/
│   │   │       │       ├── vdr-plugin-epgsearch-02_don-t-build-unused-plugins.patch
│   │   │       │       └── vdr-plugin-epgsearch-03-no_docs.patch
│   │   │       ├── vdr-plugin-iptv/
│   │   │       │   └── package.mk
│   │   │       ├── vdr-plugin-live/
│   │   │       │   └── package.mk
│   │   │       ├── vdr-plugin-restfulapi/
│   │   │       │   ├── package.mk
│   │   │       │   └── patches/
│   │   │       │       ├── vdr-plugin-restfulapi-01-static-lib-order.patch
│   │   │       │       └── vdr-plugin-restfulapi-02-webapp-path.patch
│   │   │       ├── vdr-plugin-robotv/
│   │   │       │   └── package.mk
│   │   │       ├── vdr-plugin-satip/
│   │   │       │   └── package.mk
│   │   │       ├── vdr-plugin-streamdev/
│   │   │       │   ├── package.mk
│   │   │       │   └── patches/
│   │   │       │       ├── vdr-plugin-streamdev-01_4k_hevc_support.patch
│   │   │       │       ├── vdr-plugin-streamdev-02_2.3.9_lock_fix.patch
│   │   │       │       ├── vdr-plugin-streamdev-03_i18n.patch
│   │   │       │       └── vdr-plugin-streamdev-04_fix_vdr_2.6.x_build_error.patch
│   │   │       ├── vdr-plugin-vnsiserver/
│   │   │       │   └── package.mk
│   │   │       ├── vdr-plugin-wirbelscan/
│   │   │       │   ├── package.mk
│   │   │       │   ├── patches/
│   │   │       │   │   ├── vdr-plugin-wirbelscan-01-fixes.patch
│   │   │       │   │   └── vdr-plugin-wirbelscan-02-countries_utf8.patch
│   │   │       │   └── sources/
│   │   │       │       └── Makefile
│   │   │       ├── vdr-plugin-wirbelscancontrol/
│   │   │       │   ├── package.mk
│   │   │       │   └── patches/
│   │   │       │       └── vdr-plugin-wirbelscancontrol-02-vdr_2.3.patch
│   │   │       └── vdr-plugin-xmltv2vdr/
│   │   │           ├── package.mk
│   │   │           └── patches/
│   │   │               ├── vdr-plugin-xmltv2vdr-02_gcc721_fixes.patch
│   │   │               └── vdr-plugin-xmltv2vdr-03-fix-epgdata2xmltv-linking.patch
│   │   ├── browser/
│   │   │   ├── chrome/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── config/
│   │   │   │   │   ├── Xdefaults
│   │   │   │   │   ├── pango.modules
│   │   │   │   │   ├── pangorc
│   │   │   │   │   └── pixbuf.loaders.cache
│   │   │   │   ├── package.mk
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   ├── chrome-downloader
│   │   │   │       │   ├── chrome-start
│   │   │   │       │   └── deb_extract_data
│   │   │   │       ├── default.py
│   │   │   │       ├── resources/
│   │   │   │       │   ├── language/
│   │   │   │       │   │   └── English/
│   │   │   │       │   │       └── strings.po
│   │   │   │       │   └── settings.xml
│   │   │   │       └── settings-default.xml
│   │   │   └── chromium/
│   │   │       └── package.mk
│   │   ├── driver/
│   │   │   ├── hdhomerun/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── config/
│   │   │   │   │   └── dvbhdhomerun.sample
│   │   │   │   ├── package.mk
│   │   │   │   ├── settings-default.xml
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   └── userspace-driver.sh
│   │   │   │       ├── default.py
│   │   │   │       ├── resources/
│   │   │   │       │   ├── actions.py
│   │   │   │       │   ├── language/
│   │   │   │       │   │   └── English/
│   │   │   │       │   │       └── strings.xml
│   │   │   │       │   ├── lib/
│   │   │   │       │   │   ├── functions.py
│   │   │   │       │   │   └── xmlpp.py
│   │   │   │       │   └── settings.xml
│   │   │   │       └── sleep.d/
│   │   │   │           └── 99-hdhomerun.power
│   │   │   ├── imon-mce/
│   │   │   │   └── package.mk
│   │   │   ├── sapphire/
│   │   │   │   └── package.mk
│   │   │   ├── steamcontroller/
│   │   │   │   └── package.mk
│   │   │   └── sundtek-mediatv/
│   │   │       ├── changelog.txt
│   │   │       ├── config/
│   │   │       │   ├── sundtek.conf
│   │   │       │   └── sundtek.conf.full
│   │   │       ├── package.mk
│   │   │       ├── settings-default.xml
│   │   │       └── source/
│   │   │           ├── bin/
│   │   │           │   ├── sundtek-mediatv.start
│   │   │           │   ├── sundtek-mediatv.stop
│   │   │           │   ├── sundtek-update-driver.sh
│   │   │           │   └── userspace-driver.sh
│   │   │           ├── default.py
│   │   │           ├── resources/
│   │   │           │   ├── actions.py
│   │   │           │   ├── language/
│   │   │           │   │   ├── resource.language.de_de/
│   │   │           │   │   │   └── strings.po
│   │   │           │   │   └── resource.language.en_gb/
│   │   │           │   │       └── strings.po
│   │   │           │   ├── lib/
│   │   │           │   │   ├── functions.py
│   │   │           │   │   └── xmlpp.py
│   │   │           │   └── settings.xml
│   │   │           ├── sleep.d/
│   │   │           │   └── 99-sundtek-mediatv.power
│   │   │           └── system.d/
│   │   │               └── driver.dvb.sundtek-mediatv.service
│   │   ├── libraries/
│   │   │   └── adafruit-libraries/
│   │   │       ├── changelog.txt
│   │   │       ├── package.mk
│   │   │       └── source/
│   │   │           └── default.py
│   │   ├── repository/
│   │   │   └── repository.linuxserver.docker/
│   │   │       ├── changelog.txt
│   │   │       ├── package.mk
│   │   │       └── sources/
│   │   │           └── addon.xml
│   │   ├── script/
│   │   │   ├── driverselect/
│   │   │   │   └── package.mk
│   │   │   ├── luna/
│   │   │   │   └── package.mk
│   │   │   ├── moonlight/
│   │   │   │   └── package.mk
│   │   │   └── script.config.vdr/
│   │   │       ├── changelog.txt
│   │   │       ├── package.mk
│   │   │       └── sources/
│   │   │           └── addon.xml
│   │   ├── service/
│   │   │   ├── bluetooth-audio/
│   │   │   │   ├── changelog.txt
│   │   │   │   └── package.mk
│   │   │   ├── boblightd/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── config/
│   │   │   │   │   ├── boblight.X11.sample
│   │   │   │   │   └── boblight.conf
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   └── boblightd-2.0.5-getopt-includes.patch
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   └── boblightd.start
│   │   │   │       ├── default.py
│   │   │   │       ├── sleep.d/
│   │   │   │       │   └── boblightd.power
│   │   │   │       └── system.d/
│   │   │   │           └── service.multimedia.boblightd.service
│   │   │   ├── dispmanx_vnc/
│   │   │   │   └── package.mk
│   │   │   ├── docker/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   └── docker-config
│   │   │   │       ├── config/
│   │   │   │       │   └── docker.conf
│   │   │   │       ├── default.py
│   │   │   │       ├── examples/
│   │   │   │       │   ├── couchpotato.service
│   │   │   │       │   ├── mysql.service
│   │   │   │       │   ├── sabnzbd.service
│   │   │   │       │   ├── sickbeard.service
│   │   │   │       │   ├── transmission.service
│   │   │   │       │   └── var-lib-docker.mount
│   │   │   │       ├── lib/
│   │   │   │       │   └── dockermon.py
│   │   │   │       ├── resources/
│   │   │   │       │   ├── language/
│   │   │   │       │   │   └── English/
│   │   │   │       │   │       └── strings.po
│   │   │   │       │   └── settings.xml
│   │   │   │       └── system.d/
│   │   │   │           └── service.system.docker.service
│   │   │   ├── emby/
│   │   │   │   └── package.mk
│   │   │   ├── emby4/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   └── emby4.start
│   │   │   │       ├── default.py
│   │   │   │       ├── resources/
│   │   │   │       │   ├── language/
│   │   │   │       │   │   └── English/
│   │   │   │       │   │       └── strings.po
│   │   │   │       │   └── settings.xml
│   │   │   │       ├── settings-default.xml
│   │   │   │       └── system.d/
│   │   │   │           └── service.emby4.service
│   │   │   ├── hyperion/
│   │   │   │   ├── changelog.txt
│   │   │   │   └── package.mk
│   │   │   ├── inadyn/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   └── inadyn-service
│   │   │   │       ├── default.py
│   │   │   │       ├── resources/
│   │   │   │       │   ├── language/
│   │   │   │       │   │   └── English/
│   │   │   │       │   │       └── strings.po
│   │   │   │       │   └── settings.xml
│   │   │   │       ├── settings-default.xml
│   │   │   │       └── system.d/
│   │   │   │           └── service.system.inadyn.service
│   │   │   ├── jellyfin/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   ├── jellyfin-downloader
│   │   │   │       │   └── jellyfin-start
│   │   │   │       ├── default.py
│   │   │   │       ├── resources/
│   │   │   │       │   ├── language/
│   │   │   │       │   │   └── English/
│   │   │   │       │   │       └── strings.po
│   │   │   │       │   └── settings.xml
│   │   │   │       ├── settings-default.xml
│   │   │   │       └── system.d/
│   │   │   │           └── service.jellyfin.service
│   │   │   ├── lcdd/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   ├── lcdd-0.5.6-dm140_henlar_v0.2.patch
│   │   │   │   │   └── lcdd-0.5.6-libftdi1.patch
│   │   │   │   ├── resources/
│   │   │   │   │   └── settings.xml
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   └── lcdd.start
│   │   │   │       ├── default.py
│   │   │   │       ├── resources/
│   │   │   │       │   └── language/
│   │   │   │       │       └── English/
│   │   │   │       │           └── strings.po
│   │   │   │       └── system.d/
│   │   │   │           └── service.lcdd.service
│   │   │   ├── librespot/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   └── onevent.py
│   │   │   │       ├── default.py
│   │   │   │       └── resources/
│   │   │   │           ├── language/
│   │   │   │           │   └── English/
│   │   │   │           │       └── strings.po
│   │   │   │           ├── lib/
│   │   │   │           │   ├── external_player.py
│   │   │   │           │   ├── internal_player.py
│   │   │   │           │   ├── librespot.py
│   │   │   │           │   ├── librespot_alsa.py
│   │   │   │           │   ├── librespot_pulseaudio_rtp.py
│   │   │   │           │   ├── player.py
│   │   │   │           │   └── service.py
│   │   │   │           └── settings.xml
│   │   │   ├── locale/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   ├── resources/
│   │   │   │   │   └── settings.xml
│   │   │   │   └── source/
│   │   │   │       ├── default.py
│   │   │   │       ├── resources/
│   │   │   │       │   └── language/
│   │   │   │       │       └── resource.language.en_gb/
│   │   │   │       │           └── strings.po
│   │   │   │       └── settings-default.xml
│   │   │   ├── mariadb/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   └── mariadb-0001-disable-plugin-auth-pam.patch
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   ├── mariadb.start
│   │   │   │       │   └── mariadb.stop
│   │   │   │       ├── config/
│   │   │   │       │   └── my.cnf
│   │   │   │       ├── default.py
│   │   │   │       ├── profile.d/
│   │   │   │       │   └── 99-mysql-histfile.profile
│   │   │   │       ├── resources/
│   │   │   │       │   ├── language/
│   │   │   │       │   │   └── English/
│   │   │   │       │   │       └── strings.po
│   │   │   │       │   └── settings.xml
│   │   │   │       ├── settings-default.xml
│   │   │   │       └── system.d/
│   │   │   │           └── service.mariadb.service
│   │   │   ├── minidlna/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   └── minidlna-01-fix-config.patch
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   └── minidlna.start
│   │   │   │       ├── config/
│   │   │   │       │   └── minidlna.conf
│   │   │   │       ├── default.py
│   │   │   │       ├── resources/
│   │   │   │       │   ├── language/
│   │   │   │       │   │   └── English/
│   │   │   │       │   │       └── strings.po
│   │   │   │       │   └── settings.xml
│   │   │   │       ├── settings-default.xml
│   │   │   │       ├── sleep.d/
│   │   │   │       │   └── minidlna.power
│   │   │   │       └── system.d/
│   │   │   │           └── service.minidlna.service
│   │   │   ├── minisatip/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   └── minisatip.start
│   │   │   │       ├── default.py
│   │   │   │       ├── resources/
│   │   │   │       │   ├── language/
│   │   │   │       │   │   └── English/
│   │   │   │       │   │       └── strings.po
│   │   │   │       │   └── settings.xml
│   │   │   │       ├── settings-default.xml
│   │   │   │       ├── sleep.d/
│   │   │   │       │   └── minisatip.power
│   │   │   │       └── system.d/
│   │   │   │           └── service.minisatip.service
│   │   │   ├── mpd/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   └── mpd.start
│   │   │   │       ├── config/
│   │   │   │       │   └── mpd.conf
│   │   │   │       ├── default.py
│   │   │   │       ├── resources/
│   │   │   │       │   ├── language/
│   │   │   │       │   │   └── English/
│   │   │   │       │   │       └── strings.po
│   │   │   │       │   └── settings.xml
│   │   │   │       ├── settings-default.xml
│   │   │   │       ├── sleep.d/
│   │   │   │       │   └── mpd.power
│   │   │   │       └── system.d/
│   │   │   │           └── service.multimedia.mpd.service
│   │   │   ├── net-snmp/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   ├── net-snmp-0001-read_config.c.patch
│   │   │   │   │   └── net-snmp-0002-net-snmp-create-v3-user.in.patch
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   ├── snmpd.start
│   │   │   │       │   └── snmpd.stop
│   │   │   │       ├── default.py
│   │   │   │       ├── resources/
│   │   │   │       │   ├── language/
│   │   │   │       │   │   └── English/
│   │   │   │       │   │       └── strings.po
│   │   │   │       │   └── settings.xml
│   │   │   │       └── system.d/
│   │   │   │           └── service.net-snmp.service
│   │   │   ├── nextpvr/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   └── source/
│   │   │   │       ├── addon.py
│   │   │   │       ├── bin/
│   │   │   │       │   ├── nextpvr-downloader
│   │   │   │       │   └── nextpvr.start
│   │   │   │       ├── default.py
│   │   │   │       ├── resources/
│   │   │   │       │   ├── Language/
│   │   │   │       │   │   └── English/
│   │   │   │       │   │       └── strings.po
│   │   │   │       │   └── settings.xml
│   │   │   │       ├── settings-default.xml
│   │   │   │       └── system.d/
│   │   │   │           └── service.nextpvr.service
│   │   │   ├── oscam/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   ├── oscam-01-revision.patch
│   │   │   │   │   ├── oscam-02-link-with-ludev.patch
│   │   │   │   │   └── oscam-03-pcsc-pthread.patch
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   └── oscam.start
│   │   │   │       ├── default.py
│   │   │   │       ├── oscam-default.conf
│   │   │   │       ├── resources/
│   │   │   │       │   ├── language/
│   │   │   │       │   │   └── English/
│   │   │   │       │   │       └── strings.po
│   │   │   │       │   └── settings.xml
│   │   │   │       ├── settings-default.xml
│   │   │   │       ├── sleep.d/
│   │   │   │       │   └── oscam.power
│   │   │   │       └── system.d/
│   │   │   │           └── service.softcam.oscam.service
│   │   │   ├── pcscd/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── config/
│   │   │   │   │   └── reader.conf
│   │   │   │   ├── package.mk
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   └── pcscd.start
│   │   │   │       ├── default.py
│   │   │   │       └── system.d/
│   │   │   │           └── service.pcscd.service
│   │   │   ├── proftpd/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   └── proftpd-100-llu.patch
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   └── proftpd.start
│   │   │   │       ├── default.py
│   │   │   │       ├── etc/
│   │   │   │       │   ├── openssl.cnf
│   │   │   │       │   └── proftpd.conf
│   │   │   │       ├── resources/
│   │   │   │       │   ├── language/
│   │   │   │       │   │   └── resource.language.en_gb/
│   │   │   │       │   │       └── strings.po
│   │   │   │       │   └── settings.xml
│   │   │   │       ├── settings-default.xml
│   │   │   │       └── system.d/
│   │   │   │           └── service.proftpd.service
│   │   │   ├── prometheus-node-exporter/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   └── prometheus-node-exporter.start
│   │   │   │       ├── default.py
│   │   │   │       ├── resources/
│   │   │   │       │   ├── language/
│   │   │   │       │   │   └── English/
│   │   │   │       │   │       └── strings.po
│   │   │   │       │   └── settings.xml
│   │   │   │       ├── settings-default.xml
│   │   │   │       └── system.d/
│   │   │   │           └── service.prometheus-node-exporter.service
│   │   │   ├── rsyslog/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   └── rsyslog.init
│   │   │   │       ├── config/
│   │   │   │       │   ├── common.conf
│   │   │   │       │   ├── journal.conf
│   │   │   │       │   ├── kodi.conf
│   │   │   │       │   └── relp.conf
│   │   │   │       ├── default.py
│   │   │   │       ├── resources/
│   │   │   │       │   ├── language/
│   │   │   │       │   │   └── English/
│   │   │   │       │   │       └── strings.po
│   │   │   │       │   └── settings.xml
│   │   │   │       ├── settings-default.xml
│   │   │   │       └── system.d/
│   │   │   │           └── service.rsyslog.service
│   │   │   ├── snapclient/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   └── source/
│   │   │   │       ├── addon.py
│   │   │   │       ├── bin/
│   │   │   │       │   └── snapclient.start
│   │   │   │       ├── default.py
│   │   │   │       ├── resources/
│   │   │   │       │   ├── language/
│   │   │   │       │   │   └── English/
│   │   │   │       │   │       └── strings.po
│   │   │   │       │   └── settings.xml
│   │   │   │       ├── settings-default.xml
│   │   │   │       └── system.d/
│   │   │   │           └── service.snapclient.service
│   │   │   ├── snapserver/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   ├── snapweb/
│   │   │   │   │   ├── 3rd-party/
│   │   │   │   │   │   └── libflac.js
│   │   │   │   │   ├── config.js
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── manifest.json
│   │   │   │   │   ├── snapcontrol.js
│   │   │   │   │   ├── snapstream.js
│   │   │   │   │   └── styles.css
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   └── snapserver.start
│   │   │   │       ├── config/
│   │   │   │       │   └── pulseaudio.conf
│   │   │   │       ├── default.py
│   │   │   │       ├── resources/
│   │   │   │       │   ├── language/
│   │   │   │       │   │   └── English/
│   │   │   │       │   │       └── strings.po
│   │   │   │       │   └── settings.xml
│   │   │   │       ├── settings-default.xml
│   │   │   │       └── system.d/
│   │   │   │           └── service.snapserver.service
│   │   │   ├── syncthing/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   └── syncthing-service
│   │   │   │       ├── default.py
│   │   │   │       ├── resources/
│   │   │   │       │   ├── language/
│   │   │   │       │   │   └── English/
│   │   │   │       │   │       └── strings.po
│   │   │   │       │   └── settings.xml
│   │   │   │       ├── settings-default.xml
│   │   │   │       └── system.d/
│   │   │   │           └── service.system.syncthing.service
│   │   │   ├── tigervnc/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   └── tigervnc-system-notests.patch
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   └── tigervnc.start
│   │   │   │       ├── config/
│   │   │   │       │   └── passwd
│   │   │   │       ├── default.py
│   │   │   │       ├── resources/
│   │   │   │       │   ├── language/
│   │   │   │       │   │   └── English/
│   │   │   │       │   │       └── strings.po
│   │   │   │       │   └── settings.xml
│   │   │   │       ├── settings-default.xml
│   │   │   │       └── system.d/
│   │   │   │           └── service.tigervnc.service
│   │   │   ├── tinc/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   └── tinc-0001-fix-autoconf-archive.patch
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   └── tinc.start
│   │   │   │       ├── config/
│   │   │   │       │   ├── subnet-down
│   │   │   │       │   ├── subnet-up
│   │   │   │       │   ├── tinc-up
│   │   │   │       │   └── tinc.conf
│   │   │   │       ├── default.py
│   │   │   │       ├── resources/
│   │   │   │       │   ├── language/
│   │   │   │       │   │   └── English/
│   │   │   │       │   │       └── strings.po
│   │   │   │       │   └── settings.xml
│   │   │   │       ├── settings-default.xml
│   │   │   │       └── system.d/
│   │   │   │           └── service.system.tinc.service
│   │   │   ├── touchscreen/
│   │   │   │   ├── addon.xml
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   ├── ts_calibrate.sh
│   │   │   │       │   ├── ts_env.sh
│   │   │   │       │   └── ts_uinput_touch.sh
│   │   │   │       ├── calibrate.py
│   │   │   │       ├── config/
│   │   │   │       │   ├── ts.conf-generic
│   │   │   │       │   ├── ts.conf-udoo_15_6
│   │   │   │       │   ├── ts.conf-udoo_7
│   │   │   │       │   ├── ts.conf-waveshare
│   │   │   │       │   ├── ts_env.sh-sample
│   │   │   │       │   └── ts_env.sh-waveshare
│   │   │   │       ├── lock-screen.py
│   │   │   │       ├── resources/
│   │   │   │       │   ├── language/
│   │   │   │       │   │   ├── English/
│   │   │   │       │   │   │   └── strings.xml
│   │   │   │       │   │   └── German/
│   │   │   │       │   │       └── strings.xml
│   │   │   │       │   └── settings.xml
│   │   │   │       ├── service.py
│   │   │   │       └── system.d/
│   │   │   │           └── service.touchscreen.service
│   │   │   ├── ttyd/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   └── ttyd.start
│   │   │   │       ├── default.py
│   │   │   │       ├── resources/
│   │   │   │       │   ├── language/
│   │   │   │       │   │   └── English/
│   │   │   │       │   │       └── strings.po
│   │   │   │       │   └── settings.xml
│   │   │   │       ├── settings-default.xml
│   │   │   │       └── system.d/
│   │   │   │           └── service.ttyd.service
│   │   │   ├── tvheadend/
│   │   │   │   └── package.mk
│   │   │   ├── tvheadend42/
│   │   │   │   ├── addon.xml
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   ├── tvheadend42-01-dvb-scan-path.patch
│   │   │   │   │   ├── tvheadend42-02-hdhomerun-includes.patch
│   │   │   │   │   ├── tvheadend42-03-hdhomerun-fix.patch
│   │   │   │   │   ├── tvheadend42-04-Fix-building-with-fno-common.patch
│   │   │   │   │   ├── tvheadend42-05-webui-query-url-fix.patch
│   │   │   │   │   └── tvheadend42-06-satip-upnp-fix.patch
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   ├── tv_grab_file
│   │   │   │       │   └── tvheadend42.start
│   │   │   │       ├── default.py
│   │   │   │       ├── defaults/
│   │   │   │       │   ├── comskip/
│   │   │   │       │   │   └── comskip.ini
│   │   │   │       │   ├── config
│   │   │   │       │   ├── dvr/
│   │   │   │       │   │   └── config/
│   │   │   │       │   │       └── 8d0f5b7ae354d956d7fe5db25f5d0d24
│   │   │   │       │   ├── epggrab/
│   │   │   │       │   │   └── config
│   │   │   │       │   ├── timeshift/
│   │   │   │       │   │   └── config
│   │   │   │       │   └── xmltv/
│   │   │   │       │       └── config
│   │   │   │       ├── download.py
│   │   │   │       ├── resources/
│   │   │   │       │   ├── language/
│   │   │   │       │   │   └── English/
│   │   │   │       │   │       └── strings.po
│   │   │   │       │   └── settings.xml
│   │   │   │       ├── settings-default.xml
│   │   │   │       ├── sleep.d/
│   │   │   │       │   └── tvheadend.power
│   │   │   │       └── system.d/
│   │   │   │           └── service.tvheadend42.service
│   │   │   ├── tvheadend43/
│   │   │   │   ├── addon.xml
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   ├── tvheadend43-01-dvb-scan-path.patch
│   │   │   │   │   └── tvheadend43-02-hdhomerun-includes.patch
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   ├── tv_grab_file
│   │   │   │       │   └── tvheadend43.start
│   │   │   │       ├── default.py
│   │   │   │       ├── defaults/
│   │   │   │       │   ├── comskip/
│   │   │   │       │   │   └── comskip.ini
│   │   │   │       │   ├── config
│   │   │   │       │   ├── dvr/
│   │   │   │       │   │   └── config/
│   │   │   │       │   │       └── 8d0f5b7ae354d956d7fe5db25f5d0d24
│   │   │   │       │   ├── epggrab/
│   │   │   │       │   │   └── config
│   │   │   │       │   ├── timeshift/
│   │   │   │       │   │   └── config
│   │   │   │       │   └── xmltv/
│   │   │   │       │       └── config
│   │   │   │       ├── download.py
│   │   │   │       ├── resources/
│   │   │   │       │   ├── language/
│   │   │   │       │   │   └── English/
│   │   │   │       │   │       └── strings.po
│   │   │   │       │   └── settings.xml
│   │   │   │       ├── settings-default.xml
│   │   │   │       ├── sleep.d/
│   │   │   │       │   └── tvheadend.power
│   │   │   │       └── system.d/
│   │   │   │           └── service.tvheadend43.service
│   │   │   ├── tvmosaic/
│   │   │   │   └── package.mk
│   │   │   ├── usbmuxd/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   └── usbmuxd-0001-remove-duplicate-functions.patch
│   │   │   │   └── source/
│   │   │   │       ├── default.py
│   │   │   │       └── system.d/
│   │   │   │           └── service.usbmuxd.service
│   │   │   ├── vdr-addon/
│   │   │   │   ├── changelog.txt
│   │   │   │   ├── package.mk
│   │   │   │   └── source/
│   │   │   │       ├── bin/
│   │   │   │       │   └── vdr.start
│   │   │   │       ├── default.py
│   │   │   │       ├── resources/
│   │   │   │       │   ├── language/
│   │   │   │       │   │   └── English/
│   │   │   │       │   │       └── strings.po
│   │   │   │       │   └── settings.xml
│   │   │   │       ├── settings-default.xml
│   │   │   │       ├── sleep.d/
│   │   │   │       │   └── vdr.power
│   │   │   │       └── system.d/
│   │   │   │           └── service.multimedia.vdr-addon.service
│   │   │   └── webgrabplus/
│   │   │       └── package.mk
│   │   ├── skin/
│   │   │   └── estouchy/
│   │   │       └── package.mk
│   │   └── tools/
│   │       ├── btrfs-progs/
│   │       │   ├── changelog.txt
│   │       │   ├── package.mk
│   │       │   └── source/
│   │       │       └── default.py
│   │       ├── dotnet-runtime/
│   │       │   ├── changelog.txt
│   │       │   └── package.mk
│   │       ├── dvb-tools/
│   │       │   ├── changelog.txt
│   │       │   ├── package.mk
│   │       │   └── source/
│   │       │       └── default.py
│   │       ├── ffmpeg-tools/
│   │       │   ├── changelog.txt
│   │       │   ├── package.mk
│   │       │   └── source/
│   │       │       ├── default.py
│   │       │       └── resources/
│   │       │           └── language/
│   │       │               └── English/
│   │       │                   └── strings.po
│   │       ├── flirc_util/
│   │       │   ├── changelog.txt
│   │       │   ├── package.mk
│   │       │   └── source/
│   │       │       └── default.py
│   │       ├── game-tools/
│   │       │   ├── changelog.txt
│   │       │   ├── package.mk
│   │       │   └── source/
│   │       │       └── default.py
│   │       ├── jre.zulu/
│   │       │   ├── changelog.txt
│   │       │   ├── package.mk
│   │       │   ├── profile.d/
│   │       │   │   └── jre.profile
│   │       │   └── source/
│   │       │       └── default.py
│   │       ├── mono/
│   │       │   └── package.mk
│   │       ├── multimedia-tools/
│   │       │   ├── changelog.txt
│   │       │   ├── package.mk
│   │       │   └── source/
│   │       │       └── default.py
│   │       ├── network-tools/
│   │       │   ├── changelog.txt
│   │       │   ├── package.mk
│   │       │   └── source/
│   │       │       └── default.py
│   │       ├── rpi-tools/
│   │       │   ├── changelog.txt
│   │       │   ├── package.mk
│   │       │   └── source/
│   │       │       └── default.py
│   │       └── system-tools/
│   │           ├── changelog.txt
│   │           ├── package.mk
│   │           └── source/
│   │               ├── bin/
│   │               │   ├── 7z
│   │               │   └── 7za
│   │               └── default.py
│   ├── audio/
│   │   ├── alsa-lib/
│   │   │   ├── config/
│   │   │   │   └── modprobe.d/
│   │   │   │       └── disable-spdif-for-hd-audio.conf
│   │   │   ├── modprobe.d/
│   │   │   │   ├── alsa-base.conf
│   │   │   │   └── intel-audio.conf
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── alsa-lib-asound.conf_configdir.patch
│   │   ├── alsa-topology-conf/
│   │   │   └── package.mk
│   │   ├── alsa-ucm-conf/
│   │   │   └── package.mk
│   │   ├── alsa-utils/
│   │   │   ├── package.mk
│   │   │   ├── scripts/
│   │   │   │   └── soundconfig
│   │   │   └── udev.d/
│   │   │       └── 90-alsa-restore.rules
│   │   ├── espeak-ng/
│   │   │   ├── package.mk
│   │   │   ├── patches/
│   │   │   │   └── PR1858-fix-compiling-in-build-directory.patch
│   │   │   └── pcaudiolib/
│   │   │       └── package.mk
│   │   ├── flac/
│   │   │   └── package.mk
│   │   ├── fluidsynth/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── libsndfile-use-static-libraries.patch
│   │   ├── lame/
│   │   │   └── package.mk
│   │   ├── ldacBT/
│   │   │   └── package.mk
│   │   ├── libcdio/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── 0001-Use-getmntent-setmntent-for-reading-mounts.patch
│   │   ├── libfreeaptx/
│   │   │   └── package.mk
│   │   ├── libldac/
│   │   │   └── package.mk
│   │   ├── libmodplug/
│   │   │   └── package.mk
│   │   ├── libogg/
│   │   │   └── package.mk
│   │   ├── libopenmpt/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── libopenmpt-add-libvorbisfile-to-pkgconfig.patch
│   │   ├── libsamplerate/
│   │   │   └── package.mk
│   │   ├── libsndfile/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── libsndfile-add-required-static-libaries-to-pkg-config.patch
│   │   ├── libvorbis/
│   │   │   └── package.mk
│   │   ├── openal-soft/
│   │   │   └── package.mk
│   │   ├── pipewire/
│   │   │   └── package.mk
│   │   ├── pulseaudio/
│   │   │   ├── config/
│   │   │   │   ├── pulse-daemon.conf.d/
│   │   │   │   │   └── README
│   │   │   │   └── system.pa
│   │   │   ├── package.mk
│   │   │   ├── patches/
│   │   │   │   ├── pulseaudio-100.01-never-append-dirty-to-server-module-version.patch
│   │   │   │   └── pulseaudio-100.02-check_uid.patch
│   │   │   ├── profile.d/
│   │   │   │   └── 99-pulseaudio.conf
│   │   │   └── system.d/
│   │   │       └── pulseaudio.service
│   │   ├── rpi-cirrus-config/
│   │   │   ├── config/
│   │   │   │   └── rpi-cirrus-config.sh.sample
│   │   │   ├── modprobe.d/
│   │   │   │   └── rpi-cirrus.conf
│   │   │   ├── package.mk
│   │   │   ├── scripts/
│   │   │   │   └── rpi-cirrus-config
│   │   │   └── udev.d/
│   │   │       └── 90-alsa-restore.rules
│   │   ├── sbc/
│   │   │   └── package.mk
│   │   ├── sidplay-libs/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── sidplay-libs-01-m4-tests.patch
│   │   │       ├── sidplay-libs-02-inherited.patch
│   │   │       ├── sidplay-libs-03-operator.patch
│   │   │       └── sidplay-libs-04-includes.patch
│   │   ├── soxr/
│   │   │   └── package.mk
│   │   ├── speex/
│   │   │   └── package.mk
│   │   ├── speexdsp/
│   │   │   └── package.mk
│   │   ├── taglib/
│   │   │   └── package.mk
│   │   ├── wavpack/
│   │   │   └── package.mk
│   │   └── wireplumber/
│   │       └── package.mk
│   ├── compress/
│   │   ├── 7-zip/
│   │   │   └── package.mk
│   │   ├── bzip2/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── bzip2-1.0.8-cflags.patch
│   │   ├── libarchive/
│   │   │   └── package.mk
│   │   ├── lz4/
│   │   │   └── package.mk
│   │   ├── lzo/
│   │   │   └── package.mk
│   │   ├── p7zip/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── p7zip-0100-CVE-2016-9296.patch
│   │   │       ├── p7zip-0200-CVE-2017-17969.patch
│   │   │       ├── p7zip-0300-CVE-2018-5996.patch
│   │   │       ├── p7zip-0400-CVE-2018-10115.patch
│   │   │       ├── p7zip-0500-gcc10-build-fix.patch
│   │   │       └── p7zip-0501-change-numMethods-from-bool-to-unsigned.patch
│   │   ├── pigz/
│   │   │   └── package.mk
│   │   ├── xz/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── xz-01-init-uninitialized-variables.patch
│   │   ├── zip/
│   │   │   └── package.mk
│   │   ├── zlib/
│   │   │   └── package.mk
│   │   └── zstd/
│   │       └── package.mk
│   ├── databases/
│   │   ├── mariadb-connector-c/
│   │   │   └── package.mk
│   │   └── sqlite/
│   │       ├── package.mk
│   │       └── patches/
│   │           └── sqlite-01_map_populate.patch
│   ├── debug/
│   │   ├── edid-decode/
│   │   │   └── package.mk
│   │   ├── gdb/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── 0001-gdbserver-ctrl-c-handling.patch
│   │   │       └── gdb-001-notex.patch
│   │   ├── libunwind/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── libunwind-0001-fix-multiple-definition.patch
│   │   │       └── libunwind-0002-add-dependant-static-libraries.patch
│   │   ├── libva-utils/
│   │   │   └── package.mk
│   │   ├── memtester/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── memtester-001-cross-compile.patch
│   │   ├── strace/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── strace-0001-autoreconf.patch
│   │   │       └── strace-0002-fix-autoconf-archive.patch
│   │   ├── vadumpcaps/
│   │   │   └── package.mk
│   │   ├── valgrind/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── valgrind-0001-enable-armv8.patch
│   │   ├── vdpauinfo/
│   │   │   └── package.mk
│   │   └── xorg-intel-gpu-tools/
│   │       └── package.mk
│   ├── devel/
│   │   ├── arm-mem/
│   │   │   └── package.mk
│   │   ├── asn1c/
│   │   │   └── package.mk
│   │   ├── attr/
│   │   │   └── package.mk
│   │   ├── autoconf/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── autoconf-autoreconf-exclude.patch
│   │   │       └── man-exclude.patch
│   │   ├── autoconf-archive/
│   │   │   └── package.mk
│   │   ├── automake/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── automake-01-fix-help2man.patch
│   │   ├── binutils/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── binutils-01-warn-for-uses-of-system-directories-when-link.patch
│   │   │       └── binutils-02-binutils-2-39-dont-error-on-missing-makeinfo.patch
│   │   ├── binutils-aarch64/
│   │   │   └── package.mk
│   │   ├── binutils-arm-none-eabi/
│   │   │   └── package.mk
│   │   ├── binutils-bpf/
│   │   │   └── package.mk
│   │   ├── binutils-or1k/
│   │   │   └── package.mk
│   │   ├── bison/
│   │   │   └── package.mk
│   │   ├── boost/
│   │   │   └── package.mk
│   │   ├── ccache/
│   │   │   └── package.mk
│   │   ├── cmake/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── cmake-001-disable-free-comp-methods.patch
│   │   ├── configtools/
│   │   │   └── package.mk
│   │   ├── crossguid/
│   │   │   └── package.mk
│   │   ├── dbus-glib/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── dbus-glib-01-dont-build-tools-examples.patch
│   │   ├── elfutils/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── elfutils-001-make-executables-optional.patch
│   │   ├── fakeroot/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── fakeroot-001-disable-docs-tests.patch
│   │   ├── flatbuffers/
│   │   │   └── package.mk
│   │   ├── flex/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── c5a26b17a2b091c560f6c4e6703e55f496bf74fa.patch
│   │   │       └── flex-002-nocrap.patch
│   │   ├── fribidi/
│   │   │   ├── package.mk
│   │   │   └── scripts/
│   │   │       └── fribidi-config
│   │   ├── gettext/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── gettext-0.18.2-non_interactive.patch
│   │   │       └── gettext-dont_build_docs_and_examples.patch
│   │   ├── glib/
│   │   │   └── package.mk
│   │   ├── glibc/
│   │   │   ├── config/
│   │   │   │   ├── gai.conf
│   │   │   │   ├── host.conf
│   │   │   │   ├── nsswitch-init.conf
│   │   │   │   └── nsswitch-target.conf
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── arm/
│   │   │       │   ├── 0001-Revert-Linux-statx-syscall-number-is-always-availabl.patch
│   │   │       │   ├── 0002-Linux-arm-fixup-statx-syscall-number-missing.patch
│   │   │       │   └── 0003-arm-disable-__NR_statx-as-it-s-not-available-in-4.9.patch
│   │   │       ├── glibc-fix-dns-with-broken-routers.patch
│   │   │       ├── glibc-ld.so.cache-to-writable-cache.patch
│   │   │       └── widevine-arm/
│   │   │           ├── glibc-HACK-Don-t-check-GLIBC_ABI_DT_RELR-support-for-Chrom.patch
│   │   │           └── glibc-tls-libwidevinecdm.so-since-4.10.2252.0-has-TLS-with.patch
│   │   ├── gmp/
│   │   │   └── package.mk
│   │   ├── gnulib/
│   │   │   └── package.mk
│   │   ├── gobject-introspection/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── gobject-introspection-0004-fix-7568.patch
│   │   ├── gperftools/
│   │   │   └── package.mk
│   │   ├── heimdal/
│   │   │   └── package.mk
│   │   ├── intltool/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── intltool-0001-fix-regex-expressions.patch
│   │   ├── json-c/
│   │   │   └── package.mk
│   │   ├── json-glib/
│   │   │   └── package.mk
│   │   ├── libaio/
│   │   │   └── package.mk
│   │   ├── libbpf/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── libbpf-fix-crosscompile-and-sysroot.patch
│   │   ├── libcap/
│   │   │   └── package.mk
│   │   ├── libcec/
│   │   │   └── package.mk
│   │   ├── libdaemon/
│   │   │   └── package.mk
│   │   ├── libevent/
│   │   │   └── package.mk
│   │   ├── libffi/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── libffi-Fix-installation-location-of-libffi.patch
│   │   │       └── libffi-fix-pkgconf.patch
│   │   ├── libfmt/
│   │   │   └── package.mk
│   │   ├── libfstrcmp/
│   │   │   └── package.mk
│   │   ├── libftdi1/
│   │   │   └── package.mk
│   │   ├── libirman/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── libirman-0001-fix-poll-include.patch
│   │   ├── libplist/
│   │   │   └── package.mk
│   │   ├── libpthread-stubs/
│   │   │   └── package.mk
│   │   ├── libtool/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── libtool-01_dont_relink_against_host.patch
│   │   │       ├── libtool-02-use_ld.patch
│   │   │       └── libtool-03-remove-help2man-dependency.patch
│   │   ├── m4/
│   │   │   └── package.mk
│   │   ├── make/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── make-02-fix-large-command-line-on-POSIX-systems.patch
│   │   ├── mimalloc/
│   │   │   └── package.mk
│   │   ├── mold/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── mold-999.01-PR740-allow-custom-mold-binary-install-path.patch
│   │   ├── mpc/
│   │   │   └── package.mk
│   │   ├── mpfr/
│   │   │   └── package.mk
│   │   ├── ncurses/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── ncurses-001-terminfo-xterm.patch
│   │   │       ├── ncurses-002-alloc-fallbacks.patch
│   │   │       ├── ncurses-003-fix_hints.patch
│   │   │       └── ncurses-004-fix_configure_pkgconfig.patch
│   │   ├── pcre/
│   │   │   └── package.mk
│   │   ├── pcre2/
│   │   │   └── package.mk
│   │   ├── pkg-config/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── 0001-Add-support-for-multiple-sysroots.patch
│   │   ├── popt/
│   │   │   └── package.mk
│   │   ├── rapidjson/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── rapidjson-0001-remove_custom_cxx_flags.patch
│   │   ├── readline/
│   │   │   └── package.mk
│   │   ├── shared-mime-info/
│   │   │   └── package.mk
│   │   ├── slang/
│   │   │   └── package.mk
│   │   ├── spdlog/
│   │   │   └── package.mk
│   │   ├── swig/
│   │   │   └── package.mk
│   │   ├── tbb/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── tbb-999.01-PR824-retry-if-pthread_create-fails-with-EAGAIN.patch
│   │   ├── xxd/
│   │   │   └── package.mk
│   │   └── yajl/
│   │       └── package.mk
│   ├── emulation/
│   │   ├── cyclone68000/
│   │   │   └── package.mk
│   │   ├── libretro-2048/
│   │   │   └── package.mk
│   │   ├── libretro-atari800/
│   │   │   └── package.mk
│   │   ├── libretro-beetle-bsnes/
│   │   │   └── package.mk
│   │   ├── libretro-beetle-gba/
│   │   │   └── package.mk
│   │   ├── libretro-beetle-lynx/
│   │   │   └── package.mk
│   │   ├── libretro-beetle-ngp/
│   │   │   └── package.mk
│   │   ├── libretro-beetle-pce-fast/
│   │   │   └── package.mk
│   │   ├── libretro-beetle-pcfx/
│   │   │   └── package.mk
│   │   ├── libretro-beetle-psx/
│   │   │   └── package.mk
│   │   ├── libretro-beetle-supergrafx/
│   │   │   └── package.mk
│   │   ├── libretro-beetle-vb/
│   │   │   └── package.mk
│   │   ├── libretro-beetle-wswan/
│   │   │   └── package.mk
│   │   ├── libretro-bluemsx/
│   │   │   └── package.mk
│   │   ├── libretro-bnes/
│   │   │   └── package.mk
│   │   ├── libretro-bsnes-mercury-accuracy/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── libretro-bsnes-mercury-accuracy-0001_fix-cross-compile.patch
│   │   ├── libretro-bsnes-mercury-balanced/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── libretro-bsnes-mercury-balanced-0001_fix-cross-compile.patch
│   │   ├── libretro-bsnes-mercury-performance/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── libretro-bsnes-mercury-performance-0001_fix-cross-compile.patch
│   │   ├── libretro-cap32/
│   │   │   └── package.mk
│   │   ├── libretro-common/
│   │   │   └── package.mk
│   │   ├── libretro-dinothawr/
│   │   │   └── package.mk
│   │   ├── libretro-dosbox/
│   │   │   └── package.mk
│   │   ├── libretro-dosbox-pure/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── libretro-dosbox-pure-001-cross-compile-fix.patch
│   │   ├── libretro-fbneo/
│   │   │   └── package.mk
│   │   ├── libretro-fceumm/
│   │   │   └── package.mk
│   │   ├── libretro-fmsx/
│   │   │   └── package.mk
│   │   ├── libretro-fsuae/
│   │   │   └── package.mk
│   │   ├── libretro-fuse/
│   │   │   └── package.mk
│   │   ├── libretro-gambatte/
│   │   │   └── package.mk
│   │   ├── libretro-genplus/
│   │   │   └── package.mk
│   │   ├── libretro-gw/
│   │   │   └── package.mk
│   │   ├── libretro-handy/
│   │   │   └── package.mk
│   │   ├── libretro-hatari/
│   │   │   └── package.mk
│   │   ├── libretro-mame2000/
│   │   │   └── package.mk
│   │   ├── libretro-mame2003/
│   │   │   └── package.mk
│   │   ├── libretro-mame2003_plus/
│   │   │   └── package.mk
│   │   ├── libretro-mame2010/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── libretro-mame2010-0001_fix-cross-build.patch
│   │   ├── libretro-mame2015/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── libretro-mame2015-100.01-cross-compile.patch
│   │   │       └── libretro-mame2015-100.02-python-3.patch
│   │   ├── libretro-mame2016/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── bgfx.patch
│   │   │       ├── build.patch
│   │   │       ├── genie.patch
│   │   │       ├── pregenerate.patch
│   │   │       └── python3.patch
│   │   ├── libretro-mesen/
│   │   │   └── package.mk
│   │   ├── libretro-meteor/
│   │   │   └── package.mk
│   │   ├── libretro-mgba/
│   │   │   └── package.mk
│   │   ├── libretro-mrboom/
│   │   │   └── package.mk
│   │   ├── libretro-nestopia/
│   │   │   └── package.mk
│   │   ├── libretro-nx/
│   │   │   └── package.mk
│   │   ├── libretro-o2em/
│   │   │   └── package.mk
│   │   ├── libretro-opera/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── libretro-opera-995.01-crosscompile.patch
│   │   ├── libretro-pcsx-rearmed/
│   │   │   └── package.mk
│   │   ├── libretro-picodrive/
│   │   │   └── package.mk
│   │   ├── libretro-pokemini/
│   │   │   └── package.mk
│   │   ├── libretro-prboom/
│   │   │   └── package.mk
│   │   ├── libretro-prosystem/
│   │   │   └── package.mk
│   │   ├── libretro-quicknes/
│   │   │   └── package.mk
│   │   ├── libretro-sameboy/
│   │   │   └── package.mk
│   │   ├── libretro-scummvm/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── 0001-libretro-Move-scummvm.ini-to-writable-save-directory.patch
│   │   ├── libretro-snes9x/
│   │   │   └── package.mk
│   │   ├── libretro-snes9x2002/
│   │   │   └── package.mk
│   │   ├── libretro-snes9x2010/
│   │   │   └── package.mk
│   │   ├── libretro-stella/
│   │   │   └── package.mk
│   │   ├── libretro-tgbdual/
│   │   │   └── package.mk
│   │   ├── libretro-tyrquake/
│   │   │   └── package.mk
│   │   ├── libretro-uae/
│   │   │   └── package.mk
│   │   ├── libretro-uae4arm/
│   │   │   └── package.mk
│   │   ├── libretro-vba-next/
│   │   │   └── package.mk
│   │   ├── libretro-vbam/
│   │   │   └── package.mk
│   │   ├── libretro-vecx/
│   │   │   └── package.mk
│   │   ├── libretro-vice/
│   │   │   └── package.mk
│   │   ├── libretro-vircon32/
│   │   │   └── package.mk
│   │   ├── libretro-virtualjaguar/
│   │   │   └── package.mk
│   │   ├── libretro-yabause/
│   │   │   └── package.mk
│   │   └── rcheevos/
│   │       ├── package.mk
│   │       └── source/
│   │           └── CMakeLists.txt
│   ├── graphics/
│   │   ├── assimp/
│   │   │   └── package.mk
│   │   ├── bcm2835-driver/
│   │   │   └── package.mk
│   │   ├── cairo/
│   │   │   └── package.mk
│   │   ├── ftgl/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── ftgl-01-cmake.patch
│   │   │       └── ftgl-01-ftgl-disable-docs.patch
│   │   ├── gdk-pixbuf/
│   │   │   └── package.mk
│   │   ├── giflib/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── giflib-01-static-lib.patch
│   │   ├── glew/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── glew-01-fix-pkgconf.patch
│   │   ├── glm/
│   │   │   ├── config/
│   │   │   │   ├── glm.pc
│   │   │   │   ├── glmConfig.cmake
│   │   │   │   ├── glmConfigVersion.cmake
│   │   │   │   └── glmTargets.cmake
│   │   │   └── package.mk
│   │   ├── glmark2/
│   │   │   └── package.mk
│   │   ├── glu/
│   │   │   └── package.mk
│   │   ├── harfbuzz/
│   │   │   └── package.mk
│   │   ├── jasper/
│   │   │   └── package.mk
│   │   ├── kmscube/
│   │   │   └── package.mk
│   │   ├── kmsxx/
│   │   │   └── package.mk
│   │   ├── lcms2/
│   │   │   └── package.mk
│   │   ├── libde265/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── libde265-0002-Add-CMake-option-ENABLE-ENCODER.patch
│   │   ├── libdrm/
│   │   │   └── package.mk
│   │   ├── libepoxy/
│   │   │   └── package.mk
│   │   ├── libglvnd/
│   │   │   └── package.mk
│   │   ├── libheif/
│   │   │   └── package.mk
│   │   ├── libjpeg-turbo/
│   │   │   └── package.mk
│   │   ├── libmali/
│   │   │   ├── package.mk
│   │   │   ├── scripts/
│   │   │   │   └── libmali-setup
│   │   │   └── system.d/
│   │   │       └── libmali-setup.service
│   │   ├── libpng/
│   │   │   └── package.mk
│   │   ├── libprojectM/
│   │   │   └── package.mk
│   │   ├── libraw/
│   │   │   └── package.mk
│   │   ├── libspng/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── libspng-0001-implement-BGRA8-for-framebuffer.patch
│   │   ├── libwebp/
│   │   │   └── package.mk
│   │   ├── mesa/
│   │   │   └── package.mk
│   │   ├── nvidia/
│   │   │   ├── modprobe.d/
│   │   │   │   └── nvidia-modesetting.conf
│   │   │   └── package.mk
│   │   ├── pango/
│   │   │   ├── config/
│   │   │   │   ├── pango.modules
│   │   │   │   └── pangorc
│   │   │   └── package.mk
│   │   ├── tiff/
│   │   │   └── package.mk
│   │   └── vulkan/
│   │       ├── glslang/
│   │       │   ├── package.mk
│   │       │   └── patches/
│   │       │       └── glslang-100.01-build-static-spirv-tools.patch
│   │       ├── spirv-headers/
│   │       │   └── package.mk
│   │       ├── spirv-tools/
│   │       │   └── package.mk
│   │       ├── vkmark/
│   │       │   ├── package.mk
│   │       │   └── patches/
│   │       │       └── vkmark-999.01-PR47-drop-the-vkCreateDmaBufImageINTEL-extension.patch
│   │       ├── vulkan-headers/
│   │       │   └── package.mk
│   │       ├── vulkan-loader/
│   │       │   └── package.mk
│   │       └── vulkan-tools/
│   │           ├── package.mk
│   │           └── patches/
│   │               ├── vulkan-tools-995.01-cmakelists-opts.patch
│   │               └── vulkan-tools-995.04-fix-glslangValidator-logik.patch
│   ├── lang/
│   │   ├── Python3/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── 0001-Make-the-build-of-pyc-files-conditional.patch
│   │   │       ├── 0002-Disable-buggy_getaddrinfo-configure-test-when-cross-.patch
│   │   │       ├── 0003-Add-infrastructure-to-disable-the-build-of-certain-e.patch
│   │   │       ├── 0004-Adjust-library-header-paths-for-cross-compilation.patch
│   │   │       ├── 0005-Don-t-look-in-usr-lib-termcap-for-libraries.patch
│   │   │       ├── 0006-Don-t-add-multiarch-paths.patch
│   │   │       ├── 0007-Abort-on-failed-module-build.patch
│   │   │       ├── 0008-Serial-ioctl-workaround.patch
│   │   │       ├── 0009-Do-not-adjust-the-shebang-of-Python-scripts-for-cros.patch
│   │   │       ├── 0010-Misc-python-config.sh.in-ensure-sed-invocations-only.patch
│   │   │       ├── 0011-Add-an-option-to-disable-pydoc.patch
│   │   │       ├── 0012-Add-an-option-to-disable-lib2to3.patch
│   │   │       ├── 0013-Add-option-to-disable-the-sqlite3-module.patch
│   │   │       ├── 0014-Add-an-option-to-disable-the-tk-module.patch
│   │   │       ├── 0015-Add-an-option-to-disable-the-curses-module.patch
│   │   │       ├── 0016-Add-an-option-to-disable-expat.patch
│   │   │       ├── 0017-Add-an-option-to-disable-CJK-codecs.patch
│   │   │       ├── 0018-Add-an-option-to-disable-NIS.patch
│   │   │       ├── 0019-Add-an-option-to-disable-unicodedata.patch
│   │   │       ├── 0020-Add-an-option-to-disable-IDLE.patch
│   │   │       ├── 0021-Add-an-option-to-disable-decimal.patch
│   │   │       ├── 0022-Add-an-option-to-disable-the-ossaudiodev-module.patch
│   │   │       ├── 0023-Add-an-option-to-disable-openssl-support.patch
│   │   │       ├── 0024-Add-an-option-to-disable-the-readline-module.patch
│   │   │       ├── 0025-Add-options-to-disable-zlib-bzip2-and-xz-modules.patch
│   │   │       ├── 0026-python-config.sh-don-t-reassign-prefix.patch
│   │   │       ├── 0027-Add-an-option-to-disable-uuid-module.patch
│   │   │       ├── 0029-configure.ac-fixup-CC-print-multiarch-output-for-mus.patch
│   │   │       ├── 0030-Add-an-option-to-disable-the-berkeleydb-module.patch
│   │   │       ├── 0031-lib-crypt-uClibc-ng-doesn-t-set-errno-when-encryptio.patch
│   │   │       ├── Python3-0000-default-is-optimized.patch
│   │   │       ├── Python3-0201-xcompile.patch
│   │   │       ├── Python3-0202-xcompile.patch
│   │   │       ├── Python3-0300-generate-legacy-pyc-bytecode.patch
│   │   │       ├── Python3-0400-fix-bpo5537.patch
│   │   │       └── arm/
│   │   │           └── Python3-0001-fix_platform_machine_func_for_32bit_userspace.patch
│   │   ├── gcc/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── gcc-4.8.2-disable_multilib_i386_linux64.patch
│   │   │       ├── gcc-allow-newer-autoconf.patch
│   │   │       └── gcc-crosscompile-badness.patch
│   │   ├── gcc-aarch64/
│   │   │   └── package.mk
│   │   ├── gcc-arm-none-eabi/
│   │   │   └── package.mk
│   │   ├── gcc-bpf/
│   │   │   └── package.mk
│   │   ├── gcc-or1k/
│   │   │   └── package.mk
│   │   ├── llvm/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── llvm-14.0.0-force-disable-cmakelist-options.patch
│   │   │       └── llvm-15.0.0-D108864-misleading-indentation.patch
│   │   ├── lua52/
│   │   │   ├── config/
│   │   │   │   └── lua52.pc
│   │   │   └── package.mk
│   │   ├── lua54/
│   │   │   ├── config/
│   │   │   │   └── lua54.pc
│   │   │   └── package.mk
│   │   └── nasm/
│   │       └── package.mk
│   ├── lib32/
│   │   ├── audio/
│   │   │   ├── lib32-SDL2_mixer/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-alsa-lib/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-flac/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-libmodplug/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-libogg/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-libpulse/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-libsndfile/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-libvorbis/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-libvorbisidec/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-mpg123-compat/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-openal-soft/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-opus/
│   │   │   │   └── package.mk
│   │   │   └── lib32-opusfile/
│   │   │       └── package.mk
│   │   ├── compress/
│   │   │   ├── lib32-bzip2/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-libzip/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-zlib/
│   │   │   │   └── package.mk
│   │   │   └── lib32-zstd/
│   │   │       └── package.mk
│   │   ├── devel/
│   │   │   ├── lib32-binutils/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-fribidi/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-glib/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-glibc/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-gmp/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-libcap/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-libffi/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-libpcap/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-libtool/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-linux-headers/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-pcre/
│   │   │   │   └── package.mk
│   │   │   └── lib32-pcre2/
│   │   │       └── package.mk
│   │   ├── emuelec/
│   │   │   ├── emulators/
│   │   │   │   ├── lib32-box86/
│   │   │   │   │   └── package.mk
│   │   │   │   └── lib32-droidports/
│   │   │   │       └── package.mk
│   │   │   ├── libretro/
│   │   │   │   ├── lib32-desmume/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── lib32-flycast/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── lib32-mupen64plus/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── lib32-parallel-n64/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── lib32-pcsx_rearmed/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── lib32-retroarch/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── lib32-retrorun/
│   │   │   │   │   └── package.mk
│   │   │   │   └── lib32-uae4arm/
│   │   │   │       └── package.mk
│   │   │   └── ports/
│   │   │       └── lib32-bennugd-monolithic/
│   │   │           └── package.mk
│   │   ├── graphics/
│   │   │   ├── lib32-SDL2_image/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-cairo/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-gl4es/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-harfbuzz/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-libdrm/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-libpng/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-librga/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-mali-bifrost/
│   │   │   │   └── package.mk
│   │   │   └── lib32-opengl-meson/
│   │   │       └── package.mk
│   │   ├── lang/
│   │   │   └── lib32-gcc/
│   │   │       └── package.mk
│   │   ├── multimedia/
│   │   │   ├── lib32-SDL2/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-ffmpeg/
│   │   │   │   └── package.mk
│   │   │   └── lib32-libass/
│   │   │       └── package.mk
│   │   ├── print/
│   │   │   └── lib32-freetype/
│   │   │       └── package.mk
│   │   ├── readme.MD
│   │   ├── security/
│   │   │   ├── lib32-gnutls/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-nettle/
│   │   │   │   └── package.mk
│   │   │   └── lib32-openssl/
│   │   │       └── package.mk
│   │   ├── sysutils/
│   │   │   ├── lib32-dbus/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-libevdev/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-libgo2/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-libusb/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-systemd-libs/
│   │   │   │   └── package.mk
│   │   │   └── lib32-util-linux/
│   │   │       └── package.mk
│   │   ├── textproc/
│   │   │   ├── lib32-expat/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-libidn2/
│   │   │   │   └── package.mk
│   │   │   ├── lib32-libxml2/
│   │   │   │   └── package.mk
│   │   │   └── lib32-tre/
│   │   │       └── package.mk
│   │   ├── tools/
│   │   │   ├── lib32-ldconfig/
│   │   │   │   ├── package.mk
│   │   │   │   └── system.d/
│   │   │   │       └── ldconfig.service
│   │   │   └── lib32-nold/
│   │   │       └── package.mk
│   │   ├── virtual/
│   │   │   ├── lib32-essential/
│   │   │   │   └── package.mk
│   │   │   └── lib32-toolchain/
│   │   │       └── package.mk
│   │   └── x11/
│   │       ├── lib/
│   │       │   ├── lib32-libpciaccess/
│   │       │   │   └── package.mk
│   │       │   └── lib32-pixman/
│   │       │       └── package.mk
│   │       ├── other/
│   │       │   └── lib32-fontconfig/
│   │       │       └── package.mk
│   │       └── util/
│   │           └── lib32-util-macros/
│   │               └── package.mk
│   ├── linux/
│   │   ├── package.mk
│   │   ├── patches/
│   │   │   ├── default/
│   │   │   │   ├── linux-020-ALSA-pcm-fix-ELD-constraints-for-E-AC3-DTS-HD-and-ML.patch
│   │   │   │   ├── linux-021-ASoC-hdmi-codec-don-t-set-channel-and-speaker-info-f.patch
│   │   │   │   ├── linux-022-ASoC-hdmi-codec-Fix-broken-channel-map-reporting.patch
│   │   │   │   ├── linux-051-ouya_controller_support.patch
│   │   │   │   ├── linux-058.05-hid_sony-add_autorepeat_for_PS3_remotes.patch
│   │   │   │   ├── linux-062-imon_pad_ignore_diagonal.patch
│   │   │   │   ├── linux-121-rtw88-linux-next-6-2.patch
│   │   │   │   ├── linux-122-rtw88-USB-fixes.patch
│   │   │   │   ├── linux-122-rtw88-USB-fixes2.patch
│   │   │   │   ├── linux-122-rtw88-fix-rcu-lock.patch
│   │   │   │   ├── linux-122-rtw88-rfc-v1.patch
│   │   │   │   ├── linux-150-dev_input_xpad_add_8bitdo_pro_2_wired_controller_support.patch
│   │   │   │   ├── linux-999-no-lzma-in-x86-perf-build.patch
│   │   │   │   └── linux-999.02-0001-pm-disable-async-suspend-resume-by-default.patch
│   │   │   └── raspberrypi/
│   │   │       ├── linux-051-ouya_controller_support.patch
│   │   │       └── linux-058.05-hid_sony-add_autorepeat_for_PS3_remotes.patch
│   │   ├── sysctl.d/
│   │   │   ├── network.conf
│   │   │   └── qdisc.conf
│   │   └── udev.d/
│   │       ├── 30-disable-wakeup.rules
│   │       └── 40-modeswitch.rules
│   ├── linux-driver-addons/
│   │   └── dvb/
│   │       ├── crazycat/
│   │       │   ├── changelog.txt
│   │       │   ├── package.mk
│   │       │   ├── patches/
│   │       │   │   └── disable-pci/
│   │       │   │       └── crazycat-03-disable-partly-pci.patch
│   │       │   └── source/
│   │       │       └── default.py
│   │       ├── depends/
│   │       │   ├── media_tree/
│   │       │   │   └── package.mk
│   │       │   └── media_tree_cc/
│   │       │       └── package.mk
│   │       ├── digital_devices/
│   │       │   ├── changelog.txt
│   │       │   ├── package.mk
│   │       │   └── source/
│   │       │       └── default.py
│   │       └── dvb-latest/
│   │           ├── changelog.txt
│   │           ├── package.mk
│   │           ├── patches/
│   │           │   └── disable-pci/
│   │           │       └── dvb-latest-03-disable-partly-pci.patch
│   │           └── source/
│   │               └── default.py
│   ├── linux-drivers/
│   │   ├── RTL8192DU/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── RTL8192DU-0001-remove_overlapping_pids.patch
│   │   │       └── aarch64/
│   │   │           └── RTL8192DU-0101-PR63.patch
│   │   ├── RTL8812AU/
│   │   │   └── package.mk
│   │   ├── bcm_sta/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── bcm_sta-0001-change-eth-to-wlan.patch
│   │   │       ├── bcm_sta-0002-user_ioctl.patch
│   │   │       ├── bcm_sta-0003-remove-date-time-macros.patch
│   │   │       ├── bcm_sta-0004-null-pointer-crash.patch
│   │   │       ├── bcm_sta-0005-rdtscl.patch
│   │   │       ├── bcm_sta-0006-kernel-4.7.patch
│   │   │       ├── bcm_sta-0007-kernel-4.8.patch
│   │   │       ├── bcm_sta-0008-kernel-4.11.patch
│   │   │       ├── bcm_sta-0009-kernel-4.12.patch
│   │   │       ├── bcm_sta-0010-kernel-4.15.patch
│   │   │       ├── bcm_sta-0011-fix-kernel-warnings.patch
│   │   │       ├── bcm_sta-0012-kernel-4.14.patch
│   │   │       ├── bcm_sta-0200-kernel-5.1-rc1-fix.patch
│   │   │       ├── bcm_sta-0300-kernel-5.6-rc1-fix.patch
│   │   │       ├── bcm_sta-0400-kernel-5.9-fix.patch
│   │   │       ├── bcm_sta-0500-kernel-5.10-fix.patch
│   │   │       ├── bcm_sta-0600-kernel-5.17-fix.patch
│   │   │       ├── bcm_sta-0600-kernel-5.18-fix.patch
│   │   │       ├── bcm_sta-0600-kernel-6.0-fix.patch
│   │   │       └── bcm_sta-0600-kernel-6.1-fix.patch
│   │   ├── mali-bifrost/
│   │   │   └── package.mk
│   │   ├── mali-midgard/
│   │   │   └── package.mk
│   │   └── mali-utgard/
│   │       └── package.mk
│   ├── linux-firmware/
│   │   ├── brcmfmac_sdio-firmware/
│   │   │   ├── package.mk
│   │   │   ├── scripts/
│   │   │   │   └── brcmfmac-firmware-setup
│   │   │   └── system.d/
│   │   │       └── brcmfmac-firmware.service
│   │   ├── brcmfmac_sdio-firmware-imx/
│   │   │   ├── package.mk
│   │   │   ├── system.d/
│   │   │   │   └── brcmfmac_sdio-firmware@.service
│   │   │   └── udev.d/
│   │   │       └── 80-brcmfmac_sdio.rules
│   │   ├── brcmfmac_sdio-firmware-rpi/
│   │   │   └── package.mk
│   │   ├── dvb-firmware/
│   │   │   └── package.mk
│   │   ├── firmware-dragonboard/
│   │   │   └── package.mk
│   │   ├── firmware-imx/
│   │   │   └── package.mk
│   │   ├── intel-ucode/
│   │   │   ├── package.mk
│   │   │   └── sources/
│   │   │       └── intel-microcode2ucode.c
│   │   ├── iwlwifi-firmware/
│   │   │   └── package.mk
│   │   ├── kernel-firmware/
│   │   │   └── package.mk
│   │   ├── misc-firmware/
│   │   │   └── package.mk
│   │   ├── rtl8723bs_bt/
│   │   │   ├── package.mk
│   │   │   ├── patches/
│   │   │   │   ├── rtl8723bs_bt-001-Makefile.patch
│   │   │   │   └── rtl8723bs_bt-002-firmware_path.patch
│   │   │   ├── system.d/
│   │   │   │   └── rtl8723bs_bt-firmware.service
│   │   │   └── udev.d/
│   │   │       └── 80-rtl8723_bt.rules
│   │   └── wlan-firmware/
│   │       └── package.mk
│   ├── mediacenter/
│   │   ├── JsonSchemaBuilder/
│   │   │   └── package.mk
│   │   ├── LibreELEC-settings/
│   │   │   ├── package.mk
│   │   │   ├── scripts/
│   │   │   │   ├── backup-restore
│   │   │   │   └── factory-reset
│   │   │   └── system.d/
│   │   │       ├── backup-restore.service
│   │   │       ├── backup-restore.target
│   │   │       ├── factory-reset.service
│   │   │       └── factory-reset.target
│   │   ├── TexturePacker/
│   │   │   └── package.mk
│   │   ├── kodi/
│   │   │   ├── config/
│   │   │   │   ├── 70-libinput-ignore-power-button.rules
│   │   │   │   ├── advancedsettings.xml
│   │   │   │   ├── appliance-gbm-generic.xml
│   │   │   │   ├── appliance-gbm.xml
│   │   │   │   ├── appliance.xml
│   │   │   │   ├── guisettings.xml
│   │   │   │   ├── kodi.conf.in
│   │   │   │   ├── network_wait
│   │   │   │   ├── repository.libreelec.tv/
│   │   │   │   │   └── addon.xml
│   │   │   │   └── sources.xml
│   │   │   ├── debug.d/
│   │   │   │   └── kodi.conf
│   │   │   ├── package.mk
│   │   │   ├── patches/
│   │   │   │   ├── README.patches
│   │   │   │   ├── cec-framework/
│   │   │   │   │   └── kodi-100.17-tinker-s-cec-disable-polling.patch
│   │   │   │   ├── drmprime-filter/
│   │   │   │   │   ├── 0001-WIP-DVDVideoCodecDRMPRIME-add-support-for-filters.patch
│   │   │   │   │   ├── 0002-WIP-DRMPRIME-deinterlace-filter.patch
│   │   │   │   │   ├── 0003-DVDVideoCodecDRMPRIME-Avoid-exception-with-AV_PIX_FM.patch
│   │   │   │   │   ├── 0004-DVDVideoCodecDRMPRIME-Leave-deinterlace-filter-activ.patch
│   │   │   │   │   ├── 0005-SetVideoInterlaced-Set-and-unset-deinterlace-method-.patch
│   │   │   │   │   ├── 0006-DVDVideoCodecDRMPRIME-Close-deinterlace-filter-on-er.patch
│   │   │   │   │   └── 0007-DVDVideoCodecDRMPRIME-Fix-missing-flush-after-eof.patch
│   │   │   │   ├── kodi-100.02-add-libreelec.tv-RSS-news.patch
│   │   │   │   ├── kodi-100.03-disable-online-check.patch
│   │   │   │   ├── kodi-100.04-use-udevil-to-umount.patch
│   │   │   │   ├── kodi-100.05-make-binary-addons-executable.patch
│   │   │   │   ├── kodi-100.07-disable-minimize.patch
│   │   │   │   ├── kodi-100.08-setup-timezone.patch
│   │   │   │   ├── kodi-100.09-use-a-wrapper-to-setup-service-addons.patch
│   │   │   │   ├── kodi-100.10-handle-SIGTERM.patch
│   │   │   │   ├── kodi-100.13-udevprovider-filter-out-OE-specific-mounts.patch
│   │   │   │   ├── kodi-100.15-rename-default-pulse-device.patch
│   │   │   │   ├── kodi-100.16-remove-sysinfo-battery.patch
│   │   │   │   ├── kodi-100.25-hack-fix-texture-packer-cmake-source-dir.patch
│   │   │   │   ├── kodi-100.26-disable-internal-texturepacker.patch
│   │   │   │   ├── kodi-100.30-addons-refresh-etc-environment.patch
│   │   │   │   ├── kodi-100.32.add-le-repository-to-officials.patch
│   │   │   │   ├── kodi-100.40-estuary-settings-icon.patch
│   │   │   │   ├── kodi-995.10-devinputmappings.patch
│   │   │   │   ├── kodi-995.21-keymaps-change-remote-poweroff-action-to-show-shutdo.patch
│   │   │   │   ├── kodi-999.15-disable-using-tv-menu-language-by-default.patch
│   │   │   │   ├── kodi-999.20-headers-only.patch
│   │   │   │   └── wayland/
│   │   │   │       ├── kodi-995.01-fix-missing-wayland-scanner-pkg-config.patch
│   │   │   │       └── kodi-999.16-PR20632-base-m_bFullScreenRoot-setting-on-res-infos-bFullScreen.patch
│   │   │   ├── profile.d/
│   │   │   │   ├── 00-addons.conf
│   │   │   │   └── 99-kodi.conf
│   │   │   ├── scripts/
│   │   │   │   ├── kodi-config
│   │   │   │   ├── kodi-remote
│   │   │   │   ├── kodi-safe-mode
│   │   │   │   ├── kodi.sh
│   │   │   │   ├── pastekodi
│   │   │   │   ├── service-addon-wrapper
│   │   │   │   ├── setwakeup.sh
│   │   │   │   └── xml_merge.py
│   │   │   ├── sleep.d/
│   │   │   │   └── openelec-sleep.sh
│   │   │   ├── sleep.d.serial/
│   │   │   │   ├── 10-addon-sleep.sh
│   │   │   │   └── 20-custom-sleep.sh
│   │   │   ├── system.d/
│   │   │   │   ├── kodi-autostart.service
│   │   │   │   ├── kodi-cleanlogs.service
│   │   │   │   ├── kodi-halt.service
│   │   │   │   ├── kodi-lirc-suspend.service
│   │   │   │   ├── kodi-poweroff.service
│   │   │   │   ├── kodi-reboot.service
│   │   │   │   ├── kodi-waitonnetwork.service
│   │   │   │   ├── kodi.service
│   │   │   │   └── kodi.target
│   │   │   └── tmpfiles.d/
│   │   │       ├── kodi-userdirs.conf
│   │   │       └── kodi.conf
│   │   ├── kodi-binary-addons/
│   │   │   ├── audiodecoder.2sf/
│   │   │   │   └── package.mk
│   │   │   ├── audiodecoder.asap/
│   │   │   │   └── package.mk
│   │   │   ├── audiodecoder.dumb/
│   │   │   │   └── package.mk
│   │   │   ├── audiodecoder.fluidsynth/
│   │   │   │   └── package.mk
│   │   │   ├── audiodecoder.gme/
│   │   │   │   └── package.mk
│   │   │   ├── audiodecoder.gsf/
│   │   │   │   └── package.mk
│   │   │   ├── audiodecoder.modplug/
│   │   │   │   └── package.mk
│   │   │   ├── audiodecoder.ncsf/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       ├── audiodecoder.ncsf-0001-fix-build-with-gcc5.patch
│   │   │   │       └── audiodecoder.ncsf-0002-fix-build-with-gcc-10.patch
│   │   │   ├── audiodecoder.nosefart/
│   │   │   │   └── package.mk
│   │   │   ├── audiodecoder.openmpt/
│   │   │   │   └── package.mk
│   │   │   ├── audiodecoder.organya/
│   │   │   │   └── package.mk
│   │   │   ├── audiodecoder.qsf/
│   │   │   │   └── package.mk
│   │   │   ├── audiodecoder.sacd/
│   │   │   │   └── package.mk
│   │   │   ├── audiodecoder.sidplay/
│   │   │   │   └── package.mk
│   │   │   ├── audiodecoder.snesapu/
│   │   │   │   └── package.mk
│   │   │   ├── audiodecoder.ssf/
│   │   │   │   └── package.mk
│   │   │   ├── audiodecoder.stsound/
│   │   │   │   └── package.mk
│   │   │   ├── audiodecoder.timidity/
│   │   │   │   └── package.mk
│   │   │   ├── audiodecoder.upse/
│   │   │   │   └── package.mk
│   │   │   ├── audiodecoder.usf/
│   │   │   │   └── package.mk
│   │   │   ├── audiodecoder.vgmstream/
│   │   │   │   └── package.mk
│   │   │   ├── audiodecoder.wsr/
│   │   │   │   └── package.mk
│   │   │   ├── audioencoder.flac/
│   │   │   │   └── package.mk
│   │   │   ├── audioencoder.lame/
│   │   │   │   └── package.mk
│   │   │   ├── audioencoder.vorbis/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.2048/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.atari800/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.beetle-bsnes/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.beetle-gba/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.beetle-lynx/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.beetle-ngp/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.beetle-pce-fast/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.beetle-pcfx/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.beetle-psx/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.beetle-supergrafx/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.beetle-vb/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.beetle-wswan/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.bluemsx/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.bnes/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.bsnes-mercury-accuracy/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.bsnes-mercury-balanced/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.bsnes-mercury-performance/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.cap32/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.dinothawr/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.dosbox/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.dosbox-pure/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.fbneo/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.fceumm/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.fmsx/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.fsuae/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.fuse/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.gambatte/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.genplus/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.gw/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.handy/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.hatari/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.mame2000/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.mame2003/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.mame2003_plus/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.mame2010/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.mame2015/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.mame2016/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.mesen/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.meteor/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.mgba/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.mrboom/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.nestopia/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.nx/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.o2em/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.opera/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.pcsx-rearmed/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.picodrive/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.pokemini/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.prboom/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.prosystem/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.quicknes/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.sameboy/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.scummvm/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.snes9x/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.snes9x2002/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.snes9x2010/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.stella/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.tgbdual/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.tyrquake/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.uae/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.uae4arm/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.vba-next/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.vbam/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.vecx/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.vice/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.virtualjaguar/
│   │   │   │   └── package.mk
│   │   │   ├── game.libretro.yabause/
│   │   │   │   └── package.mk
│   │   │   ├── imagedecoder.heif/
│   │   │   │   └── package.mk
│   │   │   ├── imagedecoder.mpo/
│   │   │   │   └── package.mk
│   │   │   ├── imagedecoder.raw/
│   │   │   │   └── package.mk
│   │   │   ├── inputstream.adaptive/
│   │   │   │   └── package.mk
│   │   │   ├── inputstream.ffmpegdirect/
│   │   │   │   └── package.mk
│   │   │   ├── inputstream.rtmp/
│   │   │   │   └── package.mk
│   │   │   ├── peripheral.joystick/
│   │   │   │   └── package.mk
│   │   │   ├── peripheral.xarcade/
│   │   │   │   └── package.mk
│   │   │   ├── pvr.argustv/
│   │   │   │   └── package.mk
│   │   │   ├── pvr.demo/
│   │   │   │   └── package.mk
│   │   │   ├── pvr.dvblink/
│   │   │   │   └── package.mk
│   │   │   ├── pvr.dvbviewer/
│   │   │   │   └── package.mk
│   │   │   ├── pvr.filmon/
│   │   │   │   └── package.mk
│   │   │   ├── pvr.freebox/
│   │   │   │   └── package.mk
│   │   │   ├── pvr.hdhomerun/
│   │   │   │   └── package.mk
│   │   │   ├── pvr.hts/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── pvr.hts-0001-set-speed.patch
│   │   │   ├── pvr.iptvsimple/
│   │   │   │   └── package.mk
│   │   │   ├── pvr.mediaportal.tvserver/
│   │   │   │   └── package.mk
│   │   │   ├── pvr.mythtv/
│   │   │   │   └── package.mk
│   │   │   ├── pvr.nextpvr/
│   │   │   │   └── package.mk
│   │   │   ├── pvr.njoy/
│   │   │   │   └── package.mk
│   │   │   ├── pvr.octonet/
│   │   │   │   └── package.mk
│   │   │   ├── pvr.pctv/
│   │   │   │   └── package.mk
│   │   │   ├── pvr.plutotv/
│   │   │   │   └── package.mk
│   │   │   ├── pvr.sledovanitv.cz/
│   │   │   │   └── package.mk
│   │   │   ├── pvr.stalker/
│   │   │   │   └── package.mk
│   │   │   ├── pvr.teleboy/
│   │   │   │   └── package.mk
│   │   │   ├── pvr.vbox/
│   │   │   │   └── package.mk
│   │   │   ├── pvr.vdr.vnsi/
│   │   │   │   └── package.mk
│   │   │   ├── pvr.vuplus/
│   │   │   │   └── package.mk
│   │   │   ├── pvr.waipu/
│   │   │   │   └── package.mk
│   │   │   ├── pvr.wmc/
│   │   │   │   └── package.mk
│   │   │   ├── pvr.zattoo/
│   │   │   │   └── package.mk
│   │   │   ├── screensaver.asteroids/
│   │   │   │   └── package.mk
│   │   │   ├── screensaver.asterwave/
│   │   │   │   └── package.mk
│   │   │   ├── screensaver.biogenesis/
│   │   │   │   └── package.mk
│   │   │   ├── screensaver.greynetic/
│   │   │   │   └── package.mk
│   │   │   ├── screensaver.matrixtrails/
│   │   │   │   └── package.mk
│   │   │   ├── screensaver.pingpong/
│   │   │   │   └── package.mk
│   │   │   ├── screensaver.pyro/
│   │   │   │   └── package.mk
│   │   │   ├── screensaver.shadertoy/
│   │   │   │   └── package.mk
│   │   │   ├── screensaver.stars/
│   │   │   │   └── package.mk
│   │   │   ├── vfs.libarchive/
│   │   │   │   └── package.mk
│   │   │   ├── vfs.sftp/
│   │   │   │   └── package.mk
│   │   │   ├── visualization.fishbmc/
│   │   │   │   └── package.mk
│   │   │   ├── visualization.goom/
│   │   │   │   └── package.mk
│   │   │   ├── visualization.matrix/
│   │   │   │   └── package.mk
│   │   │   ├── visualization.pictureit/
│   │   │   │   └── package.mk
│   │   │   ├── visualization.projectm/
│   │   │   │   └── package.mk
│   │   │   ├── visualization.shadertoy/
│   │   │   │   └── package.mk
│   │   │   ├── visualization.spectrum/
│   │   │   │   └── package.mk
│   │   │   ├── visualization.starburst/
│   │   │   │   └── package.mk
│   │   │   └── visualization.waveform/
│   │   │       └── package.mk
│   │   ├── kodi-platform/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── kodi-platform-01_crosscompile-badness.patch
│   │   ├── kodi-theme-Estuary/
│   │   │   └── package.mk
│   │   └── p8-platform/
│   │       ├── package.mk
│   │       └── patches/
│   │           ├── p8-platform-01-revert-cc-badness.patch
│   │           └── p8-platform-02-cmake_install_prefix_toolchain.patch
│   ├── multimedia/
│   │   ├── SDL2/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── Amlogic/
│   │   │       │   └── 0001-mali-fbdev-add-driver.patch
│   │   │       ├── OdroidGoAdvance/
│   │   │       │   ├── 0005-SDL2-2.28.1.odroidgoa-support.patch
│   │   │       │   └── 0006-KMSDRM-Also-rotate-the-cursor.patch
│   │   │       └── Rockchip/
│   │   │           └── 0001-kmsdrm-Workaround-missing-gbm_bo_get_offset-and-SDL_.patch
│   │   ├── aom/
│   │   │   └── package.mk
│   │   ├── bento4/
│   │   │   └── package.mk
│   │   ├── dav1d/
│   │   │   └── package.mk
│   │   ├── ffmpeg/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── dav1d/
│   │   │       │   └── ffmpeg-support-dav1d-1-0-0.patch
│   │   │       ├── dv/
│   │   │       │   ├── ffmpeg-001-avformat-dovi_isom-Implement-Dolby-Vision-configurat.patch
│   │   │       │   └── ffmpeg-002-avformat-matroska-dec-enc-Parse-BlockAdditionMapping.patch
│   │   │       ├── ffmpeg-force_sdl2.patch
│   │   │       ├── ffmpeg-openssl3.patch
│   │   │       ├── kodi/
│   │   │       │   └── ffmpeg-001-kodi.patch
│   │   │       ├── libreelec/
│   │   │       │   └── ffmpeg-001-libreelec.patch
│   │   │       ├── rpi/
│   │   │       │   └── ffmpeg-001-rpi.patch
│   │   │       ├── v4l2-drmprime/
│   │   │       │   └── ffmpeg-001-v4l2-drmprime.patch
│   │   │       └── v4l2-request/
│   │   │           └── ffmpeg-001-v4l2-request.patch
│   │   ├── gmmlib/
│   │   │   └── package.mk
│   │   ├── gstreamer/
│   │   │   ├── gst-plugins-bad/
│   │   │   │   └── package.mk
│   │   │   ├── gst-plugins-base/
│   │   │   │   └── package.mk
│   │   │   └── gstreamer/
│   │   │       └── package.mk
│   │   ├── intel-vaapi-driver/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── 0001-intel-vaapi-driver-2.4.1-Handle-odd-resolution.patch
│   │   ├── libaacs/
│   │   │   └── package.mk
│   │   ├── libass/
│   │   │   └── package.mk
│   │   ├── libbdplus/
│   │   │   └── package.mk
│   │   ├── libbluray/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── libbluray-00-fix-build-with-autoconf-archive-2016-or-later.patch
│   │   │       └── libbluray-03-set-headless-false.patch
│   │   ├── libdvdcss/
│   │   │   └── package.mk
│   │   ├── libdvdnav/
│   │   │   └── package.mk
│   │   ├── libdvdread/
│   │   │   └── package.mk
│   │   ├── libmpeg2/
│   │   │   └── package.mk
│   │   ├── libudfread/
│   │   │   └── package.mk
│   │   ├── libva/
│   │   │   └── package.mk
│   │   ├── libvdpau/
│   │   │   └── package.mk
│   │   ├── media-driver/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── media-driver-999.01-PR1162-use-forward_references-as-the-reference-for-ADI.patch
│   │   ├── nv-codec-headers/
│   │   │   └── package.mk
│   │   ├── nvidia-vaapi-driver/
│   │   │   └── package.mk
│   │   ├── rtmpdump/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── 001_fix-racing-build-issue.patch
│   │   │       └── 002_build-with-openssl11.patch
│   │   └── zvbi/
│   │       ├── package.mk
│   │       └── patches/
│   │           ├── zvbi-0010-fix-static-linking.patch
│   │           ├── zvbi-0020-ioctl.patch
│   │           ├── zvbi-0030-ssize_max.patch
│   │           ├── zvbi-0040-fix-clang-support.patch
│   │           └── zvbi-0050-prevent-test.patch
│   ├── network/
│   │   ├── avahi/
│   │   │   ├── debug.d/
│   │   │   │   └── avahi.conf
│   │   │   ├── default.d/
│   │   │   │   └── avahi.conf
│   │   │   ├── package.mk
│   │   │   └── system.d/
│   │   │       ├── avahi-daemon.service
│   │   │       └── avahi-defaults.service
│   │   ├── bluez/
│   │   │   ├── debug.d/
│   │   │   │   ├── bluez.conf
│   │   │   │   └── obexd.conf
│   │   │   ├── default.d/
│   │   │   │   └── bluez.conf
│   │   │   ├── package.mk
│   │   │   ├── patches/
│   │   │   │   ├── bluez-01_add-obexd-policy.patch
│   │   │   │   ├── bluez-02_obexd-use-system-bus.patch
│   │   │   │   ├── bluez-03_storagedir.patch
│   │   │   │   ├── bluez-04_work-around-Logitech-diNovo-Edge-keyboard-firmware-i.patch
│   │   │   │   ├── bluez-05-046d-c52b-Logitech-Inc.-Unifying-Receiver.patch
│   │   │   │   ├── bluez-06-raspberry-pi-mods.patch
│   │   │   │   ├── bluez-08-hciattach-retry-device-reset-when-no-response.patch
│   │   │   │   ├── bluez-11_sixaxis-fix-PID-navigation-controller.patch
│   │   │   │   ├── bluez-12-fix-obexd-after-5_50.patch
│   │   │   │   ├── bluez-21-hciattach-add-QCA9377-Tuffello-support.patch
│   │   │   │   ├── bluez-40-Add-support-for-sprd-type-in-hciattach.patch
│   │   │   │   └── fake-ps3.patch
│   │   │   ├── system.d/
│   │   │   │   ├── bluetooth-defaults.service
│   │   │   │   ├── bluetooth.service
│   │   │   │   └── obex.service
│   │   │   └── tmpfiles.d/
│   │   │       └── z_05_bluez.conf
│   │   ├── connman/
│   │   │   ├── config/
│   │   │   │   └── settings
│   │   │   ├── debug.d/
│   │   │   │   └── connman.conf
│   │   │   ├── package.mk
│   │   │   ├── patches/
│   │   │   │   ├── connman-01-do-not-cleanup-routes.patch
│   │   │   │   ├── connman-04-ipv6-disabled-by-default.patch
│   │   │   │   └── connman-05_link-against-ncurses.patch
│   │   │   ├── scripts/
│   │   │   │   └── connman-setup
│   │   │   ├── system.d/
│   │   │   │   ├── connman-vpn.service
│   │   │   │   ├── connman.service
│   │   │   │   └── network-online.service
│   │   │   └── tmpfiles.d/
│   │   │       └── z_03_connman.conf
│   │   ├── ethtool/
│   │   │   ├── package.mk
│   │   │   └── udev.d/
│   │   │       └── 99-wakeup-eth.rules
│   │   ├── iptables/
│   │   │   ├── config/
│   │   │   │   ├── README
│   │   │   │   ├── home.v4
│   │   │   │   ├── home.v6
│   │   │   │   ├── public.v4
│   │   │   │   └── public.v6
│   │   │   ├── package.mk
│   │   │   ├── patches/
│   │   │   │   └── iptables-0002-xshared-fix-for-build-in-sub-directory.patch
│   │   │   ├── scripts/
│   │   │   │   └── iptables_helper
│   │   │   └── system.d/
│   │   │       └── iptables.service
│   │   ├── iw/
│   │   │   ├── package.mk
│   │   │   ├── scripts/
│   │   │   │   └── setregdomain
│   │   │   └── udev.d/
│   │   │       └── 60-iw-regdomain.rules
│   │   ├── iwd/
│   │   │   └── package.mk
│   │   ├── libdnet/
│   │   │   └── package.mk
│   │   ├── libmnl/
│   │   │   └── package.mk
│   │   ├── libnfs/
│   │   │   └── package.mk
│   │   ├── libnftnl/
│   │   │   └── package.mk
│   │   ├── libnl/
│   │   │   └── package.mk
│   │   ├── libshairplay/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── libshairplay-read_airportkey_from_etc.patch
│   │   ├── libssh/
│   │   │   └── package.mk
│   │   ├── libtirpc/
│   │   │   └── package.mk
│   │   ├── netbase/
│   │   │   └── package.mk
│   │   ├── nfs-utils/
│   │   │   ├── config/
│   │   │   │   └── exports.sample
│   │   │   ├── package.mk
│   │   │   ├── patches/
│   │   │   │   └── nfs-utils-01-ce-specific.patch
│   │   │   ├── system.d/
│   │   │   │   └── load-module-nfsd.service
│   │   │   └── tmpfiles.d/
│   │   │       └── nfs-utils.conf
│   │   ├── nss-mdns/
│   │   │   ├── config/
│   │   │   │   └── nsswitch.conf
│   │   │   └── package.mk
│   │   ├── openssh/
│   │   │   ├── package.mk
│   │   │   ├── patches/
│   │   │   │   ├── openssh-8.9p1-keydir.patch
│   │   │   │   ├── openssh-motd-add-device-info.patch
│   │   │   │   ├── openssh-silence-missing-identity-error.patch
│   │   │   │   └── openssh-source-etc-environment.patch
│   │   │   ├── system.d/
│   │   │   │   └── sshd.service
│   │   │   └── tmpfiles.d/
│   │   │       └── z_04_openssh.conf
│   │   ├── openvpn/
│   │   │   └── package.mk
│   │   ├── rpcbind/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── rpcbind-01-drop-warm-start-as-it-fails.patch
│   │   │       └── rpcbind-1.2.6-vulnerability_fixes-1.patch
│   │   ├── rpcsvc-proto/
│   │   │   └── package.mk
│   │   ├── rsync/
│   │   │   └── package.mk
│   │   ├── samba/
│   │   │   ├── config/
│   │   │   │   ├── samba4-cache.txt
│   │   │   │   └── smb.conf
│   │   │   ├── default.d/
│   │   │   │   └── samba.conf
│   │   │   ├── package.mk
│   │   │   ├── patches/
│   │   │   │   ├── samba-200-4.11-fix-ASN1-bso14164.patch
│   │   │   │   ├── samba-950-no-man.patch
│   │   │   │   └── samba-951-no-man-4.16.patch
│   │   │   ├── scripts/
│   │   │   │   ├── samba-autoshare
│   │   │   │   ├── samba-config
│   │   │   │   └── smbpasswd
│   │   │   ├── system.d/
│   │   │   │   └── samba-config.service
│   │   │   └── system.d.opt/
│   │   │       ├── nmbd.service
│   │   │       └── smbd.service
│   │   ├── sshpass/
│   │   │   └── package.mk
│   │   ├── wireguard-linux-compat/
│   │   │   ├── modules-load.d/
│   │   │   │   └── wireguard.conf
│   │   │   └── package.mk
│   │   ├── wireguard-tools/
│   │   │   ├── config/
│   │   │   │   ├── system.d/
│   │   │   │   │   └── wireguard.service.sample
│   │   │   │   └── wireguard/
│   │   │   │       └── wireguard.config.sample
│   │   │   ├── package.mk
│   │   │   ├── scripts/
│   │   │   │   └── wg-keygen
│   │   │   └── tmpfiles.d/
│   │   │       └── z_03_wireguard.conf
│   │   ├── wireless-regdb/
│   │   │   └── package.mk
│   │   ├── wpa_supplicant/
│   │   │   ├── config/
│   │   │   │   └── makefile.config
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── wpa_supplicant-2.4-libnl3-includes.patch
│   │   └── wsdd2/
│   │       └── package.mk
│   ├── oem/
│   │   └── package.mk
│   ├── packages.mk.addon_template
│   ├── packages.mk.template
│   ├── print/
│   │   └── freetype/
│   │       ├── package.mk
│   │       └── patches/
│   │           └── freetype-01-fix-pkgconf.patch
│   ├── python/
│   │   ├── devel/
│   │   │   ├── Jinja2/
│   │   │   │   └── package.mk
│   │   │   ├── Mako/
│   │   │   │   └── package.mk
│   │   │   ├── MarkupSafe/
│   │   │   │   └── package.mk
│   │   │   ├── distutilscross/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── distutilscross-0000-fix-python3.patch
│   │   │   ├── meson/
│   │   │   │   └── package.mk
│   │   │   ├── ninja/
│   │   │   │   └── package.mk
│   │   │   ├── pgi/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── pgi-0001-remove-type-as-it-s-not-Python-3-compatible.patch
│   │   │   ├── pygobject/
│   │   │   │   └── package.mk
│   │   │   ├── setuptools/
│   │   │   │   └── package.mk
│   │   │   └── waf/
│   │   │       └── package.mk
│   │   ├── graphics/
│   │   │   └── Pillow/
│   │   │       ├── package.mk
│   │   │       └── patches/
│   │   │           └── Pillow-0001-crosscompiling.patch
│   │   ├── python-uinput/
│   │   │   └── package.mk
│   │   ├── security/
│   │   │   └── pycryptodome/
│   │   │       └── package.mk
│   │   └── system/
│   │       ├── dbus-python/
│   │       │   └── package.mk
│   │       ├── dbussy/
│   │       │   └── package.mk
│   │       └── simplejson/
│   │           └── package.mk
│   ├── rust/
│   │   ├── cargo/
│   │   │   └── package.mk
│   │   ├── cargo-c/
│   │   │   └── package.mk
│   │   ├── cargo-snapshot/
│   │   │   └── package.mk
│   │   ├── rust/
│   │   │   ├── package.mk
│   │   │   └── targets/
│   │   │       ├── aarch64-libreelec-linux-gnu.json
│   │   │       ├── arm-libreelec-linux-gnueabihf.json
│   │   │       └── x86_64-libreelec-linux-gnu.json
│   │   ├── rust-std-snapshot/
│   │   │   └── package.mk
│   │   └── rustc-snapshot/
│   │       └── package.mk
│   ├── security/
│   │   ├── gnutls/
│   │   │   └── package.mk
│   │   ├── libgcrypt/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── libgcrypt-01-dont_replace_parts_of_path-0.1.patch
│   │   │       └── libgcrypt-ac_cv_sys_symbol_underscore.patch
│   │   ├── libgpg-error/
│   │   │   └── package.mk
│   │   ├── nettle/
│   │   │   └── package.mk
│   │   ├── nspr/
│   │   │   └── package.mk
│   │   ├── nss/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── nss-02_3.15.5-standalone-1.patch
│   │   │       ├── nss-04-skip_shlibsign.patch
│   │   │       ├── nss-05-disable_host_cflags.patch
│   │   │       └── nss-09-gcc-warning-workaround.patch
│   │   └── openssl/
│   │       ├── cert/
│   │       │   └── cacert.pem
│   │       ├── package.mk
│   │       ├── scripts/
│   │       │   └── openssl-config
│   │       └── system.d/
│   │           └── openssl-config.service
│   ├── sx05re/
│   │   ├── Amlogic/
│   │   │   └── package.mk
│   │   ├── Amlogic-ng/
│   │   │   └── package.mk
│   │   ├── Amlogic-no/
│   │   │   └── package.mk
│   │   ├── emuelec/
│   │   │   ├── bin/
│   │   │   │   ├── batocera/
│   │   │   │   │   ├── batocera-bluetooth
│   │   │   │   │   ├── batocera-bluetooth-agent
│   │   │   │   │   ├── batocera-brightness
│   │   │   │   │   ├── batocera-bt-list-devices
│   │   │   │   │   ├── batocera-bt-test-device
│   │   │   │   │   ├── batocera-btDaemon
│   │   │   │   │   ├── batocera-config
│   │   │   │   │   ├── batocera-es-thebezelproject
│   │   │   │   │   ├── batocera-es-theme
│   │   │   │   │   ├── batocera-info
│   │   │   │   │   ├── batocera-resolution
│   │   │   │   │   ├── batocera-retroachievements-info
│   │   │   │   │   ├── batocera-scraper
│   │   │   │   │   ├── batocera-settings
│   │   │   │   │   ├── batocera-systems
│   │   │   │   │   ├── batocera-wifi
│   │   │   │   │   ├── emuelec-bluetooth
│   │   │   │   │   ├── emuelec-bluetooth-legacy
│   │   │   │   │   └── emuelec-upgrade
│   │   │   │   ├── bezels.sh
│   │   │   │   ├── check_res.sh
│   │   │   │   ├── connectbtwii.sh
│   │   │   │   ├── emuelec-utils
│   │   │   │   ├── emuelecRunApp.sh
│   │   │   │   ├── emuelecRunEmu.sh
│   │   │   │   ├── emuelec_autostart.sh
│   │   │   │   ├── emueleclogs.sh
│   │   │   │   ├── emustation-config
│   │   │   │   ├── env.sh
│   │   │   │   ├── fbterm.sh
│   │   │   │   ├── find.sh
│   │   │   │   ├── gamelist-cleaner.sh
│   │   │   │   ├── hypseus.start.sh
│   │   │   │   ├── joy2key.py
│   │   │   │   ├── joy_common.sh
│   │   │   │   ├── killes.sh
│   │   │   │   ├── ldd_32
│   │   │   │   ├── mount_romfs.sh
│   │   │   │   ├── pico8.sh
│   │   │   │   ├── playvideo.sh
│   │   │   │   ├── romconf.sh
│   │   │   │   ├── rr_audio.sh
│   │   │   │   ├── runwiimote.sh
│   │   │   │   ├── scripts/
│   │   │   │   │   ├── scriptmodules/
│   │   │   │   │   │   ├── archivefuncs.sh
│   │   │   │   │   │   ├── helpers.sh
│   │   │   │   │   │   ├── inifuncs.sh
│   │   │   │   │   │   ├── packages.sh
│   │   │   │   │   │   ├── supplementary/
│   │   │   │   │   │   │   ├── bluetoothcontroller.py
│   │   │   │   │   │   │   ├── esthemes.sh
│   │   │   │   │   │   │   ├── reicast.sh
│   │   │   │   │   │   │   ├── scraper.sh
│   │   │   │   │   │   │   ├── skyscraper.sh
│   │   │   │   │   │   │   ├── systeminfo.sh
│   │   │   │   │   │   │   └── wifi.sh
│   │   │   │   │   │   └── system.sh
│   │   │   │   │   └── setup/
│   │   │   │   │       ├── CMD_MAKER.py
│   │   │   │   │       ├── EKA_INSTALL.py
│   │   │   │   │       ├── Skyscraper.start
│   │   │   │   │       ├── btconnect.sh
│   │   │   │   │       ├── btsetup.sh
│   │   │   │   │       ├── cmdmaker.sh
│   │   │   │   │       ├── copy_usb_roms_to_device.sh
│   │   │   │   │       ├── create_rom_dirs.sh
│   │   │   │   │       ├── eka-install.sh
│   │   │   │   │       ├── file_manager.sh
│   │   │   │   │       ├── gamelist.xml
│   │   │   │   │       ├── install_cheats.sh
│   │   │   │   │       ├── install_drastic.sh
│   │   │   │   │       ├── install_pixelcade.sh
│   │   │   │   │       ├── install_portmaster.sh
│   │   │   │   │       ├── launch_terminal_(kb).sh
│   │   │   │   │       ├── listmedia.txt
│   │   │   │   │       ├── macrorun.py
│   │   │   │   │       ├── macrorun.sh
│   │   │   │   │       ├── macrosetup.py
│   │   │   │   │       ├── macrosetup.sh
│   │   │   │   │       ├── scan_scummVM_games.sh
│   │   │   │   │       ├── scraper.start
│   │   │   │   │       ├── send_logs.sh
│   │   │   │   │       ├── show_last_emuelec.log.sh
│   │   │   │   │       ├── skyscraper.sh
│   │   │   │   │       ├── sselphs_scraper.sh
│   │   │   │   │       ├── system_info.sh
│   │   │   │   │       ├── wifi.sh
│   │   │   │   │       └── youtube_search.sh
│   │   │   │   ├── setres.sh
│   │   │   │   ├── setsettings.sh
│   │   │   │   ├── setterm
│   │   │   │   ├── show_splash.sh
│   │   │   │   └── updatecheck.sh
│   │   │   ├── config/
│   │   │   │   ├── EE_VERSION
│   │   │   │   ├── asound.conf-amlogic
│   │   │   │   ├── asound.conf-amlogic-ng
│   │   │   │   ├── asound.conf-amlogic-no
│   │   │   │   ├── autostart.sh
│   │   │   │   ├── custom_start.sh
│   │   │   │   ├── emuelec/
│   │   │   │   │   ├── bin/
│   │   │   │   │   │   └── put_user_bins_here
│   │   │   │   │   ├── configs/
│   │   │   │   │   │   ├── all/
│   │   │   │   │   │   │   ├── autoconf.cfg
│   │   │   │   │   │   │   ├── bluetooth.cfg
│   │   │   │   │   │   │   ├── scraper.cfg
│   │   │   │   │   │   │   └── skyscraper.cfg
│   │   │   │   │   │   ├── atari800.cfg
│   │   │   │   │   │   ├── bezels/
│   │   │   │   │   │   │   └── arcademap.cfg
│   │   │   │   │   │   ├── buttonmapping.cfg
│   │   │   │   │   │   ├── dimensions.conf
│   │   │   │   │   │   ├── emuelec.conf
│   │   │   │   │   │   ├── emuoptions.conf
│   │   │   │   │   │   ├── gptokeyb/
│   │   │   │   │   │   │   ├── fallout.gptk
│   │   │   │   │   │   │   └── sorr.gptk
│   │   │   │   │   │   ├── jslisten.cfg
│   │   │   │   │   │   ├── pico-8/
│   │   │   │   │   │   │   └── sdl_controllers.txt
│   │   │   │   │   │   └── tz
│   │   │   │   │   ├── lib/
│   │   │   │   │   │   └── put_user_libs_here
│   │   │   │   │   ├── lib32/
│   │   │   │   │   │   └── put_32b_user_libs_here
│   │   │   │   │   └── scripts/
│   │   │   │   │       └── put_user_scripts_here
│   │   │   │   ├── emulationstation/
│   │   │   │   │   └── scripts/
│   │   │   │   │       ├── es_env.sh
│   │   │   │   │       ├── inputconfiguration.sh
│   │   │   │   │       ├── pixel.sh
│   │   │   │   │       ├── setvolume.sh
│   │   │   │   │       └── wifi.sh
│   │   │   │   ├── profile.d/
│   │   │   │   │   └── 99-emuelec_functions.conf
│   │   │   │   ├── retroarch/
│   │   │   │   │   ├── config/
│   │   │   │   │   │   ├── DuckStation/
│   │   │   │   │   │   │   └── DuckStation.opt
│   │   │   │   │   │   ├── MAME/
│   │   │   │   │   │   │   └── MAME.opt
│   │   │   │   │   │   ├── Mupen64Plus-Next GLES2/
│   │   │   │   │   │   │   └── Mupen64Plus-Next GLES2.opt
│   │   │   │   │   │   ├── Neko Project II/
│   │   │   │   │   │   │   └── Neko_Project_II.opt
│   │   │   │   │   │   ├── Neko Project II kai/
│   │   │   │   │   │   │   └── Neko_Project_II_kai.opt
│   │   │   │   │   │   ├── SwanStation/
│   │   │   │   │   │   │   └── SwanStation.opt
│   │   │   │   │   │   └── remappings/
│   │   │   │   │   │       ├── Flycast/
│   │   │   │   │   │       │   └── Flycast.rmp
│   │   │   │   │   │       ├── Mupen64Plus/
│   │   │   │   │   │       │   └── Mupen64Plus.rmp
│   │   │   │   │   │       ├── Mupen64Plus GLES2/
│   │   │   │   │   │       │   └── Mupen64Plus GLES2.rmp
│   │   │   │   │   │       ├── Mupen64Plus-Next/
│   │   │   │   │   │       │   └── Mupen64Plus-Next.rmp
│   │   │   │   │   │       ├── Mupen64Plus-Next GLES2/
│   │   │   │   │   │       │   └── Mupen64Plus-Next GLES2.rmp
│   │   │   │   │   │       └── ParaLLEl N64/
│   │   │   │   │   │           └── ParaLLEl N64.rmp
│   │   │   │   │   └── retroarch-core-options.cfg
│   │   │   │   └── system.d/
│   │   │   │       ├── storage-roms.mount.sample
│   │   │   │       └── storage-roms.mount.sample.nfs
│   │   │   ├── gamepads/
│   │   │   │   ├── 8BitDo SN30 pro.cfg
│   │   │   │   ├── GO-Advance Gamepad (rev 1.1).cfg
│   │   │   │   ├── GO-Advance Gamepad (rev 1.1)_vertical.cfg
│   │   │   │   ├── GO-Advance Gamepad.cfg
│   │   │   │   ├── GO-Advance Gamepad_vertical.cfg
│   │   │   │   ├── GO-Super Gamepad.cfg
│   │   │   │   ├── GO-Super Gamepad_vertical.cfg
│   │   │   │   ├── GZ RX CO.,LTD. RX Gamepad.cfg
│   │   │   │   ├── Google LLC Stadia Controller rev. A.cfg
│   │   │   │   ├── HORI CO.,LTD. HORIPAD S.cfg
│   │   │   │   ├── Logitech Gamepad F310.cfg
│   │   │   │   ├── PlayGame PS2.cfg
│   │   │   │   ├── Sony Interactive Entertainment Wireless Controller.cfg
│   │   │   │   ├── Sony PLAYSTATION(R)3 Controller.cfg
│   │   │   │   ├── Xbox 360 Controller.cfg
│   │   │   │   ├── gameforce_gamepad.cfg
│   │   │   │   └── iNNEXT SNES.cfg
│   │   │   ├── overlay/
│   │   │   │   ├── bezels/
│   │   │   │   │   └── default.cfg
│   │   │   │   └── emuelec/
│   │   │   │       └── scanlines_single_1920x1080.cfg
│   │   │   ├── package.mk
│   │   │   ├── profile.d/
│   │   │   │   └── 99-emuelec.conf
│   │   │   ├── shaders/
│   │   │   │   ├── crt/
│   │   │   │   │   ├── crt-nes-mini.glslp
│   │   │   │   │   ├── crt-pi-vertical.glslp
│   │   │   │   │   ├── crt-pi.glslp
│   │   │   │   │   ├── fakelottes.glslp
│   │   │   │   │   ├── scanline.glslp
│   │   │   │   │   ├── shaders/
│   │   │   │   │   │   ├── crt-nes-mini.glsl
│   │   │   │   │   │   ├── crt-pi-vertical.glsl
│   │   │   │   │   │   ├── crt-pi.glsl
│   │   │   │   │   │   ├── fakelottes.glsl
│   │   │   │   │   │   ├── scanlines.glsl
│   │   │   │   │   │   └── zfast_crt.glsl
│   │   │   │   │   └── zfast-crt.glslp
│   │   │   │   ├── kurg/
│   │   │   │   │   ├── kurg-ROPi-scanlines-3x.glsl
│   │   │   │   │   ├── kurg-ROPi-scanlines-3x.glslp
│   │   │   │   │   ├── kurg-ROPi-scanlines-3x_v2.glsl
│   │   │   │   │   ├── kurg-ROPi-scanlines-3x_v2.glslp
│   │   │   │   │   ├── kurg_scanlines_source.glsl
│   │   │   │   │   └── kurg_scanlines_source_nearest.glslp
│   │   │   │   └── sharp/
│   │   │   │       ├── shaders/
│   │   │   │       │   ├── sharp-bilinear-scanlines.glsl
│   │   │   │       │   ├── sharp-bilinear-simple.glsl
│   │   │   │       │   └── stock.glsl
│   │   │   │       ├── sharp-bilinear-2x-prescale.glslp
│   │   │   │       ├── sharp-bilinear-scanlines.glslp
│   │   │   │       └── sharp-bilinear-simple.glslp
│   │   │   ├── system.d/
│   │   │   │   ├── emuelec-autostart.service
│   │   │   │   ├── emuelec-disable_small_cores.service
│   │   │   │   ├── emuelec-reboot.service
│   │   │   │   ├── emuelec-shutdown.service
│   │   │   │   └── emuelec.target
│   │   │   └── tmpfiles.d/
│   │   │       └── emuelec-dirs.conf
│   │   ├── emuelec-emulationstation/
│   │   │   ├── config/
│   │   │   │   ├── es_features.cfg
│   │   │   │   ├── es_input.cfg
│   │   │   │   ├── es_settings.cfg
│   │   │   │   ├── es_systems.json
│   │   │   │   ├── resources/
│   │   │   │   │   └── services/
│   │   │   │   │       ├── index.html
│   │   │   │   │       ├── main.css
│   │   │   │   │       └── main.js
│   │   │   │   └── scripts/
│   │   │   │       ├── combined/
│   │   │   │       │   └── example.sh.example
│   │   │   │       ├── configscripts/
│   │   │   │       │   ├── gamecontrollerdb.sh
│   │   │   │       │   └── retroarch.sh
│   │   │   │       └── say/
│   │   │   │           └── 01-say.sh
│   │   │   ├── depends/
│   │   │   │   └── fping/
│   │   │   │       └── package.mk
│   │   │   ├── generate_es_systems.py
│   │   │   ├── package.mk
│   │   │   ├── patches/
│   │   │   │   └── Rockchip/
│   │   │   │       ├── HH/
│   │   │   │       │   └── emuelec-emulationstation-oga-fixes.patch
│   │   │   │       └── emuelec-emulationstation-window-fix-rockchip.patch
│   │   │   ├── system.d/
│   │   │   │   └── emustation.service
│   │   │   └── themes/
│   │   │       ├── Crystal/
│   │   │       │   ├── Crystal-Collections/
│   │   │       │   │   └── package.mk
│   │   │       │   └── package.mk
│   │   │       └── es-theme-EmuELEC-carbon/
│   │   │           └── package.mk
│   │   ├── emuelec-ports/
│   │   │   ├── VVVVVV/
│   │   │   │   ├── config/
│   │   │   │   │   └── saves/
│   │   │   │   │       └── settings.vvv
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── VVVVVV-01-bios_path.patch
│   │   │   ├── abuse/
│   │   │   │   ├── config/
│   │   │   │   │   └── gptokeyb/
│   │   │   │   │       └── abuse.gptk
│   │   │   │   └── package.mk
│   │   │   ├── augustus/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── 01-augustus-EmuELEC-fixes.patch
│   │   │   ├── bennugd-monolithic/
│   │   │   │   ├── package.mk
│   │   │   │   └── tre/
│   │   │   │       └── package.mk
│   │   │   ├── bermuda/
│   │   │   │   └── package.mk
│   │   │   ├── broguece/
│   │   │   │   └── package.mk
│   │   │   ├── bstone/
│   │   │   │   ├── package.mk
│   │   │   │   └── scripts/
│   │   │   │       └── bstone.sh
│   │   │   ├── ccleste/
│   │   │   │   └── package.mk
│   │   │   ├── cdogs-sdl/
│   │   │   │   ├── package.mk
│   │   │   │   └── scripts/
│   │   │   │       └── cdogs-sdl.sh
│   │   │   ├── celeste/
│   │   │   │   ├── package.mk
│   │   │   │   └── sources/
│   │   │   │       ├── celeste.sh
│   │   │   │       └── celeste.tar.xz
│   │   │   ├── chocolate-doom/
│   │   │   │   ├── config/
│   │   │   │   │   ├── chocolate-doom.cfg
│   │   │   │   │   └── default.cfg
│   │   │   │   ├── package.mk
│   │   │   │   └── scripts/
│   │   │   │       └── chocodoom.sh
│   │   │   ├── commander-genius/
│   │   │   │   ├── config/
│   │   │   │   │   └── cgenius.cfg
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── commander-genius-02-show-emuelec-rom-path.patch
│   │   │   ├── devilutionX/
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   └── DevilutionX-fix-mouse.patch
│   │   │   │   └── scripts/
│   │   │   │       └── devilutionx.sh
│   │   │   ├── eduke/
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   ├── eduke-04-recast-function.patch
│   │   │   │   │   └── eduke-05-fix-emuelec-compile.patch
│   │   │   │   └── scripts/
│   │   │   │       └── eduke.sh
│   │   │   ├── falloutce1/
│   │   │   │   ├── config/
│   │   │   │   │   └── fallout.cfg
│   │   │   │   ├── package.mk
│   │   │   │   └── scripts/
│   │   │   │       └── falloutce1.sh
│   │   │   ├── falloutce2/
│   │   │   │   ├── config/
│   │   │   │   │   └── fallout2.cfg
│   │   │   │   ├── package.mk
│   │   │   │   └── scripts/
│   │   │   │       └── falloutce2.sh
│   │   │   ├── fheroes2/
│   │   │   │   ├── config/
│   │   │   │   │   └── fheroes2.cfg
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   └── fheroes2-01-init-game-controller-unconditionally.patch
│   │   │   │   └── scripts/
│   │   │   │       └── fheroes2.sh
│   │   │   ├── gzdoom/
│   │   │   │   ├── config/
│   │   │   │   │   ├── N2/
│   │   │   │   │   │   └── gzdoom.ini
│   │   │   │   │   └── OGA/
│   │   │   │   │       └── gzdoom.ini
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   └── 000-fix-build.patch
│   │   │   │   ├── scripts/
│   │   │   │   │   └── gzdoom.sh
│   │   │   │   └── zmusic/
│   │   │   │       └── package.mk
│   │   │   ├── hodesdl/
│   │   │   │   ├── package.mk
│   │   │   │   └── sources/
│   │   │   │       └── hode.ini
│   │   │   ├── hurrican/
│   │   │   │   ├── config/
│   │   │   │   │   └── gptokeyb/
│   │   │   │   │       └── hurrican.gptk
│   │   │   │   ├── package.mk
│   │   │   │   └── scripts/
│   │   │   │       └── hurrican.sh
│   │   │   ├── hydracastlelabyrinth/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── 01-change-back-to-guide.patch
│   │   │   ├── lzdoom/
│   │   │   │   ├── config/
│   │   │   │   │   └── lzdoom.ini
│   │   │   │   ├── package.mk
│   │   │   │   └── scripts/
│   │   │   │       └── lzdoom.sh
│   │   │   ├── openjazz/
│   │   │   │   └── package.mk
│   │   │   ├── opentyrian/
│   │   │   │   ├── config/
│   │   │   │   │   ├── opentyrian.cfg
│   │   │   │   │   ├── tyrian.cfg
│   │   │   │   │   └── tyrian.sav
│   │   │   │   └── package.mk
│   │   │   ├── package.mk
│   │   │   ├── rigelengine/
│   │   │   │   └── package.mk
│   │   │   ├── sdlpop/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── 001-addsdlgamecontrollerdb.patch
│   │   │   ├── shovelknight/
│   │   │   │   ├── package.mk
│   │   │   │   └── sources/
│   │   │   │       └── shovelknight.sh
│   │   │   ├── sonic2013/
│   │   │   │   ├── config/
│   │   │   │   │   └── settings.ini
│   │   │   │   └── package.mk
│   │   │   ├── soniccd/
│   │   │   │   ├── config/
│   │   │   │   │   └── settings.ini
│   │   │   │   ├── libtheora/
│   │   │   │   │   └── package.mk
│   │   │   │   └── package.mk
│   │   │   ├── sonicmania/
│   │   │   │   ├── config/
│   │   │   │   │   └── Settings.ini
│   │   │   │   └── package.mk
│   │   │   ├── sources/
│   │   │   │   ├── gamelist.xml.j2
│   │   │   │   ├── port.sh.j2
│   │   │   │   ├── port_builder.py
│   │   │   │   └── ports.yaml
│   │   │   ├── supermariowar/
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   └── supermariowar-emuelec-001-config-path.patch
│   │   │   │   └── scripts/
│   │   │   │       └── run_smw.sh
│   │   │   ├── supertux/
│   │   │   │   ├── config/
│   │   │   │   │   └── config
│   │   │   │   ├── package.mk
│   │   │   │   └── scripts/
│   │   │   │       └── run_supertux.sh
│   │   │   ├── supertuxkart/
│   │   │   │   ├── package.mk
│   │   │   │   └── scripts/
│   │   │   │       └── run_supertuxkart.sh
│   │   │   ├── tmntsr/
│   │   │   │   ├── package.mk
│   │   │   │   └── sources/
│   │   │   │       ├── tmntsr.sh
│   │   │   │       └── tmntsr.tar.xz
│   │   │   └── xash3d/
│   │   │       ├── files/
│   │   │       │   ├── config.cfg
│   │   │       │   └── xash3d.sh
│   │   │       ├── hlsdk-portable/
│   │   │       │   └── package.mk
│   │   │       ├── package.mk
│   │   │       └── tmpfiles.d/
│   │   │           └── xash3d.conf
│   │   ├── emulators/
│   │   │   ├── PPSSPPSDL/
│   │   │   │   ├── config/
│   │   │   │   │   └── PSP/
│   │   │   │   │       └── SYSTEM/
│   │   │   │   │           ├── Cheats/
│   │   │   │   │           │   ├── NPEG00023.ini
│   │   │   │   │           │   ├── NPEG00044.ini
│   │   │   │   │           │   ├── NPUG80325.ini
│   │   │   │   │           │   ├── UCES00019.ini
│   │   │   │   │           │   ├── UCES00842.ini
│   │   │   │   │           │   ├── UCES01184.ini
│   │   │   │   │           │   ├── UCES01401.ini
│   │   │   │   │           │   ├── UCES01473.ini
│   │   │   │   │           │   ├── UCUS98640.ini
│   │   │   │   │           │   ├── UCUS98653.ini
│   │   │   │   │           │   ├── UCUS98668.ini
│   │   │   │   │           │   ├── UCUS98737.ini
│   │   │   │   │           │   ├── ULES00033.ini
│   │   │   │   │           │   ├── ULES00034.ini
│   │   │   │   │           │   ├── ULES00035.ini
│   │   │   │   │           │   ├── ULES00125.ini
│   │   │   │   │           │   ├── ULES00483.ini
│   │   │   │   │           │   ├── ULES00625.ini
│   │   │   │   │           │   ├── ULES00626.ini
│   │   │   │   │           │   ├── ULES00703.ini
│   │   │   │   │           │   ├── ULES00968.ini
│   │   │   │   │           │   ├── ULES00981.ini
│   │   │   │   │           │   ├── ULES00982.ini
│   │   │   │   │           │   ├── ULES01214.ini
│   │   │   │   │           │   ├── ULES01402.ini
│   │   │   │   │           │   ├── ULES01406.ini
│   │   │   │   │           │   ├── ULUS00125.ini
│   │   │   │   │           │   ├── ULUS10014.ini
│   │   │   │   │           │   ├── ULUS10189.ini
│   │   │   │   │           │   ├── ULUS10197.ini
│   │   │   │   │           │   ├── ULUS10213.ini
│   │   │   │   │           │   ├── ULUS10236.ini
│   │   │   │   │           │   ├── ULUS10328.ini
│   │   │   │   │           │   ├── ULUS10345.ini
│   │   │   │   │           │   ├── ULUS10390.ini
│   │   │   │   │           │   └── ULUS10507.ini
│   │   │   │   │           ├── NPUG80325_ppsspp.ini
│   │   │   │   │           ├── UCES00422_ppsspp.ini
│   │   │   │   │           ├── UCUS98737_ppsspp.ini
│   │   │   │   │           ├── ULUS10001_ppsspp.ini
│   │   │   │   │           ├── ULUS10064_ppsspp.ini
│   │   │   │   │           ├── controls.ini
│   │   │   │   │           └── ppsspp.ini
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   ├── PPSSPPSDL-05-fix-fmv-stutter.patch
│   │   │   │   │   └── emuelec-paths.patch
│   │   │   │   └── scripts/
│   │   │   │       ├── ppsspp.sh
│   │   │   │       ├── ppssppcheevos.sh
│   │   │   │       └── set_ppsspp_joy.sh
│   │   │   ├── advancemame/
│   │   │   │   ├── bin/
│   │   │   │   │   ├── advmame.sh
│   │   │   │   │   └── set_advmame_joy.sh
│   │   │   │   ├── config/
│   │   │   │   │   ├── advmame.rc
│   │   │   │   │   ├── advmame.rc_gf
│   │   │   │   │   └── advmame.rc_oga
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       ├── advancemame-002-fix-vfb.patch
│   │   │   │       ├── advancemame-999-modify-advj.patch
│   │   │   │       ├── advancemame-fix-slang.patch
│   │   │   │       ├── advancemame-fix-vfb-fps.patch
│   │   │   │       └── advancemame-return-0-on-terminate.patch
│   │   │   ├── amiberry/
│   │   │   │   ├── config/
│   │   │   │   │   └── conf/
│   │   │   │   │       ├── AmigaA1200-default.uae
│   │   │   │   │       ├── AmigaA500-default.uae
│   │   │   │   │       └── amiberry.conf
│   │   │   │   ├── libenet/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── libportmidi/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── libserialport/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   ├── 001-default_fullscreen.patch
│   │   │   │   │   ├── 002-paths.patch
│   │   │   │   │   ├── 003-use_udev_gamepad_name.patch
│   │   │   │   │   └── fix_fbdev_window.patch
│   │   │   │   └── scripts/
│   │   │   │       └── amiberry.start
│   │   │   ├── amiberry-lite/
│   │   │   │   ├── config/
│   │   │   │   │   └── conf/
│   │   │   │   │       ├── AmigaA1200-default.uae
│   │   │   │   │       ├── AmigaA500-default.uae
│   │   │   │   │       ├── adfdir.conf
│   │   │   │   │       └── amiberry-lite.conf
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       ├── 001-default_fullscreen.patch
│   │   │   │       ├── 002-paths.patch
│   │   │   │       ├── 003-use_udev_gamepad_name.patch
│   │   │   │       └── fix_fbdev_window.patch
│   │   │   ├── atari800sa/
│   │   │   │   └── package.mk
│   │   │   ├── biginstinct/
│   │   │   │   ├── package.mk
│   │   │   │   └── scripts/
│   │   │   │       └── biginstinctstart.sh
│   │   │   ├── bigpemu/
│   │   │   │   ├── package.mk
│   │   │   │   └── scripts/
│   │   │   │       └── bigpemustart.sh
│   │   │   ├── box64/
│   │   │   │   └── package.mk
│   │   │   ├── box86/
│   │   │   │   └── package.mk
│   │   │   ├── dolphinSA/
│   │   │   │   ├── config/
│   │   │   │   │   ├── Dolphin.ini
│   │   │   │   │   ├── GCPadNew.ini
│   │   │   │   │   ├── GFX.ini
│   │   │   │   │   ├── Logger.ini
│   │   │   │   │   └── WiimoteNew.ini
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   ├── 000-hotkeys.patch
│   │   │   │   │   ├── 001-padorder.patch
│   │   │   │   │   └── 002-savestat-names.patch
│   │   │   │   └── scripts/
│   │   │   │       ├── dolphin.sh
│   │   │   │       └── set_dolphin_joy.sh
│   │   │   ├── dosbox-sdl2/
│   │   │   │   ├── config/
│   │   │   │   │   ├── dosbox-SDL2-MT32.conf
│   │   │   │   │   ├── dosbox-SDL2.conf
│   │   │   │   │   ├── dosbox-SVN.conf
│   │   │   │   │   └── games/
│   │   │   │   │       └── + Scan DOSBox Games.sh
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   └── dosbox-sdl2.995.01-add-mt32emu-MIDI-device.patch
│   │   │   │   └── scripts/
│   │   │   │       └── dosbox.start
│   │   │   ├── dosbox-staging/
│   │   │   │   ├── config/
│   │   │   │   │   └── dosbox-staging.conf
│   │   │   │   ├── package.mk
│   │   │   │   └── scripts/
│   │   │   │       └── dosbox.start
│   │   │   ├── dosbox-x/
│   │   │   │   ├── config/
│   │   │   │   │   ├── dosbox-x-SDL2-MT32.conf
│   │   │   │   │   ├── dosbox-x-SDL2.conf
│   │   │   │   │   ├── dosbox-x-SVN.conf
│   │   │   │   │   └── dosbox-x.conf
│   │   │   │   ├── include/
│   │   │   │   │   └── gpio.h
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   ├── 000-arm_configure.patch
│   │   │   │   │   ├── 001-sdl-config.patch
│   │   │   │   │   └── 003-dosboxconf.patch
│   │   │   │   └── scripts/
│   │   │   │       └── dosbox-x.start
│   │   │   ├── droidports/
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   └── 01-EmuELEC-set-save-path.patch
│   │   │   │   └── scripts/
│   │   │   │       └── gmloader.sh
│   │   │   ├── duckstation/
│   │   │   │   ├── config/
│   │   │   │   │   └── settings.ini
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   ├── 000-fix-cmake.patch
│   │   │   │   │   ├── 001-path-program.patch
│   │   │   │   │   ├── 002-path-getdirectory.patch
│   │   │   │   │   ├── 003-path-language.patch
│   │   │   │   │   └── 006-maxbuttons.patch
│   │   │   │   └── scripts/
│   │   │   │       ├── duckstation.sh
│   │   │   │       ├── duckstationcheevos.sh
│   │   │   │       └── set_duckstation_joy.sh
│   │   │   ├── ecwolf/
│   │   │   │   ├── config/
│   │   │   │   │   └── ecwolf.cfg
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   ├── ecwolf-001-add-video-modes.patch
│   │   │   │   │   └── ecwolf-002-add-exit-menu.patch
│   │   │   │   └── scripts/
│   │   │   │       └── ecwolf.sh
│   │   │   ├── eka2l1/
│   │   │   │   ├── config/
│   │   │   │   │   └── eka.gptk
│   │   │   │   ├── package.mk
│   │   │   │   └── scripts/
│   │   │   │       └── ekastart.sh
│   │   │   ├── fbneoSA/
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   └── fbneoSA-EmuELEC-rom-path.patch
│   │   │   │   └── scripts/
│   │   │   │       └── fbneo.sh
│   │   │   ├── flycast-dojo/
│   │   │   │   ├── config/
│   │   │   │   │   └── emu.cfg
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   ├── 03-sdl.patch
│   │   │   │   │   └── arm/
│   │   │   │   │       └── 01-EmuELEC-fix-arm-compile.patch
│   │   │   │   └── scripts/
│   │   │   │       └── flycastdojo.sh
│   │   │   ├── flycastsa/
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   ├── 03-sdl.patch
│   │   │   │   │   └── arm/
│   │   │   │   │       └── 01-EmuELEC-fix-arm-compile.patch
│   │   │   │   └── scripts/
│   │   │   │       ├── flycast.sh
│   │   │   │       ├── flycastcheevos.sh
│   │   │   │       └── set_flycast_joy.sh
│   │   │   ├── hatarisa/
│   │   │   │   ├── config/
│   │   │   │   │   └── conf/
│   │   │   │   │       └── Atari-ST-default.cfg
│   │   │   │   ├── package.mk
│   │   │   │   ├── portaudio/
│   │   │   │   │   └── package.mk
│   │   │   │   └── scripts/
│   │   │   │       └── hatari.start
│   │   │   ├── hypseus-singe/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       ├── hypseus-singe-001-buildfix.patch
│   │   │   │       ├── hypseus-singe-002-headersfix.patch
│   │   │   │       └── manymouse.patch
│   │   │   ├── ikemen-go/
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   └── 0001-enhance_joystick_and_game_controller_support.patch
│   │   │   │   ├── sdlgamepadmap/
│   │   │   │   │   ├── package.mk
│   │   │   │   │   └── src/
│   │   │   │   │       └── sdl_gamepadmap.c
│   │   │   │   └── src/
│   │   │   │       ├── Ikemen_Go.sh
│   │   │   │       └── asound-ikemen.conf
│   │   │   ├── jzintv/
│   │   │   │   ├── config/
│   │   │   │   │   └── jzintv_keyb.hack
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   └── 01-emuelec-only-build-emu.patch
│   │   │   │   └── scripts/
│   │   │   │       └── jzintv.sh
│   │   │   ├── mesen2/
│   │   │   │   ├── package.mk
│   │   │   │   └── sources/
│   │   │   │       └── makefile
│   │   │   ├── mupen64plussa/
│   │   │   │   ├── mupen64plussa-audio-sdl/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── mupen64plussa-core/
│   │   │   │   │   ├── config/
│   │   │   │   │   │   └── mupen64plus.cfg
│   │   │   │   │   ├── m64p.sh
│   │   │   │   │   ├── package.mk
│   │   │   │   │   └── set_mupen64_joy.sh
│   │   │   │   ├── mupen64plussa-input-sdl/
│   │   │   │   │   ├── config/
│   │   │   │   │   │   └── InputAutoCfg.ini
│   │   │   │   │   └── package.mk
│   │   │   │   ├── mupen64plussa-rsp-hle/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── mupen64plussa-ui-console/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── mupen64plussa-video-glide64mk2/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── mupen64plussa-video-rice/
│   │   │   │   │   └── package.mk
│   │   │   │   └── package.mk
│   │   │   ├── openbor/
│   │   │   │   ├── config/
│   │   │   │   │   ├── gptokeyb/
│   │   │   │   │   │   └── openbor.gptk
│   │   │   │   │   └── master.cfg
│   │   │   │   ├── openborff/
│   │   │   │   │   ├── config/
│   │   │   │   │   │   └── master.cfg
│   │   │   │   │   ├── package.mk
│   │   │   │   │   └── patches/
│   │   │   │   │       └── emuelec-aarch64/
│   │   │   │   │           └── openborff-01-addplatform_fixes.patch
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   ├── 002openbor-defaultfs.patch
│   │   │   │   │   ├── 007-version.patch
│   │   │   │   │   ├── arm/
│   │   │   │   │   │   └── openbor-02-addplatform.patch
│   │   │   │   │   └── emuelec-aarch64/
│   │   │   │   │       └── openbor-02-addplatform.patch
│   │   │   │   └── scripts/
│   │   │   │       └── openbor.sh
│   │   │   ├── oricutron/
│   │   │   │   ├── config/
│   │   │   │   │   ├── oricutron.cfg
│   │   │   │   │   └── oricutron.gptk
│   │   │   │   ├── package.mk
│   │   │   │   └── scripts/
│   │   │   │       └── oricutronstart.sh
│   │   │   ├── picodrivesa/
│   │   │   │   └── package.mk
│   │   │   ├── scummvmsa/
│   │   │   │   ├── bin/
│   │   │   │   │   └── scummvm.start
│   │   │   │   ├── config/
│   │   │   │   │   └── scummvm.ini
│   │   │   │   └── package.mk
│   │   │   ├── simcoupe/
│   │   │   │   ├── config/
│   │   │   │   │   └── simcoupe.gptk
│   │   │   │   ├── package.mk
│   │   │   │   └── scripts/
│   │   │   │       └── simcoupestart.sh
│   │   │   ├── solarus/
│   │   │   │   ├── config/
│   │   │   │   │   └── pads.ini
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   ├── solarus-001-addFindOpenGles2.patch
│   │   │   │   │   ├── solarus-002-pad.patch
│   │   │   │   │   └── solarus-003-dirs.patch
│   │   │   │   └── scripts/
│   │   │   │       └── solarus.sh
│   │   │   ├── stellasa/
│   │   │   │   ├── package.mk
│   │   │   │   └── scripts/
│   │   │   │       └── stella.sh
│   │   │   ├── sundog/
│   │   │   │   └── package.mk
│   │   │   ├── ti99sim/
│   │   │   │   ├── package.mk
│   │   │   │   └── scripts/
│   │   │   │       └── ti99sdlstart.sh
│   │   │   ├── vector06sdl/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── patch.patch
│   │   │   ├── viceSA/
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   └── viceSA-001-no-docs.patch
│   │   │   │   └── xa/
│   │   │   │       └── package.mk
│   │   │   ├── x16/
│   │   │   │   ├── package.mk
│   │   │   │   └── scripts/
│   │   │   │       └── x16emustart.sh
│   │   │   ├── xroar/
│   │   │   │   ├── config/
│   │   │   │   │   └── xroar.gptk
│   │   │   │   ├── package.mk
│   │   │   │   └── scripts/
│   │   │   │       └── xroar.sh
│   │   │   ├── yabasanshiroSA_1_11/
│   │   │   │   ├── config/
│   │   │   │   │   └── input.cfg
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   ├── 02-yabasanshiroSA-use-system-libpng.patch
│   │   │   │   │   └── 04-yabasanshiroSA-use-paths.patch
│   │   │   │   └── scripts/
│   │   │   │       ├── set_yabasanshiro_joy.sh
│   │   │   │       └── yabasanshiro.sh
│   │   │   └── yabasanshiroSA_1_5/
│   │   │       ├── config/
│   │   │       │   └── input.cfg
│   │   │       ├── package.mk
│   │   │       ├── patches/
│   │   │       │   ├── 01-yabasanshiroSA-EmuELEC-add-missing-include.patch
│   │   │       │   ├── 02-yabasanshiroSA-EmuELEC-use-system-libpng.patch
│   │   │       │   ├── 03-yabasanshiroSA-removegl3ext.patch
│   │   │       │   └── 04-yabasanshiroSA-use-EmuELEC-paths.patch
│   │   │       └── scripts/
│   │   │           ├── set_yabasanshiro_joy.sh
│   │   │           └── yabasanshiro1_5.sh
│   │   ├── libretro/
│   │   │   ├── 2048/
│   │   │   │   └── package.mk
│   │   │   ├── 81/
│   │   │   │   └── package.mk
│   │   │   ├── a5200/
│   │   │   │   └── package.mk
│   │   │   ├── arduous/
│   │   │   │   └── package.mk
│   │   │   ├── atari800/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       ├── aarch64/
│   │   │   │       │   └── atari800-01-add-emuelec-platform.patch
│   │   │   │       └── arm/
│   │   │   │           └── atari800-01-add-emuelec-platform.patch
│   │   │   ├── b2/
│   │   │   │   └── package.mk
│   │   │   ├── beetle-gba/
│   │   │   │   └── package.mk
│   │   │   ├── beetle-lynx/
│   │   │   │   └── package.mk
│   │   │   ├── beetle-ngp/
│   │   │   │   └── package.mk
│   │   │   ├── beetle-pce/
│   │   │   │   └── package.mk
│   │   │   ├── beetle-pcfx/
│   │   │   │   └── package.mk
│   │   │   ├── beetle-psx-hw/
│   │   │   │   └── package.mk
│   │   │   ├── beetle-saturn/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── 02.patch
│   │   │   ├── beetle-supergrafx/
│   │   │   │   └── package.mk
│   │   │   ├── beetle-vb/
│   │   │   │   └── package.mk
│   │   │   ├── beetle-wswan/
│   │   │   │   └── package.mk
│   │   │   ├── bk/
│   │   │   │   └── package.mk
│   │   │   ├── bluemsx/
│   │   │   │   └── package.mk
│   │   │   ├── bnes/
│   │   │   │   └── package.mk
│   │   │   ├── bsnes_hd/
│   │   │   │   └── package.mk
│   │   │   ├── cannonball/
│   │   │   │   └── package.mk
│   │   │   ├── cap32/
│   │   │   │   └── package.mk
│   │   │   ├── chaigame/
│   │   │   │   └── package.mk
│   │   │   ├── chailove/
│   │   │   │   └── package.mk
│   │   │   ├── clownmdemu/
│   │   │   │   └── package.mk
│   │   │   ├── craft/
│   │   │   │   └── package.mk
│   │   │   ├── crocods/
│   │   │   │   └── package.mk
│   │   │   ├── daphne/
│   │   │   │   └── package.mk
│   │   │   ├── desmume/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       ├── desmume-001-arm64-build-fix.patch
│   │   │   │       └── desmume-002-disable-ogl.patch
│   │   │   ├── desmume-2015/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── desmume-2015-001-arm64-build-fix.patch
│   │   │   ├── dice/
│   │   │   │   └── package.mk
│   │   │   ├── dinothawr/
│   │   │   │   └── package.mk
│   │   │   ├── dosbox/
│   │   │   │   └── package.mk
│   │   │   ├── dosbox-pure/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── dosbox-pure-add-emuelec-platform.patch
│   │   │   ├── dosbox-svn/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── dosbox-svn-use-sdl-config.patch
│   │   │   ├── duckstation-lr/
│   │   │   │   └── package.mk
│   │   │   ├── easyrpg/
│   │   │   │   ├── liblcf/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── libspeexdsp/
│   │   │   │   │   └── package.mk
│   │   │   │   ├── libxmp-lite/
│   │   │   │   │   ├── package.mk
│   │   │   │   │   └── sources/
│   │   │   │   │       └── CMakeLists.txt
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── easyrpg-disable-manpage-doxygen.patch
│   │   │   ├── emuscv/
│   │   │   │   └── package.mk
│   │   │   ├── emux-sms/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── emux-sms-01-buildfix.patch
│   │   │   ├── ep128emu/
│   │   │   │   └── package.mk
│   │   │   ├── fake_08/
│   │   │   │   └── package.mk
│   │   │   ├── fbalpha/
│   │   │   │   └── package.mk
│   │   │   ├── fbalpha2012/
│   │   │   │   └── package.mk
│   │   │   ├── fbneo/
│   │   │   │   └── package.mk
│   │   │   ├── fceumm/
│   │   │   │   └── package.mk
│   │   │   ├── fceumm-mod/
│   │   │   │   └── package.mk
│   │   │   ├── flycast/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── Amlogic/
│   │   │   │           ├── flycast-01-buildfix.patch
│   │   │   │           └── flycast-02-set_optim.patch
│   │   │   ├── fmsx-libretro/
│   │   │   │   └── package.mk
│   │   │   ├── freechaf/
│   │   │   │   └── package.mk
│   │   │   ├── freeintv/
│   │   │   │   └── package.mk
│   │   │   ├── freej2me/
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   └── 01-emuelec-paths.patch
│   │   │   │   └── scripts/
│   │   │   │       └── freej2me.sh
│   │   │   ├── frodo/
│   │   │   │   └── package.mk
│   │   │   ├── fsuae/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── fsuae-libretro-001-link-glib.patch
│   │   │   ├── fuse-libretro/
│   │   │   │   └── package.mk
│   │   │   ├── gambatte/
│   │   │   │   └── package.mk
│   │   │   ├── gearboy/
│   │   │   │   └── package.mk
│   │   │   ├── gearcoleco/
│   │   │   │   └── package.mk
│   │   │   ├── geargrafx/
│   │   │   │   └── package.mk
│   │   │   ├── gearlynx/
│   │   │   │   └── package.mk
│   │   │   ├── gearsystem/
│   │   │   │   └── package.mk
│   │   │   ├── genesis-plus-gx/
│   │   │   │   └── package.mk
│   │   │   ├── genesis-plus-gx-wide/
│   │   │   │   └── package.mk
│   │   │   ├── genesis_plus_gx_cart_special/
│   │   │   │   ├── genesis_plus_gx_cart_special.info
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── ae77caee6d249667d3cbdbb1bcdfa8d5186f949b.patch
│   │   │   ├── geolith/
│   │   │   │   └── package.mk
│   │   │   ├── gme/
│   │   │   │   └── package.mk
│   │   │   ├── gpsp/
│   │   │   │   └── package.mk
│   │   │   ├── gw-libretro/
│   │   │   │   └── package.mk
│   │   │   ├── handy/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── aarch64/
│   │   │   │           └── handy-01-add-emuelec.patch
│   │   │   ├── hatari/
│   │   │   │   └── package.mk
│   │   │   ├── imame4all/
│   │   │   │   └── package.mk
│   │   │   ├── jaxe/
│   │   │   │   └── package.mk
│   │   │   ├── jollycv/
│   │   │   │   └── package.mk
│   │   │   ├── libretro-bash-launcher/
│   │   │   │   └── package.mk
│   │   │   ├── lowresnx/
│   │   │   │   └── package.mk
│   │   │   ├── lr-dolphin/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       ├── 001-openglmessage.patch
│   │   │   │       └── dolphin-01-buildfix-libusb.patch
│   │   │   ├── lutro/
│   │   │   │   └── package.mk
│   │   │   ├── m2000/
│   │   │   │   └── package.mk
│   │   │   ├── mame/
│   │   │   │   ├── config/
│   │   │   │   │   ├── MAME/
│   │   │   │   │   │   └── MAME.opt
│   │   │   │   │   └── ini/
│   │   │   │   │       ├── fmtownsftv.ini
│   │   │   │   │       ├── fmtownshr.ini
│   │   │   │   │       ├── fmtownsux.ini
│   │   │   │   │       └── mame.ini
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   ├── mame-crosscompile.patch
│   │   │   │   │   ├── mame-remove-bgfx.patch
│   │   │   │   │   ├── mame-workaround-for-arm-cross-compilation.patch
│   │   │   │   │   ├── neww.patch
│   │   │   │   │   └── thread-patch
│   │   │   │   └── scripts/
│   │   │   │       └── mame.sh
│   │   │   ├── mame2000/
│   │   │   │   └── package.mk
│   │   │   ├── mame2003/
│   │   │   │   └── package.mk
│   │   │   ├── mame2003-midway/
│   │   │   │   └── package.mk
│   │   │   ├── mame2003-plus/
│   │   │   │   └── package.mk
│   │   │   ├── mame2003-xtreme/
│   │   │   │   ├── package.mk
│   │   │   │   └── sources/
│   │   │   │       └── km_mame2003_xtreme_libretro.info
│   │   │   ├── mame2010/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       ├── libretro-mame2010-0001_fix-cross-build.patch
│   │   │   │       └── libretro-mame2010-0002_fix-cheats.patch
│   │   │   ├── mame2015/
│   │   │   │   └── package.mk
│   │   │   ├── mame2016/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       ├── 57.patch
│   │   │   │       ├── bgfx.patch
│   │   │   │       ├── build.patch
│   │   │   │       ├── genie.patch
│   │   │   │       ├── mame2016-libretro-crosscompile.patch
│   │   │   │       ├── pregenerate.patch
│   │   │   │       └── pythonfix.patch
│   │   │   ├── melonds/
│   │   │   │   └── package.mk
│   │   │   ├── meowpc98/
│   │   │   │   └── package.mk
│   │   │   ├── mesen/
│   │   │   │   └── package.mk
│   │   │   ├── mesen-s/
│   │   │   │   └── package.mk
│   │   │   ├── meteor/
│   │   │   │   └── package.mk
│   │   │   ├── mgba/
│   │   │   │   └── package.mk
│   │   │   ├── minivmac/
│   │   │   │   └── package.mk
│   │   │   ├── mojozork/
│   │   │   │   └── package.mk
│   │   │   ├── mrboom/
│   │   │   │   └── package.mk
│   │   │   ├── multiemu/
│   │   │   │   ├── config/
│   │   │   │   │   └── ini/
│   │   │   │   │       ├── fmtownsftv.ini
│   │   │   │   │       ├── fmtownshr.ini
│   │   │   │   │       ├── fmtownsux.ini
│   │   │   │   │       └── mame.ini
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   ├── fmtownshash.patch
│   │   │   │   │   ├── mame-crosscompile.patch
│   │   │   │   │   ├── mame-remove-bgfx.patch
│   │   │   │   │   ├── mame-workaround-for-arm-cross-compilation.patch
│   │   │   │   │   ├── mutex.patch
│   │   │   │   │   ├── new.patch
│   │   │   │   │   └── thread-patch
│   │   │   │   └── scripts/
│   │   │   │       └── multiemu.sh
│   │   │   ├── mupen64plus/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       ├── mupen64plus-fixdouble.patch
│   │   │   │       ├── mupen64plus-gcc10-32bit-fix.patch
│   │   │   │       └── mupen64plus-sx05re-neonfix.patch
│   │   │   ├── mupen64plus-nx/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── mupen64plus-nx-01-add-amlogic64.patch
│   │   │   ├── mupen64plus-nx-alt/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── mupen64plus-nx-01-add-amlogic64.patch
│   │   │   ├── neocd_libretro/
│   │   │   │   └── package.mk
│   │   │   ├── nestopia/
│   │   │   │   └── package.mk
│   │   │   ├── nestopiaCV/
│   │   │   │   └── package.mk
│   │   │   ├── np2kai/
│   │   │   │   └── package.mk
│   │   │   ├── nxengine/
│   │   │   │   └── package.mk
│   │   │   ├── o2em/
│   │   │   │   └── package.mk
│   │   │   ├── opera/
│   │   │   │   └── package.mk
│   │   │   ├── parallel-n64/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       ├── emuelec-aarch64/
│   │   │   │       │   └── parallel-n64-add_platform.patch
│   │   │   │       └── emuelec-arm32/
│   │   │   │           └── parallel-n64-add_platform.patch
│   │   │   ├── pcsx_rearmed/
│   │   │   │   └── package.mk
│   │   │   ├── picodrive/
│   │   │   │   └── package.mk
│   │   │   ├── pocketcdg/
│   │   │   │   └── package.mk
│   │   │   ├── pokemini/
│   │   │   │   └── package.mk
│   │   │   ├── potator/
│   │   │   │   └── package.mk
│   │   │   ├── ppsspp/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── ppsspp-x86_64-fix.patch
│   │   │   ├── prboom/
│   │   │   │   └── package.mk
│   │   │   ├── prosystem/
│   │   │   │   └── package.mk
│   │   │   ├── psp1/
│   │   │   │   └── package.mk
│   │   │   ├── puae/
│   │   │   │   └── package.mk
│   │   │   ├── puae2021/
│   │   │   │   └── package.mk
│   │   │   ├── px68k/
│   │   │   │   └── package.mk
│   │   │   ├── quasi88/
│   │   │   │   └── package.mk
│   │   │   ├── quicknes/
│   │   │   │   └── package.mk
│   │   │   ├── reminiscence/
│   │   │   │   └── package.mk
│   │   │   ├── same_cdi/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── mame-crosscompile.patch
│   │   │   ├── sameboy/
│   │   │   │   └── package.mk
│   │   │   ├── sameduck/
│   │   │   │   └── package.mk
│   │   │   ├── scummvm/
│   │   │   │   └── package.mk
│   │   │   ├── snes9x/
│   │   │   │   └── package.mk
│   │   │   ├── snes9x2002/
│   │   │   │   └── package.mk
│   │   │   ├── snes9x2005/
│   │   │   │   └── package.mk
│   │   │   ├── snes9x2005_plus/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       ├── aarch64/
│   │   │   │       │   └── 01-snes9x2005_plux-01-fix-fpic.patch
│   │   │   │       └── arm/
│   │   │   │           └── 01-snes9x2005_plux-01-fix-fpic.patch
│   │   │   ├── snes9x2010/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── snes9x2010-add-oga.patch
│   │   │   ├── spring/
│   │   │   │   ├── package.mk
│   │   │   │   └── sources/
│   │   │   │       ├── retroarch32.sh
│   │   │   │       ├── spring_pcsx_rearmed32_libretro.info
│   │   │   │       ├── spring_ppsspp_libretro.info
│   │   │   │       └── spring_shell_libretro.info
│   │   │   ├── stella/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── stella-01-emuelec-platform.patch
│   │   │   ├── supafaust/
│   │   │   │   └── package.mk
│   │   │   ├── swanstation/
│   │   │   │   └── package.mk
│   │   │   ├── tgbdual/
│   │   │   │   └── package.mk
│   │   │   ├── theodore/
│   │   │   │   └── package.mk
│   │   │   ├── tic-80/
│   │   │   │   └── package.mk
│   │   │   ├── tyrquake/
│   │   │   │   └── package.mk
│   │   │   ├── uae4arm/
│   │   │   │   └── package.mk
│   │   │   ├── uzebox/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── uzebox-01-buildfix.patch
│   │   │   ├── uzem/
│   │   │   │   └── package.mk
│   │   │   ├── vba-next/
│   │   │   │   └── package.mk
│   │   │   ├── vbam/
│   │   │   │   └── package.mk
│   │   │   ├── vecx/
│   │   │   │   └── package.mk
│   │   │   ├── vice/
│   │   │   │   └── package.mk
│   │   │   ├── vircon32/
│   │   │   │   └── package.mk
│   │   │   ├── virtualjaguar/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── 001-optimize.patch
│   │   │   ├── wasm4/
│   │   │   │   └── package.mk
│   │   │   ├── xmil/
│   │   │   │   └── package.mk
│   │   │   ├── xrick/
│   │   │   │   └── package.mk
│   │   │   ├── yabasanshiro/
│   │   │   │   ├── package.mk
│   │   │   │   └── patches/
│   │   │   │       └── aarch64/
│   │   │   │           └── 01-optimization.patch
│   │   │   └── yabause/
│   │   │       └── package.mk
│   │   ├── libretro_base/
│   │   │   ├── common-shaders/
│   │   │   │   └── package.mk
│   │   │   ├── core-info/
│   │   │   │   └── package.mk
│   │   │   ├── glsl-shaders/
│   │   │   │   └── package.mk
│   │   │   ├── libretro-database/
│   │   │   │   └── package.mk
│   │   │   ├── retroarch/
│   │   │   │   ├── modprobe.d/
│   │   │   │   │   └── usbhid.conf
│   │   │   │   ├── package.mk
│   │   │   │   ├── patches/
│   │   │   │   │   ├── 13pixel.patch
│   │   │   │   │   ├── Amlogic-old/
│   │   │   │   │   │   └── 01-ALSA_fix.patch
│   │   │   │   │   ├── OdroidGoAdvance/
│   │   │   │   │   │   ├── 0001-video_thread_wrapper-implement-RETRO_ENVIRONMENT_GET.patch
│   │   │   │   │   │   ├── 999-emuelec-add-vertical.patch
│   │   │   │   │   │   ├── 999-enable_rga_scaling_for_gf.patch
│   │   │   │   │   │   └── 9999-emuelec-unify-brightness.patch
│   │   │   │   │   ├── retroarch-01-xkb-fix.patch
│   │   │   │   │   ├── retroarch-02_disable_search.patch
│   │   │   │   │   ├── retroarch-04-enablecontent.patch
│   │   │   │   │   ├── retroarch-10-Exit_menu.patch
│   │   │   │   │   └── retroarch-12-input_sort_devices.patch
│   │   │   │   ├── scripts/
│   │   │   │   │   └── retroarch-config
│   │   │   │   ├── system.d/
│   │   │   │   │   ├── retroarch.service
│   │   │   │   │   ├── tmp-assets.mount
│   │   │   │   │   ├── tmp-cores.mount
│   │   │   │   │   ├── tmp-database.mount
│   │   │   │   │   ├── tmp-joypads.mount
│   │   │   │   │   ├── tmp-overlays.mount
│   │   │   │   │   └── tmp-shaders.mount
│   │   │   │   ├── tmpfiles.d/
│   │   │   │   │   └── retroarch-userdirs.conf
│   │   │   │   └── udev.d/
│   │   │   │       ├── 99-8bitdo-bluetooth-controllers.rules
│   │   │   │       ├── 99-ION-iCade-bluetooth.rules
│   │   │   │       ├── 99-bluetooth-power-on.rules
│   │   │   │       ├── 99-evdev.rules
│   │   │   │       ├── 99-gen-game-s3-controller.rules
│   │   │   │       ├── 99-homatics-gamepad.rules
│   │   │   │       ├── 99-juyao-dual-arcade.rules
│   │   │   │       ├── 99-nintendo-wii-remote.rules
│   │   │   │       ├── 99-ninteno-wii-remote.rules
│   │   │   │       ├── 99-nv-shield-controller.rules
│   │   │   │       ├── 99-ouya-controller.rules
│   │   │   │       └── 99-terios-t3.rules
│   │   │   ├── retroarch-assets/
│   │   │   │   └── package.mk
│   │   │   ├── retroarch-overlays/
│   │   │   │   └── package.mk
│   │   │   └── wii-u-gc-adapter/
│   │   │       ├── package.mk
│   │   │       └── system.d/
│   │   │           └── wii-u-gc-adapter.service
│   │   └── tools/
│   │       ├── 32bit/
│   │       │   ├── emuelec-32bit-info/
│   │       │   │   └── package.mk
│   │       │   └── emuelec-32bit-libs/
│   │       │       ├── infos/
│   │       │       │   ├── flycast_32b_libretro.info
│   │       │       │   ├── mupen64plus_32b_libretro.info
│   │       │       │   ├── mupen64plus_next_alt_libretro.info
│   │       │       │   ├── pcsx_rearmed_32b_libretro.info
│   │       │       │   ├── uae4arm_32b_libretro.info
│   │       │       │   └── vice_x64dtv_libretro.info
│   │       │       └── package.mk
│   │       ├── SDL/
│   │       │   └── SDL_net/
│   │       │       └── package.mk
│   │       ├── SDL2/
│   │       │   ├── SDL2_gfx/
│   │       │   │   └── package.mk
│   │       │   ├── SDL2_image/
│   │       │   │   └── package.mk
│   │       │   ├── SDL2_mixer/
│   │       │   │   └── package.mk
│   │       │   ├── SDL2_net/
│   │       │   │   └── package.mk
│   │       │   ├── SDL2_ttf/
│   │       │   │   ├── package.mk
│   │       │   │   └── patches/
│   │       │   │       └── SDL2_ttf-001-opengl-only-with-x.patch
│   │       │   └── SDL_sound/
│   │       │       └── package.mk
│   │       ├── btop/
│   │       │   └── package.mk
│   │       ├── emuelec-tools/
│   │       │   └── package.mk
│   │       ├── qt-everywhere/
│   │       │   ├── package.mk
│   │       │   └── patches/
│   │       │       └── qt-everywhere-5.15.0.GCC11-limits.patch
│   │       ├── scrapers/
│   │       │   └── Skyscraper/
│   │       │       ├── config/
│   │       │       │   ├── artwork.xml
│   │       │       │   └── config.ini
│   │       │       ├── package.mk
│   │       │       └── scripts/
│   │       │           └── skyscraper
│   │       ├── sdl12-compat/
│   │       │   ├── package.mk
│   │       │   └── patches/
│   │       │       ├── fix-pkgconfig.patch
│   │       │       └── fix-sdlconfig.patch
│   │       ├── sound/
│   │       │   ├── espeak/
│   │       │   │   ├── package.mk
│   │       │   │   └── patches/
│   │       │   │       ├── espeak-1.47-ftbs-ld-libm.patch
│   │       │   │       ├── espeak-1.47-wav-close.patch
│   │       │   │       └── espeak-1.48-gcc-6-fix.patch
│   │       │   ├── fluidsynth-git/
│   │       │   │   ├── config/
│   │       │   │   │   └── fluidsynth.conf
│   │       │   │   ├── package.mk
│   │       │   │   └── system.d/
│   │       │   │       └── fluidsynth.service
│   │       │   ├── libvorbisidec/
│   │       │   │   └── package.mk
│   │       │   ├── modplug/
│   │       │   │   └── package.mk
│   │       │   ├── mpg123-compat/
│   │       │   │   └── package.mk
│   │       │   ├── opusfile/
│   │       │   │   └── package.mk
│   │       │   ├── soundfont-generaluser/
│   │       │   │   └── package.mk
│   │       │   ├── timidity/
│   │       │   │   ├── config/
│   │       │   │   │   ├── GeneralUser.cfg
│   │       │   │   │   ├── fluidr3_gm.cfg
│   │       │   │   │   ├── fluidr3_gs.cfg
│   │       │   │   │   ├── freepats.cfg
│   │       │   │   │   ├── soundfont_readme.txt
│   │       │   │   │   └── timidity.cfg
│   │       │   │   ├── package.mk
│   │       │   │   └── patches/
│   │       │   │       ├── 02-calcnewt-host-build.patch
│   │       │   │       └── 03-ar-cru-fix.patch
│   │       │   └── wildmidi/
│   │       │       ├── package.mk
│   │       │       └── sources/
│   │       │           └── CMakeLists.txt
│   │       ├── sysutils/
│   │       │   ├── 351Files/
│   │       │   │   ├── config/
│   │       │   │   │   └── gptokeyb/
│   │       │   │   │       └── 351Files.gptk
│   │       │   │   ├── package.mk
│   │       │   │   └── patches/
│   │       │   │       └── 01-EmuELEC.patch
│   │       │   ├── MC/
│   │       │   │   ├── etc/
│   │       │   │   │   ├── edit.indent.rc
│   │       │   │   │   ├── edit.spell.rc
│   │       │   │   │   ├── filehighlight.ini
│   │       │   │   │   ├── ini
│   │       │   │   │   ├── mc.ext
│   │       │   │   │   ├── mc.keymap
│   │       │   │   │   ├── mc.keymap.default
│   │       │   │   │   ├── mc.keymap.emacs
│   │       │   │   │   ├── mc.menu
│   │       │   │   │   ├── mc.menu.sr
│   │       │   │   │   ├── mcedit.menu
│   │       │   │   │   ├── panels.ini
│   │       │   │   │   └── sfs.ini
│   │       │   │   ├── package.mk
│   │       │   │   ├── patches/
│   │       │   │   │   └── MC-01-utf8.patch
│   │       │   │   └── profile.d/
│   │       │   │       └── 52-mc.conf
│   │       │   ├── SDL_GameControllerDB/
│   │       │   │   ├── package.mk
│   │       │   │   └── patches/
│   │       │   │       └── add-emuelec-gamepads.patch
│   │       │   ├── TvTextViewer/
│   │       │   │   └── package.mk
│   │       │   ├── bluetool/
│   │       │   │   ├── package.mk
│   │       │   │   └── patches/
│   │       │   │       └── 12.patch
│   │       │   ├── coreutils/
│   │       │   │   └── package.mk
│   │       │   ├── dasbus/
│   │       │   │   └── package.mk
│   │       │   ├── dialog/
│   │       │   │   └── package.mk
│   │       │   ├── ee_utils/
│   │       │   │   ├── package.mk
│   │       │   │   └── sources/
│   │       │   │       ├── ee_asd.c
│   │       │   │       └── ees.c
│   │       │   ├── eemount/
│   │       │   │   └── package.mk
│   │       │   ├── empty/
│   │       │   │   └── package.mk
│   │       │   ├── evdev_tools/
│   │       │   │   ├── package.mk
│   │       │   │   └── sources/
│   │       │   │       ├── evkill.c
│   │       │   │       ├── evtest.c
│   │       │   │       ├── remap.c
│   │       │   │       └── send.c
│   │       │   ├── exfat/
│   │       │   │   ├── package.mk
│   │       │   │   └── patches/
│   │       │   │       └── 01-no-fuse.patch
│   │       │   ├── exfat-linux/
│   │       │   │   └── package.mk
│   │       │   ├── fbdump/
│   │       │   │   └── package.mk
│   │       │   ├── fbfix/
│   │       │   │   ├── package.mk
│   │       │   │   └── sources/
│   │       │   │       └── fbfix.c
│   │       │   ├── fbgrab/
│   │       │   │   ├── package.mk
│   │       │   │   └── sources/
│   │       │   │       └── screenshot.sh
│   │       │   ├── fbterm/
│   │       │   │   ├── package.mk
│   │       │   │   └── patches/
│   │       │   │       ├── 0001-fbio.cpp-improxy.cpp-fbterm.cpp-fix-musl-compile.patch
│   │       │   │       └── gcc-6-build-fixes.patch
│   │       │   ├── freeimage/
│   │       │   │   ├── package.mk
│   │       │   │   └── patches/
│   │       │   │       └── freeimage-02-makefix.patch
│   │       │   ├── git/
│   │       │   │   └── package.mk
│   │       │   ├── gptokeyb/
│   │       │   │   └── package.mk
│   │       │   ├── grep/
│   │       │   │   └── package.mk
│   │       │   ├── iotop/
│   │       │   │   └── package.mk
│   │       │   ├── joyutils/
│   │       │   │   └── package.mk
│   │       │   ├── jslisten/
│   │       │   │   └── package.mk
│   │       │   ├── light/
│   │       │   │   └── package.mk
│   │       │   ├── luajit/
│   │       │   │   ├── package.mk
│   │       │   │   └── patches/
│   │       │   │       └── luajit-crosscompile.patch
│   │       │   ├── munt/
│   │       │   │   ├── munt_alsadrv/
│   │       │   │   │   └── package.mk
│   │       │   │   └── package.mk
│   │       │   ├── patchelf/
│   │       │   │   └── package.mk
│   │       │   ├── physfs/
│   │       │   │   └── package.mk
│   │       │   ├── poppler/
│   │       │   │   └── package.mk
│   │       │   ├── progressor/
│   │       │   │   ├── package.mk
│   │       │   │   └── patches/
│   │       │   │       └── gles.patch
│   │       │   ├── pygame/
│   │       │   │   └── package.mk
│   │       │   ├── python-evdev/
│   │       │   │   └── package.mk
│   │       │   ├── python3-protobuf/
│   │       │   │   ├── package.mk
│   │       │   │   └── patches/
│   │       │   │       └── python3-protobuf-001-add-experimental_allow_proto3_optional.patch
│   │       │   ├── pyudev/
│   │       │   │   ├── package.mk
│   │       │   │   └── patches/
│   │       │   │       └── pyudev-001-libraryfix.patch
│   │       │   ├── pyyaml/
│   │       │   │   └── package.mk
│   │       │   ├── rclone/
│   │       │   │   ├── bin/
│   │       │   │   │   └── ra_rclone.sh
│   │       │   │   ├── config/
│   │       │   │   │   └── emuelec-cloud-filter.cfg
│   │       │   │   └── package.mk
│   │       │   ├── rs97-commander-sdl2/
│   │       │   │   └── package.mk
│   │       │   ├── sdljoytest/
│   │       │   │   └── package.mk
│   │       │   ├── sdlterm/
│   │       │   │   ├── package.mk
│   │       │   │   └── sources/
│   │       │   │       └── sdlterm.cpp
│   │       │   ├── six/
│   │       │   │   └── package.mk
│   │       │   ├── sixaxis/
│   │       │   │   ├── package.mk
│   │       │   │   ├── system.d/
│   │       │   │   │   └── sixaxis@.service
│   │       │   │   └── udev.d/
│   │       │   │       └── 99-sixaxis.rules
│   │       │   ├── sixpair/
│   │       │   │   └── package.mk
│   │       │   ├── tcpbridge/
│   │       │   │   └── package.mk
│   │       │   ├── triggerhappy/
│   │       │   │   └── package.mk
│   │       │   ├── vim/
│   │       │   │   └── package.mk
│   │       │   ├── wget/
│   │       │   │   └── package.mk
│   │       │   ├── xow/
│   │       │   │   └── package.mk
│   │       │   └── yasm/
│   │       │       └── package.mk
│   │       ├── unused/
│   │       │   ├── eigen/
│   │       │   │   └── package.mk
│   │       │   ├── emulators/
│   │       │   │   ├── fba4arm/
│   │       │   │   │   └── package.mk
│   │       │   │   ├── mba.mini.plus/
│   │       │   │   │   ├── package.mk
│   │       │   │   │   └── patches/
│   │       │   │   │       └── emuelec-aarch64/
│   │       │   │   │           └── mba.mini.plus-01-add-emuelec-64b.patch
│   │       │   │   └── reicastsa/
│   │       │   │       ├── config/
│   │       │   │       │   └── reicast/
│   │       │   │       │       ├── emu_new.cfg
│   │       │   │       │       ├── f310.cfg
│   │       │   │       │       ├── mappings/
│   │       │   │       │       │   ├── Logitech Gamepad F310.cfg
│   │       │   │       │       │   ├── controller_gcwz.cfg
│   │       │   │       │       │   ├── controller_generic.cfg
│   │       │   │       │       │   ├── controller_pandora.cfg
│   │       │   │       │       │   ├── controller_xboxdrv.cfg
│   │       │   │       │       │   ├── controller_xpad.cfg
│   │       │   │       │       │   └── keyboard.cfg
│   │       │   │       │       └── x360.cfg
│   │       │   │       ├── package.mk
│   │       │   │       ├── patches/
│   │       │   │       │   ├── Amlogic/
│   │       │   │       │   │   ├── reicastsa-02-add_platform_OdroidC2.patch
│   │       │   │       │   │   └── reicastsa-03-mali.patch
│   │       │   │       │   ├── Amlogic-ng/
│   │       │   │       │   │   ├── reicastsa-02-add_platform_OdroidC2.patch
│   │       │   │       │   │   ├── reicastsa-03-mali.patch
│   │       │   │       │   │   └── reicastsa-05-fix-gles.patch
│   │       │   │       │   ├── reicastsa-01-libpng-fix-arm-neon.patch
│   │       │   │       │   └── reicastsa-04-fix-neon.patch
│   │       │   │       ├── reicastsa_old/
│   │       │   │       │   ├── config/
│   │       │   │       │   │   └── reicast/
│   │       │   │       │   │       └── emu_old.cfg
│   │       │   │       │   ├── package.mk
│   │       │   │       │   └── patches/
│   │       │   │       │       ├── Amlogic/
│   │       │   │       │       │   └── reicastsa-02-add_platform_OdroidC2.patch
│   │       │   │       │       ├── Amlogic-ng/
│   │       │   │       │       │   └── reicastsa-02-add_platform_OdroidC2.patch
│   │       │   │       │       ├── reicastsa-01-libpng-fix-arm-neon.patch
│   │       │   │       │       └── reicastsa-04-fix-neon.patch
│   │       │   │       └── scripts/
│   │       │   │           └── reicast.sh
│   │       │   ├── fbida/
│   │       │   │   └── package.mk
│   │       │   ├── fbpad/
│   │       │   │   ├── package.mk
│   │       │   │   └── sources/
│   │       │   │       ├── Makefile
│   │       │   │       ├── conf.h
│   │       │   │       ├── courr.tf
│   │       │   │       ├── draw.c
│   │       │   │       └── fbpad-256
│   │       │   ├── munt_neon/
│   │       │   │   ├── math_neon/
│   │       │   │   │   └── package.mk
│   │       │   │   └── package.mk_
│   │       │   └── steam-controller/
│   │       │       ├── package.mk
│   │       │       ├── patches/
│   │       │       │   ├── steamcontroller-0001-fix-include-dir.patch
│   │       │       │   ├── steamcontroller-0002-append-python-path.patch
│   │       │       │   ├── steamcontroller-0003-wait-for-controller-connection.patch
│   │       │       │   ├── steamcontroller-0004-use-run-for-pid-directory.patch
│   │       │       │   └── steamcontroller-0005-steam-client-will-never-be-running.patch
│   │       │       └── system.d/
│   │       │           └── driver.steam-controller.service
│   │       ├── video/
│   │       │   ├── capsimg/
│   │       │   │   └── package.mk
│   │       │   ├── gl4es/
│   │       │   │   ├── axe11/
│   │       │   │   │   ├── X11/
│   │       │   │   │   │   ├── X.h
│   │       │   │   │   │   ├── Xatom.h
│   │       │   │   │   │   ├── Xdefs.h
│   │       │   │   │   │   ├── Xfuncproto.h
│   │       │   │   │   │   ├── Xlib.h
│   │       │   │   │   │   ├── Xmd.h
│   │       │   │   │   │   ├── Xosdefs.h
│   │       │   │   │   │   ├── Xutil.h
│   │       │   │   │   │   ├── extensions/
│   │       │   │   │   │   │   ├── Xrandr.h
│   │       │   │   │   │   │   ├── Xrender.h
│   │       │   │   │   │   │   ├── randr.h
│   │       │   │   │   │   │   ├── render.h
│   │       │   │   │   │   │   ├── xf86vm.h
│   │       │   │   │   │   │   └── xf86vmode.h
│   │       │   │   │   │   ├── keysym.h
│   │       │   │   │   │   └── keysymdef.h
│   │       │   │   │   ├── package.mk
│   │       │   │   │   └── patches/
│   │       │   │   │       └── 01-EmuELEC-compile-fix.patch
│   │       │   │   ├── libglu/
│   │       │   │   │   ├── gl.pc
│   │       │   │   │   └── package.mk
│   │       │   │   ├── package.mk
│   │       │   │   └── pkgconfig/
│   │       │   │       └── gl.pc
│   │       │   ├── imagemagick/
│   │       │   │   └── package.mk
│   │       │   ├── libdvbpsi/
│   │       │   │   └── package.mk
│   │       │   ├── mpv/
│   │       │   │   └── package.mk
│   │       │   ├── vlc/
│   │       │   │   └── package.mk
│   │       │   └── youtube-dl/
│   │       │       └── package.mk
│   │       └── vksdl/
│   │           ├── package.mk
│   │           └── virtual_keyboard.cpp
│   ├── sysutils/
│   │   ├── bash/
│   │   │   └── package.mk
│   │   ├── bkeymaps/
│   │   │   └── package.mk
│   │   ├── busybox/
│   │   │   ├── config/
│   │   │   │   ├── busybox-init.conf
│   │   │   │   ├── busybox-target.conf
│   │   │   │   ├── inputrc
│   │   │   │   ├── profile
│   │   │   │   └── suspend-modules.conf
│   │   │   ├── default.d/
│   │   │   │   └── crond.conf
│   │   │   ├── package.mk
│   │   │   ├── patches/
│   │   │   │   ├── busybox-00_halt_no_init.patch
│   │   │   │   ├── busybox-02_silence-crond-startup-logging.patch
│   │   │   │   ├── busybox-03-make_unicode_printable.patch
│   │   │   │   ├── busybox-04-revert-dd-fsync-change.patch
│   │   │   │   ├── busybox-05-update-shadow-or-passwd-not-both.patch
│   │   │   │   ├── busybox-06-prevent-root-weak-passwd.patch
│   │   │   │   └── busybox-10-add-MS_BIND-option-when-remouting-bind-mount.patch
│   │   │   ├── profile.d/
│   │   │   │   ├── 10-locale.conf
│   │   │   │   └── 98-busybox.conf
│   │   │   ├── scripts/
│   │   │   │   ├── apt-get
│   │   │   │   ├── convert_dtname
│   │   │   │   ├── create-edid-cpio
│   │   │   │   ├── createlog
│   │   │   │   ├── dthelper
│   │   │   │   ├── dump-active-edids-drm
│   │   │   │   ├── fs-resize
│   │   │   │   ├── functions
│   │   │   │   ├── getedid
│   │   │   │   ├── getedid-drm
│   │   │   │   ├── init
│   │   │   │   ├── kernel-overlays-setup
│   │   │   │   ├── ledfix
│   │   │   │   ├── libreelec-target-generator
│   │   │   │   ├── lsb_release
│   │   │   │   ├── pastebinit
│   │   │   │   ├── rpi-flash-firmware
│   │   │   │   ├── sudo
│   │   │   │   ├── update-bootloader-edid-rpi
│   │   │   │   └── vfd-clock
│   │   │   ├── sleep.d.serial/
│   │   │   │   └── 99-suspend-modules.sh
│   │   │   ├── sysctl.d/
│   │   │   │   ├── 99-coredump.conf
│   │   │   │   ├── cdrom.conf
│   │   │   │   └── memory.conf
│   │   │   ├── system.d/
│   │   │   │   ├── fs-resize.service
│   │   │   │   ├── fs-resize.target
│   │   │   │   ├── ledfix.service
│   │   │   │   ├── locale.service
│   │   │   │   ├── rpi-flash-firmware.service
│   │   │   │   ├── rpi-flash-firmware.target
│   │   │   │   ├── shell.service
│   │   │   │   ├── show-version.service
│   │   │   │   ├── storage-log.service
│   │   │   │   ├── textmode.target
│   │   │   │   ├── var-log.mount
│   │   │   │   ├── var.mount
│   │   │   │   └── vfd-clock.service
│   │   │   ├── system.d.opt/
│   │   │   │   ├── cron-defaults.service
│   │   │   │   └── cron.service
│   │   │   └── tmpfiles.d/
│   │   │       └── z_01_busybox.conf
│   │   ├── cryptsetup/
│   │   │   └── package.mk
│   │   ├── dbus/
│   │   │   └── package.mk
│   │   ├── diskdev_cmds/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── diskdev_cmds-332.14-main.patch
│   │   ├── dosfstools/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── dosfstools-01-silence_backup_boot_sector_diff.patch
│   │   ├── e2fsprogs/
│   │   │   └── package.mk
│   │   ├── entropy/
│   │   │   ├── package.mk
│   │   │   ├── sources/
│   │   │   │   ├── add-entropy
│   │   │   │   └── add-random-at-shutdown
│   │   │   └── system.d/
│   │   │       ├── add-entropy.service
│   │   │       └── add-random-at-shutdown.service
│   │   ├── ethmactool/
│   │   │   ├── package.mk
│   │   │   ├── scripts/
│   │   │   │   └── ethmactool-config
│   │   │   └── system.d/
│   │   │       └── ethmactool-config.service
│   │   ├── eventlircd/
│   │   │   ├── evmap/
│   │   │   │   ├── 03_03eb_0002.evmap
│   │   │   │   ├── 03_0419_0001.evmap
│   │   │   │   ├── 03_046d_c101.evmap
│   │   │   │   ├── 03_05a4_9881.evmap
│   │   │   │   ├── 03_05ac_8241.evmap
│   │   │   │   ├── 03_0709_9137.evmap
│   │   │   │   ├── 03_0755_2626.evmap
│   │   │   │   ├── 03_0bc7_0006.evmap
│   │   │   │   ├── 03_1241_e000.evmap
│   │   │   │   ├── 03_13ec_0006.evmap
│   │   │   │   ├── 03_147a_e02d.evmap
│   │   │   │   ├── 03_18b1_0037.evmap
│   │   │   │   ├── 03_1d57_ac01.evmap
│   │   │   │   ├── aftvsremote.evmap
│   │   │   │   ├── bdremoteng.evmap
│   │   │   │   ├── cypress.evmap
│   │   │   │   ├── default.evmap
│   │   │   │   ├── mcekbd.evmap
│   │   │   │   ├── ps3remote.evmap
│   │   │   │   ├── skyqremote.evmap
│   │   │   │   ├── spinelplus.evmap
│   │   │   │   ├── tevii_s660.evmap
│   │   │   │   ├── topseed.evmap
│   │   │   │   ├── wiimote.evmap
│   │   │   │   ├── xiaomibtremote.evmap
│   │   │   │   └── xiaomibtremoteAM.evmap
│   │   │   ├── package.mk
│   │   │   ├── system.d/
│   │   │   │   └── eventlircd.service
│   │   │   ├── tmpfiles.d/
│   │   │   │   └── z_62_eventlircd.conf
│   │   │   └── udev.d/
│   │   │       └── 98-eventlircd.rules
│   │   ├── evrepeat/
│   │   │   ├── package.mk
│   │   │   └── udev.d/
│   │   │       └── 70-input-repeat.rules
│   │   ├── exfatprogs/
│   │   │   └── package.mk
│   │   ├── fuse/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── fuse-0001_aarch64-support.patch
│   │   │       ├── fuse-0002-dont-run-update-rc.d.patch
│   │   │       └── fuse-0003-build-with-glibc-2.34.patch
│   │   ├── fuse-exfat/
│   │   │   └── package.mk
│   │   ├── fuse3/
│   │   │   └── package.mk
│   │   ├── gptfdisk/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── 0001-Fix-failure-crash-of-sgdisk-when-compiled-with-lates.patch
│   │   │       ├── 0002-Updated-guid.cc-to-deal-with-minor-change-in-libuuid.patch
│   │   │       ├── 0003-Updated-URLs-in-man-pages-to-HTTPS-rather-than-HTTP.patch
│   │   │       ├── 0004-Fix-NULL-dereference-when-duplicating-string-argumen.patch
│   │   │       ├── 0005-Use-64bit-time_t-on-linux-as-well.patch
│   │   │       ├── 0006-Allow-partition-dynamically-allocated-by-largest-new.patch
│   │   │       ├── 0007-Document-recent-merge.patch
│   │   │       ├── 0008-Document-recent-mergest.patch
│   │   │       ├── 0009-Do-some-explicit-casts-in-gptcurses.cc-to-eliminate-.patch
│   │   │       ├── 0010-Truncate-decimal-inputs-e.g.-9.5G-becomes-9G.patch
│   │   │       ├── 0011-Document-previous-merge.patch
│   │   │       └── 0012-Minor-code-cleanup-based-on-valgrind-analysis.patch
│   │   ├── ir-bpf-decoders/
│   │   │   └── package.mk
│   │   ├── keyutils/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── keyutils-02-cflags.patch
│   │   ├── kmod/
│   │   │   ├── modprobe.d/
│   │   │   │   ├── aliases.conf
│   │   │   │   └── i2c.conf
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── kmod-02_fix-pkgconf.patch
│   │   ├── libdevmapper/
│   │   │   └── package.mk
│   │   ├── libevdev/
│   │   │   └── package.mk
│   │   ├── libhid/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── libhid-0.2.16-automake-1.13.patch
│   │   │       ├── libhid-disable_docs.patch
│   │   │       └── libhid-use_pkgconfig.patch
│   │   ├── libusb/
│   │   │   └── package.mk
│   │   ├── libusb-compat/
│   │   │   └── package.mk
│   │   ├── lirc/
│   │   │   ├── config/
│   │   │   │   └── lirc_options.conf
│   │   │   ├── default.d/
│   │   │   │   └── lircd.conf
│   │   │   ├── package.mk
│   │   │   ├── patches/
│   │   │   │   ├── lirc-0001-fix-zotac-poll.patch
│   │   │   │   └── lirc-0100-disable-python.patch
│   │   │   ├── scripts/
│   │   │   │   ├── lircd_helper
│   │   │   │   └── lircd_uinput_helper
│   │   │   ├── system.d/
│   │   │   │   ├── lircd-uinput.service
│   │   │   │   ├── lircd.service
│   │   │   │   └── lircd.socket
│   │   │   └── tmpfiles.d/
│   │   │       └── z_61_lirc.conf
│   │   ├── ntfs-3g_ntfsprogs/
│   │   │   └── package.mk
│   │   ├── open-iscsi/
│   │   │   ├── package.mk
│   │   │   ├── patches/
│   │   │   │   ├── open-iscsi-01_dynamic_linked_iscsistart.patch
│   │   │   │   ├── open-iscsi-02-cross_compile.patch
│   │   │   │   ├── open-iscsi-03_enable-multicast.patch
│   │   │   │   ├── open-iscsi-04-no_iscsiuio.patch
│   │   │   │   ├── open-iscsi-05-Updates-to-support-gcc-fno-common-option.patch
│   │   │   │   ├── open-iscsi-06-Fix-attribute.patch
│   │   │   │   └── open-iscsi-07-usr-run-for-config.patch
│   │   │   ├── system.d/
│   │   │   │   └── iscsi-initiator.service
│   │   │   └── tmpfiles.d/
│   │   │       └── iscsi.conf
│   │   ├── open-vm-tools/
│   │   │   ├── package.mk
│   │   │   └── system.d/
│   │   │       ├── vmtoolsd.service
│   │   │       └── vmware-vmblock-fuse.service
│   │   ├── parted/
│   │   │   └── package.mk
│   │   ├── pciutils/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── pciutils-01-fix-pkgconf.patch
│   │   ├── sed/
│   │   │   └── package.mk
│   │   ├── squashfs-tools/
│   │   │   └── package.mk
│   │   ├── systemd/
│   │   │   ├── config/
│   │   │   │   ├── hosts.conf
│   │   │   │   ├── hwdb.d/
│   │   │   │   │   └── README
│   │   │   │   ├── logind.conf.d/
│   │   │   │   │   └── README
│   │   │   │   ├── modules-load.d/
│   │   │   │   │   └── README
│   │   │   │   ├── sleep.conf.d/
│   │   │   │   │   ├── README
│   │   │   │   │   └── sleep.conf.sample
│   │   │   │   ├── sysctl.d/
│   │   │   │   │   └── README
│   │   │   │   ├── system.d/
│   │   │   │   │   ├── README
│   │   │   │   │   ├── cifs.mount.sample
│   │   │   │   │   ├── nfs.mount.sample
│   │   │   │   │   └── openvpn.service.sample
│   │   │   │   ├── timesyncd.conf.d/
│   │   │   │   │   └── README
│   │   │   │   ├── tmpfiles.d/
│   │   │   │   │   └── README
│   │   │   │   └── udev.rules.d/
│   │   │   │       └── README
│   │   │   ├── hwdb.d/
│   │   │   │   └── 70-local-keyboard.hwdb
│   │   │   ├── package.mk
│   │   │   ├── patches/
│   │   │   │   ├── systemd-0001-move-etc-systemd-system-to-storage-.config-system.d.patch
│   │   │   │   ├── systemd-0002-move-hwdb.bin-to-run.patch
│   │   │   │   ├── systemd-0003-remove-nonexistant-dependency.patch
│   │   │   │   ├── systemd-0200-persist-persistent-timer-stamps.patch
│   │   │   │   ├── systemd-0300-config-env-unhide-cursor.patch
│   │   │   │   ├── systemd-0500-Add-working-directory-storage-for-debug-shell.patch
│   │   │   │   ├── systemd-0600-SDCARDFS_SUPER_MAGIC.patch
│   │   │   │   └── systemd-501-Start-debug-service-after-locale-to-ensure-file-syst.patch
│   │   │   ├── profile.d/
│   │   │   │   └── 90-systemd.conf
│   │   │   ├── scripts/
│   │   │   │   ├── cpufreq
│   │   │   │   ├── environment-setup
│   │   │   │   ├── network-base-setup
│   │   │   │   ├── systemd-machine-id-setup
│   │   │   │   ├── systemd-timesyncd-setup
│   │   │   │   ├── usercache-setup
│   │   │   │   └── userconfig-setup
│   │   │   ├── system.d/
│   │   │   │   ├── cpufreq.service
│   │   │   │   ├── debugconfig.service
│   │   │   │   ├── envconfig.service
│   │   │   │   ├── flash.mount.d/
│   │   │   │   │   └── dependencies.conf
│   │   │   │   ├── machine-id.service
│   │   │   │   ├── network-base.service
│   │   │   │   ├── storage.mount.d/
│   │   │   │   │   └── dependencies.conf
│   │   │   │   ├── systemd-timesyncd-setup.service
│   │   │   │   ├── systemd-timesyncd.service.d/
│   │   │   │   │   └── depend-on-kernel-ip-config.conf
│   │   │   │   ├── usercache.service
│   │   │   │   └── userconfig.service
│   │   │   ├── tmpfiles.d/
│   │   │   │   └── z_01_openelec.conf
│   │   │   └── udev.d/
│   │   │       └── 60-not-joysticks.rules
│   │   ├── terminus-font/
│   │   │   └── package.mk
│   │   ├── tz/
│   │   │   ├── package.mk
│   │   │   └── system.d/
│   │   │       └── tz-data.service
│   │   ├── udevil/
│   │   │   ├── config/
│   │   │   │   └── udevil.conf
│   │   │   ├── package.mk
│   │   │   ├── patches/
│   │   │   │   └── udevil-fix-build.patch
│   │   │   ├── system.d/
│   │   │   │   └── udevil-mount@.service
│   │   │   └── udev.d/
│   │   │       └── 95-udevil-mount.rules
│   │   ├── usbutils/
│   │   │   └── package.mk
│   │   ├── util-linux/
│   │   │   ├── config/
│   │   │   │   └── swap.conf
│   │   │   ├── package.mk
│   │   │   ├── patches/
│   │   │   │   └── util-linux-01-fix-pkgconf.patch
│   │   │   ├── scripts/
│   │   │   │   └── mount-swap
│   │   │   ├── sysctl.d/
│   │   │   │   └── swappiness.conf
│   │   │   └── system.d/
│   │   │       ├── fstrim.service
│   │   │       ├── fstrim.timer
│   │   │       └── swap.service
│   │   ├── v4l-utils/
│   │   │   ├── config/
│   │   │   │   ├── rc_keymaps/
│   │   │   │   │   ├── README
│   │   │   │   │   └── protocols/
│   │   │   │   │       └── README
│   │   │   │   └── rc_maps.cfg.sample
│   │   │   ├── keymaps/
│   │   │   │   ├── a95x.toml
│   │   │   │   ├── beelink.toml
│   │   │   │   ├── beelink_bt_ir.toml
│   │   │   │   ├── beelink_pwr_only.toml
│   │   │   │   ├── cubox_i.toml
│   │   │   │   ├── kvim.toml
│   │   │   │   ├── kvim2.toml
│   │   │   │   ├── mecool.toml
│   │   │   │   ├── minix_neo_pwr_only.toml
│   │   │   │   ├── tanix.toml
│   │   │   │   ├── xbox_360.toml
│   │   │   │   ├── xbox_one.toml
│   │   │   │   └── zotac.toml
│   │   │   ├── package.mk
│   │   │   ├── patches/
│   │   │   │   ├── v4l-utils-001-disable-doxygen-in-automake.patch
│   │   │   │   ├── v4l-utils-002-support-libbpf-1-0-0.patch
│   │   │   │   ├── v4l-utils-003-add-power-on-argument.patch
│   │   │   │   └── v4l-utils-003-enable-bpf-without-clang.patch
│   │   │   └── udev.d/
│   │   │       └── 70-infrared.rules
│   │   └── wait-time-sync/
│   │       ├── package.mk
│   │       ├── sources/
│   │       │   ├── Makefile
│   │       │   └── wait-time-sync.c
│   │       └── system.d/
│   │           └── wait-time-sync.service
│   ├── testing/
│   │   └── package.mk
│   ├── textproc/
│   │   ├── expat/
│   │   │   └── package.mk
│   │   ├── itstool/
│   │   │   └── package.mk
│   │   ├── jsoncpp/
│   │   │   └── package.mk
│   │   ├── libidn2/
│   │   │   └── package.mk
│   │   ├── libxml2/
│   │   │   └── package.mk
│   │   ├── libxslt/
│   │   │   └── package.mk
│   │   ├── nlohmann-json/
│   │   │   └── package.mk
│   │   ├── pugixml/
│   │   │   └── package.mk
│   │   ├── tinyxml/
│   │   │   └── package.mk
│   │   ├── tinyxml2/
│   │   │   └── package.mk
│   │   └── xmlstarlet/
│   │       ├── package.mk
│   │       └── patches/
│   │           └── xmlstarlet-0001-usage2c.awk-fix-wrong-basename-regexp.patch
│   ├── tools/
│   │   ├── amlogic-boot-fip/
│   │   │   └── package.mk
│   │   ├── atf/
│   │   │   └── package.mk
│   │   ├── bcm2835-bootloader/
│   │   │   ├── files/
│   │   │   │   ├── config.txt
│   │   │   │   ├── distroconfig-composite.txt
│   │   │   │   ├── distroconfig.txt
│   │   │   │   └── update.sh
│   │   │   ├── package.mk
│   │   │   └── release
│   │   ├── bcmstat/
│   │   │   └── package.mk
│   │   ├── crust/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── fix-binutils-2-39.patch
│   │   │       └── fix-stack.patch
│   │   ├── dt-overlays/
│   │   │   └── package.mk
│   │   ├── dtc/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── dtc-0001-libfdt-soname-version.patch
│   │   │       ├── dtc-0002-link-with-libfdt-archive.patch
│   │   │       └── dtc-0003-Add-Amlogic-multi-dtb-and-add-gzipped-dtb-support.patch
│   │   ├── emmctool/
│   │   │   ├── package.mk
│   │   │   └── scripts/
│   │   │       └── emmctool
│   │   ├── exynos-boot-fip/
│   │   │   └── package.mk
│   │   ├── flashrom/
│   │   │   └── package.mk
│   │   ├── grub/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── grub-0001-Fix-Werror-array-bounds-array-subscript-0-is-outside-array-bounds.patch
│   │   │       ├── grub-0002-lib-reed-solomon-Fix-array-subscript-0-outside-array-bounds.patch
│   │   │       └── grub-gnulib-acprereq-2-64.patch
│   │   ├── hdparm/
│   │   │   ├── package.mk
│   │   │   ├── patches/
│   │   │   │   └── hdparm-9.42-cflags.patch
│   │   │   └── udev.d/
│   │   │       └── 61-cdrom.rules
│   │   ├── installer/
│   │   │   ├── config/
│   │   │   │   └── installer.conf
│   │   │   ├── package.mk
│   │   │   ├── scripts/
│   │   │   │   └── installer
│   │   │   └── system.d/
│   │   │       ├── installer.service
│   │   │       └── installer.target
│   │   ├── megatools/
│   │   │   └── package.mk
│   │   ├── mkbootimg/
│   │   │   └── package.mk
│   │   ├── mtools/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── mtools-05-fix-install.patch
│   │   ├── nano/
│   │   │   ├── config/
│   │   │   │   └── nanorc
│   │   │   ├── package.mk
│   │   │   └── profile.d/
│   │   │       └── 52-nano.conf
│   │   ├── newt/
│   │   │   └── package.mk
│   │   ├── plymouth-lite/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── plymouth-lite-0.6.0-01-fix-build.patch
│   │   │       ├── plymouth-lite-0.6.0-02-libpng_1.4.0.patch
│   │   │       ├── plymouth-lite-0.6.0-11-cursor.patch
│   │   │       ├── plymouth-lite-0.6.0-12-resize.patch
│   │   │       ├── plymouth-lite-0.6.0-21-16bpp.patch
│   │   │       └── plymouth-lite-0.6.0-22-link-static.patch
│   │   ├── populatefs/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       └── fix-compilation-issue.patch
│   │   ├── procps-ng/
│   │   │   └── package.mk
│   │   ├── qemu/
│   │   │   └── package.mk
│   │   ├── rkbin/
│   │   │   └── package.mk
│   │   ├── rpi-eeprom/
│   │   │   ├── config/
│   │   │   │   └── rpi-eeprom-update
│   │   │   ├── package.mk
│   │   │   └── source/
│   │   │       └── rpi-eeprom-update
│   │   ├── splash-image/
│   │   │   └── package.mk
│   │   ├── syslinux/
│   │   │   ├── package.mk
│   │   │   └── patches/
│   │   │       ├── syslinux-0001-fix-build-with-glibc_2.28.patch
│   │   │       └── syslinux-0002-fix-build-with-glibc_2.36.patch
│   │   ├── texturecache.py/
│   │   │   └── package.mk
│   │   ├── u-boot/
│   │   │   └── package.mk
│   │   ├── u-boot-script/
│   │   │   └── package.mk
│   │   └── u-boot-tools/
│   │       └── package.mk
│   ├── virtual/
│   │   ├── alsa/
│   │   │   └── package.mk
│   │   ├── autotools/
│   │   │   └── package.mk
│   │   ├── corefonts/
│   │   │   └── package.mk
│   │   ├── debug/
│   │   │   └── package.mk
│   │   ├── image/
│   │   │   └── package.mk
│   │   ├── initramfs/
│   │   │   ├── config/
│   │   │   │   └── initramfs.conf
│   │   │   └── package.mk
│   │   ├── libc/
│   │   │   └── package.mk
│   │   ├── linux-drivers/
│   │   │   └── package.mk
│   │   ├── linux-firmware/
│   │   │   └── package.mk
│   │   ├── mediacenter/
│   │   │   └── package.mk
│   │   ├── misc-packages/
│   │   │   └── package.mk
│   │   ├── network/
│   │   │   └── package.mk
│   │   ├── remote/
│   │   │   └── package.mk
│   │   ├── toolchain/
│   │   │   └── package.mk
│   │   ├── virtual/
│   │   │   └── package.mk
│   │   ├── wl/
│   │   │   └── package.mk
│   │   └── x11/
│   │       └── package.mk
│   ├── wayland/
│   │   ├── compositor/
│   │   │   └── sway/
│   │   │       ├── config/
│   │   │       │   ├── colorscheme
│   │   │       │   ├── config
│   │   │       │   └── sway-daemon.conf
│   │   │       ├── package.mk
│   │   │       ├── patches/
│   │   │       │   ├── sway-100.01-static-ipc-socket.patch
│   │   │       │   ├── sway-100.02-allow-running-as-root.patch
│   │   │       │   └── sway-100.03-do-not-use-git-version.patch
│   │   │       ├── profile.d/
│   │   │       │   └── 04-sway.conf
│   │   │       ├── scripts/
│   │   │       │   ├── sway-config
│   │   │       │   └── sway.sh
│   │   │       └── system.d/
│   │   │           └── sway.service
│   │   ├── lib/
│   │   │   ├── fcft/
│   │   │   │   └── package.mk
│   │   │   ├── hwdata/
│   │   │   │   └── package.mk
│   │   │   ├── seatd/
│   │   │   │   ├── package.mk
│   │   │   │   └── system.d/
│   │   │   │       └── seatd.service
│   │   │   ├── tllist/
│   │   │   │   └── package.mk
│   │   │   └── wlroots/
│   │   │       └── package.mk
│   │   ├── libinput/
│   │   │   └── package.mk
│   │   ├── libxkbcommon/
│   │   │   └── package.mk
│   │   ├── mtdev/
│   │   │   └── package.mk
│   │   ├── util/
│   │   │   ├── bemenu/
│   │   │   │   └── package.mk
│   │   │   ├── foot/
│   │   │   │   ├── config/
│   │   │   │   │   └── foot.ini
│   │
Download .txt
SYMBOL INDEX (1323 symbols across 122 files)

FILE: config/docker/source/default.py
  class Monitor (line 9) | class Monitor(xbmc.Monitor):
    method __init__ (line 11) | def __init__(self, *args, **kwargs):
    method onSettingsChanged (line 15) | def onSettingsChanged(self):

FILE: packages/addons/browser/chrome/source/default.py
  function pauseXbmc (line 22) | def pauseXbmc():
  function resumeXbmc (line 28) | def resumeXbmc():
  function _print_exception (line 33) | def _print_exception():
  function startchrome (line 42) | def startchrome(args):
  function isRunning (line 76) | def isRunning(pname):
  function getAudioDevice (line 81) | def getAudioDevice():
  function getAudioDeviceType (line 91) | def getAudioDeviceType(dev):
  function getAlsaAudioDevice (line 102) | def getAlsaAudioDevice(dev):

FILE: packages/addons/driver/hdhomerun/source/resources/lib/functions.py
  function settings_backup (line 16) | def settings_backup(settings_xml):
  function settings_restore (line 24) | def settings_restore(settings_xml):
  function get_devices_hdhomerun (line 32) | def get_devices_hdhomerun():
  function get_devices_sundtek (line 58) | def get_devices_sundtek(mediaclient_e):
  function parse_settings (line 120) | def parse_settings(settings_xml):
  function remove_old_tuners (line 131) | def remove_old_tuners(xmldoc):
  function add_hdhomerun (line 141) | def add_hdhomerun(xmldoc, node_cat, tuners):
  function add_sundtek (line 181) | def add_sundtek(xmldoc, node_cat, tuners):
  function add_new_tuners (line 221) | def add_new_tuners(xmldoc, tuners, which):
  function save_settings (line 237) | def save_settings(settings_xml, xmldoc):
  function refresh_hdhomerun_tuners (line 248) | def refresh_hdhomerun_tuners(settings_xml):
  function refresh_sundtek_tuners (line 261) | def refresh_sundtek_tuners(settings_xml, mediaclient_e):

FILE: packages/addons/driver/hdhomerun/source/resources/lib/xmlpp.py
  function _usage (line 36) | def _usage(this_file):
  function _pprint_line (line 40) | def _pprint_line(indent_level, line, width=100, output=_sys.stdout, igno...
  function _pprint_elem_content (line 76) | def _pprint_elem_content(indent_level, line, output=_sys.stdout):
  function _get_next_elem (line 82) | def _get_next_elem(data):
  function get_pprint (line 123) | def get_pprint(xml, indent=4, width=80):
  function pprint (line 138) | def pprint(xml, output=_sys.stdout, indent=4, width=80):

FILE: packages/addons/driver/sundtek-mediatv/source/resources/lib/functions.py
  function settings_backup (line 14) | def settings_backup(settings_xml):
  function settings_restore (line 22) | def settings_restore(settings_xml):
  function get_devices_hdhomerun (line 30) | def get_devices_hdhomerun(hdhomerun_log):
  function get_devices_sundtek (line 53) | def get_devices_sundtek(mediaclient_e):
  function parse_settings (line 141) | def parse_settings(settings_xml):
  function remove_old_tuners (line 152) | def remove_old_tuners(xmldoc):
  function add_hdhomerun (line 162) | def add_hdhomerun(xmldoc, node_cat, tuners):
  function add_sundtek (line 192) | def add_sundtek(xmldoc, node_cat, tuners):
  function add_new_tuners (line 255) | def add_new_tuners(xmldoc, tuners, which):
  function save_settings (line 271) | def save_settings(settings_xml, xmldoc):
  function refresh_hdhomerun_tuners (line 282) | def refresh_hdhomerun_tuners(settings_xml, hdhomerun_log):
  function refresh_sundtek_tuners (line 295) | def refresh_sundtek_tuners(settings_xml, mediaclient_e):

FILE: packages/addons/driver/sundtek-mediatv/source/resources/lib/xmlpp.py
  function _usage (line 36) | def _usage(this_file):
  function _pprint_line (line 40) | def _pprint_line(indent_level, line, width=100, output=_sys.stdout, igno...
  function _pprint_elem_content (line 76) | def _pprint_elem_content(indent_level, line, output=_sys.stdout):
  function _get_next_elem (line 82) | def _get_next_elem(data):
  function get_pprint (line 123) | def get_pprint(xml, indent=4, width=80):
  function pprint (line 138) | def pprint(xml, output=_sys.stdout, indent=4, width=80):

FILE: packages/addons/service/docker/source/default.py
  function print_notification (line 182) | def print_notification(json_data):
  class Main (line 240) | class Main(object):
    method __init__ (line 242) | def __init__(self, *args, **kwargs):
  class DockerMonitor (line 285) | class DockerMonitor(xbmc.Monitor):
    method __init__ (line 287) | def __init__(self, *args, **kwargs):
    method onSettingsChanged (line 290) | def onSettingsChanged(self):

FILE: packages/addons/service/docker/source/lib/dockermon.py
  class DockermonError (line 26) | class DockermonError(Exception):
  function read_http_header (line 30) | def read_http_header(sock):
  function header_status (line 44) | def header_status(header):
  function connect (line 52) | def connect(url):
  function watch (line 73) | def watch(callback, url=default_sock_url, run=None):
  function print_callback (line 119) | def print_callback(msg):
  function prog_callback (line 126) | def prog_callback(prog, msg):

FILE: packages/addons/service/emby4/source/default.py
  function jsonrpc (line 11) | def jsonrpc(request):
  function disable_conflicting (line 15) | def disable_conflicting(conficting,
  class Monitor (line 34) | class Monitor(xbmc.Monitor):
    method __init__ (line 36) | def __init__(self, *args, **kwargs):
    method onSettingsChanged (line 40) | def onSettingsChanged(self):

FILE: packages/addons/service/inadyn/source/default.py
  class Monitor (line 9) | class Monitor(xbmc.Monitor):
    method __init__ (line 11) | def __init__(self, *args, **kwargs):
    method onSettingsChanged (line 15) | def onSettingsChanged(self):

FILE: packages/addons/service/jellyfin/source/default.py
  function jsonrpc (line 11) | def jsonrpc(request):
  function disable_conflicting (line 15) | def disable_conflicting(conficting,
  class Monitor (line 34) | class Monitor(xbmc.Monitor):
    method __init__ (line 36) | def __init__(self, *args, **kwargs):
    method onSettingsChanged (line 40) | def onSettingsChanged(self):

FILE: packages/addons/service/lcdd/source/default.py
  class Monitor (line 9) | class Monitor(xbmc.Monitor):
    method __init__ (line 11) | def __init__(self, *args, **kwargs):
    method onSettingsChanged (line 15) | def onSettingsChanged(self):

FILE: packages/addons/service/librespot/source/bin/onevent.py
  function send_event (line 10) | def send_event(event):
  function receive_event (line 16) | def receive_event():
  function get_env_value (line 48) | def get_env_value(key):

FILE: packages/addons/service/librespot/source/default.py
  function _set_home (line 7) | def _set_home():
  function _set_paths (line 13) | def _set_paths():

FILE: packages/addons/service/librespot/source/resources/lib/external_player.py
  class Player (line 5) | class Player(player.Player):
    method onLibrespotTrackChanged (line 7) | def onLibrespotTrackChanged(self, art, artist, title, **kwargs):

FILE: packages/addons/service/librespot/source/resources/lib/internal_player.py
  class Player (line 8) | class Player(player.Player):
    method __init__ (line 10) | def __init__(self, codec='pcm_sb16be', max_fanarts='10', **kwargs):
    method onLibrespotTrackChanged (line 17) | def onLibrespotTrackChanged(self, album='', art='', artist='', title=''):
    method onLibrespotStopped (line 30) | def onLibrespotStopped(self):

FILE: packages/addons/service/librespot/source/resources/lib/librespot.py
  class Librespot (line 11) | class Librespot:
    method __init__ (line 13) | def __init__(self,
    method get_player (line 40) | def get_player(self, **kwargs):
    method restart (line 43) | def restart(self):
    method start (line 49) | def start(self):
    method stop (line 55) | def stop(self):
    method start_sink (line 61) | def start_sink(self):
    method stop_sink (line 64) | def stop_sink(self):
    method _run (line 67) | def _run(self):
    method __enter__ (line 89) | def __enter__(self):
    method __exit__ (line 93) | def __exit__(self, *args):

FILE: packages/addons/service/librespot/source/resources/lib/librespot_alsa.py
  class Librespot (line 4) | class Librespot(librespot.Librespot):
    method __init__ (line 6) | def __init__(self, alsa_device='hw:2,0', **kwargs):

FILE: packages/addons/service/librespot/source/resources/lib/librespot_pulseaudio_rtp.py
  class Librespot (line 8) | class Librespot(librespot.Librespot):
    method __init__ (line 10) | def __init__(self,
    method start_sink (line 50) | def start_sink(self):
    method stop_sink (line 53) | def stop_sink(self):
    method _pactl (line 56) | def _pactl(self, command, *args):
    method __exit__ (line 64) | def __exit__(self, *args):

FILE: packages/addons/service/librespot/source/resources/lib/player.py
  class Player (line 8) | class Player(xbmc.Player):
    method __init__ (line 10) | def __init__(self, dnd_kodi='false', librespot=None, **kwargs):
    method onAVStarted (line 20) | def onAVStarted(self):
    method onLibrespotStopped (line 29) | def onLibrespotStopped(self):
    method onLibrespotTrackChanged (line 32) | def onLibrespotTrackChanged(self, album='', art='', artist='', title=''):
    method onPlayBackEnded (line 35) | def onPlayBackEnded(self):
    method onPlayBackError (line 42) | def onPlayBackError(self):
    method onPlayBackStopped (line 45) | def onPlayBackStopped(self):
    method stop (line 49) | def stop(self):
    method _run (line 52) | def _run(self):
    method __enter__ (line 65) | def __enter__(self):
    method __exit__ (line 68) | def __exit__(self, *args):

FILE: packages/addons/service/librespot/source/resources/lib/service.py
  function log (line 15) | def log(message, show=False):
  function notification (line 19) | def notification(message='', sound=False, heading=_NAME, icon=_ICON, tim...
  function get_fanart (line 26) | def get_fanart(url, max_fanarts):
  function _get_setting (line 60) | def _get_setting(setting, default):
  function _get_librespot (line 65) | def _get_librespot():
  class Monitor (line 75) | class Monitor(xbmc.Monitor):
    method __init__ (line 77) | def __init__(self):
    method onSettingsChanged (line 81) | def onSettingsChanged(self):
    method run (line 85) | def run(self):

FILE: packages/addons/service/locale/source/default.py
  class Monitor (line 11) | class Monitor(xbmc.Monitor):
    method __init__ (line 13) | def __init__(self, *args, **kwargs):
    method onSettingsChanged (line 17) | def onSettingsChanged(self):
    method setLocale (line 20) | def setLocale(self):

FILE: packages/addons/service/mariadb/source/default.py
  class Monitor (line 8) | class Monitor(xbmc.Monitor):
    method __init__ (line 9) | def __init__(self, *args, **kwargs):
    method onSettingsChanged (line 13) | def onSettingsChanged(self):

FILE: packages/addons/service/minidlna/source/default.py
  class Monitor (line 9) | class Monitor(xbmc.Monitor):
    method __init__ (line 11) | def __init__(self, *args, **kwargs):
    method onSettingsChanged (line 15) | def onSettingsChanged(self):

FILE: packages/addons/service/minisatip/source/default.py
  class Monitor (line 8) | class Monitor(xbmc.Monitor):
    method __init__ (line 10) | def __init__(self, *args, **kwargs):
    method onSettingsChanged (line 14) | def onSettingsChanged(self):

FILE: packages/addons/service/net-snmp/source/default.py
  class MyMonitor (line 10) | class MyMonitor(xbmc.Monitor):
    method __init__ (line 11) | def __init__(self, *args, **kwargs):
    method onSettingsChanged (line 14) | def onSettingsChanged(self):
  function writeconfig (line 28) | def writeconfig():

FILE: packages/addons/service/nextpvr/source/addon.py
  class Controller (line 26) | class Controller():
    method __init__ (line 28) | def __init__(self):
    method downloadScanTable (line 31) | def downloadScanTable(self):
    method updateNextPVR (line 64) | def updateNextPVR(self):
    method sessionLogin (line 91) | def sessionLogin(self):
    method doSessionRequest5 (line 111) | def doSessionRequest5(self, method, isJSON = True):
    method hashMe (line 132) | def hashMe (self, thedata):
    method loginNextPVR (line 138) | def loginNextPVR(self):
    method showMessage (line 152) | def showMessage(self, message):
    method updateEpg (line 157) | def updateEpg(self):
    method updateM3u (line 163) | def updateM3u(self):
    method rescanDevices (line 169) | def rescanDevices(self):
    method transcodeHLS (line 175) | def transcodeHLS(self):
    method resetWebCredentials (line 194) | def resetWebCredentials(self):

FILE: packages/addons/service/nextpvr/source/default.py
  class Monitor (line 7) | class Monitor(xbmc.Monitor):
    method __init__ (line 9) | def __init__(self, *args, **kwargs):
    method onSettingsChanged (line 12) | def onSettingsChanged(self):

FILE: packages/addons/service/pcscd/source/default.py
  class Monitor (line 9) | class Monitor(xbmc.Monitor):
    method __init__ (line 11) | def __init__(self, *args, **kwargs):
    method onSettingsChanged (line 15) | def onSettingsChanged(self):

FILE: packages/addons/service/proftpd/source/default.py
  class Monitor (line 9) | class Monitor(xbmc.Monitor):
    method __init__ (line 11) | def __init__(self, *args, **kwargs):
    method onSettingsChanged (line 15) | def onSettingsChanged(self):

FILE: packages/addons/service/prometheus-node-exporter/source/default.py
  class Monitor (line 9) | class Monitor(xbmc.Monitor):
    method __init__ (line 11) | def __init__(self, *args, **kwargs):
    method onSettingsChanged (line 15) | def onSettingsChanged(self):

FILE: packages/addons/service/rsyslog/source/default.py
  class Monitor (line 10) | class Monitor(xbmc.Monitor):
    method __init__ (line 12) | def __init__(self, *args, **kwargs):
    method onSettingsChanged (line 16) | def onSettingsChanged(self):

FILE: packages/addons/service/snapclient/source/default.py
  function systemctl (line 9) | def systemctl(command):
  class Monitor (line 14) | class Monitor(xbmc.Monitor):
    method __init__ (line 16) | def __init__(self, *args, **kwargs):
    method onSettingsChanged (line 20) | def onSettingsChanged(self):
  class Player (line 24) | class Player(xbmc.Player):
    method __init__ (line 26) | def __init__(self):
    method onPlayBackEnded (line 30) | def onPlayBackEnded(self):
    method onPlayBackStarted (line 36) | def onPlayBackStarted(self):
    method onPlayBackStopped (line 40) | def onPlayBackStopped(self):
    method start (line 44) | def start(self, command):

FILE: packages/addons/service/snapserver/snapweb/3rd-party/libflac.js
  function locateFile (line 158) | function locateFile(path) {
  function dynamicAlloc (line 401) | function dynamicAlloc(size) {
  function alignMemory (line 408) | function alignMemory(size, factor) {
  function getNativeTypeSize (line 413) | function getNativeTypeSize(type) {
  function warnOnce (line 435) | function warnOnce(text) {
  function convertJsFunctionToWasm (line 451) | function convertJsFunctionToWasm(func, sig) {
  function addFunctionWasm (line 461) | function addFunctionWasm(func, sig) {
  function removeFunctionWasm (line 517) | function removeFunctionWasm(index) {
  function addFunction (line 524) | function addFunction(func, sig) {
  function removeFunction (line 529) | function removeFunction(index) {
  function getFuncWrapper (line 537) | function getFuncWrapper(func, sig) {
  function makeBigInt (line 570) | function makeBigInt(low, high, unsigned) {
  function dynCall (line 575) | function dynCall(sig, ptr, args) {
  function wasm2js_scratch_load_i32 (line 679) | function wasm2js_scratch_load_i32(index) {
  function wasm2js_scratch_store_i32 (line 683) | function wasm2js_scratch_store_i32(index, value) {
  function wasm2js_scratch_load_f64 (line 687) | function wasm2js_scratch_load_f64() {
  function wasm2js_scratch_store_f64 (line 691) | function wasm2js_scratch_store_f64(value) {
  function wasm2js_scratch_store_f32 (line 695) | function wasm2js_scratch_store_f32(value) {
  function asmFunc (line 699) | function asmFunc(global, env, buffer) {
  function base64DecodeToExistingUint8Array (line 27295) | function base64DecodeToExistingUint8Array(uint8Array, offset, b64) {
  function setValue (line 27384) | function setValue(ptr, value, type, noSafe) {
  function getValue (line 27402) | function getValue(ptr, type, noSafe) {
  function assert (line 27451) | function assert(condition, text) {
  function getCFunc (line 27458) | function getCFunc(ident) {
  function ccall (line 27469) | function ccall(ident, returnType, argTypes, args, opts) {
  function cwrap (line 27519) | function cwrap(ident, returnType, argTypes, opts) {
  function allocate (line 27552) | function allocate(slab, types, allocator, ptr) {
  function getMemory (line 27623) | function getMemory(size) {
  function UTF8ArrayToString (line 27643) | function UTF8ArrayToString(heap, idx, maxBytesToRead) {
  function UTF8ToString (line 27698) | function UTF8ToString(ptr, maxBytesToRead) {
  function stringToUTF8Array (line 27715) | function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) {
  function stringToUTF8 (line 27760) | function stringToUTF8(str, outPtr, maxBytesToWrite) {
  function lengthBytesUTF8 (line 27765) | function lengthBytesUTF8(str) {
  function AsciiToString (line 27789) | function AsciiToString(ptr) {
  function stringToAscii (line 27801) | function stringToAscii(str, outPtr) {
  function UTF16ToString (line 27810) | function UTF16ToString(ptr, maxBytesToRead) {
  function stringToUTF16 (line 27848) | function stringToUTF16(str, outPtr, maxBytesToWrite) {
  function lengthBytesUTF16 (line 27870) | function lengthBytesUTF16(str) {
  function UTF32ToString (line 27874) | function UTF32ToString(ptr, maxBytesToRead) {
  function stringToUTF32 (line 27907) | function stringToUTF32(str, outPtr, maxBytesToWrite) {
  function lengthBytesUTF32 (line 27934) | function lengthBytesUTF32(str) {
  function allocateUTF8 (line 27949) | function allocateUTF8(str) {
  function allocateUTF8OnStack (line 27957) | function allocateUTF8OnStack(str) {
  function writeStringToMemory (line 27970) | function writeStringToMemory(string, buffer, dontAddNull) {
  function writeArrayToMemory (line 27985) | function writeArrayToMemory(array, buffer) {
  function writeAsciiToMemory (line 27990) | function writeAsciiToMemory(str, buffer, dontAddNull) {
  function alignUp (line 28006) | function alignUp(x, multiple) {
  function updateGlobalBufferAndViews (line 28033) | function updateGlobalBufferAndViews(buf) {
  function callRuntimeCallbacks (line 28109) | function callRuntimeCallbacks(callbacks) {
  function preRun (line 28139) | function preRun() {
  function initRuntime (line 28151) | function initRuntime() {
  function preMain (line 28158) | function preMain() {
  function exitRuntime (line 28163) | function exitRuntime() {
  function postRun (line 28167) | function postRun() {
  function addOnPreRun (line 28179) | function addOnPreRun(cb) {
  function addOnInit (line 28183) | function addOnInit(cb) {
  function addOnPreMain (line 28187) | function addOnPreMain(cb) {
  function addOnExit (line 28191) | function addOnExit(cb) {
  function addOnPostRun (line 28194) | function addOnPostRun(cb) {
  function unSign (line 28199) | function unSign(value, bits, ignore) {
  function reSign (line 28207) | function reSign(value, bits, ignore) {
  function getUniqueRunDependency (line 28268) | function getUniqueRunDependency(id) {
  function addRunDependency (line 28272) | function addRunDependency(id) {
  function removeRunDependency (line 28281) | function removeRunDependency(id) {
  function abort (line 28305) | function abort(what) {
  function hasPrefix (line 28339) | function hasPrefix(str, prefix) {
  function isDataURI (line 28349) | function isDataURI(filename) {
  function isFileURI (line 28356) | function isFileURI(filename) {
  function getBinary (line 28368) | function getBinary() {
  function getBinaryPromise (line 28389) | function getBinaryPromise() {
  function createWasm (line 28415) | function createWasm() {
  function demangle (line 28517) | function demangle(func) {
  function demangleAll (line 28521) | function demangleAll(text) {
  function jsStackTrace (line 28531) | function jsStackTrace() {
  function stackTrace (line 28548) | function stackTrace() {
  function _emscripten_get_sbrk_ptr (line 28554) | function _emscripten_get_sbrk_ptr() {
  function _emscripten_memcpy_big (line 28558) | function _emscripten_memcpy_big(dest, src, num) {
  function _emscripten_get_heap_size (line 28563) | function _emscripten_get_heap_size() {
  function emscripten_realloc_buffer (line 28567) | function emscripten_realloc_buffer(size) {
  function _emscripten_resize_heap (line 28575) | function _emscripten_resize_heap(requestedSize) {
  function setErrNo (line 28692) | function setErrNo(value) {
  function trim (line 28720) | function trim(arr) {
  function doCallback (line 29523) | function doCallback(errCode) {
  function done (line 29528) | function done(errCode) {
  function LazyUint8Array (line 30580) | function LazyUint8Array() {
  function processData (line 30741) | function processData(byteArray) {
  function finish (line 30794) | function finish() {
  function finish (line 30825) | function finish() {
  function _fd_close (line 30979) | function _fd_close(fd) {try {
  function _fd_read (line 30990) | function _fd_read(fd, iov, iovcnt, pnum) {try {
  function _fd_seek (line 31002) | function _fd_seek(fd, offset_low, offset_high, whence, newOffset) {try {
  function _fd_write (line 31026) | function _fd_write(fd, iov, iovcnt, pnum) {try {
  function _round (line 31039) | function _round(d) {
  function _setTempRet0 (line 31044) | function _setTempRet0($i) {
  function intArrayFromString (line 31098) | function intArrayFromString(stringy, dontAddNull, length) {
  function intArrayToString (line 31106) | function intArrayToString(array) {
  function intArrayFromBase64 (line 31165) | function intArrayFromBase64(s) {
  function tryParseAsDataURI (line 31192) | function tryParseAsDataURI(filename) {
  function ExitStatus (line 31634) | function ExitStatus(status) {
  function run (line 31654) | function run(args) {
  function exit (line 31702) | function exit(status, implicit) {
  function _readStreamInfo (line 31754) | function _readStreamInfo(p_streaminfo){//-> FLAC__StreamMetadata.type (F...
  function _readMd5 (line 31802) | function _readMd5(p_md5){
  function _readFrameHdr (line 31822) | function _readFrameHdr(p_frame, enc_opt){
  function _readSubFrameHdr (line 31890) | function _readSubFrameHdr(p_subframe, subOffset, block_size, enc_opt){
  function _readSubFrameHdrFixedData (line 31934) | function _readSubFrameHdrFixedData(p_subframe_data, subOffset, block_siz...
  function _readSubFrameHdrWarmup (line 32046) | function _readSubFrameHdrWarmup(p_subframe_data, offset, warmup, order){
  function _readSubFrameHdrResidual (line 32057) | function _readSubFrameHdrResidual(p_subframe_data_res, block_size, order){
  function _readConstChar (line 32069) | function _readConstChar(ptr, length, sb){
  function _readNullTerminatedChar (line 32082) | function _readNullTerminatedChar(ptr, sb){
  function _readPaddingMetadata (line 32101) | function _readPaddingMetadata(p_padding_metadata){//-> FLAC__StreamMetad...
  function _readApplicationMetadata (line 32115) | function _readApplicationMetadata(p_application_metadata){//-> FLAC__Str...
  function _readSeekTableMetadata (line 32132) | function _readSeekTableMetadata(p_seek_table_metadata){//-> FLAC__Stream...
  function _readVorbisComment (line 32167) | function _readVorbisComment(p_vorbiscomment){//-> FLAC__StreamMetadata.t...
  function _readCueSheetMetadata (line 32212) | function _readCueSheetMetadata(p_cue_sheet){//-> FLAC__StreamMetadata.ty...
  function _readCueSheetMetadata_track (line 32255) | function _readCueSheetMetadata_track(p_cue_sheet_track, sb){
  function _readPictureMetadata (line 32304) | function _readPictureMetadata(p_picture_metadata){//-> FLAC__StreamMetad...
  function __fix_write_buffer (line 32360) | function __fix_write_buffer(heapOffset, newBuffer, applyFix){
  function getCallback (line 32524) | function getCallback(p_coder, func_type){
  function setCallback (line 32542) | function setCallback(p_coder, func_type, callback){
  function _getOptions (line 32559) | function _getOptions(p_coder){
  function _setOptions (line 32575) | function _setOptions(p_coder, options){
  method get (line 34549) | get() { return this._onready; }
  method set (line 34550) | set(newValue) {

FILE: packages/addons/service/snapserver/snapweb/snapcontrol.js
  class Host (line 2) | class Host {
    method constructor (line 3) | constructor(json) {
    method fromJson (line 11) | fromJson(json) {
  class Client (line 19) | class Client {
    method constructor (line 20) | constructor(json) {
    method fromJson (line 25) | fromJson(json) {
  class Group (line 36) | class Group {
    method constructor (line 37) | constructor(json) {
    method fromJson (line 45) | fromJson(json) {
    method getClient (line 53) | getClient(id) {
  class Stream (line 61) | class Stream {
    method constructor (line 62) | constructor(json) {
    method fromJson (line 67) | fromJson(json) {
  class Server (line 74) | class Server {
    method constructor (line 75) | constructor(json) {
    method fromJson (line 81) | fromJson(json) {
    method getClient (line 92) | getClient(id) {
    method getGroup (line 100) | getGroup(id) {
    method getStream (line 107) | getStream(id) {
  class SnapControl (line 115) | class SnapControl {
    method constructor (line 116) | constructor(baseUrl) {
    method connect (line 123) | connect() {
    method action (line 133) | action(answer) {
    method getClient (line 166) | getClient(client_id) {
    method getGroup (line 173) | getGroup(group_id) {
    method getGroupVolume (line 180) | getGroupVolume(group, online) {
    method getGroupFromClient (line 195) | getGroupFromClient(client_id) {
    method getStream (line 202) | getStream(stream_id) {
    method setVolume (line 209) | setVolume(client_id, percent, mute) {
    method setClientName (line 217) | setClientName(client_id, name) {
    method setClientLatency (line 225) | setClientLatency(client_id, latency) {
    method deleteClient (line 233) | deleteClient(client_id) {
    method setStream (line 249) | setStream(group_id, stream_id) {
    method setClients (line 253) | setClients(group_id, clients) {
    method muteGroup (line 256) | muteGroup(group_id, mute) {
    method sendRequest (line 260) | sendRequest(method, params) {
    method onMessage (line 273) | onMessage(msg) {
  function autoplayRequested (line 302) | function autoplayRequested() {
  function show (line 305) | function show() {
  function updateGroupVolume (line 473) | function updateGroupVolume(group) {
  function setGroupVolume (line 483) | function setGroupVolume(group_id) {
  function groupVolumeEnter (line 508) | function groupVolumeEnter(group_id) {
  function setVolume (line 519) | function setVolume(id, mute) {
  function play (line 530) | function play() {
  function setMuteGroup (line 540) | function setMuteGroup(id, mute) {
  function setStream (line 544) | function setStream(id) {
  function setGroup (line 548) | function setGroup(client_id, group_id) {
  function setName (line 574) | function setName(id) {
  function openClientSettings (line 587) | function openClientSettings(id) {
  function closeClientSettings (line 617) | function closeClientSettings() {
  function deleteClient (line 631) | function deleteClient(id) {

FILE: packages/addons/service/snapserver/snapweb/snapstream.js
  function setCookie (line 2) | function setCookie(key, value, exdays = -1) {
  function getPersistentValue (line 10) | function getPersistentValue(key, defaultValue = "") {
  function getChromeVersion (line 32) | function getChromeVersion() {
  function uuidv4 (line 36) | function uuidv4() {
  class Tv (line 42) | class Tv {
    method constructor (line 43) | constructor(sec, usec) {
    method setMilliseconds (line 49) | setMilliseconds(ms) {
    method getMilliseconds (line 53) | getMilliseconds() {
  class BaseMessage (line 57) | class BaseMessage {
    method constructor (line 58) | constructor(_buffer) {
    method deserialize (line 66) | deserialize(buffer) {
    method serialize (line 75) | serialize() {
    method getSize (line 89) | getSize() {
  class CodecMessage (line 93) | class CodecMessage extends BaseMessage {
    method constructor (line 94) | constructor(buffer) {
    method deserialize (line 103) | deserialize(buffer) {
  class TimeMessage (line 115) | class TimeMessage extends BaseMessage {
    method constructor (line 116) | constructor(buffer) {
    method deserialize (line 124) | deserialize(buffer) {
    method serialize (line 129) | serialize() {
    method getSize (line 136) | getSize() {
  class JsonMessage (line 140) | class JsonMessage extends BaseMessage {
    method constructor (line 141) | constructor(buffer) {
    method deserialize (line 147) | deserialize(buffer) {
    method serialize (line 154) | serialize() {
    method getSize (line 165) | getSize() {
  class HelloMessage (line 172) | class HelloMessage extends JsonMessage {
    method constructor (line 173) | constructor(buffer) {
    method deserialize (line 189) | deserialize(buffer) {
    method serialize (line 201) | serialize() {
  class ServerSettingsMessage (line 206) | class ServerSettingsMessage extends JsonMessage {
    method constructor (line 207) | constructor(buffer) {
    method deserialize (line 218) | deserialize(buffer) {
    method serialize (line 225) | serialize() {
  class PcmChunkMessage (line 230) | class PcmChunkMessage extends BaseMessage {
    method constructor (line 231) | constructor(buffer, sampleFormat) {
    method deserialize (line 241) | deserialize(buffer) {
    method readFrames (line 249) | readFrames(frames) {
    method getFrameCount (line 260) | getFrameCount() {
    method isEndOfChunk (line 263) | isEndOfChunk() {
    method startMs (line 266) | startMs() {
    method duration (line 269) | duration() {
    method payloadSize (line 272) | payloadSize() {
    method clearPayload (line 275) | clearPayload() {
    method addPayload (line 278) | addPayload(buffer) {
  class AudioStream (line 292) | class AudioStream {
    method constructor (line 293) | constructor(timeProvider, sampleFormat, bufferMs) {
    method setVolume (line 312) | setVolume(percent, muted) {
    method addChunk (line 318) | addChunk(chunk) {
    method getNextBuffer (line 334) | getNextBuffer(buffer, playTimeMs) {
  class TimeProvider (line 462) | class TimeProvider {
    method constructor (line 463) | constructor(ctx = undefined) {
    method setAudioContext (line 470) | setAudioContext(ctx) {
    method reset (line 474) | reset() {
    method setDiff (line 478) | setDiff(c2s, s2c) {
    method now (line 492) | now() {
    method nowSec (line 502) | nowSec() {
    method serverNow (line 505) | serverNow() {
    method serverTime (line 508) | serverTime(localTimeMs) {
  class SampleFormat (line 512) | class SampleFormat {
    method constructor (line 513) | constructor() {
    method msRate (line 518) | msRate() {
    method toString (line 521) | toString() {
    method sampleSize (line 524) | sampleSize() {
    method frameSize (line 530) | frameSize() {
    method durationMs (line 533) | durationMs(bytes) {
  class Decoder (line 537) | class Decoder {
    method setHeader (line 538) | setHeader(_buffer) {
    method decode (line 541) | decode(_chunk) {
  class OpusDecoder (line 545) | class OpusDecoder extends Decoder {
    method setHeader (line 546) | setHeader(buffer) {
    method decode (line 564) | decode(_chunk) {
  class FlacDecoder (line 568) | class FlacDecoder extends Decoder {
    method constructor (line 569) | constructor() {
    method decode (line 586) | decode(chunk) {
    method read_callback_fn (line 606) | read_callback_fn(bufferSize) {
    method write_callback_fn (line 624) | write_callback_fn(data, frameInfo) {
    method metadata_callback_fn (line 643) | metadata_callback_fn(data) {
    method error_callback_fn (line 652) | error_callback_fn(err, errMsg) {
    method setHeader (line 655) | setHeader(buffer) {
  class PlayBuffer (line 661) | class PlayBuffer {
    method constructor (line 662) | constructor(buffer, playTime, source, destination) {
    method start (line 671) | start() {
  class PcmDecoder (line 678) | class PcmDecoder extends Decoder {
    method setHeader (line 679) | setHeader(buffer) {
    method decode (line 687) | decode(chunk) {
  class SnapStream (line 691) | class SnapStream {
    method constructor (line 692) | constructor(baseUrl) {
    method setupAudioContext (line 715) | setupAudioContext() {
    method connect (line 737) | connect() {
    method onMessage (line 760) | onMessage(msg) {
    method sendMessage (line 832) | sendMessage(msg) {
    method syncTime (line 840) | syncTime() {
    method stopAudio (line 846) | stopAudio() {
    method stop (line 860) | stop() {
    method play (line 868) | play() {
    method playNext (line 874) | playNext() {

FILE: packages/addons/service/snapserver/source/default.py
  function systemctl (line 9) | def systemctl(command):
  class Monitor (line 14) | class Monitor(xbmc.Monitor):
    method __init__ (line 16) | def __init__(self, *args, **kwargs):
    method onSettingsChanged (line 19) | def onSettingsChanged(self):

FILE: packages/addons/service/syncthing/source/default.py
  class Monitor (line 9) | class Monitor(xbmc.Monitor):
    method __init__ (line 11) | def __init__(self, *args, **kwargs):
    method onSettingsChanged (line 15) | def onSettingsChanged(self):

FILE: packages/addons/service/tigervnc/source/default.py
  class Monitor (line 9) | class Monitor(xbmc.Monitor):
    method __init__ (line 11) | def __init__(self, *args, **kwargs):
    method onSettingsChanged (line 15) | def onSettingsChanged(self):

FILE: packages/addons/service/tinc/source/default.py
  class Monitor (line 9) | class Monitor(xbmc.Monitor):
    method __init__ (line 11) | def __init__(self, *args, **kwargs):
    method onSettingsChanged (line 15) | def onSettingsChanged(self):

FILE: packages/addons/service/touchscreen/source/calibrate.py
  class coordinates (line 28) | class coordinates:
  function server_thread (line 32) | def server_thread(conn, self):
  class ts_calibrate (line 60) | class ts_calibrate(xbmcgui.WindowDialog):
    method __init__ (line 61) | def __init__(self):
    method onAction (line 120) | def onAction(self, action):

FILE: packages/addons/service/touchscreen/source/lock-screen.py
  function handle_wait (line 13) | def handle_wait(time_to_wait, title, text):

FILE: packages/addons/service/ttyd/source/default.py
  class Monitor (line 9) | class Monitor(xbmc.Monitor):
    method __init__ (line 11) | def __init__(self, *args, **kwargs):
    method onSettingsChanged (line 15) | def onSettingsChanged(self):

FILE: packages/addons/service/tvheadend42/source/default.py
  class Monitor (line 9) | class Monitor(xbmc.Monitor):
    method __init__ (line 11) | def __init__(self, *args, **kwargs):
    method onSettingsChanged (line 15) | def onSettingsChanged(self):

FILE: packages/addons/service/tvheadend42/source/download.py
  class DownLoader (line 20) | class DownLoader():
    method __init__ (line 22) | def __init__(self):
    method download (line 25) | def download(self, url, dest):
    method _pbhook (line 55) | def _pbhook(self, numblocks, blocksize, filesize):

FILE: packages/addons/service/tvheadend43/source/default.py
  class Monitor (line 9) | class Monitor(xbmc.Monitor):
    method __init__ (line 11) | def __init__(self, *args, **kwargs):
    method onSettingsChanged (line 15) | def onSettingsChanged(self):

FILE: packages/addons/service/tvheadend43/source/download.py
  class DownLoader (line 20) | class DownLoader():
    method __init__ (line 22) | def __init__(self):
    method download (line 25) | def download(self, url, dest):
    method _pbhook (line 55) | def _pbhook(self, numblocks, blocksize, filesize):

FILE: packages/addons/service/vdr-addon/source/default.py
  class Monitor (line 9) | class Monitor(xbmc.Monitor):
    method __init__ (line 11) | def __init__(self, *args, **kwargs):
    method onSettingsChanged (line 15) | def onSettingsChanged(self):

FILE: packages/linux-firmware/intel-ucode/sources/intel-microcode2ucode.c
  type microcode_header_intel (line 25) | struct microcode_header_intel {
  type microcode_header_intel (line 39) | struct microcode_header_intel
  function main (line 44) | int main(int argc, char *argv[])

FILE: packages/mediacenter/kodi/scripts/xml_merge.py
  function printerr (line 11) | def printerr(*args, **kwargs):
  class hashabledict (line 14) | class hashabledict(dict):
    method __hash__ (line 15) | def __hash__(self):
  class XMLCombiner (line 18) | class XMLCombiner(object):
    method __init__ (line 19) | def __init__(self, filenames):
    method prettyPrint (line 31) | def prettyPrint(self, etree_xml):
    method combine (line 35) | def combine(self):
    method combine_element (line 40) | def combine_element(self, one, other):

FILE: packages/sx05re/emuelec-emulationstation/generate_es_systems.py
  function json_to_es_xml (line 6) | def json_to_es_xml(json_file, output_file, sort_key=None):
  function es_xml_to_json (line 91) | def es_xml_to_json(xml_file, output_file):
  function main (line 154) | def main():

FILE: packages/sx05re/emuelec-ports/sources/port_builder.py
  function meets_requirements (line 9) | def meets_requirements(data):

FILE: packages/sx05re/emuelec/bin/joy2key.py
  function ini_get (line 38) | def ini_get(key, cfg_file):
  function get_btn_num (line 49) | def get_btn_num(btn, cfg):
  function sysdev_get (line 56) | def sysdev_get(key, sysdev_path):
  function get_button_codes (line 63) | def get_button_codes(dev_path):
  function signal_handler (line 137) | def signal_handler(signum, frame):
  function get_hex_chars (line 146) | def get_hex_chars(key_str):
  function get_devices (line 152) | def get_devices():
  function open_devices (line 163) | def open_devices():
  function close_fds (line 176) | def close_fds(fds):
  function read_event (line 180) | def read_event(fd):
  function process_event (line 192) | def process_event(event):

FILE: packages/sx05re/emuelec/bin/scripts/scriptmodules/supplementary/bluetoothcontroller.py
  class Menu (line 9) | class Menu(object):
    method __init__ (line 10) | def __init__(self, items, stdscreen):
    method navigate (line 21) | def navigate(self, n):
    method display (line 28) | def display(self):
  class MyApp (line 64) | class MyApp(object):
    method __init__ (line 65) | def __init__(self, stdscreen):
    method make_menu (line 83) | def make_menu(self, menulist):
    method trust_controller_menu (line 86) | def trust_controller_menu(self):
    method trust_controller (line 102) | def trust_controller(self):
    method pair_controller_menu (line 110) | def pair_controller_menu(self):
    method pair_controller (line 127) | def pair_controller(self):
    method connect_device_menu (line 135) | def connect_device_menu(self):
    method connect_device (line 153) | def connect_device(self):
    method disconnect_device_menu (line 162) | def disconnect_device_menu(self):
    method disconnect_device (line 178) | def disconnect_device(self):
    method remove_device_menu (line 186) | def remove_device_menu(self):
    method remove_device (line 205) | def remove_device(self):
    method rescan_devices (line 210) | def rescan_devices(self):
    method get_selected_device (line 214) | def get_selected_device(self):
    method navigate_to_back (line 217) | def navigate_to_back(self):

FILE: packages/sx05re/emuelec/bin/scripts/setup/CMD_MAKER.py
  class MediaEntry (line 19) | class MediaEntry:
    method __init__ (line 20) | def __init__(self, system: str, media_name: str, brief: str, exts: Lis...
  class UserQuit (line 65) | class UserQuit(Exception):
  class GoBack (line 69) | class GoBack(Exception):
  function find_controller_device (line 73) | def find_controller_device() -> str:
  class ControllerInput (line 111) | class ControllerInput:
    method __init__ (line 113) | def __init__(self, preferred_path: Optional[str] = None):
    method wait_for_input (line 118) | def wait_for_input(self) -> str:
    method close (line 190) | def close(self):
  function wait_for_controller (line 197) | def wait_for_controller(preferred_path: Optional[str] = None) -> InputDe...
  function init_controller (line 231) | def init_controller(preferred_path: Optional[str] = None):
  function unblank_framebuffer (line 235) | def unblank_framebuffer() -> None:
  function clear_screen (line 243) | def clear_screen():
  function show_menu (line 248) | def show_menu(
  function select_from_list (line 294) | def select_from_list(title: str, items: List[str], info: str = "", visib...
  function confirm_dialog (line 351) | def confirm_dialog(title: str, message: str, default_yes: bool = True) -...
  function ok_dialog (line 373) | def ok_dialog(title: str, message: str) -> None:
  function back_exit_dialog (line 385) | def back_exit_dialog(title: str, message: str) -> str:
  function edit_command_line (line 405) | def edit_command_line(default_cmd: str) -> Optional[str]:
  function ask_file_filter (line 536) | def ask_file_filter(default_exts: List[str]) -> List[str]:
  function _read_listmedia_text (line 564) | def _read_listmedia_text(path: str) -> str:
  function parse_listmedia (line 577) | def parse_listmedia(path: str) -> Dict[str, List[MediaEntry]]:
  function browse_systems_paged (line 634) | def browse_systems_paged(all_systems: List[str], page_size: int = 20) ->...
  function choose_system (line 645) | def choose_system(systems: Dict[str, List[MediaEntry]]) -> str:
  function choose_media (line 673) | def choose_media(entries: List[MediaEntry]) -> MediaEntry:
  function choose_directory_interactive (line 691) | def choose_directory_interactive(prompt: str, start_dir: str = "/storage...
  function ask_directory_and_filter (line 726) | def ask_directory_and_filter(default_exts: List[str]) -> Tuple[str, List...
  function find_rom_files (line 756) | def find_rom_files(rom_dir: str, exts: List[str]) -> List[str]:
  function build_default_template_preset (line 779) | def build_default_template_preset(system: str, media: MediaEntry, extra_...
  function apply_template (line 788) | def apply_template(template: str, rom_path: str) -> str:
  function review_cmd (line 796) | def review_cmd(cmd_path: str, cmd_line: str, accept_all: bool) -> Tuple[...
  function write_cmd_file (line 840) | def write_cmd_file(cmd_path: str, cmd_line: str) -> None:
  function update_gamelist_paths (line 851) | def update_gamelist_paths(gamelist_path: str, rom_dir: str, rom_files: L...
  function maybe_update_gamelist (line 894) | def maybe_update_gamelist(rom_dir: str, rom_files: List[str]) -> None:
  function run_preset_mode (line 926) | def run_preset_mode(systems: Dict[str, List[MediaEntry]]) -> None:
  function run_custom_mode (line 1025) | def run_custom_mode() -> None:
  function main (line 1176) | def main() -> None:

FILE: packages/sx05re/emuelec/bin/scripts/setup/EKA_INSTALL.py
  class UserQuit (line 30) | class UserQuit(Exception):
  class GoBack (line 33) | class GoBack(Exception):
  class ControllerInput (line 41) | class ControllerInput:
    method __init__ (line 42) | def __init__(self, preferred_path: Optional[str] = None):
    method reconnect (line 49) | def reconnect(self):
    method wait_for_input (line 60) | def wait_for_input(self) -> str:
    method close (line 107) | def close(self):
  function wait_for_controller (line 114) | def wait_for_controller(preferred_path: Optional[str] = None) -> InputDe...
  function init_controller (line 150) | def init_controller(preferred_path: Optional[str] = None):
  function unblank_framebuffer (line 157) | def unblank_framebuffer():
  function clear_screen (line 165) | def clear_screen():
  function show_menu (line 172) | def show_menu(title: str, options: List[str], selected: int = 0,
  function select_from_list (line 193) | def select_from_list(title: str, items: List[str], info: str = "",
  function ok_dialog (line 228) | def ok_dialog(title: str, message: str) -> None:
  function confirm_dialog (line 238) | def confirm_dialog(title: str, message: str, default_yes: bool = True) -...
  function choose_directory_interactive (line 257) | def choose_directory_interactive(prompt: str, start_dir: str) -> str:
  function log (line 292) | def log(msg: str):
  function run_eka (line 300) | def run_eka(args: List[str], timeout: int = 120) -> int:
  function run_eka_capture (line 316) | def run_eka_capture(args: List[str], timeout: int = 120) -> Tuple[int, s...
  function eka_success (line 345) | def eka_success(ret: int) -> bool:
  function parse_listdevices_output (line 352) | def parse_listdevices_output(output: str) -> List[Tuple[int, str]]:
  function get_current_device_index (line 362) | def get_current_device_index() -> Optional[int]:
  function set_device_index (line 378) | def set_device_index(index: int) -> None:
  function change_device (line 411) | def change_device():
  function is_within_path (line 467) | def is_within_path(path: str, base: str) -> bool:
  function compute_lowercase_path (line 474) | def compute_lowercase_path(path: str) -> str:
  function collect_lowercase_rename_ops (line 480) | def collect_lowercase_rename_ops(root: str) -> Tuple[List[Tuple[str, str...
  function convert_tree_to_lowercase (line 517) | def convert_tree_to_lowercase(root_path):
  function convert_device_paths_to_lowercase (line 601) | def convert_device_paths_to_lowercase():
  function install_firmware (line 691) | def install_firmware():
  function find_sis_files_recursive (line 761) | def find_sis_files_recursive(root_dir: str) -> List[str]:
  function get_relative_path (line 771) | def get_relative_path(path: str, base: str) -> str:
  function parse_listapp_to_map (line 779) | def parse_listapp_to_map(output: str) -> dict:
  function get_installed_apps_map (line 786) | def get_installed_apps_map() -> dict:
  function find_new_app_after_install (line 793) | def find_new_app_after_install(before_apps: dict, after_apps: dict) -> O...
  function find_graphic_in_same_folder (line 814) | def find_graphic_in_same_folder(folder: str) -> Optional[str]:
  function copy_matching_image_for_uid (line 832) | def copy_matching_image_for_uid(source_folder: str, app_name: str, uid_o...
  function install_sis (line 853) | def install_sis():
  function parse_listapp_output (line 988) | def parse_listapp_output(output: str) -> List[Tuple[str, str]]:
  function sanitize_uid_name (line 1000) | def sanitize_uid_name(name: str) -> str:
  function is_system_app (line 1011) | def is_system_app(name: str) -> bool:
  function build_uid_candidates (line 1027) | def build_uid_candidates(apps: List[Tuple[str, str]]) -> Tuple[List[Tupl...
  function show_multi_select_menu (line 1055) | def show_multi_select_menu(title: str, options: List[str], checked: set,...
  function select_multiple_from_list (line 1077) | def select_multiple_from_list(title: str, items: List[str], info: str = "",
  function show_available_uid_apps (line 1118) | def show_available_uid_apps(candidates: List[Tuple[str, str]]) -> None:
  function show_generated_uid_list (line 1161) | def show_generated_uid_list(created_entries: List[Tuple[str, str, str]],...
  function write_uid_files (line 1202) | def write_uid_files(selected_apps: List[Tuple[str, str]], out_dir: str) ...
  function xml_escape (line 1223) | def xml_escape(text: str) -> str:
  function create_uid_gamelist (line 1231) | def create_uid_gamelist():
  function create_uid_launchers (line 1294) | def create_uid_launchers():
  function _create_default_config (line 1444) | def _create_default_config():
  function _seed_bundled_files (line 1457) | def _seed_bundled_files():
  function _autoset_device_from_zdrive (line 1493) | def _autoset_device_from_zdrive():
  function _import_preconfigured (line 1550) | def _import_preconfigured():
  function first_run_setup (line 1617) | def first_run_setup():
  function main (line 1621) | def main():

FILE: packages/sx05re/emuelec/bin/scripts/setup/macrorun.py
  function load_config (line 12) | def load_config():
  function wait_for_controller (line 36) | def wait_for_controller(preferred_path=None):
  function clear_console (line 55) | def clear_console():
  function controller_menu (line 58) | def controller_menu(dev, title, options):
  function run_macro_mode (line 81) | def run_macro_mode(dev, macro):
  function already_running (line 114) | def already_running():
  function daemonize (line 123) | def daemonize(dev_path, macro):
  function main (line 167) | def main():

FILE: packages/sx05re/emuelec/bin/scripts/setup/macrosetup.py
  function map_controller_to_key (line 25) | def map_controller_to_key(code):
  function ensure_config_dir (line 43) | def ensure_config_dir():
  function load_config (line 47) | def load_config():
  function save_config (line 69) | def save_config(data):
  function wait_for_controller (line 76) | def wait_for_controller(preferred_path=None):
  function clear_console (line 98) | def clear_console():
  function controller_menu (line 102) | def controller_menu(dev, title, options, allow_cancel=False):
  function enter_macro_name (line 138) | def enter_macro_name(dev, default_name):
  function record_trigger_button (line 199) | def record_trigger_button(dev):
  function record_macro_sequence (line 209) | def record_macro_sequence(dev, trigger_code):
  function main (line 236) | def main():

FILE: packages/sx05re/emulators/dosbox-x/include/gpio.h
  type gpiochip_info (line 23) | struct gpiochip_info {
  type gpioline_info (line 48) | struct gpioline_info {
  type gpiohandle_request (line 87) | struct gpiohandle_request {
  type gpiohandle_data (line 102) | struct gpiohandle_data {
  type gpioevent_request (line 128) | struct gpioevent_request {
  type gpioevent_data (line 147) | struct gpioevent_data {

FILE: packages/sx05re/emulators/ikemen-go/sdlgamepadmap/src/sdl_gamepadmap.c
  type UI_Context (line 32) | typedef struct {
  function drawText (line 41) | void drawText(UI_Context *ui, const char *text, int x, int y, TTF_Font *...
  function drawTextCentered (line 51) | void drawTextCentered(UI_Context *ui, const char *text, int y, TTF_Font ...
  function drawRoundedRect (line 62) | void drawRoundedRect(SDL_Renderer *ren, int x, int y, int w, int h, int ...
  function drawArrow (line 74) | void drawArrow(SDL_Renderer *ren, int x, int y, int size, int direction) {
  function drawButton (line 109) | void drawButton(UI_Context *ui, const char *name, int x, int y, int pres...
  function drawGamepadLayout (line 138) | void drawGamepadLayout(UI_Context *ui, int current_button, int pressed_b...
  function saveMapping (line 167) | void saveMapping(const char *path, int js_id, char button_values[NUM_BUT...
  function main (line 194) | int main(int argc, char *argv[]) {

FILE: packages/sx05re/tools/sysutils/ee_utils/sources/ee_asd.c
  function check_debug_mode (line 31) | static int check_debug_mode() {
  function log_msg (line 46) | static void log_msg(const char *level, const char *fmt, ...) {
  function cleanup (line 68) | static void cleanup(int signum) {
  function perform_action (line 73) | static void perform_action(const char *action) {
  function is_relevant_device (line 86) | static int is_relevant_device(const char *path) {
  function is_motion_sensor_event (line 105) | static int is_motion_sensor_event(struct input_event *ev) {
  function open_input_devices (line 128) | static int open_input_devices(struct pollfd *pfds, int max_devices) {
  function read_timer_from_ees (line 162) | static int read_timer_from_ees() {
  function set_low_priority (line 171) | static void set_low_priority() {
  function main (line 182) | int main(int argc, char *argv[]) {

FILE: packages/sx05re/tools/sysutils/ee_utils/sources/ees.c
  type Entry (line 36) | typedef struct Entry {
  type HashMap (line 42) | typedef struct {
  function hash (line 47) | unsigned int hash(const char *str) {
  function HashMap (line 56) | HashMap* hashmap_create() {
  function hashmap_put (line 73) | void hashmap_put(HashMap *map, const char *key, const char *value) {
  function parse_line (line 109) | int parse_line(char *line, char *key, char *value) {
  function load_config (line 143) | int load_config(const char *filename, HashMap *map) {
  function write_config (line 163) | int write_config(const char *filename, HashMap *map) {
  function hashmap_free (line 195) | void hashmap_free(HashMap *map) {
  function parse_ee_line (line 228) | int parse_ee_line(char *line, char *platform, char *rom, char *key, char...
  function cmd_ee_read (line 301) | int cmd_ee_read(const char *setting_key, const char *platform_name, cons...
  function cmd_ee_set (line 376) | int cmd_ee_set(const char *setting_key, const char *setting_value,
  function cmd_set (line 506) | int cmd_set(const char *key, const char *value, const char *output_file) {
  function cmd_read (line 529) | int cmd_read(const char *key, const char *input_file) {
  function cmd_merge (line 554) | int cmd_merge(const char *changes_file, const char *output_file) {
  function print_usage (line 589) | void print_usage(const char *prog) {
  function main (line 610) | int main(int argc, char *argv[]) {

FILE: packages/sx05re/tools/sysutils/evdev_tools/sources/evkill.c
  function set_bit (line 19) | void set_bit(char *mem, int key) {
  function clr_bit (line 24) | void clr_bit(char *mem, int key) {
  type option (line 29) | struct option
  type dirent (line 39) | struct dirent
  function main (line 57) | int main(int argc, char* argv[])

FILE: packages/sx05re/tools/sysutils/evdev_tools/sources/evtest.c
  function main (line 275) | int main (int argc, char **argv)

FILE: packages/sx05re/tools/sysutils/evdev_tools/sources/remap.c
  function remap (line 12) | void remap(int src, int dst) {
  function main (line 90) | int main(int argc, char *argv[])

FILE: packages/sx05re/tools/sysutils/evdev_tools/sources/send.c
  function main (line 15) | int main(int argc, char *argv[])

FILE: packages/sx05re/tools/sysutils/fbfix/sources/fbfix.c
  function main (line 13) | int main(int argc, char *argv[])

FILE: packages/sx05re/tools/sysutils/sdlterm/sources/sdlterm.cpp
  function read_script_output (line 18) | void read_script_output(const std::string& cmd) {
  function draw_filled_circle (line 61) | void draw_filled_circle(SDL_Renderer* renderer, int cx, int cy, int radi...
  function main (line 68) | int main(int argc, char* argv[]) {

FILE: packages/sx05re/tools/unused/fbpad/sources/conf.h
  type fbval_t (line 17) | typedef unsigned int fbval_t;

FILE: packages/sx05re/tools/unused/fbpad/sources/draw.c
  type fb_var_screeninfo (line 15) | struct fb_var_screeninfo
  type fb_fix_screeninfo (line 16) | struct fb_fix_screeninfo
  function fb_len (line 23) | static int fb_len(void)
  function fb_cmap_save (line 28) | static void fb_cmap_save(int save)
  function fb_cmap (line 43) | void fb_cmap(void)
  function fb_mode (line 68) | unsigned fb_mode(void)
  function init_colors (line 75) | static void init_colors(void)
  function fb_init (line 88) | int fb_init(char *dev)
  function fb_free (line 123) | void fb_free(void)
  function fb_rows (line 130) | int fb_rows(void)
  function fb_cols (line 135) | int fb_cols(void)
  function fb_val (line 145) | unsigned fb_val(int r, int g, int b)

FILE: packages/sx05re/tools/video/gl4es/axe11/X11/X.h
  type XID (line 66) | typedef unsigned long XID;
  type Mask (line 70) | typedef unsigned long Mask;
  type Atom (line 74) | typedef unsigned long Atom;
  type VisualID (line 76) | typedef unsigned long VisualID;
  type Time (line 77) | typedef unsigned long Time;
  type CARD32 (line 82) | typedef CARD32 XID;
  type CARD32 (line 86) | typedef CARD32 Mask;
  type CARD32 (line 90) | typedef CARD32 Atom;
  type CARD32 (line 92) | typedef CARD32 VisualID;
  type CARD32 (line 93) | typedef CARD32 Time;
  type XID (line 96) | typedef XID Window;
  type XID (line 97) | typedef XID Drawable;
  type XID (line 100) | typedef XID Font;
  type XID (line 102) | typedef XID Pixmap;
  type XID (line 103) | typedef XID Cursor;
  type XID (line 104) | typedef XID Colormap;
  type XID (line 105) | typedef XID GContext;
  type XID (line 106) | typedef XID KeySym;
  type KeyCode (line 108) | typedef unsigned char KeyCode;

FILE: packages/sx05re/tools/video/gl4es/axe11/X11/Xdefs.h
  type Atom (line 38) | typedef unsigned long Atom;
  type CARD32 (line 40) | typedef CARD32 Atom;
  type Bool (line 47) | typedef int Bool;
  type _Client (line 57) | struct _Client
  type XID (line 64) | typedef unsigned long XID;
  type CARD32 (line 66) | typedef CARD32 XID;
  type Mask (line 73) | typedef unsigned long Mask;
  type CARD32 (line 75) | typedef CARD32 Mask;
  type _Font (line 81) | struct _Font
  type XID (line 86) | typedef XID	Font;
  type FSID (line 91) | typedef unsigned long FSID;
  type CARD32 (line 93) | typedef CARD32 FSID;
  type FSID (line 97) | typedef FSID AccContext;
  type timeval (line 101) | struct timeval

FILE: packages/sx05re/tools/video/gl4es/axe11/X11/Xlib.h
  type wchar_t (line 57) | typedef unsigned long wchar_t;
  type XExtData (line 156) | typedef struct _XExtData {
  type XExtCodes (line 168) | typedef struct {		/* public to extension, cannot be changed */
  type XPixmapFormatValues (line 179) | typedef struct {
  type XGCValues (line 189) | typedef struct {
  type _XGC (line 222) | struct _XGC
  type Visual (line 235) | typedef struct {
  type Depth (line 251) | typedef struct {
  type _XDisplay (line 263) | struct _XDisplay
  type Screen (line 265) | typedef struct {
  type ScreenFormat (line 288) | typedef struct {
  type XSetWindowAttributes (line 298) | typedef struct {
  type XWindowAttributes (line 316) | typedef struct {
  type XHostAddress (line 349) | typedef struct {
  type XServerInterpretedAddress (line 358) | typedef struct {
  type XImage (line 368) | typedef struct _XImage {
  type XWindowChanges (line 407) | typedef struct {
  type XColor (line 418) | typedef struct {
  type XSegment (line 430) | typedef struct {
  type XPoint (line 434) | typedef struct {
  type XRectangle (line 438) | typedef struct {
  type XArc (line 443) | typedef struct {
  type XKeyboardControl (line 452) | typedef struct {
  type XKeyboardState (line 465) | typedef struct {
  type XTimeCoord (line 476) | typedef struct {
  type XModifierKeymap (line 483) | typedef struct {
  type Display (line 495) | typedef struct _XDisplay Display;
  type _XPrivate (line 498) | struct _XPrivate
  type _XrmHashBucketRec (line 499) | struct _XrmHashBucketRec
  type _XDisplay (line 501) | typedef struct
  type _XPrivate (line 507) | struct _XPrivate
  type _XDisplay (line 518) | struct _XDisplay
  type _XPrivate (line 528) | struct _XPrivate
  type _XrmHashBucketRec (line 537) | struct _XrmHashBucketRec
  type _XDisplay (line 539) | struct _XDisplay
  type XKeyEvent (line 565) | typedef struct {
  type XKeyEvent (line 580) | typedef XKeyEvent XKeyPressedEvent;
  type XKeyEvent (line 581) | typedef XKeyEvent XKeyReleasedEvent;
  type XButtonEvent (line 583) | typedef struct {
  type XButtonEvent (line 598) | typedef XButtonEvent XButtonPressedEvent;
  type XButtonEvent (line 599) | typedef XButtonEvent XButtonReleasedEvent;
  type XMotionEvent (line 601) | typedef struct {
  type XMotionEvent (line 616) | typedef XMotionEvent XPointerMovedEvent;
  type XCrossingEvent (line 618) | typedef struct {
  type XCrossingEvent (line 639) | typedef XCrossingEvent XEnterWindowEvent;
  type XCrossingEvent (line 640) | typedef XCrossingEvent XLeaveWindowEvent;
  type XFocusChangeEvent (line 642) | typedef struct {
  type XFocusChangeEvent (line 657) | typedef XFocusChangeEvent XFocusInEvent;
  type XFocusChangeEvent (line 658) | typedef XFocusChangeEvent XFocusOutEvent;
  type XKeymapEvent (line 661) | typedef struct {
  type XExposeEvent (line 670) | typedef struct {
  type XGraphicsExposeEvent (line 681) | typedef struct {
  type XNoExposeEvent (line 694) | typedef struct {
  type XVisibilityEvent (line 704) | typedef struct {
  type XCreateWindowEvent (line 713) | typedef struct {
  type XDestroyWindowEvent (line 726) | typedef struct {
  type XUnmapEvent (line 735) | typedef struct {
  type XMapEvent (line 745) | typedef struct {
  type XMapRequestEvent (line 755) | typedef struct {
  type XReparentEvent (line 764) | typedef struct {
  type XConfigureEvent (line 776) | typedef struct {
  type XGravityEvent (line 790) | typedef struct {
  type XResizeRequestEvent (line 800) | typedef struct {
  type XConfigureRequestEvent (line 809) | typedef struct {
  type XCirculateEvent (line 824) | typedef struct {
  type XCirculateRequestEvent (line 834) | typedef struct {
  type XPropertyEvent (line 844) | typedef struct {
  type XSelectionClearEvent (line 855) | typedef struct {
  type XSelectionRequestEvent (line 865) | typedef struct {
  type XSelectionEvent (line 878) | typedef struct {
  type XColormapEvent (line 890) | typedef struct {
  type XClientMessageEvent (line 905) | typedef struct {
  type XMappingEvent (line 920) | typedef struct {
  type XErrorEvent (line 932) | typedef struct {
  type XAnyEvent (line 942) | typedef struct {
  type XGenericEvent (line 956) | typedef struct
  type XGenericEventCookie (line 966) | typedef struct {
  type XEvent (line 981) | typedef union _XEvent {
  type XCharStruct (line 1025) | typedef struct {
  type XFontProp (line 1038) | typedef struct {
  type XFontStruct (line 1043) | typedef struct {
  type XTextItem (line 1065) | typedef struct {
  type XChar2b (line 1072) | typedef struct {		/* normal 16 bit characters are two bytes */
  type XTextItem16 (line 1077) | typedef struct {
  type XEDataObject (line 1085) | typedef union { Display *display;
  type XFontSetExtents (line 1092) | typedef struct {
  type _XOM (line 1101) | struct _XOM
  type _XOC (line 1102) | struct _XOC
  type XmbTextItem (line 1104) | typedef struct {
  type XwcTextItem (line 1111) | typedef struct {
  type XOMCharSetList (line 1129) | typedef struct {
  type XOrientation (line 1134) | typedef enum {
  type XOMOrientation (line 1142) | typedef struct {
  type XOMFontInfo (line 1147) | typedef struct {
  type _XIM (line 1153) | struct _XIM
  type _XIC (line 1154) | struct _XIC
  type Bool (line 1162) | typedef Bool (*XICProc)(
  type XIMStyle (line 1174) | typedef unsigned long XIMStyle;
  type XIMStyles (line 1176) | typedef struct {
  type XIMCallback (line 1243) | typedef struct {
  type XICCallback (line 1248) | typedef struct {
  type XIMFeedback (line 1253) | typedef unsigned long XIMFeedback;
  type XIMText (line 1265) | typedef struct _XIMText {
  type XIMPreeditState (line 1275) | typedef	unsigned long	 XIMPreeditState;
  type XIMPreeditStateNotifyCallbackStruct (line 1281) | typedef	struct	_XIMPreeditStateNotifyCallbackStruct {
  type XIMResetState (line 1285) | typedef	unsigned long	 XIMResetState;
  type XIMStringConversionFeedback (line 1290) | typedef unsigned long XIMStringConversionFeedback;
  type XIMStringConversionText (line 1299) | typedef struct _XIMStringConversionText {
  type XIMStringConversionPosition (line 1309) | typedef	unsigned short	XIMStringConversionPosition;
  type XIMStringConversionType (line 1311) | typedef	unsigned short	XIMStringConversionType;
  type XIMStringConversionOperation (line 1318) | typedef	unsigned short	XIMStringConversionOperation;
  type XIMCaretDirection (line 1323) | typedef enum {
  type XIMStringConversionCallbackStruct (line 1333) | typedef struct _XIMStringConversionCallbackStruct {
  type XIMPreeditDrawCallbackStruct (line 1341) | typedef struct _XIMPreeditDrawCallbackStruct {
  type XIMCaretStyle (line 1348) | typedef enum {
  type XIMPreeditCaretCallbackStruct (line 1354) | typedef struct _XIMPreeditCaretCallbackStruct {
  type XIMStatusDataType (line 1360) | typedef enum {
  type XIMStatusDrawCallbackStruct (line 1365) | typedef struct _XIMStatusDrawCallbackStruct {
  type XIMHotKeyTrigger (line 1373) | typedef struct _XIMHotKeyTrigger {
  type XIMHotKeyTriggers (line 1379) | typedef struct _XIMHotKeyTriggers {
  type XIMHotKeyState (line 1384) | typedef	unsigned long	 XIMHotKeyState;
  type XIMValuesList (line 1389) | typedef struct {
  type _XExtData (line 1957) | struct _XExtData
  type _XrmHashBucketRec (line 3567) | struct _XrmHashBucketRec
  type _XrmHashBucketRec (line 3836) | struct _XrmHashBucketRec
  type _XrmHashBucketRec (line 3941) | struct _XrmHashBucketRec
  type _XrmHashBucketRec (line 3950) | struct _XrmHashBucketRec

FILE: packages/sx05re/tools/video/gl4es/axe11/X11/Xmd.h
  type INT64 (line 97) | typedef long INT64;
  type INT32 (line 98) | typedef int INT32;
  type INT32 (line 100) | typedef long INT32;
  type INT16 (line 102) | typedef short INT16;
  type INT8 (line 104) | typedef signed char    INT8;
  type CARD64 (line 107) | typedef unsigned long CARD64;
  type CARD32 (line 108) | typedef unsigned int CARD32;
  type CARD64 (line 110) | typedef unsigned long long CARD64;
  type CARD32 (line 111) | typedef unsigned long CARD32;
  type CARD16 (line 113) | typedef unsigned short CARD16;
  type CARD8 (line 114) | typedef unsigned char  CARD8;
  type CARD32 (line 116) | typedef CARD32		BITS32;
  type CARD16 (line 117) | typedef CARD16		BITS16;
  type CARD8 (line 119) | typedef CARD8		BYTE;
  type CARD8 (line 120) | typedef CARD8		BOOL;

FILE: packages/sx05re/tools/video/gl4es/axe11/X11/Xutil.h
  type XSizeHints (line 73) | typedef struct {
  type XWMHints (line 111) | typedef struct {
  type XTextProperty (line 155) | typedef struct {
  type XICCEncodingStyle (line 166) | typedef enum {
  type XIconSize (line 175) | typedef struct {
  type XClassHint (line 181) | typedef struct {
  type XComposeStatus (line 223) | typedef struct _XComposeStatus {
  type _XRegion (line 265) | struct _XRegion
  type XVisualInfo (line 279) | typedef struct {
  type XStandardColormap (line 312) | typedef struct {
  type XContext (line 349) | typedef int XContext;

FILE: packages/sx05re/tools/video/gl4es/axe11/X11/extensions/Xrandr.h
  type XID (line 40) | typedef XID RRCrtc;
  type XID (line 41) | typedef XID RRMode;
  type XID (line 42) | typedef XID RRProvider;
  type XRRScreenSize (line 44) | typedef struct {
  type XRRScreenChangeNotifyEvent (line 53) | typedef struct {
  type XRRNotifyEvent (line 71) | typedef struct {
  type XRROutputChangeNotifyEvent (line 80) | typedef struct {
  type XRRCrtcChangeNotifyEvent (line 95) | typedef struct {
  type XRROutputPropertyNotifyEvent (line 109) | typedef struct {
  type XRRProviderChangeNotifyEvent (line 122) | typedef struct {
  type XRRProviderPropertyNotifyEvent (line 134) | typedef struct {
  type XRRResourceChangeNotifyEvent (line 147) | typedef struct {
  type XRRScreenConfiguration (line 158) | typedef struct _XRRScreenConfiguration XRRScreenConfiguration;
  type XRRModeFlags (line 247) | typedef unsigned long XRRModeFlags;
  type XRRModeInfo (line 249) | typedef struct _XRRModeInfo {
  type XRRScreenResources (line 266) | typedef struct _XRRScreenResources {
  type XRROutputInfo (line 283) | typedef struct _XRROutputInfo {
  type XRRPropertyInfo (line 310) | typedef struct {
  type XRRCrtcInfo (line 361) | typedef struct _XRRCrtcInfo {
  type XRRCrtcGamma (line 394) | typedef struct _XRRCrtcGamma {
  type XRRCrtcTransformAttributes (line 426) | typedef struct _XRRCrtcTransformAttributes {
  type XRRPanning (line 453) | typedef struct _XRRPanning {
  type XRRProviderResources (line 490) | typedef struct _XRRProviderResources {
  type XRRProviderInfo (line 502) | typedef struct _XRRProviderInfo {
  type XRRMonitorInfo (line 556) | typedef struct _XRRMonitorInfo {

FILE: packages/sx05re/tools/video/gl4es/axe11/X11/extensions/Xrender.h
  type XRenderDirectFormat (line 35) | typedef struct {
  type XRenderPictFormat (line 46) | typedef struct {
  type XRenderPictureAttributes (line 67) | typedef struct _XRenderPictureAttributes {
  type XRenderColor (line 83) | typedef struct {
  type XGlyphInfo (line 90) | typedef struct _XGlyphInfo {
  type XGlyphElt8 (line 99) | typedef struct _XGlyphElt8 {
  type XGlyphElt16 (line 107) | typedef struct _XGlyphElt16 {
  type XGlyphElt32 (line 115) | typedef struct _XGlyphElt32 {
  type XDouble (line 123) | typedef double	XDouble;
  type XPointDouble (line 125) | typedef struct _XPointDouble {
  type XFixed (line 132) | typedef int XFixed;
  type XPointFixed (line 134) | typedef struct _XPointFixed {
  type XLineFixed (line 138) | typedef struct _XLineFixed {
  type XTriangle (line 142) | typedef struct _XTriangle {
  type XCircle (line 146) | typedef struct _XCircle {
  type XTrapezoid (line 152) | typedef struct _XTrapezoid {
  type XTransform (line 157) | typedef struct _XTransform {
  type XFilters (line 161) | typedef struct _XFilters {
  type XIndexValue (line 168) | typedef struct _XIndexValue {
  type XAnimCursor (line 173) | typedef struct _XAnimCursor {
  type XSpanFix (line 178) | typedef struct _XSpanFix {
  type XTrap (line 182) | typedef struct _XTrap {
  type XLinearGradient (line 186) | typedef struct _XLinearGradient {
  type XRadialGradient (line 191) | typedef struct _XRadialGradient {
  type XConicalGradient (line 196) | typedef struct _XConicalGradient {

FILE: packages/sx05re/tools/video/gl4es/axe11/X11/extensions/randr.h
  type Rotation (line 32) | typedef unsigned short	Rotation;
  type SizeID (line 33) | typedef unsigned short	SizeID;
  type SubpixelOrder (line 34) | typedef unsigned short	SubpixelOrder;
  type Connection (line 35) | typedef unsigned short	Connection;
  type XRandrRotation (line 36) | typedef unsigned short	XRandrRotation;
  type XRandrSizeID (line 37) | typedef unsigned short	XRandrSizeID;
  type XRandrSubpixelOrder (line 38) | typedef unsigned short	XRandrSubpixelOrder;
  type XRandrModeFlags (line 39) | typedef unsigned long	XRandrModeFlags;

FILE: packages/sx05re/tools/video/gl4es/axe11/X11/extensions/render.h
  type XID (line 31) | typedef XID		Glyph;
  type XID (line 32) | typedef XID		GlyphSet;
  type XID (line 33) | typedef XID		Picture;
  type XID (line 34) | typedef XID		PictFormat;

FILE: packages/sx05re/tools/video/gl4es/axe11/X11/extensions/xf86vmode.h
  type XF86VidModeModeLine (line 68) | typedef struct {
  type XF86VidModeModeInfo (line 88) | typedef struct {
  type XF86VidModeSyncRange (line 109) | typedef struct {
  type XF86VidModeMonitor (line 114) | typedef struct {
  type XF86VidModeNotifyEvent (line 124) | typedef struct {
  type XF86VidModeGamma (line 136) | typedef struct {

FILE: packages/sx05re/tools/vksdl/virtual_keyboard.cpp
  type Key (line 72) | struct Key {
    method Key (line 80) | Key(int x, int y, int w, int h, char p, char s, int kc, int pkc, const...
  function detect_resolution_and_scale (line 104) | void detect_resolution_and_scale() {
  function setup_uinput (line 173) | int setup_uinput() {
  function send_key_event (line 199) | void send_key_event(int keycode, bool pressed) {
  function update_preview (line 213) | void update_preview() {
  function create_keyboard_layout (line 219) | void create_keyboard_layout() {
  function update_key_display (line 280) | void update_key_display() {
  function render_key (line 298) | void render_key(const Key& key) {
  function handle_key_action (line 356) | void handle_key_action(int index, bool press) {
  function navigate_keys (line 438) | void navigate_keys(int dir) {
  function handle_analog_movement (line 473) | void handle_analog_movement(float x, float y) {
  function load_font (line 492) | bool load_font() {
  function init_system (line 516) | bool init_system() {
  function cleanup (line 543) | void cleanup() {
  function main (line 557) | int main() {

FILE: packages/sysutils/wait-time-sync/sources/wait-time-sync.c
  function usage (line 14) | void usage(char *name)
  function main (line 23) | int main(int argc, char** argv)

FILE: packages/x11/driver/xf86-video-nvidia/scripts/compare_nvidia.py
  function id_in_version (line 28) | def id_in_version(id, ids):

FILE: projects/Amlogic-ce/devices/Amlogic-no/packages/addons/service/aml-vnc/source/default.py
  class Monitor (line 8) | class Monitor(xbmc.Monitor):
    method __init__ (line 9) | def __init__(self, *args, **kwargs):
    method onSettingsChanged (line 13) | def onSettingsChanged(self):

FILE: projects/Amlogic-ce/devices/Amlogic-no/packages/addons/service/homatics-leds/source/default.py
  function build_url (line 21) | def build_url(query):

FILE: projects/Amlogic-ce/devices/Amlogic-no/packages/addons/service/homatics-leds/source/service.py
  function myLog (line 14) | def myLog(msg, level = xbmc.LOGINFO):
  function write_sysfs (line 18) | def write_sysfs(which, data):
  function led_on (line 24) | def led_on(pos, pos_min, pos_max, color):
  class myEffectThread (line 44) | class myEffectThread(Thread):
    method __init__ (line 45) | def __init__(self, color, run_daemon_mode = False):
    method stop_event_is_set (line 52) | def stop_event_is_set(self):
    method stop (line 62) | def stop(self):
    method stop_and_join (line 65) | def stop_and_join(self):
    method run (line 73) | def run(self):
  function setup (line 99) | def setup():
  function set_solid (line 120) | def set_solid():
  function color_name_to_hex (line 158) | def color_name_to_hex(color):
  class xbmcMonitor (line 177) | class xbmcMonitor(xbmc.Monitor):
    method __init__ (line 178) | def __init__(self, thread):
    method onSettingsChanged (line 182) | def onSettingsChanged(self):
    method onNotification (line 190) | def onNotification(self, sender, method, data):

FILE: projects/Amlogic-ce/devices/Amlogic-no/packages/linux-drivers/amlogic/wifi_dummy-aml/sources/wifi_dummy.c
  function device_enabled (line 31) | static bool device_enabled(const char *path, const char *prefix)
  function wifi_dummy_init (line 68) | static int __init wifi_dummy_init(void)
  function wifi_dummy_cleanup (line 123) | static void __exit wifi_dummy_cleanup(void)

FILE: projects/Amlogic-ce/devices/Amlogic-no/packages/mediacenter/kodi/scripts/xml_merge.py
  function printerr (line 11) | def printerr(*args, **kwargs):
  class hashabledict (line 14) | class hashabledict(dict):
    method __hash__ (line 15) | def __hash__(self):
  class XMLCombiner (line 18) | class XMLCombiner(object):
    method __init__ (line 19) | def __init__(self, filenames):
    method prettyPrint (line 31) | def prettyPrint(self, etree_xml):
    method combine (line 35) | def combine(self):
    method combine_element (line 40) | def combine_element(self, one, other):

FILE: projects/Amlogic-ce/devices/Amlogic-no/packages/multimedia/obu_util/sources/aom_codec.h
  type aom_codec_err_t (line 155) | typedef enum {
  type aom_codec_caps_t (line 217) | typedef long aom_codec_caps_t;
  type aom_codec_flags_t (line 228) | typedef long aom_codec_flags_t;
  type aom_codec_pts_t (line 235) | typedef int64_t aom_codec_pts_t;
  type aom_codec_iface_t (line 254) | typedef const struct aom_codec_iface aom_codec_iface_t;
  type aom_codec_priv_t (line 261) | typedef struct aom_codec_priv aom_codec_priv_t;
  type aom_codec_frame_flags_t (line 270) | typedef uint32_t aom_codec_frame_flags_t;
  type aom_codec_ctx_t (line 298) | typedef struct aom_codec_ctx {
  type aom_bit_depth_t (line 318) | typedef enum aom_bit_depth {
  type aom_superblock_size_t (line 330) | typedef enum aom_superblock_size {
  type typ (line 537) | typedef typ aom_codec_control_type_##id;
  type OBU_TYPE (line 541) | typedef enum ATTRIBUTE_PACKED {
  type OBU_METADATA_TYPE (line 554) | typedef enum {

FILE: projects/Amlogic-ce/devices/Amlogic-no/packages/multimedia/obu_util/sources/aom_image.h
  type aom_img_fmt_t (line 41) | typedef enum aom_img_fmt {
  type aom_color_primaries_t (line 58) | typedef enum aom_color_primaries {
  type aom_transfer_characteristics_t (line 79) | typedef enum aom_transfer_characteristics {
  type aom_matrix_coefficients_t (line 104) | typedef enum aom_matrix_coefficients {
  type aom_color_range_t (line 126) | typedef enum aom_color_range {
  type aom_chroma_sample_position_t (line 132) | typedef enum aom_chroma_sample_position {
  type aom_metadata_insert_flags_t (line 153) | typedef enum aom_metadata_insert_flags {
  type aom_metadata_array_t (line 160) | typedef struct aom_metadata_array aom_metadata_array_t;
  type aom_metadata_t (line 163) | typedef struct aom_metadata {
  type aom_image_t (line 171) | typedef struct aom_image {

FILE: projects/Amlogic-ce/devices/Amlogic-no/packages/multimedia/obu_util/sources/aom_integer.c
  function aom_uleb_size_in_bytes (line 23) | size_t aom_uleb_size_in_bytes(uint64_t value) {
  function aom_uleb_decode (line 31) | int aom_uleb_decode(const uint8_t *buffer, size_t available, uint64_t *v...
  function aom_uleb_encode (line 58) | int aom_uleb_encode(uint64_t value, size_t available, uint8_t *coded_value,
  function aom_uleb_encode_fixed_size (line 79) | int aom_uleb_encode_fixed_size(uint64_t value, size_t available,

FILE: projects/Amlogic-ce/devices/Amlogic-no/packages/multimedia/obu_util/sources/bitops.h
  function INLINE (line 40) | static INLINE int get_msb(unsigned int n) {
  function INLINE (line 47) | static INLINE int get_msb(unsigned int n) {
  function INLINE (line 55) | static INLINE int get_msb(unsigned int n) {

FILE: projects/Amlogic-ce/devices/Amlogic-no/packages/multimedia/obu_util/sources/bitreader_buffer.c
  function aom_rb_bytes_read (line 20) | size_t aom_rb_bytes_read(const struct aom_read_bit_buffer *rb) {
  function aom_rb_read_bit (line 24) | int aom_rb_read_bit(struct aom_read_bit_buffer *rb) {
  function aom_rb_read_literal (line 38) | int aom_rb_read_literal(struct aom_read_bit_buffer *rb, int bits) {
  function aom_rb_read_unsigned_literal (line 45) | uint32_t aom_rb_read_unsigned_literal(struct aom_read_bit_buffer *rb,
  function aom_rb_read_inv_signed_literal (line 55) | int aom_rb_read_inv_signed_literal(struct aom_read_bit_buffer *rb, int b...
  function aom_rb_read_uvlc (line 61) | uint32_t aom_rb_read_uvlc(struct aom_read_bit_buffer *rb) {
  function aom_rb_read_primitive_quniform (line 71) | static uint16_t aom_rb_read_primitive_quniform(struct aom_read_bit_buffe...
  function aom_rb_read_primitive_subexpfin (line 80) | static uint16_t aom_rb_read_primitive_subexpfin(struct aom_read_bit_buff...
  function aom_rb_read_primitive_refsubexpfin (line 105) | static uint16_t aom_rb_read_primitive_refsubexpfin(
  function aom_rb_read_signed_primitive_refsubexpfin (line 111) | int16_t aom_rb_read_signed_primitive_refsubexpfin(

FILE: projects/Amlogic-ce/devices/Amlogic-no/packages/multimedia/obu_util/sources/bitreader_buffer.h
  type aom_read_bit_buffer (line 25) | struct aom_read_bit_buffer {
  type aom_read_bit_buffer (line 34) | struct aom_read_bit_buffer
  type aom_read_bit_buffer (line 36) | struct aom_read_bit_buffer
  type aom_read_bit_buffer (line 38) | struct aom_read_bit_buffer
  type aom_read_bit_buffer (line 40) | struct aom_read_bit_buffer
  type aom_read_bit_buffer (line 42) | struct aom_read_bit_buffer
  type aom_read_bit_buffer (line 44) | struct aom_read_bit_buffer
  type aom_read_bit_buffer (line 47) | struct aom_read_bit_buffer

FILE: projects/Amlogic-ce/devices/Amlogic-no/packages/multimedia/obu_util/sources/msvc.h
  function INLINE (line 24) | static INLINE double round(double x) {
  function INLINE (line 31) | static INLINE float roundf(float x) {
  function lroundf (line 38) | static INLINE long lroundf(float x) {
  function INLINE (line 64) | static INLINE int _mm256_extract_epi32(__m256i a, const int i) {
  function INLINE (line 67) | static INLINE __m256i _mm256_insert_epi32(__m256i a, int b, const int i) {

FILE: projects/Amlogic-ce/devices/Amlogic-no/packages/multimedia/obu_util/sources/obu_util.c
  function aom_codec_err_t (line 17) | static aom_codec_err_t read_obu_size(const uint8_t *data,
  function aom_codec_err_t (line 33) | static aom_codec_err_t read_obu_header(struct aom_read_bit_buffer *rb,
  function aom_codec_err_t (line 76) | aom_codec_err_t aom_read_obu_header(uint8_t *buffer, size_t buffer_length,
  function aom_codec_err_t (line 90) | aom_codec_err_t aom_read_obu_header_and_size(const uint8_t *data,

FILE: projects/Amlogic-ce/devices/Amlogic-no/packages/multimedia/obu_util/sources/obu_util.h
  type ObuHeader (line 20) | typedef struct {

FILE: projects/Amlogic-ce/devices/Amlogic-no/packages/multimedia/obu_util/sources/recenter.h
  function INLINE (line 20) | static INLINE uint16_t inv_recenter_nonneg(uint16_t r, uint16_t v) {
  function INLINE (line 31) | static INLINE uint16_t inv_recenter_finite_nonneg(uint16_t n, uint16_t r,
  function INLINE (line 41) | static INLINE uint16_t recenter_nonneg(uint16_t r, uint16_t v) {
  function INLINE (line 52) | static INLINE uint16_t recenter_finite_nonneg(uint16_t n, uint16_t r,

FILE: projects/Amlogic-ce/devices/Amlogic-old/packages/kvimfan-aml/sources/khadas-fan.c
  type khadas_fan_mode (line 25) | enum khadas_fan_mode {
  type khadas_fan_level (line 30) | enum khadas_fan_level {
  type khadas_fan_enable (line 37) | enum khadas_fan_enable {
  type khadas_fan_data (line 42) | struct khadas_fan_data {
  type khadas_fan_data (line 59) | struct khadas_fan_data
  function khadas_fan_level_set (line 61) | void khadas_fan_level_set(struct khadas_fan_data *fan_data, int level )
  function fan_work_func (line 83) | static void fan_work_func(struct work_struct *_work)
  function khadas_fan_set (line 119) | static void khadas_fan_set(struct khadas_fan_data  *fan_data)
  function fan_enable_show (line 161) | static ssize_t fan_enable_show(struct class *cls,
  function fan_enable_store (line 167) | static ssize_t fan_enable_store(struct class *cls, struct class_attribut...
  function fan_mode_show (line 184) | static ssize_t fan_mode_show(struct class *cls,
  function fan_mode_store (line 190) | static ssize_t fan_mode_store(struct class *cls, struct class_attribute ...
  function fan_level_show (line 207) | static ssize_t fan_level_show(struct class *cls,
  function fan_level_store (line 213) | static ssize_t fan_level_store(struct class *cls, struct class_attribute...
  function fan_temp_show (line 231) | static ssize_t fan_temp_show(struct class *cls,
  type class_attribute (line 241) | struct class_attribute
  function khadas_fan_probe (line 248) | static int khadas_fan_probe(struct platform_device *pdev)
  function khadas_fan_remove (line 305) | static int khadas_fan_remove(struct platform_device *pdev)
  function khadas_fan_shutdown (line 313) | static void khadas_fan_shutdown(struct platform_device *pdev)
  function khadas_fan_suspend (line 320) | static int khadas_fan_suspend(struct platform_device *pdev, pm_message_t...
  function khadas_fan_resume (line 328) | static int khadas_fan_resume(struct platform_device *pdev)
  type of_device_id (line 335) | struct of_device_id
  type platform_driver (line 340) | struct platform_driver

FILE: projects/Amlogic-ce/packages/addons/service/aml-vnc/source/default.py
  class Monitor (line 8) | class Monitor(xbmc.Monitor):
    method __init__ (line 9) | def __init__(self, *args, **kwargs):
    method onSettingsChanged (line 13) | def onSettingsChanged(self):

FILE: projects/Amlogic-ce/packages/addons/service/homatics-leds/source/default.py
  function build_url (line 21) | def build_url(query):

FILE: projects/Amlogic-ce/packages/addons/service/homatics-leds/source/service.py
  function myLog (line 14) | def myLog(msg, level = xbmc.LOGINFO):
  function write_sysfs (line 18) | def write_sysfs(which, data):
  function led_on (line 24) | def led_on(pos, pos_min, pos_max, color):
  class myEffectThread (line 44) | class myEffectThread(Thread):
    method __init__ (line 45) | def __init__(self, color, run_daemon_mode = False):
    method stop_event_is_set (line 52) | def stop_event_is_set(self):
    method stop (line 62) | def stop(self):
    method stop_and_join (line 65) | def stop_and_join(self):
    method run (line 73) | def run(self):
  function setup (line 99) | def setup():
  function set_solid (line 120) | def set_solid():
  function color_name_to_hex (line 158) | def color_name_to_hex(color):
  class xbmcMonitor (line 177) | class xbmcMonitor(xbmc.Monitor):
    method __init__ (line 178) | def __init__(self, thread):
    method onSettingsChanged (line 182) | def onSettingsChanged(self):
    method onNotification (line 190) | def onNotification(self, sender, method, data):

FILE: projects/Amlogic-ce/packages/linux-drivers/amlogic/wifi_dummy-aml/sources/wifi_dummy.c
  function wifi_dummy_init (line 13) | static int __init wifi_dummy_init(void)
  function wifi_dummy_cleanup (line 24) | static void __exit wifi_dummy_cleanup(void)

FILE: projects/Amlogic-ce/packages/mediacenter/kodi/scripts/xml_merge.py
  function printerr (line 11) | def printerr(*args, **kwargs):
  class hashabledict (line 14) | class hashabledict(dict):
    method __hash__ (line 15) | def __hash__(self):
  class XMLCombiner (line 18) | class XMLCombiner(object):
    method __init__ (line 19) | def __init__(self, filenames):
    method prettyPrint (line 31) | def prettyPrint(self, etree_xml):
    method combine (line 35) | def combine(self):
    method combine_element (line 40) | def combine_element(self, one, other):

FILE: projects/Amlogic-ce/packages/multimedia/obu_util/sources/aom_codec.h
  type aom_codec_err_t (line 155) | typedef enum {
  type aom_codec_caps_t (line 217) | typedef long aom_codec_caps_t;
  type aom_codec_flags_t (line 228) | typedef long aom_codec_flags_t;
  type aom_codec_pts_t (line 235) | typedef int64_t aom_codec_pts_t;
  type aom_codec_iface_t (line 254) | typedef const struct aom_codec_iface aom_codec_iface_t;
  type aom_codec_priv_t (line 261) | typedef struct aom_codec_priv aom_codec_priv_t;
  type aom_codec_frame_flags_t (line 270) | typedef uint32_t aom_codec_frame_flags_t;
  type aom_codec_ctx_t (line 298) | typedef struct aom_codec_ctx {
  type aom_bit_depth_t (line 318) | typedef enum aom_bit_depth {
  type aom_superblock_size_t (line 330) | typedef enum aom_superblock_size {
  type typ (line 537) | typedef typ aom_codec_control_type_##id;
  type OBU_TYPE (line 541) | typedef enum ATTRIBUTE_PACKED {
  type OBU_METADATA_TYPE (line 554) | typedef enum {

FILE: projects/Amlogic-ce/packages/multimedia/obu_util/sources/aom_image.h
  type aom_img_fmt_t (line 41) | typedef enum aom_img_fmt {
  type aom_color_primaries_t (line 58) | typedef enum aom_color_primaries {
  type aom_transfer_characteristics_t (line 79) | typedef enum aom_transfer_characteristics {
  type aom_matrix_coefficients_t (line 104) | typedef enum aom_matrix_coefficients {
  type aom_color_range_t (line 126) | typedef enum aom_color_range {
  type aom_chroma_sample_position_t (line 132) | typedef enum aom_chroma_sample_position {
  type aom_metadata_insert_flags_t (line 153) | typedef enum aom_metadata_insert_flags {
  type aom_metadata_array_t (line 160) | typedef struct aom_metadata_array aom_metadata_array_t;
  type aom_metadata_t (line 163) | typedef struct aom_metadata {
  type aom_image_t (line 171) | typedef struct aom_image {

FILE: projects/Amlogic-ce/packages/multimedia/obu_util/sources/aom_integer.c
  function aom_uleb_size_in_bytes (line 23) | size_t aom_uleb_size_in_bytes(uint64_t value) {
  function aom_uleb_decode (line 31) | int aom_uleb_decode(const uint8_t *buffer, size_t available, uint64_t *v...
  function aom_uleb_encode (line 58) | int aom_uleb_encode(uint64_t value, size_t available, uint8_t *coded_value,
  function aom_uleb_encode_fixed_size (line 79) | int aom_uleb_encode_fixed_size(uint64_t value, size_t available,

FILE: projects/Amlogic-ce/packages/multimedia/obu_util/sources/bitops.h
  function INLINE (line 40) | static INLINE int get_msb(unsigned int n) {
  function INLINE (line 47) | static INLINE int get_msb(unsigned int n) {
  function INLINE (line 55) | static INLINE int get_msb(unsigned int n) {

FILE: projects/Amlogic-ce/packages/multimedia/obu_util/sources/bitreader_buffer.c
  function aom_rb_bytes_read (line 20) | size_t aom_rb_bytes_read(const struct aom_read_bit_buffer *rb) {
  function aom_rb_read_bit (line 24) | int aom_rb_read_bit(struct aom_read_bit_buffer *rb) {
  function aom_rb_read_literal (line 38) | int aom_rb_read_literal(struct aom_read_bit_buffer *rb, int bits) {
  function aom_rb_read_unsigned_literal (line 45) | uint32_t aom_rb_read_unsigned_literal(struct aom_read_bit_buffer *rb,
  function aom_rb_read_inv_signed_literal (line 55) | int aom_rb_read_inv_signed_literal(struct aom_read_bit_buffer *rb, int b...
  function aom_rb_read_uvlc (line 61) | uint32_t aom_rb_read_uvlc(struct aom_read_bit_buffer *rb) {
  function aom_rb_read_primitive_quniform (line 71) | static uint16_t aom_rb_read_primitive_quniform(struct aom_read_bit_buffe...
  function aom_rb_read_primitive_subexpfin (line 80) | static uint16_t aom_rb_read_primitive_subexpfin(struct aom_read_bit_buff...
  function aom_rb_read_primitive_refsubexpfin (line 105) | static uint16_t aom_rb_read_primitive_refsubexpfin(
  function aom_rb_read_signed_primitive_refsubexpfin (line 111) | int16_t aom_rb_read_signed_primitive_refsubexpfin(

FILE: projects/Amlogic-ce/packages/multimedia/obu_util/sources/bitreader_buffer.h
  type aom_read_bit_buffer (line 25) | struct aom_read_bit_buffer {
  type aom_read_bit_buffer (line 34) | struct aom_read_bit_buffer
  type aom_read_bit_buffer (line 36) | struct aom_read_bit_buffer
  type aom_read_bit_buffer (line 38) | struct aom_read_bit_buffer
  type aom_read_bit_buffer (line 40) | struct aom_read_bit_buffer
  type aom_read_bit_buffer (line 42) | struct aom_read_bit_buffer
  type aom_read_bit_buffer (line 44) | struct aom_read_bit_buffer
  type aom_read_bit_buffer (line 47) | struct aom_read_bit_buffer

FILE: projects/Amlogic-ce/packages/multimedia/obu_util/sources/msvc.h
  function INLINE (line 24) | static INLINE double round(double x) {
  function INLINE (line 31) | static INLINE float roundf(float x) {
  function lroundf (line 38) | static INLINE long lroundf(float x) {
  function INLINE (line 64) | static INLINE int _mm256_extract_epi32(__m256i a, const int i) {
  function INLINE (line 67) | static INLINE __m256i _mm256_insert_epi32(__m256i a, int b, const int i) {

FILE: projects/Amlogic-ce/packages/multimedia/obu_util/sources/obu_util.c
  function aom_codec_err_t (line 17) | static aom_codec_err_t read_obu_size(const uint8_t *data,
  function aom_codec_err_t (line 33) | static aom_codec_err_t read_obu_header(struct aom_read_bit_buffer *rb,
  function aom_codec_err_t (line 76) | aom_codec_err_t aom_read_obu_header(uint8_t *buffer, size_t buffer_length,
  function aom_codec_err_t (line 90) | aom_codec_err_t aom_read_obu_header_and_size(const uint8_t *data,

FILE: projects/Amlogic-ce/packages/multimedia/obu_util/sources/obu_util.h
  type ObuHeader (line 20) | typedef struct {

FILE: projects/Amlogic-ce/packages/multimedia/obu_util/sources/recenter.h
  function INLINE (line 20) | static INLINE uint16_t inv_recenter_nonneg(uint16_t r, uint16_t v) {
  function INLINE (line 31) | static INLINE uint16_t inv_recenter_finite_nonneg(uint16_t n, uint16_t r,
  function INLINE (line 41) | static INLINE uint16_t recenter_nonneg(uint16_t r, uint16_t v) {
  function INLINE (line 52) | static INLINE uint16_t recenter_finite_nonneg(uint16_t n, uint16_t r,

FILE: projects/Rockchip/devices/GameForce/packages/odroidgoa-utils/sources/oga_events.py
  class Power (line 14) | class Power:
  class Joypad (line 17) | class Joypad:
  function runcmd (line 32) | def runcmd(cmd, *args, **kw):
  function handle_event (line 36) | async def handle_event(device):
  function run (line 72) | def run():

FILE: projects/Rockchip/devices/OdroidGoAdvance/packages/odroidgoa-utils/sources/oga_events.py
  class Power (line 21) | class Power:
  class Joypad (line 24) | class Joypad:
  function runcmd (line 39) | def runcmd(cmd, *args, **kw):
  function handle_event (line 43) | async def handle_event(device):
  function run (line 86) | def run():

FILE: projects/Rockchip/devices/OdroidM1/packages/odroidgoa-utils/sources/oga_events.py
  class Power (line 21) | class Power:
  class Joypad (line 24) | class Joypad:
  function runcmd (line 39) | def runcmd(cmd, *args, **kw):
  function handle_event (line 43) | async def handle_event(device):
  function run (line 86) | def run():

FILE: projects/Rockchip/devices/RK356x/packages/odroidgoa-utils/sources/oga_events.py
  class Power (line 21) | class Power:
  class Joypad (line 24) | class Joypad:
  function runcmd (line 39) | def runcmd(cmd, *args, **kw):
  function handle_event (line 43) | async def handle_event(device):
  function run (line 86) | def run():

FILE: scripts/genbuildplan.py
  class LibreELEC_Package (line 11) | class LibreELEC_Package:
    method __init__ (line 12) | def __init__(self, name, section):
    method __repr__ (line 24) | def __repr__(self):
    method addDependencies (line 38) | def addDependencies(self, target, packages):
    method delDependency (line 45) | def delDependency(self, target, package):
    method addReference (line 52) | def addReference(self, package):
    method delReference (line 57) | def delReference(self, package):
    method addUnpack (line 62) | def addUnpack(self, packages):
    method isReferenced (line 66) | def isReferenced(self):
    method isWanted (line 69) | def isWanted(self):
    method references (line 72) | def references(self, package):
  class Node (line 77) | class Node:
    method __init__ (line 78) | def __init__(self, name, target, section):
    method appendEdges (line 85) | def appendEdges(self, node):
    method satisfies (line 95) | def satisfies(self, node):
    method __repr__ (line 101) | def __repr__(self):
    method commonName (line 113) | def commonName(self):
    method addEdge (line 116) | def addEdge(self, node):
  function eprint (line 120) | def eprint(*args, **kwargs):
  function loadPackages (line 124) | def loadPackages():
  function initPackage (line 147) | def initPackage(package):
  function split_package (line 158) | def split_package(name):
  function get_packages_by_target (line 165) | def get_packages_by_target(target, list):
  function findbuildpos (line 179) | def findbuildpos(node, list):
  function dep_resolve (line 197) | def dep_resolve(node, resolved, unresolved):
  function get_build_steps (line 215) | def get_build_steps(args, nodes):
  function processPackages (line 248) | def processPackages(args, packages):

FILE: scripts/pkgbuilder.py
  class RusagePopen (line 25) | class RusagePopen(subprocess.Popen):
    method _try_wait (line 26) | def _try_wait(self, wait_flags):
  function rusage_run (line 38) | def rusage_run(*popenargs, parent=None, timeout=None, **kwargs):
  class GeneratorEmpty (line 56) | class GeneratorEmpty(Exception):
  class GeneratorStalled (line 59) | class GeneratorStalled(Exception):
  class Generator (line 62) | class Generator:
    method __init__ (line 63) | def __init__(self, plan):
    method canBuildJob (line 98) | def canBuildJob(self, job):
    method getPackagesToRemove (line 105) | def getPackagesToRemove(self, job):
    method getPackageReferenceCounts (line 119) | def getPackageReferenceCounts(self, job):
    method getFirstFailedJob (line 133) | def getFirstFailedJob(self, job):
    method getAllFailedJobs (line 144) | def getAllFailedJobs(self, job):
    method getNextJob (line 156) | def getNextJob(self):
    method getStallInfo (line 191) | def getStallInfo(self):
    method activeJobCount (line 199) | def activeJobCount(self):
    method activeJobNames (line 202) | def activeJobNames(self):
    method failedJobCount (line 206) | def failedJobCount(self):
    method failedJobs (line 209) | def failedJobs(self):
    method completedJobCount (line 213) | def completedJobCount(self):
    method totalJobCount (line 216) | def totalJobCount(self):
    method completed (line 219) | def completed(self, job):
    method removed (line 231) | def removed(self, pkg_name):
    method addUnpackPackages (line 234) | def addUnpackPackages(self, pkg_name, packages):
    method addRefCounts (line 240) | def addRefCounts(self, pkg_name):
    method delRefCounts (line 246) | def delRefCounts(self, pkg_name):
  class BuildProcess (line 252) | class BuildProcess(threading.Thread):
    method __init__ (line 253) | def __init__(self, slot, maxslot, jobtotal, haltonerror, work, complete):
    method stop (line 269) | def stop(self):
    method isActive (line 279) | def isActive(self):
    method run (line 282) | def run(self):
    method execute (line 300) | def execute(self, job):
  class Builder (line 355) | class Builder:
    method __init__ (line 356) | def __init__(self, maxthreadcount, inputfilename, jobglog, loadstats, ...
    method build (line 439) | def build(self):
    method queueWork (line 486) | def queueWork(self):
    method getCompletedJob (line 556) | def getCompletedJob(self):
    method captureStats (line 570) | def captureStats(self, finished=False):
    method displayProgress (line 601) | def displayProgress(self):
    method clearProgress (line 642) | def clearProgress(self):
    method displayJobStatus (line 648) | def displayJobStatus(self, job):
    method processJobOutput (line 666) | def processJobOutput(self, job):
    method writeJobLog (line 722) | def writeJobLog(self, job):
    method autoRemovePackages (line 734) | def autoRemovePackages(self, job):
    method show_status (line 754) | def show_status(self, status, task, data, p1=None, p2=None):
    method stopProcesses (line 763) | def stopProcesses(self):
    method cleanup (line 769) | def cleanup(self):
    method flush (line 776) | def flush(self):
    method oprint (line 785) | def oprint(self, *args, flush=False, **kwargs):
    method eprint (line 796) | def eprint(self, *args, flush=False, isProgress=False, **kwargs):
    method getLoad (line 807) | def getLoad(self):
    method getMemory (line 810) | def getMemory(self):
    method getTerminalSize (line 813) | def getTerminalSize(self, signum = None, frame = None):
    method secs2hms (line 820) | def secs2hms(self, seconds):
  function DEBUG (line 825) | def DEBUG(msg):

FILE: tools/fixlecode.py
  function fix_appends (line 37) | def fix_appends(line, changed):
  function fix_braces (line 79) | def fix_braces(line, changed):
  function fix_backticks (line 127) | def fix_backticks(line, changed):
  function fix_semicolons (line 177) | def fix_semicolons(line, changed):
  function process_args (line 203) | def process_args(args):
  function process_file (line 238) | def process_file(filename, args):
  function run_command (line 275) | def run_command(command):
  function show_diff (line 290) | def show_diff(filename, oldlines, newlines):
  function output_file (line 315) | def output_file(filename, lines):
  function show_summary (line 322) | def show_summary(filename, changed):

FILE: tools/mtstats.py
  class HistoryEvent (line 18) | class HistoryEvent:
    method __init__ (line 19) | def __init__(self, event):
    method __repr__ (line 32) | def __repr__(self):
    method get_time_secs (line 35) | def get_time_secs(self):
    method isConfig (line 40) | def isConfig(self):
    method getConfig (line 43) | def getConfig(self, item, default=None):
  function calc_pct (line 52) | def calc_pct(a, b):
  function pct_brackets (line 58) | def pct_brackets(pct):
  function secs_to_hms (line 65) | def secs_to_hms(seconds, blankzero=False):
  function get_busy_total (line 75) | def get_busy_total(slot):
  function get_concurrent_val (line 78) | def get_concurrent_val(concurrent):
Copy disabled (too large) Download .json
Condensed preview — 5232 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (27,761K chars).
[
  {
    "path": ".editorconfig",
    "chars": 648,
    "preview": "# EditorConfig is awesome: https://EditorConfig.org\n\n# top-most EditorConfig file\nroot = true\n\n# Unix-style newlines wit"
  },
  {
    "path": ".github/FUNDING.yml",
    "chars": 769,
    "preview": "# These are supported funding model platforms\n\ngithub: shantigilbert # Replace with up to 4 GitHub Sponsors-enabled user"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.md",
    "chars": 1245,
    "preview": "---\nname: Bug report\nabout: Create a report to help us improve\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n# BEFORE YOU OPE"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "chars": 342,
    "preview": "blank_issues_enabled: false\ncontact_links:\n  - name: EmuELEC Forum\n    url: https://emuelec.org\n    about: If you have a"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.md",
    "chars": 1112,
    "preview": "---\nname: Feature request\nabout: Suggest an idea for this project\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n# BEFORE YOU "
  },
  {
    "path": ".github/ISSUE_TEMPLATE/other-issue.md",
    "chars": 631,
    "preview": "---\nname: Other issue\nabout: Describe this issue template's purpose here.\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n# BEF"
  },
  {
    "path": ".github/config.yml",
    "chars": 347,
    "preview": "blank_issues_enabled: false\ncontact_links:\n  - name: EmuELEC Forum\n    url: https://emuelec.org\n    about: If you have a"
  },
  {
    "path": ".gitignore",
    "chars": 602,
    "preview": "# build directorys\n/build.*/\n/builds\n/.fakeroot.*\n\n# automatically downloaded source files\n/sources/\n\n# prebuild target "
  },
  {
    "path": "CHANGELOG",
    "chars": 68668,
    "preview": "EmuELEC CHANGELOG\n==================\n\n# v4.8\n\nFinally It's here!\n\n## Changes\n\n* Removed preinstalled ports:\nPorts were t"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 4230,
    "preview": "### Questions about LibreELEC?\n\nTo get your questions answered, please ask in the LibreELEC [Forum], on IRC: \n\\#libreele"
  },
  {
    "path": "Makefile",
    "chars": 275,
    "preview": "all: release\n\nsystem:\n\t./scripts/image\n\nrelease:\n\t./scripts/image release\n\nimage:\n\t./scripts/image mkimage\n\nnoobs:\n\t./sc"
  },
  {
    "path": "README.md",
    "chars": 5710,
    "preview": "# EmuELEC  \nRetro emulation for Amlogic devices.\nBased on  [CoreELEC](https://github.com/CoreELEC/CoreELEC) and [Lakka]("
  },
  {
    "path": "config/addon/dummy.xml",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "config/addon/xbmc.broken.xml",
    "chars": 844,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<addon id=\"@PKG_ADDON_ID@\"\n       name=\"@ADDON_NAME@\"\n       ver"
  },
  {
    "path": "config/addon/xbmc.python.module.xml",
    "chars": 816,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<addon id=\"@PKG_ADDON_ID@\"\n       name=\"@ADDON_NAME@\"\n       ver"
  },
  {
    "path": "config/addon/xbmc.python.script.xml",
    "chars": 804,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<addon id=\"@PKG_ADDON_ID@\"\n       name=\"@ADDON_NAME@\"\n       ver"
  },
  {
    "path": "config/addon/xbmc.service.library.xml",
    "chars": 900,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<addon id=\"@PKG_ADDON_ID@\"\n       name=\"@ADDON_NAME@\"\n       ver"
  },
  {
    "path": "config/addon/xbmc.service.pluginsource.xml",
    "chars": 859,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<addon id=\"@PKG_ADDON_ID@\"\n       name=\"@ADDON_NAME@\"\n       ve"
  },
  {
    "path": "config/addon/xbmc.service.xml",
    "chars": 798,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<addon id=\"@PKG_ADDON_ID@\"\n       name=\"@ADDON_NAME@\"\n       ver"
  },
  {
    "path": "config/arch.aarch64",
    "chars": 1533,
    "preview": "# determines TARGET_CPU, if not forced by user\n  if [ -z \"$TARGET_CPU\" ]; then\n    TARGET_CPU=cortex-a53\n  fi\n\n  # 64bit"
  },
  {
    "path": "config/arch.arm",
    "chars": 2680,
    "preview": "# determines TARGET_CPU, if not forced by user\n  if [ -z \"$TARGET_CPU\" ]; then\n    TARGET_CPU=cortex-a8\n  fi\n\n  # 32bit "
  },
  {
    "path": "config/arch.x86_64",
    "chars": 1175,
    "preview": "# determines TARGET_CPU, if not forced by user\n  if [ -z \"${TARGET_CPU}\" ]; then\n    TARGET_CPU=\"x86-64\"\n  fi\n\n# determi"
  },
  {
    "path": "config/docker/changelog.txt",
    "chars": 20,
    "preview": "100\n- Initial addon\n"
  },
  {
    "path": "config/docker/package.mk",
    "chars": 561,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)\n\nPKG_NAME=\"@NAME@\""
  },
  {
    "path": "config/docker/source/bin/docker",
    "chars": 233,
    "preview": "#!/bin/sh\n\n# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)\n\nname=\""
  },
  {
    "path": "config/docker/source/default.py",
    "chars": 456,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)\n\nimport subprocess"
  },
  {
    "path": "config/docker/source/resources/language/English/strings.po",
    "chars": 177,
    "preview": "msgid \"\"\nmsgstr \"\"\n\nmsgctxt \"#30000\"\nmsgid \"Configuration\"\nmsgstr \"\"\n\nmsgctxt \"#30001\"\nmsgid \"Note: Kodi remote sources "
  },
  {
    "path": "config/docker/source/resources/settings.xml",
    "chars": 178,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>\n<settings>\n   <category   label=\"30000\">\n      <setting label=\"3"
  },
  {
    "path": "config/docker/source/system.d/docker.service",
    "chars": 326,
    "preview": "[Unit]\nDescription=%p container\nRequires=service.system.docker.service\nAfter=service.system.docker.service\n\n[Service]\nRe"
  },
  {
    "path": "config/functions",
    "chars": 63200,
    "preview": "# SPDX-License-Identifier: GPL-2.0-or-later\n# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)\n\n### FUNC"
  },
  {
    "path": "config/graphic",
    "chars": 4077,
    "preview": "[ -z \"${OPENGL}\" ] && OPENGL=\"no\"\n[ -z \"${OPENGLES}\" ] && OPENGLES=\"no\"\n[ -z \"${VULKAN}\" ] && VULKAN=\"no\"\n\nif [ \"${OPENG"
  },
  {
    "path": "config/multithread",
    "chars": 2680,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv)\n\nTHREADCOUNT=${THR"
  },
  {
    "path": "config/noobs/os.json",
    "chars": 326,
    "preview": "{\n  \"name\": \"@DISTRONAME@_@PROJECT@\",\n  \"version\": \"@LIBREELEC_VERSION@\",\n  \"release_date\": \"@RELEASE_DATE@\",\n  \"kernel\""
  },
  {
    "path": "config/noobs/partition_setup.sh",
    "chars": 1482,
    "preview": "#!/bin/sh -x\n\n# SPDX-License-Identifier: GPL-2.0-or-later\n# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)\n\n"
  },
  {
    "path": "config/noobs/partitions.json",
    "chars": 555,
    "preview": "{\n  \"partitions\": [\n    {\n      \"label\":                     \"System\",\n      \"filesystem_type\":           \"FAT\",\n      \""
  },
  {
    "path": "config/optimize",
    "chars": 3423,
    "preview": "# Linker hash-style is set to gnu via gcc default\nLD_OPTIM=\"-Wl,--as-needed\"\n\nTARGET_CPPFLAGS=\"\"\nTARGET_CFLAGS=\"$TARGET_"
  },
  {
    "path": "config/options",
    "chars": 5541,
    "preview": "# Do not build as root. Ever.\nif [[ \"${EUID}\" -eq 0 ]]; then\n  echo \"Building as the root user is NOT supported. Use a r"
  },
  {
    "path": "config/options32",
    "chars": 1443,
    "preview": "# This command requires BASH >= v4.0, since we're using Ubuntu 20 as a baseline, this should not be a problem\n# This rea"
  },
  {
    "path": "config/path",
    "chars": 2607,
    "preview": "# SPDX-License-Identifier: GPL-2.0-or-later\n# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)\n\nset -e\n\n"
  },
  {
    "path": "config/show_config",
    "chars": 5995,
    "preview": "#!/bin/bash\n\nshow_config() {\n  # load graphic configuration\n  get_graphicdrivers\n\n  dashes=\"===========================\""
  },
  {
    "path": "config/sources",
    "chars": 84,
    "preview": "# Sourceforge download site\n  SOURCEFORGE_SRC=\"https://prdownloads.sourceforge.net\"\n"
  },
  {
    "path": "create_tar.sh",
    "chars": 112,
    "preview": "#!/bin/sh\n\ngit archive --format=tar --prefix=LibreELEC-source-$1/ tags/$1 | bzip2 > LibreELEC-source-$1.tar.bz2\n"
  },
  {
    "path": "distributions/CoreELEC/options",
    "chars": 7625,
    "preview": "### DISTRO INFORMATION ###\n\n# Name of the Distro to build (full name, without special characters)\n  DISTRONAME=\"CoreELEC"
  },
  {
    "path": "distributions/CoreELEC/show_config",
    "chars": 1816,
    "preview": "show_distro_config() {\n  # Hardware decoder support\n\n  config_message+=\"\\n\\n Kodi Hardware configuration:\"\n  config_mess"
  },
  {
    "path": "distributions/CoreELEC/splash/Amlogic-ne/progress/splash-1080-config",
    "chars": 68,
    "preview": "animation_offset_x=635\nanimation_offset_y=135\nframes_per_second=20\n\n"
  },
  {
    "path": "distributions/CoreELEC/splash/Amlogic-ng/progress/splash-1080-config",
    "chars": 68,
    "preview": "animation_offset_x=635\nanimation_offset_y=135\nframes_per_second=20\n\n"
  },
  {
    "path": "distributions/CoreELEC/version",
    "chars": 378,
    "preview": "# OS_MAJOR: OS major Version\n  OS_MAJOR=\"20\"\n\n# OS_MINOR: OS minor Version\n  OS_MINOR=\"3\"\n\n# OS_VERSION: OS Version\n  OS"
  },
  {
    "path": "distributions/EmuELEC/options",
    "chars": 13095,
    "preview": "## DISTRO INFORMATION ###\n\n# Name of the Distro to build (full name, without special characters)\n  DISTRONAME=\"EmuELEC\"\n"
  },
  {
    "path": "distributions/EmuELEC/show_config",
    "chars": 1816,
    "preview": "show_distro_config() {\n  # Hardware decoder support\n\n  config_message+=\"\\n\\n Kodi Hardware configuration:\"\n  config_mess"
  },
  {
    "path": "distributions/EmuELEC/splash/Amlogic-ne/progress/splash-1080-config",
    "chars": 68,
    "preview": "animation_offset_x=635\nanimation_offset_y=135\nframes_per_second=20\n\n"
  },
  {
    "path": "distributions/EmuELEC/splash/Amlogic-ng/progress/splash-1080-config",
    "chars": 68,
    "preview": "animation_offset_x=635\nanimation_offset_y=135\nframes_per_second=20\n\n"
  },
  {
    "path": "distributions/EmuELEC/splash/Amlogic-no/progress/splash-1080-config",
    "chars": 68,
    "preview": "animation_offset_x=635\nanimation_offset_y=135\nframes_per_second=20\n\n"
  },
  {
    "path": "distributions/EmuELEC/version",
    "chars": 383,
    "preview": "# OS_MAJOR: OS major Version\n  OS_MAJOR=\"4\"\n\n# OS_MINOR: OS minor Version\n  OS_MINOR=\"8\"\n\n# OS_VERSION: OS Version\n  OS_"
  },
  {
    "path": "distributions/LibreELEC/kernel_options",
    "chars": 4161,
    "preview": "# general\nCONFIG_DRM=y\nCONFIG_SQUASHFS=y\nCONFIG_SQUASHFS_ZSTD=y\nCONFIG_VFAT_FS=y\nCONFIG_EXT4_FS=y\nCONFIG_HUGETLBFS=n\n\n# "
  },
  {
    "path": "distributions/LibreELEC/options",
    "chars": 6970,
    "preview": "### DISTRO INFORMATION ###\n\n# Name of the Distro to build (full name, without special characters)\n  DISTRONAME=\"LibreELE"
  },
  {
    "path": "distributions/LibreELEC/show_config",
    "chars": 1868,
    "preview": "show_distro_config() {\n  # Hardware decoder support\n\n  config_message+=\"\\n\\n Kodi Hardware configuration:\"\n  config_mess"
  },
  {
    "path": "distributions/LibreELEC/version",
    "chars": 196,
    "preview": "# VERSION: set full version, use \"devel\" for development version\n  LIBREELEC_VERSION=\"devel\"\n\n# OS_VERSION: OS Version\n "
  },
  {
    "path": "licenses/7-Zip.txt",
    "chars": 4103,
    "preview": "  7-Zip source code\n  ~~~~~~~~~~~~~~~~~\n  License for use and distribution\n  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n  7-Zip C"
  },
  {
    "path": "licenses/APL-1.0.txt",
    "chars": 45920,
    "preview": "ADAPTIVE PUBLIC LICENSE\nVersion 1.0\n\nTHE LICENSED WORK IS PROVIDED UNDER THE TERMS OF THIS ADAPTIVE PUBLIC LICENSE\n(\"LIC"
  },
  {
    "path": "licenses/APSL-2.0.txt",
    "chars": 20084,
    "preview": "APPLE PUBLIC SOURCE LICENSE\nVersion 2.0 -  August 6, 2003\n\nPlease read this License carefully before downloading this so"
  },
  {
    "path": "licenses/APSL.txt",
    "chars": 20100,
    "preview": "APPLE PUBLIC SOURCE LICENSE\nVersion 2.0 -  August 6, 2003\n\nPlease read this License carefully before downloading this so"
  },
  {
    "path": "licenses/ATI.txt",
    "chars": 10732,
    "preview": "\nAMD Software End User License Agreement\n\nPLEASE  READ  THIS  LICENSE  CAREFULLY  BEFORE  USING   THE   SOFTWARE.   BY\nD"
  },
  {
    "path": "licenses/Apache-2.0.txt",
    "chars": 10255,
    "preview": "Apache License\nVersion 2.0, January 2004\nhttp://www.apache.org/licenses/\n\nTERMS AND CONDITIONS FOR USE, REPRODUCTION, AN"
  },
  {
    "path": "licenses/Artistic.txt",
    "chars": 6111,
    "preview": "\n\n\n\n\t\t\t The \"Artistic License\"\n\n\t\t\t\tPreamble\n\nThe intent of this document is to state the conditions under which a\nPacka"
  },
  {
    "path": "licenses/BSD-1-Clause.txt",
    "chars": 1099,
    "preview": "Copyright (c) 1995, 1999 Berkeley Software Design, Inc.  All rights reserved.\n\nRedistribution and use in source and bina"
  },
  {
    "path": "licenses/BSD-2-Clause.txt",
    "chars": 1287,
    "preview": "Copyright (c) <year> <owner> All rights reserved.\n\nRedistribution and use in source and binary forms, with or without mo"
  },
  {
    "path": "licenses/BSD-3-Clause.txt",
    "chars": 1480,
    "preview": "Copyright (c) <year> <owner>. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without m"
  },
  {
    "path": "licenses/BSD-4-Clause.txt",
    "chars": 1622,
    "preview": "Copyright (c) <year> <owner>. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without m"
  },
  {
    "path": "licenses/BSL.txt",
    "chars": 1338,
    "preview": "Boost Software License - Version 1.0 - August 17th, 2003\n\nPermission is hereby granted, free of charge, to any person or"
  },
  {
    "path": "licenses/Clarified_Artistic.txt",
    "chars": 6511,
    "preview": "\t\t     The Clarified Artistic License\n\n\t\t\t\tPreamble\n\nThe intent of this document is to state the conditions under which "
  },
  {
    "path": "licenses/FDL.txt",
    "chars": 20403,
    "preview": "\t\tGNU Free Documentation License\n\t\t  Version 1.2, November 2002\n\n\n Copyright (C) 2000,2001,2002  Free Software Foundatio"
  },
  {
    "path": "licenses/FDL1_2.txt",
    "chars": 20403,
    "preview": "\t\tGNU Free Documentation License\n\t\t  Version 1.2, November 2002\n\n\n Copyright (C) 2000,2001,2002  Free Software Foundatio"
  },
  {
    "path": "licenses/FDL1_3.txt",
    "chars": 22962,
    "preview": "\n                GNU Free Documentation License\n                 Version 1.3, 3 November 2008\n\n\n Copyright (C) 2000, 200"
  },
  {
    "path": "licenses/FLIRC.txt",
    "chars": 1581,
    "preview": "/*\n * Copyright 2023 Flirc Inc. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or wi"
  },
  {
    "path": "licenses/GPL-1.0-only.txt",
    "chars": 12170,
    "preview": "GNU GENERAL PUBLIC LICENSE\nVersion 1, February 1989\n\nCopyright (C) 1989 Free Software Foundation, Inc. 51 Franklin St, F"
  },
  {
    "path": "licenses/GPL-2.0-only.txt",
    "chars": 17277,
    "preview": "GNU GENERAL PUBLIC LICENSE\nVersion 2, June 1991\n\nCopyright (C) 1989, 1991 Free Software Foundation, Inc.\n51 Franklin Str"
  },
  {
    "path": "licenses/GPL-2.0-or-later.txt",
    "chars": 17277,
    "preview": "GNU GENERAL PUBLIC LICENSE\nVersion 2, June 1991\n\nCopyright (C) 1989, 1991 Free Software Foundation, Inc.\n51 Franklin Str"
  },
  {
    "path": "licenses/GPL-3.0-only.txt",
    "chars": 34410,
    "preview": "GNU GENERAL PUBLIC LICENSE\nVersion 3, 29 June 2007\n\nCopyright © 2007 Free Software Foundation, Inc. <http://fsf.org/>\n\nE"
  },
  {
    "path": "licenses/GPL-3.0-or-later.txt",
    "chars": 34410,
    "preview": "GNU GENERAL PUBLIC LICENSE\nVersion 3, 29 June 2007\n\nCopyright © 2007 Free Software Foundation, Inc. <http://fsf.org/>\n\nE"
  },
  {
    "path": "licenses/HIDAPI-orig.txt",
    "chars": 264,
    "preview": " HIDAPI - Multi-Platform library for\n communication with HID devices.\n\n Copyright 2009, Alan Ott, Signal 11 Software.\n A"
  },
  {
    "path": "licenses/ISC.txt",
    "chars": 823,
    "preview": "ISC License:\n\nCopyright (c) 2004-2010 by Internet Systems Consortium, Inc. (\"ISC\")\nCopyright (c) 1995-2003 by Internet S"
  },
  {
    "path": "licenses/Info-ZIP.txt",
    "chars": 3412,
    "preview": "This is version 2007-Mar-4 of the Info-ZIP license.\nThe definitive version of this document should be available at\nftp:/"
  },
  {
    "path": "licenses/LGPL-2.0-only.txt",
    "chars": 24782,
    "preview": "GNU LIBRARY GENERAL PUBLIC LICENSE\n\nVersion 2, June 1991\n\nCopyright (C) 1991 Free Software Foundation, Inc.\n51 Franklin "
  },
  {
    "path": "licenses/LGPL-2.0-or-later.txt",
    "chars": 24782,
    "preview": "GNU LIBRARY GENERAL PUBLIC LICENSE\n\nVersion 2, June 1991\n\nCopyright (C) 1991 Free Software Foundation, Inc.\n51 Franklin "
  },
  {
    "path": "licenses/LGPL-2.1-only.txt",
    "chars": 25902,
    "preview": "GNU LESSER GENERAL PUBLIC LICENSE\n\nVersion 2.1, February 1999\n\nCopyright (C) 1991, 1999 Free Software Foundation, Inc.\n5"
  },
  {
    "path": "licenses/LGPL-2.1-or-later.txt",
    "chars": 25902,
    "preview": "GNU LESSER GENERAL PUBLIC LICENSE\n\nVersion 2.1, February 1999\n\nCopyright (C) 1991, 1999 Free Software Foundation, Inc.\n5"
  },
  {
    "path": "licenses/LGPL-3.0-only.txt",
    "chars": 7356,
    "preview": "GNU LESSER GENERAL PUBLIC LICENSE\nVersion 3, 29 June 2007\n\nCopyright (C) 2007 Free Software Foundation, Inc. <http://fsf"
  },
  {
    "path": "licenses/LGPL-3.0-or-later.txt",
    "chars": 7356,
    "preview": "GNU LESSER GENERAL PUBLIC LICENSE\nVersion 3, 29 June 2007\n\nCopyright (C) 2007 Free Software Foundation, Inc. <http://fsf"
  },
  {
    "path": "licenses/LibPNG2.txt",
    "chars": 5345,
    "preview": "COPYRIGHT NOTICE, DISCLAIMER, and LICENSE\n=========================================\n\nPNG Reference Library License versi"
  },
  {
    "path": "licenses/MIT.txt",
    "chars": 1078,
    "preview": "MIT License\n\nCopyright (c) <year> <copyright holders>\n\nPermission is hereby granted, free of charge, to any person obtai"
  },
  {
    "path": "licenses/MIT_Modified.txt",
    "chars": 1082,
    "preview": "The MIT License\n\nCopyright (c) <year> <copyright holders>\n\nPermission is hereby granted, free of charge, to any person o"
  },
  {
    "path": "licenses/MPL-1.1.txt",
    "chars": 23399,
    "preview": "Mozilla Public License Version 1.1\n\n1. Definitions.\n\n1.0.1. \"Commercial Use\" means distribution or otherwise making the "
  },
  {
    "path": "licenses/MPL-2.0.txt",
    "chars": 14907,
    "preview": "Mozilla Public License Version 2.0\n\n1. Definitions\n\n1.1. \"Contributor\" means each individual or legal entity that create"
  },
  {
    "path": "licenses/NVIDIA.txt",
    "chars": 5725,
    "preview": "           License For Customer Use of NVIDIA Software\n\n\nIMPORTANT NOTICE -- READ CAREFULLY: This License For Customer U"
  },
  {
    "path": "licenses/NextPVR.txt",
    "chars": 4119,
    "preview": "Software License Agreement for NextPVR\n\nIMPORTANT- PLEASE READ CAREFULLY BEFORE USING THIS SOFTWARE: THIS LICENSE AGREEM"
  },
  {
    "path": "licenses/OFL-1.1.txt",
    "chars": 4012,
    "preview": "SIL OPEN FONT LICENSE\n\nVersion 1.1 - 26 February 2007\n\nPREAMBLE\n\nThe goals of the Open Font License (OFL) are to stimula"
  },
  {
    "path": "licenses/QCA.txt",
    "chars": 2192,
    "preview": "Copyright (c) 2013-2017 Qualcomm Atheros, Inc.\n\nAll rights reserved.\n\nRedistribution and use in binary forms, without\nmo"
  },
  {
    "path": "licenses/Radeon_rlc.txt",
    "chars": 2944,
    "preview": "Copyright (C) 2009, 2010  Advanced Micro Devices, Inc. All rights reserved.\n\nREDISTRIBUTION: Permission is hereby grante"
  },
  {
    "path": "licenses/Vim.txt",
    "chars": 4435,
    "preview": "VIM LICENSE\n\nI) There are no restrictions on distributing unmodified copies of Vim except\nthat they must include this li"
  },
  {
    "path": "licenses/Zlib.txt",
    "chars": 827,
    "preview": "zlib License\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors b"
  },
  {
    "path": "package_bump.sh",
    "chars": 6675,
    "preview": "#!/bin/bash\n\n# This file is part of the Lakka project and was created by ToKe79. It is originally from https://github.co"
  },
  {
    "path": "packages/README.md",
    "chars": 19564,
    "preview": "# Structure of package.mk files\n\n## Introduction\n\nThe package.mk file defines variables and functions to build a package"
  },
  {
    "path": "packages/addons/addon-depends/adafruit-libraries-depends/Adafruit_Python_ADS1x15/package.mk",
    "chars": 611,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)\n\nPKG_NAME=\"Adafrui"
  },
  {
    "path": "packages/addons/addon-depends/adafruit-libraries-depends/Adafruit_Python_ADXL345/package.mk",
    "chars": 604,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)\n\nPKG_NAME=\"Adafrui"
  },
  {
    "path": "packages/addons/addon-depends/adafruit-libraries-depends/Adafruit_Python_BMP/package.mk",
    "chars": 632,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)\n\nPKG_NAME=\"Adafrui"
  },
  {
    "path": "packages/addons/addon-depends/adafruit-libraries-depends/Adafruit_Python_CharLCD/package.mk",
    "chars": 591,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)\n\nPKG_NAME=\"Adafrui"
  },
  {
    "path": "packages/addons/addon-depends/adafruit-libraries-depends/Adafruit_Python_DHT/package.mk",
    "chars": 983,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)\n\nPKG_NAME=\"Adafrui"
  },
  {
    "path": "packages/addons/addon-depends/adafruit-libraries-depends/Adafruit_Python_GPIO/package.mk",
    "chars": 587,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)\n\nPKG_NAME=\"Adafrui"
  },
  {
    "path": "packages/addons/addon-depends/adafruit-libraries-depends/Adafruit_Python_LED_Backpack/package.mk",
    "chars": 576,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)\n\nPKG_NAME=\"Adafrui"
  },
  {
    "path": "packages/addons/addon-depends/adafruit-libraries-depends/Adafruit_Python_LSM303/package.mk",
    "chars": 594,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)\n\nPKG_NAME=\"Adafrui"
  },
  {
    "path": "packages/addons/addon-depends/adafruit-libraries-depends/Adafruit_Python_MCP3008/package.mk",
    "chars": 597,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)\n\nPKG_NAME=\"Adafrui"
  },
  {
    "path": "packages/addons/addon-depends/adafruit-libraries-depends/Adafruit_Python_MCP4725/package.mk",
    "chars": 597,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)\n\nPKG_NAME=\"Adafrui"
  },
  {
    "path": "packages/addons/addon-depends/adafruit-libraries-depends/Adafruit_Python_PCA9685/package.mk",
    "chars": 594,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)\n\nPKG_NAME=\"Adafrui"
  },
  {
    "path": "packages/addons/addon-depends/adafruit-libraries-depends/Adafruit_Python_PureIO/package.mk",
    "chars": 570,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)\n\nPKG_NAME=\"Adafrui"
  },
  {
    "path": "packages/addons/addon-depends/adafruit-libraries-depends/Adafruit_Python_SI1145/package.mk",
    "chars": 595,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)\n\nPKG_NAME=\"Adafrui"
  },
  {
    "path": "packages/addons/addon-depends/adafruit-libraries-depends/Adafruit_Python_SSD1306/package.mk",
    "chars": 587,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)\n\nPKG_NAME=\"Adafrui"
  },
  {
    "path": "packages/addons/addon-depends/adafruit-libraries-depends/Adafruit_Python_TCS34725/package.mk",
    "chars": 586,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)\n\nPKG_NAME=\"Adafrui"
  },
  {
    "path": "packages/addons/addon-depends/adafruit-libraries-depends/Adafruit_Python_VCNL40xx/package.mk",
    "chars": 602,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)\n\nPKG_NAME=\"Adafrui"
  },
  {
    "path": "packages/addons/addon-depends/adafruit-libraries-depends/Adafruit_Python_WS2801/package.mk",
    "chars": 618,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)\n\nPKG_NAME=\"Adafrui"
  },
  {
    "path": "packages/addons/addon-depends/argtable2/package.mk",
    "chars": 660,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)\n\nPKG_NAME=\"argtabl"
  },
  {
    "path": "packages/addons/addon-depends/ccid/package.mk",
    "chars": 725,
    "preview": "# SPDX-License-Identifier: GPL-2.0-or-later\n# Copyright (C) 2009-2012 Stephan Raue (stephan@openelec.tv)\n# Copyright (C)"
  },
  {
    "path": "packages/addons/addon-depends/chrome-depends/at-spi2-atk/package.mk",
    "chars": 556,
    "preview": "# SPDX-License-Identifier: GPL-2.0-or-later\n# Copyright (C) 2017 Escalade\n# Copyright (C) 2018-present Team LibreELEC (h"
  },
  {
    "path": "packages/addons/addon-depends/chrome-depends/at-spi2-core/package.mk",
    "chars": 760,
    "preview": "# SPDX-License-Identifier: GPL-2.0-or-later\n# Copyright (C) 2017 Escalade\n# Copyright (C) 2018-present Team LibreELEC (h"
  },
  {
    "path": "packages/addons/addon-depends/chrome-depends/atk/package.mk",
    "chars": 709,
    "preview": "# SPDX-License-Identifier: GPL-2.0-or-later\n# Copyright (C) 2009-2012 Stephan Raue (stephan@openelec.tv)\n# Copyright (C)"
  },
  {
    "path": "packages/addons/addon-depends/chrome-depends/chrome-libXcomposite/package.mk",
    "chars": 594,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)\n\n. $(get_pkg_direc"
  },
  {
    "path": "packages/addons/addon-depends/chrome-depends/chrome-libXdamage/package.mk",
    "chars": 582,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)\n\n. $(get_pkg_direc"
  },
  {
    "path": "packages/addons/addon-depends/chrome-depends/chrome-libXfixes/package.mk",
    "chars": 579,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)\n\n. $(get_pkg_direc"
  },
  {
    "path": "packages/addons/addon-depends/chrome-depends/chrome-libXi/package.mk",
    "chars": 563,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)\n\n. $(get_pkg_direc"
  },
  {
    "path": "packages/addons/addon-depends/chrome-depends/chrome-libXrender/package.mk",
    "chars": 582,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)\n\n. $(get_pkg_direc"
  },
  {
    "path": "packages/addons/addon-depends/chrome-depends/chrome-libXtst/package.mk",
    "chars": 570,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)\n\n. $(get_pkg_direc"
  },
  {
    "path": "packages/addons/addon-depends/chrome-depends/chrome-libxcb/package.mk",
    "chars": 566,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)\n\n. $(get_pkg_direc"
  },
  {
    "path": "packages/addons/addon-depends/chrome-depends/chrome-libxkbcommon/package.mk",
    "chars": 441,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2020-present Team LibreELEC (https://libreelec.tv)\n\n. $(get_pkg_direc"
  },
  {
    "path": "packages/addons/addon-depends/chrome-depends/chrome-libxshmfence/package.mk",
    "chars": 590,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv)\n\n. $(get_pkg_direc"
  },
  {
    "path": "packages/addons/addon-depends/chrome-depends/cups/package.mk",
    "chars": 853,
    "preview": "# SPDX-License-Identifier: GPL-2.0-or-later\n# Copyright (C) 2017 Escalade\n# Copyright (C) 2018-present Team LibreELEC (h"
  },
  {
    "path": "packages/addons/addon-depends/chrome-depends/gtk3/files/settings.ini",
    "chars": 101,
    "preview": "[Settings]\ngtk-icon-theme-name = Adwaita\ngtk-theme-name = Adwaita\ngtk-font-name = Liberation Sans 12\n"
  },
  {
    "path": "packages/addons/addon-depends/chrome-depends/gtk3/package.mk",
    "chars": 1700,
    "preview": "# SPDX-License-Identifier: GPL-2.0-or-later\n# Copyright (C) 2017 Escalade\n# Copyright (C) 2018-present Team LibreELEC (h"
  },
  {
    "path": "packages/addons/addon-depends/chrome-depends/gtk3/patches/disable-to-pixdata-build.patch",
    "chars": 900,
    "preview": "--- a/gtk/gen-gtk-gresources-xml.py\t2021-02-24 19:13:19.000000000 +0000\n+++ b/gtk/gen-gtk-gresources-xml.py\t2021-04-03 2"
  },
  {
    "path": "packages/addons/addon-depends/chrome-depends/harfbuzz-icu/package.mk",
    "chars": 928,
    "preview": "# SPDX-License-Identifier: GPL-2.0-or-later\n# Copyright (C) 2009-2012 Stephan Raue (stephan@openelec.tv)\n# Copyright (C)"
  },
  {
    "path": "packages/addons/addon-depends/chrome-depends/libXScrnSaver/package.mk",
    "chars": 741,
    "preview": "# SPDX-License-Identifier: GPL-2.0-or-later\n# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv)\n# Copyright (C)"
  },
  {
    "path": "packages/addons/addon-depends/chrome-depends/libXcursor/package.mk",
    "chars": 632,
    "preview": "# SPDX-License-Identifier: GPL-2.0-or-later\n# Copyright (C) 2009-2012 Stephan Raue (stephan@openelec.tv)\n# Copyright (C)"
  },
  {
    "path": "packages/addons/addon-depends/chrome-depends/libXft/package.mk",
    "chars": 669,
    "preview": "# SPDX-License-Identifier: GPL-2.0-or-later\n# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv)\n# Copyright (C)"
  },
  {
    "path": "packages/addons/addon-depends/chrome-depends/libxss/package.mk",
    "chars": 630,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)\n\nPKG_NAME=\"libxss\""
  },
  {
    "path": "packages/addons/addon-depends/chrome-depends/scrnsaverproto/package.mk",
    "chars": 573,
    "preview": "# SPDX-License-Identifier: GPL-2.0-or-later\n# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv)\n# Copyright (C)"
  },
  {
    "path": "packages/addons/addon-depends/chrome-depends/unclutter/package.mk",
    "chars": 737,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)\n\nPKG_NAME=\"unclutt"
  },
  {
    "path": "packages/addons/addon-depends/chrome-depends/unix_ar/package.mk",
    "chars": 499,
    "preview": "# SPDX-License-Identifier: GPL-2.0-only\n# Copyright (C) 2022-present Team LibreELEC (https://libreelec.tv)\n\nPKG_NAME=\"un"
  },
  {
    "path": "packages/addons/addon-depends/comskip/package.mk",
    "chars": 831,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)\n\nPKG_NAME=\"comskip"
  },
  {
    "path": "packages/addons/addon-depends/comskip/patches/Comskip-0001-Fix-compilation-with-gcc10.patch",
    "chars": 293,
    "preview": "diff --git a/mpeg2dec.c b/mpeg2dec.c\nindex 3013dc1..5b79227 100755\n--- a/mpeg2dec.c\n+++ b/mpeg2dec.c\n@@ -161,7 +161,6 @@"
  },
  {
    "path": "packages/addons/addon-depends/cxxtools/package.mk",
    "chars": 1157,
    "preview": "# SPDX-License-Identifier: GPL-2.0-or-later\n# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)\n# Copyright (C)"
  },
  {
    "path": "packages/addons/addon-depends/cxxtools/patches/cxxtools-2.2-Char_operator_eq_unsigned_int.patch",
    "chars": 952,
    "preview": "Index: cxxtools-2.2/include/cxxtools/char.h\n===================================================================\n--- cxxt"
  },
  {
    "path": "packages/addons/addon-depends/cxxtools/patches/cxxtools-2.2-hdstream_stdio.patch",
    "chars": 367,
    "preview": "Index: cxxtools-2.0/src/hdstream.cpp\n===================================================================\n--- cxxtools-2."
  },
  {
    "path": "packages/addons/addon-depends/cxxtools/patches/cxxtools-2.2.1-make-cxxtools-char-a-trivial-class-by-defining-the-default.patch",
    "chars": 875,
    "preview": "From b773c01fc13d2ae67abc0839888e383be23562fd Mon Sep 17 00:00:00 2001\nFrom: =?UTF-8?q?Tommi=20M=C3=A4kitalo?= <tommi@tn"
  },
  {
    "path": "packages/addons/addon-depends/cxxtools/patches/cxxtools-3.0-gcc12-time.patch",
    "chars": 244,
    "preview": "https://bugs.gentoo.org/851837\n--- a/src/timer.cpp\n+++ b/src/timer.cpp\n@@ -27,6 +27,7 @@\n #include \"cxxtools/clock.h\"\n #"
  },
  {
    "path": "packages/addons/addon-depends/cxxtools/patches/cxxtools-3.0-lld-linking-openssl.patch",
    "chars": 323,
    "preview": "--- a/src/Makefile.am\n+++ b/src/Makefile.am\n@@ -173,7 +173,7 @@ libcxxtools_la_LIBADD = $(LIBICONV)\n libcxxtools_la_LDFL"
  },
  {
    "path": "packages/addons/addon-depends/cxxtools/patches/cxxtools-crosscompile.patch",
    "chars": 804,
    "preview": "diff -Naur cxxtools-2.2/configure cxxtools-2.2.patch/configure\n--- cxxtools-2.2/configure\t2013-04-21 21:13:11.000000000 "
  },
  {
    "path": "packages/addons/addon-depends/docker/cli/package.mk",
    "chars": 1553,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2022-present Team LibreELEC (https://libreelec.tv)\n\nPKG_NAME=\"cli\"\nPK"
  },
  {
    "path": "packages/addons/addon-depends/docker/cli/patches/cli-0001-path-for-cli-plugins.patch",
    "chars": 525,
    "preview": "--- a/cli-plugins/manager/manager_unix.go\t2023-02-03 11:54:16.746399916 +0000\n+++ b/cli-plugins/manager/manager_unix.go\t"
  },
  {
    "path": "packages/addons/addon-depends/docker/containerd/package.mk",
    "chars": 1757,
    "preview": "# SPDX-License-Identifier: GPL-2.0-or-later\n# Copyright (C) 2009-2016 Lukas Rusak (lrusak@libreelec.tv)\n# Copyright (C) "
  },
  {
    "path": "packages/addons/addon-depends/docker/ctop/package.mk",
    "chars": 1088,
    "preview": "# SPDX-License-Identifier: GPL-2.0-only\n# Copyright (C) 2023-present Team LibreELEC (https://libreelec.tv)\n\nPKG_NAME=\"ct"
  },
  {
    "path": "packages/addons/addon-depends/docker/moby/package.mk",
    "chars": 1745,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2022-present Team LibreELEC (https://libreelec.tv)\n\nPKG_NAME=\"moby\"\nP"
  },
  {
    "path": "packages/addons/addon-depends/docker/moby/patches/moby-001-user-addon-storage-location.patch",
    "chars": 12112,
    "preview": "# when updating this patch just create it from scratch using this command\n#\n# find . -name \"*.go\" -print | xargs sed -i "
  },
  {
    "path": "packages/addons/addon-depends/docker/moby/patches/moby-002-use-unconfined-seccomp-profile-as-default.patch",
    "chars": 982,
    "preview": "--- a/daemon/config/config.go\t2022-06-03 10:30:24.000000000 -0700\n+++ b/daemon/config/config.go\t2022-06-07 14:29:36.7557"
  },
  {
    "path": "packages/addons/addon-depends/docker/tini/package.mk",
    "chars": 680,
    "preview": "# SPDX-License-Identifier: GPL-2.0-or-later\n# Copyright (C) 2009-2016 Lukas Rusak (lrusak@libreelec.tv)\n# Copyright (C) "
  },
  {
    "path": "packages/addons/addon-depends/dotnet-runtime-depends/aspnet6-runtime/package.mk",
    "chars": 1296,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2022-present Team LibreELEC (https://libreelec.tv)\n\nPKG_NAME=\"aspnet6"
  },
  {
    "path": "packages/addons/addon-depends/dvb-tools-depends/blindscan-s2/package.mk",
    "chars": 653,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)\n\nPKG_NAME=\"blindsc"
  },
  {
    "path": "packages/addons/addon-depends/dvb-tools-depends/depends/bitstream/package.mk",
    "chars": 591,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)\n\nPKG_NAME=\"bitstre"
  },
  {
    "path": "packages/addons/addon-depends/dvb-tools-depends/depends/libev/package.mk",
    "chars": 547,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)\n\nPKG_NAME=\"libev\"\n"
  },
  {
    "path": "packages/addons/addon-depends/dvb-tools-depends/dvb-apps/package.mk",
    "chars": 700,
    "preview": "# SPDX-License-Identifier: GPL-2.0-or-later\n# Copyright (C) 2009-2012 Stephan Raue (stephan@openelec.tv)\n# Copyright (C)"
  },
  {
    "path": "packages/addons/addon-depends/dvb-tools-depends/dvb-apps/patches/dvb-apps-10_reorder-includes.patch",
    "chars": 394,
    "preview": "diff -Naur dvb-apps-20090201/util/scan/diseqc.c dvb-apps-20090201a/util/scan/diseqc.c\n--- dvb-apps-20090201/util/scan/di"
  },
  {
    "path": "packages/addons/addon-depends/dvb-tools-depends/dvb-apps/patches/dvb-apps-20_build-static-libs.patch",
    "chars": 276,
    "preview": "diff --git a/Make.rules b/Make.rules\nindex e867c3a..b2d8663 100644\n--- a/Make.rules\n+++ b/Make.rules\n@@ -9,7 +9,7 @@ ifn"
  },
  {
    "path": "packages/addons/addon-depends/dvb-tools-depends/dvb-apps/patches/dvb-apps-30_remove-av7110_loadkeys.patch",
    "chars": 330,
    "preview": "diff -Naur a/util/Makefile b/util/Makefile\n--- a/util/Makefile\t2014-03-21 12:26:36.000000000 -0700\n+++ b/util/Makefile\t2"
  },
  {
    "path": "packages/addons/addon-depends/dvb-tools-depends/dvb-apps/patches/dvb-apps-40-kernel-fix-4.14.patch",
    "chars": 1386,
    "preview": "From: CvH <namerp@googlemail.com>\nDate: Wed, 22 Nov 2017 23:45:38 +0100\nSubject: [PATCH] fix for kernel >=4.14\n\n---\n inc"
  },
  {
    "path": "packages/addons/addon-depends/dvb-tools-depends/dvb-apps/patches/dvb-apps-50-glibc-2.31-fix.patch",
    "chars": 768,
    "preview": "From 6e62b334cced721b0b2bed197fd36e44878580ce Mon Sep 17 00:00:00 2001\nFrom: MilhouseVH <milhouseVH.github@nmacleod.com>"
  },
  {
    "path": "packages/addons/addon-depends/dvb-tools-depends/dvb-apps/patches/dvb-apps-60-dont-build-tests.patch",
    "chars": 246,
    "preview": "diff -ru a/Makefile b/Makefile\n--- a/Makefile\t2014-03-21 20:26:36.000000000 +0100\n+++ b/Makefile\t2022-12-04 20:52:52.827"
  },
  {
    "path": "packages/addons/addon-depends/dvb-tools-depends/dvblast/package.mk",
    "chars": 734,
    "preview": "# SPDX-License-Identifier: GPL-2.0-or-later\n# Copyright (C) 2009-2012 Stephan Raue (stephan@openelec.tv)\n# Copyright (C)"
  },
  {
    "path": "packages/addons/addon-depends/dvb-tools-depends/dvbsnoop/package.mk",
    "chars": 551,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)\n\nPKG_NAME=\"dvbsnoo"
  },
  {
    "path": "packages/addons/addon-depends/dvb-tools-depends/mumudvb/package.mk",
    "chars": 608,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)\n\nPKG_NAME=\"mumudvb"
  },
  {
    "path": "packages/addons/addon-depends/dvb-tools-depends/szap-s2/package.mk",
    "chars": 625,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)\n\nPKG_NAME=\"szap-s2"
  },
  {
    "path": "packages/addons/addon-depends/dvb-tools-depends/t2scan/package.mk",
    "chars": 502,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)\n\nPKG_NAME=\"t2scan\""
  },
  {
    "path": "packages/addons/addon-depends/dvb-tools-depends/tune-s2/package.mk",
    "chars": 629,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)\n\nPKG_NAME=\"tune-s2"
  },
  {
    "path": "packages/addons/addon-depends/dvb-tools-depends/w_scan/package.mk",
    "chars": 565,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)\n\nPKG_NAME=\"w_scan\""
  },
  {
    "path": "packages/addons/addon-depends/dvb-tools-depends/w_scan/patches/w_scan-0001-Fix-building-with-gcc10.patch",
    "chars": 994,
    "preview": "From edbabcc7df6cd9e282991bd550d125d7f75bd738 Mon Sep 17 00:00:00 2001\nFrom: Jernej Skrabec <jernej.skrabec@siol.net>\nDa"
  },
  {
    "path": "packages/addons/addon-depends/enca/package.mk",
    "chars": 1415,
    "preview": "# SPDX-License-Identifier: GPL-2.0-or-later\n# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)\n\nPKG_NAME=\"enca"
  },
  {
    "path": "packages/addons/addon-depends/enet/package.mk",
    "chars": 654,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)\n\nPKG_NAME=\"enet\"\nP"
  },
  {
    "path": "packages/addons/addon-depends/faad2/package.mk",
    "chars": 884,
    "preview": "# SPDX-License-Identifier: GPL-2.0-or-later\n# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv)\n# Copyright (C)"
  },
  {
    "path": "packages/addons/addon-depends/ffmpegx/package.mk",
    "chars": 4343,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)\n\nPKG_NAME=\"ffmpegx"
  },
  {
    "path": "packages/addons/addon-depends/ffmpegx/patches/ffmpeg-openssl3.patch",
    "chars": 1895,
    "preview": "From 1d23e125b6f76e74b754560c3b6931507cacddce Mon Sep 17 00:00:00 2001\nFrom: Timo Rothenpieler <timo@rothenpieler.org>\nD"
  },
  {
    "path": "packages/addons/addon-depends/ffmpegx-depends/x264/package.mk",
    "chars": 1147,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)\n\nPKG_NAME=\"x264\"\nP"
  },
  {
    "path": "packages/addons/addon-depends/ffmpegx-depends/x265/package.mk",
    "chars": 624,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)\n\nPKG_NAME=\"x265\"\nP"
  },
  {
    "path": "packages/addons/addon-depends/game-tools/bchunk/package.mk",
    "chars": 647,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)\n\nPKG_NAME=\"bchunk\""
  },
  {
    "path": "packages/addons/addon-depends/game-tools/ecm-tools/package.mk",
    "chars": 462,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)\n\nPKG_NAME=\"ecm-too"
  },
  {
    "path": "packages/addons/addon-depends/game-tools/iat/package.mk",
    "chars": 584,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)\n\nPKG_NAME=\"iat\"\nPK"
  },
  {
    "path": "packages/addons/addon-depends/game-tools/linuxconsoletools/package.mk",
    "chars": 640,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)\n\nPKG_NAME=\"linuxco"
  },
  {
    "path": "packages/addons/addon-depends/game-tools/linuxconsoletools/patches/linuxconsoletools-0001-disable-building-ffmvforce.patch",
    "chars": 340,
    "preview": "diff -Naur a/utils/Makefile b/utils/Makefile\n--- a/utils/Makefile\t2022-05-21 09:44:47.000000000 +0000\n+++ b/utils/Makefi"
  },
  {
    "path": "packages/addons/addon-depends/go/package.mk",
    "chars": 1480,
    "preview": "# SPDX-License-Identifier: GPL-2.0-or-later\n# Copyright (C) 2009-2016 Lukas Rusak (lrusak@libreelec.tv)\n# Copyright (C) "
  },
  {
    "path": "packages/addons/addon-depends/go/patches/go-0001-add-ca-cert-location.patch",
    "chars": 460,
    "preview": "diff --git a/src/crypto/x509/root_linux.go b/src/crypto/x509/root_linux.go\nindex ad6ce5cae7..763c686fed 100644\n--- a/src"
  },
  {
    "path": "packages/addons/addon-depends/hidapi/package.mk",
    "chars": 565,
    "preview": "# SPDX-License-Identifier: GPL-2.0-only\n# Copyright (C) 2023-present Team LibreELEC (https://libreelec.tv)\n\nPKG_NAME=\"hi"
  },
  {
    "path": "packages/addons/addon-depends/icu/package.mk",
    "chars": 972,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)\n\nPKG_NAME=\"icu\"\nPK"
  },
  {
    "path": "packages/addons/addon-depends/icu/patches/icu-01_ldflags.patch",
    "chars": 607,
    "preview": "diff -Naur icu4c-67-1/icu-release-67-1/icu4c/source/config/mh-linux icu4c-67-1-ldflags/icu-release-67-1/icu4c/source/con"
  },
  {
    "path": "packages/addons/addon-depends/inadyn/libconfuse/package.mk",
    "chars": 553,
    "preview": "# SPDX-License-Identifier: GPL-2.0\n# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)\n\nPKG_NAME=\"libconf"
  },
  {
    "path": "packages/addons/addon-depends/inadyn/libconfuse/patches/gettext-0.20-libconfuse.patch",
    "chars": 418,
    "preview": "--- libconfuse-3.3/configure.ac\t2020-06-25 05:21:59.000000000 +0000\n+++ libconfuse-3.3/configure.ac\t2020-12-29 02:04:36."
  }
]

// ... and 5032 more files (download for full content)

About this extraction

This page contains the full source code of the shantigilbert/EmuELEC GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 5232 files (24.8 MB), approximately 6.9M tokens, and a symbol index with 1323 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!