From c299341dc7fbd200cee3f09e6644e15a99980711 Mon Sep 17 00:00:00 2001 From: Arturo Buzarra Date: Wed, 24 Apr 2019 12:45:36 +0200 Subject: [PATCH 001/133] meta-digi-dey: bump distro version to 2.6-r2 Signed-off-by: Arturo Buzarra --- README.md | 2 +- meta-digi-dey/conf/distro/dey.conf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e0e01552f..09d089687 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # Digi Embedded Yocto (DEY) 2.6 -## Release 2.6-r1.3 +## Release 2.6-r2 This document provides information about Digi Embedded Yocto, Digi International's professional embedded Yocto development environment. diff --git a/meta-digi-dey/conf/distro/dey.conf b/meta-digi-dey/conf/distro/dey.conf index d4e727d4c..6d52fcf19 100644 --- a/meta-digi-dey/conf/distro/dey.conf +++ b/meta-digi-dey/conf/distro/dey.conf @@ -1,6 +1,6 @@ DISTRO = "dey" DISTRO_NAME = "Digi Embedded Yocto" -DISTRO_VERSION = "2.6-r1" +DISTRO_VERSION = "2.6-r2" DISTRO_CODENAME = "thud" SDK_VENDOR = "-deysdk" SDK_VERSION := "${@'${DISTRO_VERSION}'}" From 0a5c1183e7c8443baae66f2f6c6f15490999ae3f Mon Sep 17 00:00:00 2001 From: Arturo Buzarra Date: Mon, 15 Apr 2019 16:32:00 +0200 Subject: [PATCH 002/133] libqmi: remove old version to use the new one from upstream There is a new version in 'meta-openembedded/meta-oe' https://jira.digi.com/browse/DEL-6559 Signed-off-by: Arturo Buzarra --- .../libqmi/libqmi/0001-Detect-clang.patch | 82 ------------------- .../libqmi/libqmi_1.18.0.bb | 20 ----- 2 files changed, 102 deletions(-) delete mode 100644 meta-digi-dey/recipes-connectivity/libqmi/libqmi/0001-Detect-clang.patch delete mode 100644 meta-digi-dey/recipes-connectivity/libqmi/libqmi_1.18.0.bb diff --git a/meta-digi-dey/recipes-connectivity/libqmi/libqmi/0001-Detect-clang.patch b/meta-digi-dey/recipes-connectivity/libqmi/libqmi/0001-Detect-clang.patch deleted file mode 100644 index e13404387..000000000 --- a/meta-digi-dey/recipes-connectivity/libqmi/libqmi/0001-Detect-clang.patch +++ /dev/null @@ -1,82 +0,0 @@ -From 8333cf300f6010243117aae6da4b823d9d7f30b2 Mon Sep 17 00:00:00 2001 -From: Khem Raj -Date: Thu, 20 Oct 2016 04:42:26 +0000 -Subject: [PATCH] Detect clang - -Check for clang compiler since we need to disable -unused-function warning for clang, at same time -pass werror when checking for compiler options if -werror is enabled so spurious options do not get -enabled. Only the ones that are supported by given -compiler are accepted. - -Signed-off-by: Khem Raj -Upstream-Status: Pending - ---- - m4/compiler-warnings.m4 | 29 +++++++++++++++++++++++++---- - 1 file changed, 25 insertions(+), 4 deletions(-) - -diff --git a/m4/compiler-warnings.m4 b/m4/compiler-warnings.m4 -index 5ba490c884dc..92022746487f 100644 ---- a/m4/compiler-warnings.m4 -+++ b/m4/compiler-warnings.m4 -@@ -2,10 +2,30 @@ AC_DEFUN([LIBQMI_COMPILER_WARNINGS], - [AC_ARG_ENABLE(more-warnings, - AS_HELP_STRING([--enable-more-warnings], [Possible values: no/yes/error]), - set_more_warnings="$enableval",set_more_warnings=error) -+ -+# Clang throws a lot of warnings when it does not understand a flag. Disable -+# this warning for now so other warnings are visible. -+AC_MSG_CHECKING([if compiling with clang]) -+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[ -+#ifndef __clang__ -+ not clang -+#endif -+ ]])], -+ [CLANG=yes], -+ [CLANG=no] -+) -+AC_MSG_RESULT([$CLANG]) -+AS_IF([test "x$CLANG" = "xyes"], [CLANG_FLAGS=-Wno-error=unused-function]) -+CFLAGS="$CFLAGS $CLANG_FLAGS" -+LDFLAGS="$LDFLAGS $CLANG_FLAGS" -+ - AC_MSG_CHECKING(for more warnings) - if test "$GCC" = "yes" -a "$set_more_warnings" != "no"; then - AC_MSG_RESULT(yes) - CFLAGS="-Wall -std=gnu89 $CFLAGS" -+ if test "x$set_more_warnings" = xerror; then -+ WERROR="-Werror" -+ fi - - for option in -Wmissing-declarations -Wmissing-prototypes \ - -Wdeclaration-after-statement -Wstrict-prototypes \ -@@ -17,22 +37,23 @@ if test "$GCC" = "yes" -a "$set_more_warnings" != "no"; then - -Wmissing-include-dirs -Waggregate-return \ - -Wformat-security -Wtype-limits; do - SAVE_CFLAGS="$CFLAGS" -- CFLAGS="$CFLAGS $option" -+ CFLAGS="$CFLAGS $option $WERROR" - AC_MSG_CHECKING([whether gcc understands $option]) - AC_TRY_COMPILE([], [], - has_option=yes, - has_option=no,) - if test $has_option = no; then - CFLAGS="$SAVE_CFLAGS" -+ else -+ CFLAGS="$SAVE_CFLAGS $option" - fi - AC_MSG_RESULT($has_option) - unset has_option - unset SAVE_CFLAGS - done -+ CFLAGS="$CFLAGS $WERROR" - unset option -- if test "x$set_more_warnings" = xerror; then -- CFLAGS="$CFLAGS -Werror" -- fi -+ unset WERROR - else - AC_MSG_RESULT(no) - fi diff --git a/meta-digi-dey/recipes-connectivity/libqmi/libqmi_1.18.0.bb b/meta-digi-dey/recipes-connectivity/libqmi/libqmi_1.18.0.bb deleted file mode 100644 index 8fc4905bb..000000000 --- a/meta-digi-dey/recipes-connectivity/libqmi/libqmi_1.18.0.bb +++ /dev/null @@ -1,20 +0,0 @@ -SUMMARY = "libqmi is a library for talking to WWAN devices by QMI protocol" -DESCRIPTION = "libqmi is a glib-based library for talking to WWAN modems \ -and devices which speak the Qualcomm MSM Interface (QMI) protocol" -HOMEPAGE = "http://www.freedesktop.org/wiki/Software/libqmi" -LICENSE = "GPLv2 & LGPLv2.1" -LIC_FILES_CHKSUM = " \ - file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ - file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c \ -" - -DEPENDS = "glib-2.0 glib-2.0-native libgudev libmbim" - -inherit autotools pkgconfig bash-completion - -SRC_URI = " \ - http://www.freedesktop.org/software/${BPN}/${BPN}-${PV}.tar.xz \ - file://0001-Detect-clang.patch \ -" -SRC_URI[md5sum] = "25bae4e383ad77f491ad49b49e04fdcf" -SRC_URI[sha256sum] = "a0a42c55935e75a630208e2f70840bd4407f56fe1c5258f5b0f6c0aaedf88cec" From 1116c6ddc69815f6161f339dd94e21632e0afbe4 Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Wed, 24 Apr 2019 12:44:47 +0200 Subject: [PATCH 003/133] Revert "sdk: remove support for the ccimx6sbc and ccimx6qpsbc" This reverts commit 0fea64037109965502d2a9f0b2fbe881d8162323. https://jira.digi.com/browse/DEL-6565 Signed-off-by: Gabriel Valcazar --- sdk/build-github.sh | 4 +- sdk/build.sh | 2 + sdk/config/ccimx6qpsbc/bblayers.conf.sample | 22 ++ sdk/config/ccimx6qpsbc/conf-notes.txt | 18 ++ sdk/config/ccimx6qpsbc/local.conf.sample | 266 ++++++++++++++++++++ sdk/config/ccimx6sbc/bblayers.conf.sample | 22 ++ sdk/config/ccimx6sbc/conf-notes.txt | 18 ++ sdk/config/ccimx6sbc/local.conf.sample | 266 ++++++++++++++++++++ 8 files changed, 617 insertions(+), 1 deletion(-) create mode 100644 sdk/config/ccimx6qpsbc/bblayers.conf.sample create mode 100644 sdk/config/ccimx6qpsbc/conf-notes.txt create mode 100644 sdk/config/ccimx6qpsbc/local.conf.sample create mode 100644 sdk/config/ccimx6sbc/bblayers.conf.sample create mode 100644 sdk/config/ccimx6sbc/conf-notes.txt create mode 100644 sdk/config/ccimx6sbc/local.conf.sample diff --git a/sdk/build-github.sh b/sdk/build-github.sh index eb9484621..fbb5750cb 100755 --- a/sdk/build-github.sh +++ b/sdk/build-github.sh @@ -22,7 +22,7 @@ set -e -AVAILABLE_PLATFORMS="ccimx8x-sbc-pro ccimx8x-sbc-express ccimx6ulsbc ccimx6ulstarter" +AVAILABLE_PLATFORMS="ccimx8x-sbc-pro ccimx8x-sbc-express ccimx6qpsbc ccimx6sbc ccimx6ulsbc ccimx6ulstarter" MANIFEST_URL="https://github.com/digi-embedded/dey-manifest.git" @@ -123,6 +123,8 @@ while read _pl _tgt; do done<<-_EOF_ ccimx8x-sbc-pro dey-image-qt ccimx8x-sbc-express dey-image-qt + ccimx6qpsbc dey-image-qt + ccimx6sbc dey-image-qt ccimx6ulsbc dey-image-qt ccimx6ulstarter core-image-base _EOF_ diff --git a/sdk/build.sh b/sdk/build.sh index 3d8bddd91..43177f2ce 100755 --- a/sdk/build.sh +++ b/sdk/build.sh @@ -173,6 +173,8 @@ while read _pl _var _tgt; do done<<-_EOF_ ccimx8x-sbc-pro DONTBUILDVARIANTS dey-image-qt,dey-image-aws ccimx8x-sbc-express DONTBUILDVARIANTS dey-image-qt,dey-image-aws + ccimx6qpsbc DONTBUILDVARIANTS dey-image-qt,dey-image-aws + ccimx6sbc DONTBUILDVARIANTS dey-image-qt,dey-image-aws ccimx6ulsbc DONTBUILDVARIANTS dey-image-qt,dey-image-aws ccimx6ulstarter DONTBUILDVARIANTS core-image-base,dey-image-aws ccimx6ulsom DONTBUILDVARIANTS dey-image-mft-module-min diff --git a/sdk/config/ccimx6qpsbc/bblayers.conf.sample b/sdk/config/ccimx6qpsbc/bblayers.conf.sample new file mode 100644 index 000000000..bc2ef9645 --- /dev/null +++ b/sdk/config/ccimx6qpsbc/bblayers.conf.sample @@ -0,0 +1,22 @@ +# POKY_BBLAYERS_CONF_VERSION is increased each time build/conf/bblayers.conf +# changes incompatibly +POKY_BBLAYERS_CONF_VERSION = "2" + +BBPATH = "${TOPDIR}" +BBFILES ?= "" + +BBLAYERS ?= " \ + ##OEROOT##/meta \ + ##OEROOT##/meta-poky \ + ##OEROOT##/meta-yocto-bsp \ + ##DIGIBASE##/meta-openembedded/meta-oe \ + ##DIGIBASE##/meta-openembedded/meta-python \ + ##DIGIBASE##/meta-openembedded/meta-networking \ + ##DIGIBASE##/meta-openembedded/meta-webserver \ + ##DIGIBASE##/meta-qt5 \ + ##DIGIBASE##/meta-swupdate \ + ##DIGIBASE##/meta-freescale \ + ##DIGIBASE##/meta-fsl-demos \ + ##DIGIBASE##/meta-digi/meta-digi-arm \ + ##DIGIBASE##/meta-digi/meta-digi-dey \ + " diff --git a/sdk/config/ccimx6qpsbc/conf-notes.txt b/sdk/config/ccimx6qpsbc/conf-notes.txt new file mode 100644 index 000000000..ed1cd5158 --- /dev/null +++ b/sdk/config/ccimx6qpsbc/conf-notes.txt @@ -0,0 +1,18 @@ +Digi Embedded Yocto provides the following image recipes: + + * dey-image-qt: graphical QT image + + By default the image is X11-based so it provides a full SATO theme + desktop environment. + + To compile the image for the framebuffer (instead of X11) add the + following line to the project's conf/local.conf: + + DISTRO_FEATURES_remove = "x11" + + * dey-image-aws: console-only image supporting Amazon Web Services IoT + + This image includes the AWS Greengrass Core and an AWS IoT platform + example application. For more information on AWS support in Digi + Embedded Yocto see the online documentation. + diff --git a/sdk/config/ccimx6qpsbc/local.conf.sample b/sdk/config/ccimx6qpsbc/local.conf.sample new file mode 100644 index 000000000..490703ef4 --- /dev/null +++ b/sdk/config/ccimx6qpsbc/local.conf.sample @@ -0,0 +1,266 @@ +# +# This file is your local configuration file and is where all local user settings +# are placed. The comments in this file give some guide to the options a new user +# to the system might want to change but pretty much any configuration option can +# be set in this file. More adventurous users can look at local.conf.extended +# which contains other examples of configuration which can be placed in this file +# but new users likely won't need any of them initially. +# +# Lines starting with the '#' character are commented out and in some cases the +# default values are provided as comments to show people example syntax. Enabling +# the option is a question of removing the # character and making any change to the +# variable as required. + +# +# Machine Selection +# +# You need to select a specific machine to target the build with. There are a selection +# of emulated machines available which can boot and run in the QEMU emulator: +# +#MACHINE ?= "qemuarm" +#MACHINE ?= "qemuarm64" +#MACHINE ?= "qemumips" +#MACHINE ?= "qemumips64" +#MACHINE ?= "qemuppc" +#MACHINE ?= "qemux86" +#MACHINE ?= "qemux86-64" +# +# There are also the following hardware board target machines included for +# demonstration purposes: +# +#MACHINE ?= "beaglebone-yocto" +#MACHINE ?= "genericx86" +#MACHINE ?= "genericx86-64" +#MACHINE ?= "mpc8315e-rdb" +#MACHINE ?= "edgerouter" +# +# This sets the default machine to be qemux86 if no other machine is selected: +#MACHINE ??= "qemux86" + +MACHINE = "ccimx6qpsbc" + +# +# Use Digi's internal git repositories +# +#DIGI_INTERNAL_GIT ?= "1" + +# +# Where to place downloads +# +# During a first build the system will download many different source code tarballs +# from various upstream projects. This can take a while, particularly if your network +# connection is slow. These are all stored in DL_DIR. When wiping and rebuilding you +# can preserve this directory to speed up this part of subsequent builds. This directory +# is safe to share between multiple builds on the same machine too. +# +# The default is a downloads directory under TOPDIR which is the build directory. +# +#DL_DIR ?= "${TOPDIR}/downloads" + +# +# Where to place shared-state files +# +# BitBake has the capability to accelerate builds based on previously built output. +# This is done using "shared state" files which can be thought of as cache objects +# and this option determines where those files are placed. +# +# You can wipe out TMPDIR leaving this directory intact and the build would regenerate +# from these files if no changes were made to the configuration. If changes were made +# to the configuration, only shared state files where the state was still valid would +# be used (done using checksums). +# +# The default is a sstate-cache directory under TOPDIR. +# +#SSTATE_DIR ?= "${TOPDIR}/sstate-cache" + +# +# Where to place the build output +# +# This option specifies where the bulk of the building work should be done and +# where BitBake should place its temporary files and output. Keep in mind that +# this includes the extraction and compilation of many applications and the toolchain +# which can use Gigabytes of hard disk space. +# +# The default is a tmp directory under TOPDIR. +# +#TMPDIR = "${TOPDIR}/tmp" + +# +# Default policy config +# +# The distribution setting controls which policy settings are used as defaults. +# The default value is fine for general Yocto project use, at least initially. +# Ultimately when creating custom policy, people will likely end up subclassing +# these defaults. +# +DISTRO ?= "dey" +# As an example of a subclass there is a "bleeding" edge policy configuration +# where many versions are set to the absolute latest code from the upstream +# source control systems. This is just mentioned here as an example, its not +# useful to most new users. +# DISTRO ?= "poky-bleeding" + +# +# Package Management configuration +# +# This variable lists which packaging formats to enable. Multiple package backends +# can be enabled at once and the first item listed in the variable will be used +# to generate the root filesystems. +# Options are: +# - 'package_deb' for debian style deb files +# - 'package_ipk' for ipk files are used by opkg (a debian style embedded package manager) +# - 'package_rpm' for rpm style packages +# E.g.: PACKAGE_CLASSES ?= "package_rpm package_deb package_ipk" +# We default to rpm: +PACKAGE_CLASSES ?= "package_rpm" + +# +# SDK target architecture +# +# This variable specifies the architecture to build SDK items for and means +# you can build the SDK packages for architectures other than the machine you are +# running the build on (i.e. building i686 packages on an x86_64 host). +# Supported values are i686 and x86_64 +#SDKMACHINE ?= "i686" + +# +# Extra image configuration defaults +# +# The EXTRA_IMAGE_FEATURES variable allows extra packages to be added to the generated +# images. Some of these options are added to certain image types automatically. The +# variable can contain the following options: +# "dbg-pkgs" - add -dbg packages for all installed packages +# (adds symbol information for debugging/profiling) +# "dev-pkgs" - add -dev packages for all installed packages +# (useful if you want to develop against libs in the image) +# "ptest-pkgs" - add -ptest packages for all ptest-enabled packages +# (useful if you want to run the package test suites) +# "tools-sdk" - add development tools (gcc, make, pkgconfig etc.) +# "tools-debug" - add debugging tools (gdb, strace) +# "eclipse-debug" - add Eclipse remote debugging support +# "tools-profile" - add profiling tools (oprofile, lttng, valgrind) +# "tools-testapps" - add useful testing tools (ts_print, aplay, arecord etc.) +# "debug-tweaks" - make an image suitable for development +# e.g. ssh root access has a blank password +# There are other application targets that can be used here too, see +# meta/classes/image.bbclass and meta/classes/core-image.bbclass for more details. +# We default to enabling the debugging tweaks. +EXTRA_IMAGE_FEATURES ?= "debug-tweaks" + +# +# Additional image features +# +# The following is a list of additional classes to use when building images which +# enable extra features. Some available options which can be included in this variable +# are: +# - 'buildstats' collect build statistics +# - 'image-mklibs' to reduce shared library files size for an image +# - 'image-prelink' in order to prelink the filesystem image +# NOTE: if listing mklibs & prelink both, then make sure mklibs is before prelink +# NOTE: mklibs also needs to be explicitly enabled for a given image, see local.conf.extended +USER_CLASSES ?= "buildstats image-mklibs image-prelink" + +# +# Runtime testing of images +# +# The build system can test booting virtual machine images under qemu (an emulator) +# after any root filesystems are created and run tests against those images. It can also +# run tests against any SDK that are built. To enable this uncomment these lines. +# See classes/test{image,sdk}.bbclass for further details. +#IMAGE_CLASSES += "testimage testsdk" +#TESTIMAGE_AUTO_qemuall = "1" + +# +# Interactive shell configuration +# +# Under certain circumstances the system may need input from you and to do this it +# can launch an interactive shell. It needs to do this since the build is +# multithreaded and needs to be able to handle the case where more than one parallel +# process may require the user's attention. The default is iterate over the available +# terminal types to find one that works. +# +# Examples of the occasions this may happen are when resolving patches which cannot +# be applied, to use the devshell or the kernel menuconfig +# +# Supported values are auto, gnome, xfce, rxvt, screen, konsole (KDE 3.x only), none +# Note: currently, Konsole support only works for KDE 3.x due to the way +# newer Konsole versions behave +#OE_TERMINAL = "auto" +# By default disable interactive patch resolution (tasks will just fail instead): +PATCHRESOLVE = "noop" + +# +# Disk Space Monitoring during the build +# +# Monitor the disk space during the build. If there is less that 1GB of space or less +# than 100K inodes in any key build location (TMPDIR, DL_DIR, SSTATE_DIR), gracefully +# shutdown the build. If there is less that 100MB or 1K inodes, perform a hard abort +# of the build. The reason for this is that running completely out of space can corrupt +# files and damages the build in ways which may not be easily recoverable. +# It's necesary to monitor /tmp, if there is no space left the build will fail +# with very exotic errors. +BB_DISKMON_DIRS ??= "\ + STOPTASKS,${TMPDIR},1G,100K \ + STOPTASKS,${DL_DIR},1G,100K \ + STOPTASKS,${SSTATE_DIR},1G,100K \ + STOPTASKS,/tmp,100M,100K \ + ABORT,${TMPDIR},100M,1K \ + ABORT,${DL_DIR},100M,1K \ + ABORT,${SSTATE_DIR},100M,1K \ + ABORT,/tmp,10M,1K" + +# +# Shared-state files from other locations +# +# As mentioned above, shared state files are prebuilt cache data objects which can +# used to accelerate build time. This variable can be used to configure the system +# to search other mirror locations for these objects before it builds the data itself. +# +# This can be a filesystem directory, or a remote url such as http or ftp. These +# would contain the sstate-cache results from previous builds (possibly from other +# machines). This variable works like fetcher MIRRORS/PREMIRRORS and points to the +# cache locations to check for the shared objects. +# NOTE: if the mirror uses the same structure as SSTATE_DIR, you need to add PATH +# at the end as shown in the examples below. This will be substituted with the +# correct path within the directory structure. +#SSTATE_MIRRORS ?= "\ +#file://.* http://someserver.tld/share/sstate/PATH;downloadfilename=PATH \n \ +#file://.* file:///some/local/dir/sstate/PATH" + +# +# Yocto Project SState Mirror +# +# The Yocto Project has prebuilt artefacts available for its releases, you can enable +# use of these by uncommenting the following line. This will mean the build uses +# the network to check for artefacts at the start of builds, which does slow it down +# equally, it will also speed up the builds by not having to build things if they are +# present in the cache. It assumes you can download something faster than you can build it +# which will depend on your network. +# +#SSTATE_MIRRORS ?= "file://.* http://sstate.yoctoproject.org/2.5/PATH;downloadfilename=PATH" + +# +# Qemu configuration +# +# By default qemu will build with a builtin VNC server where graphical output can be +# seen. The two lines below enable the SDL backend too. By default libsdl2-native will +# be built, if you want to use your host's libSDL instead of the minimal libsdl built +# by libsdl2-native then uncomment the ASSUME_PROVIDED line below. +PACKAGECONFIG_append_pn-qemu-native = " sdl" +PACKAGECONFIG_append_pn-nativesdk-qemu = " sdl" +#ASSUME_PROVIDED += "libsdl2-native" + +# CONF_VERSION is increased each time build/conf/ changes incompatibly and is used to +# track the version of this file when it was generated. This can safely be ignored if +# this doesn't mean anything to you. +CONF_VERSION = "1" + +# +# Enable local PR server +# +PRSERV_HOST = "localhost:0" + +# +# Some libraries and packages are covered by NXP EULA +# +#ACCEPT_FSL_EULA = "1" diff --git a/sdk/config/ccimx6sbc/bblayers.conf.sample b/sdk/config/ccimx6sbc/bblayers.conf.sample new file mode 100644 index 000000000..bc2ef9645 --- /dev/null +++ b/sdk/config/ccimx6sbc/bblayers.conf.sample @@ -0,0 +1,22 @@ +# POKY_BBLAYERS_CONF_VERSION is increased each time build/conf/bblayers.conf +# changes incompatibly +POKY_BBLAYERS_CONF_VERSION = "2" + +BBPATH = "${TOPDIR}" +BBFILES ?= "" + +BBLAYERS ?= " \ + ##OEROOT##/meta \ + ##OEROOT##/meta-poky \ + ##OEROOT##/meta-yocto-bsp \ + ##DIGIBASE##/meta-openembedded/meta-oe \ + ##DIGIBASE##/meta-openembedded/meta-python \ + ##DIGIBASE##/meta-openembedded/meta-networking \ + ##DIGIBASE##/meta-openembedded/meta-webserver \ + ##DIGIBASE##/meta-qt5 \ + ##DIGIBASE##/meta-swupdate \ + ##DIGIBASE##/meta-freescale \ + ##DIGIBASE##/meta-fsl-demos \ + ##DIGIBASE##/meta-digi/meta-digi-arm \ + ##DIGIBASE##/meta-digi/meta-digi-dey \ + " diff --git a/sdk/config/ccimx6sbc/conf-notes.txt b/sdk/config/ccimx6sbc/conf-notes.txt new file mode 100644 index 000000000..ed1cd5158 --- /dev/null +++ b/sdk/config/ccimx6sbc/conf-notes.txt @@ -0,0 +1,18 @@ +Digi Embedded Yocto provides the following image recipes: + + * dey-image-qt: graphical QT image + + By default the image is X11-based so it provides a full SATO theme + desktop environment. + + To compile the image for the framebuffer (instead of X11) add the + following line to the project's conf/local.conf: + + DISTRO_FEATURES_remove = "x11" + + * dey-image-aws: console-only image supporting Amazon Web Services IoT + + This image includes the AWS Greengrass Core and an AWS IoT platform + example application. For more information on AWS support in Digi + Embedded Yocto see the online documentation. + diff --git a/sdk/config/ccimx6sbc/local.conf.sample b/sdk/config/ccimx6sbc/local.conf.sample new file mode 100644 index 000000000..e57efbd01 --- /dev/null +++ b/sdk/config/ccimx6sbc/local.conf.sample @@ -0,0 +1,266 @@ +# +# This file is your local configuration file and is where all local user settings +# are placed. The comments in this file give some guide to the options a new user +# to the system might want to change but pretty much any configuration option can +# be set in this file. More adventurous users can look at local.conf.extended +# which contains other examples of configuration which can be placed in this file +# but new users likely won't need any of them initially. +# +# Lines starting with the '#' character are commented out and in some cases the +# default values are provided as comments to show people example syntax. Enabling +# the option is a question of removing the # character and making any change to the +# variable as required. + +# +# Machine Selection +# +# You need to select a specific machine to target the build with. There are a selection +# of emulated machines available which can boot and run in the QEMU emulator: +# +#MACHINE ?= "qemuarm" +#MACHINE ?= "qemuarm64" +#MACHINE ?= "qemumips" +#MACHINE ?= "qemumips64" +#MACHINE ?= "qemuppc" +#MACHINE ?= "qemux86" +#MACHINE ?= "qemux86-64" +# +# There are also the following hardware board target machines included for +# demonstration purposes: +# +#MACHINE ?= "beaglebone-yocto" +#MACHINE ?= "genericx86" +#MACHINE ?= "genericx86-64" +#MACHINE ?= "mpc8315e-rdb" +#MACHINE ?= "edgerouter" +# +# This sets the default machine to be qemux86 if no other machine is selected: +#MACHINE ??= "qemux86" + +MACHINE = "ccimx6sbc" + +# +# Use Digi's internal git repositories +# +#DIGI_INTERNAL_GIT ?= "1" + +# +# Where to place downloads +# +# During a first build the system will download many different source code tarballs +# from various upstream projects. This can take a while, particularly if your network +# connection is slow. These are all stored in DL_DIR. When wiping and rebuilding you +# can preserve this directory to speed up this part of subsequent builds. This directory +# is safe to share between multiple builds on the same machine too. +# +# The default is a downloads directory under TOPDIR which is the build directory. +# +#DL_DIR ?= "${TOPDIR}/downloads" + +# +# Where to place shared-state files +# +# BitBake has the capability to accelerate builds based on previously built output. +# This is done using "shared state" files which can be thought of as cache objects +# and this option determines where those files are placed. +# +# You can wipe out TMPDIR leaving this directory intact and the build would regenerate +# from these files if no changes were made to the configuration. If changes were made +# to the configuration, only shared state files where the state was still valid would +# be used (done using checksums). +# +# The default is a sstate-cache directory under TOPDIR. +# +#SSTATE_DIR ?= "${TOPDIR}/sstate-cache" + +# +# Where to place the build output +# +# This option specifies where the bulk of the building work should be done and +# where BitBake should place its temporary files and output. Keep in mind that +# this includes the extraction and compilation of many applications and the toolchain +# which can use Gigabytes of hard disk space. +# +# The default is a tmp directory under TOPDIR. +# +#TMPDIR = "${TOPDIR}/tmp" + +# +# Default policy config +# +# The distribution setting controls which policy settings are used as defaults. +# The default value is fine for general Yocto project use, at least initially. +# Ultimately when creating custom policy, people will likely end up subclassing +# these defaults. +# +DISTRO ?= "dey" +# As an example of a subclass there is a "bleeding" edge policy configuration +# where many versions are set to the absolute latest code from the upstream +# source control systems. This is just mentioned here as an example, its not +# useful to most new users. +# DISTRO ?= "poky-bleeding" + +# +# Package Management configuration +# +# This variable lists which packaging formats to enable. Multiple package backends +# can be enabled at once and the first item listed in the variable will be used +# to generate the root filesystems. +# Options are: +# - 'package_deb' for debian style deb files +# - 'package_ipk' for ipk files are used by opkg (a debian style embedded package manager) +# - 'package_rpm' for rpm style packages +# E.g.: PACKAGE_CLASSES ?= "package_rpm package_deb package_ipk" +# We default to rpm: +PACKAGE_CLASSES ?= "package_rpm" + +# +# SDK target architecture +# +# This variable specifies the architecture to build SDK items for and means +# you can build the SDK packages for architectures other than the machine you are +# running the build on (i.e. building i686 packages on an x86_64 host). +# Supported values are i686 and x86_64 +#SDKMACHINE ?= "i686" + +# +# Extra image configuration defaults +# +# The EXTRA_IMAGE_FEATURES variable allows extra packages to be added to the generated +# images. Some of these options are added to certain image types automatically. The +# variable can contain the following options: +# "dbg-pkgs" - add -dbg packages for all installed packages +# (adds symbol information for debugging/profiling) +# "dev-pkgs" - add -dev packages for all installed packages +# (useful if you want to develop against libs in the image) +# "ptest-pkgs" - add -ptest packages for all ptest-enabled packages +# (useful if you want to run the package test suites) +# "tools-sdk" - add development tools (gcc, make, pkgconfig etc.) +# "tools-debug" - add debugging tools (gdb, strace) +# "eclipse-debug" - add Eclipse remote debugging support +# "tools-profile" - add profiling tools (oprofile, lttng, valgrind) +# "tools-testapps" - add useful testing tools (ts_print, aplay, arecord etc.) +# "debug-tweaks" - make an image suitable for development +# e.g. ssh root access has a blank password +# There are other application targets that can be used here too, see +# meta/classes/image.bbclass and meta/classes/core-image.bbclass for more details. +# We default to enabling the debugging tweaks. +EXTRA_IMAGE_FEATURES ?= "debug-tweaks" + +# +# Additional image features +# +# The following is a list of additional classes to use when building images which +# enable extra features. Some available options which can be included in this variable +# are: +# - 'buildstats' collect build statistics +# - 'image-mklibs' to reduce shared library files size for an image +# - 'image-prelink' in order to prelink the filesystem image +# NOTE: if listing mklibs & prelink both, then make sure mklibs is before prelink +# NOTE: mklibs also needs to be explicitly enabled for a given image, see local.conf.extended +USER_CLASSES ?= "buildstats image-mklibs image-prelink" + +# +# Runtime testing of images +# +# The build system can test booting virtual machine images under qemu (an emulator) +# after any root filesystems are created and run tests against those images. It can also +# run tests against any SDK that are built. To enable this uncomment these lines. +# See classes/test{image,sdk}.bbclass for further details. +#IMAGE_CLASSES += "testimage testsdk" +#TESTIMAGE_AUTO_qemuall = "1" + +# +# Interactive shell configuration +# +# Under certain circumstances the system may need input from you and to do this it +# can launch an interactive shell. It needs to do this since the build is +# multithreaded and needs to be able to handle the case where more than one parallel +# process may require the user's attention. The default is iterate over the available +# terminal types to find one that works. +# +# Examples of the occasions this may happen are when resolving patches which cannot +# be applied, to use the devshell or the kernel menuconfig +# +# Supported values are auto, gnome, xfce, rxvt, screen, konsole (KDE 3.x only), none +# Note: currently, Konsole support only works for KDE 3.x due to the way +# newer Konsole versions behave +#OE_TERMINAL = "auto" +# By default disable interactive patch resolution (tasks will just fail instead): +PATCHRESOLVE = "noop" + +# +# Disk Space Monitoring during the build +# +# Monitor the disk space during the build. If there is less that 1GB of space or less +# than 100K inodes in any key build location (TMPDIR, DL_DIR, SSTATE_DIR), gracefully +# shutdown the build. If there is less that 100MB or 1K inodes, perform a hard abort +# of the build. The reason for this is that running completely out of space can corrupt +# files and damages the build in ways which may not be easily recoverable. +# It's necesary to monitor /tmp, if there is no space left the build will fail +# with very exotic errors. +BB_DISKMON_DIRS ??= "\ + STOPTASKS,${TMPDIR},1G,100K \ + STOPTASKS,${DL_DIR},1G,100K \ + STOPTASKS,${SSTATE_DIR},1G,100K \ + STOPTASKS,/tmp,100M,100K \ + ABORT,${TMPDIR},100M,1K \ + ABORT,${DL_DIR},100M,1K \ + ABORT,${SSTATE_DIR},100M,1K \ + ABORT,/tmp,10M,1K" + +# +# Shared-state files from other locations +# +# As mentioned above, shared state files are prebuilt cache data objects which can +# used to accelerate build time. This variable can be used to configure the system +# to search other mirror locations for these objects before it builds the data itself. +# +# This can be a filesystem directory, or a remote url such as http or ftp. These +# would contain the sstate-cache results from previous builds (possibly from other +# machines). This variable works like fetcher MIRRORS/PREMIRRORS and points to the +# cache locations to check for the shared objects. +# NOTE: if the mirror uses the same structure as SSTATE_DIR, you need to add PATH +# at the end as shown in the examples below. This will be substituted with the +# correct path within the directory structure. +#SSTATE_MIRRORS ?= "\ +#file://.* http://someserver.tld/share/sstate/PATH;downloadfilename=PATH \n \ +#file://.* file:///some/local/dir/sstate/PATH" + +# +# Yocto Project SState Mirror +# +# The Yocto Project has prebuilt artefacts available for its releases, you can enable +# use of these by uncommenting the following line. This will mean the build uses +# the network to check for artefacts at the start of builds, which does slow it down +# equally, it will also speed up the builds by not having to build things if they are +# present in the cache. It assumes you can download something faster than you can build it +# which will depend on your network. +# +#SSTATE_MIRRORS ?= "file://.* http://sstate.yoctoproject.org/2.5/PATH;downloadfilename=PATH" + +# +# Qemu configuration +# +# By default qemu will build with a builtin VNC server where graphical output can be +# seen. The two lines below enable the SDL backend too. By default libsdl2-native will +# be built, if you want to use your host's libSDL instead of the minimal libsdl built +# by libsdl2-native then uncomment the ASSUME_PROVIDED line below. +PACKAGECONFIG_append_pn-qemu-native = " sdl" +PACKAGECONFIG_append_pn-nativesdk-qemu = " sdl" +#ASSUME_PROVIDED += "libsdl2-native" + +# CONF_VERSION is increased each time build/conf/ changes incompatibly and is used to +# track the version of this file when it was generated. This can safely be ignored if +# this doesn't mean anything to you. +CONF_VERSION = "1" + +# +# Enable local PR server +# +PRSERV_HOST = "localhost:0" + +# +# Some libraries and packages are covered by NXP EULA +# +#ACCEPT_FSL_EULA = "1" From 363895aa03242bdb493696acc386b64e9ba71e60 Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Thu, 25 Apr 2019 10:26:22 +0200 Subject: [PATCH 004/133] linux: use v4.9 branch for ccimx6/ccimx6qp https://jira.digi.com/browse/DEL-6565 Signed-off-by: Gabriel Valcazar --- meta-digi-arm/recipes-kernel/linux/linux-dey-src.inc | 1 + 1 file changed, 1 insertion(+) diff --git a/meta-digi-arm/recipes-kernel/linux/linux-dey-src.inc b/meta-digi-arm/recipes-kernel/linux/linux-dey-src.inc index 6a5544c2a..f85c2c57d 100644 --- a/meta-digi-arm/recipes-kernel/linux/linux-dey-src.inc +++ b/meta-digi-arm/recipes-kernel/linux/linux-dey-src.inc @@ -5,6 +5,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7" LOCALVERSION = "-dey" SRCBRANCH = "v4.14.78/master" +SRCBRANCH_ccimx6 = "v4.9/dey-2.6/maint" SRCREV = "${AUTOREV}" # Select internal or Github Linux repo From a9fdd6287102afa6dcb989a70d45e1bbf2bffe64 Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Thu, 25 Apr 2019 10:35:38 +0200 Subject: [PATCH 005/133] imx-gpu-g2d: list compatible machines explicitly Otherwise, bitbake will try building the aarch64 version of the package and fail when building ccimx6 images. https://jira.digi.com/browse/DEL-6565 Signed-off-by: Gabriel Valcazar --- .../imx-gpu-g2d/imx-gpu-g2d_6.2.4.p2.3-aarch32.bb | 2 ++ .../imx-gpu-g2d/imx-gpu-g2d_6.2.4.p2.3-aarch64.bb | 2 ++ 2 files changed, 4 insertions(+) diff --git a/meta-digi-dey/recipes-graphics/imx-gpu-g2d/imx-gpu-g2d_6.2.4.p2.3-aarch32.bb b/meta-digi-dey/recipes-graphics/imx-gpu-g2d/imx-gpu-g2d_6.2.4.p2.3-aarch32.bb index 5f4be3698..a2cee1278 100644 --- a/meta-digi-dey/recipes-graphics/imx-gpu-g2d/imx-gpu-g2d_6.2.4.p2.3-aarch32.bb +++ b/meta-digi-dey/recipes-graphics/imx-gpu-g2d/imx-gpu-g2d_6.2.4.p2.3-aarch32.bb @@ -2,3 +2,5 @@ require imx-gpu-g2d.inc SRC_URI[md5sum] = "826349f67198359fddfe3e456770eb68" SRC_URI[sha256sum] = "35a5875d795190117b7fcdd43229d18576d530fddfd32f9d79e161fc7028d29d" + +COMPATIBLE_MACHINE = "(mx6q|mx6dl|mx6sx|mx6sl|mx7ulp)" diff --git a/meta-digi-dey/recipes-graphics/imx-gpu-g2d/imx-gpu-g2d_6.2.4.p2.3-aarch64.bb b/meta-digi-dey/recipes-graphics/imx-gpu-g2d/imx-gpu-g2d_6.2.4.p2.3-aarch64.bb index 9e1a88b79..439036e83 100644 --- a/meta-digi-dey/recipes-graphics/imx-gpu-g2d/imx-gpu-g2d_6.2.4.p2.3-aarch64.bb +++ b/meta-digi-dey/recipes-graphics/imx-gpu-g2d/imx-gpu-g2d_6.2.4.p2.3-aarch64.bb @@ -2,3 +2,5 @@ require imx-gpu-g2d.inc SRC_URI[md5sum] = "3f88b8100f7784e5a754f4605e25d563" SRC_URI[sha256sum] = "aeb21adce885bcef1c4018388b7dc2c1d3929dd29826ecf5ffcd95d48ba1865f" + +COMPATIBLE_MACHINE = "(mx8)" From 40d239081969c36a2f22a66665bc3bef38e32507 Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Thu, 25 Apr 2019 10:43:41 +0200 Subject: [PATCH 006/133] modemmanager: cosmetic: remove executable permissions from .rules file Signed-off-by: Gabriel Valcazar --- .../modemmanager/ccimx6ul/80-mm-net-device-blacklist.rules | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 meta-digi-dey/recipes-connectivity/modemmanager/modemmanager/ccimx6ul/80-mm-net-device-blacklist.rules diff --git a/meta-digi-dey/recipes-connectivity/modemmanager/modemmanager/ccimx6ul/80-mm-net-device-blacklist.rules b/meta-digi-dey/recipes-connectivity/modemmanager/modemmanager/ccimx6ul/80-mm-net-device-blacklist.rules old mode 100755 new mode 100644 From c1fd7e473c83bc8a30b090e131167a97a19dc4a6 Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Thu, 25 Apr 2019 11:19:30 +0200 Subject: [PATCH 007/133] modemmanager: add udev blacklist for ccimx6/ccimx6qp platforms https://jira.digi.com/browse/DEL-6565 Signed-off-by: Gabriel Valcazar --- .../ccimx6/80-mm-net-device-blacklist.rules | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 meta-digi-dey/recipes-connectivity/modemmanager/modemmanager/ccimx6/80-mm-net-device-blacklist.rules diff --git a/meta-digi-dey/recipes-connectivity/modemmanager/modemmanager/ccimx6/80-mm-net-device-blacklist.rules b/meta-digi-dey/recipes-connectivity/modemmanager/modemmanager/ccimx6/80-mm-net-device-blacklist.rules new file mode 100644 index 000000000..c4142b4f7 --- /dev/null +++ b/meta-digi-dey/recipes-connectivity/modemmanager/modemmanager/ccimx6/80-mm-net-device-blacklist.rules @@ -0,0 +1,16 @@ +ACTION!="add|change|move|bind", GOTO="mm_net_device_blacklist_end" + +# ModemManager documentation states that the best practice is to use the DEVPATH +# this way rather than other rules such as KERNEL, so be careful when modifying + +# Remove CAN interfaces from ModemManager probing +SUBSYSTEM=="net", DEVPATH=="/devices/soc0/soc/2000000.aips-bus/2090000.flexcan*", ENV{ID_MM_CANDIDATE}="0", ENV{ID_MM_DEVICE_IGNORE}="1" +SUBSYSTEM=="net", DEVPATH=="/devices/soc0/soc/2000000.aips-bus/2094000.flexcan*", ENV{ID_MM_CANDIDATE}="0", ENV{ID_MM_DEVICE_IGNORE}="1" + +# Remove Ethernet interfaces from ModemManager probing +SUBSYSTEM=="net", DEVPATH=="/devices/soc0/soc/2100000.aips-bus/2188000.ethernet*", ENV{ID_MM_CANDIDATE}="0", ENV{ID_MM_DEVICE_IGNORE}="1" + +# Remove MMC interfaces from ModemManager probing +SUBSYSTEM=="net", DEVPATH=="/devices/soc0/soc/2100000.aips-bus/2190000.usdhc/mmc_host*", ENV{ID_MM_CANDIDATE}="0", ENV{ID_MM_DEVICE_IGNORE}="1" + +LABEL="mm_net_device_blacklist_end" From f1ce4bfbc83a10d412919cbd674d98f17d678908 Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Thu, 25 Apr 2019 11:20:45 +0200 Subject: [PATCH 008/133] standby: homogenize standby script across all platforms * Use the same operation order when resuming interfaces * Remove unnecessary delay in ccimx6sbc standby script Signed-off-by: Gabriel Valcazar --- .../recipes-core/busybox/busybox/ccimx6qpsbc/standby | 8 ++++---- .../recipes-core/busybox/busybox/ccimx6sbc/standby | 3 +-- .../recipes-core/busybox/busybox/ccimx8x/standby | 8 ++++---- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/meta-digi-dey/recipes-core/busybox/busybox/ccimx6qpsbc/standby b/meta-digi-dey/recipes-core/busybox/busybox/ccimx6qpsbc/standby index 7ac3b94d5..5b4231e42 100755 --- a/meta-digi-dey/recipes-core/busybox/busybox/ccimx6qpsbc/standby +++ b/meta-digi-dey/recipes-core/busybox/busybox/ccimx6qpsbc/standby @@ -3,7 +3,7 @@ # # standby # -# Copyright (C) 2017,2018 by Digi International Inc. +# Copyright (C) 2017-2019 by Digi International Inc. # All rights reserved. # # This program is free software; you can redistribute it and/or modify it @@ -64,9 +64,6 @@ resume_interfaces() { done fi - # Resume NetworkManager after suspend - ${NM_DAEMON} start - # Resume bluetooth interface if [ -d "/proc/device-tree/bluetooth" ]; then if [ -n "${up_bt_on_resume}" ]; then @@ -74,6 +71,9 @@ resume_interfaces() { ${BT_DAEMON} start >/dev/null fi fi + + # Resume NetworkManager after suspend + ${NM_DAEMON} start } enter_critical_section() { diff --git a/meta-digi-dey/recipes-core/busybox/busybox/ccimx6sbc/standby b/meta-digi-dey/recipes-core/busybox/busybox/ccimx6sbc/standby index b3e3f22e7..58ce08bf6 100755 --- a/meta-digi-dey/recipes-core/busybox/busybox/ccimx6sbc/standby +++ b/meta-digi-dey/recipes-core/busybox/busybox/ccimx6sbc/standby @@ -3,7 +3,7 @@ # # standby # -# Copyright (C) 2009-2018 by Digi International Inc. +# Copyright (C) 2009-2019 by Digi International Inc. # All rights reserved. # # This program is free software; you can redistribute it and/or modify it @@ -106,7 +106,6 @@ if [ -f "${syspower}" ]; then # Suspend the device printf "mem" > ${syspower} - sleep .5 # Post-resume actions resume_interfaces diff --git a/meta-digi-dey/recipes-core/busybox/busybox/ccimx8x/standby b/meta-digi-dey/recipes-core/busybox/busybox/ccimx8x/standby index a9bb5e00c..2830b7ac8 100755 --- a/meta-digi-dey/recipes-core/busybox/busybox/ccimx8x/standby +++ b/meta-digi-dey/recipes-core/busybox/busybox/ccimx8x/standby @@ -3,7 +3,7 @@ # # standby # -# Copyright (C) 2018 by Digi International Inc. +# Copyright (C) 2018,2019 by Digi International Inc. # All rights reserved. # # This program is free software; you can redistribute it and/or modify it @@ -64,9 +64,6 @@ resume_interfaces() { done fi - # Resume NetworkManager after suspend - ${NM_DAEMON} start - # Resume bluetooth interface if [ -d "/proc/device-tree/bluetooth" ]; then if [ -n "${up_bt_on_resume}" ]; then @@ -74,6 +71,9 @@ resume_interfaces() { ${BT_DAEMON} start >/dev/null fi fi + + # Resume NetworkManager after suspend + ${NM_DAEMON} start } enter_critical_section() { From 5a14bd96665dbdb4a752d3e8220375bc923edd28 Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Thu, 25 Apr 2019 11:29:56 +0200 Subject: [PATCH 009/133] standby: add systemd standby-actions script for ccimx6/ccimx6qp platforms Even though systemd support is not yet available for these platforms, add the scripts so bitbake doesn't fail when building the busybox package. https://jira.digi.com/browse/DEL-6565 Signed-off-by: Gabriel Valcazar --- .../busybox/ccimx6qpsbc/standby-actions | 64 +++++++++++++++++++ .../busybox/busybox/ccimx6sbc/standby-actions | 64 +++++++++++++++++++ 2 files changed, 128 insertions(+) create mode 100644 meta-digi-dey/recipes-core/busybox/busybox/ccimx6qpsbc/standby-actions create mode 100644 meta-digi-dey/recipes-core/busybox/busybox/ccimx6sbc/standby-actions diff --git a/meta-digi-dey/recipes-core/busybox/busybox/ccimx6qpsbc/standby-actions b/meta-digi-dey/recipes-core/busybox/busybox/ccimx6qpsbc/standby-actions new file mode 100644 index 000000000..a2baa3db2 --- /dev/null +++ b/meta-digi-dey/recipes-core/busybox/busybox/ccimx6qpsbc/standby-actions @@ -0,0 +1,64 @@ +#!/bin/sh +#=============================================================================== +# +# standby-actions +# +# Copyright (C) 2019 by Digi International Inc. +# All rights reserved. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 as published by +# the Free Software Foundation. +# +# +# !Description: manage interfaces before suspending and after resuming from +# suspend +# +#=============================================================================== + +if [ "${1}" == "pre" ]; then + # Stop NetworkManager before suspend + systemctl stop NetworkManager + + # Suspend wireless interfaces + if [ -d "/proc/device-tree/wireless" ]; then + for i in $(sed -ne 's,^\(wlan[0-9]\)=.*,\1,g;T;p' /var/run/ifstate | sort -r); do + ifdown "${i}" && RESUME_IFACES="${RESUME_IFACES:+${RESUME_IFACES} }${i}" + done + + echo ${RESUME_IFACES} > /tmp/suspend_wlan_ifaces + grep -qs '^wlan' /proc/modules && rmmod wlan + fi + + # Suspend bluetooth interface + if [ -d "/proc/device-tree/bluetooth" ]; then + hciconfig hci0 2>&1 | grep -qs UP && touch /tmp/up_bt_on_resume + systemctl stop bluetooth + systemctl stop bluetooth-init + fi +elif [ "${1}" == "post" ]; then + # Resume wireless interfaces + if [ -d "/proc/device-tree/wireless" ]; then + # Trigger wireless module loading event, and wait until the interface exists + udevadm trigger --action=add --attr-match="modalias=sdio:c00v0271d050A" + timeout -t 5 sh -c "while [ ! -d /sys/class/net/wlan0 ]; do sleep .2; done" 2>/dev/null + + # Bring up the interfaces that were brought down on suspend + for i in $(cat /tmp/suspend_wlan_ifaces | tr ' ' '\n' | sort); do + grep -qs "^${i}" /var/run/ifstate || ifup "${i}" + done + rm -f /tmp/suspend_wlan_ifaces + fi + + # Resume NetworkManager after suspend + systemctl start NetworkManager + + # Resume bluetooth interface + if [ -d "/proc/device-tree/bluetooth" ]; then + if [ -e "/tmp/up_bt_on_resume" ]; then + systemctl start bluetooth-init + systemctl start bluetooth + rm -f /tmp/up_bt_on_resume + fi + fi +fi diff --git a/meta-digi-dey/recipes-core/busybox/busybox/ccimx6sbc/standby-actions b/meta-digi-dey/recipes-core/busybox/busybox/ccimx6sbc/standby-actions new file mode 100644 index 000000000..56ce080fd --- /dev/null +++ b/meta-digi-dey/recipes-core/busybox/busybox/ccimx6sbc/standby-actions @@ -0,0 +1,64 @@ +#!/bin/sh +#=============================================================================== +# +# standby-actions +# +# Copyright (C) 2019 by Digi International Inc. +# All rights reserved. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 as published by +# the Free Software Foundation. +# +# +# !Description: manage interfaces before suspending and after resuming from +# suspend +# +#=============================================================================== + +if [ "${1}" == "pre" ]; then + # Stop NetworkManager before suspend + systemctl stop NetworkManager + + # Suspend wireless interfaces + if [ -d "/proc/device-tree/wireless" ]; then + for i in $(sed -ne 's,^\(wlan[0-9]\)=.*,\1,g;T;p' /var/run/ifstate | sort -r); do + ifdown "${i}" && RESUME_IFACES="${RESUME_IFACES:+${RESUME_IFACES} }${i}" + done + + echo ${RESUME_IFACES} > /tmp/suspend_wlan_ifaces + grep -qs '^ath6kl_sdio' /proc/modules && rmmod ath6kl_sdio ath6kl_core + fi + + # Suspend bluetooth interface + if [ -d "/proc/device-tree/bluetooth" ]; then + hciconfig hci0 2>&1 | grep -qs UP && touch /tmp/up_bt_on_resume + systemctl stop bluetooth + systemctl stop bluetooth-init + fi +elif [ "${1}" == "post" ]; then + # Resume wireless interfaces + if [ -d "/proc/device-tree/wireless" ]; then + # Trigger wireless module loading event, and wait until the interface exists + udevadm trigger --action=add --attr-match="modalias=sdio:c00v0271d0301" + timeout -t 5 sh -c "while [ ! -d /sys/class/net/wlan0 ]; do sleep .2; done" 2>/dev/null + + # Bring up the interfaces that were brought down on suspend + for i in $(cat /tmp/suspend_wlan_ifaces | tr ' ' '\n' | sort); do + grep -qs "^${i}" /var/run/ifstate || ifup "${i}" + done + rm -f /tmp/suspend_wlan_ifaces + fi + + # Resume NetworkManager after suspend + systemctl start NetworkManager + + # Resume bluetooth interface + if [ -d "/proc/device-tree/bluetooth" ]; then + if [ -e "/tmp/up_bt_on_resume" ]; then + systemctl start bluetooth-init + systemctl start bluetooth + rm -f /tmp/up_bt_on_resume + fi + fi +fi From 995212a213ecfcf676b85423f4961a371b754d15 Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Mon, 6 May 2019 17:11:35 +0200 Subject: [PATCH 010/133] xserver-xorg: add poky SIGIO patch that was removed from upstream thud branch This patch is included in the rocko and sumo branches of poky to avoid errors when starting an xserver using DRI, but it was removed in the thud branch in favor of newer input methods other than SIGIO. SIGIO is still supported, but not explicitly in the xserver configuration. Since the vivante driver on the i.MX6 is using DRI and, by extension, SIGIO (even though there is no way to configure xserver to enable SIGIO support), the only way to make xserver start correctly is by removing the SIGIO support check in the code. https://jira.digi.com/browse/DEL-6565 Signed-off-by: Gabriel Valcazar --- ...003-Remove-check-for-useSIGIO-option.patch | 47 +++++++++++++++++++ .../xorg-xserver/xserver-xorg_%.bbappend | 4 +- 2 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 meta-digi-dey/recipes-graphics/xorg-xserver/xserver-xorg/0003-Remove-check-for-useSIGIO-option.patch diff --git a/meta-digi-dey/recipes-graphics/xorg-xserver/xserver-xorg/0003-Remove-check-for-useSIGIO-option.patch b/meta-digi-dey/recipes-graphics/xorg-xserver/xserver-xorg/0003-Remove-check-for-useSIGIO-option.patch new file mode 100644 index 000000000..beed6cb4a --- /dev/null +++ b/meta-digi-dey/recipes-graphics/xorg-xserver/xserver-xorg/0003-Remove-check-for-useSIGIO-option.patch @@ -0,0 +1,47 @@ +From cf407b16cd65ad6e26a9c8e5984e163409a5c0f7 Mon Sep 17 00:00:00 2001 +From: Prabhu Sundararaj +Date: Mon, 30 Jan 2017 16:32:06 -0600 +Subject: [PATCH] Remove check for useSIGIO option + +Commit 6a5a4e60373c1386b311b2a8bb666c32d68a9d99 removes the configure of useSIGIO +option. + +As the xfree86 SIGIO support is reworked to use internal versions of OsBlockSIGIO +and OsReleaseSIGIO. + +No longer the check for useSIGIO is needed + +Upstream-Status: Pending + +Signed-off-by: Prabhu Sundararaj +--- + hw/xfree86/os-support/shared/sigio.c | 6 ------ + 1 file changed, 6 deletions(-) + +diff --git a/hw/xfree86/os-support/shared/sigio.c b/hw/xfree86/os-support/shared/sigio.c +index 884a71c..be76498 100644 +--- a/hw/xfree86/os-support/shared/sigio.c ++++ b/hw/xfree86/os-support/shared/sigio.c +@@ -185,9 +185,6 @@ xf86InstallSIGIOHandler(int fd, void (*f) (int, void *), void *closure) + int i; + int installed = FALSE; + +- if (!xf86Info.useSIGIO) +- return 0; +- + for (i = 0; i < MAX_FUNCS; i++) { + if (!xf86SigIOFuncs[i].f) { + if (xf86IsPipe(fd)) +@@ -256,9 +253,6 @@ xf86RemoveSIGIOHandler(int fd) + int max; + int ret; + +- if (!xf86Info.useSIGIO) +- return 0; +- + max = 0; + ret = 0; + for (i = 0; i < MAX_FUNCS; i++) { +-- +2.7.4 + diff --git a/meta-digi-dey/recipes-graphics/xorg-xserver/xserver-xorg_%.bbappend b/meta-digi-dey/recipes-graphics/xorg-xserver/xserver-xorg_%.bbappend index a20f08a5f..4d172a276 100644 --- a/meta-digi-dey/recipes-graphics/xorg-xserver/xserver-xorg_%.bbappend +++ b/meta-digi-dey/recipes-graphics/xorg-xserver/xserver-xorg_%.bbappend @@ -1,7 +1,9 @@ # REPLACE meta-nxp-mx8 FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:" -SRC_URI += "file://0001-glamor-Use-CFLAGS-for-EGL-and-GBM.patch" +SRC_URI += "file://0001-glamor-Use-CFLAGS-for-EGL-and-GBM.patch \ + file://0003-Remove-check-for-useSIGIO-option.patch \ +" SRC_URI_remove = "file://0002-configure.ac-Fix-wayland-scanner-and-protocols-locat.patch" PACKAGECONFIG_remove_mx8 = "glamor" From e467623483c40b8c791f29f5b8dd6a3f7edb9df5 Mon Sep 17 00:00:00 2001 From: Hector Palacios Date: Tue, 7 May 2019 16:32:08 +0200 Subject: [PATCH 011/133] digiapix: update script and rules for watchdog and IIO The watchdog and ADC devices were not being modified to belong to 'digiapix' group, so the examples did not run properly when ran as a user different than root. Reported-by: Andreas Burghart Signed-off-by: Hector Palacios https://jira.digi.com/browse/DEL-6581 --- .../libdigiapix/libdigiapix-git/99-digiapix.rules | 4 ++++ .../recipes-digi/libdigiapix/libdigiapix-git/digiapix.sh | 5 ++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/meta-digi-dey/recipes-digi/libdigiapix/libdigiapix-git/99-digiapix.rules b/meta-digi-dey/recipes-digi/libdigiapix/libdigiapix-git/99-digiapix.rules index f48d744cb..4da39ff7c 100644 --- a/meta-digi-dey/recipes-digi/libdigiapix/libdigiapix-git/99-digiapix.rules +++ b/meta-digi-dey/recipes-digi/libdigiapix/libdigiapix-git/99-digiapix.rules @@ -1,7 +1,10 @@ # libdigiapix: configure interfaces so they can be used by group 'digiapix' SUBSYSTEM=="i2c-dev", GROUP="digiapix", MODE="0660" +SUBSYSTEM=="iio", GROUP="digiapix", MODE="0660" +SUBSYSTEM=="misc", GROUP="digiapix", MODE="0660", ENV{DEVNAME}=="/dev/watchdog" SUBSYSTEM=="spidev", GROUP="digiapix", MODE="0660" +SUBSYSTEM=="watchdog",GROUP="digiapix", MODE="0660" # # Use two different rules for GPIO's. @@ -20,3 +23,4 @@ SUBSYSTEM=="gpio", KERNEL=="gpiochip0", ACTION=="add", RUN="/etc/udev/scripts/di SUBSYSTEM=="gpio", KERNEL!="gpiochip*", ACTION=="add", RUN="/etc/udev/scripts/digiapix.sh" SUBSYSTEM=="pwm", ACTION=="add|change", RUN="/etc/udev/scripts/digiapix.sh" +SUBSYSTEM=="iio", ACTION=="add", RUN="/etc/udev/scripts/digiapix.sh" diff --git a/meta-digi-dey/recipes-digi/libdigiapix/libdigiapix-git/digiapix.sh b/meta-digi-dey/recipes-digi/libdigiapix/libdigiapix-git/digiapix.sh index 8a9bdd26e..edab820d0 100644 --- a/meta-digi-dey/recipes-digi/libdigiapix/libdigiapix-git/digiapix.sh +++ b/meta-digi-dey/recipes-digi/libdigiapix/libdigiapix-git/digiapix.sh @@ -1,6 +1,6 @@ #!/bin/sh # -# Copyright (c) 2017, Digi International Inc. +# Copyright (c) 2017-2019, Digi International Inc. # # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this @@ -28,8 +28,7 @@ elif basename "${DEVPATH}" | grep -qs "pwmchip[0-9]\+$" && [ "${ACTION}" = "chan chown root:digiapix /sys${DEVPATH}/${EXPORT} /sys${DEVPATH}/${EXPORT}/* chmod g+w /sys${DEVPATH}/${EXPORT}/* else - # Change group and mode of the sysfs files created whenever a 'gpioX' - # is exported + # Change group and mode of the sysfs files chown -h root:digiapix /sys${DEVPATH}/* chmod g+w /sys${DEVPATH}/* fi From dd745b8a115fc2f6ead82df06b25a073acce1cf8 Mon Sep 17 00:00:00 2001 From: Francisco Gil Date: Sat, 4 May 2019 11:50:56 +0200 Subject: [PATCH 012/133] greengrass: add support for greengrass 1.9.0 Signed-off-by: Francisco Gil --- .../greengrass/greengrass_1.9.0.bb | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 meta-digi-dey/recipes-aws/greengrass/greengrass_1.9.0.bb diff --git a/meta-digi-dey/recipes-aws/greengrass/greengrass_1.9.0.bb b/meta-digi-dey/recipes-aws/greengrass/greengrass_1.9.0.bb new file mode 100644 index 000000000..68bbb471a --- /dev/null +++ b/meta-digi-dey/recipes-aws/greengrass/greengrass_1.9.0.bb @@ -0,0 +1,29 @@ +# Copyright (C) 2019, Digi International Inc. + +require greengrass.inc + +# +# The Amazon Greengrass Core Product includes the following third-party software/licensing: +# github.com/aws/aws-sdk-go/; version 1.15.65 -- https://github.com/aws/aws-sdk-go/ +# github.com/coreos/go-systemd/; version 10 -- https://github.com/coreos/go-systemd/ +# github.com/docker/docker; version 1.12.0-rc4 -- https://github.com/docker/docker +# github.com/docker/go-units; version 0.3.1 -- https://github.com/docker/go-units +# github.com/go-ini/ini; version 1.32.0 -- https://github.com/go-ini/ini +# github.com/jmespath/go-jmespath; version 0.2.2 -- https://github.com/jmespath/go-jmespath +# github.com/mwitkow/go-http-dialer; version 0.1 -- https://github.com/mwitkow/go-http-dialer +# github.com/opencontainers/runc; version 1.0.0-rc3 -- https://github.com/opencontainers/runc +# github.com/opencontainers/runtime-spec; version 1.0.0-rc5 -- https://github.com/opencontainers/runtime-spec +# github.com/pquerna/ffjson; version 1.0 -- https://github.com/pquerna/ffjson +# github.com/vishvananda/netlink; version 0.1 -- https://github.com/vishvananda/netlink +# +# And the following Licenses: +LIC_FILES_CHKSUM = " \ + file://ggc/core/THIRD-PARTY-LICENSES;md5=53b6a4caa097863bc3971d5e0ac6d1db \ +" + +SRC_URI[arm.md5sum] = "57e408134eccbbda40f08dbbf52101c2" +SRC_URI[arm.sha256sum] ="ded5d88a3ec1479d79c842b16fef11f91ee331bd4b79dbba1ca639b3e51922a3" + +# For ARCH64 we use another tarball. +SRC_URI[aarch64.md5sum] = "c8e5488e302905583829f95d55d7a912" +SRC_URI[aarch64.sha256sum] ="9cd00902090e8fc34de18bf1ff21dca5e90af12ced886e6ac46e1f6899b059e1" From 3531a6521f8c85122f18b52a271c84dbd1aa76aa Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Mon, 13 May 2019 11:38:03 +0200 Subject: [PATCH 013/133] classes: update NXP bbclasses Update NXP's .bbclass files with the ones in meta-fsl-bsp-release branch sumo-4.14.98-2.0.0_ga. https://jira.digi.com/browse/DEL-6603 Signed-off-by: Gabriel Valcazar --- .../classes/fsl-eula-graphics.bbclass | 9 +++ meta-digi-arm/classes/fsl-eula-unpack.bbclass | 68 +++++++++++++++++++ .../classes/fsl-eula-unpack2.bbclass | 34 +--------- meta-digi-arm/classes/fsl-eula.bbclass | 30 +------- .../classes/fsl-eula2-package-arch.bbclass | 16 +++++ .../classes/fsl-eula2-unpack2.bbclass | 36 ++++++++++ meta-digi-arm/classes/fsl-eula2.bbclass | 16 +++++ 7 files changed, 147 insertions(+), 62 deletions(-) create mode 100644 meta-digi-arm/classes/fsl-eula-graphics.bbclass create mode 100644 meta-digi-arm/classes/fsl-eula-unpack.bbclass create mode 100644 meta-digi-arm/classes/fsl-eula2-package-arch.bbclass create mode 100644 meta-digi-arm/classes/fsl-eula2-unpack2.bbclass create mode 100644 meta-digi-arm/classes/fsl-eula2.bbclass diff --git a/meta-digi-arm/classes/fsl-eula-graphics.bbclass b/meta-digi-arm/classes/fsl-eula-graphics.bbclass new file mode 100644 index 000000000..1feb7bb56 --- /dev/null +++ b/meta-digi-arm/classes/fsl-eula-graphics.bbclass @@ -0,0 +1,9 @@ +# fsl-eula-graphics.bbclass extends the naming scheme in fsl-eula.bbclass +# to allow for graphics-backend-specific archives. +IMX_PACKAGE_NAME_APPEND = "" +IMX_PACKAGE_NAME_APPEND_class-target = \ + "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', '-wayland', \ + bb.utils.contains('DISTRO_FEATURES', 'x11', '-x11', \ + '-fb', d), d)}" +IMX_PACKAGE_NAME_append_class-target = "${IMX_PACKAGE_NAME_APPEND}" +SRC_URI_NAME_append_class-target = "${IMX_PACKAGE_NAME_APPEND}" diff --git a/meta-digi-arm/classes/fsl-eula-unpack.bbclass b/meta-digi-arm/classes/fsl-eula-unpack.bbclass new file mode 100644 index 000000000..361aed509 --- /dev/null +++ b/meta-digi-arm/classes/fsl-eula-unpack.bbclass @@ -0,0 +1,68 @@ +# fsl-eula-unpack.bbclass provides the mechanism used for unpacking +# the .bin file downloaded by HTTP and handle the EULA acceptance. +# +# To use it, the 'fsl-eula' parameter needs to be added to the +# SRC_URI entry, e.g: +# +# SRC_URI = "${FSL_MIRROR}/firmware-imx-${PV};fsl-eula=true" + +LIC_FILES_CHKSUM_append = " file://${FSL_EULA_FILE};md5=80c0478f4339af024519b3723023fe28" + +LIC_FILES_CHKSUM[vardepsexclude] += "FSL_EULA_FILE" + +python fsl_bin_do_unpack() { + src_uri = (d.getVar('SRC_URI', True) or "").split() + if len(src_uri) == 0: + return + + localdata = bb.data.createCopy(d) + bb.data.update_data(localdata) + + rootdir = localdata.getVar('WORKDIR', True) + fetcher = bb.fetch2.Fetch(src_uri, localdata) + + for url in fetcher.ud.values(): + save_cwd = os.getcwd() + # Check for supported fetchers + if url.type in ['http', 'https', 'ftp', 'file']: + if url.parm.get('fsl-eula', False): + # If download has failed, do nothing + if not os.path.exists(url.localpath): + bb.debug(1, "Exiting as '%s' cannot be found" % url.basename) + return + + # Change to the working directory + bb.note("Handling file '%s' as a Freescale's EULA binary." % url.basename) + save_cwd = os.getcwd() + os.chdir(rootdir) + + cmd = "sh %s --auto-accept --force" % (url.localpath) + bb.fetch2.runfetchcmd(cmd, d, quiet=True) + + # Return to the previous directory + os.chdir(save_cwd) +} + +python do_unpack() { + eula = d.getVar('ACCEPT_FSL_EULA', True) + eula_file = d.getVar('FSL_EULA_FILE', True) + pkg = d.getVar('PN', True) + if eula == None: + bb.fatal("To use '%s' you need to accept the Freescale EULA at '%s'. " + "Please read it and in case you accept it, write: " + "ACCEPT_FSL_EULA = \"1\" in your local.conf." % (pkg, eula_file)) + elif eula == '0': + bb.fatal("To use '%s' you need to accept the Freescale EULA." % pkg) + else: + bb.note("Freescale EULA has been accepted for '%s'" % pkg) + + # The binary unpack needs to be done first so 'S' is valid + bb.build.exec_func('fsl_bin_do_unpack', d) + + try: + bb.build.exec_func('base_do_unpack', d) + except: + raise +} + +do_unpack[vardepsexclude] += "FSL_EULA_FILE" diff --git a/meta-digi-arm/classes/fsl-eula-unpack2.bbclass b/meta-digi-arm/classes/fsl-eula-unpack2.bbclass index a3c8e668f..b5f2f651c 100644 --- a/meta-digi-arm/classes/fsl-eula-unpack2.bbclass +++ b/meta-digi-arm/classes/fsl-eula-unpack2.bbclass @@ -1,33 +1 @@ -# fsl-eula-unpack2.bbclass provides a mechanism for a) unpacking certain -# EULA-licensed archives downloaded by HTTP and b) handling the EULA -# acceptance. - -inherit fsl-eula-unpack fsl-eula - -IMX_PACKAGE_VERSION = "${PV}" - -SRC_URI = "${FSL_MIRROR}${IMX_PACKAGE_NAME}.bin;name=${SRC_URI_NAME};fsl-eula=true" - -S = "${WORKDIR}/${IMX_PACKAGE_NAME}" - -# For native apps, insert the user-local sysroot path -# For nativesdk apps, insert the correct distro folder -D_SUBDIR = "" -D_SUBDIR_class-native = "${STAGING_DIR_NATIVE}" -D_SUBDIR_class-nativesdk = "/opt/${DISTRO}" - -# SCR is the location and name of the Software Content Register file -# relative to ${D}${D_SUBDIR}. -SCR = "SCR.txt" - -do_install () { - install -d ${D}${D_SUBDIR} - cp -r ${S}/* ${D}${D_SUBDIR} - rm ${D}${D_SUBDIR}/COPYING - if [ ! -f ${D}${D_SUBDIR}/${SCR} ]; then - bbfatal "Missing Software Content Register \"${D}${D_SUBDIR}/${SCR}\"" - fi - rm ${D}${D_SUBDIR}/${SCR} -} - -FILES_${PN} = "/" +inherit fsl-eula2-unpack2 fsl-eula2-package-arch diff --git a/meta-digi-arm/classes/fsl-eula.bbclass b/meta-digi-arm/classes/fsl-eula.bbclass index ec27fcde7..be31092b8 100644 --- a/meta-digi-arm/classes/fsl-eula.bbclass +++ b/meta-digi-arm/classes/fsl-eula.bbclass @@ -1,29 +1 @@ -# fsl-eula.bbclass defines a common naming scheme used by the -# packing and unpacking mechanisms defined in fsl-eula-pack.bbclass -# and fsl-eula-unpack2.bbclass. -# -# Note that it is not necessary to inherit this class directly. It is -# already inherited from fsl-eula-pack.bbclass and fsl-eula-unpack2.bbclass. -# -# The naming scheme takes into account the fact that a single software -# package can create many archives based on the combinations of a) target -# versus native/nativesdk components, and b) the target or native architecture. -# The naming scheme can be extended through regular bitbake means to allow -# configuration-specific archives, as can be seen in fsl-eula-graphics.bbclass. - -# The variable IMX_PACKAGE_NAME gives a unique name for every possible -# archive. The variable is built from a combination of the package name ${PN}, -# the version ${IMX_PACKAGE_VERSION} and the target or native architecture, -# ${TARGET_ARCH} or ${BUILD_ARCH}. -IMX_PACKAGE_NAME = "${PN}-${IMX_PACKAGE_VERSION}-${TARGET_ARCH}" -IMX_PACKAGE_NAME_class-native = "${PN}-${IMX_PACKAGE_VERSION}-${BUILD_ARCH}" -IMX_PACKAGE_NAME_class-nativesdk = "${PN}-${IMX_PACKAGE_VERSION}-${BUILD_ARCH}" - -# The variable SRC_URI_NAME gives a unique SRC_URI name option for use in -# unpacking recipes derived from fsl-eula-unpack2.bbclass. With this name, -# a single unpacking recipe can handle all possible archives. The name is -# built from with a combination of target or native architecture, -# ${TARGET_ARCH} or ${BUILD_ARCH}, and a native or nativesdk designation. -SRC_URI_NAME = "${TARGET_ARCH}" -SRC_URI_NAME_class-native = "${BUILD_ARCH}-native" -SRC_URI_NAME_class-nativesdk = "${BUILD_ARCH}-nativesdk" +inherit fsl-eula2 fsl-eula2-package-arch diff --git a/meta-digi-arm/classes/fsl-eula2-package-arch.bbclass b/meta-digi-arm/classes/fsl-eula2-package-arch.bbclass new file mode 100644 index 000000000..ff34c9b84 --- /dev/null +++ b/meta-digi-arm/classes/fsl-eula2-package-arch.bbclass @@ -0,0 +1,16 @@ +# fsl-eula-package_arch.bbclass extends the package naming scheme to allow +# a single software package to create multiple archives based on the +# combinations of a) target versus native/nativesdk components, and b) the +# target or native architecture. + +IMX_PACKAGE_NAME_append = "-${TARGET_ARCH}" +IMX_PACKAGE_NAME_class-native_append = "-${BUILD_ARCH}" +IMX_PACKAGE_NAME_class-nativesdk_append = "-${BUILD_ARCH}" + +SRC_URI_append = ";name=${SRC_URI_NAME}" +SRC_URI_NAME = "${TARGET_ARCH}" +SRC_URI_NAME_class-native = "${BUILD_ARCH}-native" +SRC_URI_NAME_class-nativesdk = "${BUILD_ARCH}-nativesdk" + +INSANE_SKIP_${PN}_remove = "arch" +INSANE_SKIP_${PN}-dbg_remove = "arch" diff --git a/meta-digi-arm/classes/fsl-eula2-unpack2.bbclass b/meta-digi-arm/classes/fsl-eula2-unpack2.bbclass new file mode 100644 index 000000000..29b05c4a6 --- /dev/null +++ b/meta-digi-arm/classes/fsl-eula2-unpack2.bbclass @@ -0,0 +1,36 @@ +# fsl-eula-unpack2.bbclass provides a mechanism for a) unpacking certain +# EULA-licensed archives downloaded by HTTP and b) handling the EULA +# acceptance. + +inherit fsl-eula-unpack fsl-eula2 + +IMX_PACKAGE_VERSION = "${PV}" + +SRC_URI = "${FSL_MIRROR}${IMX_PACKAGE_NAME}.bin;fsl-eula=true" + +S = "${WORKDIR}/${IMX_PACKAGE_NAME}" + +# For native apps, insert the user-local sysroot path +# For nativesdk apps, insert the correct distro folder +D_SUBDIR = "" +D_SUBDIR_class-native = "${STAGING_DIR_NATIVE}" +D_SUBDIR_class-nativesdk = "/opt/${DISTRO}" + +# SCR is the location and name of the Software Content Register file +# relative to ${D}${D_SUBDIR}. +SCR = "SCR.txt" + +do_install () { + install -d ${D}${D_SUBDIR} + cp -r ${S}/* ${D}${D_SUBDIR} + if [ -d "${D}/usr/lib" ] && [ "${D}/usr/lib" != "${D}${libdir}" ]; then + mv ${D}/usr/lib ${D}${libdir} + fi + rm ${D}${D_SUBDIR}/COPYING + if [ ! -f ${D}${D_SUBDIR}/${SCR} ]; then + bbfatal "Missing Software Content Register \"${D}${D_SUBDIR}/${SCR}\"" + fi + rm ${D}${D_SUBDIR}/${SCR} +} + +FILES_${PN} = "/" diff --git a/meta-digi-arm/classes/fsl-eula2.bbclass b/meta-digi-arm/classes/fsl-eula2.bbclass new file mode 100644 index 000000000..2d1afb256 --- /dev/null +++ b/meta-digi-arm/classes/fsl-eula2.bbclass @@ -0,0 +1,16 @@ +# fsl-eula2.bbclass defines a common naming scheme used by the +# packing and unpacking mechanisms defined in fsl-eula-pack.bbclass +# and fsl-eula2-unpack2.bbclass. +# +# Note that it is not necessary to inherit this class directly. It is +# already inherited from fsl-eula-pack.bbclass and fsl-eula2-unpack2.bbclass. +# +# The naming scheme can be extended through regular bitbake means to allow +# configuration-specific archives, as can be seen in fsl-eula-graphics.bbclass +# and fsl-eula2-package-arch.bbclass. +IMX_PACKAGE_NAME = "${BPN}-${IMX_PACKAGE_VERSION}" +IMX_PACKAGE_NAME_class-native = "${PN}-${IMX_PACKAGE_VERSION}" +IMX_PACKAGE_NAME_class-nativesdk = "${PN}-${IMX_PACKAGE_VERSION}" + +INSANE_SKIP_${PN} += "arch" +INSANE_SKIP_${PN}-dbg += "arch" From d686b073111414a4fa0a34a1bfca3d115efbd814 Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Mon, 13 May 2019 11:41:15 +0200 Subject: [PATCH 014/133] firmware-imx: update to v8.1 This is the version used in meta-fsl-bsp-release branch sumo-4.14.98-2.0.0_ga. https://jira.digi.com/browse/DEL-6603 Signed-off-by: Gabriel Valcazar --- ...irmware-imx_8.0.bb => firmware-imx_8.1.bb} | 56 ++----------------- 1 file changed, 6 insertions(+), 50 deletions(-) rename meta-digi-arm/recipes-bsp/firmware-imx/{firmware-imx_8.0.bb => firmware-imx_8.1.bb} (59%) diff --git a/meta-digi-arm/recipes-bsp/firmware-imx/firmware-imx_8.0.bb b/meta-digi-arm/recipes-bsp/firmware-imx/firmware-imx_8.1.bb similarity index 59% rename from meta-digi-arm/recipes-bsp/firmware-imx/firmware-imx_8.0.bb rename to meta-digi-arm/recipes-bsp/firmware-imx/firmware-imx_8.1.bb index 5b6f61203..c9ac9192b 100644 --- a/meta-digi-arm/recipes-bsp/firmware-imx/firmware-imx_8.0.bb +++ b/meta-digi-arm/recipes-bsp/firmware-imx/firmware-imx_8.1.bb @@ -1,71 +1,28 @@ # Copyright (C) 2012-2016 Freescale Semiconductor # Copyright (C) 2018 O.S. Systems Software LTDA. -# Copyright 2017-2018 NXP +# Copyright 2017-2019 NXP SUMMARY = "Freescale IMX firmware" DESCRIPTION = "Freescale IMX firmware such as for the VPU" SECTION = "base" LICENSE = "Proprietary" -LIC_FILES_CHKSUM = "file://COPYING;md5=6dfb32a488e5fd6bae52fbf6c7ebb086" +LIC_FILES_CHKSUM = "file://COPYING;md5=80c0478f4339af024519b3723023fe28" PE = "1" -SRCBRANCH ?= "master" +SRC_URI = "${FSL_MIRROR}/firmware-imx-${PV}.bin;fsl-eula=true " -#BRCM firmware v1.141.100.6 -IMX_FIRMWARE_SRC ?= "git://github.com/NXP/imx-firmware.git;protocol=https" -SRC_URI = "${FSL_MIRROR}/firmware-imx-${PV}.bin;fsl-eula=true \ - ${IMX_FIRMWARE_SRC};branch=${SRCBRANCH};destsuffix=${S}/git " - -SRC_URI[md5sum] = "b8ae7cdd2a648168f1c90471ca87f6ba" -SRC_URI[sha256sum] = "63ec62f5d229cbed00918c8449173933f1c9d594c59396b8dd217e94f47138b0" - -#BRCM firmware git -SRCREV = "8ce9046f5058fdd2c5271f86ccfc61bc5a248ae3" +SRC_URI[md5sum] = "ff7e208761379890261b62f477b441ed" +SRC_URI[sha256sum] = "d6a1d8dc3ce8f2e928bc6b58c7d583126abfd14d8ab61a2d8ebd760a898b5195" inherit fsl-eula-unpack allarch do_install() { install -d ${D}${base_libdir}/firmware/imx - install -d ${D}${base_libdir}/firmware/bcm - install -d ${D}${sysconfdir}/firmware cp -rfv firmware/* ${D}${base_libdir}/firmware/ - #1BW_BCM43340 - install -d ${D}${base_libdir}/firmware/bcm/1BW_BCM43340 - cp -rfv git/brcm/1BW_BCM43340/*.bin ${D}${base_libdir}/firmware/bcm/1BW_BCM43340 - cp -rfv git/brcm/1BW_BCM43340/*.cal ${D}${base_libdir}/firmware/bcm/1BW_BCM43340 - cp -rfv git/brcm/1BW_BCM43340/*.hcd ${D}${sysconfdir}/firmware/ - - #1DX_BCM4343W - install -d ${D}${base_libdir}/firmware/bcm/1DX_BCM4343W - cp -rfv git/brcm/1DX_BCM4343W/*.bin ${D}${base_libdir}/firmware/bcm/1DX_BCM4343W - cp -rfv git/brcm/1DX_BCM4343W/*.cal ${D}${base_libdir}/firmware/bcm/1DX_BCM4343W - cp -rfv git/brcm/1DX_BCM4343W/*.hcd ${D}${sysconfdir}/firmware/ - - #SN8000_BCM43362 - install -d ${D}${base_libdir}/firmware/bcm/SN8000_BCM43362 - cp -rfv git/brcm/SN8000_BCM43362/*.bin ${D}${base_libdir}/firmware/bcm/SN8000_BCM43362 - cp -rfv git/brcm/SN8000_BCM43362/*.cal ${D}${base_libdir}/firmware/bcm/SN8000_BCM43362 - cp -rfv git/brcm/1DX_BCM4343W/*.hcd ${D}${sysconfdir}/firmware/ - - #ZP_BCM4339 - install -d ${D}${base_libdir}/firmware/bcm/ZP_BCM4339 - cp -rfv git/brcm/ZP_BCM4339/*.bin ${D}${base_libdir}/firmware/bcm/ZP_BCM4339 - cp -rfv git/brcm/ZP_BCM4339/*.cal ${D}${base_libdir}/firmware/bcm/ZP_BCM4339 - cp -rfv git/brcm/ZP_BCM4339/*.hcd ${D}${sysconfdir}/firmware/ - - #1FD_BCM89359 - install -d ${D}${base_libdir}/firmware/bcm/1FD_BCM89359 - cp -rfv git/brcm/1FD_BCM89359/*.bin ${D}${base_libdir}/firmware/bcm/1FD_BCM89359 - cp -rfv git/brcm/1FD_BCM89359/*.hcd ${D}${sysconfdir}/firmware/ - - #1CX_BCM4356 - install -d ${D}${base_libdir}/firmware/bcm/1CX_BCM4356 - cp -rfv git/brcm/1CX_BCM4356/fw_bcmdhd.bin ${D}${base_libdir}/firmware/bcm/1CX_BCM4356 - # Install SDMA Firmware: sdma-imx6q.bin & sdma-imx7d.bin into lib/firmware/imx/sdma install -d ${D}${base_libdir}/firmware/imx/sdma mv ${D}${base_libdir}/firmware/sdma/sdma-imx6q.bin ${D}${base_libdir}/firmware/imx/sdma @@ -144,9 +101,8 @@ ALLOW_EMPTY_${PN} = "1" PACKAGES_DYNAMIC = "${PN}-vpu-* ${PN}-sdma-*" -PACKAGES =+ "${PN}-epdc ${PN}-brcm ${PN}-scfw ${PN}-sdma" +PACKAGES =+ "${PN}-epdc ${PN}-scfw ${PN}-sdma" FILES_${PN}-epdc = "${base_libdir}/firmware/imx/epdc/" -FILES_${PN}-brcm = "${base_libdir}/firmware/bcm/*/*.bin ${base_libdir}/firmware/bcm/*/*.cal ${sysconfdir}/firmware/" FILES_${PN}-scfw = "${base_libdir}/firmware/scfw/" FILES_${PN}-sdma = " ${base_libdir}/firmware/imx/sdma" From dc66fa97a4ea1d8b77a9be937be732172cb99303 Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Mon, 13 May 2019 11:47:17 +0200 Subject: [PATCH 015/133] imx-atf: update to v2.0 This is the version used in meta-fsl-bsp-release branch sumo-4.14.98-2.0.0_ga. When using v1.5, we used a .bbappend to change the revision of the v1.5 recipe in meta-freescale. Since we're upgrading to a version that isn't supported in the other layers yet, remove the .bbappend and add the entire v2.0 recipe. https://jira.digi.com/browse/DEL-6603 Signed-off-by: Gabriel Valcazar --- .../imx-atf/imx-atf_1.5.0.bbappend | 5 -- .../recipes-bsp/imx-atf/imx-atf_2.0.bb | 82 +++++++++++++++++++ 2 files changed, 82 insertions(+), 5 deletions(-) delete mode 100644 meta-digi-arm/recipes-bsp/imx-atf/imx-atf_1.5.0.bbappend create mode 100644 meta-digi-arm/recipes-bsp/imx-atf/imx-atf_2.0.bb diff --git a/meta-digi-arm/recipes-bsp/imx-atf/imx-atf_1.5.0.bbappend b/meta-digi-arm/recipes-bsp/imx-atf/imx-atf_1.5.0.bbappend deleted file mode 100644 index 9ab208a93..000000000 --- a/meta-digi-arm/recipes-bsp/imx-atf/imx-atf_1.5.0.bbappend +++ /dev/null @@ -1,5 +0,0 @@ -# Copyright (C) 2019 Digi International. - -# Use the v4.14 ga BSP branch -SRCBRANCH = "imx_4.14.78_1.0.0_ga" -SRCREV = "d6451cc1e162eff89b03dd63e86d55b9baa8885b" diff --git a/meta-digi-arm/recipes-bsp/imx-atf/imx-atf_2.0.bb b/meta-digi-arm/recipes-bsp/imx-atf/imx-atf_2.0.bb new file mode 100644 index 000000000..f6e26e821 --- /dev/null +++ b/meta-digi-arm/recipes-bsp/imx-atf/imx-atf_2.0.bb @@ -0,0 +1,82 @@ +# Copyright 2017-2018 NXP + +DESCRIPTION = "i.MX ARM Trusted Firmware" +SECTION = "BSP" +LICENSE = "BSD-3-Clause" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/BSD-3-Clause;md5=550794465ba0ec5312d6919e203a55f9" + +inherit fsl-eula-unpack pkgconfig deploy + +PV = "2.0+git${SRCPV}" + +ATF_SRC ?= "git://source.codeaurora.org/external/imx/imx-atf.git;protocol=https" +SRCBRANCH = "imx_4.14.98_2.0.0_ga" + +SRC_URI = "${ATF_SRC};branch=${SRCBRANCH}" +SRCREV = "1cb68fa0a0dd8bc00b9871b51d4c4e1d0a827b2d" + +S = "${WORKDIR}/git" + +BOOT_TOOLS = "imx-boot-tools" + +SOC_ATF ?= "imx8qm" +SOC_ATF_mx8qm = "imx8qm" +SOC_ATF_mx8qxp = "imx8qx" +SOC_ATF_mx8mq = "imx8mq" +SOC_ATF_mx8mm = "imx8mm" + +SYSROOT_DIRS += "/boot" + +BUILD_OPTEE = "${@bb.utils.contains('COMBINED_FEATURES', 'optee', 'true', 'false', d)}" + +do_compile () { + export CROSS_COMPILE="${TARGET_PREFIX}" + cd ${S} + # Clear LDFLAGS to avoid the option -Wl recognize issue + unset LDFLAGS + + echo "-> Build ${SOC_ATF} bl31.bin" + # Set BUIL_STRING with the revision info + BUILD_STRING="" + if [ -e ${S}/.revision ]; then + cur_rev=`cat ${S}/.revision` + echo " Current revision is ${cur_rev} ." + BUILD_STRING="BUILD_STRING=${cur_rev}" + else + echo " No .revision found! " + fi + oe_runmake clean PLAT=${SOC_ATF} + oe_runmake ${BUILD_STRING} PLAT=${SOC_ATF} bl31 + + # Build opteee version + if [ "${BUILD_OPTEE}" = "true" ]; then + oe_runmake clean PLAT=${SOC_ATF} BUILD_BASE=build-optee + oe_runmake ${BUILD_STRING} PLAT=${SOC_ATF} BUILD_BASE=build-optee SPD=opteed bl31 + fi + unset CROSS_COMPILE +} + +do_install () { + install -d ${D}/boot + install -m 0644 ${S}/build/${SOC_ATF}/release/bl31.bin ${D}/boot/bl31-${SOC_ATF}.bin + # Install opteee version + if [ "${BUILD_OPTEE}" = "true" ]; then + install -m 0644 ${S}/build-optee/${SOC_ATF}/release/bl31.bin ${D}/boot/bl31-${SOC_ATF}.bin-optee + fi +} + +do_deploy () { + install -d ${DEPLOYDIR}/${BOOT_TOOLS} + install -m 0644 ${S}/build/${SOC_ATF}/release/bl31.bin ${DEPLOYDIR}/${BOOT_TOOLS}/bl31-${SOC_ATF}.bin + # Deploy opteee version + if [ "${BUILD_OPTEE}" = "true" ]; then + install -m 0644 ${S}/build-optee/${SOC_ATF}/release/bl31.bin ${DEPLOYDIR}/${BOOT_TOOLS}/bl31-${SOC_ATF}.bin-optee + fi +} + +addtask deploy before do_install after do_compile + +FILES_${PN} = "/boot" + +PACKAGE_ARCH = "${MACHINE_ARCH}" +COMPATIBLE_MACHINE = "(mx8)" From 7c465b30c356371714cc13f5814898d827103dd6 Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Mon, 13 May 2019 12:01:52 +0200 Subject: [PATCH 016/133] imx-mkimage: update revision to use v4.14.98 BSP branch This is the version used in meta-fsl-bsp-release branch sumo-4.14.98-2.0.0_ga. https://jira.digi.com/browse/DEL-6603 Signed-off-by: Gabriel Valcazar --- meta-digi-arm/recipes-bsp/imx-mkimage/imx-mkimage_%.bbappend | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/meta-digi-arm/recipes-bsp/imx-mkimage/imx-mkimage_%.bbappend b/meta-digi-arm/recipes-bsp/imx-mkimage/imx-mkimage_%.bbappend index 719569874..730abc765 100644 --- a/meta-digi-arm/recipes-bsp/imx-mkimage/imx-mkimage_%.bbappend +++ b/meta-digi-arm/recipes-bsp/imx-mkimage/imx-mkimage_%.bbappend @@ -1,5 +1,5 @@ # Copyright (C) 2018,2019 Digi International, Inc. # Use the v4.14 ga BSP branch -SRCBRANCH = "imx_4.14.78_1.0.0_ga" -SRCREV = "2cf091c075ea1950afa22a56e224dc4e448db542" +SRCBRANCH = "imx_4.14.98_2.0.0_ga" +SRCREV = "dd0234001713623c79be92b60fa88bc07b07f24f" From 09677a6a5290daff14ede21fe0c9957e340a36e2 Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Mon, 13 May 2019 12:10:35 +0200 Subject: [PATCH 017/133] linux: add new linux-imx-headers recipe This recipe's package is meant for packages that require NXP-specific linux headers. https://jira.digi.com/browse/DEL-6603 Signed-off-by: Gabriel Valcazar --- .../linux/linux-imx-headers_4.14.98.bb | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 meta-digi-arm/recipes-kernel/linux/linux-imx-headers_4.14.98.bb diff --git a/meta-digi-arm/recipes-kernel/linux/linux-imx-headers_4.14.98.bb b/meta-digi-arm/recipes-kernel/linux/linux-imx-headers_4.14.98.bb new file mode 100644 index 000000000..6e2bdfb16 --- /dev/null +++ b/meta-digi-arm/recipes-kernel/linux/linux-imx-headers_4.14.98.bb @@ -0,0 +1,52 @@ +# Copyright 2017-2018 NXP +# Released under the MIT license (see COPYING.MIT for the terms) + +SUMMARY = "Installs i.MX-specific kernel headers" +DESCRIPTION = "Installs i.MX-specific kernel headers to userspace. \ +New headers are installed in ${includedir}/imx." +LICENSE = "GPLv2" +LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7" + +require recipes-kernel/linux/linux-dey-src.inc + +S = "${WORKDIR}/git" + +do_compile[noexec] = "1" + +IMX_UAPI_HEADERS = " \ + dma-buf.h \ + hantrodec.h \ + hx280enc.h \ + ion.h \ + ipu.h \ + isl29023.h \ + mxc_asrc.h \ + mxc_dcic.h \ + mxc_mlb.h \ + mxc_sim_interface.h \ + mxc_v4l2.h \ + mxcfb.h \ + pxp_device.h \ + pxp_dma.h \ + videodev2.h \ +" + +do_install() { + # We install all headers inside of B so we can copy only the + # whitelisted ones, and there is no risk of a new header to be + # installed by mistake. + oe_runmake headers_install INSTALL_HDR_PATH=${B}${exec_prefix} + + # FIXME: The ion.h is still on staging so "promote" it for now + cp ${S}/drivers/staging/android/uapi/ion.h ${B}${includedir}/linux + + # Install whitelisted headers only + for h in ${IMX_UAPI_HEADERS}; do + install -D -m 0644 ${B}${includedir}/linux/$h \ + ${D}${includedir}/imx/linux/$h + done +} + +ALLOW_EMPTY_${PN} = "1" + +PACKAGE_ARCH = "${MACHINE_SOCARCH}" From a89c696cb3937e6f0c326291d6ff4740c946df57 Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Mon, 13 May 2019 12:14:07 +0200 Subject: [PATCH 018/133] libdrm: update revision This is the version used in meta-fsl-bsp-release branch sumo-4.14.98-2.0.0_ga. https://jira.digi.com/browse/DEL-6603 Signed-off-by: Gabriel Valcazar --- meta-digi-dey/recipes-graphics/drm/libdrm_2.4.91.imx.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meta-digi-dey/recipes-graphics/drm/libdrm_2.4.91.imx.bb b/meta-digi-dey/recipes-graphics/drm/libdrm_2.4.91.imx.bb index dad9a5198..8f30704f5 100644 --- a/meta-digi-dey/recipes-graphics/drm/libdrm_2.4.91.imx.bb +++ b/meta-digi-dey/recipes-graphics/drm/libdrm_2.4.91.imx.bb @@ -17,7 +17,7 @@ SRC_URI = "${IMX_LIBDRM_SRC};branch=${IMX_LIBDRM_BRANCH} \ file://fix_O_CLOEXEC_undeclared.patch \ file://0001-configure.ac-Allow-explicit-enabling-of-cunit-tests.patch \ " -SRCREV = "49cca25f6319f3607b121093e46e474fe528aa39" +SRCREV = "95645843f59495387a072d48374718f22e69d7a4" DEFAULT_PREFERENCE = "-1" From 2cbcd32c5cc853e2e9517b901ffc683777897638 Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Mon, 13 May 2019 12:15:29 +0200 Subject: [PATCH 019/133] imx-dpu-g2d: update to v1.7.0 This is the version used in meta-fsl-bsp-release branch sumo-4.14.98-2.0.0_ga. https://jira.digi.com/browse/DEL-6603 Signed-off-by: Gabriel Valcazar --- .../{imx-dpu-g2d_1.6.0.bb => imx-dpu-g2d_1.7.0.bb} | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) rename meta-digi-dey/recipes-graphics/imx-dpu-g2d/{imx-dpu-g2d_1.6.0.bb => imx-dpu-g2d_1.7.0.bb} (80%) diff --git a/meta-digi-dey/recipes-graphics/imx-dpu-g2d/imx-dpu-g2d_1.6.0.bb b/meta-digi-dey/recipes-graphics/imx-dpu-g2d/imx-dpu-g2d_1.7.0.bb similarity index 80% rename from meta-digi-dey/recipes-graphics/imx-dpu-g2d/imx-dpu-g2d_1.6.0.bb rename to meta-digi-dey/recipes-graphics/imx-dpu-g2d/imx-dpu-g2d_1.7.0.bb index 2f7ad1175..c8ec8f18e 100644 --- a/meta-digi-dey/recipes-graphics/imx-dpu-g2d/imx-dpu-g2d_1.6.0.bb +++ b/meta-digi-dey/recipes-graphics/imx-dpu-g2d/imx-dpu-g2d_1.7.0.bb @@ -4,7 +4,7 @@ DESCRIPTION = "GPU G2D library and apps for i.MX with 2D GPU and DPU" LICENSE = "Proprietary" -LIC_FILES_CHKSUM = "file://COPYING;md5=6dfb32a488e5fd6bae52fbf6c7ebb086" +LIC_FILES_CHKSUM = "file://COPYING;md5=80c0478f4339af024519b3723023fe28" RDEPENDS_${PN} = "libgal-imx libdrm" @@ -16,8 +16,8 @@ S="${WORKDIR}/${PN}-${PV}" inherit fsl-eula-unpack -SRC_URI[md5sum] = "080de224085c37db107b5e477bd7900a" -SRC_URI[sha256sum] = "854014164be517467252a2f0a79145bdcdd2892243b317ba25a3157d85a612ba" +SRC_URI[md5sum] = "a47ae6db002b47031e44d8402c40604e" +SRC_URI[sha256sum] = "5a2785ba1f4e4ea6f61ab98f8408600adca9decd66511e6665023325184bf7e9" do_install () { From 4d5ee19512064d2f39907422a365042b0fd4d4f4 Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Mon, 13 May 2019 12:17:01 +0200 Subject: [PATCH 020/133] imx-gpu-g2d: update to v6.2.4.p4.0 This is the version used in meta-fsl-bsp-release branch sumo-4.14.98-2.0.0_ga. Instead of having one common .inc file and one .bb file per architecture, we now have one common .bb file for both architectures. https://jira.digi.com/browse/DEL-6603 Signed-off-by: Gabriel Valcazar --- .../imx-gpu-g2d_6.2.4.p2.3-aarch32.bb | 6 ----- .../imx-gpu-g2d_6.2.4.p2.3-aarch64.bb | 6 ----- ...-gpu-g2d.inc => imx-gpu-g2d_6.2.4.p4.0.bb} | 27 ++++++++++--------- 3 files changed, 14 insertions(+), 25 deletions(-) delete mode 100644 meta-digi-dey/recipes-graphics/imx-gpu-g2d/imx-gpu-g2d_6.2.4.p2.3-aarch32.bb delete mode 100644 meta-digi-dey/recipes-graphics/imx-gpu-g2d/imx-gpu-g2d_6.2.4.p2.3-aarch64.bb rename meta-digi-dey/recipes-graphics/imx-gpu-g2d/{imx-gpu-g2d.inc => imx-gpu-g2d_6.2.4.p4.0.bb} (50%) diff --git a/meta-digi-dey/recipes-graphics/imx-gpu-g2d/imx-gpu-g2d_6.2.4.p2.3-aarch32.bb b/meta-digi-dey/recipes-graphics/imx-gpu-g2d/imx-gpu-g2d_6.2.4.p2.3-aarch32.bb deleted file mode 100644 index a2cee1278..000000000 --- a/meta-digi-dey/recipes-graphics/imx-gpu-g2d/imx-gpu-g2d_6.2.4.p2.3-aarch32.bb +++ /dev/null @@ -1,6 +0,0 @@ -require imx-gpu-g2d.inc - -SRC_URI[md5sum] = "826349f67198359fddfe3e456770eb68" -SRC_URI[sha256sum] = "35a5875d795190117b7fcdd43229d18576d530fddfd32f9d79e161fc7028d29d" - -COMPATIBLE_MACHINE = "(mx6q|mx6dl|mx6sx|mx6sl|mx7ulp)" diff --git a/meta-digi-dey/recipes-graphics/imx-gpu-g2d/imx-gpu-g2d_6.2.4.p2.3-aarch64.bb b/meta-digi-dey/recipes-graphics/imx-gpu-g2d/imx-gpu-g2d_6.2.4.p2.3-aarch64.bb deleted file mode 100644 index 439036e83..000000000 --- a/meta-digi-dey/recipes-graphics/imx-gpu-g2d/imx-gpu-g2d_6.2.4.p2.3-aarch64.bb +++ /dev/null @@ -1,6 +0,0 @@ -require imx-gpu-g2d.inc - -SRC_URI[md5sum] = "3f88b8100f7784e5a754f4605e25d563" -SRC_URI[sha256sum] = "aeb21adce885bcef1c4018388b7dc2c1d3929dd29826ecf5ffcd95d48ba1865f" - -COMPATIBLE_MACHINE = "(mx8)" diff --git a/meta-digi-dey/recipes-graphics/imx-gpu-g2d/imx-gpu-g2d.inc b/meta-digi-dey/recipes-graphics/imx-gpu-g2d/imx-gpu-g2d_6.2.4.p4.0.bb similarity index 50% rename from meta-digi-dey/recipes-graphics/imx-gpu-g2d/imx-gpu-g2d.inc rename to meta-digi-dey/recipes-graphics/imx-gpu-g2d/imx-gpu-g2d_6.2.4.p4.0.bb index 92d1d908b..e872a3139 100644 --- a/meta-digi-dey/recipes-graphics/imx-gpu-g2d/imx-gpu-g2d.inc +++ b/meta-digi-dey/recipes-graphics/imx-gpu-g2d/imx-gpu-g2d_6.2.4.p4.0.bb @@ -1,38 +1,39 @@ # Copyright (C) 2016 Freescale Semiconductor # Copyright 2017-2018 NXP +# Copyright 2018 (C) O.S. Systems Software LTDA. # Released under the MIT license (see COPYING.MIT for the terms) DESCRIPTION = "GPU G2D library and apps for i.MX with 2D GPU and no DPU" LICENSE = "Proprietary" -LIC_FILES_CHKSUM = "file://COPYING;md5=6dfb32a488e5fd6bae52fbf6c7ebb086" +LIC_FILES_CHKSUM = "file://COPYING;md5=80c0478f4339af024519b3723023fe28" DEPENDS += "libgal-imx" PROVIDES += "virtual/libg2d" -SRC_URI = "${FSL_MIRROR}/${PN}-${PV}.bin;fsl-eula=true" +FSLBIN_NAME = "${PN}-${PV}-${TARGET_ARCH}" -S="${WORKDIR}/${PN}-${PV}" +SRC_URI = "${FSL_MIRROR}/${FSLBIN_NAME}.bin;name=${TARGET_ARCH};fsl-eula=true" +SRC_URI[aarch64.md5sum] = "ec8d8662ac31b96122a1af7736831482" +SRC_URI[aarch64.sha256sum] = "362265b9c6c6ce05b1fafb412efe6617cf142669eb21302beec5e87ebbfe6a25" +SRC_URI[arm.md5sum] = "bb1ef2e365b5d72e2a03c3b39d2016cc" +SRC_URI[arm.sha256sum] = "27557094f4b5e7bef87c73131959503f3d0c3a6ea1c4f010d86c1668078f7f22" + +S="${WORKDIR}/${FSLBIN_NAME}" inherit fsl-eula-unpack -do_install () { - +do_install() { install -d ${D}${libdir} install -d ${D}${includedir} - cp ${S}/g2d/usr/lib/*.so* ${D}${libdir} cp -Pr ${S}/g2d/usr/include/* ${D}${includedir} cp -r ${S}/gpu-demos/opt ${D} } -RDEPENDS_${PN} = "libgal-imx" - FILES_${PN} = "${libdir}/libg2d* /opt" FILES_${PN}-dev = "${includedir}" INSANE_SKIP_${PN} = "ldflags" -# Compatible with i.MX with 2D GPU but no DPU -COMPATIBLE_MACHINE_2D = "(^$)" -COMPATIBLE_MACHINE_2D_imxgpu2d = "${MACHINE}" -COMPATIBLE_MACHINE = "${COMPATIBLE_MACHINE_2D}" -COMPATIBLE_MACHINE_imxdpu = "(^$)" +RDEPENDS_${PN} = "libgal-imx" + +COMPATIBLE_MACHINE = "(imxgpu2d)" From 793e901678bb68f289a951be1d2e1a0f7d8face9 Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Mon, 13 May 2019 12:20:14 +0200 Subject: [PATCH 021/133] imx-gpu-viv: update to v6.2.4.p4.0 This is the version used in meta-fsl-bsp-release branch sumo-4.14.98-2.0.0_ga. https://jira.digi.com/browse/DEL-6603 Signed-off-by: Gabriel Valcazar --- .../recipes-graphics/imx-gpu-viv/imx-gpu-viv-v6.inc | 9 +++++---- .../imx-gpu-viv/imx-gpu-viv_6.2.4.p2.3-aarch32.bb | 6 ------ .../imx-gpu-viv/imx-gpu-viv_6.2.4.p2.3-aarch64.bb | 6 ------ .../imx-gpu-viv/imx-gpu-viv_6.2.4.p4.0-aarch32.bb | 8 ++++++++ .../imx-gpu-viv/imx-gpu-viv_6.2.4.p4.0-aarch64.bb | 8 ++++++++ 5 files changed, 21 insertions(+), 16 deletions(-) delete mode 100644 meta-digi-dey/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.2.4.p2.3-aarch32.bb delete mode 100644 meta-digi-dey/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.2.4.p2.3-aarch64.bb create mode 100644 meta-digi-dey/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.2.4.p4.0-aarch32.bb create mode 100644 meta-digi-dey/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.2.4.p4.0-aarch64.bb diff --git a/meta-digi-dey/recipes-graphics/imx-gpu-viv/imx-gpu-viv-v6.inc b/meta-digi-dey/recipes-graphics/imx-gpu-viv/imx-gpu-viv-v6.inc index b2682eda9..d7d5a2c02 100644 --- a/meta-digi-dey/recipes-graphics/imx-gpu-viv/imx-gpu-viv-v6.inc +++ b/meta-digi-dey/recipes-graphics/imx-gpu-viv/imx-gpu-viv-v6.inc @@ -5,7 +5,6 @@ DESCRIPTION = "GPU driver and apps for imx" SECTION = "libs" LICENSE = "Proprietary" -LIC_FILES_CHKSUM = "file://COPYING;md5=6dfb32a488e5fd6bae52fbf6c7ebb086" DEPENDS += \ "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', \ @@ -153,8 +152,8 @@ do_install () { cp -r ${S}/gpu-demos/opt ${D} cp -r ${S}/gpu-tools/gmem-info/usr/bin/* ${D}${bindir} - # Use vulkan header from vulkan recipe to support vkmark - rm -rf ${D}${includedir}/vulkan/vulkan.h + # Use vulkan headers from vulkan recipe + rm -rf ${D}${includedir}/vulkan install -d ${D}${libdir}/pkgconfig if ${HAS_GBM}; then @@ -300,6 +299,7 @@ FILES_libegl-imx-dev = "${includedir}/EGL ${includedir}/KHR ${libdir}/pkgconfig/ FILES_libgal-imx = "${libdir}/libGAL${SOLIBS} ${libdir}/libGAL_egl${SOLIBS}" FILES_libgal-imx-dev = "${libdir}/libGAL${SOLIBSDEV} ${includedir}/HAL" +RDEPENDS_libgal-imx += "kernel-module-imx-gpu-viv" RPROVIDES_libgal-imx += "libgal-imx" INSANE_SKIP_libgal-imx += "build-deps" @@ -309,7 +309,7 @@ FILES_libgbm-imx_mx8 = "${libdir}/libgbm${SOLIBS} ${libdir}/gbm_viv${S FILES_libgbm-imx-dev_mx8 = "${libdir}/pkgconfig/gbm.pc ${includedir}/gbm.h ${libdir}/libgbm${SOLIBSDEV}" RDEPENDS_libgbm-imx_append_mx8 = " libdrm" -FILES_libvulkan-imx = "${libdir}/vulkan/libvulkan_VSI${SOLIBS}" +FILES_libvulkan-imx = "${libdir}/vulkan/libvulkan_VSI${SOLIBS} ${libdir}/libSPIRV_viv${SOLIBS}" FILES_libvulkan-imx-dev = "${includedir}/vulkan ${libdir}/vulkan/libvulkan_VSI${SOLIBSDEV}" INSANE_SKIP_libvulkan-imx += "dev-deps dev-so" @@ -342,6 +342,7 @@ FILES_libglslc-imx-dev = "${includedir}/CL ${libdir}/libGLSLC${SOLIBSDEV}" FILES_libopencl-imx = "${libdir}/libOpenCL${SOLIBS} \ ${libdir}/libVivanteOpenCL${SOLIBS} \ + ${libdir}/libLLVM_viv${SOLIBS} \ ${sysconfdir}/OpenCL/vendors/Vivante.icd" FILES_libopencl-imx-dev = "${includedir}/CL ${libdir}/libOpenCL${SOLIBSDEV}" RDEPENDS_libopencl-imx= "libclc-imx" diff --git a/meta-digi-dey/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.2.4.p2.3-aarch32.bb b/meta-digi-dey/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.2.4.p2.3-aarch32.bb deleted file mode 100644 index 9532d9fb5..000000000 --- a/meta-digi-dey/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.2.4.p2.3-aarch32.bb +++ /dev/null @@ -1,6 +0,0 @@ -require imx-gpu-viv-v6.inc - -SRC_URI[md5sum] = "d5529f8b6a6db1714f996a0de0b0858a" -SRC_URI[sha256sum] = "832d75095d746083bab13cefb0ab27e2da3930eadc215b8f2994d8cd02e387ab" - -COMPATIBLE_MACHINE = "(mx6q|mx6dl|mx6sx|mx6sl|mx7ulp)" diff --git a/meta-digi-dey/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.2.4.p2.3-aarch64.bb b/meta-digi-dey/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.2.4.p2.3-aarch64.bb deleted file mode 100644 index 31e67544b..000000000 --- a/meta-digi-dey/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.2.4.p2.3-aarch64.bb +++ /dev/null @@ -1,6 +0,0 @@ -require imx-gpu-viv-v6.inc - -SRC_URI[md5sum] = "9a58192b56e2ed0737a29cd59e52734b" -SRC_URI[sha256sum] = "041da1d3495d8e8485f08d56a8f5db4a1a9a75a510adb10c65d83be7c3281e80" - -COMPATIBLE_MACHINE = "(mx8)" diff --git a/meta-digi-dey/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.2.4.p4.0-aarch32.bb b/meta-digi-dey/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.2.4.p4.0-aarch32.bb new file mode 100644 index 000000000..2bf0a2ba5 --- /dev/null +++ b/meta-digi-dey/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.2.4.p4.0-aarch32.bb @@ -0,0 +1,8 @@ +require imx-gpu-viv-v6.inc + +LIC_FILES_CHKSUM = "file://COPYING;md5=80c0478f4339af024519b3723023fe28" + +SRC_URI[md5sum] = "83c40f63358dd3bd9bbc1cd7521bf8fe" +SRC_URI[sha256sum] = "5abfc3b24c1f9d02970064898fb30da705b67bc7e967dbfbf0525c1cc60f2491" + +COMPATIBLE_MACHINE = "(mx6q|mx6dl|mx6sx|mx6sl|mx7ulp)" diff --git a/meta-digi-dey/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.2.4.p4.0-aarch64.bb b/meta-digi-dey/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.2.4.p4.0-aarch64.bb new file mode 100644 index 000000000..1891dd727 --- /dev/null +++ b/meta-digi-dey/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.2.4.p4.0-aarch64.bb @@ -0,0 +1,8 @@ +require imx-gpu-viv-v6.inc + +LIC_FILES_CHKSUM = "file://COPYING;md5=80c0478f4339af024519b3723023fe28" + +SRC_URI[md5sum] = "a937571f6ecf85bdff1dfb3b6c834ed0" +SRC_URI[sha256sum] = "1eb4ebe2fa11d8fb7beb8fc7046bb57093fd416d0a401608d78cd48b65624fcd" + +COMPATIBLE_MACHINE = "(mx8)" From e3aebef77c9b16310c5d35f34c93f599dc149a07 Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Mon, 13 May 2019 13:05:04 +0200 Subject: [PATCH 022/133] xf86-video-imx-vivante: update to v6.2.4.p4.0 This is the version used in meta-fsl-bsp-release branch sumo-4.14.98-2.0.0_ga. The code revision is exactly the same as the one in v6.2.4.p2.3, so simply rename the recipe and delete files that are not necessary anymore. https://jira.digi.com/browse/DEL-6603 Signed-off-by: Gabriel Valcazar --- ...top-using-Git-to-write-local-version.patch | 87 ------------------- .../xf86-video-imx-vivante_%.bbappend | 8 -- ...b => xf86-video-imx-vivante_6.2.4.p4.0.bb} | 0 3 files changed, 95 deletions(-) delete mode 100644 meta-digi-dey/recipes-graphics/xorg-driver/xf86-video-imx-vivante/Stop-using-Git-to-write-local-version.patch delete mode 100644 meta-digi-dey/recipes-graphics/xorg-driver/xf86-video-imx-vivante_%.bbappend rename meta-digi-dey/recipes-graphics/xorg-driver/{xf86-video-imx-vivante_6.2.4.p2.3.bb => xf86-video-imx-vivante_6.2.4.p4.0.bb} (100%) diff --git a/meta-digi-dey/recipes-graphics/xorg-driver/xf86-video-imx-vivante/Stop-using-Git-to-write-local-version.patch b/meta-digi-dey/recipes-graphics/xorg-driver/xf86-video-imx-vivante/Stop-using-Git-to-write-local-version.patch deleted file mode 100644 index f541e5c17..000000000 --- a/meta-digi-dey/recipes-graphics/xorg-driver/xf86-video-imx-vivante/Stop-using-Git-to-write-local-version.patch +++ /dev/null @@ -1,87 +0,0 @@ -From 69a92f4576a1e789ba2fcf957164d2c4013020c5 Mon Sep 17 00:00:00 2001 -From: Otavio Salvador -Date: Wed, 2 Dec 2015 13:36:25 +0000 -Subject: [PATCH] Stop using Git to write local version -Organization: O.S. Systems Software LTDA. - -The standard version does not use a Git repository so we should not -use Git to identify the commit of the build as it can end getting the -version from a wrong repository and can be misleading. - -Upstream-Status: Pending - -Signed-off-by: Otavio Salvador ---- - EXA/src/makefile.tc | 6 +++--- - FslExt/src/makefile.tc | 6 +++--- - util/autohdmi/makefile.tc | 6 +++--- - util/pandisplay/makefile.tc | 6 +++--- - 4 files changed, 12 insertions(+), 12 deletions(-) - -diff --git a/EXA/src/makefile.tc b/EXA/src/makefile.tc -index 0b9a9e6..ec6e68d 100644 ---- a/EXA/src/makefile.tc -+++ b/EXA/src/makefile.tc -@@ -52,8 +52,8 @@ prefix ?= /usr - sysroot ?= / - - # get git commit number --COMMITNR := `git log -n 1 --format=%H` --DIRTY := `git diff-index --quiet HEAD || echo '-dirty'` --LOCAL_CFLAGS += -DCOMMIT="${COMMITNR}${DIRTY}" -+#COMMITNR := `git log -n 1 --format=%H` -+#DIRTY := `git diff-index --quiet HEAD || echo '-dirty'` -+#LOCAL_CFLAGS += -DCOMMIT="${COMMITNR}${DIRTY}" - - -diff --git a/FslExt/src/makefile.tc b/FslExt/src/makefile.tc -index 0b9a9e6..ec6e68d 100644 ---- a/FslExt/src/makefile.tc -+++ b/FslExt/src/makefile.tc -@@ -52,8 +52,8 @@ prefix ?= /usr - sysroot ?= / - - # get git commit number --COMMITNR := `git log -n 1 --format=%H` --DIRTY := `git diff-index --quiet HEAD || echo '-dirty'` --LOCAL_CFLAGS += -DCOMMIT="${COMMITNR}${DIRTY}" -+#COMMITNR := `git log -n 1 --format=%H` -+#DIRTY := `git diff-index --quiet HEAD || echo '-dirty'` -+#LOCAL_CFLAGS += -DCOMMIT="${COMMITNR}${DIRTY}" - - -diff --git a/util/autohdmi/makefile.tc b/util/autohdmi/makefile.tc -index c9de0a6..d0a468c 100644 ---- a/util/autohdmi/makefile.tc -+++ b/util/autohdmi/makefile.tc -@@ -64,8 +64,8 @@ prefix ?= /usr - sysroot ?= / - - # get git commit number --COMMITNR := `git log -n 1 --format=%H` --DIRTY := `git diff-index --quiet HEAD || echo '-dirty'` --LOCAL_CFLAGS += -DCOMMIT="${COMMITNR}${DIRTY}" -+#COMMITNR := `git log -n 1 --format=%H` -+#DIRTY := `git diff-index --quiet HEAD || echo '-dirty'` -+#LOCAL_CFLAGS += -DCOMMIT="${COMMITNR}${DIRTY}" - - -diff --git a/util/pandisplay/makefile.tc b/util/pandisplay/makefile.tc -index 28732b9..bf54c20 100644 ---- a/util/pandisplay/makefile.tc -+++ b/util/pandisplay/makefile.tc -@@ -64,8 +64,8 @@ prefix ?= /usr - sysroot ?= / - - # get git commit number --COMMITNR := `git log -n 1 --format=%H` --DIRTY := `git diff-index --quiet HEAD || echo '-dirty'` --LOCAL_CFLAGS += -DCOMMIT="${COMMITNR}${DIRTY}" -+#COMMITNR := `git log -n 1 --format=%H` -+#DIRTY := `git diff-index --quiet HEAD || echo '-dirty'` -+#LOCAL_CFLAGS += -DCOMMIT="${COMMITNR}${DIRTY}" - - --- -2.1.4 - diff --git a/meta-digi-dey/recipes-graphics/xorg-driver/xf86-video-imx-vivante_%.bbappend b/meta-digi-dey/recipes-graphics/xorg-driver/xf86-video-imx-vivante_%.bbappend deleted file mode 100644 index 9ec6bd0dc..000000000 --- a/meta-digi-dey/recipes-graphics/xorg-driver/xf86-video-imx-vivante_%.bbappend +++ /dev/null @@ -1,8 +0,0 @@ -# Patch for MX8 DRM_VIV -RDEPENDS_${PN}_append_mx8 = " kernel-module-vivante" - -DEPENDS_remove = "virtual/libgal-x11" -DEPENDS_append = " libgal-imx" - -# Use lflags defined in the EXA makefile -EXTRA_OEMAKE_remove = "LFLAGS="${LDFLAGS}"" diff --git a/meta-digi-dey/recipes-graphics/xorg-driver/xf86-video-imx-vivante_6.2.4.p2.3.bb b/meta-digi-dey/recipes-graphics/xorg-driver/xf86-video-imx-vivante_6.2.4.p4.0.bb similarity index 100% rename from meta-digi-dey/recipes-graphics/xorg-driver/xf86-video-imx-vivante_6.2.4.p2.3.bb rename to meta-digi-dey/recipes-graphics/xorg-driver/xf86-video-imx-vivante_6.2.4.p4.0.bb From a74e80ab2d5809dc0cb3a9a4f784a1638935ac2a Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Mon, 13 May 2019 13:14:32 +0200 Subject: [PATCH 023/133] opencv: update to v4.0.1.imx This is the version used in meta-fsl-bsp-release branch sumo-4.14.98-2.0.0_ga. https://jira.digi.com/browse/DEL-6603 Signed-off-by: Gabriel Valcazar --- .../opencv/opencv/0001-Dont-use-isystem.patch | 30 ++++---- ...-around-deprecated-ffmpeg-RAW-functi.patch | 33 ++++++++ ...1-dnn-allow-to-use-external-protobuf.patch | 66 ---------------- ...void-resizing-a-const-Mat-in-decolor.patch | 66 ---------------- .../0002-photo-Decolor-corrections.patch | 51 ------------- .../0003-To-fix-errors-as-following.patch | 28 ++----- .../opencv/opencv/fix_openvx_samples.patch | 11 --- .../opencv/opencv/fix_python_bindings.patch | 14 ---- .../opencv/opencv/fixpkgconfig.patch | 29 ------- .../opencv/opencv/protobuf.patch | 57 -------------- .../opencv/opencv/uselocalxfeatures.patch | 11 +-- .../opencv/opencv_3.4.2.bbappend | 61 --------------- .../{opencv_3.4.2.bb => opencv_4.0.1.imx.bb} | 75 +++++++++++++------ 13 files changed, 114 insertions(+), 418 deletions(-) create mode 100644 meta-digi-dey/recipes-graphics/opencv/opencv/0001-Temporarliy-work-around-deprecated-ffmpeg-RAW-functi.patch delete mode 100644 meta-digi-dey/recipes-graphics/opencv/opencv/0001-dnn-allow-to-use-external-protobuf.patch delete mode 100755 meta-digi-dey/recipes-graphics/opencv/opencv/0001-photo-avoid-resizing-a-const-Mat-in-decolor.patch delete mode 100755 meta-digi-dey/recipes-graphics/opencv/opencv/0002-photo-Decolor-corrections.patch delete mode 100644 meta-digi-dey/recipes-graphics/opencv/opencv/fix_openvx_samples.patch delete mode 100644 meta-digi-dey/recipes-graphics/opencv/opencv/fix_python_bindings.patch delete mode 100644 meta-digi-dey/recipes-graphics/opencv/opencv/fixpkgconfig.patch delete mode 100644 meta-digi-dey/recipes-graphics/opencv/opencv/protobuf.patch delete mode 100644 meta-digi-dey/recipes-graphics/opencv/opencv_3.4.2.bbappend rename meta-digi-dey/recipes-graphics/opencv/{opencv_3.4.2.bb => opencv_4.0.1.imx.bb} (76%) diff --git a/meta-digi-dey/recipes-graphics/opencv/opencv/0001-Dont-use-isystem.patch b/meta-digi-dey/recipes-graphics/opencv/opencv/0001-Dont-use-isystem.patch index 6dd48fcdc..bf0b80a30 100644 --- a/meta-digi-dey/recipes-graphics/opencv/opencv/0001-Dont-use-isystem.patch +++ b/meta-digi-dey/recipes-graphics/opencv/opencv/0001-Dont-use-isystem.patch @@ -1,26 +1,30 @@ -From 2bc6bb9831d07f035fea74ea745cea43dd5f9ef9 Mon Sep 17 00:00:00 2001 +From 7144c44ec70dee73a628463b99ffeed74b1a8ef6 Mon Sep 17 00:00:00 2001 From: Khem Raj -Date: Sat, 9 Sep 2017 23:48:31 -0700 +Date: Tue, 11 Sep 2018 00:21:18 -0700 Subject: [PATCH] Dont use isystem +clang really does not like it + +Upstream-Status: Pending + Signed-off-by: Khem Raj --- -Upstream-Status: Pending + cmake/OpenCVPCHSupport.cmake | 2 ++ + 1 file changed, 2 insertions(+) - cmake/OpenCVPCHSupport.cmake | 10 ++++------ - 1 file changed, 4 insertions(+), 6 deletions(-) - -Index: git/cmake/OpenCVPCHSupport.cmake -=================================================================== ---- git.orig/cmake/OpenCVPCHSupport.cmake -+++ git/cmake/OpenCVPCHSupport.cmake -@@ -17,7 +17,8 @@ IF(CMAKE_COMPILER_IS_GNUCXX) - IF(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.2.0") +diff --git a/cmake/OpenCVPCHSupport.cmake b/cmake/OpenCVPCHSupport.cmake +index f9b1b48b65..fe27a136f5 100644 +--- a/cmake/OpenCVPCHSupport.cmake ++++ b/cmake/OpenCVPCHSupport.cmake +@@ -18,6 +18,8 @@ IF(CV_GCC) SET(PCHSupport_FOUND TRUE) ENDIF() -- + + SET(CMAKE_INCLUDE_SYSTEM_FLAG_C "-I") + SET(CMAKE_INCLUDE_SYSTEM_FLAG_CXX "-I") SET(_PCH_include_prefix "-I") SET(_PCH_isystem_prefix "-isystem") SET(_PCH_define_prefix "-D") +-- +2.18.0 + diff --git a/meta-digi-dey/recipes-graphics/opencv/opencv/0001-Temporarliy-work-around-deprecated-ffmpeg-RAW-functi.patch b/meta-digi-dey/recipes-graphics/opencv/opencv/0001-Temporarliy-work-around-deprecated-ffmpeg-RAW-functi.patch new file mode 100644 index 000000000..63cb7f943 --- /dev/null +++ b/meta-digi-dey/recipes-graphics/opencv/opencv/0001-Temporarliy-work-around-deprecated-ffmpeg-RAW-functi.patch @@ -0,0 +1,33 @@ +From 7d31f41d2a6759e244983504ce855fc32916b97a Mon Sep 17 00:00:00 2001 +From: Jason Wessel +Date: Wed, 9 May 2018 13:33:59 -0700 +Subject: [PATCH] Temporarliy work around deprecated ffmpeg RAW function + compile failure until next uprev + +Signed-off-by: Jason Wessel +--- + modules/videoio/src/cap_ffmpeg_impl.hpp | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/modules/videoio/src/cap_ffmpeg_impl.hpp b/modules/videoio/src/cap_ffmpeg_impl.hpp +index 5a9b10f075..97c6b74b07 100644 +--- a/modules/videoio/src/cap_ffmpeg_impl.hpp ++++ b/modules/videoio/src/cap_ffmpeg_impl.hpp +@@ -667,6 +667,14 @@ struct ImplMutex::Impl + + #endif + ++/* NOTE This is deprecated in ffmpeg and the code should be removed */ ++#ifndef AVFMT_RAWPICTURE ++#define AVFMT_RAWPICTURE 0x0020 ++#endif /* AVFMT_RAWPICTURE */ ++#ifndef CODEC_FLAG_GLOBAL_HEADER ++#define CODEC_FLAG_GLOBAL_HEADER AV_CODEC_FLAG_GLOBAL_HEADER ++#endif ++ + void ImplMutex::init() + { + impl = new Impl(); +-- +2.11.0 + diff --git a/meta-digi-dey/recipes-graphics/opencv/opencv/0001-dnn-allow-to-use-external-protobuf.patch b/meta-digi-dey/recipes-graphics/opencv/opencv/0001-dnn-allow-to-use-external-protobuf.patch deleted file mode 100644 index c8ae3f0cc..000000000 --- a/meta-digi-dey/recipes-graphics/opencv/opencv/0001-dnn-allow-to-use-external-protobuf.patch +++ /dev/null @@ -1,66 +0,0 @@ -From f1604999632344f5bcbf6f611693917f6a9c2aa3 Mon Sep 17 00:00:00 2001 -From: Alexander Alekhin -Date: Mon, 9 Jul 2018 17:19:35 +0300 -Subject: [PATCH] dnn: allow to use external protobuf - -"custom layers" feature will not work properly in these builds. - -Signed-off-by: Tom Hochstein - -Upstream-Status: Backport [https://github.com/opencv/opencv/commit/e2b5d112909b9dfd764f14833b82e38e4bc2f81f] ---- - modules/dnn/CMakeLists.txt | 4 ++++ - modules/dnn/src/caffe/caffe_io.cpp | 4 ++++ - modules/dnn/test/test_layers.cpp | 4 ++++ - 3 files changed, 12 insertions(+) - -diff --git a/modules/dnn/CMakeLists.txt b/modules/dnn/CMakeLists.txt -index e306dde..a2f741c 100644 ---- a/modules/dnn/CMakeLists.txt -+++ b/modules/dnn/CMakeLists.txt -@@ -48,6 +48,10 @@ if(ANDROID) - add_definitions(-DDISABLE_POSIX_MEMALIGN -DTH_DISABLE_HEAP_TRACKING) - endif() - -+if(NOT BUILD_PROTOBUF) -+ add_definitions(-DOPENCV_DNN_EXTERNAL_PROTOBUF=1) -+endif() -+ - add_definitions(-DHAVE_PROTOBUF=1) - - #suppress warnings in autogenerated caffe.pb.* files -diff --git a/modules/dnn/src/caffe/caffe_io.cpp b/modules/dnn/src/caffe/caffe_io.cpp -index 730c752..9f4e31c 100644 ---- a/modules/dnn/src/caffe/caffe_io.cpp -+++ b/modules/dnn/src/caffe/caffe_io.cpp -@@ -1120,7 +1120,11 @@ bool ReadProtoFromTextFile(const char* filename, Message* proto) { - std::ifstream fs(filename, std::ifstream::in); - CHECK(fs.is_open()) << "Can't open \"" << filename << "\""; - IstreamInputStream input(&fs); -+#ifndef OPENCV_DNN_EXTERNAL_PROTOBUF - return google::protobuf::TextFormat::Parser(true).Parse(&input, proto); -+#else -+ return google::protobuf::TextFormat::Parser().Parse(&input, proto); -+#endif - } - - bool ReadProtoFromBinaryFile(const char* filename, Message* proto) { -diff --git a/modules/dnn/test/test_layers.cpp b/modules/dnn/test/test_layers.cpp -index 963206b..05ea61a 100644 ---- a/modules/dnn/test/test_layers.cpp -+++ b/modules/dnn/test/test_layers.cpp -@@ -1150,7 +1150,11 @@ private: - - TEST(Layer_Test_Interp_custom, Accuracy) - { -+#ifndef OPENCV_DNN_EXTERNAL_PROTOBUF - CV_DNN_REGISTER_LAYER_CLASS(Interp, InterpLayer); -+#else -+ CV_DNN_REGISTER_LAYER_CLASS(DISABLED_Interp, InterpLayer); // requires patched protobuf (available in OpenCV source tree only) -+#endif - testLayerUsingCaffeModels("layer_interp", DNN_TARGET_CPU, false, false); - LayerFactory::unregisterLayer("Interp"); - } --- -2.7.4 - diff --git a/meta-digi-dey/recipes-graphics/opencv/opencv/0001-photo-avoid-resizing-a-const-Mat-in-decolor.patch b/meta-digi-dey/recipes-graphics/opencv/opencv/0001-photo-avoid-resizing-a-const-Mat-in-decolor.patch deleted file mode 100755 index 35bb96ad2..000000000 --- a/meta-digi-dey/recipes-graphics/opencv/opencv/0001-photo-avoid-resizing-a-const-Mat-in-decolor.patch +++ /dev/null @@ -1,66 +0,0 @@ -From f49f6d52b45a09a133621c3e96b77b321746452f Mon Sep 17 00:00:00 2001 -From: berak -Date: Tue, 7 Aug 2018 15:14:22 +0200 -Subject: [PATCH] photo: avoid resizing a const Mat in decolor() - ---- - modules/photo/src/contrast_preserve.hpp | 27 ++++++++++++++++++--------- - 1 file changed, 18 insertions(+), 9 deletions(-) - -diff --git a/modules/photo/src/contrast_preserve.hpp b/modules/photo/src/contrast_preserve.hpp -index ec8274e..65ca9c1 100644 ---- a/modules/photo/src/contrast_preserve.hpp -+++ b/modules/photo/src/contrast_preserve.hpp -@@ -204,14 +204,19 @@ void Decolor::add_to_vector_poly(vector < vector > &polyGrad, const vec - idx1++; - } - --void Decolor::weak_order(const Mat &img, vector &alf) const -+void Decolor::weak_order(const Mat &im, vector &alf) const - { -- const int h = img.size().height; -- const int w = img.size().width; -+ Mat img; -+ const int h = im.size().height; -+ const int w = im.size().width; - if((h + w) > 800) - { - const double sizefactor = double(800)/(h+w); -- resize(img, img, Size(cvRound(h*sizefactor), cvRound(w*sizefactor))); -+ resize(im, img, Size(cvRound(h*sizefactor), cvRound(w*sizefactor))); -+ } -+ else -+ { -+ img = im; - } - - Mat curIm = Mat(img.size(),CV_32FC1); -@@ -246,16 +251,20 @@ void Decolor::weak_order(const Mat &img, vector &alf) const - alf[i] -= tmp1[i] * tmp2[i] * tmp3[i]; - } - --void Decolor::grad_system(const Mat &img, vector < vector < double > > &polyGrad, -+void Decolor::grad_system(const Mat &im, vector < vector < double > > &polyGrad, - vector < double > &Cg, vector & comb) const - { -- int h = img.size().height; -- int w = img.size().width; -- -+ Mat img; -+ int h = im.size().height; -+ int w = im.size().width; - if((h + w) > 800) - { - const double sizefactor = double(800)/(h+w); -- resize(img, img, Size(cvRound(h*sizefactor), cvRound(w*sizefactor))); -+ resize(im, img, Size(cvRound(h*sizefactor), cvRound(w*sizefactor))); -+ } -+ else -+ { -+ img = im; - } - - h = img.size().height; --- -2.7.4 - diff --git a/meta-digi-dey/recipes-graphics/opencv/opencv/0002-photo-Decolor-corrections.patch b/meta-digi-dey/recipes-graphics/opencv/opencv/0002-photo-Decolor-corrections.patch deleted file mode 100755 index e3ba3d225..000000000 --- a/meta-digi-dey/recipes-graphics/opencv/opencv/0002-photo-Decolor-corrections.patch +++ /dev/null @@ -1,51 +0,0 @@ -From fb2b26c4197cb7569e9df8afbadedbe419b4e04e Mon Sep 17 00:00:00 2001 -From: yom -Date: Tue, 7 Aug 2018 17:52:05 +0200 -Subject: [PATCH] photo: Decolor corrections * Keep image aspect ratio in - resize called in grad_system and weak_order * Bug correction in loop - inside Decolor::gradvector - ---- - modules/photo/src/contrast_preserve.hpp | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git a/modules/photo/src/contrast_preserve.hpp b/modules/photo/src/contrast_preserve.hpp -index 65ca9c1..1afd4bc 100644 ---- a/modules/photo/src/contrast_preserve.hpp -+++ b/modules/photo/src/contrast_preserve.hpp -@@ -159,12 +159,12 @@ void Decolor::gradvector(const Mat &img, vector &grad) const - - for(int i=0;i(i, j); -+ grad[i*width + j] = d_trans.at(i, j); - - const int offset = width * height; - for(int i=0;i(i, j); -+ grad[offset + i * width + j] = d1_trans.at(i, j); - } - - void Decolor::colorGrad(const Mat &img, vector &Cg) const -@@ -212,7 +212,7 @@ void Decolor::weak_order(const Mat &im, vector &alf) const - if((h + w) > 800) - { - const double sizefactor = double(800)/(h+w); -- resize(im, img, Size(cvRound(h*sizefactor), cvRound(w*sizefactor))); -+ resize(im, img, Size(cvRound(w*sizefactor), cvRound(h*sizefactor))); - } - else - { -@@ -260,7 +260,7 @@ void Decolor::grad_system(const Mat &im, vector < vector < double > > &polyGrad, - if((h + w) > 800) - { - const double sizefactor = double(800)/(h+w); -- resize(im, img, Size(cvRound(h*sizefactor), cvRound(w*sizefactor))); -+ resize(im, img, Size(cvRound(w*sizefactor), cvRound(h*sizefactor))); - } - else - { --- -2.7.4 - diff --git a/meta-digi-dey/recipes-graphics/opencv/opencv/0003-To-fix-errors-as-following.patch b/meta-digi-dey/recipes-graphics/opencv/opencv/0003-To-fix-errors-as-following.patch index 3ab8f773a..5270b8c9f 100644 --- a/meta-digi-dey/recipes-graphics/opencv/opencv/0003-To-fix-errors-as-following.patch +++ b/meta-digi-dey/recipes-graphics/opencv/opencv/0003-To-fix-errors-as-following.patch @@ -23,7 +23,7 @@ Index: git/modules/ts/include/opencv2/ts.hpp =================================================================== --- git.orig/modules/ts/include/opencv2/ts.hpp +++ git/modules/ts/include/opencv2/ts.hpp -@@ -611,7 +611,7 @@ protected: +@@ -608,7 +608,7 @@ protected: } }; @@ -32,16 +32,8 @@ Index: git/modules/ts/include/opencv2/ts.hpp struct DefaultRngAuto { -@@ -667,14 +667,14 @@ std::string findDataFile(const std::stri - - #ifdef HAVE_OPENCL - namespace ocl { --void dumpOpenCLDevice(); -+CV_EXPORTS void dumpOpenCLDevice(); - } - #define TEST_DUMP_OCL_INFO cvtest::ocl::dumpOpenCLDevice(); - #else - #define TEST_DUMP_OCL_INFO +@@ -671,7 +671,7 @@ private: + #endif #endif -void parseCustomOptions(int argc, char **argv); @@ -66,18 +58,12 @@ Index: git/modules/ts/include/opencv2/ts/ts_ext.hpp =================================================================== --- git.orig/modules/ts/include/opencv2/ts/ts_ext.hpp +++ git/modules/ts/include/opencv2/ts/ts_ext.hpp -@@ -9,10 +9,10 @@ +@@ -9,7 +9,7 @@ #define OPENCV_TS_EXT_HPP namespace cvtest { -void checkIppStatus(); --extern bool skipUnstableTests; --extern bool runBigDataTests; --extern int testThreads; +CV_EXPORTS void checkIppStatus(); -+CV_EXPORTS extern bool skipUnstableTests; -+CV_EXPORTS extern bool runBigDataTests; -+CV_EXPORTS extern int testThreads; - } - - // check for required "opencv_test" namespace + extern bool skipUnstableTests; + extern bool runBigDataTests; + extern int testThreads; diff --git a/meta-digi-dey/recipes-graphics/opencv/opencv/fix_openvx_samples.patch b/meta-digi-dey/recipes-graphics/opencv/opencv/fix_openvx_samples.patch deleted file mode 100644 index 3db3dd15d..000000000 --- a/meta-digi-dey/recipes-graphics/opencv/opencv/fix_openvx_samples.patch +++ /dev/null @@ -1,11 +0,0 @@ -diff --git a/samples/openvx/CMakeLists.txt b/samples/openvx/CMakeLists.txt -index fd9165b..85fe948 100644 ---- a/samples/openvx/CMakeLists.txt -+++ b/samples/openvx/CMakeLists.txt -@@ -21,5 +21,5 @@ add_definitions(-DIVX_HIDE_INFO_WARNINGS) - file(GLOB_RECURSE cpp_samples RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.cpp) - foreach(sample_filename ${cpp_samples}) - ocv_define_sample(tgt ${sample_filename} openvx) -- ocv_target_link_libraries(${tgt} ${OPENCV_LINKER_LIBS} ${OPENCV_OPENVX_SAMPLE_REQUIRED_DEPS}) -+ ocv_target_link_libraries(${tgt} ${OPENCV_LINKER_LIBS} ${OPENCV_OPENVX_SAMPLE_REQUIRED_DEPS} ${OPENVX_LIBRARIES}) - endforeach() diff --git a/meta-digi-dey/recipes-graphics/opencv/opencv/fix_python_bindings.patch b/meta-digi-dey/recipes-graphics/opencv/opencv/fix_python_bindings.patch deleted file mode 100644 index 1609b49b5..000000000 --- a/meta-digi-dey/recipes-graphics/opencv/opencv/fix_python_bindings.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff --git a/modules/python/bindings/CMakeLists.txt b/modules/python/bindings/CMakeLists.txt -index 73c67aa..a71c297 100644 ---- a/modules/python/bindings/CMakeLists.txt -+++ b/modules/python/bindings/CMakeLists.txt -@@ -20,7 +20,8 @@ endforeach() - set(opencv_hdrs "") - set(opencv_userdef_hdrs "") - foreach(m ${OPENCV_PYTHON_MODULES}) -- ocv_list_filter(OPENCV_MODULE_${m}_HEADERS "${OPENCV_MODULE_${m}_LOCATION}/include" __hdrs) -+ string(REPLACE "+" "\\\\+" __pattern "${OPENCV_MODULE_${m}_LOCATION}/include") -+ ocv_list_filter(OPENCV_MODULE_${m}_HEADERS "${__pattern}" __hdrs) - list(APPEND opencv_hdrs ${__hdrs}) - file(GLOB userdef_hdrs ${OPENCV_MODULE_${m}_LOCATION}/misc/python/pyopencv*.hpp) - list(APPEND opencv_userdef_hdrs ${userdef_hdrs}) diff --git a/meta-digi-dey/recipes-graphics/opencv/opencv/fixpkgconfig.patch b/meta-digi-dey/recipes-graphics/opencv/opencv/fixpkgconfig.patch deleted file mode 100644 index 76dfd04d7..000000000 --- a/meta-digi-dey/recipes-graphics/opencv/opencv/fixpkgconfig.patch +++ /dev/null @@ -1,29 +0,0 @@ -diff --git a/cmake/OpenCVGenPkgconfig.cmake b/cmake/OpenCVGenPkgconfig.cmake -index 425c0fa..9123dc6 100644 ---- a/cmake/OpenCVGenPkgconfig.cmake -+++ b/cmake/OpenCVGenPkgconfig.cmake -@@ -31,7 +31,7 @@ macro(fix_prefix lst isown) - get_filename_component(libdir "${item}" PATH) - get_filename_component(_libname "${item}" NAME) - ocv_get_libname(libname "${_libname}") -- list(APPEND _lst "-L${libdir}" "-l${libname}") -+ list(APPEND _lst "-l${libname}") - else() - list(APPEND _lst "-l${item}") - endif() -@@ -125,10 +125,14 @@ ocv_list_unique(_3rdparty) - - set(OPENCV_PC_LIBS - "-L\${exec_prefix}/${OPENCV_LIB_INSTALL_PATH}" -+ "-L\${exec_prefix}/${OPENCV_3P_LIB_INSTALL_PATH}" - "${_modules}" - ) - if(BUILD_SHARED_LIBS) -- set(OPENCV_PC_LIBS_PRIVATE "${_extra}") -+ set(OPENCV_PC_LIBS_PRIVATE -+ "-L\${exec_prefix}/${OPENCV_LIB_INSTALL_PATH}" -+ "${_extra}" -+ ) - else() - set(OPENCV_PC_LIBS_PRIVATE - "-L\${exec_prefix}/${OPENCV_3P_LIB_INSTALL_PATH}" diff --git a/meta-digi-dey/recipes-graphics/opencv/opencv/protobuf.patch b/meta-digi-dey/recipes-graphics/opencv/opencv/protobuf.patch deleted file mode 100644 index c63dc142e..000000000 --- a/meta-digi-dey/recipes-graphics/opencv/opencv/protobuf.patch +++ /dev/null @@ -1,57 +0,0 @@ -Upstream-status: Inappropriate [OE specific] - -Signed-off-by: Ricardo Ribalda -diff --git a/cmake/OpenCVFindLibProtobuf.cmake b/cmake/OpenCVFindLibProtobuf.cmake -index b6ce1e7fd56b..e916ec0df2a6 100644 ---- a/cmake/OpenCVFindLibProtobuf.cmake -+++ b/cmake/OpenCVFindLibProtobuf.cmake -@@ -7,21 +7,21 @@ OCV_OPTION(BUILD_PROTOBUF "Force to build libprotobuf from sources" ON) - OCV_OPTION(PROTOBUF_UPDATE_FILES "Force to rebuild .proto files" OFF) - - if(PROTOBUF_UPDATE_FILES) -- if(NOT DEFINED Protobuf_PROTOC_EXECUTABLE) -+ if(NOT DEFINED PROTOBUF_PROTOC_EXECUTABLE) - find_package(Protobuf QUIET) - endif() -- if(DEFINED Protobuf_PROTOC_EXECUTABLE AND EXISTS ${Protobuf_PROTOC_EXECUTABLE}) -- message(STATUS "The protocol buffer compiler is found (${Protobuf_PROTOC_EXECUTABLE})") -+ if(DEFINED PROTOBUF_PROTOC_EXECUTABLE AND EXISTS ${PROTOBUF_PROTOC_EXECUTABLE}) -+ message(STATUS "The protocol buffer compiler is found (${PROTOBUF_PROTOC_EXECUTABLE})") - else() -- message(FATAL_ERROR "The protocol buffer compiler is not found (Protobuf_PROTOC_EXECUTABLE='${Protobuf_PROTOC_EXECUTABLE}')") -+ message(FATAL_ERROR "The protocol buffer compiler is not found (PROTOBUF_PROTOC_EXECUTABLE='${PROTOBUF_PROTOC_EXECUTABLE}')") - endif() - endif() - --if(NOT BUILD_PROTOBUF AND NOT (DEFINED Protobuf_INCLUDE_DIRS AND DEFINED Protobuf_LIBRARIES)) -+if(NOT BUILD_PROTOBUF AND NOT (DEFINED PROTOBUF_INCLUDE_DIR AND DEFINED PROTOBUF_LIBRARIES)) - find_package(Protobuf QUIET) - endif() - --if(Protobuf_FOUND) -+if(PROTOBUF_FOUND OR (DEFINED PROTOBUF_INCLUDE_DIR AND DEFINED PROTOBUF_LIBRARIES)) - # nothing - else() - set(Protobuf_LIBRARIES libprotobuf) -diff --git a/modules/dnn/CMakeLists.txt b/modules/dnn/CMakeLists.txt -index 2a71568d1a44..c6329a742263 100644 ---- a/modules/dnn/CMakeLists.txt -+++ b/modules/dnn/CMakeLists.txt -@@ -7,7 +7,7 @@ if(DEFINED BUILD_opencv_dnn AND NOT BUILD_opencv_dnn) - endif() - - include(${OpenCV_SOURCE_DIR}/cmake/OpenCVFindLibProtobuf.cmake) --if(NOT Protobuf_FOUND) -+if(NOT PROTOBUF_FOUND) - ocv_module_disable(opencv_dnn) - endif() - -@@ -72,7 +72,7 @@ ocv_source_group("Src\\protobuf" FILES ${Protobuf_SRCS} ${Protobuf_HDRS}) - ocv_module_include_directories(include ${Protobuf_INCLUDE_DIRS}) - - ocv_glob_module_sources(${Protobuf_SRCS} ${Protobuf_HDRS} ${CBLAS_H_PROXY_PATH}) --ocv_create_module(${Protobuf_LIBRARIES} ${LAPACK_LIBRARIES}) -+ocv_create_module(${PROTOBUF_LIBRARIES} ${LAPACK_LIBRARIES}) - ocv_add_samples() - ocv_add_accuracy_tests() - ocv_add_perf_tests() diff --git a/meta-digi-dey/recipes-graphics/opencv/opencv/uselocalxfeatures.patch b/meta-digi-dey/recipes-graphics/opencv/opencv/uselocalxfeatures.patch index fc273a891..8ffee51dd 100644 --- a/meta-digi-dey/recipes-graphics/opencv/opencv/uselocalxfeatures.patch +++ b/meta-digi-dey/recipes-graphics/opencv/opencv/uselocalxfeatures.patch @@ -1,8 +1,8 @@ -diff --git a/modules/xfeatures2d/CMakeLists.txt b/modules/xfeatures2d/CMakeLists.txt -index e1755595..c7009c47 100644 ---- a/modules/xfeatures2d/CMakeLists.txt -+++ b/modules/xfeatures2d/CMakeLists.txt -@@ -5,10 +5,10 @@ ocv_define_module(xfeatures2d opencv_core opencv_imgproc opencv_features2d openc +Index: contrib/modules/xfeatures2d/CMakeLists.txt +=================================================================== +--- contrib.orig/modules/xfeatures2d/CMakeLists.txt ++++ contrib/modules/xfeatures2d/CMakeLists.txt +@@ -5,11 +5,11 @@ ocv_define_module(xfeatures2d opencv_cor include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/download_vgg.cmake) include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/download_boostdesc.cmake) set(DOWNLOAD_DIR "${OpenCV_BINARY_DIR}/downloads/xfeatures2d") @@ -18,3 +18,4 @@ index e1755595..c7009c47 100644 +#endif() ocv_module_include_directories("${DOWNLOAD_DIR}") + diff --git a/meta-digi-dey/recipes-graphics/opencv/opencv_3.4.2.bbappend b/meta-digi-dey/recipes-graphics/opencv/opencv_3.4.2.bbappend deleted file mode 100644 index 107e0ed2e..000000000 --- a/meta-digi-dey/recipes-graphics/opencv/opencv_3.4.2.bbappend +++ /dev/null @@ -1,61 +0,0 @@ -FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" - -# Specify the opencv_extra source. The version should match the overall opencv version. -# Recording the opencv_extra version here allows us to raise a fatal error if the -# package version is updated but this section is not. -SRC_URI += "git://github.com/opencv/opencv_extra.git;branch=3.4;destsuffix=opencv_extra;name=opencv_extra" -SRCREV_opencv_extra = "cc18e9a17c5afe034341c8c70a5aaa9ac86e5601" -OPENCV_EXTRA_VERSION = "3.4.2" - -SRC_URI_remove = "file://javagen.patch" -SRC_URI += "file://fix_openvx_samples.patch" -SRC_URI += "file://fix_python_bindings.patch" -SRC_URI += "file://0001-photo-avoid-resizing-a-const-Mat-in-decolor.patch \ - file://0002-photo-Decolor-corrections.patch \ -" - -PACKAGECONFIG_remove_imx = "eigen" -PACKAGECONFIG_remove_mx8 = "${@bb.utils.contains('DISTRO_FEATURES', 'wayland x11', 'gtk', '', d)}" -PACKAGECONFIG_append_mx8 = " opencl dnn text" -PACKAGECONFIG_append_mx8dv = " openvx" -PACKAGECONFIG_append_mx8qm = " openvx" - -PACKAGECONFIG[openvx] = " \ - -DWITH_OPENVX=ON -DOPENVX_ROOT=${STAGING_LIBDIR} -DOPENVX_LIB_CANDIDATES='OpenVX;OpenVXU', \ - -DWITH_OPENVX=OFF, \ - virtual/libopenvx, \ - \ -" -PACKAGECONFIG[qt5] = " \ - -DWITH_QT=ON -DWITH_GTK=OFF \ - -DOE_QMAKE_PATH_EXTERNAL_HOST_BINS=${STAGING_BINDIR_NATIVE}/qt5 \ - -DCMAKE_PREFIX_PATH=${STAGING_BINDIR_NATIVE}/cmake, \ - -DWITH_QT=OFF, \ - qtbase qtbase-native, \ - \ -" -PACKAGECONFIG[test] = " \ - -DBUILD_TESTS=ON -DINSTALL_TESTS=ON -DOPENCV_TEST_DATA_PATH=${S}/../opencv_extra/testdata, \ - -DBUILD_TESTS=OFF -DINSTALL_TESTS=OFF, \ -" - -do_check_opencv_extra_version() { - OPENCV_VERSION=`echo ${PV} | cut -d '+' -f 1` - if [ "${OPENCV_EXTRA_VERSION}" != "${OPENCV_VERSION}" ]; then - bbfatal "The opencv_extra version ${OPENCV_EXTRA_VERSION} does not match the recipe version ${OPENCV_VERSION}." - fi -} -addtask check_opencv_extra_version before do_fetch - -do_install_append() { - if ${@bb.utils.contains("PACKAGECONFIG", "samples", "true", "false", d)}; then - install -d ${D}${datadir}/OpenCV/samples/data - cp -r ${S}/samples/data/* ${D}${datadir}/OpenCV/samples/data - - install -d ${D}${datadir}/OpenCV/samples/bin/ - cp -f bin/example_* ${D}${datadir}/OpenCV/samples/bin/ - fi -} - -RDEPENDS_opencv-apps += \ - "${@bb.utils.contains('PACKAGECONFIG', 'test', 'bash', '', d)}" diff --git a/meta-digi-dey/recipes-graphics/opencv/opencv_3.4.2.bb b/meta-digi-dey/recipes-graphics/opencv/opencv_4.0.1.imx.bb similarity index 76% rename from meta-digi-dey/recipes-graphics/opencv/opencv_3.4.2.bb rename to meta-digi-dey/recipes-graphics/opencv/opencv_4.0.1.imx.bb index 8821b514c..2a4ce2920 100644 --- a/meta-digi-dey/recipes-graphics/opencv/opencv_3.4.2.bb +++ b/meta-digi-dey/recipes-graphics/opencv/opencv_4.0.1.imx.bb @@ -10,11 +10,12 @@ ARM_INSTRUCTION_SET_armv5 = "arm" DEPENDS = "libtool swig-native bzip2 zlib glib-2.0 libwebp" -SRCREV_opencv = "9e1b1e5389237c2b9f6c7b9d7715d9836c0a5de1" -SRCREV_contrib = "d4e02869454998c9af5af1a5c3392cdc0c31dd22" -SRCREV_ipp = "a62e20676a60ee0ad6581e217fe7e4bada3b95db" +SRCREV_opencv = "737f8fad1318607bf78eff76e3e4364db11663e0" +SRCREV_contrib = "25221244732dcf44c1450d0f93edc2529a61c0e1" +SRCREV_ipp = "32e315a5b106a7b89dbed51c28f8120a48b368b4" SRCREV_boostdesc = "34e4206aef44d50e6bbcd0ab06354b52e7466d26" SRCREV_vgg = "fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d" +SRCREV_extra = "d29d003e00dacf4ed686577c3f2c0aa048d5a80a" SRC_URI[tinydnn.md5sum] = "adb1c512e09ca2c7a6faef36f9c53e59" SRC_URI[tinydnn.sha256sum] = "e2c61ce8c5debaa644121179e9dbdcf83f497f39de853f8dd5175846505aa18b" @@ -22,38 +23,38 @@ def ipp_filename(d): import re arch = d.getVar('TARGET_ARCH', True) if re.match("i.86$", arch): - return "ippicv_2017u2_lnx_ia32_20170418.tgz" + return "ippicv_2019_lnx_ia32_general_20180723.tgz" else: - return "ippicv_2017u2_lnx_intel64_20170418.tgz" + return "ippicv_2019_lnx_intel64_general_20180723.tgz" def ipp_md5sum(d): import re arch = d.getVar('TARGET_ARCH', True) if re.match("i.86$", arch): - return "f2cece00d802d4dea86df52ed095257e" + return "ea72de74dae3c604eb6348395366e78e" else: - return "808b791a6eac9ed78d32a7666804320e" + return "b7cc351267db2d34b9efa1cd22ff0572" IPP_FILENAME = "${@ipp_filename(d)}" IPP_MD5 = "${@ipp_md5sum(d)}" -SRCREV_FORMAT = "opencv_contrib_ipp_boostdesc_vgg" -SRC_URI = "git://github.com/opencv/opencv.git;branch=3.4;name=opencv \ - git://github.com/opencv/opencv_contrib.git;branch=3.4;destsuffix=contrib;name=contrib \ - git://github.com/opencv/opencv_3rdparty.git;branch=ippicv/master_20170418;destsuffix=ipp;name=ipp \ +SRCREV_FORMAT = "opencv_contrib_ipp_boostdesc_vgg_extra" +OPENCV_SRC ?= "git://source.codeaurora.org/external/imx/opencv-imx.git;protocol=https" +SRCBRANCH = "4.0.1_imx" +SRC_URI = "${OPENCV_SRC};branch=${SRCBRANCH};name=opencv \ + git://github.com/opencv/opencv_contrib.git;destsuffix=contrib;name=contrib \ + git://github.com/opencv/opencv_3rdparty.git;branch=ippicv/master_20180723;destsuffix=ipp;name=ipp \ git://github.com/opencv/opencv_3rdparty.git;branch=contrib_xfeatures2d_boostdesc_20161012;destsuffix=boostdesc;name=boostdesc \ git://github.com/opencv/opencv_3rdparty.git;branch=contrib_xfeatures2d_vgg_20160317;destsuffix=vgg;name=vgg \ + git://github.com/opencv/opencv_extra.git;destsuffix=extra;name=extra \ https://github.com/tiny-dnn/tiny-dnn/archive/v1.0.0a3.tar.gz;destsuffix=git/3rdparty/tinydnn/tiny-dnn-1.0.0a3;name=tinydnn;unpack=false \ file://0001-3rdparty-ippicv-Use-pre-downloaded-ipp.patch \ - file://fixpkgconfig.patch \ file://uselocalxfeatures.patch;patchdir=../contrib/ \ file://0003-To-fix-errors-as-following.patch \ + file://0001-Temporarliy-work-around-deprecated-ffmpeg-RAW-functi.patch \ file://0001-Dont-use-isystem.patch \ - file://javagen.patch \ - file://0001-dnn-allow-to-use-external-protobuf.patch \ " - -PV = "3.4.2+git${SRCPV}" +PV = "4.0.1.imx+git${SRCPV}" S = "${WORKDIR}/git" @@ -68,6 +69,7 @@ addtask unpack_extra after do_unpack before do_patch EXTRA_OECMAKE = "-DOPENCV_EXTRA_MODULES_PATH=${WORKDIR}/contrib/modules \ -DWITH_1394=OFF \ + -DENABLE_PRECOMPILED_HEADERS=OFF \ -DCMAKE_SKIP_RPATH=ON \ -DOPENCV_ICV_HASH=${IPP_MD5} \ -DIPPROOT=${WORKDIR}/ippicv_lnx \ @@ -77,10 +79,27 @@ EXTRA_OECMAKE = "-DOPENCV_EXTRA_MODULES_PATH=${WORKDIR}/contrib/modules \ " EXTRA_OECMAKE_append_x86 = " -DX86=ON" -PACKAGECONFIG ??= "python3 eigen jpeg png tiff v4l libv4l gstreamer samples tbb gphoto2 \ - ${@bb.utils.contains("DISTRO_FEATURES", "x11", "gtk", "", d)} \ +PACKAGECONFIG_GTK ?= " \ + ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'gtk', '', d)} \ +" +PACKAGECONFIG_GTK_mx8 ?= " \ + ${@bb.utils.contains('DISTRO_FEATURES', 'wayland x11', '', \ + bb.utils.contains('DISTRO_FEATURES', 'x11', 'gtk', \ + '', d), d)} \ +" +PACKAGECONFIG ??= "python3 jpeg png tiff v4l libv4l gstreamer samples tbb gphoto2 \ + ${PACKAGECONFIG_GTK} \ ${@bb.utils.contains("LICENSE_FLAGS_WHITELIST", "commercial", "libav", "", d)}" +PACKAGECONFIG_append_mx8 = " dnn text" +PACKAGECONFIG_append_mx8dv = " openvx" +PACKAGECONFIG_append_mx8qm = " openvx" + +PACKAGECONFIG_OPENCL = "" +PACKAGECONFIG_OPENCL_mx8 = "opencl" +PACKAGECONFIG_OPENCL_mx8mm = "" +PACKAGECONFIG_append = " ${PACKAGECONFIG_OPENCL}" + PACKAGECONFIG[amdblas] = "-DWITH_OPENCLAMDBLAS=ON,-DWITH_OPENCLAMDBLAS=OFF,libclamdblas," PACKAGECONFIG[amdfft] = "-DWITH_OPENCLAMDFFT=ON,-DWITH_OPENCLAMDFFT=OFF,libclamdfft," PACKAGECONFIG[dnn] = "-DBUILD_opencv_dnn=ON -DPROTOBUF_UPDATE_FILES=ON -DBUILD_PROTOBUF=OFF,-DBUILD_opencv_dnn=OFF,protobuf protobuf-native," @@ -95,12 +114,15 @@ PACKAGECONFIG[jpeg] = "-DWITH_JPEG=ON,-DWITH_JPEG=OFF,jpeg," PACKAGECONFIG[libav] = "-DWITH_FFMPEG=ON,-DWITH_FFMPEG=OFF,libav," PACKAGECONFIG[libv4l] = "-DWITH_LIBV4L=ON,-DWITH_LIBV4L=OFF,v4l-utils," PACKAGECONFIG[opencl] = "-DWITH_OPENCL=ON,-DWITH_OPENCL=OFF,opencl-headers virtual/opencl-icd," +PACKAGECONFIG[openvx] = "-DWITH_OPENVX=ON -DOPENVX_ROOT=${STAGING_LIBDIR} -DOPENVX_LIB_CANDIDATES='OpenVX;OpenVXU',-DWITH_OPENVX=OFF,virtual/libopenvx," PACKAGECONFIG[oracle-java] = "-DJAVA_INCLUDE_PATH=${ORACLE_JAVA_HOME}/include -DJAVA_INCLUDE_PATH2=${ORACLE_JAVA_HOME}/include/linux -DJAVA_AWT_INCLUDE_PATH=${ORACLE_JAVA_HOME}/include -DJAVA_AWT_LIBRARY=${ORACLE_JAVA_HOME}/lib/amd64/libjawt.so -DJAVA_JVM_LIBRARY=${ORACLE_JAVA_HOME}/lib/amd64/server/libjvm.so,,ant-native oracle-jse-jdk oracle-jse-jdk-native," PACKAGECONFIG[png] = "-DWITH_PNG=ON,-DWITH_PNG=OFF,libpng," PACKAGECONFIG[python2] = "-DPYTHON2_NUMPY_INCLUDE_DIRS:PATH=${STAGING_LIBDIR}/${PYTHON_DIR}/site-packages/numpy/core/include,,python-numpy," PACKAGECONFIG[python3] = "-DPYTHON3_NUMPY_INCLUDE_DIRS:PATH=${STAGING_LIBDIR}/${PYTHON_DIR}/site-packages/numpy/core/include,,python3-numpy," +PACKAGECONFIG[qt5] = "-DWITH_QT=ON -DWITH_GTK=OFF -DOE_QMAKE_PATH_EXTERNAL_HOST_BINS=${STAGING_BINDIR_NATIVE}/qt5 -DCMAKE_PREFIX_PATH=${STAGING_BINDIR_NATIVE}/cmake,-DWITH_QT=OFF,qtbase qtbase-native," PACKAGECONFIG[samples] = "-DBUILD_EXAMPLES=ON -DINSTALL_PYTHON_EXAMPLES=ON,-DBUILD_EXAMPLES=OFF,," PACKAGECONFIG[tbb] = "-DWITH_TBB=ON,-DWITH_TBB=OFF,tbb," +PACKAGECONFIG[test] = "-DBUILD_TESTS=ON -DINSTALL_TESTS=ON -DOPENCV_TEST_DATA_PATH=${S}/../extra/testdata, -DBUILD_TESTS=OFF -DINSTALL_TESTS=OFF," PACKAGECONFIG[text] = "-DBUILD_opencv_text=ON,-DBUILD_opencv_text=OFF,tesseract," PACKAGECONFIG[tiff] = "-DWITH_TIFF=ON,-DWITH_TIFF=OFF,tiff," PACKAGECONFIG[v4l] = "-DWITH_V4L=ON,-DWITH_V4L=OFF,v4l-utils," @@ -155,13 +177,13 @@ python populate_packages_prepend () { PACKAGES_DYNAMIC += "^libopencv-.*" -FILES_${PN} = "" -FILES_${PN}-dbg += "${datadir}/OpenCV/java/.debug/* ${datadir}/OpenCV/samples/bin/.debug/*" -FILES_${PN}-dev = "${includedir} ${libdir}/pkgconfig ${datadir}/OpenCV/*.cmake" +FILES_${PN} = "${datadir}/licenses" +FILES_${PN}-dbg += "${datadir}/OpenCV/java/.debug/* ${datadir}/OpenCV/samples/bin/.debug/* ${datadir}/opencv4/valgrind*.supp" +FILES_${PN}-dev = "${includedir} ${libdir}/pkgconfig ${datadir}/OpenCV/*.cmake ${libdir}/cmake" FILES_${PN}-staticdev += "${datadir}/OpenCV/3rdparty/lib/*.a" FILES_${PN}-apps = "${bindir}/* ${datadir}/OpenCV" FILES_${PN}-java = "${datadir}/OpenCV/java" -FILES_${PN}-samples = "${datadir}/OpenCV/samples/" +FILES_${PN}-samples = "${datadir}/OpenCV/samples ${datadir}/opencv4/samples ${datadir}/opencv4/*cascades ${datadir}/opencv4/testdata/" INSANE_SKIP_${PN}-java = "libdir" INSANE_SKIP_${PN}-dbg = "libdir" @@ -177,8 +199,8 @@ FILES_python3-opencv = "${PYTHON_SITEPACKAGES_DIR}/*" RDEPENDS_python3-opencv = "python3-core python3-numpy" do_install_append() { - cp ${S}/include/opencv/*.h ${D}${includedir}/opencv/ - sed -i '/blobtrack/d' ${D}${includedir}/opencv/cvaux.h + # Fix OpenCV 2 compatibility, broken by OpenCV 4 + ln -sf opencv4/opencv2 ${D}${includedir}/opencv2 # Move Python files into correct library folder (for multilib build) if [ "$libdir" != "/usr/lib" -a -d ${D}/usr/lib ]; then @@ -187,7 +209,12 @@ do_install_append() { fi if ${@bb.utils.contains("PACKAGECONFIG", "samples", "true", "false", d)}; then + install -d ${D}${datadir}/OpenCV/samples/data + cp -r ${S}/samples/data/* ${D}${datadir}/OpenCV/samples/data + install -d ${D}${datadir}/OpenCV/samples/bin/ cp -f bin/example_* ${D}${datadir}/OpenCV/samples/bin/ fi } + +RDEPENDS_opencv-apps += "bash" From 1764350e53c447e5a5da914099de66dd3c05469e Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Mon, 13 May 2019 13:15:53 +0200 Subject: [PATCH 024/133] wayland: update wayland recipes Make our wayland sub-folder match NXP's. https://jira.digi.com/browse/DEL-6603 Signed-off-by: Gabriel Valcazar --- .../wayland/wayland-protocols_1.13.bb | 20 --- .../wayland/wayland-protocols_1.13.bbappend | 5 - ...-argb8888-as-gbm-default-on-mscale-8.patch | 15 +- ...dify-paths-to-point-to-right-directo.patch | 155 ------------------ ...ibrator-Advertise-the-touchscreen-ca.patch | 12 +- ...ch-correctly-for-subsampled-textures.patch | 55 ------- .../wayland/weston_5.0.0.imx.bb | 3 +- 7 files changed, 12 insertions(+), 253 deletions(-) delete mode 100644 meta-digi-dey/recipes-graphics/wayland/wayland-protocols_1.13.bb delete mode 100644 meta-digi-dey/recipes-graphics/wayland/wayland-protocols_1.13.bbappend delete mode 100644 meta-digi-dey/recipes-graphics/wayland/weston/0001-weston.ini.in-Modify-paths-to-point-to-right-directo.patch delete mode 100644 meta-digi-dey/recipes-graphics/wayland/weston/weston-gl-renderer-Set-pitch-correctly-for-subsampled-textures.patch diff --git a/meta-digi-dey/recipes-graphics/wayland/wayland-protocols_1.13.bb b/meta-digi-dey/recipes-graphics/wayland/wayland-protocols_1.13.bb deleted file mode 100644 index 1ef1ee141..000000000 --- a/meta-digi-dey/recipes-graphics/wayland/wayland-protocols_1.13.bb +++ /dev/null @@ -1,20 +0,0 @@ -SUMMARY = "Collection of additional Wayland protocols" -DESCRIPTION = "Wayland protocols that add functionality not \ -available in the Wayland core protocol. Such protocols either add \ -completely new functionality, or extend the functionality of some other \ -protocol either in Wayland core, or some other protocol in \ -wayland-protocols." -HOMEPAGE = "http://wayland.freedesktop.org" -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://COPYING;md5=c7b12b6702da38ca028ace54aae3d484 \ - file://stable/presentation-time/presentation-time.xml;endline=26;md5=4646cd7d9edc9fa55db941f2d3a7dc53" - -SRC_URI = "https://wayland.freedesktop.org/releases/${BPN}-${PV}.tar.xz \ - " -SRC_URI[md5sum] = "29312149dafcd4a0e739ba94995a574d" -SRC_URI[sha256sum] = "0758bc8008d5332f431b2a84fea7de64d971ce270ed208206a098ff2ebc68f38" - -inherit allarch autotools pkgconfig - -PACKAGES = "${PN}" -FILES_${PN} += "${datadir}/pkgconfig/wayland-protocols.pc" diff --git a/meta-digi-dey/recipes-graphics/wayland/wayland-protocols_1.13.bbappend b/meta-digi-dey/recipes-graphics/wayland/wayland-protocols_1.13.bbappend deleted file mode 100644 index 3fdfa6bd6..000000000 --- a/meta-digi-dey/recipes-graphics/wayland/wayland-protocols_1.13.bbappend +++ /dev/null @@ -1,5 +0,0 @@ -WAYLAND_PROTOCOLS_SRC ?= "git://source.codeaurora.org/external/imx/wayland-protocols-imx.git;protocol=https" -SRCBRANCH = "master" -SRC_URI = "${WAYLAND_PROTOCOLS_SRC};branch=${SRCBRANCH} " -SRCREV = "d5ded4ddaf68b161fec23d75204d2153232c3a47" -S = "${WORKDIR}/git" diff --git a/meta-digi-dey/recipes-graphics/wayland/weston/0001-weston.ini-using-argb8888-as-gbm-default-on-mscale-8.patch b/meta-digi-dey/recipes-graphics/wayland/weston/0001-weston.ini-using-argb8888-as-gbm-default-on-mscale-8.patch index e4487bf7e..75589d3b1 100644 --- a/meta-digi-dey/recipes-graphics/wayland/weston/0001-weston.ini-using-argb8888-as-gbm-default-on-mscale-8.patch +++ b/meta-digi-dey/recipes-graphics/wayland/weston/0001-weston.ini-using-argb8888-as-gbm-default-on-mscale-8.patch @@ -12,18 +12,15 @@ Signed-off-by: Haihua Hu weston.ini.in | 1 + 1 file changed, 1 insertion(+) -diff --git a/weston.ini.in b/weston.ini.in -index 2d492ab..ae54b79 100644 ---- a/weston.ini.in -+++ b/weston.ini.in -@@ -1,6 +1,7 @@ - [core] +Index: git/weston.ini.in +=================================================================== +--- git.orig/weston.ini.in ++++ git/weston.ini.in +@@ -2,6 +2,7 @@ # i.MX: Disable idle timeout idle-time=0 + #use-g2d=1 +gbm-format=argb8888 [libinput] touchscreen_calibrator=true --- -2.7.4 - diff --git a/meta-digi-dey/recipes-graphics/wayland/weston/0001-weston.ini.in-Modify-paths-to-point-to-right-directo.patch b/meta-digi-dey/recipes-graphics/wayland/weston/0001-weston.ini.in-Modify-paths-to-point-to-right-directo.patch deleted file mode 100644 index 80e6dbf70..000000000 --- a/meta-digi-dey/recipes-graphics/wayland/weston/0001-weston.ini.in-Modify-paths-to-point-to-right-directo.patch +++ /dev/null @@ -1,155 +0,0 @@ -From b9c05520c4ff688c6488d8ca1e1defc592449d49 Mon Sep 17 00:00:00 2001 -From: Neena Busireddy -Date: Wed, 2 May 2018 11:51:45 -0500 -Subject: [PATCH] weston.ini.in: Modify paths to point to right directories - -Signed-off-by: Neena Busireddy ---- - Makefile.am | 2 ++ - ivi-shell/weston.ini.in | 56 ++++++++++++++++++++++++------------------------- - 2 files changed, 30 insertions(+), 28 deletions(-) - -diff --git a/Makefile.am b/Makefile.am -index 870e347..427cb5b 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -27,6 +27,7 @@ ivi-shell/weston.ini : $(srcdir)/ivi-shell/weston.ini.in - -e 's|@abs_top_builddir[@]|$(abs_top_builddir)|g' \ - -e 's|@abs_top_srcdir[@]|$(abs_top_srcdir)|g' \ - -e 's|@libexecdir[@]|$(libexecdir)|g' \ -+ -e 's|@datadir[@]|$(datadir)|g' \ - -e 's|@plugin_prefix[@]||g' \ - $< > $@ - -@@ -43,6 +44,7 @@ AM_CPPFLAGS = \ - -I$(top_builddir)/protocol \ - -DLIBWESTON_MODULEDIR='"$(libweston_moduledir)"' \ - -DLIBEXECDIR='"$(libexecdir)"' \ -+ -DDATADIR='"$(datadir)"' \ - -DBINDIR='"$(bindir)"' - - CLEANFILES = weston.ini \ -diff --git a/ivi-shell/weston.ini.in b/ivi-shell/weston.ini.in -index 3f11e1c..d0efd03 100644 ---- a/ivi-shell/weston.ini.in -+++ b/ivi-shell/weston.ini.in -@@ -3,7 +3,7 @@ shell=@plugin_prefix@ivi-shell.so - modules=@plugin_prefix@hmi-controller.so - - [ivi-shell] --ivi-shell-user-interface=@abs_top_builddir@/weston-ivi-shell-user-interface -+ivi-shell-user-interface=@libexecdir@/weston-ivi-shell-user-interface - - #developermode=true - -@@ -19,20 +19,20 @@ application-layer-id=4000 - - transition-duration=300 - --background-image=@abs_top_srcdir@/data/background.png -+background-image=@datadir@/weston/background.png - background-id=1001 --panel-image=@abs_top_srcdir@/data/panel.png -+panel-image=@datadir@/weston/panel.png - panel-id=1002 - surface-id-offset=10 --tiling-image=@abs_top_srcdir@/data/tiling.png -+tiling-image=@datadir@/weston/tiling.png - tiling-id=1003 --sidebyside-image=@abs_top_srcdir@/data/sidebyside.png -+sidebyside-image=@datadir@/weston/sidebyside.png - sidebyside-id=1004 --fullscreen-image=@abs_top_srcdir@/data/fullscreen.png -+fullscreen-image=@datadir@/weston/fullscreen.png - fullscreen-id=1005 --random-image=@abs_top_srcdir@/data/random.png -+random-image=@datadir@/weston/random.png - random-id=1006 --home-image=@abs_top_srcdir@/data/home.png -+home-image=@datadir@/weston/home.png - home-id=1007 - workspace-background-color=0x99000000 - workspace-background-id=2001 -@@ -43,59 +43,59 @@ path=@libexecdir@/weston-keyboard - [ivi-launcher] - workspace-id=0 - icon-id=4001 --icon=@abs_top_srcdir@/data/icon_ivi_flower.png --path=@abs_top_builddir@/weston-flower -+icon=@datadir@/weston/icon_ivi_flower.png -+path=@bindir@/weston-flower - - [ivi-launcher] - workspace-id=0 - icon-id=4002 --icon=@abs_top_srcdir@/data/icon_ivi_clickdot.png --path=@abs_top_builddir@/weston-clickdot -+icon=@datadir@/weston/icon_ivi_clickdot.png -+path=@bindir@/weston-clickdot - - [ivi-launcher] - workspace-id=1 - icon-id=4003 --icon=@abs_top_srcdir@/data/icon_ivi_simple-egl.png --path=@abs_top_builddir@/weston-simple-egl -+icon=@datadir@/weston/icon_ivi_simple-egl.png -+path=@bindir@/weston-simple-egl - - [ivi-launcher] - workspace-id=1 - icon-id=4004 --icon=@abs_top_srcdir@/data/icon_ivi_simple-shm.png --path=@abs_top_builddir@/weston-simple-shm -+icon=@datadir@/weston/icon_ivi_simple-shm.png -+path=@bindir@/weston-simple-shm - - [ivi-launcher] - workspace-id=2 - icon-id=4005 --icon=@abs_top_srcdir@/data/icon_ivi_smoke.png --path=@abs_top_builddir@/weston-smoke -+icon=@datadir@/weston/icon_ivi_smoke.png -+path=@bindir@/weston-smoke - - [ivi-launcher] - workspace-id=3 - icon-id=4006 --icon=@abs_top_srcdir@/data/icon_ivi_flower.png --path=@abs_top_builddir@/weston-flower -+icon=@datadir@/weston/icon_ivi_flower.png -+path=@bindir@/weston-flower - - [ivi-launcher] - workspace-id=3 - icon-id=4007 --icon=@abs_top_srcdir@/data/icon_ivi_clickdot.png --path=@abs_top_builddir@/weston-clickdot -+icon=@datadir@/weston/icon_ivi_clickdot.png -+path=@bindir@/weston-clickdot - - [ivi-launcher] - workspace-id=3 - icon-id=4008 --icon=@abs_top_srcdir@/data/icon_ivi_simple-egl.png --path=@abs_top_builddir@/weston-simple-egl -+icon=@datadir@/weston/icon_ivi_simple-egl.png -+path=@bindir@/weston-simple-egl - - [ivi-launcher] - workspace-id=3 - icon-id=4009 --icon=@abs_top_srcdir@/data/icon_ivi_simple-shm.png --path=@abs_top_builddir@/weston-simple-shm -+icon=@datadir@/weston/icon_ivi_simple-shm.png -+path=@bindir@/weston-simple-shm - - [ivi-launcher] - workspace-id=3 - icon-id=4010 --icon=@abs_top_srcdir@/data/icon_ivi_smoke.png --path=@abs_top_builddir@/weston-smoke -+icon=@datadir@/weston/icon_ivi_smoke.png -+path=@bindir@/weston-smoke --- -1.9.1 - diff --git a/meta-digi-dey/recipes-graphics/wayland/weston/0003-weston-touch-calibrator-Advertise-the-touchscreen-ca.patch b/meta-digi-dey/recipes-graphics/wayland/weston/0003-weston-touch-calibrator-Advertise-the-touchscreen-ca.patch index 9be872b89..7ea07ed64 100644 --- a/meta-digi-dey/recipes-graphics/wayland/weston/0003-weston-touch-calibrator-Advertise-the-touchscreen-ca.patch +++ b/meta-digi-dey/recipes-graphics/wayland/weston/0003-weston-touch-calibrator-Advertise-the-touchscreen-ca.patch @@ -1,4 +1,4 @@ -From 8955e20180954b4778b9284bade05acf323a1690 Mon Sep 17 00:00:00 2001 +From 46843c8681ddafbea6f491b7af4de6529e93f5bd Mon Sep 17 00:00:00 2001 From: Jun Zhu Date: Sun, 30 Sep 2018 15:31:26 +0800 Subject: [PATCH] weston-touch-calibrator: Advertise the touchscreen calibrator @@ -9,17 +9,18 @@ Set touchscreen_calibrator to true in the section "libinput" of the configure fi Otherwise, it will report that the new-added interface "weston-touch-calibration" cannot be found. Signed-off-by: Jun Zhu + --- weston.ini.in | 3 +++ 1 file changed, 3 insertions(+) diff --git a/weston.ini.in b/weston.ini.in -index fec4291..2d492ab 100644 +index 83dd56e..6e20e11 100644 --- a/weston.ini.in +++ b/weston.ini.in -@@ -2,6 +2,9 @@ - # i.MX: Disable idle timeout +@@ -3,6 +3,9 @@ idle-time=0 + #use-g2d=1 +[libinput] +touchscreen_calibrator=true @@ -27,6 +28,3 @@ index fec4291..2d492ab 100644 #[output] #name=HDMI-A-1 #mode=1920x1080@60 --- -2.7.4 - diff --git a/meta-digi-dey/recipes-graphics/wayland/weston/weston-gl-renderer-Set-pitch-correctly-for-subsampled-textures.patch b/meta-digi-dey/recipes-graphics/wayland/weston/weston-gl-renderer-Set-pitch-correctly-for-subsampled-textures.patch deleted file mode 100644 index b3e1d06f5..000000000 --- a/meta-digi-dey/recipes-graphics/wayland/weston/weston-gl-renderer-Set-pitch-correctly-for-subsampled-textures.patch +++ /dev/null @@ -1,55 +0,0 @@ -Multi-plane sub-sampled textures have partial width/height, e.g. -YUV420/I420 has a full-size Y plane, followed by a half-width/height U -plane, and a half-width/height V plane. - -zwp_linux_dmabuf_v1 allows clients to pass an explicit pitch for each -plane, but for wl_shm this must be inferred. gl-renderer was correctly -accounting for the width and height when subsampling, but the pitch was -being taken as the pitch for the first plane. - -This does not match the requirements for GStreamer's waylandsink, in -particular, as well as other clients. Fix the SHM upload path to -correctly set the pitch for each plane, according to subsampling. - -Tested with: - $ gst-launch-1.0 videotestsrc ! waylandsink - -Upstream-Status: Backport [https://patchwork.freedesktop.org/patch/180767/] - -Signed-off-by: Daniel Stone -Fixes: fdeefe42418 ("gl-renderer: add support of WL_SHM_FORMAT_YUV420") -Reported-by: Fabien Lahoudere -Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103063 - ---- - libweston/gl-renderer.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/libweston/gl-renderer.c b/libweston/gl-renderer.c -index 244ce309..40bf0bb6 100644 ---- a/libweston/gl-renderer.c -+++ b/libweston/gl-renderer.c -@@ -1445,14 +1445,13 @@ gl_renderer_flush_damage(struct weston_surface *surface) - goto done; - } - -- glPixelStorei(GL_UNPACK_ROW_LENGTH_EXT, gs->pitch); -- - if (gs->needs_full_upload) { - glPixelStorei(GL_UNPACK_SKIP_PIXELS_EXT, 0); - glPixelStorei(GL_UNPACK_SKIP_ROWS_EXT, 0); - wl_shm_buffer_begin_access(buffer->shm_buffer); - for (j = 0; j < gs->num_textures; j++) { - glBindTexture(GL_TEXTURE_2D, gs->textures[j]); -+ glPixelStorei(GL_UNPACK_ROW_LENGTH_EXT, gs->pitch / gs->hsub[j]); - glTexImage2D(GL_TEXTURE_2D, 0, - gs->gl_format[j], - gs->pitch / gs->hsub[j], -@@ -1477,6 +1476,7 @@ gl_renderer_flush_damage(struct weston_surface *surface) - glPixelStorei(GL_UNPACK_SKIP_ROWS_EXT, r.y1); - for (j = 0; j < gs->num_textures; j++) { - glBindTexture(GL_TEXTURE_2D, gs->textures[j]); -+ glPixelStorei(GL_UNPACK_ROW_LENGTH_EXT, gs->pitch / gs->hsub[j]); - glTexSubImage2D(GL_TEXTURE_2D, 0, - r.x1 / gs->hsub[j], - r.y1 / gs->vsub[j], diff --git a/meta-digi-dey/recipes-graphics/wayland/weston_5.0.0.imx.bb b/meta-digi-dey/recipes-graphics/wayland/weston_5.0.0.imx.bb index 465522188..61e4e4176 100644 --- a/meta-digi-dey/recipes-graphics/wayland/weston_5.0.0.imx.bb +++ b/meta-digi-dey/recipes-graphics/wayland/weston_5.0.0.imx.bb @@ -21,8 +21,7 @@ SRC_URI = "${WESTON_SRC};branch=${SRCBRANCH} \ SRC_URI_append_mx8mq = " file://0001-weston.ini-using-argb8888-as-gbm-default-on-mscale-8.patch \ file://0002-weston.ini-configure-desktop-shell-size-in-weston-co.patch \ " - -SRCREV = "de814e1aa4899375b67140b5e5ae714c67bb27a0" +SRCREV = "fb563901657b296c7c7c86d26602a622429e334f" S = "${WORKDIR}/git" UPSTREAM_CHECK_URI = "https://wayland.freedesktop.org/releases.html" From 1bd374a76300bc50b62268d4a6c567a5d72815f0 Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Mon, 13 May 2019 13:31:04 +0200 Subject: [PATCH 025/133] imx-codec: update to v4.4.5 This is the version used in meta-fsl-bsp-release branch sumo-4.14.98-2.0.0_ga. Change the .bbappend name so it's compatible with all versions of the package. https://jira.digi.com/browse/DEL-6603 Signed-off-by: Gabriel Valcazar --- ...imx-codec_4.4.4.bbappend => imx-codec_%.bbappend} | 0 .../recipes-multimedia/imx-codec/imx-codec_4.4.4.bb | 12 ------------ .../recipes-multimedia/imx-codec/imx-codec_4.4.5.bb | 12 ++++++++++++ 3 files changed, 12 insertions(+), 12 deletions(-) rename meta-digi-dey/recipes-multimedia/imx-codec/{imx-codec_4.4.4.bbappend => imx-codec_%.bbappend} (100%) delete mode 100644 meta-digi-dey/recipes-multimedia/imx-codec/imx-codec_4.4.4.bb create mode 100644 meta-digi-dey/recipes-multimedia/imx-codec/imx-codec_4.4.5.bb diff --git a/meta-digi-dey/recipes-multimedia/imx-codec/imx-codec_4.4.4.bbappend b/meta-digi-dey/recipes-multimedia/imx-codec/imx-codec_%.bbappend similarity index 100% rename from meta-digi-dey/recipes-multimedia/imx-codec/imx-codec_4.4.4.bbappend rename to meta-digi-dey/recipes-multimedia/imx-codec/imx-codec_%.bbappend diff --git a/meta-digi-dey/recipes-multimedia/imx-codec/imx-codec_4.4.4.bb b/meta-digi-dey/recipes-multimedia/imx-codec/imx-codec_4.4.4.bb deleted file mode 100644 index 2a50c1164..000000000 --- a/meta-digi-dey/recipes-multimedia/imx-codec/imx-codec_4.4.4.bb +++ /dev/null @@ -1,12 +0,0 @@ -# Copyright (C) 2013-2016 Freescale Semiconductor -# Copyright 2017-2018 NXP -# Released under the MIT license (see COPYING.MIT for the terms) - -require imx-codec.inc - -LIC_FILES_CHKSUM = "file://COPYING;md5=6dfb32a488e5fd6bae52fbf6c7ebb086" - -SRC_URI[md5sum] = "181182985c0b7443bf1aad7cd3e52127" -SRC_URI[sha256sum] = "cb31c1e05c81a3c03dffbc1d5fa552146133999d53ea8129971fa3954ade52cb" - -COMPATIBLE_MACHINE = "(mx6|mx7|mx8)" diff --git a/meta-digi-dey/recipes-multimedia/imx-codec/imx-codec_4.4.5.bb b/meta-digi-dey/recipes-multimedia/imx-codec/imx-codec_4.4.5.bb new file mode 100644 index 000000000..ef72b3391 --- /dev/null +++ b/meta-digi-dey/recipes-multimedia/imx-codec/imx-codec_4.4.5.bb @@ -0,0 +1,12 @@ +# Copyright (C) 2013-2016 Freescale Semiconductor +# Copyright 2017-2018 NXP +# Released under the MIT license (see COPYING.MIT for the terms) + +require imx-codec.inc + +LIC_FILES_CHKSUM = "file://COPYING;md5=80c0478f4339af024519b3723023fe28" + +SRC_URI[md5sum] = "e17258161c84530097f6f9d5d46e6c26" +SRC_URI[sha256sum] = "b53eeada02ab09c8f5216348c667f8d8edef0c585e4b2f738e8b18955ad710b4" + +COMPATIBLE_MACHINE = "(mx6|mx7|mx8)" From 0db6363af53bc50196026d6e2434957b9b86c97e Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Mon, 13 May 2019 13:32:46 +0200 Subject: [PATCH 026/133] imx-parser: update to v4.4.5 This is the version used in meta-fsl-bsp-release branch sumo-4.14.98-2.0.0_ga. Change the .bbappend name so it's compatible with all versions of the package. https://jira.digi.com/browse/DEL-6603 Signed-off-by: Gabriel Valcazar --- .../recipes-multimedia/imx-parser/imx-parser.inc | 1 - ...x-parser_4.4.4.bbappend => imx-parser_%.bbappend} | 0 .../imx-parser/imx-parser_4.4.4.bb | 12 ------------ .../imx-parser/imx-parser_4.4.5.bb | 12 ++++++++++++ 4 files changed, 12 insertions(+), 13 deletions(-) rename meta-digi-dey/recipes-multimedia/imx-parser/{imx-parser_4.4.4.bbappend => imx-parser_%.bbappend} (100%) delete mode 100644 meta-digi-dey/recipes-multimedia/imx-parser/imx-parser_4.4.4.bb create mode 100644 meta-digi-dey/recipes-multimedia/imx-parser/imx-parser_4.4.5.bb diff --git a/meta-digi-dey/recipes-multimedia/imx-parser/imx-parser.inc b/meta-digi-dey/recipes-multimedia/imx-parser/imx-parser.inc index e3290b92d..726d309c8 100644 --- a/meta-digi-dey/recipes-multimedia/imx-parser/imx-parser.inc +++ b/meta-digi-dey/recipes-multimedia/imx-parser/imx-parser.inc @@ -36,6 +36,5 @@ do_package_qa[prefuncs] += "__set_insane_skip" # FIXME: gst-fsl-plugin looks for the .so files so we need to deploy those FILES_${PN} += "${libdir}/imx-mm/*/*${SOLIBS} ${libdir}/imx-mm/*/*${SOLIBSDEV}" -PACKAGE_ARCH = "${MACHINE_ARCH}" INHIBIT_SYSROOT_STRIP = "1" diff --git a/meta-digi-dey/recipes-multimedia/imx-parser/imx-parser_4.4.4.bbappend b/meta-digi-dey/recipes-multimedia/imx-parser/imx-parser_%.bbappend similarity index 100% rename from meta-digi-dey/recipes-multimedia/imx-parser/imx-parser_4.4.4.bbappend rename to meta-digi-dey/recipes-multimedia/imx-parser/imx-parser_%.bbappend diff --git a/meta-digi-dey/recipes-multimedia/imx-parser/imx-parser_4.4.4.bb b/meta-digi-dey/recipes-multimedia/imx-parser/imx-parser_4.4.4.bb deleted file mode 100644 index 8c383ece1..000000000 --- a/meta-digi-dey/recipes-multimedia/imx-parser/imx-parser_4.4.4.bb +++ /dev/null @@ -1,12 +0,0 @@ -# Copyright (C) 2013-2016 Freescale Semiconductor -# Copyright 2017-2018 NXP -# Released under the MIT license (see COPYING.MIT for the terms) - -include imx-parser.inc - -LIC_FILES_CHKSUM = "file://COPYING;md5=6dfb32a488e5fd6bae52fbf6c7ebb086" - -SRC_URI[md5sum] = "455f9f07ecf3c87510c547068a59c1b0" -SRC_URI[sha256sum] = "bb273dfc3baae9bc8c4ba579a67bfed69e8f8289860f88e7f996ec59259a6305" - -COMPATIBLE_MACHINE = "(mx6|mx7|mx8)" diff --git a/meta-digi-dey/recipes-multimedia/imx-parser/imx-parser_4.4.5.bb b/meta-digi-dey/recipes-multimedia/imx-parser/imx-parser_4.4.5.bb new file mode 100644 index 000000000..bf6171775 --- /dev/null +++ b/meta-digi-dey/recipes-multimedia/imx-parser/imx-parser_4.4.5.bb @@ -0,0 +1,12 @@ +# Copyright (C) 2013-2016 Freescale Semiconductor +# Copyright 2017-2018 NXP +# Released under the MIT license (see COPYING.MIT for the terms) + +include imx-parser.inc + +LIC_FILES_CHKSUM = "file://COPYING;md5=80c0478f4339af024519b3723023fe28" + +SRC_URI[md5sum] = "7fa7b0fa1682cae71c3a163da866f676" +SRC_URI[sha256sum] = "de86b57b429c0e6ed6b6842e5af1ec4d7b9d2074234769de6ba2edf04c967acd" + +COMPATIBLE_MACHINE = "(mx6|mx7|mx8)" From 45004945822bd131bd712bef061e5ba901b429ad Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Mon, 13 May 2019 13:37:34 +0200 Subject: [PATCH 027/133] gstreamer: update recipes to v1.14.4.imx This is the version used in meta-fsl-bsp-release branch sumo-4.14.98-2.0.0_ga. https://jira.digi.com/browse/DEL-6603 Signed-off-by: Gabriel Valcazar --- ...1.14.0.bb => gstreamer1.0-libav_1.14.4.bb} | 4 +- ...01-opencv-Fix-build-for-opencv-3.4.2.patch | 70 ------------------- .../gstreamer1.0-plugins-bad_1.14.imx.bb | 8 +-- ...t-hardcode-libtool-name-when-running.patch | 28 ++------ .../gstreamer1.0-plugins-base_1.14.imx.bb | 19 ++--- .../gstreamer1.0-plugins-good_1.14.imx.bb | 6 +- ...bb => gstreamer1.0-plugins-ugly_1.14.4.bb} | 4 +- ....bb => gstreamer1.0-rtsp-server_1.14.4.bb} | 4 +- .../gstreamer/gstreamer1.0_1.14.imx.bb | 6 +- ...0-plugin-Update-KERNEL_VERSION-check.patch | 37 ++++++++++ ...in_4.4.4.bb => imx-gst1.0-plugin_4.4.5.bb} | 17 ++--- .../gstreamer1.0-plugins-good-qt_1.14.imx.bb | 6 +- 12 files changed, 78 insertions(+), 131 deletions(-) rename meta-digi-dey/recipes-multimedia/gstreamer/{gstreamer1.0-libav_1.14.0.bb => gstreamer1.0-libav_1.14.4.bb} (91%) delete mode 100644 meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-opencv-Fix-build-for-opencv-3.4.2.patch rename meta-digi-dey/recipes-multimedia/gstreamer/{gstreamer1.0-plugins-ugly_1.14.0.bb => gstreamer1.0-plugins-ugly_1.14.4.bb} (85%) rename meta-digi-dey/recipes-multimedia/gstreamer/{gstreamer1.0-rtsp-server_1.14.0.bb => gstreamer1.0-rtsp-server_1.14.4.bb} (75%) create mode 100644 meta-digi-dey/recipes-multimedia/gstreamer/imx-gst1.0-plugin/0001-imx-gst1.0-plugin-Update-KERNEL_VERSION-check.patch rename meta-digi-dey/recipes-multimedia/gstreamer/{imx-gst1.0-plugin_4.4.4.bb => imx-gst1.0-plugin_4.4.5.bb} (84%) diff --git a/meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.14.0.bb b/meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.14.4.bb similarity index 91% rename from meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.14.0.bb rename to meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.14.4.bb index ae8e8b2ed..b7f4c54d8 100644 --- a/meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.14.0.bb +++ b/meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.14.4.bb @@ -23,7 +23,7 @@ SRC_URI = "http://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${PV}.tar.xz file://0002-gst-libs-Remove-library-path-switch-from-dependency_.patch \ " -SRC_URI[md5sum] = "943045b9e937ffc5c6cfa0bd5c44230d" -SRC_URI[sha256sum] = "fb134b4d3e054746ef8b922ff157b0c7903d1fdd910708a45add66954da7ef89" +SRC_URI[md5sum] = "58342db11dbb201a66a62577dcf7bab5" +SRC_URI[sha256sum] = "dfd78591901df7853eab7e56a86c34a1b03635da0d3d56b89aa577f1897865da" S = "${WORKDIR}/gst-libav-${PV}" diff --git a/meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-opencv-Fix-build-for-opencv-3.4.2.patch b/meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-opencv-Fix-build-for-opencv-3.4.2.patch deleted file mode 100644 index 2f89ef626..000000000 --- a/meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-opencv-Fix-build-for-opencv-3.4.2.patch +++ /dev/null @@ -1,70 +0,0 @@ -From c247745faaf885fd3fa094198fc0ea288e295dbf Mon Sep 17 00:00:00 2001 -From: Thibault Saunier -Date: Fri, 13 Jul 2018 14:42:28 -0400 -Subject: [PATCH] opencv: Fix build for opencv >= 3.4.2 -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The `CV_RGB` macro is now in `imgproc.hpp`. - -Fixes: - - ../subprojects/gst-plugins-bad/ext/opencv/gsthanddetect.cpp:497:40: error: ‘CV_RGB’ was not declared in this scope - cvCircle (img, center, radius, CV_RGB (0, 0, 200), 1, 8, 0); - ^~~~~~ - -Upstream-Status: Backport [https://github.com/GStreamer/gst-plugins-bad/commit/c247745faaf885fd3fa094198fc0ea288e295dbf] - -Signed-off-by: Tom Hochstein ---- - ext/opencv/MotionCells.cpp | 3 +++ - ext/opencv/gsthanddetect.cpp | 3 +++ - ext/opencv/gsttemplatematch.cpp | 3 +++ - 3 files changed, 9 insertions(+) - -diff --git a/ext/opencv/MotionCells.cpp b/ext/opencv/MotionCells.cpp -index f85989e..175ec90 100644 ---- a/ext/opencv/MotionCells.cpp -+++ b/ext/opencv/MotionCells.cpp -@@ -51,6 +51,9 @@ - - #include - #include "MotionCells.h" -+#if (CV_MAJOR_VERSION >= 3) -+#include -+#endif - #include - - MotionCells::MotionCells () -diff --git a/ext/opencv/gsthanddetect.cpp b/ext/opencv/gsthanddetect.cpp -index 60fd5be..47203fd 100644 ---- a/ext/opencv/gsthanddetect.cpp -+++ b/ext/opencv/gsthanddetect.cpp -@@ -62,6 +62,9 @@ - - /* element header */ - #include "gsthanddetect.h" -+#if (CV_MAJOR_VERSION >= 3) -+#include -+#endif - #include - - GST_DEBUG_CATEGORY_STATIC (gst_handdetect_debug); -diff --git a/ext/opencv/gsttemplatematch.cpp b/ext/opencv/gsttemplatematch.cpp -index f39208d..ec0b56a 100644 ---- a/ext/opencv/gsttemplatematch.cpp -+++ b/ext/opencv/gsttemplatematch.cpp -@@ -63,6 +63,9 @@ - - #include "../../gst-libs/gst/gst-i18n-plugin.h" - #include "gsttemplatematch.h" -+#if (CV_MAJOR_VERSION >= 3) -+#include -+#endif - #include - - GST_DEBUG_CATEGORY_STATIC (gst_template_match_debug); --- -2.7.4 - diff --git a/meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.14.imx.bb b/meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.14.imx.bb index df9e871c0..d4fccbd6b 100644 --- a/meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.14.imx.bb +++ b/meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.14.imx.bb @@ -24,6 +24,7 @@ PACKAGECONFIG_remove = " gles2" PACKAGECONFIG_remove_mx8mm = " vulkan" PACKAGECONFIG[wayland] = "--enable-wayland,--disable-wayland,wayland-native wayland wayland-protocols" +PACKAGECONFIG[vulkan] = "--enable-vulkan,--disable-vulkan,vulkan-headers" # Disable introspection to fix [GstGL-1.0.gir] Error EXTRA_OECONF_append = " --disable-introspection" @@ -40,14 +41,13 @@ SRC_URI_remove = "file://0001-Prepend-PKG_CONFIG_SYSROOT_DIR-to-pkg-config-outpu EXTRA_OECONF_remove = "WAYLAND_PROTOCOLS_SYSROOT_DIR=${RECIPE_SYSROOT}" GST1.0-PLUGINS-BAD_SRC ?= "gitsm://source.codeaurora.org/external/imx/gst-plugins-bad.git;protocol=https" -SRCBRANCH = "MM_04.04.04_1811_L4.14.78_GA" +SRCBRANCH = "MM_04.04.05_1902_L4.14.98_GA" SRC_URI = " \ ${GST1.0-PLUGINS-BAD_SRC};branch=${SRCBRANCH} \ - file://0001-opencv-Fix-build-for-opencv-3.4.2.patch \ " -SRCREV = "7e8a87fcbf5bd44b6982f6d15f2d28aa5f49a6be" +SRCREV = "0191521ba226904e4b2f84c38e5f6ae75169a18a" # This remove "--exclude=autopoint" option from autoreconf argument to avoid # configure.ac:30: error: required file './ABOUT-NLS' not found @@ -61,7 +61,7 @@ do_compile_prepend () { export GIR_EXTRA_LIBS_PATH="${B}/gst-libs/gst/ion/.libs" } -PV = "1.14.0.imx" +PV = "1.14.4.imx" S = "${WORKDIR}/git" diff --git a/meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch b/meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch index a1cc7d3dc..d23e81875 100644 --- a/meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch +++ b/meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch @@ -1,7 +1,7 @@ -From a049bb15839557594713cb32e7d6bfe0e2127392 Mon Sep 17 00:00:00 2001 +From 80c48db2d2d1d355e204c454027a8983d1b52a62 Mon Sep 17 00:00:00 2001 From: Yuqing Zhu -Date: Fri, 20 Apr 2018 22:46:46 +0800 -Subject: [PATCH] Makefile.am: don't hardcode libtool name when running +Date: Tue, 25 Dec 2018 13:56:12 +0800 +Subject: [PATCH] [PATCH] Makefile.am: don't hardcode libtool name when running introspection tools Do patch refine basing on commit: f1d9652351e7754c63003104eceb526af424c7e0 @@ -13,7 +13,6 @@ Signed-off-by: Yuqing Zhu gst-libs/gst/allocators/Makefile.am | 2 +- gst-libs/gst/app/Makefile.am | 2 +- gst-libs/gst/audio/Makefile.am | 2 +- - gst-libs/gst/gl/Makefile.am | 2 +- gst-libs/gst/pbutils/Makefile.am | 2 +- gst-libs/gst/riff/Makefile.am | 2 +- gst-libs/gst/rtp/Makefile.am | 2 +- @@ -21,10 +20,10 @@ Signed-off-by: Yuqing Zhu gst-libs/gst/sdp/Makefile.am | 2 +- gst-libs/gst/tag/Makefile.am | 2 +- gst-libs/gst/video/Makefile.am | 2 +- - 11 files changed, 11 insertions(+), 11 deletions(-) + 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/gst-libs/gst/allocators/Makefile.am b/gst-libs/gst/allocators/Makefile.am -index 0edc0ae..d0d425d 100644 +index fa11983..caccbb1 100644 --- a/gst-libs/gst/allocators/Makefile.am +++ b/gst-libs/gst/allocators/Makefile.am @@ -58,7 +58,7 @@ GstAllocators-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstallocators-@ @@ -62,19 +61,6 @@ index 2922245..7fb65f2 100644 --pkg gstreamer-@GST_API_VERSION@ \ --pkg gstreamer-base-@GST_API_VERSION@ \ --pkg-export gstreamer-audio-@GST_API_VERSION@ \ -diff --git a/gst-libs/gst/gl/Makefile.am b/gst-libs/gst/gl/Makefile.am -index b04187f..576bf1c 100644 ---- a/gst-libs/gst/gl/Makefile.am -+++ b/gst-libs/gst/gl/Makefile.am -@@ -205,7 +205,7 @@ GstGL-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstgl-@GST_API_VERSION@ - --include=Gst-@GST_API_VERSION@ \ - --include=GstBase-@GST_API_VERSION@ \ - --include=GstVideo-@GST_API_VERSION@ \ -- --libtool="$(top_builddir)/libtool" \ -+ --libtool="$(LIBTOOL)" \ - --pkg gstreamer-@GST_API_VERSION@ \ - --pkg gstreamer-base-@GST_API_VERSION@ \ - --pkg gstreamer-video-@GST_API_VERSION@ \ diff --git a/gst-libs/gst/pbutils/Makefile.am b/gst-libs/gst/pbutils/Makefile.am index ae51993..35a6e44 100644 --- a/gst-libs/gst/pbutils/Makefile.am @@ -154,7 +140,7 @@ index 0247c33..c86515b 100644 --pkg gstreamer-base-@GST_API_VERSION@ \ --pkg-export gstreamer-tag-@GST_API_VERSION@ \ diff --git a/gst-libs/gst/video/Makefile.am b/gst-libs/gst/video/Makefile.am -index 1b74f37..0f7c07e 100644 +index 72f23cd..b65a6c5 100644 --- a/gst-libs/gst/video/Makefile.am +++ b/gst-libs/gst/video/Makefile.am @@ -126,7 +126,7 @@ GstVideo-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstvideo-@GST_API_VE @@ -167,5 +153,5 @@ index 1b74f37..0f7c07e 100644 --pkg gstreamer-base-@GST_API_VERSION@ \ --pkg-export gstreamer-video-@GST_API_VERSION@ \ -- -2.7.4 +1.9.1 diff --git a/meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.14.imx.bb b/meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.14.imx.bb index ee07aae92..1742574c5 100644 --- a/meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.14.imx.bb +++ b/meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.14.imx.bb @@ -11,11 +11,8 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=c54ce9345727175ff66d17b67ff51f58 \ file://COPYING.LIB;md5=6762ed442b3822387a51c92d928ead0d \ file://common/coverage/coverage-report.pl;beginline=2;endline=17;md5=a4e1830fce078028c8f0974161272607" -DEPENDS += "virtual/kernel" DEPENDS_append_imxgpu2d = " virtual/libg2d" -do_configure[depends] += "virtual/kernel:do_shared_workdir" - # Enable pango lib PACKAGECONFIG_append = " pango " @@ -27,30 +24,26 @@ PACKAGECONFIG[gio-unix-2.0] = "" EXTRA_OECONF_append = " --disable-opengl --enable-wayland" GST1.0-PLUGINS-BASE_SRC ?= "gitsm://source.codeaurora.org/external/imx/gst-plugins-base.git;protocol=https" -SRCBRANCH = "MM_04.04.04_1811_L4.14.78_GA" +SRCBRANCH = "MM_04.04.05_1902_L4.14.98_GA" SRC_URI = " \ ${GST1.0-PLUGINS-BASE_SRC};branch=${SRCBRANCH} \ file://0001-introspection.m4-prefix-pkgconfig-paths-with-PKG_CON.patch \ file://make-gio_unix_2_0-dependency-configurable.patch \ " -SRCREV = "318a9477159d6b162e480faf29f56153b27fb6a7" +SRCREV = "f62f8ab685e549eefaecdb1e700239a5a408fcad" + +inherit use-imx-headers EXTRA_AUTORECONF = "" -# Find ion.h in kernel -EXTRA_OECONF = " \ - CPPFLAGS=" \ - -I${STAGING_KERNEL_DIR}/include/uapi \ - -I${STAGING_KERNEL_DIR}/include \ - " \ -" +EXTRA_OECONF = "CPPFLAGS="-I${STAGING_INCDIR_IMX}"" EXTRA_OEMAKE += "GIR_EXTRA_LIBS_PATH=${GIR_EXTRA_LIBS_PATH}:${B}/gst-libs/gst/allocators/.libs" FILES_${PN} += "${libdir}/gstreamer-1.0/include" -PV = "1.14.0.imx" +PV = "1.14.4.imx" S = "${WORKDIR}/git" diff --git a/meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.14.imx.bb b/meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.14.imx.bb index 9392e82d8..0a30ca351 100644 --- a/meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.14.imx.bb +++ b/meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.14.imx.bb @@ -8,12 +8,12 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \ DEPENDS += "libdrm" GST1.0-PLUGINS-GOOD_SRC ?= "gitsm://source.codeaurora.org/external/imx/gst-plugins-good.git;protocol=https" -SRCBRANCH = "MM_04.04.04_1811_L4.14.78_GA" +SRCBRANCH = "MM_04.04.05_1902_L4.14.98_GA" SRC_URI = " \ ${GST1.0-PLUGINS-GOOD_SRC};branch=${SRCBRANCH} \ " -SRCREV = "cec0ef39784a3acfd2b442d107f054c6ab10181e" +SRCREV = "a31aabb7581d3f491cd31889d44479bb0f34990b" EXTRA_AUTORECONF = "" PACKAGECONFIG_append = " vpx" @@ -21,7 +21,7 @@ PACKAGECONFIG_append = " vpx" # Fix: unrecognised options: --disable-sunaudio [unknown-configure-option] EXTRA_OECONF_remove = " --disable-sunaudio" -PV = "1.14.0.imx" +PV = "1.14.4.imx" S = "${WORKDIR}/git" diff --git a/meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.14.0.bb b/meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.14.4.bb similarity index 85% rename from meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.14.0.bb rename to meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.14.4.bb index 4bf983a8c..16fa17705 100644 --- a/meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.14.0.bb +++ b/meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.14.4.bb @@ -11,8 +11,8 @@ SRC_URI = " \ http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${PV}.tar.xz \ file://0001-introspection.m4-prefix-pkgconfig-paths-with-PKG_CON.patch \ " -SRC_URI[md5sum] = "bcb1f8d9339176aee2b5da2a9cb2df88" -SRC_URI[sha256sum] = "3fb9ea5fc8a2de4b3eaec4128d71c6a2d81dd19befe1cd87cb833b98bcb542d1" +SRC_URI[md5sum] = "90768a0074db071175ce980064d9a1ac" +SRC_URI[sha256sum] = "ac02d837f166c35ff6ce0738e281680d0b90052cfb1f0255dcf6aaca5f0f6d23" S = "${WORKDIR}/gst-plugins-ugly-${PV}" diff --git a/meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.14.0.bb b/meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.14.4.bb similarity index 75% rename from meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.14.0.bb rename to meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.14.4.bb index cc8445e85..d40fa0bc1 100644 --- a/meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.14.0.bb +++ b/meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.14.4.bb @@ -4,8 +4,8 @@ require gstreamer1.0-rtsp-server.inc FILESEXTRAPATHS_prepend := "${COREBASE}/meta/recipes-multimedia/gstreamer/files:" FILESEXTRAPATHS_prepend := "${COREBASE}/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server:" -SRC_URI[md5sum] = "8a505c88f7469c3a0d1e9f4e9a315e53" -SRC_URI[sha256sum] = "6b65a077bed815f6d3157ebea503cc9f3c32d289af2756b7ff7e3958744d9756" +SRC_URI[md5sum] = "ab0fb5c829266a500e14b46b7bdf06bf" +SRC_URI[sha256sum] = "3d0ece2afdcd601c175ece24e32a30bc19247b454f4eafd3deeec2533c6884f1" # Disable introspection to fix [GstRtsp-1.0.gir] Error EXTRA_OECONF_append = " --disable-introspection" diff --git a/meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0_1.14.imx.bb b/meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0_1.14.imx.bb index 6f436fc84..72de5e6a2 100644 --- a/meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0_1.14.imx.bb +++ b/meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0_1.14.imx.bb @@ -8,10 +8,10 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=6762ed442b3822387a51c92d928ead0d \ # Use i.MX fork of GST for customizations GST1.0_SRC ?= "gitsm://source.codeaurora.org/external/imx/gstreamer.git;protocol=https" -SRCBRANCH = "MM_04.04.04_1811_L4.14.78_GA" +SRCBRANCH = "MM_04.04.05_1902_L4.14.98_GA" SRC_URI = " ${GST1.0_SRC};branch=${SRCBRANCH}" -SRCREV = "f4e127a5e9a1eb977e023532d6636d939c8ccbc8" +SRCREV = "d42548da09724ad8cc1aa4f1944607920be2f4c0" EXTRA_AUTORECONF = "" @@ -20,7 +20,7 @@ DEPENDS += " elfutils" # Unrecognised options, need to remove them EXTRA_OECONF_remove = " --disable-docbook --disable-trace" -PV = "1.14.0.imx" +PV = "1.14.4.imx" S = "${WORKDIR}/git" diff --git a/meta-digi-dey/recipes-multimedia/gstreamer/imx-gst1.0-plugin/0001-imx-gst1.0-plugin-Update-KERNEL_VERSION-check.patch b/meta-digi-dey/recipes-multimedia/gstreamer/imx-gst1.0-plugin/0001-imx-gst1.0-plugin-Update-KERNEL_VERSION-check.patch new file mode 100644 index 000000000..f95a02120 --- /dev/null +++ b/meta-digi-dey/recipes-multimedia/gstreamer/imx-gst1.0-plugin/0001-imx-gst1.0-plugin-Update-KERNEL_VERSION-check.patch @@ -0,0 +1,37 @@ +From e2e72f8baaa7ee90f489e866befb6f4ce91ba533 Mon Sep 17 00:00:00 2001 +From: "i.MX Yocto Project Build" +Date: Mon, 14 Jan 2019 01:59:42 -0600 +Subject: [PATCH] imx-gst1.0-plugin: Update KERNEL_VERSION check + +It should be against v4.14 instead of v4.14.34 + +Signed-off-by: i.MX Yocto Project Build +--- + libs/gstimxcommon.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/libs/gstimxcommon.c b/libs/gstimxcommon.c +index eb808b9..49eb3e2 100644 +--- a/libs/gstimxcommon.c ++++ b/libs/gstimxcommon.c +@@ -38,7 +38,7 @@ unsigned long phy_addr_from_fd(int dmafd) + if (dmafd < 0) + return NULL; + +-#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 34) ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0) + fd = open(dev_ion, O_RDWR); + if(fd < 0) { + return NULL; +@@ -83,7 +83,7 @@ unsigned long phy_addr_from_vaddr(void *vaddr, int size) + if (!vaddr) + return NULL; + +-#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 34) ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0) + fd = open(dev_ion, O_RDWR); + if(fd < 0) { + return NULL; +-- +2.7.4 + diff --git a/meta-digi-dey/recipes-multimedia/gstreamer/imx-gst1.0-plugin_4.4.4.bb b/meta-digi-dey/recipes-multimedia/gstreamer/imx-gst1.0-plugin_4.4.5.bb similarity index 84% rename from meta-digi-dey/recipes-multimedia/gstreamer/imx-gst1.0-plugin_4.4.4.bb rename to meta-digi-dey/recipes-multimedia/gstreamer/imx-gst1.0-plugin_4.4.5.bb index b0f89f0e5..75885e5b7 100644 --- a/meta-digi-dey/recipes-multimedia/gstreamer/imx-gst1.0-plugin_4.4.4.bb +++ b/meta-digi-dey/recipes-multimedia/gstreamer/imx-gst1.0-plugin_4.4.5.bb @@ -1,5 +1,5 @@ # Copyright (C) 2014,2016 Freescale Semiconductor -# Copyright 2017-2018 NXP +# Copyright 2017-2019 NXP # Copyright (C) 2012-2015 O.S. Systems Software LTDA. # Released under the MIT license (see COPYING.MIT for the terms) @@ -7,8 +7,7 @@ DESCRIPTION = "Gstreamer freescale plugins" LICENSE = "GPLv2 & LGPLv2 & LGPLv2.1" SECTION = "multimedia" -DEPENDS = "imx-codec imx-parser virtual/kernel libdrm gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad" -do_configure[depends] += "virtual/kernel:do_shared_workdir" +DEPENDS = "imx-codec imx-parser libdrm gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad" DEPENDS_append_mx6 = " imx-lib" DEPENDS_append_mx7 = " imx-lib" DEPENDS_append_imxvpu = " imx-vpuwrap" @@ -22,14 +21,16 @@ LIC_FILES_CHKSUM = "file://COPYING-LGPL-2;md5=5f30f0716dfdd0d91eb439ebec522ec2 \ file://COPYING-LGPL-2.1;md5=fbc093901857fcd118f065f900982c24" IMXGST_SRC ?= "git://source.codeaurora.org/external/imx/imx-gst1.0-plugin.git;protocol=https" -SRCBRANCH = "MM_04.04.04_1811_L4.14.78_GA" +SRCBRANCH = "MM_04.04.05_1902_L4.14.98_GA" -SRC_URI = "${IMXGST_SRC};branch=${SRCBRANCH}" -SRCREV = "79cf42955b5100cd1a3b2ea2647ceb7cfa50fffb" +SRC_URI = "${IMXGST_SRC};branch=${SRCBRANCH} \ + file://0001-imx-gst1.0-plugin-Update-KERNEL_VERSION-check.patch \ +" +SRCREV = "0c5f48b3aee473d8c8f3e853eb2078f054caa4d2" S = "${WORKDIR}/git" -inherit autotools pkgconfig +inherit autotools pkgconfig use-imx-headers PLATFORM_mx6 = "MX6" PLATFORM_mx6sl = "MX6SL" @@ -42,7 +43,7 @@ PLATFORM_mx8 = "MX8" # Todo add a mechanism to map possible build targets EXTRA_OECONF = "PLATFORM=${PLATFORM} \ - CPPFLAGS="-I${STAGING_KERNEL_BUILDDIR}/include/generated/uapi -I${STAGING_KERNEL_DIR}/include/uapi -I${STAGING_KERNEL_DIR}/include" \ + CPPFLAGS="-I${STAGING_INCDIR_IMX}" \ CROSS_ROOT=${PKG_CONFIG_SYSROOT_DIR} \ ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', bb.utils.contains('DISTRO_FEATURES', 'x11', '--disable-x11', '', d), '', d)}" diff --git a/meta-digi-dey/recipes-qt/qt5/gstreamer1.0-plugins-good-qt_1.14.imx.bb b/meta-digi-dey/recipes-qt/qt5/gstreamer1.0-plugins-good-qt_1.14.imx.bb index 1376a1199..5bc6d0f16 100644 --- a/meta-digi-dey/recipes-qt/qt5/gstreamer1.0-plugins-good-qt_1.14.imx.bb +++ b/meta-digi-dey/recipes-qt/qt5/gstreamer1.0-plugins-good-qt_1.14.imx.bb @@ -6,13 +6,13 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \ file://gst/replaygain/rganalysis.c;beginline=1;endline=23;md5=b60ebefd5b2f5a8e0cab6bfee391a5fe" GST1.0-PLUGINS-GOOD_SRC ?= "gitsm://source.codeaurora.org/external/imx/gst-plugins-good.git;protocol=https" -SRCBRANCH = "MM_04.04.04_1811_L4.14.78_GA" +SRCBRANCH = "MM_04.04.05_1902_L4.14.98_GA" SRC_URI = " \ ${GST1.0-PLUGINS-GOOD_SRC};branch=${SRCBRANCH} \ file://0001-configure.ac-Add-prefix-to-correct-the-QT_PATH.patch \ " -SRCREV = "cec0ef39784a3acfd2b442d107f054c6ab10181e" +SRCREV = "a31aabb7581d3f491cd31889d44479bb0f34990b" DEPENDS += "gstreamer1.0-plugins-base virtual/kernel \ ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'qtwayland', '', d)} \ @@ -56,7 +56,7 @@ do_install_append() { fi } -PV = "1.14.0.imx" +PV = "1.14.4.imx" S = "${WORKDIR}/git" From ccf3a291e479ce3dc352f540bed9f086b57b71a6 Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Mon, 13 May 2019 15:51:21 +0200 Subject: [PATCH 028/133] imx-m4-demos: update to v2.5.2 This is the version used in meta-fsl-bsp-release branch sumo-4.14.98-2.0.0_ga for the imx8qxp. https://jira.digi.com/browse/DEL-6603 Signed-off-by: Gabriel Valcazar --- .../recipes-cpu/m4-demos/imx-m4-demos-2.inc | 28 ++++++++++++++ .../m4-demos/imx-m4-demos_2.5.1.bb | 37 ------------------- .../m4-demos/imx-m4-demos_2.5.2.bb | 14 +++++++ 3 files changed, 42 insertions(+), 37 deletions(-) create mode 100644 meta-digi-arm/recipes-cpu/m4-demos/imx-m4-demos-2.inc delete mode 100644 meta-digi-arm/recipes-cpu/m4-demos/imx-m4-demos_2.5.1.bb create mode 100644 meta-digi-arm/recipes-cpu/m4-demos/imx-m4-demos_2.5.2.bb diff --git a/meta-digi-arm/recipes-cpu/m4-demos/imx-m4-demos-2.inc b/meta-digi-arm/recipes-cpu/m4-demos/imx-m4-demos-2.inc new file mode 100644 index 000000000..f35d6dc74 --- /dev/null +++ b/meta-digi-arm/recipes-cpu/m4-demos/imx-m4-demos-2.inc @@ -0,0 +1,28 @@ +# Copyright 2017-2018 NXP +# Released under the MIT license (see COPYING.MIT for the terms) + +SUMMARY = "i.MX M4 core Demo images" +SECTION = "app" +LICENSE = "Proprietary" + +inherit deploy fsl-eula2-unpack2 + +SOC ?= "INVALID" +SOC_mx7ulp = "imx7ulp" +SOC_mx8mm = "imx8mm" +SOC_mx8mq = "imx8mq" +SOC_mx8qm = "imx8qm" +SOC_mx8qxp = "imx8qx" + +IMX_PACKAGE_NAME = "${SOC}-m4-demo-${PV}" +SRC_URI_append = ";name=${SOC}" + +SCR = "SCR-${SOC}-m4-demo.txt" + +do_deploy () { + # Install the demo binaries + cp ${D}/* ${DEPLOYDIR}/ +} +addtask deploy after do_install + +PACKAGE_ARCH = "${MACHINE_SOCARCH}" diff --git a/meta-digi-arm/recipes-cpu/m4-demos/imx-m4-demos_2.5.1.bb b/meta-digi-arm/recipes-cpu/m4-demos/imx-m4-demos_2.5.1.bb deleted file mode 100644 index 82a68d2d7..000000000 --- a/meta-digi-arm/recipes-cpu/m4-demos/imx-m4-demos_2.5.1.bb +++ /dev/null @@ -1,37 +0,0 @@ -# Copyright 2017-2018 NXP -# Released under the MIT license (see COPYING.MIT for the terms) - -SUMMARY = "i.MX M4 core Demo images" -SECTION = "app" -LICENSE = "Proprietary" -LIC_FILES_CHKSUM = "file://COPYING;md5=6dfb32a488e5fd6bae52fbf6c7ebb086" - -inherit deploy fsl-eula-unpack2 - -SOC ?= "imx8qm" -SOC_mx7ulp= "imx7ulp" -SOC_mx8mm= "imx8mm" -SOC_mx8mq= "imx8mq" -SOC_mx8qm= "imx8qm" -SOC_mx8qxp= "imx8qx" - -IMX_PACKAGE_NAME = "${SOC}-m4-demo-${PV}" -SRC_URI_NAME = "${SOC}" - -SRC_URI[imx8qm.md5sum] = "d4b63215497b61fda8eff89a820aa0d4" -SRC_URI[imx8qm.sha256sum] = "79d34ba2abcbaf02a8d01f5eb8c71e125aad34319bcc702815cf14d89a3d4e1f" - -SRC_URI[imx8qx.md5sum] = "c0201a442eaac19f9b929261d69f8d9b" -SRC_URI[imx8qx.sha256sum] = "724676c9de95ca25beab1ce793fe170623b4b6d967ca07ddbf8cb4dbcbd15c8d" - -SCR = "SCR-${SOC}-m4-demo.txt" - -do_deploy () { - # Install the demo binaries - cp ${D}/* ${DEPLOYDIR}/ -} - -addtask deploy before do_build after do_install - -PACKAGE_ARCH = "${MACHINE_ARCH}" -COMPATIBLE_MACHINE = "(mx8qm|mx8qxp)" diff --git a/meta-digi-arm/recipes-cpu/m4-demos/imx-m4-demos_2.5.2.bb b/meta-digi-arm/recipes-cpu/m4-demos/imx-m4-demos_2.5.2.bb new file mode 100644 index 000000000..910b7618e --- /dev/null +++ b/meta-digi-arm/recipes-cpu/m4-demos/imx-m4-demos_2.5.2.bb @@ -0,0 +1,14 @@ +# Copyright 2017-2019 NXP +# Released under the MIT license (see COPYING.MIT for the terms) + +require imx-m4-demos-2.inc + +LIC_FILES_CHKSUM = "file://COPYING;md5=80c0478f4339af024519b3723023fe28" + +SRC_URI[imx8qm.md5sum] = "6423c4c60412b509b6d7537ce1a3fd44" +SRC_URI[imx8qm.sha256sum] = "cf430d4a111370c021435e864666d34fae4c4242907c195aad0c46c48073f78f" + +SRC_URI[imx8qx.md5sum] = "fe2e5c9513faac946d29e5904bf792d9" +SRC_URI[imx8qx.sha256sum] = "151c6a578f6ae5a09b378015116061875047e4f3b6264e4becc80276621893b1" + +COMPATIBLE_MACHINE = "(mx8qm|mx8qxp)" From ea466b0264832490e31b800add0e5e7b09251972 Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Mon, 13 May 2019 17:02:53 +0200 Subject: [PATCH 029/133] imx-boot: add NXP sumo-4.14.98-2.0.0_ga changes Use rel_imx_4.14.98_2.0.0_ga imx-mkimage tag, update ATF binary name, update target names and rename CM4.bin to m4_image.bin. https://jira.digi.com/browse/DEL-6603 Signed-off-by: Gabriel Valcazar --- .../recipes-bsp/imx-mkimage/imx-boot_0.2.bbappend | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/meta-digi-arm/recipes-bsp/imx-mkimage/imx-boot_0.2.bbappend b/meta-digi-arm/recipes-bsp/imx-mkimage/imx-boot_0.2.bbappend index 5bdb21502..912e8ea3b 100644 --- a/meta-digi-arm/recipes-bsp/imx-mkimage/imx-boot_0.2.bbappend +++ b/meta-digi-arm/recipes-bsp/imx-mkimage/imx-boot_0.2.bbappend @@ -1,5 +1,9 @@ # Copyright 2019 Digi International, Inc. +# Use the v4.14 ga BSP branch +SRCBRANCH = "imx_4.14.98_2.0.0_ga" +SRCREV = "dd0234001713623c79be92b60fa88bc07b07f24f" + IMX_EXTRA_FIRMWARE_ccimx8x = "digi-sc-firmware" DEPENDS_append_ccimx8x = " coreutils-native" @@ -26,18 +30,18 @@ do_populate_lic[depends] += " \ ${@' '.join('%s:do_populate_lic' % r for r in '${IMX_M4_DEMOS}'.split() )} \ firmware-imx:do_populate_lic \ " +ATF_MACHINE_NAME_mx8qxp = "bl31-imx8qx.bin" UBOOT_NAME = "u-boot-${MACHINE}.bin" BOOT_CONFIG_MACHINE = "${BOOT_NAME}" IMXBOOT_TARGETS_ccimx8x = "${@bb.utils.contains('UBOOT_CONFIG', 'fspi', 'flash_flexspi', \ - bb.utils.contains('UBOOT_CONFIG', 'nand', 'flash_nand', \ - 'flash flash_all', d), d)}" + 'flash flash_regression_linux_m4', d)}" do_compile () { bbnote 8QX boot binary build cp ${DEPLOY_DIR_IMAGE}/imx8qx_m4_TCM_srtm_demo.bin ${BOOT_STAGING}/m40_tcm.bin - cp ${DEPLOY_DIR_IMAGE}/imx8qx_m4_TCM_srtm_demo.bin ${BOOT_STAGING}/CM4.bin + cp ${DEPLOY_DIR_IMAGE}/imx8qx_m4_TCM_srtm_demo.bin ${BOOT_STAGING}/m4_image.bin cp ${DEPLOY_DIR_IMAGE}/mx8qx-ahab-container.img ${BOOT_STAGING}/ cp ${DEPLOY_DIR_IMAGE}/${BOOT_TOOLS}/${ATF_MACHINE_NAME} ${BOOT_STAGING}/bl31.bin for type in ${UBOOT_CONFIG}; do @@ -83,7 +87,7 @@ do_deploy () { # copy the tool mkimage to deploy path and sc fw, dcd and uboot install -m 0644 ${BOOT_STAGING}/mx8qx-ahab-container.img ${DEPLOYDIR}/${BOOT_TOOLS} install -m 0644 ${BOOT_STAGING}/m40_tcm.bin ${DEPLOYDIR}/${BOOT_TOOLS} - install -m 0644 ${BOOT_STAGING}/CM4.bin ${DEPLOYDIR}/${BOOT_TOOLS} + install -m 0644 ${BOOT_STAGING}/m4_image.bin ${DEPLOYDIR}/${BOOT_TOOLS} install -m 0755 ${S}/${TOOLS_NAME} ${DEPLOYDIR}/${BOOT_TOOLS} # copy makefile (soc.mak) for reference From 4415627ae7da57ff28ec8f98e7d88419df2c293f Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Tue, 14 May 2019 13:59:54 +0200 Subject: [PATCH 030/133] digi-sc-firmware: update to v1.2 Change the recipe name and update its checksums. https://jira.digi.com/browse/DEL-6603 Signed-off-by: Gabriel Valcazar --- .../{digi-sc-firmware_1.1.bb => digi-sc-firmware_1.2.bb} | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) rename meta-digi-arm/recipes-bsp/digi-sc-firmware/{digi-sc-firmware_1.1.bb => digi-sc-firmware_1.2.bb} (86%) diff --git a/meta-digi-arm/recipes-bsp/digi-sc-firmware/digi-sc-firmware_1.1.bb b/meta-digi-arm/recipes-bsp/digi-sc-firmware/digi-sc-firmware_1.2.bb similarity index 86% rename from meta-digi-arm/recipes-bsp/digi-sc-firmware/digi-sc-firmware_1.1.bb rename to meta-digi-arm/recipes-bsp/digi-sc-firmware/digi-sc-firmware_1.2.bb index 7feaf1b57..9aba6f5ea 100644 --- a/meta-digi-arm/recipes-bsp/digi-sc-firmware/digi-sc-firmware_1.1.bb +++ b/meta-digi-arm/recipes-bsp/digi-sc-firmware/digi-sc-firmware_1.2.bb @@ -4,15 +4,15 @@ DESCRIPTION = "i.MX System Controller Firmware, customized for Digi platforms" LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://COPYING;md5=6dfb32a488e5fd6bae52fbf6c7ebb086" +LIC_FILES_CHKSUM = "file://COPYING;md5=80c0478f4339af024519b3723023fe28" SECTION = "BSP" inherit pkgconfig deploy SRC_URI = "${DIGI_PKG_SRC}/${PN}-${PV}.tar.gz" -SRC_URI[md5sum] = "bc8b696ea4f75747bed9fabd352f9596" -SRC_URI[sha256sum] = "e3cf8163a02d71e06bbf64ea50e3a661dbecf60a57ff890d3dc1ee9ffdcda9ee" +SRC_URI[md5sum] = "5e6b51d92e3c6e663b65ed71f7b592c1" +SRC_URI[sha256sum] = "4752a790b4abd41694839a3704d34c4db0d39a3d65fc5f290996ac4a7a227d8d" S = "${WORKDIR}/${PN}-${PV}" From 583dc784bc619717ea4fd4162e83633a910d5e5b Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Tue, 14 May 2019 14:07:21 +0200 Subject: [PATCH 031/133] vulkan: update vulkan recipes Make our vulkan sub-folder match NXP's by updating recipes, deleting ones that are no longer needed and adding new ones. Also, stop forcing 1.0.65% as the preferred vulkan version. https://jira.digi.com/browse/DEL-6603 Signed-off-by: Gabriel Valcazar --- meta-digi-dey/conf/distro/dey.conf | 3 - .../recipes-graphics/vulkan/assimp_4.1.0.bb | 20 ---- ...eLists.txt-obey-CMAKE_INSTALL_LIBDIR.patch | 82 ------------- .../recipes-graphics/vulkan/glslang_git.bb | 10 +- .../vulkan/spirv-tools_git.bb | 6 +- ...s-Use-depth-format-supported-by-i.MX.patch | 56 +++++++++ .../recipes-graphics/vulkan/vkmark_1.0.bb | 7 +- .../vulkan/vulkan-demos_%.bbappend | 3 +- .../vulkan/vulkan-headers_%.bbappend | 3 + .../vulkan/vulkan-headers_1.1.92.0.bb | 20 ++++ ...d-to-change-the-App-s-apiVersion-to-.patch | 38 ++++++ .../vulkan/vulkan-loader_%.bbappend | 8 ++ .../vulkan/vulkan-loader_1.1.92.0.bb | 34 ++++++ .../vulkan/vulkan-tools_%.bbappend | 10 ++ .../vulkan/vulkan-tools_1.1.92.bb | 25 ++++ ...hange-the-installation-path-of-JSON-.patch | 38 ++++++ .../icd_VSI.json | 0 ...end => vulkan-validationlayers_%.bbappend} | 15 +-- ...bb => vulkan-validationlayers_1.1.92.0.bb} | 27 +++-- ...-Modify-the-library-path-to-point-to.patch | 27 ----- .../demos-Don-t-build-tri-or-cube.patch | 108 ------------------ 21 files changed, 268 insertions(+), 272 deletions(-) delete mode 100644 meta-digi-dey/recipes-graphics/vulkan/assimp_4.1.0.bb delete mode 100644 meta-digi-dey/recipes-graphics/vulkan/glslang/0001-CMakeLists.txt-obey-CMAKE_INSTALL_LIBDIR.patch create mode 100644 meta-digi-dey/recipes-graphics/vulkan/vkmark/0001-scenes-Use-depth-format-supported-by-i.MX.patch create mode 100644 meta-digi-dey/recipes-graphics/vulkan/vulkan-headers_%.bbappend create mode 100644 meta-digi-dey/recipes-graphics/vulkan/vulkan-headers_1.1.92.0.bb create mode 100644 meta-digi-dey/recipes-graphics/vulkan/vulkan-loader/0001-STDIO-844-No-need-to-change-the-App-s-apiVersion-to-.patch create mode 100644 meta-digi-dey/recipes-graphics/vulkan/vulkan-loader_%.bbappend create mode 100644 meta-digi-dey/recipes-graphics/vulkan/vulkan-loader_1.1.92.0.bb create mode 100644 meta-digi-dey/recipes-graphics/vulkan/vulkan-tools_%.bbappend create mode 100644 meta-digi-dey/recipes-graphics/vulkan/vulkan-tools_1.1.92.bb create mode 100644 meta-digi-dey/recipes-graphics/vulkan/vulkan-validationlayers/0001-CMakeLists.txt-Change-the-installation-path-of-JSON-.patch rename meta-digi-dey/recipes-graphics/vulkan/{vulkan => vulkan-validationlayers}/icd_VSI.json (100%) rename meta-digi-dey/recipes-graphics/vulkan/{vulkan_%.bbappend => vulkan-validationlayers_%.bbappend} (69%) rename meta-digi-dey/recipes-graphics/vulkan/{vulkan_1.0.65.2.bb => vulkan-validationlayers_1.1.92.0.bb} (50%) delete mode 100644 meta-digi-dey/recipes-graphics/vulkan/vulkan/0001-CMakeLists.txt-Modify-the-library-path-to-point-to.patch delete mode 100644 meta-digi-dey/recipes-graphics/vulkan/vulkan/demos-Don-t-build-tri-or-cube.patch diff --git a/meta-digi-dey/conf/distro/dey.conf b/meta-digi-dey/conf/distro/dey.conf index 6d52fcf19..7a36eec5c 100644 --- a/meta-digi-dey/conf/distro/dey.conf +++ b/meta-digi-dey/conf/distro/dey.conf @@ -68,9 +68,6 @@ PREFERRED_PROVIDER_u-boot-fw-utils ?= "u-boot-fw-utils" # Use git recipe for libsoc PREFERRED_VERSION_libsoc = "git" -# Gstreamer 1.14.0 requires a specific vulkan version. -PREFERRED_VERSION_vulkan ?= "1.0.65%" - SDK_NAME = "${DISTRO}-${TCLIBC}-${SDK_ARCH}-${IMAGE_BASENAME}-${TUNE_PKGARCH}" SDKPATH = "/opt/${DISTRO}/${SDK_VERSION}" diff --git a/meta-digi-dey/recipes-graphics/vulkan/assimp_4.1.0.bb b/meta-digi-dey/recipes-graphics/vulkan/assimp_4.1.0.bb deleted file mode 100644 index 194cbe33c..000000000 --- a/meta-digi-dey/recipes-graphics/vulkan/assimp_4.1.0.bb +++ /dev/null @@ -1,20 +0,0 @@ -DESCRIPTION = "Open Asset Import Library is a portable Open Source library to import \ - various well-known 3D model formats in a uniform manner." -HOMEPAGE = "http://www.assimp.org/" -SECTION = "devel" - -LICENSE = "BSD-3-Clause" -LIC_FILES_CHKSUM = "file://LICENSE;md5=2119edef0916b0bd511cb3c731076271" - -DEPENDS = "zlib" - -SRC_URI = "git://github.com/assimp/assimp.git" -UPSTREAM_CHECK_GITTAGREGEX = "v(?P(\d+(\.\d+)+))" - -SRCREV = "80799bdbf90ce626475635815ee18537718a05b1" - -S = "${WORKDIR}/git" - -inherit cmake - -EXTRA_OECMAKE = "-DASSIMP_BUILD_ASSIMP_TOOLS=OFF -DASSIMP_BUILD_TESTS=OFF -DASSIMP_LIB_INSTALL_DIR=${baselib}" diff --git a/meta-digi-dey/recipes-graphics/vulkan/glslang/0001-CMakeLists.txt-obey-CMAKE_INSTALL_LIBDIR.patch b/meta-digi-dey/recipes-graphics/vulkan/glslang/0001-CMakeLists.txt-obey-CMAKE_INSTALL_LIBDIR.patch deleted file mode 100644 index cef3e8e61..000000000 --- a/meta-digi-dey/recipes-graphics/vulkan/glslang/0001-CMakeLists.txt-obey-CMAKE_INSTALL_LIBDIR.patch +++ /dev/null @@ -1,82 +0,0 @@ -From 372422ed8ce32e1085cd524156c687df65095237 Mon Sep 17 00:00:00 2001 -From: Awais Belal -Date: Tue, 25 Oct 2016 14:44:20 +0500 -Subject: [PATCH] CMakeLists.txt: obey CMAKE_INSTALL_LIBDIR - -Not using the exact path that is set through cmake -will end up in a mixed configuration setup where -files are installed on hard-coded locations. - -Signed-off-by: Awais Belal ---- - OGLCompilersDLL/CMakeLists.txt | 2 +- - SPIRV/CMakeLists.txt | 2 +- - glslang/CMakeLists.txt | 2 +- - glslang/OSDependent/Unix/CMakeLists.txt | 2 +- - glslang/OSDependent/Windows/CMakeLists.txt | 2 +- - hlsl/CMakeLists.txt | 2 +- - 6 files changed, 6 insertions(+), 6 deletions(-) - -diff --git a/OGLCompilersDLL/CMakeLists.txt b/OGLCompilersDLL/CMakeLists.txt -index 4954db9..6b518d9 100644 ---- a/OGLCompilersDLL/CMakeLists.txt -+++ b/OGLCompilersDLL/CMakeLists.txt -@@ -8,4 +8,4 @@ if(WIN32) - endif(WIN32) - - install(TARGETS OGLCompiler -- ARCHIVE DESTINATION lib) -+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) -diff --git a/SPIRV/CMakeLists.txt b/SPIRV/CMakeLists.txt -index 48a6c46..c657d56 100755 ---- a/SPIRV/CMakeLists.txt -+++ b/SPIRV/CMakeLists.txt -@@ -41,4 +41,4 @@ if(WIN32) - endif(WIN32) - - install(TARGETS SPIRV SPVRemapper -- ARCHIVE DESTINATION lib) -+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) -diff --git a/glslang/CMakeLists.txt b/glslang/CMakeLists.txt -index ff91135..efb7f15 100644 ---- a/glslang/CMakeLists.txt -+++ b/glslang/CMakeLists.txt -@@ -89,4 +89,4 @@ if(WIN32) - endif(WIN32) - - install(TARGETS glslang -- ARCHIVE DESTINATION lib) -+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) -diff --git a/glslang/OSDependent/Unix/CMakeLists.txt b/glslang/OSDependent/Unix/CMakeLists.txt -index 174cc91..d98057b 100644 ---- a/glslang/OSDependent/Unix/CMakeLists.txt -+++ b/glslang/OSDependent/Unix/CMakeLists.txt -@@ -2,4 +2,4 @@ add_library(OSDependent STATIC ossource.cpp ../osinclude.h) - set_property(TARGET OSDependent PROPERTY FOLDER glslang) - - install(TARGETS OSDependent -- ARCHIVE DESTINATION lib) -+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) -diff --git a/glslang/OSDependent/Windows/CMakeLists.txt b/glslang/OSDependent/Windows/CMakeLists.txt -index 399760c..744bcbb 100644 ---- a/glslang/OSDependent/Windows/CMakeLists.txt -+++ b/glslang/OSDependent/Windows/CMakeLists.txt -@@ -14,4 +14,4 @@ if(WIN32) - endif(WIN32) - - install(TARGETS OSDependent -- ARCHIVE DESTINATION lib) -+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) -diff --git a/hlsl/CMakeLists.txt b/hlsl/CMakeLists.txt -index c7537e2..5111661 100755 ---- a/hlsl/CMakeLists.txt -+++ b/hlsl/CMakeLists.txt -@@ -23,4 +23,4 @@ if(WIN32) - endif(WIN32) - - install(TARGETS HLSL -- ARCHIVE DESTINATION lib) -+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) --- -1.9.1 - diff --git a/meta-digi-dey/recipes-graphics/vulkan/glslang_git.bb b/meta-digi-dey/recipes-graphics/vulkan/glslang_git.bb index 15852cacd..1ee5b60f4 100644 --- a/meta-digi-dey/recipes-graphics/vulkan/glslang_git.bb +++ b/meta-digi-dey/recipes-graphics/vulkan/glslang_git.bb @@ -10,13 +10,13 @@ HOMEPAGE = "https://www.khronos.org/opengles/sdk/tools/Reference-Compiler" inherit cmake LICENSE = "BSD" -LIC_FILES_CHKSUM = "file://glslang/Include/Types.h;beginline=1;endline=36;md5=6639a5f9543e833d71e2f4e4ff52f34b" +LIC_FILES_CHKSUM = "file://glslang/Include/Types.h;beginline=1;endline=36;md5=26473d85c7f85d955e24663f67a53818" S = "${WORKDIR}/git" -SRCREV = "81cd764b5ffc475bc73f1fb35f75fd1171bb2343" +SRCREV = "1bc601c674aecc2fee0dee8ff7a118db76b4c439" SRC_URI = "git://github.com/KhronosGroup/glslang \ - file://0001-CMakeLists.txt-obey-CMAKE_INSTALL_LIBDIR.patch" +" FILES_${PN} += "${libdir}/*" @@ -30,6 +30,10 @@ do_install_append() { cp -f ${S}/SPIRV/SPVRemapper.h ${D}${includedir}/SPIRV cp -f ${S}/SPIRV/spvIR.h ${D}${includedir}/SPIRV + # Remove redundant headers from spirv-headers + rm -rf ${D}${includedir}/SPIRV/GLSL.std.450.h + rm -rf ${D}${includedir}/SPIRV/spirv.hpp + install -d ${D}${includedir}/glslang/Include cp -f ${S}/glslang/Include/*.h ${D}${includedir}/glslang/Include install -d ${D}${includedir}/glslang/Public diff --git a/meta-digi-dey/recipes-graphics/vulkan/spirv-tools_git.bb b/meta-digi-dey/recipes-graphics/vulkan/spirv-tools_git.bb index f1682368a..8859b3400 100644 --- a/meta-digi-dey/recipes-graphics/vulkan/spirv-tools_git.bb +++ b/meta-digi-dey/recipes-graphics/vulkan/spirv-tools_git.bb @@ -12,10 +12,10 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57" S = "${WORKDIR}/git" SPIRV_HEADERS_LOCATION = "${S}/external/spirv-headers" -HEADERS_VERSION = "1.1" +HEADERS_VERSION = "unified1" -SRCREV_spirv-tools = "2c0ce872103d676bf8de5dc87a03ad2c32e215a2" -SRCREV_spirv-headers = "3a4dbdde9a9b2cf23736694ba70262dce27fbeaa" +SRCREV_spirv-tools = "9d699f6d4038f432c55310d5d0b4a6d507c1b686" +SRCREV_spirv-headers = "2434b89345a50c018c84f42a310b0fad4f3fd94f" SRC_URI = "git://github.com/KhronosGroup/SPIRV-Tools;protocol=http;name=spirv-tools \ git://github.com/KhronosGroup/SPIRV-Headers;name=spirv-headers;destsuffix=${SPIRV_HEADERS_LOCATION} \ file://0002-spirv-lesspipe.sh-allow-using-generic-shells.patch" diff --git a/meta-digi-dey/recipes-graphics/vulkan/vkmark/0001-scenes-Use-depth-format-supported-by-i.MX.patch b/meta-digi-dey/recipes-graphics/vulkan/vkmark/0001-scenes-Use-depth-format-supported-by-i.MX.patch new file mode 100644 index 000000000..d1c71897f --- /dev/null +++ b/meta-digi-dey/recipes-graphics/vulkan/vkmark/0001-scenes-Use-depth-format-supported-by-i.MX.patch @@ -0,0 +1,56 @@ +From 436b5b09a0f5fcd3b4f2c1711e850b52b357befb Mon Sep 17 00:00:00 2001 +From: Tom Hochstein +Date: Wed, 13 Jun 2018 22:02:20 +0000 +Subject: [PATCH] scenes: Use depth format supported by i.MX + +Upstream-Status: Inappropriate [i.MX-specific] + +Signed-off-by: Tom Hochstein +--- + src/scenes/shading_scene.cpp | 2 +- + src/scenes/texture_scene.cpp | 2 +- + src/scenes/vertex_scene.cpp | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/scenes/shading_scene.cpp b/src/scenes/shading_scene.cpp +index fa496ba..3e19ee8 100644 +--- a/src/scenes/shading_scene.cpp ++++ b/src/scenes/shading_scene.cpp +@@ -64,7 +64,7 @@ void ShadingScene::setup( + vulkan = &vulkan_; + extent = vulkan_images[0].extent; + format = vulkan_images[0].format; +- depth_format = vk::Format::eD32Sfloat; ++ depth_format = vk::Format::eD24UnormS8Uint; + aspect = static_cast(extent.height) / extent.width; + + mesh = Model{"cat.3ds"}.to_mesh( +diff --git a/src/scenes/texture_scene.cpp b/src/scenes/texture_scene.cpp +index 04a8207..ccc9d2f 100644 +--- a/src/scenes/texture_scene.cpp ++++ b/src/scenes/texture_scene.cpp +@@ -65,7 +65,7 @@ void TextureScene::setup( + vulkan = &vulkan_; + extent = vulkan_images[0].extent; + format = vulkan_images[0].format; +- depth_format = vk::Format::eD32Sfloat; ++ depth_format = vk::Format::eD24UnormS8Uint; + aspect = static_cast(extent.height) / extent.width; + + mesh = Model{"cube.3ds"}.to_mesh( +diff --git a/src/scenes/vertex_scene.cpp b/src/scenes/vertex_scene.cpp +index 0fd7fe7..4f6d49a 100644 +--- a/src/scenes/vertex_scene.cpp ++++ b/src/scenes/vertex_scene.cpp +@@ -66,7 +66,7 @@ void VertexScene::setup( + vulkan = &vulkan_; + extent = vulkan_images[0].extent; + format = vulkan_images[0].format; +- depth_format = vk::Format::eD32Sfloat; ++ depth_format = vk::Format::eD24UnormS8Uint; + aspect = static_cast(extent.height) / extent.width; + + mesh = Model{"horse.3ds"}.to_mesh( +-- +2.7.4 + diff --git a/meta-digi-dey/recipes-graphics/vulkan/vkmark_1.0.bb b/meta-digi-dey/recipes-graphics/vulkan/vkmark_1.0.bb index f549fde41..871e9c5da 100644 --- a/meta-digi-dey/recipes-graphics/vulkan/vkmark_1.0.bb +++ b/meta-digi-dey/recipes-graphics/vulkan/vkmark_1.0.bb @@ -10,12 +10,13 @@ inherit meson S = "${WORKDIR}/git" -SRCREV = "${AUTOREV}" +SRCREV = "1ebd49364f03372a710f010c01dedd0d79456413" SRC_URI = "git://github.com/vkmark/vkmark;protocol=https" +SRC_URI += "file://0001-scenes-Use-depth-format-supported-by-i.MX.patch" VKMARK_INSTALL_DIR = "${WORKDIR}/vm-install" -DEPENDS = " vulkan imx-gpu-viv assimp glm ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', '', \ +DEPENDS = " vulkan-headers vulkan-loader imx-gpu-viv assimp glm ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', '', \ bb.utils.contains('DISTRO_FEATURES', 'x11', ' libxcb','libdrm libgbm', d), d)}" do_compile() { @@ -34,5 +35,3 @@ do_install() { } FILES_${PN} += "${bindir} ${datadir}" - -COMPATIBLE_MACHINE = "(mx8)" diff --git a/meta-digi-dey/recipes-graphics/vulkan/vulkan-demos_%.bbappend b/meta-digi-dey/recipes-graphics/vulkan/vulkan-demos_%.bbappend index 2ab9f3ecd..a11dfbd09 100644 --- a/meta-digi-dey/recipes-graphics/vulkan/vulkan-demos_%.bbappend +++ b/meta-digi-dey/recipes-graphics/vulkan/vulkan-demos_%.bbappend @@ -1,2 +1,3 @@ -COMPATIBLE_MACHINE = "(mx8)" +DEPENDS_remove = "vulkan" +DEPENDS_append = " vulkan-headers vulkan-loader" diff --git a/meta-digi-dey/recipes-graphics/vulkan/vulkan-headers_%.bbappend b/meta-digi-dey/recipes-graphics/vulkan/vulkan-headers_%.bbappend new file mode 100644 index 000000000..92e0a02a5 --- /dev/null +++ b/meta-digi-dey/recipes-graphics/vulkan/vulkan-headers_%.bbappend @@ -0,0 +1,3 @@ + +COMPATIBLE_MACHINE = "(mx8)" +COMPATIBLE_MACHINE_mx8mm = "(^$)" diff --git a/meta-digi-dey/recipes-graphics/vulkan/vulkan-headers_1.1.92.0.bb b/meta-digi-dey/recipes-graphics/vulkan/vulkan-headers_1.1.92.0.bb new file mode 100644 index 000000000..172526d59 --- /dev/null +++ b/meta-digi-dey/recipes-graphics/vulkan/vulkan-headers_1.1.92.0.bb @@ -0,0 +1,20 @@ +SUMMARY = "Vulkan Header files and API registry" +DESCRIPTION = "Vulkan is a new generation graphics and compute API \ +that provides efficient access to modern GPUs." +HOMEPAGE = "https://www.khronos.org/vulkan/" + +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3b83ef96387f14655fc854ddc3c6bd57" +SRC_URI = "git://github.com/KhronosGroup/Vulkan-Headers.git;branch=sdk-1.1.92 \ + " +SRCREV = "114c3546e195819bd53a34b39f5194b2989a5b12" +UPSTREAM_CHECK_GITTAGREGEX = "sdk-(?P\d+(\.\d+)+)" + +S = "${WORKDIR}/git" + +REQUIRED_DISTRO_FEATURES = "vulkan" + +inherit cmake distro_features_check +ANY_OF_DISTRO_FEATURES = "x11 wayland" + +FILES_${PN} += "${datadir}/vulkan/registry" diff --git a/meta-digi-dey/recipes-graphics/vulkan/vulkan-loader/0001-STDIO-844-No-need-to-change-the-App-s-apiVersion-to-.patch b/meta-digi-dey/recipes-graphics/vulkan/vulkan-loader/0001-STDIO-844-No-need-to-change-the-App-s-apiVersion-to-.patch new file mode 100644 index 000000000..c6c1a192a --- /dev/null +++ b/meta-digi-dey/recipes-graphics/vulkan/vulkan-loader/0001-STDIO-844-No-need-to-change-the-App-s-apiVersion-to-.patch @@ -0,0 +1,38 @@ +From 4f7fd011b47cb65c58b0a1ffaa3830f0b63b5b1d Mon Sep 17 00:00:00 2001 +From: Ella +Date: Thu, 7 Mar 2019 17:18:26 +0800 +Subject: [PATCH] STDIO-844 No need to change the App's apiVersion to ICD + version + +There is no need to do so, otherwise we won't catch the App's error and +Vulkan CTS will fail to reject the invalid api version. + +Date: 7th Mar, 2019 +Signed-off-by: Ella Feng +--- + loader/loader.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/loader/loader.c b/loader/loader.c +index 281851584..f2033b6ad 100644 +--- a/loader/loader.c ++++ b/loader/loader.c +@@ -5741,6 +5741,7 @@ VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateInstance(const VkInstanceCreateI + } + + // Create an instance, substituting the version to 1.0 if necessary ++#if 0 + VkApplicationInfo icd_app_info; + uint32_t icd_version_nopatch = VK_MAKE_VERSION(VK_VERSION_MAJOR(icd_version), VK_VERSION_MINOR(icd_version), 0); + uint32_t requested_version = pCreateInfo == NULL || pCreateInfo->pApplicationInfo == NULL ? VK_API_VERSION_1_0 : pCreateInfo->pApplicationInfo->apiVersion; +@@ -5753,6 +5754,7 @@ VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateInstance(const VkInstanceCreateI + icd_app_info.apiVersion = icd_version; + icd_create_info.pApplicationInfo = &icd_app_info; + } ++#endif + icd_result = ptr_instance->icd_tramp_list.scanned_list[i].CreateInstance(&icd_create_info, pAllocator, &(icd_term->instance)); + if (VK_ERROR_OUT_OF_HOST_MEMORY == icd_result) { + // If out of memory, bail immediately. +-- +2.21.0 + diff --git a/meta-digi-dey/recipes-graphics/vulkan/vulkan-loader_%.bbappend b/meta-digi-dey/recipes-graphics/vulkan/vulkan-loader_%.bbappend new file mode 100644 index 000000000..4bcbda8c8 --- /dev/null +++ b/meta-digi-dey/recipes-graphics/vulkan/vulkan-loader_%.bbappend @@ -0,0 +1,8 @@ + +# choose wayland +PACKAGECONFIG = "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', '' ,d)}" + +SRC_URI_append = " file://0001-STDIO-844-No-need-to-change-the-App-s-apiVersion-to-.patch" + +COMPATIBLE_MACHINE = "(mx8)" +COMPATIBLE_MACHINE_mx8mm = "(^$)" diff --git a/meta-digi-dey/recipes-graphics/vulkan/vulkan-loader_1.1.92.0.bb b/meta-digi-dey/recipes-graphics/vulkan/vulkan-loader_1.1.92.0.bb new file mode 100644 index 000000000..61789543e --- /dev/null +++ b/meta-digi-dey/recipes-graphics/vulkan/vulkan-loader_1.1.92.0.bb @@ -0,0 +1,34 @@ +SUMMARY = "Vulkan loader" +DESCRIPTION = "Vulkan loader is responsible for working with the various \ +layers as well as supporting multiple GPUs and their drivers.The loader is \ +critical to managing the proper dispatching of Vulkan functions to the appropriate \ +set of layers and ICDs." +HOMEPAGE = "https://www.khronos.org/vulkan/" +BUGTRACKER = "https://github.com/KhronosGroup/Vulkan-Loader" +SECTION = "libs" + +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3b83ef96387f14655fc854ddc3c6bd57\ + file://loader/loader.c;endline=25;md5=151b392f46568aaedb4ad22b246237ec" +SRC_URI = "git://github.com/KhronosGroup/Vulkan-Loader.git;branch=sdk-1.1.92 \ + " +SRCREV = "4cd7e44fc1ca6c4d8361720b43a3588ddf9fc4b6" +UPSTREAM_CHECK_GITTAGREGEX = "sdk-(?P\d+(\.\d+)+)" + +S = "${WORKDIR}/git" + +REQUIRED_DISTRO_FEATURES = "vulkan" + +inherit cmake python3native lib_package distro_features_check +ANY_OF_DISTRO_FEATURES = "x11 wayland" + +DEPENDS = "vulkan-headers" + +EXTRA_OECMAKE = "-DBUILD_TESTS=OFF" + +# must choose x11 or wayland or both +PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '' ,d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', '' ,d)}" + +PACKAGECONFIG[x11] = "-DBUILD_WSI_XLIB_SUPPORT=ON -DBUILD_WSI_XCB_SUPPORT=ON -DDEMOS_WSI_SELECTION=XCB, -DBUILD_WSI_XLIB_SUPPORT=OFF -DBUILD_WSI_XCB_SUPPORT=OFF -DDEMOS_WSI_SELECTION=WAYLAND, libxcb libx11 libxrandr" +PACKAGECONFIG[wayland] = "-DBUILD_WSI_WAYLAND_SUPPORT=ON, -DBUILD_WSI_WAYLAND_SUPPORT=OFF, wayland" diff --git a/meta-digi-dey/recipes-graphics/vulkan/vulkan-tools_%.bbappend b/meta-digi-dey/recipes-graphics/vulkan/vulkan-tools_%.bbappend new file mode 100644 index 000000000..9d121953e --- /dev/null +++ b/meta-digi-dey/recipes-graphics/vulkan/vulkan-tools_%.bbappend @@ -0,0 +1,10 @@ + +# choose wayland +PACKAGECONFIG = "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', '' ,d)}" + +EXTRA_OECMAKE = "-DBUILD_CUBE=OFF" + +RDEPENDS_${PN} += "libvulkan-imx" + +COMPATIBLE_MACHINE = "(mx8)" +COMPATIBLE_MACHINE_mx8mm = "(^$)" diff --git a/meta-digi-dey/recipes-graphics/vulkan/vulkan-tools_1.1.92.bb b/meta-digi-dey/recipes-graphics/vulkan/vulkan-tools_1.1.92.bb new file mode 100644 index 000000000..abfec91e7 --- /dev/null +++ b/meta-digi-dey/recipes-graphics/vulkan/vulkan-tools_1.1.92.bb @@ -0,0 +1,25 @@ +SUMMARY = "Vulkan Tools" +DESCRIPTION = "This project provides Vulkan tools and utilities that \ + can assist development by enabling developers to verify their \ + applications correct use of the Vulkan API." +SECTION = "graphics" +HOMEPAGE = "https://github.com/LunarG/VulkanTools" + +DEPENDS = "vulkan-headers vulkan-loader" + +inherit cmake python3native + +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3b83ef96387f14655fc854ddc3c6bd57" + +S = "${WORKDIR}/git" + +SRCREV = "9bbdd552f0fd62741aa1f1e02ab3eafc45cf3c1e" +SRC_URI = "git://github.com/KhronosGroup/Vulkan-Tools.git;branch=sdk-${PV} \ +" +# must choose x11 or wayland or both +PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '' ,d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', '' ,d)}" + +PACKAGECONFIG[x11] = "-DBUILD_WSI_XLIB_SUPPORT=ON -DBUILD_WSI_XCB_SUPPORT=ON -DCUBE_WSI_SELECTION=XCB, -DBUILD_WSI_XLIB_SUPPORT=OFF -DBUILD_WSI_XCB_SUPPORT=OFF -DCUBE_WSI_SELECTION=WAYLAND, libxcb libx11" +PACKAGECONFIG[wayland] = "-DBUILD_WSI_WAYLAND_SUPPORT=ON, -DBUILD_WSI_WAYLAND_SUPPORT=OFF, wayland" diff --git a/meta-digi-dey/recipes-graphics/vulkan/vulkan-validationlayers/0001-CMakeLists.txt-Change-the-installation-path-of-JSON-.patch b/meta-digi-dey/recipes-graphics/vulkan/vulkan-validationlayers/0001-CMakeLists.txt-Change-the-installation-path-of-JSON-.patch new file mode 100644 index 000000000..9b06c3227 --- /dev/null +++ b/meta-digi-dey/recipes-graphics/vulkan/vulkan-validationlayers/0001-CMakeLists.txt-Change-the-installation-path-of-JSON-.patch @@ -0,0 +1,38 @@ +From 23ed27a79b3c9afa3dcb2138abf89f466a308702 Mon Sep 17 00:00:00 2001 +From: Neena Busireddy +Date: Wed, 5 Dec 2018 13:33:10 -0600 +Subject: [PATCH] CMakeLists.txt: Change the installation path of JSON files + +Also modify the library path in JSON files to /usr/lib/libVK*.so + +Upstream-Status: Inappropriate [configuration] +Signed-off-by: Neena Busireddy +--- + layers/CMakeLists.txt | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/layers/CMakeLists.txt b/layers/CMakeLists.txt +index 5fd5b44..c4a7810 100644 +--- a/layers/CMakeLists.txt ++++ b/layers/CMakeLists.txt +@@ -105,7 +105,7 @@ if(WIN32) + elseif(UNIX) # UNIX includes APPLE + foreach(TARGET_NAME ${TARGET_NAMES}) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/staging-json/${TARGET_NAME}.json +- DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/vulkan/explicit_layer.d) ++ DESTINATION ${CMAKE_INSTALL_SYSCONFDIR}/vulkan/explicit_layer.d) + endforeach() + endif() + +@@ -236,7 +236,7 @@ if(UNIX) + -DVK_VERSION=1.1.${vk_header_version}) + # If this json file is not a metalayer, get the needed properties from that target + if(TARGET ${TARGET_NAME}) +- set(INSTALL_DEFINES ${INSTALL_DEFINES} -DRELATIVE_LAYER_BINARY="$") ++ set(INSTALL_DEFINES ${INSTALL_DEFINES} -DRELATIVE_LAYER_BINARY="${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/$") + endif() + add_custom_target(${TARGET_NAME}-staging-json ALL + COMMAND ${CMAKE_COMMAND} ${INSTALL_DEFINES} -P "${CMAKE_CURRENT_BINARY_DIR}/generator.cmake") +-- +2.7.4 + diff --git a/meta-digi-dey/recipes-graphics/vulkan/vulkan/icd_VSI.json b/meta-digi-dey/recipes-graphics/vulkan/vulkan-validationlayers/icd_VSI.json similarity index 100% rename from meta-digi-dey/recipes-graphics/vulkan/vulkan/icd_VSI.json rename to meta-digi-dey/recipes-graphics/vulkan/vulkan-validationlayers/icd_VSI.json diff --git a/meta-digi-dey/recipes-graphics/vulkan/vulkan_%.bbappend b/meta-digi-dey/recipes-graphics/vulkan/vulkan-validationlayers_%.bbappend similarity index 69% rename from meta-digi-dey/recipes-graphics/vulkan/vulkan_%.bbappend rename to meta-digi-dey/recipes-graphics/vulkan/vulkan-validationlayers_%.bbappend index d2b0563a8..fb6d88f86 100644 --- a/meta-digi-dey/recipes-graphics/vulkan/vulkan_%.bbappend +++ b/meta-digi-dey/recipes-graphics/vulkan/vulkan-validationlayers_%.bbappend @@ -2,13 +2,12 @@ FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:" SRC_URI += " \ file://icd_VSI.json \ - file://0001-CMakeLists.txt-Modify-the-library-path-to-point-to.patch \ + file://0001-CMakeLists.txt-Change-the-installation-path-of-JSON-.patch \ " # choose wayland PACKAGECONFIG = "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', '' ,d)}" -DEPENDS = "virtual/egl glslang spirv-tools" -RDEPENDS_${PN} += "libvulkan-imx" +DEPENDS += " virtual/egl glslang spirv-tools" EXTRA_OECMAKE_remove = "-DBUILD_LAYERS=OFF" # Enable validation layers @@ -20,13 +19,15 @@ do_install_append () { cp ${WORKDIR}/icd_VSI.json ${D}${sysconfdir}/vulkan/icd.d sed -i "s,/usr/lib,${libdir}," ${D}${sysconfdir}/vulkan/icd.d/icd_VSI.json sed -i "s,1.0.30,${PV}," ${D}${sysconfdir}/vulkan/icd.d/icd_VSI.json - -# Use some vulkan headers from imx-gpu-viv - rm -rf ${D}${includedir}/vulkan/vk_* } FILES_SOLIBSDEV = "" -FILES_${PN} += "${libdir}/libvulkan.so ${libdir}/libVkLayer_*.so" +FILES_${PN} += "${libdir}/libVkLayer_*.so" + +# The package libvulkan-imx is required to configure the imx-gpu-viv vulkan drivers for the validation layers +RDEPENDS_${PN} += "libvulkan-imx" + INSANE_SKIP_${PN} = "dev-so" COMPATIBLE_MACHINE = "(mx8)" +COMPATIBLE_MACHINE_mx8mm = "(^$)" diff --git a/meta-digi-dey/recipes-graphics/vulkan/vulkan_1.0.65.2.bb b/meta-digi-dey/recipes-graphics/vulkan/vulkan-validationlayers_1.1.92.0.bb similarity index 50% rename from meta-digi-dey/recipes-graphics/vulkan/vulkan_1.0.65.2.bb rename to meta-digi-dey/recipes-graphics/vulkan/vulkan-validationlayers_1.1.92.0.bb index 1c8a89550..e61cdd9f0 100644 --- a/meta-digi-dey/recipes-graphics/vulkan/vulkan_1.0.65.2.bb +++ b/meta-digi-dey/recipes-graphics/vulkan/vulkan-validationlayers_1.1.92.0.bb @@ -1,19 +1,16 @@ -SUMMARY = "3D graphics and compute API common loader" -DESCRIPTION = "Vulkan is a new generation graphics and compute API \ -that provides efficient access to modern GPUs. These packages \ -provide only the common vendor-agnostic library loader, headers and \ -the vulkaninfo utility." +SUMMARY = "Vulkan ValidationLayers" +DESCRIPTION = "This project provides Vulkan validation layers that \ +can be enabled to assist development by enabling developers to verify \ +their applications correct use of the Vulkan API." HOMEPAGE = "https://www.khronos.org/vulkan/" -BUGTRACKER = "https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers" +BUGTRACKER = "https://github.com/KhronosGroup/Vulkan-ValidationLayers" SECTION = "libs" LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=99c647ca3d4f6a4b9d8628f757aad156 \ - file://loader/loader.c;endline=25;md5=a87cd5442291c23d1fce4eece4cfde9d" -SRC_URI = "git://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers.git;branch=sdk-1.0.65 \ - file://demos-Don-t-build-tri-or-cube.patch \ +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3b83ef96387f14655fc854ddc3c6bd57" +SRC_URI = "git://github.com/KhronosGroup/Vulkan-ValidationLayers.git;nobranch=1 \ " -SRCREV = "73486a1a169d862d5210e2ad520d95319a2383fa" +SRCREV = "6e6da6ccab8931f7c30815966ef839b1155e5bec" UPSTREAM_CHECK_GITTAGREGEX = "sdk-(?P\d+(\.\d+)+)" S = "${WORKDIR}/git" @@ -23,10 +20,12 @@ REQUIRED_DISTRO_FEATURES = "vulkan" inherit cmake python3native lib_package distro_features_check ANY_OF_DISTRO_FEATURES = "x11 wayland" -EXTRA_OECMAKE = "-DBUILD_WSI_MIR_SUPPORT=OFF \ - -DBUILD_LAYERS=OFF \ - -DBUILD_TESTS=OFF" +DEPENDS = "vulkan-headers vulkan-loader" +EXTRA_OECMAKE = " \ + -DBUILD_LAYERS=OFF \ + -DGLSLANG_INSTALL_DIR=${STAGING_DIR_HOST}/usr \ +" # must choose x11 or wayland or both PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '' ,d)} \ ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', '' ,d)}" diff --git a/meta-digi-dey/recipes-graphics/vulkan/vulkan/0001-CMakeLists.txt-Modify-the-library-path-to-point-to.patch b/meta-digi-dey/recipes-graphics/vulkan/vulkan/0001-CMakeLists.txt-Modify-the-library-path-to-point-to.patch deleted file mode 100644 index 6e18c92cb..000000000 --- a/meta-digi-dey/recipes-graphics/vulkan/vulkan/0001-CMakeLists.txt-Modify-the-library-path-to-point-to.patch +++ /dev/null @@ -1,27 +0,0 @@ -From abb274c45150373c91bf74d4511b86e039f08306 Mon Sep 17 00:00:00 2001 -From: Neena Busireddy -Date: Tue, 31 Jul 2018 18:22:49 -0500 -Subject: [PATCH] CMakeLists.txt: Modify the library path to point to - /usr/lib/libVK.so in json files - -Signed-off-by: Neena Busireddy ---- - layers/CMakeLists.txt | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/layers/CMakeLists.txt b/layers/CMakeLists.txt -index 35a1b41..9e761a5 100644 ---- a/layers/CMakeLists.txt -+++ b/layers/CMakeLists.txt -@@ -92,7 +92,7 @@ if(UNIX) - add_custom_target(${config_file}-staging-json ALL - COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/staging-json - COMMAND cp ${CMAKE_CURRENT_SOURCE_DIR}/linux/${config_file}.json ${CMAKE_CURRENT_BINARY_DIR}/staging-json -- COMMAND sed -i -e "/\"library_path\":/s$./libVkLayer$libVkLayer$" ${CMAKE_CURRENT_BINARY_DIR}/staging-json/${config_file}.json -+ COMMAND sed -i -e "/\"library_path\":/s$./libVkLayer$/usr/lib/libVkLayer$" ${CMAKE_CURRENT_BINARY_DIR}/staging-json/${config_file}.json - VERBATIM - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/linux/${config_file}.json - ) --- -1.9.1 - diff --git a/meta-digi-dey/recipes-graphics/vulkan/vulkan/demos-Don-t-build-tri-or-cube.patch b/meta-digi-dey/recipes-graphics/vulkan/vulkan/demos-Don-t-build-tri-or-cube.patch deleted file mode 100644 index bcf84a5a3..000000000 --- a/meta-digi-dey/recipes-graphics/vulkan/vulkan/demos-Don-t-build-tri-or-cube.patch +++ /dev/null @@ -1,108 +0,0 @@ -commit f63cbe944107b5cd8f150ceaaec43b26099d5688 -Author: Adam Jackson -Date: Tue Feb 16 10:05:25 2016 -0500 - - demos: Don't build tri or cube - - There are more interesting demos, all we really want here is vulkaninfo. - This helps because we don't need to pre-build glslang/llvm/lunarglass - just to get the loader and layers. - -Upstream-Status: Inappropriate [configuration] -Signed-off-by: Jussi Kukkonen - -Index: git/demos/CMakeLists.txt -=================================================================== ---- git.orig/demos/CMakeLists.txt -+++ git/demos/CMakeLists.txt -@@ -63,46 +63,6 @@ elseif(UNIX) - else() - endif() - --if(WIN32) -- # For Windows, since 32-bit and 64-bit items can co-exist, we build each in its own build directory. -- # 32-bit target data goes in build32, and 64-bit target data goes into build. So, include/link the -- # appropriate data at build time. -- if (CMAKE_CL_64) -- set (BUILDTGT_DIR build) -- else () -- set (BUILDTGT_DIR build32) -- endif() -- -- # Use static MSVCRT libraries -- foreach(configuration in CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_RELWITHDEBINFO -- CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_RELWITHDEBINFO) -- if(${configuration} MATCHES "/MD") -- string(REGEX REPLACE "/MD" "/MT" ${configuration} "${${configuration}}") -- endif() -- endforeach() -- -- add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/demos/cube-vert.spv -- COMMAND ${GLSLANG_VALIDATOR} -s -V -o ${CMAKE_BINARY_DIR}/demos/cube-vert.spv ${PROJECT_SOURCE_DIR}/demos/cube.vert -- DEPENDS cube.vert ${GLSLANG_VALIDATOR} -- ) -- add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/demos/cube-frag.spv -- COMMAND ${GLSLANG_VALIDATOR} -s -V -o ${CMAKE_BINARY_DIR}/demos/cube-frag.spv ${PROJECT_SOURCE_DIR}/demos/cube.frag -- DEPENDS cube.frag ${GLSLANG_VALIDATOR} -- ) -- file(COPY cube.vcxproj.user DESTINATION ${CMAKE_BINARY_DIR}/demos) -- file(COPY vulkaninfo.vcxproj.user DESTINATION ${CMAKE_BINARY_DIR}/demos) --else() -- if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL ${CMAKE_HOST_SYSTEM_PROCESSOR}) -- add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/demos/cube-vert.spv -- COMMAND ${GLSLANG_VALIDATOR} -s -V -o cube-vert.spv ${PROJECT_SOURCE_DIR}/demos/cube.vert -- DEPENDS cube.vert ${GLSLANG_VALIDATOR} -- ) -- add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/demos/cube-frag.spv -- COMMAND ${GLSLANG_VALIDATOR} -s -V -o cube-frag.spv ${PROJECT_SOURCE_DIR}/demos/cube.frag -- DEPENDS cube.frag ${GLSLANG_VALIDATOR} -- ) -- endif() --endif() - - if(WIN32) - include_directories ( -@@ -116,43 +76,6 @@ endif() - add_executable(${API_LOWERCASE}info vulkaninfo.c) - target_link_libraries(${API_LOWERCASE}info ${LIBRARIES}) - --if(NOT WIN32) -- if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL ${CMAKE_HOST_SYSTEM_PROCESSOR}) -- add_executable(cube cube.c ${CMAKE_BINARY_DIR}/demos/cube-vert.spv ${CMAKE_BINARY_DIR}/demos/cube-frag.spv) -- target_link_libraries(cube ${LIBRARIES}) -- endif() --else() -- if (CMAKE_CL_64) -- set (LIB_DIR "Win64") -- else() -- set (LIB_DIR "Win32") -- endif() -- -- add_executable(cube WIN32 cube.c ${CMAKE_BINARY_DIR}/demos/cube-vert.spv ${CMAKE_BINARY_DIR}/demos/cube-frag.spv) -- target_link_libraries(cube ${LIBRARIES}) --endif() -- --if(NOT WIN32) -- if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL ${CMAKE_HOST_SYSTEM_PROCESSOR}) -- add_executable(cubepp cube.cpp ${CMAKE_BINARY_DIR}/demos/cube-vert.spv ${CMAKE_BINARY_DIR}/demos/cube-frag.spv) -- target_link_libraries(cubepp ${LIBRARIES}) -- endif() --else() -- if (CMAKE_CL_64) -- set (LIB_DIR "Win64") -- else() -- set (LIB_DIR "Win32") -- endif() -- -- add_executable(cubepp WIN32 cube.cpp ${CMAKE_BINARY_DIR}/demos/cube-vert.spv ${CMAKE_BINARY_DIR}/demos/cube-frag.spv) -- target_link_libraries(cubepp ${LIBRARIES}) --endif() -- --if ((${CMAKE_SYSTEM_PROCESSOR} STREQUAL ${CMAKE_HOST_SYSTEM_PROCESSOR})) -- if ((DEMOS_WSI_SELECTION STREQUAL "XCB") OR (DEMOS_WSI_SELECTION STREQUAL "WAYLAND") OR WIN32 OR (CMAKE_SYSTEM_NAME STREQUAL "Android")) -- add_subdirectory(smoke) -- endif() --endif() - - if(UNIX) - if(INSTALL_LVL_FILES) From 41734a361479547acc4b7b3be314ea26bd795f37 Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Tue, 14 May 2019 14:14:04 +0200 Subject: [PATCH 032/133] dey.conf: force imx-gpu-viv as the provider for opencl-headers There's a recipe in the thud branch of meta-openembedded specifically for the opencl-headers package, but it's also provided by imx-gpu-viv. This generates build errors when parsing the recipes and when populating the sysroot for opencv. https://jira.digi.com/browse/DEL-6603 Signed-off-by: Gabriel Valcazar --- meta-digi-dey/conf/distro/dey.conf | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meta-digi-dey/conf/distro/dey.conf b/meta-digi-dey/conf/distro/dey.conf index 7a36eec5c..a11819e54 100644 --- a/meta-digi-dey/conf/distro/dey.conf +++ b/meta-digi-dey/conf/distro/dey.conf @@ -68,6 +68,11 @@ PREFERRED_PROVIDER_u-boot-fw-utils ?= "u-boot-fw-utils" # Use git recipe for libsoc PREFERRED_VERSION_libsoc = "git" +# There's a generic opencl-headers recipe in the thud branch of +# meta-openembedded, but we should use the package provided by the imx-gpu-viv +# recipe in case there are NXP-specific changes in it +PREFERRED_PROVIDER_opencl-headers ?= "imx-gpu-viv" + SDK_NAME = "${DISTRO}-${TCLIBC}-${SDK_ARCH}-${IMAGE_BASENAME}-${TUNE_PKGARCH}" SDKPATH = "/opt/${DISTRO}/${SDK_VERSION}" From 3a68b7a880e7f1b660466f96244b72099d730083 Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Wed, 15 May 2019 13:06:10 +0200 Subject: [PATCH 033/133] linux-dey: update branch name The new development branch is based on NXP's v4.14.98 BSP. https://jira.digi.com/browse/DEL-6603 Signed-off-by: Gabriel Valcazar --- meta-digi-arm/recipes-kernel/linux/linux-dey-src.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meta-digi-arm/recipes-kernel/linux/linux-dey-src.inc b/meta-digi-arm/recipes-kernel/linux/linux-dey-src.inc index f85c2c57d..ddb5fb0f4 100644 --- a/meta-digi-arm/recipes-kernel/linux/linux-dey-src.inc +++ b/meta-digi-arm/recipes-kernel/linux/linux-dey-src.inc @@ -4,7 +4,7 @@ LICENSE = "GPLv2" LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7" LOCALVERSION = "-dey" -SRCBRANCH = "v4.14.78/master" +SRCBRANCH = "v4.14.98/master" SRCBRANCH_ccimx6 = "v4.9/dey-2.6/maint" SRCREV = "${AUTOREV}" From bc5c64571ac6f7503f1a9f97a75f258a33e66ed4 Mon Sep 17 00:00:00 2001 From: Javier Viguera Date: Tue, 7 May 2019 18:09:17 +0200 Subject: [PATCH 034/133] busybox http: add systemd service Currently in a systemd based init, the httpd server is not launched. A systemd service is needed, so add it. Also install a CGI script that allows to use the device for the NetworkManager connectivity check. https://jira.digi.com/browse/DEL-6577 Signed-off-by: Javier Viguera --- .../busybox/busybox/busybox-httpd.service.in | 12 ++++++++++++ meta-digi-dey/recipes-core/busybox/busybox/nm | 6 ++++++ .../recipes-core/busybox/busybox_1.29.%.bbappend | 14 ++++++++++++++ 3 files changed, 32 insertions(+) create mode 100644 meta-digi-dey/recipes-core/busybox/busybox/busybox-httpd.service.in create mode 100644 meta-digi-dey/recipes-core/busybox/busybox/nm diff --git a/meta-digi-dey/recipes-core/busybox/busybox/busybox-httpd.service.in b/meta-digi-dey/recipes-core/busybox/busybox/busybox-httpd.service.in new file mode 100644 index 000000000..33593fc7b --- /dev/null +++ b/meta-digi-dey/recipes-core/busybox/busybox/busybox-httpd.service.in @@ -0,0 +1,12 @@ +[Unit] +Description=Busybox HTTP daemon +After=network.target + +[Service] +Type=forking +ExecStart=@sbindir@/httpd -h /srv/www +Restart=always +RestartSec=5 + +[Install] +WantedBy=multi-user.target diff --git a/meta-digi-dey/recipes-core/busybox/busybox/nm b/meta-digi-dey/recipes-core/busybox/busybox/nm new file mode 100644 index 000000000..10f8c1053 --- /dev/null +++ b/meta-digi-dey/recipes-core/busybox/busybox/nm @@ -0,0 +1,6 @@ +#!/bin/sh + +printf "Content-Type: text/plain; charset=utf-8\r\n" +printf "X-NetworkManager-Status: online\r\n" +printf "\r\n" +printf "NetworkManager is online\r\n" diff --git a/meta-digi-dey/recipes-core/busybox/busybox_1.29.%.bbappend b/meta-digi-dey/recipes-core/busybox/busybox_1.29.%.bbappend index 680b46a97..b1aabfeb7 100644 --- a/meta-digi-dey/recipes-core/busybox/busybox_1.29.%.bbappend +++ b/meta-digi-dey/recipes-core/busybox/busybox_1.29.%.bbappend @@ -8,6 +8,8 @@ SRC_URI += "file://standby \ file://busybox-ntpd \ file://index.html \ file://digi-logo.png \ + file://busybox-httpd.service.in \ + file://nm \ file://busybox-acpid \ file://acpid.map \ file://pswitch-standby \ @@ -22,6 +24,11 @@ INITSCRIPT_PARAMS_${PN}-hwclock = "start 20 S . stop 20 0 6 ." FILES_${PN}_append = " ${systemd_unitdir}/system-sleep/" +# HTTPD package +FILES_${PN}-httpd_append = " ${systemd_unitdir}/system/busybox-httpd.service" +SYSTEMD_PACKAGES += "${PN}-httpd" +SYSTEMD_SERVICE_${PN}-httpd = "busybox-httpd.service" + # NTPD package PACKAGES =+ "${PN}-ntpd" FILES_${PN}-ntpd = "${sysconfdir}/init.d/busybox-ntpd" @@ -46,8 +53,15 @@ do_install_append() { install -m 0755 ${WORKDIR}/busybox-ntpd ${D}${sysconfdir}/init.d/ fi if grep "CONFIG_HTTPD=y" ${WORKDIR}/defconfig; then + install -d ${D}/srv/www/cgi-bin install -m 0644 ${WORKDIR}/index.html ${D}/srv/www/ install -m 0644 ${WORKDIR}/digi-logo.png ${D}/srv/www/ + install -m 0755 ${WORKDIR}/nm ${D}/srv/www/cgi-bin/ + if ${HAS_SYSTEMD}; then + install -d ${D}${systemd_unitdir}/system + sed 's,@sbindir@,${sbindir},g' < ${WORKDIR}/busybox-httpd.service.in \ + > ${D}${systemd_unitdir}/system/busybox-httpd.service + fi fi # Install one standby script or another depending on having systemd or not if ${HAS_SYSTEMD}; then From a4d931bf847e93dabe52ad7d838e277c11e26656 Mon Sep 17 00:00:00 2001 From: Javier Viguera Date: Tue, 7 May 2019 18:29:43 +0200 Subject: [PATCH 035/133] qualcomm: remove hardcoded enable_p2p=0 parameter P2P disabled is the default in the kernel module, so passing here the parameter to 'modprobe' does nothing but prevents to set the parameter in the kernel command line. Signed-off-by: Javier Viguera --- .../kernel-module-qualcomm/kernel-module-qualcomm/qualcomm.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/qualcomm.sh b/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/qualcomm.sh index c02aa5f17..21a0aaac0 100644 --- a/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/qualcomm.sh +++ b/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/qualcomm.sh @@ -103,7 +103,7 @@ esac # and reduce the console log level to avoid debug messages at boot time LOGLEVEL="$(sed -ne 's,^kernel.printk[^=]*=[[:blank:]]*\(.*\)$,\1,g;T;p' /etc/sysctl.conf 2>/dev/null)" [ -n "${LOGLEVEL}" ] && sysctl -q -w kernel.printk="${LOGLEVEL}" -modprobe wlan enable_p2p=0 +modprobe wlan # Verify the interface is present [ -d "/sys/class/net/wlan0" ] || log "3" "[ERROR] Loading qca6564 module" From ba93fb6d766d50a81a04b641c56f303eed0df15c Mon Sep 17 00:00:00 2001 From: Javier Viguera Date: Fri, 10 May 2019 12:25:15 +0200 Subject: [PATCH 036/133] init-ifupdown: support establishing a P2P link Co-authored-by: Isaac Hermida Signed-off-by: Javier Viguera --- .../init-ifupdown/init-ifupdown-1.0/p2plink | 79 +++++++++++++++++++ .../init-ifupdown/init-ifupdown_1.0.bbappend | 9 ++- 2 files changed, 85 insertions(+), 3 deletions(-) create mode 100644 meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown-1.0/p2plink diff --git a/meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown-1.0/p2plink b/meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown-1.0/p2plink new file mode 100644 index 000000000..539127e16 --- /dev/null +++ b/meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown-1.0/p2plink @@ -0,0 +1,79 @@ +#!/bin/sh +# +# Copyright 2019, Digi International Inc. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, you can obtain one at http://mozilla.org/MPL/2.0/. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# +# Description: create P2P link +# +# Configuration variables in '/etc/network/interfaces': +# Mandatory: +# p2p-peer-mac +# Optional: +# p2p-discover-window +# p2p-freq +# p2p-local-address +# p2p-local-netmask +# + +# Execute only for the p2p0 interface +[ "${IFACE}" = "p2p0" ] || exit 0 + +log() { + systemd-cat -p "${1}" -t p2plink printf "%s" "${2}" +} + +# Exit without error if the peer MAC address is not available +[ -z "${IF_P2P_PEER_MAC}" ] && { log info "Peer MAC address not available"; exit 0; } + +# wpa_cli reports lowercase MACs, so convert to lowercase +IF_P2P_PEER_MAC="$(echo "${IF_P2P_PEER_MAC}" | tr 'A-F' 'a-f')" + +if [ "${MODE}" = "start" ]; then + wpa_cli -i"${IFACE}" p2p_find && sleep 1 + for _ in $(seq "${IF_P2P_DISCOVER_WINDOW:=120}"); do + wpa_cli -i"${IFACE}" p2p_peers discovered | grep -i -qs "${IF_P2P_PEER_MAC}" && { peer_found="1"; break; } + sleep 1 + done + wpa_cli -i"${IFACE}" p2p_stop_find + [ -z "${peer_found}" ] && { log err "p2p discover: peer NOT found"; exit 1; } + + # Peer found, establish the link + log info "establish P2P link" + wpa_cli -i"${IFACE}" p2p_connect "${IF_P2P_PEER_MAC}" pbc go_intent=7 ${IF_P2P_FREQ:+freq=${IF_P2P_FREQ}} + for _ in $(seq 20); do + if wpa_cli status 2>&1 | grep -qs "^wpa_state=COMPLETED$"; then + if wpa_cli status 2>&1 | grep -qs "^mode=P2P GO$"; then + # P2P GO side: verify the remote peer has connected + wpa_cli all_sta 2>&1 | grep -i -qs "^p2p_device_addr=${IF_P2P_PEER_MAC}$" && p2p_link_found="1" + elif wpa_cli status 2>&1 | grep -qs "^mode=station$"; then + p2p_link_found="1" + fi + fi + if [ -n "${p2p_link_found}" ]; then + # Configure the newly created interface + if [ -n "${IF_P2P_LOCAL_ADDRESS}" ]; then + for P2P_IFNAME in $(basename $(echo /sys/class/net/p2p-p2p0-*)); do + echo "${P2P_IFNAME}" | grep -qs 'p2p-p2p0-\*' && continue + ifconfig "${P2P_IFNAME}" "${IF_P2P_LOCAL_ADDRESS}" ${IF_P2P_LOCAL_NETMASK:+netmask ${IF_P2P_LOCAL_NETMASK}} up + break + done + fi + break + fi + sleep 1 + done + + # Give 'ifupdown' a proper error return value if 'wpa_state' is NOT COMPLETED + [ -n "${p2p_link_found}" ] && true || false +fi diff --git a/meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown_1.0.bbappend b/meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown_1.0.bbappend index 7fc60a0b3..d64563721 100644 --- a/meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown_1.0.bbappend +++ b/meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown_1.0.bbappend @@ -8,10 +8,11 @@ INITSCRIPT_PARAMS = "start 03 2 3 4 5 . stop 80 0 6 1 ." inherit systemd SRC_URI_append = " \ + file://ifupdown.service \ file://interfaces.br0.example \ file://interfaces.p2p \ + file://p2plink \ file://resolv \ - file://ifupdown.service \ " SRC_URI_append_ccimx6qpsbc = "\ @@ -37,8 +38,10 @@ SYSTEMD_SERVICE_${PN} = "ifupdown.service" WPA_DRIVER ?= "nl80211" do_install_append() { - # Install DNS servers handler - install -m 0755 ${WORKDIR}/resolv ${D}${sysconfdir}/network/if-up.d/resolv + # Install 'ifupdown' scripts + install -m 0755 ${WORKDIR}/p2plink ${D}${sysconfdir}/network/if-up.d/ + install -m 0755 ${WORKDIR}/resolv ${D}${sysconfdir}/network/if-up.d/ + # Install systemd service install -d ${D}${systemd_unitdir}/system/ install -m 0644 ${WORKDIR}/ifupdown.service ${D}${systemd_unitdir}/system/ From 3fba022ecce46050d9d3d90b8bccaeb55de539c0 Mon Sep 17 00:00:00 2001 From: Javier Viguera Date: Tue, 14 May 2019 16:53:44 +0200 Subject: [PATCH 037/133] networkmanager: allow to configure the connectivity response timeout Instead of the 20 seconds hardcoded currently in the code, allow to configure the response timeout in the connectivity section of the main NetworkManager config file. Signed-off-by: Javier Viguera --- ...d-config-option-for-response-timeout.patch | 215 ++++++++++++++++++ .../networkmanager/networkmanager_%.bbappend | 3 +- 2 files changed, 217 insertions(+), 1 deletion(-) create mode 100644 meta-digi-dey/recipes-connectivity/networkmanager/networkmanager/0002-connectivity-add-config-option-for-response-timeout.patch diff --git a/meta-digi-dey/recipes-connectivity/networkmanager/networkmanager/0002-connectivity-add-config-option-for-response-timeout.patch b/meta-digi-dey/recipes-connectivity/networkmanager/networkmanager/0002-connectivity-add-config-option-for-response-timeout.patch new file mode 100644 index 000000000..175a1b4c2 --- /dev/null +++ b/meta-digi-dey/recipes-connectivity/networkmanager/networkmanager/0002-connectivity-add-config-option-for-response-timeout.patch @@ -0,0 +1,215 @@ +From: Javier Viguera +Date: Tue, 14 May 2019 16:44:03 +0200 +Subject: [PATCH] connectivity: add config option for response timeout + +Instead of the 20 seconds hardcoded currently in the code, allow to +configure the response timeout in the connectivity section of the main +NetworkManager config file. + +Signed-off-by: Javier Viguera +--- + src/nm-config-data.c | 25 +++++++++++++++++++++++++ + src/nm-config-data.h | 2 ++ + src/nm-config.c | 6 ++++++ + src/nm-config.h | 1 + + src/nm-connectivity.c | 11 ++++++++++- + 5 files changed, 44 insertions(+), 1 deletion(-) + +diff --git a/src/nm-config-data.c b/src/nm-config-data.c +index 8d84e74abc5a..1493f69a2664 100644 +--- a/src/nm-config-data.c ++++ b/src/nm-config-data.c +@@ -68,6 +68,7 @@ NM_GOBJECT_PROPERTIES_DEFINE_BASE ( + PROP_CONNECTIVITY_ENABLED, + PROP_CONNECTIVITY_URI, + PROP_CONNECTIVITY_INTERVAL, ++ PROP_CONNECTIVITY_TIMEOUT, + PROP_CONNECTIVITY_RESPONSE, + PROP_NO_AUTO_DEFAULT, + ); +@@ -93,6 +94,7 @@ typedef struct { + char *uri; + char *response; + guint interval; ++ guint timeout; + } connectivity; + + int autoconnect_retries_default; +@@ -269,6 +271,14 @@ nm_config_data_get_connectivity_interval (const NMConfigData *self) + return NM_CONFIG_DATA_GET_PRIVATE (self)->connectivity.interval; + } + ++guint ++nm_config_data_get_connectivity_timeout (const NMConfigData *self) ++{ ++ g_return_val_if_fail (self, 0); ++ ++ return NM_CONFIG_DATA_GET_PRIVATE (self)->connectivity.timeout; ++} ++ + const char * + nm_config_data_get_connectivity_response (const NMConfigData *self) + { +@@ -1499,6 +1509,7 @@ nm_config_data_diff (NMConfigData *old_data, NMConfigData *new_data) + + if ( nm_config_data_get_connectivity_enabled (old_data) != nm_config_data_get_connectivity_enabled (new_data) + || nm_config_data_get_connectivity_interval (old_data) != nm_config_data_get_connectivity_interval (new_data) ++ || nm_config_data_get_connectivity_timeout (old_data) != nm_config_data_get_connectivity_timeout (new_data) + || g_strcmp0 (nm_config_data_get_connectivity_uri (old_data), nm_config_data_get_connectivity_uri (new_data)) + || g_strcmp0 (nm_config_data_get_connectivity_response (old_data), nm_config_data_get_connectivity_response (new_data))) + changes |= NM_CONFIG_CHANGE_CONNECTIVITY; +@@ -1547,6 +1558,9 @@ get_property (GObject *object, + case PROP_CONNECTIVITY_INTERVAL: + g_value_set_uint (value, nm_config_data_get_connectivity_interval (self)); + break; ++ case PROP_CONNECTIVITY_TIMEOUT: ++ g_value_set_uint (value, nm_config_data_get_connectivity_timeout (self)); ++ break; + case PROP_CONNECTIVITY_RESPONSE: + g_value_set_string (value, nm_config_data_get_connectivity_response (self)); + break; +@@ -1652,6 +1666,11 @@ constructed (GObject *object) + priv->connectivity.interval = _nm_utils_ascii_str_to_int64 (str, 10, 0, G_MAXUINT, NM_CONFIG_DEFAULT_CONNECTIVITY_INTERVAL); + g_free (str); + ++ /* On missing config value, fallback to the default value */ ++ str = g_key_file_get_string (priv->keyfile, NM_CONFIG_KEYFILE_GROUP_CONNECTIVITY, "timeout", NULL); ++ priv->connectivity.timeout = _nm_utils_ascii_str_to_int64 (str, 10, 1, G_MAXUINT, NM_CONFIG_DEFAULT_CONNECTIVITY_TIMEOUT); ++ g_free (str); ++ + priv->dns_mode = nm_strstrip (g_key_file_get_string (priv->keyfile, NM_CONFIG_KEYFILE_GROUP_MAIN, "dns", NULL)); + priv->rc_manager = nm_strstrip (g_key_file_get_string (priv->keyfile, NM_CONFIG_KEYFILE_GROUP_MAIN, "rc-manager", NULL)); + +@@ -1803,6 +1822,12 @@ nm_config_data_class_init (NMConfigDataClass *config_class) + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + ++ obj_properties[PROP_CONNECTIVITY_TIMEOUT] = ++ g_param_spec_uint(NM_CONFIG_DATA_CONNECTIVITY_TIMEOUT, "", "", ++ 0, G_MAXUINT, 0, ++ G_PARAM_READABLE | ++ G_PARAM_STATIC_STRINGS); ++ + obj_properties[PROP_CONNECTIVITY_RESPONSE] = + g_param_spec_string (NM_CONFIG_DATA_CONNECTIVITY_RESPONSE, "", "", + NULL, +diff --git a/src/nm-config-data.h b/src/nm-config-data.h +index b52ddcc4f85f..a0b35ac972af 100644 +--- a/src/nm-config-data.h ++++ b/src/nm-config-data.h +@@ -35,6 +35,7 @@ + #define NM_CONFIG_DATA_CONNECTIVITY_ENABLED "connectivity-enabled" + #define NM_CONFIG_DATA_CONNECTIVITY_URI "connectivity-uri" + #define NM_CONFIG_DATA_CONNECTIVITY_INTERVAL "connectivity-interval" ++#define NM_CONFIG_DATA_CONNECTIVITY_TIMEOUT "connectivity-timeout" + #define NM_CONFIG_DATA_CONNECTIVITY_RESPONSE "connectivity-response" + #define NM_CONFIG_DATA_NO_AUTO_DEFAULT "no-auto-default" + #define NM_CONFIG_DATA_DNS_MODE "dns" +@@ -161,6 +162,7 @@ char **nm_config_data_get_plugins (const NMConfigData *config_data, gboolean all + gboolean nm_config_data_get_connectivity_enabled (const NMConfigData *config_data); + const char *nm_config_data_get_connectivity_uri (const NMConfigData *config_data); + guint nm_config_data_get_connectivity_interval (const NMConfigData *config_data); ++guint nm_config_data_get_connectivity_timeout (const NMConfigData *config_data); + const char *nm_config_data_get_connectivity_response (const NMConfigData *config_data); + + int nm_config_data_get_autoconnect_retries_default (const NMConfigData *config_data); +diff --git a/src/nm-config.c b/src/nm-config.c +index 628eca4f13f0..87c7791a49c5 100644 +--- a/src/nm-config.c ++++ b/src/nm-config.c +@@ -60,6 +60,7 @@ struct NMConfigCmdLineOptions { + * set or not via GOptionEntry + */ + int connectivity_interval; ++ int connectivity_timeout; + char *connectivity_response; + + /* @first_start is not provided by command line. It is a convenient hack +@@ -470,6 +471,7 @@ _nm_config_cmd_line_options_clear (NMConfigCmdLineOptions *cli) + g_clear_pointer (&cli->connectivity_uri, g_free); + g_clear_pointer (&cli->connectivity_response, g_free); + cli->connectivity_interval = -1; ++ cli->connectivity_timeout = -1; + cli->first_start = FALSE; + } + +@@ -493,6 +495,7 @@ _nm_config_cmd_line_options_copy (const NMConfigCmdLineOptions *cli, NMConfigCmd + dst->connectivity_uri = g_strdup (cli->connectivity_uri); + dst->connectivity_response = g_strdup (cli->connectivity_response); + dst->connectivity_interval = cli->connectivity_interval; ++ dst->connectivity_timeout = cli->connectivity_timeout; + dst->first_start = cli->first_start; + } + +@@ -572,6 +575,7 @@ nm_config_cmd_line_options_add_to_entries (NMConfigCmdLineOptions *cli, + /* These three are hidden for now, and should eventually just go away. */ + { "connectivity-uri", 0, G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_STRING, &cli->connectivity_uri, N_("An http(s) address for checking internet connectivity"), "http://example.com" }, + { "connectivity-interval", 0, G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_INT, &cli->connectivity_interval, N_("The interval between connectivity checks (in seconds)"), G_STRINGIFY (NM_CONFIG_DEFAULT_CONNECTIVITY_INTERVAL) }, ++ { "connectivity-timeout", 0, G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_INT, &cli->connectivity_timeout, N_("The timeout for the connectivity checks (in seconds)"), G_STRINGIFY (NM_CONFIG_DEFAULT_CONNECTIVITY_TIMEOUT) }, + { "connectivity-response", 0, G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_STRING, &cli->connectivity_response, N_("The expected start of the response"), NM_CONFIG_DEFAULT_CONNECTIVITY_RESPONSE }, + { 0 }, + }; +@@ -1119,6 +1123,8 @@ read_entire_config (const NMConfigCmdLineOptions *cli, + g_key_file_set_string (keyfile, NM_CONFIG_KEYFILE_GROUP_CONNECTIVITY, "uri", cli->connectivity_uri); + if (cli->connectivity_interval >= 0) + g_key_file_set_integer (keyfile, NM_CONFIG_KEYFILE_GROUP_CONNECTIVITY, "interval", cli->connectivity_interval); ++ if (cli->connectivity_timeout >= 0) ++ g_key_file_set_integer (keyfile, NM_CONFIG_KEYFILE_GROUP_CONNECTIVITY, "timeout", cli->connectivity_timeout); + if (cli->connectivity_response && cli->connectivity_response[0]) + g_key_file_set_string (keyfile, NM_CONFIG_KEYFILE_GROUP_CONNECTIVITY, "response", cli->connectivity_response); + } +diff --git a/src/nm-config.h b/src/nm-config.h +index c65572ce3fe5..654567779282 100644 +--- a/src/nm-config.h ++++ b/src/nm-config.h +@@ -39,6 +39,7 @@ + #define NM_CONFIG_SIGNAL_CONFIG_CHANGED "config-changed" + + #define NM_CONFIG_DEFAULT_CONNECTIVITY_INTERVAL 300 ++#define NM_CONFIG_DEFAULT_CONNECTIVITY_TIMEOUT 20 + #define NM_CONFIG_DEFAULT_CONNECTIVITY_RESPONSE "NetworkManager is online" /* NOT LOCALIZED */ + + #define NM_CONFIG_KEYFILE_LIST_SEPARATOR ',' +diff --git a/src/nm-connectivity.c b/src/nm-connectivity.c +index 8a6e955ae56f..6a491eb22e96 100644 +--- a/src/nm-connectivity.c ++++ b/src/nm-connectivity.c +@@ -101,6 +101,7 @@ typedef struct { + char *response; + gboolean enabled; + guint interval; ++ guint timeout; + NMConfig *config; + #if WITH_CONCHECK + struct { +@@ -601,7 +602,7 @@ nm_connectivity_check_start (NMConnectivity *self, + curl_easy_setopt (ehandle, CURLOPT_INTERFACE, cb_data->ifspec); + curl_multi_add_handle (priv->concheck.curl_mhandle, ehandle); + +- cb_data->timeout_id = g_timeout_add_seconds (20, _timeout_cb, cb_data); ++ cb_data->timeout_id = g_timeout_add_seconds (priv->timeout, _timeout_cb, cb_data); + + _LOG2D ("start request to '%s'", priv->uri); + return cb_data; +@@ -652,6 +653,7 @@ update_config (NMConnectivity *self, NMConfigData *config_data) + NMConnectivityPrivate *priv = NM_CONNECTIVITY_GET_PRIVATE (self); + const char *uri, *response; + guint interval; ++ guint timeout; + gboolean enabled; + gboolean changed = FALSE; + +@@ -704,6 +706,13 @@ update_config (NMConnectivity *self, NMConfigData *config_data) + changed = TRUE; + } + ++ /* Set the timeout */ ++ timeout = nm_config_data_get_connectivity_timeout (config_data); ++ if (priv->timeout != timeout) { ++ priv->timeout = timeout; ++ changed = TRUE; ++ } ++ + /* Set the response. */ + response = nm_config_data_get_connectivity_response (config_data); + if (!nm_streq0 (response, priv->response)) { diff --git a/meta-digi-dey/recipes-connectivity/networkmanager/networkmanager_%.bbappend b/meta-digi-dey/recipes-connectivity/networkmanager/networkmanager_%.bbappend index 25769aeec..e5a03b41d 100644 --- a/meta-digi-dey/recipes-connectivity/networkmanager/networkmanager_%.bbappend +++ b/meta-digi-dey/recipes-connectivity/networkmanager/networkmanager_%.bbappend @@ -1,9 +1,10 @@ -# Copyright (C) 2017, Digi International Inc. +# Copyright (C) 2017-2019, Digi International Inc. FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:" SRC_URI += " \ file://0001-networkmanager-trigger-dispatcher-on-per-device-conn.patch \ + file://0002-connectivity-add-config-option-for-response-timeout.patch \ file://NetworkManager.conf \ file://networkmanager-init \ file://nm.cellular \ From c57d7ffa6fad88489e824a7b220da88dbcb4efc3 Mon Sep 17 00:00:00 2001 From: Javier Viguera Date: Wed, 8 May 2019 12:21:42 +0200 Subject: [PATCH 038/133] networkmanager: install main dispatcher script Also create the folders that contain the scripts attending each dispatch event type. https://jira.digi.com/browse/DEL-6575 Signed-off-by: Javier Viguera --- .../networkmanager/01dispatcher | 27 +++++++++++++++++++ .../networkmanager/networkmanager/ifdownup | 27 +++++++++++++++++++ .../networkmanager/networkmanager_%.bbappend | 10 +++++++ 3 files changed, 64 insertions(+) create mode 100644 meta-digi-dey/recipes-connectivity/networkmanager/networkmanager/01dispatcher create mode 100644 meta-digi-dey/recipes-connectivity/networkmanager/networkmanager/ifdownup diff --git a/meta-digi-dey/recipes-connectivity/networkmanager/networkmanager/01dispatcher b/meta-digi-dey/recipes-connectivity/networkmanager/networkmanager/01dispatcher new file mode 100644 index 000000000..9b20f1f65 --- /dev/null +++ b/meta-digi-dey/recipes-connectivity/networkmanager/networkmanager/01dispatcher @@ -0,0 +1,27 @@ +#!/bin/sh +# +# Copyright 2019, Digi International Inc. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, you can obtain one at http://mozilla.org/MPL/2.0/. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# +# Description: Generic dispatcher script for NetworkManager +# + +case "${2}" in + up | down | connectivity-change | device-connectivity-change) + run-parts -a "${1}" -a "${2}" "/etc/NetworkManager/dispatcher.d/${2}.d" + ;; + *) + # Do nothing + ;; +esac diff --git a/meta-digi-dey/recipes-connectivity/networkmanager/networkmanager/ifdownup b/meta-digi-dey/recipes-connectivity/networkmanager/networkmanager/ifdownup new file mode 100644 index 000000000..75ff4985d --- /dev/null +++ b/meta-digi-dey/recipes-connectivity/networkmanager/networkmanager/ifdownup @@ -0,0 +1,27 @@ +#!/bin/sh +# +# Copyright 2019, Digi International Inc. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, you can obtain one at http://mozilla.org/MPL/2.0/. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# +# Description: disconnect/reconnect the interface that generated the +# 'device-connectivity-change' event +# + +log() { + systemd-cat -p "${1}" -t ifdownup printf "%s" "${2}" +} + +log info "device-connectivity-change detected on interface ${DEVICE_IP_IFACE}" +nmcli device disconnect "${DEVICE_IP_IFACE}" +nmcli connection up "${CONNECTION_ID}" diff --git a/meta-digi-dey/recipes-connectivity/networkmanager/networkmanager_%.bbappend b/meta-digi-dey/recipes-connectivity/networkmanager/networkmanager_%.bbappend index e5a03b41d..3fd7f2ec0 100644 --- a/meta-digi-dey/recipes-connectivity/networkmanager/networkmanager_%.bbappend +++ b/meta-digi-dey/recipes-connectivity/networkmanager/networkmanager_%.bbappend @@ -14,6 +14,8 @@ SRC_URI += " \ file://nm.eth1.static \ file://nm.wlan0.dhcp \ file://nm.wlan0.static \ + file://01dispatcher \ + file://ifdownup \ " # 'polkit' depends on 'consolekit', and this requires 'x11' distro feature. So @@ -91,6 +93,14 @@ do_install_append() { ${D}${sysconfdir}/NetworkManager/system-connections/nm.cellular fi + # Install main dispatcher script and create directories + install -d ${D}${sysconfdir}/NetworkManager/dispatcher.d/up.d \ + ${D}${sysconfdir}/NetworkManager/dispatcher.d/down.d \ + ${D}${sysconfdir}/NetworkManager/dispatcher.d/connectivity-change.d \ + ${D}${sysconfdir}/NetworkManager/dispatcher.d/device-connectivity-change.d + install -m 0755 ${WORKDIR}/01dispatcher ${D}${sysconfdir}/NetworkManager/dispatcher.d/ + install -m 0755 ${WORKDIR}/ifdownup ${D}${sysconfdir}/NetworkManager/dispatcher.d/device-connectivity-change.d/ + # Disable terminal colors by default install -d ${D}${sysconfdir}/terminal-colors.d touch ${D}${sysconfdir}/terminal-colors.d/nmcli.disable From 07bf5e08433e39b351463723d43c587a074d05ac Mon Sep 17 00:00:00 2001 From: Javier Viguera Date: Fri, 10 May 2019 17:38:13 +0200 Subject: [PATCH 039/133] networkmanager: install dispatcher to create P2P bridge https://jira.digi.com/browse/DEL-6576 Co-authored-by: Isaac Hermida Signed-off-by: Javier Viguera --- .../networkmanager/networkmanager/p2pbridge | 65 +++++++++++++++++++ .../networkmanager/networkmanager_%.bbappend | 5 +- 2 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 meta-digi-dey/recipes-connectivity/networkmanager/networkmanager/p2pbridge diff --git a/meta-digi-dey/recipes-connectivity/networkmanager/networkmanager/p2pbridge b/meta-digi-dey/recipes-connectivity/networkmanager/networkmanager/p2pbridge new file mode 100644 index 000000000..5e3270fa4 --- /dev/null +++ b/meta-digi-dey/recipes-connectivity/networkmanager/networkmanager/p2pbridge @@ -0,0 +1,65 @@ +#!/bin/sh +# +# Copyright 2019, Digi International Inc. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, you can obtain one at http://mozilla.org/MPL/2.0/. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# +# Description: create P2P (BATMAN) bridge +# + +# This script is specific to create a P2P (BATMAN) bridge, so +# require the CONNECTION_ID to be "p2p-bridge" +[ "${CONNECTION_ID}" = "p2p-bridge" ] || exit 0 + +log() { + systemd-cat -p "${1}" -t p2pbridge printf "%s" "${2}" +} + +case "${NM_DISPATCHER_ACTION}" in +pre-up) + # Reset virtual interfaces + { batctl if destroy; ifdown -f p2p0; } >/dev/null 2>&1 + + # Bring P2P link up + log info "bring P2P link UP" + ifup p2p0 || { log err "p2p link NOT created"; exit 1; } + for P2P_IFNAME in $(basename $(echo /sys/class/net/p2p-p2p0-*)); do + echo "${P2P_IFNAME}" | grep -qs 'p2p-p2p0-\*' && continue + ifconfig "${P2P_IFNAME}" 0.0.0.0 + p2p_iface_found="1" + break + done + [ -z "${p2p_iface_found}" ] && { log err "p2p interface NOT found"; exit 1; } + + # Bring P2P bridge up + log info "bring P2P bridge up" + batctl if add "${P2P_IFNAME}" + ifconfig eth0 0.0.0.0 up + ifconfig bat0 0.0.0.0 up + brctl addif "${DEVICE_IP_IFACE}" bat0 + brctl addif "${DEVICE_IP_IFACE}" eth0 + log info "P2P bridge created" + ;; +down) + log info "bring P2P bridge DOWN" + brctl delif "${DEVICE_IP_IFACE}" bat0 + brctl delif "${DEVICE_IP_IFACE}" eth0 + batctl if destroy + + log info "bring P2P link DOWN" + ifdown -f p2p0 || { log err "unable to bring P2P link DOWN"; exit 1; } + ;; +*) + # Do nothing + ;; +esac diff --git a/meta-digi-dey/recipes-connectivity/networkmanager/networkmanager_%.bbappend b/meta-digi-dey/recipes-connectivity/networkmanager/networkmanager_%.bbappend index 3fd7f2ec0..8fee2cc8c 100644 --- a/meta-digi-dey/recipes-connectivity/networkmanager/networkmanager_%.bbappend +++ b/meta-digi-dey/recipes-connectivity/networkmanager/networkmanager_%.bbappend @@ -16,6 +16,7 @@ SRC_URI += " \ file://nm.wlan0.static \ file://01dispatcher \ file://ifdownup \ + file://p2pbridge \ " # 'polkit' depends on 'consolekit', and this requires 'x11' distro feature. So @@ -93,13 +94,15 @@ do_install_append() { ${D}${sysconfdir}/NetworkManager/system-connections/nm.cellular fi - # Install main dispatcher script and create directories + # Install dispatcher scripts and create directories install -d ${D}${sysconfdir}/NetworkManager/dispatcher.d/up.d \ ${D}${sysconfdir}/NetworkManager/dispatcher.d/down.d \ ${D}${sysconfdir}/NetworkManager/dispatcher.d/connectivity-change.d \ ${D}${sysconfdir}/NetworkManager/dispatcher.d/device-connectivity-change.d install -m 0755 ${WORKDIR}/01dispatcher ${D}${sysconfdir}/NetworkManager/dispatcher.d/ install -m 0755 ${WORKDIR}/ifdownup ${D}${sysconfdir}/NetworkManager/dispatcher.d/device-connectivity-change.d/ + install -m 0755 ${WORKDIR}/p2pbridge ${D}${sysconfdir}/NetworkManager/dispatcher.d/pre-up.d/ + ln -s ../pre-up.d/p2pbridge ${D}${sysconfdir}/NetworkManager/dispatcher.d/down.d/p2pbridge # Disable terminal colors by default install -d ${D}${sysconfdir}/terminal-colors.d From aad38d49c8a91cafd48add84dc051d04e4ea734b Mon Sep 17 00:00:00 2001 From: Jose Diaz de Grenu Date: Wed, 15 May 2019 11:48:53 +0200 Subject: [PATCH 040/133] system-monitor: add system-monitor example This recipe is an example for customer for a system-monitor. Scripts that verify the system status can be added to /etc/system-monitor.d The recovery mechanisms can be implemented on those scripts or in the system-monitor script. The software watchdog systemd support is used to guarantee that the system-monitor is running. When using this it is recommended to enable the systemd hardware watchdog support, refer to the systemd documentation for this. The systemd service provided by this recipe is not enabled by default as it is an example that needs customization. https://jira.digi.com/browse/DEL-6593 Signed-off-by: Jose Diaz de Grenu --- .../packagegroups/packagegroup-dey-core.bb | 1 + .../system-monitor/files/connectivity-check | 3 + .../files/recover-bridge-action | 8 +++ .../files/system-monitor.service | 12 ++++ .../system-monitor/files/system-monitor.sh | 60 +++++++++++++++++++ .../system-monitor/system-monitor_0.1.bb | 36 +++++++++++ 6 files changed, 120 insertions(+) create mode 100644 meta-digi-dey/recipes-core/system-monitor/files/connectivity-check create mode 100644 meta-digi-dey/recipes-core/system-monitor/files/recover-bridge-action create mode 100644 meta-digi-dey/recipes-core/system-monitor/files/system-monitor.service create mode 100644 meta-digi-dey/recipes-core/system-monitor/files/system-monitor.sh create mode 100644 meta-digi-dey/recipes-core/system-monitor/system-monitor_0.1.bb diff --git a/meta-digi-dey/recipes-core/packagegroups/packagegroup-dey-core.bb b/meta-digi-dey/recipes-core/packagegroups/packagegroup-dey-core.bb index bb324daaa..284bcfa0d 100644 --- a/meta-digi-dey/recipes-core/packagegroups/packagegroup-dey-core.bb +++ b/meta-digi-dey/recipes-core/packagegroups/packagegroup-dey-core.bb @@ -45,6 +45,7 @@ RDEPENDS_${PN} = "\ os-release \ recovery-utils \ sysinfo \ + system-monitor \ usbutils \ ${VIRTUAL-RUNTIME_base-utils} \ ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '', '${VIRTUAL-RUNTIME_base-utils-acpid}', d)} \ diff --git a/meta-digi-dey/recipes-core/system-monitor/files/connectivity-check b/meta-digi-dey/recipes-core/system-monitor/files/connectivity-check new file mode 100644 index 000000000..ec394646e --- /dev/null +++ b/meta-digi-dey/recipes-core/system-monitor/files/connectivity-check @@ -0,0 +1,3 @@ +#!/bin/sh + +[ "$(nmcli n c)" = "full" ] diff --git a/meta-digi-dey/recipes-core/system-monitor/files/recover-bridge-action b/meta-digi-dey/recipes-core/system-monitor/files/recover-bridge-action new file mode 100644 index 000000000..1c85a9c70 --- /dev/null +++ b/meta-digi-dey/recipes-core/system-monitor/files/recover-bridge-action @@ -0,0 +1,8 @@ +#!/bin/sh + +REBOOT_THRESHOLD="9" +checks_failed="${1}" + +if [ "${checks_failed}" -ge "${REBOOT_THRESHOLD}" ]; then + reboot +fi diff --git a/meta-digi-dey/recipes-core/system-monitor/files/system-monitor.service b/meta-digi-dey/recipes-core/system-monitor/files/system-monitor.service new file mode 100644 index 000000000..6cdf411cd --- /dev/null +++ b/meta-digi-dey/recipes-core/system-monitor/files/system-monitor.service @@ -0,0 +1,12 @@ +[Unit] +Description=System monitor + +[Service] +Type=notify +ExecStart=system-monitor.sh +Restart=always +RestartSec=1 +WatchdogSec=200 + +[Install] +WantedBy=multi-user.target diff --git a/meta-digi-dey/recipes-core/system-monitor/files/system-monitor.sh b/meta-digi-dey/recipes-core/system-monitor/files/system-monitor.sh new file mode 100644 index 000000000..267aca492 --- /dev/null +++ b/meta-digi-dey/recipes-core/system-monitor/files/system-monitor.sh @@ -0,0 +1,60 @@ +#!/bin/sh +#=============================================================================== +# +# system-monitor.sh +# +# Copyright (C) 2019 by Digi International Inc. +# All rights reserved. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 as published by +# the Free Software Foundation. +# +# !Description: Checks the system status and takes actions if the system is +# not in the desired state. +# +# The system-monitor systemd service calls this script periodically. +# +#=============================================================================== + +# Watchdog time in specified in system-monitor.service +# The script will monitor the system and kick the software watchdod +# every 1/4 of the time watchdog time configured. +WDOG_TIME_SEC=$((WATCHDOG_USEC / 1000000 / 4)) + +log() { + systemd-cat -p "${1}" -t system-monitor printf "%s" "${2}" +} + +checks_failed=0 + +monitor() +{ + # run system check actions + if run-parts -a "${checks_failed}" "/etc/system-monitor/check.d"; then + log info "system check correct" + checks_failed=0 + else + # system check failed, run recover actions + checks_failed=$((checks_failed + 1)) + log warning "system check failed (${checks_failed} consecutive checks failed so far)" + run-parts -a "${checks_failed}" "/etc/system-monitor/recover-action.d" + fi +} + +log info "started" +/bin/systemd-notify --ready + +# system-monitor main loop: +# * Monitor system status +# * Kick software watchdog +# * Wait for remaining time (if any) until next check +while true; do + loop_start=$(date +%s) + + monitor + /bin/systemd-notify WATCHDOG=1 + + time_to_wait=$((WDOG_TIME_SEC - ($(date +%s) - loop_start))) + [ ${time_to_wait} -gt 0 ] && sleep ${time_to_wait} +done diff --git a/meta-digi-dey/recipes-core/system-monitor/system-monitor_0.1.bb b/meta-digi-dey/recipes-core/system-monitor/system-monitor_0.1.bb new file mode 100644 index 000000000..3288f0cdd --- /dev/null +++ b/meta-digi-dey/recipes-core/system-monitor/system-monitor_0.1.bb @@ -0,0 +1,36 @@ +# Copyright (C) 2019 Digi International +SUMMARY = "Install and start a systemd service" +LICENSE = "MPL-2.0" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MPL-2.0;md5=815ca599c9df247a0c7f619bab123dad" + +SRC_URI = " \ + file://connectivity-check \ + file://recover-bridge-action \ + file://system-monitor.sh \ + file://system-monitor.service \ +" +S = "${WORKDIR}" + +inherit systemd + +REQUIRED_DISTRO_FEATURES= "systemd" + +SYSTEMD_SERVICE_${PN} = "system-monitor.service" + +# The system-monitor.sh script is an example that needs to be customized. +# This service also needs to be manually enabled. +SYSTEMD_AUTO_ENABLE ?= "disable" + +do_install() { + install -d ${D}${bindir} + install -m 0755 ${WORKDIR}/system-monitor.sh ${D}${bindir} + + install -d ${D}${systemd_unitdir}/system/ + install -m 0644 ${WORKDIR}/system-monitor.service ${D}${systemd_unitdir}/system/ + + install -d ${D}${sysconfdir}/system-monitor/check.d ${D}${sysconfdir}/system-monitor/recover-action.d + install -m 0755 ${WORKDIR}/connectivity-check ${D}${sysconfdir}/system-monitor/check.d + install -m 0755 ${WORKDIR}/recover-bridge-action ${D}${sysconfdir}/system-monitor/recover-action.d +} + +FILES_${PN} += "${systemd_unitdir}/system/system-monitor.service" From 83e5335a2e37bf1e3f6c2357794470bae6384c68 Mon Sep 17 00:00:00 2001 From: Alex Gonzalez Date: Fri, 17 May 2019 09:29:04 +0200 Subject: [PATCH 041/133] README: Update with hotfix additions Signed-off-by: Alex Gonzalez --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 09d089687..6dd5b08db 100644 --- a/README.md +++ b/README.md @@ -82,6 +82,10 @@ Documentation is available online at https://www.digi.com/resources/documentatio * Updated AWS Greengrass core to version 1.8.0 * Added support for Code Signing Tool 3.1.0 * Changed initialization manager in ConnectCore 8X platforms to systemd +* System monitor framework +* Automatic Wi-Fi direct connection setup +* Automatic Wi-Fi extender bridge setup +* Network connection recovery framework # Known Issues and Limitations From 1fe9ca04c2e4aa6b6d9af98e652ec7fa9afea504 Mon Sep 17 00:00:00 2001 From: Arturo Buzarra Date: Thu, 16 May 2019 16:13:33 +0200 Subject: [PATCH 042/133] base-files: remove platform dependency to execute the postinst function Removed the platform dependency to apply the resize to all platforms. https://jira.digi.com/browse/DEL-6609 Signed-off-by: Arturo Buzarra --- .../recipes-core/base-files/base-files_3.0.14.bbappend | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meta-digi-dey/recipes-core/base-files/base-files_3.0.14.bbappend b/meta-digi-dey/recipes-core/base-files/base-files_3.0.14.bbappend index 60f38fef1..c676446a9 100644 --- a/meta-digi-dey/recipes-core/base-files/base-files_3.0.14.bbappend +++ b/meta-digi-dey/recipes-core/base-files/base-files_3.0.14.bbappend @@ -10,7 +10,7 @@ do_install_append() { install -m 0644 ${WORKDIR}/sysctl.conf ${D}${sysconfdir}/ } -pkg_postinst_ontarget_${PN}_ccimx6() { +pkg_postinst_ontarget_${PN}() { get_emmc_block_device() { emmc_number="$(sed -ne 's,.*mmcblk\(.\)boot0.*,\1,g;T;p' /proc/partitions)" if [ -b "/dev/mmcblk${emmc_number}" ] && From 8c0aaf79b6b1d7e35bde483c2f41294c595c0794 Mon Sep 17 00:00:00 2001 From: Arturo Buzarra Date: Thu, 16 May 2019 16:16:39 +0200 Subject: [PATCH 043/133] base-files: add filter to ignore mmc RPMB partitions The Replay Protected Memory Block (RPMB) is an special storage partition that cannot be accessed via standard block layer. When a user space tool like blkid, tries to read it the kernel suffers buffer I/O errors and timeouts. This commit modifies the post installation script to filter the RPMB partitions from the mmc block devices, to avoid multiple kernel errors during the script execution. https://jira.digi.com/browse/DEL-6609 Signed-off-by: Arturo Buzarra --- .../recipes-core/base-files/base-files_3.0.14.bbappend | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/meta-digi-dey/recipes-core/base-files/base-files_3.0.14.bbappend b/meta-digi-dey/recipes-core/base-files/base-files_3.0.14.bbappend index c676446a9..8173b2067 100644 --- a/meta-digi-dey/recipes-core/base-files/base-files_3.0.14.bbappend +++ b/meta-digi-dey/recipes-core/base-files/base-files_3.0.14.bbappend @@ -25,9 +25,9 @@ pkg_postinst_ontarget_${PN}() { DM_BLOCK_DEVICE="/dev/dm-" EMMC_BLOCK_DEVICE="$(get_emmc_block_device)" if [ -x "${RESIZE2FS}" -a -n "${EMMC_BLOCK_DEVICE}" ]; then - PARTITIONS="$(blkid | sed -ne "{s,\(^${EMMC_BLOCK_DEVICE}[^:]\+\):.*TYPE=\"ext4\".*,\1,g;T;p}" | sort -u)" + PARTITIONS="$(blkid ${EMMC_BLOCK_DEVICE}p* | sed -ne "{s,\(^${EMMC_BLOCK_DEVICE}[^:]\+\):.*TYPE=\"ext4\".*,\1,g;T;p}" | sort -u)" # Add possible device mapper devices - PARTITIONS="${PARTITIONS} $(blkid | sed -ne "{s,\(^${DM_BLOCK_DEVICE}[^:]\+\):.*TYPE=\"ext4\".*,\1,g;T;p}" | sort -u)" + PARTITIONS="${PARTITIONS} $(blkid ${DM_BLOCK_DEVICE}* | sed -ne "{s,\(^${DM_BLOCK_DEVICE}[^:]\+\):.*TYPE=\"ext4\".*,\1,g;T;p}" | sort -u)" for i in ${PARTITIONS}; do if ! ${RESIZE2FS} ${i} 2>/dev/null; then echo "ERROR: resize2fs ${i}" From 702bc57caea0041b127fa5c0f3b6f39cc0aeb834 Mon Sep 17 00:00:00 2001 From: Hector Palacios Date: Mon, 20 May 2019 12:48:30 +0200 Subject: [PATCH 044/133] uboot: add support for new HWID fields to boot scripts The new HWID fields make U-Boot create new variable 'module_ram'. If it exists calculate new HWID fields to check if the SOM has Wi-Fi, Bluetooth, etc. in order to select the device tree file. If not, fall back to old method of using the variant code and the hard-coded table of variants. Signed-off-by: Hector Palacios https://jira.digi.com/browse/DEL-6598 --- .../u-boot-dey/ccimx8x-sbc-express/boot.txt | 37 +++++++++++++------ .../u-boot-dey/ccimx8x-sbc-pro/boot.txt | 31 +++++++++++++--- 2 files changed, 50 insertions(+), 18 deletions(-) diff --git a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-express/boot.txt b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-express/boot.txt index f64110f3e..3da6b55df 100644 --- a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-express/boot.txt +++ b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-express/boot.txt @@ -9,20 +9,33 @@ if test -n "${board_id}"; then setenv fdt_file ccimx8x-sbc-express-id${board_id}.dtb else # - # Set device tree filename depending on the hardware variant + # Set device tree filename depending on the hardware capabilities # - if test "${module_variant}" = "0x01"; then - setenv fdt_file ccimx8x-sbc-express-wb.dtb - elif test "${module_variant}" = "0x02"; then - setenv fdt_file ccimx8x-sbc-express-wb.dtb - elif test "${module_variant}" = "0x03"; then - setenv fdt_file ccimx8x-sbc-express.dtb - elif test "${module_variant}" = "0x04"; then - setenv fdt_file ccimx8x-sbc-express-wb.dtb - elif test "${module_variant}" = "0x05"; then - setenv fdt_file ccimx8x-sbc-express.dtb + if test -n "${module_ram}"; then + setexpr module_has_wifi ${hwid_3} \& 1 + setexpr module_has_bt ${hwid_3} \& 2 + setexpr module_has_bt ${module_has_bt} / 2 + + if test "${module_has_wifi}" = "1" && + test "${module_has_bt}" = "1"; then + setenv fdt_file ccimx8x-sbc-express-wb.dtb + else + setenv fdt_file ccimx8x-sbc-express.dtb + fi else - setenv fdt_file ccimx8x-sbc-express-wb.dtb + # + # Set device tree filename depending on the hardware variant + # + if test "${module_variant}" = "0x01" || + test "${module_variant}" = "0x02" || + test "${module_variant}" = "0x04"; then + setenv fdt_file ccimx8x-sbc-express-wb.dtb + elif test "${module_variant}" = "0x03" || + test "${module_variant}" = "0x05"; then + setenv fdt_file ccimx8x-sbc-express.dtb + else + setenv fdt_file ccimx8x-sbc-express-wb.dtb + fi fi fi diff --git a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-pro/boot.txt b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-pro/boot.txt index d849048ee..a8d37c69d 100644 --- a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-pro/boot.txt +++ b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-pro/boot.txt @@ -9,14 +9,33 @@ if test -n "${board_id}"; then setenv fdt_file ccimx8x-sbc-pro-id${board_id}.dtb else # - # Set device tree filename depending on the hardware variant + # Set device tree filename depending on the hardware capabilities # - if test "${module_variant}" = "0x01" || test "${module_variant}" = "0x02" || test "${module_variant}" = "0x04"; then - setenv fdt_file ccimx8x-sbc-pro-wb.dtb - elif test "${module_variant}" = "0x03" || test "${module_variant}" = "0x05"; then - setenv fdt_file ccimx8x-sbc-pro.dtb + if test -n "${module_ram}"; then + setexpr module_has_wifi ${hwid_3} \& 1 + setexpr module_has_bt ${hwid_3} \& 2 + setexpr module_has_bt ${module_has_bt} / 2 + + if test "${module_has_wifi}" = "1" && + test "${module_has_bt}" = "1"; then + setenv fdt_file ccimx8x-sbc-pro-wb.dtb + else + setenv fdt_file ccimx8x-sbc-pro.dtb + fi else - setenv fdt_file ccimx8x-sbc-pro-wb.dtb + # + # Set device tree filename depending on the hardware variant + # + if test "${module_variant}" = "0x01" || + test "${module_variant}" = "0x02" || + test "${module_variant}" = "0x04"; then + setenv fdt_file ccimx8x-sbc-pro-wb.dtb + elif test "${module_variant}" = "0x03" || + test "${module_variant}" = "0x05"; then + setenv fdt_file ccimx8x-sbc-pro.dtb + else + setenv fdt_file ccimx8x-sbc-pro-wb.dtb + fi fi fi From 4351db16773294595ed99d51bb1b5e86c2cc9a0a Mon Sep 17 00:00:00 2001 From: Hector Palacios Date: Mon, 20 May 2019 15:46:22 +0200 Subject: [PATCH 045/133] uboot: add support for new HWID fields to install fw scripts The new HWID fields make U-Boot create new variable 'module_ram'. If it exists use it to select the U-Boot file to use during firmware update. If not, fall back to old method of using the variant code and the hard-coded table of variants. Signed-off-by: Hector Palacios https://jira.digi.com/browse/DEL-6598 --- .../install_linux_fw_sd.txt | 21 +++++++++++++------ .../ccimx8x-sbc-pro/install_linux_fw_sd.txt | 21 +++++++++++++------ 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-express/install_linux_fw_sd.txt b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-express/install_linux_fw_sd.txt index f47c90b5f..ad5ecc8d5 100644 --- a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-express/install_linux_fw_sd.txt +++ b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-express/install_linux_fw_sd.txt @@ -19,14 +19,23 @@ if test $? -eq 1; then exit; fi -# Determine U-Boot file to program basing on module variant -if test -n "${module_variant}"; then - if test "${module_variant}" = "0x01" || test "${module_variant}" = "0x04" || test "${module_variant}" = "0x05"; then - setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_express1GB.bin; - elif test "${module_variant}" = "0x02" || test "${module_variant}" = "0x03"; then - setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_express2GB.bin; +# Determine U-Boot file to program basing on SOM's RAM size +if test -n "${module_ram}"; then + setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_express${module_ram}.bin; +else + # Determine U-Boot file to program basing on SOM's variant + if test -n "${module_variant}"; then + if test "${module_variant}" = "0x01" || + test "${module_variant}" = "0x04" || + test "${module_variant}" = "0x05"; then + setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_express1GB.bin; + elif test "${module_variant}" = "0x02" || + test "${module_variant}" = "0x03"; then + setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_express2GB.bin; + fi fi fi + # Use 'test -n ...' because 'test -z ...' does not work well on old versions of # u-boot when the checked value is empty. if test -n "${INSTALL_UBOOT_FILENAME}"; then diff --git a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-pro/install_linux_fw_sd.txt b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-pro/install_linux_fw_sd.txt index 1bf32a2ae..9f9fa5ddd 100644 --- a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-pro/install_linux_fw_sd.txt +++ b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-pro/install_linux_fw_sd.txt @@ -19,14 +19,23 @@ if test $? -eq 1; then exit; fi -# Determine U-Boot file to program basing on module variant -if test -n "${module_variant}"; then - if test "${module_variant}" = "0x01" || test "${module_variant}" = "0x04" || test "${module_variant}" = "0x05"; then - setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_pro1GB.bin; - elif test "${module_variant}" = "0x02" || test "${module_variant}" = "0x03"; then - setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_pro2GB.bin; +# Determine U-Boot file to program basing on SOM's RAM size +if test -n "${module_ram}"; then + setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_pro${module_ram}.bin; +else + # Determine U-Boot file to program basing on SOM's variant + if test -n "${module_variant}"; then + if test "${module_variant}" = "0x01" || + test "${module_variant}" = "0x04" || + test "${module_variant}" = "0x05"; then + setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_pro1GB.bin; + elif test "${module_variant}" = "0x02" || + test "${module_variant}" = "0x03"; then + setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_pro2GB.bin; + fi fi fi + # Use 'test -n ...' because 'test -z ...' does not work well on old versions of # u-boot when the checked value is empty. if test -n "${INSTALL_UBOOT_FILENAME}"; then From e11fd2eb8431dcf557d0ac5f5683f7478cda3221 Mon Sep 17 00:00:00 2001 From: Hector Bujanda Date: Fri, 24 May 2019 16:11:00 +0200 Subject: [PATCH 046/133] meta-digi-dey: dey-examples-rtc: added periodic and 1Hz interrupts testing -p : Test the standard periodic interrupts (uses timers, doesn't wake from low power) -u : Test the standard 1 Hz interrupt (uses RTC ALARM) -v : Test MCA periodic interrupts (uses RTC PERIODIC_IRQ) -w : Test MCA 1 Hz interrupt (uses RTC 1HZ) https://jira.digi.com/browse/DEL-6602 Signed-off-by: Hector Bujanda --- .../dey-examples/files/rtc_test/rtc_test.c | 245 +++++++++++++++++- 1 file changed, 237 insertions(+), 8 deletions(-) diff --git a/meta-digi-dey/recipes-digi/dey-examples/files/rtc_test/rtc_test.c b/meta-digi-dey/recipes-digi/dey-examples/files/rtc_test/rtc_test.c index 6fcbd376b..eb382f5f6 100644 --- a/meta-digi-dey/recipes-digi/dey-examples/files/rtc_test/rtc_test.c +++ b/meta-digi-dey/recipes-digi/dey-examples/files/rtc_test/rtc_test.c @@ -24,16 +24,29 @@ #include #define PROGRAM "rtc_test" -#define VERSION "3.1" +#define VERSION "3.2" #define DEFAULT_RTC_DEVICE_FILE "/dev/rtc" +// Digi RTC IOCTLs custom implementation using MCA +#define RTC_IOCTL_DIGI 0x100 +#define RTC_MCA_UIE_ON (RTC_IOCTL_DIGI + RTC_UIE_ON) +#define RTC_MCA_UIE_OFF (RTC_IOCTL_DIGI + RTC_UIE_OFF) +#define RTC_MCA_PIE_ON (RTC_IOCTL_DIGI + RTC_PIE_ON) +#define RTC_MCA_PIE_OFF (RTC_IOCTL_DIGI + RTC_PIE_OFF) +#define RTC_MCA_IRQP_READ (RTC_IOCTL_DIGI + RTC_IRQP_READ) +#define RTC_MCA_IRQP_SET (RTC_IOCTL_DIGI + RTC_IRQP_SET) + /* test options */ -#define RTC_TEST_RD_TIME (1<<0) -#define RTC_TEST_SET_TIME (1<<1) -#define RTC_TEST_RD_ALARM (1<<2) -#define RTC_TEST_SET_ALARM (1<<3) -#define RTC_TEST_ALARM_IRQ (1<<4) +#define RTC_TEST_RD_TIME (1<<0) +#define RTC_TEST_SET_TIME (1<<1) +#define RTC_TEST_RD_ALARM (1<<2) +#define RTC_TEST_SET_ALARM (1<<3) +#define RTC_TEST_ALARM_IRQ (1<<4) +#define RTC_TEST_STD_PERIODIC_IRQ (1<<5) +#define RTC_TEST_STD_1HZ_IRQ (1<<6) +#define RTC_TEST_DIGI_PERIODIC_IRQ (1<<7) +#define RTC_TEST_DIGI_1HZ_IRQ (1<<8) #define RTC_DEFAULT_TEST_OPS 0 /* None, pass it through the command line */ @@ -48,6 +61,10 @@ " -c : Read the alarm programed value\n" \ " -d : Set the alarm to trigger in the specified seconds\n" \ " -e : Test the alarm interrupt with the specified seconds\n" \ + " -p : Test the standard periodic interrupts (uses timers, doesn't wake from low power)\n" \ + " -u : Test the standard 1 Hz interrupt (uses RTC ALARM)\n" \ + " -v : Test MCA periodic interrupts (uses RTC PERIODIC_IRQ)\n" \ + " -w : Test MCA 1 Hz interrupt (uses RTC 1HZ)\n" \ " -f : Use specified device (default is /dev/rtc)\n" \ " -h : Help\n" \ " -m : Alarm has minutes resolution. (seconds by default)." \ @@ -65,6 +82,8 @@ static int rtc_test_time_set(int fd, struct rtc_time *tm); static int rtc_test_alarm_read(int fd); static int rtc_test_alarm_set(int fd, struct rtc_time *tm); static int rtc_test_alarm_irq(int fd, struct rtc_wkalrm *wkalrm); +static int rtc_test_periodic_irq(int fd, int digi); +static int rtc_test_1hz_irq(int fd, int digi); static void rtc_test_display_test_results(unsigned int test_ops, unsigned int test_results); static int seconds = 5; @@ -119,13 +138,13 @@ int main(int argc, char *argv[]) unsigned int test_results = 0; struct rtc_time rtc_tm; struct rtc_wkalrm wkalrm; - const char rtc_device_file[10] = DEFAULT_RTC_DEVICE_FILE; + char rtc_device_file[10] = DEFAULT_RTC_DEVICE_FILE; memset(&rtc_tm, 0, sizeof(struct rtc_time)); memset(&wkalrm, 0, sizeof(struct rtc_wkalrm)); if (argc > 1) { - while ((opt = getopt(argc, argv, "abcdef:hms:")) > 0) { + while ((opt = getopt(argc, argv, "abcdepuvwf:hms:")) > 0) { switch (opt) { case 'a': test_ops |= RTC_TEST_RD_TIME; @@ -142,6 +161,18 @@ int main(int argc, char *argv[]) case 'e': test_ops |= RTC_TEST_ALARM_IRQ; break; + case 'p': + test_ops |= RTC_TEST_STD_PERIODIC_IRQ; + break; + case 'u': + test_ops |= RTC_TEST_STD_1HZ_IRQ; + break; + case 'v': + test_ops |= RTC_TEST_DIGI_PERIODIC_IRQ; + break; + case 'w': + test_ops |= RTC_TEST_DIGI_1HZ_IRQ; + break; case 'f': strncpy(rtc_device_file,optarg,10); break; @@ -209,6 +240,30 @@ int main(int argc, char *argv[]) test_results &= ~RTC_TEST_ALARM_IRQ; } + if (test_ops & (RTC_TEST_STD_PERIODIC_IRQ)) { + retval = rtc_test_periodic_irq(rtc_fd, 0); + if (retval == 1) + test_results |= RTC_TEST_STD_PERIODIC_IRQ; + } + + if (test_ops & (RTC_TEST_STD_1HZ_IRQ)) { + retval = rtc_test_1hz_irq(rtc_fd, 0); + if (retval == 1) + test_results |= RTC_TEST_STD_1HZ_IRQ; + } + + if (test_ops & (RTC_TEST_DIGI_PERIODIC_IRQ)) { + retval = rtc_test_periodic_irq(rtc_fd, 1); + if (retval == 1) + test_results |= RTC_TEST_DIGI_PERIODIC_IRQ; + } + + if (test_ops & (RTC_TEST_DIGI_1HZ_IRQ)) { + retval = rtc_test_1hz_irq(rtc_fd, 1); + if (retval == 1) + test_results |= RTC_TEST_DIGI_1HZ_IRQ; + } + rtc_test_display_test_results(test_ops, test_results); close(rtc_fd); @@ -250,6 +305,22 @@ static void rtc_test_display_test_results(unsigned int test_ops, printf("Alarm interrupt test: %s\n", test_results & RTC_TEST_ALARM_IRQ ? "OK" : "Failure or not supported"); + if (test_ops & RTC_TEST_STD_PERIODIC_IRQ) + printf("Std periodic interrupt test: %s\n", + test_results & RTC_TEST_STD_PERIODIC_IRQ ? "OK" : + "Failure or not supported"); + if (test_ops & RTC_TEST_STD_1HZ_IRQ) + printf("Std 1 Hz interrupt test: %s\n", + test_results & RTC_TEST_STD_1HZ_IRQ ? "OK" : + "Failure or not supported"); + if (test_ops & RTC_TEST_DIGI_PERIODIC_IRQ) + printf("Digi periodic interrupt test: %s\n", + test_results & RTC_TEST_DIGI_PERIODIC_IRQ ? "OK" : + "Failure or not supported"); + if (test_ops & RTC_TEST_DIGI_1HZ_IRQ) + printf("Digi 1 Hz interrupt test: %s\n", + test_results & RTC_TEST_DIGI_1HZ_IRQ ? "OK" : + "Failure or not supported"); } /* @@ -427,3 +498,161 @@ static int rtc_test_alarm_irq(int fd, struct rtc_wkalrm *wkalrm) return result; } + +/* + * Function: rtc_test_periodic_irq + * Description: check periodic irq + */ +static int rtc_test_periodic_irq(int fd, int digi) +{ + int retval, i, irqcount = 0; + unsigned long tmp, data; + struct timeval start, end, diff; + int result = 1; + + /* Read periodic IRQ rate */ + retval = ioctl(fd, digi ? RTC_MCA_IRQP_READ : RTC_IRQP_READ, &tmp); + if (retval == -1) { + /* not all RTCs support periodic IRQs */ + if (errno == EINVAL) { + fprintf(stderr, "\nNo periodic IRQ support\n"); + } + perror("IRQP_READ ioctl"); + return 0; + } + fprintf(stderr, "\nPeriodic IRQ rate is %ld Hz.\n", tmp); + + fprintf(stderr, "Counting 20 interrupts at:"); + fflush(stderr); + + /* The frequencies 128 Hz, 256 Hz, ... 8192Hz are only allowed for root. */ + for (tmp = 2; tmp <= 64; tmp *= 2) { + retval = ioctl(fd, digi ? RTC_MCA_IRQP_SET : RTC_IRQP_SET, tmp); + if (retval == -1) { + /* not all RTCs can change their periodic IRQ rate */ + if (errno == EINVAL) { + fprintf(stderr, + "\n...Periodic IRQ rate is fixed\n"); + } + perror("IRQP_SET ioctl"); + return 0; + } + + fprintf(stderr, "\n%ld Hz:\t", tmp); + fflush(stderr); + + /* Enable periodic interrupts */ + retval = ioctl(fd, digi ? RTC_MCA_PIE_ON : RTC_PIE_ON, 0); + if (retval == -1) { + perror("PIE_ON ioctl"); + return 0; + } + + for (i = 1; i < 21; i++) { + gettimeofday(&start, NULL); + /* This blocks */ + retval = read(fd, &data, sizeof(unsigned long)); + if (retval == -1) { + perror("read"); + exit(errno); + } + gettimeofday(&end, NULL); + timersub(&end, &start, &diff); + if (diff.tv_sec > 0 || + diff.tv_usec > ((1000000L / tmp) * 1.10)) { + fprintf(stderr, "\nPIE delta error: %ld.%06ld should be close to 0.%06ld\n", + diff.tv_sec, diff.tv_usec, + (1000000L / tmp)); + fflush(stdout); + result = 0; + } + + fprintf(stderr, " %d",i); + fflush(stderr); + irqcount++; + } + + /* Disable periodic interrupts */ + retval = ioctl(fd, digi ? RTC_MCA_PIE_OFF : RTC_PIE_OFF, 0); + if (retval == -1) { + perror("PIE_OFF ioctl"); + return 0; + } + } + fprintf(stderr, "\n\n"); + fflush(stderr); + + return result; +} + +/* + * Function: rtc_test_1hz_irq + * Description: check 1 Hz irq + */ +static int rtc_test_1hz_irq(int fd, int digi) +{ + int retval, i, irqcount = 0; + unsigned long tmp, data; + struct timeval start, end, diff; + + /* Turn on update interrupts (one per second) */ + retval = ioctl(fd, digi ? RTC_MCA_UIE_ON : RTC_UIE_ON, 0); + if (retval == -1) { + if (errno == EINVAL) { + fprintf(stderr, + "\n...Update IRQs not supported.\n"); + } + perror("UIE_ON ioctl"); + return 0; + } + + fprintf(stderr, "Counting 5 update (1/sec) interrupts from reading rtc"); + fflush(stderr); + for (i = 1; i < 6; i++) { + /* This read will block */ + retval = read(fd, &data, sizeof(unsigned long)); + if (retval == -1) { + perror("read"); + exit(errno); + } + fprintf(stderr, " %d",i); + fflush(stderr); + irqcount++; + } + + fprintf(stderr, "\nCounting 5 update (1/sec) interrupts from using select(2) on /dev/rtc:"); + fflush(stderr); + for (i = 1; i < 6; i++) { + struct timeval tv = {5, 0}; /* 5 second timeout on select */ + fd_set readfds; + + FD_ZERO(&readfds); + FD_SET(fd, &readfds); + /* The select will wait until an RTC interrupt happens. */ + retval = select(fd + 1, &readfds, NULL, NULL, &tv); + if (retval == -1) { + perror("select"); + exit(errno); + } + /* This read won't block unlike the select-less case above. */ + retval = read(fd, &data, sizeof(unsigned long)); + if (retval == -1) { + perror("read"); + exit(errno); + } + fprintf(stderr, " %d",i); + fflush(stderr); + irqcount++; + } + + /* Turn off update interrupts */ + retval = ioctl(fd, digi ? RTC_MCA_UIE_OFF : RTC_UIE_OFF, 0); + if (retval == -1) { + perror("UIE_OFF ioctl"); + return 0; + } + fprintf(stderr, "\n"); + fflush(stderr); + + return 1; +} From c95a709f870164dcf9c6f8f9032197563d994793 Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Tue, 28 May 2019 13:49:11 +0200 Subject: [PATCH 047/133] firmware-imx: update to v8.1.1 This recipe was updated in NXP's 4.14.98-2.0.1 patch release. https://jira.digi.com/browse/DEL-6618 Signed-off-by: Gabriel Valcazar --- .../{firmware-imx_8.1.bb => firmware-imx_8.1.1.bb} | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) rename meta-digi-arm/recipes-bsp/firmware-imx/{firmware-imx_8.1.bb => firmware-imx_8.1.1.bb} (94%) diff --git a/meta-digi-arm/recipes-bsp/firmware-imx/firmware-imx_8.1.bb b/meta-digi-arm/recipes-bsp/firmware-imx/firmware-imx_8.1.1.bb similarity index 94% rename from meta-digi-arm/recipes-bsp/firmware-imx/firmware-imx_8.1.bb rename to meta-digi-arm/recipes-bsp/firmware-imx/firmware-imx_8.1.1.bb index c9ac9192b..4096a318e 100644 --- a/meta-digi-arm/recipes-bsp/firmware-imx/firmware-imx_8.1.bb +++ b/meta-digi-arm/recipes-bsp/firmware-imx/firmware-imx_8.1.1.bb @@ -6,14 +6,14 @@ SUMMARY = "Freescale IMX firmware" DESCRIPTION = "Freescale IMX firmware such as for the VPU" SECTION = "base" LICENSE = "Proprietary" -LIC_FILES_CHKSUM = "file://COPYING;md5=80c0478f4339af024519b3723023fe28" +LIC_FILES_CHKSUM = "file://COPYING;md5=fb0303e4ee8b0e71c094171e2272bd44" PE = "1" SRC_URI = "${FSL_MIRROR}/firmware-imx-${PV}.bin;fsl-eula=true " -SRC_URI[md5sum] = "ff7e208761379890261b62f477b441ed" -SRC_URI[sha256sum] = "d6a1d8dc3ce8f2e928bc6b58c7d583126abfd14d8ab61a2d8ebd760a898b5195" +SRC_URI[md5sum] = "b494c9a2ba9f8906de73ac33068789a2" +SRC_URI[sha256sum] = "c115d5d0d115fc14754671bd2428f672f9f99677988588accef2fbca2c3f749c" inherit fsl-eula-unpack allarch From 88eba082efeb949b251d03dffb206726e5d3ca72 Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Tue, 28 May 2019 13:58:03 +0200 Subject: [PATCH 048/133] digi-sc-firmware: update to v1.2.2 Change the recipe name and update its checksums. https://jira.digi.com/browse/DEL-6618 Signed-off-by: Gabriel Valcazar --- .../{digi-sc-firmware_1.2.bb => digi-sc-firmware_1.2.2.bb} | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) rename meta-digi-arm/recipes-bsp/digi-sc-firmware/{digi-sc-firmware_1.2.bb => digi-sc-firmware_1.2.2.bb} (86%) diff --git a/meta-digi-arm/recipes-bsp/digi-sc-firmware/digi-sc-firmware_1.2.bb b/meta-digi-arm/recipes-bsp/digi-sc-firmware/digi-sc-firmware_1.2.2.bb similarity index 86% rename from meta-digi-arm/recipes-bsp/digi-sc-firmware/digi-sc-firmware_1.2.bb rename to meta-digi-arm/recipes-bsp/digi-sc-firmware/digi-sc-firmware_1.2.2.bb index 9aba6f5ea..d0b882bcd 100644 --- a/meta-digi-arm/recipes-bsp/digi-sc-firmware/digi-sc-firmware_1.2.bb +++ b/meta-digi-arm/recipes-bsp/digi-sc-firmware/digi-sc-firmware_1.2.2.bb @@ -4,15 +4,15 @@ DESCRIPTION = "i.MX System Controller Firmware, customized for Digi platforms" LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://COPYING;md5=80c0478f4339af024519b3723023fe28" +LIC_FILES_CHKSUM = "file://COPYING;md5=fb0303e4ee8b0e71c094171e2272bd44" SECTION = "BSP" inherit pkgconfig deploy SRC_URI = "${DIGI_PKG_SRC}/${PN}-${PV}.tar.gz" -SRC_URI[md5sum] = "5e6b51d92e3c6e663b65ed71f7b592c1" -SRC_URI[sha256sum] = "4752a790b4abd41694839a3704d34c4db0d39a3d65fc5f290996ac4a7a227d8d" +SRC_URI[md5sum] = "8882a46ab7c6ae6deea748c21dc6e368" +SRC_URI[sha256sum] = "573dccec7bdf26e0ad40d7bf9b2cc49c461d2a62b6b128c373d28570df975ae9" S = "${WORKDIR}/${PN}-${PV}" From 80b8fc8be4070f04939dee0e25b9929214e27fdb Mon Sep 17 00:00:00 2001 From: Hector Palacios Date: Tue, 4 Jun 2019 17:56:44 +0200 Subject: [PATCH 049/133] kernel-module-qualcomm: don't run if 'wireless' node missing on DT We want to run the script if the 'wireless' node exits on the device tree. This is to facilitate disabling of the wireless by removing that node. Signed-off-by: Hector Palacios https://jira.digi.com/browse/DEL-6616 --- .../kernel-module-qualcomm/kernel-module-qualcomm/qualcomm.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/qualcomm.sh b/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/qualcomm.sh index 21a0aaac0..51d163a34 100644 --- a/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/qualcomm.sh +++ b/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/qualcomm.sh @@ -21,6 +21,9 @@ log() { printf "<$1>qca6564: $2\n" >/dev/kmsg } +# Do nothing if the wireless node does not exist on the device tree +[ -d "/proc/device-tree/wireless" ] || exit 0 + # Do nothing if the module is already loaded grep -qws 'wlan' /proc/modules && exit 0 From d60d5cc980a1f0440dea41f6dbfceeb83eb0ad4c Mon Sep 17 00:00:00 2001 From: Hector Palacios Date: Tue, 4 Jun 2019 17:57:24 +0200 Subject: [PATCH 050/133] kernel-module-qualcomm: generalize for both qca6564 and qca6574 models Signed-off-by: Hector Palacios --- .../kernel-module-qualcomm/kernel-module-qualcomm/qualcomm.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/qualcomm.sh b/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/qualcomm.sh index 51d163a34..69ba0d912 100644 --- a/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/qualcomm.sh +++ b/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/qualcomm.sh @@ -18,7 +18,7 @@ # At this point of the boot (udev script), the system log (syslog) is not # available yet, so use the kernel log buffer from userspace. log() { - printf "<$1>qca6564: $2\n" >/dev/kmsg + printf "<$1>qca65x4: $2\n" >/dev/kmsg } # Do nothing if the wireless node does not exist on the device tree @@ -109,4 +109,4 @@ LOGLEVEL="$(sed -ne 's,^kernel.printk[^=]*=[[:blank:]]*\(.*\)$,\1,g;T;p' /etc/sy modprobe wlan # Verify the interface is present -[ -d "/sys/class/net/wlan0" ] || log "3" "[ERROR] Loading qca6564 module" +[ -d "/sys/class/net/wlan0" ] || log "3" "[ERROR] Loading wlan module" From 0baf09f397bdf93a4581cf8d77f033c8458559eb Mon Sep 17 00:00:00 2001 From: Mike Engel Date: Wed, 5 Jun 2019 12:33:49 +0200 Subject: [PATCH 051/133] libsocketcan: Add CAN FD data bitrate set and get support Signed-off-by: Mike Engel https://jira.digi.com/browse/DEL-6588 --- ...tcan-Get-and-set-CAN-FD-data-bitrate.patch | 331 ++++++++++++++++++ .../socketcan/libsocketcan_%.bbappend | 10 + 2 files changed, 341 insertions(+) create mode 100644 meta-digi-dey/recipes-extended/socketcan/libsocketcan/0001-libsocketcan-Get-and-set-CAN-FD-data-bitrate.patch create mode 100644 meta-digi-dey/recipes-extended/socketcan/libsocketcan_%.bbappend diff --git a/meta-digi-dey/recipes-extended/socketcan/libsocketcan/0001-libsocketcan-Get-and-set-CAN-FD-data-bitrate.patch b/meta-digi-dey/recipes-extended/socketcan/libsocketcan/0001-libsocketcan-Get-and-set-CAN-FD-data-bitrate.patch new file mode 100644 index 000000000..def59e0db --- /dev/null +++ b/meta-digi-dey/recipes-extended/socketcan/libsocketcan/0001-libsocketcan-Get-and-set-CAN-FD-data-bitrate.patch @@ -0,0 +1,331 @@ +From: Mike Engel +Date: Wed, 5 Jun 2019 12:26:37 +0200 +Subject: [PATCH] libsocketcan: Get and set CAN FD data bitrate + +The current libsocketcan library doesn't include support to configure +the data bitrate. This patch has been applied from the following e-mail +thread + +https://www.spinics.net/lists/linux-can/msg00388.html + +Signed-off-by: Mike Engel +--- + include/libsocketcan.h | 5 ++ + src/libsocketcan.c | 235 +++++++++++++++++++++++++++++++++++++++++++++++-- + 2 files changed, 235 insertions(+), 5 deletions(-) + +diff --git a/include/libsocketcan.h b/include/libsocketcan.h +index 1603a7b..f503ebc 100644 +--- a/include/libsocketcan.h ++++ b/include/libsocketcan.h +@@ -43,6 +43,9 @@ int can_set_bittiming(const char *name, struct can_bittiming *bt); + int can_set_ctrlmode(const char *name, struct can_ctrlmode *cm); + int can_set_bitrate(const char *name, __u32 bitrate); + int can_set_bitrate_samplepoint(const char *name, __u32 bitrate, __u32 sample_point); ++int can_set_data_bittiming(const char *name, struct can_bittiming *databt); ++int can_set_data_bitrate(const char *name, __u32 bitrate); ++int can_set_data_bitrate_samplepoint(const char *name, __u32 bitrate, __u32 sample_point); + + int can_get_restart_ms(const char *name, __u32 *restart_ms); + int can_get_bittiming(const char *name, struct can_bittiming *bt); +@@ -51,6 +54,8 @@ int can_get_state(const char *name, int *state); + int can_get_clock(const char *name, struct can_clock *clock); + int can_get_bittiming_const(const char *name, struct can_bittiming_const *btc); + int can_get_berr_counter(const char *name, struct can_berr_counter *bc); ++int can_get_data_bittiming(const char *name, struct can_bittiming *bt); ++int can_get_data_bittiming_const(const char *name, struct can_bittiming_const *btc); + int can_get_device_stats(const char *name, struct can_device_stats *cds); + int can_get_link_stats(const char *name, struct rtnl_link_stats64 *rls); + +diff --git a/src/libsocketcan.c b/src/libsocketcan.c +index c802849..648b9cf 100644 +--- a/src/libsocketcan.c ++++ b/src/libsocketcan.c +@@ -66,6 +66,8 @@ + #define GET_BERR_COUNTER 7 + #define GET_XSTATS 8 + #define GET_LINK_STATS 9 ++#define GET_DATA_BITTIMING 10 ++#define GET_DATA_BITTIMING_CONST 11 + + struct get_req { + struct nlmsghdr n; +@@ -84,6 +86,7 @@ struct req_info { + __u32 restart_ms; + struct can_ctrlmode *ctrlmode; + struct can_bittiming *bittiming; ++ struct can_bittiming *databittiming; + }; + + /** +@@ -528,6 +531,26 @@ static int do_get_nl_link(int fd, __u8 acquire, const char *name, void *res) + fprintf(stderr, "no berr_counter data found\n"); + + break; ++ case GET_DATA_BITTIMING: ++ if (can_attr[IFLA_CAN_DATA_BITTIMING]) { ++ memcpy(res, ++ RTA_DATA(can_attr[IFLA_CAN_DATA_BITTIMING]), ++ sizeof(struct can_bittiming)); ++ ret = 0; ++ } else ++ fprintf(stderr, "no data_bittiming data found\n"); ++ ++ break; ++ case GET_DATA_BITTIMING_CONST: ++ if (can_attr[IFLA_CAN_DATA_BITTIMING_CONST]) { ++ memcpy(res, ++ RTA_DATA(can_attr[IFLA_CAN_DATA_BITTIMING_CONST]), ++ sizeof(struct can_bittiming_const)); ++ ret = 0; ++ } else ++ fprintf(stderr, "no data_bittiming_const data found\n"); ++ ++ break; + + default: + fprintf(stderr, "unknown acquire mode\n"); +@@ -648,6 +671,12 @@ static int do_set_nl_link(int fd, __u8 if_state, const char *name, + sizeof(struct can_bittiming)); + } + ++ if (req_info->databittiming != NULL) { ++ addattr_l(&req.n, 1024, IFLA_CAN_DATA_BITTIMING, ++ req_info->databittiming, ++ sizeof(struct can_bittiming)); ++ } ++ + if (req_info->ctrlmode != NULL) { + addattr_l(&req.n, 1024, IFLA_CAN_CTRLMODE, + req_info->ctrlmode, +@@ -870,6 +899,73 @@ int can_set_ctrlmode(const char *name, struct can_ctrlmode *cm) + } + + /** ++ * @internal ++ * set_bittiming - common helper function to setup the bittiming for ++ * can_set_bittiming() and can_set_data_bittiming(). ++ * ++ * @param name name of the can device. This is the netdev name, as ifconfig -a shows ++ * in your system. usually it contains prefix "can" and the numer of the can ++ * line. e.g. "can0" ++ * ++ * @param bitTiming pointer to a can_bittiming struct, configures the arbitration ++ * bit timing ++ * ++ * @param dataBitTiming pointer to a can_bittiming struct, configures the data ++ * bit timing ++ * ++ * @return 0 if success ++ * @return -1 if failed ++ */ ++static int set_bittiming(const char *name, struct can_bittiming *bitTiming, ++ struct can_bittiming *dataBitTiming) ++{ ++ struct can_bittiming keepBitTiming = {0}; ++ ++ struct can_ctrlmode ctrlmode_fd = { ++ .mask = CAN_CTRLMODE_FD, ++ .flags = CAN_CTRLMODE_FD ++ }; ++ ++ struct req_info req_info = { ++ .bittiming = bitTiming ++ }; ++ ++ int result = 0; ++ ++ if (bitTiming && dataBitTiming) { ++ req_info.databittiming = dataBitTiming; ++ req_info.ctrlmode = &ctrlmode_fd; ++ } else if (dataBitTiming) { ++ /* set data bitrate and keep arbitration bitrate */ ++ result = can_get_bittiming(name, &keepBitTiming); ++ keepBitTiming.bitrate = 0; ++ req_info.bittiming = &keepBitTiming; ++ req_info.databittiming = dataBitTiming; ++ req_info.ctrlmode = &ctrlmode_fd; ++ } else if (bitTiming) { ++ /* set arbitration bitrate and keep data bitrate if set */ ++ struct can_ctrlmode cm = {0}; ++ ++ result = can_get_ctrlmode(name, &cm); ++ if (result == 0 && cm.flags & CAN_CTRLMODE_FD) { ++ result = can_get_data_bittiming(name, &keepBitTiming); ++ if (result == 0 && keepBitTiming.bitrate) { ++ keepBitTiming.bitrate = 0; ++ req_info.databittiming = &keepBitTiming; ++ req_info.ctrlmode = &ctrlmode_fd; ++ } ++ } ++ } else { ++ result = -1; ++ } ++ ++ if (result == -1) ++ return result; ++ ++ return set_link(name, 0, &req_info); ++} ++ ++/** + * @ingroup extern + * can_set_bittiming - setup the bittiming. + * +@@ -909,11 +1005,7 @@ int can_set_ctrlmode(const char *name, struct can_ctrlmode *cm) + + int can_set_bittiming(const char *name, struct can_bittiming *bt) + { +- struct req_info req_info = { +- .bittiming = bt, +- }; +- +- return set_link(name, 0, &req_info); ++ return set_bittiming(name, bt, NULL); + } + + /** +@@ -976,6 +1068,81 @@ int can_set_bitrate_samplepoint(const char *name, __u32 bitrate, + + /** + * @ingroup extern ++ * can_set_data_bittiming - setup the data bittiming. ++ * ++ * @param name name of the can device. This is the netdev name, as ifconfig -a shows ++ * in your system. usually it contains prefix "can" and the numer of the can ++ * line. e.g. "can0" ++ * @param bt pointer to a can_bittiming struct ++ * ++ * This sets the data bittiming of the can device. This is for advantage usage. ++ * ++ * Please see can_set_bittiming for more information about bit timing. ++ * ++ * @return 0 if success ++ * @return -1 if failed ++ */ ++int can_set_data_bittiming(const char *name, struct can_bittiming *databt) ++{ ++ return set_bittiming(name, NULL, databt); ++} ++ ++/** ++ * @ingroup extern ++ * can_set_data_bitrate - setup the data bitrate. ++ * ++ * @param name name of the can device. This is the netdev name, as ifconfig -a shows ++ * in your system. usually it contains prefix "can" and the numer of the can ++ * line. e.g. "can0" ++ * @param bitrate data bitrate of the can bus ++ * ++ * This is the recommended way to setup the bus bit timing. You only have to ++ * give a bitrate value here. The exact bit timing will be calculated ++ * automatically. To use this function, make sure that CONFIG_CAN_CALC_BITTIMING ++ * is set to y in your kernel configuration. ++ * ++ * @return 0 if success ++ * @return -1 if failed ++ */ ++int can_set_data_bitrate(const char *name, __u32 bitrate) ++{ ++ struct can_bittiming bt = { ++ .bitrate = bitrate, ++ }; ++ ++ return can_set_data_bittiming(name, &bt); ++} ++ ++/** ++ * @ingroup extern ++ * can_set_data_bitrate_samplepoint - setup the data bitrate. ++ * ++ * @param name name of the can device. This is the netdev name, as ifconfig -a shows ++ * in your system. usually it contains prefix "can" and the numer of the can ++ * line. e.g. "can0" ++ * @param bitrate data bitrate of the can bus ++ * @param sample_point sample point value ++ * ++ * This one is similar to can_set_date_bitrate, only you can additionally set up the ++ * time point for sampling (sample point) customly instead of using the ++ * CIA recommended value. sample_point can be a value between 0 and 999. ++ * ++ * @return 0 if success ++ * @return -1 if failed ++ */ ++int can_set_data_bitrate_samplepoint(const char *name, __u32 bitrate, ++ __u32 sample_point) ++{ ++ struct can_bittiming bt = { ++ bt.bitrate = bitrate, ++ bt.sample_point = sample_point, ++ }; ++ ++ return can_set_data_bittiming(name, &bt); ++} ++ ++/** ++ * @ingroup extern + * can_get_state - get the current state of the device + * + * @param name name of the can device. This is the netdev name, as ifconfig -a shows +@@ -1205,3 +1372,61 @@ int can_get_link_stats(const char *name, struct rtnl_link_stats64 *rls) + { + return get_link(name, GET_LINK_STATS, rls); + } ++ ++/** ++ * @ingroup extern ++ * can_get_data_bittiming - get the current data bit timing configuration. ++ * ++ * @param name name of the can device. This is the netdev name, as ifconfig -a shows ++ * in your system. usually it contains prefix "can" and the numer of the can ++ * line. e.g. "can0" ++ * @param bt pointer to the bittiming struct. ++ * ++ * This one stores the current data bittiming configuration. ++ * ++ * Please see can_set_bittiming for more information about bit timing. ++ * ++ * @return 0 if success ++ * @return -1 if failed ++ */ ++int can_get_data_bittiming(const char *name, struct can_bittiming *bt) ++{ ++ return get_link(name, GET_DATA_BITTIMING, bt); ++} ++ ++/** ++ * @ingroup extern ++ * can_get_data_bittiming_const - get the current data bit timing constant. ++ * ++ * @param name name of the can device. This is the netdev name, as ifconfig -a shows ++ * in your system. usually it contains prefix "can" and the numer of the can ++ * line. e.g. "can0" ++ * @param btc pointer to the bittiming constant struct. ++ * ++ * This one stores the hardware dependent data bittiming constant. The ++ * can_bittiming_const struct consists: ++ * ++ * @code ++ * struct can_bittiming_const { ++ * char name[16]; ++ * __u32 tseg1_min; ++ * __u32 tseg1_max; ++ * __u32 tseg2_min; ++ * __u32 tseg2_max; ++ * __u32 sjw_max; ++ * __u32 brp_min; ++ * __u32 brp_max; ++ * __u32 brp_inc; ++ * }; ++ * @endcode ++ * ++ * The information in this struct is used to calculate the bus bit timing ++ * automatically. ++ * ++ * @return 0 if success ++ * @return -1 if failed ++ */ ++int can_get_data_bittiming_const(const char *name, struct can_bittiming_const *btc) ++{ ++ return get_link(name, GET_DATA_BITTIMING_CONST, btc); ++} diff --git a/meta-digi-dey/recipes-extended/socketcan/libsocketcan_%.bbappend b/meta-digi-dey/recipes-extended/socketcan/libsocketcan_%.bbappend new file mode 100644 index 000000000..03b53c77f --- /dev/null +++ b/meta-digi-dey/recipes-extended/socketcan/libsocketcan_%.bbappend @@ -0,0 +1,10 @@ +# Copyright 2019, Digi International Inc. + +FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:" + +SRCREV = "df01f01354d7c44a07370ae27a3d20b52255830b" + +SRC_URI += " \ + file://0001-libsocketcan-Get-and-set-CAN-FD-data-bitrate.patch \ +" + From d2688a89ecb1f5911e6c2700a997cd208a2234ce Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Fri, 31 May 2019 17:01:36 +0200 Subject: [PATCH 052/133] linux: use proper version numbers for platforms still using v4.9 Even though our ccimx6 and ccimx6qp images were using Linux v4.9 sources correctly, they were using the same recipe as our images with Linux v4.14. Technically, both recipes are identical (save for the branch name), but each Linux version should have its own recipe. Also, make sure that ccimx6/ccimx6qp images are built with our version of the linux-imx-headers recipe instead of the one in meta-freescale. Signed-off-by: Gabriel Valcazar --- meta-digi-arm/conf/machine/include/ccimx6.inc | 3 +++ meta-digi-arm/recipes-kernel/linux/linux-dey_4.14.bb | 2 +- meta-digi-arm/recipes-kernel/linux/linux-dey_4.9.bb | 5 +++++ .../{linux-imx-headers_4.14.98.bb => linux-imx-headers.inc} | 0 meta-digi-arm/recipes-kernel/linux/linux-imx-headers_4.14.bb | 5 +++++ meta-digi-arm/recipes-kernel/linux/linux-imx-headers_4.9.bb | 5 +++++ 6 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 meta-digi-arm/recipes-kernel/linux/linux-dey_4.9.bb rename meta-digi-arm/recipes-kernel/linux/{linux-imx-headers_4.14.98.bb => linux-imx-headers.inc} (100%) create mode 100644 meta-digi-arm/recipes-kernel/linux/linux-imx-headers_4.14.bb create mode 100644 meta-digi-arm/recipes-kernel/linux/linux-imx-headers_4.9.bb diff --git a/meta-digi-arm/conf/machine/include/ccimx6.inc b/meta-digi-arm/conf/machine/include/ccimx6.inc index 7290c136a..c54fb6d35 100644 --- a/meta-digi-arm/conf/machine/include/ccimx6.inc +++ b/meta-digi-arm/conf/machine/include/ccimx6.inc @@ -18,6 +18,9 @@ KERNEL_DEFCONFIG ?= "arch/arm/configs/ccimx6sbc_defconfig" # Wireless external module WIRELESS_MODULE ?= "" +# Use our recipe of linux-imx-headers instead of the meta-freescale one +PREFERRED_VERSION_linux-imx-headers ?= "4.9" + # Firmware MACHINE_FIRMWARE ?= "firmware-imx-sdma" MACHINE_FIRMWARE_append_mx6q = " firmware-imx-vpu-imx6q" diff --git a/meta-digi-arm/recipes-kernel/linux/linux-dey_4.14.bb b/meta-digi-arm/recipes-kernel/linux/linux-dey_4.14.bb index 9abff427e..bfa3cd0de 100644 --- a/meta-digi-arm/recipes-kernel/linux/linux-dey_4.14.bb +++ b/meta-digi-arm/recipes-kernel/linux/linux-dey_4.14.bb @@ -2,4 +2,4 @@ require recipes-kernel/linux/linux-dey.inc -COMPATIBLE_MACHINE = "(ccimx6|ccimx6ul|ccimx8x)" +COMPATIBLE_MACHINE = "(ccimx6ul|ccimx8x)" diff --git a/meta-digi-arm/recipes-kernel/linux/linux-dey_4.9.bb b/meta-digi-arm/recipes-kernel/linux/linux-dey_4.9.bb new file mode 100644 index 000000000..3669cb577 --- /dev/null +++ b/meta-digi-arm/recipes-kernel/linux/linux-dey_4.9.bb @@ -0,0 +1,5 @@ +# Copyright (C) 2019 Digi International + +require recipes-kernel/linux/linux-dey.inc + +COMPATIBLE_MACHINE = "(ccimx6)" diff --git a/meta-digi-arm/recipes-kernel/linux/linux-imx-headers_4.14.98.bb b/meta-digi-arm/recipes-kernel/linux/linux-imx-headers.inc similarity index 100% rename from meta-digi-arm/recipes-kernel/linux/linux-imx-headers_4.14.98.bb rename to meta-digi-arm/recipes-kernel/linux/linux-imx-headers.inc diff --git a/meta-digi-arm/recipes-kernel/linux/linux-imx-headers_4.14.bb b/meta-digi-arm/recipes-kernel/linux/linux-imx-headers_4.14.bb new file mode 100644 index 000000000..5e834e8f6 --- /dev/null +++ b/meta-digi-arm/recipes-kernel/linux/linux-imx-headers_4.14.bb @@ -0,0 +1,5 @@ +# Copyright (C) 2019 Digi International + +require recipes-kernel/linux/linux-imx-headers.inc + +COMPATIBLE_MACHINE = "(ccimx6ul|ccimx8x)" diff --git a/meta-digi-arm/recipes-kernel/linux/linux-imx-headers_4.9.bb b/meta-digi-arm/recipes-kernel/linux/linux-imx-headers_4.9.bb new file mode 100644 index 000000000..b2479c47f --- /dev/null +++ b/meta-digi-arm/recipes-kernel/linux/linux-imx-headers_4.9.bb @@ -0,0 +1,5 @@ +# Copyright (C) 2019 Digi International + +require recipes-kernel/linux/linux-imx-headers.inc + +COMPATIBLE_MACHINE = "(ccimx6)" From 49c1fb6dca683a203e3a34bff488cfd241f5041a Mon Sep 17 00:00:00 2001 From: David Escalona Date: Thu, 6 Jun 2019 14:06:07 +0200 Subject: [PATCH 053/133] meta-digi-dey: xorg: fix X11 server issues for ccimx8x Signed-off-by: David Escalona --- .../xorg-driver/xf86-video-imx-vivante.inc | 2 +- .../xorg-xserver/xserver-xf86-config/imxdrm/xorg.conf | 1 + meta-digi-dey/recipes-qt/qt5/qtbase/ccimx8x/qt5.sh | 8 ++++++-- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/meta-digi-dey/recipes-graphics/xorg-driver/xf86-video-imx-vivante.inc b/meta-digi-dey/recipes-graphics/xorg-driver/xf86-video-imx-vivante.inc index 5c32f1f98..1db4d40ce 100644 --- a/meta-digi-dey/recipes-graphics/xorg-driver/xf86-video-imx-vivante.inc +++ b/meta-digi-dey/recipes-graphics/xorg-driver/xf86-video-imx-vivante.inc @@ -65,4 +65,4 @@ FILES_${PN}-dbg = "${libdir}/*/*/*/.debug ${libdir}/.debug/libfsl_x11_ext${SOLIB FILES_xserver-xorg-extension-viv-autohdmi = " ${libdir}/libfsl_x11_ext${SOLIBS} ${exec_prefix}/bin/autohdmi ${sysconfdir}/init.d/rc.autohdmi" PACKAGE_ARCH = "${MACHINE_SOCARCH}" -COMPATIBLE_MACHINE = "(mx6|mx7ulp)" +COMPATIBLE_MACHINE = "(mx6|mx8|mx7ulp)" diff --git a/meta-digi-dey/recipes-graphics/xorg-xserver/xserver-xf86-config/imxdrm/xorg.conf b/meta-digi-dey/recipes-graphics/xorg-xserver/xserver-xf86-config/imxdrm/xorg.conf index ec12ed9bc..24ebbadc8 100644 --- a/meta-digi-dey/recipes-graphics/xorg-xserver/xserver-xf86-config/imxdrm/xorg.conf +++ b/meta-digi-dey/recipes-graphics/xorg-xserver/xserver-xf86-config/imxdrm/xorg.conf @@ -2,6 +2,7 @@ Section "Device" Identifier "i.MX Accelerated DRM Device" Driver "vivante" Option "kmsdev" "/dev/dri/card0" + Option "fbdev" "/dev/fb0" EndSection Section "ServerFlags" diff --git a/meta-digi-dey/recipes-qt/qt5/qtbase/ccimx8x/qt5.sh b/meta-digi-dey/recipes-qt/qt5/qtbase/ccimx8x/qt5.sh index a1aa3af34..64a323fb1 100644 --- a/meta-digi-dey/recipes-qt/qt5/qtbase/ccimx8x/qt5.sh +++ b/meta-digi-dey/recipes-qt/qt5/qtbase/ccimx8x/qt5.sh @@ -1,5 +1,9 @@ #!/bin/sh export QT_QPA_PLATFORM="wayland" -# Use EGLFS platform plugin for images without XWayland -[ -f "/etc/profile.d/weston.sh" ] || export QT_QPA_PLATFORM="eglfs" +[ -f "/etc/profile.d/weston.sh" ] && exit 0 + +export QT_QPA_PLATFORM="xcb" + +# Use EGLFS platform plugin for images without XWayland and X11 +[ -f "/etc/xserver-nodm/Xserver" ] || export QT_QPA_PLATFORM="eglfs" From 0228ad858796bfaf8f0929035310cc7639da3835 Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Fri, 7 Jun 2019 17:22:21 +0200 Subject: [PATCH 054/133] systemd: don't include systemd-networkd To avoid possible conflicts with NetworkManager, remove systemd-networkd entirely. https://jira.digi.com/browse/DEL-6610 Signed-off-by: Gabriel Valcazar --- meta-digi-dey/recipes-core/systemd/systemd_%.bbappend | 3 +++ 1 file changed, 3 insertions(+) diff --git a/meta-digi-dey/recipes-core/systemd/systemd_%.bbappend b/meta-digi-dey/recipes-core/systemd/systemd_%.bbappend index 68c00a54e..8c2d079c4 100644 --- a/meta-digi-dey/recipes-core/systemd/systemd_%.bbappend +++ b/meta-digi-dey/recipes-core/systemd/systemd_%.bbappend @@ -9,6 +9,9 @@ SRC_URI += " \ EXTRA_OEMESON_remove = "-Dfirmware-path=${nonarch_base_libdir}/firmware " EXTRA_OEMESON += "-Dfirmware-path=${nonarch_base_libdir}/firmware/ " +# Remove systemd-networkd from our images, since we already use NetworkManager +PACKAGECONFIG_remove = "networkd" + do_install_append () { # Disable the assignment of the fixed network interface name install -d ${D}${sysconfdir}/systemd/network From b5a9af91dbf928d981029ea6a7a0574feb18c5dc Mon Sep 17 00:00:00 2001 From: David Escalona Date: Fri, 14 Jun 2019 10:19:52 +0200 Subject: [PATCH 055/133] meta-digi-dey: qt5: ccimx8x: use return instead of exit in qt5 script This fixes the problem of shell console returning to the login prompt after a successful login. Signed-off-by: David Escalona --- meta-digi-dey/recipes-qt/qt5/qtbase/ccimx8x/qt5.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meta-digi-dey/recipes-qt/qt5/qtbase/ccimx8x/qt5.sh b/meta-digi-dey/recipes-qt/qt5/qtbase/ccimx8x/qt5.sh index 64a323fb1..16c8e26d7 100644 --- a/meta-digi-dey/recipes-qt/qt5/qtbase/ccimx8x/qt5.sh +++ b/meta-digi-dey/recipes-qt/qt5/qtbase/ccimx8x/qt5.sh @@ -1,7 +1,7 @@ #!/bin/sh export QT_QPA_PLATFORM="wayland" -[ -f "/etc/profile.d/weston.sh" ] && exit 0 +[ -f "/etc/profile.d/weston.sh" ] && return export QT_QPA_PLATFORM="xcb" From 6491b5b00a9af6efb2ba607b06e8581f33dd631c Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Wed, 19 Jun 2019 10:55:23 +0200 Subject: [PATCH 056/133] adwaita-icon-theme: remove scalable icons from the filesystem These icons have never been included in the filesystem until a recent commit in poky (522b0d8615cdc6645f6dc37a03ea7584f19c7bfc). In total, they take up over 1 MiB and have been causing filesystem tests to fail on the ccimx6ul due to low space. Add a .bbappend to undo the commit's changes in our layer. Signed-off-by: Gabriel Valcazar --- .../recipes-gnome/gnome/adwaita-icon-theme_%.bbappend | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 meta-digi-dey/recipes-gnome/gnome/adwaita-icon-theme_%.bbappend diff --git a/meta-digi-dey/recipes-gnome/gnome/adwaita-icon-theme_%.bbappend b/meta-digi-dey/recipes-gnome/gnome/adwaita-icon-theme_%.bbappend new file mode 100644 index 000000000..519e4cedc --- /dev/null +++ b/meta-digi-dey/recipes-gnome/gnome/adwaita-icon-theme_%.bbappend @@ -0,0 +1,9 @@ +# Copyright (C) 2019 Digi International. + +do_install_append() { + # We don't use the scalable icons anywhere and they take up over + # 1 MiB in the filesystem, so remove them. + rm -f ${D}${prefix}/share/icons/Adwaita/scalable/*/*-symbolic*.svg +} + +FILES_${PN}-symbolic_remove = "${prefix}/share/icons/Adwaita/scalable/*/*-symbolic*.svg" From ccc6f9c96092ee2761a8ed0c012050a2d28d8a68 Mon Sep 17 00:00:00 2001 From: Arturo Buzarra Date: Wed, 19 Jun 2019 12:13:51 +0200 Subject: [PATCH 057/133] bluez5: ccimx8: use kernel module for bluetooth power management Modify bluetooth init script to use kernel module to power on/off the bluetooth chip instead of managing it directly from sysfs. https://jira.digi.com/browse/DEL-6615 Signed-off-by: Arturo Buzarra --- .../bluez/bluez5-5.50/ccimx8x/bluetooth-init | 34 +++---------------- 1 file changed, 4 insertions(+), 30 deletions(-) diff --git a/meta-digi-dey/recipes-connectivity/bluez/bluez5-5.50/ccimx8x/bluetooth-init b/meta-digi-dey/recipes-connectivity/bluez/bluez5-5.50/ccimx8x/bluetooth-init index 0a6a70cc4..fb7f0c7b5 100644 --- a/meta-digi-dey/recipes-connectivity/bluez/bluez5-5.50/ccimx8x/bluetooth-init +++ b/meta-digi-dey/recipes-connectivity/bluez/bluez5-5.50/ccimx8x/bluetooth-init @@ -1,7 +1,7 @@ #!/bin/sh #=============================================================================== # -# Copyright (C) 2018 by Digi International Inc. +# Copyright (C) 2018,2019 by Digi International Inc. # All rights reserved. # # This program is free software; you can redistribute it and/or modify it @@ -13,32 +13,6 @@ # #=============================================================================== -# Bluetooth power GPIO -BT_EN_QCA_GPIO_NR="394" - -# set_gpio_value -set_gpio_value() { - local SG_GPIONR="${1}" - local SG_GPIOVAL="${2}" - local SG_GPIOPATH="/sys/class/gpio/gpio${SG_GPIONR}" - - [ -d "${SG_GPIOPATH}" ] || printf "%s" "${SG_GPIONR}" > /sys/class/gpio/export - printf out > "${SG_GPIOPATH}/direction" && sleep .2 - printf "${SG_GPIOVAL}" > "${SG_GPIOPATH}/value" && sleep .2 - [ -d "${SG_GPIOPATH}" ] && printf "%s" "${SG_GPIONR}" > /sys/class/gpio/unexport -} - -# powercycle_gpio -powercycle_gpio() { - set_gpio_value "${1}" 0 - set_gpio_value "${1}" 1 -} - -error() { - echo ${1} - exit 1 -} - bluetooth_init() { # Get MAC address from the device tree. Use a default value if it has not been set. BT_MACADDR="$(hexdump -ve '1/1 "%02X" ":"' /proc/device-tree/bluetooth/mac-address 2>/dev/null | sed 's/:$//g')" @@ -52,10 +26,11 @@ bluetooth_init() { for RETRY in $(seq 1 5) do killproc hciattach - powercycle_gpio "${BT_EN_QCA_GPIO_NR}" + modprobe btdigi if hciattach ttyBt qca ${BT_RATE:-3000000} -t30 ${BT_FLOW:-flow} unused ${BT_MACADDR} >${HCIATTACH_LOG} 2>&1; then return fi + rmmod btdigi sleep 1 done BT_ERROR="FAIL (hciattach)" @@ -76,8 +51,7 @@ case "$1" in if [ -d "/sys/class/bluetooth/hci0" ]; then echo -n "Stopping bluetooth hardware: " killproc hciattach - # Power down bluetooth - set_gpio_value "${BT_EN_QCA_GPIO_NR}" 0 + rmmod btdigi echo "done." fi ;; From 996ef8b30b1bdf4f3a8f96ba7b15b7483096cec6 Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Wed, 19 Jun 2019 13:09:22 +0200 Subject: [PATCH 058/133] mca_tool: update checksums for build 1.17 This new version adds RTC time compensation support. https://jira.digi.com/browse/DEL-6488 Signed-off-by: Gabriel Valcazar --- .../mca/{mca-tool_1.16.bb => mca-tool_1.17.bb} | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) rename meta-digi-arm/recipes-digi/mca/{mca-tool_1.16.bb => mca-tool_1.17.bb} (61%) diff --git a/meta-digi-arm/recipes-digi/mca/mca-tool_1.16.bb b/meta-digi-arm/recipes-digi/mca/mca-tool_1.17.bb similarity index 61% rename from meta-digi-arm/recipes-digi/mca/mca-tool_1.16.bb rename to meta-digi-arm/recipes-digi/mca/mca-tool_1.17.bb index 114212fe7..2e00d985e 100644 --- a/meta-digi-arm/recipes-digi/mca/mca-tool_1.16.bb +++ b/meta-digi-arm/recipes-digi/mca/mca-tool_1.17.bb @@ -8,13 +8,13 @@ PKGNAME = "mca_tool" # ARM tarball SRC_URI_arm = "${DIGI_PKG_SRC}/${PKGNAME}-${PV}-${TUNE_ARCH}.tar.gz;name=arm" -SRC_URI[arm.md5sum] = "d6043cd754a8ea0449a4b1afc80b9775" -SRC_URI[arm.sha256sum] = "4219efae7d3b327bac7940b992a446cdbf4cd3ed25d3234e1ef63ed32b6db595" +SRC_URI[arm.md5sum] = "c1eefe3113c4915b92fadebc7f769d21" +SRC_URI[arm.sha256sum] = "9a9d962e549fdb0f22fc1037f74ca21c7356dded7033c28a1b4b325a44b579aa" # AARCH64 tarball SRC_URI_aarch64 = "${DIGI_PKG_SRC}/${PKGNAME}-${PV}-${TUNE_ARCH}.tar.gz;name=aarch64" -SRC_URI[aarch64.md5sum] = "937f910b33aa9f6fe0d24317836fd620" -SRC_URI[aarch64.sha256sum] = "225c64e07c7158e0849cdd730d3c073cc87089a60b42d4e86a82c882761adb6c" +SRC_URI[aarch64.md5sum] = "92a3d3d3a63c749efc4761cdb5efe77e" +SRC_URI[aarch64.sha256sum] = "6b3cd2e9aa879ebd5aba628731855112db69ab01cedc5e203c10917e51f93a08" S = "${WORKDIR}/${PKGNAME}-${PV}" From 086db368117d6a7815420be656c37969e95d60fa Mon Sep 17 00:00:00 2001 From: Arturo Buzarra Date: Thu, 20 Jun 2019 11:58:58 +0200 Subject: [PATCH 059/133] weston: add Digi custom background This commit modifies the weston ini file to support a custom background and includes a new one with Digi branding. Signed-off-by: Arturo Buzarra --- .../wayland/weston/digi_background.png | Bin 0 -> 30276 bytes .../wayland/weston_%.bbappend | 23 ++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 meta-digi-dey/recipes-graphics/wayland/weston/digi_background.png create mode 100644 meta-digi-dey/recipes-graphics/wayland/weston_%.bbappend diff --git a/meta-digi-dey/recipes-graphics/wayland/weston/digi_background.png b/meta-digi-dey/recipes-graphics/wayland/weston/digi_background.png new file mode 100644 index 0000000000000000000000000000000000000000..2963c6a1f1c547bc43aa661b6f2fcc33b3e83232 GIT binary patch literal 30276 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 literal 0 HcmV?d00001 diff --git a/meta-digi-dey/recipes-graphics/wayland/weston_%.bbappend b/meta-digi-dey/recipes-graphics/wayland/weston_%.bbappend new file mode 100644 index 000000000..12d7b865b --- /dev/null +++ b/meta-digi-dey/recipes-graphics/wayland/weston_%.bbappend @@ -0,0 +1,23 @@ +# Copyright (C) 2019 Digi International. + +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" + +SRC_URI += " \ + file://digi_background.png \ +" + +do_install_append() { + # Add custom background image + install -d ${D}${datadir}/weston + install ${WORKDIR}/digi_background.png ${D}${datadir}/weston + + # Customize weston ini file + cat <>${D}${sysconfdir}/xdg/weston/weston.ini + +[shell] +background-image=/usr/share/weston/digi_background.png +background-type=scale-crop +EOF +} + +FILES_${PN} += "${datadir}/weston/digi_background.png" From 401867f9e6bd8630a002fd27526f22236971016b Mon Sep 17 00:00:00 2001 From: Arturo Buzarra Date: Mon, 24 Jun 2019 10:43:11 +0200 Subject: [PATCH 060/133] bluez5: use node status to trigger bluetooth initialization Signed-off-by: Arturo Buzarra --- .../bluez/bluez5-5.50/ccimx6qpsbc/bluetooth-init | 8 +++++--- .../bluez/bluez5-5.50/ccimx6sbc/bluetooth-init | 8 +++++--- .../bluez/bluez5-5.50/ccimx6ul/bluetooth-init | 8 +++++--- .../bluez/bluez5-5.50/ccimx8x/bluetooth-init | 8 +++++--- 4 files changed, 20 insertions(+), 12 deletions(-) diff --git a/meta-digi-dey/recipes-connectivity/bluez/bluez5-5.50/ccimx6qpsbc/bluetooth-init b/meta-digi-dey/recipes-connectivity/bluez/bluez5-5.50/ccimx6qpsbc/bluetooth-init index f6fbc3047..d3816119d 100644 --- a/meta-digi-dey/recipes-connectivity/bluez/bluez5-5.50/ccimx6qpsbc/bluetooth-init +++ b/meta-digi-dey/recipes-connectivity/bluez/bluez5-5.50/ccimx6qpsbc/bluetooth-init @@ -67,9 +67,11 @@ bluetooth_init() { case "$1" in start) if [ -d "/proc/device-tree/bluetooth" ]; then - echo -n "Starting bluetooth hardware: " - bluetooth_init - echo "${BT_ERROR:-done.}" + if [ "$(tr -d '\0' 2>/dev/null /dev/null /dev/null /dev/null Date: Tue, 25 Jun 2019 12:29:45 +0200 Subject: [PATCH 061/133] digi-sc-firmware: update to v1.2.2.1 This includes minor changes in the SCFW's DCD. Signed-off-by: Gabriel Valcazar --- ...{digi-sc-firmware_1.2.2.bb => digi-sc-firmware_1.2.2.1.bb} | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename meta-digi-arm/recipes-bsp/digi-sc-firmware/{digi-sc-firmware_1.2.2.bb => digi-sc-firmware_1.2.2.1.bb} (90%) diff --git a/meta-digi-arm/recipes-bsp/digi-sc-firmware/digi-sc-firmware_1.2.2.bb b/meta-digi-arm/recipes-bsp/digi-sc-firmware/digi-sc-firmware_1.2.2.1.bb similarity index 90% rename from meta-digi-arm/recipes-bsp/digi-sc-firmware/digi-sc-firmware_1.2.2.bb rename to meta-digi-arm/recipes-bsp/digi-sc-firmware/digi-sc-firmware_1.2.2.1.bb index d0b882bcd..1a01edb06 100644 --- a/meta-digi-arm/recipes-bsp/digi-sc-firmware/digi-sc-firmware_1.2.2.bb +++ b/meta-digi-arm/recipes-bsp/digi-sc-firmware/digi-sc-firmware_1.2.2.1.bb @@ -11,8 +11,8 @@ inherit pkgconfig deploy SRC_URI = "${DIGI_PKG_SRC}/${PN}-${PV}.tar.gz" -SRC_URI[md5sum] = "8882a46ab7c6ae6deea748c21dc6e368" -SRC_URI[sha256sum] = "573dccec7bdf26e0ad40d7bf9b2cc49c461d2a62b6b128c373d28570df975ae9" +SRC_URI[md5sum] = "18e4d7e6175792ff30d38aacbee3889e" +SRC_URI[sha256sum] = "121014d985a781be1feee1ecc65db0f8a373925e8fba606f1a286202a1e0c266" S = "${WORKDIR}/${PN}-${PV}" From 69cb3d6dacc5ceb1610d757ca04aed2abda509f4 Mon Sep 17 00:00:00 2001 From: Francisco Gil Date: Mon, 24 Jun 2019 18:52:40 +0200 Subject: [PATCH 062/133] python-xbee: add support for the python-xbee library https://jira.digi.com/browse/DEL-6643 Signed-off-by: Francisco Gil --- .../recipes-devtools/python3-xbee/python3-xbee.inc | 12 ++++++++++++ .../python3-xbee/python3-xbee_1.1.1.1.bb | 13 +++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 meta-digi-dey/recipes-devtools/python3-xbee/python3-xbee.inc create mode 100644 meta-digi-dey/recipes-devtools/python3-xbee/python3-xbee_1.1.1.1.bb diff --git a/meta-digi-dey/recipes-devtools/python3-xbee/python3-xbee.inc b/meta-digi-dey/recipes-devtools/python3-xbee/python3-xbee.inc new file mode 100644 index 000000000..48022327f --- /dev/null +++ b/meta-digi-dey/recipes-devtools/python3-xbee/python3-xbee.inc @@ -0,0 +1,12 @@ +# Copyright (C) 2019 Digi International Inc. + +SUMMARY = "Python library to interact with Digi International's XBee radio frequency modules." +HOMEPAGE = "https://github.com/digidotcom/python-xbee" + +LICENSE = "MPL2.0" + +PYPI_PACKAGE = "digi-xbee" + +RDEPENDS_${PN} = "python3-pyserial" + +inherit pypi setuptools3 diff --git a/meta-digi-dey/recipes-devtools/python3-xbee/python3-xbee_1.1.1.1.bb b/meta-digi-dey/recipes-devtools/python3-xbee/python3-xbee_1.1.1.1.bb new file mode 100644 index 000000000..24085cb9e --- /dev/null +++ b/meta-digi-dey/recipes-devtools/python3-xbee/python3-xbee_1.1.1.1.bb @@ -0,0 +1,13 @@ +# Copyright (C) 2019 Digi International Inc. + +require python3-xbee.inc + +# This change of directory is needed because the package used in pypi was uploaded +# with a wrong number version. Following versions will not need this patch. +# The tarball name has the 1.1.1.1 version, but once you untar the folder is +# named as 1.1.1 instead of 1.1.1.1. so it fails when using pypi. +S = "${WORKDIR}/${PYPI_PACKAGE}-1.1.1" + +LIC_FILES_CHKSUM="file://PKG-INFO;md5=0c518add38e71d88298939007bb83940" + +SRC_URI[md5sum] = "a30377d8a55071c2d54d7ae1ca24a50b" From 8569d4da9ea9faa62853d782fe2cc85c3daec5b4 Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Tue, 25 Jun 2019 11:42:56 +0200 Subject: [PATCH 063/133] bluez5: move common files to a common folder for both v5.41 and v5.50 This way, we avoid having to duplicate changes. https://jira.digi.com/browse/DEL-6448 Signed-off-by: Gabriel Valcazar --- .../bluez5-5.41/ccimx6qpsbc/bluetooth-init | 93 ------------ .../bluez5-5.41/ccimx6sbc/bluetooth-init | 138 ------------------ .../bluez/bluez5-5.41/ccimx6ul/bluetooth-init | 119 --------------- ...-not-show-unsupported-refresh-option.patch | 22 --- ...ase-the-shown-connection-limit-to-20.patch | 57 -------- .../bluez/bluez5-5.50/bluetooth-init.service | 12 -- ...bluetooth.service-add-customizations.patch | 33 ----- .../bluez/bluez5-5.50/ccimx6qpsbc/main.conf | 12 -- .../bluez/bluez5-5.50/ccimx6sbc/main.conf | 12 -- .../bluez/bluez5-5.50/ccimx6ul/main.conf | 12 -- ...-not-show-unsupported-refresh-option.patch | 0 ...ase-the-shown-connection-limit-to-20.patch | 0 .../bluetooth-init.service | 0 ...bluetooth.service-add-customizations.patch | 0 .../ccimx6qpsbc/bluetooth-init | 0 .../ccimx6qpsbc/main.conf | 0 .../ccimx6sbc/bluetooth-init | 0 .../ccimx6sbc/main.conf | 0 .../ccimx6ul/bluetooth-init | 0 .../ccimx6ul/main.conf | 0 .../bluez/bluez5_5.50.bbappend | 4 +- 21 files changed, 2 insertions(+), 512 deletions(-) delete mode 100644 meta-digi-dey/recipes-connectivity/bluez/bluez5-5.41/ccimx6qpsbc/bluetooth-init delete mode 100644 meta-digi-dey/recipes-connectivity/bluez/bluez5-5.41/ccimx6sbc/bluetooth-init delete mode 100644 meta-digi-dey/recipes-connectivity/bluez/bluez5-5.41/ccimx6ul/bluetooth-init delete mode 100644 meta-digi-dey/recipes-connectivity/bluez/bluez5-5.50/0001-hcitool-do-not-show-unsupported-refresh-option.patch delete mode 100644 meta-digi-dey/recipes-connectivity/bluez/bluez5-5.50/0002-hcitool-increase-the-shown-connection-limit-to-20.patch delete mode 100644 meta-digi-dey/recipes-connectivity/bluez/bluez5-5.50/bluetooth-init.service delete mode 100644 meta-digi-dey/recipes-connectivity/bluez/bluez5-5.50/bluetooth.service-add-customizations.patch delete mode 100644 meta-digi-dey/recipes-connectivity/bluez/bluez5-5.50/ccimx6qpsbc/main.conf delete mode 100644 meta-digi-dey/recipes-connectivity/bluez/bluez5-5.50/ccimx6sbc/main.conf delete mode 100644 meta-digi-dey/recipes-connectivity/bluez/bluez5-5.50/ccimx6ul/main.conf rename meta-digi-dey/recipes-connectivity/bluez/{bluez5-5.41 => bluez5}/0001-hcitool-do-not-show-unsupported-refresh-option.patch (100%) rename meta-digi-dey/recipes-connectivity/bluez/{bluez5-5.41 => bluez5}/0002-hcitool-increase-the-shown-connection-limit-to-20.patch (100%) rename meta-digi-dey/recipes-connectivity/bluez/{bluez5-5.41 => bluez5}/bluetooth-init.service (100%) rename meta-digi-dey/recipes-connectivity/bluez/{bluez5-5.41 => bluez5}/bluetooth.service-add-customizations.patch (100%) rename meta-digi-dey/recipes-connectivity/bluez/{bluez5-5.50 => bluez5}/ccimx6qpsbc/bluetooth-init (100%) rename meta-digi-dey/recipes-connectivity/bluez/{bluez5-5.41 => bluez5}/ccimx6qpsbc/main.conf (100%) rename meta-digi-dey/recipes-connectivity/bluez/{bluez5-5.50 => bluez5}/ccimx6sbc/bluetooth-init (100%) rename meta-digi-dey/recipes-connectivity/bluez/{bluez5-5.41 => bluez5}/ccimx6sbc/main.conf (100%) rename meta-digi-dey/recipes-connectivity/bluez/{bluez5-5.50 => bluez5}/ccimx6ul/bluetooth-init (100%) rename meta-digi-dey/recipes-connectivity/bluez/{bluez5-5.41 => bluez5}/ccimx6ul/main.conf (100%) diff --git a/meta-digi-dey/recipes-connectivity/bluez/bluez5-5.41/ccimx6qpsbc/bluetooth-init b/meta-digi-dey/recipes-connectivity/bluez/bluez5-5.41/ccimx6qpsbc/bluetooth-init deleted file mode 100644 index f6fbc3047..000000000 --- a/meta-digi-dey/recipes-connectivity/bluez/bluez5-5.41/ccimx6qpsbc/bluetooth-init +++ /dev/null @@ -1,93 +0,0 @@ -#!/bin/sh -#=============================================================================== -# -# Copyright (C) 2012-2017 by Digi International Inc. -# All rights reserved. -# -# This program is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 as published by -# the Free Software Foundation. -# -# -# !Description: Initialize bluetooth hardware -# -#=============================================================================== - -# Bluetooth power GPIO -BT_EN_QCA_GPIO_NR="244" - -# set_gpio_value -set_gpio_value() { - local SG_GPIONR="${1}" - local SG_GPIOVAL="${2}" - local SG_GPIOPATH="/sys/class/gpio/gpio${SG_GPIONR}" - - [ -d "${SG_GPIOPATH}" ] || printf "%s" "${SG_GPIONR}" > /sys/class/gpio/export - printf out > "${SG_GPIOPATH}/direction" && sleep .2 - printf "${SG_GPIOVAL}" > "${SG_GPIOPATH}/value" && sleep .2 - [ -d "${SG_GPIOPATH}" ] && printf "%s" "${SG_GPIONR}" > /sys/class/gpio/unexport -} - -# powercycle_gpio -powercycle_gpio() { - set_gpio_value "${1}" 0 - set_gpio_value "${1}" 1 -} - -error() { - echo ${1} - exit 1 -} - -bluetooth_init() { - # Get MAC address from the device tree. Use a default value if it has not been set. - BT_MACADDR="$(hexdump -ve '1/1 "%02X" ":"' /proc/device-tree/bluetooth/mac-address 2>/dev/null | sed 's/:$//g')" - if [ -z "${BT_MACADDR}" ] || [ "${BT_MACADDR}" = "00:00:00:00:00:00" ]; then - BT_MACADDR="00:04:F3:FF:FF:BB" - fi - - # Start the Bluetooth driver and bring up the interface - HCIATTACH_LOG="/var/log/hciattach.log" - - for RETRY in $(seq 1 5) - do - killproc hciattach - powercycle_gpio "${BT_EN_QCA_GPIO_NR}" - if hciattach ttyBt qca ${BT_RATE:-3000000} -t30 ${BT_FLOW:-flow} unused ${BT_MACADDR} >${HCIATTACH_LOG} 2>&1; then - return - fi - sleep 1 - done - BT_ERROR="FAIL (hciattach)" -} - -# Source function library -. /etc/init.d/functions - -case "$1" in - start) - if [ -d "/proc/device-tree/bluetooth" ]; then - echo -n "Starting bluetooth hardware: " - bluetooth_init - echo "${BT_ERROR:-done.}" - fi - ;; - stop) - if [ -d "/sys/class/bluetooth/hci0" ]; then - echo -n "Stopping bluetooth hardware: " - killproc hciattach - # Power down bluetooth - set_gpio_value "${BT_EN_QCA_GPIO_NR}" 0 - echo "done." - fi - ;; - restart) - $0 stop - sleep 1 - $0 start - ;; - *) - echo "Usage: $0 {start|stop|restart}" - exit 1 - ;; -esac diff --git a/meta-digi-dey/recipes-connectivity/bluez/bluez5-5.41/ccimx6sbc/bluetooth-init b/meta-digi-dey/recipes-connectivity/bluez/bluez5-5.41/ccimx6sbc/bluetooth-init deleted file mode 100644 index ff7e24476..000000000 --- a/meta-digi-dey/recipes-connectivity/bluez/bluez5-5.41/ccimx6sbc/bluetooth-init +++ /dev/null @@ -1,138 +0,0 @@ -#!/bin/sh -#=============================================================================== -# -# Copyright (C) 2012-2018 by Digi International Inc. -# All rights reserved. -# -# This program is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 as published by -# the Free Software Foundation. -# -# -# !Description: Initialize bluetooth hardware -# -#=============================================================================== - -# Bluetooth power GPIO -BT_PWR_GPIO_NR="244" - -# set_gpio_value -set_gpio_value() { - local SG_GPIONR="${1}" - local SG_GPIOVAL="${2}" - local SG_GPIOPATH="/sys/class/gpio/gpio${SG_GPIONR}" - - [ -d "${SG_GPIOPATH}" ] || printf "%s" "${SG_GPIONR}" > /sys/class/gpio/export - printf out > "${SG_GPIOPATH}/direction" && sleep .2 - printf "${SG_GPIOVAL}" > "${SG_GPIOPATH}/value" && sleep .2 - [ -d "${SG_GPIOPATH}" ] && printf "%s" "${SG_GPIONR}" > /sys/class/gpio/unexport -} - -# powercycle_gpio -powercycle_gpio() { - set_gpio_value "${1}" 0 - set_gpio_value "${1}" 1 -} - -error() { - echo ${1} - exit 1 -} - -bluetooth_init() { - # Get MAC address from the device tree. Use a default value if it has not been set. - BT_MACADDR="$(hexdump -ve '1/1 "%02X" ":"' /proc/device-tree/bluetooth/mac-address 2>/dev/null | sed 's/:$//g')" - if [ -z "${BT_MACADDR}" ] || [ "${BT_MACADDR}" = "00:00:00:00:00:00" ]; then - BT_MACADDR="00:04:F3:FF:FF:BB" - fi - - # Use a sub-shell here to change to firmware directory - ( - cd /lib/firmware/ar3k/1020200 - - # Update the MAC address file only if it has changed. - FW_MAC="ar3kbdaddr.pst" - [ -f "${FW_MAC}" ] && [ "$(cat ${FW_MAC})" = "${BT_MACADDR}" ] || echo ${BT_MACADDR} > ${FW_MAC} - - # Symlink the correct firmware file depending on region code - JPN_REGCODE="0x2" - REGCODE="$(cat /proc/device-tree/digi,hwid,cert 2>/dev/null | tr -d '\0')" - BT_CLASS_LINK="PS_ASIC.pst" - BT_CLASS_FILE="PS_ASIC_class_1.pst" - if [ -n "${REGCODE}" ] && [ "${JPN_REGCODE}" = "${REGCODE}" ]; then - BT_CLASS_FILE="PS_ASIC_class_2.pst" - fi - if ! cmp -s ${BT_CLASS_FILE} ${BT_CLASS_LINK}; then - ln -sf ${BT_CLASS_FILE} ${BT_CLASS_LINK} - fi - # Remove not used configuration and readme files - # -- Do not quote the subcommand to avoid leading/trailing whitespace - # -- being part of the file name. - rm -f $(echo PS_ASIC_class_?.pst | sed -e "s,${BT_CLASS_FILE},,g") readme.txt - ) - - # Start the Bluetooth driver and bring up the interface - HCIATTACH_LOG="/var/log/hciattach.log" - BT_CMD="HCIATTACH" - RETRIES="5" - while [ "${RETRIES}" -gt "0" ]; do - case "${BT_CMD}" in - HCIATTACH) - # Reset BT - killproc hciattach - powercycle_gpio "${BT_PWR_GPIO_NR}" - if hciattach ttyBt ath3k 4000000 >${HCIATTACH_LOG} 2>&1; then - BT_CMD="HCICONFIG_UP" - else - BT_ERROR="FAILED (hciattach)" - BT_CMD="BT_INIT_FAIL" - fi - ;; - HCICONFIG_UP) - if hciconfig hci0 up; then - break - else - BT_ERROR="FAILED (hciconfig up)" - BT_CMD="BT_INIT_FAIL" - fi - ;; - BT_INIT_FAIL) - RETRIES="$((RETRIES - 1))" - BT_CMD="HCIATTACH" - ;; - esac - done - [ "${RETRIES}" = "0" ] && error "${BT_ERROR}" -} - -# Source function library -. /etc/init.d/functions - -case "$1" in - start) - if [ -d "/proc/device-tree/bluetooth" ]; then - echo -n "Starting bluetooth hardware: " - bluetooth_init - echo "done." - fi - ;; - stop) - if [ -d "/sys/class/bluetooth/hci0" ]; then - echo -n "Stopping bluetooth hardware: " - hciconfig hci0 down || BT_ERROR="FAILED (hciconfig down)" - killproc hciattach - # Power down bluetooth - set_gpio_value "${BT_PWR_GPIO_NR}" 0 - echo "${BT_ERROR:-done.}" - fi - ;; - restart) - $0 stop - sleep 1 - $0 start - ;; - *) - echo "Usage: $0 {start|stop|restart}" - exit 1 - ;; -esac diff --git a/meta-digi-dey/recipes-connectivity/bluez/bluez5-5.41/ccimx6ul/bluetooth-init b/meta-digi-dey/recipes-connectivity/bluez/bluez5-5.41/ccimx6ul/bluetooth-init deleted file mode 100644 index e6a509279..000000000 --- a/meta-digi-dey/recipes-connectivity/bluez/bluez5-5.41/ccimx6ul/bluetooth-init +++ /dev/null @@ -1,119 +0,0 @@ -#!/bin/sh -#=============================================================================== -# -# Copyright (C) 2012-2018 by Digi International Inc. -# All rights reserved. -# -# This program is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 as published by -# the Free Software Foundation. -# -# -# !Description: Initialize bluetooth hardware -# -#=============================================================================== - -# Bluetooth power GPIO -BT_EN_QCA_GPIO_NR="137" - -# set_gpio_value -set_gpio_value() { - local SG_GPIONR="${1}" - local SG_GPIOVAL="${2}" - local SG_GPIOPATH="/sys/class/gpio/gpio${SG_GPIONR}" - - [ -d "${SG_GPIOPATH}" ] || printf "%s" "${SG_GPIONR}" > /sys/class/gpio/export - printf out > "${SG_GPIOPATH}/direction" && sleep .2 - printf "${SG_GPIOVAL}" > "${SG_GPIOPATH}/value" && sleep .2 - [ -d "${SG_GPIOPATH}" ] && printf "%s" "${SG_GPIONR}" > /sys/class/gpio/unexport -} - -# powercycle_gpio -powercycle_gpio() { - set_gpio_value "${1}" 0 - set_gpio_value "${1}" 1 -} - -error() { - echo ${1} - exit 1 -} - -bluetooth_init() { - # Get MAC address from the device tree. Use a default value if it has not been set. - BT_MACADDR="$(hexdump -ve '1/1 "%02X" ":"' /proc/device-tree/bluetooth/mac-address 2>/dev/null | sed 's/:$//g')" - if [ -z "${BT_MACADDR}" ] || [ "${BT_MACADDR}" = "00:00:00:00:00:00" ]; then - BT_MACADDR="00:04:F3:FF:FF:BB" - fi - - # Module version older than revision 4 has swapped TX and RX lines - MOD_VERSION="$(($(cat /proc/device-tree/digi,hwid,hv 2>/dev/null | tr -d '\0' || true)))" - if [ "${MOD_VERSION}" -lt "4" ]; then - # Ignore the CTS flow control - BT_CTS_QCA_GPIO_NR="18" - set_gpio_value "${BT_CTS_QCA_GPIO_NR}" 0 - - # Reduce the rate to avoid the need for HW flow control - BT_RATE="115200" - BT_RATE_CODE="00" # 115200 bps - BT_FLOW="noflow" - - # Modify the baudrate in the firmware file - BT_FW_FILE="/lib/firmware/qca/nvm_tlv_3.2.bin" - if [ "$(hexdump -s 56 -n 1 -ve '1/1 "%.2x"' ${BT_FW_FILE})" != "${BT_RATE_CODE}" ]; then - printf "\x${BT_RATE_CODE}" | dd of="${BT_FW_FILE}" bs=1 seek=56 count=1 conv=notrunc,fsync 2>/dev/null - fi - fi - - # Start the Bluetooth driver and bring up the interface - HCIATTACH_LOG="/var/log/hciattach.log" - - for RETRY in $(seq 1 5) - do - killproc hciattach - powercycle_gpio "${BT_EN_QCA_GPIO_NR}" - if hciattach ttyBt qca ${BT_RATE:-3000000} -t30 ${BT_FLOW:-flow} unused ${BT_MACADDR} >${HCIATTACH_LOG} 2>&1; then - # hciattach performs a reset to load the new firmware and needs some time to be ready - sleep 1 - return - fi - sleep 1 - - if [ $RETRY -ge 3 ]; then - # Retry at default firmware baudrate - BT_RATE="115200" - fi - done - BT_ERROR="FAIL (hciattach)" -} - -# Source function library -. /etc/init.d/functions - -case "$1" in - start) - if [ -d "/proc/device-tree/bluetooth" ]; then - echo -n "Starting bluetooth hardware: " - bluetooth_init - echo "${BT_ERROR:-done.}" - fi - ;; - stop) - if [ -d "/sys/class/bluetooth/hci0" ]; then - echo -n "Stopping bluetooth hardware: " - killproc hciattach - # Power down bluetooth - set_gpio_value "${BT_EN_QCA_GPIO_NR}" 0 - echo "done." - fi - ;; - restart) - $0 stop - sleep 1 - $0 start - ;; - *) - echo "Usage: $0 {start|stop|restart}" - exit 1 - ;; -esac diff --git a/meta-digi-dey/recipes-connectivity/bluez/bluez5-5.50/0001-hcitool-do-not-show-unsupported-refresh-option.patch b/meta-digi-dey/recipes-connectivity/bluez/bluez5-5.50/0001-hcitool-do-not-show-unsupported-refresh-option.patch deleted file mode 100644 index 0d0375dad..000000000 --- a/meta-digi-dey/recipes-connectivity/bluez/bluez5-5.50/0001-hcitool-do-not-show-unsupported-refresh-option.patch +++ /dev/null @@ -1,22 +0,0 @@ -From: Isaac Hermida -Date: Fri, 8 Jul 2016 12:19:33 +0200 -Subject: [PATCH] hcitool: do not show unsupported refresh option - -Signed-off-by: Isaac Hermida ---- - tools/hcitool.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/tools/hcitool.c b/tools/hcitool.c -index 02c4ebe1b71b..229c22c49909 100644 ---- a/tools/hcitool.c -+++ b/tools/hcitool.c -@@ -568,7 +568,7 @@ static struct option scan_options[] = { - - static const char *scan_help = - "Usage:\n" -- "\tscan [--length=N] [--numrsp=N] [--iac=lap] [--flush] [--class] [--info] [--oui] [--refresh]\n"; -+ "\tscan [--length=N] [--numrsp=N] [--iac=lap] [--flush] [--class] [--info] [--oui]\n"; - - static void cmd_scan(int dev_id, int argc, char **argv) - { diff --git a/meta-digi-dey/recipes-connectivity/bluez/bluez5-5.50/0002-hcitool-increase-the-shown-connection-limit-to-20.patch b/meta-digi-dey/recipes-connectivity/bluez/bluez5-5.50/0002-hcitool-increase-the-shown-connection-limit-to-20.patch deleted file mode 100644 index fd81a1960..000000000 --- a/meta-digi-dey/recipes-connectivity/bluez/bluez5-5.50/0002-hcitool-increase-the-shown-connection-limit-to-20.patch +++ /dev/null @@ -1,57 +0,0 @@ -From: Isaac Hermida -Date: Fri, 8 Jul 2016 10:42:57 +0200 -Subject: [PATCH] hcitool: increase the shown connection limit to 20 - -Created a variable to set the number of connections to shown and increase that -value so we can list more current LE connections. - -https://jira.digi.com/browse/DEL-2735 - -Signed-off-by: Isaac Hermida ---- - tools/hcitool.c | 10 ++++++---- - 1 file changed, 6 insertions(+), 4 deletions(-) - -diff --git a/tools/hcitool.c b/tools/hcitool.c -index 229c22c49909..ae70c9c0d3b4 100644 ---- a/tools/hcitool.c -+++ b/tools/hcitool.c -@@ -69,6 +69,8 @@ - #define EIR_TX_POWER 0x0A /* transmit power level */ - #define EIR_DEVICE_ID 0x10 /* device ID */ - -+#define MAX_CONNECTIONS_SHOWN 20 /* Max number of "hcitool conn" items to shown */ -+ - #define for_each_opt(opt, long, short) while ((opt=getopt_long(argc, argv, short ? short:"+", long, NULL)) != -1) - - static volatile int signal_received = 0; -@@ -156,12 +158,12 @@ static int conn_list(int s, int dev_id, long arg) - if (id != -1 && dev_id != id) - return 0; - -- if (!(cl = malloc(10 * sizeof(*ci) + sizeof(*cl)))) { -+ if (!(cl = malloc(MAX_CONNECTIONS_SHOWN * sizeof(*ci) + sizeof(*cl)))) { - perror("Can't allocate memory"); - exit(1); - } - cl->dev_id = dev_id; -- cl->conn_num = 10; -+ cl->conn_num = MAX_CONNECTIONS_SHOWN; - ci = cl->conn_info; - - if (ioctl(s, HCIGETCONNLIST, (void *) cl)) { -@@ -190,12 +192,12 @@ static int find_conn(int s, int dev_id, long arg) - struct hci_conn_info *ci; - int i; - -- if (!(cl = malloc(10 * sizeof(*ci) + sizeof(*cl)))) { -+ if (!(cl = malloc(MAX_CONNECTIONS_SHOWN * sizeof(*ci) + sizeof(*cl)))) { - perror("Can't allocate memory"); - exit(1); - } - cl->dev_id = dev_id; -- cl->conn_num = 10; -+ cl->conn_num = MAX_CONNECTIONS_SHOWN; - ci = cl->conn_info; - - if (ioctl(s, HCIGETCONNLIST, (void *) cl)) { diff --git a/meta-digi-dey/recipes-connectivity/bluez/bluez5-5.50/bluetooth-init.service b/meta-digi-dey/recipes-connectivity/bluez/bluez5-5.50/bluetooth-init.service deleted file mode 100644 index 208162131..000000000 --- a/meta-digi-dey/recipes-connectivity/bluez/bluez5-5.50/bluetooth-init.service +++ /dev/null @@ -1,12 +0,0 @@ -[Unit] -Description=Initialization of the bluetooth chip -ConditionPathIsDirectory=/proc/device-tree/bluetooth -Before=bluetooth.service - -[Service] -Type=forking -ExecStart=/etc/bluetooth-init start -ExecStop=/etc/bluetooth-init stop - -[Install] -WantedBy=multi-user.target diff --git a/meta-digi-dey/recipes-connectivity/bluez/bluez5-5.50/bluetooth.service-add-customizations.patch b/meta-digi-dey/recipes-connectivity/bluez/bluez5-5.50/bluetooth.service-add-customizations.patch deleted file mode 100644 index 708bd788f..000000000 --- a/meta-digi-dey/recipes-connectivity/bluez/bluez5-5.50/bluetooth.service-add-customizations.patch +++ /dev/null @@ -1,33 +0,0 @@ -From: Gabriel Valcazar -Date: Thu, 7 Feb 2019 13:15:43 +0100 -Subject: [PATCH] bluetooth.service: add Digi customizations - -These changes include: - -* Adding the bluetooth-init service as a soft dependency. -* Having the bluetooth stack start automatically on boot. - -Signed-off-by: Gabriel Valcazar ---- - src/bluetooth.service.in | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/src/bluetooth.service.in b/src/bluetooth.service.in -index f799f65..d8b150c 100644 ---- a/src/bluetooth.service.in -+++ b/src/bluetooth.service.in -@@ -2,6 +2,7 @@ - Description=Bluetooth service - Documentation=man:bluetoothd(8) - ConditionPathIsDirectory=/sys/class/bluetooth -+Wants=bluetooth-init.service - - [Service] - Type=dbus -@@ -16,5 +17,5 @@ ProtectHome=true - ProtectSystem=full - - [Install] --WantedBy=bluetooth.target -+WantedBy=multi-user.target - Alias=dbus-org.bluez.service diff --git a/meta-digi-dey/recipes-connectivity/bluez/bluez5-5.50/ccimx6qpsbc/main.conf b/meta-digi-dey/recipes-connectivity/bluez/bluez5-5.50/ccimx6qpsbc/main.conf deleted file mode 100644 index 332d38fad..000000000 --- a/meta-digi-dey/recipes-connectivity/bluez/bluez5-5.50/ccimx6qpsbc/main.conf +++ /dev/null @@ -1,12 +0,0 @@ -[General] - -# Default adapter name -# Defaults to 'BlueZ X.YZ' -Name = cc6qp - -[Policy] - -# AutoEnable defines option to enable all controllers when they are found. -# This includes adapters present on start as well as adapters that are plugged -# in later on. Defaults to 'false'. -AutoEnable=true diff --git a/meta-digi-dey/recipes-connectivity/bluez/bluez5-5.50/ccimx6sbc/main.conf b/meta-digi-dey/recipes-connectivity/bluez/bluez5-5.50/ccimx6sbc/main.conf deleted file mode 100644 index c0908f0b2..000000000 --- a/meta-digi-dey/recipes-connectivity/bluez/bluez5-5.50/ccimx6sbc/main.conf +++ /dev/null @@ -1,12 +0,0 @@ -[General] - -# Default adapter name -# Defaults to 'BlueZ X.YZ' -Name = cc6 - -#[Policy] - -# AutoEnable defines option to enable all controllers when they are found. -# This includes adapters present on start as well as adapters that are plugged -# in later on. Defaults to 'false'. -#AutoEnable=true diff --git a/meta-digi-dey/recipes-connectivity/bluez/bluez5-5.50/ccimx6ul/main.conf b/meta-digi-dey/recipes-connectivity/bluez/bluez5-5.50/ccimx6ul/main.conf deleted file mode 100644 index e3c0cacbc..000000000 --- a/meta-digi-dey/recipes-connectivity/bluez/bluez5-5.50/ccimx6ul/main.conf +++ /dev/null @@ -1,12 +0,0 @@ -[General] - -# Default adapter name -# Defaults to 'BlueZ X.YZ' -Name = cc6ul - -[Policy] - -# AutoEnable defines option to enable all controllers when they are found. -# This includes adapters present on start as well as adapters that are plugged -# in later on. Defaults to 'false'. -AutoEnable=true diff --git a/meta-digi-dey/recipes-connectivity/bluez/bluez5-5.41/0001-hcitool-do-not-show-unsupported-refresh-option.patch b/meta-digi-dey/recipes-connectivity/bluez/bluez5/0001-hcitool-do-not-show-unsupported-refresh-option.patch similarity index 100% rename from meta-digi-dey/recipes-connectivity/bluez/bluez5-5.41/0001-hcitool-do-not-show-unsupported-refresh-option.patch rename to meta-digi-dey/recipes-connectivity/bluez/bluez5/0001-hcitool-do-not-show-unsupported-refresh-option.patch diff --git a/meta-digi-dey/recipes-connectivity/bluez/bluez5-5.41/0002-hcitool-increase-the-shown-connection-limit-to-20.patch b/meta-digi-dey/recipes-connectivity/bluez/bluez5/0002-hcitool-increase-the-shown-connection-limit-to-20.patch similarity index 100% rename from meta-digi-dey/recipes-connectivity/bluez/bluez5-5.41/0002-hcitool-increase-the-shown-connection-limit-to-20.patch rename to meta-digi-dey/recipes-connectivity/bluez/bluez5/0002-hcitool-increase-the-shown-connection-limit-to-20.patch diff --git a/meta-digi-dey/recipes-connectivity/bluez/bluez5-5.41/bluetooth-init.service b/meta-digi-dey/recipes-connectivity/bluez/bluez5/bluetooth-init.service similarity index 100% rename from meta-digi-dey/recipes-connectivity/bluez/bluez5-5.41/bluetooth-init.service rename to meta-digi-dey/recipes-connectivity/bluez/bluez5/bluetooth-init.service diff --git a/meta-digi-dey/recipes-connectivity/bluez/bluez5-5.41/bluetooth.service-add-customizations.patch b/meta-digi-dey/recipes-connectivity/bluez/bluez5/bluetooth.service-add-customizations.patch similarity index 100% rename from meta-digi-dey/recipes-connectivity/bluez/bluez5-5.41/bluetooth.service-add-customizations.patch rename to meta-digi-dey/recipes-connectivity/bluez/bluez5/bluetooth.service-add-customizations.patch diff --git a/meta-digi-dey/recipes-connectivity/bluez/bluez5-5.50/ccimx6qpsbc/bluetooth-init b/meta-digi-dey/recipes-connectivity/bluez/bluez5/ccimx6qpsbc/bluetooth-init similarity index 100% rename from meta-digi-dey/recipes-connectivity/bluez/bluez5-5.50/ccimx6qpsbc/bluetooth-init rename to meta-digi-dey/recipes-connectivity/bluez/bluez5/ccimx6qpsbc/bluetooth-init diff --git a/meta-digi-dey/recipes-connectivity/bluez/bluez5-5.41/ccimx6qpsbc/main.conf b/meta-digi-dey/recipes-connectivity/bluez/bluez5/ccimx6qpsbc/main.conf similarity index 100% rename from meta-digi-dey/recipes-connectivity/bluez/bluez5-5.41/ccimx6qpsbc/main.conf rename to meta-digi-dey/recipes-connectivity/bluez/bluez5/ccimx6qpsbc/main.conf diff --git a/meta-digi-dey/recipes-connectivity/bluez/bluez5-5.50/ccimx6sbc/bluetooth-init b/meta-digi-dey/recipes-connectivity/bluez/bluez5/ccimx6sbc/bluetooth-init similarity index 100% rename from meta-digi-dey/recipes-connectivity/bluez/bluez5-5.50/ccimx6sbc/bluetooth-init rename to meta-digi-dey/recipes-connectivity/bluez/bluez5/ccimx6sbc/bluetooth-init diff --git a/meta-digi-dey/recipes-connectivity/bluez/bluez5-5.41/ccimx6sbc/main.conf b/meta-digi-dey/recipes-connectivity/bluez/bluez5/ccimx6sbc/main.conf similarity index 100% rename from meta-digi-dey/recipes-connectivity/bluez/bluez5-5.41/ccimx6sbc/main.conf rename to meta-digi-dey/recipes-connectivity/bluez/bluez5/ccimx6sbc/main.conf diff --git a/meta-digi-dey/recipes-connectivity/bluez/bluez5-5.50/ccimx6ul/bluetooth-init b/meta-digi-dey/recipes-connectivity/bluez/bluez5/ccimx6ul/bluetooth-init similarity index 100% rename from meta-digi-dey/recipes-connectivity/bluez/bluez5-5.50/ccimx6ul/bluetooth-init rename to meta-digi-dey/recipes-connectivity/bluez/bluez5/ccimx6ul/bluetooth-init diff --git a/meta-digi-dey/recipes-connectivity/bluez/bluez5-5.41/ccimx6ul/main.conf b/meta-digi-dey/recipes-connectivity/bluez/bluez5/ccimx6ul/main.conf similarity index 100% rename from meta-digi-dey/recipes-connectivity/bluez/bluez5-5.41/ccimx6ul/main.conf rename to meta-digi-dey/recipes-connectivity/bluez/bluez5/ccimx6ul/main.conf diff --git a/meta-digi-dey/recipes-connectivity/bluez/bluez5_5.50.bbappend b/meta-digi-dey/recipes-connectivity/bluez/bluez5_5.50.bbappend index a3a18146a..ba6a468b3 100644 --- a/meta-digi-dey/recipes-connectivity/bluez/bluez5_5.50.bbappend +++ b/meta-digi-dey/recipes-connectivity/bluez/bluez5_5.50.bbappend @@ -1,6 +1,6 @@ -# Copyright (C) 2015-2018 Digi International. +# Copyright (C) 2015-2019 Digi International. -FILESEXTRAPATHS_prepend := "${THISDIR}/${BP}:" +FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:${THISDIR}/${BP}:" SRC_URI += " \ file://bluetooth-init \ From 8bd845553c7a331e7d7fe237d6706b3800953b92 Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Tue, 25 Jun 2019 13:48:14 +0200 Subject: [PATCH 064/133] bluez5: v5.41: remove FILESEXTRAPATHS modification from .bbappend Since the original .bb file is already in the meta-digi layer, bitbake will look inside of the bluez5-5.41 folder by default, so this line isn't needed. https://jira.digi.com/browse/DEL-6448 Signed-off-by: Gabriel Valcazar --- meta-digi-dey/recipes-connectivity/bluez/bluez5_5.41.bbappend | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/meta-digi-dey/recipes-connectivity/bluez/bluez5_5.41.bbappend b/meta-digi-dey/recipes-connectivity/bluez/bluez5_5.41.bbappend index 222aa3c16..f85360423 100644 --- a/meta-digi-dey/recipes-connectivity/bluez/bluez5_5.41.bbappend +++ b/meta-digi-dey/recipes-connectivity/bluez/bluez5_5.41.bbappend @@ -1,6 +1,4 @@ -# Copyright (C) 2015-2018 Digi International. - -FILESEXTRAPATHS_prepend := "${THISDIR}/${BP}:" +# Copyright (C) 2015-2019 Digi International. SRC_URI += " \ file://bluetooth-init \ From 5868541cc1680caa8f414763e4fbd94eee4e87d1 Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Wed, 26 Jun 2019 10:43:28 +0200 Subject: [PATCH 065/133] packagegroup-dey-audio: add pulseaudio packages as dependencies These packages are included in ccimx6/6qp/6ul images because they are a part of packagegroup-core-x11-sato, which isn't included in ccimx8x images. To assure that pulseaudio always gets included in non-fb images, add it as a dependency in packagegroup-dey-audio. https://jira.digi.com/browse/DEL-6464 Signed-off-by: Gabriel Valcazar --- .../recipes-multimedia/packagegroups/packagegroup-dey-audio.bb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/meta-digi-dey/recipes-multimedia/packagegroups/packagegroup-dey-audio.bb b/meta-digi-dey/recipes-multimedia/packagegroups/packagegroup-dey-audio.bb index 28424bc67..cd23509ed 100644 --- a/meta-digi-dey/recipes-multimedia/packagegroups/packagegroup-dey-audio.bb +++ b/meta-digi-dey/recipes-multimedia/packagegroups/packagegroup-dey-audio.bb @@ -19,6 +19,8 @@ RDEPENDS_${PN} = "\ alsa-state \ alsa-states \ ${ALSA_UTILS_PKGS} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'x11', \ + bb.utils.contains('DISTRO_FEATURES', 'pulseaudio', 'pulseaudio-server pulseaudio-misc', '', d), '', d)} \ " RDEPENDS_${PN}_append_ccimx6 = " card-detect" From f48767f7233cccce4022b8f18d291cd5d152f701 Mon Sep 17 00:00:00 2001 From: Hector Palacios Date: Fri, 28 Jun 2019 09:50:49 +0200 Subject: [PATCH 066/133] ccimx8x: add support for U-Boot variant with 512MB of LPDDR4 Signed-off-by: Hector Palacios https://jira.digi.com/browse/DEL-6641 --- meta-digi-arm/conf/machine/ccimx8x-sbc-pro.conf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/meta-digi-arm/conf/machine/ccimx8x-sbc-pro.conf b/meta-digi-arm/conf/machine/ccimx8x-sbc-pro.conf index 60d23fa3f..718236012 100644 --- a/meta-digi-arm/conf/machine/ccimx8x-sbc-pro.conf +++ b/meta-digi-arm/conf/machine/ccimx8x-sbc-pro.conf @@ -17,9 +17,10 @@ MACHINE_FIRMWARE_append = " ${@oe.utils.conditional('HAVE_WIFI', '1', 'firmware- # U-Boot configurations # Last one is the default (the one the symlinks point at) -UBOOT_CONFIG ??= "ccimx8x_sbc_pro1GB ccimx8x_sbc_pro2GB" +UBOOT_CONFIG ??= "ccimx8x_sbc_pro512MB ccimx8x_sbc_pro1GB ccimx8x_sbc_pro2GB" UBOOT_CONFIG[ccimx8x_sbc_pro2GB] = "ccimx8x_sbc_pro2GB_defconfig,,u-boot-dtb.${UBOOT_SUFFIX}" UBOOT_CONFIG[ccimx8x_sbc_pro1GB] = "ccimx8x_sbc_pro1GB_defconfig,,u-boot-dtb.${UBOOT_SUFFIX}" +UBOOT_CONFIG[ccimx8x_sbc_pro512MB] = "ccimx8x_sbc_pro512MB_defconfig,,u-boot-dtb.${UBOOT_SUFFIX}" KERNEL_DEVICETREE ?= " \ digi/ccimx8x-sbc-pro-id135.dtb \ From ddfbb2652ae69ac4daf4e1c9066d6b5d6d8ef4bf Mon Sep 17 00:00:00 2001 From: Hector Palacios Date: Mon, 1 Jul 2019 10:54:00 +0200 Subject: [PATCH 067/133] ccimx8x: add DualX variants device trees and rename the QuadXPlus With the arrival of DualX variants, the devicetree files have changed their names to include the soc type (qxp, dx). Signed-off-by: Hector Palacios https://jira.digi.com/browse/DEL-6641 --- meta-digi-arm/conf/machine/ccimx8x-sbc-express.conf | 6 +++--- meta-digi-arm/conf/machine/ccimx8x-sbc-pro.conf | 8 +++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/meta-digi-arm/conf/machine/ccimx8x-sbc-express.conf b/meta-digi-arm/conf/machine/ccimx8x-sbc-express.conf index e15fd9bd2..0d7f05cab 100644 --- a/meta-digi-arm/conf/machine/ccimx8x-sbc-express.conf +++ b/meta-digi-arm/conf/machine/ccimx8x-sbc-express.conf @@ -22,9 +22,9 @@ UBOOT_CONFIG[ccimx8x_sbc_express2GB] = "ccimx8x_sbc_express2GB_defconfig,,u-boot UBOOT_CONFIG[ccimx8x_sbc_express1GB] = "ccimx8x_sbc_express1GB_defconfig,,u-boot-dtb.${UBOOT_SUFFIX}" KERNEL_DEVICETREE ?= " \ - digi/ccimx8x-sbc-express-id129.dtb \ - digi/ccimx8x-sbc-express-wb.dtb \ - digi/ccimx8x-sbc-express.dtb \ + digi/ccimx8qxp-sbc-express-id129.dtb \ + digi/ccimx8qxp-sbc-express-wb.dtb \ + digi/ccimx8qxp-sbc-express.dtb \ " SERIAL_CONSOLES ?= "115200;ttyLP2" diff --git a/meta-digi-arm/conf/machine/ccimx8x-sbc-pro.conf b/meta-digi-arm/conf/machine/ccimx8x-sbc-pro.conf index 718236012..6a5191ad3 100644 --- a/meta-digi-arm/conf/machine/ccimx8x-sbc-pro.conf +++ b/meta-digi-arm/conf/machine/ccimx8x-sbc-pro.conf @@ -23,9 +23,11 @@ UBOOT_CONFIG[ccimx8x_sbc_pro1GB] = "ccimx8x_sbc_pro1GB_defconfig,,u-boot-dtb.${U UBOOT_CONFIG[ccimx8x_sbc_pro512MB] = "ccimx8x_sbc_pro512MB_defconfig,,u-boot-dtb.${UBOOT_SUFFIX}" KERNEL_DEVICETREE ?= " \ - digi/ccimx8x-sbc-pro-id135.dtb \ - digi/ccimx8x-sbc-pro-wb.dtb \ - digi/ccimx8x-sbc-pro.dtb \ + digi/ccimx8dx-sbc-pro-wb.dtb \ + digi/ccimx8dx-sbc-pro.dtb \ + digi/ccimx8qxp-sbc-pro-id135.dtb \ + digi/ccimx8qxp-sbc-pro-wb.dtb \ + digi/ccimx8qxp-sbc-pro.dtb \ " SERIAL_CONSOLES ?= "115200;ttyLP2" From 4167ab1769a8e59be6d7ab8f754b0fc55c8de950 Mon Sep 17 00:00:00 2001 From: Hector Palacios Date: Mon, 1 Jul 2019 11:17:33 +0200 Subject: [PATCH 068/133] ccimx8x: u-boot: use 'soc_type' variable when determining device tree file With the arrival of DualX variants, the device tree files have been renamed to contain the SOC type (8qxp, or 8dx). This is determined by a new U-Boot variable 'soc_type'. Default to "8qxp" if the variable is not defined (old U-Boots). Signed-off-by: Hector Palacios https://jira.digi.com/browse/DEL-6641 --- .../u-boot-dey/ccimx8x-sbc-express/boot.txt | 17 +++++++++++------ .../u-boot/u-boot-dey/ccimx8x-sbc-pro/boot.txt | 17 +++++++++++------ 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-express/boot.txt b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-express/boot.txt index 3da6b55df..c67c00d87 100644 --- a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-express/boot.txt +++ b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-express/boot.txt @@ -2,11 +2,16 @@ # U-Boot bootscript for EMMC/SD images created by Yocto. # +# Set SOC type to "8qxp" if not already defined by U-Boot +if test ! -n "${soc_type}"; then + setenv soc_type "8qxp" +fi + # # Set device tree filename depending on the board ID (if defined) # if test -n "${board_id}"; then - setenv fdt_file ccimx8x-sbc-express-id${board_id}.dtb + setenv fdt_file ccimx${soc_type}-sbc-express-id${board_id}.dtb else # # Set device tree filename depending on the hardware capabilities @@ -18,9 +23,9 @@ else if test "${module_has_wifi}" = "1" && test "${module_has_bt}" = "1"; then - setenv fdt_file ccimx8x-sbc-express-wb.dtb + setenv fdt_file ccimx${soc_type}-sbc-express-wb.dtb else - setenv fdt_file ccimx8x-sbc-express.dtb + setenv fdt_file ccimx${soc_type}-sbc-express.dtb fi else # @@ -29,12 +34,12 @@ else if test "${module_variant}" = "0x01" || test "${module_variant}" = "0x02" || test "${module_variant}" = "0x04"; then - setenv fdt_file ccimx8x-sbc-express-wb.dtb + setenv fdt_file ccimx${soc_type}-sbc-express-wb.dtb elif test "${module_variant}" = "0x03" || test "${module_variant}" = "0x05"; then - setenv fdt_file ccimx8x-sbc-express.dtb + setenv fdt_file ccimx${soc_type}-sbc-express.dtb else - setenv fdt_file ccimx8x-sbc-express-wb.dtb + setenv fdt_file ccimx${soc_type}-sbc-express-wb.dtb fi fi fi diff --git a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-pro/boot.txt b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-pro/boot.txt index a8d37c69d..2d069bc79 100644 --- a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-pro/boot.txt +++ b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-pro/boot.txt @@ -2,11 +2,16 @@ # U-Boot bootscript for EMMC/SD images created by Yocto. # +# Set SOC type to "8qxp" if not already defined by U-Boot +if test ! -n "${soc_type}"; then + setenv soc_type "8qxp" +fi + # # Set device tree filename depending on the board ID (if defined) # if test -n "${board_id}"; then - setenv fdt_file ccimx8x-sbc-pro-id${board_id}.dtb + setenv fdt_file ccimx${soc_type}-sbc-pro-id${board_id}.dtb else # # Set device tree filename depending on the hardware capabilities @@ -18,9 +23,9 @@ else if test "${module_has_wifi}" = "1" && test "${module_has_bt}" = "1"; then - setenv fdt_file ccimx8x-sbc-pro-wb.dtb + setenv fdt_file ccimx${soc_type}-sbc-pro-wb.dtb else - setenv fdt_file ccimx8x-sbc-pro.dtb + setenv fdt_file ccimx${soc_type}-sbc-pro.dtb fi else # @@ -29,12 +34,12 @@ else if test "${module_variant}" = "0x01" || test "${module_variant}" = "0x02" || test "${module_variant}" = "0x04"; then - setenv fdt_file ccimx8x-sbc-pro-wb.dtb + setenv fdt_file ccimx${soc_type}-sbc-pro-wb.dtb elif test "${module_variant}" = "0x03" || test "${module_variant}" = "0x05"; then - setenv fdt_file ccimx8x-sbc-pro.dtb + setenv fdt_file ccimx${soc_type}-sbc-pro.dtb else - setenv fdt_file ccimx8x-sbc-pro-wb.dtb + setenv fdt_file ccimx${soc_type}-sbc-pro-wb.dtb fi fi fi From 964b8eff2c47939a7efc0367043916f7363918c4 Mon Sep 17 00:00:00 2001 From: Hector Palacios Date: Mon, 1 Jul 2019 11:20:04 +0200 Subject: [PATCH 069/133] ccimx8x: u-boot: add support for variant 0x06 in U-Boot scripts Signed-off-by: Hector Palacios https://jira.digi.com/browse/DEL-6641 --- .../u-boot/u-boot-dey/ccimx8x-sbc-express/boot.txt | 3 ++- .../recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-pro/boot.txt | 3 ++- .../u-boot/u-boot-dey/ccimx8x-sbc-pro/install_linux_fw_sd.txt | 4 ++++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-express/boot.txt b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-express/boot.txt index c67c00d87..2abe55497 100644 --- a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-express/boot.txt +++ b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-express/boot.txt @@ -36,7 +36,8 @@ else test "${module_variant}" = "0x04"; then setenv fdt_file ccimx${soc_type}-sbc-express-wb.dtb elif test "${module_variant}" = "0x03" || - test "${module_variant}" = "0x05"; then + test "${module_variant}" = "0x05" || + test "${module_variant}" = "0x06"; then setenv fdt_file ccimx${soc_type}-sbc-express.dtb else setenv fdt_file ccimx${soc_type}-sbc-express-wb.dtb diff --git a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-pro/boot.txt b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-pro/boot.txt index 2d069bc79..716ac770f 100644 --- a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-pro/boot.txt +++ b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-pro/boot.txt @@ -36,7 +36,8 @@ else test "${module_variant}" = "0x04"; then setenv fdt_file ccimx${soc_type}-sbc-pro-wb.dtb elif test "${module_variant}" = "0x03" || - test "${module_variant}" = "0x05"; then + test "${module_variant}" = "0x05" || + test "${module_variant}" = "0x06"; then setenv fdt_file ccimx${soc_type}-sbc-pro.dtb else setenv fdt_file ccimx${soc_type}-sbc-pro-wb.dtb diff --git a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-pro/install_linux_fw_sd.txt b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-pro/install_linux_fw_sd.txt index 9f9fa5ddd..969609849 100644 --- a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-pro/install_linux_fw_sd.txt +++ b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-pro/install_linux_fw_sd.txt @@ -32,6 +32,8 @@ else elif test "${module_variant}" = "0x02" || test "${module_variant}" = "0x03"; then setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_pro2GB.bin; + elif test "${module_variant}" = "0x06"; then + setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_pro512MB.bin; fi fi fi @@ -49,6 +51,8 @@ else echo " => setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_pro1GB.bin"; echo " - For a QuadXPlus CPU with 2GB DDR3, run:"; echo " => setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_pro2GB.bin"; + echo " - For a DualX CPU with 512MB DDR3, run:"; + echo " => setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_pro512MB.bin"; echo ""; echo "2. Run the install script again."; echo ""; From 7508d58d4d1aeba9a74ed4a5ec39155acb1e285b Mon Sep 17 00:00:00 2001 From: Hector Palacios Date: Tue, 2 Jul 2019 12:04:17 +0200 Subject: [PATCH 070/133] ccimx8x: u-boot: fix SDRAM denomination on install_linux_fw script The SDRAM is an LPDDR4, not DDR3. Signed-off-by: Hector Palacios --- .../u-boot-dey/ccimx8x-sbc-express/install_linux_fw_sd.txt | 4 ++-- .../u-boot-dey/ccimx8x-sbc-pro/install_linux_fw_sd.txt | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-express/install_linux_fw_sd.txt b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-express/install_linux_fw_sd.txt index ad5ecc8d5..237f42b04 100644 --- a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-express/install_linux_fw_sd.txt +++ b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-express/install_linux_fw_sd.txt @@ -45,9 +45,9 @@ else echo "[ERROR] Cannot determine U-Boot file for this module!"; echo ""; echo "1. Set variable 'INSTALL_UBOOT_FILENAME' depending on your ConnectCore 8X variant:"; - echo " - For a QuadXPlus CPU with 1GB DDR3, run:"; + echo " - For a QuadXPlus CPU with 1GB LPDDR4, run:"; echo " => setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_express1GB.bin"; - echo " - For a QuadXPlus CPU with 2GB DDR3, run:"; + echo " - For a QuadXPlus CPU with 2GB LPDDR4, run:"; echo " => setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_express2GB.bin"; echo ""; echo "2. Run the install script again."; diff --git a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-pro/install_linux_fw_sd.txt b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-pro/install_linux_fw_sd.txt index 969609849..efb69b2d2 100644 --- a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-pro/install_linux_fw_sd.txt +++ b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-pro/install_linux_fw_sd.txt @@ -47,11 +47,11 @@ else echo "[ERROR] Cannot determine U-Boot file for this module!"; echo ""; echo "1. Set variable 'INSTALL_UBOOT_FILENAME' depending on your ConnectCore 8X variant:"; - echo " - For a QuadXPlus CPU with 1GB DDR3, run:"; + echo " - For a QuadXPlus CPU with 1GB LPDDR4, run:"; echo " => setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_pro1GB.bin"; - echo " - For a QuadXPlus CPU with 2GB DDR3, run:"; + echo " - For a QuadXPlus CPU with 2GB LPDDR4, run:"; echo " => setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_pro2GB.bin"; - echo " - For a DualX CPU with 512MB DDR3, run:"; + echo " - For a DualX CPU with 512MB LPDDR4, run:"; echo " => setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_pro512MB.bin"; echo ""; echo "2. Run the install script again."; From 82594d510af490f5fc485032c10ba7a05ef43799 Mon Sep 17 00:00:00 2001 From: Hector Palacios Date: Thu, 4 Jul 2019 11:39:15 +0200 Subject: [PATCH 071/133] digi-sc-firmware: add support for all RAM memory configurations RAM memory configurations are given by: - RAM frequency - RAM size - RAM bus width Signed-off-by: Hector Palacios https://jira.digi.com/browse/DEL-6641 --- .../conf/machine/include/ccimx8x.inc | 5 +++++ .../digi-sc-firmware_1.2.2.1.bb | 20 +++++++++---------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/meta-digi-arm/conf/machine/include/ccimx8x.inc b/meta-digi-arm/conf/machine/include/ccimx8x.inc index 045fe8b10..d8b309a3f 100644 --- a/meta-digi-arm/conf/machine/include/ccimx8x.inc +++ b/meta-digi-arm/conf/machine/include/ccimx8x.inc @@ -19,6 +19,11 @@ IMAGE_BOOTLOADER = "imx-boot" BOOTLOADER_SEEK = "32" SDIMG_BOOTLOADER = "${DEPLOY_DIR_IMAGE}/imx-boot-${MACHINE}.bin" +# RAM variants +# This determines the number of different DCD files, and thus the number of +# different U-Boot binaries required. +RAM_CONFIGS = "1.2GHz_512MB_16bit 1.2GHz_1GB_16bit 1.2GHz_1GB_32bit 1.2GHz_2GB_32bit" + # Linux kernel configuration KERNEL_DEFCONFIG ?= "arch/arm64/configs/ccimx8x_defconfig" diff --git a/meta-digi-arm/recipes-bsp/digi-sc-firmware/digi-sc-firmware_1.2.2.1.bb b/meta-digi-arm/recipes-bsp/digi-sc-firmware/digi-sc-firmware_1.2.2.1.bb index 1a01edb06..12c71ef29 100644 --- a/meta-digi-arm/recipes-bsp/digi-sc-firmware/digi-sc-firmware_1.2.2.1.bb +++ b/meta-digi-arm/recipes-bsp/digi-sc-firmware/digi-sc-firmware_1.2.2.1.bb @@ -11,21 +11,20 @@ inherit pkgconfig deploy SRC_URI = "${DIGI_PKG_SRC}/${PN}-${PV}.tar.gz" -SRC_URI[md5sum] = "18e4d7e6175792ff30d38aacbee3889e" -SRC_URI[sha256sum] = "121014d985a781be1feee1ecc65db0f8a373925e8fba606f1a286202a1e0c266" +SRC_URI[md5sum] = "bc4ec7966821a43eaf83bf945d4264f8" +SRC_URI[sha256sum] = "7f8ddccc6ca990246584e6f27e836dea156e0ea600aaee09548c043bde1974fc" S = "${WORKDIR}/${PN}-${PV}" -SC_FIRMWARE_NAME ?= "mx8qx-${DIGI_FAMILY}-scfw-tcm.bin" +SC_FIRMWARE_NAME ?= "mx8x-${DIGI_FAMILY}-scfw-tcm.bin" symlink_name = "scfw_tcm.bin" SYSROOT_DIRS += "/boot" do_install () { install -d ${D}/boot - for type in ${UBOOT_CONFIG}; do - RAM_SIZE="$(echo ${type} | sed -e 's,.*\([0-9]\+GB\),\1,g')" - install -m 0644 ${S}/${SC_FIRMWARE_NAME}-${RAM_SIZE} ${D}/boot/ + for ramc in ${RAM_CONFIGS}; do + install -m 0644 ${S}/${SC_FIRMWARE_NAME}-${ramc} ${D}/boot/ done } @@ -33,12 +32,11 @@ BOOT_TOOLS = "imx-boot-tools" do_deploy () { install -d ${DEPLOYDIR}/${BOOT_TOOLS} - for type in ${UBOOT_CONFIG}; do - RAM_SIZE="$(echo ${type} | sed -e 's,.*\([0-9]\+GB\),\1,g')" - install -m 0644 ${S}/${SC_FIRMWARE_NAME}-${RAM_SIZE} ${DEPLOYDIR}/${BOOT_TOOLS}/ + for ramc in ${RAM_CONFIGS}; do + install -m 0644 ${S}/${SC_FIRMWARE_NAME}-${ramc} ${DEPLOYDIR}/${BOOT_TOOLS}/ cd ${DEPLOYDIR}/${BOOT_TOOLS}/ - rm -f ${symlink_name}-${RAM_SIZE} - ln -sf ${SC_FIRMWARE_NAME}-${RAM_SIZE} ${symlink_name}-${RAM_SIZE} + rm -f ${symlink_name}-${ramc} + ln -sf ${SC_FIRMWARE_NAME}-${ramc} ${symlink_name}-${ramc} cd - done } From b8e2873c356932f257ac71bd27e8b598cc230636 Mon Sep 17 00:00:00 2001 From: Hector Palacios Date: Mon, 8 Jul 2019 11:59:47 +0200 Subject: [PATCH 072/133] digi-sc-firmware: update to version 1.2.2.2 This version supports all RAM configurations. Signed-off-by: Hector Palacios https://jira.digi.com/browse/DEL-6641 --- ...igi-sc-firmware_1.2.2.1.bb => digi-sc-firmware_1.2.2.2.bb} | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename meta-digi-arm/recipes-bsp/digi-sc-firmware/{digi-sc-firmware_1.2.2.1.bb => digi-sc-firmware_1.2.2.2.bb} (89%) diff --git a/meta-digi-arm/recipes-bsp/digi-sc-firmware/digi-sc-firmware_1.2.2.1.bb b/meta-digi-arm/recipes-bsp/digi-sc-firmware/digi-sc-firmware_1.2.2.2.bb similarity index 89% rename from meta-digi-arm/recipes-bsp/digi-sc-firmware/digi-sc-firmware_1.2.2.1.bb rename to meta-digi-arm/recipes-bsp/digi-sc-firmware/digi-sc-firmware_1.2.2.2.bb index 12c71ef29..b8c82d33e 100644 --- a/meta-digi-arm/recipes-bsp/digi-sc-firmware/digi-sc-firmware_1.2.2.1.bb +++ b/meta-digi-arm/recipes-bsp/digi-sc-firmware/digi-sc-firmware_1.2.2.2.bb @@ -11,8 +11,8 @@ inherit pkgconfig deploy SRC_URI = "${DIGI_PKG_SRC}/${PN}-${PV}.tar.gz" -SRC_URI[md5sum] = "bc4ec7966821a43eaf83bf945d4264f8" -SRC_URI[sha256sum] = "7f8ddccc6ca990246584e6f27e836dea156e0ea600aaee09548c043bde1974fc" +SRC_URI[md5sum] = "3cf34f428d9a0e98ffc7f0cd326d5dc8" +SRC_URI[sha256sum] = "5b0022857fdcbbd4c641f3753d99b8afa8f605b798be3dfd8433696657911f86" S = "${WORKDIR}/${PN}-${PV}" From 23503567a1c655d93ff16331f6f3a6d6cbeb1167 Mon Sep 17 00:00:00 2001 From: Hector Palacios Date: Mon, 8 Jul 2019 12:06:28 +0200 Subject: [PATCH 073/133] imx-boot: build matching combinations of U-Boot and SCFW There are several U-Boot binaries, depending on RAM size, at the moment: - u-boot.bin-ccimx8x_sbc_pro512MB - u-boot.bin-ccimx8x_sbc_pro1GB - u-boot.bin-ccimx8x_sbc_pro2GB and several SCFW files, depending on frequency, size, bus width, at the moment: - scfw_tcm.bin-1.2GHz_512B_16bit - scfw_tcm.bin-1.2GHz_1GB_16bit - scfw_tcm.bin-1.2GHz_1GB_32bit - scfw_tcm.bin-1.2GHz_2GB_32bit From these, we need to combine those that match the RAM size, to produce bootable images for the different variants. Signed-off-by: Hector Palacios https://jira.digi.com/browse/DEL-6641 --- .../imx-mkimage/imx-boot_0.2.bbappend | 62 +++++++++++-------- 1 file changed, 37 insertions(+), 25 deletions(-) diff --git a/meta-digi-arm/recipes-bsp/imx-mkimage/imx-boot_0.2.bbappend b/meta-digi-arm/recipes-bsp/imx-mkimage/imx-boot_0.2.bbappend index 912e8ea3b..35ebae7ef 100644 --- a/meta-digi-arm/recipes-bsp/imx-mkimage/imx-boot_0.2.bbappend +++ b/meta-digi-arm/recipes-bsp/imx-mkimage/imx-boot_0.2.bbappend @@ -45,38 +45,50 @@ do_compile () { cp ${DEPLOY_DIR_IMAGE}/mx8qx-ahab-container.img ${BOOT_STAGING}/ cp ${DEPLOY_DIR_IMAGE}/${BOOT_TOOLS}/${ATF_MACHINE_NAME} ${BOOT_STAGING}/bl31.bin for type in ${UBOOT_CONFIG}; do - RAM_SIZE="$(echo ${type} | sed -e 's,.*\([0-9]\+GB\),\1,g')" cp ${DEPLOY_DIR_IMAGE}/${BOOT_TOOLS}/${UBOOT_NAME}-${type} ${BOOT_STAGING}/u-boot.bin-${type} - cp ${DEPLOY_DIR_IMAGE}/${BOOT_TOOLS}/${SC_FIRMWARE_NAME}-${RAM_SIZE} ${BOOT_STAGING}/scfw_tcm.bin-${RAM_SIZE} + done + for ramc in ${RAM_CONFIGS}; do + cp ${DEPLOY_DIR_IMAGE}/${BOOT_TOOLS}/${SC_FIRMWARE_NAME}-${ramc} ${BOOT_STAGING}/scfw_tcm.bin-${ramc} done # mkimage for i.MX8 for type in ${UBOOT_CONFIG}; do - cd ${BOOT_STAGING} - ln -sf u-boot.bin-${type} u-boot.bin - RAM_SIZE="$(echo ${type} | sed -e 's,.*\([0-9]\+GB\),\1,g')" - ln -sf scfw_tcm.bin-${RAM_SIZE} scfw_tcm.bin - cd - - for target in ${IMXBOOT_TARGETS}; do - bbnote "building ${SOC_TARGET} - ${type} - ${target}" - make SOC=${SOC_TARGET} ${target} - if [ -e "${BOOT_STAGING}/flash.bin" ]; then - cp ${BOOT_STAGING}/flash.bin ${S}/${BOOT_CONFIG_MACHINE}-${type}.bin-${target} + RAM_SIZE="$(echo ${type} | sed -e 's,.*[a-z]\+\([0-9]\+[M|G]B\)$,\1,g')" + for ramc in ${RAM_CONFIGS}; do + if echo "${ramc}" | grep -qs "${RAM_SIZE}"; then + # Match U-Boot memory size and and SCFW memory configuration + cd ${BOOT_STAGING} + ln -sf u-boot.bin-${type} u-boot.bin + ln -sf scfw_tcm.bin-${ramc} scfw_tcm.bin + cd - + for target in ${IMXBOOT_TARGETS}; do + bbnote "building ${SOC_TARGET} - ${ramc} - ${target}" + make SOC=${SOC_TARGET} ${target} + if [ -e "${BOOT_STAGING}/flash.bin" ]; then + cp ${BOOT_STAGING}/flash.bin ${S}/${BOOT_CONFIG_MACHINE}-${ramc}.bin-${target} + fi + SCFWBUILT="yes" + done + rm ${BOOT_STAGING}/scfw_tcm.bin + rm ${BOOT_STAGING}/u-boot.bin + # Remove u-boot-atf.bin and u-boot-hash.bin so they get generated with the next iteration's U-Boot + rm ${BOOT_STAGING}/u-boot-atf.bin + rm ${BOOT_STAGING}/u-boot-hash.bin fi done - rm ${BOOT_STAGING}/scfw_tcm.bin - rm ${BOOT_STAGING}/u-boot.bin - # Remove u-boot-atf.bin and u-boot-hash.bin so they get generated with the next iteration's U-Boot - rm ${BOOT_STAGING}/u-boot-atf.bin - rm ${BOOT_STAGING}/u-boot-hash.bin done + + # Check that SCFW was built at least once + if [ "${SCFWBUILT}" != "yes" ]; then + bbfatal "SCFW was not built!" + fi } do_install () { install -d ${D}/boot - for type in ${UBOOT_CONFIG}; do + for ramc in ${RAM_CONFIGS}; do for target in ${IMXBOOT_TARGETS}; do - install -m 0644 ${S}/${BOOT_CONFIG_MACHINE}-${type}.bin-${target} ${D}/boot/ + install -m 0644 ${S}/${BOOT_CONFIG_MACHINE}-${ramc}.bin-${target} ${D}/boot/ done done } @@ -94,7 +106,7 @@ do_deploy () { install -m 0644 ${BOOT_STAGING}/soc.mak ${DEPLOYDIR}/${BOOT_TOOLS} # copy the generated boot image to deploy path - for type in ${UBOOT_CONFIG}; do + for ramc in ${RAM_CONFIGS}; do IMAGE_IMXBOOT_TARGET="" for target in ${IMXBOOT_TARGETS}; do # Use first "target" as IMAGE_IMXBOOT_TARGET @@ -102,12 +114,12 @@ do_deploy () { IMAGE_IMXBOOT_TARGET="$target" echo "Set boot target as $IMAGE_IMXBOOT_TARGET" fi - install -m 0644 ${S}/${BOOT_CONFIG_MACHINE}-${type}.bin-${target} ${DEPLOYDIR} + install -m 0644 ${S}/${BOOT_CONFIG_MACHINE}-${ramc}.bin-${target} ${DEPLOYDIR} done - cd ${DEPLOYDIR} - ln -sf ${BOOT_CONFIG_MACHINE}-${type}.bin-${IMAGE_IMXBOOT_TARGET} ${BOOT_CONFIG_MACHINE}-${type}.bin - ln -sf ${BOOT_CONFIG_MACHINE}-${type}.bin-${IMAGE_IMXBOOT_TARGET} ${BOOT_CONFIG_MACHINE}-${MACHINE}.bin - cd - + cd ${DEPLOYDIR} + ln -sf ${BOOT_CONFIG_MACHINE}-${ramc}.bin-${IMAGE_IMXBOOT_TARGET} ${BOOT_CONFIG_MACHINE}-${ramc}.bin + ln -sf ${BOOT_CONFIG_MACHINE}-${ramc}.bin-${IMAGE_IMXBOOT_TARGET} ${BOOT_CONFIG_MACHINE}-${MACHINE}-${ramc}.bin + cd - done } From 852cf8a570e959f18fab2e0bb9e3a76eb18712ea Mon Sep 17 00:00:00 2001 From: Hector Palacios Date: Mon, 8 Jul 2019 12:45:50 +0200 Subject: [PATCH 074/133] u-boot-dey: update install scripts to handle variants Now the U-Boot binaries contain the RAM frequency and bus width, not just only the RAM size. Signed-off-by: Hector Palacios https://jira.digi.com/browse/DEL-6641 --- .../install_linux_fw_sd.txt | 28 ++++++++++------- .../ccimx8x-sbc-pro/install_linux_fw_sd.txt | 30 ++++++++++++------- 2 files changed, 37 insertions(+), 21 deletions(-) diff --git a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-express/install_linux_fw_sd.txt b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-express/install_linux_fw_sd.txt index 237f42b04..22f943d5b 100644 --- a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-express/install_linux_fw_sd.txt +++ b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-express/install_linux_fw_sd.txt @@ -19,19 +19,25 @@ if test $? -eq 1; then exit; fi -# Determine U-Boot file to program basing on SOM's RAM size -if test -n "${module_ram}"; then - setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_express${module_ram}.bin; +# Determine U-Boot file to program basing on SOM's RAM size and SOC type (linked to bus width) +ram_freq="1.2GHz" +bus_width="32bit" +if test -n "${module_ram}" && test -n "${soc_type}"; then + if test "${soc_type}" == "dx"; then + bus_width="16bit" + fi + setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_express-${ram_freq}_${module_ram}_${bus_width}.bin; else # Determine U-Boot file to program basing on SOM's variant if test -n "${module_variant}"; then - if test "${module_variant}" = "0x01" || - test "${module_variant}" = "0x04" || - test "${module_variant}" = "0x05"; then - setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_express1GB.bin; + if test "${module_variant}" = "0x01"; then + setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_express-1.2GHz_1GB_32bit.bin; elif test "${module_variant}" = "0x02" || test "${module_variant}" = "0x03"; then - setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_express2GB.bin; + setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_express-1.2GHz_2GB_32bit.bin; + elif test "${module_variant}" = "0x04" || + test "${module_variant}" = "0x05"; then + setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_express-1.2GHz_1GB_16bit.bin; fi fi fi @@ -46,9 +52,11 @@ else echo ""; echo "1. Set variable 'INSTALL_UBOOT_FILENAME' depending on your ConnectCore 8X variant:"; echo " - For a QuadXPlus CPU with 1GB LPDDR4, run:"; - echo " => setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_express1GB.bin"; + echo " => setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_express-1.2GHz_1GB_32bit.bin"; echo " - For a QuadXPlus CPU with 2GB LPDDR4, run:"; - echo " => setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_express2GB.bin"; + echo " => setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_express-1.2GHz_2GB_32bit.bin"; + echo " - For a DualX CPU with 1GB LPDDR4, run:"; + echo " => setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_express-1.2GHz_1GB_16bit.bin"; echo ""; echo "2. Run the install script again."; echo ""; diff --git a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-pro/install_linux_fw_sd.txt b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-pro/install_linux_fw_sd.txt index efb69b2d2..eb4c563f3 100644 --- a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-pro/install_linux_fw_sd.txt +++ b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-pro/install_linux_fw_sd.txt @@ -19,21 +19,27 @@ if test $? -eq 1; then exit; fi -# Determine U-Boot file to program basing on SOM's RAM size -if test -n "${module_ram}"; then - setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_pro${module_ram}.bin; +# Determine U-Boot file to program basing on SOM's RAM size and SOC type (linked to bus width) +ram_freq="1.2GHz" +bus_width="32bit" +if test -n "${module_ram}" && test -n "${soc_type}"; then + if test "${soc_type}" == "dx"; then + bus_width="16bit" + fi + setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_pro-${ram_freq}_${module_ram}_${bus_width}.bin; else # Determine U-Boot file to program basing on SOM's variant if test -n "${module_variant}"; then if test "${module_variant}" = "0x01" || - test "${module_variant}" = "0x04" || - test "${module_variant}" = "0x05"; then - setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_pro1GB.bin; + setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_pro-1.2GHz_1GB_32bit.bin; elif test "${module_variant}" = "0x02" || test "${module_variant}" = "0x03"; then - setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_pro2GB.bin; + setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_pro-1.2GHz_2GB_32bit.bin; + elif test "${module_variant}" = "0x04" || + test "${module_variant}" = "0x05"; then + setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_pro-1.2GHz_1GB_16bit.bin; elif test "${module_variant}" = "0x06"; then - setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_pro512MB.bin; + setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_pro-1.2GHz_512GB_16bit.bin; fi fi fi @@ -48,11 +54,13 @@ else echo ""; echo "1. Set variable 'INSTALL_UBOOT_FILENAME' depending on your ConnectCore 8X variant:"; echo " - For a QuadXPlus CPU with 1GB LPDDR4, run:"; - echo " => setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_pro1GB.bin"; + echo " => setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_pro-1.2GHz_1GB_32bit.bin"; echo " - For a QuadXPlus CPU with 2GB LPDDR4, run:"; - echo " => setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_pro2GB.bin"; + echo " => setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_pro-1.2GHz_2GB_32bit.bin"; + echo " - For a DualX CPU with 1GB LPDDR4, run:"; + echo " => setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_pro-1.2GHz_1GB_16bit.bin"; echo " - For a DualX CPU with 512MB LPDDR4, run:"; - echo " => setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_pro512MB.bin"; + echo " => setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_pro-1.2GHz_512MB_16bit.bin"; echo ""; echo "2. Run the install script again."; echo ""; From 78534ca779b6874162a829b4cad9ffdf4e3a4515 Mon Sep 17 00:00:00 2001 From: Mike Engel Date: Thu, 4 Jul 2019 13:44:07 +0200 Subject: [PATCH 075/133] Revert "ccimx8x: prohibit dey-image-qt from building when trustfence is enabled" This reverts commit dce71c93488e1cc78bf9beb48c8126ec01096c9e. Add Trustfence support for the MX8X platform Signed-off-by: Mike Engel --- meta-digi-dey/classes/trustfence.bbclass | 4 ---- 1 file changed, 4 deletions(-) diff --git a/meta-digi-dey/classes/trustfence.bbclass b/meta-digi-dey/classes/trustfence.bbclass index c9e391132..058de583f 100644 --- a/meta-digi-dey/classes/trustfence.bbclass +++ b/meta-digi-dey/classes/trustfence.bbclass @@ -36,10 +36,6 @@ python () { import hashlib import os - if ("ccimx8x" in d.getVar("MACHINE", True)): - bb.fatal("Trustfence is not currently supported on the ccimx8x SOM") - return - # Secure console configuration if (d.getVar("TRUSTFENCE_CONSOLE_DISABLE", True) == "1"): d.appendVar("UBOOT_EXTRA_CONF", "CONFIG_CONSOLE_DISABLE=y ") From 3c39395a66c977cd4c5016c585ada9b65fc80bfa Mon Sep 17 00:00:00 2001 From: Mike Engel Date: Thu, 4 Jul 2019 13:48:53 +0200 Subject: [PATCH 076/133] meta-digi-arm: add Trustfence boot script for MX8X platform. Signed-off-by: Mike Engel https://jira.digi.com/browse/DEL-6652 --- meta-digi-arm/recipes-bsp/u-boot/digi-u-boot.inc | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/meta-digi-arm/recipes-bsp/u-boot/digi-u-boot.inc b/meta-digi-arm/recipes-bsp/u-boot/digi-u-boot.inc index ea0514929..3bc4b24d8 100644 --- a/meta-digi-arm/recipes-bsp/u-boot/digi-u-boot.inc +++ b/meta-digi-arm/recipes-bsp/u-boot/digi-u-boot.inc @@ -100,9 +100,7 @@ do_compile () { fi } -TF_BOOTSCRIPT_SEDFILTER = "" -TF_BOOTSCRIPT_SEDFILTER_ccimx6 = "${@tf_bootscript_sedfilter(d)}" -TF_BOOTSCRIPT_SEDFILTER_ccimx6ul = "${@tf_bootscript_sedfilter(d)}" +TF_BOOTSCRIPT_SEDFILTER = "${@tf_bootscript_sedfilter(d)}" def tf_bootscript_sedfilter(d): tf_initramfs = d.getVar('TRUSTFENCE_INITRAMFS_IMAGE',True) or "" From 074e3ba3688d37c30c4acc5dcb3e47f02ece6293 Mon Sep 17 00:00:00 2001 From: Mike Engel Date: Thu, 4 Jul 2019 13:59:51 +0200 Subject: [PATCH 077/133] meta-digi-dey: add cryptsetup tool into initramfs. Signed-off-by: Mike Engel https://jira.digi.com/browse/DEL-6652 --- meta-digi-dey/recipes-core/recovery/recovery-initramfs.bb | 4 +--- .../recipes-core/trustfence/trustfence-initramfs.bb | 6 +++++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/meta-digi-dey/recipes-core/recovery/recovery-initramfs.bb b/meta-digi-dey/recipes-core/recovery/recovery-initramfs.bb index ec8c21c46..3aaa0975f 100644 --- a/meta-digi-dey/recipes-core/recovery/recovery-initramfs.bb +++ b/meta-digi-dey/recipes-core/recovery/recovery-initramfs.bb @@ -53,8 +53,6 @@ PACKAGES = "${PN}" FILES_${PN} = "/" -RDEPENDS_${PN}_append_ccimx6sbc = " \ +RDEPENDS_${PN}_append = " \ cryptsetup \ " - -RDEPENDS_${PN}_append_ccimx6qpsbc = " cryptsetup" diff --git a/meta-digi-dey/recipes-core/trustfence/trustfence-initramfs.bb b/meta-digi-dey/recipes-core/trustfence/trustfence-initramfs.bb index deab483b9..b4060ba2c 100644 --- a/meta-digi-dey/recipes-core/trustfence/trustfence-initramfs.bb +++ b/meta-digi-dey/recipes-core/trustfence/trustfence-initramfs.bb @@ -35,5 +35,9 @@ RDEPENDS_${PN}_append_ccimx6ul = " \ mtd-utils-ubifs \ " +RDEPENDS_${PN}_append_ccimx8x = " \ + cryptsetup \ +" + PACKAGE_ARCH = "${MACHINE_ARCH}" -COMPATIBLE_MACHINE = "(ccimx6|ccimx6ul)" \ No newline at end of file +COMPATIBLE_MACHINE = "(ccimx6|ccimx6ul|ccimx8x)" \ No newline at end of file From 4a3e9531b38ad031f82b552fae0477ec96d39c3b Mon Sep 17 00:00:00 2001 From: Mike Engel Date: Mon, 8 Jul 2019 16:22:01 +0200 Subject: [PATCH 078/133] meta-digi-dey: add initramfs-init file to initramfs. Signed-off-by: Mike Engel https://jira.digi.com/browse/DEL-6652 --- .../ccimx8x/trustfence-initramfs-init | 81 +++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 meta-digi-dey/recipes-core/trustfence/trustfence-initramfs/ccimx8x/trustfence-initramfs-init diff --git a/meta-digi-dey/recipes-core/trustfence/trustfence-initramfs/ccimx8x/trustfence-initramfs-init b/meta-digi-dey/recipes-core/trustfence/trustfence-initramfs/ccimx8x/trustfence-initramfs-init new file mode 100644 index 000000000..ce5e3912f --- /dev/null +++ b/meta-digi-dey/recipes-core/trustfence/trustfence-initramfs/ccimx8x/trustfence-initramfs-init @@ -0,0 +1,81 @@ +#!/bin/sh +#=============================================================================== +# +# trustfence-initramfs-init +# +# Copyright (C) 2019 by Digi International Inc. +# All rights reserved. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 as published by +# the Free Software Foundation. +# +# +# !Description: Init script for Trustfence initramfs +# +#=============================================================================== + +POWEROFF_TIME="10" + +error() { + [ "${#}" != "0" ] && printf "\n[ERROR]: %s\n\n" "${1}" + echo "The system will poweroff in ${POWEROFF_TIME} seconds" + sleep "${POWEROFF_TIME}" + sync && poweroff -f +} + +# Main +#------------------------------------------------------------------------------ +# Setup the environment. +export PATH=/bin:/sbin:/usr/bin:/usr/sbin + +mkdir -p /proc /sys /dev +mount -t proc proc /proc +mount -t sysfs sysfs /sys +mount -t devtmpfs devtmpfs /dev + +# Set kernel console loglevel +LOGLEVEL="$(sysctl -n kernel.printk)" +sysctl -q -w kernel.printk=4 + +for arg in $(cat /proc/cmdline); do + case "${arg}" in + init=*|rescue=1|root=*) eval ${arg};; + esac +done + +# Translate "PARTUUID=..." to real device +root="$(findfs ${root})" + +# Jump to a rescue shell if requested +if [ -n "${rescue}" ]; then + # Expand console and respawn if exited + while true; do + setsid cttyhack sh -l + sleep 1 + done +fi + +# Open LUKS encrypted device +if trustfence-tool ${root} cryptroot; then + # Reset root variable to the decrypted mapped device + root="/dev/mapper/cryptroot" +else + error "unable to open encrypted partition." +fi + +# Mount mapped device +mkdir -p /newroot +FSTYPE="$(blkid ${root} | sed -e 's,.*TYPE="\([^"]\+\)".*,\1,g')" +mount ${FSTYPE:+-t ${FSTYPE}} ${root} /newroot + +# +# Clean-up and do the switch_root to the final rootfs +# +# - restore previous kernel console loglevel +# - umount virtual filesystems +# +[ -n "${LOGLEVEL}" ] && sysctl -q -w kernel.printk="${LOGLEVEL}" +mount --move /dev /newroot/dev +umount /sys /proc +exec switch_root /newroot ${init:-/sbin/init} From 5a311a7e4a1b1cb20dcc54424239fcbeb4bb7f89 Mon Sep 17 00:00:00 2001 From: Hector Palacios Date: Tue, 9 Jul 2019 10:20:06 +0200 Subject: [PATCH 079/133] imx-boot: re-add machine name to boot filenames With the rework to support variants, the machine name (actually the UBOOT_CONFIG) was removed from the filename. Re-add it using ${MACHINE_NAME} which is more appropriate than the ${UBOOT_CONFIG} which contains the RAM size (now present in ${ramc}). While on it, remove one of the two symlinks on DEPLOYDIR. Only one makes sense. Signed-off-by: Hector Palacios https://jira.digi.com/browse/DEL-6641 --- .../recipes-bsp/imx-mkimage/imx-boot_0.2.bbappend | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/meta-digi-arm/recipes-bsp/imx-mkimage/imx-boot_0.2.bbappend b/meta-digi-arm/recipes-bsp/imx-mkimage/imx-boot_0.2.bbappend index 35ebae7ef..c10bbc506 100644 --- a/meta-digi-arm/recipes-bsp/imx-mkimage/imx-boot_0.2.bbappend +++ b/meta-digi-arm/recipes-bsp/imx-mkimage/imx-boot_0.2.bbappend @@ -65,7 +65,7 @@ do_compile () { bbnote "building ${SOC_TARGET} - ${ramc} - ${target}" make SOC=${SOC_TARGET} ${target} if [ -e "${BOOT_STAGING}/flash.bin" ]; then - cp ${BOOT_STAGING}/flash.bin ${S}/${BOOT_CONFIG_MACHINE}-${ramc}.bin-${target} + cp ${BOOT_STAGING}/flash.bin ${S}/${BOOT_CONFIG_MACHINE}-${MACHINE}-${ramc}.bin-${target} fi SCFWBUILT="yes" done @@ -88,7 +88,7 @@ do_install () { install -d ${D}/boot for ramc in ${RAM_CONFIGS}; do for target in ${IMXBOOT_TARGETS}; do - install -m 0644 ${S}/${BOOT_CONFIG_MACHINE}-${ramc}.bin-${target} ${D}/boot/ + install -m 0644 ${S}/${BOOT_CONFIG_MACHINE}-${MACHINE}-${ramc}.bin-${target} ${D}/boot/ done done } @@ -114,11 +114,10 @@ do_deploy () { IMAGE_IMXBOOT_TARGET="$target" echo "Set boot target as $IMAGE_IMXBOOT_TARGET" fi - install -m 0644 ${S}/${BOOT_CONFIG_MACHINE}-${ramc}.bin-${target} ${DEPLOYDIR} + install -m 0644 ${S}/${BOOT_CONFIG_MACHINE}-${MACHINE}-${ramc}.bin-${target} ${DEPLOYDIR} done cd ${DEPLOYDIR} - ln -sf ${BOOT_CONFIG_MACHINE}-${ramc}.bin-${IMAGE_IMXBOOT_TARGET} ${BOOT_CONFIG_MACHINE}-${ramc}.bin - ln -sf ${BOOT_CONFIG_MACHINE}-${ramc}.bin-${IMAGE_IMXBOOT_TARGET} ${BOOT_CONFIG_MACHINE}-${MACHINE}-${ramc}.bin + ln -sf ${BOOT_CONFIG_MACHINE}-${MACHINE}-${ramc}.bin-${IMAGE_IMXBOOT_TARGET} ${BOOT_CONFIG_MACHINE}-${MACHINE}-${ramc}.bin cd - done } From c4bea6edd80529dc54999a040caff12d6bf3439d Mon Sep 17 00:00:00 2001 From: Hector Palacios Date: Tue, 9 Jul 2019 10:23:10 +0200 Subject: [PATCH 080/133] imx-boot: create symlink to default bootable U-Boot artifact Similar to the way the u-boot recipe does, create a symlink to the default bootable artifact. Since they are overwritten on every loop, this requires that the default RAM configuration is set the last on the list of RAM_CONFIGS (same convention than the one used on UBOOT_CONFIGS). Signed-off-by: Hector Palacios https://jira.digi.com/browse/DEL-6641 --- meta-digi-arm/conf/machine/include/ccimx8x.inc | 4 +++- meta-digi-arm/recipes-bsp/imx-mkimage/imx-boot_0.2.bbappend | 3 +++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/meta-digi-arm/conf/machine/include/ccimx8x.inc b/meta-digi-arm/conf/machine/include/ccimx8x.inc index d8b309a3f..8139ba4af 100644 --- a/meta-digi-arm/conf/machine/include/ccimx8x.inc +++ b/meta-digi-arm/conf/machine/include/ccimx8x.inc @@ -17,11 +17,13 @@ EXTRA_IMAGEDEPENDS = "imx-boot" IMAGE_BOOTLOADER = "imx-boot" # BOOTLOADER_SEEK is 33 for step A of the silicon and 32 for step B BOOTLOADER_SEEK = "32" -SDIMG_BOOTLOADER = "${DEPLOY_DIR_IMAGE}/imx-boot-${MACHINE}.bin" +BOOTABLE_FILENAME = "imx-boot-${MACHINE}.bin" +SDIMG_BOOTLOADER = "${DEPLOY_DIR_IMAGE}/${BOOTABLE_FILENAME}" # RAM variants # This determines the number of different DCD files, and thus the number of # different U-Boot binaries required. +# Last one is the default (the one the symlinks point at) RAM_CONFIGS = "1.2GHz_512MB_16bit 1.2GHz_1GB_16bit 1.2GHz_1GB_32bit 1.2GHz_2GB_32bit" # Linux kernel configuration diff --git a/meta-digi-arm/recipes-bsp/imx-mkimage/imx-boot_0.2.bbappend b/meta-digi-arm/recipes-bsp/imx-mkimage/imx-boot_0.2.bbappend index c10bbc506..133fbb59d 100644 --- a/meta-digi-arm/recipes-bsp/imx-mkimage/imx-boot_0.2.bbappend +++ b/meta-digi-arm/recipes-bsp/imx-mkimage/imx-boot_0.2.bbappend @@ -118,6 +118,9 @@ do_deploy () { done cd ${DEPLOYDIR} ln -sf ${BOOT_CONFIG_MACHINE}-${MACHINE}-${ramc}.bin-${IMAGE_IMXBOOT_TARGET} ${BOOT_CONFIG_MACHINE}-${MACHINE}-${ramc}.bin + # Link to default bootable U-Boot filename. It gets overwritten + # on every loop so the only last RAM_CONFIG will survive. + ln -sf ${BOOT_CONFIG_MACHINE}-${MACHINE}-${ramc}.bin-${IMAGE_IMXBOOT_TARGET} ${BOOTABLE_FILENAME} cd - done } From 94ab3707f63cb0d0179d320a6446b293f7d0a017 Mon Sep 17 00:00:00 2001 From: Arturo Buzarra Date: Tue, 9 Jul 2019 11:29:35 +0200 Subject: [PATCH 081/133] bluez: export Bluetooth internal headers and libs This commit exports several internal headers and libraries to allow link against them in user applications. https://jira.digi.com/browse/DEL-6649 Signed-off-by: Arturo Buzarra --- .../recipes-connectivity/bluez/bluez5_5.50.bbappend | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/meta-digi-dey/recipes-connectivity/bluez/bluez5_5.50.bbappend b/meta-digi-dey/recipes-connectivity/bluez/bluez5_5.50.bbappend index ba6a468b3..438f5db74 100644 --- a/meta-digi-dey/recipes-connectivity/bluez/bluez5_5.50.bbappend +++ b/meta-digi-dey/recipes-connectivity/bluez/bluez5_5.50.bbappend @@ -32,6 +32,16 @@ do_install_append() { install -d ${D}${systemd_unitdir}/system/ install -m 0644 ${WORKDIR}/bluetooth-init.service ${D}${systemd_unitdir}/system/bluetooth-init.service install -m 0644 ${WORKDIR}/main.conf ${D}${sysconfdir}/bluetooth/ + + # Staging bluetooth internal headers and libs to allow other recipes + # to link against them + install -d ${D}${includedir}/bluetooth-internal/ + install -m 0644 ${WORKDIR}/bluez-${PV}/src/shared/*.h ${D}${includedir}/bluetooth-internal/ + install -m 0644 ${WORKDIR}/bluez-${PV}/lib/uuid.h ${D}${includedir}/bluetooth-internal/ + install -m 0644 ${B}/lib/.libs/libbluetooth-internal.a ${D}${libdir}/ + install -m 0644 ${B}/src/.libs/libshared-mainloop.a ${D}${libdir}/ + # Fix include path for att-types.h + sed -i -e '/#include/{s,src/shared/,,g}' ${D}${includedir}/bluetooth-internal/att.h } PACKAGES =+ "${PN}-init" From 8b39014eb7a788daa6f8efe16e6f3e7be97108c1 Mon Sep 17 00:00:00 2001 From: Arturo Buzarra Date: Tue, 9 Jul 2019 11:34:41 +0200 Subject: [PATCH 082/133] dey-examples: add example to enable a BLE GATT server https://jira.digi.com/browse/DEL-6649 Signed-off-by: Arturo Buzarra --- .../dey-examples-bt-gatt-server.bb | 20 +++++++++++++++++++ .../packagegroup-dey-examples.bb | 1 + 2 files changed, 21 insertions(+) create mode 100644 meta-digi-dey/recipes-digi/dey-examples/dey-examples-bt-gatt-server.bb diff --git a/meta-digi-dey/recipes-digi/dey-examples/dey-examples-bt-gatt-server.bb b/meta-digi-dey/recipes-digi/dey-examples/dey-examples-bt-gatt-server.bb new file mode 100644 index 000000000..c91792622 --- /dev/null +++ b/meta-digi-dey/recipes-digi/dey-examples/dey-examples-bt-gatt-server.bb @@ -0,0 +1,20 @@ +# Copyright (C) 2019, Digi International Inc. + +require recipes-digi/dey-examples/dey-examples-src.inc + +SUMMARY = "DEY examples: application to create a BLE GATT server" +SECTION = "examples" +LICENSE = "GPL-2.0" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6" + +inherit bluetooth + +DEPENDS = "${BLUEZ}" + +SRC_URI = "${DEY_EXAMPLES_GIT_URI};branch=${SRCBRANCH}" + +S = "${WORKDIR}/git/ble-gatt-server-example" + +do_install() { + oe_runmake DESTDIR=${D} install +} diff --git a/meta-digi-dey/recipes-digi/packagegroups/packagegroup-dey-examples.bb b/meta-digi-dey/recipes-digi/packagegroups/packagegroup-dey-examples.bb index f1b8e408b..fbc2d8f15 100644 --- a/meta-digi-dey/recipes-digi/packagegroups/packagegroup-dey-examples.bb +++ b/meta-digi-dey/recipes-digi/packagegroups/packagegroup-dey-examples.bb @@ -12,6 +12,7 @@ RDEPENDS_${PN} = "\ ${@bb.utils.contains("MACHINE_FEATURES", "alsa", "dey-examples-vplay", "", d)} \ ${@bb.utils.contains("MACHINE_FEATURES", "bluetooth", "dey-examples-bt", "", d)} \ ${@bb.utils.contains("MACHINE_FEATURES", "bluetooth", "dey-examples-btconfig", "", d)} \ + ${@bb.utils.contains("MACHINE_FEATURES", "bluetooth", "dey-examples-bt-gatt-server", "", d)} \ ${@bb.utils.contains("MACHINE_FEATURES", "bluetooth", "dey-examples-hdp", "", d)} \ ${@bb.utils.contains("MACHINE_FEATURES", "cryptochip", "dey-examples-cryptochip", "", d)} \ awsiotsdk-demo \ From e8aad5b23ee1581f672a22e94a88d0d19297e0ba Mon Sep 17 00:00:00 2001 From: Jose Diaz de Grenu Date: Fri, 28 Jun 2019 15:30:20 +0200 Subject: [PATCH 083/133] dey-examples: add recipe for caam blob example Signed-off-by: Jose Diaz de Grenu --- .../dey-examples/dey-examples-caamblob.bb | 18 ++++++++++++++++++ .../packagegroups/packagegroup-dey-examples.bb | 1 + 2 files changed, 19 insertions(+) create mode 100644 meta-digi-dey/recipes-digi/dey-examples/dey-examples-caamblob.bb diff --git a/meta-digi-dey/recipes-digi/dey-examples/dey-examples-caamblob.bb b/meta-digi-dey/recipes-digi/dey-examples/dey-examples-caamblob.bb new file mode 100644 index 000000000..a5d40e17b --- /dev/null +++ b/meta-digi-dey/recipes-digi/dey-examples/dey-examples-caamblob.bb @@ -0,0 +1,18 @@ +# Copyright (C) 2017-2019, Digi International Inc. + +require recipes-digi/dey-examples/dey-examples-src.inc + +SUMMARY = "DEY examples: CAAM blob example application" +SECTION = "examples" +LICENSE = "GPL-2.0" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6" + +SRC_URI = "${DEY_EXAMPLES_GIT_URI};branch=${SRCBRANCH}" + +S = "${WORKDIR}/git/caam-blob-example" + +inherit pkgconfig + +do_install() { + oe_runmake DESTDIR=${D} install +} diff --git a/meta-digi-dey/recipes-digi/packagegroups/packagegroup-dey-examples.bb b/meta-digi-dey/recipes-digi/packagegroups/packagegroup-dey-examples.bb index fbc2d8f15..2e428dea3 100644 --- a/meta-digi-dey/recipes-digi/packagegroups/packagegroup-dey-examples.bb +++ b/meta-digi-dey/recipes-digi/packagegroups/packagegroup-dey-examples.bb @@ -16,6 +16,7 @@ RDEPENDS_${PN} = "\ ${@bb.utils.contains("MACHINE_FEATURES", "bluetooth", "dey-examples-hdp", "", d)} \ ${@bb.utils.contains("MACHINE_FEATURES", "cryptochip", "dey-examples-cryptochip", "", d)} \ awsiotsdk-demo \ + dey-examples-caamblob \ dey-examples-cloudconnector \ dey-examples-digiapix \ dey-examples-rtc \ From 7d64118a94e5eaab436117c3e36ef2544bc21ed8 Mon Sep 17 00:00:00 2001 From: Hector Palacios Date: Wed, 10 Jul 2019 09:52:00 +0200 Subject: [PATCH 084/133] u-boot: fix wrongly finished 'if' clause on install_fw script Signed-off-by: Hector Palacios --- .../u-boot/u-boot-dey/ccimx8x-sbc-pro/install_linux_fw_sd.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-pro/install_linux_fw_sd.txt b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-pro/install_linux_fw_sd.txt index eb4c563f3..a2f1162b9 100644 --- a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-pro/install_linux_fw_sd.txt +++ b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-pro/install_linux_fw_sd.txt @@ -30,7 +30,7 @@ if test -n "${module_ram}" && test -n "${soc_type}"; then else # Determine U-Boot file to program basing on SOM's variant if test -n "${module_variant}"; then - if test "${module_variant}" = "0x01" || + if test "${module_variant}" = "0x01"; then setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_pro-1.2GHz_1GB_32bit.bin; elif test "${module_variant}" = "0x02" || test "${module_variant}" = "0x03"; then From e50f6c3e916de92e0b232b329b714fc5e1a48974 Mon Sep 17 00:00:00 2001 From: Hector Palacios Date: Thu, 11 Jul 2019 11:10:58 +0200 Subject: [PATCH 085/133] u-boot: fix the use of boot image recipe and prefix A variable called IMAGE_BOOTLOADER was being used without distinction for referring to two different things: - the recipe that builds the bootable artifacts - the prefix of those artifacts The value of this is "u-boot" for most platforms, but "imx-boot" for the CC8X based platforms. The name of the variable is misleading, so this commit splits it into two: - BOOTLOADER_IMAGE_RECIPE, to refer to the recipe - UBOOT_PREFIX, to refer to the prefix of the bootable artifact With the separation, the variable UBOOT_SYMLINK becomes a generic formed one, so it is moved to digi-defaults.inc. While on it, fix the image_types_digi.bbclass which was not making use of the original variable to establish all the dependencies. Signed-off-by: Hector Palacios --- meta-digi-arm/classes/image_types_digi.bbclass | 11 ++++++----- meta-digi-arm/conf/machine/include/ccimx6.inc | 2 +- meta-digi-arm/conf/machine/include/ccimx6ul.inc | 2 +- meta-digi-arm/conf/machine/include/ccimx8x.inc | 6 +++--- meta-digi-arm/conf/machine/include/digi-defaults.inc | 3 +++ meta-digi-dey/classes/dey-image-installer.bbclass | 2 +- 6 files changed, 15 insertions(+), 11 deletions(-) diff --git a/meta-digi-arm/classes/image_types_digi.bbclass b/meta-digi-arm/classes/image_types_digi.bbclass index 1dbe358b3..bbfe2668d 100644 --- a/meta-digi-arm/classes/image_types_digi.bbclass +++ b/meta-digi-arm/classes/image_types_digi.bbclass @@ -3,6 +3,8 @@ inherit image_types ################################################################################ # BOOT IMAGES # ################################################################################ +BOOTLOADER_IMAGE_RECIPE ?= "u-boot" + def TRUSTFENCE_BOOTIMAGE_DEPENDS(d): tf_initramfs = d.getVar('TRUSTFENCE_INITRAMFS_IMAGE',True) or "" return "%s:do_image_complete" % tf_initramfs if tf_initramfs else "" @@ -11,7 +13,7 @@ do_image_boot_vfat[depends] += " \ coreutils-native:do_populate_sysroot \ dosfstools-native:do_populate_sysroot \ mtools-native:do_populate_sysroot \ - u-boot:do_deploy \ + ${BOOTLOADER_IMAGE_RECIPE}:do_deploy \ virtual/kernel:do_deploy \ ${@TRUSTFENCE_BOOTIMAGE_DEPENDS(d)} \ " @@ -74,7 +76,7 @@ do_image_boot_vfat[imgsuffix] = "." do_image_boot_ubifs[depends] += " \ mtd-utils-native:do_populate_sysroot \ - u-boot:do_deploy \ + ${BOOTLOADER_IMAGE_RECIPE}:do_deploy \ virtual/kernel:do_deploy \ ${@TRUSTFENCE_BOOTIMAGE_DEPENDS(d)} \ " @@ -144,7 +146,7 @@ IMAGE_TYPEDEP_recovery.vfat = "boot.vfat" do_image_recovery_ubifs[depends] += " \ mtd-utils-native:do_populate_sysroot \ - u-boot:do_deploy \ + ${BOOTLOADER_IMAGE_RECIPE}:do_deploy \ virtual/kernel:do_deploy \ ${RECOVERY_INITRAMFS_IMAGE}:do_image_complete \ " @@ -228,7 +230,6 @@ BOARD_BOOTIMAGE_PARTITION_SIZE ??= "65536" # SD card image name SDIMG = "${IMGDEPLOYDIR}/${IMAGE_NAME}.rootfs.sdcard" -IMAGE_BOOTLOADER ?= "u-boot" BOOTLOADER_SEEK ?= "1" SDIMG_BOOTLOADER ?= "${DEPLOY_DIR_IMAGE}/${UBOOT_SYMLINK}" @@ -241,7 +242,7 @@ do_image_sdcard[depends] = " \ dosfstools-native:do_populate_sysroot \ mtools-native:do_populate_sysroot \ parted-native:do_populate_sysroot \ - ${IMAGE_BOOTLOADER}:do_deploy \ + ${BOOTLOADER_IMAGE_RECIPE}:do_deploy \ virtual/kernel:do_deploy \ " diff --git a/meta-digi-arm/conf/machine/include/ccimx6.inc b/meta-digi-arm/conf/machine/include/ccimx6.inc index c54fb6d35..419bc8150 100644 --- a/meta-digi-arm/conf/machine/include/ccimx6.inc +++ b/meta-digi-arm/conf/machine/include/ccimx6.inc @@ -9,8 +9,8 @@ include conf/machine/include/imx-digi-base.inc include conf/machine/include/tune-cortexa9.inc # Platform u-boot settings +UBOOT_PREFIX = "u-boot" UBOOT_SUFFIX = "imx" -UBOOT_SYMLINK = "u-boot-${MACHINE}.${UBOOT_SUFFIX}" # Linux kernel configuration KERNEL_DEFCONFIG ?= "arch/arm/configs/ccimx6sbc_defconfig" diff --git a/meta-digi-arm/conf/machine/include/ccimx6ul.inc b/meta-digi-arm/conf/machine/include/ccimx6ul.inc index 3b69bf827..1c2cb5abd 100644 --- a/meta-digi-arm/conf/machine/include/ccimx6ul.inc +++ b/meta-digi-arm/conf/machine/include/ccimx6ul.inc @@ -9,8 +9,8 @@ include conf/machine/include/imx-digi-base.inc include conf/machine/include/tune-cortexa7.inc # Platform u-boot settings +UBOOT_PREFIX = "u-boot" UBOOT_SUFFIX = "imx" -UBOOT_SYMLINK = "u-boot-${MACHINE}.${UBOOT_SUFFIX}" # Wireless external module WIRELESS_MODULE ?= "" diff --git a/meta-digi-arm/conf/machine/include/ccimx8x.inc b/meta-digi-arm/conf/machine/include/ccimx8x.inc index 8139ba4af..35d82a07c 100644 --- a/meta-digi-arm/conf/machine/include/ccimx8x.inc +++ b/meta-digi-arm/conf/machine/include/ccimx8x.inc @@ -9,15 +9,15 @@ include conf/machine/include/imx-digi-base.inc include conf/machine/include/arm/arch-arm64.inc # Platform u-boot settings +UBOOT_PREFIX = "imx-boot" UBOOT_SUFFIX = "bin" -UBOOT_SYMLINK = "u-boot-${MACHINE}.${UBOOT_SUFFIX}" # The bootloader image that gets flashed consists of U-Boot and several fw binaries EXTRA_IMAGEDEPENDS = "imx-boot" -IMAGE_BOOTLOADER = "imx-boot" +BOOTLOADER_IMAGE_RECIPE = "imx-boot" # BOOTLOADER_SEEK is 33 for step A of the silicon and 32 for step B BOOTLOADER_SEEK = "32" -BOOTABLE_FILENAME = "imx-boot-${MACHINE}.bin" +BOOTABLE_FILENAME = "${UBOOT_PREFIX}-${MACHINE}.bin" SDIMG_BOOTLOADER = "${DEPLOY_DIR_IMAGE}/${BOOTABLE_FILENAME}" # RAM variants diff --git a/meta-digi-arm/conf/machine/include/digi-defaults.inc b/meta-digi-arm/conf/machine/include/digi-defaults.inc index 3d229dd1e..55fc19ba0 100644 --- a/meta-digi-arm/conf/machine/include/digi-defaults.inc +++ b/meta-digi-arm/conf/machine/include/digi-defaults.inc @@ -50,3 +50,6 @@ USE_VT ?= "0" # Add the machine variant to the valid machine override MACHINE_VARIANT ?= "" MACHINEOVERRIDES .= "${@['', ':${MACHINE_VARIANT}']['${MACHINE_VARIANT}' != '']}" + +# U-Boot symlink +UBOOT_SYMLINK ?= "${UBOOT_PREFIX}-${MACHINE}.${UBOOT_SUFFIX}" diff --git a/meta-digi-dey/classes/dey-image-installer.bbclass b/meta-digi-dey/classes/dey-image-installer.bbclass index a0e1d18ed..bea197890 100644 --- a/meta-digi-dey/classes/dey-image-installer.bbclass +++ b/meta-digi-dey/classes/dey-image-installer.bbclass @@ -27,7 +27,7 @@ generate_installer_zip () { fi done for ubconf in ${UBOOT_CONFIG}; do - if readlink -e "${DEPLOY_DIR_IMAGE}/${IMAGE_BOOTLOADER}-${ubconf}.${UBOOT_SUFFIX}" >/dev/null; then + if readlink -e "${DEPLOY_DIR_IMAGE}/${UBOOT_PREFIX}-${ubconf}.${UBOOT_SUFFIX}" >/dev/null; then INSTALLER_FILELIST="${INSTALLER_FILELIST} ${DEPLOY_DIR_IMAGE}/${IMAGE_BOOTLOADER}-${ubconf}.${UBOOT_SUFFIX}" fi done From 3263fda892cf8b5c42828d52ef68ac5ae8165382 Mon Sep 17 00:00:00 2001 From: Hector Palacios Date: Thu, 11 Jul 2019 11:51:41 +0200 Subject: [PATCH 086/133] imx-boot: use new UBOOT_PREFIX variable instead of creating one The recipe was creating a variable with the value of another one from the main recipe, just to refer to the bootable artifact prefix. We can now use instead the new UBOOT_PREFIX variable. Signed-off-by: Hector Palacios --- .../recipes-bsp/imx-mkimage/imx-boot_0.2.bbappend | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/meta-digi-arm/recipes-bsp/imx-mkimage/imx-boot_0.2.bbappend b/meta-digi-arm/recipes-bsp/imx-mkimage/imx-boot_0.2.bbappend index 133fbb59d..f2ceb3554 100644 --- a/meta-digi-arm/recipes-bsp/imx-mkimage/imx-boot_0.2.bbappend +++ b/meta-digi-arm/recipes-bsp/imx-mkimage/imx-boot_0.2.bbappend @@ -33,7 +33,6 @@ do_populate_lic[depends] += " \ ATF_MACHINE_NAME_mx8qxp = "bl31-imx8qx.bin" UBOOT_NAME = "u-boot-${MACHINE}.bin" -BOOT_CONFIG_MACHINE = "${BOOT_NAME}" IMXBOOT_TARGETS_ccimx8x = "${@bb.utils.contains('UBOOT_CONFIG', 'fspi', 'flash_flexspi', \ 'flash flash_regression_linux_m4', d)}" @@ -65,7 +64,7 @@ do_compile () { bbnote "building ${SOC_TARGET} - ${ramc} - ${target}" make SOC=${SOC_TARGET} ${target} if [ -e "${BOOT_STAGING}/flash.bin" ]; then - cp ${BOOT_STAGING}/flash.bin ${S}/${BOOT_CONFIG_MACHINE}-${MACHINE}-${ramc}.bin-${target} + cp ${BOOT_STAGING}/flash.bin ${S}/${UBOOT_PREFIX}-${MACHINE}-${ramc}.bin-${target} fi SCFWBUILT="yes" done @@ -88,7 +87,7 @@ do_install () { install -d ${D}/boot for ramc in ${RAM_CONFIGS}; do for target in ${IMXBOOT_TARGETS}; do - install -m 0644 ${S}/${BOOT_CONFIG_MACHINE}-${MACHINE}-${ramc}.bin-${target} ${D}/boot/ + install -m 0644 ${S}/${UBOOT_PREFIX}-${MACHINE}-${ramc}.bin-${target} ${D}/boot/ done done } @@ -114,13 +113,13 @@ do_deploy () { IMAGE_IMXBOOT_TARGET="$target" echo "Set boot target as $IMAGE_IMXBOOT_TARGET" fi - install -m 0644 ${S}/${BOOT_CONFIG_MACHINE}-${MACHINE}-${ramc}.bin-${target} ${DEPLOYDIR} + install -m 0644 ${S}/${UBOOT_PREFIX}-${MACHINE}-${ramc}.bin-${target} ${DEPLOYDIR} done cd ${DEPLOYDIR} - ln -sf ${BOOT_CONFIG_MACHINE}-${MACHINE}-${ramc}.bin-${IMAGE_IMXBOOT_TARGET} ${BOOT_CONFIG_MACHINE}-${MACHINE}-${ramc}.bin + ln -sf ${UBOOT_PREFIX}-${MACHINE}-${ramc}.bin-${IMAGE_IMXBOOT_TARGET} ${UBOOT_PREFIX}-${MACHINE}-${ramc}.bin # Link to default bootable U-Boot filename. It gets overwritten # on every loop so the only last RAM_CONFIG will survive. - ln -sf ${BOOT_CONFIG_MACHINE}-${MACHINE}-${ramc}.bin-${IMAGE_IMXBOOT_TARGET} ${BOOTABLE_FILENAME} + ln -sf ${UBOOT_PREFIX}-${MACHINE}-${ramc}.bin-${IMAGE_IMXBOOT_TARGET} ${BOOTABLE_FILENAME} cd - done } From 00ac4445bc7a4804b9c98cdef7fccf99d73513d1 Mon Sep 17 00:00:00 2001 From: Hector Palacios Date: Thu, 11 Jul 2019 12:03:08 +0200 Subject: [PATCH 087/133] imx-boot: avoid renaming files during internal copy stages Temporary files were being renamed for no good reason. Remove renamings to simplify recipe. Signed-off-by: Hector Palacios --- .../recipes-bsp/imx-mkimage/imx-boot_0.2.bbappend | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/meta-digi-arm/recipes-bsp/imx-mkimage/imx-boot_0.2.bbappend b/meta-digi-arm/recipes-bsp/imx-mkimage/imx-boot_0.2.bbappend index f2ceb3554..77cbb9314 100644 --- a/meta-digi-arm/recipes-bsp/imx-mkimage/imx-boot_0.2.bbappend +++ b/meta-digi-arm/recipes-bsp/imx-mkimage/imx-boot_0.2.bbappend @@ -32,8 +32,6 @@ do_populate_lic[depends] += " \ " ATF_MACHINE_NAME_mx8qxp = "bl31-imx8qx.bin" -UBOOT_NAME = "u-boot-${MACHINE}.bin" - IMXBOOT_TARGETS_ccimx8x = "${@bb.utils.contains('UBOOT_CONFIG', 'fspi', 'flash_flexspi', \ 'flash flash_regression_linux_m4', d)}" @@ -44,10 +42,10 @@ do_compile () { cp ${DEPLOY_DIR_IMAGE}/mx8qx-ahab-container.img ${BOOT_STAGING}/ cp ${DEPLOY_DIR_IMAGE}/${BOOT_TOOLS}/${ATF_MACHINE_NAME} ${BOOT_STAGING}/bl31.bin for type in ${UBOOT_CONFIG}; do - cp ${DEPLOY_DIR_IMAGE}/${BOOT_TOOLS}/${UBOOT_NAME}-${type} ${BOOT_STAGING}/u-boot.bin-${type} + cp ${DEPLOY_DIR_IMAGE}/${BOOT_TOOLS}/u-boot-${type}.bin ${BOOT_STAGING}/ done for ramc in ${RAM_CONFIGS}; do - cp ${DEPLOY_DIR_IMAGE}/${BOOT_TOOLS}/${SC_FIRMWARE_NAME}-${ramc} ${BOOT_STAGING}/scfw_tcm.bin-${ramc} + cp ${DEPLOY_DIR_IMAGE}/${BOOT_TOOLS}/${SC_FIRMWARE_NAME}-${ramc} ${BOOT_STAGING}/ done # mkimage for i.MX8 @@ -57,8 +55,8 @@ do_compile () { if echo "${ramc}" | grep -qs "${RAM_SIZE}"; then # Match U-Boot memory size and and SCFW memory configuration cd ${BOOT_STAGING} - ln -sf u-boot.bin-${type} u-boot.bin - ln -sf scfw_tcm.bin-${ramc} scfw_tcm.bin + ln -sf u-boot-${type}.bin u-boot.bin + ln -sf ${SC_FIRMWARE_NAME}-${ramc} scfw_tcm.bin cd - for target in ${IMXBOOT_TARGETS}; do bbnote "building ${SOC_TARGET} - ${ramc} - ${target}" From 7d61198cc87272e88c0dd769683985e9579fc15c Mon Sep 17 00:00:00 2001 From: Hector Palacios Date: Thu, 11 Jul 2019 12:06:42 +0200 Subject: [PATCH 088/133] imx-boot: iterate on matching RAM sizes in do_install/do_append The existing loops were iterating through all RAM_CONFIGS, but they must only iterate over those that match the RAM size on the platform's UBOOT_CONFIG. This commit adds a Python class 'boot-artifacts' to get the list of matching combinations of RAM_CONFIGS and UBOOT_CONFIG so that the iteration is easier to do than nesting loops inside one another. Signed-off-by: Hector Palacios https://jira.digi.com/browse/DEL-6641 --- meta-digi-arm/classes/boot-artifacts.bbclass | 26 +++++++++++++++++++ .../imx-mkimage/imx-boot_0.2.bbappend | 5 ++-- 2 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 meta-digi-arm/classes/boot-artifacts.bbclass diff --git a/meta-digi-arm/classes/boot-artifacts.bbclass b/meta-digi-arm/classes/boot-artifacts.bbclass new file mode 100644 index 000000000..3ca896e6f --- /dev/null +++ b/meta-digi-arm/classes/boot-artifacts.bbclass @@ -0,0 +1,26 @@ +# Class for the generation of boot artifacts + +# This function returns a list with the RAM_CONFIGS that match the RAM size +# in the list of UBOOT_CONFIG +def get_uboot_ram_combinations(d): + import re + + types = d.getVar('UBOOT_CONFIG', True) or "" + ram_configs = d.getVar('RAM_CONFIGS', True) or "" + + # Convert to arrays + types = types.split(" ") + ram_configs = ram_configs.split(" ") + + # Obtain the list of RAM_CONFIGS for whose RAM size there is a match + # in UBOOT_CONFIG + matches = [] + for type in types: + ramsize = re.search("([0-9]*[G|M]B)", type).group(1) + for ramc in ram_configs: + if ramsize in ramc: + matches.append(ramc) + + return " ".join(matches) + +UBOOT_RAM_COMBINATIONS = "${@get_uboot_ram_combinations(d)}" diff --git a/meta-digi-arm/recipes-bsp/imx-mkimage/imx-boot_0.2.bbappend b/meta-digi-arm/recipes-bsp/imx-mkimage/imx-boot_0.2.bbappend index 77cbb9314..d7c5a16cb 100644 --- a/meta-digi-arm/recipes-bsp/imx-mkimage/imx-boot_0.2.bbappend +++ b/meta-digi-arm/recipes-bsp/imx-mkimage/imx-boot_0.2.bbappend @@ -1,4 +1,5 @@ # Copyright 2019 Digi International, Inc. +inherit boot-artifacts # Use the v4.14 ga BSP branch SRCBRANCH = "imx_4.14.98_2.0.0_ga" @@ -83,7 +84,7 @@ do_compile () { do_install () { install -d ${D}/boot - for ramc in ${RAM_CONFIGS}; do + for ramc in ${UBOOT_RAM_COMBINATIONS}; do for target in ${IMXBOOT_TARGETS}; do install -m 0644 ${S}/${UBOOT_PREFIX}-${MACHINE}-${ramc}.bin-${target} ${D}/boot/ done @@ -103,7 +104,7 @@ do_deploy () { install -m 0644 ${BOOT_STAGING}/soc.mak ${DEPLOYDIR}/${BOOT_TOOLS} # copy the generated boot image to deploy path - for ramc in ${RAM_CONFIGS}; do + for ramc in ${UBOOT_RAM_COMBINATIONS}; do IMAGE_IMXBOOT_TARGET="" for target in ${IMXBOOT_TARGETS}; do # Use first "target" as IMAGE_IMXBOOT_TARGET From 65ec66b659cfce335678e01343b0b3b530004c2d Mon Sep 17 00:00:00 2001 From: Hector Palacios Date: Thu, 11 Jul 2019 12:25:11 +0200 Subject: [PATCH 089/133] dey-image-installer: loop on new BOOTABLE_ARTIFACTS variable The artifacts that must go inside the installer ZIP image are not anymore the ones in UBOOT_CONFIG. For CC8X, the artifacts are combinations of UBOOT_CONFIG and RAM_CONFIGS. This commit adds a function 'get_bootable_artifacts()' to boot-artifacts class to generate a new variable BOOTABLE_ARTIFACTS with the list of bootable artifacts DEY produces. The installer recipe can then simply iterate on that list, rather than needing to calculate it by itself. Signed-off-by: Hector Palacios https://jira.digi.com/browse/DEL-6641 --- meta-digi-arm/classes/boot-artifacts.bbclass | 24 +++++++++++++++++++ .../conf/machine/include/digi-defaults.inc | 1 + .../classes/dey-image-installer.bbclass | 7 +++--- 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/meta-digi-arm/classes/boot-artifacts.bbclass b/meta-digi-arm/classes/boot-artifacts.bbclass index 3ca896e6f..f0195bd8c 100644 --- a/meta-digi-arm/classes/boot-artifacts.bbclass +++ b/meta-digi-arm/classes/boot-artifacts.bbclass @@ -24,3 +24,27 @@ def get_uboot_ram_combinations(d): return " ".join(matches) UBOOT_RAM_COMBINATIONS = "${@get_uboot_ram_combinations(d)}" + +# This function returns a list with the bootable artifacts +def get_bootable_artifacts(d): + import re + + types = d.getVar('UBOOT_CONFIG', True) or "" + ram_configs = d.getVar('RAM_CONFIGS', True) or "" + uboot_prefix = d.getVar('UBOOT_PREFIX', True) or "" + uboot_suffix = d.getVar('UBOOT_SUFFIX', True) or "" + artifacts = [] + + # For platforms without RAM_CONFIGS, build the artifacts from UBOOT_CONFIG + if ram_configs == "": + for t in types.split(" "): + artifacts.append("%s-%s.%s" % (uboot_prefix, t, uboot_suffix)) + return " ".join(artifacts) + else: + machine = d.getVar('MACHINE', True) or "" + ram_combinations = get_uboot_ram_combinations(d) + for ramc in ram_combinations.split(" "): + artifacts.append("%s-%s-%s.%s" % (uboot_prefix, machine, ramc, uboot_suffix)) + return " ".join(artifacts) + +BOOTABLE_ARTIFACTS = "${@get_bootable_artifacts(d)}" diff --git a/meta-digi-arm/conf/machine/include/digi-defaults.inc b/meta-digi-arm/conf/machine/include/digi-defaults.inc index 55fc19ba0..0063dbc43 100644 --- a/meta-digi-arm/conf/machine/include/digi-defaults.inc +++ b/meta-digi-arm/conf/machine/include/digi-defaults.inc @@ -53,3 +53,4 @@ MACHINEOVERRIDES .= "${@['', ':${MACHINE_VARIANT}']['${MACHINE_VARIANT}' != '']} # U-Boot symlink UBOOT_SYMLINK ?= "${UBOOT_PREFIX}-${MACHINE}.${UBOOT_SUFFIX}" +BOOTABLE_ARTIFACTS ?= "" diff --git a/meta-digi-dey/classes/dey-image-installer.bbclass b/meta-digi-dey/classes/dey-image-installer.bbclass index bea197890..6a543c76f 100644 --- a/meta-digi-dey/classes/dey-image-installer.bbclass +++ b/meta-digi-dey/classes/dey-image-installer.bbclass @@ -3,6 +3,7 @@ # # Copyright 2017, Digi International Inc. # +inherit boot-artifacts DEPENDS += "zip-native" @@ -26,9 +27,9 @@ generate_installer_zip () { INSTALLER_FILELIST="${INSTALLER_FILELIST} ${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.${ext}" fi done - for ubconf in ${UBOOT_CONFIG}; do - if readlink -e "${DEPLOY_DIR_IMAGE}/${UBOOT_PREFIX}-${ubconf}.${UBOOT_SUFFIX}" >/dev/null; then - INSTALLER_FILELIST="${INSTALLER_FILELIST} ${DEPLOY_DIR_IMAGE}/${IMAGE_BOOTLOADER}-${ubconf}.${UBOOT_SUFFIX}" + for artifact in ${BOOTABLE_ARTIFACTS}; do + if readlink -e "${DEPLOY_DIR_IMAGE}/${artifact}" >/dev/null; then + INSTALLER_FILELIST="${INSTALLER_FILELIST} ${DEPLOY_DIR_IMAGE}/${artifact}" fi done From 6eb3bd001c780c2ca173e35739844d1359136d74 Mon Sep 17 00:00:00 2001 From: Hector Palacios Date: Fri, 12 Jul 2019 10:53:57 +0200 Subject: [PATCH 090/133] ccimx8x: change bootable artifacts filenames on U-Boot install script After the recent changes to generate the bootable artifacts, these are now formed using the ${MACHINE} variable rather than the string in ${UBOOT_CONFIG} array, so the underscores must be changed with dashes. Signed-off-by: Hector Palacios --- .../install_linux_fw_sd.txt | 14 +++++++------- .../ccimx8x-sbc-pro/install_linux_fw_sd.txt | 18 +++++++++--------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-express/install_linux_fw_sd.txt b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-express/install_linux_fw_sd.txt index 22f943d5b..08541df59 100644 --- a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-express/install_linux_fw_sd.txt +++ b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-express/install_linux_fw_sd.txt @@ -26,18 +26,18 @@ if test -n "${module_ram}" && test -n "${soc_type}"; then if test "${soc_type}" == "dx"; then bus_width="16bit" fi - setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_express-${ram_freq}_${module_ram}_${bus_width}.bin; + setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x-sbc-express-${ram_freq}_${module_ram}_${bus_width}.bin; else # Determine U-Boot file to program basing on SOM's variant if test -n "${module_variant}"; then if test "${module_variant}" = "0x01"; then - setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_express-1.2GHz_1GB_32bit.bin; + setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x-sbc-express-1.2GHz_1GB_32bit.bin; elif test "${module_variant}" = "0x02" || test "${module_variant}" = "0x03"; then - setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_express-1.2GHz_2GB_32bit.bin; + setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x-sbc-express-1.2GHz_2GB_32bit.bin; elif test "${module_variant}" = "0x04" || test "${module_variant}" = "0x05"; then - setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_express-1.2GHz_1GB_16bit.bin; + setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x-sbc-express-1.2GHz_1GB_16bit.bin; fi fi fi @@ -52,11 +52,11 @@ else echo ""; echo "1. Set variable 'INSTALL_UBOOT_FILENAME' depending on your ConnectCore 8X variant:"; echo " - For a QuadXPlus CPU with 1GB LPDDR4, run:"; - echo " => setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_express-1.2GHz_1GB_32bit.bin"; + echo " => setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x-sbc-express-1.2GHz_1GB_32bit.bin"; echo " - For a QuadXPlus CPU with 2GB LPDDR4, run:"; - echo " => setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_express-1.2GHz_2GB_32bit.bin"; + echo " => setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x-sbc-express-1.2GHz_2GB_32bit.bin"; echo " - For a DualX CPU with 1GB LPDDR4, run:"; - echo " => setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_express-1.2GHz_1GB_16bit.bin"; + echo " => setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x-sbc-express-1.2GHz_1GB_16bit.bin"; echo ""; echo "2. Run the install script again."; echo ""; diff --git a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-pro/install_linux_fw_sd.txt b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-pro/install_linux_fw_sd.txt index a2f1162b9..731bd4029 100644 --- a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-pro/install_linux_fw_sd.txt +++ b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-pro/install_linux_fw_sd.txt @@ -26,20 +26,20 @@ if test -n "${module_ram}" && test -n "${soc_type}"; then if test "${soc_type}" == "dx"; then bus_width="16bit" fi - setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_pro-${ram_freq}_${module_ram}_${bus_width}.bin; + setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x-sbc-pro-${ram_freq}_${module_ram}_${bus_width}.bin; else # Determine U-Boot file to program basing on SOM's variant if test -n "${module_variant}"; then if test "${module_variant}" = "0x01"; then - setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_pro-1.2GHz_1GB_32bit.bin; + setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x-sbc-pro-1.2GHz_1GB_32bit.bin; elif test "${module_variant}" = "0x02" || test "${module_variant}" = "0x03"; then - setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_pro-1.2GHz_2GB_32bit.bin; + setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x-sbc-pro-1.2GHz_2GB_32bit.bin; elif test "${module_variant}" = "0x04" || test "${module_variant}" = "0x05"; then - setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_pro-1.2GHz_1GB_16bit.bin; + setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x-sbc-pro-1.2GHz_1GB_16bit.bin; elif test "${module_variant}" = "0x06"; then - setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_pro-1.2GHz_512GB_16bit.bin; + setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x-sbc-pro-1.2GHz_512GB_16bit.bin; fi fi fi @@ -54,13 +54,13 @@ else echo ""; echo "1. Set variable 'INSTALL_UBOOT_FILENAME' depending on your ConnectCore 8X variant:"; echo " - For a QuadXPlus CPU with 1GB LPDDR4, run:"; - echo " => setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_pro-1.2GHz_1GB_32bit.bin"; + echo " => setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x-sbc-pro-1.2GHz_1GB_32bit.bin"; echo " - For a QuadXPlus CPU with 2GB LPDDR4, run:"; - echo " => setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_pro-1.2GHz_2GB_32bit.bin"; + echo " => setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x-sbc-pro-1.2GHz_2GB_32bit.bin"; echo " - For a DualX CPU with 1GB LPDDR4, run:"; - echo " => setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_pro-1.2GHz_1GB_16bit.bin"; + echo " => setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x-sbc-pro-1.2GHz_1GB_16bit.bin"; echo " - For a DualX CPU with 512MB LPDDR4, run:"; - echo " => setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x_sbc_pro-1.2GHz_512MB_16bit.bin"; + echo " => setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x-sbc-pro-1.2GHz_512MB_16bit.bin"; echo ""; echo "2. Run the install script again."; echo ""; From 79848fbc1081593e1473f5ea135fe40e029cf13d Mon Sep 17 00:00:00 2001 From: Arturo Buzarra Date: Fri, 28 Jun 2019 09:26:11 +0200 Subject: [PATCH 091/133] dey-examples-v4l2: Generalize recipe to fix build error with ccimx8x platform. https://jira.digi.com/browse/DEL-6653 Signed-off-by: Arturo Buzarra --- meta-digi-dey/recipes-digi/dey-examples/dey-examples-v4l2.bb | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/meta-digi-dey/recipes-digi/dey-examples/dey-examples-v4l2.bb b/meta-digi-dey/recipes-digi/dey-examples/dey-examples-v4l2.bb index 92631171b..f233abfbe 100644 --- a/meta-digi-dey/recipes-digi/dey-examples/dey-examples-v4l2.bb +++ b/meta-digi-dey/recipes-digi/dey-examples/dey-examples-v4l2.bb @@ -5,11 +5,10 @@ SECTION = "examples" LICENSE = "GPL-2.0" LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6" -DEPENDS = "virtual/kernel" +inherit use-imx-headers SRC_URI = "file://v4l2_test" -INCLUDE_PATH = "-I${STAGING_KERNEL_DIR}/include" -INCLUDE_PATH_ccimx6 = "-I${STAGING_KERNEL_DIR}/arch/arm/include -I${STAGING_KERNEL_DIR}/include/uapi -I${STAGING_KERNEL_DIR}/include" +INCLUDE_PATH = "-I${STAGING_INCDIR_IMX}" S = "${WORKDIR}/v4l2_test" From 1d68514a508f4c17326c326e203795f809751f10 Mon Sep 17 00:00:00 2001 From: Arturo Buzarra Date: Wed, 19 Jun 2019 10:53:21 +0200 Subject: [PATCH 092/133] packagegroup-dey-core: add pciutils package for platforms that support PCI Signed-off-by: Arturo Buzarra --- meta-digi-arm/conf/machine/include/ccimx6.inc | 2 +- meta-digi-arm/conf/machine/include/ccimx8x.inc | 2 +- .../recipes-core/packagegroups/packagegroup-dey-core.bb | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/meta-digi-arm/conf/machine/include/ccimx6.inc b/meta-digi-arm/conf/machine/include/ccimx6.inc index 419bc8150..0e4240e1a 100644 --- a/meta-digi-arm/conf/machine/include/ccimx6.inc +++ b/meta-digi-arm/conf/machine/include/ccimx6.inc @@ -40,4 +40,4 @@ MACHINE_EXTRA_RRECOMMENDS += " \ cryptodev-module \ " -MACHINE_FEATURES += "accel-graphics accel-video wifi bluetooth" +MACHINE_FEATURES += "accel-graphics accel-video wifi bluetooth pci" diff --git a/meta-digi-arm/conf/machine/include/ccimx8x.inc b/meta-digi-arm/conf/machine/include/ccimx8x.inc index 35d82a07c..0caea5a08 100644 --- a/meta-digi-arm/conf/machine/include/ccimx8x.inc +++ b/meta-digi-arm/conf/machine/include/ccimx8x.inc @@ -51,7 +51,7 @@ MACHINE_EXTRA_RRECOMMENDS += " \ cryptoauthlib \ " -MACHINE_FEATURES += "accel-graphics accel-video wifi bluetooth cryptochip" +MACHINE_FEATURES += "accel-graphics accel-video wifi bluetooth cryptochip pci" # AARCH64 doesn't support self-extracting zImage KERNEL_IMAGETYPE = "Image.gz" diff --git a/meta-digi-dey/recipes-core/packagegroups/packagegroup-dey-core.bb b/meta-digi-dey/recipes-core/packagegroups/packagegroup-dey-core.bb index 284bcfa0d..bc74e9adf 100644 --- a/meta-digi-dey/recipes-core/packagegroups/packagegroup-dey-core.bb +++ b/meta-digi-dey/recipes-core/packagegroups/packagegroup-dey-core.bb @@ -43,6 +43,7 @@ RDEPENDS_${PN} = "\ netbase \ networkmanager \ os-release \ + ${@bb.utils.contains('MACHINE_FEATURES', 'pci', 'pciutils', '',d)} \ recovery-utils \ sysinfo \ system-monitor \ From c81f31385be0f6a96776bdf150af539b8a7a77ad Mon Sep 17 00:00:00 2001 From: Jose Diaz de Grenu Date: Wed, 17 Jul 2019 10:06:16 +0200 Subject: [PATCH 093/133] Revert "thud migration: Use GCC compiler 7.x to maintain compatibility with some packages" After some fixes to cloudconnector, all packages compile with the standard GCC version in Yocto Thud (gcc 8.2). Some other packages are broken if we do not use the expected GCC version for Thud. Specifically, this was detected trying to compile docker. This reverts commit ddd14144c3239bf6af654fbd57c9136d2983f189. --- meta-digi-dey/conf/distro/dey.conf | 4 ---- 1 file changed, 4 deletions(-) diff --git a/meta-digi-dey/conf/distro/dey.conf b/meta-digi-dey/conf/distro/dey.conf index a11819e54..2b1380cb3 100644 --- a/meta-digi-dey/conf/distro/dey.conf +++ b/meta-digi-dey/conf/distro/dey.conf @@ -44,10 +44,6 @@ FEATURE_PACKAGES_dey-qt = "packagegroup-dey-qt" FEATURE_PACKAGES_dey-trustfence = "packagegroup-dey-trustfence" FEATURE_PACKAGES_dey-wireless = "packagegroup-dey-wireless" -# Use GCC compiler version 7.x to maintain compatibility with -# several packages without support yet like gstreamer-imx plugins -GCCVERSION ?= "7.%" - # Our layer only provides version 5.41, which we want to keep because # it was used for Bluetooth certification. However by default the newer # 5.50 version should be used, which is provided by the poky layer. From acb150e8c75b75943f061c8f783e1a8047769341 Mon Sep 17 00:00:00 2001 From: Jose Diaz de Grenu Date: Thu, 18 Jul 2019 13:08:41 +0200 Subject: [PATCH 094/133] lvm2: remove bbappend, superseded by meta-oe upstream The functionality provided by this bbappend is now available in meta-oe upstream, commit 7f17da154372b5ec33947766783444961e8aa67c. Signed-off-by: Jose Diaz de Grenu --- meta-digi-dey/recipes-support/lvm2/lvm2_%.bbappend | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 meta-digi-dey/recipes-support/lvm2/lvm2_%.bbappend diff --git a/meta-digi-dey/recipes-support/lvm2/lvm2_%.bbappend b/meta-digi-dey/recipes-support/lvm2/lvm2_%.bbappend deleted file mode 100644 index a467c444f..000000000 --- a/meta-digi-dey/recipes-support/lvm2/lvm2_%.bbappend +++ /dev/null @@ -1,6 +0,0 @@ -# Copyright (C) 2016 Digi International. - -# Split libraries into a different package -PACKAGES =+ "lib${PN}" - -FILES_lib${PN} = "${libdir}/lib*.so.*" From 42612e112ef3bd0fdf63f6dc2f18e958dfdbded1 Mon Sep 17 00:00:00 2001 From: Mike Engel Date: Mon, 22 Jul 2019 09:39:43 +0200 Subject: [PATCH 095/133] meta-digi-dey: base-file: disable file system check on the root file system partition when encrypted This commit disables file system check on the root file system when it is encrypted. This prevents the service from failing on encrypted rootfs with the message: [FAILED] Failed to mount /run/media/mmcblk0p3. See 'systemctl status run-media-mmcblk0p3.mount' for details. Signed-off-by: Mike Engel https://jira.digi.com/browse/DEL-6655 --- .../base-files/base-files_3.0.14.bbappend | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/meta-digi-dey/recipes-core/base-files/base-files_3.0.14.bbappend b/meta-digi-dey/recipes-core/base-files/base-files_3.0.14.bbappend index 8173b2067..657b70da0 100644 --- a/meta-digi-dey/recipes-core/base-files/base-files_3.0.14.bbappend +++ b/meta-digi-dey/recipes-core/base-files/base-files_3.0.14.bbappend @@ -1,4 +1,4 @@ -# Copyright (C) 2013-2018 Digi International. +# Copyright (C) 2013-2019 Digi International. FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:" @@ -34,6 +34,22 @@ pkg_postinst_ontarget_${PN}() { fi done fi + + # Disable file system check when rootfs is encrypted + if [ -n "${TRUSTFENCE_INITRAMFS_IMAGE}" ]; then + for arg in $(cat /proc/cmdline); do + case "${arg}" in + root=*) eval ${arg};; + esac + done + # Are we running from NAND + if echo "${root}" | grep -qs ubi; then + root="/dev/${root}" + else + root="$(findfs ${root})" + fi + echo "${root} / auto defaults 0 0" >> /etc/fstab + fi } CONFFILES_${PN} += "${sysconfdir}/sysctl.conf" From a1e25003ec00036b57d3ee6131f851b0f3b3509a Mon Sep 17 00:00:00 2001 From: Jose Diaz de Grenu Date: Thu, 18 Jul 2019 17:34:24 +0200 Subject: [PATCH 096/133] linux-dey: add docker kernel configuration support When using virtualization, ammend the kernel configuration so that docker is supported. https://jira.digi.com/browse/DEL-6681 Signed-off-by: Jose Diaz de Grenu --- .../recipes-kernel/linux/linux-dey.inc | 1 + .../linux/linux-virtualization.inc | 101 ++++++++++++++++++ 2 files changed, 102 insertions(+) create mode 100644 meta-digi-arm/recipes-kernel/linux/linux-virtualization.inc diff --git a/meta-digi-arm/recipes-kernel/linux/linux-dey.inc b/meta-digi-arm/recipes-kernel/linux/linux-dey.inc index 4e9520d9c..0575fb967 100644 --- a/meta-digi-arm/recipes-kernel/linux/linux-dey.inc +++ b/meta-digi-arm/recipes-kernel/linux/linux-dey.inc @@ -10,6 +10,7 @@ DEPENDS += "${@oe.utils.conditional('TRUSTFENCE_SIGN', '1', 'trustfence-sign-too inherit kernel fsl-kernel-localversion require recipes-kernel/linux/linux-dey-src.inc +require ${@bb.utils.contains('DISTRO_FEATURES', 'virtualization', 'linux-virtualization.inc', '', d)} # Use custom provided 'defconfig' if variable KERNEL_DEFCONFIG is cleared SRC_URI += "${@oe.utils.conditional('KERNEL_DEFCONFIG', '', 'file://defconfig', '', d)}" diff --git a/meta-digi-arm/recipes-kernel/linux/linux-virtualization.inc b/meta-digi-arm/recipes-kernel/linux/linux-virtualization.inc new file mode 100644 index 000000000..7e7b6fd4c --- /dev/null +++ b/meta-digi-arm/recipes-kernel/linux/linux-virtualization.inc @@ -0,0 +1,101 @@ +# Copyright (C) 2019 Digi International + +# Apply kernel configuration required for Docker +do_configure_prepend() { + mkdir -p ${B} + + kernel_conf_variable NETFILTER_XT_MATCH_ADDRTYPE m + kernel_conf_variable IP_NF_FILTER m + kernel_conf_variable NF_CONNTRACK_IPV4 y + kernel_conf_variable DM_THIN_PROVISIONING m + kernel_conf_variable IP_NF_NAT m + kernel_conf_variable IP_NF_TARGET_MASQUERADE m + kernel_conf_variable OVERLAY_FS y + kernel_conf_variable CGROUP_DEVICE y + kernel_conf_variable CPUSETS y + kernel_conf_variable PROC_PID_CPUSET y + kernel_conf_variable RESOURCE_COUNTERS y + kernel_conf_variable CGROUP_MEM_RES_CTLR y + kernel_conf_variable CGROUP_SCHED y + kernel_conf_variable FAIR_GROUP_SCHED y + kernel_conf_variable RT_GROUP_SCHED y + kernel_conf_variable CHECKPOINT_RESTORE y + kernel_conf_variable NAMESPACES y + kernel_conf_variable UTS_NS y + kernel_conf_variable IPC_NS y + kernel_conf_variable USER_NS y + kernel_conf_variable PID_NS y + kernel_conf_variable NET_NS y + kernel_conf_variable CLS_CGROUP m + kernel_conf_variable BLK_CGROUP y + kernel_conf_variable NETPRIO_CGROUP m + kernel_conf_variable DEVPTS_MULTIPLE_INSTANCES y + kernel_conf_variable VIRTIO_BLK y + kernel_conf_variable SCSI_VIRTIO y + kernel_conf_variable VIRTIO_NET m + kernel_conf_variable HVC_DRIVER y + kernel_conf_variable VIRTIO_CONSOLE y + kernel_conf_variable HW_RANDOM_VIRTIO m + kernel_conf_variable VIRTIO y + kernel_conf_variable VIRTIO_RING y + kernel_conf_variable VIRTIO_PCI y + kernel_conf_variable VIRTIO_BALLOON y + kernel_conf_variable VIRTIO_MMIO y + kernel_conf_variable BLK_DEV_LOOP y + kernel_conf_variable NLS_CODEPAGE_437 y + kernel_conf_variable NLS_ISO8859_1 y + kernel_conf_variable VFAT_FS y + kernel_conf_variable RD_GZIP y + kernel_conf_variable VETH y + kernel_conf_variable MACVLAN y + kernel_conf_variable OPENVSWITCH m + kernel_conf_variable NET_SCH_INGRESS m + kernel_conf_variable NET_ACT_POLICE m + kernel_conf_variable BRIDGE_NF_EBTABLES m + kernel_conf_variable BRIDGE_EBT_T_NAT m + kernel_conf_variable NETFILTER_XT_TARGET_CHECKSUM m + kernel_conf_variable CHECKPOINT_RESTORE y + kernel_conf_variable CGROUP_FREEZER y + kernel_conf_variable BRIDGE_NETFILTER y + kernel_conf_variable NETFILTER_XT_MATCH_IPVS m + + # Symbol dependencies + kernel_conf_variable IP_VS y + kernel_conf_variable NETFILTER_ADVANCED y + kernel_conf_variable NETFILTER_NETLINK_LOG y + kernel_conf_variable NF_CONNTRACK y + kernel_conf_variable NETFILTER_XTABLES y + kernel_conf_variable NF_LOG_IPV4 y + kernel_conf_variable NF_REJECT_IPV4 y + kernel_conf_variable IP_NF_IPTABLES y + kernel_conf_variable NF_LOG_IPV6 y + kernel_conf_variable NAMESPACES y + kernel_conf_variable EXPERT y + kernel_conf_variable NETFILTER_ADVANCED y + kernel_conf_variable NF_LOG_ARP y + kernel_conf_variable NF_CONNTRACK_FTP m + kernel_conf_variable NF_CONNTRACK_IRC m + kernel_conf_variable NF_CONNTRACK_SIP m + kernel_conf_variable NF_CT_NETLINK m + kernel_conf_variable NETFILTER_XT_MARK m + kernel_conf_variable NETFILTER_XT_TARGET_CHECKSUM m + kernel_conf_variable NETFILTER_XT_TARGET_LOG m + kernel_conf_variable NETFILTER_XT_TARGET_NFLOG m + kernel_conf_variable NETFILTER_XT_TARGET_TCPMSS m + kernel_conf_variable NETFILTER_XT_MATCH_CONNTRACK m + kernel_conf_variable NETFILTER_XT_MATCH_POLICY m + kernel_conf_variable NETFILTER_XT_MATCH_STATE m + kernel_conf_variable NF_REJECT_IPV6 y + kernel_conf_variable IP_NF_TARGET_REJECT m + kernel_conf_variable IP_NF_MANGLE m + kernel_conf_variable NF_CONNTRACK_IPV6 m + kernel_conf_variable IP6_NF_IPTABLES y + kernel_conf_variable NET_SCHED y + kernel_conf_variable NET_SCH_INGRESS m + kernel_conf_variable NET_CLS_ACT y + kernel_conf_variable NET_ACT_POLICE m + + sed -e "${CONF_SED_SCRIPT}" < '${WORKDIR}/defconfig' >> '${B}/.config' +} + +KERNEL_MODULE_AUTOLOAD += "nf_conntrack_ipv6 openvswitch" From 03d40edfd0215a6a421e7567fd75606331b338d2 Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Fri, 19 Jul 2019 11:10:40 +0200 Subject: [PATCH 097/133] imx-boot: add patch to fix imx-boot images with M4 demos These images were broken in many ways, including ethernet not working and Linux not booting. For now, revert back to the build command that was used in DEY-2.6-r1. https://jira.digi.com/browse/DEL-6677 Signed-off-by: Gabriel Valcazar --- ..._BD_FLAGS_ALT_CONFIG-flag-in-flash_r.patch | 31 +++++++++++++++++++ .../imx-mkimage/imx-boot_0.2.bbappend | 3 ++ 2 files changed, 34 insertions(+) create mode 100644 meta-digi-arm/recipes-bsp/imx-mkimage/imx-boot/0001-iMX8QX-remove-SC_BD_FLAGS_ALT_CONFIG-flag-in-flash_r.patch diff --git a/meta-digi-arm/recipes-bsp/imx-mkimage/imx-boot/0001-iMX8QX-remove-SC_BD_FLAGS_ALT_CONFIG-flag-in-flash_r.patch b/meta-digi-arm/recipes-bsp/imx-mkimage/imx-boot/0001-iMX8QX-remove-SC_BD_FLAGS_ALT_CONFIG-flag-in-flash_r.patch new file mode 100644 index 000000000..d5467c928 --- /dev/null +++ b/meta-digi-arm/recipes-bsp/imx-mkimage/imx-boot/0001-iMX8QX-remove-SC_BD_FLAGS_ALT_CONFIG-flag-in-flash_r.patch @@ -0,0 +1,31 @@ +From: Gabriel Valcazar +Date: Fri, 19 Jul 2019 10:42:35 +0200 +Subject: [PATCH] iMX8QX: remove SC_BD_FLAGS_ALT_CONFIG flag in + flash_regression_linux_m4 target + +This flag breaks the ccimx8x U-Boot due to the code that is executed in the +SCFW when it's set. Make the build command the same as the "flash_all" target +in the rel_imx_4.14.78_1.0.0_ga tag, since the M4 demos still seem to work as +expected when the flag is removed. The "-p3" parameter also needs to be removed +for the images to boot properly. + +https://jira.digi.com/browse/DEL-6677 + +Signed-off-by: Gabriel Valcazar +--- + iMX8QX/soc.mak | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/iMX8QX/soc.mak b/iMX8QX/soc.mak +index 3c8e7b1..f06ece8 100755 +--- a/iMX8QX/soc.mak ++++ b/iMX8QX/soc.mak +@@ -114,7 +114,7 @@ flash_linux_m4_xip: $(MKIMG) mx8qx-ahab-container.img scfw_tcm.bin u-boot-atf-co + ./$(QSPI_PACKER) $(QSPI_HEADER) + + flash_regression_linux_m4: $(MKIMG) mx8qx-ahab-container.img scfw_tcm.bin u-boot-atf.bin m4_image.bin +- ./$(MKIMG) -soc QX -rev B0 -append mx8qx-ahab-container.img -c -flags 0x00200000 -scfw scfw_tcm.bin -ap u-boot-atf.bin a35 0x80000000 -p3 -m4 m4_image.bin 0 0x34FE0000 -out flash.bin ++ ./$(MKIMG) -soc QX -rev B0 -append mx8qx-ahab-container.img -c -scfw scfw_tcm.bin -ap u-boot-atf.bin a35 0x80000000 -m4 m4_image.bin 0 0x34FE0000 -out flash.bin + + flash_regression_linux_m4_ddr: $(MKIMG) mx8qx-ahab-container.img scfw_tcm.bin u-boot-atf.bin m4_image.bin + ./$(MKIMG) -soc QX -rev B0 -append mx8qx-ahab-container.img -c -flags 0x00200000 -scfw scfw_tcm.bin -ap u-boot-atf.bin a35 0x80000000 -p3 -m4 m4_image.bin 0 0x88000000 -out flash.bin diff --git a/meta-digi-arm/recipes-bsp/imx-mkimage/imx-boot_0.2.bbappend b/meta-digi-arm/recipes-bsp/imx-mkimage/imx-boot_0.2.bbappend index d7c5a16cb..54d02bc29 100644 --- a/meta-digi-arm/recipes-bsp/imx-mkimage/imx-boot_0.2.bbappend +++ b/meta-digi-arm/recipes-bsp/imx-mkimage/imx-boot_0.2.bbappend @@ -5,6 +5,9 @@ inherit boot-artifacts SRCBRANCH = "imx_4.14.98_2.0.0_ga" SRCREV = "dd0234001713623c79be92b60fa88bc07b07f24f" +FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:" +SRC_URI_append_ccimx8x = " file://0001-iMX8QX-remove-SC_BD_FLAGS_ALT_CONFIG-flag-in-flash_r.patch" + IMX_EXTRA_FIRMWARE_ccimx8x = "digi-sc-firmware" DEPENDS_append_ccimx8x = " coreutils-native" From f0024862cdc58b71685960f1db7ecb900d881e0c Mon Sep 17 00:00:00 2001 From: Arturo Buzarra Date: Wed, 24 Jul 2019 16:08:49 +0200 Subject: [PATCH 098/133] u-boot: ccimx8x: fix comparison of the 'if' clause in the install_fw script This commit fixes two issues: - Comparison clause uses only one equal sign - Fix soc_type for Dual variants because the supported soc types for the imx8 processor are: 8qm, 8qxp, and 8dx Signed-off-by: Arturo Buzarra --- .../u-boot-dey/ccimx8x-sbc-express/install_linux_fw_sd.txt | 2 +- .../u-boot/u-boot-dey/ccimx8x-sbc-pro/install_linux_fw_sd.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-express/install_linux_fw_sd.txt b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-express/install_linux_fw_sd.txt index 08541df59..fa5e7d32f 100644 --- a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-express/install_linux_fw_sd.txt +++ b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-express/install_linux_fw_sd.txt @@ -23,7 +23,7 @@ fi ram_freq="1.2GHz" bus_width="32bit" if test -n "${module_ram}" && test -n "${soc_type}"; then - if test "${soc_type}" == "dx"; then + if test "${soc_type}" = "8dx"; then bus_width="16bit" fi setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x-sbc-express-${ram_freq}_${module_ram}_${bus_width}.bin; diff --git a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-pro/install_linux_fw_sd.txt b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-pro/install_linux_fw_sd.txt index 731bd4029..c50c4fa92 100644 --- a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-pro/install_linux_fw_sd.txt +++ b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-pro/install_linux_fw_sd.txt @@ -23,7 +23,7 @@ fi ram_freq="1.2GHz" bus_width="32bit" if test -n "${module_ram}" && test -n "${soc_type}"; then - if test "${soc_type}" == "dx"; then + if test "${soc_type}" = "8dx"; then bus_width="16bit" fi setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x-sbc-pro-${ram_freq}_${module_ram}_${bus_width}.bin; From 1e5cd9685c4bae6ef3f55d101263bc0d7688935c Mon Sep 17 00:00:00 2001 From: Jose Diaz de Grenu Date: Thu, 25 Jul 2019 15:16:02 +0200 Subject: [PATCH 099/133] linux-virtualization: enable only required symbols All the dependencies of the required symbols are also added. These are easier to mantain and enable the minimum support. If extra features are required they shuold be explicitly added. https://jira.digi.com/browse/DEL-6681 Signed-off-by: Jose Diaz de Grenu --- .../linux/linux-virtualization.inc | 115 +++++------------- 1 file changed, 32 insertions(+), 83 deletions(-) diff --git a/meta-digi-arm/recipes-kernel/linux/linux-virtualization.inc b/meta-digi-arm/recipes-kernel/linux/linux-virtualization.inc index 7e7b6fd4c..86deba7d4 100644 --- a/meta-digi-arm/recipes-kernel/linux/linux-virtualization.inc +++ b/meta-digi-arm/recipes-kernel/linux/linux-virtualization.inc @@ -4,96 +4,45 @@ do_configure_prepend() { mkdir -p ${B} - kernel_conf_variable NETFILTER_XT_MATCH_ADDRTYPE m - kernel_conf_variable IP_NF_FILTER m - kernel_conf_variable NF_CONNTRACK_IPV4 y - kernel_conf_variable DM_THIN_PROVISIONING m - kernel_conf_variable IP_NF_NAT m - kernel_conf_variable IP_NF_TARGET_MASQUERADE m - kernel_conf_variable OVERLAY_FS y - kernel_conf_variable CGROUP_DEVICE y - kernel_conf_variable CPUSETS y - kernel_conf_variable PROC_PID_CPUSET y - kernel_conf_variable RESOURCE_COUNTERS y - kernel_conf_variable CGROUP_MEM_RES_CTLR y - kernel_conf_variable CGROUP_SCHED y - kernel_conf_variable FAIR_GROUP_SCHED y - kernel_conf_variable RT_GROUP_SCHED y - kernel_conf_variable CHECKPOINT_RESTORE y kernel_conf_variable NAMESPACES y - kernel_conf_variable UTS_NS y - kernel_conf_variable IPC_NS y - kernel_conf_variable USER_NS y - kernel_conf_variable PID_NS y + kernel_conf_variable MULTIUSER y kernel_conf_variable NET_NS y - kernel_conf_variable CLS_CGROUP m - kernel_conf_variable BLK_CGROUP y - kernel_conf_variable NETPRIO_CGROUP m - kernel_conf_variable DEVPTS_MULTIPLE_INSTANCES y - kernel_conf_variable VIRTIO_BLK y - kernel_conf_variable SCSI_VIRTIO y - kernel_conf_variable VIRTIO_NET m - kernel_conf_variable HVC_DRIVER y - kernel_conf_variable VIRTIO_CONSOLE y - kernel_conf_variable HW_RANDOM_VIRTIO m - kernel_conf_variable VIRTIO y - kernel_conf_variable VIRTIO_RING y - kernel_conf_variable VIRTIO_PCI y - kernel_conf_variable VIRTIO_BALLOON y - kernel_conf_variable VIRTIO_MMIO y - kernel_conf_variable BLK_DEV_LOOP y - kernel_conf_variable NLS_CODEPAGE_437 y - kernel_conf_variable NLS_ISO8859_1 y - kernel_conf_variable VFAT_FS y - kernel_conf_variable RD_GZIP y - kernel_conf_variable VETH y - kernel_conf_variable MACVLAN y - kernel_conf_variable OPENVSWITCH m - kernel_conf_variable NET_SCH_INGRESS m - kernel_conf_variable NET_ACT_POLICE m - kernel_conf_variable BRIDGE_NF_EBTABLES m - kernel_conf_variable BRIDGE_EBT_T_NAT m - kernel_conf_variable NETFILTER_XT_TARGET_CHECKSUM m - kernel_conf_variable CHECKPOINT_RESTORE y + kernel_conf_variable NET y + kernel_conf_variable PID_NS y + kernel_conf_variable IPC_NS y + kernel_conf_variable POSIX_MQUEUE y + kernel_conf_variable UTS_NS y + kernel_conf_variable CGROUPS y + kernel_conf_variable CGROUP_CPUACCT y + kernel_conf_variable CGROUP_DEVICE y kernel_conf_variable CGROUP_FREEZER y + kernel_conf_variable CGROUP_SCHED y + kernel_conf_variable CPUSETS y + kernel_conf_variable SMP y + kernel_conf_variable MEMCG y + kernel_conf_variable KEYS y + kernel_conf_variable VETH y + kernel_conf_variable NETDEVICES y + kernel_conf_variable NET_CORE y + kernel_conf_variable BRIDGE y kernel_conf_variable BRIDGE_NETFILTER y - kernel_conf_variable NETFILTER_XT_MATCH_IPVS m - - # Symbol dependencies - kernel_conf_variable IP_VS y + kernel_conf_variable NETFILTER y + kernel_conf_variable INET y kernel_conf_variable NETFILTER_ADVANCED y - kernel_conf_variable NETFILTER_NETLINK_LOG y + kernel_conf_variable NF_NAT_IPV4 y + kernel_conf_variable NF_CONNTRACK_IPV4 y kernel_conf_variable NF_CONNTRACK y - kernel_conf_variable NETFILTER_XTABLES y - kernel_conf_variable NF_LOG_IPV4 y - kernel_conf_variable NF_REJECT_IPV4 y + kernel_conf_variable IP_NF_FILTER y kernel_conf_variable IP_NF_IPTABLES y - kernel_conf_variable NF_LOG_IPV6 y - kernel_conf_variable NAMESPACES y - kernel_conf_variable EXPERT y - kernel_conf_variable NETFILTER_ADVANCED y - kernel_conf_variable NF_LOG_ARP y - kernel_conf_variable NF_CONNTRACK_FTP m - kernel_conf_variable NF_CONNTRACK_IRC m - kernel_conf_variable NF_CONNTRACK_SIP m - kernel_conf_variable NF_CT_NETLINK m - kernel_conf_variable NETFILTER_XT_MARK m - kernel_conf_variable NETFILTER_XT_TARGET_CHECKSUM m - kernel_conf_variable NETFILTER_XT_TARGET_LOG m - kernel_conf_variable NETFILTER_XT_TARGET_NFLOG m - kernel_conf_variable NETFILTER_XT_TARGET_TCPMSS m - kernel_conf_variable NETFILTER_XT_MATCH_CONNTRACK m - kernel_conf_variable NETFILTER_XT_MATCH_POLICY m - kernel_conf_variable NETFILTER_XT_MATCH_STATE m - kernel_conf_variable NF_REJECT_IPV6 y - kernel_conf_variable IP_NF_TARGET_REJECT m - kernel_conf_variable IP_NF_MANGLE m - kernel_conf_variable NF_CONNTRACK_IPV6 m - kernel_conf_variable IP6_NF_IPTABLES y - kernel_conf_variable NET_SCHED y - kernel_conf_variable NET_SCH_INGRESS m - kernel_conf_variable NET_CLS_ACT y - kernel_conf_variable NET_ACT_POLICE m + kernel_conf_variable IP_NF_TARGET_MASQUERADE y + kernel_conf_variable IP_NF_NAT y + kernel_conf_variable NETFILTER_XT_MATCH_ADDRTYPE y + kernel_conf_variable NETFILTER_XT_MATCH_CONNTRACK y + kernel_conf_variable NETFILTER_XT_MATCH_IPVS y + kernel_conf_variable IP_VS y + kernel_conf_variable IP_NF_NAT y + kernel_conf_variable POSIX_MQUEUE y + kernel_conf_variable OVERLAY_FS y sed -e "${CONF_SED_SCRIPT}" < '${WORKDIR}/defconfig' >> '${B}/.config' } From d8614f748ef063c844f6c69a839be0c9ceb8dbce Mon Sep 17 00:00:00 2001 From: Arturo Buzarra Date: Tue, 30 Jul 2019 10:29:31 +0200 Subject: [PATCH 100/133] recovery-initramfs: Set cryptsetup dependency only for platforms with block devices Commit 074e3ba3 ("meta-digi-dey: add cryptsetup tool into initramfs") added the runtime dependency to cryptsetup for all platforms, but it is required only to encrypt/decrypt block devices. Signed-off-by: Arturo Buzarra --- meta-digi-dey/recipes-core/recovery/recovery-initramfs.bb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/meta-digi-dey/recipes-core/recovery/recovery-initramfs.bb b/meta-digi-dey/recipes-core/recovery/recovery-initramfs.bb index 3aaa0975f..119339830 100644 --- a/meta-digi-dey/recipes-core/recovery/recovery-initramfs.bb +++ b/meta-digi-dey/recipes-core/recovery/recovery-initramfs.bb @@ -53,6 +53,6 @@ PACKAGES = "${PN}" FILES_${PN} = "/" -RDEPENDS_${PN}_append = " \ - cryptsetup \ -" +RDEPENDS_${PN}_append_ccimx6sbc = " cryptsetup" +RDEPENDS_${PN}_append_ccimx6qpsbc = " cryptsetup" +RDEPENDS_${PN}_append_ccimx8x = " cryptsetup" From fb49af9d27701074c037e7bc242ae88174acc8fa Mon Sep 17 00:00:00 2001 From: Arturo Buzarra Date: Thu, 1 Aug 2019 10:00:20 +0200 Subject: [PATCH 101/133] libdevmapper: Remove lvm2-udevrules from RRECOMMENDS Commit c6e963f9e ("lvm2: Add RDEPEND on lvm2 to lvm2-udevrules") in meta-oe layer added a package dependency for lvm2. This dependency includes many unnecessary packages like lvm2, lvm2-scripts, etc. and their dependencies that increase the size of the initramfs image. Since lvm2-udevrules is not necessary for our initramfs image, this commit removes the RRECOMENDS. https://jira.digi.com/browse/DEL-6701 Signed-off-by: Arturo Buzarra --- meta-digi-dey/recipes-support/lvm2/libdevmapper_%s.bbappend | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 meta-digi-dey/recipes-support/lvm2/libdevmapper_%s.bbappend diff --git a/meta-digi-dey/recipes-support/lvm2/libdevmapper_%s.bbappend b/meta-digi-dey/recipes-support/lvm2/libdevmapper_%s.bbappend new file mode 100644 index 000000000..7bdc22e99 --- /dev/null +++ b/meta-digi-dey/recipes-support/lvm2/libdevmapper_%s.bbappend @@ -0,0 +1,5 @@ +# +# Copyright (C) 2019 Digi International. +# + +RRECOMMENDS_${PN}_remove_class-target = " lvm2-udevrules" From dc8ec807cf1706c79694bdf5dd7118815fd412b3 Mon Sep 17 00:00:00 2001 From: Jose Diaz de Grenu Date: Fri, 2 Aug 2019 14:39:21 +0200 Subject: [PATCH 102/133] microwindows: fix compilation for ARM64 Remove the 'mstructure-size-boundary' flag. This flag is not supported in ARM64 toolchains, and without it the fbtest application works fine. https://jira.digi.com/browse/DEL-6498 Signed-off-by: Jose Diaz de Grenu --- ...move-mstructure-size-boundary-8-flag.patch | 24 +++++++++++++++++++ .../microwindows/microwindows_0.91.bb | 2 ++ 2 files changed, 26 insertions(+) create mode 100644 meta-digi-dey/recipes-graphics/microwindows/microwindows-0.91/0002-Arch.rules-remove-mstructure-size-boundary-8-flag.patch diff --git a/meta-digi-dey/recipes-graphics/microwindows/microwindows-0.91/0002-Arch.rules-remove-mstructure-size-boundary-8-flag.patch b/meta-digi-dey/recipes-graphics/microwindows/microwindows-0.91/0002-Arch.rules-remove-mstructure-size-boundary-8-flag.patch new file mode 100644 index 000000000..85a93778d --- /dev/null +++ b/meta-digi-dey/recipes-graphics/microwindows/microwindows-0.91/0002-Arch.rules-remove-mstructure-size-boundary-8-flag.patch @@ -0,0 +1,24 @@ +From: Jose Diaz de Grenu +Date: Fri, 2 Aug 2019 14:28:35 +0200 +Subject: [PATCH] Arch.rules: remove 'mstructure-size-boundary' flag + +This flag is not supported in ARM64 toolchains. + +Signed-off-by: Jose Diaz de Grenu +--- + Arch.rules | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Arch.rules b/Arch.rules +index b01225d0f514..2fd57bf635b9 100644 +--- a/Arch.rules ++++ b/Arch.rules +@@ -46,7 +46,7 @@ COMPILER = gcc + CXX_COMPILER = g++ + TOOLSPREFIX = $(ARMTOOLSPREFIX) + DEFINES += -DLINUX=1 -DUNIX=1 +-CFLAGS += $(GCC_WARNINGS) $(OPTFLAGS) -mstructure-size-boundary=8 ++CFLAGS += $(GCC_WARNINGS) $(OPTFLAGS) + LDFLAGS += + endif + diff --git a/meta-digi-dey/recipes-graphics/microwindows/microwindows_0.91.bb b/meta-digi-dey/recipes-graphics/microwindows/microwindows_0.91.bb index 6f2fc5f6d..8ac4aacd4 100644 --- a/meta-digi-dey/recipes-graphics/microwindows/microwindows_0.91.bb +++ b/meta-digi-dey/recipes-graphics/microwindows/microwindows_0.91.bb @@ -11,6 +11,8 @@ SRC_URI = " \ file://0001-defconfig.patch;striplevel=2 \ " +SRC_URI_append_aarch64 = " file://0002-Arch.rules-remove-mstructure-size-boundary-8-flag.patch; " + SRC_URI[md5sum] = "901e912cf3975f6460a9bb4325557645" SRC_URI[sha256sum] = "c0a8473842fc757ff4c225f82b83d98bba5da0dca0cf843cfc7792064a393435" From 797f9dc357942fd3b6919f8e316be2e4d3422fc7 Mon Sep 17 00:00:00 2001 From: Jose Diaz de Grenu Date: Wed, 7 Aug 2019 12:15:13 +0200 Subject: [PATCH 103/133] qualcomm.sh: remount as writteable if '/' is ro On some scenarios, like when booting from NFS, the root filesystem is not writteable. When this happens the qualcomm.sh is not able to write the MAC file which so the wireless driver fails to load. The arguments that U-Boot uses when booting from NFS using dboot result in the root filesystem being mounted as read-only, but at some point it is remounted as read/write. This happens after trying to load the wireless driver, though. Currently this is the only scenario in which we can reproduce the problem, and there are several other processes in DEY that require a writeable root filesystem (wireless SSID editing, Dropbear SSH key-gen and u-boot-fw-utils) so remount the rootfs as writteable as a workaround. While on it improve the script a bit to notify on error trying to create this file, just in case this happens in other scenarios. https://jira.digi.com/browse/DEL-5854 Signed-off-by: Jose Diaz de Grenu --- .../kernel-module-qualcomm/qualcomm.sh | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/qualcomm.sh b/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/qualcomm.sh index 69ba0d912..34566f3e8 100644 --- a/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/qualcomm.sh +++ b/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/qualcomm.sh @@ -47,7 +47,15 @@ done # Override the MAC firmware file only if the MAC file has changed. if ! cmp -s ${TMP_MACFILE} ${MACFILE}; then - cp ${TMP_MACFILE} ${MACFILE} + if [ ! -w ${MACFILE} ]; then + mount_point="$(df $(dirname "${MACFILE}") | awk '!/^Filesystem/{ print $6 }')" + log "6" "[INFO] ${MACFILE} is not writable, remounting '${mount_point}' as rw" + mount -o remount,rw ${mount_point} + fi + + if cp ${TMP_MACFILE} ${MACFILE}; then + log "3" "[ERROR] Could not create ${MACFILE}" + fi fi rm -f "${TMP_MACFILE}" From fd3f3ba413ad52b24985121fa435ac536ba46dca Mon Sep 17 00:00:00 2001 From: Hector Palacios Date: Tue, 20 Aug 2019 16:27:17 +0200 Subject: [PATCH 104/133] uboot: update scripts to consider 'soc_type' var starts with "imx" The 'soc_type' variable was already set by fastboot to "imx8qxp" so the U-Boot board code that was setting this to just "8qxp" has been changed to set it to "imx8qxp". Update the scripts accordingly. Signed-off-by: Hector Palacios https://jira.digi.com/browse/DUB-901 --- .../u-boot-dey/ccimx8x-sbc-express/boot.txt | 16 ++++++++-------- .../ccimx8x-sbc-express/install_linux_fw_sd.txt | 2 +- .../u-boot/u-boot-dey/ccimx8x-sbc-pro/boot.txt | 16 ++++++++-------- .../ccimx8x-sbc-pro/install_linux_fw_sd.txt | 2 +- 4 files changed, 18 insertions(+), 18 deletions(-) diff --git a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-express/boot.txt b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-express/boot.txt index 2abe55497..43badca8d 100644 --- a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-express/boot.txt +++ b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-express/boot.txt @@ -2,16 +2,16 @@ # U-Boot bootscript for EMMC/SD images created by Yocto. # -# Set SOC type to "8qxp" if not already defined by U-Boot +# Set SOC type to "imx8qxp" if not already defined by U-Boot if test ! -n "${soc_type}"; then - setenv soc_type "8qxp" + setenv soc_type "imx8qxp" fi # # Set device tree filename depending on the board ID (if defined) # if test -n "${board_id}"; then - setenv fdt_file ccimx${soc_type}-sbc-express-id${board_id}.dtb + setenv fdt_file cc${soc_type}-sbc-express-id${board_id}.dtb else # # Set device tree filename depending on the hardware capabilities @@ -23,9 +23,9 @@ else if test "${module_has_wifi}" = "1" && test "${module_has_bt}" = "1"; then - setenv fdt_file ccimx${soc_type}-sbc-express-wb.dtb + setenv fdt_file cc${soc_type}-sbc-express-wb.dtb else - setenv fdt_file ccimx${soc_type}-sbc-express.dtb + setenv fdt_file cc${soc_type}-sbc-express.dtb fi else # @@ -34,13 +34,13 @@ else if test "${module_variant}" = "0x01" || test "${module_variant}" = "0x02" || test "${module_variant}" = "0x04"; then - setenv fdt_file ccimx${soc_type}-sbc-express-wb.dtb + setenv fdt_file cc${soc_type}-sbc-express-wb.dtb elif test "${module_variant}" = "0x03" || test "${module_variant}" = "0x05" || test "${module_variant}" = "0x06"; then - setenv fdt_file ccimx${soc_type}-sbc-express.dtb + setenv fdt_file cc${soc_type}-sbc-express.dtb else - setenv fdt_file ccimx${soc_type}-sbc-express-wb.dtb + setenv fdt_file cc${soc_type}-sbc-express-wb.dtb fi fi fi diff --git a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-express/install_linux_fw_sd.txt b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-express/install_linux_fw_sd.txt index fa5e7d32f..62501234a 100644 --- a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-express/install_linux_fw_sd.txt +++ b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-express/install_linux_fw_sd.txt @@ -23,7 +23,7 @@ fi ram_freq="1.2GHz" bus_width="32bit" if test -n "${module_ram}" && test -n "${soc_type}"; then - if test "${soc_type}" = "8dx"; then + if test "${soc_type}" = "imx8dx"; then bus_width="16bit" fi setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x-sbc-express-${ram_freq}_${module_ram}_${bus_width}.bin; diff --git a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-pro/boot.txt b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-pro/boot.txt index 716ac770f..3d0ce3556 100644 --- a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-pro/boot.txt +++ b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-pro/boot.txt @@ -2,16 +2,16 @@ # U-Boot bootscript for EMMC/SD images created by Yocto. # -# Set SOC type to "8qxp" if not already defined by U-Boot +# Set SOC type to "imx8qxp" if not already defined by U-Boot if test ! -n "${soc_type}"; then - setenv soc_type "8qxp" + setenv soc_type "imx8qxp" fi # # Set device tree filename depending on the board ID (if defined) # if test -n "${board_id}"; then - setenv fdt_file ccimx${soc_type}-sbc-pro-id${board_id}.dtb + setenv fdt_file cc${soc_type}-sbc-pro-id${board_id}.dtb else # # Set device tree filename depending on the hardware capabilities @@ -23,9 +23,9 @@ else if test "${module_has_wifi}" = "1" && test "${module_has_bt}" = "1"; then - setenv fdt_file ccimx${soc_type}-sbc-pro-wb.dtb + setenv fdt_file cc${soc_type}-sbc-pro-wb.dtb else - setenv fdt_file ccimx${soc_type}-sbc-pro.dtb + setenv fdt_file cc${soc_type}-sbc-pro.dtb fi else # @@ -34,13 +34,13 @@ else if test "${module_variant}" = "0x01" || test "${module_variant}" = "0x02" || test "${module_variant}" = "0x04"; then - setenv fdt_file ccimx${soc_type}-sbc-pro-wb.dtb + setenv fdt_file cc${soc_type}-sbc-pro-wb.dtb elif test "${module_variant}" = "0x03" || test "${module_variant}" = "0x05" || test "${module_variant}" = "0x06"; then - setenv fdt_file ccimx${soc_type}-sbc-pro.dtb + setenv fdt_file cc${soc_type}-sbc-pro.dtb else - setenv fdt_file ccimx${soc_type}-sbc-pro-wb.dtb + setenv fdt_file cc${soc_type}-sbc-pro-wb.dtb fi fi fi diff --git a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-pro/install_linux_fw_sd.txt b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-pro/install_linux_fw_sd.txt index c50c4fa92..cce9bf896 100644 --- a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-pro/install_linux_fw_sd.txt +++ b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx8x-sbc-pro/install_linux_fw_sd.txt @@ -23,7 +23,7 @@ fi ram_freq="1.2GHz" bus_width="32bit" if test -n "${module_ram}" && test -n "${soc_type}"; then - if test "${soc_type}" = "8dx"; then + if test "${soc_type}" = "imx8dx"; then bus_width="16bit" fi setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x-sbc-pro-${ram_freq}_${module_ram}_${bus_width}.bin; From 255244647eea42e6db83bb3f223288f524ee9d9a Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Thu, 22 Aug 2019 13:55:26 +0200 Subject: [PATCH 105/133] openssl: add the openssl-bin package to libcrypto's RRECOMMENDS This way, we assure that the openssl binary is included in the rootfs whenever the base openssl package is included. https://jira.digi.com/browse/DEL-6710 Signed-off-by: Gabriel Valcazar --- .../recipes-connectivity/openssl/openssl_%.bbappend | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/meta-digi-dey/recipes-connectivity/openssl/openssl_%.bbappend b/meta-digi-dey/recipes-connectivity/openssl/openssl_%.bbappend index a44826f43..f8db537bf 100644 --- a/meta-digi-dey/recipes-connectivity/openssl/openssl_%.bbappend +++ b/meta-digi-dey/recipes-connectivity/openssl/openssl_%.bbappend @@ -1,4 +1,4 @@ -# Copyright (C) 2016-2018 Digi International. +# Copyright (C) 2016-2019 Digi International. FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:" @@ -14,3 +14,6 @@ SRC_URI_remove = " \ SRC_URI += " \ ${@bb.utils.contains("MACHINE_FEATURES", "cryptochip", "${CRYPTOCHIP_COMMON_PATCHES}", "", d)} \ " + +# Add the openssl binary whenever the base package is pulled in via a dependency +RRECOMMENDS_libcrypto += "openssl-bin" From 9047e00bf1c5d284af4a00bad10498fc307ae3e1 Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Mon, 26 Aug 2019 15:52:53 +0200 Subject: [PATCH 106/133] Use https protocol instead of git protocol when fetching from github Otherwise, users that are behind corporate firewalls might not be able to obtain the package sources. https://jira.digi.com/browse/DEL-6663 Signed-off-by: Gabriel Valcazar --- meta-digi-arm/recipes-bsp/u-boot/digi-u-boot.inc | 2 +- meta-digi-arm/recipes-digi/cryptoauthlib/cryptoauthlib_git.bb | 2 +- .../recipes-digi/trustfence/trustfence-sign-tools_git.bb | 2 +- .../kernel-module-qualcomm/kernel-module-qualcomm.bb | 2 +- meta-digi-arm/recipes-kernel/linux/linux-dey-src.inc | 2 +- meta-digi-dey/recipes-digi/cloudconnector/cloudconnector_git.bb | 2 +- .../cryptoauth-openssl-engine/cryptoauth-openssl-engine_git.bb | 2 +- meta-digi-dey/recipes-digi/dey-examples/dey-examples-src.inc | 2 +- meta-digi-dey/recipes-digi/libdigiapix/libdigiapix_git.bb | 2 +- meta-digi-dey/recipes-support/libsoc/libsoc_git.bbappend | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/meta-digi-arm/recipes-bsp/u-boot/digi-u-boot.inc b/meta-digi-arm/recipes-bsp/u-boot/digi-u-boot.inc index 3bc4b24d8..90039e54a 100644 --- a/meta-digi-arm/recipes-bsp/u-boot/digi-u-boot.inc +++ b/meta-digi-arm/recipes-bsp/u-boot/digi-u-boot.inc @@ -15,7 +15,7 @@ PROVIDES += "u-boot" S = "${WORKDIR}/git" # Select internal or Github U-Boot repo -UBOOT_GIT_URI ?= "${@oe.utils.conditional('DIGI_INTERNAL_GIT', '1' , '${DIGI_GIT}u-boot-denx.git', '${DIGI_GITHUB_GIT}/u-boot.git', d)}" +UBOOT_GIT_URI ?= "${@oe.utils.conditional('DIGI_INTERNAL_GIT', '1' , '${DIGI_GIT}u-boot-denx.git', '${DIGI_GITHUB_GIT}/u-boot.git;protocol=https', d)}" SRC_URI = " \ ${UBOOT_GIT_URI};branch=${SRCBRANCH} \ diff --git a/meta-digi-arm/recipes-digi/cryptoauthlib/cryptoauthlib_git.bb b/meta-digi-arm/recipes-digi/cryptoauthlib/cryptoauthlib_git.bb index 788917577..1ba3edc2b 100644 --- a/meta-digi-arm/recipes-digi/cryptoauthlib/cryptoauthlib_git.bb +++ b/meta-digi-arm/recipes-digi/cryptoauthlib/cryptoauthlib_git.bb @@ -8,7 +8,7 @@ LIC_FILES_CHKSUM = "file://license.txt;endline=19;md5=5bcd26c644867b127c2cce8296 SRCBRANCH = "master" SRCREV = "c6da3358a102c10d954372598c6efef8ad84c9ee" -GIT_URI ?= "git://github.com/MicrochipTech/cryptoauthlib.git;protocol=git" +GIT_URI ?= "git://github.com/MicrochipTech/cryptoauthlib.git;protocol=https" SRC_URI = " \ ${GIT_URI};nobranch=1 \ diff --git a/meta-digi-arm/recipes-digi/trustfence/trustfence-sign-tools_git.bb b/meta-digi-arm/recipes-digi/trustfence/trustfence-sign-tools_git.bb index 44dbe4cda..a4e47863e 100644 --- a/meta-digi-arm/recipes-digi/trustfence/trustfence-sign-tools_git.bb +++ b/meta-digi-arm/recipes-digi/trustfence/trustfence-sign-tools_git.bb @@ -11,7 +11,7 @@ SRCREV = "${AUTOREV}" S = "${WORKDIR}" # Select internal or Github U-Boot repo -UBOOT_GIT_URI ?= "${@oe.utils.conditional('DIGI_INTERNAL_GIT', '1' , '${DIGI_GIT}u-boot-denx.git', '${DIGI_GITHUB_GIT}/u-boot.git', d)}" +UBOOT_GIT_URI ?= "${@oe.utils.conditional('DIGI_INTERNAL_GIT', '1' , '${DIGI_GIT}u-boot-denx.git', '${DIGI_GITHUB_GIT}/u-boot.git;protocol=https', d)}" SRC_URI = " \ ${UBOOT_GIT_URI};branch=${SRCBRANCH} \ diff --git a/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm.bb b/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm.bb index 14710b4cf..e8d568787 100644 --- a/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm.bb +++ b/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm.bb @@ -13,7 +13,7 @@ SRCBRANCH = "qca6564/master" SRCBRANCH_ccimx8x = "qca6574/master" SRCREV = "${AUTOREV}" -QCOM_GIT_URI = "${@oe.utils.conditional('DIGI_INTERNAL_GIT', '1' , '${DIGI_MTK_GIT}linux/qcacld-2.0.git;protocol=ssh', '${DIGI_GITHUB_GIT}/qcacld-2.0.git', d)}" +QCOM_GIT_URI = "${@oe.utils.conditional('DIGI_INTERNAL_GIT', '1' , '${DIGI_MTK_GIT}linux/qcacld-2.0.git;protocol=ssh', '${DIGI_GITHUB_GIT}/qcacld-2.0.git;protocol=https', d)}" SRC_URI = " \ ${QCOM_GIT_URI};branch=${SRCBRANCH} \ diff --git a/meta-digi-arm/recipes-kernel/linux/linux-dey-src.inc b/meta-digi-arm/recipes-kernel/linux/linux-dey-src.inc index ddb5fb0f4..bcddf1b25 100644 --- a/meta-digi-arm/recipes-kernel/linux/linux-dey-src.inc +++ b/meta-digi-arm/recipes-kernel/linux/linux-dey-src.inc @@ -9,7 +9,7 @@ SRCBRANCH_ccimx6 = "v4.9/dey-2.6/maint" SRCREV = "${AUTOREV}" # Select internal or Github Linux repo -LINUX_GIT_URI ?= "${@oe.utils.conditional('DIGI_INTERNAL_GIT', '1' , '${DIGI_GIT}linux-2.6.git', '${DIGI_GITHUB_GIT}/linux.git', d)}" +LINUX_GIT_URI ?= "${@oe.utils.conditional('DIGI_INTERNAL_GIT', '1' , '${DIGI_GIT}linux-2.6.git', '${DIGI_GITHUB_GIT}/linux.git;protocol=https', d)}" SRC_URI = "${LINUX_GIT_URI};branch=${SRCBRANCH}" S = "${WORKDIR}/git" diff --git a/meta-digi-dey/recipes-digi/cloudconnector/cloudconnector_git.bb b/meta-digi-dey/recipes-digi/cloudconnector/cloudconnector_git.bb index 256a53e8b..d5501cdd7 100644 --- a/meta-digi-dey/recipes-digi/cloudconnector/cloudconnector_git.bb +++ b/meta-digi-dey/recipes-digi/cloudconnector/cloudconnector_git.bb @@ -11,7 +11,7 @@ SRCBRANCH = "master" SRCREV = "${AUTOREV}" CC_STASH = "gitsm://git@stash.digi.com/cc/cc_dey.git;protocol=ssh" -CC_GITHUB = "gitsm://github.com/digi-embedded/cc_dey.git;protocol=git" +CC_GITHUB = "gitsm://github.com/digi-embedded/cc_dey.git;protocol=https" CC_GIT_URI ?= "${@oe.utils.conditional('DIGI_INTERNAL_GIT', '1' , '${CC_STASH}', '${CC_GITHUB}', d)}" diff --git a/meta-digi-dey/recipes-digi/cryptoauth-openssl-engine/cryptoauth-openssl-engine_git.bb b/meta-digi-dey/recipes-digi/cryptoauth-openssl-engine/cryptoauth-openssl-engine_git.bb index c39720847..073184dc8 100644 --- a/meta-digi-dey/recipes-digi/cryptoauth-openssl-engine/cryptoauth-openssl-engine_git.bb +++ b/meta-digi-dey/recipes-digi/cryptoauth-openssl-engine/cryptoauth-openssl-engine_git.bb @@ -8,7 +8,7 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=3fdaa96f37898a0641820700bbf5f7b8" SRCBRANCH = "master" SRCREV = "a69a4f92af6bee9cb13035c2f859912744796380" -GIT_URI ?= "git://github.com/MicrochipTech/cryptoauth-openssl-engine.git;protocol=git" +GIT_URI ?= "git://github.com/MicrochipTech/cryptoauth-openssl-engine.git;protocol=https" SRC_URI = " \ ${GIT_URI};nobranch=1 \ diff --git a/meta-digi-dey/recipes-digi/dey-examples/dey-examples-src.inc b/meta-digi-dey/recipes-digi/dey-examples/dey-examples-src.inc index 88c7e3720..6a9e2b579 100644 --- a/meta-digi-dey/recipes-digi/dey-examples/dey-examples-src.inc +++ b/meta-digi-dey/recipes-digi/dey-examples/dey-examples-src.inc @@ -4,6 +4,6 @@ SRCBRANCH = "master" SRCREV = "${AUTOREV}" DEY_EXAMPLES_STASH = "${DIGI_MTK_GIT}dey/dey-examples.git;protocol=ssh" -DEY_EXAMPLES_GITHUB = "${DIGI_GITHUB_GIT}/dey-examples.git;protocol=git" +DEY_EXAMPLES_GITHUB = "${DIGI_GITHUB_GIT}/dey-examples.git;protocol=https" DEY_EXAMPLES_GIT_URI ?= "${@oe.utils.conditional('DIGI_INTERNAL_GIT', '1' , '${DEY_EXAMPLES_STASH}', '${DEY_EXAMPLES_GITHUB}', d)}" diff --git a/meta-digi-dey/recipes-digi/libdigiapix/libdigiapix_git.bb b/meta-digi-dey/recipes-digi/libdigiapix/libdigiapix_git.bb index 9d6251efa..eb941abe7 100644 --- a/meta-digi-dey/recipes-digi/libdigiapix/libdigiapix_git.bb +++ b/meta-digi-dey/recipes-digi/libdigiapix/libdigiapix_git.bb @@ -12,7 +12,7 @@ SRCBRANCH ?= "master" SRCREV = "${AUTOREV}" LIBDIGIAPIX_URI_STASH = "${DIGI_MTK_GIT}dey/libdigiapix.git;protocol=ssh" -LIBDIGIAPIX_URI_GITHUB = "git://github.com/digi-embedded/libdigiapix.git;protocol=git" +LIBDIGIAPIX_URI_GITHUB = "git://github.com/digi-embedded/libdigiapix.git;protocol=https" LIBDIGIAPIX_GIT_URI ?= "${@oe.utils.conditional('DIGI_INTERNAL_GIT', '1' , '${LIBDIGIAPIX_URI_STASH}', '${LIBDIGIAPIX_URI_GITHUB}', d)}" diff --git a/meta-digi-dey/recipes-support/libsoc/libsoc_git.bbappend b/meta-digi-dey/recipes-support/libsoc/libsoc_git.bbappend index a70c25dbe..6d571ff9d 100644 --- a/meta-digi-dey/recipes-support/libsoc/libsoc_git.bbappend +++ b/meta-digi-dey/recipes-support/libsoc/libsoc_git.bbappend @@ -3,7 +3,7 @@ FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:" LIBSOC_URI_STASH = "${DIGI_MTK_GIT}dey/libsoc.git;protocol=ssh" -LIBSOC_URI_GITHUB = "git://github.com/jackmitch/libsoc.git;protocol=git" +LIBSOC_URI_GITHUB = "git://github.com/jackmitch/libsoc.git;protocol=https" LIBSOC_URI ?= "${@oe.utils.conditional('DIGI_INTERNAL_GIT', '1' , '${LIBSOC_URI_STASH}', '${LIBSOC_URI_GITHUB}', d)}" SRCREV = "dc62bb1f04c13d0423078b1af2bb439c62023d6c" From fe977873e3b75b2a1f5acf86f09f6c6057132479 Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Mon, 26 Aug 2019 16:01:08 +0200 Subject: [PATCH 107/133] libdigiapix: use the DIGI_GITHUB_GIT variable instead of hardcoding the URL Signed-off-by: Gabriel Valcazar --- meta-digi-dey/recipes-digi/libdigiapix/libdigiapix_git.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meta-digi-dey/recipes-digi/libdigiapix/libdigiapix_git.bb b/meta-digi-dey/recipes-digi/libdigiapix/libdigiapix_git.bb index eb941abe7..b0fde7bf2 100644 --- a/meta-digi-dey/recipes-digi/libdigiapix/libdigiapix_git.bb +++ b/meta-digi-dey/recipes-digi/libdigiapix/libdigiapix_git.bb @@ -12,7 +12,7 @@ SRCBRANCH ?= "master" SRCREV = "${AUTOREV}" LIBDIGIAPIX_URI_STASH = "${DIGI_MTK_GIT}dey/libdigiapix.git;protocol=ssh" -LIBDIGIAPIX_URI_GITHUB = "git://github.com/digi-embedded/libdigiapix.git;protocol=https" +LIBDIGIAPIX_URI_GITHUB = "${DIGI_GITHUB_GIT}/libdigiapix.git;protocol=https" LIBDIGIAPIX_GIT_URI ?= "${@oe.utils.conditional('DIGI_INTERNAL_GIT', '1' , '${LIBDIGIAPIX_URI_STASH}', '${LIBDIGIAPIX_URI_GITHUB}', d)}" From 8e92839ce0d0c25e6320b35ac77a77af4081b84d Mon Sep 17 00:00:00 2001 From: Mike Engel Date: Mon, 26 Aug 2019 11:33:27 +0200 Subject: [PATCH 108/133] meta-digi:recipes-qt: Enable gstreamer support when building QT This commit enables gstreamer support when built qtmultimedia. Also sets the gstreamer plugin video source for QT. Signed-off-by: Mike Engel https://jira.digi.com/browse/DEL-6691 --- meta-digi-dey/recipes-qt/qt5/qtmultimedia_%.bbappend | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/meta-digi-dey/recipes-qt/qt5/qtmultimedia_%.bbappend b/meta-digi-dey/recipes-qt/qt5/qtmultimedia_%.bbappend index 13f91d6df..c136875a4 100644 --- a/meta-digi-dey/recipes-qt/qt5/qtmultimedia_%.bbappend +++ b/meta-digi-dey/recipes-qt/qt5/qtmultimedia_%.bbappend @@ -1,3 +1,12 @@ +# Copyright (C) 2015-2019 Digi International + +PACKAGECONFIG_append = " gstreamer" + +pkg_postinst_${PN}_ccimx6() { + echo '# Use FSL gstreamer plugin video source' >> $D${sysconfdir}/profile.d/qt5.sh + echo 'export QT_GSTREAMER_CAMERABIN_VIDEOSRC="imxv4l2src"' >> $D${sysconfdir}/profile.d/qt5.sh +} + do_install_append() { if ls ${D}${libdir}/pkgconfig/Qt5*.pc >/dev/null 2>&1; then sed -i 's,-L${STAGING_DIR_HOST}/usr/lib,,' ${D}${libdir}/pkgconfig/Qt5*.pc From 7c00d4aa01d6683153b59c3eb302d0366b5f3ad0 Mon Sep 17 00:00:00 2001 From: Mike Engel Date: Mon, 26 Aug 2019 13:35:35 +0200 Subject: [PATCH 109/133] meta-digi: recipes-qt: Remove duplicated recipe. The correct recipe that need to be used is located at meta-digi-dey/recipes-qt/demo-extrafiles/ removing all the QT applications that are not included anymore in rootfs. Signed-off-by: Mike Engel https://jira.digi.com/browse/DEL-6690 --- .../qt5/qt5-demo-extrafiles.bbappend | 32 ------------------- 1 file changed, 32 deletions(-) delete mode 100644 meta-digi-dey/recipes-qt/qt5/qt5-demo-extrafiles.bbappend diff --git a/meta-digi-dey/recipes-qt/qt5/qt5-demo-extrafiles.bbappend b/meta-digi-dey/recipes-qt/qt5/qt5-demo-extrafiles.bbappend deleted file mode 100644 index f9926e905..000000000 --- a/meta-digi-dey/recipes-qt/qt5/qt5-demo-extrafiles.bbappend +++ /dev/null @@ -1,32 +0,0 @@ -# Install hellowindow demo as a default QT APP on all platforms -do_install () { - install -d ${D}/${datadir}/pixmaps - install -d ${D}/${datadir}/applications - install -m 0644 ${WORKDIR}/hellowindow.png ${D}/${datadir}/pixmaps - install -m 0644 ${WORKDIR}/hellowindow.desktop ${D}/${datadir}/applications -} - -# Install other qt5 demos on SoC with GPU -# Align with former release, do not install -# hellogl_es2.desktop & qt5basket.desktop & qt5nesting.desktop & qt5solarsystem.desktop -# as they are not supported - -do_install_append_imxgpu2d () { - install -m 0644 ${WORKDIR}/cinematicexperience.png ${D}/${datadir}/pixmaps - install -m 0644 ${WORKDIR}/cinematicexperience.desktop ${D}/${datadir}/applications - install -m 0644 ${WORKDIR}/qt5everywheredemo.png ${D}/${datadir}/pixmaps - install -m 0644 ${WORKDIR}/qt5everywheredemo.desktop ${D}/${datadir}/applications - install -m 0644 ${WORKDIR}/qt5nmapcarousedemo.png ${D}/${datadir}/pixmaps - install -m 0644 ${WORKDIR}/qt5nmapcarousedemo.desktop ${D}/${datadir}/applications - install -m 0644 ${WORKDIR}/qt5nmapper.png ${D}/${datadir}/pixmaps - install -m 0644 ${WORKDIR}/qt5nmapper.desktop ${D}/${datadir}/applications - install -m 0644 ${WORKDIR}/qtledbillboard.png ${D}/${datadir}/pixmaps - install -m 0644 ${WORKDIR}/qtledbillboard.desktop ${D}/${datadir}/applications - install -m 0644 ${WORKDIR}/qtledcombo.png ${D}/${datadir}/pixmaps - install -m 0644 ${WORKDIR}/qtledcombo.desktop ${D}/${datadir}/applications - install -m 0644 ${WORKDIR}/quitbattery.png ${D}/${datadir}/pixmaps - install -m 0644 ${WORKDIR}/quitbattery.desktop ${D}/${datadir}/applications - install -m 0644 ${WORKDIR}/quitindicators.png ${D}/${datadir}/pixmaps - install -m 0644 ${WORKDIR}/quitindicators.desktop ${D}/${datadir}/applications -} - From 4b74b82686c0c9718f2e6426bfe91d6d4e425556 Mon Sep 17 00:00:00 2001 From: Mike Engel Date: Tue, 27 Aug 2019 15:32:37 +0200 Subject: [PATCH 110/133] meta-digi: recipes-qt: fix qmlvideo application desktop execution path Signed-off-by: Mike Engel https://jira.digi.com/browse/DEL-6691 --- .../demo-extrafiles/qt5-demo-extrafiles/qmlvideo.desktop | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meta-digi-dey/recipes-qt/demo-extrafiles/qt5-demo-extrafiles/qmlvideo.desktop b/meta-digi-dey/recipes-qt/demo-extrafiles/qt5-demo-extrafiles/qmlvideo.desktop index 05b568603..8d4a6eaab 100644 --- a/meta-digi-dey/recipes-qt/demo-extrafiles/qt5-demo-extrafiles/qmlvideo.desktop +++ b/meta-digi-dey/recipes-qt/demo-extrafiles/qt5-demo-extrafiles/qmlvideo.desktop @@ -1,6 +1,6 @@ [Desktop Entry] Name=Qt5 QML player -Exec=/bin/sh -c "cd /usr/share/qt5/examples/multimedia/video/qmlvideo; ./qmlvideo" +Exec=/bin/sh -c "cd /usr/share/examples/multimedia/video/qmlvideo; ./qmlvideo" Icon=qmlvideo Terminal=false Type=Application From 5a893838c9035120570f52d4ece25541ae5fbf53 Mon Sep 17 00:00:00 2001 From: Jose Diaz de Grenu Date: Thu, 29 Aug 2019 16:33:47 +0200 Subject: [PATCH 111/133] dey-image: [cosmetic] correct comment Signed-off-by: Jose Diaz de Grenu --- meta-digi-dey/classes/dey-image.bbclass | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/meta-digi-dey/classes/dey-image.bbclass b/meta-digi-dey/classes/dey-image.bbclass index c3541f975..a7679ca67 100644 --- a/meta-digi-dey/classes/dey-image.bbclass +++ b/meta-digi-dey/classes/dey-image.bbclass @@ -10,8 +10,8 @@ inherit image-buildinfo # # Set root password using 'extrausers' class if 'debug-tweaks' is NOT enabled # -# To get the encrypted password (with escaped '$' char: '\$') run following -# command in your development computer: +# To get the hash of the password (with escaped '$' char: '\$') run +# the following command in your development computer: # # echo -n 'root' | mkpasswd -5 -s | sed -e 's,\$,\\$,g' # From e907f124aaaf001917c7feb62cd15c90dafb7778 Mon Sep 17 00:00:00 2001 From: Mike Engel Date: Fri, 30 Aug 2019 14:48:33 +0200 Subject: [PATCH 112/133] meta-digi: recipes-qt: fix hellowindow application desktop path Signed-off-by: Mike Engel --- .../qt5-demo-extrafiles/hellowindow.desktop | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 meta-digi-dey/recipes-qt/demo-extrafiles/qt5-demo-extrafiles/hellowindow.desktop diff --git a/meta-digi-dey/recipes-qt/demo-extrafiles/qt5-demo-extrafiles/hellowindow.desktop b/meta-digi-dey/recipes-qt/demo-extrafiles/qt5-demo-extrafiles/hellowindow.desktop new file mode 100644 index 000000000..49132da84 --- /dev/null +++ b/meta-digi-dey/recipes-qt/demo-extrafiles/qt5-demo-extrafiles/hellowindow.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Name=QT5 Hello Window +Exec=/usr/share/examples/opengl/hellowindow/hellowindow +Icon=hellowindow +Terminal=false +Type=Application +X-MB-SingleInstance=true +Comment=QT5 Hello Window +StartupNotify=false From 9c065b39c2784182faf2bde0c7e6733dd4786436 Mon Sep 17 00:00:00 2001 From: Gonzalo Ruiz Date: Fri, 30 Aug 2019 10:50:42 +0200 Subject: [PATCH 113/133] u-boot-dey: move symlinks to imx-boot-folder Move symlinks to u-boot artifacts created on u-boot.inc to imx-boot-tools folder. Signed-off-by: Gonzalo Ruiz --- meta-digi-arm/recipes-bsp/u-boot/digi-u-boot.inc | 1 + 1 file changed, 1 insertion(+) diff --git a/meta-digi-arm/recipes-bsp/u-boot/digi-u-boot.inc b/meta-digi-arm/recipes-bsp/u-boot/digi-u-boot.inc index 90039e54a..b3acff935 100644 --- a/meta-digi-arm/recipes-bsp/u-boot/digi-u-boot.inc +++ b/meta-digi-arm/recipes-bsp/u-boot/digi-u-boot.inc @@ -177,4 +177,5 @@ do_deploy_append_ccimx8x() { # U-Boot images are not bootable on the i.MX8X install -d ${DEPLOYDIR}/${BOOT_TOOLS} mv ${DEPLOYDIR}/u-boot* ${DEPLOYDIR}/${BOOT_TOOLS}/ + mv ${DEPLOYDIR}/${UBOOT_SYMLINK}-* ${DEPLOYDIR}/${BOOT_TOOLS}/ } From a0d01e1cf6f06103f85511672d31bb6eeef30abf Mon Sep 17 00:00:00 2001 From: Gonzalo Ruiz Date: Fri, 30 Aug 2019 10:53:53 +0200 Subject: [PATCH 114/133] imx-boot: move m4 demos artifacts to BOOT_TOOLS directory Signed-off-by: Gonzalo Ruiz --- meta-digi-arm/recipes-bsp/imx-mkimage/imx-boot_0.2.bbappend | 3 +++ 1 file changed, 3 insertions(+) diff --git a/meta-digi-arm/recipes-bsp/imx-mkimage/imx-boot_0.2.bbappend b/meta-digi-arm/recipes-bsp/imx-mkimage/imx-boot_0.2.bbappend index 54d02bc29..4efffd116 100644 --- a/meta-digi-arm/recipes-bsp/imx-mkimage/imx-boot_0.2.bbappend +++ b/meta-digi-arm/recipes-bsp/imx-mkimage/imx-boot_0.2.bbappend @@ -106,6 +106,9 @@ do_deploy () { # copy makefile (soc.mak) for reference install -m 0644 ${BOOT_STAGING}/soc.mak ${DEPLOYDIR}/${BOOT_TOOLS} + # Move all M4 demo artifacts to the imx-boot-tools folder + mv ${DEPLOY_DIR_IMAGE}/imx8qx_m4_* ${DEPLOYDIR}/${BOOT_TOOLS}/ + # copy the generated boot image to deploy path for ramc in ${UBOOT_RAM_COMBINATIONS}; do IMAGE_IMXBOOT_TARGET="" From 0a6941f6817e7814b158f5e8404c0294cae17eca Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Fri, 23 Aug 2019 10:57:27 +0200 Subject: [PATCH 115/133] fsl-eula-unpack: sync with meta-fsl-bsp-release branch sumo-4.14.98-2.1.0 Change the license checksum. https://jira.digi.com/browse/DEL-6722 Signed-off-by: Gabriel Valcazar --- meta-digi-arm/classes/fsl-eula-unpack.bbclass | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meta-digi-arm/classes/fsl-eula-unpack.bbclass b/meta-digi-arm/classes/fsl-eula-unpack.bbclass index 361aed509..e33ed07c9 100644 --- a/meta-digi-arm/classes/fsl-eula-unpack.bbclass +++ b/meta-digi-arm/classes/fsl-eula-unpack.bbclass @@ -6,7 +6,7 @@ # # SRC_URI = "${FSL_MIRROR}/firmware-imx-${PV};fsl-eula=true" -LIC_FILES_CHKSUM_append = " file://${FSL_EULA_FILE};md5=80c0478f4339af024519b3723023fe28" +LIC_FILES_CHKSUM_append = " file://${FSL_EULA_FILE};md5=72c0f70181bb6e83eee6aab8de12a9f3" LIC_FILES_CHKSUM[vardepsexclude] += "FSL_EULA_FILE" From 202c54e32c418a7a56d54d1f2a4c7e5edadc441d Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Fri, 23 Aug 2019 11:04:08 +0200 Subject: [PATCH 116/133] digi-sc-firmware: sync with meta-fsl-bsp-release branch sumo-4.14.98-2.1.0 Change the license type from "MIT" to "Proprietary". This change was taken from the imx-sc-firmware recipe. https://jira.digi.com/browse/DEL-6722 Signed-off-by: Gabriel Valcazar --- .../recipes-bsp/digi-sc-firmware/digi-sc-firmware_1.2.2.2.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meta-digi-arm/recipes-bsp/digi-sc-firmware/digi-sc-firmware_1.2.2.2.bb b/meta-digi-arm/recipes-bsp/digi-sc-firmware/digi-sc-firmware_1.2.2.2.bb index b8c82d33e..761216a0f 100644 --- a/meta-digi-arm/recipes-bsp/digi-sc-firmware/digi-sc-firmware_1.2.2.2.bb +++ b/meta-digi-arm/recipes-bsp/digi-sc-firmware/digi-sc-firmware_1.2.2.2.bb @@ -3,7 +3,7 @@ # Copyright (C) 2018-2019 Digi International. DESCRIPTION = "i.MX System Controller Firmware, customized for Digi platforms" -LICENSE = "MIT" +LICENSE = "Proprietary" LIC_FILES_CHKSUM = "file://COPYING;md5=fb0303e4ee8b0e71c094171e2272bd44" SECTION = "BSP" From 3e19b7597ece737fd320690eb99e68915ec8355e Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Fri, 23 Aug 2019 11:05:24 +0200 Subject: [PATCH 117/133] firmware-imx: sync with meta-fsl-bsp-release branch sumo-4.14.98-2.1.0 Update to v8.3. https://jira.digi.com/browse/DEL-6722 Signed-off-by: Gabriel Valcazar --- .../{firmware-imx_8.1.1.bb => firmware-imx_8.3.bb} | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) rename meta-digi-arm/recipes-bsp/firmware-imx/{firmware-imx_8.1.1.bb => firmware-imx_8.3.bb} (90%) diff --git a/meta-digi-arm/recipes-bsp/firmware-imx/firmware-imx_8.1.1.bb b/meta-digi-arm/recipes-bsp/firmware-imx/firmware-imx_8.3.bb similarity index 90% rename from meta-digi-arm/recipes-bsp/firmware-imx/firmware-imx_8.1.1.bb rename to meta-digi-arm/recipes-bsp/firmware-imx/firmware-imx_8.3.bb index 4096a318e..599efb4df 100644 --- a/meta-digi-arm/recipes-bsp/firmware-imx/firmware-imx_8.1.1.bb +++ b/meta-digi-arm/recipes-bsp/firmware-imx/firmware-imx_8.3.bb @@ -6,14 +6,14 @@ SUMMARY = "Freescale IMX firmware" DESCRIPTION = "Freescale IMX firmware such as for the VPU" SECTION = "base" LICENSE = "Proprietary" -LIC_FILES_CHKSUM = "file://COPYING;md5=fb0303e4ee8b0e71c094171e2272bd44" +LIC_FILES_CHKSUM = "file://COPYING;md5=72c0f70181bb6e83eee6aab8de12a9f3" PE = "1" SRC_URI = "${FSL_MIRROR}/firmware-imx-${PV}.bin;fsl-eula=true " -SRC_URI[md5sum] = "b494c9a2ba9f8906de73ac33068789a2" -SRC_URI[sha256sum] = "c115d5d0d115fc14754671bd2428f672f9f99677988588accef2fbca2c3f749c" +SRC_URI[md5sum] = "776c7fa64a6e96d9f0d9cd50bbf79ffc" +SRC_URI[sha256sum] = "48e4b9e4064930e2b6cd7f20f39177c8f4c5ef1a296f2ebc6ed422412ab56681" inherit fsl-eula-unpack allarch @@ -44,6 +44,8 @@ do_install() { mv ${D}${base_libdir}/firmware/epdc/ ${D}${base_libdir}/firmware/imx/epdc/ mv ${D}${base_libdir}/firmware/imx/epdc/epdc_ED060XH2C1.fw.nonrestricted ${D}${base_libdir}/firmware/imx/epdc/epdc_ED060XH2C1.fw + mv ${D}${base_libdir}/firmware/easrc/ ${D}${base_libdir}/firmware/imx/easrc/ + find ${D}${base_libdir}/firmware -type f -exec chmod 644 '{}' ';' find ${D}${base_libdir}/firmware -type f -exec chown root:root '{}' ';' @@ -101,8 +103,9 @@ ALLOW_EMPTY_${PN} = "1" PACKAGES_DYNAMIC = "${PN}-vpu-* ${PN}-sdma-*" -PACKAGES =+ "${PN}-epdc ${PN}-scfw ${PN}-sdma" +PACKAGES =+ "${PN}-epdc ${PN}-scfw ${PN}-sdma ${PN}-easrc" FILES_${PN}-epdc = "${base_libdir}/firmware/imx/epdc/" FILES_${PN}-scfw = "${base_libdir}/firmware/scfw/" FILES_${PN}-sdma = " ${base_libdir}/firmware/imx/sdma" +FILES_${PN}-easrc = "${base_libdir}/firmware/imx/easrc/" From 7d879092375b096091fc22bf717d38797ee17d70 Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Fri, 23 Aug 2019 11:07:52 +0200 Subject: [PATCH 118/133] imx-atf: sync with meta-fsl-bsp-release branch sumo-4.14.98-2.1.0 Update revision to the imx_4.14.98_2.1.0 branch. https://jira.digi.com/browse/DEL-6722 Signed-off-by: Gabriel Valcazar --- meta-digi-arm/recipes-bsp/imx-atf/imx-atf_2.0.bb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/meta-digi-arm/recipes-bsp/imx-atf/imx-atf_2.0.bb b/meta-digi-arm/recipes-bsp/imx-atf/imx-atf_2.0.bb index f6e26e821..12cd3096f 100644 --- a/meta-digi-arm/recipes-bsp/imx-atf/imx-atf_2.0.bb +++ b/meta-digi-arm/recipes-bsp/imx-atf/imx-atf_2.0.bb @@ -10,10 +10,10 @@ inherit fsl-eula-unpack pkgconfig deploy PV = "2.0+git${SRCPV}" ATF_SRC ?= "git://source.codeaurora.org/external/imx/imx-atf.git;protocol=https" -SRCBRANCH = "imx_4.14.98_2.0.0_ga" +SRCBRANCH = "imx_4.14.98_2.1.0" SRC_URI = "${ATF_SRC};branch=${SRCBRANCH}" -SRCREV = "1cb68fa0a0dd8bc00b9871b51d4c4e1d0a827b2d" +SRCREV = "727cf896a4c79d152dae4537e28400c747bf39b9" S = "${WORKDIR}/git" @@ -24,6 +24,7 @@ SOC_ATF_mx8qm = "imx8qm" SOC_ATF_mx8qxp = "imx8qx" SOC_ATF_mx8mq = "imx8mq" SOC_ATF_mx8mm = "imx8mm" +SOC_ATF_mx8mn = "imx8mn" SYSROOT_DIRS += "/boot" From 511d4c8cf38f40a6e730abdcea3f7c1353ef34d1 Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Fri, 23 Aug 2019 11:14:43 +0200 Subject: [PATCH 119/133] imx-mkimage: sync with meta-fsl-bsp-release branch sumo-4.14.98-2.1.0 Update revision to the imx_4.14.98_2.1.0 branch. https://jira.digi.com/browse/DEL-6722 Signed-off-by: Gabriel Valcazar --- meta-digi-arm/recipes-bsp/imx-mkimage/imx-mkimage_%.bbappend | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/meta-digi-arm/recipes-bsp/imx-mkimage/imx-mkimage_%.bbappend b/meta-digi-arm/recipes-bsp/imx-mkimage/imx-mkimage_%.bbappend index 730abc765..0782c7f6a 100644 --- a/meta-digi-arm/recipes-bsp/imx-mkimage/imx-mkimage_%.bbappend +++ b/meta-digi-arm/recipes-bsp/imx-mkimage/imx-mkimage_%.bbappend @@ -1,5 +1,5 @@ # Copyright (C) 2018,2019 Digi International, Inc. # Use the v4.14 ga BSP branch -SRCBRANCH = "imx_4.14.98_2.0.0_ga" -SRCREV = "dd0234001713623c79be92b60fa88bc07b07f24f" +SRCBRANCH = "imx_4.14.98_2.1.0" +SRCREV = "abd6ce551a7b81fc6953d32d92b24a4a1d4b214e" From f4d41d2c19d99b11e7b887f0488f75cb2330001d Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Fri, 23 Aug 2019 11:19:54 +0200 Subject: [PATCH 120/133] imx-vpu: sync with meta-fsl-bsp-release branch sumo-4.14.98-2.1.0 Remove our .bbappend, which was wrongly making this recipe compatible with the imx8. Directly port NXP's recipe (v5.4.39), which is newer than the one in meta-freescale (v5.4.38). https://jira.digi.com/browse/DEL-6722 Signed-off-by: Gabriel Valcazar --- .../recipes-bsp/imx-vpu/imx-vpu_%.bbappend | 3 -- .../recipes-bsp/imx-vpu/imx-vpu_5.4.39.bb | 33 +++++++++++++++++++ 2 files changed, 33 insertions(+), 3 deletions(-) delete mode 100644 meta-digi-arm/recipes-bsp/imx-vpu/imx-vpu_%.bbappend create mode 100644 meta-digi-arm/recipes-bsp/imx-vpu/imx-vpu_5.4.39.bb diff --git a/meta-digi-arm/recipes-bsp/imx-vpu/imx-vpu_%.bbappend b/meta-digi-arm/recipes-bsp/imx-vpu/imx-vpu_%.bbappend deleted file mode 100644 index 8d717ae01..000000000 --- a/meta-digi-arm/recipes-bsp/imx-vpu/imx-vpu_%.bbappend +++ /dev/null @@ -1,3 +0,0 @@ -PLATFORM_mx8 = "IMX8" - -COMPATIBLE_MACHINE = "(mx6|mx8x)" diff --git a/meta-digi-arm/recipes-bsp/imx-vpu/imx-vpu_5.4.39.bb b/meta-digi-arm/recipes-bsp/imx-vpu/imx-vpu_5.4.39.bb new file mode 100644 index 000000000..fa0abcf73 --- /dev/null +++ b/meta-digi-arm/recipes-bsp/imx-vpu/imx-vpu_5.4.39.bb @@ -0,0 +1,33 @@ +# Copyright (C) 2013-2018 O.S. Systems Software LTDA. +# Copyright (C) 2013-2016 Freescale Semiconductor +# Copyright 2017-2018 NXP + +DESCRIPTION = "Freescale VPU library" +LICENSE = "Proprietary" +LIC_FILES_CHKSUM = "file://COPYING;md5=72c0f70181bb6e83eee6aab8de12a9f3" + +PROVIDES = "virtual/imxvpu" +RPROVIDES_${PN} = "virtual/imxvpu" + +PE = "1" + +SRC_URI = "${FSL_MIRROR}/${PN}-${PV}.bin;fsl-eula=true" +SRC_URI[md5sum] = "12d42949b342b50365d24d148e67cf28" +SRC_URI[sha256sum] = "8b9fd257a2dd79dae1e208f08e56a4a47550b892a6f4e3b8fee0d6cbeb09ec12" + +inherit fsl-eula-unpack use-imx-headers + +PLATFORM = "IMX6Q" + +do_compile() { + INCLUDE_DIR="-I${STAGING_INCDIR_IMX}" + oe_runmake CROSS_COMPILE="${HOST_PREFIX}" PLATFORM="${PLATFORM}" INCLUDE="${INCLUDE_DIR}" all +} + +do_install() { + oe_runmake PLATFORM="${PLATFORM}" DEST_DIR="${D}" install +} + +# Compatible only for i.MX with Chips&Media VPU +COMPATIBLE_MACHINE = "(^$)" +COMPATIBLE_MACHINE_imxvpucnm = "${MACHINE}" From 275614762afc643fe9d921f690617d6f298aec39 Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Fri, 23 Aug 2019 11:38:28 +0200 Subject: [PATCH 121/133] imx-dpu-g2d: sync with meta-fsl-bsp-release branch sumo-4.14.98-2.1.0 Update to v1.7.1. https://jira.digi.com/browse/DEL-6722 Signed-off-by: Gabriel Valcazar --- .../{imx-dpu-g2d_1.7.0.bb => imx-dpu-g2d_1.7.1.bb} | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) rename meta-digi-dey/recipes-graphics/imx-dpu-g2d/{imx-dpu-g2d_1.7.0.bb => imx-dpu-g2d_1.7.1.bb} (80%) diff --git a/meta-digi-dey/recipes-graphics/imx-dpu-g2d/imx-dpu-g2d_1.7.0.bb b/meta-digi-dey/recipes-graphics/imx-dpu-g2d/imx-dpu-g2d_1.7.1.bb similarity index 80% rename from meta-digi-dey/recipes-graphics/imx-dpu-g2d/imx-dpu-g2d_1.7.0.bb rename to meta-digi-dey/recipes-graphics/imx-dpu-g2d/imx-dpu-g2d_1.7.1.bb index c8ec8f18e..b71eea828 100644 --- a/meta-digi-dey/recipes-graphics/imx-dpu-g2d/imx-dpu-g2d_1.7.0.bb +++ b/meta-digi-dey/recipes-graphics/imx-dpu-g2d/imx-dpu-g2d_1.7.1.bb @@ -4,7 +4,7 @@ DESCRIPTION = "GPU G2D library and apps for i.MX with 2D GPU and DPU" LICENSE = "Proprietary" -LIC_FILES_CHKSUM = "file://COPYING;md5=80c0478f4339af024519b3723023fe28" +LIC_FILES_CHKSUM = "file://COPYING;md5=72c0f70181bb6e83eee6aab8de12a9f3" RDEPENDS_${PN} = "libgal-imx libdrm" @@ -16,8 +16,8 @@ S="${WORKDIR}/${PN}-${PV}" inherit fsl-eula-unpack -SRC_URI[md5sum] = "a47ae6db002b47031e44d8402c40604e" -SRC_URI[sha256sum] = "5a2785ba1f4e4ea6f61ab98f8408600adca9decd66511e6665023325184bf7e9" +SRC_URI[md5sum] = "cb59630320d91c4a11306e60a682781d" +SRC_URI[sha256sum] = "cee8b44509d15b9eb0dbf736d25c080d151602849a5e621be13e9b8f7b501f04" do_install () { From 0c9cddf91b773bbbb463eafdd341d1d4bb23447f Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Fri, 23 Aug 2019 11:40:57 +0200 Subject: [PATCH 122/133] imx-gpu-g2d: sync with meta-fsl-bsp-release branch sumo-4.14.98-2.1.0 Update to v6.2.4.p4.2. https://jira.digi.com/browse/DEL-6722 Signed-off-by: Gabriel Valcazar --- ...gpu-g2d_6.2.4.p4.0.bb => imx-gpu-g2d_6.2.4.p4.2.bb} | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) rename meta-digi-dey/recipes-graphics/imx-gpu-g2d/{imx-gpu-g2d_6.2.4.p4.0.bb => imx-gpu-g2d_6.2.4.p4.2.bb} (70%) diff --git a/meta-digi-dey/recipes-graphics/imx-gpu-g2d/imx-gpu-g2d_6.2.4.p4.0.bb b/meta-digi-dey/recipes-graphics/imx-gpu-g2d/imx-gpu-g2d_6.2.4.p4.2.bb similarity index 70% rename from meta-digi-dey/recipes-graphics/imx-gpu-g2d/imx-gpu-g2d_6.2.4.p4.0.bb rename to meta-digi-dey/recipes-graphics/imx-gpu-g2d/imx-gpu-g2d_6.2.4.p4.2.bb index e872a3139..b9688af78 100644 --- a/meta-digi-dey/recipes-graphics/imx-gpu-g2d/imx-gpu-g2d_6.2.4.p4.0.bb +++ b/meta-digi-dey/recipes-graphics/imx-gpu-g2d/imx-gpu-g2d_6.2.4.p4.2.bb @@ -5,7 +5,7 @@ DESCRIPTION = "GPU G2D library and apps for i.MX with 2D GPU and no DPU" LICENSE = "Proprietary" -LIC_FILES_CHKSUM = "file://COPYING;md5=80c0478f4339af024519b3723023fe28" +LIC_FILES_CHKSUM = "file://COPYING;md5=72c0f70181bb6e83eee6aab8de12a9f3" DEPENDS += "libgal-imx" PROVIDES += "virtual/libg2d" @@ -13,10 +13,10 @@ PROVIDES += "virtual/libg2d" FSLBIN_NAME = "${PN}-${PV}-${TARGET_ARCH}" SRC_URI = "${FSL_MIRROR}/${FSLBIN_NAME}.bin;name=${TARGET_ARCH};fsl-eula=true" -SRC_URI[aarch64.md5sum] = "ec8d8662ac31b96122a1af7736831482" -SRC_URI[aarch64.sha256sum] = "362265b9c6c6ce05b1fafb412efe6617cf142669eb21302beec5e87ebbfe6a25" -SRC_URI[arm.md5sum] = "bb1ef2e365b5d72e2a03c3b39d2016cc" -SRC_URI[arm.sha256sum] = "27557094f4b5e7bef87c73131959503f3d0c3a6ea1c4f010d86c1668078f7f22" +SRC_URI[aarch64.md5sum] = "a2d9e2b0f373a14bb41621a1cded3112" +SRC_URI[aarch64.sha256sum] = "b5bd824386c30fbe167a529344a3e6f7c87adf9e9bdd4184680e28968d1e9853" +SRC_URI[arm.md5sum] = "83777eac2bcd959894ca964f9cb5c9a0" +SRC_URI[arm.sha256sum] = "2210c5590a822a764838dfdefed08c882c70c14dc29fba04c255cee8b4df5196" S="${WORKDIR}/${FSLBIN_NAME}" From e18790cc2e2a2bada6c3bdb1ad49f982f15aedb2 Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Fri, 23 Aug 2019 11:45:15 +0200 Subject: [PATCH 123/133] imx-gpu-viv: sync with meta-fsl-bsp-release branch sumo-4.14.98-2.1.0 Update to v6.2.4.p4.2. Make sure to keep the "wayland" distro feature check out of the recipe to be able to compile framebuffer images for the ccimx8x. https://jira.digi.com/browse/DEL-6722 Signed-off-by: Gabriel Valcazar --- .../recipes-graphics/imx-gpu-viv/imx-gpu-viv-v6.inc | 1 + .../imx-gpu-viv/imx-gpu-viv_6.2.4.p4.0-aarch32.bb | 8 -------- .../imx-gpu-viv/imx-gpu-viv_6.2.4.p4.0-aarch64.bb | 8 -------- .../imx-gpu-viv/imx-gpu-viv_6.2.4.p4.2-aarch32.bb | 8 ++++++++ .../imx-gpu-viv/imx-gpu-viv_6.2.4.p4.2-aarch64.bb | 8 ++++++++ 5 files changed, 17 insertions(+), 16 deletions(-) delete mode 100644 meta-digi-dey/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.2.4.p4.0-aarch32.bb delete mode 100644 meta-digi-dey/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.2.4.p4.0-aarch64.bb create mode 100644 meta-digi-dey/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.2.4.p4.2-aarch32.bb create mode 100644 meta-digi-dey/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.2.4.p4.2-aarch64.bb diff --git a/meta-digi-dey/recipes-graphics/imx-gpu-viv/imx-gpu-viv-v6.inc b/meta-digi-dey/recipes-graphics/imx-gpu-viv/imx-gpu-viv-v6.inc index d7d5a2c02..9b00659b6 100644 --- a/meta-digi-dey/recipes-graphics/imx-gpu-viv/imx-gpu-viv-v6.inc +++ b/meta-digi-dey/recipes-graphics/imx-gpu-viv/imx-gpu-viv-v6.inc @@ -141,6 +141,7 @@ HAS_GBM_mx8 = "true" GLES3_HEADER_REMOVALS = "gl31.h gl32.h" GLES3_HEADER_REMOVALS_remove_mx8 = "gl31.h" GLES3_HEADER_REMOVALS_remove_mx8qm = "gl32.h" +GLES3_HEADER_REMOVALS_mx8qxp = "" do_install () { install -d ${D}${libdir} diff --git a/meta-digi-dey/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.2.4.p4.0-aarch32.bb b/meta-digi-dey/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.2.4.p4.0-aarch32.bb deleted file mode 100644 index 2bf0a2ba5..000000000 --- a/meta-digi-dey/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.2.4.p4.0-aarch32.bb +++ /dev/null @@ -1,8 +0,0 @@ -require imx-gpu-viv-v6.inc - -LIC_FILES_CHKSUM = "file://COPYING;md5=80c0478f4339af024519b3723023fe28" - -SRC_URI[md5sum] = "83c40f63358dd3bd9bbc1cd7521bf8fe" -SRC_URI[sha256sum] = "5abfc3b24c1f9d02970064898fb30da705b67bc7e967dbfbf0525c1cc60f2491" - -COMPATIBLE_MACHINE = "(mx6q|mx6dl|mx6sx|mx6sl|mx7ulp)" diff --git a/meta-digi-dey/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.2.4.p4.0-aarch64.bb b/meta-digi-dey/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.2.4.p4.0-aarch64.bb deleted file mode 100644 index 1891dd727..000000000 --- a/meta-digi-dey/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.2.4.p4.0-aarch64.bb +++ /dev/null @@ -1,8 +0,0 @@ -require imx-gpu-viv-v6.inc - -LIC_FILES_CHKSUM = "file://COPYING;md5=80c0478f4339af024519b3723023fe28" - -SRC_URI[md5sum] = "a937571f6ecf85bdff1dfb3b6c834ed0" -SRC_URI[sha256sum] = "1eb4ebe2fa11d8fb7beb8fc7046bb57093fd416d0a401608d78cd48b65624fcd" - -COMPATIBLE_MACHINE = "(mx8)" diff --git a/meta-digi-dey/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.2.4.p4.2-aarch32.bb b/meta-digi-dey/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.2.4.p4.2-aarch32.bb new file mode 100644 index 000000000..8761a980f --- /dev/null +++ b/meta-digi-dey/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.2.4.p4.2-aarch32.bb @@ -0,0 +1,8 @@ +require imx-gpu-viv-v6.inc + +LIC_FILES_CHKSUM = "file://COPYING;md5=72c0f70181bb6e83eee6aab8de12a9f3" + +SRC_URI[md5sum] = "db096170c024aee88c48dd5b627e54b9" +SRC_URI[sha256sum] = "aa53c15c34b7af3b05876a0dfe4046ed4b864464d1bc9f10dcc0978e448f12a2" + +COMPATIBLE_MACHINE = "(mx6q|mx6dl|mx6sx|mx6sl|mx7ulp)" diff --git a/meta-digi-dey/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.2.4.p4.2-aarch64.bb b/meta-digi-dey/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.2.4.p4.2-aarch64.bb new file mode 100644 index 000000000..66e2da76f --- /dev/null +++ b/meta-digi-dey/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.2.4.p4.2-aarch64.bb @@ -0,0 +1,8 @@ +require imx-gpu-viv-v6.inc + +LIC_FILES_CHKSUM = "file://COPYING;md5=72c0f70181bb6e83eee6aab8de12a9f3" + +SRC_URI[md5sum] = "fd50ff48725e6dd44aab2e08aeb87717" +SRC_URI[sha256sum] = "a36cea6116f3e04ef0fbaf880965eed71b093a065e25c91b2b494df0f944792b" + +COMPATIBLE_MACHINE = "(mx8)" From 7c3f09aabee230e619b978df7c7b326b72c2eaf2 Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Fri, 23 Aug 2019 11:49:28 +0200 Subject: [PATCH 124/133] opencv: sync with meta-fsl-bsp-release branch sumo-4.14.98-2.1.0 Update opencv SRCREV. https://jira.digi.com/browse/DEL-6722 Signed-off-by: Gabriel Valcazar --- meta-digi-dey/recipes-graphics/opencv/opencv_4.0.1.imx.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meta-digi-dey/recipes-graphics/opencv/opencv_4.0.1.imx.bb b/meta-digi-dey/recipes-graphics/opencv/opencv_4.0.1.imx.bb index 2a4ce2920..4fa486cf8 100644 --- a/meta-digi-dey/recipes-graphics/opencv/opencv_4.0.1.imx.bb +++ b/meta-digi-dey/recipes-graphics/opencv/opencv_4.0.1.imx.bb @@ -10,7 +10,7 @@ ARM_INSTRUCTION_SET_armv5 = "arm" DEPENDS = "libtool swig-native bzip2 zlib glib-2.0 libwebp" -SRCREV_opencv = "737f8fad1318607bf78eff76e3e4364db11663e0" +SRCREV_opencv = "c3d56b9aea993de1ff3fec28627372f2e24d7eda" SRCREV_contrib = "25221244732dcf44c1450d0f93edc2529a61c0e1" SRCREV_ipp = "32e315a5b106a7b89dbed51c28f8120a48b368b4" SRCREV_boostdesc = "34e4206aef44d50e6bbcd0ab06354b52e7466d26" From 814d0dd561481abbd3a92e1c748ab2e145fb6a28 Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Fri, 23 Aug 2019 11:58:48 +0200 Subject: [PATCH 125/133] weston: sync with meta-fsl-bsp-release branch sumo-4.14.98-2.1.0 Update SRCREV and remove outdated patches. https://jira.digi.com/browse/DEL-6722 Signed-off-by: Gabriel Valcazar --- ...-argb8888-as-gbm-default-on-mscale-8.patch | 26 ----------------- ...gure-desktop-shell-size-in-weston-co.patch | 28 ------------------ .../wayland/weston_5.0.0.imx.bb | 29 +++++++++++++++---- 3 files changed, 24 insertions(+), 59 deletions(-) delete mode 100644 meta-digi-dey/recipes-graphics/wayland/weston/0001-weston.ini-using-argb8888-as-gbm-default-on-mscale-8.patch delete mode 100644 meta-digi-dey/recipes-graphics/wayland/weston/0002-weston.ini-configure-desktop-shell-size-in-weston-co.patch diff --git a/meta-digi-dey/recipes-graphics/wayland/weston/0001-weston.ini-using-argb8888-as-gbm-default-on-mscale-8.patch b/meta-digi-dey/recipes-graphics/wayland/weston/0001-weston.ini-using-argb8888-as-gbm-default-on-mscale-8.patch deleted file mode 100644 index 75589d3b1..000000000 --- a/meta-digi-dey/recipes-graphics/wayland/weston/0001-weston.ini-using-argb8888-as-gbm-default-on-mscale-8.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 186ec0c80410b2120b8f31c211cb44a836c84522 Mon Sep 17 00:00:00 2001 -From: Haihua Hu -Date: Wed, 4 Jul 2018 16:05:20 +0800 -Subject: [PATCH] weston.ini: using argb8888 as gbm default on mscale 850D - -mscale 850D video playback need using pixel alpha for graphic layer - -upstream status: imx specific -Signed-off-by: Haihua Hu - ---- - weston.ini.in | 1 + - 1 file changed, 1 insertion(+) - -Index: git/weston.ini.in -=================================================================== ---- git.orig/weston.ini.in -+++ git/weston.ini.in -@@ -2,6 +2,7 @@ - # i.MX: Disable idle timeout - idle-time=0 - #use-g2d=1 -+gbm-format=argb8888 - - [libinput] - touchscreen_calibrator=true diff --git a/meta-digi-dey/recipes-graphics/wayland/weston/0002-weston.ini-configure-desktop-shell-size-in-weston-co.patch b/meta-digi-dey/recipes-graphics/wayland/weston/0002-weston.ini-configure-desktop-shell-size-in-weston-co.patch deleted file mode 100644 index 4aa325693..000000000 --- a/meta-digi-dey/recipes-graphics/wayland/weston/0002-weston.ini-configure-desktop-shell-size-in-weston-co.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 3012798d7e9c9e624024fc962d749a960289ad8b Mon Sep 17 00:00:00 2001 -From: Haihua Hu -Date: Wed, 11 Jul 2018 17:47:47 +0800 -Subject: [PATCH] weston.ini: configure desktop shell size in weston configure - file - -mscale 850D need set desktop shell to 1080p - -upstream status: imx specific -Signed-off-by: Haihua Hu - ---- - weston.ini.in | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/weston.ini.in b/weston.ini.in -index bd8abe4..077155b 100644 ---- a/weston.ini.in -+++ b/weston.ini.in -@@ -8,6 +8,8 @@ gbm-format=argb8888 - #mode=1920x1080@60 - #transform=90 - -+[shell] -+size=1920x1080 - - #[output] - #name=HDMI-A-2 diff --git a/meta-digi-dey/recipes-graphics/wayland/weston_5.0.0.imx.bb b/meta-digi-dey/recipes-graphics/wayland/weston_5.0.0.imx.bb index 61e4e4176..6e3426145 100644 --- a/meta-digi-dey/recipes-graphics/wayland/weston_5.0.0.imx.bb +++ b/meta-digi-dey/recipes-graphics/wayland/weston_5.0.0.imx.bb @@ -17,11 +17,7 @@ SRC_URI = "${WESTON_SRC};branch=${SRCBRANCH} \ file://0001-weston-launch-Provide-a-default-version-that-doesn-t.patch \ file://0003-weston-touch-calibrator-Advertise-the-touchscreen-ca.patch \ " -# Use argb8888 as gbm-format for i.MX8MQ only -SRC_URI_append_mx8mq = " file://0001-weston.ini-using-argb8888-as-gbm-default-on-mscale-8.patch \ - file://0002-weston.ini-configure-desktop-shell-size-in-weston-co.patch \ -" -SRCREV = "fb563901657b296c7c7c86d26602a622429e334f" +SRCREV = "b85441fbc9e321931fb7ca833555d740beca054d" S = "${WORKDIR}/git" UPSTREAM_CHECK_URI = "https://wayland.freedesktop.org/releases.html" @@ -111,6 +107,17 @@ PACKAGECONFIG[opengl] = "--enable-opengl,--disable-opengl" # Weston with imxgpu hardware PACKAGECONFIG[imxgpu] = "--enable-imxgpu,--disable-imxgpu" +SOCNAME = "none" +SOCNAME_mx8mq = "8mq" +SOCNAME_mx8mm = "8mm" + +uncomment() { + if ! (grep "^#$1" $2); then + bbfatal "Commented setting '#$1' not found in file $PWD/$2" + fi + sed -i -e 's,^#'"$1"','"$1"',g' $2 +} + do_install_append() { # Weston doesn't need the .la files to load modules, so wipe them rm -f ${D}/${libdir}/libweston-${WESTON_MAJOR_VERSION}/*.la @@ -137,6 +144,18 @@ do_install_append() { if [ -z "${@bb.utils.filter('BBFILE_COLLECTIONS', 'aglprofilegraphical', d)}" ]; then install -d ${WESTON_INI_DEST_DIR} install -m 0644 ${WESTON_INI_SRC} ${WESTON_INI_DEST_DIR} + cd ${WESTON_INI_DEST_DIR} + case ${SOCNAME} in + 8mq) + uncomment "gbm-format=argb8888" weston.ini + uncomment "\\[shell\\]" weston.ini + uncomment "size=1920x1080" weston.ini + ;; + 8mm) + uncomment "use-g2d=1" weston.ini + ;; + esac + cd - fi } From 9f340a37e4efdfe356b6d86e2140ef552101d836 Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Fri, 23 Aug 2019 12:02:08 +0200 Subject: [PATCH 126/133] xf86-video-imx-vivante: sync with meta-fsl-bsp-release branch sumo-4.14.98-2.1.0 Change the recipe name to an older version (v6.2.4.p1.8). This is done because there haven't been any changes in the source code since said version. https://jira.digi.com/browse/DEL-6722 Signed-off-by: Gabriel Valcazar --- ...vivante_6.2.4.p4.0.bb => xf86-video-imx-vivante_6.2.4.p1.8.bb} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename meta-digi-dey/recipes-graphics/xorg-driver/{xf86-video-imx-vivante_6.2.4.p4.0.bb => xf86-video-imx-vivante_6.2.4.p1.8.bb} (100%) diff --git a/meta-digi-dey/recipes-graphics/xorg-driver/xf86-video-imx-vivante_6.2.4.p4.0.bb b/meta-digi-dey/recipes-graphics/xorg-driver/xf86-video-imx-vivante_6.2.4.p1.8.bb similarity index 100% rename from meta-digi-dey/recipes-graphics/xorg-driver/xf86-video-imx-vivante_6.2.4.p4.0.bb rename to meta-digi-dey/recipes-graphics/xorg-driver/xf86-video-imx-vivante_6.2.4.p1.8.bb From 0b31ae037e59e199b56fa68b0061672c0f031937 Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Fri, 23 Aug 2019 12:45:48 +0200 Subject: [PATCH 127/133] gstreamer: sync with meta-fsl-bsp-release branch sumo-4.14.98-2.1.0 Update SRCREV and SRCBRANCH in most recipes. Update imx-gst1.0-plugin to v4.4.7. https://jira.digi.com/browse/DEL-6722 Signed-off-by: Gabriel Valcazar --- .../gstreamer/gstreamer1.0-plugins-bad_1.14.imx.bb | 4 ++-- .../gstreamer/gstreamer1.0-plugins-base_1.14.imx.bb | 4 ++-- .../gstreamer/gstreamer1.0-plugins-good_1.14.imx.bb | 4 ++-- .../recipes-multimedia/gstreamer/gstreamer1.0_1.14.imx.bb | 2 +- ...{imx-gst1.0-plugin_4.4.5.bb => imx-gst1.0-plugin_4.4.7.bb} | 4 ++-- 5 files changed, 9 insertions(+), 9 deletions(-) rename meta-digi-dey/recipes-multimedia/gstreamer/{imx-gst1.0-plugin_4.4.5.bb => imx-gst1.0-plugin_4.4.7.bb} (97%) diff --git a/meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.14.imx.bb b/meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.14.imx.bb index d4fccbd6b..faf07b248 100644 --- a/meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.14.imx.bb +++ b/meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.14.imx.bb @@ -41,13 +41,13 @@ SRC_URI_remove = "file://0001-Prepend-PKG_CONFIG_SYSROOT_DIR-to-pkg-config-outpu EXTRA_OECONF_remove = "WAYLAND_PROTOCOLS_SYSROOT_DIR=${RECIPE_SYSROOT}" GST1.0-PLUGINS-BAD_SRC ?= "gitsm://source.codeaurora.org/external/imx/gst-plugins-bad.git;protocol=https" -SRCBRANCH = "MM_04.04.05_1902_L4.14.98_GA" +SRCBRANCH = "MM_04.04.07_1906_L4.14.98" SRC_URI = " \ ${GST1.0-PLUGINS-BAD_SRC};branch=${SRCBRANCH} \ " -SRCREV = "0191521ba226904e4b2f84c38e5f6ae75169a18a" +SRCREV = "9fc1ada651093b37675d30a2794044d06bcacdc8" # This remove "--exclude=autopoint" option from autoreconf argument to avoid # configure.ac:30: error: required file './ABOUT-NLS' not found diff --git a/meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.14.imx.bb b/meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.14.imx.bb index 1742574c5..2f5f47aed 100644 --- a/meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.14.imx.bb +++ b/meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.14.imx.bb @@ -24,14 +24,14 @@ PACKAGECONFIG[gio-unix-2.0] = "" EXTRA_OECONF_append = " --disable-opengl --enable-wayland" GST1.0-PLUGINS-BASE_SRC ?= "gitsm://source.codeaurora.org/external/imx/gst-plugins-base.git;protocol=https" -SRCBRANCH = "MM_04.04.05_1902_L4.14.98_GA" +SRCBRANCH = "MM_04.04.07_1906_L4.14.98" SRC_URI = " \ ${GST1.0-PLUGINS-BASE_SRC};branch=${SRCBRANCH} \ file://0001-introspection.m4-prefix-pkgconfig-paths-with-PKG_CON.patch \ file://make-gio_unix_2_0-dependency-configurable.patch \ " -SRCREV = "f62f8ab685e549eefaecdb1e700239a5a408fcad" +SRCREV = "5e8cc757e4fec72ee007ac12fab2d1333fce1dc9" inherit use-imx-headers diff --git a/meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.14.imx.bb b/meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.14.imx.bb index 0a30ca351..1b9c35857 100644 --- a/meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.14.imx.bb +++ b/meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.14.imx.bb @@ -8,12 +8,12 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \ DEPENDS += "libdrm" GST1.0-PLUGINS-GOOD_SRC ?= "gitsm://source.codeaurora.org/external/imx/gst-plugins-good.git;protocol=https" -SRCBRANCH = "MM_04.04.05_1902_L4.14.98_GA" +SRCBRANCH = "MM_04.04.07_1906_L4.14.98" SRC_URI = " \ ${GST1.0-PLUGINS-GOOD_SRC};branch=${SRCBRANCH} \ " -SRCREV = "a31aabb7581d3f491cd31889d44479bb0f34990b" +SRCREV = "36d46a8a9a7dcf173f9a0a0145b6cfa44f879670" EXTRA_AUTORECONF = "" PACKAGECONFIG_append = " vpx" diff --git a/meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0_1.14.imx.bb b/meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0_1.14.imx.bb index 72de5e6a2..6369454f2 100644 --- a/meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0_1.14.imx.bb +++ b/meta-digi-dey/recipes-multimedia/gstreamer/gstreamer1.0_1.14.imx.bb @@ -8,7 +8,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=6762ed442b3822387a51c92d928ead0d \ # Use i.MX fork of GST for customizations GST1.0_SRC ?= "gitsm://source.codeaurora.org/external/imx/gstreamer.git;protocol=https" -SRCBRANCH = "MM_04.04.05_1902_L4.14.98_GA" +SRCBRANCH = "MM_04.04.07_1906_L4.14.98" SRC_URI = " ${GST1.0_SRC};branch=${SRCBRANCH}" SRCREV = "d42548da09724ad8cc1aa4f1944607920be2f4c0" diff --git a/meta-digi-dey/recipes-multimedia/gstreamer/imx-gst1.0-plugin_4.4.5.bb b/meta-digi-dey/recipes-multimedia/gstreamer/imx-gst1.0-plugin_4.4.7.bb similarity index 97% rename from meta-digi-dey/recipes-multimedia/gstreamer/imx-gst1.0-plugin_4.4.5.bb rename to meta-digi-dey/recipes-multimedia/gstreamer/imx-gst1.0-plugin_4.4.7.bb index 75885e5b7..42f4a959e 100644 --- a/meta-digi-dey/recipes-multimedia/gstreamer/imx-gst1.0-plugin_4.4.5.bb +++ b/meta-digi-dey/recipes-multimedia/gstreamer/imx-gst1.0-plugin_4.4.7.bb @@ -21,12 +21,12 @@ LIC_FILES_CHKSUM = "file://COPYING-LGPL-2;md5=5f30f0716dfdd0d91eb439ebec522ec2 \ file://COPYING-LGPL-2.1;md5=fbc093901857fcd118f065f900982c24" IMXGST_SRC ?= "git://source.codeaurora.org/external/imx/imx-gst1.0-plugin.git;protocol=https" -SRCBRANCH = "MM_04.04.05_1902_L4.14.98_GA" +SRCBRANCH = "MM_04.04.07_1906_L4.14.98" SRC_URI = "${IMXGST_SRC};branch=${SRCBRANCH} \ file://0001-imx-gst1.0-plugin-Update-KERNEL_VERSION-check.patch \ " -SRCREV = "0c5f48b3aee473d8c8f3e853eb2078f054caa4d2" +SRCREV = "aeebe91727c3228723015cd3086c449ea23e1a5d" S = "${WORKDIR}/git" From 74542d8d6b255cbcf85791006adc441559ba9fa3 Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Fri, 23 Aug 2019 12:48:59 +0200 Subject: [PATCH 128/133] imx-codec: sync with meta-fsl-bsp-release branch sumo-4.14.98-2.1.0 Update to v4.4.7. https://jira.digi.com/browse/DEL-6722 Signed-off-by: Gabriel Valcazar --- .../recipes-multimedia/imx-codec/imx-codec_4.4.5.bb | 12 ------------ .../recipes-multimedia/imx-codec/imx-codec_4.4.7.bb | 12 ++++++++++++ 2 files changed, 12 insertions(+), 12 deletions(-) delete mode 100644 meta-digi-dey/recipes-multimedia/imx-codec/imx-codec_4.4.5.bb create mode 100644 meta-digi-dey/recipes-multimedia/imx-codec/imx-codec_4.4.7.bb diff --git a/meta-digi-dey/recipes-multimedia/imx-codec/imx-codec_4.4.5.bb b/meta-digi-dey/recipes-multimedia/imx-codec/imx-codec_4.4.5.bb deleted file mode 100644 index ef72b3391..000000000 --- a/meta-digi-dey/recipes-multimedia/imx-codec/imx-codec_4.4.5.bb +++ /dev/null @@ -1,12 +0,0 @@ -# Copyright (C) 2013-2016 Freescale Semiconductor -# Copyright 2017-2018 NXP -# Released under the MIT license (see COPYING.MIT for the terms) - -require imx-codec.inc - -LIC_FILES_CHKSUM = "file://COPYING;md5=80c0478f4339af024519b3723023fe28" - -SRC_URI[md5sum] = "e17258161c84530097f6f9d5d46e6c26" -SRC_URI[sha256sum] = "b53eeada02ab09c8f5216348c667f8d8edef0c585e4b2f738e8b18955ad710b4" - -COMPATIBLE_MACHINE = "(mx6|mx7|mx8)" diff --git a/meta-digi-dey/recipes-multimedia/imx-codec/imx-codec_4.4.7.bb b/meta-digi-dey/recipes-multimedia/imx-codec/imx-codec_4.4.7.bb new file mode 100644 index 000000000..546f0e0ba --- /dev/null +++ b/meta-digi-dey/recipes-multimedia/imx-codec/imx-codec_4.4.7.bb @@ -0,0 +1,12 @@ +# Copyright (C) 2013-2016 Freescale Semiconductor +# Copyright 2017-2018 NXP +# Released under the MIT license (see COPYING.MIT for the terms) + +require imx-codec.inc + +LIC_FILES_CHKSUM = "file://COPYING;md5=72c0f70181bb6e83eee6aab8de12a9f3" + +SRC_URI[md5sum] = "d8935dbc7b10e3f09c93bc0100c5eb03" +SRC_URI[sha256sum] = "baacda3525fa402dbdfc3bf1ee8cfb6fa3ac493c89511548ca8e095267366253" + +COMPATIBLE_MACHINE = "(mx6|mx7|mx8)" From ec7a413ee8c82749deb252cb47e4ab0a32f6785e Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Fri, 23 Aug 2019 12:54:37 +0200 Subject: [PATCH 129/133] imx-parser: sync with meta-fsl-bsp-release branch sumo-4.14.98-2.1.0 Update to v4.4.7. https://jira.digi.com/browse/DEL-6722 Signed-off-by: Gabriel Valcazar --- .../imx-parser/imx-parser_4.4.5.bb | 12 ------------ .../imx-parser/imx-parser_4.4.7.bb | 12 ++++++++++++ 2 files changed, 12 insertions(+), 12 deletions(-) delete mode 100644 meta-digi-dey/recipes-multimedia/imx-parser/imx-parser_4.4.5.bb create mode 100644 meta-digi-dey/recipes-multimedia/imx-parser/imx-parser_4.4.7.bb diff --git a/meta-digi-dey/recipes-multimedia/imx-parser/imx-parser_4.4.5.bb b/meta-digi-dey/recipes-multimedia/imx-parser/imx-parser_4.4.5.bb deleted file mode 100644 index bf6171775..000000000 --- a/meta-digi-dey/recipes-multimedia/imx-parser/imx-parser_4.4.5.bb +++ /dev/null @@ -1,12 +0,0 @@ -# Copyright (C) 2013-2016 Freescale Semiconductor -# Copyright 2017-2018 NXP -# Released under the MIT license (see COPYING.MIT for the terms) - -include imx-parser.inc - -LIC_FILES_CHKSUM = "file://COPYING;md5=80c0478f4339af024519b3723023fe28" - -SRC_URI[md5sum] = "7fa7b0fa1682cae71c3a163da866f676" -SRC_URI[sha256sum] = "de86b57b429c0e6ed6b6842e5af1ec4d7b9d2074234769de6ba2edf04c967acd" - -COMPATIBLE_MACHINE = "(mx6|mx7|mx8)" diff --git a/meta-digi-dey/recipes-multimedia/imx-parser/imx-parser_4.4.7.bb b/meta-digi-dey/recipes-multimedia/imx-parser/imx-parser_4.4.7.bb new file mode 100644 index 000000000..89156896d --- /dev/null +++ b/meta-digi-dey/recipes-multimedia/imx-parser/imx-parser_4.4.7.bb @@ -0,0 +1,12 @@ +# Copyright (C) 2013-2016 Freescale Semiconductor +# Copyright 2017-2018 NXP +# Released under the MIT license (see COPYING.MIT for the terms) + +include imx-parser.inc + +LIC_FILES_CHKSUM = "file://COPYING;md5=72c0f70181bb6e83eee6aab8de12a9f3" + +SRC_URI[md5sum] = "1a6ae5be5389c23aaf2571e8fd7731ac" +SRC_URI[sha256sum] = "2cfab5311994669ad3bf6e84f4ffe6a89f6796149d6f88e316ecb34d46e44ab0" + +COMPATIBLE_MACHINE = "(mx6|mx7|mx8)" From 9f8f4b50f9edf9cfccec63b14ed8b3e1e1f472ec Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Fri, 23 Aug 2019 13:01:46 +0200 Subject: [PATCH 130/133] qt: gstreamer: sync with meta-fsl-bsp-release branch sumo-4.14.98-2.1.0 Update SRCREV and SRCBRANCH. https://jira.digi.com/browse/DEL-6722 Signed-off-by: Gabriel Valcazar --- .../recipes-qt/qt5/gstreamer1.0-plugins-good-qt_1.14.imx.bb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/meta-digi-dey/recipes-qt/qt5/gstreamer1.0-plugins-good-qt_1.14.imx.bb b/meta-digi-dey/recipes-qt/qt5/gstreamer1.0-plugins-good-qt_1.14.imx.bb index 5bc6d0f16..1993b194a 100644 --- a/meta-digi-dey/recipes-qt/qt5/gstreamer1.0-plugins-good-qt_1.14.imx.bb +++ b/meta-digi-dey/recipes-qt/qt5/gstreamer1.0-plugins-good-qt_1.14.imx.bb @@ -6,13 +6,13 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \ file://gst/replaygain/rganalysis.c;beginline=1;endline=23;md5=b60ebefd5b2f5a8e0cab6bfee391a5fe" GST1.0-PLUGINS-GOOD_SRC ?= "gitsm://source.codeaurora.org/external/imx/gst-plugins-good.git;protocol=https" -SRCBRANCH = "MM_04.04.05_1902_L4.14.98_GA" +SRCBRANCH = "MM_04.04.07_1906_L4.14.98" SRC_URI = " \ ${GST1.0-PLUGINS-GOOD_SRC};branch=${SRCBRANCH} \ file://0001-configure.ac-Add-prefix-to-correct-the-QT_PATH.patch \ " -SRCREV = "a31aabb7581d3f491cd31889d44479bb0f34990b" +SRCREV = "36d46a8a9a7dcf173f9a0a0145b6cfa44f879670" DEPENDS += "gstreamer1.0-plugins-base virtual/kernel \ ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'qtwayland', '', d)} \ From 0152a70773a8661dd723aebf150231491e255356 Mon Sep 17 00:00:00 2001 From: Hector Palacios Date: Thu, 22 Aug 2019 17:06:29 +0200 Subject: [PATCH 131/133] firmware-qualcomm: update qca65x4 proprietary fw to r10007.1 Latest release r10007.1 updates the following files from qca6574au-le-2-2-1_qca_oem repo at meta_build/firmware/pcie/: - qwlan30.bin -> qwlan30.bin (60ac4486fba393294b590f86117f5539) - utf30.bin -> utf.bin (c15794509d8a8435d4244fea699d99b3) and the following files from meta_build/firmware/sdio/: - qwlan30.bin -> qwlan30.bin (4421b30ca259ab73bbfa79df807e0b47) - utf30.bin -> utf30.bin (b2651762aa1d620349593905efab326b) Update Bluetooth firmware from qca6574au-le-2-2-1_qca_oem repo at cnss_proc_1/btfm_proc/bt/wcss/bsp/rom/build/SCAQBAF/Test_Files/Linux/ - rampatch_tlv_3.2.tlv -> rampatch_tlv_3.2.tlv (72d28614afd0abe5846c1758099282e3) - nvm_tlv_3.2.bin -> nvm_tlv_3.2.bin (3de46ea023570b86cabb9502b92a1fed) Note: nvm_tlv_3.2.bin based on original md5sum a97cdfe80e8109cf3574f74cd3c73fc7 but changed byte at offset 0x36 from 0x82 to 0x02 (IBS). Signed-off-by: Hector Palacios https://jira.digi.com/browse/DEL-6725 --- .../qca6574_bt/nvm_tlv_3.2.bin | Bin .../qca6574_bt/rampatch_tlv_3.2.tlv | Bin 67356 -> 64544 bytes .../qca6574_proprietary/qwlan30.bin | Bin 613389 -> 655557 bytes .../qca6574_proprietary/utf.bin | Bin 393024 -> 407888 bytes .../firmware-qualcomm/qwlan30.bin | Bin 615200 -> 644568 bytes .../firmware-qualcomm/utf30.bin | Bin 382148 -> 397768 bytes 6 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 meta-digi-arm/recipes-bsp/firmware-qualcomm/firmware-qualcomm/qca6574_bt/nvm_tlv_3.2.bin mode change 100755 => 100644 meta-digi-arm/recipes-bsp/firmware-qualcomm/firmware-qualcomm/qca6574_bt/rampatch_tlv_3.2.tlv diff --git a/meta-digi-arm/recipes-bsp/firmware-qualcomm/firmware-qualcomm/qca6574_bt/nvm_tlv_3.2.bin b/meta-digi-arm/recipes-bsp/firmware-qualcomm/firmware-qualcomm/qca6574_bt/nvm_tlv_3.2.bin old mode 100755 new mode 100644 diff --git a/meta-digi-arm/recipes-bsp/firmware-qualcomm/firmware-qualcomm/qca6574_bt/rampatch_tlv_3.2.tlv b/meta-digi-arm/recipes-bsp/firmware-qualcomm/firmware-qualcomm/qca6574_bt/rampatch_tlv_3.2.tlv old mode 100755 new mode 100644 index fbe5543e00924d80e2ef5e126413ad1237922f6e..86dffcaa18f1b4aed45dad558def57e94258e539 GIT binary patch delta 19384 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 E0VozLOaK4? diff --git a/meta-digi-arm/recipes-bsp/firmware-qualcomm/firmware-qualcomm/qca6574_proprietary/qwlan30.bin b/meta-digi-arm/recipes-bsp/firmware-qualcomm/firmware-qualcomm/qca6574_proprietary/qwlan30.bin index 54bb0c052c779e59690774c303e39026587cb6c2..10c20eac444c7015bf4da269262238fee72980c5 100644 GIT binary patch delta 223936 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�wtl0lrVsHNVC8^>%?_vJDJ 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�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 delta 181773 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

N5vVnv5X=Kfg%-~ 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

Vu{~l4iuM?=YIOo{?lrc{uVt=;xv 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 LGOpW}I{1G9!2;50 diff --git a/meta-digi-arm/recipes-bsp/firmware-qualcomm/firmware-qualcomm/qca6574_proprietary/utf.bin b/meta-digi-arm/recipes-bsp/firmware-qualcomm/firmware-qualcomm/qca6574_proprietary/utf.bin index 0609ff55a7d8547c8257c976e7820952df1788e9..768150396f96ba5bc7042d77c770d11b9edcb9c6 100644 GIT binary patch delta 97637 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 z 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 OC=XmnJ6-xet11Al`AYKu delta 82162 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�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

kYPWR2scFxNWj7De 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

2PFw z?mM-lXMwt5cYli86I8IXqh-gz=cHYe>1%js*ZzoZ2y-Pm$yTvoL`egn&#XSJ46b}P zsIq%2RD3*3aQh8ZzX}gTqVdK|`uz`q>TcW$!}B-_ot*5dEE-go)giUEj)k&SQh2?7 zi}d3+IN2*$?)&!sp(meZb-u!rrS7(Bk}BWf71Y?AuvWP?&xQViAF5%+e8Lc4+s_3_ z)nL(4UOvX%VD~Fn{(m%+nuJ$;?6vs=itr$~ZNG{~+ z5Jxucwt*tzSG&y)PoU5Sp8c4>2RLxCKzLCWD)6`7m3KUJa zTXJY2Ll-P{Or>E9n0}Hr@dwGiirrQ@M=2!w#zh?X5+x%$pWi%*J{6I8BqA=lC!%z} z@^wF#t^BUDQ{w;PUgykR+5Um*AiL3~wgrKHnc|=PWndjw0-R(H{UGp#xmlgNuTQ}D z3xdkQpzx;JpTp|xSl`*N@5^C#cCIgHOq|;DL_W5fpcKu(4usOISPboI34Rg$=pF>dx49HKfqXT zRGXQ=U;!Jj-#Aznk{W!BZb^#p)mhCPD?B$w0wA;Nx>f7(I+3tYg^kQv}1Vvob{ zN+k7pwGWtv9tChFYcOAl=Emr0%V#YUm|n@(8TmXVY`zs~Dwg)y->T+x-N!F0QH*h@ zvVj9EPy^_qYExD|?i8@#CD`0R`vuHls#0kP;glGbm3qsjGIlm>or+Yo< zeghk-v-1`zJcvtvM0&~(*$8_5F-Xf@LLTLyPm&-s!S?3F#^ZAxkrW*nSDkZw7 zDpa;}UiQ_2YK33Gt4v>yR=;`f5B1&nlU)O_$t>M2J#fJP&7T)uKqVoRdUV zR*SqAwR`(6^CC_f0_q@5g|tDrFzju(P=(|%GsxLKi=cl#-H-=TAhOpVE?t>6+?0p+ zs?bhILzF-RAu$KfqEQO`m}sLC->W!(vfAZysG=fd3PV#?$}j zD7wB?!ayLiIS`aO6b*09*P)GKK23H;09vx&uD}qwbU;?`!_qjE5ND0xI|h`okbA9u zF5Tap%IzC^6UHSR==o&VHn5i*o^2bbx8mYBwWF0pg9XK zibvz1&_xRE`~ED{;?Ls|{mfIe&mK9uhzI(+14F~WE&vGZ6so|K4AzgV*q+=O<^~Zr~P7QI> z)3Yj^CK{0NpcsU_+sw^xRy&GuY9cB%{waW~FQyx&>$wuyx77J9^tpda)nIt*6?=VP z0HyXBrs%#>_BHo(5A8M5J@=*R0d^fD1%Y0Bi)pK7O8=8Kc4=~}p0Qj3aTaLoCme@u&&IZ3fxja2|QAQf(<2fzG1u%f}BTL4NH6mLtA)Iwu6(m z9G@PB@}s^~^$wHxN0x(WTIYBFEck+0I`@95GKJ!?!;y9j#Hj%tb(_^N6}lo-o2CBP zDAM@W+%|gK#GncNul<9wZG2GGW3p=@ob0rq`e*UZ;i#NlfvF^}m#8C#MN9enjyky-O}Z!tccgvO66rC-~T0-u0e)f)Sl->?GwA%UW~e9@`N z00zz8Z(2eBBm|oHGlJtN4nWGUS>c*nwGzjUKt{<^GWUlhE_S=7uyHOJ^BM}9-T24| z^g8f)StC&l`$b$j63v9692p7Xt5vvTB#5t8c9Z7 z06yu_6j>I44I_LLMq2q8TB6@9Ew`|H?h^BV^?({Srp6j!*#Q6c8D?uWD`8+2k=8Y| zX$@WdW@2z#Vzsg2I)HKCE9F~7<=b~vt;HipA$jmxx;o_YUDG-|dlZT_l);lML@2u~ zphBD7a!ncCLRmQ0q}Yobh0Xe0tlhO0Ca1AVIu@y~5OJ?*l{6t2{6rIT6Hp81;-aa_ z@C45JEJ<4tRCa{I9}8z{^$%JDks(y^Bk|Xx&_=q9_8Fe-9^y1iIR1s-FyZ_f+NW9K zH-xp47aS72DjCV2{TspiFpYN21fS+vu!3qggth&>i#bh<;TlY>s*JV-Cx(&O-kU&At`sjdZYsdCG!L(GY>z)Sp` zj3$bolQz6$ak<_5;iG;{8bEns3QCyx0)0&wU+;!kkmljBR?S>clCF$}Nh=!NL@hYC zVP=(8QVtedGb?YZ&1h6xj^7~J#$&;7OjhhnK?dXh>UnTRHOrd>vZKhX87EtSteQ!2 z*M)FdT3VVyUF6LPD$Ky>hUEYf7byLowGIpO7$zUFJ?_yI zG)y=$Xp}1|20%aS*A&%np#38!o!^3c zMx$8pG?b1(^Wnx^H3mH%wMNPcO|Pu1N2O`!*U}xKe?(hyt2WW~8}acmC~ERL+OncL zWVdDe3fvIXut{;OaZ|^eZ6hqk3QPSuI#Fmn(~}qiYf%4`%o>{l41wB4Hi~sAIaa1M zSTYtQ4_SE9SU3!~aM4(l1K)ptEP8kJW~nwds$45l$BfY$=D{B37v6VGE%@yata5co z!Nx<)W%M-aw?`=lakKWWy381DyN>48@H%Jpp%UF|K|By*6Y8 zELARW6vXlpE{PGT=t&s*%c*Ed+!|@0_OWuXOX~Tx?H_eP^{WB0`MUX`R?T!-YpCpP zvXkrAypx6^0rpX8$i5&(=8}7B&ALj^{4SkA!TLH4(IAQ@)VEbL^Ekw4EocxP+S42( zGdl`1LbCI+Xs4!NL6A#cp4kje1v zN#oEQ(JWv;7nlj@**J(pnCAIHkJd;w2YPvOVM18yqDCF9W;fX|-sAf*B7==1StIILXnctEUkuw(-G zBxYg#1kgLVaoGfq6pPGp(x_zc&$SmAdYsdw;DC zs<;b;eTB;u_%K6mnqI=+O+-%tu1}wYlu2&6CAcpkLNU3LDX9AMex?L9 z^S62KrD(DNY?evrY zNRzT*eCF842>L4j^-x3AR=j8m%2946D`eSU2tG6=<*)n`eoLNB`=b;J;b?s_1@5|H z+&KlsikYRf%q8zvj6Kxf{1ldEq6+wqGZV$b&*@C`O!zDb@NCwlubOpx$RcgxC9l8} zve3NHR|)QQG)S#6ubN)L?`EMWWRn!>UR@``pJc&;Z^K<#Xcl^n24)Km#^c#YJ$^fR zhZ3e}#mX5Y1P%+WOAtAWUnk@cI5S*~gbEOO-nqvwjuLDQ%mWW0bVEY*%3cvTKu%EkCt4vLMQ zCCTR$Kd`TD&Xm0@uzvoBV~tdHacKQ!{6`K-kq9GzCWE`F^LsViF4qr7_av{!8Pm{r z?43A17o`H>QJ4$Vb|!u+7mWbdXkRW&5L}~k(KzWEX}eZISw|69f6=zX1F(2qPMkI! zl}rj$nFCcPD+5)Lk2F8IbD(P~(fW}x=U}^Sj6_{C3tyRz9vk^44b_k#+oOHeQAyMv zy5r2Xx<~2Lz6#OTe0DZ8fEa90wd^P!Hv{O9D*V(8pp0I^FU&x3W1o{k+};J#iCt4Q zJI_hCO>+e)YHNZ(L%r;)p|^KaK%tNNP;CK7LlcGs&YOkL&pwcDv%_!dv zy`R^Lg)>2>`{zL;#slfz^`?Vl4VDP1GYqpNdlTc*hJaBRXPr6D%Qy;DXSCgQv`Jio zwjC`gl)`tJ?U`|~Br(|>SKvq{^p`6onMc=yG=tlGfb;|vj6&T7t(#j_7H-QQP|64A ztc8hn?3DWVXzICu5W*ZsREyL`bKEox5>miLNiF{-I*G{yZioBX^O zJuSLt@0{wP9&WbJQRvM+)_l}vS=h0?A_064w)=UJ9$r+*tZ%7*+);ef^^(kdrc+iO znG}Whv^4R~@~@yiu-APW%;{lTV3om!AXZ>8_Zha$LfW{k{Vh|3Z3W8y_LwkP(;eVy z>s=3_LeMjpLC^o0g(84*@x+8#syzzQ6SQQy5t$PPt@KX!Iqh#%-3Nd5?CKE4W5k*$ zuh=eZl_`f%h%v@t1E|XEEH${Cd{N%{^47j^Em||p%wwqmadoGI_{N+dWUM&!OC?q@ z4=|fe44yp2MXst&Be}gmMF^&y@ckx%;bZa|gwsaZHjg5o}`-V>|P{Yw-;Vrc{?Ae^~&kT3{`Q$(z8F z;J~neM6SV5_%;lnj(4;Xj|Kbi{Wal@+|rono-61qzlld6JL>^tJur=9qPQQ>iwdxm zJlQfpMQl4YfR(e+C)@+Ma(rbriXny#2~OX7n1HDUQ+a@(@8gkqXx{J|8WhoySIF%@ zLeRGBky|L0EBg|RMwOI-D}l|VzmGr2Lu1LEdo>RkA1{_R*V5g*K5llI{jIeF&4%YC zzumNsRP^m*6+&1OKK2nJocn1tk%=WjE@8gzy zM9Y@ljZ)M?p!-^F09k|36KD^7FCW#Aue#(vfHBTu|S@@3^^WB>7!2 z7mXvo@6AQy$?t#XqB-O@bsm~bemBlTkCETnc_@kecFaSMlV4E*&;YCO*aAS2tMHNn z6f>cQ9@O(wQQ(ZRRN_j}yiZ$FZ3N$doj8Yh?Zd6|r;b5JHq_u@n};G4Jc%v!%&q+e zsll$4dK3vb(M{^$VFW>t^@9&!hrw<33_ie!xPcKtGx#+3!KYm*9(y@FemK}rN9sNr ze3(Pt`X}?CNg*KP20#XV0BpDqU_(F+o8Gn%DMH{FEP%nRTZ)?&qFAHu6`|z_W2)7V zA>30C5@O}7)AQ(pG+yAtyhlIGd-TJ+!4EUvA|# z`4s+n5lWfdKxY&!oyIl~3y8ys4Gp+d{sBQgNA@;CUGblF{QiMu(}Z^SdUK2@a5k?_ z!-Y?Qys`!V>nWr*X3Ig2M;wvrTj(^Q%(qasYvGKcg;hN8mP{z$CITm+4NsIAqRrtP zvw<#)4=cD^*v(ajfTiWN8qT(Iwh4H;A?fAi_2uQD{CdW!p?g|Il~ufgv}Zip(cixz zsM;c}d>529fGDkY*4l;T`9WXHcCyUq!u)CuUcDHJQY*w}g97~Y=G)f!3>s&AnpMdH zBjtl>MfI(;Gd>kU*tu)Xp7?RjOQW2p)4&Jbxja=@9ECq#j8sDsa)_LN!USq2nD4r= ze=!=#K8?joK*oO`$1gz(4ErRmsg}qh133q)fHBS{q9SSb7?x?D#1iRx0*awhHZJSD zTVA8@2wf#;nMesiggdc%smCC#{0C3AP~du^iEoYn3SO}qBCPRWT5>>avHVMT*TlzH zmY~Tq!Bu8^bobJ}x`EDaqTnJPC81E*y|niX-Pswm_Af=95uIIQ3kQq3mqNSFt5Wsg z^Z7PB>S+)zpT;xcCuynFeoWN(xWg^)dP)W(eM*o=x{Kq9(V^UVj$&UGPT;VO75CHGP3&o1aPW`v*+)||fsp8v@T<J%8a1pKMm_TtLz?9pb9q? zVrdc5p)L1e$*bmIeG!V|gY)s*rYyXw2(1cz0M&Av-ENdz_P?Zyo4hg z9_9XAqpMnQNij+WiFb7|8Wn#2k?~Q{rqi^e4S!pVGI+(3`Y*6%DH?;mqCt?P{~9k| z3OD;Vc*{~?jxJ!wQWTzek)VY74*INMgdmwK(O;m=F)uPWuMQ$yY@~?Ej^kf+*Vp*U zQs5Q8!u(}u+z^IFW;_H^Q}VvSvz8$lR4rSEN<#8w)QR2@*}6;kt7RxZc-aDoNWjjE6}J22y~xB4Empj z8c%oxYlpZmT;lj1zq$g&W?Z8)!oeS8sU0#L)I`?gHR$VtbQ>ZY@{WvqwuzS?9^vSc zA2=9!@W7(3?`g%a9Ygx&L;x8*WZAEGg*yuR1*T&B!wNJq0({M06_@W+_uNu%2VHHz zKegVCN3BFs1+X=#47200k8;Mae1|E}czA2e4?rmV!j(uF@;!afCWVlkS@_kJC^r2n zZRN&+8oU$~1Od9h@jdMv#(~%EPOq*y^5fmYdSvL$D8Ry1&&TJq7W|Kzu8 zrOnrI^;#h1zQ;{#Q4#wFRD>e+#Hg$^YkXVd39^$h?I||LuSFlJWne zm&lILj+eU)6?JWIIOPzliqS`F^6=%qAuadn5DK%`qXLOrK66OH&GQxStaYz1^xkrr zbiou}xgNM}H?CNZ;?%cDKQoVq{yEq~xqlgK`+AfiFO!zVNC}(v1O339y?LC{rK|rD zk9;1bi20zXkXRPjh`Ep^33|5NBLkAGWG>D2aeqK7f^;U52WQT!f}Ag z^qUvZYAvu=S{)SvMmbKy6IR3My^-eF0J~N76J5Dm1lyzJMf3seH0cJAV|PV6dq*$MB1eA9Zf3p!~67E2`35|+hFYQZI5NT`w^Oq+> zKh5iLnC8?kBo^bq>U>g1@r$;O#3_hRFIw4Lr~w!O1vM!^uu( zv4rVfZ@t&clPw1aMv*@0i z%`Mc8w(iBsVA&*o1FtJEiG&3(gU-%+wED^KcM7^5T~v7P-6HKFwq-DSP?v%&GH9Zo ze;Mh!5ycl7h*`Da z7s671!{BL30U8yLA$@P6@N_}NUP6)ZfcPPIZuaW?C350Yg7dZ@1qXgtZvhNbjBB@m zN}>XPu?6@9FQS(0wQF$^J3aeBypV^$;qT zKY>M!YraJ{jPahfyN`(*DR`^uSNhPz%3XHX7?4re55(w!vaacsEfO^eYC=A~0fu4V z?pI#Z3+7RdB1z?k0DSB>qB!|&x|O(R)`+c|Fy%Oia+h#maT|>J{4A_3htv57o>dMO zUI)0<2P@KGsLLUshVTS6%=`XUazuA@_BE>h#XWB!=r|s{A7Tlh5PJ>cV!Syz!dRdS{OBcSwsZb&1L(DCr?8N|FZ#yKmso@%<#us;jSV^)Hyu( zqt%9~W9(Y(Kk;oC#N7Q6mG1z{LB1PeOa8t<;Fv<&-?O^}q-0!;9(*j>y1Vyhyws?< zJ%#7nKebf@EW0`G217$F5tIn1M}#I|#}RV=4_szKS<_}o;$n;H@6d6XhPcs!xEK^S zC8UM;V>kDMJ`<8_X1_!!&BMAGQm6hd?dk%UIWIvVk{5laZxL{jOeeJC>N{pM0k*U+An@pj@fl;Y!T2m%6*2=1f1zzgAO z$dJCncVsJgKCRSr3YWi%wv#S|+fZ6085j}mE)mH5JgZh(z5TW8IS^zCFW!b$L~W7I zUSwZDEcB?LVXvAy*xDACIXG_JDg2*pXt}tao4|I)NX_vIW{9Rw@ch@1%BW|VwO{V- z1|l3zU=CwgLK4fbZ($ZcjAV1T_h402OJ z&HIHx#k+|nrkOb^B;K_;)j1Z-*s;;DV5}CXb!Mh8G%1)$F{KzPyaXka6`Gb%7@C?; zozxV5@3jZZbI#}Y$M^N(#q7&kYp?6Gp7mVb4~B?(ShOiQ|2gLMPbpxx4d25o^G0e9 zxs+4c&C9K3v&+0vjMvWTA68&-3G0pHdR|dynG2eBdZdXYS!aOYOnI$SX*Vyy2^Xi= zYlY7{Y^>G14nqt_S@XIkP2&+n&UW)!&`>&{Nm^+@+l7r@<;2HVs_eqD;;Alp zQ<_)1h1Kl?Wx1&`|N9i(!p816zu(8o&joXOx3J!8*1MFG3hjz?cVPc-$`KSpW^)GG zik?Rs9yUIwbCf*FMLEjn8UoveB@Mz_`z%=l_o2(-&}|Cn7S?tLf1vxB#RY_37vidI zA=VjV?ES;KgX_9ihgg$qi)70f9X9Z_XfqmcldJQ zX5?;P9cuHN+-dSA*WO97@0>TN@a%y0z+(9 zLTwAGw>?r+c$L12SU12bY_zi6{1r@otYnPk`Mjd=KQaB$02YZtRWk$N&l>t0`_qfI_9qX(#JKh z7Ig^^!CR(ynp?=%J@-Vnuo@fg#T{rpzWngI`P6v)S&^uvH`bZiZETnfGPQ~SX1 zZO=ttZC?>y>Zh?Lm+od=$sXoXU=2)wgnXENonN)Nv*GKf6(=9(Bi2P&1%0?iF)LGfvO zKwAF-w&b-0mw5rDEu-D$1ukJB`q1quv?l%N{#4?!gartM?kYSXbWH5QYq*a0CFt}e zh{z9W5SBJ=@;ZvV<_Bp(Fmito68;%<0@9L9t`iGDTQ=sbw>xa@!ZNQ@#z7jh(keX6 z1vUp-b2eZDwgR+O*l@mXM|aM~C8zzM0_O(0g$GZ5wgaa$uMn>H!oL*3J$hPtPo>ZI(+(Vm{TlCq(DMy|B(h~k=` zty=nH-9y~d+)o#|7KO&XN9MUndbTqWBiC75}|bqp7?_+8`yHt9D_r&C)HbvI}{G*Jaw*jkm5dWv$E7#TvQb8?)L!gZsw{x3CHf zb^EFbuv;ng3i|eN-lq5Yu|tsOR*rB9dVoMo7~v?dFWMXLnj7_d0n9!rHz#evUSW;y zL3z6n&>36&tz?M|+utV|gpH_XyO6gD2Cfv7!0i<_E>b(*2yvaLZjC9(*eaBxU%7zw z*M7w+aopI9cDM@_2^Vt?nSlJ7bX~G@Zx`0K_xo_EuIr7f0aMR@y@clfl)*)ni;R~K$Smz8V*0oo9&+Uc#4Ic z#_SGo1*AQ^GO)`3n8NT}Lm{_5kNBfSyJzAsj&|6jLxk)E(EY0X^UD1NNYgAP89)3Y zg%N|2T3FE_tgl!I)*{C(Jk&Nvm-|3OgOHzlOV@HCu61VaQ##bUdr)}p&sxjPINOx7 zwRV_mC5PFQ50#Xc)I-Vn5|)AexWgV$n7h{i2()!Ia{m0e(D&<(1v;AQj|aYSM6u z*ip`dzxn){ZhVO~%y9nN&}$TXV?(#F&gv*y*xMa^4dLf>>z?mSunKE@8&C0+^V|J& zBesLqaFNpPV>d4?tfz*B8?pxht5E*jRsU7JU^48H3BwCUlsFP@rNHS0g5pXpQ0n20 zf%`zGb1#Vz1%6PEIUeUr+$vpad4sUQ5G0wpZtyqv_^5e=M9oWFDqRY3OYad*z`VhK zK@X?KF4CCQLzNSYB<)0I4;NjjIHYo&sLxejds4xr9q-pz2QMMI!nfS+X*WO2MV4%z zU^VL--@EO5-1vKsMUs0^V1RDN$#zG*%Un>q(ymThvWjO4%#ekgwllF)0^;g`G0;pM z5ZZ;g*!?1YRx~DI!GpueLS2EhghoAusBiVUGkWHtB3qQDG3z(+8)wOpx-nK(Vo~W< zY$fA&Fp(pdH-szdKT+w%JnI#f>&|T{Qv*f7Zk}gN()$jm)Y#8u&b{NN>{$=e9o>|d zLP~cqv5H2P)a+oAhcCbOo~kK&%dOiD!t!?W+$KZgjoT>bze>69ze^#ZFEWOSOSH9a zEZ5pVPj(#Q)KpjhCi#HnPfuCY>y;O^%PsAu60gY)d#|)$YGiCG&1Pk2ng2JpE#(@_ zjK)^-$cxPQfGx*vM-;%eZ6i61f(wBr;rT7DQgNdB7|mT$VDYK(_zidj~vG_VfG#5a=SYoLizXI59&FsmYf`6Grk%kvU?i!YVQ%K`|t z+LWQbQ^FmebF=IfKWZ#8LN$QVg$HuXv6lNig?m9n4ux`>%mX3oy&*V9Af!a~tD8^0 zwfT*J*lW**a>1E}e%B_3q6O>iAsm~zC&baSx#aoH&%SWJEIzX$gn4rI@r?CHLbw>1 zzg5@mz@B;JOr=l@Gw*ZCHYI;uZX03`{^fjUNOy2|k!{k>-fg`&C=~g0FvEv*boU<1 zC|+qBf_HC>@XMT+zP>3PA09CQAI4YlZPYC{{NIf-8LjbHj@pzE_9ce&Lk}paE{<6- zpi~z{s$OD76q*$^0h%Yi=K`!^7-CohP!IT4Ui07vGxqYaxBa2kvzwEFWW9deBEH;eRW!c^b^AFz`d9p<@9K$Gea#Zfjb)Iv2(}4NbEf%;^Wt1pQ~xu6Sjk zJ06D4P+|5*;6bl>d_}t!x3JJKk8{P3aL13VXw$95hsJ$Nn89htsPM zgj64)<6eBC;k&}Sfv&yEYu!lQZ~Z^ht>yvk=3&?Vo!)IudwflJtI7}s$eK4|REBXs zzM|sdy3NCMfa%vL`d^;q6^0eZ_&=z?Y=xP~0FJW?X_%KmMc-})mA>}bW@{2f{04Pt ziprj=;1IUd-(Obpm5NK{NC#oU3rkgeSwL|zed7|~y^+?o5e7I}U84-G@Gu@kWsK$+ zn2dqVtN5YEWlm`jjb4|nX@9#A*Z!@ty`PF%I}fAW9Y48yEkX>9@46D#`7{RAnjBta zGhMRbopmiWd@KuquF<|$Us6^tT||{FE-Eji*H&S)eQl)f*aWMX2xW2Z6B7~1S9dxK zncTuycWTJ*|ImSH#Y9btwwp818tenEf|zWj%%xFGzNFX^sG$DP8O?rN>^c7>-|m<# z4aWY<`#sOe(cYEnbH_Bx$q}m4) zad*6lStT|I!vuQ1j-AmrqCe!8j$X=ke1@t`Th7SldZQ&KXK+%LZv1PFWE zh@$OUrZWk%CIGYM>*QG2RbQj)UVCA?q;Y@cj`*v7Z*}|1!jZcVw@yF%RC{XJ(bzB) zYz>d$j>CX6-v-+>*P>$G#|F1XQT?t;H`)LT@OA+zDRi9@(`%`aVXM4Nact>Etbp?= zWuz$sG>!}A`blg;e=Y#bWLvr1@s?_DC{%QGL*$q_0>sLJ$PoyA5b|JN>H@^G6r~=?5LfnX`4#@0M zjX1lFRz=mv6Ey9E`VH*?O63;D zU?7{BZXx4}-wpX~f8z_ilo8|tmh9X-8{oEV%wO{XW8Dl+3~A}`29&pDhr(!y&J(1; z5~E8FY3#y?a=})6g_^cc%@}FA?O%As58>3^!aWVb(Bq+p0M?1`QbP1`l5v;3SiSdS zyD(mtY-o2b@djjjCdHjU2W7#Trq)Heb5X4-bkLsdipFWOny0nZbyOWNMb<7R_P-j` zEySGxr@84G-1fga31Hka(5i5-pxd6N7(~5m6WJ-Pd?145$3nS3|xjGZ)L+oke~ z#{O$2KzqP!5?#3ViCsKG*c8EIEZ# zsYZ4Ex|O3KtUH$CGShH|jo$)~-Z*&2-AVAh`%Jc>(yr!&%0C|JSM+}a z>BJs17<7+Pr)xFLxN$DR&udPU#H53DufH=VL93hePUlPKJNcUf*RO_4bAKs!;qOGd`_uD2lV3dh!uRaF`_rqwXW55(tU^YhE%%8^ z-So=V>AAPx0Qs%ITCZFChK~Y+{#uV+&wXM~+a@g>-AkMGEgPr}zBOKpS4G?ALO&{^t zwjnfEvhF-`Jwr>4D<+uH~$nE}1w(gjHV@FXhjag&PfK%R; z+b$ucDQe44w`*%^1E2j#;eYWqf7z{rr}o=ja9d? zP2VxRrwG_MZM$xBhQ`-!Q)94gDI)>0OQSCy8%Zv@MBMHKgkhv<{rno(OebfDZDI$CVNd%aMv(n#*fq!?1(1tW3l zcMtNzwYwn3HHbcR6#z(ZL_I%62DsM-hr&w*d?QgqYeB4iP_$Kyw;z|=*U|mD%+sva zEnxOUZN!dT6+m}ahpnUuz6e=}$&CbF!C31dKqE91en@NKik}Kg8GCXaV0s~@v6~Z+ zs7~z?67qi3aB27s`k>b172;j11dJQLiUjBd^hLWc+UqFRUG+a2yb1?ogrx@=qiUzy z>atM{UU0<4u=CR$Xa3`*?El1Mb#v#)U*)N2l*?_SD-PN4JnB>BLW&qb(A#ec{ z=3&=ns@n?CB`0$up$Ea?5oT?Ue{FX9^EC`FL043k7Dr}x-!2RE?`6oKq)#78 zpJ81P-O2p7drxH0U5k6mXxV>#UwenZX#a!2XzwC0 z+W#Oh)?{Sy(HHGs^hJAzzG(l8zT^h{)nciOb$7a0cTz08tB-Ye^|9{1`WSh9eXRSd zk9BwYSodFjtV{9-XUkd_f%TW6?FhWlc=c9|J)&|qPKA4S<1l~&1>Rn~HTlAJ4JHw1 z_;VWdoZs!6M#Uq!$EYxF77r zTr#ziX@nv>WG_q>0XVRinTWfm_rfG>F8ORPGjxEOA5%QC3l6_yRRjE{bout#rRFeQ zZa}Mo^BdVFq2K75*%dR}E|5X{nAGTB;*Pc1$|P2F|2z9%0(Wr74Dn0y*gm-L{X$yy zG1}pQ{K>B!twD7C2BAfW#bC45(L;~j@uF3cE%fLien?Vm6YUL}>Ein29s6JAl;#`~ z^CmMmUQd~%BY1+{?iEMn68I<^|zE)j39pGL^4&NFE z%wpZ@tav1W8;$&0b}?&u+Md zIImeaGTPT0eW^R%W;P=A{ngBXegF}q9l%k2LQW3ZQO(Tq*K1$FfrnfJV)2`M0eK2?yO0TDw*YXl3BytAF@U>Co9|bM6(>(ixKaQRMs#Hp%_xS0Y((W zlTWU+CAfSs7`(pa(XcZ zj~fUJ6KNJgvIRYhH3`gxU&IQXZlwHfs8cD5tTBxy#<;lbQ5#{naDl|X!xU(LiQ6B& zJ;0XqoC{Sw7w9|C66ZTixNez7x6Ds>fkh`#XVW#*bsC*|;vIOb{z7iP1Ebtuh~Zsk zI*c<`yo-kQ<4MW8Otki4y#o>uL>HRY|Dph1(H;1P=K`sJ7qfa6x%e&G2zHuODD$(2Us!u@d@rD(Dz$(|-SH zEFgQ26uJg!kEFEqkm7?(WD-Q-e@YF`Uv#v-TH6L=)>ms&yMp=BQHJZmCA&iQ7dmf| z=7Wq0j;F!3Oj>APsdU}+lTIXLMlF+xDs8W2^r^qZ?FDv~RM`RQ#(uK@2-$>=y}KzV zYngEaC&l6XR}1qv&xyme5A6S@PL7pj7m~VZ=-Kdg0eIpT%@L-jF-U>$gY zEIY*9Quy=4{66!KU;qFq`()O|mul`OKfMo+mJ1~CFfe@f>$otO9+vlEb(m#lSl{|Q zMbjNaFQ@#q3QL=`ZrEQ&9XurG0KVVsmp3A~F%Wi0viwmx*urGK%QyQOhX-@&)OS-q zsTdXv$9z2Vo`4lPa-7`18L#gNwjGexv?T4g%#o_Y%)~-`veNf7pkxPZD)gnZG?SOz zvmJ6T>Np54aj(gm^xvqYAWCcQpz-R4h3nMe@Pk9IGo{~a(w7XqoQr9!mx}$5s_)Hl zYh(>tSzdf_Hb<-P9xUDG57VF(Mll$67;cTcK`YM_g8fyp_QqbXLym{%t2Xb=G4jDs zza1s6Bd|U1BA*;#7KY8z9C^x`(1DuTf%$t;XIV-z>KI+b_jl}=QBz1&I(@RS&#zHBNY*yo+U%ne{ z*myVEaK>F|!vL-N9uB)}KVSw2q7puDU6?4o`2jrgXOUk&z^*xq7(QfD(P1T7^`Hl{$*Owv>?HDhJ+la|6+hK8(=}L! zB@OBe&}hk-ot2vB&pRCbxJx}))2b~6lFF!;9=qv6$RvL4|7jH zs>Sgkz}6{2v!fcA!B`hmcvnlU8K*#DL>_36oa~=%fM4{vDBX(N#~yK}M;;yd+0pkI z&sl28|9%5A0VVe|z*=z)ne-9tnrD-zK0>zHWba3e6%W%sW*)*_@yD>)-9RcoW)9kaptf;w%Cn=4LK?Qe< zTVz@zV`Mi&8vNY5Z5zqsjf@ZnG%~&2Jb*TP7>~xVlHhKQI`?KcLWjLZ4mL6=J|_nW zlKMH1Wi|P^5e|XaJ!6hC{o^h|yj%8q`|`;^UMYXwnuv1@3d8K0n!}~#bdhC8nWCu2 zHMK9ggn`sL{l%&9x+)#c?|s+pu(aJGw~sRS=!Wwghk$o_D9l+!Nt&)RCxjqk#7GnMhsu0nHqfZ$mVN@Hpm z$nz&a9@`GSb%F_!<5p;b>&{o70>@dpo~sznlfN}F_i*K!))%`4Uyw=F(trA z=0)nNuGhAVpz+@>zBo0gHfxKfw+iQ~>7I5R&HBn4)(o>(={mAs@wUDeK@02DlSi8| zoqVszp}&%mi+^6jljt)hY{td76|O1;%t;Ddod43Llk*~Em14#fEohc)S*&Z2m1sTMPR08)#4kzq zGUHXOK4%SC?PUyMi2j54Bh8dCp{|Th!1e6(GVcyD(b~D=4S>1zWYKHq1b+5mz9B8V z!K|-H^n;4rIgvi;F#4G$@#Lv5m`#f4Nb<)Q%%FHl_fC5o3U{Vp^&J5Mq#X@kKM6=^ zOF$f%d5Rep@qi94>1Y_r_bv;|hF?73KC*eT^AwYiIFZLkjG=z`vRlyPh4?i-*4w7h zwOWzkv~|nI-i)J~mhZ?9raiuu6*7U&g- zPSaORROoO@qUP2&novJC0JE2n-@jsp)1giOni))gmw(N~M^5I;C&AXbHSKh2(}3rG zx;UvIYIPtq`j{|ZGxz9U(-hhL`adzRR#~OO1ULTLs~e?iLFOx8Gt*-FT<9bL4>e-R zPY!n_3@JVXhfm81a$hUXH)}|BD-#{`7yl31Nm^SOLnNU0j!DzIN+n3BiB@g~>S|d= zf=)9-73iJ`r9Ka4u3h zo8$;TQ++w5EIj|oSeKKsSY=jg(jo|v%B>OtfX7Z=`UVHhHKgMkY;&7P%vqRQ&n64c z!V6^$dGajW(9wXsXC-&?&(4CL`I8RZ!6UHgm99x7_#CqmmHqoUIL7#s=5x%WxXb#M zc^E(YzGYGhpNw*T5vyCOz|8ZgHSUxmz)WC|saQ+R*8z0xjvwfJkOq>>Tcaw0uLd60 zYVRZqF|L-9!FIeaSxCo9sm~~r;&yyjx)^6}K5d6JKvwMvg+Lc^$*fal^H*qUBx#-} z7Lci_FE}5PzVI;3ii|iVahf@fo{Yt0!*@)7=2UFOG8Mp>{`DO*kXyp%EkQaY!|T)E zVJsGt+ut#}3K#RtQor=q_=?|q1qt6C0IP1XKU3gmb%Ych=3$s)ckm^LdFK+oV>Yd~ zizXP;f2B%-Q+JyAihEUNm%&t^%Rwh#O)6!ziNn{hSmxPs%A{r<4sli)j5Ae&bN~e0 zwp)B=@>Lekvy-G0NQyufA)$Q7H2MYSGQMRg-=LJc6E*dpm|&68GKh?CVDC+n9Lca=v9!EX^uf>KhVh)`_u8n&4PVk;jc$eM#SMW749~LE}`2T;X;s zG>)UgM0+t&bFcG@m)jX##;I5wODjhE2IelCxtMFZ3VGXNzP+DY`PapaeF=ANO8dCSARSfGMD zDH4XjYJTVDrt%tzN=V*(rWJh7I&FqDzRs2SMy98LEczbI`6}}F?;&wmO?G|HOjJG0 z3v0;t-!lUQ7nK@2cNwx0lkMmaJ@|q{8*q7SsaFN+v6lFEzNnZFnDf@vL-R~d#s>4U? zRG%Jhl*`&Sk+vTYVI%Kwh|LVQL)kRvSXfo7)~64xd5T1IFfkfqZOE~lbILk(yC-D! z>(=Ubt(K?Blny3Y+3|h|d9;HWsLZPgAr&3W{Sk%qvwaYtX4(A;lTu^TW)u<41vsf$ zNY({rtlUb9F2EytGud~6NsoPo=0G*~!3lp8TuEaAX4v&l-$P3rxqg9(kKW?DmFA1- zS$@M-K1(IzI+~VmupJ!sBl9o0|2D)mwX7xIbTX;_&+*(0Tyq!Ubz6LJ_(dEXBBh~` ztRvf=<+-?aU`_;`|88@eg{;2Bj2v0SH#l%yE!n?$?*{j4ot4%pVbR+bPMo6IYR#Ob z$$L5E?6yBENP}FJZIJw@2fU)&Lt$3z zq1=DWv6A|P`gwdy5#JiL|3SE9uvalkC1luDU}?=FyRI_E!TEaX_>dFk z@+4HKI4Pn*IIdBjmTX-^kgU`BxIs02HzA3hhjoaBio;>|RZzPkqWhUiU`i=_=5%bTC<{_LE{jEu`LqQ?_Cwpg?B>b31*D##dJzp6re}aFY$Ib)y4A1ud)F8wU z&kO1_b&ZV8yb4GA5J_0#+^DUuJ~i8>63xcJ=0r}B!D|lY1-0g2GdcA$V+6#wH#Dp$ zeut$jMm91O;ERX@YRMwO*O(`xW8-i7mp9$T3;X*%k0b|sveRH*!G*O-J+)crq_ z3%F(rIk{^G5Ihm9sU<3+=rH0{hqUbAt9Q$x4s30K6@v6K)-Ld{0ooeT^&*jX;b8g_ zN$FxzwO?v%tV^VZMO}drEzjs^12>VCUBK8M8B1(k%$OY1?p!G48JqZ)eX;fBwBY)3 z9)mVZkVG|su|)e;(sg{QMs~ZGWoC@9$F9R@Z2Rv zBl;e_SQ>rD-VYR{h)-TdkL{o)h;)2l=iT*z=HBg)J74Byhn*EkO6SXD<}XZSq=brQ z6*bN!l2TUEcy1Im@S`sL1>KgI=K-Jg@TZ)FaM+5$C_5 zAC-2v?$jfao2{w)^MB|59O&a6JpOvOIKkEzc#yn97KH@?>udALA$ zkPJ=7Wrfql*Nih5aq$|DfJi?noUij-v=P4*JWwGkE-9RQcy5&uzi)tVl~r6+I4k)= zTp4k-7ZIHFd7TO;+#8}hepEQ$L>g5dF7~6ejtdHB6)hzX7jN-3Z}S};3THJP!oL5LA zg)s(GwtJ4}JFW8rx@o#okAZJ6en)f5WF9>plWV^N9L&w@vgD8_IuH29;Bk~!@eM6y z)8)IKh2)*_Wu+zGk(mD#g7YNJK21hkMyuqKWxq(CPa`M6rfJv;;)Z9lJZ!qK3 zOSLA*0KM{359xQ485z2kR+EZqM@WnW1d#XNWD-VDN=WwJL*HTFF{k{m4AnLt`h2`E zyT>-aWM_T3ly(_;_a=}f>q*B=fEad>jep==2La(9jKT0#EKvW;I4W}55+<|urvx8T z-Ud$y2<`WOFzLFkSj2X-sT$1GAG!39wl<)6m#3K|--1AFEtzzSNxcu%pLM6MONA5~ z8I3BImM%pt@Qa3&&9jZ5^_k~u4_dZDy0XnTEu(Ga0{7Niq-r9#az%S4?$>^?&S86i*0a<+qkmQ}1*v>m2a4DACq zIFIt4M!rQ)zU^V6fHL}&0;U>ClThXwwdLqRwwGy_t7d67eD=~+mWL;+!vT~20BdTJ z^o^P7oTCRtIU6Dm{rnD}MVDcd-86|zP_R_Mny+Bv@UsO!u~MQ=#l~6oWB!}YfzLng zFICe6R6f&D@{xj_H5&dS^FV}sfzVq$1sh6Fg6ldaKkmE|Tz_G6`-E&j=&Vs6D7brx za49na+givBB|AFMi{#!ihj%C**F2+W31v&lkMg5wMp#xKqCWll+y6#DoF4 z3zcnN(xPH@$;My%mA3E?!iO6IvHXPE#_rxkqZ|KoTKN0@su)}7?CM7gSSW=;{Mcym z3qEk)Ue@2yyZ%Lur-fgCe(3stYi^h?8p_jb=6pR@`URQk$1Xr+-|%BI;{ABXlRR|F z2bSL5+$#S%#-?kgz-cvJ@`oRLf7~hF8p*-Y&ANcoae?9EnQ|tMxOm6igv0!LyF^u-AQa%8Q}bB1sAZ+FQcCq3L17s&<62<k^EpbrSK=(jbM1KNsl=%(rf1>9swyzN|xKF z_3aF$mv~4ST!{5jwA?3UFdmiVzKE;(@D=1@2pdXKux^F0di8a_W4at)aNZ!Xq3lBTcWO^hqskS9 zvKo*k)9<7#l${drJ8yOyY?E{Lk&B_MAq(4MKYd!trnC5jV{AQ z>+N%}+5%B_Obh`b27~Xs$ybb&*QuO;@J9S9p>3TU#+tOZd5+zxm=d0>`ZKaw&TaBa z7@H*TCXHciDt@|sKe6GgF|voxkRr^vpXr7lpGE??OwJSWbkD6W{Lf zg^xq*I376!xwD6d;|S=pJGGcT;pN~ve4YJ&q>ufd^f7;>mkue^4kU3@bmBC9DT&jt z0XWh2FJMr-PEg$~OL zkz0b`ISIiZik+$c$|}b@OOQ^CuXOekibTE+u#EE3U?DkRz@LJ$3|eNWC*XNnR?KOJkpy(HZ!#r;qnJ3Ku~Xzf=o$;D4o44s-tp$rwK2Pdm>KsmJxX;tQ4 z5q%aK&S-(`(y@_>NP!&Cu}LUR5=hX}I(6*8X()~9D~%59|5@6t=06LQv~&>l)X_2I zqPO_V@{=iijR)l~iD0AsV&JnUkfI1SLlG;GcOuwXvnAfIwdK>t{eS7LE#;bAUn^WE ze)U-b)jE+p8bQe)bx)S%?@}Q|_GGk!O2^xH!4oHxnZ2+5SQh|Ri_{6-jJ#A3NRFP( z9`Tpl%W9-5!7_Q^q1@*#p)M^^!m*$wO_c399^}8TwNvdY=EYdQXJbIz4F5+DJB0Z4kHsZ$G&OHF!0WjS1$3mN=n-lO+f3Z*pn{ zaw3uyK%y^4viia(p_W^MXpX$>5a*xTYc&o_szD{|s5Or>N~ly@jl-eU!y^ouv>==; zo=S71kJwraSS)=r+!+^VPm%2|;JD*z-wH=4On2&Yn=VsQaX^ZwOo_J%c~q=fj1d5p zu*Bv_W~&r)_TVsy&)SVU%Jn0YEb#(yM6p9-41#S0zAwqm=oVxUC@kFo3K#8MOS+=i zVW|ni^(%{90m&y2G5SbIrCWj{q02P|!OFxIE z?=O(&quIm<{~E1`0!>F(?{2kJh}x1$3#4_3x#mg2+{`zGv>Ak!WT7iXXbrj^d}HnD zrvY1#b|;x{0SeUTsN{!mtGL`bKp>$8Hatp#IPy(YE=-!I5^X}e$T;8^C65v${WIm9 z%i_I?>>Bv4J6@CwR|cq09Ja4Q2vhJEmgR^Yg-y1H95%4eWcwInolCJE`2b7WR8Zw# z@zO8Za@mqSe8Z|3%7{^XgER7=T;#jTH7#>8PjboR`|0TIGj~6Wd+BuEa zTz)dn;MiBPWM4I=Ql>zB11L4 zf=z>cbTI$#>=^&W+v|mIQ2vogjxpbN*C#gRs;)LPnL*KpmykkpfQV{H+%M@ zkKgkeBJ5eZVi84*^&N;aW|6}p8>8qSN6v_BG)qIvj`K{yiWk|q#B9OFqK(eUbaS$& z6s6I?aP)Fz(H-8zgq&INY*ySULy~lIrn}rJ1oeireD{hs>>6fS=%&jxF7jGDYb=}s zk_};cK1&IAWthXE*&DE_$vK<4W7dXYiB`nQJUcbcsnTvJhSDc7GS3>V^DT*;5$DnU z(Qt>&qDkK}_@wi0`Yxm*N|rH2s8qguNpWFXs-s@BsrgRnkPdRlU7?rCn<|jG39M1R zlRTNg0?>kf0kzzpz#9BqhKy+fX~w0Bet=v_U?UQD8fu36IEEOMV&tIbP@s*p;)Cgf zK-s3VkRGKNSwXi$W0@|L&Jdh4g_iztHM6ilv0)Okk$oIpfYqh1Q|_+yWD9mqMj7wXW2L1Tm|!qtkIZdlh1c|a zN{DlT0MPCmz4+y#tKEFwjb0%-(kdQ8DORynvJS9{rCcGMv<+3g&V_<-fEMKz-$cIw z?Z6g#jgdb{eoJJ>&R8t?-YTVOeeY%z>LZ5|H;xzN>HatlFDB0ZY;^X6!V`>nv5@@u z$Y-Y}E&wW*j~-?$7B~%`up@bhuWL=XS56tqg=NNXzLQ3hsSdNqXpxE}b_AQZiuH!F z!eWw@#2Vw9v}6ReFAJ%GtVB`qFzX7H<)J)g~aZKuBU(PCpIEA;E$%14yW+;X`=@OFZZuXQe7VH6hZb6SvK8(a&O9iym`LIxv zFL?5VmgPc5bYvUA+mcyBYJt$bY@2o2^U05vPZU-Or7HycvhCusS4}I0tYt4q6*bES z?~$3%BVEa?Xjn}rr?bDNv=nAL8d&;Ozr*u~HdnmgTe^k}O2LtConT%|W~ZPmSsF5)GFcYGCj|xG~tBDJ}ls~XH(h4 zfJfo;PL)<4k-#)|o&GVw!1*|;X1O7Vn}u(SCjZh$h&_!>pmnWH!}h|6rpR|FaSzk8jv(wu+Yy z<)EkykC6M)*~#-hiqQR?QeHQb9Emdq0S)0M?AFv3U{-~JP>$Kw6h~LfhenPMF8G4W3e+mF2t;p)-vbk`n zt(%=&ge4&OCR$3(dr|Jx80WJ>I;d@CFE_oCv5IFZ&(N8;khI|gg+5ATd zAk>ry6(f3GZ(PTPReaa8olbdQh;(PE;7-j>TMdF&F^p2u2B(bHS4{_p&$|bYh;=YK zFmi_=lna)}h0-#?Nral01!>d(L0Zkdg{$1M@ zOPvf-xz!COmD}W3sjidb)z?F?r2~y{D7!_WL@a=z>>1qt^By*ZQ^wV1iH=^~VL$LU zhwouOQMm-uYvh?>>~y({oE!#f`#QNgj1|-s!qG#4HM{jKdr0JPFdvm<+Hf{j{i?JN zq}rWtkd4FHlrgUfd{#-(#Oe_mUAUiZBHE2mBjM(~0(_-N;&|5yjV+-zo_2>z@P3+p z((5=D1VHhi%J8;*q!lIdZ}x3o5``07!UnLRK!Qx0Gl#;2pmMqqY+Q7eP&>F~zi^04 z4ysh_)s!o&{Rc<_+YA?(J%XK&`c;l#rwo$n=Ss0Zekl;>`ql6A&NqY(csso&%>HLd ziLKgpf1egjvWt0(#EoQ!r@lw4aEE8ddc(rYI3R#=vW1VJtSzU=nXBa{b6ZRYi3J%7 z4+wp+6M*~Qe`9E=WL#lSrgkOOhxm>Udwfa}S8C4Wl_9HdIcueDFExkmj34y)Sm*;n zl0sCZ)3r`%yDx|H5T?tlhSybeavVm=|9$u7AN6GTD0V>M`$FyOFhxHa*{|iW;5;Ju z7IMXVJzNB2P@WKdMxBuJflwRY?pTfxV(~xjN_%oH=3Z@r^JN3d?{N3v=tG}4KNModOIHI%-7+0gR6u07t*ouF`BmDhh3LO&IY65i_hGxvR3 zU+#*k9=LpYJ|ObZY@$M;CCQ`NaSSoEY9P8GYe%ySLiAdnF^)U+$8c9YI zgEv9$sTZp2Bm<6Jz@~Xh-RSKtfrX1lFz)QJ#>1^n-tLeU{k-`imFv-NJCLQ$m_%le zVU5%0YQ={0=^`b4NeZ6-0VzQ4Jq?2MBOyl`A-B;^`*jDcb9| zF^*+33+HOf_UtS7zf7Sy&EWbFI4QP9GEs4-Qk>_GXL{U@@xm-kg9FmugU;4i6m~1h zDpH|P*M|mfAorkwdqoWkiczQ|HuUa6yY76n6tnISBC6W99>P(PZf9se<|%Z^gX7T= zY&`;Tv8f?*wXRd^T_+Nj?Bgr`(SyK1apTzO;U|QKRN3ycov*d-fJ}CNv&Q);d1@RR z4VhiWhh+CSHY)5RX_m&*J~D3T0k`%MIW~?JQ~r7$(y^uo^1{0xtfrF`6><7$ApF*h zXO|S75`a2qQ;G$a-DPx#O(;a`2B>XH=a+P$Srdw+!?~p?!kXm5gTA43ekGv6rL96= z)XnP9YPSia4_i#Wfu8Dh3T4eH!4(K>BDurysB5|^KPtAycewr<>t>tJ!$q~Y$1{oi zJ|5EC(?rN*BebUkNoqI*QbWqiN&R+;%*+JQJ4MPf+4ziHZOFFJBC-BXRlX5~bAsiR zka0#RJqr#;H)Y4v`;&LVvP!C1X*HY2h!gX6MLWh zJn1m8YhiPIUlu!D-cE|M*b(yY$tPLt8k~fOOkf`|Y@(1(Ws?0iJ+1pl0T-Urqu;QJ zG)!RsmV7}-8`BxgJ%|WL!58JFr}SMv3fwr~XJ$feZ9(ipyhUd$ZuzIdZe*6Y@wlD-?bS z#CUKpmD5n6a}+fL=9Fq%r!?A>yTml9Qj}g2z-iQ65IjE#$54n%DpPZTBz!Wfp@xWMu)7^Fnbpge zknG9q5{)a)GMq2tY)OITlH{EmS+j$@Kbai^$>P2#4oTCEW=W-%g3(umYt z7jkY0<|ZSI@JfoHvCsb@5(6x5O_k zS65M2slIkQZ<5lftUkR*S^*H^+@=>$CHmNe+6SBh;)sP*)ZYfHOx5)Dx2^Gd=NWQ( zD(3MdqMXKN;iK8p*m02+1?pV2U+dt>uS8+NV0k!uX<=yeE7RD?{bb^k1$&dN2~>`e zah-HeW0M%U=u03>XTupq-_7Xh?0w3LIcj2`&JIgfibcutMLu6Yu+`M26iL@~cBNJ&I+bGWawI%h0WhoH`&AZ|NY>9_6C#aSYKPl; z$kYhHVvs@3U*`(YJrdBegH+96BYYOGlH4QrBfsu*^6t+wFrBYciDzS&jDDbF20L25 zg9tO($z0xO^{q3UfeY%wi$`a&V-zxxxM$)xex0<=WaAZnBDp=2P2v4TO56W_8^w6V z7k%s0A``7iv>!?tkxZTiok}xVHH)1FT_`y?3!2cI<@#rmUBXB{- zF7ejup5jJ?Z3&ij^%J@0&v!W5AJTJv&Kp8auvodUqN3NDfKioZ4SFyH)k~Kggpi_g zp+!eWra>@GAJQo{m`%e!P>T&A2qm_N)ZfbvEesX88Qtd0^Fc^6zEboGnZtJ)Yy8CM zMYRtc8j$TT8~!R+#ngl$8PdR-8aLs-8x;DmJs!9aD0X)ho@+#FLY8Fc>=MSfg>kq; zoHcyj87#sWA;DyzIx1&Baf!YD$@g;ut~IO2xgEc{7wP@$rAA0o-bRy5}$2R&?$RqHY=)RV%x_gB!~SY=$2;AmsGH7yT=nD z68#(;3NfvQ&0+7Qg3U6WywkAC+5f{q4fw-7%2xZE0l`VX$CMiBS zL3)Nhw&-aMDP=*LI|RnF17R9?$FEkW?2X#HLzMh`T9E53P%Y@BlvFa#NHIx`eXLB8 z5hd>4ni!dtpFGy;hn7c+WYb)B;XvQgjk^uxyf6$L0;w$Gntu$EbJ6=pI}PaQ?=8`HEIYUJ*73s*Ld5~!u5qby89`zU_J`5;=O zMPaVCW+lm)&qhR#5nINJBU4UC8H;<`_sA^c#nN#iMx_R+H_vA?(ipuvb+$8|8k6U> z-D;a8w)km0CeboctjQ9)j9OYY~A=?yeU{brxY;W=l`9FdyBN`^1oaWlrYX0B)#cXWooU#@#AJZS^xmz1?2 zyh)_EcU_X%v1?F9#LCc3-%vBVjF`NAw>SkE`T(m{-6!H)IP(E^70hA|J-`l==a6d; zpbH?C2w244GyX4C0^MXmv{Au%_`HA$B6u%nv?|<53OL-)?W>;7-cJqw{G5Q@%5!{DQow#_T>J$(~K)Xq5C_7fSvf3bH3;a)RVU!WDSfW)&%pw z`$@}#?AXHjVr`9a(=CZ`NPQFHHcgDu}_$^LNWtdTk;R@Zhz+?C18~h7!vsqo07apEX|>fu_wzoy*=O^F5#|L?EiS_ zTQVGe$I69;Wc5RATC}e%DQHX3owmS}AaCg{A&0#45GxG*7y^AM5S?_O_Azcz#_xMA z=&7*e5qFN+*0;-Ra>R{qKVKW@{O`maBI=090Y`{&pDuJvJAi0;Yt1RwlOHgrN zz@=cdHAqmgwrXu{Ep15Lf?^A??SQpyZfsKeOmHm*`d58b4W@pF5vwA+IQ92L!V9f{g|=T2IV}i|B9Y36;F3mzW}I z{Hz*cK{SK$I7EbK@^jnhXVznkED$Grx9l1C`C&ta))p-G6{Gc+8F&OlkP8(gem=va$>$^!{` z1qH1F<<0Zx=~YDK#QBnHKg&$JXe-VyU{4mALJBNE4XWRnbreJs>MXFd@X_98Vo!M&O4dWo_Jb31;J-l%=?V(qHdTEj5{(FQ^*S{T0R z$nUVt)!R`vypMaC+R5Q0Z=pzmodyd9Zja#ilv705w1T&P$$Evl;`ei1m!AYWZ1<>7 zS3mEU{3;8+71bGF=kgjlYanL8U84~Ngk0i1=84!hzvqnQ zM#>}Rx@K`QX2GvIW0odbHSCAweYWzxTybwP1?r1l6J@qp&AHwY@vh@YRG|xeG?yzdXyN8HItpJc<1f)(3XRpDh0bJ+YcljUTj`Ubzfx zrm?kj(MbRR^Jpv^dme&T3e;1ka@^p|&v3l$ICl4d1Fq1NuO_5MZ?c7Q9TaH0ANovl zOQ^@Dxi=mj=Hsc{Bj$99xjo+vICo<+Rd<8bmC(iP!E0#8-yXUHCTpcr3e1wf_j%yJ3k$0+lni@m&!ak;A#C+hO}#lFyosPxz(PlEV=4`cmVVL zEo$eR1D&nE%l7^oGqH@yd~aYJ!%14C-nd?>x2v!`wPF$UXy)7ZXy(IFncg1qrf|OV z=nd#LM=t>{qM(A_z2v|v-Xp$d^yL~trrb^ibo)hT@N|2rY(2qT3{SSoGxS0TD)-A8 zf>v~fyP~)~=O1RACc>5!eDwciG zlq--kQxk+E@)S?Aoj(C;X2VwxVV&@NVVdly3ka@H|0V3>o!9iGSFZXdYz zmlkK~4{*4MTGoQi;dDe567#qR(1t=n$IDcpPYa1rkv)5f#;z9Am5v|F?=cp4@iKbh zJ`IXhfeCS%wv>2x9kGw!VSXv$8WY7m22~9+t+a=)G^+7== z>R~Rp7>>EK_@Ty5=@^RXM9G^7^|)+ckzj`FTd)ssG8Cz@1dzil3f7M~uo(EeUWBuU zd9!O5JbaWl5)m5-@iZ2QZG=aK7-l~tdC+3cgH+F~hY8eCPp=o34{Q+G%t0`;Vj~eD z_=sXIAR|0+S^B|CDW+JP{uhcP(Swb|u=xLfQXP{XlbZB@QQ0$guz1Qa_Ww<#BXtlA zIW`efxnQ=pi5M-x#D-e}z)Ht5!E^owmKldo;)~Fa{`Z&6T?0%NMLu0yi4Z8ax9MacP?j17bV`^~K_a@d112;k+y7$Q;9ZN3iP27(Z51GRhECtz= zH&%iylRpH2x0w;4w%Zg2*?={)4?tmkN*o@1abO z&>Dg<+DAAI;)n1|QAl0B!@8Jb8Wn*qY$hhl3_k@F$J2OX8K>t?;pOR-(8KGH`XxdJ zGv)Y~h(ZAj-4n?164)PIY&iQ8VdMsU0zxXt^gNokg%}%)<4>f+%;Rxq09);1b^5~1 zuv{PqngU>2a$)&w*gQ~fL$zCo)i4@@UxC@}NW-#M2s1CBp6U$eI-L#w*hnPc3lhdToZWO3SH-SmYv*(+50KAF;s4wtE?7=962 zxZnXEgy;n$k;-jA2aUu$fh|&FL;Xfrvm8LGVq%#wPyvf`ujq0m6ytet@dKuj@*Kfa zC#1U)N+8j&=mB$#a*m3?jh|40zryMv`+++~;_Xu``42iKjKdh26O?me1R3G3Rgoh+iAf9p+;-pDwNDO5ytlvD zcgzjIhB*)1hcO1`B-Jq?0wtJ;vys74GR?yCxMh~=PPYPhL_z=&nS}>0mTD##iOs}| z)7V_ewJObo2p63MMX6ylq&~>YPN$~l#E=KTR@3#C6t#hg&PTaj%W zp%$H|n9ssuPK=Rdm`ex{mX9_^h^dHVCZ+OB!3` zOaWZ35=4{1fz#4y@Vbk~6~|;l>$k(wZa&(zok)i5|FP}FQmzdJ?I03GXQ-?TRLt=> z=UJ4wgNWme2}2uqfDLgAc$cnNLZMZ}A>9{)z}tKu5|24gZ9rJeOhM|Kg)8Kwz%8x9dW zZSR=^3jN{KM*y3*O2M+q@9uLtf)v-TUKOao5Q}{|Uc*`oV%4XHWdJbG8Z{p5z@98k$KuM~dn{ z0`*wW5r1^rLW~Z$LNT^T-Bt9!LTJOTQH^_6wuzJ4g3`U`eXaMMm29{D9!)ACLb)Vb zQbNoTbwuhK!u3T|GKjDeB3a~8-Du@5Yztz3Ks_Y{Evg-Szm9@;6JsaXB9s3{{TPsS zSXKQ@@82ogCw{U?DqXEg-$j{P@D4(AgM!d@XP)C!eaXvQ$MO7agolh~x{+}=96SF5 zy$?v>l;o{aLW}P023_qx@N+ntxQ7@X^iQg43eSHGC+R}5hpd52Pwjyj_#f!yJ;Y?9 zo8tUJH(ywUZtNx$sB;g@T>n7BN{Pr3=c%e=yv$V2qzfLh3UZ|ZLimR0D#ry)1%>dx^CFQS94$+0&i&y_yCFXiw~nmw=Fhu3cE5OYXHzSpw_ z=zwtq!w8oA$widT2EmQ_u>$CaRvuG^1hP0GOoiBNO2?W_ZCn(NCAiJzL1k|e+7bVz zJUoUB@0=Rc+??O>FLe4%An@Plk2i@_5V58rH0CWZ&lwZp4wXBjWcnYeta@3xZL`j< zlC|Pa%iKhp-XdmDw!=z}sMEZ{b~otciB%V5RZi-wmI?`vXY z_SQ9E&kH5GHFB`<#=O(rCuLdeJ$|MSwUrY})gMyOayXv251!-!(xo*qw{ePL%6%tD z0V~WRMJUcngz2Gw7E!Uh6uz3`HMA|-(#^+%Ppy^&rre>0$-jcvUW#Y*4M{jzEuv&R z0iHbisln#khUbYf_ucd5kcdm8ASK9(-) zWO|#}0?GH^W(EAXcZeBN?otbj1$i$RvxJg9+j{*yDo?LVS-Pw{v!O5ZXx9nVdQzqs z_3{xx%5qLZ8(dHl^jren5-D^RQN8!k@pp(cBT%H#k&|7_wE70OXWp^nwbt3Ab_Q}9 zMvmyPMRqgOZv5L#s%~BP%o~Lf7}_`{xUm=;1NH9HRzS2c(+O4In$;#7<^(nqWlpH9 z+6rso8gndoK7&d#O)7hQEPRDzum{243)gIt1(fEyWPG&wT{t?0%jxgJ3hM-FdY6co z+bEB=qA}33dTrxRvVThLnv5HPz&iBjyM!DVAVXj<*#y&l9N@HTD?m+SU%eKdVU;xx z5%S4JaGsJ;y&sB(gE0oby;NO`-yTpvUJ+%I6|I z7mg`8*J*Rq`gZKz>WmOv*qVwcxC7Y;djm*;^O8DVw>t6Yhd3d0S1R`1Q@O8sY50JHjnC}PO5iWQ4RDkWuLo}t5C=&cmF@K<@ zO0YcWqa0t}v-5+%$6+j20f@9-sqFdY_=cJo~ZPDPu#0@55<@KaCE&PpI+VF8~Ja zcMpY$%nG1U-}^*tpidL}j*g&__5)&kAiMIk$G_7nq|xdRh*|jZzUu?%i=x(wB2sLfDHq2RSNH6bvyHi)Ufv6&fi(%)?`*R&;5{y4KJdosn|XUucU?wdKjHu zMX3BkVn&25GHDxx5>;F3XD*4Id3p0PeIRZAHneb6o<9gMbmv22O-2!gEt!A;z$`1D z7qFIQNE!^3J^Y-GTk<5P@S<=3w)mcJ2?t`J!-i}&ICmXJqrcgR`MlvY z8pROf30q_wca6VhC0frAM|q%5*4l|=P|umEAhs;9vCNo;$=7j8Pmv)ypu?;&PaB&u z4Qyz==~+NOU6$h)AGMGwqdLQ=;0^2+Vqx*-jkd^@D>vr^fPs(q{sC)_5a?1T>`VHz zUTrU{{pfh@!rC(XwJ<7lNr6JS^5y!ZZDkp|x9{Gv^`%Xh!!`v}aJJC#F=}o060wmxldjLf`F|!%*tl#G%TYbc*k)42pWBCCt8j8+?t&EKEIMXML=#}ICI~O zL!(@_fk`jh12~(`7B_^dAv9PJ9vD@@%0seY_JHC?2`Q4Wg3MnBCijKkj^)NjQ#_7Z zy*T`Klb=1n=*<&zJfwoV|6S|V0jqGJY^SbtLK%j@IarOk3G*>Fn3baCw#W)0dEPDz zvI;}xg{tao_b?guUY9LjD*)#jHQD3W2EZEh;x+ZvY@8o=7?{1xe6g&;50rQ?P&*cd zcl`@gksR~Bu&e<}Z7I%>TFWepilOMrsGOt9SVBXGA9A^RzfidQA&LnW$S0c_@)l35IoGt-{OQ$WostK>7 zz~uohK7sbMa-rm&sdo!z^Ug$aOrvQOUImAyi_oMhB1(}+H{+lcal-(*JcbTCVeu;o z?@gl7%T+`oXaf&c5n8{Ibk`^vwO0|!SjYPNnLn`(fnsTDstVW0#9?A-nELcFwDk~Y z4fbdU{xXJF6XvI4>2`?C!ny#11Kg3K$ze=Vq~Y}4!MlxR%;##?_dM76e(kBdJqKXn zL${C}O)3w$4D1--e)c?`S0xO(VYX7NR=64cyPBXzv+f(9r-26t5-wV*wM}=yJJj-z z9VhSVV(IKd9M_p~c&vdhf@XIzjV9C(>X|7t?6bIV6^fh$Z9Zg>8{U8zbYOGRQ#@z@ zSwKAnN^g(NpMmD$gLgrg=IyQHARCiPBU=p-q3?0sWya7RzMqRPC~kw>Agt?&`hHA} z^KSU;4h$FrjpNySW)3?ph+>y#(Qz$ z)@3HpNc}M(8D@Cz?%?N%?B`KJFLe1N8olx{kz!1v8!2!m#%iGr`+y_3yJ%u)n6qOc zY;&+Rc#}1YFbBVA&Jr4S517S5(3ceC$mWvFXY4*DVG-uZTX+5aU@U^^(w9ThgS2nn z?Svd3stVSJF_USxRRYwx;8qP}DZNX+-l@nEo)JJkcew<<4}J{l*^P9EiO46ylyF_q z4F0FZ1TeuB9NjJg|GhrH!*HKk>+EMfSGmMO?asT*QT*W8ahLoVO#bKhPNC5UhuM*O z@-PwQ*RFzEp`OEp7RTY%V$;fbqUcZ}I^NH$eGT4BClOUgq=d%MIew&sTCyo+$%`4& z&*46Sg@OrkKVJvCOB>o-MeOD$mgKxOD=Cf%b|I2)`XR)tL zd~wmPN}(OlR_3VW^2Mm}2wZ!}fK|W|FxCK49vp$&U{h(NtS92rfk!!hDZ!i!X|$b3 z&e%8HK0U|E8)2RPw3#=|JUw@iyXCQTpN+#zqjl5ij6!Z-Ay1b{_s*cv)AdBSaUSiQ zL%V0w9kb}JnRIvl_RjnwPySX{{uXn7ars=@n!h>Y8=m3Ed*$2K~((z?DbBSsRtQybre*s-_66&#rF8;^w+ScwP$vXeAPwS_d&*_^4j;s6$ z`q#m!H-umPJD(iZBx)Cw)pF~P>Ac!56z?J;jX{b{X9q5J7GIoJ%q(HYt@bACzOYAo zm#I;KSptU^gW_~06{OE+b@>UJl_!GKpe&&8G9RmwS>2|K_9Yr9HW%ye5OTRNuv)9Z zkg-{qZx~RmRb#2hETu_R`wfrSrR{+QbI}y<;?xjvw~6)cw*>vuMZ_g)!|sy7U_&xU z9c~EaT@bM#zW_^P8m2{Y7rKjkF`D=(G0N!mccA?x2_Pl7$#B8iUs&_uo)GB&&@#6R z#Lsp6?;QX&-oG1$laco^byn?vGv9>Qz?3d-g9YU(sdJ8GfK{q}F ztAGpP-EL#2kW-$EMtn|84r7grHtDr_`Y6`Qb7KK*)o9I{DE(?w@Hyz2FQ9im2gSz) z^y}xu*Uzk>;b@?dtAj!D{czX$;`9@0Y+>@ZJ6pzug+-g)LB&s%6;ow!#^I83;7iXB zcM_Jwyz`4o!)1^Ea0bWs0Ij6XaA9va6kK}^sT)AaoI^Wv(S!!@0&)SF8;EEsmo`&c z81UXc!>pw{N+HaG!u=&2QsAwc;cL{|K!g?m93g14SZ%Ms<;%4@xg4^_ZhN8uY`?i`v7ZXrp5i_Dz`s}Ngbf^NP9g00oZ?IQ!sQQmW_@*KKRIO&8d@NH%t9k34k zn}*dd@Vom^+QQv3d6;fKn%zjujQvREe2#W_?yx=TknFRdGMk_b0=yj==FFjCRVjNg zB4+J+(`t0Qk%*oQC<7P6>z+Hvv@=o7=vcH}{nC3fElYtb7D zm-djiVvgf?AUJ^P7_kIq%L;KI^}FzJH_&Of+6iAGR7gD}-+kg;XX7 z^&KM;0-mQmwvC{Ok2+4Is9wN(p(X)nMJP@D3X!J+!W-G(4)JxKX#?7HocN6U0*W~S zdcyf=&Iv*lluLJyqGVr;fUfCsYdS8VEhmTufEj%f>~dc~3r-Tz0UI&S-W*hP5>~)3 zpqi7QEO`NOo4|nW1vH_F*vH+3+M0+k`14~Ekp|70yc)%PL6~5Kf( zgb>uAb8Rg=&kw?G(q?**md%&K%-xw7w`&S-=VXp^Gs^rD)KD)qtoafQ_d}qSW22#H z;In27IE>{apFm$X!y>9(1#5jIdqYT{+u+k;#QInZl*Cfw=R zLc3p~nOCvsY~1AI`S?4XM>rmvk=e>7yS&NTad%*QG?G2PqMraUrX72S6loX#IyiTl zKw^Lb4hYla&?!~78+m}h^*!NAc+HS<2i`_TK&MJ5b|l{+LwgqfihF=Va`i{F@)j}>U<$FFEU`9u1SYZk7W#OY^tZ>xV%^l?cJKf5aCfe_|K)_-cv5!`=LrxgmOL5 z?kCWz9`FuyAw0p|IgE2-IOhx)F>}M532xIybixA{Cvs5SDd+{c$aD&PAtUwDU#S_yETmd2n&_~8)c z)qgMkecO$nw{=eA=nByN)5PD!5LFJF5^J{MzcBIVqMKh4v@{n6oU$|xHV=X9q5wcZ zf@sbF&ACW-hLDZ>KWWDOSC>QoC?KiszX`h|G|5G@{P{SzZph_$xLnhAwD%00R%}Nt z7}IL>;~DUbl?z__33|j1P(bR~-3qglPW~1xI7`UFcF`n1B~O}?Cj-nW8Pfp7o{{dh z(9RN6e3lq(+)ZD+qJyAm-5E1FGo}Ji2MTv@!^iH8l((C~<1vc4DlL!4Yjg_*ZmPif zB|Mf;y}#q6zHIC%1}t<8`#=ejoI{TkRr5D~D=}Xq%!>CxoGtw^xMf+#bV=!R0L}V6 zEia{e_tKzL)vTjoQ@w}2x$JU8P!n-EEbu=gE=TzPA-o*PB~@(@FBmOoAr#6tX{MAu z=2wX=;mJUFvX z)Z#|$?K7(ktvE-7CVnqpx|Yzs2Dgmb_Pg2nhV{ro8StL&N^qwEYpr4Y8)BUs(ZO@j zGj`*qfyA0%O8`@jE}bKu9qu@f^)Jx08#`oR{h8iMP^pD75E|6n+6sTyb8*(ILbI^e zJgWwJJIn*6)g~+6R{zNAyADrh_R$soAc5X#g;R$d)YM97iFVLx{G5}VgKo7FNrKh1 zCI>~FCnCge)9m{E9UAUCYI12^4w`o!&Pa2S@jMYK$fcQF^!|BbE=1$--VXC^U?{wS zDbJ;21y-SeqBL!lrgMmFgIh-jWN305F)=KcF8ZVInUS6Ib3LS>t<=QIZG7;oS&hot zh}dj4;T|NAOU~RI@P5Anucebn>CS#%LJlN2SHqMdDxyO1x^I=Z(e#0oe zh0xXDq$sc$b$wO^EI(NrGSP@s{wrdYP!^7@wc=9MD`54XEVocVl6ynTZ!I%bVm;Tb8yQr zGO(+n!SgjNeW084UId$y)rjbTIW7l{?I6^`e@Bu^>fnz|4tl18cu`SF_x)XHUGVW0 zk!OBU=XIfV-r<>|Qglwn{R+h{e(kW7TIydAG{?x6%4bu=AdQ_FN+V;J%GY zz9E(yP27oM98&&u-YiYKFpfKtpPRfwU`c-Wl7#e+%bLP_Rreji^&A;UU%0ZlAgTFW zQrO}2)@|oD&hyLF%SuDey5uB}M7gQ>Xmr@Ncug!?NZESzo!~_ znJwTmXXkGNoJ1nY(##>!&H7-qt(+5LOkX(HWY>pe=oRVdzkxCIK`!`JYl85v!FIiz zLos$e%@L+=C@!~aLg2iB(n}y{r?!gAX%)LPv|XcU_NZ;Pe!E@@7QiFPs+01-pE@;) zZoRy9et*K5Hk8@M92YK#)lx0jXmTlKOYhRbC8SleemOO(HHI_j9%VX{#>2SlisGk#oLc zz@0GI$25O$Za!}x8F+Tm@a9|1OF#I91DdrbdH#(9feB}h4iw#4NhgJEvc+t(ZCH7x zdf?UGr&1tTYaFNSxAf9;9A!FZ7qcP7#F@^N^rkQTt&Sht+vKOUa@F;}+4ZW|MRk0a zKB&phfViCFV!I|Ny}2JW%i!MlTt|JId5Y-l@!_*41->>THQ?;0f=OdGo&U2rwHchw zVYl~tq0$lR=6+CX>%;5#=eo4}xSU(!E5;6RPVLe}RChs5Z`7(UA17zm2A-TT$?x)U z9#oPOBPRLk1hu~fZ;zHbICdNMW7lKh&J)%5r?>r-p507_q;Kd?SO1n72Ox<;PFQ+< zWiw|Q1MQ|xDu-8GuWVBtA7Dy)LF2ZaTjOrxE!+UrGAir%j@{nYR5qVg1E%^a^Au>u z;K1)^PrmA&kt(eE)W7@upOePiblXy!n|O8no?@s?7+_ck?H*dkH^9>VmKeM@gU9F_ zJ?iGmX53)IXMch#5^(vrp!OrE$^`etWzC#aaZ(!iSzG8(JBk2{k!s@E^%_fWonLYB zZ)SZ^j|t;)X*8Xhpll6Qe-2gce5CC^ zasYLGL+JTE&vDW8ZwZ>;vw@4&eM^j0_7p%F;Z6R~A^J2B=;ik9{yx223vkE2C63A+ zE4iH6;wCkQys2URn zmHj3rN~ET2RHu;gtPa1eIv7KXlHZo06;}xPx;80ul#Yod%g2OuG|ZFAM)JL@3tb}(SKfZ0H0-5xirS@CZw|x9mDDtL zZHZSPuri^jaCMXvOFeiuZI&i&*bJ!|R9IG*qIgWzr56?it$c3m zzd~*u9VgPUE1;QJNkSTVVLKsc`i59+l;uSno1s>JgYmM6S;yXaJgn58kOxYpVmc@~ zQ(drgxO$fWoR?C?(c8%AGXb1}LxJQtu$K7217eqtPsezfJdV`^eq+i2WE>EmHy!9N z2);#9nGf;71m05^aYbU)YPgMu3)JJ9#c{!-6#Q-E!X63#4FnNMhH`3|QU`~hUVjZD z@052==X4$!sK2GYcr6J+9j52N!wcFBR+WcXFF&q^FLKGCcfsI~o`BX^lk*y~2o%kl1KO+RytzVVV+ zw@7NMDz4#Hi=4;l^jdXKK|gbXEWJTou@r``Y zKCo2^tA#u2u52T>zWz5?Hm6g{nL}Od&|RMNLuM?8Q_bB!e)8Fut7KRB>DO@v2s_%D z&4q|Vo!K19BLH2pvk4dKc(xzZ9Ftq?ow|kw>VKj4VFw!KP(Z`kNk6oR4@`#RGe8Nx zuw2nbY{iZBCr<;zfMB456v^KIV}C zq`_=-aF@IeGd!ywpZXtEIlb4!5+p#fVPQY1VyYflPBlQ9c0oUEESp&^By|#UYUe|x zpbxC&8XgR6w5tx}dl-(dEn}c9!C9%X-+NvGsj$%nuDI}rAj9l_yKS=Sgvkv$Mo?>D zI}eRZt&f-JJoL|(m{V*aF{@aepkqcqWb{y*SAy#H^yi*w0_L=rh|MdZjOoyWj6+Hd za!l(l{jK{W4rIDwjKM(xuIZpVGhfl9)O)_;NeER~?C-GpqU3lI_F)5s3sTQC9&?t4 zBO8n~VIMAXJb+ z;pK30KlUAuNq-5mG^roo0US($avh`lA8{Be<`~5ef83um9$M#8!!5c@&=@zWJv>g) z-e!oX0l1>(Ts&c9?bZ_d;S;VmkK1j#QUB%P&;@&t^^%{v8ICE1y z%mdTLz+*)o4%ECKSGy&z9vZJ1*U?%~@``xl&yAwmRqYi!j#`Y#3>QMNw9d zPem+T+aw!=Sg^b}VO5~DY{EAG0Izq;itLWjUkKO#Kl5#c$Q@P(=MIhb&B z@z`xSRXeZXiAN7s3f5$n#l{JITtu*$$Is^Rez>yqEB~Y0hgrYlTF)iJ2iB@Y(@Muj zfrfskoTEQar|>xDGwPLE8`PB#rbG)DmHi+nzb3Vxsi<{8lm}a7$9^jO_MI_e=QXM4 zOm*v59uiEII*vnP$2Dp9nfhBj-NWCwalPXjq!`=AsLVS-PwY85hD(~0uSr4VB&C>R zEtB9YD-q}MHo|3eUfVwKY*=5yG`PJZawG@hoNmdzHC5ogo5 zdoFdK3hKE$5FgL59{o(GN$Kq{<;f5H&c!^>H-RcqXKh~x`i zS)!G^g1B(z0=@9_vf4w(Yr)FFR%=to!^LLJ*R(pZj0%PYfCmU`1801){eNEBMjAse z14$wmKg#jNL*JFqu8Z_S2Vl5ytE@YM6F(|CidP^BcJcXL9d!MP`s2rMoG5d>$B9pH z@s&jv8io(+yFAoOM0B_xY`~UU`pT!t&K?`)?4(&zIJI=<=>g}ZM{j4EA=-+OQx2Ws z?IEm{ZIioB{UJ+`XA8J(9?wSIX=}NPGWuAF=LSbRmQEnJjkeXPr9U=pu#$e_fx`|hNX!UV!m}_LK!$e;8hYsj$X{@48Rf137IEm}#=6fSwZ^fHbn6 zayae0!fRDc+%V5ba{aL1KP{CONXO%q6s)J>!_n3R$hI_;yP-i1Sq+Uiqc`8m<7Ky7 z#mz^O<7>~J;D*(X6s-?*2^6HLAZ$2veD)|e z@I>=rxJzdPO?SRy7q+pO5*U6vTfoV*4-~cnSp12qliaWqb)^5DfjDkv^}rf2%T4hh zH)n$Fq>sZP>R27i;klVr1I*L13JhwElR(e(_uw(Vf|r!E`6&ID#V_w9-xwXTqyT(U zsySxA)x{Rfs64*{PJy_%0M9omeum;ywp71-@Ex_1f@MDo`|Kd>Geclk48kt=@5gHi zv)`&gu)HB)`a!UjnYWCv$^Cy*H-xyrK}@0{n1q9vh`$iWAB5!%f#nXuat4VD05Bt4 zVQ?w^sKS1OaDvQRUgENzmbG01IEs=igeBc5KiJkhex;Atc+N-@^!8;T( zg5RwQ`H$fKE>k|Pve3UQ`jx5 zX*C#>%sxD-!a>T- z>>BqTUA{?*F+IQ|)EsTXnfFZh(qxQo@Dep0@35@V+c8m(X?l#Syb?F!y%3Tp8we`l zmWWGmaku}_0p-_uxI~syeRM@W z;D8ojyQmfTTWJjXzjF%k2(t>fmAK{10-m=V0e=uW%dYxsQ3AXovI_is8T@@20tPdf zz8KP50JKlL9Jh(_?hbgV$OI2)ni6qY**BOexFU0=)(H&X4Aki0&vygsMISG!^D|r; zm?wfi-wxc<4Yu(t@mg*Tt~}c(2UAI5AD;*7j2bRx^x)SFjW|UE{wF{I*Y{^l7Je|o z(|S?1CL}`>42IVNZSS8`M81c6S%c^%{-ux%jWk6g!MU}+{8=9EuVvOl%g_$I|NU!2MuptI#|{+1T<;Kx3Wpxkg#+hR2yhoX zFqX~vzcLDzvpryiuLnHiE9cq&2lPr7+Nk$|=lQ@_4T3+eSNRw8Og%uuupo)P(aXJ~ z4@L&ifBWtZAmk6hAapMHoMxLG>^A4a7r5=}ul)u$HazrP`tx;Bo<^Jvoxs1&&(Znk zymS$MGIaj=xUpx6U&TGj$KIi1``Y8N?fV*jyW!U>M2!G0-+BKvR9`24jOLNgHdqD1 zbv(G}{HMS0UgQ(_exAJ({5G9-yu^hIxKH8)pG0TUkdzR<5Rfj>@FmGQw1*Ieug$;! zPCtn~;ZSL-E1?PwFEeox%zY#{lN)?BQ%f=2REc|3yi8?;1@&ZSPLNp&N zx7gLASFr0i%nS+iAm>a8cYc|dG zy6Ej0%jq$}DQ5XR@S9p8tc(W;_7G_lJeX+@eq8{dUSI1AC6=v_LW-POP}EUR6$jqn zmf%coO`j-e&IU! zTx}G`;s>7{zhPXLfSKAh_yHR+(_$!^J&^_mFOj%9c^2aQ2>^uvYNZp&PuDyYOcEf>D&t7;kJ?$mjKm(|0 zx%b7Gp3V-AYtEXQYeP+SrGIAT#wpfJ(6MAF{D^nDkGJUy}is1rJW(W*kNn#F-+(DE+j*L7hwm_ag{K;U~=02Rtja zwR9pp{WJgs08r0Hw2~A?8VxN2reFZZnbzX+O@-_)oT#scsvl!xu`_EVrgb>k%R&yyr_{*FM^V@DY|K7(2BDmSqMf9NXLT8dEx<4k@P=H^H@Xcxr+X;Hct~&)M@V z05~6C<*{iQZicPco>u}f>Rf?~q2gz__Pho%3~K*Rh=F9!J4&j6El1($O`O{E416yG zl@HWtE4PW~q1JX%g{C=Z;V_}psQnP&MgevJJjb)=jdoERkBRNnrbdt+a~SQHkOpBs zOz*QbJs`2??R(Ta4a;~;8aOdi(hvLj&Cfr`SEB$XP7`S#ks;@2Hi)4ZRWNHR#B2 zp<+@!P9sB|A4~R}B8M4x98XA4=}FHiH96aPSOO_rj;T%pcq|I%Cm0qJ1GMNDAnpjE z&EE+VD3DS$LYNrt!jx5wX+CTAj+CYVXneaNq+7#hK1H`j2&YCakdUDk!g)wyvA7cO zS-MxwRIuI-O$$(VkT5#}zB*k|K-6c@!r@ z-mim%5#bH^WtN{^E6bJsFq>%vR4ovPCh1}u5QRiy;gsRWaN5RBTfR4KiC8!`19#sq z*zU{LuZyEelca#HHN{EM1ucERVMNjsphGEGWnho(*~bZ-w!^yZ0o#_ zcK2kLdy2>XM5p`7Zg)Bu%asKSC9!N)I8U9iRanhSJTaJU?t9)RW|))=Oe}?Zw*?DB zp>r16^6;`t;$Z z5UDw9yxsF$6W8MoI-im4el9s5IYNXrU_ZA&B9v(*m>F0Yup?TV3*$p&lHo*{mFzZ- zIrgekigrtcp=0Gx2@qHvX}C{b83wn%=5Z`7o%U`3F5Tb7&XR0c65se5hnuqDszf-F zJ8SWP$1Ul0Cz_Pf-cYI4o;2r@i&{NJ_aOb2?ap(;V3gb89^l0vVUE*B;*d|B$ks+E6wiR;=RwLcHyOzQ_fJs{Zl zS%)OfEmF(ac3hu2zVj8SWe4m1t&ZQ$b3P%pyu+GMwZkbYrtejBMlOtyrb%WBnAfBk zQA;OJO&Vh+1Kasf;C;C;Az~*mBRNe{zFj(jZ`vVEp`R`hCM~*sV~M!k4`4DB!ZhwK z^oBwh?w=-UA}eb0 zt;R@E7E~K#EaEAJQNmKGiz!Y7>5E1yh2h{G)Sl-Dvy$DTFqNZRr7+C6S4yqgoBV{- z{if9NA{maW%5%OYwSp;F2&%4X>TgydzEA^C%(M*TNc@G^wwck8m~2)Okka@IJMHU!6acLbn}y;V5IZuh4m-wn?PmjFiLFNXheLc+x4`Z5X_4X*W)ZRe?1EGMuTEdQ+SqOWVQA zy}grXj^1K#eGUqPLFGIwg@z(YOG`%`F12)jIXkLY9X5{chI_GhQvU>h2a@${Ph)*| z>aoS3w^w3=J0?%&WycE9;aZoi3}!idUS(o9vr6XUf!~36CSR5a^WV}(Y>>9alN8vi zQ(+z(2SQ9{EkOxkLY2{gk>h0&kO1&Zfy~9MObkz0%>A3J7;BnmcKN^ zb|pR2?fgSFJ0s<^I&YfV{tawWN}-r`KF0BG9_oY8sIQn|a=-us!J%S?%Lj*D+tB`M_ar(;K;+#mtaz&6GXZjHt-BHy-&i(6{O*sv z2z?zo5+n3}lV$rev2rqSF08chV3jTNLl44)S-dzonx_&@D4ZzIwsD&L;`rH91z;bW zJr(a}ChE;mr^_eFRkO*D$wYGfRq<8LIqtFK8eL_Uca8G|E~1X7+T$%47OhJ;`ZW2V z$HMKaf6+0Mf#QSS+s%F(r^wNNRl=}fb`Y{hd96#fyz{N;NjXx53&TUwprX5T$5k2`2Ltm$=Yew zQG4|BCA|ui93h+rs9uf`j^@piqpAqu*rknJdsKAe9Pnik@Kd03fxNjk2%Koz^P};M zS6tpL>sTny`-Yo$roJ;jp=^JUH9y)+>FV$@wzL6n_RUlV0KzL7z$D4n_*ICrvg9Z( zQm6qBT5}?Wkt4HxjfPtkE9GXJW6n&*U3&_c=?;-yP=!TuR1qm04>>PJ3T0`FaZZRL z03#SqpH|=WGc9@C0UV)TSqCe8)qB;Vzx0#Ua->m1Ws6XOTKL+CA}KUzDLBJUas+{& z6LecG+!p<+uSZV7UY*&+B7lJL<5p-T5QCH3z01!^jWA&uyO8ts!Pg#>plXE>4JtAm zz9hc^?da$Z!FzAW&Fql7Y!#0LX2@WFR?Ybfojc_yf)dIFyKtwNNC}g)7P)E&RzTXvpFUjm(i5-Q|-d=(%A=ZWlj#qLr$vlruOqJ(o2*{;G$ zPgTNSiahEiA9i=JvLOB1tT4%rp@mv*BU(laQ==R4cbKR4J0ExGI=B%H@~j05rnTb3 z`!o&cQ(8DC-p7&SK8~=n4AhkUE89#kXMqW@Hi1bUP0tAST!iY74|<^>XOn>{)pc%Hr`#NKu=f&*ixxg9{055ZWMGGl zHbx7j%FEF7;N6hL*v==jB=D)tC z!6x&jJ`A8b-x5NG*YKFzfDTjaI(WN<4=EJW>r1JD)y3dx0!ThzPl2bWz2zC9Xx|;8$ny4_-UV(1+1hwmC`k8Cw)mY8)4wi_1#Xmy-WEqe~$^U398 z_^b@8M^c$b3T9;k(!a$CL!Vg>-=4z@yRvm{UJjcM!g5t+!FcU?O3*lL#E;DL3RnP6 z9vtY-7l54^u&eTy+VjG!o(T`SO9u5 zK^P}t4)_YQO*iRp>HcXiWOb^6unl(eQWo6rDr`3#5Ya=Hb+`?KT#Md|3r~} zM$OJqCvBj(uh5m=Z1Q7{Kqxq2gs~p#oPN6g#^4^EYy(L;Qsi_f7)BBIeKjbV?bl!} z*bi0fU=*-r=6kMlQ`S%MwDo(|Ke6z%88CNzqHuxxgoKk|gH+$BD?QIR0j-yhJHe%* zOF<@h-wsI<0E_30`pPiqo34?lZKP0bgu*_B3^z{u6a`I!lx%rQwjw24nUO84v72M^ zna^;y#5IG8F$xQB>6P#d&t~Rxg{z7Kqq_WE7}fdKJgkdmj^c*2|L!fa29D*9;c6VJ z=(#ySK5#ZDOy@8%E1g5iE0ondv~HA8nsZD+k{}B}yHVb#sQjnB)dnyv8P&YDBIj|1 ztMKzP;3_gwQa(zSeU0xtfm5=-YPJ@-EDCesXDu1P)02wwCQL^2{%!3-<_la%mKI$Z zB~_Vn-80a)W-17c z-qFI*Q_d?a{G}ECWW4jbuOQ~C0y-vmnt_!oiMJhiKWrVcSYrN$o50oxLu^HoFwOXP z++qaD^g!~UB&gwOzEY5(prl}%gIxCLsqoR$q(@J)A3eoCda8Z&bbRnhC3^Jq2y+w9 zs4DaoB69vqp@EI~zZI5EtUV=g@<)XwnAJJJ^G$_?VxP;?Bo#ty+*75;AoUjX4X^$a zPhz+W-d2#48hKvkHd5q%FM3vN;aY7SqyluKe5J|AHd+&pyf#=@r$Fgz$y%r1;NvZ) zztRT~m`K7rqzQm~Jvvt4kfLOVf}Ha{|K*PZ;^JzQd#F8?reR9py|wk9(537jamvbd z5T%ISun|g<%vvP@HRL=|#;PD=HP5od9*-wMrw~5DtHJx)_>TiWIYlrCK;;`BW*UwW zIs+fQkHGKk0w;u6tdl^l3Eo^}m}}}}?_e}3l;v_IBU3u1O1DJW5u!|1DkoAUDV2FO z*~c=@@vg$U;Td2VEDF~BWlEflabqM5cHBHi393dmjs!DT3BqHZ(!;E=5G9Ov6hm)f z)&NJ6RhT0+A&@nXiFMA0%IN%2Uy3kJy#QA%)dGRH(s3mgK6=f;uUSfzmMV-5XJ;p8 zwo<2&=7f;K8Yvv+OS2b*{20P4QljEi(CIH$I+rLdAGw!e0-2|j&K#vFTk6h*l7l;z z;Y7=4%+u`02$EL4RnnIyEmNjgrV)B(vgVJ4~ z>{tyjQ@hr%Fl&{jH`s?l=qbt@MksWh(o~F-%u#0MIriInrOCuTJg+pF@q?Y(ZJHx- zzM!YrtLV%L#2&>PS_EpyfUotdiK0xW~&L zpu(}jsE{`l=L?#bii?*7wfi%Bal=20n6bh!${orp;;`#i#RVg`fvD+vQ<-w;UdLNX zcNzL+EKIK;&7vAz=Vw;q?#`4$Mvtw`+f`yUH3ss$$%-jy0)_P#ER46emRBm73Z)Y% z-ES#7-c@$JqwIZKnY>SF+OI4zS8l4wgC3iGHRUEXk#|2h`90-Cm}2pG$2G!#K_TA8 ze4sQb*t$I4njF%lp!?&5k-RcF z3LP(u=GG$Jcwtz=$4cKW1JA<5Ow-;Y1hi)&(1J}7-UnhJ0#%=AaD^H^WybSv9= zFrC_Q8t98GIL!lTg9&(2be zO+t1i+d|V)FfAZ0Afyy*&+=%?tLPy#RB3^Nf`?$axKYpK4wVhuZNo#^RL;f|&J7;d zDk=$Zw$OT{h@aNOlT_f~JnycR(^gOUeP@$!@cU;U-lw!q%_~;}^Z_$ccJ(+2%qchD2rq^z@MLSC?Ch4KD{YBJF zhg#pNy;STwl`KKjuk5G+t^64OX_~jC#GYDWA1jU2gId=@lu2SKwYWMwcH+w_v4bfM zP#O^1XHRpLNu%@tC5yh)@l82|d5W|3(b^YifgXb9n`4tL1N1MYIeOmafWkX9MO2iJ zl*i_;IFFpdCT9*EdJ2l==IdQ6#0N+X@wt6itq>RM1HL8n%(!KM?!c9LzDn;`c~hJv ziCi_w?=R@uC(6>a?2?js9u!X8v`h4t)8hq-uz+6g6#p%)*Yg|n!k5KVw(^WHW(Jj& zu@O2kE~*prz`Y@-*a&|mESN!!Eq3a;CSBm{Wmjw4Lr@**CU6owtB0^_G7-g3>swWq z-VmRIQh-a!nCMr@+Qut0D4g;9U8U2Xhh9^JFJ`X!1)ShX&9%OuKN**Ghem*x)Ia<9 z(tF}I*c=FnOwc^|3%!dD6TxfEJmJBaRHfrrcT~ph($CU*4&9=)o@$k^TIrh$hG6kU z(l_9Kt_@B6{w_ZEQoNI)U}EL3s1RR{4Pn04XCJ=HSxcM-prh`Fzm4js(FO^ISrp~? z8X6I5>5Bfc{J2J~tIW!Dj<@-V`B1#6pZVeDt;FzfPdt+=p3K20Zy-^KtP33QTwmpG)48!zajUXtgaIDYtcA=e4ysQBG&z)%9c%m0D+JphEx zS=4l8m!P_zIy?El`p~-i9j=0;nW1wtJ8?l-+fV`=)VBZ!~^rp?)kjs*WDa2IV*G$&Ybn*WBA1&_R(7+}-EHq)&FQ;e19 zm5=Yy?IPBd6|<>1nYEy5AkC)6>3#$pX-yzRhNw0NNJ?1f zpA8fAmXJ7y$_7idoZPLIeVwHwgYqsAK_N*6ZnIc1;1PWoKyduEq=t+x4fzzxCN$N@ zrUqDDP-AeKo#6!XYXsw9GKg83t=iUNV4%L-6lc!!zE4#??G;ED-kd{?R$}4A94bqt z&lLLMUU`opPu{Qg%S}-S39fd=>~(C6rGE_s>fx+q9}QGHG)R5b-V~u7Ii`2T0F- zN)NSJ%+LIXTbgVLPBMh^4Uvh4fjk43Yv3&gVcA@2e6gMU#c$U}=PRC=33fk%&48M5 ztOR}pl#8`NE+|@DOFlUC3{14+bE!F0o%~8Pjazf6ysQS&!LYpxJf*O3rB_9#g+^-n zKhyXca~5}@{-91QG6)MxVTO(nUMQtl)uRUC%~EP-s(jvIn`%u;+T-;GZk>UD%m62m zQpTjGb^Wj3D%to=xG+<&&!ft9>q!-`gdUK-n7B~dRN?o9lk=!44t*x+hYfN+9J&li z)`^*}RC&hcYyHG^8XfpuhJX*`t8EYuG45ZR2`;Q{zS?%v*CKxvE_Ug>D&6Oj4kSY}Y+#yNbo?~%N_4d8Z<8PHS`4@G=PQ@~j~wP)a@Ci5?$ zVNtRI#%Vg~{|PFd+cR{HBE4mV*bMy}SJ?uGTwr({XVEUu=4(Z7tZHKtI0uQ9&Lr-O zfxvE;j6q%C@&d_nG)sR02AVjD8Y<2>WHf1Zrj-HT+6aGrcKCEB|5ts2o|B+kibYdTUV{z^8) z?uivP@xh6-Y{T3O0AZkvn&9{h@(2HFtUO_~{o2S~GFmil@I@1< zCD>}u#gbZ(FwT*%n26du4#0}=GHxT8NC3}#8&YSrfBW?V0OQQ@dF0H zT1ID%F&eh68J0<{y2~zKRlB03c6mYVvig#y?$FsB7%H=)eynAAsCKol_L0yf<(Cjr zFgaAa1|CCQ9b_m~Jt^-%41vFY)|b-xK(xoRT}uAAiTk6;O=Ul?;M$0ljcX^@x>?G) z^|$30?j1ShT{%UmysB2f3WLK|huI|X-&WP#W0Td)8p`vWJ`Ie#B zi0#x8>(QOGR2()D9VR-Ul^2DI3JQ;0sN+?j2v#9TV5z1nw5=eHY^ z#9Jo#{x=IKmKn)Fm4kSUZ%y*h=;3hJt9P&rQNh5$yVRV~QR%R52wX&OZi+l9Ojt-w z7~O5`9oh9$mpZDyju3vjkeV||$wb?}T6U}v%=7$eoZ?Ds%Y!6fIL@3NUlzeD`T674oAJlXzAR#~fc5A&h5G~!>!oJQ{~vz~ z1ashnrtd(c^w@HIHj6VSR}RX~X&CTl=g7Jqhtq(&%06x`fguM#lfv!7fko6*(+H9; zk^UV4&4<7c@J#f>kS3=!!qp1@T0~{6-jD|HjKFC^6&}@&67ON8M8;`e8)}(CKKm-I zP1iA{ckT7JhfaGmQ^24dtD@6HzH3`TGEt-+VyOkDH-*zO(Dm_b9}15x27B^{vXWtx z1$DW}M6-ddmvC&ih6#RRawT>&$q;FR?ly!tHev106KS_08vr7A;xeC45q)-*MTd)Y z^D^-XvUa4Kgus-((D^QasCC^hwdLglv{iDNx6=>COCTbcT-0_sgfEwLyYm(b)=DZf zoo2ueazRCW8)sc$mkq)P5Yv8jC3P>z2z(`#nmdZIuGMiDO=WC(n}wB`L}UyTPGN$n zjHF|%qnUwZrt+c*Jar#c!ZNcA#(%i{dGD`npP2Y`MoeS;ZJu?RMQba^GBqor`0M;F z*;^szGEyGn%sItRWQ1{5RG~vYDL$AC=fplEP9gz*xoKoBim-1y03QT$FNehK;$)K2 zbO5$7MU!FsIKkheKSH{k7=s7@mIm;)YWcL|SW!K1Dkd7^5tUzn0L#&x!_k5q5c7>b zK`LS=iPpQ4qV49!Gp-C-qA`AoLD(sPIg}$0xA6_B@b-&nW~3?bwoOhV6cuQeIF-To zF;IfFYb-yF@$M-;py#)u0U{|v9X(@>ULvM$9E z^HlRI7-=~p9)VTkjFn>WO2)#v)$I-5m9a*87`~aodzj#FnDDO|5%foa8K_N*>}77u zZrArUbndWB_B5opNAs^T+&+d@1z%yp2N|is!9)%)H_r9_s`H_N{fy{khLbG0Zaua$ zt}ne`I%|_Tk&qoZ+_|T3w1-NBLr%OQ@&n`#`4$Gh##oJP9+inVWnxqez@SlXAFQLr$_Au5F48Fiv3f(X{<%UH5%7i~>q|3~} zXMlE$*w5fA(4~4l!f;;*=a*2K(_rP#b%wvj&@C3r&ss(PwA=~j+RaJ-1i#lX{@MO1>9tZoGyU@v#H=_lE#yX|B(zV84y4w{L)6g%M*4V1f zAlNpycxwFg>l`Er&gI7AiI$!w7aw-?4 zqi$8z>6u`7J3`dzBMHt4QGx>A;tAW}*T2Ze8!Qx=B- z@p?q3ikXO>H!v23Gf?CjBYml}CFnYma*mc{{c$+2Z-zf9)Hq&bQ4pgrLW@h22N+ao zL~tsVWJcC;$a2*7HG@rPSl9QqS5xzG=W9hv+Nb!pT5h_p;B3TYAu$I@6Oh%e3yw!C z_Ik3CJ&oB_jmXitrCsf3ookaVdn@x0Z$Z6I7nKTLE0>oJne=o9*&k!dgzuL>X3oUco3Bt(}Dp-ZYYBaDIMJf?jfhrdu>q2Dv zDh)3}mc2zcYp%Grwykac_>mi$NHOXy?K2I(W?hP^vXZ$asI#=a(ff1%TD}H}E0DAt z1(zZB$2G5TD^bDP$AGfg!ZZa?4i1xCwu4hz2tpzc$H<8yAD5$Y!9LGc?9tR zz3?hwXAQO9@i-D!A?^tj-i#uRXkZf>Y}^@|)YQ}XtY^|Q&c!VCi^A`qNIT*UV1`GnA^(a&%cK4E z8++=vhw8Tm>K)sLpAz3gzWUAF`$+r%IqM&dl7-uy)q!v~;<^xj4vA-x^$VTUiP{VO z)!r>`yG7kOH&!{Fi$6!!zoOt5DBO=C5j1caak~-Ui;RXqx!Miqj_Kf>fc2*S^~Rp{ zy3qQ(q8aA(lk9YfuROte4e?izcm?^^k1@|xILpZ|5i0vPM6}TButlR}CSk3y%5Vaa z@yzDutp7rf^^dfH)ATC@E5!=dwz#QS9_u%#ImHI@;7!5$5S8lq76or12|TUpx{JV4?jey=BEQ>yqAbuv44_gVCyW5@5i>8nA@Kw7USkJ zueQ9*lG;vqu{^tRDYnkVyu-kiU^gYR85u4v!Qo0gFds|R*t!@8t8mEf2-u$ywmnRx z%vg?l>_5Nph|lgUu|MsdY+2+UjaOi98RnN_kNsJvy~%9f2@`h>=ydO?L318SkNQDb zVos^tC!Btm8n#m?pi~A*O%}4EP_B^QkMRL)JI zyW=y6JA|#TVk}}{fHJN^K1m||@D_}T4&3}`6{VjYAl>CLr%X(AmY<5(#T~=eeHg!u zE$Z9fid~rR#@t7^^3T|M9$)vtWC$J?wy&aCWmq`4ipo-65JIb91g>DKI2K>UmMyoL zjvQ8?0BQ=Vbo8gzYvjm!7&=ehiIcGKz;p3+@8pO~)_d|!kbpD2w&MrKfkvxgB+pn^ zV(=@{N?BH0CVI%SBugsUfgt`9M>)y@Ef}~!-^jL2+(nYRH4t0@OqVw^$_p);R&BdZ z`j@cd5lZj)H?}4*_-o7!V!lZy4q!j!uD7V${qXP5L;N=we~Yd6A?`mIWV%FH*IpR! z73%`C*{(=`LUlC-qOx-f%}`Oc3Le2eet0ASEg~RzH^SwrK0eKCo6LB#*}722+s%2c zYFD+p+*0i?Dp$t~j(E+1L)Ur^?G3(QrgLF$cj7>^*(M10ucnHMPZ+C8Gp4Kg=gqc# zW?#+YaCmWNdr!^Ms+#RpH9MX4_Wt_&%=LML^|SGQ^WdM8`#;)DUw77QtUM@4t6?|6 zX|r_7%pHJmU1r<+=5PoO#4|^N=IQEzlje>KeW^Ft61&dQGOWgD%$*tS7g`Jb)4hdd z$I5do$4CRo^vYnZnJhn+m2_+*l^sZ7ag$m6&Kw-WwrV?5dMkz>zCjP@*+?4OUePxg zOlN!bH{R*1iWu0i!^n2(+g1imY|@2p;2ae= zm?M<4p?}@xo^_id2ifo|Y+&7nkbS;%hz-8V_U#Kb}UDcS+12G%$+i4O4n@^Ly;$2adwuPw2O22j5~Nzh?stlRORi&W1c*5}dWvgc>JlvG^<-Q>a(N zn{*5!esAm0@B!9iFY|TDYSAA^KA9bge}T-Q*SkVhinxVFh6767$pC~#CgFZKvzYxLnpbiL#iZ&`L-f}=xyi`<#bilBChjbMWQ8s3`C2*iSgiyv@rc~ymQ3UhV~W^I zMvEicEps2Kkmd&~WCyu;3O%w1DY6R!WXcVXNhCIH_??0CknwYc_=coN`w?>bn^j8g zwTgLuvYh%QS+;2PA{G%lrSxq}mhR%@RnqjZTe_!JiSh4lDTBzjt3KWaW>^lC_lzO;3@` z&}3N&UURaPlvu?_WzUaG7Q=1HVopkt)|n}C8qVN8t!9GEfh0HxR-;~mn+$akX^*&V5>DbJkGLgxA%QWB<3|~0`V_VF5G*GhRK-3(^o0M!2r?jz zWLV98lQiInVeO96g_i;=>386I{D)J(#5@PY+@ zHw8>M(}vHKaw2Qb>pU?$*nvs^gaHOr3R=WU7fk^lUDggzc!R;Xbv^U(c@|at^M4<*sIy6D&dAB6`-4f^!>BO$7 z%Pk$ahl^3XKf5IeSvs&nJVPp|wpRS#`TaY#GS;?Hk2~;sz^S#S3~>eph1j-Cuaq*l zkXR|1`U)u|9s86@$%m48mC}S?cU*+ zzy_M2ZG-dWpz872@8;^o#B;cD`V^)V7CYa-L*VA-xaNX^aRna)+%}ECx|p@o##FW@Y*7WRlK6 zcZV~VY!sQs-ejn z#^C2_sE~|FC^=9FCrQwbECbWCbO{CUQG@WYtYKu(vDmqDaF|W1F~z$Rf@O(l9E!M! zk|%RmGZk?Vt>6M-2P$M2{yxgmNz#!d+4>?kNm{aee7}en8>LAtk4C)MY3y`_S0llo z*fnD6P{cxB9fX~NvtSv*S{+ORMlgeH;>IMQvtX1d^x#zFQ1RhTC$h$(h!%7Z03k4F zFvFdA1(3rEVn*(IwL**snRs5RkOD}=FAY}07Dyy5^U(^iAGI<2wNR59YSzrQ?5zq( zI7#nxFhhMr4}HQe1$_tlE;vs?zI(Otlk`(GD4fTyU^#wyKZa^^pz z-$`MNGy)a$kX{2Mo#B?GAi*|Ttbo7{(EY|5h7qIPcaq&kV22DDN^%L;(_Ym0}I3l;yAz@?ndre?YB~2eH)|D#dJPg0QLcgk8=2 z)2y#WKAms-6rD-^Q@_udY#hc)`)qS3Sj8@(nS1A;T%c_`{ zCQHnuN=X0|9VOXTUm4lsya4@w2B@Qa6SciL3iZ4QQe9 z6A_;pPJ9RU9dI5ujcyg`p092|%_cfCo%k2=PEa=$BDBGsA%it%(wz5)Ot9(hq9n_h zzev3RYcCi>MahB_g_H`?u=(!zv-0b&BES4XbJ08P_f?9qgpyj!#&hRHOb=5V@Dk4) zMs>kQZeAoyy^;=*k5@|4c2@72N;wY){$9CMno!(OU0o?LZkBOKtfXC$C)ogY>_&&2 zCt2Q+dEjQi9zXT+vmF%r2QulvEzY}#MojWvR7Y(PE#voFZ)0;B#J;zXhQ;5+2J3sQ zr9i~ur#GD~L&w-M2+e`?5u%)Zf#LK_rL;cH*nF0LML$4T6O=%~KNxa*E2R(;U#5TA zJr}%GDH+7uflNR)k#$-p8l-#pZRuad`)NEYN zE&_M^TUF9AHANh_&b%a%2IteNIJ))b??u zbbm^NchV@Qs1O-!!LRzmN;&%xqXXh`H&fxJ=vwiDc@(1unu*`=1)~Hy;3Ray!LCYa zIIZ5dDN@3Qq&djO6D0|oFBhq0H!=qK->;br#t0LE-&V?8YQL04Uly}4q=~+Rg^WVF z&yy(#3GKqh^WRD_!3H*Nm;Fqkbyeb@&!hEkmGa6fe*ecG`~B_he*ZJiu)(}QZ(-vd zP$g|nC3L1Oi+1av$X<%xjl2+8C6*t!m%-z!l=c7~SxMb;jvIo~r6Nz0d&!UV3AP=i zl!kjQb{YOkiPTg{6Qn{~5Rbi-ri8SN#7%%bkO`;0!hL}`A(J8%LAxqR#0`l*VTeI9 zbU-UO&Tt2T2YoJ-pqt4!SS=u&A)~~vs-${(wd{d|PzGBdVIYI(P4?e3w@+>I;1tOM ztKG)xfO5?<+#jPErLb#AmBc`Xp-MV&H$7S*sTS@?{7l9wSsqd)2hhE+YbZLLB++2j z$zYi$>0@|s8CE5pW?GXLW!Ek7m$6_=3_Bx{l>_KAY^--h$XOfBZ>i-*#UpJb%@tE6 zzOmE@zk_tPa=l0sky9s9L!^<#HWJJ{-f@l}!lN%QCi$b>v7 zg7izPWImZ&%%WT+m$RqhVKKoda+ZKC^Q$D%N+ig_pb2#Ad6f~xYk^gatRGlzkU6jm zeAiZqi>-a|)!6VN#6H0J(D0iy)wemn9v*GWBIR&-OliG?Q9#j3Cvi8jKQ6kvO3dH| zhKLl9dJ~*4qK!9K$x6`4)rv_n6eHu_B*T<=StM!9Wjfr;k!7S;eP0!8?Mh9m+@Kkl zrHGF-vZ9%C@o$P|b5qTmj`I(yMq`wGIw()ZDW3OeM`b8WaGatclH*~u=uu=AtC%H5 z(c;JUR$2M?Dr{t~QNlEq9aU5$T3K1Hre#)=h@Ys8RnoC*0yBLZ>8z4MC_q0;-+5zf zqMURwBq^zpcJ`rXxfvO_9SO{>m2^loZAjR8^qATzX?U8#>``m~sc1S_{$fQ5=Pn;m zxgkCES!`)h^~sqzLgqeKCADmA{f|=Mf{Xrc(g`5W0MPjGvn}9pt%*cmVFc`@sl!=* ztEwdUB|4HPX+4Q*!j0l1d< zr`VkvM@}4={&AJ;fwGUQoKKCMG{}v4HSBZj$DMc>e_7Lhr zo`o}z*XA4wdX%7(+hF41- zp$DN8e9#J~PF6|t2UXGzx{6xqa88OGuDRdlTok!>hP=Vzwz68%Z)X0ww_40MREzie zYLV-zCHUHE+T#;%`kUAcVqj7E0~Dp{3g>?!<3@UE_5gxgk-^ABUaAa5W*u|Jjha0$ zHJwd-r-|(s8J=~hni-TA1$Pk+ zsgMBX*EBL0X~f>5%1ao&v{L~xQ>kHN!Y~f0p)leLH`d6LdbwHD7sH(xSS+GAzy~Em zYs5?hz4?^L>8rfp0k+LZ@ zk^xrSM<04xP7&6$pk}p1rq;+l!<$Ul$LOkKl1N56q!#w#@4li&zMy)humCxY>>B*0 zWMGq|+O4ROq-$#A$02V@K5n4`MMx8}oBGNPta3&4jdO~5{$QO^9Sq)6S}^|0x!D{s z>R-u{jjI@f(YGP*gTKM9l5puxCb6B8bp!j`17ws(1_e+Ab`>=f^;v-DRKNcbzsNR= z-(Tx5CCmYCVE0L$TR-)nH$W3KgJ@dBi)@89=zx>Z2`mcgrEcSYKpM{6U}I7spj!=G z$qfY>y5EQlhu?T9YevR{1(Lu);hLZmI>3rwDx|@3NC$~-k-2ny7P=iu!2wFvG;t%V z!2`R@{PCHXze&h9oaV>f1kK=uHs|q};i=Z}6wx#H`Q9Sw4mtzO(1FEC=!7%igKoG0 zawBsH1Ou1XX^0KKApwU4+G^FA%l4_RUSV`i6Ak#iet!~SR!D<%$b>A&gC+_ghDYSW zX}@0+L-*iU1a>IBG1>WWY?Q_q?tC?NwyguNlh6rgzz5wRH&GriLO6(ao7Vq-e!m$# z9xUMhh~D{a>u*WuR!D<%5MQ@wf?Fg5JyUgeQ&nUZA&123KCeTRy@jf7O(t=s@5gQy?Nx$rD?9%&iJ9o6FZ z+sDw(#47?jIG_odZ|2VNqO?H=oP$M^0g}2u~N@Mea2;@wjeAc3Pa<#!m?Bm_qwnocqRqV7qK5 z)AU}00rW5s0-*hGRyn^&FMHfOUVYHqvYH-^ zWpbnjc3z>(E!ru&Zrv`+x9pTA^q5UM$ML?MUvBT-DfxHplpH+mP_TKYWP+Q7J%bqV zbDWzK#)MFQo{z-Drm2LwHBEOulQ7v52kwv$<1eH;AUtI`A#Y}Swr zZ@g!l9nPJS*g$h>C!n&_83s#Kx0E2%-^f;R$b4?NQ@W9zgdLxuDP=7?#Rv}k8}OG`u_KM!E~Ce>e~%0y@dF0QhZL5u(vyq_@M3Sp&Ouzq z&59JDlNW26|1&Q?l^Kc8-iJA!SI-VL@HIM|o41sV-IOww8Ne}%{e;^8T%K_(He}EW zssE-{?-P!VSpEJj#HmL2e=3qghMmO8M3&(HonNGhbh2=pf251&lh=KIe;Ng_+4?{`YZmpi39pjI-^QG3D< ze8OZfx|a8_wUWoH%I=t2G4Tq%FoM_cpK(j2b7 zgMa%Xs(!yB-LsqzO&P0LozG1fZnLJy%KNNx`tn+7NT;+JdNCl+Tv02At7`ell;1*C ze@f<~lv|i1&CK-nD~7VB4-jJ>&HaW`tjE||&t`%Kr;yOZlkl-(`m2=+8}jJtz@jQirlwd4#p?T4&qgVTaEt{d%(@xSlL~$s6cqGIDeg{w-Ic?tex)bhM4=P2c~(&EY#qG z0;^TbB@_Xfj&w7F^878$$Y$bukS3CT>n+|b{N|J_7I`mrCS)tcJ5Rg|DOTA+dlsP= zs&0mfm$(zQ;P9c?ktHDW(80WR(c-CXuzR_O@0 zO4&oa?IFLD$cBf>yNv!^P%fFcyGbtL?+k7H&N8L=kj6_>WQ?O$H08B&kg!yi^Mkmh zP{cu)+|KThvZvNFM*gL6KuM9)8pXL_dWbFEN%wFPZp#k3W;?eNZV$9U2jraNC5?|4 zK1d_dThFsDQ&Fm!84U8a?vReh*&MlQr3~7^!lo$;3L)5y1QWXApd7?cAbtns$q5nO zG2_T#ht*0z<0s#}YR#jK#_*nQzVqAZ>zAG+sI;13=&q?1U2Ux-dbl-_Cz)<9)Uzqe z)JyjhOcT55bNo)QIXeaEByA2?*NR8w;APGyXT*(mJjo2wKykqGA+ze!RQEc)l%ad( zJHMV0q0Dy%&YWsHLHWG2Q}rHZ&qmq?3Nda2`xLhPgj>!riIK-?HW_aEG2Ww1mLL`H5%r(^SR7r=?b^xEr; z)Mh4a5S>*H9AqMY3HKZ(0UJs>bP`yAbnrqWoJdw8oqCnlK(3s}(-2ain@pQi`L*Ny zau#mhUK+JkFPS2}^8ac(aEW=sZHRLjz>|lY$@IYtI zN`S1yydEcrXw>U3ldq2I=3=sqFZUrf|VZWM3-z2 zk96EDV4cBF4!3%w=~f#NjB2fdt?~|&?0ekp7-Z#8bJc)|M%?*rPVrK+Ht2wp;3nKl z2Hp*1u-+p%@6)Ul*i3=4sAVTMJ}7;LL5klc6zpaWDA@_~KoeNaYHd(DfTx;HN-`#i zX6=4L5n00scD^xt{+RSH>Cw}SluwxqKjH@ccdhLBmdWTlp5nf%b&i`88(_w|(|P5b zdxmy19+HJ8$VRj(o~Wk1CR?uE!$t)9_1&Ofd3h zIRu7+36e-E3x9Tpwe7Wv=y^sS2p#zOF6F_ho2ll%tUyNE0zJmhaK1=E8?530Y2V?z zXYQb-;d+nw2GMSVk-;9>gMEGoZ8y}zIW^?Zv>*97XsaT)1}ux|P^6A+)k?NilZSic zf#J?~=1#C#Ftxk+jiS9>@-SHqYrsI!F6l5|G8qzyoxDe>1QQ-Bn`h^6vpyjzkfdk=txc0ihZW@{`reWr0#ah z?_{C>j(vaE{AU$sK}yy==y@TXKx9}B z!i&K4CC;4-FSjLGIZXnYpjM;_ zPB;&0y)qVXatHE3tysa*WPE!szhCyRTeMNL%**fdE64LwI;e$kBTW# zBn#c3Cf#0FB`4q%s7ZV4IS&FIpeF5jf`b^~0kwjj%ah6Cy8UfSivk9iuVwlJ_x>g6 zS8Hr1Gt?j1Xd|SW_8Fv_rw^Hclxx^KA&kg0q`A*+>66wznT|9Oo`u|kEI_JlX-BH* zl_J%)b|BTU;^_^yNmH*P%}65wUZk2~N1uNuG8MNEsTNRH^cFZ6sb*kAs{Y}~B&4}d z#v|3nu^`RJBxDiNic~9>j$F=K&O=eJM^>NA>yrgYJBCF_wFc^?j%qvZo>oSx8GDfG zXm09rdy&g=xAn=6KL3+QHRH}cc?M~X#KVW8CMfhuIwBa^)8x+S8Lv2(T8o^%4E5sx z^%WDtPn;JsMmmkxWDZlEsz;f%MjRHKiT9YZ6KBkxYS~|QYipow-I`n0nK#@~7-f#lQFF`5&Ay{B zuh((chP%w03bPAy`@-(ZUYBdWqrjZEVN+qBm)w?JcuSr+FT0>1cYQ7?6c(A$a@MTB z)f`(yf@&J8@;BVFZgy-@uTQUE?wz^o3(e-#*=9@8ABMT>vsdNkn*Z=yoxLXCT)4rE zY3}W2k|M#L%-3w99C}%montOoSGa%K`j0iX{M_~CHS6!p&R^405$@+je{rW>k^UF= zhQd4&{WHcbdAYZ&+jPfm=DTj+u>MxP+*Pp2ye8Ltd+sfF_H;u|ZhrRN=9~@dbMXTg;mR#n`747y|Z}dJ3_m zw}R%r_^b1?Zv)2U^uxgsUgxegOmf>5B2s0%`i`hJH3d{q*2|`k;RLz`i|&nwRd6 zf@ZlT;135Mt@P84{UQhT^AGN)8-CaOdO4G?i%jKiNdgmJ37y{V{G=!)x(x5KDmQNg z2;#e*^SjWIJ0J!cV9|hBuoFRiKBZ;L9dUhtEWTMOVtDW>FOsr{V#Q98=-pG z|C-*)Z%Hq`*HYCr{d8@5Utg#Jx_$ux{q(?odQd+-xSu|tpRP&o?YrKL|I`Ef`a<;& z`a@?V26+E8Qa{8|FV$#BKYd_7-Ox`T)K4GWPap6{27HXu&wofi{}HOcx{|DPD))@D zRbRm#G=mfNOZZA;K?Pe_4!x(at3>Za9>5*HkW=_pj`An-wF$^&oY+?(ET1qReg|d} z?*_gzypHqh(4E6~g}KB*cOb)O;SXx1)pg4N=+39^nX)7)OfS0C>{O9y$dzy^pE4n< z;b0zluBng{khYfHDt{=(|?b1;uz^! zdM#94{qjV;R9)LoSHD8xGWGj3 z0!jz-c;M*uYCzZY>8FP{D_s*tX7w}o%)`{&v%M7GJm)8_Xq%^Bu$spCG)#=WCaSJ} z(eS&!`elQ9l{~_c_&B{BsO6Y780&ao0`c&ag?}k}CwiuX$_}!f4hO^~J{Oq)t5vdMOjXVp zz)+joJZiXo=U4v zLtj1`ziE1@w(?*E2UDwSKV>!)|@5UNRw`Q`1%`fL(A3PQ$@i zPC&y)!r4*57JvdMYO8P=qj^;7)6>wkeY#^Tk4SyG z1wF7&H&gIZp2pnpzn5C(o{c|c?tkTPBEP0yA9R~&{&a}8pRVht2lUee`{_abbbX&* zJzXyu6`VYU{+C*yo&jIizd)mS2HjUB0Uf=js;(X-RxkAZRaJKkAGTwLUL0+lc!#1l zcxrq@efSI=pr+W7d0rRS%|u-VxHH^GEp~wn4_1u=NOOQW8>pH2K4+Ncrrdu!G7fMJVf&0cH~E# z*9H&n1OKJlf8xYBn0~Gj%P%&b>VF}zz-o!)0B{6NCOE|U80Q53#3xQCgf>|OsDo2XkJLASv^;i5l!2G zY=TZ|w{kieLU=~CB#o_>5^&Ik=Fd4w4?B7wML-=>Onu zZhL3|EtkSr(FF!^^^Q|@^xNsj))m!qmW&+N@Yx8u<=SeghBi0}O_>x3${_MOjx&Sf zdi>#34)Rt`A8(+G3+T2@*cMkyPO**JqL}U{62w3v9E4U#djK6epzuMOj)?8BypZP0 zrsk_?3Bq=ik|2Hu@1QmBBs0#0r`?D@q~Ao>;OB$ock!+FX2#4G#tWRX@h4_0HGwS{ z?z%kNSGy^rg(uj}yQt^R~yTrSvFGg}WKrAgPLkp>PL@){q&T zhW4F|ofZmITP^47=-=mw^CEILcgkT3{5p1E`X{aW90UAGD*6=Z)mGcYL!^`SG_i-0 zZg-5IL=p8az=g=3Qj|G$X!&8j{&r?Ar0m-^=ZaOmvgs z0SZbwscL2VU0O|mMjPOK@}E;}9htlW=OviB^-(WX_wmuzj!$T`Pf4zmq(7zzpOGZ8 zB$+S$9#SQxpw%Jnll|@7M2Bt?$j`9xv5aqpstBy=M08!PIeXZpTp3sA|vE z`JZah7W}EJNAcCG$G?N=d}Pm(ucla_M(uY6>uN+jG5^1pS|)Xc^Zbu};tcGKy*Zzp zSi_#DuN0GNMBAsQq3ineQ?qL%z^LsVKNn`zNMK(;DFH!!x;u&U?7#bSOuQKquC0+Y zXoH~P>call>pcF3%o;I4B;uSV&SB<0gaE&Z~y+%$!UMt-KTmH$QX`@de2{NDv?8j)8&Nnf5n~1RI9WwoZ7CedZ zDM|=);WV81m=^qmn!%paNbq*i!ch7jYU-_#R^*m5HInreA3A(Pt>u4c``a*<9zmwg*FE#^gE#Rza;h(1?i^y!16N%fR0}nnZJ@S zRBJfpr{y$X0H^u_Il&dg={)^TxnSaie>i8{A~@3)$)USw&NIgCl=yhgyFoL4NoLNv zMeUS5<2eDA$U(lOo&27#Q_K0n{kI=`PCMar8Ugb;mA8OnU#T1yTf_mo#T=$v%JEK! zS;py2Y<4VjF8$XL=jGO5>+jQ!4r#{h@$!QG**bKHvFs*+wEc_xP4r$GBUhqVDJ{ z&HbBYVDu>8;%S=uC9Pp#6EGa zbME)?wnMr`?d}SKLdivEHlMdVVUDf6SDp!JE8iCtn$^C|Q*S;xTXW<(+5F7F7w&pl zv*=n;-PcI;k&7}t#1d^*>nJNui}irH-lM$HvU|t9TlH-%O+Q)NzcGXtq@Sk<1v9)4 z)*YcuBdiI*a#vkbsTW^yp8Y;J@{mpv>bx_G8w0u=_dZ>GNN36Vu|9ifV?gfX_c}+M zn>?(mi~^eQx16uf9@ZF`yZv5g_PJrx25)|D;K93Q2Yv9e?wP0dwO{Nm?wIWre~9l_ z^Url^&2mfceR^+Cjq9_+8?{}3zt`DxZsO40C8QTNueZXDfw2$W>pXwXK6$n&I$CnS z3EQ(a_M5QPBZnCD`#gSw!7#`$*f6B)TLcv$B!#7aPIwim|?bQYP8hHO7pbcA&Bqwg|Q7o4(Ydh{H~F@hTPnu0_V946C+;@O35C%Dm$VvXkSZS?xCQDYwGo~dgP#n z+~Up7S-)l4?oo3H+@of;MO7C)?VnMnxl(JYn{7IzE#7J}46{G%4eK6Iey?fcI+LTy z8@492#YUHT-}HvC_n>pNKVOr(*LlK!w`TX#k6ocGP#%8FsVq^-9{X4^D;bYnR5qJ7Q52)6 z-TcNE-nPV}Lo>OhkGaYeWuB7ZI;QY)tibiFqCBVk-Svz{xyqQkf5^V){f9lqcRY&W z((fN}8MMk`P3&{7YqZKGI)|y{Q5T;d#0|S9=t!A=pGSEoI^dnPA+Z}R#hYC%T4j9D z?WWs3%HB<`@3qQAO>UiQv`$$}R;zVNOw8`eA)d|Vu+0toq5}?3(1v~Uy5Ue%xoO}x zVULVB_vXbF{@2U5yPnf2b4*Tkgw*XYH80o}o03qbIv#WVrc<0GRUV*>LOdU!q#(`( zC^JSs-ZP-iUVNcU6FBQ)eRkUR?8S@T^?&9vbx*5vyA}m1Q~rOG9O>E}s7zGqTyF;| zBPQ0F>Z6C2#@A1^ z=36c|8NO;W)DI4CoBPy&z()075gO(D>?Kp@7mjyE^Cr&R^s)V&n*{HAkHk(6ais(+ z84;J8N`nncOVfJCx)K}Plh2G|A)CFy%2efL*XdyT_Z3(C0A=3l-76M{RR#t9aA%4~ zKKIBw(bs&HT>aZtP5ro0yYF3m`%&Gt=xfeJ>9)5j4o9J9i8I3gbMgc8J2z@gjhe2j z7B7BzQ2qN#{jn+B-3@yFG-`HVx!CivxjrD+`il3dIZ-Sx>5E-&4p5SnRM#NAvPiky zm7!N|o4d<2Yd~rE_7L6EArTeZuhi8?hxBVG^_J2!=!L-MhhV!Q{kVZ_N?fOlx z%(oph6(2G+=u3mkUp0A3%?}PJYc77xROh7y8uWjfPnm5>(i(FQ&LE_*$8jV! zXK~MrR_c0fpc1aMxK0k_^ZUzOAqFL4*lbfg>vK<6r+A*2c|c#B>Y8s*(iV1IAG%_s zLapj2NY^dK;=`2TvVQgL%2dO9yf4SQ*D!aLv3KBPOZF<$-q&622E`g$nA{j(SjNOT zh^~EM+I251&@8&s6*WkSuq|qr!=B5I?$_L(DKigh?)Qq-Q@H#2nGXKV45#MEEHOMi z^CivwH%UvYsjWJ!a3Lv0^o*r|zHXt&qOkyw9`gxU%f+ zuHV+CT&YdDQqvgF=d(Lt9ovq}KA09d^N{BLHPV=`DXugf*OjIj2KH1f@+;T0l?jHK zb2UefO2S;qwdggOIk%uO;J9vE+z7+E9;?G1i(2AXwZx0IO5G9Dc8|uf!?=B|Zy;__URGRkMDJ~}Pn1*h?Tk+}Qx$F*wd z-%v|G%C~yhcYW14_CMA6j_N2WSIVE&`Dv}|vB8SP{HAKDdf%?rd-vBE_H&+F>*^Y; zq)cpAt*oB&hJmr6Nn!s!r$*S=(@$+-)@_KUD`(c5@nFeJ0>&+{! z`=YN{$A3>IqDz+)R{8lK$?Sgj_k4Sj$^B@pYlTr6Gpeg2j80Kw$Bl?w)>FytufMb6 zrBf?R#@(*%MrD$A_n>vI!$xIcc-Q??==!+{wC|Cqo)K|{-!P*1GS`?8WnR?3{%Db& zipIA5UhZD!8*5!#LzIY-vCsQQ`3}GS){6W$txXw>O!8(F$4)o8_Jt@D)L%5YtJ2?7 z%VgPaZqyXNr6!#Fj_X{AvM9X6RJ!!RDc1#O#N}CsK37EK}Zgr4Lo27M5xo z128_kOAM2WTTF(*rNM{v+u}nSb@;A&Uw74ex|9>T+dt5aoB8e$zkl2dksDh~eUY*b zdkvF_5#)Mds4_X_9d4@g=vO2{4A3yT08Jr8OBQY>Pf(co>`N zr7iE8nwJ^|R7AWn&``E5`sm&huDD^!n00^dR~mJOf!oF=8`M>!QM31bQ~7(Q3f;D` zM|*tK89`B)dpDMwvbClwXPYeVnm>ErG}WVgIq$lbTvJql>4R4_N5)G$vx_0Jc$KLk zU|amq`Uw%FR~}$W&UG~nQ%0`H{dB|UaV>4p4Z4BtD-OmOA`Fp+QJsV3{_XPF2c~^> zonOwon}inqjfC2w69yeUq&ZS74O7pgJT+SXeNS<_hfvqBkvZFrT?}i!Wnkrsit#S9 zNio|_n)be9`f{E@jlWeIbX{N3nJ>pEuXnPOT#H0}M!badV&9~{&K zderURz8J~fD-55#|2BQrX?l@Nmx&tf(C?v3)WN0tzpeTQJ|OiiiL_)~a#Danb4W9F z?8BX|*Gx+N{Etm_r%X?4-w7H0c~r=`kTKgs%oWPExZGt=s12*z`-y2=+|k3H5?uRQ z(hYjUh=CO^9~*C2_RN1qoG<>=QLU()yCg@&@^k{?sUIlWbPeX4EnCXFe2~$+?5`tOqfDe2@!N<&+avB zbNBWSlM$s$k9;>bEFUgdh0XqTKec^bVdmj2MDYY1pgXq(%06P;1l zWqRt6X3;G9;AKtV5r2cOIdS(s{9FFx(hXN;Dqp(h4p*+XoiTO(pLfNjU$T=^_ukR5 z(}U;f!)E`dZD>$_Agk_=mbRh8^Ytui+=H>paT(q^`lx1+!>=x7u~~F;@mD7M-@Plk zKkrLpXqSbXE$o-iSjzViUjDVoQR7|lbEi9?L05d4scr4H_z8!TGn%j8m+T4+SBA{{ zMlEV!YEMxY$nQnznizaYv-`tK*qxm1Ddpv-ddE*}kve|9|38!OH}49+D?40?(C$uO z>#~I_6KuOztffJ}RR`80YtI0>hTWo?DE-?IeJIG|(dF(ba!1#FXL9V-g$)dMcy(cW zhR@QE@@hc~?}mH|lmDTiSbXoHu!odztJUv(rvO^~r=Avn$<;MNNe}CtA4c_#U$v5jv-iB+?OHZcS*6XLvDVczQd#P{ zFjBdEc+WlGv)^Kv?wi=)}Im1`B-$k5W@(qLlLMT8c|hoVgBnV`3iEvbtPEgrA>)Qt))o}em}y?$)T ztzQS%jSelI*b_7+v^YUkc-%@hht|htPKgR_7`f%{xY-eLOC#d0FN#}Rv^P4`Q1;Z^ z+!r>lDphwNiw21!+E_e^cs8jU8(KVBO@Vh0#h0iGiEN+1J+Eu3Fjwe{EvjFst~4CM zK0PKh*Hus#8(KU?^{Iy`s3AIsXW$rF6T_Mk(>i z99L+x65o5T_08+WmxXSNzlv1ep5w}hR#HROnHWvm;)nE9=8%RIo{m=LD<8SOidH5W z=7eth$X=aUetBr!6|U&9%H+Z8Or=8`hLJ!^dg$9%x^5b)j0n0al$Ql9%U$=5Rq~ZL zUEhpVCMe5XVKMw8URQ^fy)$*F#yZV7^(swt^w1R=76$d!qPlxC{){)=wJ}DyWbm?3 zSzT9}cRY{`sNZuj%3PlFzKKz$kLdTz6T5hbI*fV-(v{b^X2mMwlohV*SY?bd+f^K^ zJTM@4jHY^mVQBgFu8=qab6vCIl8spgEm7BK3$o6`1h3ohJ zX+&EL9H+z#j-9T|)3+aM)HEx{19DyS#wjBPb5?hY}GbW}Q9Zg$-^LD{5axjvhqm^{qHc=U;+1>2gh@=-PCMpvL&o*TSWS5(+iY-$gIbH8eRAPs%GbIh% z7Co#{9my@LLQD6(eTz$s=9(6my!hUaMR2@9uqC zZP-2C?tu1+mYxC9W}rz2e)wU)qEr6QV|jm}M11>IKv()O!^l{^+msi$Dz2>k@qQgsmOB3NS*u6+#@|2dPIc-eVs<|}*GH3-*r?g2 z50#=I@3Z&aJ}#pDK7+2f+w@>apd#Cc=_*3XD&J0ZMNOvRQ(a3YE0dL7uA<3GRB-Pb zh}gGWb(58evAOER*%-hp?rSfcdg#pb>dUulc_(6O|0?=*11VufAAf889by8w}E_b+WmnbozU2kxs z^BX{9#NifmbapszCb^%QFQIhZt}ic9rq5tBR+SbVZi!d>vo7k^(CVk%3qMxhvbN-f zHecg?#n{w*N7=*X56vGgT*L=83p>6JczccODvNT9vc~m-MHwB@Q_hovh{8M4eNhqY zzTWXDyIq3acNP}^wJ!4%Wl0!WvDqDQShun#uj&Vhu{Y0Uo1!eE$=;m8EVIrPJXM)E zd|jx!u&Ki6aQx`0@H!j^KA5%IFuEn*WuK}HAG1zf&$`Orh^vV`t}& zpJ#_G3Q{)=_kmUbo8>HQV)GA_d5;%;qf?@AlpPuz!AcI4WYwdRNeNW&D`k zk7w^|NjThM$*u9f!|k!Rx#i6FZPCB!yhrZnGK_UyF65jt z2j?q!q;YP(k{Y;`tzB`xYp#`lV&cBgE!}CGwk-(CN;NLo)YEwF+ozw3DPXY<^C$G#7geFMLao4BU9&UJk< zL%ziIaI*3m6UIIhuODL{4rs6Jx2Ewr@ZZXI{nuEpOHtxRm7C`2BZCe4#Yuz8*My4B z>Tv80TB9@$RI_nCm!kYrNqw2?Wq+>cr?s;6T_1$F>sF7< zWtLFi5$H>cdS{8l|BtSB4`{ObTN z&$(aT=Y4s--%pc|W*+%94ef+EdUY&{6Zc34*4!Jty2zMBj*dkefl@`Kqe1X?b~-4Y zfl8*My^%eVY7u0cyx^W;^1bZ`Kpvrr5RM+fWw5UoZe!ZJl$X#rD6;b#KDbbEcIgj079@@vDJ$^<> zNub3KmUgq4z2(vR4%}$##-kmo4&Tqq^nhBAU+b5 zN;PRDE)ym7Nt2WoJnJ#EP?U*=1sK7?QW9-(NokaK$>rJkDMoTK6REKCF1eKnR49o= zO+bBzE|W$VwfJsP_=Jc5+1mPCi`)9~RtQF$8{s+>qIm2)Kvqvg{faxOHr;JObNFMoJcZx-u`jI% zuNE~3H$765hc?V-t}-Km4lr|p9x{EPwN20z=pXb3Um{^l2LD46kt}+<1TmgQ;8qSi zHw+u*J@RKq_(X=pCwqXs;_eiuB}#(m_IGdr0@r|c}bxoF08g-^@L2&o9lE$HwjHDE*je* zZjGfY_*i(ytpW5gGMV`@R{=AE=F>}?JE2Y3?~}g>x9*Vw|6cQHxVmnv;cEEPf^O$T zwDnC-RNrs~A@9E#N2Ei>oFs0OJQkf3x^kM^U44wD6|ep~e8JD*poTpMJRevy>i_8z z&D^7r$u>PPe?@joMrp}i|NE|qz5|wn&cF*zya}F+G?yDvuy3>7hB9j0{M=J- zXw(`E)VR5xDLc~01~U%B1+Z-9oNyK@*}^Ec-OVSb8fo2pbH*XPn_ufqlbe6*ew&-5 zHPhiHWh>p<-Oz<^1?)trG19T`A75Ay@heSUlhy+WD9f)O7el30 zN{( zo5#0>bhIzpd~C&Vx9fYQ`C- zuin7za$5J(bH1K@pA9^bj>P4l7r{8WEC;QEu6&n+`og^kz0HlEAuN3#I7PSVD2z&u z6>vxPn~p}#nJQ^OCDG@omT{Yor}xTimx!h>3F!QgNA>=@sqxImO3fn9w1Me6AR^eM zVOX@2*PSbOXb*cq-t_V&kXc7%*^(gC=r|2kouXZZ#a5LX|(2L;FsLA(NvPtMhhHG zt6@q^O{-O2uiC6wd-R1;+w#3d+{KAbOpcg=D@DABF)*(K@*M$VU1CNaUA9*&G-<}zVgg}Lh;dZmTlEtK;L zqv+LU4^aQXUmh=IE%w*kZx91*6{+v^=8F^Pi*hn-E?6ei60PF+Q;Rdq zgbC~v(bSYsG7dO6ZX$ftw>)9@Lcc2h|N5mm`v2-z#sAeWRp&qb+D~6L%gE_DXp&-{ zv?`_KMm4AUnJ3*WF6rT(?J4KnI>fZI2e{6r{Qq~B6E!l8>MPJydZ7S28g8SOKJ(Z7 zoU1&zLFwgRN%qf0Ap!fS%J8x&mU2+8?3xOx?jUKM3&O&3^7mZS*H6{Tx5@qD#g>f; zI>}47s4YBt9!g}6AXC&1X4g5P^M)_UpNED;sP~H)Q77itNgX+pRgqg z{rSgiOkdOahioiy%tMhm)1VXXKuVz5YOEUR1BLSP0`u~MBEx+0`-hsMN*b`*+uxKI z1iT0Li(%TTq|Pcx3N%H%-GEhJWCAiOKPcQ3WoNG<$ll447w4n?#m*HXcaY*7PBzkFKL0Oy%lQyx2Iq6E53J6!#5hpit$ zwkoakvI;W2hJaU^%?`&B2H2H0_F%ziNb_Bm|ieOXh4pp6RVqS3Q zU6Vq>&f=LjMkRs)P7z3-%l#8!T@@@ms~Tey^H|eMin;WKgH6nvYf?xnmzvFEY>E)5 zEHO_CmBAIS`V{H|N~j9-fkq}vANd02s7WXJ9xx)RF%RIWl`4=b@=y($N-`Frn31X($cA~XuUPlg;C?W!V2qn@f27wN zq+KV-?`jk<(;?O74cNx#{>HQ)~1*;L?YM~>Dq=iC6e`V@0* zdCJmY)kfCl&jamP+bMb+@4#89btVSW41Tt}LGVlcW-ytbj}ix}B9TRzzhA&a0mWbr zUJ7=PTq=y*i1QC4CSb}bNrRhKvq{ft-_BUxW{Jl`SjclKD;Wo>U8EMZld4@R* ze>WcXF=d8LUnaE3KH9Ks)3i9 zw>dTM^~94mYL~K1NL#a%kzKgz)1Fsg5ixJkBTyeujmP_sS2CmSqZ?TbsPnwfOpLx=AZYATga_MrG z7s4rjdnt+oqE^2YsZz`{;ILO?Dg^xQZJHWRw_6O(AMOpirU7h8X2m*g2jcu7kg-&z zc$-4W$lxX8MR!zK0Ff_4(h)@xd(!D$EKT=x?M+)A-~ekOw<;_E`T~>$o*k*4O{b-f zyv3?3e4rGb6ByM5vSt~QVf9+Fdl{I{(uidl8Yfgs17LaoT!xmQAIbdXXh9$6T5qkQ zV9QoXel%9~C+C)G@KP^J%&J=c|tgS@~;0n0FY=$i@ z!ZWDO7jVbFs@5>gOL?6iQ2DL>Y;VqH-)_aAoJnxMnuCOeSzgd#W`y}CZ@4oWU?u`> zip7o(I%}*cjrFgn8u*m9osp&t1}!n8jqq)oM7a{0c=l;REIsu!;mfB9@y`-ICKW5t zh+=ghTmvjHOiZi!b_~#L*KM}h>^r6u^ifoM#jRyitF$dj0-~QyE-A5_`cZ`woGQS} zFm30!iy4eijJOI__%dSk0)`Q{o#&EmCZ0p#_jJ7dobwm}L*-<+w+OrAF0?Di)Rk!H zORAYLz)m^P+0>O1vlk#VRBKWyH@c?mSD2?h-G(hC!X4m_Nb-anomgMDkO1t_DR<(++g#5zY4{L z!1}14Amctjj#KDFVczD#yw~$%lC`m7622OZ_co_6K-+(Z@tHRZ;o4rm8bt-Fu8%HF zf+hWGv^|T$9o4z_H)NIit4Qr?q{OP9$@i;Kzj#$2YKO=LEuCb%yjB045-RtU1T11% z3jaA?mj>bV6kb9djG>69>&?=(B+0c~KAj5}S-dzJ^@kjzYl^gy zKF}yMWZCMtWrMQ9CbCWF?Z9Qd~8BWT8nZDJywJyKtd%nI9divadtA&=~?y1)zU>p0`q)}zrroc@=pB`~(T-_}1^qe>cFbJ&ky5L~{`$i#H;< zn>`K&;{1;6-iQLiFaDhcOh1StF=BfnJ*cYozh@@GgjvM;*qjs{Y2Jt;-~#(~BLMY{ zgn11u@&;o+pa(c1Y1phO^GNY)C`jHRjjJ@bdB8m;E;-fo1Etb7Ww1#JAU4Wk2m6q^ z*O02%+#cIRBye)8aU*wdRq!!Ku%7+I*_>N9mfYhWj*0=&C+zx1hGt-_QLhk~HTHzzQ2qtAC57y7+yJAx!^%=D3Vca7ond#5;jTghl)OCW*P#a-psF{%U z1GT+BgV}dPYvz&pucL8%XVe06_;oZlO$2{rpxni)lpTpGx zaJfno0Pbv-$oP}g&bGX8ITG+$cc}3~mIRHS;M5LL<}N3hQj8M(%(*Bh>9Hxo&lbV4 zrVj(j-eMH%6SnB+PK!nzw&-@SMWgDwh@3A5?jUp#xeb584+k8Hfd8~90HGn-0^9v( zX&sEol3L|kA*Wh&I*w|-U7`6!+LEY^_PLx237j5+`f549=miEhNdnu{ctZ;O)uBPm zPyo@T03=g&73jY8rqsBdytM_%hTM|Ii)#n@3`D-%iSWgx>A^7C2fe zB;V)*|G_{m!zk9#dK6FVv4^O4AvRc~UIm-T_#17hc>*+i>iI!B%jqQi&UFJI_el{J z;V^+CHrwuhx;|>L;ebIO6IyxGvf-s$!7WP1lF#geY)g(oiM!l5{-zyo{+?FR#U(iRb1*cTHNhr!lAMwoS!@7G!hIV2i(N5lyj5 z)kZ1BLBoQ-+iMrfmjBO7^?GUO-L`wu3m5r~In|_KD@vBD3!Xs7|KvKJ$#wkgUQl?n z8~B|D{xCt;U!-{}nlj^Wso{M9!*;kDm2a0YC;q2u^HQl@d0A-jZy9vKwV_&{*o92% z|721XK>OAnX)SDn;XK%$%?rq?H_*$o@6+bfVMzc~oAGqs?EcRAh+TTs6bs5L^}uN8 zM+&41E^0R8=jcgcL6B7!NC-)%8dW2ll`l zN`>^uMwqxYNb`->Sdiapr+X0(E zkzhU+DvW_j+ouE>yj5$xOLv+ggBk>|$ZNgH=Orj-i0bi^Zn^)X0br;TJoQc-#kg;} zPnBM(xsTFCyrv$>=}`Y_0R`7%kLx{>Ha^MN0T>NL3U;8x+-K$nxnE0H`I560015ea zhX<6hNx~ZI8`+TW81L?sft_qYyCm$FhLxHh!HR5BQkBQ}Ha%ManBThV`e|X6N$tVB zrZ1$IMhcBWR)l#*5lfXCZsg$(1oF>eqS}dG$aQD6xk5dDlpjPnV#e#bzm(~#Z}PDx zZhCZviUf>$+@sLDkuhG8Mc2MfSU zQwr)pfJ?&U#7^|mh^M211HpjD!ZOJU@K%s=K*_2ph7TLRO#_@c;8j#@pyGw2Y+e zMlbNqj|0fY-3Z)JiE%dvemk=pP4ZU%5%A9(n2!dKs4~>I*nHQOxPeYgRX}3i2Ad+G za+zz^oWHqVCcsOT1zslD6p8=5yzP3KNMC*kFB5GFw_lb8TD_>49_|RI>285deOP-T zK&R>oK|U`%;;LBvxg;@9X^ZfZvAbYr%(a2H-35QxV~KfT-5)>Pw7%_%)G8*|%g_iI zM5qo0p;j_fhqB<;P8~33lgP)A*hgIl7fIt$kp7X=-iLgv1MVe>click2K&#KcKiNM#s`)bnnq}m^9!&~VeK_4NVESwpUyi88 zmnWWcyWF7~w{4h#Nlp&`7!Y$mk9< zy5>(fD*c)maq1kNZ4Rx3svz^gK9y%pSR68F;J~6ogW4FAONgl>{s)mN`;_Ev&)V)3{~MCd6v<@?fDtZS zPH9h(!kE60>Vw>Y2#{e>6DaDy8pwjOXFkJhx$0Zf5e~Sp#52BE5E!KxFSX_&wf1x9 z1Zxm^>mUk1nZ$e$H2h|A;UEetR)@ZaZ{4y>kQ41UZjkO<>5MUq_v-mur$ab^ z8N50pdr4}sn(KKvv#6F8&X9VbguUfPl|5A54cZ#Lq5zcM7b?Q_c?F>N2JJVj)eU2Q z{~=7s8qO8gjg$3NOC=NPTe3QR-5oM_*}-eAWW~EkB2x*d0u|&)XBy}(1Fhdet+u?y z%mMX1Z*uTmG=Z=F-J9Hg7p0EzmzHkUDzuy^p|$ZPr6BB^_eWD|tk%NzVBWf-Y00uR zg*#e(&gjhLk2@7%rT+oB#A0U?!M1%ZPMUT0ykjqK2dwVr6 zlUgI-(^ab>y))J=>bC?qwB1GkESpKV2@qOoWTXkn`0A!;GTVfLBlk%yI#9XN`_t$z z)hkBB6=9$gKbpHJtRZZbC)^eXOn~D95UB}8^VR45iQoI^1;83pr(`CclEGSklJh_(b zowS-!s2`_B1D|S6i)O++YbJSUhOeZnSAvl#P&MCsg;=&jbPZ&^T+sOSJ;*Oq_$3%g z#fJb`0dUzNv;sur{fE$M_~U6oS^b@YKW}dY@m3oF1|_N!P8OGZ>Uz@krA*wRIuBqJ z6afsQ`aYTLvY^>~^;my$(}EJDs#JeiGB~^dNZ@vC6#!CC zlQUH?oJikxZ~Vm8C)Fw(Lk=m1g@`w;*zM3CsC zsK^(5$^}`Vc~oR)eepF1)~r5?c6$KtkPU-{F3=bU|}5DIh9VBddy~I81sY?J`;;xgWJ*A3-H!VHTqq*WAIDfjKd6EHo$^ z>8|Dhs;C-}Y$HoG;JyRE_N;M&EGalnq%6p${AvSYJcgs0a?L*S*2gF^Bni|4DZ?mK z-PGjc{BLixW_?O)79%#_%O>YPMk##t-E87lgJ$uaHHBnV4Mlu>Tu64*0IQQm{!@dp z`KoK#gtek!N~fuCTQjxr0bImXm?!s1KTCfN{cJek*Coj!gN=!_|+cfU4`4u z&`zxzg46r)pkE*_sdpBVt2VR=R&@F&C{AWBF4W6?MPJi=0M55(Z=3IWRM%#c_dY>J zx~kMA3s!afrzkNX3b+Ly*HVEAgwjEVF?UB3{ih(4sP2OJ12usZk);p<@rLDq!w<`0 zu9K3sPf_Ghjx{>RS$^%ye<;_R^NdM2! z%f6~n(x=8Y%8xm9Qu5YkD8}1dK`#nm%xGeklzj0S(qZ)hGUFHu2ipwn9&NOwFqd8u zFpQF8s7w&ew#5)xEt&;##kyM10XScjrf=Xp1oHjEZ4n!y4g`bh1S(W-01+5;D3m=k zCrZhgT9go?Uh8U+GSlY%QfB9-hkyW|$b@x?iPR3ZpIDM=hgmk0&+RCduMP*pn;nSk zwm=tOvzhE8(9&k$m-S35h$wF}mp|K>HR<)F;qTKa~@*590QfL$WM- zj5UdTbOMbDaQ^sDI=4XFTKpg(?hR;iu(~hM%KVrhhoYeIq$EEMY(aD}Rbf(6*nmcQ ztAbq%NLN*TQ9>FT&^vsmx0K}k2aTNU^pt`M)25_vRbNPKe(nG=Ya7Ty;=upX9ql{< zYz)n^kgMQ{gmw?e(XgykXs5{s4BTK^SGi2JEilh_p zC}F|2TsM<{_=3Z}z|@#>-C?u32p(+K?9b5%Pv_^7bS1sPoBEOipQEV*RewPa*zoie zs6Uq2{M|YB3(`27wCWw&J8F~Wj>!!P32Q{7yj8!uO3`DYwn)hGMl|%go6`S7DDdq1ZqKEMj=c3`0fPf(qY? z1Xy||ikZ`vM8-FvJihtQDDqJgENc>JX+q(uK~y+$+0NHJtBzApo|Qa1M;b!B9O%V9 zPiaq8u5~cm^eLI?0K?Rfe~PPCK40A2C?N(w_JPfbv^&t)EVap(&S zJ~)ZCp%+NMQ)r&|zl+)|5w!&0Y9&Z`j;bt64&YeQV;HA|v zwxmGT4_=h}=5G*dCf3gT0)2>pbr7BgAG2XZbsB8zMzZ`gdPg~&ReKl2ivj5LKUQjE z5W&_L8-22NHc^$H*-g@OW)X)uXX2XQ+Z1l<%xKCW2kl(JfB9Aw_1=& z&h?l>zikl22)T_5>|uCO1M1fVbV75ATx>xJFif!Jf)_yT@H6NgBsBjgL6=OvJ`27= zX@vhJiVlKK={5gWX7RIq1DZ|2no}h0OYl@nBla&*Axb9wT2UDLd_K!85V0&t>X#Rh z`K{=R51@mhUxq^ib8`KOv@4lFn3=CZTOWEJg)qQt$iTlJlr_2+N!ob;bWS8I&!cr{ z6#4l)S_$=Me+7R=lT%*-R)1721OazL81!l4Hl%>O@om7=P9)>o0JaIK%i2(c|7cdL z>}&JnZ7-NH{XoI=cd`;j5mOs@mW(F1+fe+pWHzLveC7@r8Me^g#2yf7qh5l(H9e8C zSB2WB@lT(Fg?j$BsNtE~s0_}oYU6K*EV1=97m5nyGJ9M5OFU@f(ufrHS3XSLiguJQ zJ0-Eq0)fSaaN|TJ%67p===@;Xe{V;B0#oa}hz`Q+ZT%WOfzfHdfvX^yRDFZqg~V~+ zqL)3AS#UpP{8CbC-}@F=K$J>;y@cif)^yxuRL@tvv5<(aa9$Xbu7EPHsCLa23WKxvc7<*P{5H<{H&&{g;{7Pfo6J%zDQZ9%UG7Kll;lbF0lvE02YgAJ*uaKG;h**IT?u1s?NXBgW!GUOMO<=GTvetsYRO85VOc+=*Wv}%Y@Av zaufY0?&W_A*SWh2Pj3*`c{71K#4o+>uS;h2F{;uaTbj_AOoX=}%0x0rzJ(_7)$Xgv z?px@(lAiP;m&tGcbCX^Lhk!~vm06mJWY4dt%PXC=_5e)|hL}A~vx)9DiVm9uhc=Z9 zkz#TzuulHx*Z9tAoRCZ|K_1x?xVB?#hDBw7U%s}|ri`splpXPf1oMw8Nyr^;_m02A zL5GjtK_j2@!an-N(GLMKc68R!p>Ps=@1UIt|L()qM8*@m9qp;@xg%`3BQH7z# zB})DSC3|t*wTTK4P>H9W$bR9K2(sZ-$k*#kMoJVezn z#IA>+Fv}tCk5Fjvbk;rw0Q6MQ16RvGd+&%E&^bQi1>GC<2n8iU$wbBtl>H#b|IZa> z*X#I_)?bY?*ta}@R9a_JRV73z@_Z#H&U;2;TPo2%LSw=0@$w_I2)#m*A0s9F%6$wv z*H_5?$0#X@TMce95~D(7ttmOIwqFV$I`vh#2yEW&t92|(mv)J4G5<%q+5E$1ZJSTJ(`%gSE2FEC4#>BYTYdC_i zwp|E^#=)E`D!?@^7OLZJD0wavQYe~SG&z?Ck>ad*APc$!>3?wv9u5kO5oF^MEXNC3 za&QTr>7kLB(uVG`8k0!x5*!lp0l@E|rd-}|ISBlV*bV_xn!=Y{Nq`E5EX93MG|66y zN6Enejx8edEB8y1lEtjuQ?Kx?M&T7;^OWhQ@YHKpkk6K4kd^z7AiplfQ;~*@T88_2 zmvQJm7y&2(G`TEUu?!D}z$T_;I5pJeh`6&=Z{?PUQ`y=a)8gWo{+bMemg7O-CrW)4 zcXC^5)N(9`qPffQI100dKmxBTV;&NRPKbyJ#m<#p@?)PRzU|wti(Y+%UF}1KaQOdY4||fAXJYai&o-riE8)?2Szp# zYCNoU7Ob!tTEI=bd?i-;a3kdWP>su3>oS&nxe|}U&Vhtkg#+;lmPD??!!V>TScRw2 zzsFYL*>LdvR^v}uN}v5WX67Imo7i*Wg0WpISpaR}RP=Lg-!(WK!PXpIi09Li#zNem z{%tG71Ei~1u#%@50CIqgt69(rOmLoGNTjde5u#N9Xs}KtIj`UsX!f^X!Kv&THesUV zs3WD2jr1EHsTdcTn6G<8RD&08yY5m(mMX zitri`5XY~@iy}XvaYx)>qsEJYG%yNHFpUZ`j!SY~ESw(v;##bP-v7N8r!4%JXlez* z)@a5r^sXvi$nNBg{vcfacQ1SP3D^xGo}VlDh~^UjDwJ4E!8~Z>`;88PFmle9TvR=3 z>TX@C7YO4r4h7lQOqGq-~fuE?3i|X2%idfr4 zhy%4|BDwP_mf=Sd;<*kFdXAdv){=~McnJ7aZ&`=Keb%vCz(uS+JiOi~{5PMrFjBJ) z_xD}T%3qa&M>-^FqZ;H8VCVOB*c`BdHBOam_Yc->WUa5U#9vwKAJDXktv#|H4@Y1+ za&Ew<172q}a(41m!`tI4f0|BIsxSNyiG>l+k%J1Zssy5z*!W}NMlMf%`P3AiOUcU>HFfoF?2X(d}VLh6Y-kM^f(bdlwJO)KOw@Q6EuAB*Coxecq zCus3MUQ)qS`N#Nez}l&T+&YQe%#xv69Ev_A*;+g@9ejYIT@FkA^6f~rJfyx3oj#za zbplzIf5>h+IZ)xl-8}TS>A6ct%y@9`HH0OXw0P-gs4L=`^Aqh7_zhLCfXFk&@>P|8 zltB_r10RnZ8_y+!f^!tzuNAB%NwxnEqS=Z=a0N@=-HHc?nkVIfHyJk(oZQQ8R_iM) z^nip}+yMN* zMF#Bjd$HRuxm`cX?$%Vtk`La*6W{>VcE5?e5W4lwc058@&+3k|Wb}3{ckz4NnQXvK zCs?w2J61+EJnH}q{jWTag#WMu6$ZMVob3S85T(=@SiKF}zo&cPbt&MSe-Gk-NL#GBnStO(=yc44+|%{%stA&$7h+HXi2wC9qqItgS5Rc^l`5&$Dj< z3S*J+97|^G#eF-G_TjIj(Doi?}`%W$T!omE}GN8)ri6klXXrVdB;X=lTa z8UU^a&R1r5SFFSFY!ZlI`j|3{2jkg#7FLzk4f!29oET6~qdjl;m+8I+V(kjky~y|t z>`6VIj=yEeB0WBcRW}KL58fpFj@4ad$s2p{3;v)WqvCuw4nOCaKWZxDwdQ+rZVw*n zjikF2B}#6-fi@i@{(JETDF7~Sn3Pm#sk}w;?FmT|c^)zD#Y2JEUfGM6_-BA*Q&M6I zrg6PYLOGa!QEm1<%pg#c=e>hR`U2;I`4+LP6__RS+JM|l^6@)34jm)kzk|yFny`Z4 z*CFq1g2Sh(jw}V20B~ayk30vA_~E7C`Z%^VmhKj?kiaXLopyu6X>nz1H=F{8G`{oD z(mR3<@J4?OU{El&HoF|iQ+S-W?EG?^h5U%E91lX7fdl3kCB_aGL=Kl=VaglU`n*)C zSSSHwV1BSCC|<4CfYs%xr`)q%X93r-Ybtm>F&_Gbef0~&^$X=C;AaBuRSQerV0OWS z6`cR3?#GcZ6C3yA=n>aIbD^4a&!!j#5h7@t(OjF1r!8+7x4Tn1SkHxwl)(#BTj_@9 z4hXFCe_7J89|wy$h7n+)EB+$r01TZ%1MqzKv+n>l7DMpV)kVN{uC9d;ySo9f z|3nyR+1LnC4jJzt-*%Lym-{e%ZlZA>mFFs_^#~Yo!0+O!z2&~zQxW4mcKD9loAbt# zaiD|b*@NnQ$0K&HXUUY9+{DX*#FJlZFJoO%Fq-yT4jS2q{SSY1tK-6rqR#PiFI>3SK7LM4=fg(_fT5dLfMqe>cZ3}x2(6yll6%dY7a1&6IAlZh*I*(pEI~rb761j5_ z1P!1I@8U3VnS|tnDOB?tONP9Qvxk^#F#Ev$>B0P+_K>0)&7*jwhZ}@&JgF^P6@SNh z)OAg|k$i`wNvL(RQTshbHcg0-tKL0HRS#QPE!|_?b)^ySY4oyxk<#sfJYYRf*5;H z(10fjo3)d ziyf^L(#lEywu~7me2G4|e@#n@BV%SrMI-$?OP?_Z9%$(IjJb}C*^EpZk@}?>+P0)a z-k*cKz-rlkj@H77#^0%iCv?WLp7*;m=7juqw2m*7``#|~sV#&<+@gOA)FP3YR6h`fa zn>q0kRw%U)XL#2-wo@>U3pe;T@MZ7gNpN<1-^W8jdRP!x*YE)%1Yqveh~3a${U@fc zaW3?F(g%1nzRwcf2iQNB25!qz?N)q)wTf*DNBD{Ir(5*_?W0NYx;Yp|`+5qLJO2TW zh5GM*z_Ft;GYEbUS@MDzhj~9@bvnt+DU5Jt3a2MsXvW+4sz2_M+h!cp*EzE%Ys~#l zWqinQoeSe<0-S)Jn+AdLDaRV|As&Mtvt-GKIKux4E1TeAQmgSfL5EP&%M!zfaK3n? z@k7kgmd*uVb}zY274>LK`g6DD6D!mr5r0j5+&p9?#GbgG(sW`C-Ua_JIz<3?-Nvpp%gFw$@Y$3xj) zkKp%_8`*sn_w&$!P6|{+pk_LG6puqW1YDk`A$O8njU~u~yb3-B&@;D>aA=e`02rQD zy$2r{YT$T0X-gdI3qz|Zf^jhdt}`&Q*W3vu1**Qc$@!0PGGYkxF%CvvBK<1J17 z7)J&63DBw_dNGaf;kpji(D|H_M)V)!e4r)k-4Y;y!0`DsI5WvRpvfmd@5uvvYU7!j zDkh`?BI{ceRWf}h*!7#%v-uU+lnD`j+tx||iby{cao+1v$kgkLNl6VZ#?Ir!!wQ_& zkH3$QA^@SS*^TE2=C{ki z6WHC9%Y(P==X$RAKA)v6FyPXG5SuS{G)bIg^3n&LNHX%{zu$G&iUH(TLISzZ;m}hL zgDb!cZdFpcvS4*_QRMW5$i@AqaCC?>x2;#MUQiU7;}MxJ8phB012F2V7k#$4ynD4_ z$f1hc!v(aK1!Y4Pyzv=?bmgczcWNn|if8lH1qIZ65?<$F1;_6~_7h>G|G3COV8QahI#Gpv!kjUaeFZ{L8|JWFxsttgT=Q_dBQ-E@P_rHz@Rl`H?RsqJQYCQa# z3ID)Vsw#+XBye{Tz;|BYI&&*=p8y}23axLo0{_>^#Ov|&w}2~;{2o_Bi9X1;RFZ{cm-0LL(X%0_vS}Q?Y{Qe zzbxz1!9RyBzOoR?e3_T>;yDHfPHR=H(KCQu?|&%KCn{+nI4aJ3sbCa? z3zQ;no-sIp2|1LwH0pRUPJfYCt}O6(oOzP-$meqQg$n|9vyU7+92IrcDU8hsDaqm- zRAdfdU>H%nTLoI@=L=45{0@Q57a(VkMdmy>QE*v@1RSzqk&+k1d8d>EI+GEVMST)i zmEPTJ{8^&;NpdJr9hHRB2l0%XC5QBLjK#75SUsBx;;k>LsihpBLnUlHEo2{gnv}?t z;$H4g@4ys~68|k*{?w+3d;E7H`2vpVgcaVk{xi{H-Eg~a(2KS4+xZSBb&*HS}CeRkoiO}G*aK&lRdpyz+hmm zWDZ#cBT7HkOPiO~i9YSsgavF*RO$K#MAhN+tG$+NvT+K7xA}voSutB zl&g6k*9p-N@ckQ}6-?-EjPM|TcrF8>@Tzn>jERb3 zU1{B0p1`oX!ZXd7RUoLyEl6j)@*-LGil6KOXHyG>HG=pn(dKRu)z?+7)e9joho4P| zTEEo5Rw;qRQV2vFdKWV2zq-p-gqps(z&;4I84NX_H?sY}1-|k0djl>{jas2%0*uN4 zog%;{3e@n6B@R&#to=X4#x|3-0M#%f9aG$aJ8L&wxb)tl8^*{mj}l#EprAaLohf|Q zFVHpv?<5N3415(+pd@@@awmZLx!}+J(#+w8;k7wynwzEiO#e6Ar&6?#-vvevC22IlOFH9tmf(LkRw zKXcJzh`z=KdtbIf!H|v%7m9vK{t}#tS!r+2TDMiVwOocq}x(?NZQs5c5EvOl^-egz-ss3GqKTc(~~3NaFxhcHB-C@oW?mc!4u@%kz5 z#g~n2!_EIk`N+>Rpm5oHjX7t2u}n1_6|fnPf1 zNn4uGT-IAM^-=*m%RII@d&{Q+ew&T?FJwzHO>r0P>}5jgbfT|%i>bHY_}oH;4mkam z>F};`tAMotQ$Wef9q_h?>k>7HoYQ!q{l68&^|X@tXG1d7W0i>ke7CeBh@akAUmOmOS0kx6o=G48rSq1uX_7)}lG@Dw}o0HVtG96sz%PM`y@-T1-6ful*#l6;9Oa+u}?Dag(hTMIYgWVxC zxdpbn1-UJqG;_^~bKM3zBec6YjKdngXgXW};D|%Kxl_EU@`#Q`~?jCPtqJsNJVZO&2#68K9c?l$*+h&r#?s0-Hy15O|LMDk?P8fG;M>GY(sj z*R*uu#+-KHn_5*Edrn{(?1-Jv9-Da@ZXs3ZrHT+>Db23EH0w%~L2y_UTl1Q6zSWSsGq!r>5nbHCsY0ORq zh=ExXUnpU<69?ZI1VT^de;oZMIPx;O`%mo7%k1o**_k(9KXC{!=bYvW{@MpYhy&AE zy`$em+jqqff~Xw2`fRG`I$%bNgV;=gMY;X>s9{)Z9JXbrcIP1Qh}MgT96jSO=u`L- z&jX-p$rz$fg;)|P9R2`eXc+X=Z8{u{IsR{4npT;i zko2cUqTd+`#uEX@Z>qfdXtz3{B`Yq4{rM4 zhGlU0j7A20ekUuzErU)bUFTd-XMuJ}Yj_eFE7~5+ah%5n^@P}9i6CNObSe`Eoif3h z#D?-BgQ19?_2P=~p-a3M-(=P;@z{P-L~gcb-boPlgIsn@D;^pjr zZ1Fvo@pUxPVwj;~bhJEwc$9tG^koX$*+-cs^B=vH8{tEdo6aO``>ogFdl{ChXIIA+ zROQ>;)oa5%FjBJ1?&plWf7#dO2P%L^HI|~9nxZZBzBPx#;j<8j;1f?By?@QZA_&=y z1)jgn1oDbOumIa}3`h&37ZhbFbRftI7@l;?`r$m896I~Vi z6pP%R$t+K*xAhB!h=|;w_A5v5d|B%mH;|HmZi!3XD%|Me(xo->hFc32Av1l8mw>m1biA&lU?K%KfP!HK zghDE)GyWWmMMEGs)|oYM1<_AF_616qdw2b2c4ELkRhhTmELmsIJ!F?W-`ems(4MB5 z&$DblR4*Q$Qk4tDdia`~n!?i&T3iq^X#4vZ^l9a5DiFku1r-`dmmn`Qp~Y9GoRQaQ zs#0#~%H{0q!k#H58rECrP=v5I1eZ~@*Dznk)3CV)fVYk73~>`U3vjh4aXMo+azg{8 zQh<8nO}#>9*R>=Zu6Mk|J6s`SDz?|HYY>1fZ`UDiGU9;{SW-H~>A$*k6Lf3QGgZ8+ z3+B~#2ZDX(+|DbP4+AL_thlz2;{Rh`gA{7>hd@jy@uYiVE)U*1T6@m;KEL&w0s~I( z_pAnn3_EMX&ru~E?8052bc6INLw9c!nH0LacZ;^bCqaJ;zt(u~j=)^}V=wr3fz5>~ zW;kII^a@m8B6+6x%ZdnT{latwjv?LR+y*b_|2010SWJJDpn&0j7#s;F!GZZUA@8#E z^Z}pJj%r|Aw2>*?K7c$~UqplqI;8v#S^(*n+2!)mRVa0gcXcs_AnQP&w9#u#j?pkx zG?NCfDZr|Wnexke#-l-ShtCLPTPsrP5_J6n?A_Z#g^>qwJ}_Oul_M^Dv_9U{GGfG* zK|Yz(5p8%%;>p0wK`R(W*cKO%AMDoSWjpC}cf{6RgKTlxOy5@zB+(>%5ldYxi_xOk7(`ytpvLb4idfreE8U#amUC)x*!F^&aXQoaLq%?)G~1nrF4a zQ)>KAgcVfC_Z{u+@|!skR^u-jwa|x2Z#UQyh2V{EZ#qo2c&GI?MjsQ>(IwY3)Q_vd zX`$&XAi(|+uG{@fFCDpF)=ymTlc!UeGNuRTzNYM|{A=*l?4l5TMZ8$m>%#fQcu@%I z93Uq47t>1qnvrxWx<B!=|qq6Lxr9`uvf8uc!FC8GT9uV>^ zaO~@v)k4TU?y8J^p8+*vuk@YT@4gUFHAl0EiMexLF8#e5a;7zpNGU*lSX26WqrB$t zdz|zJC>Gk(F}y(X5N#O%rN-8ehQG%Qai>eP3_mQ?<=6a$&E*~vsi*Zzt3a+!WL zNk2u0AftrkD>jLfGR>J0A;CJ+a;7Z7>AZ&|%kr?0T+ zgVzNvt4I<%l0|?gD5v*YeedEA4a$$bm%7UZQd%}p1k~o5@&=`sZ`mNR;t`Sk->jfp zhuD0C*P4T>Vkfnjo8m*1V|)2rRlb;d3m_S#0Yzycf@y`#zdpS(-ju!bi-QSBr%<`r zl-&Xith;j_OczyrRhm-W9jX2;GUlcQpc=7}4C#3FprYcATb$}*xAs=1s)duf(5Qi%n2a6*R-!OL?NKNG%6F{Edhj2BaEk?M!hA z*rk%$&`tl@eTiHjJeJ7Sy4b&Fsq%nQ3d8|Cg%J9VHxAm7u9H!iTC88nw%$}$Q$3*l&jq0W37|#;Y97y*ufBmQeo*L{CP^QrjR=~Ua$Xh z0UB+1@1F9lKGPA@**HXO9V&JV6HDzY6rGQX`~BnNti$hB4;N8YeI9D6&JY=j_5Aw5 zxInj>FcsH1y>doty4dc!bq~<)Vf^|3_DgWCm~Dx0W43TMtITGM5nug>5Cqgx{pSm+ z)gnZdw-6#Y+F$>1cj;;G_!)cL^^GjahXddEnbS9P=b2@Ng}u_6(%RB)0X7uv?UFY= z=B8hwZ9OEP?(4LI7wmDjK7v(t>VPpa({cfTZQ6JN9}Bsu@omD&X&R36eN(1N(A3`s zyq=W617{IwApcnf!lR{lg^gaOL`m*KoV9TQ29d`g;z03#Wr5}_A=nbHtdTWo`k(MG z3JgK8USQc&#Tc1Mb(s01Hv6X`9p3GoZ)|ZN)lI75x4&pE`)14hCoI)A8Oc-5M1nE%&B1nYaSD3-toaHz$K_ikB(Mnu}2St z7nm}IfK-wcUZI;OvYX(j>>l@j?nx{?GonH$C7BVT5HOq_q*&nxhjAU3FR@#^EWPT+ z4Nsjc1SBL>c+O*qT+tM%a>1Qdk22bkYa!8O7D^g%WcqS28wQw*eWYle*(ufa@I8Hj z>z*QPKcdR;Va5iSoXx1JkVbz9zsPDj_CqcMJ_#FeDrIr_cxm! z{)ijfZ?>XHqi<96DjM2nkB5B{nr966Z`CsIFL59|GqCW<` zug%*S1xPSv_&_||=sKA8^wd(v9YeE<>$#ChhGEx$pVf54%isYD!60L+*AKlmCUA-O zZXh>!&iC7cL>Kz#-(aO_0cxJLm|m>s`l|Kw6P0hdF;@{oMxqDDP-XF^;n%;ZxSz`k zu>SS;)>j-l=aBf6x4CJD;##xnmh8t#whzWIS2RYr07DUXaOVKLekaqAgWS7pqz-cN z*H$R~2sm{)&YU-?9H(wd^owtu$8vU&Hk%L$xO(9jBc3Kb)~jlnXK}FPJHld5 z*=$Xs0}pZG0SsU`z_i0P3{&^=7~kSUu$XS9>ko02M8Bhm_C3rgiNRV#Qx3y_q>#=A zRy4877tmveVbtABI}da50}JJ&{@X41dYqF2RsmA+)h$EoKMlh5m$wWo*Ar`Cqco6b zZqeM2Ic?Hrg|<2at65fKH;r-m0`)8oHr$`zGR7kOu(#AnOo3@x#%B87$K2>(!wJ_T zhCCz9j%k_wF>%4d;Kte1{S$7GkKxl>j#w{*1j8aZ@)K?#Qc2mTh@f-{koBJ>*fSpN ziEHH96MPBx?NhNj=m(#0Djx4ntvmGzH(iDv>l?WXqpe$t4wIel`RvqhDH^`7!92of z0ow2`qhp)ON%6=^i_GsCM<4K9mYJWI`54Q&F??r(;mxAp$6+SQohLuHEa(8^}bC_SX4P9DVWL|EZyHC5v)48Gu5ro|6-p-ODR(g+zzN9E) z2EFkqzBH5eJ<6rxXWCJ22`@FI`6$N%JosZ=K0iZjok`~&<96e}jG5H$IJd7a>#3il z@amc62Sl6upp53tX6_}A8Df3_-g%{&O9+@H*6Z4RuO!uBlQ`J0Ustx7wls75(BHKu zxCO57{&IrTxc=*X^1*-o|M_piKmR>(l8bSbd;2689Kza+nYT(|1jX^ zg`1f`2#3#*|^qP*|I<g_cEI zTeu}EC%N%Jp#~4dLb(vr&I$3=#dPXvt}l4}GpD(1{4}0MlMuFcn!Az+f3t%~7U0^> zaT=b**=rRmx#x0MrU0XO($S>9PB9He9jFEFq{i=1b7q$L!&Mn49iwDPM~pLzyr|P#_nJE zc@N2uS|Z1TJ{k5R(^h znDzfKpPNnFzvT1?k7alL4>Q|pj(5${#uD1+D|i%U)7QR&=S4RC;VUj0Kf+n=t3atr zDwP$4>AAp)FQK>3au)Q5p5yZIbMqXR!!Hp#pP(7-@UY0HGuzSa68d60m)Yk@5sF%t zq&1*wkR1UWpSy}&Yv(3lfYQ!$B{JDl)cQ6224RehM^tv}QhMfVZa=?AS+OP=>8pdj2Mn| z(a*l)h7JHh0D?sq?R^meGtOOIH0vTa#g)m|r3R7U zO4-KWuSfj^kch_RV(T+vSqW{p$Z3185KjZ&_m@5H_GcM){^cSk_9~RySBj?Q)(NzC z2R8XEn%cod`aX-2tM3aTl_V7fOYmd>UMBjLzd#~hjtUXiV`_H9G56CZlG<|NG>-+g z$HUZ)+HkK7X}3B!1G1wq*t}S``anbFO*-fjm%xSpL>F9wIP)BR_Y$WJStZs7Y<$~~ z=>%|m2lx*-NoFrcrk73E@jPw2#68Qe78_rnIX@uyX#y?!fg8x3e2i}W0UpMkO4{-R z7wkDv!Q$LE(qDeyh6K(OZE%FJ_9WZD8bY8M^p^dI!YdUx+qTN;-un^mzlikO z?&KUvMan8&et;=0PakMDX>G+xc^|J&6V|89b8lTMLQC5Ek~n%Eui@Fc<{SSb+JW2k z6Bo?CEVj<3H9v7f;!A*IG%r*4SgOvJmpadE<;`O^8TD8vY&2Nt`wQOqZ;AIFnR6!f zzYLe7Y#Mo)8z6T9)~GBe58*k^VC%%z#kBY`7ZEEeCmn34J@B;06LU4s{W=PD+>gdV>N9tG_FYh0EqXr+gw=(KBGsOKwUler3!T`yeYG^HCr z8q+hOd571m<>WRKZz+gI%kAa3j|*ntIbpp!ZY0WR%gx@iAOv|wx0xcPPcNNGcVFj<;m@YL zfn7sJhu+`@Br;e&)53%kEZn~;Z!4+xR+?-4YVvk0>J6tsH%yV8%4_#)_d^8&X`*Z< zedh+(FG#|>8QTVaz*PJhV{miH$=Me7p}y^psdQX zKSO1|a>*k%vzD{0+Ifa!cPqJ)<~&R0qM{hjj>QUu7o5n$Q-_(9y(xB5v7$=6c~^`4 zm`u}B=w7(!$A_vA$PpERRz?a|T#wEQa zI=Dqho7q(8uHWl=b+8-)aC2VA+aiKHujUIPg7u@0o_38n--S8{5-r^<$W~L$CKRuM(RIVUseEGMsHfH8Wn|HkFUY!z*Jjh@Qd1AYxVwZnIJq-Gabfu&H_*qiqIi&L}akNFEn-kG%cFGvqFX$5`)i*c|;OKdvq z>e5%x+f#pW3wu|K8{g1w$zy8MYKurS{$`Q~o%c645=HE?CNGY zOR!AX$fJUsJKQ{czypLjF_XK&w1AF_uHT6!9!4& z4r`1ERM|VxRR%H(Zk}?F8{~oX%6VAg%kDvhm`UHh$Ax>#6p?G^S7a-4=g{VR+yM5C zzwU8QbK6Av#C*u00t$!2aoPon%LC;&AV@V>O_SwE?tjL5kfkw(hMFo?kh8PO|tig3fv zTyQC~_zTv=$a(6{T_Sx~M*1mdLiV;0=vWNp3<^+xuuo19x zB#>>C$2c-nHizPgw2F3L6-oJCQo_Yt79Tf@*tytX#boC35nZ-84!G$3z`Z;9GS)R z0rj2Je5JS0>(XcUF21vN6z|sAMjJhd#`k@^K7HbSkKw68m>%H^iP7HSNs@wU#RWrsTK6jE zHfDU$^7P9b%j*S3YfUetzj>0g{p<=`USgCSDO76mraIl*bn{pLa`~NDra>s2Z_0NR z8ZZ#RuM7dkGNFHXk$6`c2YBnB{1T7q^AZmFK}%~tM$>wck^bOl0lQclwy&Wzylu!W zq_6iP3fWp}?L}&Qw~Ll)Hzf4@aCoC#q%*w91~!3LyonAae0<1CSs;DMhYT2Cy13m>dVL?bLyDC{r=0@%Em)+f3_oIxQ#DpFY8x!S% zcf!fFCiQyQ5Vy$cb;DbsWN<*vM8>Vy#JGH+b4%zBH3`v32R=#gQ~q{W*>u+y81>e1TYz(p zd*e}hQBC$oegbwR^f6l8*83aGe?S@gw{<&yFdP~6$UyMq?hkiAhl%jXf-OZ0{ku+(6hNQ{lv|2-Albggg zfA6;0Zs#<@VW8zp?e}x4dKzBF416|s*Za<7cXSplysshAG9MZhf^YiMSs_G(wDL>{ zc@iR^GlZn@N7$i9+m|RI1gG>RbJCAMdW1qx+T~muBOUdhd`U=o~Wuas=_o+z7g^~!r zqlf@__B1nWTAEVr$3*&KD4BzXeHTiyL-dZ@(BfrDdkDO;B3R-8M+Ac&FxaotQCbo@ z!tlQ9sM#U4r3aCI^&RK#e@>uy$92}yg_HU~{qF0#gDPWZZ9QRAZ+)dI+7BFIxRy!M=) z+`uYa5J{5zw*IrKg;xZh_#v)U-6pN-Ga{{z#Ei&jMFK{@e{nc|vL6|*kd6#Jlb#nYUzj8X z@qE#bFvO@Q`jeF`Cg!b1pab_Oqj78C0I~u~iCqK8liar=)g+Kbp5NhU#^ZCZCJ-&2 zy`MnFAUJal{fqr$wa%egiR4Z1ORQ9qjuredk$f9reRYm`<8rVyC^qxV^V`A$Cykw_ z3_;RGnInpuw9{zaFo!ymNT@s5ASk9+G6@etetCEnF_+2-Y%0GIyefVap$_;#q@$9_ zAi>%+r@f=O(-}R-kWSYnlOclsW9g0|VvciA-RH?R{5gUHXRb26b|Fh=X7aj%c4DkzXCYHJ!08k{qy zrl4MK%c$LnD?P3<>Id4Ex~|60q2D}0_VAN3K>+0`AReb!&_!>jknn(Xd507E-!J~y zaPjoo6RrAhuhE!P65_WX3WE8ySx*C_qh4kmIHzuED)EwmROY0SAsFMWX$aD}0tqV} z+i3-TA)Qz;IpKrJG!H#Dr{bze*9;~qwcc$`Fnqm@JGa%0kS4jz4erT&E)q`+CYjtd zk^VlI7+|EBF@)SA&L3yfNkd7H?{#t7A|Rm~iF@bIB7Jr!$>nZ{^yEs2r>`1 z)3Zoj$iE~%_gce=>Uy%@Uzsho53YL$+2CpKk)*!&O%a2*BkfD3)wg%iFGqsJvgq$4 zNwsE}5>aHQxrOrtE+4TnqSLeek+u+yX-c}NV-z`#udNzQLhq@%2#wz<5)7A>x7sxmc+`2QQvVyue`fM<$Z(7^y{*z-TIHa4tFTB4}4QXZ4$TB*?Rxxr%@o z!t%&Ke0ORdIm0G8ZZb|4S#t zy~Zp)?bFIE34M@B6$uHqv5&6QK?;sy;f(CV4_N^$O_L7uniiKdn3TuE!tRiB$2ax4 z@b*JtP#(ms{OyN!yXj5E4xtxp`I+ur5tVs#&f~$~c#d;;{Hn z&LyQ$qokl!2kh}|BH_V-0bSyK;c-UNLv~9(HAqg}MV~5wd_IbPT7azrIi3p1XrOaT zV80c2#Tsn4h{=KNj7c;&aJlb3nE^IYNM>Vb+6qY`sGFZhB7qfAr}BhDgd_$+s7jkh z!cb%ep5ezhkA&lA`#dsade82~It49P&y^`$x$>|7z4iZh#SFdwzKo{rA&KA9!Sji} z*F;4@mwb9zMH?-iPhP-BFVBax?G)*B1Ib6ssKY>3={!_+cNJ2eY?1AUH=wWznVDAK z!2tDass)}ZI-!WDK)?%%h?c|U`Xclvi|#5S{Xrn*Rn=Ma`yvvOfWeKnvCRdqq8-v; zOV|Hrldm6DF)0Z&4E{m0!8~~F^`Pdm@(Y%xnIPxZ#Uw7oR}~|h4#xGr7%Npq@wq3L z%BXq?iD0wy=n@h}oXJ1Xc}qz4Lp&4Xcwh-hc<2tGEdE$R9^pV3{hlJLxG~rao+7DY z6mzsf9zXZ{rpuC1__QRX(XOXRL;&J;-J^|ZG6bOouJ@PFx%w|9v)Ie8E(K+4seLI4 zR*w;t3RrVZXQc`}+}&W@Xp|SAlyfOKK{O3qMt<}kBMKg-)M6(2BL)@>j(R;!UUC5- zNh^NCk(C2mXh#-)6%x5$pU;eeL2YqicuM(8*Hzjy7Gsm z%0_&)dN~P^HPTO(6HyhTdKKx}YGmts={O&ys`t`ZRd7)*3jMO23{}Rc%GLYE3S&bW zC0diLca4*2#xrCJ>t)q5q;L2bQR}ERRV5rW<6AlIQ{8Vhg?FHaxh)M%^E%G%268t& z{|w32qeVJbi>Cg4AO0)Ml#%nlGH;_l9lL_W;k#9GAzNRWhK9(Pu$ zMdQ#Nv-#I~hr)mlh=?-u=l-)eCRfndl_ZaK@5PlQjQv)xB-*}N^73LZGHEKx*f;iY zJ)bztl{M1uR}!Vy7;y+1ZjYh&R+5OYcz9AR@r6YhN#W5F8&I|#a^4s@q2VA?W?)z{ zpMwOLMN6N9c$GyPp2O0Pr)Qr7>15HrpCg5s%UP?Wxq5yTiDON%tpa7^_p?=GLZ30B zX`nkY`5{ve3EKPLu*Km*eKt9raU;a@R~z+B{FVAWT5tF_mNk`sDlO_7oqejqS483k7V?(8aQav6}?8z$M zF7?^6rY77nqx8>W@9Hf2*jkc+0sYTfh)>vH)`BQ1=;v!Cf)QRKkKty)OOkN+!b{{` z)|0;ffdb2)j`tYYmrrWc3C8EHp|Bw(MGb5~rT{%j69V$bfZ3$7-Ft4%?-FUF$jmIDBNZSWhhY`FuU8z)T9h$3J%O9H2V> ziMA|3RgtJVUe6uhk4U*=#H|{SLyjN7^r?;ylL@}%H`ttPdWF0-2v39^``ueH?T59U znD$TH%P{Tr*thUv1s-d5?DuRg>vxDWV(x8 zWzkdRWD2grUd0lEHs)3A=?1#-RWcDbFTM({XrN*T^)NhK_rktQKY{{w$FRk(kKNf%KKv$x^;V(J`p5`*ku-#@~~7P?}Rge&HWc z6(rL~E6I}q4BhOYq+fjbukOkKz8Z@eDTVx!RgOqEW1JiIsUj~QEV&;mNw_>kb*s-1 z!PBif{HM@qh=Jstn|`Iin@AKfd^nws+yp_{pT4jO-80Z#n{ZU9rp=p3PQQOCrXpEY z)l1;gB&`Sb_eOk(sKA{Mn(O2CkQNBOH1iD-4$x!4qgd9m2@QJk4N^IC0*fk4-NQDS z9=gzKm&Zp$?R^*^Myh>dr8zC8r%ZLS3ZOCY`$bCWRJ{5?w;GnLisqtWxEt&_MDzrC<%zB>0sqrml1OEWsy^d{M}6>qrS0qZZ1eU8=d;rrQ)nC|{d%QiKwl1pqKp<$Y28&) zGSqu8>&&rlx+~J@c}fPTlT{`FBSfi~=*>F^xC!pt<+;M(0vx-lpzuzn&sC9Z{2Z+! zQ3I1z&BVCXc$o7stwC15nZ`dC;wbzNPXUIDX_O_Njb}7jR_&$JW#(2>?G{p`eK6c( zEU{^Lj9I_{TXVW&4XIqH6=ilpFNN~b~cT*plD)u^rEKIdV{=ZXQ zolH~SB4b@FOkzg(LMlnnnRU8I_T2)82q9pg3;b0pJ#&Z9nzzUte@5>Q5cp7}Yywrk zO`=qcx`cF7zLXHCB1Khob?bB?s4#*|mo;wleEK}2N?fSi!?#`_^&4~xWXRg-xQ1o@J8uwl=k z>)#<}*<2d?U-D)6a1~gIG3ro8o_wy!4=!iQg+Tjpx0u;h8QvPjd##L^}6f5*7&0@i^zZ6XC(?Ry_}X0Qz?)(l_viY(8y#7Yc_g`qjHI z#Lc1#Gnp}1zdyezGS*TQ8QjuT6#Mc|-E9Fpj=tqf&*hLOKd$zGFA0L1lQusyHfw$ z#7uLyd6l-cnBJ`>Bm5Sj!xxYEJD;9dmC^2j+}0B^73XtyI?4Y=fd-w^X&zBY*1Dk^IsMd9_yF!bN*jamEiC*pZA&@xt8GOIDI3 zR>;jS`8R#gP|r1N^E+44w_uqnH2{o0ZaeAg;zZJb7f?E7J9(7xW0KZZ{sv0?cRLvt zcu!u%2|-e&P=KZQFzM>o?Kt=>#SUrXH1}-Y)@$9(oGl(7T(Sc!aVg!pgUnDa1;5Jg zwbg2yeqj+9rZ8+;Z|_bdCboeEFI8c&H+!~h8zWTBy#84F`t>*n3TdOIRW{s4-Uhi` zu#q6yHu|TH{KT(R7ObEhH6*t8_wuT>Ce@@Z%zY|1ovL?|*u0^GEhF44goo(bBzJQT z!6k1YUOktCaS3Ug3AT8uA3Rv#EF*fZEX2>5Hu$tmHzHD7pJ5r{XLEOqhzcvDn|ER( z&7v1~;_SSQa=XZG=z^vmVBWzW?SeEph~C~sGTFVI?B3AbC^v}C*-eJAdscRD+itS# zp8_F!$gF>ADBDARcmV#i=za2%Uza=qSQo~IHKW%$FWpb9p!eTrCYw6N2V}7<@Lx_- zr5NfyO|7e*L*J++dtG4NF6i_w`I-$4Yd%}+yy@aV4|v6-Nw>o)&sFvC#(N1$feMMI_OM?_p{%&g)ocAH#XTA9mi6HvGA86D^BxlSbMYB-9 zT9^h{)zv_V!_IMn}Q}B`iO)=3wimCfU-sO(nqAi>a^^58^0eq|Y8CV>K_T5NrfBOD$~X z-Z&jekqhv(D^ryj>4k$Ns6YEpWr;(uzN{x;2OCluw!nnjruKy7+BM6|@E;{HiiQq2-Je1BlOjH1ZEW6Btw;;r^6LYo>uQdC&neRIUg1!K4-!Y!x zt`wlySE9^ zg7>*MAALOO){(ng_gvXZZyzSw(glhuVH=;-mOl}vyZP$I%zQV?_-N+PAd$Nxj_o9l zCRI|H=TprYnMZ$wsdj{H*$6j=BshYT{u0B1d#9l!+`~IZAx~i|a_;uMn)t=DT8~Q+2l>veoW*8pS!0s%Qm|9`-DlihbP>&-nrZK z!CmIbaYYFOlH*jANyU)R9)$dsrO;C!lX`k~YOU;!=e$+4BLb%5bX2L(rg{4aX zAi+8Wc3e?LR|038ZSk1SqEEo`QmFkCGSf3fg^9qd$Qwv>&>Q#4A9tM8>?b{;NRM>5 z*)tRZsYszy8%Vylp+5-ti|r%J(rJAInd;NgQKa0`dhv$e)lRBzBr&BKiZo#RJDONy zw=Q~ULk+pv*5r5Wmu^k(W0%3VEXawwP8HvyT4h&yd6`L7Rc)$ge$Lf+y{Z#H#`Sr& z%&J2330^tVXG^2!B6p;$Y0HQf7xjmHQ+r{#@cf&DxpU>-4UJ(w2i*>qhQEBL`^`96 z$9h%m7ZJ_X!@u>v*y6{$kg6>Oe(M&+m%XB@T4qY!VrT99y2`$F3rysuW+{59-7W~{ z4#)(JvfSPLPQw;E;76ww%Nw7T*Eia#YikDr3j)qEfP<*1b~GixP=bEW{X;v+seS64 z_B6tljDUT!wN`a(Nv!c-9|oFeO&|4f_d}A|vERC{7zN?-L3~9BwU;RHoda7M-dzj0 z1tug4eOouE8i7B=*~?XC?MSn2c~Ox6Rp07YA*2}N=Wp>ryAg-HFII`Gt3DO4smA+U z?NxhV-hSWe*Hsro0eh6`4*vl-9k~nMP4QDQ&2K2<`PQf9i5pdo%jn-t;2Y_5_z@z; zRIu{|w223J)FmK7AR&F;VNzYmZdYuC{PRYw!`KdsKV5SK`|~pT_7M{4wMo^PF0Xz= zMNb?dSw!#MPW?V5v99y#uun;G&{4&o!+a``CzOi z4{0q)@^p$yr$gE-={S)>-#JQxAjOZBwYkd@hTl$Aw7i4;?)XtMTxDURT>N-_YL4Sm zztf!H+t0iDJ(XcJ4LwHIMYvKA^ClyrUD0u2LRp}qeW|^#a*fsBZ4< zQ)$XwRsH`yeeP(lBd*PL3&dqew2@F!Zf%q<(~v2>4$9yv*#Vdc|Lktk)4c?K`k6VpORoR$&Q zF#7B%5+i?KB{Z+u=C_XbEP5rrid$AJ;%j?Pk+Hos3g#Xvg3wh$?jHqvR2ldTkvH=i zuQtIgDwX>qvrsdZ2FwxyJrT=0tXiY!lqoa|*Eyc5_)tY(L(FmChlY-4L#Jj#w^vn@ zyJP?7Wg6Q5Gcw4xr%V+;)El>+`i#sK^p`u0k!*^Ue|OUFzaUC_>obxSVVH8O<#Avq z54$uGP?yeE(Kt-X9#3QRDCuO(F6rZ+laZX^2Cc@gOhYe!PC~ekRMg`O@{Wgf*sY3v zDq8aeiRJXi>%PK08K>Vvm$#8eH5!F&H71NnHqCt1>Y7~oq4$-=m(v$_;`Ptl$QZ$C z>1^gDI>RJ~pCMtn??dx0GkWhBd*y2@VKqV*m?<_LDajvdWK^gVs-d|%b| zX!E000~%gwFz;{J9-O!FLc>ogMRXq_T)fn~18v)UhRpB*RRt?Ed0~QGM(>;`q&{Uqv^ZCH=SqDth273GQQ% zDIpPHbbwxCbyLzG&ys;L7vx(!rz3FQ(0GusXoT8+CpSg{dG#e+x%z^Lt6iARjB`Ys ztdYWZ^%4MpG^Eg;cq3-Q7acwgQBbeTV1d2t5gV3D9j|=MBjbi(EFL68ZFzUL5+s@Pu zZJYKq5wZPqiR-*K0ECtrB&Ldk_f zfw~PUO)9$$TvYA%wo(M!&=^-^~o^lC)aR*VfM_e;ERTy_pef) zmpNkcYEL$7*YK9&JbJdB1P5DVI)-`|ysxT}MJp>BK-PI%{4c1=Z&x>}sBoSHr|whT zgE*8~m{$mv8MCoSTevXGu>1m;l=KB-G>aaCYct$(5vZF6*DkOSJ1Bb2d7|LJQ&*e^ zJ!xpwdGffoMlp4{r;v$3p?A*{1JV0+(D`4JN8FoK9q+?$`fFm>GFoO1Okw+Q_Q0IF zDZeHTG~MTkqTqo}WKMnR8!}g+Q55WBoGH(I(?&F^bq6NekAQZ+Ara)ye! zH5Z6Ki@U4*maOAm3Z=o{k%3YALmeK^c3%pYDWCZEQUO4-+?q0Y2Pbo6xEIBFV<7FH zLRVm*E50LP>atLq+!kB@cfH5s2OU18k%OVB6oU2pI%w^8B+`|8LQ?ZtPhNy;X!&Fz zTmOR=QNF3s3~}}f>v`UyW9r?q#{gH?V^5Ow!P2`` z#I8{=F=T9T(R$?K3^aWsu{^BbdLIp)@;##K4UHFp5UYTr;XlN-^>Ja`>N`#58~?%~ zc3xu#Ko^N(Xu;&$WIC>f>E)yy^}zQ;Q~H2nCJOoXy$ZyvRDS(T>rqu(E?0RX;RH~I zj2RrTFs{f>%Yc(~RdywCOPH;9>oFDlMD_3f*&GN!E@A%=TvLAI3oNwXEY3#7Mk3(GLi^0it$)_+Jjc#bfLcm$)jS6U%+u{p|d}=H# zdWM2-wuuB@0+YjU<|UHs@4PNg2-kwo34Mx&6k_4hmoJf7eum?>(LGZtn!MY)8ijwm zMEZ|rgDZ@}J&adcV~o9~`ieX+LuWs#a^waymtkDzLdq|*^=@j^vhghWvl%H@YvQ+_ zY!mz=LqwavM)ELS_ye4)Fiw>}kciZys-|4;{bjc@0`Pu&MiV5!Z?#wC=QAEmi?gt& znnOE{s75tNs>X>}Jd!T)_a8|}@1DjAK8GG>eVpej3PH^Qur-hOHw?rv>7R1++K-SG^$Y&YtR9cNUAZzE z;v~`jNVlu|pc_L7dT(?qK)u4p)2e_U`(BeG4Xf-O3Q{gg`Egwz-PIN zO|~NCjr8h&@h|oHnT*KXtI)rSTQ8sK2KU6*OnRf2R+-=HpDh=VC5bu6V`dDG6k^dL zp+pdJ{<&h*wDD)6PiteXt=C(8v`fL}gC<7CCP$_xL@w%=dq!38nJV&?Vqxp?w?a?z zV>7mHtM@T2kklU)U!t==qxoN{Xw-EwmCb1BbrP&NtFm~XwqyYP&3gSDgS3&^&td&s zhi21x^&CBWo%Hu_S6Ons@dR*>l^IH>^Bh&&AiC1?Docikblbf$!_yc*jJf?>GDN_aLisG;H_pcsiYjR%%~jFH8zdPKiy3NlDuF5R z-VM0JBb4nI7;x3}$zO;F-Sqayyc4tNtH0oYD$?D*kRbzzvf&sUF?&mtR_*o<7bdD< zY%u9o-!?`=AJbA*A!(T;OJ-*f6@SHnH;AVEO8N%D(xrFV-;9z2Ukz+^Ld)SkWh>~D zzmg;rv;0bQ{5y*3EwuSp5~T=M3qkOEy$fHhF2)Qh-c)o1Q2r)D8@AM?--Oo-x8Mq0 z&`IJvI}|(Q?)Go#mQIqS(WnK_j1`IsQJq__tdB8e_ai>0_1R}_(Ad$-ouq%Mm0oKu ztk1k4Frzaw=18FPw!Diz5SLTA=Q!)9-FSWK+P@yGeDpI~msA+);x$-L>^eHrwYJ#* zI$h|4vKaC)5lIo+%80P*@9E}ib@RhkCN0d|nu10N?ki|7`o=Bdhb(tv1E%XjZpQQ) z#enqLWOa(_8(i0bTzH5v3;)qu96uNC41HM8!qxq#})ztG(G6iV`3l=Cg8vPbjNf5J31L=}K;rqOTuKSaO z^!Y_;<4j|uGZ5RJ=!bujVr{ZIzU8W~OCM8te7L5MLkzHpA%NV>{VRhd*%{JBMo0dl zZ0_uN)l%U9KbxB_tVi*LM$~kXCve15{YA1lylVK1JkcMm{o37e>PNV=_B43QHXG+S z649L8J^~-OGT9V;>j(>-WYyNm{w7&67-qhwWA2bdW~-sq@WZ+T)89Z!?;r>fkqvjq z7~cwcQ=nk6xE(*>-H}Dp?!rSci7vlOUh^KL9>c}A%wjPR!aYQjuuj|~y94JaZhh}@ zX~19r+g*Bca68ulKg2ut5cBeZNR{`=GhUCV_v_ay>?w59eS|eRk9|k~x=+R+xqD_e zc~3UE?x$`z2|;7%E8_>?XQ+%1@^G5J(+|8tXUX^sK1JQ}2(`%grTKx1OHn^Su)Vb4 zhpJm*v2VpQa%0pFz>YMs8&So+jSCcxs2_0bb+8*kc}lS_LcrUiet^)`#%@i+OGV0u zURqb|Yu`vqIDRoKWbGXPH1qix&+~(mJ(Ue7w8&C>-0w=ktwwp%lG3tq@^+mmTEiq_ z7(cd(4JZ7L{lPTh8Uc0zWKTW7^Fz>uKY2bC=9C0?exvReC2BC`xA*wQvZV^;sSc

QgH#>pd-moy!@s~qBmy7znXT6i#j?a7DB>gjz?z7V}A@Zu-?O;o_>wef9j zrJ)qrs_p6YQ!l<88CM`gK}4`>zoRpH@g0a~8tTmt0(Qh<4+OYKI4dN}kv)+6xBOK0$FLE!Gw{8{b5+6Rt-5P!!=GRYr_z>a@>`TA*;gf+>5Ge3* z_<2;|CvgTO{t@^*uM+lU>*a6h&jKGCF2h+=I^Vvf1;EkhG%v)4Ixpuk$>?M^{?}j5 zrK!IB*?uK*`$UDQN;=FqzU*z|b*HX7;>sWgS--k15QlDMQsK+xZ`*j>anixPd1jZ~ z(3?+H&J-*Q+{DVD2mlA zwTIFd`|wGgnUZQPi`MnwM_^3v^x;dhdQNeUuuwDtM-s#O@8~1`Jm60L^BrC6&j+jYFMTIOw}r{Oa(8|U&GKKlZQpvG zU)q>X-}UG7`(&w;!a|3Px12$A?Uz{R9szuqT+&`!8m9wKZOCw}@d9O;fesGfGqNS0 zb;0Lb?owj{MAbIGrj{?*5yRZs)F^KqiT%hjZ#kHfoE`hD&)h!j-Hba%OMIQ7`8Ir{ zIdi|YAvZCeE54)01NbP;P)lzH@GoY<=s8NA8IH(cgk-vyC=_=-!q(O^ipn-(jJZ>I zBI^s2pRxFk({^Fm_BEC^&!m%UEN>0DWL~%9ederC8_0h-Y_z%{M}GM^KEBt+DO%-n z83NOtiw2fo+rwiCT8js+YO*XYMP#cnl48so)a_IoDkfVB<$H71(~h%L?dd^T<2(lp}8NwCBA501wNHbEjLz820r;$$N-l zD*aBu=gZM}eQ1*zc~t!>4WX7OH~o&U=r|>x3h`Rf@>%8^%Mr%A`mf6QM%VV0FZCu|gjZe&>A1e7cj|pmFJf`VKCI1WmJ+rW#75VYp=^to>iXQ{2 zT%zKS%W~)-H6H;6@wl4LP!3ZzY21#dyDtlmdTJ?usUTeWXK2MlYFG1tUiy&S%CHFg zINGA-cfd1gc@Te=IL+;KIl+9oY}`>rrP__A>MK29cnOV+(L|=H%RZG`BB4s_JAN?6 ztkqq)=A=JtVHneYo(R$tkDe#D!uoa$qpcdggBVt|*L@Vix5}UqS{KSka8^S1g!0XO zoPRLADLZaD%svH$^d&8yqj4TewzY0ece@?lUeKKDsPMY7^eQ~!ZxH7zKhhgoUJXv+ z8O9HbvVN3o%iSI8_FH)S(&hqIuEbXx3UT3Ygz@DO z)78t)c-h+&mNV{6CvO^KpFbh11$ixc-s0)C?6^sJjn7D@Svr1#U%GnqBih4o5wo1} zYnLGw-=gDFlChCb#zxL02dU*53_=kmq3Xxg*5c6*__g3}+~Jo5QYFt89Hl}y&zzuh z!g&MO_J`s8;~q2AEb|i$jNp?(2C9P(n9X|;_20g<#@8`ZQ!{|{)A_d8je?Y&(mHpyuNgSx>A>KU#M;XjTYt`!(B1A_F|L)7z3^?C-0({ z_C*ifV231&ZV8lUyS?otcp&uC=W86ge5`T7e0uH07XQ_UVQy#pa$$bQ0_81pv$6Vi zW%Xc-xmWh03-<)rm^FCx%bzU7|*H7(vvipQ52RV)!uFy!yoQ3ou~M#_}QZ zYI(!_O=Gz7U9ZBvZ_7dhs;j9jmhlkxy4F~JtW1rGjy0t^e3;?D5uP^s`2gXh{&i>T znY!e7zM5mG7H9kOvHES|37N3EK6k(W>N~cAnlK=(C*s&366&~tCAkv)gm$<0k~45t50c91+_*$m~XPW1l zvs@pwJ{FvL^8fMm<^fSvZTvVhbIt(6MOlZL%b+kY$mRmBAgCasqNKQxnwp^ClID`7 znFdUzXjC$m2aF1)CP2kxGQb_CLR2h4OWZ0bO3QqO*9tA=`#E>ix9|IYf4@KA&b{~C zvp(l}p7X3F=D_~=pkpR42lXHC`f%5d8NL`r$pTPDv~HN;%QlT9OG5rR4<`NO@h@Wd znWi60fmrpEIabY>Y}U`Jf10_*lE1*D*yR|8j?2t5jszQ?)tU|7MatssmZ82?qK|HJ z#V}*PlagYdpUpOQ0X@uT^W(sLBr{VS83dE1&*I1g&FUXPcx?K~QrMr#$d>Wp=f=SJ z_?0Yh6w!0PoAIN_vh3%*@?v-#^B9xf&v9w*PH?LiN%^STQ09-qqkc4H`|}MI4wfM-#1Tlh5}vWn+5W(8tcvq}+3r)~5GsIq7D5QpcrQ z`&uHC*}gGAfXOu%#sGJ!JKlW4bTZrMGu?E`eMeqN#rpD8%NtKHMFL@tRo>S9*?_Uq z1Y(Gi_NGz)3>Gav4_iIXaz+HdC5h;i9j8TWV3PW;ZZndexWup4HhLg#Qg;GC{QwIa zO9nVT+!XBTv1GPvK07p)^l@E*G*TY+_yKJz*^gt%(*J*m&vfAszcP{NU8UX#9D*`G z7TJ4=I6<_qFB8dlT-4)8RA7s@DR7)Ia2AJ-h2wmdi~*z~(5yKSkgDLHnML-@IFg2h zxwdiS=OE@~KQX2|+?QwcmgD%JmG(`qsx{jB=d{ghwQbL9BVS-=lZc)`O0bUoJBdWe z*0bR8q?&BdcD~5IA5R7jc}cri^VCI6%Fmk7t6$KrD|Ak0UhCA!N zYQCII{A6C4KcyT~#$Ge0>!Jd@c^)`JM+)mnA(5KQZ&Iv8UUH-^?XUCZ03XbZTIHT; z5ZQz$NFQv6#ZQod1DE`ed)~WCKUs>LHCZ{7hp1jq4YgaWYsV$j+){GwtfI}RjZ+~m zbbAW>;tBFhV1^ebgb2ux-Wxh7*jhbgn#}cM8ar*N{+XYru<29C1f9V{e2l$@stoR8 z$tQM1k?AI~nki(|=*;k+)Tb4K*b)BIQPqU_2}GASArUFQqPzwq1gUo;iNc+n!3*)f zBj_h2;Z%TW4DZsf5PEg>R#*mgupv`HBcEpSR1!_{+v-(pbSfD=G)5YgK^j%&ngyyZ< z_79+@xZy7Jvh=jGx)~%~Z#bs4mOR~JSaDWm?(cnaq-)0!?LYD25iN6_Nft%^mseo= zd_>yyf=yO&O#Nc*paWi}uvrUWSX9IVJeroxs(+gy$*n<_#~Npn33Ejstj<=?i3QuV zRok^Z(*9DH1E18X&j|IeX`A!4b)VI#n_SPGuT%H$-S)b+^9}9Ko{RqUOvrsxyLD%b z6(?E5C-m)@dg&NBOFPUkpTX%C29$csluK-R8tE5kNV%lG_rM(HrQZDjC}Xd1Hgg1u zMFlBB2nu=_CS79HX{7&1!-Pw`)akn@^-P4TWw5<6-hfADlJrj1jdxG!TstEF@y?QX ziS>Ds_$n+3mssqRBm(Th(kICVTz-6#Op+I9S>!Ad43Q(7J&UZ7o3!lgEHYERQ_F&8 zlWFp|v~2xsGML|2&L*Ys;F>ar4B;-|ug)O@;Ea554jC?gTg!f%L*Dki089F5A6)M@ zRM8(k+YcE&lcy#C)x7%@iRaaQ{}kEcl-bpqqAEb8&(0+}_YP5eeXZlON<`uE?MV0u zq~@Kuq_0cngRjhC1Jgd?R=!`%C3-O4*XNSYC)k6d7#;^lQO77N6;-=He=`q!qux%z z#u|=sYdcQ6&l!GNXv%JC&B%s zs`h)ue8oV!#1zP59Rrq;c?_e9@QE?gY*jJ&=?%Yqk> zEP1Jxy|I9d^iSckJMODfVAfuj-SBF4zZBFMc`C6sK$m}LNY!0-V*yzWs_|4hc>$M} zbQ0zJfwr!x#GK(^4uBn=`wvseZ~@`v-9@J!w;n~iH( zAKp*On{`&2Kox)c5`W7DX3|@>F@wY_I<9G0T?WyK9R~-RPA@3Zn+={;n_#mIYO(oS zT!*xMsAYd-kVGKq)z7d|3xO(^vv~_KUprXdLNZ#uu8o~q$d5K!_OFGcLN>pqXc3?j zY-~d&VJJL53;f?lTJ~lZDVCRMS^vf0VR21cOhVNaT4R7Wa`lvJ+XFmqh^LY-&8dF_ zve(4~2GOi_F$q-e(OyEzCnj4$7RmQ&+2SSS2~C-H^5%qD@m9} zTQBke1^7Zx#DAnMKp($aiZtq#TFbozoN$_U1AaS~lD_lyYmGtc&T_W9QejEH8FA*U zO7JWFSZh&6R;pJGvjM9uX!FM#Ip!@u?4^=CHv0WtOCywTj>?GQZocV;hq% zH=RnhH=SF`RxFba18*)Pq07|AQa2=ZHVWlZ%9@y*VRz6py7bSd-ip4_cI zCCUC}Bc!BcK-OF@SWg}%)-rexJVwg{3jJIEN9wV6!-jgw7d&?KDx>9$p z$+&8d@$?=;&m?x}88SGnBjRSrGW%qp`y0EOATO|l-wfIQU(YhbZt6=M^vj%fNYeF3 z(}86x4CVQ7v5t?PMPexvmXjkvWm@Rcrx}owqG6hW8}6u2yXPL%7JQDV>6OW}~!x1TvsBfMk#VnGMX zT|xY_tF=PPnoPHhO!w8FqP~_)4_js+q%t;}6E;-4Ehx1{JHm0P$7~+yp#(J^Q(#ZF z*fbX248I9!u|*hmNjGO~9p;Bm-CAs39Ul(nM$*#W9MWzZ(PfLZ>>8}MB~DuBo0XMR zST4(@3WOHZGQ+bZMvi@y{w(q2d+mj1Nf14(Z9b%B?>|ej z^b^`WCR38RlOQ<2B}>f4Ot! zn-^E3t>@Q}zg%Yw24M&7gpkVeDckfMF*y1UHl3GOU1Al_kx81&eZPk6w!=-wFs_A8 zcStC4NRMH{S_q8BvBM|X5}ShW zh?22&lj;T4eZjDHKqSCEkPE%-|7#6nlH*6Xq)%rXo+n9?s1)z|tI8Ge=d++>tdv@cT)G_wS`ef>UXOHUnN3C$&tq9&7xr1%s0CUU zTwpyoIU#7f#Wf+aOj|M7lF&0xmH8yHOm}?OQ}V@g$kuX7Ti5X1nWjva1i__sFg(U8 zTuV=DEvkg7GujpmKf|jcP@rdNXxQvzZvDW$9V!VVT~$q5NTs;CqV%j*cP1iV@XPcW zR2x|FPGR6|*6&5)Iq3=SH3$mqv-!-r1&~6Yi0lZPB)G=8G)_B4`>Sj^|4Oo;$=&ip zGC3#E* z0=Zg_a;44MJSVB)3S|@5(}^2N^s{ilp^@jcsTZ`|xa%xuZLWcf<#AQIO}cL_Pk$*% z2JSS#`j*o^%r)lM7}6U_eNYx8V&h+#^S_kvDWdB*m42;VQ$k-T>zz}(qvXf|go7_0 z>6@36vo=`kjyCHzl1Ta2T6Sk68Og7an{e`!vAj)Cd{_=Ov2y%?^sZqO8GzU*<{$(? zw@a9jLH9G|A7huQ7b;g{pFD}S!9OCs*eDdA`7#+BJlDs1W)O5Qwk95r&ZOU3d?Ts_ z0aUyv4bBUa{DQzej%3GQhOSA*ZoW(=M2}MIjyAVyJBDApx`At0ZIUr4>?o}XvAQFc z`4@SVT3!Ch-G2xPSY&P|Gf}ogzIr}ekqtB;W3OhDWl80pg@OJ&DYM^>14JJ-Y)Abf zbqjI40U7BQxdS`{TIaO*`CmL51NmXQYFgCk3n%*wuq97xDd{nv4$1s?kDhmv4bLF~ z&S<05VTmUqnmnCD3V6ufTtu3;iw63uFk)FQ*#WM}lnVtLBI@Q61P^Mu{|cFgGL5g0U9$b`>CGe_ccq)jt1>g|_bOR| zySHB@Ns7#2P3+rOu}(X^nEMvOgLYa9elu*4^`9rpXitz@W=B_?@%jN>et_V!;5#9>v9|ALSFJ4PonuRPM<9ym|3 zc-Xgd7D2{zbKOrO^{=RFkUL}qDsZ^&h)HHyc~FEUGE*KHOZda(krD2O@Z{Qnn!|m7 z^jDSncMM8q%55Y{n5pIgCPO2I5dkw<;x?|;WL4XUkD|jbnVs22axj|7+X>@w9hP7O zQqz$#*0~)l9E*d`8}-!QS$$p`Vm{ytbw&w|*}B>NP0G5JfZ} zLY+jGnh%v>B6~g`8iTpa?{&;-B76FEu<3JI^Xo)A`jYlh;8I~X;&~snhd8_pkxeTanpUx*Rp9RHMeiMZT#2mYi^zE z)H&Du@dM|OOP;n#liO8O*PLAM^K8F@4sGt!-Uv#R^SaxCJpUbeZreOfs%cd}ffnt+ zfGuq94wB{gf_I^3J***4?I6SB4dpj^_KvqCt}+*r@JRJNxx^;wI>g^*1x$#a`a#_> zVknG_md@FIo`5;tR-dzn`_%cu*k^t9vi5gxq@5r1$8r zGKbb2lUpvcw+l$Xi22@8p8iII*Mh-3fVMf^Iqy@uty?N^!psWp(u4r{j+PxT*eu>& zTUB~pTXWbQuz#z7j6qhIi7e7YG~x~If;n{~at~XoI(!UoPsIP$`U8iJrN3y|LK7M7 zhO|qc-^>e<1f!rMGG;Xq9)R0zCnTfpEO93pFvjwsL-B^z>Gh-3Eq+cHkGgVoPaqUQ zZjw0|JQIJ_PHwWR?$*5(gRExelI*gg{q1tmCf8N9X_<8=wy=Tyx|8e!s1&{h&_o=g zw~0PG_olYsH|p&+izGrsDUwq|EE#0<6|h1x~2?`pZK5Rsxvz#i?>w!S$2H=g;j z#aWgW=VjRcfG6YYY}4kyl;^vx@AdHZDNYbkOCk#Oq#jea%>JQz+XMdP4~{Fox8cj! z%V(+O1ANPIoXCS$rM77iq>__^IPiGG;vr$-G^6!x5{w`fJ#Q1kgxgxa)e8Ql<Qg1Mdw`K@Q3Q&lI2a;4fKD|#m6WtLqLRb5;J+5B%U2AG?{ zmhU2g^o}-D?#15PMFvlM^I-w$Eq7pSwbKCDJKn+RzvE9&$Xl~Q;ZCnI{P3+c@GU`E z{0smGP?Pz_O%6eUZ*hg|_?sCE-kPn=KRC3yg?7v0f4@fzNq4o!DBR=v zx0m!3W|$Uj%e;91tfP<&cNyd{vmCoxsYH-_9nWOL1p*Ley0x41Lw3AF)S*t$A?S`| zUiCsu>iO@J;RZ_$itCQx13{M;BIy7tX@_GwV)giToWEaur;=vwWryD6`xqM!Awrc@G$X15+F;g$@-A|B*P4* zd_;<{m_L6+KEd5PWn?*DeB?2Cy!ZfxO?b7loD9n5PLJk(-1u&uYK2RsV~4g)I&r4( z6EOI9M~kKnI(;3q-3fWNgw4o*1mlNe%1T=IU8Lp4_|~WeKf3?&L&>eWbC(uXIxe{8 z{>!zN3`3@O+k$)Uc~O;)IolR3$aBx>sq4xJ?C@+uD8Kobr7nHog2V1MJxiz{QT70` z(%2C;C0HQp)5_|xi2cIyE67pwbmAU@Afg@<*w#H{bKvJ*x%agCP;vMO&)Xlk!)C3+ zX##Xofc)>d$5kb%s$m26LS2%`ChR52f<-nVj-TLV7RL$fy}e`+UMTi~NiATZ`=EmW zN3f4<=;t6dh3KXst*A53>u}&UpYPFs?p7re;}u>A5n^2yJ5tZZRUVZ@Z;*?|phZ;* z5tGDuva|AnDPGpkZWk^+B+i~wlxz$-S!GkR*_C8aytJ^AQRZ2B6%kux{)Gi?RGd?E z!}(HZwDwSP(VQaGcCt#zYvb6Bv#@4;8kBI=Vae$m*y&1=_K(PFrIB8Rin5{?SI4j+ z`$oZ?wukQzKerFWhx1Wfxk2txX7EBKgr3i+cz!Qgn{W7#o^ z9r&1N-JQjbZKJR~h2}_bz!2QA%O8`zo+(~%;WdUdS?hV|V3WI3X(AI2kkBBN$T=|= z(Hb6U`}jL3Ml(0Z@;ZGjTOJ-wU>Gs`04x|{5a<93B7uF*FRtv)0Vr=ASidSVY>0!1 z5FKMp@ov6(+s0aM^|UFxuBl3UiA~pzsa{7u;9omKKxbIu?3$2T%T+f;-deWQw`x?~pIJL?EIS=cdxjkA(SU)WAM7t!j^ zU20wOUqQHl!kzG6t#y&UD6o>gPJ&pDm}OOotkz0KyKeBRkMS~n_QxL;F^J1WK7o;$ z1B?HJY|Hle=gJ;633Rz-k;6-`q&K zQszyZ>D9~b+hj?xd&-KxY@rVAC0l-e_lqtnOY8Y->YBO@&#hW@r@H3gYgV*v3`&q} z438f@)w*`o_iJN6?us9m6Mf5_i_%m5qr7FdadO)@#f$EeM6t07fa*@$oiX;MR(Q%j!Pt$|vBM7qh#c5FW;E%s~?C{vY$}W6Dy0 zF>?TW{U8Z+9OD%kAO`4J%|Q~S{KG4h2PXX2L85g&tl7FVQBYLHF!xW%F@#Y2>Qm5* z7}ohI@ig$v(+NR$qk`P>6`=qjv^I@ zkeh;F9LA9NaPGKY8Y~(MWcmUJQ%PfvetJJd&zJ*qYy5E`z@s3Hra(8yibAR7E*nro zMAz1y?(@Zc^TuvH=$c#4X4a4p@z!HGcX|xMDJ6v3KJv)Gwo46TtOi)Pe%)~MYbHwojQcAsl|al zl5MXg{k)?%q;QyC_d~bO!rx6ZoJx;tSVJuc+F;h}5O}^JEcFoSI~Wd<@~F}w#>=S3 zT2Sk)ZiM;dvt@^pp!z@PjfTf0FEobCmspvMlFha9R2lo=5Q&4gVcQ|%tFG1v@^T6v zQR`*653WckxqbARNFDPyOp*vZWpr%rVWJtp{S9-4-BSP2`vAO=d56IEPT!&c3c+(L zG722m6rag+s@E~|VF;myvNMOtlicYf=m>dhE}W9COE%%sWW-B9xoiUyZ9)vIVVr^( zLw4e{m$NlqJwaAFT(rVUqI@J;GKM$;;Ow)9@^+xY9^wg#q)vJrC6YVTu%l!cMz-Q8 z8SGrGnN~{5NxF_z93`QUc7jDl#-$A~5@vvp*vC%k7;93Qoq`m#DVKs|MONzP1v^cP2o&Kz}Hwwk?pjQGb`@<(zq zn5)jC4xVEK4+nkeF}dNjk;mkb0{2od1#T%dstwzDDRbc4b~qNiFq`bgF*4p`gtX`? z%fA4K7$$$7aGboworqeGlb3y>#T>ocfun;C9CyoHJragBr7>d1s*!BP2@>x%QZ(vA zB!PjTYV>T2WyepzDmISYIYCDB8O3W}4OsCxYP%UzI$9K5Vug<9;wpTkBUN%8d4jjH zyAJj?W7wHG(BydbppK|@2@k(4?00iw=~#R>d9o!luA-kr7zfpp=YhCBswW2i`Pq83 zsACEn3E;QEHhbTX+DIUGziG4K;C7NZeMScG*CRe7eKjXE-L72&>(y^QFsek8N~i9= zpLXhg)k(JUGhz@PN~0s;#j0Z^pOL5JMLz8QXAo`T`xT#)z=3c~Plxk-Ah-IfCGFwS z1>?k$TMOHtiMA(Q9*)pmE+62Y$ktxRICHjpV{2oZp&aPE@7tl$!-!f$D3#(th& zt!bAhbt}i*s_&k{BT+nPAo+Hb@Wx4^#`c0=w`)DtwelpCtXPm+Cm|uzF|m>Ci9{TV zz+W)7qvB+tDu4sOH9QG?;eqP-;$H(&yp4Lj{@hac@tKncIU{^%Z+!kIkWmOshA zWGy^{9z8EOjxc6CX}D?`qBHy=_gSVccOJgM9b@FabU~8vL=ZVUrb<7d;kz*4G?_B$ zI54)cl^C7c@@sin@ljcnD3n`68;f5uhbGo6^T5Dd92(`#4c^v>L>}R2c_JWh|7oI+ zmw7K;oi}S@0mh7~8wyScJaL3lPJU_HmaYcfGi0!b4f|78C)We_0G?Bi3 zl7C@fk}wJH(6>To(%%ufzbg(gx>b>69%qP3)~++2dZ2D~%!+o3N_ZtIVRKZ%tLYf*)Mkj}b?oJ4vT!1xGen9J>NMv22^XhK0E-^ji4D)POQ0jTQyCrpT@#k z$V;Q9bINAlhRmd$Rtu4~p13IRDO}zMeWPMErP>^X% zbJ5o%A_y>ry@N0ws0uFN#t>35<~egvWhz41 z5FzI3q+Hm}eM6E}nISRAfm%!I=P>O>GSC}EDiOOUqvWPqbdmV3%m5vmcM*0cPqB>` zA$(6^$1mDx)PPo^=2MW=3ZENX*F3zw*Gh)*`%#xj0Q<9*xIexLzx4PfO8Vjw83wEi zmTcc8a+y=6yvrn(ziGHkqWU3Fj|bSM0n%iqS8J|{u*^y+R|*4a=SaY~#qi*M{THn7 z6-bX$*rqEafuoK3E5yg+Q4opZ%f;3fRZ2U3J)!xSBt7MELf)Kd!-M;gx zoy;G8cx}5%#`40!*GMA2F26>`AYg~kYf0~vUhP>~?OBW4vu?I${bu||HqB{;vGH%U zL6Ce%oH?7dJ}LIA+jr`H6UU5Md+$$uZ=a~%UTIxa9Y}&b-SnS5NHaU>dyBp?{vW*3 z(APoVyKk2MMgAbx|Fc)3dVBjGY5L6fn!c}xJ}YaQ(`u!ULssByeKx;eob*>u6iS8; zGVzjGgA=Cp^_Z5m7{#`@I_w*pC+e?tv=ypM9ibNiFn zubw<8PdeX|BzL&h3;lP7+)RZTH&1vyM9Jes*#0&p^pXjE+Ow8C+W11BgwjDA7y5ih7J1C&+nm3GKF(Y!05;j{-;q&r z90bmON0QyZQBOb#p|7C58iNI@>GwSj5H9ohXPka^&Sw+bVCeKTd!da??bWd_3VuuN zCDi7w>RiAsw2@FClm~5)5qGngcG6#)&cB4W9rqn_YpM6>D2;-UBo-SXr=4iE8D5Cu zEJ;@$#mzvL8suTfU{-uBzo%tw?PR`eAsh1pB+Uz1?hoMi7P0alNQA=hN))?@d$>bI z?fQ`%07$3m*ufvk7ZMfgfIKgSz1>0jf!fD@UQYcJ>uZyfkC-?oO{q zk>7tN38K!sc^@YzLLb4!T+*o9#y&}_C=IQLYgOuXa)wvg=LXRvOMJu?h4oC1HC&JI zWTM1O)E`IG!A8O7rhLoQ9(`Yj)GxeSm2FVPT$7po{;1Cq%SOrmUe<5ukbXxa1px-B zoQKM}0lj#Z_>Y2RL;cH+`t>_5N*hD>u-u6oFm=4{!@6&f-QE{qGgz)P8rGV5Sm9y} zq75KW_6uw&QRP>^5FH=&Z@-Y2_;uN@q?%v#H_1wV-FcI=BHPgN-*7_0h~D^(C9iQ-D7@NiKi!Vi#G(3;xwY^E=E`a69*R zGKMPDxoE2NchZNCtsW(KZU6e6Z0&Pg)9Tvl3L&a`#c$>H7{PLkKp4w_Z`0UCOO4 z6_$?Sg6dHP|J~LKv3|vWxAi~I&=!KHT$YPl z6wfJCfT_1SXEq(NI#*NLKa$N|_?0ECwgP zoLzrF`pVv9PCaB}ub%jBMb~$-uHH*sdeR0mQx9zQYBlUc4;k*I@`g(ADPxd*KCOFu z(th!LTSW)UM!h|XhN>oN%A1g#d<2AXlF~a0@J45($M^Bx}>6X#yw;fq^IY;W29l3X;=IvkU;@(?6?XkIDsEzFJ zTo=Am`6f%3(MVMi?J3VSU6mz;vSJzSGjWu9!=7?gS+u+Xc@`cHK1+;})>8202c%Os zP0lY1svUKtZtp9_8~D0TOB&H5OfyF$LTrlAqUPm^N##r-r-6KiLgX~kbBcGZD-Rau zD(I7ZdtAOvb3Mu>F@R>Z7R_iAESDNmUPoY03u=1m}kA2ZDUdUk^CPURtf$ z=aJbgp`iO_HVmy(8S`L>tj8K;9iWfOAkoWIo{|octz`opX;8xRVtFctX1)wp_W9=1=ML;yST%|tCF>yyKwKU9nWomc!T@d$ zGq<6l2Ss`K#uuzI-tod*lwxl?Qh(nQ8X>UOMR~sG-VtSu6p*s3q#Lusdvnf_jzaUj zov5J~_!gD*id;XbvmEQf5}c?$5n^XK7tVw%gt8?~qeLUdkaeiPR&IV~p;~mbh40Oe z#c4vY<5jzyM3R!s;8GGv5>)O)*LziKs&MX<*SZ+P79wQd%_W?^4RNO7oN%V|E4uTB zGZo{wh}s-hk)Qm%%0ZHpRZ0w$?JBVeZLM;3EN$t(M}3Txt`)6iPLN}|f*SHF zJDh1$?-xYO6zl-_Lw>XjR#82Ult57|MMcN=mw9iJ1Dgr*35vW~6E5hbwZ=)VBG+h0 zfzA>GtSCrVc-bz<3u;)siazUsNzn5ZRfmyUg(*C-p0RirIzqW}dED)S=`7oY_I1PQ z{J=1KF(HKm)P5IiH;k{zg~rkp?*O##D$rS+lrI+OK%wKqVfqqTgQFxsF$**hYtbOk zP(Bx(DEQPrcuALeO|NnC&UyI!)525b$P`~5lUXn#Ndc2&Y7TU;mB{d5#|W$Ke%h~I zS^ZqVZx}46(^&-kQ=o>Ko4OK^uzqAL{%gRG!q}kpEF| zuv2@(eRUs0R#uqlgX;|@hu|dN;9VMfNV}&Vk;i;-&7zl^|5KgKC0#u?l+EZ(*Qjf} zPx;jF0=?sU9P41T`&nN+fUt3>*H(v-MY>ZjkA}D&=ypttUf!~{Co5FMl(8q>X`hIs zfF4sx$;EB*hENAST+zioTxFQUh98Cgf^e$7<%!?7oapJq7p3l0=L3vkb9u+)vY@W0 zPJP3v#bsWWA8lL9F1S;DQW4Hcp%QZ=^x2Ztb9=wL@Kne8_}Wf0S{}=T9F>nOzlR)w z`%7TO+uI>2`N7r|i5uPu?t^d(wu!%QVLer7DAt4OW+v_E>2fJmmM;HDNewFQD}XN~uUA8%CM?SnC-P4arU zPQ$acu8%6*@@-GQ-{eYz17^R_dBX+!v|F8vP0ksYst#a?hg7zd-*vwps#h-PX?IR9 z9(6YzYq0vCYXFN-EQSz)XR)D0=|!utI_L)`xz)Ahnxf@wj>&bN%b_&iwl3G*?XE?v z!jt-WH-3v5-o$5jeb2d0qJH{ZE{1-^lLll*_rS;}sr$k8D#0%zUs?j?ke)8#E$|&_ zQ$B{2*|0%6$2J^#z(*2>)`S7dn-Bicq}8?9KvBdcoJIxp%6mOTFRnnEw?FXL?gVQ;$OQC!;s+>cUI zNidbBrh(af?j$bua#kqBom?U(EJL5{EHCIzRLPHxLI7foUX@#g!7U|!NpbrJm&*k$ z4m_shsysQ5Q&}Z_B_zjJYJ@Y!AOy8TCFSy%Jtozc#nDiY@J;+BjFm#9V-k<$f_@9x zkn!0i%)G2M?9Jk58V}bjx69G5%R3vqV{Ww`ho$JHYXTr&O#t zMbtK%>tG~^Zt}OK46aoOS{!aCoh?U}1`uz#DY+3LW=apDzFLa@FFV4cH_yUt{d%$L zMW)oyzHG9F1`X->sfRN!Sf2k1m{N%ee|cKqr4UA=$L>N{GPgJlDo{P5Ue zg}EMB_i7C0davR=rfUdIdc8{<(DZSaRqcYaUqTJg^jDwFD^V8nL!*y8Naom$KeYUxmaWI&ED*uXVaMOeD|r7v;1 zf(8XW8b+(kS)>CH+D~}qA029n5j+~8Q}Gehr97&y1Oj(#s+Y22hqs3vXbJn6tq|#8 zPD;%pO$6cmS)~2vVU~ig_kz%^l`3TpsQh{_dzZIt?&+po12^Qq`Dc_;7%r%ln~-fp z7?$)>kDwR&32J+>hBqFHq&ZkX!W*3mHSbe`0M0Kxg{|_Xfj$SlJ2#5yCp4Q>EkTb4AUEi;Co^fa!GDUN5sa9qkJd%RC(o zCfQ;^HruMB@s8_65ZvY*_LYvt$qq7CKdO(*70X6CmM&IOpu2Ezo zWOwC=Ltb@2b12PZIAJp!&o9c~m_NNpZZ;gRNUKfd$ZxqH_3I6dX=4TGfV43=R86hy#2#{sG+wcy*JqRYb4sg)rXG8 zVh!j^0|Kfwm5NqZRM*mfG;$xEJI4*r_;$n=$kKZS$k?jBw2vdE{)A?=j=kNN{)SIq z@u&OwvJVcROO<|VMA}bb<^cLNG6ApG({%poiXIdFD*Ibcck|oAKsps%^^HIpg^MnT zMtQ8o9C~&M$JOuq)w-xB`Q@%<3xeo7sQ&LD8ms^3?zpNFlK-#mqTbzrCg&LFdahr- zV4wqCL4ZRfLfCW|uiS!Z9vUhNra{3Su06$JrA0oqq_8s#@s5u~#fKc&y|XADra{*F zAW3rSWnn)A)5`u_ZtuN><^?YK1{2Xpff&tKWk%H|!BySpT!l$Mzgo9i2cL>B*uswW zqrY-SaZd=2x8JjGL#UtZNX_3NG+4$T2Zhm5emv~;ja>79Z0mqcE#Jyp&fdOMP&QKD zz#Ka6jb_4`q-ev*V(;}{f-4WK{pIbJ`F&p48-QN2ya=3Pve~f+n$3yHsQ%!Bu?%zjQ@9gq z3Y~D~)lb~S)uXUN*_2-h%)mujoUYlC@nelS$t?-pBH(pAsG-ig6%H^E$l6k@*6`8$+F`-s;!sZZeb#o6 zMGc^XkX;&Rh+BnlT2xNvTsFDdiceWx-wb}oCuUDo9y1Q0dT4y|XbSK%23M6)IwWlb zS&d0KG=PTV+*pn?nvbMvaWktfp&A@u@V$X_0L0-i*E)}MR#lP?FCEkW?LeF@dHn_bH41 z481jm6ylc8uAQ4OhAhGTKUG6$MRkJ5#Mb+9+^3GD!?3$jB55Dqi4~D_42Q6fBc+jD ziKL?LVHW@mwMh2>S)lbyzBN1o^)_!~?orf-Z?~{0x>>fFeH=w~vhA!XicZ9xdN7@U z`FVOUMT`yh{9tT>wXAqB9j*rYdCV>px;KTE$8&iByD=D_>zHx~4H(CPZ@9VaoHQQw z<-ZE!)3*I3f#h%`fsmdSMw(9jrM`QsQDKWnEL-l0Ru;5a;sMrGbk$VAL}X%2znn0lCf zQf3XK8NB4tVRRF(YvgdcnqT)1r@+K|fqD{0-30U8NEC31rZ4v9dqsl4RaeUc069CO zX~4k$JZ$R5L!I1z0sKTc8xxD#gsc{K* zI4tduoZajY3oM5wXUEW$@)D7qj-g}ar6TJ+l2%}kKCY%vswTy57ADbZ$qIp2CASX@ zI0RKoRwdKSGa$a;ow_@cPJtW;Z&*q!oq>3Ud;@$GOSf~8jlNkL(l?U1JNE26Rjp$| zH=7s-{Dqh^i{t1zd|X=Y!+waP$szVwdimyW&e#;okAQ`e?F z|2Ho^a}@2159{&s#Zed!T0ahHq&+pEl!q5i8<0Ag&}Ve={wOM`W;TqbG4?X{EKZNg zq@v8}(RL!ZVGNDo3tK&g1|g8pl`&Xnj3_Xk8bNwFR*k`!*mLob8SG#@eU+CTnLuCc zQ_W>a5jXOSxxFipIv1UBUKq>Bkw!}bKn^;>abxKTIsc(dqHAOb>f9<9Vq>n^QXq&! zVuNyC`$P22xjG4$!AheQ^LYA{gm%VLN!>PT0>B?5?-@^h*xCs+f_KF{fezyjFHfNN zcq`vbq&uVo$dXBPxa`%Ml1Vf{rm$RyV;z&}2z8}qPXBiKzX7gkx5AS?axl5x0WM;L zQ|N1oj)pi^pF%e&I*!M&_$TOUg{3Brefk7#QdsuHvCUKHI^c%Cr_fii@r_gIF5bSF z3Uq{POe&;usA+vFUBdg(o=RVnq1?06X(Up=vC`=fP~rOJbV%*O*q_sBv=hutbl!ZV zBW6%Z3qE%SO$rT*%6m@Y1R7i*?Y)8M1DF=u#}7(B5UZZxrXAMs78o`eg4mfEG!#&Q zO~dZapzp)B4VrjGg4tivTC|%_`&(6iw_z;~%%t0Wb>2JPaoczWD|(>Ftw<$omu4GI zw)lKz8a4Gfp^5#iQE^W1hEtbWIBRY4FY}n(3mbo-A}LQBbVKB3J|(((MQIE&74t<)r#b%G-dYxrPuXVFr!cX&o_dPD#wR{)F3p6DZJ(Fb zLvHqvRitNr6I+GnXXnz>yj;;d`ivuF#9SK5T;_vc=E#7Tm_FYwFMD}D9SZw24)PBn zk>j=#==_XYYBNu5xgu{rJEO(*e3s|XHhgz&K0O@)lMn=jbj&N1067)oG5jL!{uMZM z|1yzlrS{E{l;aBB)x z&q1uiJ2Htl@P}FIM-P#IHnPRw03N61Y<~e>LGzU$nU(tVtQ z0ix=c(kr~3_mNmBLJu|4sFmmHSk`mE>3Fr}Ir@tGDG`?7bw_fn=?+#GdB@_BOk7Jh%TJ4} zWG&V8J+85h`+kYCv)HFrIqe%__I}prz4G=Ew?oRZM#o%7c4aM16CBk!ula9N?h_#| zV{y+@Ew6pn^Y#IjJWsvpaZTg_oOhoG4c4*mo~Jnqd{D&MaAP0>T;PhLTQlHj zly^{)PvMK_*U@M6$0bYF9ef%1`b(OU1YL1dS{zlOg^2fH6f>Yt-)K0F9l;IpEzFL!y($``=~@Zq+% zK9Wd0&e#ZU7uVAp>50(ennAbM7CPTejS4Nei}0;4Mi!$E%VYn5;j=c=(dR$Y}_A;F!<84Ld z&;eMuh>)!&RiUELx!(;b&QF$YLao9Y9B0rCZch-q&O~ zuexpP{XKEWvQ5^P`XiJH(pTl$%ihnW;l0oCuCA9SlpF=`w^+@F8)+y44W=8Z+SyT~ z>jf!a+bb-`NTUtKKI`RePkYxoZant=5jV&R>v2u@@TAj&R2Tt16^UZJ83WUGwd2hxE3QoD3frHNT&Ih1;=&N*)(}hQO>92x% z;HmLd)b=$3^Sw$VqU?Zq7#{#`(2;58Abg2B%VC)c<4t+g>2mYwAiQ59&j{XC`i;oE zx6mjAu#w^(7s^ecZz7o3N8&fJ;bljfA@*3Xg${JOC`N+SMq_LXX1-NqUvHr)s!Jl| z1$dgfoJDM=y#!awAl$=fI1qt;&}G3z`R|9KZr&FYzTgvJ%LDg= z>o0jUQqS#lCl8V^Z>|lAq7X_=!sB*0o!@y`WO3W*5MKVdZS*<+E23FFwxu+}e^1@H zJ=5#@)(;srV6E$+cCX>wUOKDP^IOsX#VVl?Lg;OMRs&M9ickTt&_`1 z!8MUR*iQTOuGEA&r>%sc4a@_ZuV53tM!V#=_RXg+i~;Ts*({L>K~+m|Ixq(5O;2&b zQ2wrm95-LQ#)YNV#Eo~0ROJMcgtNVK+T9&4x_5pn)_k20fe^3m&g*nipN`|vRzyzn z-Ea1EfyU0J@N6l8OM<^`tf%2vG@JJZj@P`uZ_w$k--(T?mXZr6og;Ir!IQs1)zZeh z^(L*8Ti#&@cF<|E2Bs*GtPyHL3g~>9CUZlyIc;;pPf#$II)K~=O8*^e`9^-vL=VWn z7unREw4bKHOFh!BmRheM4?<3h%SN+eR+gWtK9Rk-ljh6Y#2UZ1=wunddD+|4nEiv; z{G-^}A-4T2uD&6L#`}L(hdJdjTehVar5a04PH?IENt|{;HtmZMCu^y`WKo0ML0=MO zE?HD|RIV>^sBag`<8!Zzd(2p?vf9A1IRC0&L_rA+pYk0CVQ)uVwD1&P#>;=2PrqeZ z5v|P)a{)_AqRmaF^-6W~NP4nr`Ezd+l0atcJS2h|2VcYy-=h=d|3>NeaEQ4h)`;)ZWit8iBHL18mv}ms(tfgQY+xw_&N`M+ zN=Nd3zF$g{AgKMRl&%E!6(*V{Z{nvFzKgeX-RC$MhVXxgle^8HvhamvBON-5}{7-~e=2WCb7KNOwd=3eyz#k6IGU4k+w9IDPEOd}oGAmUW^=p&&pu>-Njb>EbVxbAHNX00WyZ9{AG#PWxvw)ANFK=_y zN7P4=xpoAb^%4DX5Uig|9I%7c844F;+AOC=7ua){C%2Wm6x2YnN=(a!TE6~6GW&$V zcV;|WUPjY2U;P0cd)STqx#cmy?L5INm=BKCFPBjhZ{*o>nlSh{ynY^~_4G>k{Qkqt zo_to}THIu^d)`kVfT;9tuj*IAR#WyvIgM~s`s(EltGk)Hf)4kPK>r_wQXSdT6)5EN zu#l;OPO;}epGA31l>Jsghq_9iA<7wlj!!)7ND#HF*cX*gE!AZ{5D}k3?2*fO^-+KEZn9%a~7Th76yu z_p0e2S>Kwks;SB`TR-qm-60v@hWfxG%G>0`Oqldmey5PWlc`I-pM z1%JUU9BIN8rbI5xkiN^tyap(|N?qXsc}%b+LlPKoKJA7Wdni%b+ZXy>ef(s8GDdNf zMGFD~Q$vaPpOmWsuD(&QqLRzjSf4%6iFY13s!xnfd64*bby`r{7n@cGYA^qgdnT;T--VLOC0Z&LM~bLCFWf(oOp zz;_N-4_Qvm5SP5P5J#O;&4?AR=@ZU$A0?pGmGVhdnceU}rm%6@HH@YxP44oruq^Gw zY@53xYw}ol9~%;C12D|A;QQq=j3^#+23Pt7+07zI4xCL1^6F$|M@P@iIpwl`%aj|B z960QDNLH!HOO$*twkR+``9)0|q$iwpf%q^%nqzbnor5sM-Z_m^?5Y1l*q6XHb!?4i zy90!avV^eQ3nYO6vI&R_h)WPRP^(zcTDPDA+{Z8@x3H%YM|1R zSQWLjB&~>wt;D{HR$rCARJsGTN;mnRxdCn8_r34m->;H8ckV1_&YU@O)kX6)yP&w5k9@ zA#{r9a?zca`f1-JTJF!l7fGY4avk7^ou^35;e3Y=yXkOq4lhX@q7l&(?K!-n9RAvq z=rM5;?abjzSN{ezT;VQ+XHH7gUVY^SLjtbmCpd(+xs&l zVC$i8^la-^`F61`72VFZwyT^fKQsh_P_O_a%Ss?KL6w@i_09pR5d8w$Xfpjf2L|?= zY~=xrPMJ#+1n(Tlq#o(LdY-v{^;BIreAwtqhZ*MZ_S?AEz?OogiVDI_&4J`7P@n7{ z&)Rwxw%rTXc+TEKnOi+``v}1_(*l{KHnOzti-Xbz%DA=lm6_CBFK&XdkBo^eFPUAu zGZ$9u%(%&|=B=%Em3>;|;a{5}rcvtEs-|l5H57=m7X%Mr3Tk4ZXb-v|1uXRyQlz(Sg7;~!ia22#nZ=BjtwTm2% zc9hSYvd_pL`nJO+VJ?W$Ka%Ja+c`xCn9Gj(>F{2iVjK4e8aBE)08UnW;!hlYbi8hs z^B_u`d!(QsmtVyrzoA6wEr8zycj&Bgz>)0pI%V5zLVO_9;4UER*&XZh0M$5q)+9Pp znk}xDGPYpm#JE~iA8T$SSZxa--WKMzR9h%uFbtY|8n@p@9_GM9i=a`YQ=ZB0fZw!$ z(@qj952iRgLmn9KcbZ4N{8J@E0P1)6s*4Ep!pSx%rOy{K7Dds1Q zIP<;$#Y3o%G@&GMt1ddHg*ZSPM0~p3FTB<@n`fYSabG`Fbweb5-^b?9Bqg<8aGX2U z@5}RgLelNacZ&EY9JjJXS8j&<7;xq0EpX_&4*8af54yl4Ih=Q4M59-;Ll>Q!c@ z^r^NBBs789R=;e{DnLg zN#!hzrMa__-wxx?aneLeRO4{@Ko36sKK!J&!v`U=yMYpXcfu3`r*RTZhrxG-=|npQ zB`qME&jIj|r%>jtWAMcFO^40+=b#xryK26$=|4Ve@q!PBJ}U=ALGb19cQt)<_?{yk z+nK}fY9m6PI}mFX8N!im1XJ~r3PNedj*`V@N{VNX)F+h7-R??#1v$Q6N=ZUAiPfaDUvJPk;XfF)WRH2Um0#3jBJ{3299{52i(TV!i9p~(y z^6lr-fIH)qZJd%TU9plxi2L*BHAlW11s@N*Pmw5z2_H}^;RaGFlxVA^wk$~ngk@PW zvXfzMviKh#P@zzz`2%X)!fFXOATI1@3xLyHq=61E{kcP11Ynk3Mic}j;SSAjp|6I(}Y#6z$`{$O)FS-^suBLobb#7U#?%AT zE36HMkXSZu=G>GTMb&b~rojJlz{MjHBPUqBMl&~j;IOHN7$!ajb&z2cV^B*v45nN> z&q+NbjRA%%b3~V-IKsPy0ykJM_YZ@8k@$#{T3D`R6cI9g=qd#{0y9;k)OLrzQ!bHd zReSp^vV`F{EjQtO(8e-*1Efbrsv{X1c#_m!k#q`4`VJ&ZbJJm5DwF2<>33B;D=KWK zL7vXZj%;yEjkM{6vEG-dt(6{oguhejR8BQ0S3Xx(D6JQ{;(Ykhxgvvt>AnJi2@ZFU zc&2cLuwQZU*yz!AC1p_iOE(A_eY8sa)`yf#=nhW6AAbmzESl05-1{Mw6a6}gBLf5~ z9U>!}AUV&<0)t3v%(^)07MTENi322$dDzVM80-JOLlzkI=GK zfN!)>VPV|rOb`OrDFhH;2*#sOtRxo^9C(JxicI*wRx**SB(p%xv;G7aVO{F(#@szp~4~-)eGS5_2K|X7LCgglU{zb42f7(wz3ZcJ_R6q!6MXzozrS zpPivb`zA9x>^b089=VpA?2eU@4qtIQT$C&>?d zS+?w+PD1xPAlOz##T&YZY0Vq&C5uVwGgBmf?<|#$QW&}n?(?_L!euxRuRKRVhTO8T zcn|zoro3^XI6SRbkwTx;+_-Q!0R~LsbB!ivk>=_J5-gkkmL4%s%07Sb)72L*-d29q zK}c#uFB}XIQ1F5X@|4_6Wt8P(TZG(0eHx@(X++9r#vVuKDFu-kjq0FO5Xxvn2bIZ~ zBw!#Ddj^{K+$jM11&Wn~n49ni9aMZw8sjt~AObmR@1khmp@el_z}v!wrlb^5#Vv2f zz89!F023X+q?yF}^Zl4AF4z137vt-Qz@$HrF1yDJ_V&KfUqBCN-Gu-Wj=cjVI*7os zASye(AI30Od>HPobmfvfU95@|GD2i@L1u7uCR0o4V$aZ(Lj&cUS3F0&mp*Xw!@TY5 z)|mx-VD4#@$tMTQx$+%m@!b>hL&xSWKAyK~oUwIGKvsI!rT3QWq9Y8^k%zmyN)p?@ zwDJMOO~(UH9tR%(WJ7&`{ljdAkX@@>|0T1%CIDhrK@bqI>tc#mt-8JE+d=4zLsIjH z5>=K2hCfRLPW(AB(!Ai@f&u6zQ7i8E!9l`ANclL+tb58=z2AUb4b$&{LD z=1U^;xm^3%JNBi|IEBLRHa>F1Dq*j|IXSui!z74sZNEh6<00@dG*EYrv^9~m716sn z=b4D!#UVdM1osMwjQ)qpNi!;g3$>dmR#!_~Zz@E4Bx0%9U*vh%5Ab z-u3|CWa07FOO$;Y4;b%5FH!x|czXoAs%KjZ<44evoN2tx0>5+tO}^tIyh#tx-zu)~ zo2E^hI`y_RhU(lMMhk(1fNSk$0Uuf=H9MdOL3zGnsD}>O09n$l&^!>AVgbm#~bBqlx+w?MN5TYk{?g~p(G;Ns%1ai}+txw{4 zKn?!V6Pb(Pen+`7{L+Z5ZQV0@vrtocu531HqhL~W);8#B7V6EF?fG@^@=Kzuzd46` zi|8%YhHcu~TKHVwTpE4Ec^&Blf<|F+=ni`3&COwSbl=u6m%z&@pzH!sMMnT=mz@Gs zah=cWAlV2zw}e5--PcxZ&g0Dp2dR2V*RVa0idK>Le#m_s`+gpiK~J2jw?#oK!^b<+`6vo>q|Z)LI$(1^AWAuTklF zyf!}X)@$408UswOz#GEZodpyl6e`<;n{Synot-A%9@g5rwfxDtT^&w?{1yf$!9muB7H!>(~~cy&*pKXF^GAI4TU@V+pY{cwuRA;oO$ip zJzsE;N*5^Tz?rMzD*QkoqIk#1ZO=3ay#`~0=xZRL0|^EQ7{E1{z5j((3?DRS#%&O`YZ8(wW4ab4 zB$It_;_XzA(q0f9q%upFqjjaUXkBb=`GR#bCJBn#k~%u7xseYKMsZE7aQeH96vQkj zQ4OTG=K!1_Pheeh0hcGRs9p}?SkvH`WUm5D;MO%s8z@~@YB2V$Lz{)Xbu+5A`xi-5 zTDDZRbs1cLx-z5rec`Y=tp;-;{v436;>z!*q-wIRc zNN6uOm)o^qW@9*ewd^G(( z3zW9USViq~ta;9kq|FIZb9joui+8dCpq85HfANI><-K09UwSX|yBx%c{G93_yE?F2 z!8fY|wm;6m2@Ti_C}cU&YF3B6b=;lkE?oMDT^@GA20_z-6)1Pg16)R)rY*w^jNr-N z8oeN1qdXwnPjfnh`vnj-t3wEgy)+j*MP{{>p48~2{4k^PRkEOmGwS==_&k?9$Q2>E z($_5ysk}#6T!*A_gv$}y?TEJ=9qgA&D+e1#+8wOZA#*umpi~1|xN><&p|`*;mlnRo zhY?v$4;D6zFH-pzsU#4bLlxR(A|9D0&1pynVU1CK9?~xlq*pY2mdRHOB`$UFl>ob! zuhR?i>v*UhU3o%o_wqA)jWBqP^awT0UNrAiKt%%|ymHGx_$mXejrCw{zpLCQ{gbkE zb!h*{yR=X`C8EpL)8|r$-MDePTMautb+xgzIADE|E;fqx0ZEP3w>hxsIg!*lqUo%t zaLx#qJj|6G(sA%6w|BTOyZ!PoJERw$Qhhr3@aRUES{Ti0-XDb2V1jOWFuc7krb8RO z_VP7n1`mqMXZY}rXZkwjp)Pr_Gb!$J(!_4L1a`u$7TdsF9KVNf$2?Pj^Zy)DDNd(a?fI`+|id-y!KaQ-|6rv z`$7;j)j#qn?&!LEL@?v*;EXJ=w25%VmPgjKO`~;s4j(bcD>5(0$gD+>p zQ{m~b8NGuc8$NQW!@Fad+Rn;n46!T>3&-0${VU4`UGi|qSZ0q6t9M90_cFwW$7YU+ zot+x{NOEk+oY|ouyphlYyPbUwN4*cqA#Qo%O4bp~t2WbO95COrEI-4ERQ@!n- z(v7{+NxgJ1Ad7VD$6bNj9~&_s8hEIC9qMRK7wdhiGD{2aK(?0k0a&B~d!> zr)c4mHKD^r%~zN)l^dL+z-y@W(cN(NSB`BIC=U*5e(8|@Dx`P0f9YVKm4X_O z_jC%W=wm0tGUq?dUajRrOWa)q_OeOEXyy+RJ}-xyr9>Fgd=pOE{ED`=L9;PT+1DXG z_d$DL>lu-B&IdrnNQ;wc@zAIsdiD_N!>BZ0cU&m<42%7Icv#Ax&!Zpj(NfrhZBc_D zJ8q9@5!IEMrZF|5C+qxmKKx{#%60udyqeW_!-Nfnh+b7LWG>~qqJ`TxhMA4&hYkjH z34L3nzQM7{g5s8c(My#h&JpW^h(iZELFEdfHdi!HJ)QCWUV6{B{Dg|D)(k@}qvu`W z(-GDn$Su1NOkE(iEIC@*?ad3%yoT4O(@SYolp`#frd9f!Getl+TAq8#pi3YqJa`w5 zjK`<+3oDAFGP#A=2-60CN(;;znyAUKzw?DPuxMIE(Zb1)%g}K44(m&t^aIOV1ZEdy zSSq8%mKlRi;WN_j`Z@MGvfr5m+HPR5T~yJuXG-kAV?&}{B2|zk_~?}P8Ewdevgxv{ z+bBHChfxPWpL8}3=!iwmrg$OTFmCW3P>!d=1u)n28uu8M%8^k zUt%A)YHTLF$Z)%!X44-uOZa{cGII!IXbKLtB(I`N<&@!)&%l_Rvpf1fxzk@LTNear zt2PzON+6SgrQnfW(2hzb`?z%0*g|V`%J+!?m|FvTMlX(>qiEck3L*iGJQ!xLCK7PESl;snc0=+Dw);3 z)LAmSdA+?P&$`Q8l5aS>qqbUl51GD|&biQ@F@LP_;y)c%O5xIawWEej7*khb{xJLe zd%C!s_9Ordr2o!G_}Zgxda8)*J+jeVu2x_fqcL@$un_Xp#?_9n2L<$*($NhIBsObTX` z0)v2G90u=)IcU@Eq!;Pm=n*a#bw%5q!*7pu=J0BywSm@g&gG%Tw|1M$3q;l#*(t_% zcAJ-nSqq)U$Bl>KXSnsrssWMlZTQJp_kc9X3cpzEE1k6=V{F`ApKd)? zqlJp~IfhZ+N=J`21qB=HWsZ%(ouC~tw(GTUaabZZEQvI)`_`}|!tC{p*w9onE@}mx}!&5?z}s(o3PR zqEgg4T+nl;JMW{eI~TiDuDsLjcUoJ2cILG;-)U;zX3slgi1i1bRb8w}ybfnT_|F+Gks!m`i>iu6rBm_5e;wp8;Fyfs98? zbIvy%ailIZwk`@d`Nh%#rzWZnsB=&toaXJd9puw!`d|rZ2shcwd=hAE0Y6t znn=4Qf>ZenVdb3jw~h$VCxc5&ZA#wx7OS>B*(}b3jy*ak^L-r@oFpJUq9Y6=^Yj@_ z^#KjFR`sg}!xdyWo7$k)$LnUN_K(b?Q=0w}@ajLxhu;`{Qh_?f4IMdJJDmqgr#X3h z&J02z8R@l)1jq9Uj(0c>mmqu#fjoCtYNQ}NjSch(prwXm&f#x&`Oq8f=XZ4Hm)qtr zo_heW!}P}Cm8phStXkM=dHL4z&+67Uueot9fUK{JGM}5ny{!4nurxZ|h0;GvwMYMS z_$|`=T++J&&W*TjoZT?+meD`y;)c%+(-lB`{~0-hpmL(zCQf$*G(Si2N}VKLG$E$a zuA0U?c>sZhK%Sx_en`qw&IyD-!tDN|qc|(luAuCUj1H^(+^kpy8FSsgjWJfe3odb0 zRkso3xHiiyUv@wVSP53iZdWDk1{E4~vfzKDYEAHg%tQ;B3j*c2mdcZV$<&&un4RAF zFjKuqYN`o|)ECkBSl^^C`g2q#0=sjj+7>ZJy*~t^Ha!ti{URRy3AG5)?fvZ&Y6Hk5 z`#zz<1Wh>#fXVRs<{{wofWr#EAk>6p;O2`|5wl2I{V+37 z)DsAzNb!xgc9Xq3=wJOri1tN1wv(Cw2~i&Jq+-I|m1A1OzHb;`*FomrlMSgh)yW31 zGSzg9!G}A+XxfCYby6GQ&ukYpW+aSlkyQJlWd5eDkMR~fe0;wPd^Gtl4^mQ3E1f>%2Ib6Kk+GbN2po!6<+sGY775ieC?l9vVX6X-d|NGt1VKF zAfdk&Brdbf$T6Of$sPO>)&SI(E$S0PDMaT{OANk<1&%iBh z*KzzJ{DriuO`lPTK8qQ8*>%2V+j0Ew&%og2VLbCPl`eZD1de^fn@Y&cxk%c)rn4qw z{;;WS=My207jf-nDly=}U8Yf#l&^&Zj{m$2ijYA3$7O1?&;rS(Mt4!c30yT!Um`sy zYF`d{&Om(W1py==Bl?ChU5c*d%f;pk{+g9z@Z()nlziQo%DjHDVEjLBbSXMowA|;M zIHdA=&GL>~6Xeb7f>nMPhhL$N{~2~^mg&dwjVoX^rwKWRpSnuLd4|~K2YWEzWzJ_E z8TiOmDjzLp=#AQquUx01!@1@?!V?fb)9g+ygk^nKru03ARi9Ho%LF0D*CCDu=qMa!^SK^;5|lx>@EWxoaO>S`)C{!p|J$zS+oO2Wb?WWmc0tNU+RbzS zwcS3DdjAV-?{o3Se^HeInoo{GnpJSl7q*4)n)4jF*yjuCIsOJ*{RO1}N$^p8>o*&+fY}ymIq_yh6>;l{-5had=8{oEb%mKqB1#g5+Kb_2gc% zoyP0`4TDlXdGz>;|Aw7V&Ow-41K4#l*XG{L59=AxGvd9sZAH)xz02^=Gm z!fNlLXo_)S&3-B=G`J>AtGX#g~2r?UN?y zYy9hv;Gm%V7cT0hl02>k+!1*HE9KpH@f*F=oIo!1ks=77&DN0%Xx~~a=%Xgmn&5PZ z5GHJ)+>&(ckb1?2cNo$*MDnQi6mXv;Mj2oZmxcHCfgZ2{ztcyp5L%|EWB-0CQfQf$ zj??8D2dl-z&3+)v4U*57~R|3syPJu8sz;%D#TgnMw& zuHJC}^{k)38gMP%`4csZnk-d*pN89hf>3F2)&4 znbFWaIh-LqoZhkt>xI@higBE->FMBR#YTg8q z@*R*7L5SKX@T+&InJ~%jJ5b$nJPk+Q1;6rAyyz~q#@Dhb2o4-O<(;+?e{`2pgl;B1 z>BkJYLUACdq*MB~;Cpu=MdDWSmT(o?eW7|1U5WN}Y{QuYlpIq2J~}`_`cFxY5%Oow z4wx;Uoz`Io#QNI+r3%v=mZ*y)x>yB#V~DXV;kSsZEUlW?((o4p6hm2R({4g&qXBAu ztmdV(ZbfXv58XwvU2@l&p$O;T1vI1yuMdDQF<;?I@02>n~RdATLItK*cEZG7OijTT2Gm$ek5~$V8_+JQCa*wxZ^i!1&L-( zc0uazR8q)xrd~J-QsQz#nQU@BJ|9gol5hDP==2WU@;gw*Z*jsOR3?1A<_{`eSuOFs zB3;h(L*(;+MEvR0LllH#fgKhbLUf_0{-EZiaQMZYsF3$;4(Oxj^&8I{UT-l$uT-Xd zC+SsT;d&)~j=x70LZ2_(17Fk~_|!eB8oHi4NNGWB`^g|>jM&LI-xz1x1!g5{25xq# zdZu(G4~&K(o1S89yI!tDt4EY^i?*UU(B&oUd-~-+P%1=JN#Uc&xILjgqMmt`AUaa+ zAA}_}D5jRg#ZxMI>eU2F_r%5Aaw;_NqNV#AT&kIome=mMZh!hYD;bS4n2wy1yimYGf z;$ql&D3h934K^%Um=z&;>V5_mLj)t?Rx8CW5cX9v^*~{uP`eTgUiCYgmE2H?of&-f zmX{+3N7Rt@CFKv@~f6qrqiLRH3ztiS|$oTDztoc4i8dD8n{xThfp!l zFWgGINAylC!0{sPKdj%ha zmox^#0_HUCf3n%f1F1u3Gv;_K7*Ro55fXmsAP8 zgSkYR7n;Mb!DqctdU-9O#ql2OCL{zL^Pm!U=GvnVniKXm`zkv?<<|KsL*!~SZNnia z0?zW2;9Pc(YXeUBHAeZ~Wsi;z4vXu z4|*Nkd%!%{hxXd3+PPq-dS~fj-Gri!BS48V#Au={KX}#}y*FnbT)ih$@1vh(za)^h z2iSdg6mB3XPhS+H#~HUi2z;`2@r1axh@H_EtE#o3Rkr3M%^NAt#5Tdk$RsFt6i(#Ov}e_`l50C zzvJt^h=q{nzxtwh4}Zv=mXI0JnxpTru7^QPf`nBDMS9&R0GhQ(ujdj{gN&vq-B2`! zW6d~&4M^Mc;I#Ert?^V9r8`+QWJJFu0hNl-iu9C+K~4WKl*uj5{o1w%GWRz7Is=Pj z&H3+r-d^OqCUDX_e$P(h<0CYhQLg1UzkfVndeYUX+6Y8aZcuw&gEUEiUMtJ~Xr2ap z|7^e&K2W3UwC3gGz*R+dua=Xo2j~?a{g)xCK*1fe?fmO7L(gcf+-R>Y)j}549DO@C z_l{lGq87;bBzE5&%zmoucgO>?#t$X&;RfpmL?<7=>xa_diusivict@ z=iY!G0L+_UBOA;a{Xqhg8IK)_^7yagijgRm{{}uZ5{-h~zMb$V{Y?*jB77L1Us?@G z!EA?^>^bRbX^uL05>+6V4)ezuHY<}v6E{SEWZ>VzANZp(eiqISKq{g8hz(Z+pfKqM z;8DSq5OE-YM2gKb0LAtAod7_UdfX9!5=J&K+P9drJ)w3fZ-TJ;Fs1@gY@jCSA{gP8 z(SGLQD0)OAazBM91tL9T8E}}DN zu(%*JQ33u?nIr}+vDU2N*UM?&va2Ul;D%AQ3;wC)n~vdUgV31tCPpokWX9-Xw{vP( z^G7i@8#DX_{axT&1<;{6A@F<1^L5Sr5i_ zBmgVPP3ykl!qX)vO}P&uFX)$ea)!CgX5}b-kmWfs9GbkaX0ZNEqzqhY2|0mKLO+)w}@;AS~>|N{bEmOHdA~ zW10mTBhCs&u`)Y%z;ag>|C$0Igf%7lS+y$o1aO{lXX1)rBoEi1OO3+pr$Bq*=Uz8t zfvn;!7if>+Q^9CEKO2vcqS-=N1zavgibZPPL4jRykQO7mxQ9M6_z(fL)1BE3`A$EXgGWZnDSE` zFRolZ`sQOyQ`0Kr+pUM*=lh-_topHF<#$bRI|7{wxE!~L%$Go1M`Bfy_y!tkkTAsD zgi~Oua3eX6`C&*|0H2h2)N+nnA6yxRA_Yn-J{*Qp1)9D1 zUtwsppVB#4ZyT^xPT>ebcsOF{W&%%ZHEbL0KCB8yiv;d{xF#Ga%AXxwxsRT(*9LKo z0i+zZW5JpoqYu67mHMvkK+>LR#{)2Kz zPfCWJP+5-9Tq*oe*zarpd3KX`Un&kdMwyd*W{A>0m>a8?{yptKrKbHrF`5Ifg;0B zG1ozrO#9x-LLK3k-{aFv;rVZY60E>ck?6?)%kDwnR}1SQZiVvDAYfJCE&Skoa?+j+%!Lmy`)W%_{8i(^AmZLM$>)xN~k zf>em}rM5YM`GPyJ{Czk+w+~CDU;kPcJuH>x&Pwk4x(RSa<-Uz?^nu<$4Tsl8AwT{H zcv}=oCr!k9RDm3T2<1rO`1d}iXK=VZ3dKY1z9=*vU^GgG(nI7@!{_r2XV-yM2O+ng z&mYPNxLJl0%e7LH2r!fvZvqMZ_tC?N0L@$?K+AX0SAi>WO$OFW^k$;h4VM#d^u9a>KN09;0q!bN+6Wy(8W%tFq%%2COt$Wt&PF2 z$Wd&@8E|^JE`+KJ+Ch@FriJV`TN`}c==;?uaeH{>GNyKa!;Ie{Lh%UDlPcDj&N8@H z4uk<(@K+$2?{^`-wT4__d~{j~o~QtR;}%|_K)CwvH*grZqv_M>I}w zj=@3ED4PEf9v_Y3{T~Xxj#|&j&dz8QUZAw+8T>>v3YI-!)vN+5=TeXmsGp@s_|y~8 zijUujMsqw2Atx~UbFG}AT9d>?-Y5WeDGR2SdZcRVDI)|K;hl=sJe$B70t3lV!Hk1) zL=d84YV-lJa-OpET)u*&)#aWS>v_#A{_R9SYszFJe$wXd4qRkjY5; zQLb)_VD^Gcm4iT7i6Z$Wc(f9Ynsk9IA3+(XX#^e7ZG1^v6+AB)obN#67zE_6SnO*3^exFi-uP%fq#2Dm>Kjaz=ngINFZ z`KLqZHjL?H*vl6H8$Edf1v8%zJ&Io=0(E-TOBC2Q#98_-k`MHvnL9uc)gpv@5#%aV zSK-JwB=?#tX-+3y&xk{*5iTaR3GCN;Pw`tD{E5AVXlRY%6=`aGAPyzanzvJiB!Z18 zL?W0ZaW|y!BvYRj(^3!=dhv=)?)ntW5AjOEW8=|y)j!Fd+Y1&OWGA#w<$-o#Pc(=e zB5oXnyKWzciClm;r->#cq@LgRndb|gqPnogr__WS<59BoGMNMIyNuqfs3vCQ#1#r~ zzBeA$(S%2iLhGenq{@5T?QRxF+w9Rn3rzUMQE(pcamy$W5L_WutieW8hIDBt@gXg} z%4n}LrmGD0O+XU_pEG!R0veZbjq5E8!Xb;zs}F)z?Ox%`ornA*>MRuBqO^bFVo}7phh05Ilcw-_8^S|5lTdirN=eRXS)-`=b7-hhq<@aHt8WxJKE+d# z5abtO@QNgq;B|wrnvRwD#U!)R0=ATenlEA4GMNfv*1fjkG->3Y`ewadnss&tcT&%Msv1( z^a`%qVX+{f!HT}G8N7TndR*`ggD;Fm(SmOo+&>znjQP$p#Oz(%W~JwWa=S*PSA%xD zR#a0B5}m#L{!!2T0zQT-!6Yfx()T@s7p9_#f*%-Mm5O3us~$~7GQp1wzMP8U*WuTDpc1$P+fBzk=H_n6S*cYwq1Mn;i8XNa_Q~!X6rL*wAKYgX1Zt`N(u8}fxD~Ti=ci@&@Ta1)fsS< zD=d9tTsID7@O^RTIM_kC_}g)4VjRu3mvX5u%1+VY_0`~VdBSVPH-pfNAJ+?df3VTZ zHUiHbk5c3#StAy4d;uq=jp&v0gZD4gD>xIUN2*~D)QyM3)E~EwM~?tg89o7J2{mse zr2hduA*-Vr< zYq-R$7E2ohX8DL_lR06bYOu;}k0pb9%t*$or=X;A zO}1^6A)e)gDBcvF{Xjww;5kQWWt z;Vbx$`)V`1t9;EIvtEB_k?RAfu<>BUp z4I06yWb8i`L`gCD(WyuYssQa&w3HuV1K`RcJcI1g)5cLhzIv6fe;P`CHXRF@{6q!iRAs5kHlKO8H6n`y4dg zH`((ohCrZ|Nao65th0JoPesJr|APkHZ1eQ3Sh1 zQszT5rJE($zsCk{`>Kd~Qz2+e;T0FHg`n_x)6oV%n`6^K%)JZ?XTTlrQ@mvcIt@>m zGeK-I9xtAW(t{_EDIANQNJB0a&zR@+W#YfjL~_CL4D6VRaznC6l{cfad{+a7yA!y>2TEw3jkZD6&^#0sGMQCF>mq19ljveNLZ|k$9y~G##YR6vdf2Jv`q-QY^35su zA9-jEfKnHK$f|~UI87pMU8Z7bK6;ox3UA0qJIO4*%17&c6UbC)VaGI+3O_mr&|w)i z%|VOcq`f-_)d(!zxOy&15Gbp0%UnV}XExzq=b|@+n(`!UnunMm%d&7Tv1#$U7l^KT zgTwMM{$w6nAh7Jhiic31&^@{dKk*O>5ooqz{X=MSxhA0r*c76pc_2$&Xv<;eikDoa zH#YJ;0#DW_E;H6t63i1!H5zSR>%*Ia+M};cyvA1k+@XxzWEYa6rZwR zZ3DP<0Z^`)_{stl8$XjZi-iN;yzr^KS4>rq!OUAT671lbeJdIF2>9U?h~H$NF3rbr z1t@8xQbl6SfjH*IM*+&INw}y0lqQQumqr`3Q5aQ}cg zLwtl}an&m#=_9_nSdZQ;?^SvOEiwCqIgR(E=SI@WzTZe+2<$(1uW-;?=Tpw4`-Bre zwlT8v+Vokx)CsEeS$qTEuPQ@TsEO=0{xQB}Q={Ml->woF_&kUgUF&}lj44$-cQOyL zys2-@$X4XQwWV7f|@qYCD#1-Y-i15zy? zR_DVIUmHDmYDDSE^T3M`Y+d>3{HWCQjKZJ$U3?zQwe`CH)ax>rir3aPxY@|-cSPBJ zBF#P#6{iB=YG~&p^Fur%*vdUbJ_H1vdP+t=WbPWmp~8Zx7%E*nD#(txk_0Bql`1F;)(UFD%M&A%eYyUNWbTD$c;5ByJM6& zpJ&MDL)ND^pK@P(2L%$KLpLs!n1g%LpWvQM;GV?6J>@>!M-#ZG_5^NLW#p*Fq^r_7 zBfm6d2Y`Kki*SQOxeDM8jdIONx#phXmNA4hC*_)hY;Z%%7)F{4?}1UXIjV>pRV3FO zqdWuP1qt`3g-8~eC0XLKib-^Ygcm?aLX@K(OP?7a2%3!p7XzWq!c!Kbf@G7V1$L~} z6Kx;JjtNdVRG{!9?qCYaDrUW*jqzZRK9%Pv!S63daYE%lBJNp?wglgj&?7*)H%sR_l0A4Or)Z%Lfte9*X& zY|Nf5r91{g?I92-k0xI5iVvPemHkpSK)QT2wJH~SrSmEj{>meXL?+2XkK$!$Du6V9 z88A(^aOpA-DwN=VEJG{6+UVXg;CKhHd^u7?y&>U+Or9!+T(lgG4$ouZ(gC4i7lv?viJdYI?1&%`j`j`w)^c=g9?*0jy|q>gZ|kcI&v`c@ zID1$|zXNmuP*$U@eAUE>PB<-=RV8isci%I?kcem{Y_XBNgW_84wM^2aQ^JQf-&uhg z{gsnB?Brx-`D|wv-nbGjPg}5QC7cdb_~c47&wqo&tP0id;C3L1?0Cm2 z6gx4Wg-{^#s~}VlueQ^k_`(TC{en@dM!^J^zF@Cyv$wDyev$jp7Dtw(-qcP*o-lLL zargN1HPwzPd}S3{2EC0_qm5iQ?4P@_t3e$-6MwBni-eY9J606|PnwVGicm~}W`!M? z4}mdxH=Ge#o>V8E<&tKI*{rhPl9tgCz}zgD$=;m9)&vhwnE_wR0kYu9H4nfPN!f&sEYf=_IzXnD6 zXGu(R+0uEex?fuT5W8SL{$&j+5^6Rd#w#>n>hlnOQG=xZb6I>K1V1IQu7{*`Beb{h zQ4MP3FT$&fQAV7lISNENfyN|&7U3}*rVvvhE6A6Axmwb0^l=eydeldzDU(AAk zT<;h-`iOA7IdIh}|M{n6npdJsi`j~40oq7u+IA^yKkj8JN8&9nk(Z?_gSoOzr~EAk zqST96ClVb?nqXSOrai)vH$l#KcyJ~_YnJLLD26h}c4>2v=bX?~ab@MCA~d0SG0Kr9 zF)byv?1~5&qvnMu)1xe~9+u~$?6CsVGFJIKDWMrlWfTZYb@5-)OJQjoUZH>b%-_8) z%3&t+B|}g^U+%q89EUc{&ZRA4?a@4QVzBfZerz7TvK9rDFK6}MdT;ajInbVI1uNej ztXj#9B<7e5T6i|fw94~%6dsk&Mmb)TnAEJi$TQk;(2GSE1@_sd)$D?WTr7E|1PV3U zDAO9&reWO`QO>sqO~sx@-X!(QqfBervaiT=W7ZvC1trf!nbvU?loQG0(@~}pHc7N# zy{AkLXRD?x$|(dO2beanwvAkQA}M$88k)13TjS->PI;q3N}6Nd9{cv%jT%gCs@ZO z_I}|-68Bl=-V}Ae1cs#K9-XGCuD7RfOS;HY&GLBEYEvnzdM(7Z*)xI9rb2&@MVYp6 zk4o~W*%)Qo>gjSJj7GB|%CwE8CGA2w-ANy55%_krzPsC964fPi`5iGm$@*Tu7_+-Y z;9eKi4d6)$m(RujEP;tGB1@DL4bj7eIUmibZ1+sDSwRqdO_VcQB&ETYaO!X|nMF}l z*O;DZ9TCzOeEwtNO7;Ifam&gF6NiS~E23b^Fmco4O%v`fP3MQVmF?fMz;>yob zq4uLurtNIep;iJTrE3+GEG3{AUUgE(@<^0vhX*)Zg(Xqih=0V}# z2pY_Y(rWR*1~fHA$69TAZ~JFR7awIm9}kr^tI5PF$i(22=HFm$mMKx~wyv969WLI8 zCOl**j?(UC`@JOH!TgHBs_vCMHFSrdy8*5{IzdxAsD2iTI7q^ub)|F39q)pW_~Yo} zCexGP$v}-*TrxsihQHqkOZ<(Fz0hbx%@N$JHeR98%< zzi|r&uVGkeQKmiIIN@WZ#Gc4Np(ZuT=>=OkpNyYtv>Ph_;D5ty`C1KSof}!`u33`PxnvX?}wW7`32T{m^{k>3*t+k}!nFWm7M zVqqe57H0xELYL@qRrZV-Cg!LM;kxl}caV|B3=QA$N{Brc#_r$V3B_(jl*>zWCt1+; z_dyt2ySmd$+SCDVF65->gcf3(hVWiS#@b%msg(GW$R^~yZDTOo3C$%ko;u3Ns2R@> zYWL!@$5C9lnsrnWe6$s@_Cz4AGG%zw3^2Wg)1HhN1SOzDi?{R#^I=N=Wz@=$KLMTV zX?Wn8U=QS{|Bq3_I*@^vCk~C=9r(YE{4WEy_(z$ILd~W@>D3ExDCpj~YyS))d#|x4 zerzzpeMK-!3kQYg_#B>&zs4^LR^~qu8cm1LCw#tY5jH)6LMM2(lESl^1rdLSerbHv6-9p@T@fhkk&W|Fcwxz=2=Z{;fLt=oyg8btjkYyEP1k1jsS-D z+xhdND{n(1Ua;=>8-ercPb*H#l>L$FxsuX-EbJ^*DO^>a#jD{@U?ppMo;CRJtYS!? z1KOk?39J+4?jA+^f*w+*3*;9a#GI+cd=>P_Vh7Be2Y!pC0sHXWU^8P*n zWP_R-cjTWp3B=9la=>DIFN9n=i*VFt6z9E{y#P<9MR?w3VDNRgY%_|6LYn5P9NG+* zHXZ(SGm0mL09&Xj+5(bx9gg3E;$q1bgj|lWFxnTmRj_u#Z#v;Wy4tn{DTi8x2FzO^ zx|I%J+k#>x9Qp&Yzz*=BzviPzEZvIalGUuES8DSx7>U4O$lR@wIDae1h&V38@_r<+ z7@%q-duJs;3K$KUvLzBfw-v<%t%bo3zc^05JrRlDhgSa&RB#{tzfeK>?tN6qZdd;| zOt9D@+e`mDBFHRx??l1^z((*n{6mDK+77G1*oFId$pZRFp4k+oH^hL3O5_|TO#KDB)wNgu?xt!9TkiOk@5WVruSy$JvP zNfc3VfK7Xm4OC0^%i+EMStEpUF{^_C6YcU~vm7WriR0p=C7T*#tsO>V2gG=)m9Zf2KnuS5a zfX(tiSgmFtHuldS9M%7mM1#j6d~T^2+Qce20D;EDki!L*owWSSeca;cwCT^M%MhI& zCRoa{au zfWuC0B=?&4zq}^V>n#6>bj2zNh()_u*u%_D&^-VP#i82T)k9o{_F0^_6Lb&H;%9b( zz3yCW-HGHOUQ>^C4&W5^nM2;zecchgJS)!BZt z={g@M`c#mwT=#dW{hjIn>8s~T*Rxo=1qGG=w}o~u9-0MN<+ul{tSKB?Wnd#_JkGHZ ze_3d9qQngy#+HSV?KTe`f$qu7|8k(nEDIt-_ADo+kRU{cBeHZ6tMZW)#qkzAjURam z$z_jnHeC$FhXAj3<=jYoj)3_~|_J3?a%jn2*7@6MN3d4$OCgMQgz+bqBCKBkH$$&xB9}nj&0rFof{!hee zCj-|c{I`L-wu73uo$8LNH{&*=TJa|1-12r@&37vs*V{I$EAl3HcHRZs`?8W+WkY<8o zmFLgL&R3ierCSHY3Fwh9z0TEv1+ zQf~!{&fz2ojxtzkW=AIEe4 zGB=;bi?k>QP8ztQ!J!BhNmN#-r;8hJ*eHc>Z$8cTrwkGJcGP>l)%Cd4nKY$x86nn? zHluoNa4E-C>EagABOqKs#lA&#I~+BVA-M$^nZNR@2s+{lA4Gj$^G#)J-z#wV#f=m>Aqx*l%_5TWK;y zj~q%x&TPm3W9-f2n!1|D;Ut86S%M~z+=L`I8(bCv1zd3}pmn2KK}B1&C1_l#w(4VD z`cNSeF$%U2mjh~Bf=vZ0N@A^twOk|GAmrXGe(?Xu@BCUT`l9V9Ul>SN`>#MQ)Q^Wg$K?&&Q zh}7o5=6iwmC9#p=JWl3=<;zn;1NNfkCu@98H<4g|iBgUL^AoPcU^vWYv@Z#8m~%Zz zfMICrNkXaNQ#$XYwL+=&m_T%QF~!f)f@dHPL(IoH8s-z|Az+i#;zcGAEDonJGFlRg zLeK$>USl^ty_|nfvR#NSA`XcrLxfPUXuZs? zlki4z3c6NAY?!rMnfa<1qygvw5Xup!b>wnVS?jBND-9#6F&-pQU>*hgCa$vt*E#0r zsbVYc?w&qO0&voHE4x9V`b~tIV$2u@1kA-C;=4hhJDUhywyh98hD{gF$*Vy`PODL- zSRv4fPm12}lbf*={eG{M%zmI(N@K6}rR)ch!AuM!z=e5V{UP+WnTX0?D1XlRz|~o& z%yP;)?h0?URYh<#Acq3Ww1PIfvZWuV$%PFt%~&>dI-iJAk%NbF?{`5@42$S`zn;wHFqIb483QxMHt92F ze7fTlAi`c=IOc2YKyuQHlC*`Wubq&pg@$<$C1<9^-EA0uotw5$4orkFk|ppAD{Tv* z@Uy*0qZhXj;S%>;8t7t)D6j^J9S6JWJ`}p=&}i!x5LeyL)5)j#Gq>GfX9xtBVWFH* zc01IB-k z4l<$DtjGeBl>^ajPWjuWvB*TS$mFxw*s^d|V`RZeOYVWL;N^vl7UhTMDh)Pbt04PoZ&RKSB?HW|<4+n13IEas~0Zu%MS=wSVmEPhPX| zgHnfr(=k>w^@OGl)f5wgTxJsOR8a+oMHyCzts%z;A9W7RRJL=537*+yuT|EbdTi8A#pcYcnifwSEWERpmyFr>SiFo>FbJplHf^CfWSKJ%qgtkl3j zp!PCu@rtA%>b}*A#BE55hHNE98dL9&c zF~=twP*MgZ?tV0$kxj-7-KUm!yo1uq)6apY0Un|Q4eiZ7R8I1#2qJGy+IgkGESy() zQHMIV!aHDhB+RIV+x|;;ob*e}6zkstE6$<(|-s9vyXXg(%RluB%;-f5Oc<}8hqIs&R0Ef z`t*Wh2&U1yZ^F^!LG<&R#K$3DE6YV~mz15YO6xbuqaT;TB>*s1{aHrX;a{zVcna2L z-0{nJ#_06H6U&}6KJqixC`Szb>kCOF4 z-J?ckZ}*W9I|}}fFSTd8fXs3VJqt??i=o@DM5A`VJ?;N0(as%2zdnW4eu$@FFS~*{oGb18o86`H^i+>)+Y;|ffcp8^+@~we3Yqj#@HdE z%QM|&@%Ec+3hmiR$a%MvsD39gMru-8v;!)*pj~}up7jV{fDnXq{-8vmh?wc;enW|t zA|l+6*{Vcl1h+ZdTa@Sk0{KIQen3QKxZ9{)`6&-Jxv|mPFQsdT>9paUCS~T2N{EF> zj1ZfY88b}UA&LbH%a2oM=+}9jP_nlit{$3Dcm=#mfR=_;!0Rv5(d8BR5rzuAy^Bb} z*_U?_{Qx@ zqLuiZOu4oX&_{P@KjaFSy}mG=M;(kH|5dPw~3ux-fv3O`VKLU_q!5lDv4tO_myQ2l*T`l zsI8Ka@%~gE{j(DELg1;oir5JMY*oZd6WD$Jp;D(83QDxmVjpoI`3Q)K`?yz1X7B2i z(%3mPD{9Q#OAN`kH7mfSv3EJwz-st;ukfpp;!Zf0v3#K@-iYa38Q#Y0gPWUgG%!7K0>q{ ziq|6jbf9mXH5@bEq|3AgWnS35R>Nj}Spv_iw7-b6fI|!$$0pFZ_uww}6m;u7c%{W`SDYeh zN!vC>#*DbJL$_be+FM|pg5vkVgHgZU-|~Hl>LhBCAUrb(_N)ATaJ(`F9oR>V@^cp{ z(CvMM!k^iwNSllV)kLb&pB*t+CM(xMJnCBR%1VxNp}eK?jGaJ>s);lhocpVZu}acc zu{sk1^M68@E<0ly?piJ2S;eQzUwm=kOgR?}ytx2hqI! zgl-r!S1}ImUsm#La}-&h@YB!m;&clwC(^ayS=xS{FUIYIAd^_+bqrVuLmn>Ext~)U zJ%xef!%i;d)cZH=XS1JHRB2@(k^1&Q+gJs-3i0fTc-9DM5RmaO9HRhd4$DE>s{6$w zaCK`MwloE}Qt*^`^dqk%#-y@LjvE-aAWnBrD{It7#dY=nRLvWAwaY4^;aUM;3ph7w zDL}rV!F#G(ugE)pk-as-j8vdq2k_m&Sqk*+0XPN(mxTx5Mt>NJswJXzxymL5eAcL! zH|i;X2>8OsSdU{*LTvrvHES*GE@HH=mWUGBVsO_WN``0ijaH!VY6;yalk%Q67LeKV ziic)!VF0M_h{Ke#MJS4*x*#879l4TO1P9?F4}NZ~0*yLIxWy9Ra5|Zu_Agl`LF*Ty zA%}>_aCcvYVqk`DjfM4N0~P`ZX6UH=CG#Nq*CAp&4963Ph%tVKCWEk1D4^OO4g)-HL??r{aeT@P(QH4dBT__^uUXLD;Jk{}-DKI!&+=ZX zTN_rrrM{Z5y~%tDyaI>!O3Cc=P?lwDaHa=)`RQ4BLEeq~uc{Kr+gZ&x<{NjT~4&|TA zQRQJ`*o%x0Iv^G0OJJm;d!=Odm|iK3J+@aW#@?@2D$yS2O98`%en3p+$J2mi@dxlQ zGJ!tE$F%K_Y0De~@>4$Y4`9hJ?IwRB%b_E3bo&Fi)#Cm@-fbpvCeigl7)Ua%VK@xE zgC1c94)hibVn4OZ&&oKMFG0@1-e!le&DP0_Lg5q!j548c0P5kXb0`ff3PhXeZhjc9 zYO4hd;apKedqzkKiy~}4o)I#fMc{oovVBP8j2YqUH;{6qFM&xps#gjkdGty_7!O|x z$Ti^z(Jw5Xwtxr())qTRPA#I#cA(zIBSciXdzZZ4O6~T8LrmZ;%f|{J3yjPC8m2;i zmgK-AJ%_fhcM!Odyb7W@Xhq%WopN;N2=VloR9};TX__yAF-`B4lG(@fN@?t4eW{+A zxbrByji^)BJs+jeMEmSx!Cw2AvuBPz&62mUhri>z{57zKGgG$-Dj!(PTF7ihc|9Na>Dd9i7BWMD zyc&}VMgpFlLG`XDX6Jf2Hb`L;S-mx5%~2_D95#@FA=P6d8}I8gkZOW2fk`#7J2izv zrTgnMXx2a`Tv<7ni~FcwF^PV{M&@1vv(JMFwjc@JtK~h`v2M$O?NvGA9wWjsSkd(v z*q&oo_{7%9-7SK7MQESWD)XjGF+3Sh)T~!8qc%Y za&N=BG!TLO%F zW4yW!mZ^87ZO_x5t=Ki2t~`SeL%ch4hCCmSBy85ewud=ASg^gQgvF=v(8tgVA0dS9 z3DAWhR&3yd9dj-a`VKE;MFRhp(KiTQ@S%?f!Hd08GJB4XGt_i`lAcELlSG8nmL{)~ za(oP`4@!hSrpnRulf=wtJSK@;8l=8GRRVas2US53^VD_^lY?rVdzQNp8zevxHpN7; z#{k$$L(0m@9Sp&L$mVb|#eSR-og?2-)l+3<>#T>0ZMMSG? zadP?Ul~PVBglJp-3trgubUj&10&Co{a&+PpkwALTUWk4=MNs`2Mh8)Qx?Q`rG((86L zd`u`t*+lHX^{hBcdWH!$050`4j}cwwOIZ(s;$0n-v=IIKVqqM8{lreLnroR8XkwcR?3_!XUK3~erRf5)>9V%$7 z41#W~Jk)^EiU?iq>BGt7&H}Hn_0$z4^9|@R22693sRX z7>4|x*gk8;z5;I_?y!Ac(@l#Au_xbfJKP602PW~4;m$CL@7q+5!tw*#e~&)Tu%?`w z;R{0hcr|=x2z=$(_kpO|MNEr zw}&?#>gzKoVG6fF55$doIlfFUd9H`M*3wRmn9a`z_NRFYY~O{u)&ZO8zkYBn-1TqT z`Du^2%3J?i7Eg?*XOU$QhLwxC;>D#G%0hSRKcbVbF!(5dl}t>{`yZ#sK;LZQr=rvrx98P+ZonJap;t3%r z&dm96;GS=&dNSRg0|B7-*~#Spft2kWi`46XZJcT9Mr!JlQ_XhvpQjY_$=^tF1~;w; zPp5DBQv*d1RyZ`bvdg+24LAcY&+^fXGeox3Kr^P#@+-F-F4&~q?04X+s>&`wA6Eft zghD?9#URBe#C)0&GN<@W+*VP;C#IZh4YS%VUNXHNbmhQ0e?uPz?fHbr4>8hZtobT8 zHq2@|8grJ&<@ya&FKmQuD6JV2wmCH^Wmj!*LtB&`gY-n@__o zz7f{!bzV34Abu42mTk|-lI+yz%EpGq|(N)1qLSEwH^grAR;2%I!}%+eB94nc*E+h%4j_> zG~sB<1uzU0qn#Jvh5R^l`vL(z`qxAv(HDd|%)KhIO1~NW?d!J^37odAbXf@+^9Au8 z@dmwX4}^P&zKEZLy%>o~E)qkCtx7?Ry%05BBsB5tR@TPY8^6At^FlaKT$?c`I zAaJW+MUr4KT$L3Bb(lq)MaD9)br7*nS!f)jx)a~2sA67EKNC>7ckI5Q?8ETG);gVL z;r4IgdoUNbCN+USiOWfs_Eh3WaG^K3C*SVeit=2Wv)WHbut{{U4sxvt{rH13*3FSps!oNwJr0F z4Bc-5#~l`=`H~2q0ahqTrdX*e?=(9GN)zB&tL=+Sp-}=;T!M9XmHA6jO?t1L0Rq_O)w-YdZ6{^3{4_H(wf@kNdjH0E!2+i-oRE3bu#4D^%LLD0?P<++C*479=j+c(@=g{f z30GB4=EALE%@Y#I(I>%qE(jdy0VlM5D9bzP1BV1(6G6gVSQtvyr>5)EEtT9Ag(&K4 z&^Or=?Vz!+287w%CW!QE49e}POsE*du6ZGTD#Sk zvRA>+Drdf8zo!jnAuR|-XTBz4^JjY(6fZ8(^PyR%( z0(yE}KSIDv1#?b`46^i7@Tm@9T|Xl4(sJm^7Mb-uETFL+8H9(;X58cM9DH14Gvo0O zIV+~gGoi6)xV9ifgu59hSj(Q0VX0)1MX`AH2@g%YHwlywcY>vzlecZvGVW4m^9NPC;}Fk zp%E-c8@2rbxZ#!Fz*#~uFUyRD=--!#Vf<>^xDOq@Oso!BPh0d83dUB#Ef;428h(YC z0JkYOTp9z5+f3) zNOaCc$-RK30PrC{%LX!({0ERbnng5s14+ zC;-OzYsB=(zYR}YKUtP`VwE=4p^a(Lro)5yLiF)9LOO0Q?a(F(LRaq&ZVERC7FTFu zgqnC^k-BFL!Fd;u9|nkl`8z2hWqGD#Z7gy5Io}bnnXf7vdVP_%)iaXZihuaVAeU8Xqrv^XHpx8;%uv4J>xlDX*r8LZ9%KxXe*nygeSi&FU1z`O`uo={hwghYGl>2PfDi)!W&mo2DP214;uNea zwQ;qDSjO4!TQOlfdEb}763&5MDVe>tS4v|)NGk=c$%62f5QiWJ-pFp=VA5;4SMx;s zA+|DdeGg}Mb*S@uLJA`c2IKWELh0|&_H#}_3D?1m*_0ibq=sup#n*}c<6mL5!KgWT zdB6nb0lfG~f|n5YrNA@%)324h>~H%WC*jw8&~V|GBWjMI1kbYHyw!h|?rbB%Ne5k} z9iS~lnl|D&KX-Nn%4;JA^Xup`JNmEQ>X1mX1^Fgmp z3+*5JQf0ZQt(^$x@1;R1~qy4n9B#>?CZ5r*yH8%xy~XLQ6B%nkbN zedtPj1Umj7A}!w#6XAa2@#G)~Hd?tBLW~)rBXafHEWOUK^)Up=(rc2nVLEN7^C-QH zzjCQ?+Z(=~^AmrkD?LU4gg!=?!E1OX*IMgVc@?JlKa^t#lU~#)ZWl**aE4onytsc zKln^$+viE{lcF1LVj91YE<27!|BrY%ypT2z74Xaf`W>{X6^vZ*S=Llj057c+eeypd zKHWka@Usv;hw~O?Xy6TaHDyx5R5=0cpX~1&8z+6E;XJS2T3u!)tAk8232b;OeJ2Gs28!)T3+30_ z;jP&%`<}OiRdB2BzAJIRhB_1vP2!^vjbV%QtUt$N>q+c3JAwS4gZEacV4!}89Q@&- zOE-vD^2?>=PG^f`&*f^neW6^wzdERHzoyA= zkb;&2Mp(9Um>zSb#57+9^u{(vdiHg121bUZ=WOZOt?<~@$bma7nT4qC2Y6IqLSOzs z42~|PuOAlG1~-1og*Tv$%>|_gwmGiwtuRKWNz2$#;L26DsnCEQi3Q3+`aIVhqYN>{ zgx|r=V6kC4nYEz0YLNX$Vk2=1_}^BDM&2fr39MXuKj~gy-pM!3+LIGrhlucLaKIT@ zkrtCQjO-VcbviY5ug0O{8b(Rc#@j?B@e!<`fZ(Cq;HRGbTmZqah4zm@FoqklcWx7m ztlL9KTOkeM*i-s|j$+?Nr%gls?hrb<$G5E!)-VNl_-QlW1n*mb?20L9@f{+^&mAL0 z&3C|>zEatu4NZdk{BQBC4W4z=0h=UdYX;_&JbT)8RmgAAh zgi@;oJ^K?8En)gd!N>e|+7==;X~Q5wyC4XJiQ=EYH6pAPF}0*AM$UT6wrItQ8B;47 zvIFnxS1N%vvz%4hu(hs|*Xr9!MhKLR8N7CFDD{TFk6`S+Wb^MKneNc{m^S=gRD0e> zHMX{!*F(2_&plEbS4xCHWGv#FE*}9sf*S|ZuXWVl$>%A4OacEpfp&dv^=We zWw0&T_A7NgS(FQ}IagM$C3AF@F+324buHYSHJVyd*Vq6%-Op69>&lm{Avw$N=^fZ1 zU!jMI3Ha&2AT+j43fv%&48)S0&>LX&*7VWg0HoI*M}9WMzr@I*sdSYjdh~E z*~geF=P>*EUa3_3gEo;ua19D8OSa}-}6?5!MU=~)*sAL9Ic=abs8;REV#+A(vO!rJlA zzKs~9457_V!MbdB(G2|9PCF{Uw$-sYEi?l^Ajj%59Ab06q}>PEoT}3X_yJ#iMZ0U+ zoV`Q?Q%k`bz4=#S)c>JpXXzRHUexw0q2_%}Bi?UBzleGGLCXqO&F)bTSvA|!XImwO zp8XBnbxlE~zY)qH+b*h>1fL_jD0JjELOb(s>WzCRW&H-Pp6tu{dUiV7c0e3v!Q>YG zpho==kG8M^RPUjJDA?-U+bB;~{m{IxVZC)*a4-7*PN>OCU=Nd*6{6|C!?Mnj$h{SJ zRyo@M{~@D=c9(c4Bx2wP;Mr94uU|$y69Q0 zO%xaw^4bOB73{97&sAoEx*0VH>%YeC>!?vlI9Y)0CP29)Y+Oi7gdv&VO`0L8ctu-J zC4prjqPJzi5e4eF#+FBcSs{rvD@1tB3O_vMCF>9k>{qYh2Yt>!abtXWqdweYm4HVq z@Hw<&TkCC^RpjyEiD6Ao%K&~gwPN~TZ5p1I-K%iRPZ~6K^={d{(mNjX;7K8>zEPV9 z=-?JsP{u+u?g5b=-b%OYN44lj-zU?xqq6e}f&WdO#maHzBkKbKe9oYw58x?eA!>U7 z9^wj7>L1|HY(3ij2WTRN=-3~`%(VGRW1txPLqX^YlU{C{Mq&RA2fNY&#hD$rpw@sx`=AQ(UwjM-}1dG0(NgsbtKRQ<*>jYM5+uO37flnJcX|QNi56XOADygyNG&F=5v+^i^hA0 zp5ZAxhUUz6kM@o{1N^`vFVj8BJMs+h19Gay*haEBU(pQwfSkRlwh`30*2f+W!dm6C z2{6OGEQ3t2YJnYzFLV#1Q1e4@-26}W0QX=#G%Z{!^{1F=4~ZLH0tzg0CCc1q_}Cc0wg^VY#zXg^#YSx;3cm*A^;O#%?l9om7Poxt-;MYU+P?bg&eeT`F4;bUUvuwKaIfoAQ+#X$W7E{p`@ zA{YgzT%pm)M?@4#=^}zb&;rTgTi<2_lEqbD0`GU%dZlFc?|P*)_V0a$g~R`3Sh()1 zEC>X3w<3$W5O2}PhwA&mDgu^cL4d{uvEAoVAG$^QsKUjlYh5V7=HIw|4p*v4%uU=2;q{`{0y_SXdajJS}OK% z$pK)gXy%emej8XSP#KRDk6@JrplQ306qu&}@ukXGaicu^zN@rUOy#G9cM3>OcxtiL zwHICIkqR(XJmlfNp*TNs1U$7~=tst;ucve7RTeC$tf#7pq?MMfM=gG2ik~4`i~8_M*H&aST5|~cf8im za8iPH@X3^5TfGEZD3naS1YPEn1N+%NkYs6f>DmaKO}h_ESi{BCZo`G!!PZw991=9d zpBxa(9AY!nwu2J195UwG-j}e3i(qKTy&t#)7iJCnCDqWd(p@8|26w>*_yMLw|BD|G%`g5UnN1h52rLK9U4tSLm>Tf*6b6 z;bDHk6{V&Po6CF#hX46kiWz*PS4w8T=}S>xQl>Bam|_NQwo);a$0wkzOyXJXwJ)-w zrw+XJ2o0r@Rx5Z{g1wfSi(Vi}Wqt=N+yaL-1YUX72Tx^9xV92WjCBHNtPl?YFCCiV}FfnvlEpcg;qT6g8js1W}9Xm1vzlLtWjl? z1nwl@odx7z9e4;5GDVUWEgb}&52&qyo$QFcS$1zg4D~V@-d4N6ij9UQksZKr-sT`lMmp(2{!JjcYWg&JUV8=ic7*jO+L^%K0$@hsO&uO&bg-&3Gg<>&ctHXt z6Ey5YU~?ZM)viWOLFA#hL47(KrH zh5!n-DH7+ev}Z>JsRqE?CQI-E%D>oG@(dQzXB(aYheTd6$-%IPS{agV0pAgY&%T&R z5})Tu0Be|tldj+BMn13Ycfcj0pjqT~LcomhV9Jb#I_P#Vsm^zgWvkzZ>V9nxaP>-` z&w}piwseW}4;r9qpT!HVgTac628fu(e)}hU%Wr##zfJwyx9-unP9vXm5x9b;TVQql zO9pT*=Ce|nZKMR)6~kqLj}*jXo{o?R&R=g7K|W~Nd80foGpSgYR5jPgWQrfi7Ujn%y7b2Q;=pp3m}KEs~4PT#xO;!Ho1Y=1#_?o@Ri& z?j(togAI5NW>j9g1{8-xoY5FI(#2I>_cY4$mU{v8XDj%<=JHc%JQeu93gFWOMnb%& z#=l+uss@%oF2YxXta-dgOZh2k;?Xi7-W7zXMmE=@oG@|- zcN#)rWIs))N)UW3$uZAQldf64pKlq+-S_VBVtR0-`TrheZ}jmSXCCHGD=XFn3RA(A(4=A zaQP%n0%toE%9W6eRH|y6ByvpZvD5IALRFa|=xqu4^tcWh0OMY>unq5t&5XI4wY7S} zH{&*pAu97QT?@Z?7?{qu938K(LWegUnaZ$N47yCxU=&M{DfwrV4HZI7KOwNGRHrG> zY2c|m^R^gx3{`D!iMv~R4;Y%rKBQ;%uta1#5~4~9SEWS8;vBdnMTPpOfiD?ddZcaN z;jk2L-k+ee&wUgm=s$8e#Plu_Kxk2%BbaiZXAVu#)`*sF=CVcAp-#C9;x(tNt_i3Y z>{Ikn3@mPr8VHf<=ng?U1TWClC!0O~h>9LyD(X4q{90~P_&IKU>@iV!N`=-uXme8i zSljQOOYJZ#DmC~@&1tnaKw6{P8zAjt^Tzf;9}TQ`c1pr|N``L!8W^NGKy^DG{pbv5=FwhDrqT?-wSYxgN`p zF9x+k`=`RLg$-S(xhoX#I__$24T4*#WW-Q#n(#yzkVnzjFEG(6)>MER#)tp`1 z&718}=!A@1#($OSj7IU{WQ-z4Rd5&D*4(<%wo>YvM_oSwSGP57u_{-;qpyUM^SBTo z=u0^n$$zA<$Du#vWO#m*>fQm)#TgjmygPL>G+B$~7xxPV3Rk?!F@{t2ha&3`r|vG` zt7)IF0`%d9JNWU5-#AsL$@^AN13}uLE7zNa_DB_6ifW zRFY3|d5;u`ry?W9(3CYwC3ps=q+_uH;6jKkYn-ZOu@s^&m=@#9$(WIX5rVw50V)BV zb*MnwUzL=g5(H-KwWM>+er2y7U8ExSak+^{g&OiWmz#9-b1nH19Dp6&5zBoSM}La$Y9;Qj_w?YR>hNJf(PL`cv^H0Mvd`g z6hz0l1^E!)CLw{8a)+U(6G$yL1uaY!z{jQN>Hg$v+!3guKN(Am0RLBz^;3Ux3dA5DJ%Ah@Jj&PVXtZGfIT8ZRGz@?x zC>6C0fHg4<$r8!Q+;p@cksQh$gWgUghY({`<<=%UT9Qb@@|{SAa-T*aNl4BLnk}q^-q4+`M3$RcZ4fym8Z3G>6|3@v z!phaEI%gp6U^0uFjiwJKr*mhb8vJh-dOVn%!F>)*9|A}{kKP|bJ|8n116r{~cD2fk zegAuBegDomcq#DGld0cThqt8gsi9Mm-w=%Gi>$jJ9 zMZ-Au?TRC>@rowm$bt&{eDv`!GF)iDmEAu*GGsq)bPBCHbaNPKhC3X0sXs!zNRRGZ zfC^Gzjx0nqDI`NK!k<9QfUi@?NUj_nPf~z zhQxf6jT}?5#afPz%_Nz8$a1ru$EYi?=G*_R8d>5|`ha>|@TgzD-FQRN03ipro6XLC z_;|v^h*%hVKEo#eJXN>v&{{v^>newHm^lU<_dz}IAhq5@1a{t={T9TGfY1&xVc)#IkEls3{Ub(d$8`$enD6VEtT)If})^ zs29%-GPkn78+9{k(#kfg^jpx5=K!y{=faCqLxHteHRpXs8CuIL%U7;V1H_EEVspJEwh;;+`QzvgZ4=PM z=gIVxDH2Ttwgc&O9O|;au|&0L8;I{*>sFP00juo94CnwVCwp@C|G zuu^H8Rpo=O#yV4Fj`ui#k|XXUP`j=^?bsl;p($lMka`ZO%`8`0D^y3fF&2Kn)rltN zRZN%)ReUhSEN5LiK)#{|e9Kjh4LCAZJ>hslg%Y%!64lAY@tJ!h|oI zCbz_{tUIQObpI%V(|riiP*usg>3&NEF9DziE1tr`YoYs=2u+;}>-S`|doDRwYEwC? zI3t^nr3r$obOUNKQ}k6%CCu5rFOY+w&eJcD(UI?|VtCCKBRl3`E`VLLM-J*PL!~c} zBVhVA?9y0rhngp_2(Ex0dxBjH{91Uai$zode{N9P67gcuBL4%wtzEF^({eQa0V!Q4 ztR5F7hbTJsXC>zCECbd`v!#z$?2yzF=4f`+000>?6ay~}JPlwMiOl=hCg2pq6oDsF zRqkL@ScGRP;n@(w7H8_w+!tXr+=AA>2o}S!=-`W_ir$A=iDxq&`D@vV4qoc0AWHE# za|gQhBFThoR)Lc^Gh0*^gcLdC;MgE6h$lxpjio@49M1ENY^8Fx61z6AD~o+HT9*TB z|7Nr&ha65jXa==OH6 zM#fw;OHV${eFMF%Cy(cER#`GR=EIgu%+<+3CH)fMMU!|7S4prCCQeetV7sn-3y8P*Hn(G~oj z=l#v*;}wKmVK$R1csDU7$>9e=aB>R zzf#2tfN73|V(Z*+4J=i8BA^&}l#Sm4we9n;StKvd5f^6tS_PBCW5IY$WQ~IZVD~za zU5kxX@G7o;w)GpRps}qL5np!!N=79_kX|alP}sp>JRoDk87z?ZwO+zp!3W5z^4XEh zRsfKBf7(`wz#jqzxr%n^-n6#jMh*WGWw9M}22lqHa?!}xvtb;#q<=+actzyt2=oDZl6N)r1Y9^3x|fOYQ#7a1*OJD)w7W-4 zPmh*}oZqShp(zkHZd8ZmTvtIw#Dc(IjF_Ss&^u<92$1l#oCp@4MIuXOGCW8a)e&65 z*8bIcRn@Yut2)S8Caxb|-EZ}7WqnZlRqj!UnnS7vUQ;=k(|H2G2{2>kiS+E=Vf{|! zh)QidfPLz@^|+DTC_Qw?UL$qqpz8*52=%?nh_A4ohI6%oVr);*)Nf$sp!fykvwiQV zZuS*~D(>Fu3-PVtdd!vup+e6tB6E1NS0Vc%Qj*`PGF`gA={D~uB5?$TYnsbe`#lwPe~R&ERa*yDu&IF> zHtnd?zYOjXqomF|s{878y|x4bpuxJ#zkG?zBo|QiR^zWK6t{$o1>tkX5>hRhBDr{3b9qanHr~~# zx`YJ#@&Y>-qRmT4Mcjn!&Sxbf10fEV<6H+dBF>&5ZaH_IIzMn^z^3NFa%)G0rVhTf z0;kXyOGpV(DQ&evsEi+$keSgZRFM5#8N6~dY31!{{lO^Sl1Y`@Hygo>0Y0KC>?KQ` z3&4o7l#Jj3Z#FFjxqB?CT}sCAep8`KOUY6B<3@8OI*+DV+jRY^Xxgk3*x`psd zz1EO@C#s#`r`~PIej(}};h);oko^TyooUwNP>L}O^+#m+uF@U;)VfHbwyR33p@KdH ze-4eofsM^SWk2(QDVWpwQ+Pqapt}0Xb_M76w*#yWsYSuv7v87wyOY@?9qkHk`*)|Z z58B%nP-jm+cI4|rq2I+bz=ia$(tevAk z@Rd;f@+jD$7q(hqFaq3h`yZd`TW&o&qpOABT)fDq9v!UGh1O(J!>J}x5#SjUV_N&UV4<&dFk=!ke41WAM(=U`-5ejl-Y^{zgvm=#~#o@n)+S$ zlj|J**?(Sc+Olt{r0r+b4b-=dC%p+5?S*H#96%_kt6eKB|4bQB`nG@R%?*%$gq#xe z+Z&{PA?p7M2q(X*-aicD%driZUDli`-ng>+s=EEo^1%HStnlXym2pa z>K<3#?|XI;=XxQZs@`qU#zSDs?C{-~DaUs?F5S$XYY&?oy4)YT3g*}V^!z5g@oYW2~I{xThs4l+$?{DymM#8n~1nToQU~)Hn z-aw6f;~#lU3_{Jz+4+8RIoW>%5&zhs=G2{vEV}ck3Af3VDjpF zJW%vbaY4%~#o8MyOCQLDeU%lb`#@HCBM6fF*5y>2TIb(*X>hep;79c%;`>0L#^I~T z>6k*Lt4N8UNM?LNa<6iGIj^l0*;kPfgiBG+0}0{EDiGN3sNm9XY*=h8K=jCPpm9Jv zP+}Bcz@L~lF>`t9D#{d6oxBomJO+hOmju*af$N0IoDR`&n*Pi-2kCjz&Q8k28*d5b z+^%ol?PBHR))3gyOu<|n-V_KpGpIe7(;9vK2A^6VXbF~;mO|imj!BVEwA;E`qshhm z4p{1=3+}Iic<}g}E=@Jsv2!rtAj8>CsYDe<4mG`X7DL8g*1<U8((%?YLfHf1*PS}1~3$E-e!89mqNm- zo<6=$s~+uIO)CBW06hPPPOK*7x`$WE~QV7aFjRoXfkfLT{`iH-SZ;dX1c_afz#(!t_afETMfY&j;aHS%6d- zcw^nIY?p?>R$BBL2>4c1^BS2Gc0$$agogy|EM8Hk`4GFx6tqE=&QR`=3drnai2QEo2k6?*^yC0x%_;qrf=!6On5DyWlKdwRc zsP!QDSka30WK2{CMOeF(k!_unov*&{9Oieg?_EGQxU1u%ZAH7f1aadky6mOs3EQHEb7W9b*METw3jkC41ki#y*(vqeS+1Em0$_s=N!?v z?~2fr0#Z4cogQrT%*3$;R)IS847`WZ)E$AB|Dsbt=lQif_YbULAIojm_&6+>F$BF+ zK*kB#PvJ^D2&ADLW|#t9DIit(ebm}ewNa!l6RMM}VryS@O;|<5<}tC;j``sg27^i4 zs+_>Tdd9?ySRj*@g{i9p1;p^-DS1YZt4pbMsA<>w@y$eR5pjiW^n3o;er{VcvXPDZe z9djR@F_E%C7-v1aXADy-c2`U?@2t|!!83mgyBc{Cjm{XbS!D}?91;$c=_w@K04H8j z6t#iO3g4va>?dyTUjQcz*Z=!r_65ws&P^%^kWsdQ)D420h~W@T&!Qg>pW>p`lJ>}O zT=|#j&FZ32{v+>idWTmu!oMt*x)I15m*Q`ip&J{>0x&TzDg=A^611fdX5>OtTS&^s zmWppqhZ7J0bZa`CU7BjUAX>F);YP@?ua;OMgWz1IbUTPvdW-&rqv7x}P2W=4bxFxP zyOhs-Ei`Fg=nO-_8_5wt;p$CWlHoJhQ>JbtWiq+?PB4f#XYj%&-~o-=wJ%jqFN1*b z8_9g}465!hKB8>V<{X=@0Fg7tIRS+gkz2V+WGx~iK+*rCh@7mW)eik)%S$hh>(8<1 zM>pyXE&2uR`h_NKCgf8Sf~+(ev4m`3IKD%ql4R?BbHW*g;dhc?$d z3;YHFHh}T%P2}9P)evx++wnjM8;GV$1EW>jL7CUW&wKi*I_(lbxkP4pMQv28%ioL* zXpSwI0(|9WaxTA|0ftz+mcXkRZf4L9W%I zHZw^LFBP{wuepZlY+NXbfvCNj*hw*D6Yui#&I!)hc>^}#?G>veQ;H^x=g1w2gC+0kOkToO3EkKfjTuA zO3D~@Tcp}N7ZgPu4n}cTb7MWPNXI$4o=0do#)tHcfc0e))D>IEm{C#c8^O``3GkB06c=gHPFI*sOCo_1ieq)9t1SBI^^?m= z#RVrc$0nEF)tJb{<_Yb3aS@*b_!vvk<1M8AA0RI;CKZu4B<7}5fzVq0LRjZpwAr=6 z^&yQR0p`|L`~cd6!=YlZYel1r#W4O$(Y<1Fk}wPixTsy5YmZU4_aE(Ai=HWg1A(<@ zMF}|*F14L2A&2BcNZydt(o#FQIK`z=w}w2V&6CRdsqL}AWAFiYWtX}B(6Qs2C!u=( z*5|?d!1HBVwfUv;z+L9eFF{`YYl;)cUTb}`Il-J?Vzz75vB8$lJ7NQYwDuX4B{CW2 zmWE}QWj>xc5CXU*azFvN%ewe0^?I-gt=|f==UB9BE6j%?^wCyw0w74fLB2h3wL}*g z4xyhl5rcI488BFhoX6GUv;Q~%tSk@AUU$H$Q%@9}J@ieMkLJQW$=#Jkn^ z5+148xQVvDNls8>ZnjJNR>jFI+6h1GuUaBIS<|%e;nLP<(t`9!2+euRG|7v-`SSNh>{8+Iq_Ccyww45zfiYE%KHNbLl$VMdWBp+-#DrQXsfy*Fdk)TxYbLgZ zA>K|>r!;)pch9fo{v{7gv7sf^#yEAYzj+ud_88+(>P~VtHy%83lgjuBa&y4F7^$M` z-Xi=kwmnjG<8Dw{&rU1|s+n2jc$BOi2ekO_PV($u`C5<2`P>9Vm&2K;9L*?)v(ML2 zNjV&}jzwez9CMCE*%cslu0>y0z*(FeJ+2@pLTbV;GQMw^x^;?x7kusV6tFV)SECKP zfOv9Lzl+?WVR2v$>42B{-Ni`-1z$DaH^b%Rjhhw)z=+D-O{R($OX9~txhZl0UZ)Cv zJy2gZ2p!oC^JO*a+D*#gXivTe=6)C&xd+y0mUZUoxNgbd1NWUX(26}|3E=p64;c;r zqTV8344aIXQp@~}CT2H`0qQk=k{p%4Mb1bVf>%_lU1EvYXdJADRo60aqj?r9_hK0e zB%CarC=H2onT;!gko;}n`A{_KZE{NPFdP*c<`|q5>K6BLB=DN(bE0F~@=+B@;GGnk ztKnRcYaEUnz^8*Eh&PYCl9TQCDi4<_SI;X zl}r{dpg<~t9r*hHG_dd7f}rq8FQd1u9+$orh zQr;y8^iNeoC2*te&~3D)sll3R*v;;Mh@jmge#tig@DlCjlI3Tsb>Ys};Z6G4PjuzU$RM#^x@i}yA!z$w}-1xGf^7PEf z;ytlZDSb})RqN7Q%}kMCk}&T| zOetnEL&XAGT+#wQZw##rXj4o1KF=L2Kkv`y`};k<{K1`j?z!ijdzROEEzj5MnDj4~ z9Hz>d^9oLh3hU`KPJ)2&kWKOEyn1_&o^Bzu;TReu$`Z$r8SKcn&rf9hpvF#C) zwRuCVw#w*2;8JV1^`vjpFis9(I7PlIG~?u6u5nlKh%#@NJfqjPq`S#^w!Crvk+F5# zXJcF4j{bM~`1X3mHGGuXy)(72ui;KpL&K&sRSrgCJ>k2Ei}_yoBs2nXXoCgD7T;^!4H0*Dcz3lFHgLJx@d+7ph>0v1_DAESys)=hqx`im-ho_OJ74@@ z`n^;OCVxN+)-}I)dSyO_FTZja1V`xe98vz}GDj%Qj90}{eNA!c90j&y@Bh_q-B(%? z*emLxzmb$nXb_R7xQfJo-aEE5t9O5W_7 z*OdzG4A!UUo13Gy_$kbXmX!PL-)~u(Q)xskqB+w~9Kd>|`B-JCB`T-paKqv9`x(k? zsx#St{t)-iZ3?q=w_)2OnSL7r2TcyxEiZO7AM#6t&*k2r#mXXyWR_K8di}fDx=M)&=V0t24VBCX za=jyn7^|2lYT%BuyEf5QE+92kA|uvX#mq@qpo8@==qla9lax(+AJ}zL-wCAjU?nPCe&+#dSze7;84R% zGX5>A~fKh{4(mK3jMxNYpd9e=oxMTSyP9_zCHHpTE;*9*;0C z&|xo_oH;7x;6_tSw*3t%997F4Z%E7@&c&p#hS3%fI-SKbkoGtw5#imYm^n5vomN5j zyT8j?F>0Pz7Copyd@n$Q_nx5dQRxydiVqGhLw&Z*{bg@fBhQk*%NEn!WwZ1+GftJf zfP~kAFIqsx)iO&8meaf-Tr*0B$4t&Now=2r!d4EgC4nGg2Ko#)NtCAL^xwczE_W{N zzd@7a?j|7{>XzTHyK<<*T8P_a{TcQ2S#JN$boy4Fcq0s@T_krd?tesRzW%r;9 z^(r2$SK+Srw67#Dc%r)t6c2WR;_oh4s4*)Z>;uJveV}mn0i9#?3uamOrIrNc$TBh& zOXfHiqz_%@4(VBJnYlujCd-(SZv87vXt5)C1$p9MOuT9p?GLJdOg=^S{)-tpAzzo4 zvuv`|G_W72f;kDK>z{D-8q~8A&zAoE%=1>CK1pS**<_0HbuZS6B%*kSSvz98jx$rU z6JPkeugMTLGB>PJRU9xf#JBjeW1yz^1>;x2(ArUpK<#$jD3w;0t^IrsIrI(_F?7`8 zE_s+&TU+{fRkEV>Qpi^lpNWNqwS|QW?Y4y$LDzl8x1>~&y?vo0a@e((l%?Cq@9!`P zDS!I)8bX_!O6HcYcNqjr>?l*11SU_ClH+_zXOB&B#Eyn60jCA~iDSJAu7punef_6rCEVLy8k?bJ@W10B1W>e$b{%glS+ zrmlR%9F$|A%VCXDdnb(xhLtTtFEQGn!LA&MWIWV9mD-XSQk8nqdyTSj9H+ttHm+=$ z!=U*+e|6=^dQVI27szih1X^N0H)n>HTb6&07oh`w?mcFLdUtr&vThuT+eJ+eZGbO$ zx9lLk$Djdznk34Hl=qqNf(Kr*VIFyv zD~o>ZgCADY*AJFg)ZJ$bRa^Fk*!N2g#lQF9qyD!%yZY?b0LRfjmvtDIg{{3;?OAHn z0bm+e!3{z;Q%FX|FCN)vtKHUSE|O|(1rSS@pqs^9M%QN?xQFmM(>#{{II#W2ur8nM zhyZ}&etjR9#24>jags?>7}T`|L|V@bXP(zV zf0J57#@1s$-bEg-hpb{I#(E|oeh*#DwYzoal}SqYMyHx}rl_qV^{Q5wqPBAs@L(&{ zwHJ~4dPsE7lWXFc&e+&V{@KmGG}E(^7CYglUW&pQi4Pl3#Ohz%;b{Jz1I^Zn{75T`L~mK zSt=z@yC8o&Pu_7c$*`l%iVP?$^1Y(R`#mluQiTn=^krRSl*CX#B0ge<1a<}mCa#9I z_;DmV0sV?N`-`LruN6d5KW2;|G?w^BN?jYsncD z>iuz$bA<*zQ0@D5JqtzKL`8Yqo^zvq#abuxP-tu*%) z&(=td^8nd)23#2-ubg3Wqz7L<%Zv>bKT=eaW*TOs*Gx{%+@yVH5KJe~R?j`lJPjpS zrLrs}w7fi|XbVD=!r?1~^ET#O&OWk~>#IaaXH~Gj3*ecCsB13=hj%YRzf43Bo@6UluNSFY51km zSn-pJOg#@ZY9?8Io{8a$XgOIYz5j0PktzSJv5xahTF7e6hA0gcq+Ze8M<+Y)hF0op zUnM@DGDH2OFfpjj^UA3*0v6eA2p8}vvktz+u1|qf|Bh%rV`gK;<$uPcsiaU+S5h$n z%lp00n6;76V?^pXFW?^RhLIM-u!BLSXt(rJ`kJm}zb|G-Ml^bWcKHb5WPZ!U_+T;DXf*7tzCQZq-SGLqY4{HL(_;G zP4qsWlzongKuE*qOz_Bj&8^Q9ecXD~?zeX$L(6NrMinrD`wt#2x4ouwM5SA+eC?|; zA;vp|QAbv}JPLXU@%@4c8vUBCb!}$%RbTwqZt^ol1COq~pj5ThMX^;e#s&)e*tCscwJlBPDqUn@2DsKAqCUZ{RI=OF9~Wh zJ8umDu4_+UTRGqUX0YYS$S$8FZy(vyF>un6@uq=kJzL12FPUH&ut}4@WCq2aQct~V z&g>W@V3-|IX#tzndAiC#di1Qm&`*`Zbfw8 zbT)D~nz|N+vD)#Tb&7WPN5sv;7qqq2GHV~b_JXqg!9m4+&o)gr#qOZ>Fkb@736u4l zuNeJ^9(rPTZ{*0ppQvilSbz{1mrqvO>^i_5jY`VmB_?uJ2|Qn5J(>NH@e zpmOk6BAMnwEy8$*VdBAf)!FRggOnk`na$#so3Zv@UWf`QB>4gpD#La91yC3R*>eGE zqGQp?t5jFjR?Etw%S$^O?s8#QmFq#> zTcwV(am80H%0rw_@o|Jjm~zNdDsfFY^a^)vQe^K(ceSq#Fnx3{yUd51>^WA#jk3L| zYaDK^veq2*D_2@n1-3)FBcq@rK;m9&Lq%%MVN+F)c7bn5l~=v;y&JOA4?)ROSk;pu zlUVvPfpGkM)@`EH>Q)VUo$C+ z%^p3aNdm#!v(SCIb{dF%=^$(zF6N4X4iBDB0s-nfG8E|Z+O!bCBhEARerw(~{u z^A#|VDE%tbxanl!Rc8B;Q)+CJIQXMdiPv@%9C}BOnJXp@=}(Fo?O&E^3Fb(?()Q0_ zqWFdxJmM6pimv4PU*SuMuI%`4@lSA}?`24VpSMbD-royscV~}x@6q42D;2Itjqwy& z@eQ+Eh9Z9c1|FrfwNzQUSgGw$SRyrLyLVj&XrPm%e+!S&ZRF^;(Ab_LpM1+K_bZpj zN$pV@Q!LKJz$?aMWI`M84pJObl4jWSj0~t$mh+lr*gz3tOE?dUVX4XRq}{MGGD?#c z>z{A53mbA%@7WD&W*JsD?Qan`e$g7+vQ1MapZ9u6N&2J*fB<{e?NxVpxVIyn=iM3p#{l*2^VrSFM%a)*6Mw@FcVHF{oIa(O^_s z4f9L8wOr6{TY2d%IgDA|-RZrliCx}3mo#nd(H*Ht7H?TguGW$|$ZRgF?b1WUYHR!A zy0f|57kF3bb!*9O+3DwHqL0MPLG?ZkLr`yk3^1@VeM_FU;Y@*V^Cg5Y$#of?SpMYT zE?L*~A6{y?8;Zo=^LgV@T}j&)g)dUWZpXuHTUTnw!(QTlrTAaPO)h!O*J4)HL36^Z0$7^y&aE$RTWKH3Zw`4_jnI z9IDu_%MoxyVz#Nwg)d>W@^k-CTT3=^A=dKQVcxyM8kexn@+i)X|IlHzYIk^#T=M8V>v6{Oik7yHdwRT$$pEKi1Gx z($M60_LS?2)Wzul+P|?A{BFleKeOVIu2ffi-Te&jH@UciD~TQP$J%a|K#sog@Aq$Z z_!Knx96Sob$8mJYej$fpLliE`6k!G4&9J2_I)vavPWwS8#s-2-_fCa&#nWZVw(Cnf z48fKt%?85?OK`sF&50yMX;wCvHx}NcPXeDzG6|bZEH`%rlNTXEZ`Zf# z0ITPcn)CRQN?)vIVot~Gt5lvm+hJSMsw~K`-9iu}XQlG;;fo87yjUj3GJbQnEaR}0 z@&VVu+<8_?IWOxaKkG|=d-lMi=yRe!IhP}pd&gw{b z(P3D8aDS^Zky)ee8eM#k)0wB+pwo;)%VEQOZ6|Py7GZVqC5u;LY(87^dbHiJkdmlr zV;qKsc40Ak*5NEL#eL^ECvsN8Lc6oTepb*wd=F0%D7*i8m-~5Op0`U_(zK)1TG(nZ z(1HLRHjwg8CNwj*)h6L|c44JS$mdk&Ri>Hitw;Botbg_j8{6vl_Rid}`%M}n(8?s__+G)6NSdkrkiDYE1m z6Sgc@%SB)f6z2JYF~jpJ^3BHA2xJE_?OVNJrgQUl#efRHKlh( z%3Fo}A+Pf;VMb}S&SaJJwn#Btj&tjKKg--5Y^>1bOKW_24q**K@=upG8qrlFR|kMN_70HzJ|4)7HC&KsvNS`Ea2T-<9~#fNkP_;c zCdHs=U$LNUbBbM9h2m-*I!k~IM6817x)3!b7-@FHJd3c(VR*c3a{22`<@S%_s{Yj! zk7y7dxmASOgxqW7Q;}K+w2?jsV^q)GLIc3aI8Bax^nI^n_zl z3f5a;Rg`^p$nW`pRZOlI6ww*@d;)?@MZ{br@IB0>`w6HVE^U zyh+FP{sOy=K}9j=nO5QPYEPOP0FSgg9nN+1GlkU$z3g6z%U7zZJqsFTVK2D2b^2#L z>6c|e&c=6`MfpH-Hi|=*+(J(QdNSksf9XbEr@$;2eT5Y+Ff#M|?1q^@ytPl$X20O) z5|(Et`n3?<#jNaVU$nb-a6q=s*I2DHXI`nZ2rDe{{+9UTCFLau;IMxm7J=oAwZP(4 zkbTL!Rajs9j;`&h-~08ADr-~28P%baveREldb+h8G5%2Lc4TByZXsi`_=*Emq_bkFD zU*3INWW+HJ#ci*K2?^n<}OM_p`L%-GybK@=(RR?SR3qy z)paW^%ETqBcqZTAeo8+3o(akPAfg_g;OE^_Z#K5Qz@KENC8gneT|S6H%{_x) zd=1(=LCkeoMx-Q>S+|4VFkOn=rz0dKMuj$I4@v%k37)^y6(DQ)SfS<2t-?}m^{z4{ zyt*xhIdJlG%bh9_QI&n)&(paML_4%epU?*krCpc<{swf(B8#@9?hHKvPfGh)3b6O& z$m>5a@dZn}-&Hh)p63 z?MmI-vQSg!zyil{d(Y?)YN)2>SJBZXZ))PAzE){rht$}STGEcrq$aB9mX()U&J@M5MeP4*DlsfTP@K+<3Dtjx@qqNG%pR& zs7`f!SpeQU8SjaTN=vk+=}hmJ(%#Q#(k-g3S>e@m+VrK=)JRiAFqO$O0}N8xvdT@p z0b6zAes8PJS4>wq?@7!pz8%ALBU!6^P)UYJx8eNWntIAz6rXD?_(s}#o;FAn*gE9hh*)V7M$=IkURX4wx8U@bd<~WlON6(fn z{AMTUSNEqoO>v0SLZ#=X5YO>44)IhyJtZYyk(M4Nu)t+E_eSa=Ue&&*vqYs?3<)q{ zs35BqC(xX=t2GuwSWUTa)6rHTqV*~QoGX|$j~WRSbdNYzXghFF^=mrwHhf0wpn&F! zse7*CS*r-h>+-1qC}c%Y+m8+6kC3i;%{SdYgSF)oS|ekcn+p`#SrfIF#^e2tSl{2D z)nY|)Uf^3ShEZrS=&Lal}TJ}i3tjHSzG+4JfMOYa0f}b21f~^a1pSb5m0!?p1uy);dj%dxn z;Ri#@Ubv9&ZBuHYd#ri^OdOJX0P#A@DLsS^YUI{6vn*ubE&!Vg{$a4_?`jww$1HcFN}5xW4HmFkGQQ3;=I5T z6||H~t#2!;{9ry(-~~inaYRk1%+^1Aw_ZLArPG^o;$K8mrjD^jlPp)FDLZ;efdVb?>u zGV2uucy4*!m*X&(D_d$>6wOEWR<)296kQ6kR_Mi>A3n0mn+rA`(^(9I;UsK&jQWk? ztZn9a<7GI+0aOTx?$HT%w;w24o5p$ zv3L+z6(LMuT{yS1`M^$y5}!cs8X!YMijRUWo76Jul<}C%6%EC!FCEE*OlWK|n4+$B zto41$NF#RI`j_A2AVJHBg(kh`I z$52JMPQ`VWNsEvHlh!Jvp~Ad$wMjtG$ZT=F$2$i)E*$NNTrf zYEDwsb*2Oqpdj`~?+zj2EHn~3+S(M_Z$7jb#sPy6T2jB$VHlY`Dhtlh-1N2&eb1Ur zhLrFA!CKfIB_#@N)l_bp%P{g_s68?kewN&{R@*^SWE8SOU2JT6%Oa#$yu_SmmUBv% zkl-?e+YQMF$FxT3W7qhEQ2^c4w@d|bh>L+&z_L?XF|f`EFJ$cjDE9QRtHIPKGX;?x z1d`+(drE#z1y#87N5=pKn0dF7hblE5Rn!?x;huJ3U}%%eko^9B)8w#(!zil|fZxgC z9YPAe%_O8SYqh4J3B5FD%C6Ux4*Aa(HB>!`MXFqWzYA;_vt!scV*CNK9kObJDi%mBps<^TfJnhspDN< zQdjCYhnL*toajiMkf^GRw;TM*0N5z-wMSFX6aHga(P%nm98QabT9^Y`>Qoz|HI*mI zn6rngPH4S6fN1RS$^Z%yMvIHyH?B4=K6w&T(}zyYK|>!{2QhT4hfDt&>!DCr+-k92 z7n^$t;<7uv({ZxLHZ|0Wf`aL{Z$)vcuuO}5*-($0KeGJb~w(pxgA!K_PIN) z&2jFgJMHwl_e{bll{tIcA#K*7vaIaeZ@QBFYnmFgtKS6CZUxbXnd}M+4w*dL4 zDSaZSWfjHXo1!!n$vt$>ob0%C@jjT|<2GfIcpKh-o0%rw3jMe9Qpv!3%*cYqaWpwr z11vaxSYja@_?DDy-cydd)>sXyZT{k2ca{c}Tlni`Gb-M1&Nfqz9aF6K{)<}ZRhutv z-gDKR+=k50(HAYT+6ECEv#0#ByHIWOmEm~c!h^0;kS_;TomAUWiQw zgv6Zb82E+55Lr3e5tW7+Xx(387b0QMFY|(kaQgP$T@Vy*-KAVf(QgHJ!CN{KG)+&t z6e)ROvW$=Kwnn9n{88rl(Oqop_hH%=`A>84?lBmQJdfX{2&GY{zq?CmU29Yt7XqRQ z{s7jQ2~Y&Yp8f%%5({ofJ5?V0WHJZ~`~ppp(XGP34k5W?ssv(U>-n&bsnWJCvhNSZ zzW{kH!Z?T3+zokUn;-PA*ivil14Dt0=zJ#Nhbib82$WuGG|3WQ2B&C?!L7;?tS1_f z-LWz(Ln;wJg$65bjioG9&DDlhgWk1|Mx$}f9n}LKXs`!<+n0x12Gc~#a-B($(!gg* z9L_|SRn}@XcL*cVUeodj%ivIuLCYDbghDXYD!)Xrz#4B1fag^k^1HG}Rod8CVcYe7z|Secxa)P;E)Q(k?{n^8>g<)Po+Wt8Epc z?5l+4=3h`NGPrvI-O*|-)?WAgU9}1%%`POs_Du~Nca>$M9kA7%D|Q%oZ7}=a9=eI2 zvaJByQE}Ld^-B6J0&jeuVtG6nIA<1eSunDf9mNC8nrciim*hhHT{#2*TnLxRUHMwNXKV! z?iY)$_o3K~oe&{oIB)9>QE&cV9pKof3)(QFxSd@q_HThqe#LqbSm@UCcfl`EgPWIj zcMLZQ#swH}5Ngo+>P}mouJ$-wE-;ZRON)bxZr&|ZW!$`r&h94ySoE2m4W#cblT#2B zO4A=)*AFgF%>&C5QPL=O?XTsDrnr}eSp{of>g&%^SMWFa(LmMQ(D3V?CXv#JT|&PP#I5<_@cw3M z3ZJ8CAb;?;r#(R{F2@&U2Yddn-}nFbc?BX#`fsOh;y#!6Wpw&=xDHg@7$y4EBK^gFE?vDJ(rOI^-3B0 zi0q_}%$BipyeJDX4=luVQY&Lm!%VwP&c*=|W0SM#xVt82AB8K~Lkf1dUp=rjqk7;l zI!=+~k=cVt;!h(Y8?3lQ!6t-O=o;J2Wj|5}yd(cQ@=xsb_fc{!^+?yDw-|TB&up&uL_UjkpGlS>l#nMqSPif_&wH>#qXH<; za|R(O>;oyw16-X^0!g@0Us{R)TE0zt+tbNq4|XtH6jZ0In_9Y>_<6DcDjK0d)I0&) zG}x1kVe&N~1U)5Wkth3$4BC}h3_Bu>02yJ5LOCA&ddK^l}SY@LW}gMJVLEzFdXKa}ir&j8IUkfX?>DmGm4g07a3 zbt*P~z%*^sw%)Y#-n55LDej*XEu z=*V7<9jp@-J&`MfCd&g*g1X4$WOd*le5#bRbL!JEw=U!gk^`l6RP?gcv>#B9Q~L*_6ky|} z9@=Xx`hj{3uA%O==*OWx?BJ*hSWO{((jBFmF>m3hP*db1S>sjBAZ#{w(E$6wb3W`; zAP<^-*qEVCn$x6~7QfENy5RT{TJu9r zLgEHsre~3v1K22O0ogo&jSPQTx8bosyCSCMu$2<2sQPjxkjfi!)9a!EuYU(Q6-4KJ zjeI?Tol9|7!+lvhX2JYvm<1GrfY$$)FPkh)CmKI?v|oj8UV2%3c{-j_Q5{d0__5RI zi*Ng}2_s+{{1K+Xq9{pS;_u&&>lL&o3+#h6CkM8d1YI0pRsy|kVl%n`x^gx*r{B4G z?L`V5_wi>DTu4_6p<_VF0pBA9wxeW(Kbs1q!d8Da(XYQ$x}tpCZ@lBrPD~foT%wxp z%DdXJDti+q#qMckJ?Q)@M7|N5pQJqPBWXHl6Z4AkAn^3Tk4p()#}B#{(dv}}jT1bj zPShOzLd`5bQSs*ci-=a{=t1vN|0(qh_BT zjA$hYks+?M;v2QIHI@(=Cxgz)vH;lqzt2ZAwMtDa9jc8QHfq619p?|YU3q^934_G& zmq+3d>u^Na_-mP$eyni-a~N{$xRg_Zcl79tA8=X)ClX2CXe}@yh)jLnqatnqr%ZS! z;bVOq>DI7nSw#%-)UvZvP->;vv@oxdy#OWzm1e0QSvulHD7mOF8aTtMR8!o4hBY)A zNU4?$GJLBZvSj!V*_i)slJno%QZ>_|mbf&MPW1pBNr*r9ZQes_w5lRt0Dub)wbZ4N zcKQ$SR7g5b_rYHaiEY(8t7caC4S=2L6j27Uk)RYwf$V|_S?ZI|n4&w;EDM5;Uf2E| zbTlQEh8?9oTtjnc*ij5Ib@6fQm%7~gv>b9ekewR$S2x0|&+TuA5UBe9V9*l>oe=r_u@&oZuIhFap z;PLrY5Ias_Wv8m4`J*5mX2>XOikvPpIo@`JvihiPni;dL z^E_ypN6ZM17`-e5kUmlQwXL2G1v1_V1-Y3@BEndmOm89+!q^c$)Og{Jcv}yA4l#wX zLkGCus-u{_OxRDzM`8HrZRDpgHbS#GM7!c{<3^h+=#x>Oe)2x!{7O^%6^RUIC!yrL za5e)?tqx~L;;u6suT3R>5v&P``y$vU!l!DUQJViLPK_OZtWlzuY16pr>uP>MJ-#~j z1YT&;vCC+?qTTJ{;+^l2@jN>$^_s4A=@RohEswfAuj=K_?{v5o-8|3BYP)n0SL_J4 z9k zj(iitj^K#;;=W!%Ps77q0;-BljRsU?AM92=0h*TYb@*|8-(>H)v?6t1wIVEGsm7t0PoQEVI=>ESv5o-Ke}iN*90QwHOb635cZia0hg@PKZGy;=s~M82K#%*lBq zH&9X;nfx7jD~=5gTcz%g1zTnTP5Ev+W701YBPvr6l`aW7F>OUbwJo6}C!QS?P=V<2X7&taY;3vOGD|YL@b!2$ zN%Mn_j*${>OjLTc=cG05uT3YN@vLs#{YP=)Bf#l$Cf%nDh*oxgf@2nsQ<_gftxD^p z7xO9SH62MEh;IE+M_wMt(wH7~1KF^^TL>|@VWtF1q!nCRDmyEc<2;km_1_O^N%H9BG6$=U>{QTf&)EI z#h~_uM3=~FWk2i4$V4_i`2iAw9EzDg>avvm{@Yk2(TeOla(q9&UXR8%QI@YXk)1HK zEN~{i@S~r#K}s$$F`fhrvw!rp_J%%j)v*9SknA5R7I@xy%9~Jz*M=xCvLyDM!N1Tp zI-5ZluBJ5A}-d!*jdkSO*A^w zQGlhH$zOe6Spdz3>%w+~i8X!@LEat2J`^}d3kPVZy-O276%|fStF9eK4CM z%_CnAX7|!wT{ndNAo&(Z4g98|aNL$Qllq=k3R?IOd;chPDWmJ<7&%a!*$t;t@yLPb zy9>z^$?Qlv=w-?5PC=u@ zv>@}Gq3je2n6?dNL*Vsxawxkn9-|QDD-wb1r@YLcyMJ9~%c6_RA7r*Lnbd_HV+o!2CSH{r_W0btI*fxEeMB2 z9rf?eFtg}&ou&L?U|B%k_6WO;@=#?aQ`{mbhssT&Be}DL+#LZ~a}~*Y2piWH^87>W zSbnM|FC;ckA6;i~gdS;}dGIZJ?2@k3LtOeHAAqE>TeUyL4x%IEHc$gB)byd)-jTuC6$s9DeNZP9Zq4F4;6G8TaSSX(R0H@`=vOOf3J}x%*?c=!iZVEb zdpoS(mim!{quAhRQB4Q5tRvwcHh;0S>$sNre@b=@G91j4waN3HXB;I4#@W=qZa|UgUU5+Em#>TEx zh;fr`YQEx81ENaCQP5D5O$HZW7v>c<_Mhi(>aB{XVda68s3GYjAGOc zAEyEX(Gss+A|A1XuSd4rOht!WGIwoY?f>{1JgvwO3kf8b$FNcQK)!{Ipk+lG8(h(} ztovszp)7q`f7ZycY@z`lJYIqD_YUg<{dn5Nv{z!(kJ@%c!~`V#HaqmaVL{m*^o<=S z9Rr_3yngh1#Ta)lKY*Twv|b@?_v1T!WXxJWWQQVH%ukMvW#jWF($M&p$dk^AI!GBn zKfG5i&`gQehL1h8S6CYP*edB9rmzL^wTw1*n1Tu+9aid&(;9iw3f+9`m*2gTo9vF0 zd^w^en0G`OoXP!%#OjBLAN5THNgc-q$*x9_h2z)}1%A9SgpbTum{~5kIE7R4`*${# z*NW1W=xCN2%FoQ#B#TkZZQ&?!qB9I#0+G>cs4~5!V5f^I-X5p#DnW>3rWFv$m$D8`FJ*N z0=VolQ80)ZD9{5Pa6$vlgEPm8do0ZO=jFD6yh*>THh~(3DFPgE7kX&C?c_vWNP2k! zJH}@azv{#%^@?*RPD>^2gURFxtf0|P7+^NQbxtzHHcp|vrC2v)cLHZ5B}=Gd#L>}yibaXdY=f=rskCU}mAtrEXCO=1U1 zCmefi62ydHaSTOVO8aP@({&)?fp^=tJKKkoFVfjj(qY8sVK!W@4;erPJq*@vBFT7| zO`==m=7(8fzyyB5;WC7^n!7!$>3}nxR6NWYII&0(hca^*@y}p4>i@39AC7;?-+;iJN{t`^6dTUjIeazm>s?0Ea~SLPpY@0rARg(BzguTE9TDNQ%pTbNQ^U`w+qw>Yr$lYzG39q z$!s+9Fc0p^HjGqFW_8+Oe21TZYq&?5^TyTInf`EaL+I=*^37y6bkfUVmEXg=&6&aD ztRt+9s_$Jw)W}@#uGF4C!zbQ^m$i2*@YF2w%rx+ypGS~4rm>SI(#l1? zqh5&s?`?KJ`(+m0*Ey^|UIY5k6d4L-{qMKrTrZ%Nl&JdJhVkF!r&O+NQIgm!NGNm2 znk+W7U>G02lrq{N6})xRd;66SAgv@J6CGBmZ5l5*VXKIf;|IvEK2Fr^V4cqwIF0td zd~!aTSh__cR;sow6s@nKp>so|x^%6^y482xx?lHfrO%^6sj=0(dDpSHb=LIS0$t%@ z!c1pBlxC4nrlWITBi+;4ggK%*(;ofYjM2WaD^-r8f7HD1i!G(XSC0AKua8Pn7JrT+ z9no~Np)9TsT7_>w4xp(`aUT58?!sX;#z!d)DU;VC&f24FZ1DN8Y8hUulYt^vc;OXf z#y#}vHIK3(K{IIX;^8n{-a;T%9L>W4(BFr!OC5MwF6qFRlGmmly13n@NjyB>2(h-IjrK{wrmjcz$2SEvVBFDd2iv zXk?z{*UD^6&nbsZaXohBvnaN97GL^2Y_U+|N{XK@o?q!z9HRfJuQJ<0Zp>i)y=RLp ze~iaTEw(wtYbMJVh#P2c!b#D+G`07$-?D#F3F5xxd^yk&ImwnS9&m6|>;s2wE{}$E z{wSmS>Kn3L{J<#!$?DD@WVU&Htu#!JAM<&f%ksUl1E_$3}#o6txH{p$U9SMb_2sSDG4wR@Ph(x+d` zz})Qk;ej;Y+{^S0ae>@dqd#yO(M6f?Kf{Avp#5u!eBN$V8)LJm|UTFJcG*wH-6=Gkmg=oY#V5r@HH zK=g%FfXY#FwWrHkGxHfzKN~xllzcfGl5h_BeKtExu}WS0C>it^J6^e1lM2mWtF&}0 z+42}W%1=D^`2n@#V$$#!8y!N)Bn|{ashE;L-2AOaCHEc^ty5uhpo7>#vgWYGQ0H8p z!=^+)SlDc?EZN^szS;gdZBbq7!Kvrr?vw-xV-FdUjnBv;Q?uD2+KLDqEoD}?41vg2 z>d@4A6(4ZENJ_IoXjhZ!Y&JoGmS&MF*=*SGZ`EaU%qg_oId0u3l!+_EU*@@~Vwe<8 zRh4W0x0r;_Lv5!>;#_tj^l)qDLKU)|yfPPi(^JGb7aQGEtA#m`cxNcvhQ*DRL1&!?wzNH(q$W}6p7YQ$Pwf!{HB74vFE!j7Z<&*E1 zi1$$_J(Kfk_sl{;z7<_RhgI46l(%y?)`M3ScWl4( z$j5mrWiio7*$d?D02H2*7IrJTo0k-R`>)ouk{`T7E4VS8TfIwn0aRS&1>JpKblvIR zz8Jj&|7Y&v=Xt=4yV^70|ZWZ^Uz)V`N|n$Hf@zealy zysjy3v+Wi7+x9ANQA$cmmRY9s)B4g^N%%@Oe2|#+{<@;$u*l14<&8GJku$U9)GXQG zHhxm7(N0#ZWQR)auIntJnqnTYQ;UF;1024;A&3IL`m{FMVJiK`>L_dU-XQ>Gc+G*bruZWadgTb2S^5 zhHdY)z{G(&uAnv6bROgqg`f6-8+RBEb+8}33TPIHo;BSU^cZ};?QOndl(b%9JId>E zmD_5_(bcfD){>spSeCWKV-1+gH_4zi(2~DN7Pv1(Ygm1-gHINZm2yNCqcVM*$Pj!P zQM;6!TEnKth$}#}Wr)lr&WVaVde41k6b_8y@rEF^Imn>3Y>4)MK8v8w9>=p_`uW>1 z7%`(mW2OWFw}zgy#J^yJ0(dQU>nu{WmVL5dqHb4Ci0uQu_CvnHPwM=Tw>5|xNYvZ- z+FW0$(MgB3pI(1uqJv^&w2@JjHWxjVxE>Mxq@^G6@m}4#>u#FJ_+z^ccW52;f<$xp^j=j{Nu*Vxohpe}>dimRl&f2s_|kKH?OFbKa(U{d^{wYuUox8X zDQE{rJ!neL^JW@WJM~j+6qqH2>HMG3CVe8FBUciorg&O=o)@({rJrJo#@7OR02doA zIkb*Vocbw$(WgOFd0(QsC1fqbS5XzXNuN|sp&%FK**`|QAsM#MP=NSoSv{reTzHYE zBrle_+BnbiBw{@qr#z2Uj(gNaW~^ri`J)1+zXFOELj|N{J*#2G35Nnn^?Eiq5-sGG z;7l@Ja-2iOwCqq-*wZ8U8j59X|AKdZ&X*ZlU;nP&3w#!-7kU|K z>6bh?z5zzc^p`iXA>p6$jowR|Xj{&Bdmg6M+nV`!m0c;RMfKh5*$7_&!xn(@s{Bfu zc^gu5H?q^C+>LVnuZ`N~S7&qLE56#u#uPO3fcyDKjbHN3cS}OA7WP@I2FDLLu4``I z1ZURwUQyKhSf)yyU+^uT^Da&j?|r1nc7_-64_y?!c~N=eYMwV8ug1~%S2ytNi5Qjg z0WFMs3aCi-nX`EA{Pcm|^-Sm^Pj6y9f zzkF<8L|6t&4(4;*8D*`wvTcjWXPYpX$fRHmU-9IJO>Btl0#De@?C|hrUIbW)+A_NP zH1jl|T1Nz$WLrVzZ)P7#xX9m1!x`KA`_P6u{90zaM4LmEom92wum;)BzG1becDAX= z`!6A58PECuO%u`nID4^a zNbkh3-XW03lwa-HS^IN_R063+|F561@Jm27MDYvw*?#FiOBpGfSS`l^j^F|HH&x`vt*|cV z5Y09=TB;|bx3SZ34(+aOtX|%ESVfL*W5+5gB1)slPuti;wLY{p(bpVwx!kgvGU5}b zSP^<}@OCy%o@-T+1>4!^0gr3e$jyx@^r#qOhW@5?V8qAJgc(Uawc1A*$It!C* zP8g*`hQ~E20p`=mj`J85b6U)`Bh0v<4Dg_?8EMoMQT;+F8Q2TGKZ3D#FBsI z$^56;aM{m1+4eLfvm8?OG?s1_>3$mfi=MDM*hdD5?Q@^^;|_LAPQ^hQjWcx4j2WA@j(8ou*T#wnoH50^g<8;Y z44^40z~Rh9^G#9N;-}I1N@w_$h%#B-_R9Q&sx1d-NDJz9xI5&9!iHvc2Nk+Hk1PP^vce@ud>MCKXz)MAXWJi{9AL$(aIntM{LD zH3!wp57s&F@Fc5{4SiTHV5IOq#st0c_kodFlo%UdM1(AW-h;C*vciZUexR?-TfpI? zxBGDALTem+?(IGSn)d2KHl)Bu5T?_&9FcFKn{$8bb3UrE`3Uz@_}pLnoVi-t05K&h z9(iEMbwacAcM6Yw0^jQEe(5>d$vyptAsHlDIJHb&4YW&B0*#at=_i4e#aIp9`wiS) zAsI#xCO@*+2*Tt~4j9?cKtG|8!!8q>qoAASFEKj;;4Fvso;R|A)IxC02%*@Yc$wJH zct2qqWAGQ^w~pF1IcC20exD}$3!Ivd-Wxy6-Ak$dBn#Q;+bd0M3fsAeZS`XXe{$Fa zRMN*9l0xxizO}r|Dbvqq?S7IxV4N<|uK<9SR^E%({Bj?oueE=yiAf6U4UnMJF*{iy z*IyW#E{RO1C&HYf<5S4R71mE?S|bRco!- zzV4OZxf4*|@B9AG-^Yi{+_}rS_nv$1x#ymxqHo|7_a0iqX&b36T=?*ji|K9!Z49T` zXqt-HO?bFRvMwTa5U7>MGR_MOQ`XPf3ucY6cR@}5A@`W5zGwm>S(tfLK6|o2%6Sb zm*CMo^A>3NXwj9oh}8aFPVg(n52V2(qvL629uPBlhhs|u-6RH!mx-kou@O#w#C#gc z=B^{+$wcrPf$y=VpqJMXFDjG3_RYt9wF%Wh)MRLbG5T8*(7km;9EM5zHf+%eXzbg> z(>Va_0WtVn`4axeMO;dW4X%{W2JQ0?D6haM$dJ%HJO}vZC7g*q2 zlYmxPh>j4L6Xq)zk-)8mhbcqCp+!|hxG*+_=IJR9x=8@%vi!+Wpx)9TGUi2Lu(z)V zVNL=%ww@SUF(p#5lBbM%ScJzFM`KO+q5)%rluf0b`8_c9Y#QzTTjtVNrBXi0lm3|= z$W|8s1}XRs3$pg3yC#FzcT>Ckd;r^@ZfUcZY3rIn11SKmyEim~Z=N!3SAq zDy2CnuevPMI$Vj&8$encL~{n(ok2Gq#FA>~_?~8eAO!mHJuLw(tpSUJtOMxPmwm^+ zF+u@5khTxd!ijHZRM!|DzEFB~TT_5Xzt$Bv2?ndN5i|g_`lou>K{P}W&h23b!>=BG zhv4_oJ?v2Y4!@Z+c-?eX%9Y&`^b=f`C#JT`8 z^IaVdS)1Q?(wu? z4DB6<44a6-5}5JHXwfEOls_nNEy8yqn~0TiXABr6P$|@6k5S?>`qfFBh45+AJHQ;| zq4n<&>qJd4DEwXGJ9z#5T_TxkifPJW>^+L3e!w{Cs);Wog|u-xx>gNp;Du&8e=;Z5%37MEF^9A>$lrO+?Wg8tki3{3yp6nI(=d&lS?`XVcHM+gpOb zPj*mUM8|U|+eXA_pYPqm_=Qdv(o4Ze9=s!_78C?SZ2`ANLPy5f-JPoCaRZ5-}7r%aka8vYZ-Aturn{SD*lV>=M9~$(~&j zj2K5B_L4YX1?&=pwh)8zU!a?IfyVlms$lPnH2V_WD`NiSArm+K*%g>VY{GTpSry$WgGBUFBcYOf;_4TDEHpZv7^ z8K3OB;i11s;68*Fz6W*>f6I{dJz`|QboF@|NI=jx?-4UYBji4H7FWvqZ?Br}{uYgT zpBSl`u5OPLx|h?9%~%Ak-}aD_z9Bu;-ct=?s8`U|_j#FW)BC`NO-2{rCloVYrP&p9 zK0kaey$z4R=7)G`zeZ>1ZSV;;kW$-2#x7d=I$cyw8$mj;l6LI^5#k}wE&)u9BALI~ z(QiWmVchGq8~lL99b#9ZNr=#^S7YLz=!9%gRkPT+;bF~g@C3XYsM89x2@%<&Cd+Gf z@2&N}hGV}M0h1*^cHkkt z`Phq(N|>=+;bX$^`01BE1eR+BO0OlDw=7NO# zLM@@vSK;Mgj;rJkK&IJ|=0t3c(uqZp4mCz(uXh)y~4t#d|a>qnTSyT+? zJ2h_roL)~&!T>$@(4C8(-%2E@HUV3s?V5!rxSbhY4U2$Z1_ldaw}Md6f6>dR!+ld#1@1bMcK|Ah!^w)OKb3`a@2eAYWyxVpVFT?dy$OlBEq*}Rj zB})E)c(r0HojM#Mvd_U0*{=w#WyNjM`cQs^aUCf3Ln4CQ zPAk5aG)diC(XbDR1whGneF$>d?Z7#1X;H%v{O3a=A!wbFVFU~#E_4V0-IDCYGd^t? zUKn6phu*RiLt+)NikF3EMpCF0vO8!h(47has|58qV6mCG#^gcY+X*_~D+8c`WtadR zy8uSRpnMM@YA*9QfIGm$Z~cG<)`HtgyFa9pCMIn-y$$5#A3+JPovshUQ-$GgmNbY> zbtsP|RO9MtEOKBN9Fmxw65Haaf#~zcx2>rK$p^pY8pIj8B+E_?lniTpq6{8(DyZe- z(_!Dzzkt1SvY_Z$w4WvB%BIAcuEy3-mc+nXUOZ1_a#qARh~Yv&F$bYf>xv-l$yzK_ z;UVdR$fSjMrVS9DfY*-a_R;wbbkS_YIfyo5KTWA?r1Sx_ZYLZc_M`fpgg)$3tfOyg z^z92jWU>3vk2?v~`2Dm6``X`F2Yy?0#kJA~YY@yGu*>y+$Q$hZq`EOODJT|^GFxqlZiQdRmpQ7H90pD}hv6wmmVupi^f zKqcAFNsJ9XNWZ?YKFJ)11t5lfXqJ;mq(AXxz$Z<9)ch~{&I~2&r@cjYI*F;`(r*ZK z&q)jpIz(3{36t{aL$tMtMk98^asCjEX6`1+V^+L>>-AW4$>&94v7CglwAjU!G~#7S_d{GM`&cN17pL3a6H1jvmT|< z0mvXch5l6sD#6ES6k88W@qRR_o=8+LkaNv+lFHsWnt??7^@0CA{fa*y2FiL`-r$7bVpY3wHOe|GRWOZqso17 zMgs)+U?1@`p0_{t!8v?CN^1Z+i~XpmfruE^K-Y+CC6K>d&P z=e9yz0ImHmGb`BB1Tittfd(Qv>K}BX6pm{(BEvuF?N#xroU)`5xLfCF^m79-OY}_) z%HB^zhk0S3O27;skH%ND`(HF#yq`!>9HgyZ(}w-D`y0CB-*oqR+Uu6FAg13>q>b7~ zo4%*5-_q=NboT|?{UbS+p{)KLzx8QJUZ@*}XEHS*SAlh)5F4|9<&eK-6%&3*u zkmDp(-_96VP&PkvU?1%%)5+cs7aFh7<0NApr12`9&DgQzjM<&dj~TvqH2sE~0?I-q z)``G{B$WdBG;TlH4v8nV(N!vNd?$894SuywTu)A{O;~I+X;H@kxb26ChzCITI~z@I zBpA^Z8ZB!i(nZ&3w5t(z#w>KYkr)y4JFeW!Y)j38-#)NtI46S$`8ti_ID(G(1Lw&e zaQv5uYrTC;Ut`x=?BLAO4b{%$u+e4Je-b_h3p-=hP)GU_(~Od`fh!aC#~_yC@LmkaXfpUhKNl>O5h8$ zYquajJ;rc_K7?FwbqxbTA0(a&eLx%jrZYkCGIME?iGE0#}JI**U zm0**6d|vYHQXKhwjZc=af#m`itoDl4iGa~Af|20}RQ?GOW#C1Oj{b(o^03w4W39QH z>e9UrdKm`C$w`ov66XmwaGeKCUXp=x+$Wz9i-cWW2ScH*4G-M^!Zl&EU~o0g^$$RAYk{xKFq}~J;L-PNKpPAHiVhtjw8eo8 zu-E{$&5rLT6We*XFPy7dQ)TjvtD=~&wG+0a1jV-j4pIcM?S0}~mSWu7BAJv*9vv%j zGo}YErX)_WQKDiC+@VWPYK)*K7=$vLh!N8$ris(9e!wpSSbs$Vh{?2VXLhk*E?*l<(Ne>#qA(POOVw!qe(EMA$>E7&NdO+m|``U%-PwrGS*B zbjgDs{>A0nKuwLe%W#SW@Ew^B6Ul(QR(}jJXd!~bCh}t{?g>!$oh;rjfb;4I zAsvFgI!vTS`v6V`fP?w~#&!wC4`_cBeFSvU)}j$d2xT;MK0FC7V_|H7i!&dn<@}jt z2i}2503V{4ju0hdqR&b5@(Ppuk1vm{g2M_!7aS91ym z3^a_q9K0^Kac`)7pV5&cutuWjqhK=w7<`ma2CJAB>by#^U7}bbSsI1VQDX8y{ygYN zJqzR1w9Av)2F^228(ljuL&Sn+Kj$j}Bcx3S>mYu?@xHXuDNxJDsELP z@)T5LKyg3=Wuh5a%@!SX1=T$1hQJubSR~-*6$=KuF=$FN5ZZS1S~Cb=7NZl*MD2_` zS)HF{oI|=2mzVHYi)<_dTAZco2dtKXkak_s55T0~-^Ac1`i9J)WQK|lbDWV z#t|;`ej~rM_vLeY=bhQB9}$2yd`{@4VVY$J9>6iTs2ClA_h(WVu;n$RGL!_u4!Lx~ zF3E$86GU`w*_P}1Y0P=QYYiQKn7i!k_woD}{0#m0?EN2S7xreCU8iF2`Wezu|Kr5i z@-PjYO7U`x7rx}Pw77r2S|I4Xm{CBQ{@#7Q+rA{o2Qc}vI`81Dur5soX420&;{=pM zae{;`l6T^fI3UFhLq=s%(IAWO&On!r6AE$wV|za6bOnSI?m14VD+Vzjz33jynC&+6 z%&@z)uJJ_Ycv7)R>6+>19m0H@=^CHdIX)@yhr)*N&Y5!eQ0DYu*Z9z!@nIf&QQ+0W z;Be1OlFel5XL9ijn*}846Wgruu5x|%Fvi@USF27G-0ZLDv_1cKf#L~Y@1UuM8an3Iq3de+9Wn(@>aW1l+p+*zPbjTNa^AH%~H2X`c) zU0wI#L;)fw(-@2$tevitIuGC8?u2ZquiC!!DchC5j!v5cb6$ZD;ENf&G8Uw%E+wy zxTkd`9*7+DmWR+)jAp2nj+v^eZ~gc6z;L^BnRV~CRF@1`5 z>3n%nu^Q9Wv6xCd+9St3+9Pqmq47_=DY*%c-tcI}Posigf;+eM)3(3Xd(GA#qZ7XI z>pFLz(tOJS-gXuR8Z()IPQUmZkuirUC?Z&!#&AQCQ$)hecHs#^r`)1(#R-G6YuO6vQIn;LTIPwKAb3g+1MPiL*SQc@-{20+EKFhgE=2I0 zOnvmGzuQyaK~YW2()`%%(eV>Q;ulfz=-;P_=RguM_zY35p2irfHP%7~2HbJ_hGMrY zp7Aq#{w}PG;0n>PGerMTn+6Zc)cf>w##qR(TTuR4A{IrRC4!O*8A@#lpn@z)-r)-j zDU9b5Y3R|$rf3*WEYW}Z{-Z+a75sO8yc=OV;xm*^xKD{-w7D5f*ZBJ>%%`4iUp2ki z`sx|?C|l`RUpDYR4F5nL3|_Ort=A|68%TUkROR)0lI`sIWucGB?HJ_>Iq=0ozzc4Dls^pK~WFpC1pn0Aejn}2BH*WiysWRFDe zeM7uFuNspph=*P5PM`Z2p}MU1a@-XKCymU>X*nm00LS45victWmFTPQP0XD*E#bY( zPz;ypMRVsn_j2fY8D3$*2^n)ji}Q+0H$fS+=-&jyX~fO{`?Ii)`6%r?F_z>fc(?PS zA9~|Fv7XG2ZLD5iCk3t`^jktEUC1nbO<{Uf(H(>OeM?N8md`-+)A&WuLAd%WXPo8t zOmjfv!-6$Scp{^?>DT%cw}|og7nl|^@DTW3b<-LUGq8u`+!7}6i{nSucwstinsYFb zW%uyHMgRU5WC=@9;CDoxBtMp(hGu^U>`gve`yDZ>Vp}Be^?fu8Gxc3l@3Aj1o&)$6 z4bojHRghRZWS27B0}U19E>}|_p49Yb967$Aqn-9C8 zhSG`m+>3Dy>@voCUxPM(Pkbp1LeKsHJXsKW{RiUZT>i76TutBCxOC}Irxvh#z`cAQ zC~@gf5~pO`qhIEcU5|l-lv2Yz+$$Xh3#DHG8K(g)xj;;&@?%Y_nHhcwO*+#X=*tU) zE~Yi=kS(a(X_KyTNUefe-I%*Q+?z~M1(R@8>#jt^MM5hzG3+bR2}k?6%_!p{(NDMr z6iKB>MbL)Lj~yog!zziM3J=W9*716wa0W2uqvnf5WOP0_d$bTPqX7IXONT6A zu)S-v+j*_Wl!yMf2yUB-5&a`k2$T2Pk3_0;HIu)VNjQ?ky@B@sNF+tIM(weMWN)$0 zt!cR1evEk->F*4gGu zAi7_N&R!x?$0qvm??OBDtP%rMb!0evB$Sy~fTy;s99 z9sW(N2n-JQWjPcQxX{^t1eVLCGs0(DLs=Wj`lKN z-E-aVG4}m_iY&FUTwR11)0_AVLch=K87expSg_}F(U?U7&&3cA70=e7Uw?)LQj7e$ zfPmJZ>|Y5Dn$ZQS;I;T!uh7>6*xs$oo)IGdfr9jZRC=g-DD`<4XoJ)u_b)^Q>h1yo zdJVepE3gz)TY}ijMC7nCHMOm41#})} z4bDJt5HJ`RV?KoT6(>r7+S){HHIgWjNZ9zW@|2NRo?0r?0O|hoG6;EhFdh+0Y1&7F zKgkmBc9ePruDf=i(kozd286?awqGF_^=*y&H3b)=DEffOe^rrfUv4Z`E6!kKhNJ#> zSBSBUoncu92puM!bMN90yO<6Keie~9K^CGrxV%s#z0d#8An z*TJ~NtD%tArzf)${cx2?(mC;7>99wEp*clqsL9y9U2PZy76e6|-Ta{^7bX4%jPf4z z>Tkr3LR#TCvj7xv01S790(8&u&>8PiihK$mPT4xfrGFcn%#UF~eBvB+cRLobxb$ZB zwj3vnybHeU`4kg-6{nPrxXS_QxCZ-;0a>pR(J(d!Fr|m5oO&jUVMG;=v}R!f6e0=U zQT8%@bGHU>9s}>X_bDI|SIj_4Xz75v5H*VZ2nGF4%*LaghnD;fcS`xF`gfu(U?1)o zmybqWC)AH#imwxMAj9$NplMmgIHH7m4o7nH(Ut4O3P>*cgD3kR{6UNz(ZD=YDJg!j zBA=Aqv@a>z&lDFKGYV&QjyZI5%%>fz)JrIZvfrx*BpI^>DXn1BB+<8lA3KWV3{3X{ z#M}VP%tz1NAfl(|$9A&0mwt6q>Z=z#dHrx+=NAIg8=xMT0G+w1uYqH&X_flsg88Ot zxO-TwlwGB^>1%A|3(Se&EChPOzM*y`C&E`q2JH^Gb3b|?-My&G7iRY>0rR{zt` zGu?1;G>!4lIZc7!tuqQ{Jjk39%4_48rlB`+<~NYNn~+TfilncpAszF}ZDd%$!m-UF zKI#Z-V8DfM-BxJR1SahG?Ug#r@tGPKfXl#GX7C?fd(QC@-uN8L`5f#Uh`32)4glGK zv|R}2Wx)lVIc`Z?5R^Veg4jp*J@VzM6~5s?49KSBS5L(V^m)rl^K{g{Cg4eg^< z?W2P|qe;)`ka}@d#NjFXUI)B&etyRx4mISV@qZBmqz4($z3ni-nG3Chci|`K$X~$3 z=b?vx5i4NdcLdmn?p#qG0?XL+ADB-AYW@!qH_E_JM8?c$TdlfsfG#Vua=?`Ita0AAO^eq4wlaYIVxRvXWawvumc(*JUKpimq^qY7-lrq3c^ya zC+WI3Keoew?%pNF#^lGseas9$t)+3?w8U}$UOubH&6vNADxX*EF96E*+&yAJf`P#* zOLutvew$bnuu#XIU_cMqBc9=18JXS+mj|I<4}*Tc2WG$dh`0||vL_id<~}i5^aX?7 zzfTMy@?(>P3;gM4(bxBhPemYb-t++2I|KUs0ihZO4VYYmfLbMEk6 zMn#sZ>k8Zf3hc41AabDuoF~*53|SZe4A;5uwBHtBE(VVeP-C+=Oi|+p>PLWsUYVw2 zI|%3m=FQRhpDjm1p!pedzs|36&C&Y#B7n*lqnie5=%6sI z54bbp#)unm%i+`Q9ss*Qm*1Vorz6v9I48j!8Vm#|@V=ndOYWG~K0Z3(J{bkeb_=YR zaHB;(@|%f2IN&ss;C$Y8T8|=xWbD8T4ER#E+zgpTzo7<40ylHOk!u>(+V@^!IumSH zp7M+lc=E6$8LFd#IxfH@pfVvDLtS8iu@8ih2L&f5VJ=UOoI+9!B*h~n$3Ryp{~7wF z7a0^LA{Apcg4UpDT|WWW!GJsGiGoup0{6z4FKt@3gW+;zARB47YxXo_KEW4P-rK== z&IqC9(t_J%6GW$C1*R?rEfGNrlhJw+8K>-Ij(;Ea-497YP{w+Ji9TxatI~A;!k|+k zG8N=ue~L)G-%m`(&kWLtNmZhL_1!VQ@lJ9s!lF>)9+`Nxo85w<3k(YrgT1`L<=S&% z(meel(*_|;cqdtKd73629?f>ebhY31X;ZsWs@X+a*Y_gV*}t6L+xq@u_XQC4d*4ud zs9B%`0OrhjB3|aH2H_{)DeRA+>mO){gk<{jE(!q6Tq!LSm?CPOXK#bQrP&|p&)zm( zWD0f*T&D(OTnAJ9WRZ~CahDl5WC+1hh{BhxPbjo>K~%_S`$wBg-|bWCDr2UD zl-FbTXJNX;;De8k*EJZ5u~!&$Lqf(BmAY@UR~e7k&n1>rwt{s8?_8nrFAUA+w>3A~ zB&LfDc%p0K7ZhG2_|OJ7yK&fv3^ZZDI1u^;%!^C+7Hf=!a{6PpA;qS93wuJy10T_( zCeaZExqW2}7a2INH2tgPMB-2O)|a(M&8JU9Ge`D@g9s9el zETmab{)7MAkM!lX-e6FRKbcX{%``FW5>Ro3C@Wnoj0i>-`T_%c zQKHD@4!4Cbv*i=!@R!Z`Wa;`Ia~KH{fwCEjNff)>CkmK?$K-?Cpw9~bJO@61B0bc( z{dPN)cwSw$B$~a+fFm-1&IMK`P-NR}>Wy|~K6y$4<=pSe;CtW4(9&9D4IpDjHYmZi z&kWw2!?4b_D?GkU3Qlc%z3XBR0-yiIzM^)8kp@8fJ;R|76hh08#@h zl_JPEzfEfB6&gg4dK`6GkJS(Jr14Qie6pWezY5+=tI;xo%!s-Gq5(?AOk0*Q?d6=O zPGg+FNMVA~pAlpX(ESSpnF1s*A5wxyGDQTdKZ_(8{QDgI8vbI;grH2h0MN4CE^s6Z zI&LxGHQW;{P)LRG6N2K)rSa|Qrx^FY6N=oW5$or*a>@ZW5Cw24rtmEK+4erN>Mf@)<#L{`ajRKi~vrdN2 z36o`xGgwJP1d?&0I}GX)!g`UpX&12f7~_2=r(AfmTx5K} zbpOrVEOENxmV=I@CvHW1+{(_l)mJjVy?c6Q)#1anCb5na>f8dIw}`I+)>(IqEvm-+rSkOi`Zz;;7ZfOr#F1%qw%Nb7a2bQpNR5Bi_=+-G+2( zG)8d!bu82$dz+K$Iw}?J`dud*wmFulsX zO$A@cH(Bs9q13BIUa2la|Ht_tFj!6>J}6^J=opzG$#ApvfucukZoR9hQBzgQFX1fz zlHf*e*y;?gNyAn#ErEN6h{n8t@`FfihW=I2NAKGgZlQ|PFMH0lSDwqQWCL}4udeWJ|MWv{vkTR5 zZ!ge=fn;zl6I%2*8Zc30DIKM5yW|OT>AQd(TRpTN0<^eg(H z!$dXZHc(g~UrpmS^Jzzh~3QYCl zP7rBytY>~b6bv`E7&@E&5C3;T9%tIXcsDX{9}1_EYJ1bqWrn5?e$T%OjS3;|D#rwX8O zC8xm%cPaTV;l3{;yCU)G1Uh9Bf;2ut*QZK@PZTm8)#|%Jbhx#g{E4@8PNAdnAAQW` zBA@v945xhJZ7!#J;_W3a>d_k)4UZ7lGJ3DC5o<7-9ZKq@)tXLsMLQ|5hM*0hK?KPzH%AnR@t8esu^AM83? zna#U`bpCN`#o*}Zc(XgSa(Zl)-%F{gxZ z#CbA%>2G}AZeH@fNd)0C{HR$)!8$HPx4_>MSX~?+ikid8Y=GrqI2k`8L}zBOcUvFo zu(3Mt2ykJgbeljJj}Ir#OSe2CiGzt%%m#IO0qB=k!(6~@6bVcrs3?MrnyA&~Kd*KN z>!|P+ijugfnd5;Mu{Wg{^JI;UlE$RXRDe0ocMW3=)-{n?M_qwiSXvjb2z-7ZX9sBjXCXE>=6b*m=LI>L5)h~J*q4H+*)AtD)Ou{;(k$t8 zhca~X9I3|(;WX`FVS7PjibvPwT?9Q$Zerk{?BqvG8*?l8g^Xz%6wLqdSqn4eOC!Nlu5KHSWN6$7*5Iq1+_+>x+K#8ej>ZmCZm8i&Jl3<-dgLbM&6Y$geD02Bk zwXQQn^zV@*$N?wWTST58$WF>`O42DN%VBG8PfdDzglOGx0hg>h_mlDJ1+eCa+t>D| zMTbU6hNm<(&vQL3a!|Q;)@VvO^m7zBRTu#{l!(J3!tBrk!5yo>Fa=FilNrKI=uI`L zsQ}%9RGkmOTq!dEsq_{K6Z_~g?Yf6 zJR}TGagKnLivLO(eha_?p6Z#ev0rLah%S9N_U__y+XVeEJQ|7jaRr$;JHMO^u!2O4 z5&jDqaA6yw>waEMXP~b&fDlvAe>7y8yjqjuZVwW`o%AWt?+`|FDQ;5&8WKY;A%k`2 zMUJ#k%8!@UBXb`(db zt8B$Gc7%=+XB5jbiWQKak&_EW968zUkveV^dcctVE3$PEpbX-mb>@t1&lwGwyfZZJ ze)v4q#Q4w_9uG6@zvR|ry!BfcFcSw?mGD@_bl<^AHw&=a7to3+-7El4=fS!(X`Ohf zS7!c>Fe`Te^(?#`-ZIOZE8Dmja`VA)tvR~x(K--h`qMf%$s19lj*QB9th)^=3TLnp zk|jW0)hx}=)v-Cc!+y0`ah(dJT5H7hdN@q7qtOE$sR@KS{Jl@2Eh3c5#!~95=OTA{5OZqqF&CZ&%ep${)N92)x?gUt@bJyJ%5l;X*>c3Jm00 zx4LtYP!Fe)MJQGe*prQ?1t6~vw*;_b(bIbJ`QWY}Zu*wT(s8DB|Rxu z!zv~u8|zFH0Oc%~c|p~_r`UwFc@XVlX_wk$VjfuFa)Ercrsn0(E+!y zHJ*$Ko229U|2*ANv5XGU8H3U3c+vp#em|a!l7#5k5Tr^VC+Xmf#G7dKo{$)PLb8VF z5+ycL!Z37eE!+!Q63Bj{$vV`OKxRgV=vM!I^SQM4$um8aq;;c--y+~jQb21El}IKQ z@CkPyftq&ePLJ>Vd3fEJMakFw)tfK_5;zU)R*G`Mg73@umuugdQ!wq?C*_No6L~Lw z8niBvq*HLcKH3U3JvHWgUrjz@_dg4?Cz44yPvbF%ir8nMB&D+4;eCjw$Teoq)wJwLLJF+$J>)W>a8mW@~g;4K8{$3C@>O5SdJ-sIWcyCTarIPD3ps=+6i#yethy zdC6okOju(wIXgoQl)@Y!F4E{WS}gvS7RXUB79R@DiOYBeOT|i}d!o)8th*N85<~@d z)Hi7e?QrA9UpI>) zOS1&%^g!~{$S$aJLRhmH)Qz$k?K9bbF-1Z81Oa+~5Xpq=Qy@Std~6WCv|O7P(4`Zg zGlR%{G5Fm;F@s5?yh|$(WQ8@0>R8Z%hr*dAy-I+V4<_lzQjI{cH>`$h7U58Y;#w<2 z^l{1sXy0IxQFf^Wf~!!joeqVW0vB=}?L|@gZ~^*dFc}+Bst^d)!`B9J$`@yyrUQ1498NewUR(2^l!`S_YM9SJ4n zwkWC-T;z;YaBHIy_A!l)N|)VFKNt(QG&d5`;^58Ee%o=Twre0x1J<=;e`G?xsJ#yL z#I6B&7lnUzTuRoJAz;pgXm0rG=rRb05o0*x$W3ri<1(}u3c#T1*8r8bP68wC8nQMSa_~#BA3T_K9{f5P zvhwFW_Gy`AC8SVN?ipz6Q_mg&yn%j0ny~(+X*#aGLB!?DOfzJc&`+z#4HX5luHk~N zXF)dl0etL=6?TOQogRF}t^Y*`uF0Hn;M@sU(j}I3-Gb82Gcd;b6ZlW3*fa%N=C^bh z_o*^hJ6IK-Jqo$Orz->&jB*sOg?v}RcW>!efb7nfpqSH%%dUk#T_(SZuFr6K3;ZdC zkQ-Q>34iwEkKf=wm45JNDLk2G`heF*K~~eO-j{Ru8&g4O_zm2_B((YsGPPo= z?08$4CGpHj__Tc%*1v~{FM$Hn^L<@T1Du3$>MF&?Eix@TYWx0FKixcNn-kXm>|+x@GzJ^b%DoLN1sZBi{f}ei^Y1qr| zHom)CWsc&_j}VxO_At}V3!OHo;(eH>r$uZQn0nMnJ@y_)a+PU2E`uR#@w7`kt(Tyh z9XJU9xgnb1a7e#0#eaYk9L1nY$L~e#hq6frCrcoFeO#EUB+65wN*z`YY8zCtX+O?IMRE1A4JW9eQjx$D5xVi1=Y*D;!0nYm ziV%$IWKgq3$?d~=F}3o;+u&p*H<5P#17Hme&>c0AshUO%?4E(gzcl++RdWEKgQFC} z~%0h6vWEP7n1#>Vyx>Um(dzvPrGBX(;?()^+tEAH-<32_on8}2h zO&9=BWQks}VsjH;kdj&~+(Deozb-I9U#2+^!Hp`<)74VM^FfaHjEo4!vTg z{D%qbr_e+T_~=VN*9yR*m^I{x;6pfVX}i6|m$q;XIVcBX`e!_*3!$r_^D6PwMaco?P}tzDI|9xXV4l;~v@W9@Xj2 z2AXekkLi_a~8jlLeBpVz|qkwo{`k`QX% z2aC)8p-GB#Z;?X{fpQO12v*>&)ese-x6fu+ZvzAnML39h%^?zVl-%AeQS^j$7HOq$?$EP21@6U$Vs!W|vVJ(f4f0;p0LN^?p|%{@l47_J+%l$9 z{Ib{2gyo_(h2cc#BKXZPCw|L?q7T-QQDnFrHr-;GHw(GfkqX7*3VRLp_&GcD`#LgB zSTUu?q)+^pidKMLw9aHXg`AC$*B0G1)#q0&rJ|e%1Q*0- z9ZB1aT zxSkvqXOfS<32XZGP6)Nfi#{?=B<7qx!nCL1tkZ}Xn$z5z^YA-pi7qy;o zd<~qV0Zz;OQg!HNI3)sbaO5cV^Vo$BkJ7XOE!jXuSG+A}=4~=$%H0;Z{U$7tG-kF)Rtn@?QQ!8snVH;uhU@=DRf+&>8u#xOH*U{T(p0qWK zlAMwY*qw6fETu_5VZQ;(ncsabod{D0)=MBx)-Jg(g>%Z=z)_E*U1W}j_=bz2F~B=+ zw;ZMwLJGEc_uy9fn7f}tqYLZsYabT!CeqJhIgJlvv7m#U4Iw*m=jTZG?RD9!VefMk z*QRRNISOBk^?uuv+2<6guqzfm>a@HynPN0IplOd?U^*$wpNd9pBGnbo zH%(AftLQWBTRZ={k=+V#?c`4^l;6^A3Us!bj1K4NAa7oLX4;DPzBcUurz+K?CZbj` z|8i2@ywXT1k!Gt^m;455cAW3eTB4&?-NoZdO6>Qm{J}hFS&ZP@r-v zsRiTo4OTLDjx$6~|gHKCriw@Q=uP>>ZdUs&0 zY+CRA4;6-0;A=kwJ zyBF6+U|$M8zY(}y7M#Eb!lD@7=3_+Ocn=PO{9fFPT;DzhL45`^an+Otz8EgR+&McV z@Ieepvp*|b_L@h_C&IV>0E&tK1!vdey86~ErWtYUFOPtOx+#?KJ{dptSA}{5s6_Ts z#)5xIn12DU{MLq2_KKpocuhgEspzr-B*?|)g5pXG7&>F!OweH}UX?nDz1mwL6__V= z6j!=`Q?S=C_Ob7i6H|Fy;$s`AQ~nD+84hXzqg*6_4U6(?wE>Y z%`SL#TTu1k>gZbg(Z-C4GAQ5>MemycIgdZe$+$$(6#4455XgA^Xc%AZks}!sQyroO z`;zT@8!z=`breU>Xg%ZlM(8?=H!YqD3~%)ms~z?&zGi{pqv|`&dLygq9baHgCg4ZY zIB*&j$&U9W<6TCvoM5L%^2`8im*_u;%&eFZ*&^=U9cD&SRQ<`E;!qt4ogE2R&_$8dM&ErfHGv9Lt1k#UiX+Vl zJG;@*If3nF`W5@vh``1ul5 z;r$o#1JPgPgB@1Y{r|$+H+zSVr$EO}Qh~!;*@{T0w*tC@ZxT#qoI`!KC4$n_i`dHE zCR{sjw1^>vVNHFFLSsB9>ua!g@j}zRd_6SX%hAKr+5ZA!$73Lh1am}+zbGm&7u2U( zFd#e}rZ$`f%qgik)S@dT|>mANpkRA93+MZXW_~iTkOQ_kDW_*s#BdaZ@B;yNwNaG{VRLo8G zuX-Ck3*gGx9>~8KGhWq;T7CH-l&zy!VNt?YN3jaT24eik3Y5U04ez74oKV>&%7LSh zP!4O{=6T6htYNz%9U;X^SX`b&To@>r2nFu|1yX*{9K|twY}}zc$ZR553Bv;YMwL52 zZ#P8Qhu4`IXU$bPzP&6IaXZL}L>@zO&WxIy8+z;~D!>$`JYE_Gen;7GTu1K`0b+r! z?H~vC=P4@h$BK=B@19+~j5TaclkXTZ$}glzm$i%AztrYTAIw6br#~Re`^j+5oi)B$ za?GFjXnEt+4Y^!s!lYD76fZi=ccWiFAY)P#N>;9{533czVLAa{rg5dRocYO(AKQ}x zeXFuf!tXh*VN!Q8yja%2$+CX?6uk?BB6fTSXNkW6a_<1;`5;Q{ zxgg9~GQ!jPmuJbyXHJ@->)vc7_{M=iWWfD2HW@dbWk*A`zF}GihMBoaD#iDDu-(M~ESkHNUq3-BkKfZ z?az)gb|~GFQzvR&%}r9e%0D>;7NxOJx1!)XF_(u^3cfgQD|cCx=JJCrIn93TWTo|K z-170QYuZTm84P4Tgl=F-b?{WBdy3LqpzO$3nl3BQ5tfWnO~V;#M2>|+Ef8}Zn4O_` zJFj7L(eEtTZ$hEcG#lpt9&|cD$v>8JGkR0+hzg#*d|5n89>#5@ z(h|;};o*6e(!%i1)+|{KX-k^E@i3&WhFSNC76G03bzoLfSxq9}P&P5tR$uizEy2B7 z*#`v(8Q)WyD)=dC7C~68-oA40_s!d04)r}=FHXyl{E6CfRY-9D5;4% z#IJr7kd#!f+Q4k6HGPPu+jiz>Ko-X?LABKg-VMc&#BBwD^NVD37SQ&bd7-&=BFi-2 zuFq|QPw-mmdu{q@`)}NKWgY0}LxRbUE97=OdS~%_n}qv7Y5E9-Imt-bUZu5O$<`^k zJxcd(rPrx6e56Ffousnx$<65pTn;Zi7W-_tpael1f7DMZShPf$^N3`epOm_xi4dQ z*(*x!D#Z7cyMF^f!oAmUqU9j_JOA;z(iEb?x&BacHhIZd&(We1`v2 zC{6pIdzJ+}0pfbtugM(RbnjqtZD$6+jAkIlutVrc1RbE2X5uob!S1t8ZnIvMBRgBbo$k<{z zE(Lxq0#%3EI;qQ@Xj0%54>N4YV$%C5P~h?l1$mV$rQ(8A=D1>aF#c?go5IWNz{j}H zsr|-sD$4X5hKWaeFlLEVS#*U;IU9p^>>-%|ejP8hqEmawXN8f7sUzbe!jxyrju(bi zP77`GXJb{Egd>PMIj|s7bv`Wm!na{%X={LZbZAu>yYF~um77sD>2I=vo6n|t7Dco# zl4U&GuXB;y0Mse2$#r&I9Y$zY2Nikj)jottr0Ywmv!*!oV;w1fK1IbQtGFbUn^t)f zRUHYc?s%0!uQH{os?4>^>WdHOoG$n_;|h~0x*KjtQ)R*ihnFz!68?olK`WcC^40wK zOq$vX&2HEUR+m%i$w5hQ)*bdg&bq_!nDq|KGJD-iuQWCUn6eR9PsWO_D^Pnq87~}; z?$(phDI-)qo`V~yYV)rjV@_D%IE9Bb^HfGzj44BvDzy-)fsg>IJfrrKu?C}RIOSV0 zeIw7a`Om1HWb>)*7la-8Dzk29cL92LFBw%aMb##Poy`Fr9AJ++W5G2}g|xl|yjgM6 zo=9lI358E2oPz`qWKLK06}b!vJZlP4C>X7!b5t*tHa7U1ig54qq>8M7Hvb}!{=~zH z1SNh%hE>c~WlF}wZD#|%hvS}8wMiUbh44bO)i~jKJ|UD(*n$)0K9R5w5*)fJY8zZE z`EHeLUxn5uZA|V1fuFK*q8Z_elYalNt7{L4s@nSVqBz4*5e6ED@w^66nwA6ezp3%B9X6YI29>%mhgA`-e@{FbonKC0JsFZ_RP~I|2dDn*V$)3*4}%q-`;yIp$wQJD(~WP#Y1Q>?pF8q`-OyU)an z`%;k3jX1pED0ex@RhMf?%(Xlq?oR=Itq!S^2yQgm+ng4(Y?NzB2ITljSee@Hwj|l} z#kWyjo{)h>K7<8^*;&6s_&iedLNyGl0I_740fm8f+%8^B;eu93yj_)ph3BGzNPiHn zq(q4W2i5^K`$dXN||si#p|AnPl-Y-cpDu`;d)X$3Ri+HH=h*GSb~lv&Vj@cM0h>rT5`DCpvgh_SBg!zCH^~w`z3|1JB+2v1AO~oEY12WYTAgr zji8eU12*AKq*OU+o=HYHvNvAkl6I>B6qTq01I6BR*X#|Ai{SsL-Tx>qD91aP9!A>krI|`_O%LM*S;Git{d`c<7@B9FpK7!OW zM+M%&``A1_^a1uj9HF!0K_s7*=JCo8u_CMCovqa%8k-MjZ7aJj6 z2S0=*;j+NE->cK3QH0e0k%kCR>P%sbE}VCObu2@_!*mcH54vXt6gjMWhS>p*g`;7P zl?kswMgny$;qRr#Ql+NoxE6Y@2O+S+4&9WqD_0``;{GU+J*GqD$roOa{1uO@MFCa9 z8JDL-E(&5y#N)aU(SCuuo5&3m@PXjG8!#Ay@9>-!c0&Nq z9>E@wxAIL#uyYgl=mM2h8|+zeQv&Cww9{Gnje{{@Npi!T&e=YjVfSE6=lQ&DllT0z zo)v%VS#gU$Dq_r|Z-=Y1Vydhy#&Z?cZkEYvV@&!aPapV>mPDz;3a=pUb^tH%@m_3N%HI(Odkv$J^pOOH@j&R90wLm?e3cg)rTH_Q2yci%!xvI%_Mw<6 zey_55$y2qK8DRmJ+0et z!8>!PL5WWZnCApa6E+-jKKai=!|5O)j)rDGg{bzJ+K*#xY{P5%0=#+nJ5acmm)i}Z@rlM~0Wv1$dv!v_2y`|&>kwIZnF?>hl}DCei1fKyw) z>iF^#*yhQSwdF=d>9C|10)|7hM5|?R|0m z>oq;^-N{}4k6^2oPi@2sG)nXvI57{Mei8zp8x_G5{JKWKZNaTPlw6gHN`BxPM43)$ z?THe%j#qoo&@N4UK!nCnT@=1UW3rHy>UD!?w-(NxMwhduz#7t8cbQK=O2`JG9bjJ8b7Ze)zosKrr|(Na8HG zGka3wENcauk<4~TJ3Q3DdH^2xA2QM-(VRj?3l+(U_Y1R9(PCJX+0dNrpPgzI=A=f0 zJPH_>;7AVx0~16+@(l@SvMx%ENWZwUNRtZvPn@3Gpg3|g*r9GZ1b#X`L4#OowhYc2 z7_PAwk^OWefJ7#8R8s&Irv7dwFP7Q^NUd6_s>9V>Dod`rPnZw+jB2Xh19pH#M;XhWq}L8OlKajcE^j>-5uwrIJzKFE^emwa=hTLWAK@i#1glT8otFjd#if~INuT}}g`rq2A zEpgmy1iO@QVD;O;LKuo*m!oU_qw?PByJ@mDQp^e|<_>HGlvTiXKtB`iPLro^kfooM^}ZoX z@079Y(Kq#%Wc5GEdViMn#>ji`m)Eb7r&ID?22obf@`^FY-!G(NeuWTOf_{|Np14~x5kaa->(l%A6&~@>`0q6|# zPGgTJdI^y9+n@tDFDabuU9P_abG~~T%cOowLO4pyjB887W3TORc9t~akJ(CmKy~Xh zmaIBPz>~TeGmrsPI|KAcu$u^uErS={xo7cA_=wYFmldH^{9Db~ zm=Uk*yM|p@Y*&UAX*nMR$_d9Kd3{b=*+hM!?}QBZnzzNyyi|rfC-Kb&%eA?wG8 zE*5_u1$~hsJtIXmpvq_nv5R4+1?&h~_;~vvXBsTuIu}k2f4n3KD7D@e)IFD|hYKeO z@e}B5<$=0MD539@8Z~W`y2@`H8*Fi^CIPM;`RQi#H*MowM05&0KLCIVyfjW?PZQ7@ zQMwlX>i_`HEs}DhmqdK26i7)rtc3Xx%IDt>Wog?ag@|J`cSDdS1Uq+@CEX2K1|d?t zKJ5nY;?lD{Kiq<7XaCc}GPJn^_Ny>!#cwq3OCX!w@Q96L`E_To;j<7464j&>)=Op- z*yg*{Sg5fh6&luCmZ9~QUtm9Vy?!!;h<*Yvw@V7Ns&US4kM$rs!C+YD@)_(ws~q_< z(Keu>_kM?F>3kd6l z>jeK(3!K)t4ixcW3V$dG;u}lA*#keS71Qc_iSTixa5S8+!%w0F3=@R!2)?KlOSFDX z*uzt@{wo-##qWW4GNe}49};ieeG$GS#6EaiD@8>{J>ds}{)u3}CQQ#f!2L+LcIU4u z&>B~HwnpM<85#VAFqxCgcL?!U!vDVncavz)yQ>m>`T}M56nmnr%9@B=Q9`A2v7~rE zDZH;?0hBpK&}!0Xa43D%u7%;sVyBZ_0ZHeP{y&hxCrAO5&U~_eaZ+do**Ddv>#lC! zV4UczPH>Fi=8)`DB(Ct!CWEs`QAdUf$-eX5ueC4gpGgW&l0$LEOoxt6B<(-Ceze-k z;@M&nYFDy3RWcTpX&SEJKm%2zihT}=R&S-q8ZrF3%b`|H#i}PivdDEt?hH3^F;0)Mn z4Ajj9qMR3O#w15K4Cy=1VvM|=_nyTX;2i9tHf&6O3y@`9R@`bGSv>uA)|qwTxy37F zbi{bdK^$o%BSKHw@mBS{WA>-;;jY$^fvd2a5h(%Z+8}M7zuAVF=S)KmAqOU$1Uogi z2F=IcQ4}AzD4ZqrPc?Vg@KNVl0~e^~=G)*DSodp$7tH(GCs&nJ25o2`%zC^pk}o21?j&`1}~9w^5XkD$)e9m zu$U=cAx#%a;|Jz?k`9tXn(kvR)q>0I2Xp57CV5sHZ#%BjT_pP@DSSjowP92G%{4tbpAJwmALl(&> zlbkYtpF}GtHn4T{nqsNqG}v8CwdeV2TrYddIh+#W zC{a!MG0Jgy!Q1RGDyuxcXsO1;YT9Fb4|&oDD>Bw}&FFr^wPxs9<8Vg>J%Tb1rwV37 z`aM08zj+>8YE7erkrbOw1r1b)rurFbpk{Mm!lurett)!>khvQ;e!4-0oI>t%}GO0hPIV<}+^W%@=VS}9+) zr^L0&VKFM(r$>H{XVPy{rahG3MFnfA5Ks00nPR6?+#8fW)mxx+7)6*$?E_1Ro~3$# z-~&s?<~+(QonXat-32kGeH8Z=CG4f#OGh%(WwruTBs3#Q8^jo9o2ia^zGs*jmQ)1_ zHsxiN*Ez7rk4=ZD+5|I5eGSk=+6A#LZB}{Iy)6Ac1SFcwJg*~u_vhh!&>e*6?~V#bsk06FxLvlhkd76kqY^!zIPm2e8f=fj+;R+ zICPQ{KcPZRln?J79?q!$Tgr5if{BE^4tuMSD^3S4^h)Pm)!cXJ?!Q3^eN^as%7Jw< z69o+ZcY?XPCzN18Oz>58{thbQS_2^(KYm+)ofP+J)q=NO8r#QKo*19-z#( zDA@ZW{7lv6yVM2w#zY^QUc(dlAZ7YLii15R|A60xeIBFg6k@@#4Bh`vO1z&osc8Rw zbiiWuTDFY08MZQpjZTBD$FMoqu&H3GIS!oryxjLkx5bug+31>Rob4Dv<20+L!92{k z&tZLj7C-ZIY{>dC>6Od9d4y4NUM9^OvuSz`ZQ4k(ACvisFmEKfq>&uOu|>40k)Vrd zV~HcmIP6^7R6^79Xqfk;E(&yF1r22{M{e~53+=Al=&W1~76l}^GFnK`;g-;kLB%+k zgmJO9f-}(w_IcVgi>51SBN!Eo)S9q`=2)7w(M4Nn(>D5s8yLo4&C7#uvhx)_J&2{r z|HMBD&StE&wCPSV?V^pV?oL2}r-Z$5`N0YHSEjwl!w$5lbL`1xSNtyLmG@i|L(&l6 zIrii=@Nm#&KE5A}`N421-b%K|`UM(tDame63%3v|V@w3KWryIV!?R1F8sIR{JkrhM zcA$Ms9V+f|5OsxDwFTKmRfF265$ouJ$`Df zgGQ*QJ(#1)sPuV&0IHHZMAPrnrXNVwLxWrgrbd68#!U)_vB;8NRP-juVC$5Uxfc73 zEL{Q50K?Z0Lt!ciL+^UH^y;EaXij73bOs!%bI1{gy~I&qEb-(ND5Fgfn#FhzeAjtk zkADgSW*L(3*#1JsJd^*l6U)Ij>5KEUk0`mxjCnR6cL^hl<}d@F$M<};62D9LD@*6KjpmX}ZL)T};68 zyw}3IEw4K*J8hON>{V1#1DXS-B$gv?2K4 z25;rEfaM8sfx$oD(7iWMo#Cy1sPB;YM?>ftga27WaIt}@tZ`N@r^^i7b0r40)G&}a zX-L^wo!M_Ov{(0S@Kz_e7Bbb8t(ssmv)LsEuEHRe8+tOw1~MlMR8Q*69N%df-T%BH zU>Vb6N%vP7LX`$@^#o`2cw6;Yu9{b0!Nz1hf^sb67$Um!bMPiE0|P5-+f>|AgVU1l Zz96YTH3t42SFDyly)q`9Z@YrU|38{iD%k)4 diff --git a/meta-digi-arm/recipes-bsp/firmware-qualcomm/firmware-qualcomm/utf30.bin b/meta-digi-arm/recipes-bsp/firmware-qualcomm/firmware-qualcomm/utf30.bin index 3dedbae775eceb7748770c24508737083b783cb9..7f9f6589e2d6cf2858afb6a845e3d3403cc94e52 100644 GIT binary patch delta 93469 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
;2RiK<}t+o=s(fFv!4;&ZWbI0ft)PA({~&^Guvr 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 Date: Wed, 28 Aug 2019 12:17:52 +0200 Subject: [PATCH 132/133] kernel-module-qualcomm: fix printing of error message Error message was being printed upon successful copy of the MAC addresses file, instead of upon failure. Signed-off-by: Hector Palacios --- .../kernel-module-qualcomm/kernel-module-qualcomm/qualcomm.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/qualcomm.sh b/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/qualcomm.sh index 34566f3e8..d2097595c 100644 --- a/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/qualcomm.sh +++ b/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/qualcomm.sh @@ -53,9 +53,7 @@ if ! cmp -s ${TMP_MACFILE} ${MACFILE}; then mount -o remount,rw ${mount_point} fi - if cp ${TMP_MACFILE} ${MACFILE}; then - log "3" "[ERROR] Could not create ${MACFILE}" - fi + cp ${TMP_MACFILE} ${MACFILE} || log "3" "[ERROR] Could not create ${MACFILE}" fi rm -f "${TMP_MACFILE}" From ee4d39014b2b227c0d29230ef49cd738d25846b7 Mon Sep 17 00:00:00 2001 From: Hector Palacios Date: Mon, 2 Sep 2019 13:39:14 +0200 Subject: [PATCH 133/133] firmware-qualcomm: move qca6564 fw files into subfolder Signed-off-by: Hector Palacios --- .../firmware-qualcomm/firmware-qualcomm.bb | 6 +++--- .../{ => qca6564_proprietary}/otp30.bin | Bin .../{ => qca6564_proprietary}/qwlan30.bin | Bin .../{ => qca6564_proprietary}/utf30.bin | Bin 4 files changed, 3 insertions(+), 3 deletions(-) rename meta-digi-arm/recipes-bsp/firmware-qualcomm/firmware-qualcomm/{ => qca6564_proprietary}/otp30.bin (100%) rename meta-digi-arm/recipes-bsp/firmware-qualcomm/firmware-qualcomm/{ => qca6564_proprietary}/qwlan30.bin (100%) rename meta-digi-arm/recipes-bsp/firmware-qualcomm/firmware-qualcomm/{ => qca6564_proprietary}/utf30.bin (100%) diff --git a/meta-digi-arm/recipes-bsp/firmware-qualcomm/firmware-qualcomm.bb b/meta-digi-arm/recipes-bsp/firmware-qualcomm/firmware-qualcomm.bb index d6eca62fd..b8ac552df 100644 --- a/meta-digi-arm/recipes-bsp/firmware-qualcomm/firmware-qualcomm.bb +++ b/meta-digi-arm/recipes-bsp/firmware-qualcomm/firmware-qualcomm.bb @@ -18,9 +18,9 @@ FW_QUALCOMM_BT = " \ FW_QCA6564_WIFI_PROPRIETARY = " \ file://bdwlan30_US.bin \ file://LICENCE.atheros_firmware \ - file://otp30.bin \ - file://qwlan30.bin \ - file://utf30.bin \ + file://qca6564_proprietary/otp30.bin \ + file://qca6564_proprietary/qwlan30.bin \ + file://qca6564_proprietary/utf30.bin \ " # Firmware files for QCA6574 (Qualcomm proprietary driver) diff --git a/meta-digi-arm/recipes-bsp/firmware-qualcomm/firmware-qualcomm/otp30.bin b/meta-digi-arm/recipes-bsp/firmware-qualcomm/firmware-qualcomm/qca6564_proprietary/otp30.bin similarity index 100% rename from meta-digi-arm/recipes-bsp/firmware-qualcomm/firmware-qualcomm/otp30.bin rename to meta-digi-arm/recipes-bsp/firmware-qualcomm/firmware-qualcomm/qca6564_proprietary/otp30.bin diff --git a/meta-digi-arm/recipes-bsp/firmware-qualcomm/firmware-qualcomm/qwlan30.bin b/meta-digi-arm/recipes-bsp/firmware-qualcomm/firmware-qualcomm/qca6564_proprietary/qwlan30.bin similarity index 100% rename from meta-digi-arm/recipes-bsp/firmware-qualcomm/firmware-qualcomm/qwlan30.bin rename to meta-digi-arm/recipes-bsp/firmware-qualcomm/firmware-qualcomm/qca6564_proprietary/qwlan30.bin diff --git a/meta-digi-arm/recipes-bsp/firmware-qualcomm/firmware-qualcomm/utf30.bin b/meta-digi-arm/recipes-bsp/firmware-qualcomm/firmware-qualcomm/qca6564_proprietary/utf30.bin similarity index 100% rename from meta-digi-arm/recipes-bsp/firmware-qualcomm/firmware-qualcomm/utf30.bin rename to meta-digi-arm/recipes-bsp/firmware-qualcomm/firmware-qualcomm/qca6564_proprietary/utf30.bin