libfwupdplugin5-1.7.3-150400.2.7 >  A bwpp9|wFc4;̾X[B-2(+gK }Ӿ`3#b8:F- GnKڔ񛪺p@g?gd # T% ;L_elt x |   $; $D4DD( 8[9[:?[>a@a,Fa;GaPHaXIa`Xad;YbP;\b]b^bbbccdcecfclcudvdwdxdydzgdgtgxg~gClibfwupdplugin51.7.3150400.2.7Allow session software to update device firmwarefwupd is a daemon to allows session software to update device firmware on the local machine.bwpusheep59HSUSE Linux Enterprise 15SUSE LLC GPL-2.0-or-later AND LGPL-2.1-or-laterhttps://www.suse.com/System/Librarieshttps://fwupd.org/linuxx86_64Hbwpbwp@31683716ebb6347d4d2dbd825567e7e4cddd4c0d1b0cbc066a978ba21cecb1c7libfwupdplugin.so.5.0.0rootrootrootrootfwupd-1.7.3-150400.2.7.src.rpmlibfwupdplugin.so.5()(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_0.1.0)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_0.6.1)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_0.7.1)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_0.7.2)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_0.8.0)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_0.9.3)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_0.9.5)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_0.9.7)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_0.9.8)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.0.0)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.0.1)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.0.2)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.0.3)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.0.4)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.0.5)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.0.6)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.0.8)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.0.9)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.1.0)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.1.1)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.1.2)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.2.0)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.2.2)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.2.4)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.2.5)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.2.6)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.2.9)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.3.1)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.3.2)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.3.3)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.3.4)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.3.5)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.3.6)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.3.8)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.3.9)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.4.0)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.4.1)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.4.5)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.4.6)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.4.7)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.5.0)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.5.1)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.5.2)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.5.3)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.5.4)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.5.5)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.5.6)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.5.7)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.5.8)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.6.0)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.6.1)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.6.2)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.7.0)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.7.1)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.7.2)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.7.3)(64bit)libfwupdplugin5libfwupdplugin5(x86-64) @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@    /sbin/ldconfig/sbin/ldconfigfwupdlibarchive.so.13()(64bit)libc.so.6()(64bit)libc.so.6(GLIBC_2.14)(64bit)libc.so.6(GLIBC_2.2.5)(64bit)libc.so.6(GLIBC_2.4)(64bit)libc.so.6(GLIBC_2.7)(64bit)libfwupd.so.2()(64bit)libfwupd.so.2(LIBFWUPD_0.1.1)(64bit)libfwupd.so.2(LIBFWUPD_0.7.0)(64bit)libfwupd.so.2(LIBFWUPD_0.9.3)(64bit)libfwupd.so.2(LIBFWUPD_0.9.8)(64bit)libfwupd.so.2(LIBFWUPD_1.0.0)(64bit)libfwupd.so.2(LIBFWUPD_1.0.8)(64bit)libfwupd.so.2(LIBFWUPD_1.1.0)(64bit)libfwupd.so.2(LIBFWUPD_1.1.2)(64bit)libfwupd.so.2(LIBFWUPD_1.1.3)(64bit)libfwupd.so.2(LIBFWUPD_1.2.4)(64bit)libfwupd.so.2(LIBFWUPD_1.2.5)(64bit)libfwupd.so.2(LIBFWUPD_1.2.9)(64bit)libfwupd.so.2(LIBFWUPD_1.3.7)(64bit)libfwupd.so.2(LIBFWUPD_1.4.1)(64bit)libfwupd.so.2(LIBFWUPD_1.4.5)(64bit)libfwupd.so.2(LIBFWUPD_1.5.0)(64bit)libfwupd.so.2(LIBFWUPD_1.5.1)(64bit)libfwupd.so.2(LIBFWUPD_1.5.5)(64bit)libfwupd.so.2(LIBFWUPD_1.5.8)(64bit)libfwupd.so.2(LIBFWUPD_1.6.0)(64bit)libfwupd.so.2(LIBFWUPD_1.6.2)(64bit)libgcab-1.0.so.0()(64bit)libgcab-1.0.so.0(LIBGCAB1_0.0)(64bit)libgcab-1.0.so.0(LIBGCAB1_0.2)(64bit)libgcab-1.0.so.0(LIBGCAB1_0.6)(64bit)libgcab-1.0.so.0(LIBGCAB1_1.0)(64bit)libgio-2.0.so.0()(64bit)libglib-2.0.so.0()(64bit)libgmodule-2.0.so.0()(64bit)libgobject-2.0.so.0()(64bit)libgudev-1.0.so.0()(64bit)libgusb.so.2()(64bit)libgusb.so.2(LIBGUSB_0.1.0)(64bit)libgusb.so.2(LIBGUSB_0.1.1)(64bit)libgusb.so.2(LIBGUSB_0.1.7)(64bit)libgusb.so.2(LIBGUSB_0.2.8)(64bit)libgusb.so.2(LIBGUSB_0.3.1)(64bit)libgusb.so.2(LIBGUSB_0.3.3)(64bit)libjcat.so.1()(64bit)libjcat.so.1(LIBJCAT_0.1.0)(64bit)libpthread.so.0()(64bit)libpthread.so.0(GLIBC_2.2.5)(64bit)libxmlb.so.2()(64bit)libxmlb.so.2(LIBXMLB_0.1.0)(64bit)libxmlb.so.2(LIBXMLB_0.1.1)(64bit)libxmlb.so.2(LIBXMLB_0.1.12)(64bit)libxmlb.so.2(LIBXMLB_0.1.15)(64bit)libxmlb.so.2(LIBXMLB_0.1.2)(64bit)libxmlb.so.2(LIBXMLB_0.1.3)(64bit)libxmlb.so.2(LIBXMLB_0.1.4)(64bit)libxmlb.so.2(LIBXMLB_0.1.5)(64bit)libxmlb.so.2(LIBXMLB_0.1.6)(64bit)libxmlb.so.2(LIBXMLB_0.1.7)(64bit)libxmlb.so.2(LIBXMLB_0.3.0)(64bit)rpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)1.7.33.0.4-14.6.0-14.0-15.2-14.14.3bs@aaA@aaaaaaim@a^@`e`c`KW`6?`.V_S_м@_$_i_F@__@_O@_"@_"@_"@_@^א^א^1^@^h^)^ @]@]@]c]8H@] \\-@\@\Yz\73\\U@\ @[k@[Q@[\[h@[Xf@[GB[E@Zľ@ZlZ@Z`@Z1@Z1@Z1@Z;@Z8@Z2gYYYX @XX*X*X*X*X*X*X*X*X*Vii@Vii@Vii@Vii@Vii@Vii@Vii@Vii@Vii@Vii@UeU+U+jlee@suse.comgmbr3@opensuse.orghpj@urpla.netbjorn.lie@gmail.combjorn.lie@gmail.comjlee@suse.comdimstar@opensuse.orgdimstar@opensuse.orgjsegitz@suse.comjlee@suse.comglin@suse.comglin@suse.comglin@suse.comglin@suse.cominfo@paolostivanin.comglin@suse.comglin@suse.comglin@suse.comglin@suse.comglin@suse.comdimstar@opensuse.orgdimstar@opensuse.orgqkzhu@suse.comdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgyfjiang@suse.comdimstar@opensuse.orgdimstar@opensuse.orgglin@suse.comglin@suse.comhpj@urpla.netstefan.bruens@rwth-aachen.debjorn.lie@gmail.comschwab@suse.debjorn.lie@gmail.comglin@suse.comglin@suse.commpluskal@suse.commaurizio.galli@gmail.comdimstar@opensuse.orgglin@suse.commail@bernhard-voelker.debjorn.lie@gmail.comglin@suse.comschwab@suse.deglin@suse.comndas@suse.denico.kruber@gmail.comjengelh@inai.denico.kruber@gmail.comtchvatal@suse.comoliver@getspam.deoliver@getspam.dedimstar@opensuse.orgmpluskal@suse.comantoine.belvire@opensuse.orgfcrozat@suse.comdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgstefan.bruens@rwth-aachen.defcrozat@suse.comstefan.bruens@rwth-aachen.dedimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgmpluskal@suse.comzaitor@opensuse.orgzaitor@opensuse.orgzaitor@opensuse.orgzaitor@opensuse.orgzaitor@opensuse.orgzaitor@opensuse.orgzaitor@opensuse.orgzaitor@opensuse.orgzaitor@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.org- Add fwupd-bsc1193921-nvme-ignore-non-PCI-NVMe-devices.patch to ignore non-PCI NVMe devices (bnc#1193921)- Update to version 1.7.3: * This release adds the following features: + Add a sync-bkc subcommand to ensure a known set of firmware versions + Add FuArchiveFirmware for plugins that use archives as firmware files + Add quirkable page and sector size properties to FuCfiDevice + Make Upower and powerd support optional * This release fixes the following bugs: + Add some sanity checks to the elanfp firmware parser + Add the CFI JEDEC instance ID if using the vendor-extended version + Check the value range when parsing the quirk keys + Do not wait for a USB runtime if will-disappear is set + Enable the MOTD integration when using pam_motd + Fix DFU regression when merging the FuProgress work + Fix running the tests when fwupd is not installed + Fix the GLib error message when inotify max_user_instances is too low + Fix VLI VL820Q7 detection to fix flashing of the Lenovo TBT3 dock + Ignore a USB error for STM32 attach when the device goes away + Make the HSI tests optional for embedded targets + Make the plugin startup order deterministic + Set Thunderbolt ports offline on host controller + Use endian-safe version functions when enumerating Logitech hardware + Use lowercase flag names in intel-spi to prevent a runtime warning + Wait for the System76 Launch device to come back from DFU mode * This release adds support for the following hardware: + Most Nordic Semiconductor nRF Secure devices - Fix build when not on TW: add BR protobuf-c- Fix build issue in spec (references to libfwupdplugin2 -> libfwupdplugin5)- Update to version 1.7.2: * This release adds the following features: + Add a new HSI check that PCR registers 0-7 are not empty + Add several compile flags to reduce the install size by over 300Kb + Allow overriding HwId data from the daemon.conf config file + Allow overriding the firmware GType from a quirk file + Export the component release ID over DBus + Remove support for the SoloKey and ChaosKey devices + Show a daemon warning if quirk flags are malformed + Speed up the daemon startup by ~40% by doing less at startup * This release fixes the following bugs: + Be case insensitive when fixing the device model + Fix a critial warning in ccgx found by the fuzzer + Fix a DFU crash if the attach failed due to a hardware fault + Fix a Redfish crash when specifying a URL without a port + Fix CLI downloads when using fwupdmgr --ipfs + Fix critical warning when /etc/machine-id does not exist + Inhibit thunderbolt devices to correctly use UPDATABLE_HIDDEN + Set SSL_VERIFYHOST=0 when using Redfish to fix OpenBMC auth + Skip UEFI devices that fail coldplug * This release adds support for the following hardware: All exported MTD block devices - Changes from version 1.7.1: * This release adds the following features: + Allow specifying 'fwupdmgr device-test foo --json' for unattended testing + Allow using a filename when using set-approved-firmware + Inhibit ModemManager device in mbim-qdu + Share the Common Flash Memory Interface quirks between plugins + Show changes in HSI attributes when using 'fwupdmgr security' + Show the user a warning if updating may affect full-disk-encryption + Show translated firmware release notes when provided + Support loading remotes from /var/lib/fwupd/remotes.d * This release fixes the following bugs: + Fix a CCGX regression when loading firmware + Fix a potential crash when dumping Parade devices + Fix build error when sys/io.h is not available + Fix building the Synaptics RMI self tests on s390x + Fix the CSME CVE detection for new generations + Handle EPERM when running the self tests on systems with IPMI + Mark as SUPPORTED even if on battery power + Only save the HSI attributes to the database if different + Raise the client timeout value from 25 seconds to fix Redfish startup + Redirect the old HSI links to the correct place + Relax the ITE SuperIO signature checks for new hardware support + Set device time and timezone for logitech bulkcontroller devices + Set the verfmt of the returned device when the daemon device is unset * This release adds support for the following hardware: + Dell Atomic Dock + HP Thunderbolt Dock G4 + More PixArt devices + Steelseries Stratus + Wacom 3rd-gen Intuos BT - Changes from version 1.7.0: * This release adds the following features: + Add FuCfuPayload and FuCfuOffer for future usage + Add support for an 'unreachable' device flag + Add support for Logitech devices supporting the Unified Battery feature + Allow adding GUIDs to each HSI security attribute + Allow installing the LVFS remote, but with it disabled by default + Convert security attributes to JSON and write then to the database + Convert the device test script to a fwupdmgr subcommand + Create Redfish user accounts automatically using IPMI + Use an interactive request to restart some Logitech DFU devices * This release fixes the following bugs: + Abort on invalid SREC files early to avoid a fuzzing timeout + Allow using interrupt transfers for HID devices + Allow waiting for multiple devices to replug + Fix a critical warning on a Unifying flash failure + Fix a regression in flashing the Dell dock + Fix Thunderbolt host controller probing + Forcefully set checksums found in cabinet files to lowercase + Force UX-capsule over full size BGRT + Make the SuperIO ports and timeouts specific to the DMI model + Only probe SynapticsMST devices that have opted-in + Remove support for --ignore-power as it did not work for UEFI firmware + Reset the CMOS as required when changing system firmware branch + Restart the daemon if any of the the plugin config files are modified + Show HSiLevel=0 attributes in JSON security output + Update the child composite ID if the parent changes + Use a per-device global percentage completion + Write the BMP image upside down to avoid using a negative bitmap height * This release adds support for the following hardware: + A huge number of Synaptics CAPE devices + Elan fingerprint readers + Logitech Bolt peripherals, receivers and radio hardware + Logitech devices supporting the bulk controller protocol + More supported PixArt devices + More supported StarBook coreboot devices + Union Point SPI hardware - Add pkgconfig(libprotobuf-c) and pkgconfig(protobuf) BuildRequires: New dependencies. - Refresh patches with quilt. - Drop sub-package fwupdtpmevlog, no longer built. - Update URL in _service, new home.- Update to version 1.6.4: * Allow overriding the quirks directory at runtime * Fix a regression in flashing the Dell dock * Fix probing the Dell TPM * Show HSiLevel=0 attributes in JSON security output * Abort on invalid SREC files early to avoid a fuzzing timeout * This release adds support for the following hardware: + AVer ATLAS CAM/CAM520 Pro2 + Cayenne/Spyder Synaptics MST + VL819 USB devices - Changes from version 1.6.3: * This release adds the following features: Fall back to the parent if the child does not have a battery level set * This release fixes the following bugs: + Disable the uefi_capsule plugin if Redfish coldplug succeeded + Fix an elantp crash when starting the daemon + Fix compiling with old versions of libxmlb + Fix detection of 8Bitdo wireless usb adapter + Fix the 8bitdo N30 Pro 2 install duration + Fix the modem-manager report that failed to get device after update + Fix writing large redfish firmware files * This release adds support for the following hardware: + Poly Studio P21 + Realtek RTD2141B - Switch service to obs_scm, and recompress to buildtime. - Drop automatic changesgenerate, upstream have perfectly fine and human understandable release notes at https://github.com/fwupd/fwupd/releases that should be copied into .changes.- Add requires to udisks2 for dbxtool update. (bnc#1192344)- If the machine we install onto has shim installed, it is likely an EFI based system. Require fwupd-efi in this case (boo#1192206).- Require libfwupdplugin2 by the -devel package: the -devel package installs the .so symlink, thus we must guarantee the target library to be present.- Added hardening to systemd service(s) (bsc#1181400). Added patch(es): * harden_fwupd-offline-update.service.patch * harden_fwupd-refresh.service.patch- Update to version 1.6.2 - The fwupd efi program be separated to fwupd-efi package. - Removed pesign-obs-integration, moved needssslcertforbuild , SBAT and EFI signing stuff to fwupd-efi. - Moved libfwupdplugin1 to libfwupdplugin2 - Change log from upstream: https://github.com/fwupd/fwupd/blob/main/data/org.freedesktop.fwupd.metainfo.xml - This release adds the following features: * Add a plugin to check Lenovo firmware settings * Add initial support for the powerd daemon * Add support for CapsuleOnDisk * Add support for installing UEFI updates from GRUB * Add support for soft-requirements that can be ignored with --force * Allow devices to only accept version upgrades * Allow discovery of Redfish BMCs specified by VID-PID or MAC * Allow the daemon to request interactive action from the end user * Automatically connect the BMC network interface at startup * Show the build timestamp if set on the device * Show the user how to switch out of Wacom tablet Android-mode - This release fixes the following bugs: * Add the alternate vendor name into the 8BitDo allowlist * Allow multiple devices to set WAIT_FOR_REPLUG * Allow the client to watch for more property changes * Always ensure the SuperIO version string is NUL terminated * Automatically clear the update error as required * Disable all UX capsules for Lenovo hardware * Do not assume the metainfo file is NUL-terminated * Do not save invalid files on LVFS server error * Fix a VLI regression in enumerating the PD device * Fix a VLI regression when installing VL820Q7 firmware * Fix enumeration of the Synaptics Prometheus config child * Fix parsing Redfish USB/PCI network VID/PIDs * Fix the fwupdmgr progressbar spinner to actually work * Fix version number for legacy Wacom Bluetooth modules * Ignore virtual M.2 ATA devices * Preserve NEEDS_REBOOT on successful update * Prevent a corrupt PHAT table from allocating lots of memory * Read the Redfish SMBIOS table when required * Remove the vendor string from the device name where required * Save the update state to the database correctly all of the time * Switch from sysctl to ioctl for ESRT on FreeBSD * Try reading from /sys/class/dmi if SMBIOS direct access fails * Watch for children added or removed after setup has been completed * Work around a XCC-ism on Lenovo hardware - This release adds support for the following hardware: * ModemManager devices supporting Firehose or MBIM QDU * More models of RTS54HUB * More Poly DFU devices * Parade LSPCON * PixArt receiver and wireless hardware * Realtek MST with RTD2142 * SuperIO IT5570 * USB4 Dell dock- Remove valgrind from BuildRequires since it's not a hard requirement anymore. (bsc#1184248)- Update to version 1.5.8: New features: * Add a new internal flag to opt-in to GUID matching * Add D501 Baklava device support * Add fu_device_set_battery_level() * Add missing uint64 read and write helpers * Add Qubes wrapper source and create packages * Allow enabling plugins only matching a specific HwId * Prompt for unlock keypress if reset command is blocked * Remove obsolete dell-dock non-passive update flow support * Remove the Hughski public key * Show a warning when parsing invalid quirk files * Support for GATT characteristic signals/notifications * Support more than one protocol for a given device Fixes: * Align the CCGX DMC firmware to 64 byte chunks * Be more strict for custom quirk keys * Check pixart firmware compatibility with hardware before flashing * Correct a thunderbolt assertion if kernel failed FW read * Correctly erase STM32 devices when transfer size is less than sector size * Detect SREC overflow to avoid adding ~4GB of 0xFF padding * Do not show a critical error when flashing footer-less binary files * Don't allow device updates while needing activation * Fix a regression in the elantp defined IAP start address * Fix a regression where activate stopped working * Fix firmware update of pointing device on Lenovo ThinkPad Nano * Fix the HSI plugin 'Disabled' state * Fix the quirk key name for the Lenovo HDMI with power * Fix writing to the GD32VF103 bootloader * Only call elantp->detach() when writing a firmware blob * Updated StarLabs GUIDs * Wait a few ms for the Logitech hardware to settle after detach - Remove GPG-KEY-Hughski-Limited from the filelist - Drop upstreamed patch + fwupd-bsc1182057-fix-sbat-section-copy.patch- Add fwupd-bsc1182057-fix-sbat-section-copy.patch to set the proper section flags for .sbat section so that objcopy can copy it into fwupd*.efi (bsc#1182057)- Update to version 1.5.7: New features: * Add initial support for Bluez bluetooth devices * Add more supported pixart devices * Add support for the RTD21xx HDMI converter Fixes * Convert MBR types to GPT GUIDs to help find the ESP * Do not allow updating a synaptics-mst device with no customer ID * Drop unused heap pages after startup has completed * Ensure SBAT metadata is added correctly * Move the plugin build logic to the plugins themselves * Only allow verify-update for plugins that support CAN_VERIFY - Specify SBAT metadata for openSUSE/SLE (bsc#1182057) - Adjust the meson options + plugin_uefi => plugin_uefi_capsule and plugin_uefi_pk + plugin_synaptics => plugin_synaptics_mst and plugin_synaptics_rmi + Disable Intel AMT plugin in non-x86 systems- Update to 1.5.6: New features: * Add SBAT metadata to the fwupd EFI binary * Add support for GD32VF103 as found in the Longan Nano * Add support for RMI PS2 devices * Add support for the System76 Keyboard * Allow downloading firmware from IPFS * Install the UX data into a single .tar.xz file * Add a plugin to update PixArt RF devices * Add new hardware to use the elantp and rts54hid plugins * Allow specifying more than one VendorID for a device * Detect the AMD TSME encryption state for HSI-4 * Detect the AMI PK test key is not installed for HSI-1 * Add Maple Ridge Thunderbolt firmware parsing support * Add --no-remote-check to ignore checking for download remotes * Allow creating FMAP and Synaptics firmware using builder.xml Fixes: * Add support for the Starlabs LabTop L4 * Allow using an external ESP again * Ask the user to reboot when required if downgrading * Be more paranoid when parsing ASCII buffers and devices * Check if the fwupd BootXXXX entry exists on failure * Clear the pending flag if restarting the system * Do not allow flashing using flashrom if BLE is enabled * Do not allow Lenovo hardware to install multiple capsules * Do not parse the OptionROM image * Do not show Unknown [***] for every client connection * Fix dnload wBlockNum wraparound for ST devices * Fix OOM when using large ArchiveSizeMax values * Fix several crashes spotted by AddressSanitizer * Fix several places where the Goodix MOC plugin could crash * Include the PCR0 to the report metadata * Report the lockdown status from UEFI and SuperIO plugins * Show a console warning if the system clock is not set * Fix flashing a fingerprint reader that is in use * Fix several critical warnings when parsing invalid firmware * Fix updating DFU devices that use DNLOAD_BUSY * Ignore the legacy UEFI OVMF dummy GUID * Make libfwupd more thread safe to fix a crash in gnome-software * Never show unprintable chars from invalid firmware in the logs * Allow using fwupdtool as non-root for firmware commands * Do not trust the Block.HintSystem boolean for ESP filtering * Fix a memory leak when parsing Synaptics firmware * Fix a possible crash when reading the Goodix MOC USB request * Fix crashes when parsing invalid FMAP, DMC, Solokey and Synaptics images - Deprecate fwupd-bsc1179790-disable-hintsystem.patch- Add fwupd-bsc1179790-disable-hintsystem.patch to remove Block.HintSystem from ESP filtering (bsc#1179790)- Update to version 1.5.3: + Lower the CURL version required to fix build in RHEL + Do not use meson ternary operations to avoid bumping the required meson version + Added Lite Mk III + Allow setting the GMainContext when used for sync methods + Fall back to the misc device for serio devices + Actually implement rescan in FuUdevDevice + bcm57xx: Refactor CRC code to remove extra byteswap + bcm57xx: Fix CRC check + synaptics-rmi: Don't crash if calling ->to_string() before - >setup() + Fix a possible critical warning due to missing retval + Add the serio->firmare_id for UDev devices + Export the driver name from FuUdevDevice + Allow the client to send PKCS7 and GPG signatures + Force the remote kind to JCat server-side + Only parse the signature if the remote is JCat + fu-main: Fix sender_features insert with wrong size + make platform integrity plugin optional and disabled by default + Add quirk for Western Digital + Mark more user-visible strings as translatable + modem-manager: validate firmware update method combinations + modem-manager: remove unused byte counts in QMI/PDC update logic + modem-manager: make sure the correct interface number is used for QMI + modem-manager: udev monitoring only if device switches layout + modem-manager: plug udev client leak + Restrict loading component types of firmware - Enable supported_build to clarify that this package is supported (bsc#1179790) - Drop fwupd-platform-integrity.conf since upstream disables the platform integrity module by default now due to incompleteness. - Address fwupd-refresh.service in %preun, %pre, %post, and %postun and provide a rc link for it - Version "Obsoletes: dbxtool" and "Obsoletes: fwupdate"- Update to version 1.5.2: + ata: Add OUI quirk for Toshiba + libfwupd: Restore recognizing gpg and pkcs7 types still + Register the SoupSession gtype when required + Switch from libsoup to libcurl + Fix sync method when called from threads without a context + Move ABI check to Github actions + Enable github workflows + libfwupd: Add fwupd_client_download_file() + libfwupd: Add fwupd_client_get_user_agent() + Only download the remote metadata as required + Add breaks for fwupdate 12-7 (Closes: #960688) + Install modules-load configs in the correct directory + vli: Do not be clever replugging the MSP430 device + vli: Make some trivial debugging more specific to help debug an issue + make gcab optional + Fall back to FAT32 internal partitions for detecting ESP + Add a flag to indicate if packages are supported + uefi: a new option for uefi configuration to use UEFI removable path + Add a section to man page on scripting + synaptics-mst: Improve reliability by waiting 2 seconds after writing data + hailuck: Add an plugin for the Pinebook Pro laptop + Allow setting global flags for FuHidDevice + Set the SMBIOS chassis type to portable if a DT battery exists + colorhug: Don't set the version format to triplet at startup + Allow components to set the icon from the metadata + colorhug: Fix detection of version on older firmware versions + bcm57xx: Fix reading vendor/device ids from firmware. + Remove HSI update and attestation suffixes + trivial: make dbxtool executable to fix snap build + Ignore an invalid vendor-id when adding releases for display + Notify the service manager when idle-quitting - Refresh fwupd-bsc1130056-change-shim-path.patch - Changes in BuildRequires: + Replace pkgconfig(libsoup-2.4) with pkgconfig(libcurl) + Replace pkgconfig(systemd) with pkgconfig(libsystemd) - fwupd-msr.conf and fwupd-platform-integrity.conf are moved to %{_modulesloaddir}.- Obsoletes and Provides dbxtool since fwupd 1.5.0+ now embeds dbxtool in the dbxtool plugin- Amend the spec file (jsc#SLE-16818) + Only enable fish support for Tumbleweed + Only enable the MSR plugin for x86 + Only install dbxtool in the architectures with UEFI support- Update to version 1.5.1: + Use UDisks to find out if swap devices are encrypted. + Show a link to discover more information about a specific plugin failure. + updated fish completions to 1.5.0. + Remove the duplicate parent-child data in FwupdDevice and FuDevice. + Show a less scary fwupdate output for devices without info. + thunderbolt: recognize authorized value of '2' as well. + bcm57xx: Make hotplug more reliable. + Use a different Device ID for the OptionROM devices. + contrib/ci: switch TPM simulator from ibmswtpm to swtpm. + Delete unused EFI variables when deploying firmware. + Fix probe warning for the Logitech Unifying device. + Include the amount of NVRAM size in use in the LVFS failure report. + Add external interface messages.- Update to version 1.5.0: + Add a compatible re-implementation of the rhboot dbxtool. + Add async versions of the library for GUI tools. + Add commands for interacting with the ESP to fwupdtool. + Add firmware-extract subcommand to fwupdtool. + Add FwupdPlugin so we can convey enumerated system errors to the end user. + Add plugin for Goodix fingerprint sensors. + Add plugin that can update the BCM5719 network adapter. + Add plugin to update Elan Touchpads using HID. + Add support for a delayed activation flow for Thunderbolt. + Add support for ChromeOS Quiche and Gingerbread. + Add support for Hyper hardware. + Add support for the Host Security ID. + Add support for ThunderBolt retimers. + Add switch-branch command to fwupdtool and fwupdmgr. + Allow blocking specific firmware releases by checksum. + Allow contructing a firmware with multiple images. + Allow firmware to require specific features from front-end clients. + Allow updating the dbx using the LVFS, validating it is safe to apply. + Include the HSI results and attributes in the uploaded report. + Support loading DMI data from DT systems. + Support LVFS::UpdateImage for GUI clients.- Add fwupd-jscSLE-11766-close-efidir-leap-gap.patch: Set SLE and openSUSE esp os dir at runtime (jsc#SLE-11766) - Drop _multibuild and build option -Defi_os_dir="%{efidir}": with the above patch fwupd can detect esp os dir dynamically - Update the efidir related %post and %postun scripts in spec file- Update to version 1.4.5: * Add XB_QUERY_FLAG_FORCE_NODE_CACHE * Add support for a delayed activation flow for Thunderbolt * Allow firmware to require specific features from front-end clients * Allow multi-byte FuUdevDevice preads and writes * Be more defensive when remotes are missing required keys * Disable the SQLite lookaside cache * ccgx: Add more hybrid dock support * ccgx: Modify readme to remove customer info * ccgx: add new protocol for dmc dock * ccgx: remove verify flag in plugin * modem-manager: read the vendor ID directly from sysfs attribute Fixes: #2209 * thelio-io: Add the DFU instance ID as a counterpart only * thunderbolt: Add a new subclassed thunderbolt firmware update type * thunderbolt: Allow quirks to skip the authentication step * thunderbolt: drop support for force power * tpm-eventlog: fix PCR0 calculation * uefi: check for free space after cleaning up ESP * vli: Add dual-image feature for VL103 backup firmware * vli: Add the project ID shared SPI PD controllers * vli: Allow chained usb hub devices where the parent needs GPIOB reset * vli: Do not modify the class vfuncs depending on device type * vli: Do not use GUID matching for the MSP device * vli: Rename FuVliUsbhubI2cDevice to FuVliUsbhubMsp430Device * vli: Set FuQuirks on the shared SPI object * vli: Set the i2c instance IDs in probe() * vli: Use the GPIOB reset for the MiniDock VL103 * vli: Wait for the root device to be replugged when updating the MSP430- Update to version 1.4.4: * Release fwupd 1.4.4 * Fix regression when checking for downgraded metadata- Update to version 1.4.3: * Release fwupd 1.4.3 * ata: A OUI quirk for Kingston * ccgx: Fix a potential division by zero * Check the device requirements when returning from GetDetails * fu-engine: Allow --plugin-whitelist to use dashes instead of underscores * Always enforce the metadata signature has a valid timestamp * ccgx: modify install duration for dmc device * ccgx: Add support for HP DMC dock devices * dell-dock: prevent updates to occur via synaptics-mst plugin * dell-dock: Capture the dock SKU in metadata * synaptics-prometheus: Force the minor version from 0x02 to 0x01 to make sure the devices can be updated back to 0x01. * Generate a body for github releases (Fixes: #2034)- Build the package separately for openSUSE and SLE using _multibuild (jsc#SLE-11744).- Update to version 1.4.2: * vli: Add no-guid-matching for all VLI devices * vli: Remove a copy-and-paste mistake * Add two OUI quirks * ata: Add WD OUI quirk 000cca * synaptics-rmi: Essentially blacklist Dell K12A * dfu: Avoid communicating when bitManifestationTolerant is off * ata: Add OUI quirk for Western Digital * dfu: Support MATEKF722SE quirk * Fix various build issues with -Wdiscarded-qualifiers * thunderbolt/dell-dock: Delay activation for Thunderbolt updates * Switch the default of EnumerateAllDevices to false * Add OUI quirk for SanDisk * vli: Add two standard USB instance IDs for shared-PD devices * vli: Use GPIOB to reset the VL817 found in two Lenovo products * tpm-eventlog: Correct the display of final calculated PCRs * wacom-raw: fixup switching to bootloader mode- Update to version 1.4.1: * thunderbolt: Don't show safe mode errors for USB4 host controllers * ep963x: Various changes to make the plugin actually work on real hardware * Make tss2-esys conditional * ep963x: Remove some dead code spotted by Coverity * ccgx: Only update the FW2 partition of the ThinkPad USB-C Dock Gen2 * ccgx: Expand the FWImageType for future hardware * Allow specifying the device on the command line by GUID * Fix the DeviceID set by GetDetails * wacom-usb: Fix a theoretical buffer over-read to make GCC happy * vli: Only show the i2c devices on the USB3 hub * Allow devices to be updatable, but only when upgrading a proxy device * Reset the progressbar time estimate if the percentage is invalid * ccgx: Always report 100% when finished writing * Add a device quirk that forces an explicit device-id match * ccgx: Set the device name and summary from quirk files * vli: Only do the APP5 FW bug fix on affected hardware * vli: Show all the buffer when debugging with FWUPD_VLI_USBHUB_VERBOSE * fu-engine: Refresh device name and format before setting supported flag * Allow a device to set the logical or physical ID during ->setup() * ccgx: Split out a trivial helper to set the instance IDs * ccgx: Set the device name to be more useful * ccgx: Set the logical ID as the FwMode * ccgx: Split out a trivial function to set the version * ccgx: Do not reboot the device write after installing * ccgx: Do no show the flash parameters when unknown * Allow devices to match the proxy device by GUID * Do not skip attach() if the device is marked _WILL_DISAPPEAR * dell-dock: Port to using fu_device_get_proxy() * Allow adding a device 'proxy' device that can do actions on it * vli: Do not show the USB 2 recovery devices for USB 3 hubs * vli: Add metadata to identify which is the same physical device * uefi: correctly format firmware version of Dynabook (né Toshiba) X30, X40 and probably others * synaptics-cxaudio: Use the ->attach() device vfunc * synaptics-cxaudio: Wait for the device to reboot after writing firmware * logitech_hidpp: decrease verbosity of messages that hid++ ID is missing * Prefer to update the child first if the order is unspecified * Do not modify the device priority for child devices- Exclude fwupdate from the architectures without UEFI support.- Update to version 1.4.0: * Release fwupd 1.4.0 * Allow removing device flags from quirk files * Use black to format python source in a consistent manner * Define SOURCE_VERSION when building a package * Only set the parent when adopting children * Do not conditionalize attach() and detach() on IS_BOOTLOADER * Do not crash the daemon if a plugin does something dumb * wacom-usb: Add more sanity checks in case the daemon goes crazy * wacom-usb: Use a per-device cleanup function * Add some more device regression tests * wacom-usb: Add a lot of missing metadata about the devices * wacom-usb: Hide a lot of debugging behind FWUPD_WACOM_VERBOSE * Only auto-add counterpart GUIDs when required * ccgx: remove update message * ccgx: add parent guid for hybrid dock * ccgx: Use a smaller timeout for i2c read and write operations * ccgx: Retry the register read and write with a i2c reset * ccgx: Fix buffer overflow when reading out i2c status * ccgx: Retry the HID disconnect up to 5 times * ccgx: Show a better error message on failure * ccgx: Allow forcing firmware of the wrong app_type with fwupdtool * Modularize the hardware tests * Ignore indirect devices that replug during the composite firmware update * Export the device state as part of the D-Bus interface * Fix devices that use CounterpartGuid when more than one device is installed * Use the GUID as a fallback rather than the connection ID * ccgx: Fix critical warning on i2c write failure * logitech-hidpp: Do not add peripheral devices for receiver in BL mode * Install the installed-tests only if tests are enabled * Load the signature to get the aliased CDN-safe version of the metadata * vli: Only reboot the USB hub once * synaptics-cxaudio: Only use the PATCH2 address when the patch level is 2 * add STM32F745 stm dfuse quirk * dfu: Add a way to set the timeout from a quirk * Export the release urgency * Export the release creation time * Check the firmware requirements before adding SUPPORTED * data/motd/fwupd-refresh: Only order after network.target * ccgx: Do not add the HID device that will disconnect * ccgx: Use Silicon ID and Application type to set flash parameters * Add a new daemon configuration option to control EnumerateAllDevices * logitech_hidpp: set the bootloader protocol * Install meson from pip for LGTM * bash: add completion for fwupdtool reinstall * fu-tool: add reinstall command * fu-engine: export fu_engine_get_releases_for_device in header * vli: Wait for the VL103 to timeout to fix detach * ccgx: Show the UpdateMessage in the correct device mode * ccgx: Add extra instance IDs to match specific firmware * Use a static version number * thunderbolt: Rather than hardcoding to PCI slot numbers, use domain in GUID * Revert "thunderbolt: Create a unique GUID including Thunderbolt controller path" * dell-dock: Port to fu_device_retry() * nitrokey: Convert to use FuHidDevice * nitrokey: Port to fu_device_retry() * vli: Port to fu_device_retry() * Add fu_device_retry() helper functionality * ccgx: Implement writing firmware to flash * ccgx: Add i2c status check when reading or writing registers * ccgx: Add 5ms delay between read registers to avoid an i2c error * libfwupdplugin: Use fu_device_locker_close() * synaptics-mst: Use fu_device_locker_close() * Add fu_device_locker_close() * ccgx: Do not store the silicon ID in the image address * ccgx: Add device quirks for the Lenovo Hybrid Dock * ccgx: Switch HID mode to HPI mode at startup * ccgx: Clear the event queue when in startup * ccgx: Wait for hardware to settle when coming out of reset * ccgx: Do not mark the device as updatable when in boot mode * ccgx: Verify the firmware app type when preparing firmware * ccgx: Set the update message when running in backup firmware * ccgx: Read the FwAppType from the hardware * ccgx: Set the HPI version number for the current firmware * ccgx: Get the silicon ID to map the flash parameters * ccgx: Read the HPI device mode at startup * ccgx: Set up the HPI I²C config at startup * ccgx: Create devices when in HID and I2C modes * Add a new ChromeOS CI target to build without GPG and PKCS7 * Use Jcat files in firmware archives and for metadata - Removed fu-keyring-gpg which caused CVE-2020-10759 (boo#1172643) * csr: Allow truncated HID reads * vli: Only consider the high nibble when building the sub-version * csr: Parse the firmware as a DFU file * Add support for EP963x hardware * Add FuHidDevice abstraction * vli: Correctly attach VL103 after a firmware update * ccgx: Parse the metadata block in the firmware image * ccgx: Add a firmare parser for cyacd files * logitech: Correctly set the protocol * Add the optional device-id to the update --help output * Fix a difficult-to-trigger daemon hang when replugging devices * vli: Remove a dock device from the whitelist that is never going to be updated * vli: Add some trivial debugging to help track down a bug * vli: Never add USB hub devices that are not upgradable * uefi: Don't use shim for non-secure boot configurations * Start fwupd-activate.service after snapd.service * dfu: Actually reload the DFU device after upgrade has completed * dfu: Add one more m-stack device requiring a quirk * Apply version format to releases and devices at same time * Ensure that the DeviceID is set for child devices * Fix a daemon crash when removing children * Allow waiting for the parent device when replugging * Add fu_device_get_root() shared API * vli: Fix an error when detaching MSP430 * vli: Fix a critical warning when getting the USB speed * vli: Fix the error enum values for the MSP430 * Do not add blank lines when tokenizing Intel hex files * vli: Fix the version calculation for MSP430 * vli: Ignore one more error when attaching * vli: Always expect the VL103 header at 0x1003 or 0x4000 * vli: Do not fall back to the recovery write for usbhubs * vli: Only show the 2nd header if the device ID is valid * vli: Fix VL103 reboot from ROM mode to FW mode * vli: Add some better comments for writing GPIOs * Add a helper script to add a DFU header * Add 'firmware-convert' subcommand to fwupdtool * fu-engine: Make two passes of requirements checking * fu-engine: Copy the VersionFormat from the CAB if specified in `get-details` * Add a new plugin for CPU microcode * Don't build/install fwupdagent man page if agent build is not requested * Introduce a new VersionFormat for `hex` * Drop UEFI quirks we now inherit from metadata * ci: build Debian using libflashrom * When TPM PCR0 measurements fail, query if secure boot is available and enabled * fix fwupd.shutdown.in according to the movement of fwupdtool to bindir * ata: Add OUI quirk for Western Digital and Intel * improved fish shell completion * vli: Set the MSP430 version format to pair * Always return AppStream markup for remote agreements * ata: Add trivial OUI quirk for Micron * added completion script for fish shell * Do not fail loading in /etc/machine-id is not available * Use xb_builder_source_add_simple_adapter * Create FuCabinet and untangle a lot of legacy code * nvme: Do not try to handle integer version numbers * Allow server metadata to set the version format on some devices * fu-tool: Correctly append the release to devices in `get-details` * For the `get-details` command make sure to always show devices * fu-engine: Copy the version and format from donor device in get-details * fu-engine: Use unknown for version format by default on get-details * Inihbit all power management actions using logind when updating * Decouple the version format from the version itself * Add raw versions for bootloader and lowest * Allow server metadata to set the device name on some devices * Remove support for GCab less than v1.0 * fu-device-list: Check protocol before de-duping devices * Do not allow devices that have no vendor ID to be UPDATABLE * ata: Include a vendor ID for ATA hardware * ata: Switch off the verbose logging by default * Always check for PLAIN when doing vercmp() operations * Discard the reason upgrades aren't available (Fixes: #1678) * Improve the description of `fwupdtpmevlog` for man page * Move `fwupdtpmevlog` into `bindir` * uefi: Move `fwupdate` into `bindir` * Move `fwupdtool` and `fwupdagent` into `bindir` * Use the system provided flashrom on Fedora * Add a plugin vfunc to run after subclassed FuDevice creation * ci: use standalone script to generate build dependencies * Move the daemons from /usr/lib/fwupd to /usr/libexec/fwupd * Use the recently released flashrom v1.2 * Generate an additional UEFI quirk file using the stable LVFS metadata * uefi: Apply capsule update even with single valid capsule * Fix a critical warning when installing some firmware * ebitdo: Fix the endpoint address logged in the error message * uefi: Find the correct lds and crt name when specifying -Defi_ldsdir * upower: Move battery threshold declaration into a configuration file * upower: Decrease minimum battery requirement to 10% - Refresh fwupd-bsc1130056-change-shim-path.patch - Add new dependency: jcat- Update to version 1.3.9: * Release fwupd 1.3.9 * Always check for PLAIN when doing vercmp() operations * improved fish shell completion * vli: Set the MSP430 version format to pair * added completion script for fish shell * Always return AppStream markup for remote agreements * Do not fail loading in /etc/machine-id is not available * fu-engine: Fixup broken-ness from 0c0fada18fc9cb2a0efec351db67f0867bf045cd * Use xb_builder_source_add_simple_adapter * fu-tool: Correctly append the release to devices in `get-details` * For the `get-details` command make sure to always show devices * fu-engine: Copy the version and format from donor device in get-details * fu-engine: Use unknown for version format by default on get-details * Inihbit all power management actions using logind when updating * fu-device-list: Check protocol before de-duping devices * ata: Switch off the verbose logging by default * Discard the reason upgrades aren't available (Fixes: #1678) * Improve the description of `fwupdtpmevlog` for man page * Move `fwupdtpmevlog` into `bindir` * uefi: Move `fwupdate` into `bindir` * Move `fwupdtool` and `fwupdagent` into `bindir` * ci: use standalone script to generate build dependencies * Move the daemons from /usr/lib/fwupd to /usr/libexec/fwupd * Use the recently released flashrom v1.2 * uefi: Apply capsule update even with single valid capsule * Fix a critical warning when installing some firmware * ebitdo: Fix the endpoint address logged in the error message * fu-util: fix a logic error in report uploading introduced in e076d48afb74d1447936d353f12781755f13b047 * uefi: Find the correct lds and crt name when specifying -Defi_ldsdir * upower: Move battery threshold declaration into a configuration file * upower: Decrease minimum battery requirement to 10% - Update to version 1.3.8: * Release fwupd 1.3.8 * Do not use fu_common_vercmp() when the device verfmt is PLAIN * altos: Output raw buffer data when using FWUPD_ALTOS_VERBOSE * altos: Prefix an error to provide more context * altos: Add a trivial _to_string() implementation * synaptics-cxaudio: Make the verfmt match that of the existing Windows tools * synaptics-mst: Allow MST to fall back if no PCI device is marked as parent * Allow specifying a list of subsystems when setting a physical ID * synaptics-mst: Fix trivial thinko caused by the wrong dock connected * vli: Invert the logic to reboot the parent FuCliUsbhubDevice, not the child * vli: Switch around the hub tier values * uefi: Fix a build regression with Fedora 30 * logitech_hidpp: Ignore detach failures (Fixes: #1183) * logitech_hidpp: When detaching to bootloader use non-blocking IO and wait for timeout * vli: Show erase progress when doing a v2 recovery * uefi: Do not remove the 'Linux Firmware Updater' boot entry before update * uefi: Do not rewrite BootOrder in the EFI helper * vli: Add support for the PS186 device * Set up more parent devices for various Lenovo USB hubs * cxaudio: Set the update protocol to prevent a daemon warning * vli: Add support for Lenovo Modularized dock * Add an extra instance ID to disambiguate USB hubs * vli: Remove the unused tierX custom flags for each device * Revert "Correctly delete UEFI variables" * uefi: make debugging output more readable * vli: Fix a potential buffer-overflow when parsing firmware * tpm: Optimize the string parsing and fix the boolean logic * synaptics-rmi: Add a missing error enum value * synaptics-rmi: Correctly identify a checksum failure * synaptics-rmi: Fix Coverity issue that is impossible to hit in reality * solokeys: Parse old versions of the bootloader string * Add a plugin to update PD controllers by Fresco Logic * vli: Set the device progress correctly when erasing a PD device * vli: Use the correct command to get the device firmware version * vli: Correctly reset all VL100 devices * vli: Set all standalone PD devices to not do SPI auto-detection * vli: Mark standalone PD devices as updatable * vli: Set the protocol for FuVliUsbhubPdDevice types * Support the new gnuefi file locations * Cleanup ancient fwupdate-* EFI variables too (Fixes: #1739) * Detect kernel lockdown status * vli: Add the DEV instance ID to all devices * tpm-eventlog: Replay the TPM event log to get the PCRx values * tpm-eventlog: Store the eventlog hashes in binary form - Update to version 1.3.7: * Release fwupd 1.3.7 * Correctly delete UEFI variables * ci: allow working with podman w/o aliases * ci: fedora: force correct rpm package version * src: fu-engine: check version was updated by checking version * Correctly import PKCS-7 remote metadata * Add 'refresh' to fwupdtool * Add 'get-remotes' to fwupdtool * Generate a win32 setup binary * Fix display of UTF-8 characters on Windows * Move MOTD population into the daemon * fu-util: Discourage metadata refreshes more than once per day * Disable the battery percentage checks if UPower is unavailable * Allow getting the list of updates in JSON format from fwupdagent * Revert "trivial: Attempt to fix Debian CI" * fu-remote-list: emit a changed signal when modifying a remote * synaptics-mst: Skip self tests for systems with amdgpu * Allow applying all releases to get to a target version * Split up fu_engine_install() into two halves * logitech_hidpp: use the correct timeout for IO channel writes * Allow quirking devices that always require a version check * Shut down automatically when there is system memory pressure * Show the device parent if there is an interesting child * Allow the client to get the list of FwupdDevice children * Set the FwupdDevice parents in fwupdtool * Don't always get the vendor ID for udev devices using the parent * Add a runtime warning when adding a device without an vendor-id or protocol set * vli: Set more of the firmware max sizes automatically * vli: Add a SpiAutoDetect quirk for some of the PD devices * vli: Use a different protocol ID for i2c devices * vli: Add support for standalone Single PD devices * vli: Move generic SPI functionality into the FuVliDevice base class * vli: Remove the PD emulation code * vli: Use a more standard GUID for the child i²c and shared SPI devices * vli: Allow setting the device kind from a quirk * vli: Make more function names match the docs * vli: Move the SPI command quirking from FuVliUsbhubDevice down to FuVliDevice * vli: Rename FuVliUsbhubPdFirmware to FuVliPdFirmware * vli: Allow the device to specify the PD firmware header offset * vli: Add a FuVliDevice as a subclass to FuVliUsbhubDevice * vli: Define the device GType in the quirk file * vli: Move the CRC calculations out of usbhub scope * vli: Have one 'DeviceKind' for all objects * vli: Rename the `vli_usbhub` plugin to `vli` * Capitalize GNOME - package has grown a few new binaries: fwupdagent, fwupdate, fwupdtool and a tpm event debugging tool, that is packaged separately: fwupdtpmevlog- Drop docbook-utils-minimal build dependency, manpages are generated with gtk-doc.- Update to version 1.3.6: * plugins/coreboot: Add missing fu_hash dependency * trivial: synaptics-cxaudio: Add Google type C <-> 3.5mm adapter * fu-engine: don't expose bootloader version errors to users * trivial: dell-dock: drop unused quirk keyx * trivial: rename synapticsmst to synaptics-mst * trivial: actually set vendor ID for synaptics * fu-remote-list: Drop fallback path behavior * libfwupdplugin: Make sure systemd created environment variables exist * trivial: fu-remotes-list: drop usage of `FU_SELF_TEST_REMOTES_DIR` * trivial: synaptics-rmi: hardcode Vendor string * trivial: Set vendor ID for Dell WD19 to USB:0x413C (Fixes: #1653) * trivial: Document the use of vendor-id in each plugin * superio: Use the baseboard vendor as the vendor ID * uefi: Use the BIOS vendor as the vendor ID * coreboot: Use the BIOS vendor as the vendor ID * flashrom: Use the BIOS vendor as the vendor ID * dell: Hardcode a plausible vendor ID * emmc: Set the correct vendor ID prefix * fu-util-common: correct the default prompt for reboot/shutdown (Fixes: #1617) * Split out the remote loading from FuConfig * vli-usbhub: Fix the quirk for the legacy VIA 813 chip * Clarify error messages when no upgrades available * trivial: Don't handle a vendor-id requirement error that cannot happen * Only check the vendor ID if the device has one set * fu-install-task: Enforce that device protocol matches metadata * Add a new plugin that can parse the TPM event log * Allow other plugins to contribute report metadata * trivial: dell: hardcode the physical device ID for tpm to match the tpm plugin * Add a new plugin that exposes the system TPM device firmware version * Add fu_udev_device_set_flags() * trivial: Render large values of VersionRaw in a more portable way * trivial: wacom-raw: mark all Moffett SKUs as self recovery * Throw exit status 0 (instead of 2) if there is no firmware to be updated * Add a `dell-bios` version format * Add support for multiple LVFS::VersionFormat tags * Do not do semver conversion in fu_common_vercmp() * trivial: Deprecate fu_common_version_parse() * trivial: Support 'plain' in fu_common_version_from_uintXX() * Add the sysfs 'description' as the one-line device summary * trivial: Also print the parent keys when using FU_UDEV_DEVICE_DEBUG * trivial: Add fu_common_version_from_uint64() * trivial: Convert the VersionRaw value to a uint64_t for future use * Allow building on Windows with MinGW * synaptics-prometheus: Allow incremental version major and minor number * Replace 'scheduing' with 'scheduling' * Export the raw device version to the client --verbose output * trivial: Only dlopen the test plugin once * Export the device protocol to the client --verbose output * trivial: installed-tests: try to display journal for failed tests * trivial: ci: debian: enable verbose daemon logging for failure analysis * trivial: installed-tests: explicitly choose webcam device ID * trivial: debian: remove obj-* built files to fix back to back builds * trivial: ci: don't let bad symlinks cause debian build failures * trivial: debian: correct a dependency for libfwupdplugin-dev - Changes from version 1.3.5: * plugins: Fix potential use of NULL pointer in fu_dell_dock_mst_write_register * Fix shifting integer by more than 31 in fu_util_filter_device * synaptics-prometheus: Reload the device version after IOTA update * synaptics-prometheus: Reload the device version after update * trivial: wacom: remove coretronic config from Moffett scope * trivial: Fix a NULL/FALSE confusion * trivial: Add a BR for Fedora * trivial: Fix coreboot commit to fix CI * trivial: libfwupdplugin: clarify name of self test * plugins/coreboot: Improve version detection * plugins/coreboot: Get rid of FU_HWIDS_KEY_BIOS_VENDOR in coldplug * trivial: Move progressbar out of libfwupdplugin * trivial: Unexport fu_test_get_filename() * trivial: Unexport fu_test_compare_lines() * trivial: Unexport fu_test_loop_run_with_timeout() * trivial: Do not include non-introspectable functions in the GIR * trivial: Fix up a few introspection problems in FwupdPlugin * trivial: Include the Fwupd GIR in the FwupdPLugin GIR * trivial: Never add duplicate symbols to the map file * trivial: Properly namespace the defines in the exported header * Install development files for libfwupdplugin * Convert libfwupdprivate to a shared library libfwupdplugin * trivial: Allow building GCab from a subpackage * trivial: Fix under-include to define O_RDONLY * trivial: Allow compiling without * trivial: Do not use FuProgressbar in dfu-tool * synaptics-prometheus: Manually set the bootloader mode when attaching * trivial: Split out a new helper funtion * trivial: Add some optional debugging when hotplugging devices * trivial: Include the correct header for S_IRWXU * Always use the more portable 3-arg form for open() * trivial: Untangle FuHistory from FuPlugin * trivial: Allow compiling without * Revert "synaptics-rmi: Use the build ID as the version number to match the vendor tool" * Add missing documentation from the plugin interface * trivial: fu-udev-device: remove a prototype that was missed in b3d4d2ff * trivial: add missing gtk-doc fields for many files in src/ * trivial: fix compile failure without gudev * synaptics-prometheus: Mirror the _IS_BOOTLOADER from device to config * Allow setting the device flags using GObject properties * vli_usbhub: Set the composite parent at construction time * synaptics-prometheus: Set the composite parent at construction time * Allow plugins to set the parent during construction * vli-usbhub: Whitelist the PD and I²C devices * Set the protocol per-device not per-plugin * synaptics-rmi: Use the build ID as the version number to match the vendor tool * Create a REV_00 instance ID as this may be what the vendor needs to target * fu-util-common: Invert default behavior for reboot and shutdown prompts * trivial: fu-plugin-vfuncs: Add GTK documentation for all vfuncs * Make gudev a compile-time option * trivial: Set the offline trigger using an environment variable * trivial: ci: pull lintian from unstable for now. * trivial: stop including fu-hash.h as part of fu-plugin-vfuncs.h * Fix shebangs on scripts * trivial: Use prefixes for DATADIR in config.h for portability * Allow compiling GUsb as a subproject * trivial: fu-udev-device: add a to_string func for debugging * trivial: Don't assume that plugins end in .so * trivial: optionrom: remove unneeded includes * trivial: debian: ci: ignore library-not-linked-against-libc for more * trivial: remove version-format.md * trivial: Allow compiling without pwrite() * trivial: Allow compiling without * trivial: Allow compiling without realpath() * trivial: Allow compiling without HAVE_LC_MESSAGES * trivial: Allow compiling without getuid() * trivial: Allow compiling without * trivial: Allow compiling without * trivial: Allow compiling without * Ensure the _get_type() gets the same ABI version as the constructor * Use the correct unlocker when using GRWLock * trivial: plugins: only build coreboot when option set * fwupdtool: don't show a warning when calling `get-plugins` - Changes from version 1.3.4: * trivial: Don't force specific linker flash when cross building * dell: Use the more portable g_usleep() * trivial: Fix unused header includes * vli-usbhub: Make erasing less verbose and writing more obvious * vli-usbhub: Correctly print the 24-bit USB3 offset * vli-usbhub: Print the PD firmware offset and size for debugging * vli-usbhub: Open the parent device before attempting to read or write from the child * vli-usbhub: Set the install duration for the PD device * trivial: Fix a failed error prefix string * trivial: wacom-raw: Remove embedded from device name * wacom-raw: Correct HWID support * uefi: Just use a uint16_t for BootNext processing * uefi: Use a simpler entries set algorithm * vli-usbhub: Add support for writing using I2C passthru * vli-usbhub: Support updating PD devices that share the hub flash * vli-usbhub: Support the PD file format * trivial: uefi: correct a NULL pointer dereference * uefi: fall back to `ID_LIKE` when the path for `ID` doesn't exist (Fixes:# 1566) * uefi: Make generate_binary.sh more robust * Tokenize the Intel Hex file before parsing * trivial: Detect the USB version automatically * trivial: fu-util/fu-tool: explicitly block unsupported flags * Add support for matching requirements on device parents * Skip cleanup after device is done updating if `will-disappear` is set (Fixes: #1529) * efi: use a wildcard section copy for final EFI generation * modem-manager: explicitly use plain version format * modem-manager: add quirks for the Foxconn T77W968 modules * Allows confined snaps to activate fwupd via D-Bus * trivial: thunderbolt: clarify error message * Add a new property `Interactive` to the daemon * trivial: contrib/get-version.py: require git less hard * superio: Never read from port offset zero * superio: Fix regression when coldplugging superio devices * trivial: Fix Fedora CI build * trivial: Fix the autobuilt spec file with the new tarball version * Dynamically determine release version * trivial: synapticmst: allow missing `/proc/modules` * synapticsmst: filter invalid chip IDs * trivial: Provide some defines for common image names * Allow aborting early when using fu_archive_iterate() * Add fu_firmware_image_set_version() for future use * modem-manager: increase re-enumeration delay to 20000ms * modem-manager: add counterpart GUID for the DW5821e/eSIM * Add versions formats for the Microsoft Surface devices * usb: make loading vendor/product/serial strings non-fatal * trivial: Fix the protocol ID for VLI usbhub devices * trivial: wacom-raw: add more device IDs for Dell devices * trivial: contrib: don't require TSS for debian archs without EFI * fu-udev-device: Adjust bounds checking to be safer * fu-udev-device: Don't assume all devices have `device_file` * synaptics-rmi: correct an error cleaning up on probe * trivial: fu-udev-device: add some safety checks for fd * udev-device: fix offset of vendor id of hidraw devices * flashrom: switch to upstream source * trivial: fu-plugin: only show an error once "failed to open plugin" was being prefixed twice * trivial: debian: only use mingw-w64-tools in archs with UEFI plugin * fastboot: Fix a regression when updating modem firmware * trivial: conflict with old unifying plugin * Rename unifying plugin to logitech-hidpp (Fixes: #1329) * Add a new contrib script for installing a Dell BIOS from an EXE file * trivial: add-capsule-header: rename to make it easier to import * trivial: simple_client: make it easier to reuse code * trivial: firmware-packager: make it easier to reuse code * trivial: add-capsule-header: make it actually work * trivial: fix some gtkdoc sections * Bump the required gudev version * trivial: Fix a compile error with older versions of gudev * trivial: wacom: add vid/pid for panels in Moffett * trivial: post release version bump - Changes from version 1.3.3 * unifying: notify users to replug when using dfu control (Fixes: #1383) * trivial: 8bitdo: set a transient failure while waiting for user action * libfwupd: Add a new error type for user action needed * trivial: 8bitdo: show the same message for SN30pro and SN30pro+ * trivial: Fix up some typos from codespell * trivial: Ensure config.h is included in all source files * trivial: Fix up some NULL/FALSE confusion * trivial: Add all the _LAST enums that shouldn't be checked for ABI * trivial: Fix a typo that means that UEFI results were never cleared * Always report the update-error correctly for multiple updates * trivial: Fix fwupdmgr get-history if the firmware was not installed from the LVFS * trivial: Do not emit a warning if a child has no version number * Move the file descriptor lifecycle into FuUdevDevice * trivial: Fix some GtkDoc annotations * ebitdo: Modernize the plugin to use FuFirmware * nitrokey: Use fu_common_dump_raw() when debugging * thunderbolt: Create a unique GUID including Thunderbolt controller path * Use device safety flags to show prompts before installing updates * trivial: Use the new possible_plugin support for USB devices too * jabra: Move the Jabra-specific detach out into its own plugin * Ensure the device is open when doing the subclassed prepare() and cleanup() * vli-usbhub: Add support for updating V2 devices * Allow verifying the device image itself from fwupdtool * Use XMLb to query quirks * trivial: ci: disable pulling libxmlb from unstable * synaptics-prometheus: Don't add a config-subdevice in bootloader mode * dfu: Use the VID/PID to identify devices without download capability in runtime * trivial: debian: remove some unneeded lintian * trivial: debian: bump compat version * ebitdo: Add SN30Pro+ to recognized quirk list (Fixes: #1503) * dfu: Add several quirks for Realtek camera hardware * dfu: Always mark devices as UPDATABLE * uefi: use `genpeimg` to mark ASLR and DP/NX on EFI binary * trivial: solokey: correct a typo * trivial: fu-util: fix typo * uefi: rework ESP path detection and lifecycle * trivial: uefi: show more metadata in to_string method * trivial: fu-device: add new method to remove metadata * Add a plugin to update VIA USB hub hardware * trivial: Add fu_common_read_uint8_safe() * trivial: Fix two typos in fu_common_read_uint16_safe() * solokey: Allow parsing firmware with fwupdtool * Allow fwupdtool to dump details of common firmware formats * trivial: Do not do system coldplug when using FU_ENGINE_LOAD_FLAG_NO_ENUMERATE * trivial: fu-self-test: set polling self tests to slow * trivial: fu-tool: Allow `detach`/`attach` to prompt for device * Strip trailing whitespace from USB descriptors * trivial: Add fu_common_read_uint16_safe() * trivial: Add version to the FuFirmware->to_string() output * Add fu_firmware_set_version() * Add a systemd preset file for `fwupd-refresh.service` * trivial: dell: work around a memory leak caught by address sanitizer * ebitdo: if the device has the will disappear flag, don't wait for ack (Fixes: #994) * Add a new plugin for working with eMMC devices (Fixes: #1455) * fu-engine: Check multiple plugins if quirks match * trivial: don't try to enable LVFS from systemd * trivial: coreboot: fix a clang compiler error * fu-util: Add user friendly strings for all device flags * Add new device flags indicating update resilience * plugins: Add coreboot plugin * fu-plugin: Add fu_plugin_get_hwid_replace_value * trivial: Increase verbosity when actually updating devices * trivial: Allow plugins to use WAIT_FOR_REPLUG in prepare and cleanup * Add FuDevice->prepare() and FuDevice->cleanup() vfuncs for future use * dfu: Implement FuDevice->to_string() * trivial: colorhug: fix a crash that occurs when flashing sometimes * trivial: fu-util: break out of automatic reports if one is not automatic * thunderbolt: some more clarifications when using ICL * trivial: fwupd-refresh: activate motd if using systemd v243 or later * trivial: fwupd-refresh: allow exit code 2 for success * trivial: synaptics-cxaudio: Add Google Pixel buds * trivial: arch: ci: Wait some time for tpm_server to start up * Allow a custom FuFirmwareImage->write() in superclassed objects * dfu: Remove two completely unused helpers * dfu: Make DfuFirmware derive from FuFirmware * dfu: Make DfuImage derive from FuFirmwareImage * dfu: Remove private headers that do not need to exist * Fix device flag filtering * trivial: fu-engine: Don't compare device and content checksums * fu-engine: Read all releases and convert versions when comparing * Add new flags `can-verify` and `can-verify-image` * trivial: make verify and verify-update safer * trivial: test: add checksums for "stock" 1.2.2 * trivial: fu-udev-device: use parent udev device to indicate `internal` * trivial: fix TPM2 simulator tests for arch * trivial: uefi: don't add PCRs with all 0's * trivial: Fix a recent regression causing a double-free * synaptics-cxaudio: Support the ThinkPad USB-C Dock Gen2 * trivial: fu-util: add some extra checks around automatic reports * trivial: fu-tool: typo * fu-systemd: Use correct method for stopping units. * trivial: fu-udev-device: Use ID_PCI_CLASS_FROM_DATABASE if name not set * trivial: fu-plugin: quiet down debug output for optionrom plugin * 8bitdo: use will-disappear flag for sf30/sn30 controllers (Fixes: #783) * trivial: ebitdo: don't dump out firmware header unless plugin verbose * trivial: ebitdo: don't use local errors when writing firmware * Add a new device flag for indicating device won't come back * wacom-emr: Fix a regression for EMR devices * Add a generic DFU firmware object for plugins to use * dfu: Use FwupdInstallFlags rather than a DFU-specific version * dfu: Remove functionality for modifying DfuSe files * dfu: Remove functionality you can do now with fwupdtool * dfu: Remove the merge command as it's unused and broken * trivial: Add fu_firmware_parse_file() helper for future use * trivial: Remove the fuzzing details for DfuPatch * trivial: Add klass->to_string for superclassed FuFirmwareImage objects * dfu: Remove DfuPatch as no vendor actually uses this * dfu: Don't wrap provided VID-PID functions * dfu: Use the standard FuDevice custom flags functionality * dfu: Use klass_device->write_firmware() directly * dfu: Use the generic fu_plugin_usb_device_added() function * dfu: Use daemon flags to ignore devices rather than a special flag * dfu: Set the device state directly to avoid proxying signals * dfu: Use the built-in detach() and attach() vfuncs * Read firmware back from the device as a FuFirmware * dfu: Remove a pointless function * dfu: Remove support for the Metadata Store Proposal * dfu: Remove XTEA support * dfu: Remove the SREC and IHEX parsing out of the DFU plugin * ebitdo: Use klass_device->write_firmware like other plugins * trivial: Remove G_BEGIN_DECLS from all private headers * Remove FU_PLUGIN_RULE_REQUIRES_QUIRK as all the plugins now use it * Set all FuUdevDevice plugins to use FU_QUIRKS_PLUGIN * thunderbolt: recognize new 'generation' sysfs attribute * Rename and modernize the udev plugin * synaptics-rmi: Also add the product ID as a GUID without the minor version * synaptics-rmi: Correctly set the payload length rather than hardcoding it * synaptics-rmi: Write the core config correctly * synaptics-rmi: Decode BL7 status failures as actual errors * synaptics-rmi: Add some trivial debugging to help debug a write problem * trivial: uefi: Make efivarvs errors clearer (Fixes: 1330) * trivial: uefi: don't prefix efivar errors * trivial: Remove some now-unused vfuncs * altos: Modernize the plugin to simplify it * Create the custom plugin GType in common code * Reduce more boilerplate in plugins * synaptics-rmi: Check the correct register when querying bootloader mode * trivial: fu-engine: fix never reporting remotes * trivial: fu-util: don't show warnings for no reports to upload * trivial: debian: remove more conffiles from transitions (Closes: #932617) * trivial: debian/control*: Update for fwupdate transition * trivial: Fix a tiny memory leak when starting the daemon * modem-manager: Fix a tiny memory leak when starting the daemon * synaptics-rmi: Copy the behavior of rmi4utils for BL7 detach * synaptics-rmi: Simplify fu_synaptics_rmi_device_read() * synaptics-rmi: Set the version after ->setup has run * synaptics-rmi: Use the correct mask when getting the bootloader mode on BL7 * syanptics-rmi: The build_id is 3 bytes long, not 2 * synaptics-rmi: Read the config partition the same as rmi4utils * Provide a default implementation of common FuDevice actions * thunderbolt-power: avoid checking for bolt support * synaptics-rmi: Add some debugging for BL7 devices * Fix usage of incorrect type for return value * synaptics-rmi: Do as little as possible in device setup * synaptics-rmi: Speed up reading the PDT from 900ms to 30ms * fu-util: add support for a reinstall command * trivial: fu-util/fu-tool: update re-install help text to reinstall * trivial: fu-util: remove double printed message about succesful firmware update * trivial: fu-util: show no updatable devices error for update command * synaptics-rmi: Ignore the ATTN reports from the hardware when reading DATA * synaptics-rmi: Move the fuzzing instructions to the toplevel README * Fuzz the SREC and IHEX file parsers once more * Use parallel fuzzing for the SMBIOS checks too * synaptics-rmi: Fix the packing of the partition table * Add a plugin to update Synaptics RMI4 devices * trivial: Add a parallel fuzzing script * trivial: fu-util: output newline after prompt. * trivial: fix %u output in report upload * Add a --no-domain logging option * trivial: Fix compiler warning for impossible-to-hit condition * Add support for automatically uploading reports * trivial: motd: disable updating motd for now * trivial: fwupd-refresh: fix a clash with fwupd.service (Closes: #941360) * trivial: Fix Fedora CI * trivial: fu-udev-device: fix some assertions * Search up the tree for a vendor name rather than (ab)using the HID_NAME * Add some success messages when CLI tasks have completed * trivial: Put the boolean prompt on the same line as the text * Never show LicenseRef-proprietary to the end user * trivial: snap: correct install hook root directory * Export the instructions for detaching the device * uefi: detect unmounted ESP partitions (Fixes: #1405) * uefi: stop recording efibootmgr output after flash * trivial: post release version bump - Changes from version 1.3.2: * Add support for '' to disambiguate some firmware * thelio-io: Add a plugin to detach the Thelio IO board * trivial: uefi, dell: skip self tests with TPM if non-root (Fixes: #1396) * trivial: dell: quiet the TSS output * trivial: uefi: allow forcing to TPM2 via environment variable * Do not ask the user to upload a report if ReportURI is not set * Do not enumerate physical devices when running the internal self tests * trivial: libfwupd: skip tests if machine-id is empty too * Add a new plugin to update Conexant audio devices * Export the salted machine ID as a daemon property * Fall back to /var/lib/dbus/machine-id when required * trivial: add stalebot (Fixes: #1393) * trivial: dell-dock: correct another write_size error * Align the key values to the text *width* not the number of bytes * trivial: Move dbus directory location for snap too * trivial: Fix some NULL/FALSE confusion * synaptics-prometheus: Fix tiny memory leak when using FuSynapromConfig * trivial: Fix tiny memory leak when using FuSrecFirmware * snap: switch to core18 * trivial: Return the correct property when getting the host product * trivial: fu-util-common: fix description wrapping (Fixes: #1378) * fu-util/fu-tool: Map out changelogs from remotes * fu-util/fu-tool: Better display historical information * fu-history: Update device_modified in sql database during updates * unifying: Use the instance ID to check for supported devices * unifying: Ensure HID++ v2.0 peripheral devices get scanned by the plugin * trivial: Add some more defines to the srec parser * trivial: fix wget command in fu-tool.c * Allow parsing a raw SREC file * trivial: wacom: Add support for second vendor ID * uefi, dell-esrt: Show firmware version when capsule updates unavailable * Add some more debugging to the SREC and IHEX parsers * Print the instance IDs if the GUIDs are unconverted * Add fu_common_bytes_compare_raw() for future usage * Call the set_quirk_kv() vfunc for the superclassed object * uefi: make the TPM optional for runtime again (Fixes: #1362) * trivial: uefi: Make the TCTI output less verbose * Support in AppStream metadata * Include all GUIDs when uploading a report * Do not crash when starting tpm2-abrmd * trivial: Update DBus conf path for example Fedora package * Move D-Bus conf file to datadir/dbus-1/system.d * trivial: Add fu_io_channel_write_byte_array() for future use * trivial: post release version bump - Package new sub-packages typelib-1_0-FwupdPlugin-1_0 and libfwupdplugin1.- Fix file list- Update to version 1.3.1: (jsc#SLE-10751) * Allow disabling all plugins * trivial: Specify the tpm2-tss-devel version in the example spec file * Move to CI Fedora 30 * modem-manager: Fix two build warnings on Fedora 30 * synapticsmst: Add another name quirk for the ThinkPad USB-C Dock * Re-introduce GUID support to fwupdmgr and fwupdtool * uefi-recovery: Add a plugin to add a fake ESRT entry for device recovery * Add a DMI quirk for the Minnowboard Turbot * trivial: Make it easy to disable or enable libflashrom for distros * trivial: Don't use Recommends for RHEL 7 * unifying: fix timeout metadata * ci: arch: minor improvements * unifying: fix timeout * Allow disabling SSL strict mode for broken corporate proxies * trivial: Allow ignoring the daemon version check by using --force * Try to only show DMI product name once * trivial: fu-util-common: Show unknown devices as interesting devices * dell: Use TSS to query and build TPM vendor strings for GUIDs * trivial: dell: show reasons for lack of updates in `UpdateError` * fu-util-common: strip all trailing whitespace in XML description * trivial: fu-common: match all whitespace not just ' ' in `fu_common_strstrip` * fu-util: show release output in get-details again * unifying: use fu_firmware_strparse_uint16 to read be 16bit values * unifying: fix incomplete hex file parsing * fu-util/fu-tool: Print devices, remotes, releases using a tree * Add aliases for `get-upgrades` and `upgrade` * trivial: UEFI skip self tests if library fails to initialize * libfwupd: Add a new private function `fwupd_remote_set_remotes_dir` * trivial: add libtss2-dev into debian/control (Closes: #1324) * trivial: Fix up the GtkDoc Since lines for API only available in 1.3.x * trivial: Post branch version bump * thunderbolt: Add support for kernel safety checks (Fixes: #1312) * Include the kernel release as a runtime version * trivial: fu-util: Drop GUID support from get-devices * synapticsmst: Partially rewrite the plugin (Fixes #1105) * Remove replug flag after the device comes back from reboot * trivial: Fix running the tests on devices with the TPM in v1.2 mode * trivial: fu-util-common: more cleanup related to topology * trivial: fu-util: cleanup fwupdmgr get-details output * trivial: Don't use topology printing in --verbose mode * Make get-devices and get-topology aliases for one another * trivial: Adjust daemon device sorting * Make get-topology more useful by showing all information * trivial: Fix fu_common_string_append_kv() to align properly with idx > 0 * trivial: dell-dock: correct an error preventing write_size from being set * trivial: Do not warn about deprecated declarations * trivial: Update BRs for the example Fedora package * uefi: add test for TPM 2.0 PCR read function * uefi: use tpm2-tss library to read PCR values * fu-common: Use environment variables for systemd managed directories * Use more systemd directives for directories * trivial: fu-util: fix debug output for devices * Allow turning off the timestamp prefix for debugging * Add a ->udev_device_changed plugin vfunc * Add fu_device_rescan() and a FuDevice->rescan() vfunc * Remove the duplicate files in meson.build * Hash the source files when generating the daemon hash * Split up source files in the build script * uefi: add support for tpm2-tools 4.X * trivial: plugins: clarify stance on afuefi.efi * trivial: plugins/: Update README * trivial: disable gtkdoc by default * trivial: update references of hughsie/fwupd to fwupd/fwupd * Publish docs to fwupd.github.io using CircelCI * Add support to integrate into the motd (Fixes: #1270) * Simplify get-devices output to not show un-useful fields * fu-engine/fu-config: Reload metadata store when configuration changes * trivial: If no devices support updates, show messaging (Closes: #1295) * trivial: uefi: set vendor name for system firwmare from DMI data * unifying: update Solaar url * thunderbolt: Fix logic to work properly with ICL thunderbolt controller * Add fu_udev_device_get_device_file() helper * trivial: Fix regression when using fu_device_incorporate() * trivial: Fix a potential crash when using FuPlugin in the self tests * synapticsmst: Make FuSynapticsmstConnection an actual GObject * synapticsmst: Use the same style as other plugins * trivial: Add some helper functions for GByteArray * Do not use FuDevice metadata for the physical and logical IDs * Use fu_common_string_append_kv() in subclassed device * synapticsmst: Use G_DECLARE_FINAL_TYPE to simplify the object * synapticsmst: Add a SynapticsMSTBoardID for another Lenovo dock * trivial: remove unnecessary CUSTOMERID_DELL define * synapticsmst: Add a SynapticsMSTBoardID for a Lenovo dock * synapticsmst: Display the board ID in non-hex form in the error message * synapticsmst: Use a more suitable icon for the device * trivial: Remove unused variable * Never use memcpy() in a possibly unsafe way * Add a ->to_string() vfunc to FuFirmware * Use FuFirmware as a container for firmware images * Allow filtering devices when using the command line tools * Be more accepting when trying to recover a failed database migration * trivial: Add translation for X-ThunderboltController * trivial: fixup standalone installer * modem-manager: add counterpart GUID for the DW5821e * solokey: Release the interface and rebind the kernel driver on close * fu-tool: Port ability to update a single device from fwupdmgr * uefi: Actually write the new device path if different than before * Allow setting custom flags when using fwupdate * trivial: Do not show a critical warning if no firmware is specified * trivial: Fix overzealous search-replace action in user string * Verify we don't break the ABI * Fix a crash when stopping the fwupd service * Relax the certificate time checks in the self tests for the legacy certificate * trivial: add cache directory into systemd unit rw paths * Never show AppStream markup on the console * Do not segfault when trying to quit the downgrade selection * trivial: Update icons for Thunderbolt and MST devices * Add support for the SoloKey Secure * trivial: Allow a device to *clear* a firmware version * trivial: debian: For signed package fill out Built-Using (Closes: #932757) * Allow specifying GUID to check any version exists * trivial: post release version bump * Release fwupd 1.2.10 * Disable the flashrom plugin by default * trivial: thunderbolt: catch failure setting up device * dell-esrt: Improve the experience for the plugin (Closes: #1245) * fu-util: When unlocking prompt for reboot if applicable * remove those PIDs with Bluetooth interface, Wacom updater doesn't support updating from Bluetooth interface * flashrom: Only show DEBUG and DEBUG2 output if using --plugin-verbose=flashrom * flashrom: Only call flashrom_programmer_init() on whitelisted boards * flashrom: Fix no version format set * fu-util: Show devices with an UpdateError in get-devices output * trivial: uefi: use UEFI-dummy for device ID instead of just uefi * trivial: fix error handling for non UEFI case (#1220) * Add a specific error code for the low battery case * Fix Fedora docker build missing directory: dist * uefi: Determine whether running in legacy mode or not (Fixes: #1220) * trivial: ci: debian: Only turn on flashrom when running CI * trivial: Fix typos in error messages * Allow client code to construct objects from GVariant blobs * Export functionality to build an array of objects * flashrom: Use libflashrom * trivial: Fix the version script to pick up boxed types * trivial: Correctly order the map entries according to vercmp rules * trivial: Fix pylint issue in the version script * Add meson target to fix translations * Add support for 8bitdo USB Retro Receiver * Use the newer features of GRWLock rather than reinventing it * Revert "Allow SuperIO updates to be done live" * uefi: Try to find a duplicate using the loadopt name * uefi: Provide a quirk to disable the use of the UX capsule * trivial: uefi: use the path for efibootmgr that was detected * synaptics-prometheus: Fix installing CONFIG firmware updates * synaptics-prometheus: Set the install duration from a quirk * synaptics-prometheus: Don't emit critial warning when updating config firmware * synaptics-prometheus: Fix missing field in the IOTA reply struct * Create SECURITY.md * redfish: Never set NULL device name * modem-manager: Never set NULL device name * ata: Never set NULL device name * trivial: Add some parameter guards to FuDevice * trivial: snap: make polkit directories if they don't exist (Fixes: #1205) * trivial: fu-main: clarify missing PK file error * synapticsmst: fix GUID generation (Closes: #1207) * Lite Mk II flag for use-shim-unique * trivial: circleci: try to fix automatic snap deployment * Allow SuperIO updates to be done live * fu-util-common: Support empty proxy strings (Fixes: #1199) * trivial: uefi: clarify error message * trivial: Fix non-systemd build * trivial: Sync example spec file with downstream * trivial: post release version bump - Drop fwupd-bsc1143905-hash-the-source-files.patch: Applied upstream. - Add pkgconfig(tss2-esys) BuildRequires: New dependency. - Add gtk-doc BuildRequires and pass gtkdoc=true to meson, build api docs even when using source service.- Add fwupd-bsc1143905-hash-the-source-files.patch to hash the source files instead of libfwupdprivate.a to avoid the checksum change due to the random naming LTO profile sections (bsc#1143905)- Update to version 1.2.10: * Disable the flashrom plugin by default * dell-esrt: Improve the experience for the plugin (Closes: #1245) * fu-util: When unlocking prompt for reboot if applicable * remove those PIDs with Bluetooth interface, Wacom updater doesn't support updating from Bluetooth interface * flashrom: Only show DEBUG and DEBUG2 output if using - -plugin-verbose=flashrom * flashrom: Only call flashrom_programmer_init() on whitelisted boards * flashrom: Fix no version format set * fu-util: Show devices with an UpdateError in get-devices output * Add a specific error code for the low battery case * Fix Fedora docker build missing directory: dist * uefi: Determine whether running in legacy mode or not (Fixes: #1220) * Allow client code to construct objects from GVariant blobs * Export functionality to build an array of objects * flashrom: Use libflashrom * Add meson target to fix translations * Add support for 8bitdo USB Retro Receiver * Use the newer features of GRWLock rather than reinventing it * uefi: Try to find a duplicate using the loadopt name * uefi: Provide a quirk to disable the use of the UX capsule * synaptics-prometheus: Fix installing CONFIG firmware updates * synaptics-prometheus: Set the install duration from a quirk * synaptics-prometheus: Don't emit critial warning when updating config firmware * synaptics-prometheus: Fix missing field in the IOTA reply struct * Create SECURITY.md * redfish: Never set NULL device name * modem-manager: Never set NULL device name * ata: Never set NULL device name * synapticsmst: fix GUID generation (Closes: #1207) * Lite Mk II flag for use-shim-unique * fu-util-common: Support empty proxy strings (Fixes: #1199) - Add python3-setuptools to BuildRequires for generate-version-script.py- Update to version 1.2.9: * Release fwupd 1.2.9 * trivial: Add two new translatable strings for new category types * Check if the system is offline during install, rather than at startup * Prompt the user to shutdown if requried when installing by ID * Use the correct file extension for the offline updates cache * trivial: Allow using --force to use the wrong daemon version * trivial: Display the correct expected command * standalone-installer: Be smarter about existing installed fwupd * Add a plugin to update Synaptics Prometheus fingerprint readers * trivial: standalone-installer: rename uninstall argument to cleanup * fu-util: Check the daemon version is at least the client version * fu-util: Check that daemon is started by expected unit * fu-util-common: when stopping a daemon, check for snap too * Allow using --force to trigger a duplicate offline update * trivial: Allow using FuUsbDevice without a GUsbDevice * trivial: Copy the icons if unset for the device child * trivial: Copy the physical ID if unset for the device child * trivial: Ensure the parent ID is up to date if the device ID changes * trivial: Fix typo when setting the parent ID * trivial: Disable the flatpak CI build * Allow handling FORCE for devices that subclass FuDevice * uefi: Fix a libasan failure when reading a UEFI variable * trivial: Fix a memory leak found using libasan * trivial: Fix an libasan failure in the dell plugin * trivial: Fix some dead code spotted by coverity * trivial: Fix a typo spotted by coverity * trivial: Fix a missing config.h include in a new source file * Dynamically read path to use for /system-update * Display the remote warning on the console in an easy-to-read way * ata: Set version format to plain for devices obtained from udev * trivial: Only apply SmbiosManufacturer to release version for internal * trivial: Fix two bugs in the hardware self tests script * Never guess the version format from the version string * Only force a semver when the device opts-in * Export the version-format to clients * Add missing gtk-doc documentation * dfu: Add some trivial, but useful, debugging for AVR DFU devices * dfu: Correctly identify DFU firmware that starts at offset zero * dfu: Don't keep showing trivial debug output * dfu: Reset the forced version during attach and detach * ata/nvme: For devices running Dell firmware, set `VersionFormat` (Fixes: #1169) * fu-engine: Check if VersionFormat is ambiguous when adding devices * trivial: Fix fwupdate --apply * Only use class-based instance IDs for quirk matching * trivial: dell-dock: set minimum board to 6 * trivial: post release version bump- Update to version 1.2.8: * Don't upload reports when the user has configured their system in a broken way * Allow setting the daemon verbose domains at runtime * Allow fwupdmgr to modify the daemon config * Do not compare version formats when the release format is unknown * Do not fall back integers to a plain version format * Use the device version format when converting the release version * Set the VersionFormat using the metadata or the UEFI quirk - Changes from version 1.2.7: * l10n: Create Lithuanian translation file * l10n: Update LINGUAS * Updated: Add support for 8BitDo M30. * modem-manager: increase the timeout to wait for modem after uninhibited * modem-manager: implement qmi pdc active config selection as attach() * fu-engine: When removing activation flag match the correct version * Require --force to install a release with a different version format * Match the old or new version number when setting NEEDS_REBOOT * Make an error message clearer when there are no updates available * Add support for the not-child extension from Logitech * thunderbolt: Set require-ac for Thunderbolt devices (Fixes: gh#hughsie/fwupd#1142) * Fix some typos spotted using codespell * Add a component categories to express the firmware type * fu-tool: Port get-history command to fwupdtool * Recreate the history database if migration failed * Move the core built-in 'fwupd' remote over to the dell-esrt plugin * snap: Add a custom systemd unit to call activation on shutdown (Fixes: gh#hughsie/fwupd#1125) * ata: Flush cache before standby and activate * synapticsmst: blacklist plugin when using amdgpu (Fixes: gh#hughsie/fwupd#1121) * uefi: add a new option to specify the os name * Return the newest device when using fu_history_get_device_by_id() * uefi: More carefully check the output from tpm2_pcrlist * uefi: Don't overwrite CustomFlags if set from a quirk * Shut down the daemon if the on-disk binary is replaced * ata: Correct activation functionality * Fix version comparisons after reboot for some formats * fu-tool: save history from stuff installed with `fwupdtool` - Changes from version 1.2.6: * ata: send ATA standby immediate when activating firmware * offline: Be more graceful when dealing with Plymouth failures * Save the new version in the history database for offline updates * Show the DeviceID when showing the updates list * Allow forcing an offline-only update on a live system using --force * Do not schedule an update on battery power if it requires AC power * superio: Add InstallDuration default value * superio: Add support for writing new e-flash contents * superio: Fix reading the attestation checksum * superio: Add support for reading the device checksum * superio: Use the chipset ID in the device name * superio: Move the device flush before getting the register map * superio: Move all the IT89xx code to a subclassed device object * superio: Move all the IT85xx code to a subclassed device object * superio: Split and export fu_superio_device_ec_writeX() * superio: Remove the port from fu_superio_device_ec_read() * superio: Move the register read/write into the FuSuperioDevice object * superio: Check the IOBAD0 is usable during setup * superio: Use fu_device_set_firmware_size() * superio: Move some constants out to the common header * superio: Use GObject properties in FuSuperioDevice * superio: Convert FuSuperioDevice to be derivable * Update Plymouth when updating pending firmware * Ask to reboot after scheduling an offline firmware update * Do not fail when scheduling more than one update to be run offline * Allow running offline updates when in system-update.target * Fix the location of fwupdoffline in the service file * Add optional vfuncs to allow detaching and attaching verify() * superio: Add list of SPI commands for future usage * Add a verify-update command to fwupdtool * uefi: Actually upload the UPDATE_INFO entry for the UX capsule * superio: Get the chip size from the EC rather than hardcoding * uefi: Check the error code of QueryCapsuleCapabilities() correctly * Update the UEFI UX Capsule Header checksum when needed. * uefi: Copy the shimx64.efi binary for known broken firmware * Correctly get the check the new version for devices that replug * Add a simple script to add a capsule header * Ensure the PKCS-7 client certificate exists at startup * fix makecab directive options * fwpup.service: use display-manager.service instead of gdm.service * Allow signing the fwupd report with the client certificate * Add a D-Bus method to generate a signature using the self-signed client certificate * Allow signing and verifying data using a PKCS-7 self-signed client certificate * Fix a critical warning when loading a PKCS-7 certificate with no DN * Include all device checksums in the LVFS report * modem-manager: Fix a trivial build warning * superio: Fix a trivial build warning * Move out the offline update functionality to a new binary * Do not reboot when failing to start fwupd during offline updates * Do not write the schema version to the db when loading * Do not recreate XbSilo caches when running on a readonly filesystem * Add the fwupdagent binary for use in shell scripts * Allow restricting firmware updates for enterprise use * standalone-installer: new --allow-older and --allow-reinstall options * Show the upgrade and downgrade flags when getting releases for a device * Rename FwupdRelease:trust-flags to FwupdRelease:flags * fu-tool: Save device state to @LOCALSTATEDIR@/lib/fwupd/state.json on actions * modem-manager: implement support for qmi-pdc * Add a plugin to support ModemManager hardware * fu-tool: Don't let failing to find dbus prevent engine from starting * ata: Support delayed activation * dell-dock: Use activation when calling fwupdtool activate * Add a support for delayed activation * uefi: Fix the self tests when running on Fedora SilverBlue * Do not fail to start the daemon if tpm2_pcrlist hangs * po/make-images.sh: quote LOCALEDIR and PYTHON3 * meson: print stderr of python3 command instead of stdout * Revert "contrib/debian: Switch to debian unstable" * Add elogind support - Changes from version 1.2.5: * uefi: fix segfault in fwup_set_update_statuses * Show in Flathub correctly * debian: explicitly depend on shared-mime-info * superio: Implement detach() and attach() * superio: Correct the names of some constants and improve debugging support * dell-dock: Filter the last supported payloads of certain board 4 SKUs * circleci: Manage the lifecycle of the snap * Add support to run snap build in CircleCI * wacom-usb: Use the correct buffer format for the touch module * wacom-usb: Set the install duration for each device type * wacom-usb: Return with an error if there were too many retries * wacom-usb: Make updating less verbose * Convert all child instance IDs when converting the parent * uefi: Allow devices to create more complete fake UEFI devices * unifying: Fix regression when recovering from failed flash * Ensure libxmlb dir exists for LGTM.com * Add C build configuration for LGTM.com * Use G_BEGIN_DECLS correctly for internal headers * standalone-installer: Fix issue found by LGTM * Use '#pragma once' to avoid a lot of boilerplate * Force LGTM to see Python 3 * fwupd: Hide firmware-packager behind meson option` * fu-common-cab: Correct handling of CAB files w/ nested directories and older libgcab * Fix a regression in using the InstanceIDs for quirk matching * thunderbolt: Convert the instance IDs as we never open the device * udev: Manally call fu_device_setup() to convert the instance IDs * fu-tool: Correct a crash caused by calling fwupdtool update * fu-tool: Don't fail if dbus is unavailable * contrib/debian: Switch to debian unstable * wacom-usb: Record the block number when failing * wacom-usb: The touch address is big endian * wacom-usb: Accept a non-binary IHEX file for the touch update * wacom-usb: Only poll when the device status is 'busy' * wacom-usb: Only reboot the device when all composite devices have been updated * wacom-usb: Fix flashing failure with latest Intuos Pro tablet * dfu: Fill holes when reading SREC files * Add fwupd_guid_from_string() to drop dep on uuid * wacom-raw: Check the InstanceID rather than GUID * Defer the InstanceID->GUID hashing until after setup * ata: Check for USB enclosures as well * Do not use efivar just to print a mixed endian GUID * Add fu_device_add_instance_id() and prefer explicit conversion * Report the DeviceInstanceIDs to `fwupdmgr get-updates` * Export some of the GUID functionality * Allow a plugin to set _ANOTHER_WRITE_REQUIRED to run more than one plugin * nvme: Add an extra check for Dell plugins to avoid false positives * ata: Add support for detecting Dell GUIDs * Fix the self tests when using glib2 >=2.59.0 * Add support to call composite prepare and cleanup using fwupdtool * uefi: Disable -Wno-address-of-packed-member * uefi: Don't unconditionally enable Werror for the EFI binary * Disable -Wno-address-of-packed-member - Changes from version 1.2.4: * Remove the autogenerated headers in the gettext files * ata: Default to the non-activation 0xE subcommand * fastboot: Use a much longer timeout as the removal delay * fu-progressbar: be more quiet when running non-interactive * fu-tool: Show UpdateMessage if applicable for install command * dfu: Simplify the SREC parser to avoid a crash with an invalid file * wacom-raw: Use the correct error codes when the panel is not supported * wacom-usb: Add some more information to the README * fu-keyring-utils: Don't fail missing PKI directory when compiled with GPG/PKCS7 * dell: Check that the flash interface command is available * wacom-usb: Fix the plugin name to allow devices to be updated * fastboot: flash the partition after downloading the file * uefi: Add a quirk to use the legacy bootmgr description * ata: Mark all devices as needing a reboot * ata: Add a new plugin to upgrade firmware on ATA/ATAPI hardware * udev-device: Add a utility function for debugging * udev-device: Set the firmware revision automatically * udev-device: Set the serial number automatically * udev-device: Fall back to non-database model and vendor values * udev-device: Fix critical warning if the device has no parent * dell-dock: Add support for a passive flow * Add support for an `UpdateMessage` and display it in tools * fu-tool: Port the `get-updates` command over * When using `directory` remote type automatically generate metadata * libfwupd: Add support for new remote type "directory" * Ensure cabinet archives always have a container checksum * Add support for a per-release source and details URL * When generating a CAB Silo use the prefix "components" * uefi: Add a trivial debugging statement to debug a UX capsule failure * uefi: Use fwup_new0() to allocate the updates table array * nitrokey: Correct Nitrokey Storage invalid firmware version read * dell-dock: Add support for flashing Thunderbolt over I2C * wacom-raw: Add a plugin to update Wacom embedded EMR and AES panels * fu-util/fu-tool: sync up reboot and shutdown behavior * dfu: Ignore the SUB ASCII value * dfu: Fix the parser to support extended segment addresses * dfu: Support ihex files with leading comments don't show an error * uefi: Correct a boot order creation bug (Fixes: gh#hughsie/fwupd#956) * uefi: Remove all variable length arrays * uefi: Fix a logic bug in fwup_search_file() * uefi: Use _cleanup_free in one more place * uefi: Do not pass required attrs to fwup_delete_variable() * uefi: Delete the old Linux-Firmware-Updater boot entry * uefi: Use the GNU-EFI BOOL type * Check if plugin changed after the device attaches or detaches * uefi: Refactor and simplify the EFI loader * Show a console warning if loading an out-of-tree plugin * UEFI: Do the UX checksum calculation in fwupd * wacom-usb: Add two more Intuos tablets * nvme: Add the needs-shutdown quirk to Phison NVMe drives * Add _NEEDS_SHUTDOWN flag for devices * Use GCC __cleanup__ features in the EFI loader * nvme: Add flag to support manually aligning the firmware to the FWUG value * nvme: Support FGUID to get the SKU GUID * nvme: Support FWUG to get the write block size * nvme: Add trivial comment to clarify address bitshifting * uefi: Do not check the BGRT status before uploading a UX capsule * dfu: Fix flashing various Jabra devices * upower: Add support for checking battery percentage * nvme: Check the return code of the admin passthru ioctl * fu-tool: Add support for an 'update' command to fwupdtool * dell-dock: Set minimum board to board 4 * dell-dock: Workaround a manufacturing bug for board level 4 * dell-dock: Wait longer for re-enumeration on TBT SKU * superio: Support IT89xx devices * fu-main: remove incompatible locale error message * Add a new plugin checklist (Fixes: gh#hughsie/fwupd#899) - Dropped obsolete patch: fwupd-bsc1130056-change-esp-os-name.patch (upstream PR: gh#hughsie/fwupd#1119 - Fixed fwupd-bsc1130056-change-shim-path.patch so that it works with the new files - Cleaned up changelog- Stop shipping polkit rules, as we have the distro specific setup in polkit-default-privs (boo#1125428).- Add fwupd-bsc1130056-change-esp-os-name.patch to change the OS directory in ESP (bsc#1130056) - Add fwupd-bsc1130056-change-shim-path.patch to set the default shim binary for openSUSE/SLE (bsc#1130056) - Link fwupd*.efi.signed to fwupd*.efi as requested by fwupd (bsc#1129466)- fwupd.spec: fix shell syntax error in %postun section (boo#1120363).- Update to version 1.2.3: * Correctly migrate the history database - Changes from version 1.2.2: * Log an error if started with an incompatible locale * Fix building with -Wl,-z,defs * ebitdo: Fix the reported version number if the daemon locale is not C.UTF-8 * Add Dell TB18DC to the known devices list * Allow replacing the last byte in the image when using 'dfu-tool replace-data' * Check the device checksum as well as the content checksum during verify * Submit the device firmware checksum and update protocol in the submitted report * Include the device checksum and update protocol in the historydb * uefi: Add the PCR0 value as the device checksum for system firmware * Add new API to get the release protocol from the metadata * Allow plugins to define support for a 'well-known' protocol * uefi: When adding headers set the header size to 4k * uefi: Append the header on capsules without headers from Linux * flashrom: Ensure the quirks database is set on the new object * uefi: Do not add devices with invalid GUIDs * Do not allow a GUID of zero * Add shared functionality for reading and writing with O_NONBLOCK * Only run attach and detach if the device is in the wrong mode * Sanitize the version if the version format has been specified * wacom-usb: Remove the DTH generation hardware as it will not work with fwupd * thunderbolt: Remove a superfluous boundary condition when verifying update * Add a plugin to update hardware that supports fastboot * Fix a regression when doing GetReleases on unsupported hardware * dfu: Require a specific USB class and subclass for DFU mode * Correctly parse format the version numbers correctly using old metadata * amt: Fix a crash if AMT returns an empty response * Check plugins set error on failure * contrib: Add a simple python3 client * installed-tests: Adjust to actually use a remote for installed tests * Add more standard USB identifier GUIDs * wacomhid: Rename to wacom-usb * Provide a way for plugins to decompress a custom archive to ram - Changes from version 1.2.1: * Remove DaemonVersionFormat=quad * Shut down the daemon after 2h of inactivity * Create a silo index to speed up GUID queries * Fix flashing the 8bitdo SF30 * Speed up fwupd startup by loading less thunderbolt firmware * Query the XbSilo when calling fu_plugin_check_supported() * Guess the version format when it is not provided * Fix a use-after-free when using valgrind and --immediate-exit * Add per-release install duration values * Fix showing the custom remote agreements * Be more explicit setting the update state * Include the os-release information in the release metadata - Changes from version 1.2.0: * ebitdo: remove SF30/SN30 pro device ids * dell-dock: Drop delayed MST callback routine * synapticsmst: Adjust EVB board handling * synapticsmst: Remove the content checking of firmware * synapticsmst: Access Board ID through memory instead In firmware images HDCP 2.2 will be enabled by default,so access to flash region will fail.` * contrib: Adjust flatpak build for moving to flathub * dell-dock: Prefer to flash VMM5331 via I2C instead of DP aux * Use HTTPS_PROXY if set * firmware-packager: Make it clearer to use * Sort the firmware sack by component priority * flatpak: Update gnu-efi to latest version * amt: Set the full device version including the BuildNum * fwupdmgr/fwupdtool: Move monitor command to fwupdtool * fwupdmgr/fwupdtool: Move firmware builder from fwupdmgr to fwupdtool * Add version format quirks for several Lenovo machines * uefi: Set the quirks on created devices * dell_dock: Use correct offset for finding version of MST * dell-dock: Add missing unlock call for MST via dell_dock plugin * Support the Intel ME version format * Port from libappstream-glib to libxmlb * Bump requirement to meson 0.46.0 * fu-main: Catch SIGTERM while update is in progress * fu-tool: Stop any running daemon over dbus before loading engine * meson: Bump dependency to 0.44 and adjust sysconfdir handling * dell-dock: If marketing name is invalid don't fail initialization * Readme Updated: Added KDE Discover as one more graphical front-end available for fwupd. * dell-dock: Correct a situation that error wasn't propagating * Don't segfault if a plugin returns FALSE from UpdateFunc with no error set * dell-dock: Use different debug strings for each device type * dell-dock: Don't use the VLA feature in the new dock * Add a plugin for an upcoming Dell USB-C dock * contrib: Add information on how to use debugging scripts * Allow setting the version format from a quirk entry * Don't use AppStream-glib for string helpers * Don't use AppStream-glib for version helpers * Don't use AppStream-glib for the GUID helpers * fu-device: Ensure that parent ID is created before creating quirked children * Update all sub-devices for a composite update * Stop showing the current release during updates in fwupdmgr * uefi: Move the TPM unlocking functionality from the Dell to UEFI plugin * Run the Dell plugin initialization after the UEFI plugin * thunderbolt-power: Fix possible linker problem * Allow firmware files to depend on versions from other devices * fu-debug: Redirect all debugging output to stderr instead of stdout * synapticsmst: Adjust panamera ESM update routine for some reported issues * fu-engine: Optionally wait for replug before updating a device * fu-device-list: Use delayed device removal when removing the tree * thunderbolt: Use replugging from the daemon * Add support for devices to show an estimated flash time * Marked some CL options for translation * ci: Run clang static analysis for Ubuntu build rather than just clang compiler * nvme: Initialize the buffer before reading the contents * contrib: Add a standalone installer creation script * rts54hid: Add support for Realtek USB devices using vendor HID commands * fu-engine: Don't show devices pending a reboot in GetUpgrades * Add FuMutex helper to make various parts of the daemon thread-safe * rts54hub: Add support for Realtek USB devices using vendor HUB commands * uefi: Check the amount of free space on the ESP * fu-tool: Import debugging options from fu-debug like fu-main * superio: Set the physical and logical IDs - Add pkgconfig(xmlb) BuildRequires: New dependency.- Add pesign-obs-integration to BuildRequires and add fwupd*.efi to BRP_PESIGN_FILES to get it signed - Add LC_IMAGES and use efivar only if %{with efi_fw_update} + Also update the version requirement of efivar - Disable Redfish and NVME plugins if %{without efi_fw_update} since those two plugins require efivar - Remove fwup from BuildRequires since fwupdate is already merged into fwupd.- Use gnu-efi only if %{with efi_fw_update}, always use pkgconfig(efivar) - Fix file list- Amend %post and %postun to install/uninstall fwupd*.efi to the EFI system partition + Also add shim to Requires for fwupdx64.efi - Mark fwupdate as obsolete + fwupdate has been merged into fwupd since fwupd 1.1.0.- fwupd is require for thunderbolt firmware update in SLE15-SP1(fate#322681)- Update to version 1.1.2: + New Features: - Add a new device flag "ignore-validation" that will override checks - Add a new plugin to enumerate EC firmware - Add a new plugin to update NVMe hardware - Add a plugin for updating using the flashrom command line tool - Allow the device list to take care of waiting for the device replug - Allow updating just one specific device from the command line - Allow upgrades using a self-signed fwupd.efi binary - Download firmware if the user specifies a URI - Include serial number in daemon device output when trusted - Notify all plugins of device removals through a new vfunc - Use boltd force power API if available + Bugfixes: - Add an install hook for classic snap - Allow forcing installation even if no AC power is applied - Allow using --force to ignore version_lowest - Always use the same HardwareIDs as Windows - Check the device state before assuming a fake DFU runtime - Copy over parent GUIDs from other plugin donors - Detect location of python3 interpreter - Do not add udev devices after a small delay - Don't fail to run if compiled without GPG/PKCS7 - Fix a segfault in fwupdtool caused by cleanup of USB plugins - Implement the systemd recommendations for offline updates - Improve performance when reading keys from the quirk database - Remove children of devices when the parent is removed - Rewrite synapticsmst to use modern error handling - Rewrite the unifying plugin to use the new daemon-provided functionality - Show a time estimate on the progressbar after an update has started- Use noun phrase for summary. Trim request for comments from description.- Update to version 1.1.1: + New Features: - Add support for the Synaptics Panamera hardware - Add validation for Alpine and Titan Ridge - Improve the Redfish plugin to actually work with real hardware + Bugfixes: - Allow different plugins to add the same device - Allow flashing unifying devices in recovery mode - Allow running synapticsmst on non-Dell hardware - Check the ESP for sanity at at startup - Do not hold hidraw devices open forever - Don't override _FORTIFY_SOURCE when building the EFI binary - Don't show passwords in fwupdmgr - Fix a potential segfault in smbios data parsing - Fix encoding the GUID into the capsule EFI variable - Fix various bugs when reading the thunderbolt version number - Reboot synapticsmst devices at the end of flash cycle - Show status messages when the daemon is initializing - Show the correct title when updating devices - Show the reasons that plugins are not run on the CLI - Use localedir in po/make-images- Run %udev_rules_update in post as package install udev rules- Update to version 1.1.0: (FATE#326702) + New Features: - Add a initial Redfish support - Add a tool to mimic the original fwupdate CLI interface - Allow devices to assign a plugin from the quirk subsystem - Change the quirk file structure to be more efficient - Merge fwupdate functionality into fwupd - Run a plugin vfunc before and after all the composite devices are updated - Support more Wacom tablets + Bugfixes: - Add release information for locked devices - Allow building with older meson - Detect the EFI system partition location at runtime - Do not use 8bitdo bootloader commands after a successful flash - Enable accesing downloaded files in flatpak and snap - Fix a potential buffer overflow when applying a DFU patch - Fix downgrading older releases to devices - Fix flashing devices that require a manual replug - Fix several small memory leaks in various places - Fix the retrieval of Redfish version - Fix unifying failure to detach when using a slow host controller - Set the Wacom device status when erasing and writing firmware - Show errors in the CLI if unable to access directory - Use the parent device name for Wacom sub-modules - Removed enable_pkcs7_when_testing_only.patch- Update to version 1.0.8: + New Features (including version 1.0.7): - Add an plugin to update some future Wacom tablets - Add 'fwupdmgr get-topology' to show logical device tree - Add support for creating a flatpak - Add support for creating a snap - Add support for Motorola S-record files - Add the Linux Foundation public GPG keys for firmware and metadata - Show a translated warning when the server is limiting downloads - Add enable-remote and disable-remote commands to fwupdmgr - Add fu_plugin_add_compile_version() for libraries to use - Allow requiring specific versions of libraries for firmware updates - If no remotes are enabled try to enable the LVFS - Show a warning with interactive prompt when enabling a remote + Bugfixes (including version 1.0.7): - Add a firmware diagnostic tool called fwupdtool - Adjust all licensing to LGPL 2.1+ - Allow installing more than one firmware using 'fwupdmgr install' - Allow specifying hwids with OR relationships - Do not call fu_plugin_init() on blacklisted plugins - Do not require libcolorhug to build - Fix a crash in libfwupd where no device ID is set - Fix a potential DoS in libdfu by limiting holes to 1MiB - Fix a segfault that sometimes occurs during cleanup of USB plugins - Fix Hardware-ID{0,1,2,12} compatibility with Microsoft - Hide devices that aren't updatable by default in fwupdmgr - Search all UEFI GUIDs when matching hardware - Stop matching Nintendo Switch Pro in the 8bitdo plugin - Check that EFI system partition is mounted before update - Disable synapticsmst remote control on failure - Don't recoldplug thunderbolt to fix a flashing failure - Fix SQL error when running 'fwupdmgr clear-offline' - Improve the update report message - Only enumerate Dell Docks if the type is known - Only run certtool if a new enough gnutls is present - Prevent a client crash if the daemon somehow sends invalid data - Reboot after scheduling using logind not systemd - Use the right encoding for the label in make-images - Added/backported enable_pkcs7_when_testing_only.patch: + needed to disable pkcs7 test during build (can be removed for fwupd >= 1.0.9)- Update hasbang in installed files from /usr/bin/env python3 to /usr/bin/python3.- Update url - Small packaging cleanup with spec-cleaner- Update to version 1.0.6: + New Features: - Add bash completion for fwupdmgr. - Add support for newest Thunderbolt chips. - Allow all functions that take device arguments to be prompted. - Allow devices to use the runtime version when in bootloader mode. - Allow overriding ESP mount point via conf file. - Delete any old fwupdate capsules and efivars when launching fwupd. - Generate Vala bindings. + Bugfixes: - Allow ctrl-d out of the prompt for devices. - Allow to create package out of provided binary. - Correct handling of unknown Thunderbolt devices. - Correctly detect new remotes that are manually copied. - Fix a crash related to when passing device to downgrade in CLI. - Fix running the self tests when no fwupd is installed. - Fix Unifying signature writing and parsing for Texas bootloader. - Only send success and failure reports to the server. - Use a CNAME to redirect to the correct CDN for metadata. - Use a longer timeout when powering back the Thunderbolt device.- Ensure library package has a dependency on main package, otherwise it won't be usable.- Update to version 1.0.5: + New Features: - Offer to reboot when processing an offline update. - Report the efivar, libsmbios and fwupdate library versions. - Report Thunderbolt safe mode and SecureBoot status. - Show the user a URL when they report a known problem. - Support split cabinet archives as produced by Windows Update. + Bugfixes: - Be more careful deleting and modifying device history. - Clarify which devices don't have upgrades. - Ensure the Thunderbolt version is xx.yy. - Fix a daemon warning when using fwupdmgr get-results. - Fix crasher with MST flashing. - Fix DFU detach with newer releases of libusb. - Include the device VID and PID when generating the device-id. - Set the RemoteId when using GetDetails. - Stop matching 8bitdo DS4 controller VID/PID. - Use help2man for dfu-tool and drop docbook dependencies. - Use ngettext for any strings with plurals. - Use the default value if ArchiveSizeMax is unspecified.- Update to version 1.0.4: + New Features: - Add D-Bus methods to get and modify the history information. - Allow the user to share firmware update success or failure. - Ask the user to refresh metadata when it is very old. - Store firmware update success and failure to a local database. + Bugfixes: - Add a device name for locked UEFI devices. - Allow each plugin to opt-in to the recoldplug action. - Fix firmware downloading using gnome-software. - Fix UX capsule reference to the one specified in efivar. - Never add two devices to the daemon with the same ID. - Rescan supported flags when refreshing metadata. - Add pkgconfig(json-glib-1.0) BuildRequires: new dependency.- Update to version 1.0.3: + New Features: - Add a new plugin to add support for CSR "Driverless DFU". - Add initial SF30/SN30 Pro support. - Support AppStream metadata with relative URLs. + Bugfixes: - Add more metadata to the user-agent string. - Block owned Dell TPM updates. - Choose the correct component from provides matches using requirements. - Do not try to parse huge compressed archive files. - Fix a double-free bug in the Udev code. - Handle Thunderbolt "native" mode. - Use the new functionality in libgcab >= 1.0 to avoid writing temp files.- Unbreak compilation on non-x86, upstream renamed options to disable plugins.- Update to version 1.0.2: + Add a plugin for the Nitrokey Storage device + Add support for the original AVR DFU protocol + Allow different plugins to claim the same device + Allow quirks to set common USB properties + Move a common plugin functionality out to a new shared object + Optionally delay the device removal for better replugging + Set environment variables to allow easy per-plugin debugging + Use a SHA1 hash for the internal DeviceID + Add quirk for AT32UC3B1256 as used in the RubberDucky + Disable the dell plugin if libsmbios fails + Don't register for USB UDev events to later ignore them + Fix a possible buffer overflow when debugging ebitdo devices + Fix critical warning when more than one remote fails to load + Fix DFU attaching AVR32 devices like the XMEGA + Ignore useless Thunderbolt device types + Refactor ColorHug into a much more modern plugin + Release the Steelseries interface if getting the version failed + Remove autoconf-isms from the meson configure options + Show a nicer error message if the requirement fails + Sort the output of GetUpgrades correctly - Changes from version 1.0.1: + Add support for HWID requirements + Add support for programming various AVR32 and XMEGA parts using DFU + Add the various DFU quirks for the Jabra Speak devices + Allow specifying the output file type for 'dfu-tool read' + Move the database of supported devices out into runtime loaded files + Support the IHEX record type 0x05 + Use help2man to generate the man page at build time + Use the new quirk infrastructure for version numbers + Catch invalid Dell dock component requests + Correctly output Intel HEX files with > 16bit offset addresses + Do not try to verify the element write if upload is unsupported + Fix a double-unref when updating any 8Bitdo device + Fix crash when enumerating with Dell dock connected but with no UEFI + Fix uploading large firmware files over DFU + Format the BCD USB revision numbers correctly + Guess the DFU transfer size if it is not specified + Include the reset timeout as wValue to fix some DFU bootloaders + Make the error message clearer when sans fonts are missing + Support devices with truncated DFU interface data + Use the correct remote-specified username and passord when using fwupdmgr + Use the correct wDetachTimeOut when writing DFU firmware + Verify devices with legacy VIDs are actually 8Bitdo controllers - Add help2man as BuildRequires.- Fix dependencies and build options for non-x86 architectures. At least FW updates for USB are arch independent, and EFI FW updates can also be applied on Aarch64.- Update to version 1.0.0: * Add the plugin documentation to the main gtk-doc * Add a waiting-for-auth daemon state * Add fwupd_remote_get_checksum() to use in client programs * Generate the LD script from the GObject Introspection data * Prevent fwupd from mounting filesystems * uefi: Do not use system-specific infomation for PCI devices * uefi: Support uploading the firmware splash image * dell: only set coldplug delay when we know we need it * dell: only run SMI to toggle host MST GPIO on systems with host MST * dell: add functionality to blacklist HW with problems * dell: only run on intended chassis * thunderbolt-power: always run after thunderbolt plugin * Allow plugins to depend on each other * Add support for SMBIOSv3 * dell: prefer to use hwids to get DMI keys and DE table * debian: remove /etc/fwupd.conf on upgrade * unifying: Use fu_plugin_check_supported() * Add fu_plugin_check_supported() * unifying: Use a device whitelist to avoid breaking devices * Fix various printing issues with the progressbar * dell: Fix a trivial whitespace issue * Do not fail to load the daemon if cached metadata is invalid * Do not store the newest release as part of the FuDevice object * Add a method to return a list of upgrades for a specific device * Move the downgrade calculation to the daemon * Make FuDevice derive from FwupdDevice rather than FwupdResult * Add a command 'clear-offline' to fwupdmgr * Merge releases where multiple remotes provide the same firmware * Remove the UniqueID property * uefi: Do not set the release version * udev: Do not match USB devices, even with a GUID set * Use the intel-wmi-thunderbolt kernel module to force power * dell: drop thunderbolt force power code * unifying: Add hardcoded summaries for peripheral kinds * Create CODE_OF_CONDUCT.md * Ensure more devices set the device summary * Add an 'Summary' property to each device * Add a human-readable title for each remote * unifying: Disable if the kernel has no CONFIG_HIDRAW support * Move deprecated symbols to a new header * Introduce an s390x cross compile target to CI * Add ModifyRemote as an easy way to enable and disable remotes like the LVFS * Do not auto-open all USB devices at startup * dfu: Use FuDeviceLocker * unifying: Use FuDeviceLocker * colorhug: Use FuDeviceLocker * ebitdo: Use FuDeviceLocker * altos: Use FuDeviceLocker * steelseries: Use FuDeviceLocker * usb: Use FuDeviceLocker * Add FuDeviceLocker to simplify device open/close lifecycles * dfu: Remove DEVO support * dfu: Remove the now-unused symtab support * Remove the ELF support from libdfu and move the code to the altos plugin * Use -Werror when building in Travis CI * Do not install the libdfu helper library * Parse the SMBIOS DMI table directly * usb: Disable the fallback USB plugin * Test for missing language translations at build time * Fix the libdfu self test failure on s390 and ppc64- Update to version 0.9.8: * Add a command 'clear-offline' to fwupdmgr * Do not fail to load the daemon if cached metadata is invalid * Fix a crash when using fu_plugin_device_add_delay() * Fix the libdfu self test failure on s390 and ppc64 * Format the BCD USB revision numbers correctly * Never fallback to an offline update from client code * Prevent fwupd from mounting filesystems * dfu: Allow flashing when the target does not specify an alt-name * dfu: Do not try to verify the element write if upload is unsupported * dfu: Fix uploading large firmware files * dfu: Include the reset timeout as wValue to fix some hardware * dfu: Set the vendor ID to the runtime USB VID * dfu: Use 0x0101 as an alias for 0x0110 * thunderbolt: move test for mock environment (gh#hughsie/fwupd#280) * udev: Do not match USB devices, even with a GUID set * uefi: Do not set the release version * unifying: Disable if the kernel has no CONFIG_HIDRAW support- Update to version 0.9.7: + 10 months worth of bugfixing, integrating more vendor specific Firmware update paths.- Update to version 0.8.1: + Delete duplicate translations (gh#hughsie/fwupd#89). + Do not hardcode docbook2man path. + Fix fwupdmgr timeout with missing pending database. + Fix compiler warnings. + Fix a crash when enumerating devices on a Dell WLD15. + dell: don't initialize libsmbios on unsupported systems. + Do not fail to start on Dell hardware. + Adjust systemd confinement restrictions. + Do not dlclose modules when running under valgrind. + Really remove the NoNewPrivileges systemd confinement. + Release fwupd 0.8.1.- Update to version 0.8.0: + Show a different error when checking for updates while on + battery power (gh#hughsie/fwupd#68). + Clarify the test in --help and man page related to offline + (gh#hughsie/fwupd#69). + libdfu: Use a heuristic for the start address if the firmware + has no DfuSe footer. + dell: Don't return the address of a stack variable. + dell: Fix a possibly-impossible-to-hit buffer overrun. + close USB devices before error returns (gh#hughsie/fwupd#73). + Make libelf support optional. + Always make sure we're getting a C99 compiler. + Fix redeclaration of polkit autocleanup functions. + Uncomment SystemdService parameter in the dbus service file + (gh#hughsie/fwupd#74). + Make all providers and plugins share a GUsbContext. + Unexport libebitdo. + Move the plugins into plugin-specific directories. + Convert the providers to plugins to simplify code and for + future features. + Add support for Logitech Unifying devices. + Add a set of vfuncs that are run before and after a device + update. + Return the pending UEFI update when not on AC power. + Move the UPower functionality to a plugin. + Fix udev plugin loading. + fix dfu plugin loading. + Disable PrivateNetwork on systemd service. + Use more restrictive settings when running under systemd. + dell: add a new method for forcing a controller to flash mode. + Add VerifyUpdate to update the device checksums server-side. + Move the Option ROM parsing to the Udev plugin. + Move the device add delay to shared code. + Add initial skeleton for Intel Thunderbolt support. + unifying: Use the actual bootloader VID/PIDs when in firmware + mode. + Allow the metadata to match a version of fwupd and the existing + fw version. + Add fwupd_result_get_device_version_bootloader(). + Fix the appstream-glib version guards. + dell: Add coldplug methods to let other plugins turn on + TBT/GPIO. + libdfu: Don't read data from some DfuSe targets. + Add the ability to run a prepare->exec->cleanup on coldplug. + Allow plugins to request that all plugins re-coldplug. + thunderbolt: Detecting new devices and add an actual device to + the daemon. + Add support for flashing the ChaosKey. + thunderbolt: add some guards around empty arrays. + dell: Adjust the coldplug preparation and cleanup sequence. + dell: Fix possible linker problem. + Revert "thunderbolt: add some guards around empty arrays". + Add fu_plugin_set_coldplug_delay() to allow hardware to + initialize if required. + altos: Add error checking when using termios. + ebitdo: Subclass FuDevice like the altos plugin. + altos: Set the flags in the init_real so they work for the + cmdline tool. + unifying: Subclass FuDevice like the altos plugin. + Include all debug messages when run with --verbose. + dell: introduce a standalone (noinst) tool to force mode + flashes. + Introduce plugin for Synaptics MST hubs. + synapticsmst: Add cascade support. + Only register the D-Bus service when all devices have been + added. + synapticsmst: Refactor away the global state. + synapticsmst: fix cascade support in the plugin. + Updates for thunderbolt plugin. + thunderbolt: Add special handling for safe mode on Dell systems + (gh#hughsie/fwupd#84). + synapticsmst: Iterate all nodes rather than hardcoding to 3. + synapticsmst: build GUID using dock type. + Add a new function fu_dell_supported to fu-dell-common. + synapticsmst: add a test suite. + synapticsmst: Fix up some trivial whitespace issues. + Fix a refcounting issue in the udev plugin. - Add rpmlintrc untill security review is resolved- Update to version 0.7.5: + Clean up PO files + Verify devices support updating in mode they are called. + Fix an assert when unlocking the dummy ESRT device + Don't create the UEFI dummy device if the unlock will happen on + next boot + dell: Match on TB16 as well + Fix a -fstack-protector-strong crash when uploading firmware + Enable the stack protection in local builds + dell: If running in test suite, don't try to get product ID + from sysfs + libfdfu: Show a warning when getting the alt-name failed + dfu: Fix listing devices using the ST reference bootloader + Show the nicely formatted target name for DfuSe devices + libdfu: Fix two possible critical warnings for corrupt USB + descriptors + libdfu: Correctly offset addresses when one zone has multiple + sectors + libdfu: Do not do GetStatus on dfuse upload + libdfu: Fix uploading from DfuSe devices + libdfu: Use the device offset when writing DfuSe firmware + libdfu: Add DfuAction enumerated value to represent a device + action + libdfu: Use an animated progress bar when performing DFU + operations + libdfu: Do not do a zero-byte download when in DfuSe mode + libdfu: Fix verification of written DfuSe firmware + libdfu: Ensure the device is open before claiming the interface + libdfu: Ensure the mode is set correctly when faking a runtime + libdfu: Re-get the quirks when the DfuDevice gets a new + GUsbDevice + libdfu: Add quirks for HydraBus as it does not have a DFU + runtime + libdfu: Match the device booloader or runtime VID and PID when + checking firmware + Add a 'replace-data' command to dfu-tool + string + libdfu: Add dfu_sector_get_zone() to get the continuous memory + zone number + libdfu: Wait for DNBUSY to be cleared when checking the DfuSe + status + libdfu: Correctly erase DfuSe devices + Enable hardening flags on more binaries + libdfu: Correctly set the element address when uploading from + DfuSe devices - Add pkgconfig(gmodule-2.0) BuildRequires: Align with what + configure checks for. - Add pkgconfig(libsmbios_c) BuildRequires: Support dell bios. + Unfortunatly, until we have fwup packaged and enabled, this will + not work. - Add disabled pkgconfig(libtbtfwu): For future thunderbolt + support.- Update to version 0.7.4: + Add a fallback for older appstream-glib releases + Write the ELF files with the correct section type + Fix libfwupd self tests when a host-provided fwupd is not + available + Add dfu_firmware_add_symbol() + Add the Altos symbol table to the DfuFirmware + Use the symtab to set the VID/PID from Altos IHEX firmware + images + Show the human-readable version in the 'dfu-tool dump' output + Allow specifying the argument to 'dfu-tool set-release' in + major.minor format. + sections + Support writing the IHEX symbol table + call + Load the symbol table from ELF firmware + Load the Altos USB descriptor from ELF files + Add DFU_CIPHER_KIND_RSA + Fix a possible crash when uploading firmware files using libdfu- Update to version 0.7.3: + build: Fix gtk-doc build when srcdir != builddir + In get-details output, display the blob filename + Ensure the update ID is set when getting local firmware details + Use a private gnupg key store + Add support for installing against multiple devices from a CAB + file + Use the correct firmware blob when installing a composite + device update + in get-details output, display update_name rather than Unknown + Device + statements + Don't make failures critical while checking versions or locked + state + Show a more detailed error when installing firmware on the + wildcard + Add Dell TPM and TB15/WD15 support via new Dell provider. + file + Allow blacklisting devices by their GUID + header file + Add XPS 9250 to Dell TPM modeswitch blacklist + Only display flashes left in results output when it gets low. + Add a small library for talking with 0bitdo hardware + Add another compile warning and fix up any build failures + Embed fwupd version in generated libfwupd and libdfu + documentation + Update fwupdmgr manpage for new commands and arguments + build: Fix gtk-doc build when srcdir != builddir + online not offline + Get the firmware version correctly from 0Bitdo gamepads + Switch to the Amazon S3 CDN for firmware metadata + Fix writing 8Bitdo device firmware + be updated + Show the vendor flashing instructions when installing + Split out the DFU file formats to separate files + Add fwupd_result_remove_device_flag() + Add FU_DEVICE_FLAG_NEEDS_BOOTLOADER + get-updates output + Allow providers to export percentage completion + Add fwupd_client_get_status() + Handle the 8Bitdo bootloader in a better way + Show a progress notification when installing firmware + Add fwupd_result_get_unique_id() + Use the SHA1 hash of the local file data as the component + origin + Use the correct define prefix for FwupdDeviceFlags + libdfu: Fix hang when parsing corrupt IHEX files + Add a set-target-size command to dfu-tool + Support the 'DEVO' cipher kind in libdfu + Add a set-address command to dfu-util + Disable the Dell specific code by default + Conditionally enable all providers based upon what's installed + Add a summary of providers that are enabled from configure + Do not use the deprecated GNOME_COMPILE_WARNINGS + Ignore devices that do not add at least one GUID + Do not attempt to add DFU devices not in runtime mode + Save the unique ID in the pending database + libdfu: Add initial ELF reading and writing support + Add dfu_firmware_format_from_string() + Normalize the DfuFirmwareFormat enums- Update to version 0.7.2: + Allow devices to have multiple assigned GUIDs + Only return updatable devices from GetDevices() + Add fu_device_get_alternate() + Allow metainfo files to match only specific revisions of + devices + Re-read flags for a device after a provider's unlock routine is + done + Test for a locked device when trying to install firmware update + Enforce allowing providers to take away flash abilities + Support returning multiple GUIDs from GetDetails + Add a GetDetailsLocal() method to eventually replace + GetDetails() + break + libdfu: Add DfuVersion enumerated values + libdfu: Show the DFU protocol version in 'dfu-tool list' + Only claim the DFU interface when required- Update to version 0.7.1: + Fix libdfu CRC check for big endian architectures + Add dfu_image_get_element_default() + Fix libdfu CRC check for big endian architectures + Fix big endian issues when reading and writing DFU and DfuSe + files + Remove non-interactive pinentry setting from fu-keyring + Set the system's DMI product name as the DisplayName for UEFI + Re-order output of get-devices to be easier to read + Make the device display name nicer + update version + Return all update descriptions newer than the installed version + Add summary and name field for Rival SteelSeries + Fix a critical warning when restarting the daemon + Add a 'supported' flag to the FuDevice + Add fwupd_client_connect() + Add a 'monitor' debugging command for fwupdmgr + Add device-added, device-removed and device-changed signals + Match the AppStream metadata after a device has been adedd + Re-match devices when the AppStream metadata is updated + Show 'Unknow Device' in fwupdmgr when a device name is not set + Set the device description when parsing local firmware files + Add support for a new device field "Flashes Left". + src/Makefile.am: reshuffle so enableable bits are only + referenced when on + Add support for a --force flag to override provider warnings- Update to version 0.7.0: + Use g_usb_context_wait_for_replug() + Run vendor plugins as required + Add a plugin for SteelSeries hardware + Add fwupd_device_flag_to_string() + Return the device flags when getting firmware details + Show device flags in 'fwupdmgr get-devices' + Add fwupd_trust_flag_to_string() + Export FwupdUpdateState in libfwupd + Export FwupdUpdateFlags in libfwupd + Add FwupdResult to libfwupd + Add a self test framework for libfwupd + Add FwupdClient to libfwupd + Use FwupdClient from libfwupd in fwupdmgr + Use libfwupd inside the daemon + Emit a FwupdClient::changed when the daemon emits this signal + Rename some of the new libfwupd API to align with the D-Bus + names + libdfu: Fix up some NULL/FALSE confusion + libfwup: Fix up some NULL/FALSE confusion + FwupdClient + Allow other checksum kinds in FwupdResult + Allow SHA-256 hashes when verifying + Show the checksum kind in the fwupdmgr output + Add Alienware to the version quirk table + Do not use /tmp for downloaded files + Add fwupd_result_has_device_flag() + Do not return updates that require AC when on battery + Connect to UPower at startup + Test that GPG key import actually was successful (or didn't + change a key already in the keyring) + Use g_auto() in FuKeyring + Return errors of the correct type when using libfwupd + Allow overridding the location of the pending database for + test suite + Allow overriding the location of the provider offline files for + test suite + Validate that the dbus system bus is available before running + libfwupd tests + Update README.md for changes that have happened in the project + Add some basic explanation of how to use fwupd with various + frontends + Split out the libdfu-devel package + Revert "Allow overridding the location of the pending database + for test suite" + Revert "Allow overriding the location of the provider offline + files for test suite" + Allow the test suite to run in %check + Generate gtk-doc documentation for libfwupd- Update to version 0.6.3: + Require AC power before scheduling some types of firmware + update + Install the hardcoded firmware AppStream file + Correct the BCD version number for DFU 1.1 + Add an unlock method for devices + Add ESRT enable method into UEFI provider. + Only read PCI OptionROM firmware when devices are manually + unlocked + Do not use deprecated API from libappstream-glib + Ignore the DFU runtime on the DW1820A + Export the attribute and quirk values in libdfu + Show ignored DFU devices in dfu-util, but not in fwupd + Allow defining update vfuncs with no runtime support + Revert "Allow defining update vfuncs with no runtime support" + Add a simple plugin infrastructure- Update to version 0.6.2: + Add 'Created' and 'Modified' properties on managed devices + Fix get-results for UEFI provider. + Support vendor-specific UEFI version encodings + Move quirks directly into a single table and file.- Update to version 0.6.1: + Only dump the profiling data when run with --verbose + Always persist ColorHug devices after replug + Do not misdetect different ColorHug devices- Update to version 0.6.0: + Add support for updating USB devices with DFU + libdfu: Add support for DfuSe firmware + libdfu: Generate gtk-doc documentation + libdfu: Don't rely on specific hardware to be present + libdfu: Move the VID:PID checks from the tool to DfuDevice + libdfu: Use a custom error domain + Use the same device identification string format as Microsoft + libdfu: Fix crash when setting a target size + libdfu: Allow setting the alternate settings in DfuSe firmware + libdfu: Add a merge command to dfu-tool + libdfu: Allow choosing a different alt-setting when downloading + libdfu: Fix a crash when setting a NULL image name + libdfu: Correctly implement auto-boot in dfu_device_download() + libdfu: Check for extra args to dfu-tool convert + libdfu: Call the progress callback when doing detach + Ignore the DFU device detach:attach when verifying + libdfu: Require a --force flag to flash wildcard firmware + Use new API available in fwup 0.5 + libdfu: Make the element address 32 bits in size + libdfu: Support the ST-specific bitCanAccelerate + libdfu: Only do a Detach notification if we're actually doing to do it + libdfu: Use the progress bar for all uploads and downloads + libdfu: Improve the output of 'dfu-util list' + libdfu: Support download and upload to ST DfuSe devices + libdfu: Fix multi-interface devices like the Neo Freerunner + libdfu: Add a pkgconfig file + libdfu: Use signals to propagate device state + libdfu: Add a context object to handle device hotplug + libdfu: Add an example showing GObject Introspection + libdfu: Do not ref DfuDevice in DfuTarget so the auto-close + logic works + Close DFU devices as soon as possible after the transfer has completed + Emit the changed signal after doing an update + Rescan the DFU device after replug to get the new version + libdfu: Add dfu_context_get_device_by_platform_id() + libdfu: Add dfu_device_get_runtime_release() + libdfu: Add dfu_device_get_display_name() + libdfu: Fix self tests after recent API change + Split out the DFU provider as a new file + libdfu: Copy the platform ID and invalidate the GUsbDevice when removed + libdfu: Accept multiple spaces after the DfuSe sector name + libdfu: Verify the GUsbDevice is set before using it + libdfu: Remove the weak pointer when destroying the DfuTarget + libdfu: Fix dfu_device_wait_for_replug() so it can work with a DfuContext + Export the AppStream ID when returning device results + Rescan the DFU device after firmware has been updated + libdfu: Handle cancellation with ctrl+c in dfu-tool + libdfu: Add a quirk to support DFU runtime-less devices + libdfu: Add an explicit 'attach' method + libdfu: Add dfu_firmware_get_image_by_name() + libdfu: Make reading and writing to targets easier to + understand + Fix compile with --disable-shared + libdfu: Display all the files shown with 'dfu-tool dump' + libdfu: Fix a few crashers found using afl + libdfu: Fix another bug discovered by the fuzzer + libdfu: Add commands to encrypt and decrypt firmware images + libdfu: Show better device errors + libdfu: Add DfuCipher which is a property on a target and a + firmware file + libdfu: Add support for the draft 'DFU Metadata Table + Specification' + libdfu: Only enumerate the DfuContext when required + libdfu: Fix several reported crashes in the inhex32 import code + Release fwupd 0.6.0- Update to version 0.5.4: + Fix compile error against fwupdate git due to dropped + functions. + Use strerror() when printing errors from libfwupdate + Use new API available in fwup 0.5 + Release fwupd 0.5.4- Update to version 0.5.3: + Avoid seeking when reading the file magic during refresh + Do not assume that the compressed XML data will be NUL + terminated + debugging + Use the correct user agent string for fwupdmgr + Release fwupd 0.5.3- Update to version 0.5.2: + Ensure D-Bus remote errors are registered at fwupdmgr startup + Show the dotted-decimal representation of the UEFI version + number + require appstream-glib 0.5.1 + not found + When the version is from the 'FW' extension do not cache the + device + Support cabinet archives files with more than one firmware + Add the update description to the GetDetails results + Add profiling data to debug slow startup times + Fix verify-update to produce components with the correct + provide values + Clear the in-memory firmware store only after parsing a valid + XML file + Release fwupd 0.5.2- Update to version 0.5.1: + Fix the error message when no devices can be updated + offline update: Use glib api for for reading symlinks + Release fwupd 0.5.1- Update to version 0.5.0: + Do not merge the existing firmware metadata with the submitted + files + Raise the dep on GLib to support and use g_autoptr() + Do not reboot if racing with the PackageKit offline update + mechanism + Release fwupd 0.5.0- Update to version 0.1.6: + Install fwupd and fwsignd into /usr/lib/$(triplet)/fwupd + instead. + Use the new secure metadata URI + Update the offline update service to invoke right command + Don't apply firmware if something else is processing the + offline update + Remove fwsignd, we have the LVFS now + Depend on appstream-glib >= 0.5.0 + Add application metadata when getting the updates list + Simplify the version properties on devices to avoid complexity + and bugs + Release fwupd 0.1.6- Update to version 0.1.5: + Allow fwupd to be autostarted by systemd + Sign the test binary with the correct key + Do not pre-convert the update description from AppStream XML + Devices with option ROM are always internal + Prefer the GUID from the firmware than the device + Allow no arguments to 'fwupdmgr verify-update' and use sane + defaults + Add the ability to remove a vendor on the LVFS site + Fix validation of written firmware + Move the verification and metadata matching phase to the daemon + Add a simple config file to store the correct LVFS download URI + Make parsing the option ROM runtime optional + Add a Raspberry Pi firmware provider + Use the AppStream 0.9 firmware specification by default + Generate the ColorHug test files at runtime + Release fwupd 0.1.5- Update to version 0.1.4: + man/Makefile.am: Add --sgml to docbook2man invocation + Make statements about storing private keys stronger. + Provide a way for clients to add new firmware metadata to the + system cache + Fix fwupd-offline-update.service + Revert "man/Makefile.am: Add --sgml to docbook2man invocation" + Add a Udev firmware provider + Extract the version string from the ROM in PCI devices + Add a 'verify' command that verifies the cryptographic hash of + device firmware + Make the ROM parsing more robust and add self tests + Get the version number out from Intel VBIOS too + Provide a way to dump the option ROM using the command line + build: gusb is required even without colorhug + remove unused variables + Do not return NULL as a gboolean + Fix Intel VBIOS detection on Dell hardware + Do not use the subsystem information when constructing the fake + GUID + Actually parse the PCI option ROM + Accept multiple files at one time when using fwupdmgr dump-rom + verify run + Add a 'verify-update' command to fwupdmgr + Fix trivial bug when parsing firmware versions + Keep hitting the hardware until it gives us enough ROM + Make the version parsing more resilient to corrupt firmware + Fix the example .inf file to reflect reality + Fix ROM PPID searching to work for all ROMs + Move the LVFS website to the fwupd project + Add the ability to create detached signatures + Allow cab files to be saved + Add a simple signing server that operates on .cab files + Automatically download metadata using fwupdmgr if required + Don't call efibootmgr after fwupdate. + Associate the contact email address directly with the vendor + key + Use the actual LVFS GPG key + Allow running fwsignd as the non-root user + metadata + Do not merge existing LVFS metadata + Do not use the file hash when storing the LVFS submitted + firmwares + Move GetUpdates to the daemon + Change the DBus method for installing firmware to 'Install' + Allow installing an offline UEFI update without --offline + Add a 'fwupdmgr update' command to update all devices to latest + versions + 'update' command + Increase the size limit of firmware to 50Mb + Only sign files when the entire file has been copied + Fallback to offline install when calling the update argument. + Reload appstream data after refreshing. + Release fwupd 0.1.4- Update to version 0.1.3: + Coldplug the devices before acquiring the well known name + Add an UNKNOWN status so we can return meaningful enum values + Run the offline actions using systemd when required + Get the firmware version from the device descriptors + Added syntax highlighting + More markup + Support OpenHardware devices using the fwupd vendor extensions + Move boolean properties on the device to a set of flags + Release fwupd 0.1.3- Update to version 0.1.2: + More markup + Fixed typos and markup for executable + Add slovak translation + Add helper code to validate public key signatures + Decompress any firmware signatures in the .cab file + Verify firmware if a detached signature is present + Show the firmware trust status when doing GetDetails() + Only allow signed firmware to be upgraded without a password + Add some guidelines for vendors to README + Small grammar fix + Extract the .cat file alongside the firmware + Release fwupd 0.1.2- Update to version fwupd_0_1_1: + Do not crash when there are no devices to return + Add a 'get-updates' command to fwupdmgr + Add and document the offline-update lifecycle + Create runtime directories if they do not exist + Create a libfwupd shared library + Export the status as an enumerated value rather than a string + Release fwupd 0.1.1- Initial package./sbin/ldconfig/sbin/ldconfigsheep59 16519947411.7.3-150400.2.71.7.3-150400.2.7libfwupdplugin.so.5libfwupdplugin.so.5.0.0/usr/lib64/-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -gobs://build.suse.de/SUSE:SLE-15-SP4:GA/standard/a8b941259521a862f034e6567c7125c1-fwupdcpioxz5x86_64-suse-linuxELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=8d28d2320df596be78ebe57119bf76e9a1678dff, strippedPPPPPPPPPPPPPPPP P P P P P P P P P PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP P P!P!P"P"P#P#P$P$P%P%P&P&P'P'P(P(P)P)P*P*P+P+P,P,P-P-P.P.P/P/P0P0P1P1P2P2P3P3P4P4P5P5P6P6P7P7P8P8PR1R3RRRRR.R,R/R-R+R*R#R!R"R R;R9RR?R6R=R5R8RRRR RRRRRRR RRRRR R RRRRR R4R$R'R%R0R)R(R&RRR2RF7$[:Uutf-8f01d8f0f7ef4676e97dbf6c322d8234065f72d9fea673d335deb91b49869dea7?7zXZ !t/m] cr$x#F?Yfݾl7R;KRƫCjAWd xS@;e!j*ґ!l4 Lc-5$OH$wgGK _sNXG}#©po:ijZ$!k? LP! Z㮓83N!ԛxMK'I ڨkh"Ɇʷi5Cr23=3w*d-}0|X1ڶic^vtf8(Z׷MTI:d= GGfLOIv BJN@7Y,}xMA|eSOS#c=$c5Dq3YYB.\hr*b-ӹn8`\FGen?i-]_zNd_Պ}køxN(<p֞G ֦Qo\i~!r d?`ʈ5i`uh{,Ϋ#(I*5cu0^kv;6Pk ĴmtE>G:i"?ڈ}/wCU3*'nR Ǭ2LjrcRwGk;w?V*M;_/uʈCؾgj fm^ZMZ:eٱq'}VЁ" &鈴/[0]UY2yZZ9"2.*Ƅt kSNbl,P唉E6ַ$ɶN2c%r$#bs o 9u~C;jgIoAIFE`#HkJiX*OmQ߿L4zhq(/\|*$@nO|6idEmG(j|l:q2cYk6CT̓A],]–lMZǁ;O ~@YϢ)QBXgbouJ,3iʼnԾBQtZg2;"WpHƠ<:.vB;Wu݅iRd {NTJtX~bѽl00i$}0´u\Mމ1=GIOn5+1e1d>_Ld_QOC1RYӮ{g9:a$kd7ӦǕfS T0F;N G B-v+XZwL mT䰆l{S`qx`j}>йB$W̫%/n<ύ1Yp^ϊDPHӿ bl??̯>~%'lՑ*9fnZXq,li_s/zϿX*fȉήZ,Td%ɗsc"xq:pZd.EB.7(Aq:^_^*7N~,hck:;3b/ ]7'ǺZx3 p!+)XQO|CU[3k\P|¨cu:> 9(ǰ\|I-Z`8).JTz_hFe<K7k0hͨm*ehj8= 1℀ y궚tt:Xb^lJím0-#&S3WL5O7n|05Z ) ߰ú~"YQNw.v}|zlGdBR.*,M%Aí,z cK* (0+|U=JIN)tϞHeZr씱HϺ3k|E#^?PYƵvhVP=u[4K$91n"CXJTv%VZ|xrLf́?ƩBq1HfM{g!0>-wmgKtx| c6ם"+=\&ezrԸ^|4t9tv&'Md6jz"!s8wNgGߩ]!Z|rT$o5>w& |́m % 4x8y'/fr-/>|`ݧxBK$(IfsXSjWYOm^l!\ǭ7yas#hPLeF * &[VF,3%5YE($%4cݺ%hW'H~l2@-!*8aDȐ:rg{߸KIh: D&4Z70q/1B"ەm9z2Sr!2I[9u-Ig\20f Ggu}jO/bN;n{'6u*MkY%xGxb$$Ua>3zaass]>qe3BV&>:Jvwv̤cFsE%,ȣս+3́Š讥If'HǨVc2q_ ĄbĒjCajqB^. si'et #=~Y3 A"%]ݏծ+Yۺd|p nWX*d8Bўa@Tju5;! 12Ǚh$J`-Cf=ob:W{4A|J"`dˁd= $llӊJD}sk(| |yy޼^IRHeC8>>9 uשWs-r1ǶIӼ4%4l@|FDŽ$Z6qoa 鐀.+)c0.p̙ӈS.Vqښ¤38,vdpiqVvR<о㇥a.Y"zMgjJNXhٗe>1vM^ә Wh:=P#x{nƑ<Ë+Q5uen2~kʏnl΅Bถ{" >|yPTKByLV'ȏ}`<>EHe>bo?;xh\HvxpO*u|μ j_>m#dsy8IweJ~ldk[o|㯍ne p>]:,*ltخ^!jQU7VVai빗eJnċEGǮ7B€'uiۏ-qvgK5dmpq rP&.dD('cQ 5H_/Q!;7qC[wY辎Tӌ nn̲H/H;FXy^q{/_cږj2h zPZ8zl;Î=<j^f&aW GfsрֲWƋљkVI IEU.u|_ru[:cqoYs! -Hܑz-DgÊ%z2Aa;aF{J& v!yɶoAF%\b؈VhjܕpcrF'ŀ*)?j!P\to be4%rS(7gclt@\O ^O#5/єŕl x`C^|@) m 誝- Ueo_x2 Z"*D'(JdkV۟ Տl>s蘫6@EQ'uFD`72U7;<>Wb4},§ MET@7J,hon1Ԉ;DZe{:s/;E$tH[K_"1iYO7&TUb[\!K'*G^ex1P!5 ?z< \"ÀiZS"C?E(p'@ۅ-DLKJ',|.n1MVfUT\HNx`[2s:YLI{ެZ[lYpȁ: UDp-X<W骂Z?BN wΩ[zNjKF T4)p>xsּXS֗p3L"j4Zr5VS%BуdEaRP pkF,a/T9hbK9BPeNqf[杕4E3K gz#.^aŎ]9|l-'ŭI~ bI"Td˴~V~nUgdzAQ, S^G a0ԝ0cE[KwBmGU 7mZ%plbNionwWg{Hxu5 S,jY&B$ жl0M$[s ,dٗ= iSJ"8W;'Sۄ1UqrvA8]aDَVMim sz1wYjyrIS5#!8O>R8-W N`] *MF@:@:snMV)"SjU{,,HU-Yn0((}56Td埣Lij1:%ajG.GTsM ϯf:թMOx< ! q/9Ϳƅo8lӠC`۹9AxYCEY%'%hd q!PBïYb2gٰ)hON^.n>ᡳkô-1:H~H-49$O݄OW5_PyO˔o*E C zxv 2^t)Nh`&*3c]þ/ o'!N-:6|6bػɖDDk.ՖNFoGEj}M蠞b*ރ`̬\vOݳUY fb;Uil 8CAꊟ,6vxG{dȓgi$XZ1t2]ef5bU?yV1‰lD ;`] mK 2Q L{HX٤7L6ԏJ,>I~=#R}WmuLZ/L n4|i1نp 8%8u`&x%?X 3NӉ!8L'ZsjK9ߣ*xąǿr-ɷaSNY ؜jw2ii;V(Ӛu\ɘ&5q^6t{7 VҢumU)%S HH[FƏdVM6;zZĘx#@}\PBKĈ4Ӛeo'qL#}^Ʌ*:VZz}={5=BUoHF Ҭ 0cC013rOm\!\eq.7f$J:+<_\ G)C@e9_#A{Oi+ غ*I+TAXSF?d u{}G!Q QKٿzC "1^vp1A>m+l'=@µP2>:%ׯC}>$lצ&{Mk֣-MaF:d@rqٟy7ho*D }Wȍ0'0ϩ Dõ*j,2Xx:nYhy!|Oiy[3[+'q⇃c5_ҖS;.o wxלn-[)XRX9$*v[ e{~ .PĿ]Qxjz'Cebyli 6'%FLU>ώw^$c 0 2;j@L7)WqQ\r$dlDV QdG "Q(*V^0#N)X,dnImd2.GpK^׮_`cZEՂYqڙ4Z|Z7be(G{=,+s~5]-Xe,ת.BX 0Չ| qoT;9Jqf$'DBUJNXJ)AuH XxFC$:/'}&i"T;dcu?)@X<:iF;]-U_ٯ=}4 Tާ4o+hg1}8Q75| UA } !c*Bp;N~T^ Wrp4G;҉΂fѾ!ZQEsktIWw^>ʨ o>ћ*γd= 0l˝2/ iaWJd('hBG3__3nn ,%\Ͷ+VNNZMa8)`J##S.$]{',$cS@iM Y>rE6sW2h='Sԛjοhh%*sa#ž}@Mtpk p?{ooxp,͵E3H T 4Qgh}%2yx*ǒºe}ӆ:U3q+s%=eϪ E(bs,|0c#MS{qX""UŲ 8o;6ԑ{mNF{D\lO't(#ܵ}41E},G[>wN kT3Kcﭚ^#sv+2Xu+@zG?֨/gFSJdžR=rV‰RZK jµ,Fz9 0S thv*T_0 oz%%H&y-WG Tʶch^+F])d@-Cmx4u!՝ґy|b,#Ea MG$y>b o\Z _mg&Pn:1̻tՠCՒesHkn׳[@t._P*wr/XlJoBč{NHnZ&ˇRjܲ/ {12e}gVj?ZFh[ެϙy +OS1wƨ}V#\aPGC2LPn<&xQ; seԫn)N~!4/ f t}Q02*62ZMih=jBm5XLЦmFﷅ^pm/NFG %NF'%,1|uٴ= +?[hpX&',g?Օ)6G8iOD3Kt (kGOX!uw9=5ݖeHfoVrTm~bx %yY4`V)Tf2Jm>Bnk1̅{fn\oɒvTU6At7@pO&#yvWzZM$F[3)5X5$7 ۏ()õ-l_Bޝ5tQ VZ#ޏ6wS0 ;s_\{0to}~r+_ MxUjy1մ,g gJBĖL+.^9CԂj[`#3h*C)Fۧ]B@+s8"% IBş@'>h`jt~bpb5Q ECH0Rbp'>$f6{ g|M`Njh 7x^wJ5Va|k+ h1EM|Rl2?܇]UMmu%YǺ$hu,x,:WtH ҍO$fuo>X[#0j|ưO~qN$DQ;EUUX8+fqliؖ4{N($nN*$X3оwꡃ6f[zyPaG,d,U=ѢV=lO\M$Z 0@IEE_TO"P}sj~{bDÓXmwup֖LUH0'ɛy[Etc;Rg.=\o@$?-j(oPڲaӠጐdѩ+ >3HQQ)}Lq:+>C-s 7FVCs%7 v\gV`yK₃bڱ^M!k G@VT=pJa|dH UtN `Z-UtPuMΛHTB~.r@# x5bD&IUf@hvGNi}{cEܑ'z_%;on4el網e?+BTrR(?(AJ/$Ĵ-AjMw/$z\Uj%W?=zrdrX1kBFkX^(4gZ& >6 K;M{m)!.wGD˂uL !0.WШoAf D!wI{f9نr A !Oo7jG7 ZR =^jY}Rس]Ib"$ qȈ;[(/nafy(? /Mi*pl]uMQ)Ȇ5YCETg&4(#}fsI9͚DړڡU~DJ ('Mz= `So-I}633^ clq%Z;3dk/EU)`kpb 3 @֟(P*VsMVj(3[W:5va K,zMlQD/k>),DfjyhD%ks}/CsE_C|ri/"ފ=[pf9nj26rjA;^}I $9w _%%V228z" am޺`M7]:4h)ѐ>jdHٰj-zުRYn !Gb|u޾Ӏ */r}j)M}`1\: Q> jK !2`AE-(t'9,8<6n.؟Vv=N}أ`5n.Um]c$T[笽 ?k$i PsoFb+rx8D96?/^{-ʖxʇTLN߯4l5 );j(fW]=(^xu?2A >Έ2`ϵZƐдl-w.eC24Ng8]lC?=̽p`1*c҅=EGHTd0aZ'c)akިv.3kˋ$Rg4glV#mەv:!np^A@iŔcg~4Kٛ=U\߷&{%+1#ĉa5jf/P7U<; JAo"e"HtDߠys`g~S!QuVVj&5`Z}R7ܐl~i&bWǮ P wɘ ` X'&z 3Ļ_f!ഒwBM"--B&XF׭& Cf8$$IӁ&yl 1~.:5.f ?Nm6Ȫ= ̜rZ+b:_bvۡPnr}rsasQ P񔰯KL{-Z^)yMZL>,1ASci墭t_'E$0:Uz+JoL\o4A?nuKY_ْF3h?/:~x{}72ĭsj6' 䀡; (Ftq1'Dо-n(S[ 7ņp xTƞp=:$ HҋH}8\(LwwގW!v8~P,wvMk䎥 FL y*%\=OZo[ K7E2PLmHn/܄&(6ݎ\*[`$T߅nŝ!][bU \HĻHY@-{N!T bUQldX}ZOJԊN{X;r18NIa1MWj,P.lݥܺJUy)i?!i-Ŧ) \uT ))(PL0P5r^Z=TXoS"d GszVvSyX,i:la-`nJ~~EKnV P)ѯ6S3.T90m~jwg$-ݴ jJǟTNjɂ`b`uӔ yeCJs|9VF |0Zt`=DJ=n竖<}/.uj9!+/4xCP=R+W`Y܎n`Ŕ,7sF6> m l4?'Z}!N癸k1kV;F\5 3/\h!e |)3%PchLbkTSʇ"!U)K.U'codY?-(~:_GzKK tWxL y+=MI:?0w==D$8]W4-gB|'uոt%#k|eQ{N"_n636f$Q;`Ms8{ rq6.mV!=Ȩx+Y!*DrlbOLkIxpK~ n0?Xn+ >.]c~λiܿaٝzV#//`ev5(P˭DMPExf9G=>83X^[,-cRjtil E8ML]Ť@w8W:PدPFj:ĆZZp5J7DϹXe|2S/߁V =0b7;8: 5UN'4bStdtͮ?Yƌ2)~&aΕY7ŃȝAj$^w\ysU ){g,g|0~kyo7&H8yMB2B)O](#]G `U;bㄤ@ޘvy3>r;8dBA9 4u`NKpǦȈS3أPBމO7>I%@xjXdn8>ѷEv(yCpg`Cd j5Zᙀ쾧}wiyIVRX&2}{H}bRd >Hйc|FrnKPډH0^Nkk9R8M1< F1U!T飤G qi?!0ٍ-#0NMGa-q=ޅ#Kus_UlԴb#Z;Rg8}EƯMBAVٕ֝ Yܻd'$v H`7_K֜W۩s[@]6uS2DD:-pj! L,@Y(pu!kf՝jn UAKk,ut)TpD»T/ktf8˨ \߰nZNZ`.}d@%Ѧ\&NI{`(/VSQ5d05=StD-0pYۉ@m7 sG[ns ?5^(4}^L҂p"36\\Ơ/@ տA_ ˎkOshyVR}8zQWz",Ly6tE%ZtGң4X0ZJTY wT̤9KޅDo`_ئ[~սX=Ki[#ڈ#v44!I,'6#cl ^. h-ۯ$cl|ető<׋`{Vc(iG) @]29 ˃ۣI0@K~Q-|"*4o_P:EI8O}2S(:N3*Uʖ΁]QlSh3"c\LB xnˉ@ҟm88ˢ@pB _,]H5yA]L9!sYI77GN{(ogI,2`]'mgo2ܨ=!Ǩ r䷐*zsY7  )#RQqi2Lcשx7(#Yg]jOUx'ڱFy :XoyjPy%n@"P֩xA>;]ߤiOL-ƑnMҨ~HYPe嵸.t"=[4U!{$iTKغkB(#Zt$?7*׵PPD^Yu`$ɜƥ߳L=!4F݀Hj'qS>THs#NIFqVKރ^w!dwXjk_HՍ4 [qҜ{TrJh $; 5͛ #~#0 lj51#WwT+Eؾ2GZ Ş'Ʈ6=Zו Fz] { Mْ}뜳< *vYa4(4!f~6VnFTq+{?W7}̶7fiti`S`{dv;'J0٧HOͭ JaLNA.Gkd2$ڃu\HS&E ~fґV__7D-ïg ݕu#Zz4;t]-F鳢r3F,GcfǗ:/YΧCp 玀pbB $.ɲ37O;E /3:JTIHeG^Rsye:'7;MR^E 7uGZC]kpLbt8w567w+ApI+D}y1~ŞQb<BkuG܋f$= 6{D~ģEurɹE| )jrhȡոm`2/fC '.n5#e{ k#'܅x]述4YYb 7roDad}}R̩ ȬµA`Rja.*\cR!*p1,N`U:~xYu< H툸Z*(_%>a1T;PBc[,YHJqFOڶ[? dWREH{u#U.MŐ^qVm!|67ʈb]Wab/ `pWZT0QkRV%*фؖhGBJpAaoH`;y%)P8倛!h9_tL,%#3, kCDU4d<\KN p71 )^8X;p}Sq1`jW]Jt˚@qK5QԶ=F?IP \Wj|f^8^z?1Iu%IU: #*_~潵mrYΘ"bW; 9{12>srFg,Vɦ9>W{p011&Z{bE }'ꈄq% cD6G#ƒ,FYzyANC\B8yC_ Ͱd{_YAcJ5"<5{:?[>\l w­I[JPmXak'ҙ-vN,7[K^ߦYc280C `se"56S,-gChu[؂ߤ:u 1PkH987|OpP=G<1z+tp*kOjtZyᗜ QUE?`q#&X\CP%՘d ҭRy1"i꤁dj/dAw8=m /;WRã rϽbv !+1܈!n]jxL GֿH:ָ =$p$jk:׾cbtO<.HC5Ӵb*ơUy$%^BeRy 1*v\Ź' lwD=_T[["A-kx% ?}ʆ`*V38Vb:GAùT0g.5=sֽsݿ̫GSd4x J?7 Zj{ amâ}4uڝ`'m*B#{9`G 땖 `H׽?&thգqKHpӸG]э؃iZ~c`L|Ea2%[<Ξ:EwMPo^^c@gjQS!L&5X .>SǨAxG[xP4@U Cp7pX[偭"3^< B'墦jL.i8Q6t%_|ĒBڶiUCy(*,Ln |-MAօjLAّ=f6"=f8u҇ Rҫ+觶Ed(!_mg9z~VC8. "iSֆ$Q[Tn]b@Cp zE>1Rih ʽ[x ^q7hՄ( !@I:̧=\).Q%m {x=gpX<}s6ej2i?ڭHPC~"΄:M#2j;*Yibo'?ZӴnxdD WUñV>a-[Js;W+%O3ى#|0gCE۰Vfyd% n?oes꭭ġViX7z i3bPWZAc FJM3j>Fĝq-vHoćZ}Uޅn<-<VSH֭<:Q:~/MB aX57V:;4p/!фlT懨7>3I T_@K8ckcR˪nyLԁΎ>ItE"QqD c:tҬOj- H' TdB/ t?t4Ha8a3bDQ_}^ `h>k<0 C'kk0=͈sI[N-/Xkh]|[j~R[NW͛7 ʢne"l]giBV=U0zhB]~Mf&b˕#o.hqj2 Ahi5LwT *@Q,x6If}9q=ze HF><2UI%vK#ܾگ+Lw^ώ[ūxO+éa Dݝ%qBĜXzo6?!rc!d}LY84p__Krd :Z%kSNLavnٱM^\2-8 A˳G_!HKG#Md─?::l34~%\,Y^Y$ʁ8Jc#kXn~iUkCg^S" *>PPQ42!I ps|f[v B/tOsJ[c0&.p[_{- ˜@akI'HęD$PX"SpTna* べ{0Z2εVQ[Ky ^=^ӱmBhuk:wR}d% tZƵ)#Qx{YܕyjVe^|QPT h) 7fRP^%R\A?N8ׇB&ڍu|5n4aѧ.AQ<cWHh L<[hD r/ǀ?.ՠrFi7j2BcŠTca8̘Ip^?[s I7%j98sȻt;)ӨzF^yZdsp HJQT1- \ә;f@BWV E$PSFچZ:3yUa-}W)UwgzVwoi)^~ ȓQ_x@s"u+F>:ek9 R]RU^Sj~qu P ϸ8I$Ózls{n5.̎xS4S6Ȏ^o|<#ek+PuDWE\;nm}貴(pHII -` Z:ȏJi췺1%\`6$h<ˣ}g_^ ĭг>czj݅<$Gpբ,[YaAYmT !䙮n(|XKu^ C:AV[l9d1GH M0"GC(uz<_C,8gB[-FdU]ن숹jɬ}@: *3D?&U/RxߓYؚӜ]{Xx/ ba~Џ(Ԛl6&1Ji+q*s}Jv;b2's? t>82y4j" <ΦX0gorj'L]g jĔo) 6R9Y\LNp:v3_i@TR)7]oXiC٤J+9U< (1;?/̓0e0xv")pTw {v˚9+m֡xO3eW\oF99*˷h rWY agrG%=,|O+'l3̠IwQF3Yu/ u w`s5gdb<;ֺafxo'D9׹PP( f fRrtƞB.)⸲"Ō s p HU["鿀I;%fa#J9/a_D4z0=ߘ$7TlHKaĩ~qOMikvįk'sGʞnaͿ3Xs#"/}0`uGw"'X#NE$!WV*F{)Mpp8vtƢOwr]$Ӿ/$\Rxl"n<<$kE7qSןaSt^a]+8*r z¢"XEbTcA &0gr$*r I'V[,SHO&`Q(̜y:ȶUԠTՏ-uŖ! [LR($7+6}1^ӦcV{腧--}67;+4&lV2!/aCbصd=ÕSmNlDp&]h=MGTH IN%e.bm͏9&deCr܃zJ`BߏzHtA,z=WSQ5ϹSP7Zw '4E~U '|?,atVOO+:UO)M#VFH]C1dWQdIP'}/|%7J$P-h?ms] n:5.H#Vp(1$l^G!&ɵ0\s%$T_:O1#g*fI^T"4ʓ ٗi" ewGZCIg-27 }^LX{mZ80N){WolR|H7txVn#O8~i:"ĺro4eBuF:a zp 6_<vij`l;;Nׄ _auiUDB%mp$ =9yTxWDQHBKf^()L|l?8k>D>ʢz͈DBHIZ+JTC7 +,F]9ba:KD? VIb>ћ؄**/үÑ6KNNz~}G2u݉Ԫ[:U8XWI4v*@Ң2$\EqX5lj:ìlԵ{H|fKb"rvɲXwRl?qGuQbiDŽ2[֨j*6 |OWF18;/Wјg0?4TOi7I%-Hz=攖fXRoy2,L9= F}ݶ[/%dfa<+ 8w.W_oX_'n\TxCR5stn@0Üɝa#\m&vn4by⬩yW˾"reY/m}Zm~h/X|VQl(n*𤇩"zd8WufAp$NqJ1sAad̔S'6 f =m*k@"2-X4@{25:W#QאHym{%W-Z{-y9y!)Evߠ4E:f@"#[ͭ>a g}AVa̳c 6;w0ps$ 8?Y]<ר9ZdYN5u>!ހ+nnXAz8f>ۙ_yIA ̰QwrL5͉IQl^:<':&㪍:{> ,zUuUs EkMp֫&PBU@ϾGxnV^^)&d`[*Xx` AFh5>VWBxКT  j%PICz_zٳ6Q- /@" ,&YȗRRӂ2MuP n F&iKK<ߝ Rldjc?Y 䘔)GDUcoViER}(+zs x9!k~iؚw#o;UV/__ Y:-/@Fo2nXɄSʎL*&Ťqg'"կ2T˕Z5Φօ>eV/BQUz&6aSn_NKu u>/!S_zf(D],7a:ֺt^n7o? E'=#Jt4F Rm'a<긦^Xfia{]_bVRe @)VT/[*?EcPS}Gݗv)[Si sHP S w|BEʃ6ykyz eXfsԷ B̄kcJ/~,@f@ڏb0A)nUՇ?7Xr+#i6XJn)[Ue\fj2Lp(f|0GDnH|8_ -3KfgLjHFe}UPq/=׃q/1(nޣw 1!g7usvk9*,sMTuEdE Q[@N7 ?ik18*D!8%ND_Wfz'r7JK,8F ;'.X0r^jgJxY_vG-TO'YŎX.6ȸrR%*ti4dG1IxWuj- ޜ!O̓]EɒI}V,4ҡ5av ;ދn.sli`bf6۫WѪu̇V^vkг-OXlK">GxXݾəQ9QlO[ A"~} D{)샃QF뚤*mۃVdi7|i0ᜂZc͢ "Zf- z.G@3l<}7j6FwِǕؤZ%S!v*g?S< |ͱ|aYJ%HpQ Q8ݩHM|Jl=h[27=t3/'RK<\7j< 5ڶֲ+WUCtLlpT2C`y{(-Ug7(ryNra疩I`ɸEhuզ"% "ك㰡dzҍΩ{pB8$ 4o^'A5kSv@n+؊JwYYFr!H @H61C `Q'#6 O~ ['PɭN]% :mV(-s3Zr\VbXz齖GXl:AOTG)%j${/v]MG/],^#XocDQ_Z0$XSևeԢCC!Xv IJv5v^4 ZkVIl"VA}PĽJ>Bt"!c_f9?I\mUntIQe*V 85kٱ(F^JML2bZ.fl8-K .9h!QL#J-w ☯ -\U"ɜ;Պ3C}zL-ې7㟪 K I0 LX|@Za-q)HDÄ"$4!z?-^U4Rtr>R țOg֪'?YOk@]QW>2`,,X5jk5<ETK\$/.] 6PΏ]? ]N_q.njMBGY|sܕ^'MkG&s7gϑbڝl3߮[=6W4M D~f{lB j'[Rl!GTxb36!Egk@&UC!ߛ qC+?G=doG}q tSqJ+4$gq,@8<#ࡨ~GhNӵcu$?UaXd8( !mCC\\ZբkxU  [յLjӸ,ESxrm,&LG5w`v|tp5>>DA1\1 t܆cg3I6n5j[tD vsTVd#&8Vhwk5l8rk|e^ $}ݸLLNk@/f" qH{Ck3; ]6%waM<Ƥ“2q(퀷p[ j5D hLǧo/u'h,hI<߬Pc$6 q2iwl!EiRlhRnju%wyuo[#:U%tAjV]{-'+牒R*-p(g/O\)X愘;`Kez4 Px\#zUsO ڨBT^A;e >{pAFvR~ -j?C񜃣FZv:)lyrBu-ci $,j ;%һojSr˟HamWc{ 왋JN˳F']jvWЂrhס:kI >>{I7kV]#T\^[|:iB֩t?w$eS?;`u/2fSqiFC22oJJǑð"_GֹZsHЉ _G%XvydB7؎7g`d9z(6I&kc 2X x{>&8`H'<W&S[+kƯ|$7qp4Lp{u*4']N"{-86ٛ|oybE X]LeBj 0) Xq0l:gp2rv @{5P-y4|~?Pgd?w$u3#wGOˌMv^8%rb "EWwo(̣Egۇf#ޱϜ,Xm`ʴa GҒ[5(ľG>]Ik t#W-[3| 'R~Cˣy_F[>h(X:zwbkj|ЪnqөKiIĭSk#?1sQ,$WtvB !C1+") ZpQœCu E:¢ 5ֹue"?Nk PגU ûXC; 4$:*j&dqH#;Xd~ۆBRҍ5SK]Ѡ1ueXf1ط.*(QZؚfGhR|rU˷7;.}Ae=6-srѲRn|Q{gCU>FEQvG\E`Z"ǎ!\W UN=u}+Q=" \ d-| n!-|+å]+@FteA^i'RBlxL+=`-2"‘cgAI#P3}f_ӟtbMD]ԝ^q1BǤeJϪ|tB"Ao7K`XXL {1>K]mf}&'PfvӶbN:"JӜ Iy=}/,`Ҝ|{^”BQo SӖp A'g,^%vbB!gSr [I0`NTz_!.M d-zw;JXٲޭ! 4Rl6CD.!瓘w?"Z! #h8k F]j~+Cmh!K*J)O}'eh(ƽ(E |AQ9/BJM.@x͛X`TvSf+^n]A>;ChKߊ*ͲP?."D{.r2~\~c.y+EQaqX2 AX~|+8ŲGWk6j@< HA*IK *\퍢N Whߍȥ6T aNQJ_x S4H*Xn@~w3/јl'+K(edׂUȩ8o߀4СCq#Tyu'!ω¨')2(O@xV%O(fd%)ދ"VSxdFߘ :DHe<Zj0f4"D-@n9.ID>N69@;6آU+ݭYxŠPN/F['晚ÝjZl],Caz&b9oPT''qъJ{ʧ@U)Rshn3ىh䨷2;25XŒihqыK5nA+`~'1ŭ7 'RqA{\n>rH;ޛ»Q>uc̛sP[H=W_6O=tw&v OI[ޏZ_ҟZUu&~u p͂ja;u.QOD0zʨCcDrDd'8~FIYu1՚ Z)]r`^@B=R) 䜭h?[Z;PՐ$.ذύoN1ԟgk62 %:NTiE`jGݲv]cj]!F\,;5s2xD.y=0y%{#tǓ1U I/H=`4@yf3FKՅ8]"цξѦ4weT%$$ƃ y ^ETp{γ  |ee$}^Z&C 2bYkɲ<3^olhjtD,yqV9]Rd`5M`6R!T '1%0}**H'W샍i;"Ox ~oG$&&*HR8X|||RvO¥9zE~ R<F]hNe=e@{['"Fu2ed#aay28SuPgגBgHO>e;RlBOOdۘeh12BdwH"V-t9NS›,VV*9{;m }Y9M'h}_1є_mݿ)p+A~3YWW <,Z)zjj>?[[nd_T >4zIS&>*>`V BLY.،Mp[%޻࿻+PeӬouzأ輖AK¹$@4_Q(ϭY^:U 63kY-hgo iEJmL?o{Yj ?eRwA~~;GW1#h :+?QLUQ`msf)q:k5~7:؜T% 8vXI TS @820Px 鋙tp1Uٲ#T׿!驎L4bpZXGgVB'2 }a '@d^vgI&\<淉nq ZBv|jB-1Ǜ v":@iu$ِ1->Ч//O؈F$%DA_CQ8t8lYO qcSl "9AH٤IzaSa^')AF|z^`E5bT,bPd@l xgG `hۥbUV ,IKñI8Ԛbtp7vS`k!pq8iqi?/;2:ވڣɸrv`5꼖cW 7*F%$-Y2F$rMr(H@ǘ|?T;iڜŬ\%( Ž [sw?2j;{VD/6*HD/~AT8s7@o1[7Ea|<v)|CjtВg@JAkL^n(YPb(B@|-4AM냑l@Ƣ@ݓ:a2#^f93C]$I&&tH 0A ɻ Cė<ޏ#b=[s{j=JlnvG _AՃl4q\̕Kz.!_l2ksɯ7 ;fCV] sY\[aiAxs0˔+LtIF@:ofaVn) iX`'G4BVYS8dezoN5!dD q8l9Qq/iÚ38D =ןB7/="2Cޟd1щ]4 2wWKfl]F͎T!*H`[+"0ANxHEVJ!;] 2%VC5܆kLfIRe3LQ$y"~ (ȡV; st]jΩ']x!F*uVG@G7<]yO;} :&p'EO?[܇rq˜j}lmxfWf%TI85- Z6@|pXS7Ӹ|z \VYV ldnVK`zC1@ZDE@][f@!ob栨l^A6 [!x{.[q2@dW\Qb?1,Kں/ԓ&JN?lBW!S1 >}" w9?L,ZcOF5IV2mDj9$q?Nv͉B? &1lLIMyo1N,-w爹VT!*wT>!B@QV3,7m/,y^kvtD ROlX1M? |DW5xVi`CR_I=12{fټ~҆0[GXMީ_:|+Z[#mLEkx&>uCA\)B 7+ٛ 'ig`,ޮ3cTC)2 [L-e !}nPcdbfw xF2^)5:JR L\f_x by]qCe!F!-<]ƷF)PB]W Cn釅b"O> 4TGԊU2fb%8G!$,PwwF?rX\r1(_ 0{atq ^I΃TXuaӵbM9!ӕr ]'ݺMxgju}،<}J.D~$ 8)v[[rϲh 8Ƞs)esgUs v(u=VBu9;uTrS~+ F72_%qCut">NW[kRlk\x=g!|@0rB[ٖSd[85[ A `r]L3jj fekhZaSoa9s}B1X t+ HsU7-p18mk֚%oI:۷.r.!faC|Yv4wȦ8|L"Ԕ&3&?,1|:{w [L#-O,h9w 2'4<\4Kو koGHVEڲo'N0  ȲG.{ WXGk>)U!"3Fr5\l;XcǕ~׳un y])";kBͻ-cF?C- TMW97~ćguc)jK5%/ܥEȣqع a9ɂWID1E(NvF!c]S%*H3$.ܯ)rˍ=oBFGXcKXš./4#94g+*6CĎD8[ b&{U j{iüu84z#Rŏ=65#x]~J{bjGrQTԼ[?9榠lCWeG[t|wNkXpLcOFRҵyfƮ 0Z8V~6lC<TKBAf0/CV^uM񯍉NciH+5Q_V1ũHFch /[$5aeI\u~t1C~$x8eh6M6g ֜m 'E9òXÈ-;F?!C2>W[0ӽyay!NjB]HZbfuH r/6SN;3%׻ťiĔC/bZ{M`.aYk``wټq!4;̾Ve2H"lّ|+H8 xc{&١.]YF S9NOC ׾oj2#q"ЊT=Nou4EoE<*l|&\b8M;P,r.:X4[fOZBF7 #0 g= qM62$Pk7_]IOB3+g NQcpJ,ZK1 ohC+URz[aykJMf$'-lchBS<ch;A؅d3adLы!tVAJi)*l A-d(nqH[*wSË$%o|P, ZF7뭉'$/GڼųO!.E Uϕ!_yYfm^%$ ̟n`݇xTkX!0lΆpHϖuBr?Tf{BeBcHٸNtUO{oPa!R+eTڰ޼9"OB'(FLj't =3X;"pq+\M0?+vEPNAYIi];MépE$oknF˹+VbRUϒU+#>/x{Q@l[ ǻXpIO4 ,y*`ql2 0YVfxrKɟw-@Өw#z@JY jN9D&3S(ad=[glO6]:>F s@JnS8KyeejͲ 26JӁ}f͟glI5X~ED-{2Ryi]7求+@k(%o ѩx] ;?7DVܵQaM61zGok ]_06ko@o-(nd,r0ѵ g; [oJWWx]9tn'|:2!zӴ>"37ף0 R82`)DԷX䚟t!Wr iBN^QqG=QbtEnsU(آ,U:$ePLcK"dqdFI .0^$Teb7)tX#DᙲjذF Md>VEACbrs?:PR~PzxNz3vNݥ_KY_?M(: hصDRcmuapa9R`.؆a>r`%->tZwt#p53O ,w"ܛN5lٓt_"m=ݷ, 0XZjN&܊qOeDNFxe ԊVB6oz6ݥaw1U&#jD<ዟ6e|Riy1&n /51 /pph@IRJT=N}+cj*)"> c,>f#/ec1^_rY<2$W`(CER'g0A%*1 cƂ` > |%ڡLREBJsKr'lБVva ZxhniPlɈ6I9JA$7kMmx_8bƈciXm[G^_`bQ{vWzF9Od~[1E2֥ G}H:= v DS1򺙟 t۸#Kqj)_ƎǓUR 48dhX-yL&Q:oWUeEWB; <QH[I`h'm*' "s\o_@&}qy?˔ֻ=m6>pܷ9{x)M$tq; X9uu&h#VE=~̵ݞ-X>S0 PaN|uC)l-n |d,Y|K $/1ɲ-WM\s.X$ny p_y67:J)bɒI#)}LA9"Cl0GCG`}262 į6'9U)9&hNk+`9/gz&g,+@'l&rōZ!(BP$&nTFH'0_Op#rYk-}M+IIDPDbۜeM`!/1VAI9̝ETeKt7-I[+xA5sL =g.:vV ~qmè$,N}7X^?FͼK7;e 4odӊZUlP3)%Șzލ]K!k K҂bݒ0cJ8a2Jz+-΁@cܧAjsf<35)\ Q>woKq;6 }Kĝ՜+TU]NVNS04ؙ{Ļr~v0-Viu}FC~Be`d/=LIlQ(?Vﴪη{;Rg?\X`#qTGpa3?چwLJ( s5uQ[ӧs[{B(]v v/ kzM[ty<~\1!ִW5̴եC|7,¯;Zڋ=%qP;}eџ|(G<4uT!) =G4 (COp=NaY5 e`^7GepYo^}l~>mm/Bo6Uq~&t%[)~ }Yv]#<)6-3G@®'b'œ܆eB81%ǿ2A#<2ȏN+Tj:3~D]#{Lc#s éhu'N;b1G" Ml8NaX,{A%uaR?tбj!0oEfk*NrTEyvݍ ?y,ӴO#ȺԯlhRR1t@b0]}e[@r琺/&m$/ȓힶSlBS=f9܈8*w8 4Zr5LY< vnǕGU02IbB79|&s3J[.²NH{H1$z( !>L>Rz?[8^Za5MBk8;{I*X6>%,IwyH͹|T:\GEbx֗B*Ij-b<0gL>cOCr$UY :='f'dõ&X*/Up 3c`DUBpt:8 7 )cb_Ɇ %ߎ$Bji1#zR^&n) V5N&6Q2 in xpsnb|PP::aU_*5@fԻBfl9 /yy*sp{z6Bj'EɊ再5,~Kw_g/+4NR00'Ďѫ&ף= ӞyZ'q%Z=NC|3Lِ<Ckge傳Y ^q^ R~+~=S7Q #ѓ̆gC?.rFYV_aWLhIk AA<76ѫR'k9q4fwIKNh$ "i^dz-~"1! ;"$Kty]5(;^AGyMz7l߰cvAےV2l0L?p#w _<R_T?>QavKb*ɴziY=EXr*uĎ [:v{C !#5HL?=>=1Ci'IScv6t; H3[XyRcIhFW+y '`' DkuܖQx)q\o+vPnT, { i>BīmQxo9{v:9/C5O5ǎOL(lBEltځP'ŭwHw.t&6?ofF#vO;)E6֫ 7Fy, :iOu$Qzl6;|jth)|$3v|襋dA3q1Sw _#i8Fɺ# `V><)x:M>tPka~30JaI Pib8l3fy +)"EC-}]wVmd,0lUzN9X}ů9=07{/ljY:Tx\lSgY!Ŵ !-1ote7W+HnhcFȹp{"\EyTEidP(Y*+aopfsNo &$il#]}IlR J@Ët'U ֮/Pه%׊y]JYtIߥi991 Jql+XܻP켦S6j/{͕W>_m}ZF :$0ϪK۠%DWng iD?2kC1I$ 6J|?^##ыI=*GRl ̩xְ?ViQS†?z1#݄1SN[KK5ѯ]tA0J MM7mF栄R"JGHR3ǙF<#!y^9whNÅAp+E.E>ɝY_.xQlU!'cIhJ`*A^0Ê7Q+= T OOnW euzabÈN/UO+ޏl+~+dʺb2V#ȭM Nkeebֹ7u}le7FrԼ@fI`HJS׍۶ ja$tfod?h9Jn3;vL#A_ 4%-1eT- znH9舄a$\1/["eI6T?|Y65] VӇ@;UBv) {)`*=V9b~qkt]C X1lj1/{] 73}ϞIv]#5!?2Ҙ9RWTR_jF+= z=Diӌ%% Zd-$ SgX kEa[n,7rtL*q4^IL-UJ2 3{4FMZKl=@:y\.ptr?evbPKrkuEEmH$#WѺ\gqI/Ok)G/Mb]=rf`O\3>9o^/BXE1hCTQ?w5n> $p=j]p"/9o5,_8Od|﷙pеmneiq%1c =ѵWW tGcl!%].\]J ]Hg{p[ڮkU,PFH=)VIFk0m3 >]xຩKd[Oiڹ« |Q&`Ú7d:HXЭC.^@UBUX07\/<`Brgv3չ q]$ߕKo=< v<.*%r^!&0l56.!ԔsR)r3MF E2@%7Ѵ< )LoXyE3T`xF>eso)e Kvw^5Y(g|X@G5b>7zharA%P Gr=)1m5?,QR39ɤ|b .XA`FQ85hs䄠 :8<,nVBSY^$s3vCr|heE2/h߻s>' ϮE(ݙͬt|F0x3ϱ-kW,Duӭq"9`Bvݼ%2#Ff@=4fe셠4iZMA%5[#g{|f-(a"hg}-bʇb8ެ8eS~v;8skhsG Υj#4xRP>$Bu}F 4=y;Aj*+$-eZH,:*zdKl[[P5. 8 8MEQH2~kG Bec:vRÑ~(:REEƄY+"o.2,H#Aޕkb!*{ DMrAd-==_njO4'Xu8]0j0pLսGnCb`yԹb6Jh&w$m޺H3y ᗟ%+Ӈ+tĕͮ3FU(]17efZat@Xߝ#(5fڛXFެ/WeR*iQ:r~>qҴט)䱺1u(L"C"A͋7R_T:[LRBb~16oLnU%]BLM.0$PJԠ&ˏ `?4wˡaj$6< Sݑ CKmƄP$r+ś<' PEi(% M$+YLbcRRS jcr/&[#{<۸9 }Ww=^'v*:74,͋̈́a"&uԵh.@Qב uBgk]+EЋkfKช᳾gtѢo1kCN&kЫB<&em/tƘ0Rҩ`L(EiD 2J &iW_Y/eܱL#HRZhO'EـYӡX p9gy"rMQRscp1?S ,i OJUa !c 91*NX"fMgLPx Q,XO&ˍL芌/dGB0!lm`ue=B7kJe,[='02mh)g[B-~,OuVC81ub Nߵǽ':kM.BA)B3O7oѩ'cB9~û|kFJ!wiL|,F&/ћ^m)VfOת(S)0 n)6!=@0vfbHqX!F?:_K5mW]sBY~*N=B&8KWSaĔn' CԦzK_^|EOPivǴ>:Yk{F58e*b}Hг{sZQ30?AݏtVR "avKRĈZ .4:KrK(MTX˽tF}~tbTK=Cm(5!)GLR4",o=oY=G;&:j6Q"QR?zնSCİ &bO.96G`(u)^H\fE*.5qPJF?%Sl@) ~ WU\wW* .z,[;K\#;( DyLPˬ*}h/57ѥjŊȣXg\۹DrʞGt s%~H7o"[@~+=I$5?|P#/>HT[כ+ONi-YRQC0  R9O]Kc7YdriJZ1 đL7SW)XwǩDzFyO>$ss$${uR[8)N`hL֕R /`(á}_D_aOshs[+)I4{ef{;8v f:D DD{)Ǝl~#cgra1v(_߲VaV*6BOpCPl<476vV/V#kXM/w%SK.F ?ipfgrBqz n|LVct[spcWЇ 3xh?R ;HoT͐0$?M^=וi]<7' Uث?1Ek;OQn]Ubzs-;2֏K!0;p7@t̛ o3Bpo *.\DcJ,p1Abҿrt3>t(23[|#<I'x̥4#{?yheQrN毥ljHY^ ז (ؖXˊ$BHc L36a2FS't·qiqnFٟS IV#ٷFj?%0h#ټ] 9gZ+BaW /v0SY|@ D"Ԥƚ~-NWTЮ ۿ7O .@*HʚQB8ΠMxR-M h50 m<~ơ/8hQ oi_8zNIE" ;p0@|J"!*>dY}aNYH?iiチWaekɣ[A#3 h5XQG섾cwqvQa,^;'aEg .;Y7ss:+vK'/f̫)T|Wxmx D9*mZ6'ňexuض˽(rE~~@EYBH9^MCRg]x[gVܰ[pex(eAX JQqQkaJIL>h[o3_VdYy<µHJ/tsj71kÈ3fߎnձ2 aJ %ſS)wQg,H)D 7^&7?b9[U\; .#*mt>$BpîDŽSՅ7AW{ϳ:*=9b"m7U6f{k| /4Fib zU ֫厏Awݧ+SI˔/.]Z:ȱu ڶPK3щ_4!ڧ}`7v傦b2rLh?r=d*NϦ{WI|gck&P b z?t#=Sx]MaZ\.T^!bI!e % YA ɠRG6)HxɵOǖvYMb]z:{j[@5Ptŭ)QfKsY!N)>nѴ t GˢmD9hz 9]RqD tu;}Ѹ7 aXW6PBRhJjrckŊyt3%%9wc\r?N*&C%/ꇲ]\$[;lPri4a߮MwFhsi n;:kJD\c9!%7Oi:ob|a'a lq" GdGc0Q˕"~j ZMxykQ"j%xT0B܌#+ ܷ}WDF*+UCXn+@`,O\Cۣz6e87c$ 5o =}5H4U#. h=\T!d-hs 5\lT=@'CQvZ>2pE ,hSWwܩ{TEl{}*щ8#}pcMȜs Kxɳ:|x; :A2T}]81x6h.'vnXMwMQM r_}4cc(J]qgW+>/d:Lίl s%1+_E: d_wIpyvX DIXe%H+9I}G1AA xnGHc4%T 6&֛6Win||ZKڛ# rDsGy58ʺ rNh}2YԎnx9w@+}7"%tu@i#7 Olod01s-iYD( xlyEi8{w?*{ۆ\uUϟZgכMH@U>h=/WTOB%sU>H٩@4m?.=}?{τ1&Ɏd}!TCNw Ђ:e)WxAr4y3@ 2%$d ?W8N֨ _/ ℟@{RŒ%̒-lvYB+hEaU_Ra]DGeL#5q%b[\16OB8Sþ˕ټ-pL53i,O &H0h_< t>N1 Z8Ip:E3B ?Pٓl~TuXƄ@"{셲I3A;xOӋvPKfBR]e*j)&7j-_Pj#/waBۼU!/}z~/E /\F]o `"j R,kݳ<xW8i9?5_(e=N GQ7_c#]=.Lh0H)L8BV3io Q6$W=b;xrZްP◂,W@b$p﹊Tq^ 7,1a-\!(Oܢ$rKMRBzWY9%oh2مV"]Ќ;YQΐߍAtAqSP33x'S 02D'g L;_v|4iHuQUCd:G8 W [475I9F$`y(XC F tp.Lj1 iK2޻ B9"A)[l&6!:]1߇ >|n߫{BjdONX&݅2p!JH]e<f^٩ MG-z*`C+ɒ9E;]MP3,)KRTl]H:Mc`mfJ OLW0ȟOn߻&Yӿ ٶRҌ%Z9R;IwE}X;|r6Ѣz'S!)]T3SnQ\ɷ D.'nKkB?*˽leJ.QfQՑJ&w"q]]o61,j? &$݆(~l`Z ^ʣHSGڤw ]._RfD&z8;0L{_>cU b.}@T_jVm٧)UoZ{D_G YQi{[|!IDt=pA'~CHè"ސ4o3DMkZdF>-ˆ9߫brsepYn^aL-l>^P="=!u7-70{+uȸl"/wޘ&+V _&GАYFD׍b"qT8sT`KZ>AqAz1Ő\zaTǨ|dr4h޶=OrEء=gziz>U۵u0h%smvkܮ;|GTC:fax=Q(\Un ]e}EgW>+}+kaqZpoC)I%9_I%tfGϚ1VMB< ZKk8ݡ K~pQ(#"xkޮcgtΝ]w:܃ 66d1tQ%|UV| |r|@p$wԸlK b\ZC=Þ` T`~/#OQ+uwA-V)p89c 6 Z_8 @9hhZ'H}Xg)@-6$=Mf1x \:C`4Y#$T*d^4wm7GGKi&uf`bF/ӯ' 0כhJCgs1f,y|9QLk[N֨&n%`iq<o'jUK4p'*< ͉u@RxFW09jܿЛr_#!BwFMk#ke $< G"Ҽ:!'eD-e O lqbcP-$󬥓QJd_3$.ISKC۬] zE8ӣr|3`}O6'I'W%-z6I U:#rg`*[Sڪ>!4쩡uF}2~ 1cH{w3II8TԘC!a,oT!s 4a) VHȜêW3=.xD1b=[ !@ATzPα&Ff0=,zxcȶ~qv2K`>xEsSBh,3jyTGIPAPPf1XE[he|Bu^iʇl@[!r-=Tu~HqbLJP~O*`ɨrj_r.-|lGĉ5ф?ȑ;wpG%s`xS$V*sSYJAw:g95d̲c .g?g9 &גT9B3xJV!14@{ʼnvcD:w>ԡ4*N *ia 'Ε *֩Q "K#hLCc O, &+ީ3cRtatɮ*]tf9ڤUY}i;0qE هcBz+o]thLR1bp;"٪=s$*}1oA£&>rG -daA+|+SQuA$=@j t?~w`s)xRv.ϫeԅI4{|ژL G@}%_/pp=I=tpTE.A[7Y8%Sj8cCKfVخYVSx`$C$r9nz@p5xh]vf) ps2yms')"Z f!jg!ȱEW qJ&J٣&G>_%e̒՟4⩧̉Varz 7_XSj%M cmk귫I:ڬ z ڐ%=h aU86Ra,@2|Zou_HC?^; ]2 " [>Np@tr2$Z t0C&yL9ӶKȴlgS>EGN= mJDDTgbA@y-m Ƥ{A!dk2wp*ͪ))ÀIͯ~As6HDD4EZ0xl 3"cD~jAㄎ@/ZJF[ N+lJL3>jnWy6qIY້aHf"!%|[D1d.>n TMфYp({ZL[Lx#lP_5s;S#IۋLJ-?ԥOi+kS#˹7\Iŋbɔ)Ayl#[%:4koO%VYV1^`{KK =!%^ٴBx ]z(Au7 G=o]:m"ZTb(nhGTC 慳Q_?LCTR" o86ɫ.۷ 'lYȕSeRuhま jI&(tt;c P魴pA9f5*sa966J3o++2U>TNtD zcǜ$vl+Xw5ӫp1@8FTyA!%b謑`R m` vѸ[P$+6ΫV:PIGߌz1TsaJAjUC {Att4UnC@2l$w'h>b'Yz4$t E=Ћ;nærg>´2qd2sPp5 ZB2}@1F>xhhGw mMw)WVz#0(p+!.bşZUy*T˹HlZf%(ی&_WgӆuMOG2ږTI r&mawM ѕY>ֻ1к!+)/#v3c=Z#)|Ӗ|ް!/ th@J8GGJ^G > +<+YP  \V]pUP'LmMR^]ȕō/VoGw".B9_}G|.nQe欙@g` "PaJ|sǢ53{#PҼ u ZfXf M1@AF<(c.;XJ6%QnC89uOzEݕxsH{C4-e.wm_(/zf|Tk&[N]\ݭJzmb[7TCY#ePwjTi@cS@ ǚ2~pzʠHOVn Qgӆ]-:o>KW%&eQ졽{⡌7D]"y]DzgJ&:Xc|ux|E,D!g #=C¿-rVV 5pIܗrw;= D].l ^gw{y!;rh FGǹdL'$b? 6[04-ynˡ&?0>2Y=`TG>GvПvU׈dnl_A(߂j<6Sgf^ŠnȤq9MZe^Uzmݵ'x+ y*w6"a  OV}øUXw_cXW?!AIZJ*j me=^U :~7@&(˄6χrUE6]>96/UII:N+k؆ן= ;,QlEC>*_[ei60,\ɡ0$ M5yRMMߗHpڌ̞am{g{.8[X%0WI跲ǘQq= Kp\+v<}司77Y-  v0C9-iI/,ӭ?'f| eǭ2`WPd_P|15,Ux}w![l_)xi9+}?z_5 W?1hSŃӆsP:*ZŸ琪9 x.)<xLN7T:nǺZfLAׁ|< F@4xihSwJ3 .k*Dx/w#XxtwXX@oKEǛ[GFs=.BY+ FPq3Qa I8/hH_D͗=T[[OwULK迏 (@.>pz3AwlVzr!2Xck f9r%eF; eu5ѝ?t^]VcoV;:; #!(XBz>G"s-ipB+&mF}:Ę.wd.}/VD Ϗe N#F*NȒ(f[4]t2=`{Wh0ڪ x9vRCM'z>ẝ;#%҅RO>L€ tSK^psT@JLvPe"x>])Oݴ% 65[8ՀOؕl)@*sGZnᤌR)$T3M%s 7J#CS_V?HBd؏Ml۱ծq9^"geX"&ۼ4>߱r妇*RIgp:S1)g<},c\²e4Y믽n_Q΂"[Q^ )sLiukaP>[0- pQez QA/];aYX-x#kt54lKa?,W`˪PLE▯[)zMgi#?ԞE"=fE$@ ƺMΖ4ɞIYuPDxiˆ!wى #"}1<XQ_D(]/3kd٩]p.ypQVHP+%'7)+mQI:zwB,o}]=|tjO>A FSj= cooH`Rom49VZōn/ͨʛK8)oAA1 S}i0unQ{1 ⍤ݼgkmAL9BhD`-!ŭ¹ _M2ezX0|pR"Braʴ3o2Ħ!. åS=]LBi59:@ lC'l A<0|oKLj󏀳}pܚLff=<)kOkz!AJN4@}Uj`w/̡XJ%N x^iO7zp|A`\$CŠr Si Lk;3E@I~dUG/8kcewk_mU-Aui.;TLc,+ԀLgwn"NXL ^%-h0/pTb@cK1ӝWk;*bK/+3p]۳ '"M0t<͇jG߹mlp~*.dbgC2J=n|;b -z@P~v lkOѽ xj#~dY^**:`If$R<̂[Mt7J=Nv+hKQufKƔrqx}i02$P ~= 3}[ fM\Sti=S;.K *z\'JYU47l U]eAqI5xW{,*?,@Sqvo9 xی@/}(9G XNW2 M*;[ v);?}TąQ`*Gx4$GixX'{$H AY'R%P(tBLĜ]K"Y5F :XN};M'ӻd[e;qG1#`5*G;[nAC1ﱾ$Z Ry_jս>3snaضIh3Z~m+۳d?cvh):/<3.v 38DDIlw%1LN⚋u9yJŋ:ɆKJ0`ؼv F)}uly޷͜OUGz LEQR47KdVxΠ2rAaaYwi_V!LEJ`!II:P ^h%3@+@#>f-m$񰢥Y6^icɪ-E5Et,|G_G7)x |'2;RQs^v U,_&%SwhK5pgde\P3k_:(VEqc=y#59X!,.`:z\[-{ -U/m. Z;X'0|0 QX cm>3g˲!_z-+<X5+cyM&xx&h(R:8l +| s2|Tp(;nj6>\G5bP] |2v5Gτ3Jaқ@H*^wzA$~́ >`VѴ f5)D亸!N"]- g3pKwdGMdN ͢-KYU%ݬ>l4 nRB8f2:h6$Q;IC [)@ `LMh,;E.1+.$_6y?ICD\$J^导K'E00e! X1R:k=âN~=v( Y܊'zj<$8Nun2BT =| w3)4آH;$?6qΈUy{qnǓމ&`$i$OIȨVȳ)vK#uc-CZ.W=h i|~V#bwgUB'QElȹ[|4iF!l ssgYꁏ @$1`(ܴi T6F ٠sx7 n)uZͮ [ne+~iii)GKK;W}dfYt/6Pf1 u/!4eD{$&XH-[!WBviM> bw2"Ex_%oL5 :j .]'xRJp7hRiu=wKжL#7iUAB thWn~K[{ŊM 3i Bټ]/},<ϴ()mG#j M&sei >Z MTt+-h v dhQ!5&UjC!g?!:=z$XD͎ ^af@'۲ľ^<[9b̦ɺ֙EZn|]{0oHP{d*\ޮn"P;QdHVJ^.20-%2x`P?a}2ZG4?M0J٭Ur4r.E'be.(d9ejvvy&銉'UuJjLGƒc=lE P0 LЎAQnVzwxAM|ބB݌v2! 6MmɄұb &]P|DܶH$' >D0ct0|@E0LwұMhJ&0{TL家~|kQ$+<&r3mYu*tC'WHk2:9zU&.;'%:7W_i\'b[1S\vtv9tUމBKwrqF` +Qm-Kr ]C_9a8D^TصM*T˕IZ.@WIĎ[1'%oF#B{G 0m5yaDNJ,]`ʆz؅ ඩeu-9_jenRq>'tc)v0=F1%mגݨ=І|r2|Q(ŘG^dJSb >0lq$տa 'vҽT@ymAgLRIpjkN $]9^{o_cFyC5f0f 4g&/-[!7 ネ }y{ی2eD^ĬB1ѫ%T3#D^7 e[`=i"ڞ9 .9x\J'Ĥl|m{ï*AbuJbզg.HQʿQqeG2J˘`u g $]ޓa0 ZUԅw%Uc'L@k $ U09q)(N 躚I`'Pa}]E:Cf=ϯ}")l ֹbj|r'w^pvw`H r@='˨%󔒠Řj}r[T#7`kcp RIr+Ǝ,]UhtFW(oJ)r2cu?!< m>ՍH]Y# XHAE"_=#h9oIr<џٝf}޴֫n}3CĤĖ(68_2>hedJ 4gVN,@ҶWL#I=[>ͅovs[酰Ά!Ÿ<ĭRimbP`"Q!3s|@N  I(ӭy dE Ju qN!smPM1/"<գ9&6NP Y> ͛MeZ !?I!,|?,]VP}#7N x~B,c!8CS\Jn DO܏BB% 5k&41I=i@<"~_Jk(W"zK읊V H[BFF?%/i@lU=rt] KPK.q[uqt**9N'hJ PFLC{`gXh/.ӇrJGZ֑.!GQpJs $ae||Ef)ғC`ʍŹ]Zt4++FP->sU@j}XP7n#,)FUpmi--5)^ZA+Q*k/+SUւIHO,v'{9kϔt2ԛٽ ]*Le\B %n2NÝaϷQVA$tĭ``J}PuQ9nQ} r %GwDIlo}Ş``t&HN|xU&7-a{xc%E-ľj4F8^=BXQd;?Kuel=_QP<.8e9eFI}oƃA'Rjd!i{}YS+wZ&ȀlQ8Ð@wdB3=OlR,. SgR?7a*&O*8x\lPؑF[ ^C{-B %N^rHQ_qo(|'_ֆA\*%uzU7n'U{ִ+3]cu ү. cJ3fɑ!xq'tgW7RKv?>r# z֓5k(A@a]a騸 άvSFdH*J@;Wa,EKȋ3xNO ˲.)yhPE k59jM.y/Jc-asgi)Qg㷊B!OcM{C(o1pV=tX;6gHrpGj*m :wH,1ڬ{ByzK0oUzdϪ67^#jxBi g9N؁<&1G:yLDLXBC:"a #^R:@v]<ɎWsj{?O^P%ZV[$ ƉJYŚ/ S T` ƟaȐųPmfH.S Rw;k{!}6]g0Ax܀I<*mSbNFvceU\"z6"~Amg+{ބ;i tɉ2BT^dZoAuomւG:;ݡ KQ ys ׹Fp@hpUL,"N}xe)8!3 X6w}#-|YqK/''.f .5"a-|@IW괔[ ([X7>3_^NgFad{AR{J^Gs*}Ԑ8z5HQqLT͗MxK~%\].i j>c<(cY.Ic_-7cPy-kZHoM +*rg012p9= VK Xe]P|Χ!:*Y<]uV˘ںA ЏLH==Z.^uk]lG.(xc|W ƾ(䙸m#MXI󆺀Dq`LO`KҊZTy|bT9b܆V7<ʔv/M>,=d AQ9Wм*&]Z (: -#8@JILq>5Sb6j-ʟPIڵ޼Z'@>%5LT__⠷$S.jT: ;s_!X+/Ub{߬s.s(n*IJwڔBaqe蕟X%.d[yWƂ.e%Nt 4\Jg_geI64~_\UMK|\-n[p+d̄^p귌QwGo8ˋ.{@5a8/&bc[+-8^ BEr6j\Yf63o}g}!\"jU!.IÁ40s;LSV +nP"94h<}<•3{*S9iw ЉMVR"Jϧ*z!N}>PMŜx9W+$5VGQwPRRs&lݶMv &xڲj<;KbC٨5O~ǏM|ܗ_z o `=dyueq\\dT,Li!&^`\]Sd/Q$?1*Y{j̧{v۲:Rz]Hpؿ/OkqjIJ!A_l9$ Sl:RMN/"T_N :XrɣZzaȽDV5?KyGsoePP׀ wsxʕoض= #ϔyǐ`. u3>UwФcav:@C2u̽kow9R Z'!S ' x VTz1~t4.lEN!S}&Z%\ߥ#S5h?B}:QC478!֋d$2ŢV)Q^g),mCJ&.֟-vf@f#ViYBQnk?gvZAMKSqÌ\5iQ/E~f#"7Ȝ?nf%m<4 4ARmZ"5> 4ʾ Vf7QC)nILXĉ ~0x9p-ڂ@M*tItKR掩m*r/M,X}BN_eAWLM5'![ Xc;UlF6{6` \*0 IaV/rm#>;O?q.5aIAmDEߦ)2gbV 䜕$:+v>MmNY;H e'y 9;B`rd^:@45i)n7eOV항nB.Oo5a^ؚٕ>մw(iOjDցmU"unĚ"H؍@?|u bUŽaEI oS6~!V ~cbG<Ӥ U>Y٨}Hqt3MRxMiSR4MDnp\P,A!o|#spkaѯJ1Z!o^NgJa7]G,/N 3Uci,:.QmD{&EgAhHdR5jɒV z?>^ݹ*] F\~/ < ~BĊAٝ* 8lS108(r]h.+w0cp8 ahPY4Jk(=E 3 Tz'(qBYF-PIl_ƌxE Jw[Iz ZbxAA ۧڼtdio'H\bY ca[zJǘ# f";~2Olh QH;ZsŹ4@NBdƟLzL`Y_^QGnQ!4&J9BH@t]Mwhrm1[J;rt0dH/Kt&o&=Zq7VM&IHzFkT7|'/ ! 2 ҨlT1“lYRgn{aqѕuPӱ]6 L7+(?΁3GcTMH3jƟ6K̓$=Z~P {*), ۲lg` wFWT֙(`UM?)rl?(^]b_cL a1mKĕvN#5M̤#g: n6 B>O uc]_@8PH mI۾ehg^_$()a bh,$bv-]aWOmwCY3C{.V圴n::WKH_j Td rJրTo^1N= v ɷ?x/&#zaC;%ڕ2E2LunF6߆6m⇵7wzaѰD)#Jt鎀:{ccZ g@QTwTaHRy"WR_4^:u_rzn꾝:l8.zQ|A8Qmu&^y؎Ot)巛5G:7L|*ͻ-@Ɔ 9I"_nxWƧJM]OX-if"ʹz ]/wPӴ L\3ʟm@3M[rGex'IZH\wwR![cE{ 1/Pz+-ӆjpމQIn˭ID>H15Cg ֓2jlc1e%ܱU&D~mR7pBh\GIoUm7TۆPnf*K&LB`^zZhКH0ß(IɹГ=f}]m6Z)W+m!]u XI 21`)CL,.͵q܋8AUV6 ݾ: '6;`O4c9Q-HjJG7GхK+dّDe j4c4;"9evB 03~vj h|ql#mol=X?ibvIݤ$~-6R/m$sAo&-W#:-P@4ԃE쎥3]6G7amkGp\55| -+\A[)gZut= S$,+ݻc'AhډR~PSMc T84wO ?I݉NK&ᄈ;ilӔFef_Eۖ쨪=GLF9yg5p;GVrF8:Ҙ65OGh?ax25}s7`hwXq(۷NXM_'KJޗdcL[؏CO%52:;7 W8\M2P:trCi91ɛ['iNS`51' x2V|%gbR XLj?)@VU òG;$u"_`Y4?!tlWDhuY0bni M bXcT#e@G)e: JS/equ.ep;2\ax@=~3J흡|;X Q+WO 2I%;tuXĴʲ@E 0CT& 8h[OF\8LWCJKSt> ʌ!cyq)`8Ɔ#P3t aPks2JB, MR 5} #!jc\VZT@~1@`O]ސ13aĩG 6/kQ= +Z=Q;lZ*2c J#V MbKa9E-0.4x3CGCI~;ERZ]Z,H J bh/_0bF@CKͯOOVZix "&gD)YtӮuQE_NVG'o'ow02Z9<xQdg(?ZARWy9W῵`<1\iɢ1,)Z\_)fw%4WFTd &FxIRZ+c _%9v7]AH aɮ+i#}R 㖅gAcBDz mr7u )K dhukxK`H-#H{ 1`OUH!e,,/jO韆 e廄`\O0/'\gY|CG1'8c9U*״혱5&AsYpm}.t?Q-}ɬٮty]o\cHl[i/i_[ y'lSG1Q܏Zrs ad?%jydv*u+ eK|BA( oDR;Tu|u$m[ ks^Mj?vk9'0盞$ϒ~1^xB>oJL]k$MHXӻr()[(NYGD<hTj Md@vd=6Q$Ӌ(GwFKb˝/g at`(pLj攎vL) /?,t>_144B2}l|vSC?qօn=\OfXIKB81r `Q|v {@W~IKt(ynY w޵>;rӗkP' ġ;Z N_x%0[Ә,\TQ@B+%ؓZOyʎ:UVLMd%VJ|b4_W{,5rphiTA6v<&^KdxO]* UV0Vwm6hCV5~pG` vObD1PC TbI$ |Y 1(nt1gț}zq)uQ!Sf)ݝḕ:[: V3WcOMٖ(5f%wІ_{)2Ӣflܬ:>ҽhxl- >& w3ʜv (;$2mTqK`97k#NV!_st-F]2sp^<:h9:pZ/$W]rA^|d'Da WN3:wsDK"ScKN}zo" >5R4&xzȡ#04uR[DDRsZY-xMUbZ=X8Q"ת9vM/9B v--!K.YM~kۜʾ8QUHhI0T}t]R{ų¾OW_ʼniݼȍo`~,6}؀ǃ'HԵۑ0̉)7^Wm MѦ>v_xP'x(fj."uʪAL&Pa(W @o;v꨻V̑@Ig*Vn)AV;9 e(>?g\[̾?θHW&eGdM"|3'۽hMmAMH%-d.>NǬi5HoJd! wq`&ySzN&#$X!b}#GCH&BeY( +Ԛln1HZ44gsKv f^xlTCpx Yc^T}. 74Z>޼HoA]4w9^!5wHX<_j; Bo/p^";s g C"hM7C- [(f5pT|Ӕ,5K0q#H7\wh+'ES Ƹ%*iNQ Sjus&GAbPq#sR"%.g3g:s! X$y.n.kg?HRJyY`NU(8fĀ&Bh|)k8:`U"u* vvDoJ%$m h sFn$=UO%?iQ2:[yC R3,7c9"͇x*~㝭Z=;G@s6!o;QU"~ wkI5LX} ]Z#hnv ٲ ?=!ݯ]C=XGstE.?5X>z|Luo=*n8*O`}ܞC˕3P188+ .Nќ(mj'\?TJqdzYO I:mm{Ĝڕ R >B7A{JVʜD{c16,fnX-I;Tjhh& - s%%eIM{sJ4BqyDhXa3]mYKؗ&_7XAoƈY=;r(V"*:N-OoÏ^"2P _:6O1{kvEBz.?ܷbb0,C_;}M 6DN*h;A2QN.ڎ柜^zNnDŽa'il5~pn!bMo@W) \;,2}MJz@QAjq< Sq,rost^fEB+3DN0Z9ߓ@ҡĝL;\`=j^FE=%l~g &SO$U'&Cn:*& uFu(aHFeupTfVr'+~}Wƽ-| g`Y5m7ޔ9SZe&? .$Fn[AʵZ[ q2wd1k FyF(ag*d|. ^Q˴ 2S Qխmi 3&YxIE=W̚ϺȐ]anON(Eu.Þ0L&~sX Cr7gV3D垶$xCWL+Zǡg2D(3!_KY[:ʾ>fsr5ZUM[TZ[d#;6v7^1w4Ѯ?s/y($['`IHqZsaYx3hH5JQ]ڿ.>QVGDngAdxM߅ݐl&WIS$HksXnUV*T )H) eMX]v^74a7kOP.@SwLX2 8 'M!J;"qC>!ϙgGEDYb4C/Z [!z_&0J\i=MՒ*z^ɤ@{tcJ.Ƅ93N}j^C~0(a lV|1xm/s]lvAcu̕ `u1 jj#m &8)] Ưŭ;RT'oRx9A\1XEa=`lUljE u+K{Pq lCY|HU:[& 4 !Dnu,#o9iEҞ~uG’P?FODe']5-Te_>D9ʝرsmKn;\8Rylcł2coͺ@K8 c9 dBqbC?ii6f9Gvgqʞ Wv;5Ycx·G9,n#թ{1mz3i*o)X{^_:Sν3tʉ5NjAbf^/978KkN?_P*ZΎWzڊumIw6nCvW,Pc [5k$,ذ'=>exJlܨrB~ ȃrĉ^y33j[.t4C8@/?$U7_7&s$,&9ֹerQa_CfC86yv JXH5a][4sԴŧkw؇% ]$8ir}j9v:?eW:Wx=~gcbvٔ 3 tQVZ&Xó &Dae*r#K9ԍdZu^1**VP-RH~ps993ohtCZ!_Eǹ& DZӛ}tXFۭi46楒̵p)RD#H$"YG+p+L/ mC cm8!/n?FQ :$iU (Sy *by&.dcMYG~yr =3BGC|vJ,=$M/e) MyY 9Zy6ՠ ҙwnhVЬQP]|23۝=ҽk<1T`hKFkxl{) bu`cܟIS}1xFkw{0̑A*ge?@&@Hbz Վ‹Da#ج4U;G{)lN|l UW#$9_o(LH]U|--YEk3V Ly7b[pJ3է@O%_uT9mmM^o ;|pLΙؒXpt*fO+M]2k23E?88VeFLBuI#+J<֛mzյ>y)IvKCB lxqA,e1C@=)0jԔ]ՏHv6Gtp1fPNE!,:gY3)]XTL _T C 0Rn4ZS}\2|J~|V0_Úl:럐NYm 8 $.06v:-i &0z_WcS?jSf;}uFh>t‡Y!^r3>83jN$h`'ːK7Aew=%$;2Z^:ZVɂ{4i+uVHvy{Cة;k]|* O7a :| %Bʃ`"RA@̅>;sKrf; kP( C&X{^9C s0BɔӨ%1?Ư(2pgDŽ P]?wUTXnr 8P͏&hJu~Wُhnc&W ߳[;F.(0ĭ+RM-"Ɂ|gb\R6&0017ލ@H?ox;&P<_X~ `J 0I_Rc*ƚ}4PH`X3]v !Ai :e-`QM"s q}wەfuV8Xin?8Pd%686pgt{kfo$yV I?y8Pj%?z[qmKS5MB f;v-$c1 Wmwpp^/Cʬ%cps "ORKn{[9[?CV6;p>¾)\C`zdvm;c*@G릍*O fu݅莠ȉD /%a}IT#sE;BVegGZNѤ3WsS@!VAHRZw\!0Sg!\Cvc i|UWG].v:R|nàVfL>E 5¯5ڇ_lO `[{LqױD %JwW?>KQd5ĥ/ѢorDZ\jM|{EVpk.bRjg+c,ElǠc ( B=I){#IOA#uC?%7to_ҕRZ]ZD3'5낗9P@}bD$ /jѸvLЅCN"$*%h!5wd0zO/.Ldo Q՞.'N-cF~ˏ:9lo`bGٸei.%ܛrVv\ۙRFy9v2x +@uх%U<'{ǰSj| 'x@E$_~FR/lzgR @5uH] kŤCZ"o3([vIZ[+L^-gfqR.DѲiHr\7]ODGha3;4jdk"sYNg:f ~\I'ar oHB@!%E.ge`g*c#X".4XnSrit)v@R\§' %Me֮B16O4{7]Ӣ]R!νITQ Q>-hxܥ~dk㿭}Z⭫VЈ>Lm#{, i|mtZ{Qtݣr}j%BYzZ[#"C7Lwbz]6=Dn+U4Ijz(/4Y:-՘{Y>)ַúW>p[ܸ>qopKm|IldDL>1"ARH4>bɱTg6A*cTKG*dMe ٬ ‡jV,rI?U|j U{`zZSIBM&)ՠpմ%oΜѕN4ZO7AxT@Wۺם;VH>|mq:hUʼC>b76Xة k cV*@`tnpŕ,M?ۃpa`UȘslr#D533E}\ ?Y=¬:Jy8CS25Y=eEl)+7?)7'X;R'Z|ò<^Da(@ۣ(&ա=ڢWzVTs o\n/:%a)9^4T M03fW'&fF |Cm7(F$yW+e$ΥeCtL/*ȝ: Z@vv۵{yXȼ}g[_Z{u[rx oƞݿFYDmcϊce4UYz ?GOݽVΑm@ aA4C9#9P3I%l?6_c;<(  5;ŶB9C"|/SdVÇ,mXv{nw9G{iTkШ_gI1_JC񠢄Hx=7FYSPc&tNvӈw^nBZ3goO+5Z)!.u/JO=5%H^in,+uNી Bٖ0!ӣ+1DO-zD'Ɲow!9e=O͡cAQЧtF*KY@L<:>L-ĻeѳߪﳻH)w ml 葑;ӱBKsm(&:Qa\p3`|[c߰y9gH`&/%@ڛPeJ ]l91y04m,Xĭ_*㎐>.϶7Q`v]`&εXܲ]Bx$9,1 faX4"&),&;Ylac'CB$(phF,#ɩ"db$h-)kZ7i'9Vd@˹/wJ =FfCG5y|/doc{Wy7T6v FAy\nar]_8T(-PG$ X2L Ud{=8y:<r{%y |nBvZ0֜ $L^NS.޾< kl _G_ _Ѝ)kA=~%oJ cZ}_r~?jGMS?3q;A ~udQ VDDfr))Xtp/#( _c]dîcqQznӛ; eZu#LGNWn Ճ^C @o7c垯!B>&f UԸt=@XEm 3&T18Ǔsn>a"IǺD%3"NV;.B2Z =#Gd)Zf'jpq%M1<\:ٝJ XOхOv9rGsRCwsrdtȃ<5{esm~S}9fԆCRo|K$Nl*vA$Oo``Ӈ_vZM>|Bw~8iܢ3N1tA_jxAdԁ*#),Om?'J1 H`u.}G4x>FtDw*D{2IJD8s)r*\?7524nQq/D0WԧbtX#e#hi.9Eȹ%AD@|>dr2¢$*7\5ֈAu$ƒ6A3,P=3|)%bIsQ % fRB5Ŋv挶٦&gB!l*IJd.oP>hIXӑ Bp\\6:UiE)SA@ϥ:$ngRwB=*' t2C{G.ϥ/餮e.!^BJ;0J癜ǫkvPeAnM𑜂~*ɹ3O {A5-ͷ\Kc1! UFco[ &ǩ{;_C= o$Ͷ8&݇~D%A1&uX+zkN橵P}Kz|]ӫKm ߍm*=5qhv{Y*L`_cxcX Y9ybW{inn~ea]x3B>83?NKk 8{heo K 򅶣Y>x( uo|Ϛ+U^-RI!fOYcU KY>ɚr^h߸*9VB=mS;ZDm~Tʶ v7rbڤU2;V-& #s R&l$ @,ܠm#6!#Y`Rs!E1c5(<"NG ݻNk/Y`7,jN2yԡI1EwW! b4y{WcPDە˸Կ /K>vrHVBֿ5]ﯾ̥d -LnZVt`l'kEAk9s>8-j&o;1r̙5ݎ,rnR]XqO?ڿ}ԾwW(eZ϶afURB;OlL8k#&Łk3j3>=e=s]0>fsa$J2MYᡙ#XMCh-r Jg CVH,*o1"/0gC]Kɵ&d PZ/L  S=l*u #8%^5⬇-.зy- m&]5E.>@#,~jmҺ|c1K[$B x2N?[4J#sq0vjVdswꑥ@ !<ފ?[Ȥke7}7(@mנ5$R፣K'tQ}*vwn߻n/{qmս\_7شܲ@T R.݁:|250aTS9:BV3~G*eF7GݶQ,M$ [X=s&^r+_},8%ΟmxMJQ~hn{ɕ$Z41G;uM`|3xـmI~uPЭr`SPxM/BzYS_#^DAqo 4Lu] ە\utM+IP $Ls*0EP~QflGy1g2f:S`|쩓BisrӼ}R=~󭳭{nS':.<ӏUFa*PP,@nQ&Eb؊]@w:,C?j :) w:0ŤsDΡ::k@&AXrs-q2n3f!'}pe qgo? 4fF"jM$dJ22ɔ}'QcWc7ӜG4lgC4|1g iw) .A V}9/7'ɧɕ(W*sd7iOm؅ArUZ+@s0%i/)f{sTʹ5Yivb?s#1+#ӹ殇;.9qŌD{Q<:t]j qj6'#R@j9WSQ/EYQ)b!T8;ͪ{HLЯ)`d}EċtR&FV?twH{MH!8r8B,e7?!!ĘZҼޱii*Qc=xIO-@mjK@2' K r  -H[_;h25$pNl${.mզVYRRӓyw"B;o+2r9r:G2UWHB-41,  P|$9i|XAq,el%la/ 75d{Qж*I6!` j`dr U7dg.c3w 9 N;[Jh7F" UkJj6>`k&:^¡ az>)̭_Tbkɹ% iG]`- ?[\jߟXRX2T ݏ^5(oJo/'{\ Z7;sZ,SmgڊA8CT%0VzҩBr;bVνT w-W! VޅQ8]\2}tlRv-{$)YVx2M >(;~a'-݆>1x 1p*S m3N452=D+rX2Bmܾ߯QWF̂RivgɬSg(K쇦 ߽vEϹTh%%|;+ ^9[ι ZL ɜZlrOzzW'4%^x6*2D{޻テ yi?I3<7B/4d$4k]OltVhk;ЊPZ]NOziRv%9|gwJ%PQ(7m.~),MLړɮI W 95wQ풕*`M5+`]i(@f~(.oq8uy>^n:IX@6/L*,Ǫ`yPʰKe-:a*`x!>:u?UpͯBf7٤ b3yP+RѠ HIy,QAz S!z{ r|HIGϵ[$wjj Z?}N`ns%G~lL }bZ8=+X_񵓛:@%6kR.Wg[(qyz Svb4"\A8޳N?]8_C 迳>pbT9^ *|,:W4oIE+ІtQ~{Z ˫3vA6FIzlPY 0*y^@lٛMx %,1,jbw1 ZVg՞w}-]d6:TƖ\ʬkx=ҳ,VgYpPm#ROHdashX_qefqkH-Wkf$7ݵ є4դ0GR`` o3q[m@:{B y r f;acdoEQ G+dr2PAP.Rh 9?{^ߝ[=^PvfͽQn}~N63H M7PwJBlWrcM"eOQ44omWE5Sb?p6Ἤ\E #I?a+B2^oOx8 >tbqN 1m1 -gKPC07$t0(դV)XeHWS2m]Dj9}pe+Z^yxn5ڈKB+s3P*6eٚ|Г(LQ2{=WgDh]Wk(=eFibJז@ _&VnT^ݺ<#saZm胹 ͕?9pZu:%b?}S Z/g芅ѽ`jQRfo6vt(!Mo9V!n( FNp+Ȝ2yuV/Y8lX`;uM e\I]͝3x֮FяfX9DS7c< $\:ԙ;Vuĩ9g"r֒ `ig%Z? E!/3Y5?JQR9sW%M9$A`>`aQdmSn'̹cs y"* }(JJBRHoSCK͂2d-N7NlD.`uziGe܇BBxo?TN.ӷj#}<@BmAgU,՘pq9Kw/B>Zi˼7gĉe2"r&D6=@ ^Ô *i5 js|Ӹ.ಽTP(D@G$?]BAe@ (.2YVG%!h}AFmNw w"0 ?Y̋jbqCfy%mMC`.kd WL_ H[`-җvV`4#&DR9\ɿa3osk7( +SG`elꝷ^lmbjW-9~t]vE~LTS@VY8d3!tw^6l%9Q$Is0G+|ͷG}Q%5}CyBf_ Ĥ"hNApܞ]6&]\'J0KPi۽iUܓhn}rdq>- |(hU}nޡۮpd xjl[δ\1Ix$뗞DxcPUd& 0vCo.: Uc a& }CLSX9;L 8]i=2_eSB զd܎yPŀFWuQ.&mVS|m_[E(˙so 7?f~EƯ酟\|P%P\ZJ&wu?j3erPݣm?01 K3[(!s&"p֞~]γf`{jtƴY/bhXDf%Dn3םd%bqv͕5GBUг]FBG6]VR(to&Li&BHr#_v?+AxG4%WK:U =f; eqxHOK9ENJժ~|, hKV P Β<'YnN 2)[Q~|5l a  "2JSC =Fx,IaM榤 p=Y\$Tul|֫pɟj&vq4q?~KAd͖>D$wSzjzAܩebF{7phL U={9kŠ;X@ec0o<+G-9ε;KS;!2@1OJo[i|DSD3 ŻS$q^(.UfͥߢXt!SQY_oN=;#7浫Y>~H[hdR(O.`lp_DAwT' |vaJcV<[fM` GviDHĹdw6^R*𝸙?xɊmeSx[&9x5}ٴbx d#^e>ŋ[)e )Ͳ̗? nɚH`=xd.9y-p.d7_M5^f/ܴrHޗah;6x!= L>x<ZG/o_+CqVYVEiU)EQ'WuPh"|~؀3vTښ+yI+9;)Skc걬 D u~K2:I%MM 1JSnBt,Y[FГa%Pi"hQmqll*!1 &m[ R$j|kxW)|"t>.LsCRJ f^ ɞ"F8a)+;|-:6i0Ci+/'vxظ|(" ۻk ZŌԽ|SR;A=mmt^*>jip1D޾AazXN#S nf&p#nn<\辋D}.-~tDxשEq/lOt`^5졓ŤL:i=AjG!O7Ď#L!3Csl!C0:POVR8ʐ)S$VC.  jm aᡂ2/Q[i}},XCvZѕAhkHJE?Ur2Y!ӯf4tp[dᇐ⵲H'z0[/^ZNKHcvl o|I~_5vVN2>VDwv>'PY;*V8GMmn iܔ&O("If\-Zz47xwtH ",EJMȃFaL<''DX7 ^ۄN0LV=t켐h1h>Q^R0Qy8@[~^eJ4}yQ,_"h̰s Oi'sOpXuxIlO6.!2+a62PWi*QhP:^`>(+Ů'O`{ꌘ3:^B6ь=$k;%B6>= v@\,\J1Kw:)qOmyG{_4Lif74/&wN~Oy$KZDޤsX[sH~goHz;!/~N#]HU7۷I$^c]$#BՀ,MZRBJcb{)   /Z G])f97iW baR{I93irշw/CZ49F 8]6XcN- ;k$&|6 ޅ%\#! /w2P9vԃ,mZHmBe+R a =hOeqU_t}ev;eR(6?X'yiDIU~@;rl<7i1Mjh;uXF ~_a >\j?ӒK} >ߣ$f鵋rٿi}DZN%g_n-WGǀauq/h_n32EHo$?d,>OHc+ّWGwɵ̪hb‚)19b(ѥ7@7**NӽxYiHv >8 iUL߷6h;R FԧPVvG6W~|ӷ6jđ)oɐ= BM 2YZ ΅aAtm>;U#bK<ʻ ʴwXOw$kt A_0\ڗ+PzpUfik6ҐqGk0JMMpIED|"gx4cڈ{(3a;lU@d[$4quʻBhpT,¤MztSEȵFw C;2q6JAzԔAfZtyz0sy<|e4&IMl:g{#w%g`]O-ϮextQ(v _ӂTFU} {_]o=Ey&OΛ(}-Ō7M% "|(vGb}?4EFWp}WEx㌭({GOxmmZ@o@?߭\{ty.PUs! ;TRsֶg'aOwI*Zlp\to$Ԣ=ӕ)(Ӄ$h9 hoM[Y,`vI W E'O=2ۑrG(S6aI0CQP$#r\lٰ)/h j MOpkvPpR(v~ $jZe@n]I8- 뮝PN!13f 9A%jYUlӯzWqA_Fy"X Y8|r5+whxaM*[G#ǰ4X:h+z&/w27 F&UDP5y oP5ϘY7qC8Ԗ}bgrNP,^X1t6#̖+R<;%bOJ*aú hs&EgvqToiv^Vw5Ny;a,$D*:ӓbl݈9Wϧ0,&#)~Tng d >9W0D`+- Uj&"ޱޓ-āKՂsXJqÖщB+vcn,a~Ƌ@;!P9y{QA)Yf2}ږhԋĐןDa-jhEKrInBnR-n!O9g*F`'x{ݹJt!C;HN[΋D*??ԑ/,R.;Շə)^H5*}K?(c|DqIkVu) D6 דӓ{&#r,gzf}@j].9 MɬLNNM/J9o]ʐgrcJRB?\}Zwބ y3f=;_iZDI_*@1H8 Fln['(\c: ^'DdOc/yMJtrrZB\]jRǐH^xY= SvC\@Vs厀1(LP~8y2j[0Â/46 6S}WFJ\aź*JBDB ,q1@ p2SC,ZcЈBy.@[~XVQ^1`.d O0'Z-Ok0_V$Ea몝r Z)xB6Qبv_%X˨m'nl)A/HD;VqT9OP;?faJ/'_0Rb̴\]^GBpM`]ٵ zUi#4ŚZKPrURz)4đkA_|n'Kr@W~4"-ʎhr0αwd.Go[K:lc+LQiB)Ғ'5|z?u&B-NlWCjYe>l$ LSSphf.PnEMmeHoœ!az@C-OvA/_FɄM@.H w]1@qP=Y*D4~V]l 3ͦ,߻ykG%w܅>'n / `%;-k6}kLڦK"IVE=ףŭ30/-Jsc:Зybqޞqa9߃ xfNO,BER3 $BHʵs(2):1<T䯋U忝ߝ]g{tgM)69>:s!b/DwƶY3sMSչE>*ϊlUa9ŵso\)= Um$:YK?]In;"~j?7XLUy@vc[EAr8w&s:`D4,(S)غ!^^W ZW-bݔ|P5v!01x q16e*rB_wxN x(2;ib"o+YH' $#81Dn$lpC[+ffQDHe䇸(3d7ܷzᖈCWs?N9=f\*YXh3P'>8{hj 560`d9U R7y{뢙ШqB}@GI'fs.{2&u]{ ^4Ъ2I(} u 4` 8?1TyB *Z >*R䨛L5rL+/xjlxt‹mxx9endJ1@7=:nQvoD 2Y].9ھ6i"ȺLl_鵬Y]n\M2 MxuVF2Aq¨c2hU&d[ܰ2Q8n(DZda5% Y{|JF6nΈWLcHp!t9DCPsBw㯌&?qZmWJpbG9:4/7XL_e*&c* ռN??v  Z9w?)?Ece?1,HA(_'c;ZN0D~*tGq]xWs3~CnG.$5ME˞=]w&'[n 7Tk}ռ>Vos6:7 oELX[VAuvX6er4sDn@7-ū/iVPUU߷/}ZSZBin!m0J<9gJ=q"fY"=]m2- b@Xi$i+oO̬u1ZBf 8㭾>]M:wtrœ*;ЎIhM?q6LT^zPX1*dobrQsz"xfojp?}QdV`ȁ <-ͨ "tC # NzR]|̉haZ?` GT`J.xi%@خ.RO.H,;$:cxj1$l^ĺQHg򂅸h)B"]H$F]LWPY+9%2+=7-}() 暬^&^L,^N@pwws.fcR_F-tiž5yōmlU |jE26JD-b|_op0¶Eg9 ?&iJ̶ ]caPK^CD ZA2`:INcUWLV%OoU+9`~:Vlj'U;;ɓ[n&iX_>H.,ѸTYJ =KzbU, 8o3[ u~1!D-ܞ֫9٭2@c~[X`a ]~Bې+Z\хHu:,)sɬ$h5{+gUeC#*A@Ehh,vi;M}CQ|¨NW'`qG[f. t{3Is|,V@VS `) pz X.l !>y.CILF ɏ]=؍@yֺ;h9&BR"*=D=2lȰty_R$%aA^Y+z{>%\oա\cf$"QEõU=5^Xumtע<bs|6zʴKo q= JDa#RQ);JvRi5+p c" 8nɳ)4.4:wet_g!:cT1VekZ~dHWדP_ޕ)w9ndG6]#^!RXP#E,@#v'=u#. 8r\dIgzW50IMJI:c1Ə'v6aZ:]yaKP'~ハk`Nͫ 2L-d%m@) U%rfRp>VyϦ{.nuF{lc(qru!L2of3!M72~׺L_$IQƉP;q09sW DMdl&,xgˍ&&Jv("tlXt7t&;?vݪRmX⡹tvSW%C_pvo=Ph-mK7Ll8_W rEݡ7t)HX?s Hi\4("|s7HLBuKP ts]S"v:0;K }C 3N9:2q<7TxE)X 3\lBpy/d{v_~4V ByXs:IAڿ̴"bO(B~ 1/[o&ٽ[C$Nѿ9qi^&KHOAFKi=;2/OMfOidylXt.0 ;Wܖ .s–@V޹2NWrb8j؜g≅N pL>H|NH߲i30%]tSwLtWK+]l@{q@&@uN ȡRq45Ow\C&˧{={pcrؗ`210Tg{3ڱ](~Xn2ޟgڒ%NdV[.8`9D)uiLv[NC@_2^o@HI8%[e˖t6VMn1c3]#x.8SX֠^0_C|z^|r#݃d6NEVoUUvႭf Rg &ZPHNtldRʟԐvt0ܩye!jpWF0Y ~$// "ki/o@\ZwTgE}PkPw IAWii:;k~b+[ @XF_Obm6!m2SLQhRo,oȻ3HR/Sh6)#%!X\TD^v!];=84ƁzEq%O@95 EfdOcwyhĴ8,vx5b*iH6 qp(|V`{x(񻁯SW.( = ϫUSϏ-=OrF+bZ1/Q:lkٖhu1{Xg\QǑXmCŤi(򼙣Ӷt.AU1[Òt9$]$Y Au7JWReeA,ϝbAbJC2ZʋHH,n6O/?.x *zDj|u*0WBXi+ F'pjRj6Ż\񳂰,40D ߅]pN&eHS`"Tn(x`C]( a"ybHXC طS :j=Z B G' )%;PG~ypcvS\'1x:-@нySQ[Lٟa{v> $HF[ T;Y z-9"#&&E6Z%-#x&Z'u$"1RTz ƩX8f fFw$J|a^p caUzn+"e;`z=` !qQaKlkD왭" է$pLNG4jmQ^|>{X~acN&"VFyІ$ռЇ7t4FqD OM>:xT -h5@G \rZl%)\)2pGL-LL >CJ4Z$O9.{Z4GK-.mE@EG1*W67"%*~gx<00`>knƈ{K˩|'%sY5(#CzjjAt2|ۑEW6ҴpTogZMߚ0C Jo*/T)~ CqḶ^z„+\:>'iix.o.ܴEMV^t\Zw,v`<~$6(̬΁V+=c#0%G󑦊sFc[n̾_8 'ڭ/Jۮ\47yI__ kF?w(A[)ethjI=M-|rpL8۷ 5h!2rr?EX\8g]Ʌ:JzD|xZ?H S LS>4JJGpM;*߾[n,Y˞Q0>RžMqTOr Lk"\HՋ/xXy2I:JL\67ƊwǍ- ?ꭅA_> ŲA؍m,(eUqVԀ| mV|rnyFW{@G *_Ԙ~N vcsȹǟ%y VzmS5zHF!&]NzB×b!}IlO Defb^5Oߝ2௰GM@鞶s4> '_:㖹P5L;TFz ĵDA[ !b$b9`1gƘr6e>PVod-3ܳ1 yV]t' b-?+]OO5C(a9ʵ'C;Vל/\4($ 5L:I@ljOɑWwwLkfv[o$:!l18E'\ -=Y/ۏ3W.t|U8 ;b [ld!q)u:8@= MJ3gF"'ha$L2"."s`> vH,MAy6+lD&(cdd( l aA"ygo]cHm {7#"&'257Y"~ } 98׍]Oy}v%\HoɱC>j\;"T!)lEHiWXݴ҂#z41+JWkSF}`Y0[ף՛=IL*Y΋^OC..}A oV`_#I(ݙCB*챘s˹Z]za0Eu*zP90<7{[r*_o!N*-]N<]~D '#u=@R]T8Ξꆸˎ? hPpL*$ߕ:m 0'XQ]c}@8T Dn # ` hBAXP{sdwokߗj+Sހ0Xj]CG߹σGy˞2M?4{ze#*ϋ_IDKh88[%cZ)'Gu aj2gAޗx_Y&N)U3!uV KѹCZ󩽢߿p,Y2AE&6B/:3,=%Yj>j|$#{:h˳ELEt62x]h*%[ĨMu3,>(Q')ZNG? zM 7F&g2tm;sl1)}*.(tf#io~Ĥ%=lQ9fz{t#P?Jcڟ^oո ]OrNECR.$r>sdc٧o(&G{xꒀF̴QRWXZ(ybL7JO\ƔQ]!p%VQhxQtN֓v[I;X՚deEފ>+4NLL 2ڽ(^Ng6nBacayO|=R\֏Kf䠛z\F qd l{;/|y_$CzRI\RfH$ #2jd',*6(L`x\eF c'NA wnK'Vډ6۞l5}ÚÔxhau E󢷗b8@FU伳z3VKP|w>kDĴ(m 'נb / rLCLΦЖrznqr"741KFJ}żgaL緎# Ĵ[l{q_9-;Wq_tnX*gg; 1EѤ"3 -.[:B3/x"н?#:A4;7ϲLG3gi~q4M|'iQ񍽉Y=)lCx,j:w[OFY|1@lD+&=̬ 5uq'pծRk3o+B`~']L<|ݵ]a Pg5(~:lz5*Ƹk4V nIoxskc̀t}t_ Xo / @&&2qO"!sӀ K y΄Efs/ǯȔu oV[]$X~DyASc8fI4Ų+B,\캇{VCEp9 {Z"oUk`+VNO?2r[ًiC,CIxҫH`A$G0mX!sh/ GnkȄ $V1Fc`.-_gċO^b@>xqM׿l%Xx_h䌻0ŲR?cxtQUwiBܷ~Ԭ"rd1o{Lq'vp!{MgǡS+U}AeݧTYnFJ0r8x}amY$I(0*oRLuRgIQ䮍}ϊϠO%ĕ;w8WC<]faD ]sX~c9E*Mǀ̈ްVQ಴aX G0Oc@+ӠZr[s^am!2{Dި FN#DĩRnzorYM`D2eTqAS~6G $r dZAwv%X-$ٕ4|k p!rB#z | ̬tFhT}gۯdz$>HB:8KbcסÌNOdЧɄ` Mo pkl~9' a O@Է ZOj6%X MjKH"TyO~bݹ8=08 V]og֥#\7" 2Ȱy/oIi7I!fC5k+U.+w]!nR36/!? 'pW ZzC?>qת 6X=yV\h3MvV sޏ9M?qwakI_ vOލl5NJ`+bi 6L.%8u:W2G {;J IKKQ.dN,+Nv)1t8Ki #&,qZ؞[?|/ԑ%; p䭣^@o`!ͬyB{Sjx,މho`]dd\] 8xN=2ھ+Ihꐎ*6شTP-<Gzq[TX9'TI fN|`@Q4+>& 7 WRL^v#꿣<˧:f% aňkj%az ׊sު{)}o =}eI;C,U;;@lpM/Q)$qX6qY9]ױ]AT-'\7ɵK"c{ _& T*!~% ;}6qD$|'g,hh?f <Ѐk黎YZ?lȖSٰl]FTݟt/MOQ>-%<|ebH wW,z24,95h2+xŭD }){?yN}L[Iav49H>l\Ea#'jJݶ饋P$q܉EVD?WuvڨVacD?˜C~ptrKK5odW-Q_+.j*dg+HrȚ#>pt N43vS_vU1M!Q*JY{I9VG#vɑ9Z[9;`FN4hf k3F $to?r$8e_Z_YVWf{Ӟi!^rE[]E7jYa$y'piUj;VΉ$^ DgqMɴ8PgTQ?uN[$Qty} +w`['Tl:Q8h ̜IIDAɜCp5=(tp:5i xL* }ҶsJ#@9 BTmat\J#֥&cce5&|Zsyu8[HlEKС:ffIaOiiCY7"ɻƌi% 20^H>;+AuXҞ*=aȟI [!~% 3O~;QoԘj &iC5o0y2m'/W1uT+#HI}{Ĭ/a*yG7Ea\g<"OݕjNqYcfP)lK|8c SY秴)mɢ>C ʄP]jnZH'F F58b ̀7sEmOfx)qSЇ(Z }3VKpkR<ZOG"WcUۅ8GX<&?$= ǦTS$3-kYXphz:I03`wY3L77[*4'IEkZ Oӌs)Wm^Z na߅q CfX64 ,nt~ΙJwB=R%zQ3zrw~I%+<9Ļ,8łİkTmK21X-ۡ&n@~XF5+J|*uVBfsXwTcfos|S e,ѷҎbPE%0L}|_k x V}GN*:itht3\]t/obgf<8pcx<ֻ(鰽̜E`qޠ+ ֔ JS.?$g<~B V`+%LPl)u兀hֲ>[L62nV !٨x׶+qCSI} { '@L'JQn%|ܰvDN9/-U> s|9 5&.sPqc,ϙĢV%cqYFpX02 :^?0ԯgI) @i3YQkL%B"3|j%9zPMN2O@ ۈ_fY_~{*[V_/lZRPIgRDw]ov/r(Amo DC[PBF*j'e?PHXj RU ;~ɸ V{h`VX0.,ʓޭT>Pz.A&}N{DwD /PvT]i.;QVY)#0iCS.ɜMp΁V?:܃$ٺ߰$SKF!,0hbͤ=|@9ҮMKHqOغxMQ]ɵVExwǷ,{Mlx U@xftfm0y`늨@K5z3&A.LC.=XU=e=H,kO$J/6݄S5&Dٟ]]y5bA-b.^'cG9/%SoW Q{A 4 duA9JqXSnD]-z\6q'靷vJw gge+񯩜c -MjC9Cߋ;=(HCr3ލ]_%Kf^~r.@ ( 3<#awwpN{ uR%1g3 \dG+rGeZ}"U+:Q{䧻q15K1ە0,^CpI~">J)M`:iIVf*#CCt@&!pg ȸb2ߵܷǢcej_:r\sCEYkqI'&0b;2& j餍r!Bwcҋn#"o\J(PX[)vꩥ݇ZcRl7I ?HOBU+y8)HPl4|,kju+G098ڌN¬ƥ i_J%$}6[*uqWijtvd~(I pY*q-~dڞs0_=Lw0k_롑Crd45ڴ &a{##'@ rxdH?ʹT\ѭoՕQ#),(?ەo6clYOdWsUIt)bƙ!?O Oojq̀[m/]:!ñi Qգ;f_-0syMnC{͢l+HdŬ-%ghN^޴^b\"f+j{tisR m z厶e)jxhh:2XPotbȸ^ Ҟf}wEeN &e.hfc;j]daTT7'a5.ͦK7Mѥw)?ԖT9H.w 'qflpL7o N+c Sv28ڕY>ICktzKtӸ]nUWx}j9S jKr@Ǔp/d#]h=WBi҉L8IB)W.!Gʼ lbTvkFÕ 9lan9m}éuV>l=e@ /|bG TZ2VsE7k{9^Q[}AviUsk:ZQdV>6s.qaVxmZ*F4c]PmA-qpK="FpLh)fB×= /ނ&bn@I \. g# r_5zߣ,v1S#!ݡFvEǾ ٣_o' -$z5#>z߬vbWGaX4$Rr2e8ۺ)+w~ükZ?-;rgZEHU^5;b9+v-L-m)EQ rZ/cRZUlZ0+c"#NLvUb?DxMcggG}=/0șA7UR8DI*}. o뺳h7O9 l+F&6"a#O4!r|7\ԧמq#t& ]r iˢ»kݹcż=nhx *? J߿3v5ϯb.B&1eHdю"DAB;Y!E-*M3G8k|[:Jsn-=x Y~E_z27iV^bB[Ě:f!|Z8ohkKeZxsߙkN}5Jy)G& :X9]t0Eo I5¿Ҥ:PIIf{"YZF%uzw{q?PK2NvϜI(h :lPH##ƥ)7tPt*/~VÊةfq E%4\c4Ee B~hEFqAF\0H < %- K%bmU8:$1vϊZCguD 8Q}xf_ƘipWэ [O%"@\&SPOp`i1(N˯%dV)[b FPK n+ 9oTdcaq*w f'i@}\hzЛoE wA810v\t˭f#W?b,Kƥ&Y]SU?-/#!7-a8(Icc@Dխ7łNw##RМL;d@].F#;-oO<4(aE*k`}C!_.|5l%:p+Ip*Þ@.nrv'4 57N]¸Ue#Wba.|7/d&AAh䱮"MEj:E7~|Bњ-ÞӃXk%ې=b]7߾e%di&g;M(@d`WaR ;ӿݏYW(Ca\DԂ!Ԛc>r-,0D+"6PDm0=MfaI<'q7V}IszEg`rVp8+.LFS{H24O}2 9T3.ŧ@H"pB*A;Wq`n\,ADYJWĢ%r{?VU>mr0Eu]ɱ jjsD/1T˹pE}W )M؟RE&'_WImE;q}t)ڜwA"=Q<7 =&oe xuأxKek g1\@-o>?pHA0B?Wޑ!_4{CZZX7 6ս7i&PEw:+|QD5n鲂њayGl0W}nԚ%x53w`&MB#v ಡ4q^td~\Z|'sJ2:*=FevsOjˏEH1֙ Lα:כjCbrANr(gHP_&<:LvI(1۽.FDFӵ qZ3gĬg ć,Z?E#X+AUD.¿ ) زGzWVS3: #p+9E<MՋVhBIߩ\]siPd\:[~sDŒ9nZ !2:"C-/lB5/ HäK}!yjNow[5:oqd=Z:݈;} ?$=ˆef2h+kA23V?,;ͧ)ڊb ȸ9) ˥_rIPCDsD sWq[ Ij ăMRޗzF7ڷ:;1<&_eTaH'Dv7!8ZI+1s>Crư} UL/LXҧ:- \w9ÝLg}r7]х"=!=-v|s⓴RBtc ֤U>Vh'cxb dT$QSrdLyz\{)+9;8'CZ#s'yFgI+g۔A`]eKUlT!("!TG#5eE Ww*ǞV(flV|ݘf0JȳrD FeC.)$IR/1Z P9iwLl袊I3#GJ~x(d͵Aõz+rȖ9gI&Ai(n/^]{[g8t!+m1G4)hu@Ky`9mb1=R3K`oZRGy4 RajxSt<7chlq"UE7d! 9 M!Y &Jm"5B%?A-M 3Gk9߬~ `DXP4s%>*uY-OSʑ "0CRp{Ow{,OIe& Ǻ@pUe?ɼ=}d5J?? `73( !=5b)FvxW89:43Fq`8bŋ[NGm)e% n . f <}+ 4VJycUUmbdK@)'Sc,鼇Cogkɵ),rP_21&F4sڽ7j1J8elrPdxpVRM0==V)ceo,Ӱeܮ;,-Ka1mlQ@}+~- Brdؙd=,rPiQ BiS焴n_@G`@͊8{P y-'wb sZ]^7L"O *l 9p2[ z l#J;̢]+t^QPu%r 70gdoυ0}L&ʨaJӀ7="݄0,ߔ7]lpD;u6O.,G ɫM`A2B"d&+@w}-&E<|?f:NV/VWO灿p=  $A S]-$(S!#5W2(b몕QG+ WM{+b1}+{l Mp0{2gv>V䢾X"/dzx([<K-Sn~cK0ΛNoC!F29ƃsG]6\` B]a6'zu/+`ZO [ǖ )oV3X "NZp}໋m>D`Vy 6|̃.Kͩ5 {MvCwjprDLNP|(ψ_)loA&#x*}؊>,hl2oû"zCG dP͸9:v뽾d. %HPv bQc;8Ix/E~atL.ӣ|n,,|lfyQ5B8)^+I3+'ͼajƄk v Iˎ F* Ud >v{bh^bh)Ryԑ+R_^!>e_H@|g'ëLCִ2-|S(?эJ2e/>$};nAV+&jI&$Hf}&ڷD >78`P-)-`B\בfGwTS0q[":U6 G$KCC|2$ >k5ErrmNm?ǷW֊[h{ GQq p3QaLڎ*7{56Y5b7%rT s Y @ؕsʝP@p:oossFHHI(+&7C8Nq+,Iنgx)?2:;v^!ȵ^( CPl"ޕaEuBUȑ@M_mwTtH ).5f:5F6\b9-9䪙Uaq7.'D2pԅD dB;h(ץǜEb]Y8ۛn9ƕA[U!QjVLdvPX[;bDNe9I`kniKM#-KlioeDxhM+kII(ƒ5{3пHHÍ7qBA5AUEy=!jL7^,oz>kN rSI=4O-. )/O[N߂N(/Qo|: x>e Z:!O5sl ǠFi%GIjm /r!^Ng+@(c~?cE< +/sr빑Pn'~SAF&XdZnϢA ?!7F.aAgi=g X.tOU6+ ۄx)SeTz.PT9 %>}IvUG^r &XfǨGv5#qRm %>y`'ĿE^۝d)˯Ss_WU+MeHT;Pґ$8"96HJNR)p]uYIPV_|^IXcBR(B)sxo 2vX-3j 4Csjߴ GUȷ"{U;Q:RWK ?HR Ea؎{$ dҥ2Ul*0RcŏQ(aPDsdqU58RgyZ`݇ȞĔ([lFbIϐToBu2O-iXr u G ִ $oʂtҚܸIUpGWg+] 5 G9(+-E'#ma R'x˧c hP|"ĺE>/ͱ;{ Msͭl*vK"bԝ',~ 1E4YϪEk[s4obfe8yd-!ڨ[o:fX*NU7ʣ6J65uEʏݭ뛑xhSG1 -ۈߏ2W @ _'>db҇t)눿LWLS~c Puw6a,4 0 upMΙn}qb 79߯xX*>$1Fb X'D{Uis+$#{4)^}zk}z:4n-"BlHY՞0ixgVÝgHU+g0&'[4'\c?-2[[tFCo;,pv'~BmpyeX޳yR5j ypJt2Ε,|4 3# z{tA|ǐWsӷO/$cЌHEEFG)CT?nrP>G;ŝڊT@"د}G `C@G>uz X)A)=e#)9+OL8eЪ6+rc %5h 3b=17[BGt|_Zlăq/A8Èo%a:C>iɃa~Xk ŋ19\JdayQ"Hr]$Ƙw Xc‰22R/Grsy?.p늋s#E0Cѳ\N6ܬ?!;]CS)5OEQ.iO}~FOsܞʱC,G`EOy6[O94aBxu%Ó&.6?qx߅q4X zBc0.9Hv% M0k- }kP~~)$^vBw.1_4O3,gaԬI,됾aJz[RE7y>OQ~*ZG/*yS*BnT:\'" uK|bŘ߻`~=认kd QJe)5lՠ.vD*$4w[MY`W@pVGXn ^-J#Iq&kߤ$6D!4FbRyܭJ)j92,5b.˿ni Oj ҳ`d3O|˸4&yǁKllM)[ s~P#:cfʣ*`4sh]+A8Q -)9'*86j!npK4TP( {۲BI3YA2ߖ4˂|]漁uQ'+L0h#v6g,ϛp~G@b+bԣ3Q=bbFȪ&\/I%z5$m@{NB4F'\GgCkȎ=A룜[_浿,jdck9z72W܋eCq8u`^!-t8EddVh%3/@ʽb ARZfFj3 20ݑK.]ܟzK·9r `=3P vH7?:<|5@G*UпQ7|\DyAdv@WMt40*٠'}A iEdX\S ׽<]3 ]u; wz)eގC6]W";1e@2z#V[iYgXtS:e2)wZ#+<S| PX4[%kC,Ь n,3{kZka1LΏ\ygԌnTo}zYNE*G. oKV uzo z<[!.h=$H=z$P6Suo'ɄĺcӣEҬ6WjB2oq4%?|ls(Eߕ#VsTk> w5{uY{'ʊPOq I5,z|FYhje[&DS s)AŲyѼjDmcb .&CH;7T.H^=!+:;+[fZjqBj4AC )uG'K :P%[LYC'وnLHn `b  5hpk`6݋TG~2Nx Uqzt q :FˠiΚ/ }~1Ouxj/`M4L0> ![[P5ѿ{ - b.o(m͊ <<^Վ,'`8Pήr1Y'% U?BP8GDkFxFa.Wm,7 X+B)lYb55!Dt[ډl/Xn28dwEmWq;C5!LJa6 HdyKL#KڸL4l#M(DTUuu͘5ur ba`a?j@`G4IL $Ze,@U[H}9X|0J: ϖwk>꠵^㄀p> s5#|F8|(0=А o4tD-^Q!Uf#:>5={j<_B:& W4':fU貢w_ƊY0UC@ e>%ia\/j.sj.pcp$a‹ #`70BMsÐW:h*nђ.1y#)~hoE̿a8 β5JK0ߓ3B>W)T<RyFZr=W/8R9%CI6~[&d&7IMCq.}i1i`i޿;zY=C&c|}?c@diB[HFIa(Y8!+ɟH. Đ2B$jxY$ ӉJ5{iAT#ffyu5b$X&||Ji酃SoVIXV)?2 hTfFA59m!οJpŸ.фLڎf/XMO5Qr(afP]o- }$>Z qˊw.ω1Ò.TY*Й %EhyP'\G, O"8rE.J d1@_86>_,T}TmI7σqIXG+L>QH|B%b>)01PxLފ:St]0w_`7>\G7"HHIJ)Ms@GlAyB"JQ_voܓO7YlVEյgL0tCWů eα}n`S%P"JҜ]9O*{0"sj\6[ uϘpi,,r?my>zRQf2.B f-d*MyÙ'Wapy'NYCTl"*{|A)/hOxY4wKZV ]u%d_ЇbG &LoeI2Dk̝Sc̛}ᒽ1bBl⇤mkL`9cשU"HU'9H©3q@&kr#`z ? Z_شip^ݮ~q1-6j4aPuEc;ajEEl*c,ƺp 'م݊ЄF7.@8w8ZQCbS]|qYdK? Wo+M uD%B!ܻʼwC/o٬>]K#$EPܭL㊃kQ+ W azt8'p9{?U̦yBzy,/*gE +Qw`iɒQb|N7a$~p,w`Je*` :Y?VUFsk~6(œ#-8{J2鏲пmޟ:W>IIU> IWKח4:z'JQc5ْs=̆79^ u 2 dE@5Qt0A;qwggM;ݴ[p&>ΜCFPAߤ+Q5tMZsڼ2yꤠ3 qFܢMQ-%~qq0fzV"Ri+׵|QsAB--O7W#&g؎ٌ}Q,:CsЮ Rɬ]z|MkPpGl(KRIe^ƭ2]42t OF}E9t=~!kޮXסaV -e P}g&hY;D榒AF- _/YצRƙYIfc UN]H ߀_4YW%VhU2|ϢGas[jqO`_@/ #Acqз!GZ(r3S[ufro0k^aȟrQA\Rnm4g.<",o0M%`\~v<ΠN'Lԡ3x][I.0]of/^S~SxEJP岹'dkexxnf," \mv[ernw_ 05G+ @+"`6Ȑ2fy`o؀/mK`h9wnçf$6@6[^&|Z "B,SY;kin/*^Xi#νُLvEfW>6 8VQHh r\ٙ΄Wc*(->NfIZ,]qZE)-V G?_w-7@4r[ZA($p75׺k|_p s&@EKB\zEey0=&PinDLh`!.,91waGW'㥈1~OwTv<2mN\w9FzJ,1AYXhYRrA*"s:(TwO4%D,Ҧ)eJ,ln7M[^!*\N2;?Zq( ʌk|IݍHH|ǝNŜH/cEX4E5CXGchK,sO6STd.g٦N+}gNB!tU1AEz|Рu_V ;*o}AoroDṗ ZS9+/3Q ;8?L5?\N(X>l|R-Q[G,_@{ݞMJixKUf7jx~A1A/'4S, ?Ns-WEngt1$^F/J2*WXp^ 쥅J&ϬAZ65؎u*?ݿj~,c^jMHxIg ,\>,/%[LpNhdE>D *]ϳr?֩WY|~̜h'B^ R񆉿E˧ƓU,#-N>#;5ӱrrq$+;Wܬ?ƍ5mjvP(\"tNe%<ɆiR&כh42ifTBcF#sxGlqcZ6D=KWmo-z$  sjwiҨ )6҆柮܏rr55;d2ιzkw,Xtw%l߁+pEB(6)"[; kX d>֋ @q[d}"dU}0 [ӗX1+d[0wrLE6(<$d ~/5ѓG0b@L ]LִbmfL, i$Ql+ ?d& R ~$najte%ͿOU86(r@hdE8owhKUQ0iV y; ]"LFt50[;V52r<2`5](]Qʲێ5 I{D,Hn7)iZw Q{/+mCGsڬ:1rv@#Ef5xb/|.ЀH5֫!)A/ɇ\ٜ~gz0+8Ol3My!ʩEu-'ёxyoXV4 f @c 8cNՃUJP \:"n>yG+_+vlU:C`osCJJ(-޺ õ=B?)\k]"q˩E'gޏnxu[e>nșur&%!~[q+лCY'BJ5,Hp1 {EbʄBBl\f@7W ;F p$s,˛<kpZ59 9KZ.E zg72Z[C|rjb\^ץ]j\jE]g{gϨFTnw+xYCL? YL~V5"}y۱vUdC+(_G~:Z_J,U6k5.E~6#l'4M1o# <.'}DQ'3eڰ5׆dw)r җ0כU Y檠 NN(OT7%lAÃU"̜`؏eb-[9yTjբ3PMsi8Dw`k_ŌgE}I|6沎ާ"9{0b|9'&OeIr?'Qoi}0$ mq+#: *2/GVh ]̣jm6yu}X/S=Zz 9+&K[h!, a:#3 8WȞXZk`Q̵נPZE~VswХ6Ic> Rad=${%S#T,huu|[AYZvCOcʺf$Tifkc1TGoYa4ۑ:Ip@#1ؚU#(gR|X^gqF-L z=\ZFL)-9, 7HOp9es"mzryr>wfW#MrȢb]υj:Ԑtzۦ.[23TNZrU%kMv(}m=4cMU#^m!Vp9_Lh}F~eq|hj< `,Bq6-w2B9߶NemRtg^E&J&H(-_#)2) asnX9X{APUa @C ٺc@:x m|`ʘVXGt~v/g>NFڮ)8 jsy"F~m,wĔ(z@).Z q nmI }lDt@q I%zKgCqn[&M~;t3?50oDʍaPWB2e6PIKS1%[4^ 0KP]bf~^qDcE6Î!o㌁OY5jURs.$Ɓ%PQ[ق$" 6SA7ma#}$b;@9l[Ԧ&E m n8"t(l,&oyv 08:̄ХZ£%PbԳvə);XqN.otsN#2*)!v @u2MXwb*~a&m-2.cFKXMǮs֖H_M)قbY8P mo3ٛ׹/J&NCG^9+hRi*یޱOXO- st#NP 8Ӣ/_&YZI g1La QNW+m:fx+6̡FXp8:c8U2D/׋(T []+1NMlK.3T\yS~#1};"@Bnrz5R~G 'JSyϿk`s'C3gi*|1iJQTy14i%zMUVS4tq5 G&TYݕqYTޫi>!H{" |$*[1Ad-5~t^mnE?Ż'ҷa.J4@ArTVE XEPږ9pIʹ9ɏ\nJϙEfʔ9Mi8*./ `',>9!r%SmXMmۧ8xy*bApuOüOfqeK+oR3t N c4Ik^MkpպlǘR?$qH&tU J^SjIl,iU\畧fvMA)9UJ? b^2q`&t*^)HCvGo FØ*rȑq@s"h.rlIj*nkUİѪOclqʺjEНgFKP>*2瘁|~W\1HS`zI 08$nSΑ>f56۠XL"?޶ϻM#x>bOڽ&!=NW8VkY2]qQğ\#EN]\Upӛ]Pay#1Lg͆fxK\&^Y_y-ebZ]RQy"Ze[Z離eI&G -/)gs<[9mXe2>7?4?*}GtN7t^+t6סh:[MXbbƣhQ>&wn#⑳]B`)iz LL"!'Hw 륝١A""egkll``p.s]^@ ڭyeE`ܘS[1..~ukZ=6x< WD_X;N$96g{VG?Seadz_dS,0|}*:⛨F&GC)M&編 -[Ҩd.QдlMuF߸W ++$?kkؠ?eԳXBiu$_g<\THǃXkF^<07`Ֆ_=)'BCGj"݌4  Qٰ| ICT " RDpX+~1G߶wԿx>سwj;|b3-Lс\#[Q@~d7Qdh/YK7YeqJE;ςjUT"|;R4gHZT*V9~dfg(}3оm;ηoãbݳE*qqA3/U-'ҌmoR#ʇ6ɲ3{ /*x9|w. \9<;]["2Ry7;~7#|ov̩ 7p$d6M=sMCz\~ACh^ɫ+.0ϴ&/62~R P`+~sf:Fv} qWAv)RJ{r?iU/zo67$%@,e"}XL'%l8}Q 6L1;lL |"zgEAӺi_f"G "Fcxo s>zjT9X]r|RQpoz;zf, ]JZVFL+A 袥zi&3"Rmz'X; zߩ}pZ]1eQ*5^jUT"Ό.[cfv+(&A9U]ELc}S'̡ ۮ"{_Q4ݺصDS֎VGcl^iNBۗn+14d|}!: J0^sWIӅEtaʍ')'zܸ=ƃ^t4 NJLbc s5ݚ$vL]&)] gyr>GMp$m:"Cg(X\b,wFd 8@\ןr'88<>,fJVhZum)O Bx"{]$Y DÐ`skP#Bh\\~mjcbF|: 8.A~geD)bB|$P﫱z\GFIS[l)KǴ'st!yqPatO4wQ8;(79CO.ԷY~>wZ&f92XHKl =l3p6F vtHw,GR} 6j +me 1o](z *IrP1r0w8/NʰxWA%joQXcr!=9ߴ٫DUѳýT:N?՜1/pk<[nsÚ7?t #vCƠc"vSX.?p-LLirp->56C RKT:[~Z1 RL@*惧ьsgYư ^Tg(I=8sddzG[h6 CS==&a=ƭvŢW0JS@ =y&z fRWPEB#G oIȧ=^6aҍR6d$*S ގ'ٜ8YxmOE8 IYRV6ʇ8bÑ?"k @WciƤz`eGKy!4=CTNu=2IA=XVFS[ vFIabnbU'񏝨8l丒c.ΟwƦEp>96Ȇ@"X'(w|iߛ9VqH6"w[=0jx%r@NZG=:Rʥ\Ռ~; _;J\.o9Af<Ks' &R40Gtj,͍ &zXChc?&F(Аnyp̺0=desqF6ɫ [|'Yڲ(󞢅$|x7]2e&4#~ x]F7HU~UFC?0Wtu o=wL()S}y. Ň[ ղRm9\Ŝ=Wͦ;R΀pO 5 qT"(yrL nbRW1ڊ|zg}]O?`_=ToVO&"ol%]44DvVa0R4/0iU=tCh|-j: 9<`jQ$t*FjCۏ1`?algL$Y 5a߉\` ǜ 00>Bd+B 1v-T D4;7GUH޽AH,M~ M$vn!~+ǂ N\RqTrU͒SkR񙒬vI5V6C x"5\ 9֩]*b\Z# fN^ Ȕ5Hp!A@0Я- kTX.Xqjt*py*AC#+9 ž2n:'X cD#l~}KA_5-]r'`)ĩjeQB7\Qs *xh{qQ`d !>A牑jb [XXdoF(91'{IJy7@Z3SPÆW?U'@wbIt!fWQUMȒOzYyR f¸8K{v.QwA7}]!m*!pVlnaS|+dA˥Hy|Y|#WLJyt& ;$Ղr`Pa-9Un9çf)!y 9 EMY"hGOs,WAͅVs u= \˴{:B͐uSˍ>kjo-fQ@*؂F̩V;[ Q>q#d^-sx/}j M`{ᠾr f8hs[S=J"z 8˓6xumGNRl:wT;w6ׯJ 5mQ_-MLpStN]6%c  ~:MZ,$Wxz¶I\ܷ7ߙԩÓ"~g{ٺ$ǑkwucJvrp|y`h BI9iZ_&xہE#r$ б{AFK9<N|@s+:TîrzXɀ%S2B0oH c 6 s.q8{{>J^jSOmBa0b7X<,)%NK;LwXD14{rkTo[TQW"cQ1w"$)즟Hqqt=V\(]$ۀ2'{Jp_Er^u  ӗ OBv&N7@K͋UbH%1McͣG]%eV5h;b 5 @޸YiڈkbC#$6SE&Br n%yM@/N #~ 3<+:uL"ӛVee Vcv8INqCMKMDQ Q$69si;"93VU  # g#%x[$ܾ ˠPC가,(y1X7\JPbEyÇr"{OArAT]9R> 妁O>>QT}nKjP֬s,QG F!t2Lxe6'aX=#15DFE¯uçbs ܳfPqF0p} h'ق@<,:`4C)X'K| ӰHemo{[ 4+^cKDwU!QY6EVr) 4$UӴJd9'@۾)Q~\&0꿱ϼzS{q,ߒ2 T8 eMqLw4Ċ5']_H]N)Lv-Mm*[}4^u`.8QAS}ޛ;m`͸|A<9RF=T#_D%- jMW$}zaף4ZACVz:so$ĉM'{.a'ig fdAn멲Tjķn$vq_(.]YH-)?@@]ŖXקH-=)hEV,G#% \GUHuKjR4 +b+ _[lm\'@;/P oYmb N.\tHd 3 Cqi&5n/9޴n<&m2Q0wkAzmH^bM7&{vsb!#ɉLSf~xQcRq 7v ߊb:fA} (-@ϭac|du~ך8h"%3gK&r\ϊ\!87(,`:'5os/yxXZ%9o~ldc9(SvWtqmU.FQ잽<?TrN{Vj!-s_uسfdðJ/7>qx,!U]cl%$FFjdtwt/F8jI5I#.LWx He !z9 g__\"rsuP|vɢ=l6I#: ,[ּZǦ^ z Lᥪ)eT2_WO7[z!p?͝Â\rBx{X1nal[ovEJd P 疰JP&PI:B(p (~i6͵U{Ayp83B?96zy@1EPN8BOJQĊ5j[XzK_C}n&lRUǫ׭wNQ>@T" ]|T\(MG}$b$tv͎6 `> 0aC_ ԙoM>GƝxܤ&kJL'm\zSٙwMNZ6\Z) !VUz{ӃUCam 5WҊMeL ', YZ