fwupd-lang-1.5.8-150300.3.5.1 >  A bp9|eޭ:Jƺhۢф2m,ߪ U[s$>Eքsua+F5N*3d%lJ0fl3(,p<3?3d   ?pt|  $,  $        R t    ( 8 R9R:RG*pH*I+hX+Y+\+],(^-?b1jc2d2e2f2l2u2v3,30343:3<3@3F3Cfwupd-lang1.5.8150300.3.5.1Translations for package fwupdProvides translations for the "fwupd" package.bsheep01 JSUSE Linux Enterprise 15SUSE LLC GPL-2.0-or-later AND LGPL-2.1-or-laterhttps://www.suse.com/System/Localizationhttps://fwupd.org/linuxnoarchĔBV<G4V v 3|_x\])x3`0]*):ꁤbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb56408650dab72c80c21963c6c3992568ec44c8c4d83c796e1dcc3ee9ad3027d5233d64b972becfb427857807e560c4a81586ff05808c3333efb2631911fe7f8cc29d12a568beaeb927402ae2397b914d1ab86febc3e67cdafed2ab4ce3bda390d2d76e4e6615a403ae7007bf05b2ef6fa6dedaae125e2cc180184ef9c5b61219e916dd9303869bb34ac9125635e71e18d60b0c97e8a8304c4b9063dff1e6c7359bb1ccc929ffbdac746ef0067db35786448810f5204d49507b33486cb81d99bc5e8e34d1b5cbb5c60266437bef0fc21c2b43f2ccf6350bd2b8fb83a051e66ec9f1147c50e0ba6cb99f798817c2511a2fe8458d3e656ccb5b3c7e67c678bf95fd5f4284485374792c4b2644dcc0e732b7207039f17b69141c3e9faf7139d2c837d793059eab6d3c5bae9bdc9032d23163c334adb89041a79e6717e101e3761df436140e47c93498595b665a24ec7299c0343a48b005dab19ea75e10469bd0df6054b28441e0cf99578d0ce4805ad1f973f5236e8e00ab225565d79dd5136f42a4b642118c5ba09b37ced9d03ea23776b8695b701a8840e9059a8046997cac52faa944b621b26b097056f8f44bdbd5f590bc2e959d169a2dac798305c7e9f690284c17516b1d4564e97ecb53a8d796145b45c5057742a6d59c754a1d94f595c030600a5ac2247469e5b41e60469a9374aa4dd931772082cd7ae034b20a020c8e27fdb149d2031f20255309addceddd50048f8f6ee73fa74d75526a0827c038d4f30548ba42f6adf5fed0118a448647ac64d484591219ddcac905b199d461e46f9ab7de226d3075cee6379ca18227ac6617b65af219d54e2b06c0be13a8875e3ba3d3d94b240bd97cd2067ef3960e3104cb17d7f95e62259dfca4649c085ecaa362a2862d57a9a409bcd855049a1085519ceeda4f69bcb73618ee76c18922474f1c36a01298f3e510fb2bb80211f521b3b4c6c9a6ea199fa79edd0f72148c4eaae13a7c51ae6e979e01eea54bfa7633b3706b99c661d104ef06fdbeb32b1bf0def3984cab0bb26a346ba00dbcf7df3f664a0baaf3fac77adac42fed4c6345f7ee9f0f8cd1d6cc2d6de123cf82e854e219ed3c79f94484e2c1d56429acfa37146341da82bef6e622b0cbb6eb9ddf093a7e2d000e1133a6ab3ada408b8087ca86b5483442c30d43c25534b2f015cd0742c3cac2865c2651f7a78313ff80b4e39f6ffe71d922b39266c5513a94e62de875b9ad2a93ccce56085d93efeb6fde7abc82cfbac7ab8100d0a572fd4071718aaa8de2670619a5bd9bb7e05f1114aa0d2d265d8ada298e07400fa279c4088d5c3537fcaba73dc05ba413d8e1a2a240c99a7c0dcbc9a2835ab335e5c608cfa71ef19dcfcb3aa760766f7ccebac7928978f31bbarootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootfwupd-1.5.8-150300.3.5.1.src.rpmfwupd-langfwupd-lang-all    fwupdrpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)1.5.83.0.4-14.6.0-14.0-15.2-14.14.3aZ@`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.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 (e.g. NVMe-over-Fabrics) when probing. (bsc#1193921)- 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. 1.5.8-150300.3.5.11.5.8 fwupd.mofwupd.mofwupd.mofwupd.mofwupd.mofwupd.mofwupd.mofwupd.mofwupd.mofwupd.mofwupd.mofwupd.mofwupd.mofwupd.mofwupd.mofwupd.mofwupd.mofwupd.mofwupd.mofwupd.mofwupd.mofwupd.mofwupd.mofwupd.mofwupd.mofwupd.mofwupd.mofwupd.mofwupd.mofwupd.mofwupd.mo/usr/share/locale/ast/LC_MESSAGES//usr/share/locale/ca/LC_MESSAGES//usr/share/locale/cs/LC_MESSAGES//usr/share/locale/da/LC_MESSAGES//usr/share/locale/de/LC_MESSAGES//usr/share/locale/en_GB/LC_MESSAGES//usr/share/locale/eo/LC_MESSAGES//usr/share/locale/eu/LC_MESSAGES//usr/share/locale/fi/LC_MESSAGES//usr/share/locale/fr/LC_MESSAGES//usr/share/locale/gl/LC_MESSAGES//usr/share/locale/he/LC_MESSAGES//usr/share/locale/hi/LC_MESSAGES//usr/share/locale/hr/LC_MESSAGES//usr/share/locale/hu/LC_MESSAGES//usr/share/locale/id/LC_MESSAGES//usr/share/locale/it/LC_MESSAGES//usr/share/locale/kk/LC_MESSAGES//usr/share/locale/ko/LC_MESSAGES//usr/share/locale/lt/LC_MESSAGES//usr/share/locale/nl/LC_MESSAGES//usr/share/locale/pl/LC_MESSAGES//usr/share/locale/pt_BR/LC_MESSAGES//usr/share/locale/ru/LC_MESSAGES//usr/share/locale/sk/LC_MESSAGES//usr/share/locale/sr/LC_MESSAGES//usr/share/locale/sv/LC_MESSAGES//usr/share/locale/tr/LC_MESSAGES//usr/share/locale/uk/LC_MESSAGES//usr/share/locale/zh_CN/LC_MESSAGES//usr/share/locale/zh_TW/LC_MESSAGES/-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:Maintenance:24641/SUSE_SLE-15-SP3_Update/0e9319e520ef939ad798c08e5b308527-fwupd.SUSE_SLE-15-SP3_Updatecpioxz5x86_64-suse-linuxfwupdutf-834a63a0376a38456f5231c533d8255e81c8dcedf7f604b4cd57cebbd3601412f?@7zXZ !t/.] crv(vX0{(<8~OҌqik*w轓 UF7J}t 7$V$_6{]ZW9\6uO/P C>b$~ ψ YϏ@e̐Rŝkr(Gc_?SsGTV #DPWb"ᇦ "p ݇کIFMsEm{=u1daKӎ;zV М"+MS?>ZSQ#i4X}mu/sGljv'^;W9!$1F?\w;4\ߏ%4LƃJ Gw- %0D+@DIJHwk&健w0ƒ0׵]EO:3Wu>k qsD}ǀՁDEc=C;n {+܅$>YNexj\AM86(p wЙ}9GYD6%0+D+,@<?ؿ iqYmng2gǢGy֚8d :R3Cp6 {;줼7;g)9# 2,heT)?tbqX}?ܯcH- aZϡ؜-J7A̘Rj<#m KbF~0Jg&ڊQ7`O[/+yG b6x8$D+D Gj 6Y\Q 7F~rMDh~N-tg)Ǡ -m2eUjgx3Ea2ʷڶP1y/ՐI%pW%k2i+y[WAdWJBkO8]^*rMgw'7gVQ S#V9A4l^TcQThV>h O r*uOq^/f cBvh*:*%xCh&V7y+xcP:+&~eȳ$pv!Վoj [*$ĵgO}Q-څ/h1oin@ 뾍M#9h:@RoAs71iw2hH47劲"BbD"JY`.'Q:QI$_`5Dl]ڿ/@_ .kԑ~V7 Y'a\zqRI=G/K'2C?ӳY\ 1MI,lhH~2ZNW_}N? GTخn.THgxЄ=$ mό;ރo^K:39pi4G`-`yQZ[JZ]@?쵫K̿*tVʛVX]SurQyb 5ϙ]IL|+EET;E\VaQHA6 s1Ý@{1򢉲0gW%\Wvp"3 {9Rle- yȨMuT}שN H{~ֹG%'6I2sbjqeޓc I+ sBNGZ3P[km;, AZyI/h94bӻF#sqӉƔ.i)"ԂR)b \IoMh5uDgνn}"Laz&w6t~ͼ.tLLWԇKUT?|"{ ZL0+b}+ UC{-A/MJU;GݗIi  yĥv۹"rD)&O.%(I-&X1|3q@jQI\w.Ie5-y;`@cvq(OPo[Qgb*T`j8h3 6އ7eTѣe%e NB-{ 5S.`mz\J,HJ83EE& W-X[ }28LDXl6CВD85'xmcy>Pfb !j`# 5hgLxLc|'ʔp)2) NKVkurCYy;<Av.tN[?x}pN%XȣBÃ`7uqQm^UqiJ yS819߈U${~zZ-A{cuopDCP${3(6AWܽhWN>8fy<Q\L%y;5 /?KI_T,XU\M37ȄZdA(Lg"G;#@a O.uGU `;|t|mBc)K:ux>˃% |uZ>.U2TmM{3"OBBQ}Yr UM0N*z2e)BSЅSsrV0?x :\a(_fOQrCe, 5|EUN/W|ѧ`[vdq{# g0bs`ǭ.:FQ!dXeNwS|Vbvީ(B eB3lџ4~i+1 xX>b7U>iSJX? t+Yfv|YEKuONCJC\ThnaToO^M# `z!,&C5l` prk.K[29VLOT1% K\sIhXWMvroe{CUuEJk-%7hV[5tA= i=#&2N_4UN'@f_5X([Em$!vҝܗ8Kan(wI(o^2EXg7{cky/-~a39Aދo|S~R~: %6`ي^?V(653NM."ceq )𐏒U)j Gø t)H =oϐU~*UAISlь zt&Fɉ8HD^I!ov"Pv$q_hV,΢.fH{ȎDgy5 BmXMO>iF8@/$e>j>3\kuBL#zļ݈K"0t}(DHwqq4[vih8hFK>w%-I<ZwF$ұl 9;l}~cP eݳ҇b(u,}IÙaE XLcӆ,ؠ~7Ff\}{mRjmYxΜ~qKMêO8;Dk/iE|J7\Kt=! (͑)hqL}z6k7W{LQYG"yZ6#wr>*`oRmC +\2+Op<ġNv+AǦ7ߥeU@]8UQ+uHߗ?/ m^pXË' ;`"9@]KrxΞTI,R VE@4/߂x"nOEsː  \Ε򍘤XA7˧~cԞ<:G#Z]d{&]7-< ڪ2N+ jzf_#e8Ubgi_jqfrzKpsAeOM3F*ڀ۽} zJ$ 6YcFݳ0ޔ,Ք fCA$((1)JD=uh2ieڥ6Fۜ[)ȓ>۟rg'SEހ-\*͋m@ H1 I)TXVXQިifњJ^ai{TAO`/ڽ>kyx)}xT+6}¸еU}" ůtM`ui ܖtzaH^d7o2VX tRxtJ܉I+8hjZ ˨TͅS-'ne{~v51]hp, <* ONjZR%Q_?|v\n'`ҺP|тOVl>~Y=i PU a%JT?ཱུ Ŧ(N:\>D>´jIz+nr\OOua; rvߕ)C"9)K6~ϰFڥ*QIS=Ϫ'M$r;|Ϫ=}M@Og[ $#LS/ePj|x{|/ [-J]Zx cŮOJx 0!@#J4MC|ڄ6G`*#R,[t¼x 腉$D#3sh2f$*'h"S8wfg`Wcg <sDkE78*f2KNw`L/*"왭-ڑӎv*J+iJ?;'K7rZtӌG ͇=Ԉˆ"2n5 }B,ԞSޤ˖?]|7 =HLɮz'B WJ zf)ct˝' R(=F]OO5j=J  |!TLN}Q!HK#ǺK~q@e>@1X xr4bBcfINK;ʤŰ`?Q c~ ݩeu=eZ-R|-GA`]p\l"3&<2ʴk~Ay fFQ:_}/`Msjِ^Y5HOWKQ EױuxƯL+HO=z.Σڞ\Hg):o}}uB*xfuN3L;D& 3fC}o3ʼRKԡ\6gO1w*c5=.0?X,!0!U .C'08߁`cմNAj'N4 &L-2^@t`YeM`rO1WJ \GEYw1:, b5[+6 Hw\b6MMځS@E,+=wIPS3ѳs%+% L2s 4 Q:.#4n㕠Q1MjՅxi%J1|TZa6¥on!PmEEb62 )iI~f!D iCC ސ]Yb&)Xiuq) f(O]#Մ}6j3@tGrN=8* Jy2ے? BZA*P",/ czΈ+YitäY 8F.?2$j>U>r\A!T!7pn1@sg'iB5x.3uk~c~qI9qǠQ*5<hޫh/ol='"%aKb:JYq"SHvUvCK(OzRC 힕vP?).4ֽlkHym_"ϳvǙO>~^I?uNsI?^F;A f wDJ Er$lVK)G٭Sw)zNTlZHr9i$w A;癟lOqt4Y#:𱍿s'I-(ȕ"n68FE&O"JGs(Đ*@IL}bXV,8]\(xݟ`'$U"6D<G uZ:w+_i M>~ /wڹ%(~[ pcY7l=)Ծ$ %^ :+U`cbL@P[o~*Y[]@˽g0s9WJ§Q^ '삜|;3cihװ^'eZt Jile -d` i[wTA 4Ψoe2馐̝LN }6OAW$>obs_Odh0# i(  X /Cdj0bw׍"PUNkTɶr1WJs*ign{kzp/3;e0b>?zŰQA$cPڎ%;8(TZGRfhR bԑ.uG8OcZW8"9ן7|zC`26-\}SXFk(>Ldu,SjޤGD;0t Ey3Gv+dw d6νo$iPt}l +Pf# ^W7+' 7oB@ڜA3E.\ P&/IVbCp6TPHM*iy3FU "6HmVSR]EwKX,LRHeƈ N0k̻E`/ۊ`u/8ܲ q;{F}'WZo!De0U8s9pRГ3{uۖcL|*O٣+s RyG\#E/I`{E\dn;26r7:>VNʇxz$Z`4r {en)u}L ɤ;6Z:t?TiS~ny}0z7q+۪)^ a7;{2a2.(Ih)kTƅ  /:ROq@n]+H$+n>)~*wF!|\'62SZ aZ^ɽ܉E06"M_c_DV=&aE~f`vQh7oHYÜbmx_kzS(*O!d v8 1έץ#P%4Ի N3-(bMIIPK-o 9:xj0o]~ NSX{͂> -7}rEm>HyxvT9BaiRt;V<^۬;re(M]3 <ŅiEmTH@wZM|dLu1ןٜul)% n7SJ1eC5:s4V#5NAk_ e%Nal ?|`<^`ypmlleҁyJq]77M\ LwEC&]ˑn1d{DVIâ`&Jlw3 %`GtRuǾfӆg#~s2׆$Jas wOj~hYXcxǫ:*90Pɻ'{5\r, zT6 .')4Ba ]'1Ebt&8+“􆟐NʟR +:M4?$ṙV Il5#vLJ"H8CuI  &&&u/)ngՄG4"f;hh^.ۄ{t O}~N!NKLѓ1*Q6u-55Ƽ-*gnVaoɠAD`'dnj B75/\PZZM6卯:XBOQmb,zG1x cuer.mp:[S  wE,(uo\OEKn*FڼKe2ꝭs0 K ߰c\2XѻE+㥉n2po)qۺܽpc6ejғuBShj}[T԰P7:T+20GN$?Ygd)t 34Zx`pN E~Iq ?IՊĶ]q[7@RýИk#2oL`ԺM7v)j&(Գlm[h3CU,Xj]2GQ`64&z'&¬C)uO"S8@AwI3&6>F؋?hb5JTDo*`D5dU1EVZJ7Xv_?rD,CI@mݸ /ߕ-[E&y8 Ð̒\Q^w:Z' ,MA p $$,DK9seƸ;Ks/ \5 iI倆 ? e_S&/tZpC | ºaͅ_^y%py!:T Lduqkoe dO62|6}4v,d=ʻg3 秵hl0O!}0w8 2Yeţfޏ2ꩀN_G+- l/lB(ULFUsAtdGA9}jm?zƵ?8n-M7_.&ҫit>O$ӈ!wUXFzx0z0ZK5i{Zη0MQ'|2/.H !ۄ6\DZ.V_JGV 1p,/dsB [{)YK]Pbdn4D}z BT HV\yĔ԰beX |Vf9sA]i$⯏;<"8(\/e6K~Eo[q1&ܑP KlL+< g1D0f[TcxHZ.ƕ+!DYV@5EUW 8 7a)a$,YՃ'-~:;4#|`/1 ܽ6Wi H9}˄v.23f ߱*QB194y!ޝCR2y(m6_83TpXƮ2.ȦHmE3c(t8Sq4*sF"X,3߅a!cq'1<ߔ*vֺfb~ɹS4o4G+ [taxkY xʝx/ݶM"` -3_F8F2PV3ZX6특#O-uJVZFP ݸOc~R\ೢ)WJ_՝/d([9f);io8I50*f["أ¼uΎ . ބDA;ޯQk]־.L(m[JI"ui'2!o*^kCv n;C&p ܻ'LΆ :|9~feTQzl&54FN92s,4+hZO&N?R6ku jR>-V?f.Æs`uU7.rKē[Ѕx$2+&omQh b/îcz{ OҺ..u MX'Ĥu١9h ]R r+(7L@jΣO#^PP{t%gtu[Ln^+U^O/zv*čQa_JQ^h~ٟzu:#X@턫9LjB&zIcw,*E\ғ/c{(MʊHJ%Ƅ]Ԗ0{GN= 4n@36&JD0j<ƾqU%EpH*F2s+_^DA$c4 VEӝVm |0d `z1-M'9LS$k(52Gi,2OuI'Vʣɹ,-d߉daN:XվGaoqRYG8#((囀H>e6/d%Qͯc~5a/LyȲ:i=\ )Dz~s ǁ>q2gzh W|Ž{ ~J#ڈR ^[^3.ef=kF-jc'18SN-ѝ~]g_1+4A|&$ns0gRip >˟4eEH@%v]A0O(F+jaMn7"_ @+rf߀`H9TcOOfIW.L1Ak+s;9E.6SGaOxn|LB~ =;k=^n_jp fۍ RvG MLLqT7UzM_ku#> VX ed=\{tvInȾRAZ' WUe4SSj1qgHcD%ؚHt :W(k7k5'YyqlT 4B&fYd$>w]uQ~;(}ߊd7}^* o x4[da!:a<>vE브Je<^)0m 3dNv~I1VWqո [NT]|.kG~'^vj67`6КLVT\N)<v>L#wxw=͛r/I03rY;+O"ޫ/pvhDǯr;L'mg~{v F/$'.^Ӱ"C{+s#'T*XtfNB~Q$~>{Jzƈ?q FV_pA@٠A;o/ ĎaPEw eWaYhCH4uŸo,O ~rU7r랥f ¤9z Fi?y:$Dve;ɄIFVe{똛fߦyrx6')ۋd+d^y <Ëj cK3\ f݌xSn5s $Y,r'4dބL1f<2PAf]y\R‡௻R+ǜYO1@+]@!kYdBE,|>В˲^41g3WI) `X]?1Y; @SH. k|{D5V"tLq &[o^F.OcdLܓ\k ȘB#_in / ͚ʲE>p1" mE6{ΟtgX-z;?EҠ_@Dl#*^?o>w4 QGBmK<_H‹ LZ0Mė"%j\NRGeh?p@[-&}}&8dtەCbPq[ l~:_fVJol+.!b+>p'NVw"!aSY`p[+-_y^.1A!];o] j@yTyJ :%9A(4 pfFY0Qiz_owMd:Uko1Q1K{:ߌ)ﲞdeх28JwysH4+>431j85 gfzD;*&;g+E^dT?qJy_^Dq¼NP=i4k)C(Kpܣ,ٸ~Q|{fBP.GOxM͉?CȇE߰,qT23IDdlt rwzWpiziӑUs oXXqޑ5X%q4eꬷAR,2.}B0L8}*P[AAkcD&'PWPQ» p5B {,w+Ts2``AsF] 7N|U)xbQ?ߍiFp.0+ .&0N r{]o%\ll~g*/-CGj d.(3"~AJdxG@Qul4%EaۑQ)V/2rCo\+6CȩscUO[^qBJ9vD$$r4´yHlѯ6%|BBL9pHGC@t/{Y.S6c 5Rv}B^G|3n[Ea?c?pxa .{3ʪ6I ԟ.r| =<&4kJ:Q4jٹObO.(~lcMA!GFm0z^7uowА$=Th ӱfC{)AxWBjSa 5ߞFMs+Vќxe„b2 \p! -j2.S[c[u'C ?u!p)Ԙ-γ]4 ˙[er,e)*B?VGϔΰ82>2 xA o=Qb$[(*$B@?{uT+3j6j}V&%:/`UPbLLf * ~-&i%X-}53/g@io>aRnd M8 E7E Y8K.$Ccxi6-|WJ-%OTf)0&oX@i/Xiwz5(bPlx',Z}K-깬M V@` z*kH U}2byDwasgTWHU1CR^^n@w`E?'cd9[((#cheֿD`I#]ȬgsLDѸlOث݇/s8ƯS0Fv\}Lj;Ա6][C% m1L trS/y>uvWyfu,er0';v4BݧJ4dm27~@5$u /uoRk\0y4SeR܃8G3_;;잹Gʋh?. R@i 5s2>Q&2>..v踎J4yPX V &`_(F^A "Ipb=,\[fn»ȶDJu4iƏg3\uv^E4ܴ!Q@Ux-PIS8~.OdG;D6\ DZ{j.1`x>7ZG۰6SRYG͍$]dswaݯ7\lp*0=,?a I$8FWxdH1y ;Q(N. َMCfY,ܶ alG3 +`e?[vqu2uMF+^MӔM HmqP}"{DLhel$]$s,Pk< ]XxZ.ԒM@ iΛMmt}'뒎ƨHdPp-嶊anǸj_cvC/)j.*>cE}ELffqP=%گ n71>k 7{s\Ggt*|XsSL_܎CS %WBDy輢QF7Pg%K\+FdqJ=.ѕIAfϐ6PNNb?tqkϖp1d>+Y |'E'sϪ# YdAR/von{@d8^]y[UЌ/R#-;+ 1@}ëX2 ;5Bfb0{YꞪ%-7{,90fWR *9R~x& 3/ҝi1JlWIN1m)\4⋔d}lMV7VlHG4 [G;aXުME_mDy0э.]ӥXsFyw=k͜Y6=̩M'22`/)@+tfWvljeUZƐˋe.mIٮ'ݻ laiUk˲55ryD%j<5YGs?暒#W:AUa]&𮘉 kFzaeFO"G87< %sJ{Ƞb"_PќWMozkYb %YrN P,WLCa?U%a1)|Z#)*Bة.5\+Pwl-?Qt2]f;LNSnF+T2 s2w$wlb#pe^ o,]DY32g \gB@V68E=~ 0ؗ3q}1拌:_]PtZ0wOEο jl-9b{fr` ?*jr g#Wu{zj?cRWS Al3ї h/-.bOyϚ&;}[I`BCCtYL hqZ9_3R!NOh>wwbŃ %^(ΒXlTM]q|2]^ p +[ ˠ> XΒ2QkseJ`װ!~~[a1rJj_}^B[ -Ǝ KVVЯG/S`63/Pi3sPIj~uv(V!ŧ>$ <`N/φq MmK<ԫy*擻Ư$%aJ WՕ} DU)03ݛR 7G0\o:aZAY "& ۓZǦO*~ZH0bfʅ"!V,ԃ[= ^2,8aC63G VJ;2z8Z˛5NCu&r-O-aT&Q|3n>rBo^gv󿦈< FSo=10ۑf֛dw--'ۏX+,X<9>PZ$=e=u*H8`gzc\v#W YADQ8Fh}Hpj9F.1JoMy἗]59%VPE GFE,:s{Ã4jN:](1gA24؀![ .:E2 a6̲͚ nEFrIr\| J[(eC81BV}qļú59tPM8rf$!PL]ӂ+#CcC{rBWP/ F!9iݮѡ_rթJxʬm|FP_y:Dox ] H!x, xpeϽۀ0cmRDT?!"$E$,n9^dU*x*Ln)hް6WYԌR6b~BH=y)M"B)2gPKHףּ4,>6)k=6OӋY$_{kS^;`qQ-җ8:6khJAmKd6lJ8[ >0lhB6Cc!Hs~g*W WM)z"4HYAkkp43k꫻2 DU`."Tx~ `@, H2EJ(ZQ&2KBک2h/l\>B:s F_o>I,q[&Äh`=+kF׉:`/E7>`H%Ldæ9Z4QS_[Bf6|xeTӵE<'3Hx~ u!Wl5>߼9O}^Vl۬ v sdRb:$0Sv5R\x:i1*\6$TBFcMִ:IcB]MwX5&ql?Jn,BØ^qa-z礻񂡭,h.E'8*"qG.{RBC->e.+@r= XҚAs9##<<6͍q(Q\#BsNcmBxQr"<"ښՄLX vO }ϑ`?saEՀz*,^x'YXu2ę7ū?POOa6dk̈́6ܑH[7=n *:wMgԣQlNM}hW1vTs >;Ŝ*Xdq.bpF 6fP+f.q?:Ani%/B__.h&$Nʘ^0=]0)s[z W`|X&@wP$b]6p!uz^1A3*MU!tVYĉ=S;k1r\@ T<? .o5tYNKG +zz&fO޳VFZm VI}±{'f.ߥTmHĵw9Ub1 V.|-d|,hc"om* E71zϪi-sr8>55OfL?< :1zËKAJ܀qiʛG[]5o/B1}uMKbQ~kW6rz7q(&-P`;(Y.$** I\oU^Tj3wJ@490xbWdv͗+'[jW#yѷ!uR (AB'HFբONOTb4ڃֽ9`⵲MV޺޽Pɒfi5\>&;UĠ_9 s1|\86Fw5YwK!}]CFcFzb3 LaJMj ācaK{ bJnjsT6΄-U @Kr㶡Q?]kJKr~bg7Rށfvl#5Tb.=?0/I32,tit !Šf~߈Ì@p2v2/a3?fR&'邘?CB6Ʈթ:O>xjtZi5J4FŅ;4HbGQbY$j?5%l6%55U ̞XnZ[x*I]R 2'l?^ Wy`Zk%ZIC]]I/esU>~ϐN}|P!dG['J>SM쵮iYbC oӵJM9bJP$+>,JSv؛Ǿkkqŕ94SyskN0^*iCѻ3"q_=ToaB4L,=,vLS4 2B1ERw;Pq$ HJZt*N 7(y|`6d,) !Ζj;v&@Niݻ2JUy}"ԭо\boI ͱRd0)U0rЏC幖4*.gW8QOz #"X|( 7" F%Ozwg2! Q}& |M谋u4|u?"1ͅ%TUf8 M:E\ɡXf4@|3E") ևyd`b)3&kaq>C*9ޠ"ۑbHZRU6kTcrvj[%)kV$y?Bܖ甝2@6DDDP P* B5q8:bt^5yTycAkHSvuэ)&ŠmS$ ?5~1WSdtK^݅I(s.:ߠ{T.M3Uҳ dnj%rn>dsιͶ.%Y81%@42})kmw500hVXeJ^Ι5iEl6t1t!qvlsx)C3WJB[XG&g{ Ew: Lm44]0/ɰ@8yߜ E[yΙsJnO4f֟܍+vQC)yc~l4+9lJEN^<<Э,^;*ed4 Rc1V יb1M5SlLDirw@=W@kc 49`[[Rg"eU?'[/Y&쮬֜WB!g./OFd Z||ltsR o2F>ѥ_+ѸQC{6̅m/Au69VP9?۪ ,p^wp  pMA:Z8&\ /u_̋i$!~˶q6a$H ~d; (,]Cu4J`۬[/ԃi7S뉺Uht1fEZn+=TRq :FE0+%3ŏ1 )qg'D La̰8 Vw7Q<}>K$|TCuҹ*cY'3x [5phZR%"RiJo "&D08R.[DyuЀ]m%elUP/諰&=H.cx,L6x2V=2O#;F\mqO ~O|Kz?Nz>PiW%N[)PIԏG䩖J&Q$<6@NJ#z]al;}oUyg=o%?df0J{e“JgĔl"45Yz[#)()Q@b^TV$/J4'.V8 t=K:ur򛭬je;(XLHߚT=`{7g0"8P iB:Wv i|6BF2=?|K+kdʯ% B8|9ٚnOr d phΓdLy'I+N-h 8:\.,1V}i17۫an«!vҦ<K@ JNI3W4AH)iҔUX`%*gPCpKlR}~|M5izrpVJeƌhbx׷ b>©7KhuL8;Ze y2}3ʖ8aȤgFT#MXŪBzIZ%q& 6F,@Vq*̘$&p^1OЋHVSVXkxյrEQS&A\A,?'N%w.}:ST)oN 7 m?>?C]";Kdo]e} fuDIJ:6QvJv~ZL7>gQ/rda7 ;S08bQM Š<-),GnG2l55a s|Z y If*neRr~QMͽQ(1}g7aY]oљajH_2 $`V^ g~>ʨi@ɛi/h6-WWZ|w\H(gCGd0 @b%57_FoZ=}^ɋz{{y+Ry_ܮ}R3շ[_X:(CmovwB]10Ε/SMG\z91<A"},YV< P]ʄB_-DLr~u8GѾQ"<ǿ8Ka'^,ㆋcgjdӋ:}{\i0 i13$yDyK~&3%w@c4)վТ"F>sp!yq]]^2z VG)f̸Ko҄Q8Ȝ8YɾE˒폟k2\@{b3Op#n>*X޵t6΃⽏saNG-.vmʒCV+E7uRPڢW{K!3-IInf'r\a :{*aAݹ|MO뺺x=(u$f)<U֖/jTZ.mT/m}fih$TNuzIGaD=J)t/:(z9؝D2{uGXjQD^ 4T^[VBp:gМcm@\͐8O\ߎWYE8ƁYJV6 ×QGq\MiZ<_.zn i#Tu{OӘZE]bS\bwyWyuƃ!m"wQnq},ؤ&TNH"fZ*":e!G-1skt-9om&<,B1drtcc24j @f6ew/*W߮7JRk[pSCxn徇B\Ʃp>r[|?dx;LbUfWt7uG~J;pwVH,:q7eMzy1xowp$ Bm]!Ų QA/+DUQ7rxO*/Fi#ݒ֩'}v8cD|IscoUR;c+AK^X6"&|[Z>4F|ʎR}_+N05?a!P)$.X4"1>"rqy63NQ^+DdGso4yD^D,`grtwkw7&w) ]Y:g 6,b0-?77-h~.=V:nqh"}^i\,W_$c;]q7O.]M-._7("߀,6*|R(PlnB'KHtI#SԻ2 Bttgt8j:ϲ%4Ά8I'4IWRc" o1,]nG:zN Џ#3 \:їɻqd26DugTO-.5b0(L?fHyku)YF_,! |+áS!C<d!z]o;mU:54ķm3./ Ma1Wc X9:+<$*ճ>6mT~O426hfShL]T'0=Jat}Kj\BfnxɢNFx?W^I!Ҋbj6wxm@##ޛćP|V!jbJD|z>k-yTbzC aZW'/V!E>lZ4$ˬ3v'EoN޴4~vDC. Tڿ"WJhVR/eLx\kwr/QVs{WG"MU܂.˙= OoA68T ̉[+RY~ҩo$ͅV9Ix{o/ԭTY4= OY&ϛi} 'yp6TI?_[m\:P/.T(;(yՉB*3{z-H)sSnlv~XЧT2 5>;VJ~MV0Q V(jw}="1NN*pAjVOz)_jp<NCdZƕ8!;#y^NS;|C0!p*|vu ɂzG5no1J蹔3`-, s( ڝ}VOXOp<%7E*F \D'A]y;KY+gJ7O+z̥VGҔTظ0vE5+6CaFbӔJ9&HvHx3 cɿ䓕%z5G;YHv#q{a*4)˦,J [ܿμ~-<~es9#ǍZ?+>zT{[UamczP&Rʧq#9m#Q8'}e CrnE<4Ǟ-k[q-%@_/m?`(:u6 0?jCb5ԧqGߡK̪F)ȻrQvp`iM`N٫UvT+5~ޫfgߑs}G4x1t%7j{Ҟd>xHU# @_5"4wE(|[m9Wu)WŠF[ϡ\Ԣmb/%&XVV4U/?8^+ƩyA1{T5VgfPXsa&%슫4I_6< |bGvZ \F_(_!edIC}D408;WMJ8SjuI0%KB /j3ŠzdA l!*S:8-y(,9x1Py(i>\$]p:Agus&wWCbȏ5, nMP,^`+qDO=>:#!2 ^=_3JPS(Ij[Gm"FVEWuu֯ք 2^+$/H:b-s0♴n49K*ؓa RJ4\0 rK+un8 RzOtŴ".q*oIhŒ=Te;]RN#@CgBdWl0K!eW:D4whXn`ZnN\Į).LO-SAkuqHw0s _=;z+;TYD匩wV{-98M!SJad[C6EA3w|!V Y aRR3J68!*hR4|ϛwO49 Op\1}I N&>.>n\s/ɳ^{C3e+jM7ttuԷ0x@v, w!M[B5Z~a'tmK܆.=Rb~%4bNsj+[@<$1 ݹ{cC{txg ֩(Ϝk f0?w@>('ҙe=D>"+3cdq;%f3Mk@"21@ Ao3"#~@|H‚se"eXӘ~wM]ܮ)(-ްy\&Np6 p R't"/Qy:Z1"}Xl?-xdo_wb)F|¿!gfP|o׈gYE_ir(-:f.pZ '#aPd =ti\0Y|fV!CԖ7"3N>3ZY-8.M4Z?~x<~`hE%17u~$W7 (nvEfC^YdGN(;9U!X(E9ZIuL_#Ȣp& XQht0K]~PyOTX%*[gޣödV9l@aKT@?$6ԥzIh:6ڝ9׻uU04dIdYmedԟL^Y ܑpIfa5UYNwn sS6lIaVYx&(Fu1RnĠ[gyMB]mrobFJ^ &Bim1X0&T/ұ7BEt Ҋv f,UKΰ}IGjw;$C;ɮ6*Ƽb N(X,?ϲfCʬüZf8&UzJTz$LvϸXDZnuF 3a&GnC2Z) 1><\c/бB"Jꥑet43U\8(¡^aVa#PTn{o$b[Ă\YӂUX-?ӎe~B H2|4v˷R:|^}MTӃ~Im~rVrS4vVa!QGnICk?l&O+,IL1вь"~lX"Q_)_8z sr+&kXҁox ||O)cIZE؀ :h+czh %4v B}ڷ+*VXyHڦҰ@1"v1]P25~✒6:!7ɴ- Zc̑5`;wBLuhDA岕Fe?,v79,]Zv!u~M($0~y$Xi!两#d!ZM}SdL}֞XZ@ 캅6SʯW}w(&3k35<`?/I-#>"]0P+SwR=;{mv܊zrʓ(nS.1'7 )K{Dmqȭ)ʿAn䑬;*&^ Ӊҍ%qH=/- vJ:+؝I sƨ)KW; c0s3O$꒛t>CkiSRpJ& ~;C;!Q+}Np"z1߹43F%xeO䃤i4/e:`e[z`[IV :]6e< lpԞ;Li^6KB]]2XI.لy뭤zS 1Uޱzrlp̖ fI"Ȼ^V(֨cf5^꟱+ԌU!ѕZxӯ 9S%総F(w(@9CVSO|"ͼ5%9 "|ވO N6nԓ7AC+40Nf[PӨβ"K ncNwYO !gō:XW43Cwңqpcq.vɏif"g!k"f? "@ĪLbx|]8aX2&u^vFvnjFu6+b-~p&| NZT,76d =Bu*D0ޝZ=@Gx}8<#2YA!YXP݋mXkpfQ ɰ7Aa8ǡ)jΤca1o]fTp`u<=\v{9LCsCng&eIN6掋? \6=I*|eKMe:҄MSk?8y$& _$ Ņ+k q3++x:`40nK Ds.B)x5G6jll|O PރN ̘]_OMnJ %~Bv㈂&Ѷ a@t5GK{p5y5?L&:1MV6B3-FIbE^ȀN^9fB>Cl[0"[uŔ^@b{U_oMFpMH2]gsw_PϼsEY(^j\31Z{)D6` :' U:9$街lk}WRZECݟ'aDyA1jePųĤwA&Ӑ߯M0>[xPXj,R,"jaCچڛ^來tW^ k>ݙ3]O۫,M=P}LsGXGM# ! 77ϹPPre)§ =cvcs^yM]ݖFE$_`'9b Vl*H+$jG'e%γc5hQ!ND1Rw2zKȭd)hkTa !lbVL)NY#p2 G= !ΚlM;ÌiV孰gkRB2PT M o6N)SIE 5/A8{eYfro۩'#Q Gc2@?Oh)Cbw3UG,= VȚ- گSJ[Y\j ֲ)F1t^t}o;Lf4-_X&OkpK-/O8lNGՙ{BǦOLϭ~Pu.ٰ?2> _xgO E5#]PgJiy1Wx P` , 0v7 -4 ޱ<Wߝ9@(N"bv7O Yj4tCͣ9h}D.{zp>ķ=,t'܇w@duë.?kŭ3BVlod-l? o".tnrO gض9GfwWbAM/ O5-Qob, k=7tCXX(w"頏N%YqC^ӕMKe$qgbaF,A@F:c~H>[n<"Z@i4h(&FD!!/Vuu ZB_ˑzayb)~$LxZ}(^~D~E> RWue:nd(uTcUGӌd/PNrb[RTG_9G2z3IMMX]0,=O \xr }0s.3E'@rYSW67Dz~u:Y(M{T8 cء6cowXdz5yT8`;mDL:[@:3N56sA,<܇l/ ~ݾ܊}1 V\@{7w7?xcZsO (Џc'#ЪMCeNF!Xb$_gSv1zxϪs?aD]“x:ABw-6}R94 {]~9jaCT=f;f,qAj[•WY%N`6Z@&I ĭP"הTyuXSa1ww܆ Ixk"NS@B6R&yS߿"M@6qȜnN'" DxaTOa45OdWO+֗lEg_*., DX 9}P͸ԙ4'T˺h|ĄҴa^FУ݁(άa 32<^25 UVc)k/;)։/oְ?{.B1elq 8.VDi>F6WJzX/+y9Dzl3UO' E*$b}#݄*optjݸ+ަ#|)Σ6<'*8 Jnė5,__Nes{\iȕNje_Azl4մVlXj L{^3fI +{pyX W:KXK@@PG}q"GqjP|GBT$k_D&uqjwϜϦ7jaـ6A,l[}II& 5ړ4;X?ڔm3#X;.SX70ɍІA=ʀ!''-:g.zb3?o - : 嚄5jfV4[D=PRjH}ZB݊8K Mq\[Dh+]:zׯlޭ)m<}z($*\KiˁsQV '嚴}%TɆc@5+`{u˃?={scHVaCs9_kq=&y%'3dL u)mm5GW S`\ӄ{lGDgO]Zۈ;0[ob VӇ Rr$| ayMbY3E*+4&cc>oOHY>]}/f+*Qs,((T}ype(y.c/W < 6m޳&F9FU3  mέ{O F/:U7 U֍(6,p&E5_{UI1SQ1G&z2@m0Jzֺr^Mf,uYa+[mj=R >u2!}AE^ ,ݶϓlr5j 9ǦH6[=Kt6)==K'jHi.;XIŮEI&E,LDPnmeQ<v]qSOFXVԕꖉg+6vC|)erVۮ^b[1`D%;XYX %.O j>8E H& PUpyCݮ[bK%eWg㰇N0)ϷM5\i -ֱK;KaMDMoU(ET;ߒy5dGƳ\J Yf!x45ElXw4@8tSd%ݗk%[(FmNkcjK5cAn2/HuE*Yݾ\,#q9J_fX3Y;=6&׺PEu D!6T|6(#%⻡o438~\L!aIYBjM0mrn<~q[cw3߳_ Lga8䘇]ҧ|OhU^JtOxW}N-; k:C(p[>nasi $@ɰHN5}ߑW+9F0!QZc7~@!F´KdA<>h48ư"%gFW#R.?a62ZyP;xWO^#Z*^[6ג0cP|2 nkkdѕI$S*+9.Np6|x̽ *VZx j0]>$hBҵeV džλ?HR `+^E̛g{ R1yQ9myQ> h|Cm(8 ?+ƽKT^%( x[V<$|aϿYٓ|]%8j۲ٞ@. wJGӏ!dIPf:4#i2a%>qR8`E oK?'II!s:!B#% q)at n\wu4 nY jנ0'NȊOTez;)fݙea8 6*jࢦ?2P[p fRE~mO-d":Oߞ $HU;ʪFK NO U?= x1w1Vc 6⇥ٮ4C7YEeLpf9 nɓ]UN~&qf9X1kj-92l\/_0a{⟯{bD'̨a|ڿ;/#uM' Qy41Wjx!Y9#[B85w`fec7%-7II&;90kKL3P~['eᦙz_ 6.ILv >pC,R?|[ȓ5 ,5a`/S&O@9C6[ե&)Jrďf /pK@?eDҔY\46;4 >coP1]>(>$xŗEV% `k!.].јmO'l:ñ[el"(d #鳷\Z"+ O7).%>_oQRĊ^Dœݲ鵩)dOisLifƯ@W_{ȑP"T7C;:OqTr2X [H8g<"TZ+^xr|Y؂kGLQDIn'ӈ:2m$dؠ@R}4x.~ %LU9w[?FοKp VS#s$]_?ab!\|k*՜S#)"< DS$s\H1hD\Z>rߘ'?LSCa5j1%L^W q/ܥ6_c.є2 }NC<$}x~-vyB/>lD- Ih^Dٌ-|nH=DEh< ǦVƇ[hKhkj*`]OJLa+lAG4Vr@mDqK`-blZ/Ht'k.e0P QOT˜1o*7mPNyHorMMhģ99!˴,Thi,~.)G?%z=oEl.2T`~n.؈ݑs3T,K ._hӊhDnws^'fm$v7Y$Ob Hȅ]$RO]7xK]`@ f,f\Gi¹iSrsDWJ IG|Ƚ-p=:nSSƵ(2ւ} O*#ڏ][a0gq´!|I75QkDI!1SEJ fM2-C 2wFXw'N-W5lr .7ZSr2b@xz-yQ3 7ɦ E. <(cuem[{yA`)G?VſTsYwkW1Ν1g"sp=4_ʛs/B fH$;qtL {@@0*Iy> V( t/S ?K/88Mx'@?o|m$ie`Cp4BEVK"H`L-Ú5g{G"䯴K*Y^̉NC#/CX |t>m+7b.-ydڡ>ˇi&WР$_"?2e5W* e v(9(_^CqMX? zhw@lr+T_t`Ba–DDkPTj^rIfb0ǧLSo{V Cݫ{4h;f^" }x:s!2CI>_e5\^:4Z"`Y ~X\3c}P0@I`Dlrl(LԄxE؄$q;T59V1 xtq=s=GB$4 :UBs<ةD O/zê=fY7_;D߲>OSf<׌+s_hZ#-*ON-m/r-|Oꏝ!]l:; !/;^bfm2Fz=Zz7_/Pd=λtT-eVB-՞Ry;t7Ä ,]7s>kA5G:g?}0|m+ Nh4_4CEzD䔈[/-Xn֩9EZ`i e3:Е VO8>WD/WVsE`I.=^U"`ߢ=ݓwn~[J,;#%mwc537i7W_x 46\EC dyZkzl}T /:/V&/xc[#?U ҒcӮz9xPx@n`ƯvͲgxs$6[CpCuz\:[„ ZEbR¸!I3{&gm A0CmA >#L%v烊(+=VxqX^ E"` FSrV E)4i V;I%N}} i>Z.$m; X^>go 3g "LfAAZ)lS 8f!ۮduS FRhtXQw5ݒoUSh(NZ"ۖ4c& _;D[Y0^JS5@is=Sb[$sO~FI4f[}&M er>J̡M@2Un6Ŵ@E13Z]{Dx ɹr!^-E|6\87$xV %tjfܽB䣡, >DZ yBOX m̭%Na\xD͛iem~M͍@TA*HErAlɢl[읿 !sLޙH:͇JcT4^!jXI1 NZ.xa$\?^sw!R>h@ءsp(h7+^Cd7iU'g1M?Gc4{uq}u(D]8)Ѝ;A>է(KkmnȚEsVlt?r(N*AJI B^2c&4/]tjS_ GWvPcWI"oeсF`w^H"@В}{c;M^)BR3רHp?Zp4 zv=NԦFy2׾bw}i\7"Ы b;I;0a=Ylٕ:M~ӔdnmVb]^gtF]Vέ]˵eGU9.RʖsYg|=WP$j?MnwRs˖ /&ӕt8;`AJ; S>0`9ґ"BeF&O^؇3nK4c6d{ďZ$@j0WA ےAI˝-3ƒq@*`&;/9[Ƿ[&qoR1u9L\TFHRsruHEl&$ݑ2<`7jJU>Ea%s[sLV %>p.x'pr<x !N_6-TIQ;"m5+Ns( 8\5g6[K(7Kfj+ϳzڪZ-cEXB8e^zT.] :~q"jkX hLTWy2H1,het0隰^z "'h;t-BB̂ GD"Vg:OС2z#RQM/\hWBs@ɼ=oN}L ɐWt+|!ں]&zl5'`#<#\{'bF(|M>A a~=VOȦoe6$:Gu A=G:FFEN3뺙7|SVQkb[jvXQRtT ?UZܩ& +xM2mčC5NKt6ZsOdVXڐgn Y*vqt5@/*jJ%1is,?o<j.[8irgKM&at+k',9K:QϚ\KGrX4HwEj ܢdLdw$e}&XA*ĕ)CN'> w׹sJmG+/b@T2 #'$ *b}  Gǩ6n{mN Uk;00YUQ7'q K~ţœX3?PwXe0ƕ{4n5yQoޝ-=D*$/Z}[CAtK5ף\'څP,E0s25ɹ^ ~ױhV7w`_|*emg"u<20cpta˙KB7H3"8{  ~+ (Wȯ4Gvz}&@y |T{ OS3N) hp2kp09tX+\>C-tZEjZZ?TV4^O1mjH}P@ܸ@)'9̲HԨ/d }ȍkcݨJpXƷOJ@~ܙ 2!.fA4Bx5b9E) wD݀h!t$V)ʝZ%n W:=|pžUnpKVeϐpu_x;;f0 Qr{=I &P:T.>6g+RTs;2T+U>5 CNdkj\QJE*OcvfcϠ?X5\8#=b/ 1GkB/ ) bgàŇN&7,7'T׃EŧgX 'ש6sw'Pj^6lqV\M-<mDIZ:̚N XlhdַedE//l6|okoW sqmS,4ћ] ܮg>Q$è!}؁ǿ/܍K VaouU1Lf`߶ݞU)e# u'e'E%L(P)/aeP.O?DgHRR3=5eڱ.~w]wsKoU FYPH" ƧƶY}4DRg ^= ^VݣrEu3;ytyR4DLt^􋎒fP}NMWP䶂48CXJXJK5(,@fw.>zp / *T`w4ŴFK|#?BDZnO6`@OJe/ӳu g\znM2~@{X2ul>"dfIpRvzzZ4Z;-} <7[DsfxX=/”!~?U A)0`Cĕǫz;<|2l*mW?}U-IHՇ6_~i[2"%={%;(!kln EjAYWs'3%XEx\=b I]!1e8 OspC}յE58zs5=^,G)[p@_,L~1F9 NIk@lښ-Cpz9x#'Zdһ҉ክo3=C:WװQ/EOכf g7ϷL 17j t(<=֝ڄR>D;Y^S.72VU׷xN$Sl}DϪ ֛[8ϓj25dS$# 88 ٚ҉O=_#ܜ{_Qpƶ4LĚhoɓΌrw|!!.NGdHc 4ڂrD*W) b߶ y:|&O[a12F-A3Г9}mfI0Nn_BPXfadw"]aozP۰gMq'ϸ=Q-r`(m=Zc*x7<3A`. HnC""s|f(9T3I窱Emdˆ(Gpȉ8径/)YG@t VeJNP]@243|M,c"8@MtT)tFт7XMa(Ώ#sF ӦA0ay 7JྯNt'_;8m"w:613_rrǀG c!{ {{Qm‰Y`~< isr\:]}10FwXeU7\C/xu-36ޠJmeTv۾6LXq@c6c[#Tek܆ZH=hKyP^46@%+61gm V$M roRvD}#xlTs1$wlPff7,]KŝlqT0z){O!C VWX "OˁkmHAKINl+\۽UCU 5i~De̛Vfv?<[1:>D+ |JpqJC,QT G^:<8Mצ#!:j"1;\ PKXĪpDy)kQlx m+;6ʸ -`Gָ*YjJeo?Z6dUnEf:63wC6zϥ(eHG+”\׀eG꫖muκZ۽l^F1\S;y$(u~dcRlw"@KiBl18.SM\axIZ=KmL(%$ZѠL(o`@a:_%"5il$t $pef4@0JZ)br-C€ݪK%, G''|uD{dc%[oB}v]/lMcW.|^!k hL ڞXvOEeqXA._}#@dUo*",ҫA< <1ø2>4t6FJkt ~hنWDTt Ҳ׎ꥐ!`W6 2n@ǧ#ΰGY5DLaOgsc?i ¬k̆;xb_/rVhͪ $x3'Fۮ|x7tUxHG3Gye`t$ܩ`Z~+\u/t.n"Vyhəbdx1mH5.Dѐf1w-9wk w m' aTۥ3'AM*JDȻ@fQrI=!q$r@7Ho5K4CYϨV^ո| O2Tp5?QAnOP[]-wvw5ilpQ!Wn&`r 4]©ϮŪ8hj-$1v0;Y8&S+0F{1- CY?`}xĨh8Q0 ̙ RY9ʹR`%zgf,L\VT|81ƢS+ȦqwI:nz)JI%x+rc̪ߤ>ݬl s{tG:=փ7:;'F̸m1wZPqWg;0a%Xר0|)G_1J̩#9if[ѐ&يkLIua$ǐW%oÛcN i1Gbofđ*iH]6A6eSh qT%׿ 0yيhc "Z@eijfes`T^RP<鋗%8\C=R/LxA#FS-a3UO5*q}vY 8Vv}.Aou4x Y [swu8a Ղήaˍb UUl0D'(߱W$n9tm@{0ivXWi\53MJ_#$on)v0_UaUj6>)f,`DDHxsLɉ1ݿYPSUZ!Gu;6z:eHw7$Ϟy9/ߔ%8pi*xf5j=Uox(?q$©qӿk ~ v z]њ/`眈-IzYcsl8 $p ,imRQVzmMPn" c29bΞc:f~q0$>.=o:rN#6-iXqQHF::.󞶮$ Vz|MT@ʛNd)\TԃxlGLKȭeJ_qOY{R{b;xȝq|&7;v,"FL`]\qVi>y|V_郙gLU7$ġUPݥz=X pnηZY O5u+*}4y3q;6JGIG>ŦT- jR+[eL9nJ0Pؽ(DqUEK(js+ [XJ/D)LL dfxZ8NWʼn_'2^+ Ibʜ U:f"+E t}Klx\Vrơ`:f/Ia_vk߉ +, :mٗ ]WɎ4>}JЛD6ND5pTK>RҰa qFj6@nWyU $hM`%v["]9S@Ump2!q l'"%E%0;N4k8a/fdqQn>☱{)9f+fػm!h 9N| njN'P(`,@&–:pGfЖGxp,p;^H 8m?Fy_uRNnML1G_GNen=Zk[]Z!EON}8ܳ-_gXE`Hjl/UByFsOJkwudxג™Bu,;ՠYءqોlDAf& ZSW$~q+=JSP>{ }t~"CFa]EVTY NNUi 0nc~@l3 v 2'֓} fkG"`,n* zEK̿CǨV:Iۈrr|woepܓep43% h"yGk6Pپ`Y%UR\F(8YX;ȚB;80(Y!-,j*ѫrԽy/8_xqȟI4+!Fcrf-kúaխKc>܄d(7;n@cӫƺ'E#nӣ,::9&ۄ849i8deF@΄6cw:ʬ,5[8=[dv})pό:=7&a&*n>Y@sʠ cXFink<*R9!Vs?ɣ'r j} yuvכoZIGQ!!P{ֶ _ف}oN)|Bsޙ s,8W (z9ޓLT}Tq;:EGh!Y")D%5z»贚S1JW{ehĠJ} \2PV<~`p^N Jߎu$*?}9jK>MCFgLO?tFPorKYj-; |A.,=SkHௌ1ѠGYte\#z'S bƞc8m88i$/#)a@ns\1κǚ,\1*H3Ho' +c/n D.t0.gY'dg/"7oG(&+dr).y~pU]B/ި إH`.2Vțhcb~gac:#t;;?P'zd3J%MJt+5I@;!Tg*}2h I%cE#xd*S|?Gj#8PEɸk=ܰȫ1j{$AӫNiB Rro7U3^w@W8vuDAߧNsǿS:7ϴxkI}kONys86Ahf$] <=T ng5.Y}xX=2 E<:\6lkH.rBR<,*M~[/4y (=y=Lrd5YXL[_Q3V6$FA&h/8()w zd#p!g 9> 9AoA,yq#U}9No OǾtk=yiHY 쑏8/29! >ws7צ$O޳ebXR&a#׀YH&`]`s;N?3kԚqc AKKͫgU6J$HLx" ؊/wHny0kć8e 38mS |O-xR| ޑ̸mCJfZq'$=zW-؋ /pԏ h"xA=Q/R6PpGx}U}RF 1#d̈́ړUI`+OҍOIU+ zR#{V# K,%- uLc3|? ] z.zVHd#9sKl1c/:EZ' M-[+Ih&qcݥH5ǨD|Q)IefxDčIתY)ӜюM֐FeEp6Y )|iUqyI,(a +鉹P܎%qz5Y38\DbQjlccTO3a|䲣yEl %^ǵcQA<\g%v!?NCVi*6,d.1Gf񓽦?=c!㆙fht{eM݀y .gklcMՙGKCN+8[v%-RN}Gr?B Y"=_r],H ~,uIeUZz|rmlgkA6(ʡZwW5L2pi HyۓDvXM;1ŧgHu z14HG{cZṅJV^M 7sC'Q1(˙YHȯqaf9=>e_p Tmw+<<ߝKlf}IN\3ӕ{EތP;AM(SG߱S8Zd^lUq)42Ulkk!Lod:qYQn0LwWxco9d(>DޣK![yvM6D*b.h]YwH󖤰 mm;PzjMǁ n/dN!FHTa~A0m.. c׉zt2Ȍ=^ AfE!q5ϘVDJO F hw D`8_!Zss/^>F{ DmHKx7f`9頰?Is梈Mv=-&C$iHZXƗ/Emb ]=U{}Ea'UI/a&FB IXmq+oeNعfЍm\L)2!F0tb] 9n`D}# ?wqzQrSA@滵NxVh=>o+V2=Xot{2ozKb&J{nb$|Ӱ]1m2jOD #d-'IkGBP+^ź>aTU:ӻ@+M=~JZBr22R~₝#Nu_=RUqHa9zyrP ΋Cl|k5;+%˽R3w^C1IHeL?8hTJxFEt VU We_oXw2N4/[=ޕϨ c| /F:Gݝģ`rIHPb̃*. S2eNǦs+.~ 0b护5SO/|n%`8EܚNUhcCrq3AI>6{~uEnu;%ˇ\a+Y1|IajS\~+ҨWJs_y zm;(rA#Lr'GohJB#UXjO=6= `KwFf KKr-8IC΂ WaQXm7 .%}4b!vd C)}}u#WL?9ܠ*p Mui -~#E?_-Q󾲥D6!6MIm Hgl]AW | O7bLLD]8-X`TpP\B>3.unD 7In%ðp{A !VvR '{AZ)Gʄؘ~x xQT~L4 74EYe؃4Hi{LJ=e@rsVzV.vLǐz[ ̏oiY=J?*_z$:AY{j0P"vbfxGg-2aؾ;KȈj[%/pY`wxV (@eɜ Mu2`tslǃ|Dж& 2R9_ pɅ˓ٮ C! d@sri` lO %W0@aF."͝NRݼ6$\㙕o@Ԉ;a(Z[rXWS|.e}EZgNsR`lxFg&L޳*gd3޿R{s/-B^Gwwp/JH48T%$h<; xe4$k  BékzE)/LUk1 .b3"'8*RrWLI[N?p^{aoCͰ <4z/7/y4bHM5 sbi/E'mɑ6VmϾ&jN <99]Plo_G?.#W .pCВ]ֺjnĢ;}`FZwK^g;fc/8ih1dH#;p Fd%n;Y﫝`Ӊ{^mVx2*tx:Suw td9Oqr ]ZhԓjRډ/XmWjôxCEhշNrh߃' ci׾S挡V@r9T=EN)X&0ۥ#%엂Z }!:)38Yd4[pFabQZB:C!kL:'VcCeݍբI(k:Vz`j'=+}}S4hz@ 4;X@6B' $ ==$>@oׅmM8Q/D$3^UU uz2=ef[&(bV|NT:Khaa)po'%U<=bj_FZ==OCnoN+2 hֳ}R=]r,ʒsz,pyrE:)o :X Q<-  r s(sɛC֦>;/Y93nmkToo' `JV b.5PBߝ~l&YoW*?qs\[/nmjhd 9b-N"u[\="^(*'N)d~t(6wD'(g 0<m?<˾0쑗ޅ\m.EՀ̣pdNm(@1C=_(izh K$!H†`m79}l톔 ިzWNlϯ#;p:y׆ы 桟WrZ ; kmT4t\j:ܦsZjwb֦NTnXܜ')(Tw(pƜjTseTleGwu(*O'w+< >쌑tj|Xd|SW"&ͻ=PN,[j0>ao*|i,OrΛ [J_ҜräDŊizèz \{KI"\ Gl}F~G7kvF D~cSݓT3au7]1_1l4M%tCxÎAj( Z`Ku2]oLsJFY,v؇qfx0;%jC?7u%ajJrv_ 4ѕY$M{-Yη,`NOKBjx| ╺O4`8ߤ?ix)m0Cs_.-2^fK䰆 Ț¯cab]3 Zj˓SIkUDZݤz";=t㲁B&R.$yx {"޹.4hBk5EIŏ otߏx[X1p:\pتލqo#0EMg=K?u6lXv Naw+xm"2;N2 .cH9OFŏ"֛;";zfF=[7|^ӷNs7ccǶm; y ֻ`xg9[HQ8|44klK Hl%]TK 0 ӓZt6-CuՖɘLEū^u|;М;Dd#?c&N(}9ͦN0 0t"f5PJ&4nUbSS=D*jɛJMmfΩӾ-<9EM+o2UI^rN#d.u$%S$HZ;x_Bʖ| #{E {uCQ3Rhx Y~-F!}{ ǒ q <m,@ L4v{cH 9VZmfEଐ͛8ά(6[lNEV}szkO 0'AUPY!9&@TٮB?JI4AB^yꥢIN:2j[:e灥]ML63 [ Nn}xQM3t&kFvtk~ z258): 0$d`ݓU.Wn .ZplD<#3| 'PEKS +#yYt> bᬧ}a;Q[yhOam mrW=us6'uMM4 >v<,uy .~PV5RkPь5E؄vn[l-_t8wC[,P{[mnP!.B,rJz<3^m_YCkzM+18 "j{CeБKu0(!s)T8O\cR'$nÇpa]xKi^7.rĿ:'A< vG~ZƗJVNQ:ޘtyqrj߀m[NJt+Z1GLmW֨Ј3TGf Uxa6ǭ빼ir*}i~uhoL@!" k]uܠ͜U#G× u ;w9-E PP )Jw9)ɭ9 Ф:7頤}cM豛>6k{kxþ?P=Rua쯛`_wRiaDeЅaYݧsrOV kVYiꓭGD'XGG[8x.y8( 6P7AMm4 (}p)u@gQ>IZ-jBlpnAiuc BYlފ_ 'Jq_/(JN&w@ Z z:R1m:qKXtKs :9֩ӇV{Kh]l7{\֫.h'R鰥f:};d<)F)_1Qq.^:䪮M#aԭf:N<dE٘lTUr2JW@M!M<@ +Iy|18[<@d!A6)ɉ Ad/䯍fhYQ*$EH swimn/8K®Ua@! M whlH Dn|V-*M7K>W3͘b[~dUרJ0XRyzK;7qh9GVE>H{ e s }n= C.Dz7Bsoa%Vz-!'].z@Sa9`fk1ͶDohnm<$yw[bvu8[it; .:|b1ZS(e}ډw>\UP$W|x($0QAm_R_CU9]QkIFǚ{nGzaX} ͸o$: 0Oi牆s*PK":E|@ M dj= !qW'V!5ꗪ$8N s3LD abMXxEܰh."$J]N!Tb~O"[cqeOYb~ԣP ^B'3Q3G I#i 1f}8&_@cD/Gz4vԛN͆y|KCٖNsF~-_M)x8&y”ʑ7G//HS1KSBBwWcDs/ͪV]ph&M"-/No<ˢwv?a/(\nͱ n Tl2K_Nh ѪE9Ӏfe%kIݦA>bD}@匣hHqT򂹥]B) 3~G(8<}{>>nϥ`dF`qv=*:rC^6{ uBA#.`E\\d :n$ְcїJ_aLx_GLo:@//L'{Y`sN;L5 Q[gK n^_ԉ> MdyK"捑(JVb9'qOv Р$ͱq /*FV1+On ̡ #f6?ڶVH^{аIgyqBA,m,99$L6+Yt;1&6T+bdjta4X9~ "a\J.yrZ:Dqv-aoasdѝk忉UUe"pUhȊAK4j2i؈iOwK 9O/y_d}Q̰tm% myS~ؙ#Υ !+ö(zMUzԨي/@ r8i ߳=IS}D2|)G,*c#FXԼrV$gpK|S*)] -ܬbzBZL9PS{kPGKjl:# h'we7(7#(#3ϰalQVw=|q8 {s{eLCg74yLsN#NoxqM03^+;0 +/붲[{ϦA4kcSvjK$?}s& s&WŽ oq-{'9?!H:PjY~C8Y3đ~s)d];<|:$uw[SUVnӰDpPPU=3$ZyS[Lۨg!C:,yNhMy&[yg~,gw'\!206nrV"9sb'EvĖ^z+7&)>}^\rGgKRH[>wD{4`-Iߦp5PB#lſr 4Ctˤ(cTeP\̺ug" t' >2:oOhk|^ne~J1:.6Փ^N 77^M$878B 36\=A&tv$oÇ<-m.DC=)~Y$܄1OQEuOB1#o4| QPCw&J =u^Kn| R8RLŖ' f"zk&5h;O`o'|_T% {\؇HJ>HL{уbg<޻g_eknռBkE‰E%ڕa9fQJۣ4۽Mx=X(*[r'lI\c>fza' ]ܣ{, ,$-HT)WsIG&oΪ^]͠b%ZU^#IJi,k-Q$oi\bny?rK)$mވSm+Bceb&@3GTh&vC/@1u9cjzmy'U_uiۛn/jJC醐`pʒjf[HT#7]:} ?\h0>S}q1Ld2̚erЬ#0N#UPQv#"veVHif8[)utֱP6Y֛11~<ֈ"3OX6g9>)r$}=DxӨ ?`}VD-CIcsqxg|DN|rodIF j n9~SH}bc 6N9~h}z@BlmV"a_XڀL.**E$\G–˥ "3m;?8WHg9p2)cmZӤ SZm2렵u.lNn)Vǯ&}*NK`ޡk{L"QB%LӊrWJ(',9sU҇U{Nud6 <8t׸h>vj I+P `W/9[&sNTExv4D0TQomœn5To;}<2=)i9aKO+ģ C.ƺvj'^sQeMz!G{sXKmĵ%;''1)Ó(03Pv\#|VTay:zϰ#?{a¥BD`S`*u!}E>=g** $>fLpIJ U2&0?EA0'!a`>\;sXs3?iFvӕݘ'HǭDXAXR\UZI)yhQ ]G8¿#7RI^Ws!^|ƀ 3(OkF$靏.UW]wLr&ʲDd1RҴDh 3d])|vonbZҫAB~@Sn8m j$,'\ƬL5ZHB۵b/ F^smڥ;<l9Y &%H`CoEp+,hAp4J^]uzΐffU;ی>_5-IPتT'@&)"OU2|krܿqf3 Lov̞ ~Ҋ3bl{J!չf؄R6y`mCCWQev+pē#ܿ(7^4>u7b> =9a$;; .!_@K; 4Mz(4 o(#@\^ Ɉ&i Zͧ%N'n tb`5$77i=6.]~Rzd9C];iM$S̶M@|L+oZ>ilَ erVdI47IňlyA"шv~MԦFQ"?6YM-S97K;ߞ3?@O;ϰKۆ$xl3شDylw?:^ܯrsm+W1VK#j|:L 5OsG"n|z([OKb7=꠆piPkob)rnԑbu/XpX?2p_ęQRvTE@ d7=dhJC:X#'j.R0a %<{ULyM1R~b`sI/ ^68䎩^ٟd[ H)t$T=~"-jSv``w/;.LUBy0mW&03 ɟBp!)]*gBZzRդ,nK*=Ps 5kGC:W}?xzȝ'\[ڎâ~W2_ 9Ws{-hmb93/)WЭ[ p8tuEo3ȇO]a XbSEyTH̽]c#5~M}K 0j,6ߖUiQlf9$t<.qT4UI014-T^{Zc?=9[hnj eݱI(cؓEo0E(cb|囹$o13ւ2@@Ib&3>0snc=}rK&=`10B4Vϕ WB &$4}kY/lR2I?1}^g:0`CQZ ¦^9τܙ>#4 ~VDi|s>7t3 Oc|m) \z]eňv9=ͦa`dI8h^Ѿ@٘ ⲱFH`;Id{w%y0C}B .|N =LY^PׁEOf g_'YE5q%w'U^\42-p'۩b&0T>AݕPzuP [ɨ-d]dUTFi'5IVuCŠfuƒXUgTZqo307qV a&&`s?{/Xb|&%"b}6 xB~z'e*bùZ,hAea4u KLkf a4 &JJoM*jNLh~ 9En]EBG5|&?pm# mM~τǂF9;#ToӴ)_x,ؤ*wKN&Iϑ",]miM_cMnӐFI}g2).4ߛ 5IC͒|&f8  RmrRɝ>av uߊj%5̍xܑÙV=A#l,ѱ)pu6~&.za|'LT55l#k"QGǴػ6LB^ʈ{lDb5ouO*H\UņӃUspX]l#rķ?+>}үJ=D?svqD!>xiϳg7iy{?1>;z :Tze̠pT sT.O5'"SItXSel^U=BfWHV;J{#cm6r18w%s@Cz=$9[gfdp{"1 @j:\z+vL5 Zo|LUQQFEY`w#!p1zT@In"龀 ;Y(a44Uȇ{xS+M .,_>=KYsV*鳷%U$u#xL+J hm.'56# yU.9c0H+BWWV\|w|vcCżq:l:3{*j`%dO$c2S)ލ>?0i%\\,J7GkGytHɣ+uRpa3qA)[)3Q,7$#0=U  L*~jvo\WM{Qr* Pn>}Yx3#1@M5!_mI#6N3 IMD0rsPj!2+Y{*_b2aQg*m;'J moˆ(F|o|qPN{`jl 45!g:u-pV2z||UrąM0s8ҤUB`P Q"xy"@{Sk+^ 7nǚD(+с;R{ҩOjC2OAAZn3q`D% ~Ywj}/ 0{Umw4nqC(}jJ%z>V4(|Jk3:OoH3M"p$FԜd ċm{l=6a5ҜY=`f.6qՄ eĬB<IfSfZLaxqU8Z5M,(wӘ_L_Pgq /R=Ȅ!Ggگ/W4[rW4;RШ 6Ь }8m_R ՔwA1~L+EI:ּ?Z9lָns'CtįtaU%*fo+4YO`.B-ږrMI1@Ӊ3WSo7ށ\ U[3s5nRQ  # 0$B OZ2)4A||Hg%5ёa3o99Ync.Ģ?iuEHM;Ȟ9{q8UpRu& Qʧ5@6]bϓHk:d "Q[[Mޫ u-`ei0M\[#4u ςt*fz mO6ޣ-;h{G>,z+*wq)P+(NJo 9uymq>Ȱ/ۈ7:R 8W A(kۃ&Ufpi]. W5Wז21ވL*sܸ :~@gg b[N:!OGʌKrT(trx8}MK}WԥZs}'fWX~mД)7ژA>+SOyN)Kx.ȅ?y_V,4om9g-ix#Y @4 .1cnFf(to@馐5 , 0coo޿Ej sraq> QQ= o"q{}$YZ-f\Z[\pgXNMe׌~rݬ֣\,ȖD=21Y-9JiD1ctMjQἚ=6DZn40KA_ȱRvKa+e[ 6cIBFza-&^xq->v ~!3^{hnпy?/9& bۘc,`AH*ҦIi\hLd/?zN~p;;݀#>ň?}[h8d#B?@Vzk)V|Qt"'0-@)_J )q[$_dɋX:?(!<[{ڗƨ8rVlO\U$.v*@jI'OdYN|>>>-ׇG6W:͞asԭOJyM1 qvѫUaV!ɧov5n82ج7X# 0mRT h\%bB.owU2o)Q!vwO@{#-Kf"M9F~Aga\$'WˠHTgH tHb)9'q@wޕC"%-&tb`LV"(rJߵ!kxu-߭[ >D;IN%AEOQ{Nv|?A;ߤF`O2gKl{'[ٯ'Ric:_?+b{Jl CT NoZJf?q|LiHhCY_P5H]whzFU(V³iKOQhz $ 3t'=1O{C"L7 PBC:xo?!w\<0K?`^gҳclo 8H 4x \OKN'ɆP0j5Y]cG547|izW^oS(g߼k۞}ܬ[(ErSEi[F\SSz?ih5ɁNSJ%*EOyc6jj (1_G}r(~-BnsؽpPP&O9]UG͹c8 @IFۯ۪e&W3v ZI'%*ءJx)x6״mXK :,(ZLkA 6fRG;>4cxk) d|Ѿw_0֠-t29yn.4kZ#"JR pz6[9ts)TȺ])G(&!-e˧zIDX-d@g~dVB(XLp}S1AgT Opz{z@34 Y q.=1}QM7&NZIha|?҇y8{3NBZx"!#Yo WZ >oqd/g29K7 Ke;VIqP'W"ƑٿTŠ4`:^[YS\zd%<jz>%Y \0e)\6t_=w-Ű= Sc/g't~1Uc#Й7%{_/'Ett-.sP`[ 쳸JoF*$.i…H΄MEi¡ C_S3grb즊J1,9vz,)2cEKgP$Mu 5"\YR.:CR8#lX=X[?ie/9p-$њ^yznE/YZ`$J1E![IU+E$wI5(T_qͩr1T5$F|u91~2nXD}bY"z>Q|#ndvM8Eu<-xo.GXeSPD9u?JRFsmmꥅX9l (*LL 7ܞ_uMQƤ ^\n5F0;aڞPVWσ w=j#uBӲh `S'U.iOW٭Svx_l0)RG-#mtf7ʣŒF;\M@_b(HRoprvxp<ǟ,A~<5N6=Q| 6f`e;J,C3D#+=+RRόvnTZ*3yQ=Y0"(8fk|#F5}8E"CrC|MӶ4: ލZl Jڈ=*Єa4ٜvN3 ([\fp@7 vV_@w7eH]aЀU9LI%<: 8#4.'c (˳xyF`$\tOPx`$!aFSpv>!2QfKrF=[EPPZj'ePh4jq. CC)O0͢lCiױQܣUêc>OV.qYl76:;#f]ov)TvHꌥġ"y5YP/dN !qe#֌NaK+i^oxp T}gVJzad@@=sB6-"m##\,:g1ȣesj0(r3Cz@jjۨpsL6Lc1&ĵ<>3^wzN3 %'kU^ySJ$ϼY" LP\"c=oOa:X{MV" 3salN,< At.v  wba%W_xWo #W[(;bqUɏPӀKZ2zi~yH\(2 (Fyj"s[pmx34@VЋ"2'اPh@ $!F!Xs@w#dkӄ bqQRF_tI%`w+ol/<ѭyK;]C8BƪQ66h>մNKYr4+l;+/,hY'edRjuAQ]:k\ViV9rTUhm`n⧧sÐ?;"\(Mm%Ŷ*tΩ<rdQnYԾ"Y02&A֙=砱%ovMDׁ f璾@An-!_Ѷes>s ,.u4]4AR8giINOWR"mӔNƅDǁ^Ll:iR2"58ݒd"V sa5AsTcm"zE|%f5FHCu&d÷fO_\&Dlw!uqn 2DC|&^dy.lB{PNa)f]\~bhgh??$ۆ}Z+kS]vjWg4w~K7Fbj;Wi¨m4m*ʍg&_☞qB2Z/s4CX͵ϓeLт; Nj6 %>`9)ǔ@|lѾWh NmS w!thwQ"Iy>oKu p6^v6gw~-Xn?Gt~6{ɸlHHP 8Ƣgc/DHq dOes2)mkjOh3BI?92v"YZEaOQ%_pwwǚsMbG7j"P5v0=P{J\lJ6 0F9fw<{y kzǤ!\k萓^ہ!?V p2"& Pܘj\80kPaJ(=. P7ˑoTDR,ONђ9$QN59.A-gg3`=)Z%&U*EH wT=ׁ?S?0'%gLd^ [kgȘfPWZF $HSH:7Q/:c,+3 Ij"[Pc Zl1kwӮ3ȼ g`4 *gS:mR "DiF$@ԫ6y?1v{,P*ctr|C w #t&Iv&iɜ HmFuUD%Es Ῡݩ>q*In1,~J[ tO6c+heoCZI/*Kݺ\i :.7L0Io@XODŽv}v‹vw3dm$Mpa8(ܧJ:a/ ZX^yer +&66п 9{oH]T`wUAQ ;(ѲĐeԶj PujAl# ?V4?vMA˗o HU&Q_Cr%>,&,%Ds@-nKˢ2o<:MBksgH|R8賜&ZVV9qð2eN(QmT8fY7 Eo%2uӭ{8A.Dl}nmyџu8ԡj]0 8sWe4p&U2kgŶX]Z2+'}E>QHO _~PSe56 J8,&I*й<;S,]rRpQn;BJg\`3m [6rć}^FJ0&/zw&Uw4|Ad?czĮ Y^PۿPH޿8o?5^m²8?7 g@t|},Y !wGFTȩ(s̕So [>ਤۀ`f`ZRC2HSNBJ^_+ %jiղNfyDWtRj LuvB z?JZġ[@DUl=5eoc`rM6|VPJOҡ܈0 YsLgs@  Hxĺټ28LN>-epɌ_ D9o#( |/2 ZcNmԵɊ&il&?ٞ@?:":J6DQ%@(ՌG釩6rp$uj/GTb} _g8]䖘_[#fp^$tؗŎۼbS˯L7zOh?>4\Xe~Ks@2#hXxx4Wc'>dM-`j n-S%}0a=ԙ5\!/ B҇>4\ eFEJCQ&4!ZT[G$?9-_uM~zLӖ/# mʫ|VaфD`#yx΋ᕞb\Eɔ/g`Οwl4\9EGC۪rK9C;]K3Xw9*;#Y:Fb7,%$]*Y{w\vvœ| q~K/׌s8@< ۟kp"3t =E!:;y]\w8:H sFh#R+۲M-ײS LIvTcɧy(? מs-lS-4Kfe95=Ϗi\!<Џʈ!o|˟z^Cvsth>!eWtU3~]Q=2t4 c siohŽ28&d9A1tO21a0%.Yc~XFqVo#6LѸޢ9*ݷ`[haEy۞%wϪaY0W@Nr+1K޴UK߳۲Xy_[g9pyx}b)k'1=aq^q T <ЎkWΈ"յ܃/읊.L#\MȞb@.hN(d)ـ7 9|Dc =l#=z~@j)7.Ev.~d͚D*xaooSHDH"]q^ơPPU 6X,x qM+ ω πoWԦ.צj0RX6OS6]k>WDO>uWF v3j\zaЙ&n2[2"ƅ'L]lE(jX &E0ژAdK?a?QAV=p;fk4`sy,(\ޱP[*F)e!C6* gAmW`[_!ї=uKWsdmp:& Hy%1jA:xGU!d?Oe !h+Wx8\3qc הhPRLodՎK.}-y`#A'xeTgUh | >@w{Ѡk%Eg9tA6ɀHm"N) HB &@(cЈ˱ Vyk2%1,82`\`D?y?zaY8@oXE]%ܺ}YPYR 2[Z趐_\E^^ *mA У3_2m'{!g+Q'EƜlX];Ш$BvǸ8ys"[1:^)[O cͲ5 u?w{2d\lGH5h8]HёY.S7j<Po*zب$ȹ̈́6K!6d*48)K`00xo8N6I*.y $ѡq6PG},႗fl"=!Jnvʼn/e$dE(nZwPGm2ZǍFY8?J$*G3z>O} E?O~&ׂNykc{X▃⻱@)SQ;1@{nz,Xp;wԓ0^bX6*$yW^ *sod: ?#Rm1elW)m'\HJ iI#N\/M5*=e`r<"vkuOpI ld fٻuw 2sG2յFo̟hlףT[ڽmXʰAJ_PN_N0ߘ!@y*lGs0qn.+z3a4<=z*Li,[0\+M xSv!< JR_y"Ir%TqTk1; IT`/Ggne0(?-S#$T9+d4yƉ^=2>6H 3*UTBurjަ.@ $ڌ ~9Yiij$yd BCML=Y'! UZxd0_vݨ'/, &Ժh#fbkx?R\;'k*@ >. N !R)kfebX4G7$ND,7{ Q*71Ic!YL]vz(܃)^>di,|nIrzv,x02$_wAƯd>{-?7?7Yy q4LwW+1}eʫ{ۜWE^ ڦ쾬Dv=hx _K@5'<-/E~;$}ViK@0*{KYDSԜz7l|?4<7qpc5( d.GXO;U>|.ܯ\i r.0U0]{x$V-C$=󃻜$‰=$R` LRt\osxb,6Z]ʧw+P9(_ۺ黝L{$w+v7zkJ:kl}#G\H@!C^KC,0U7XwMץƫzPʛCF禷qfqD3GJ@SIj[RA'|zmj6/Xҭ/quT~QKpTNl+p&nq BPyZ oٓ>\!JdpX1Si.E@ ?K1V7}!-]Ӕk A%GǼ ~ ~X9@ Dp\v[}gJ&3#={C䜔0n|4C+k`DW3!bWj AD'nȩ[ :&ϚJZZ{&kBO ~)<]`Ơ!d;qktu<0r{V‹\sk.Հ3)W;}ފth6ylNB\l??RXU-h͑>lBF+ۀ{8D؍)gsū5SxYUehOyx%.X'=2L4+xyypnŚ. $>460O^γԤAOT ruqKs8~nFvBh+JI5x #:|H{lxzEU,(@ :" K_&YƠ_xYNй8rzAW &t7x#@gH)% DUw6IW+62) 45&w?\ݤ.}Б8R+<&#$P,43|L;*]efdXcIߕ9, A̘( zx[fp%Ii7kBe_Dk+ǹ ima5d; aFd >Z*u,ߐFG1-L"EDꩩ @`CYMhu`O;+d魽/Cg xo(k=>~t0]ܵ]J9t+'!'a 7n/ϑׯX1:ȗ@rcf'i:r\nX Sˡ {dXehJRI;RQi*1Ubj! DۄS_kGg]3 G5 BJ6<?wScTNoBd\))Ĺ%ԴW4e )ʦ`0dg?M4_LQa*6o^+Pꢦza?JZ\.Q#ŝn=ML1P@~sZ+2g 2$J7\:4J67E_>)q4u#fL qdMo$cd2#YoGp תd4DHhQ2Zx׭5, "EbP/0z4Ul$\+oiw^fB-3x^P7H)E%TE ق&1]Pz.&C>"8<l|j[ߝw~ *xcW*Ȏ~ר>BD:+JlVS:3zۀy IAD( .bQ3!h%hڕ-X tO)S*. [ 7o>&&!7P4`[;'k-ea3Uݏ{?G֟ ~WA׸.ْro@N&{%;H>_Bڗ,_t (aP!4kfs/$frscb> iM<Ӡ|eTӀTn5sZTغ Aϱ!1pfho}LQkd9_Q:ruM)~==vIpO @7C3r< f> V"EdxLoކY w?@~97{S}(3.YLEqy`Н\1(;IZ;oȯIdYqȥ X#QjAetvòV1ZFYLA(o:7?C;%n;\s݉ƸĢ5B'mSj= BӞ 12<\e}Kcu5a۔m0[19WեJҗ,08?Z< -(O]N^bσ&G+Wl zyή un? Њ|]GT4igǠ)%r/yJzcNNr(^}/JtJ錹4`d.{61vF omꄙd18uu#Ш^kg}#Ϻdkmggr":x6"[I+;>ϘR<תUxoawLx#בjGVN(eB5>pQ%~n *=xyճ? 5^[[lߊd%pO0~@s2MQP]!&KV)U+ӛ@エ'*ی~#yrC·B[\GrIfsry[Ó;pZ jOߦi$O.2.?s9F[u8)!ܒW^^V^\mtQuW_ QmE%W7w䱜dK)H߶~@]a~ePZ pb~83|ޖAEA#um|r9Vcb/4 +Vש!QBOϾC~B8{VL0H&{G%`;``T)5)d@mwK72od;U%W98^|ݴj\.s_h#I= n4i,cjg#X??axޑnA6vz52a.Uz=ZZ(|;{[S%}I6T j _D+k; (MdR_ͫޣYBnRLɷ5}^S:ȕlQ: ec͈܂2=Nb G7 fe#/"Y^Ô:ҤYl bE׽iDP6gc/13*Gq0[Tm&S=3v$52flVU֒fT\$ٖaU5m9Z BkZQX*LF^`ME 3, nAj}TI_rΑz4_SɓwXxh߼ף9$;BA@pTX!ӍU$>О-kr]S e"JcʞOoVc5_"3#;v'!ϝN[1"><]oU9di}mݕ.#7vT_Km@j)<>Z/ )6v2+1goՔaӒS,27p'%Zj}\XBaVt`yR4(%А!52[>\ʗ4M O90]rs8?2BlBKH}gQ f_[Ai`rQk&3}q+ GDe6^lHx63_&%K[7S>cy=" g801$r"ִ0E8.G4pQGa#@i9+q;#Y;y]@k#$ٿ1kz^ebἌzzm џͲij8L ޸HzM^]Dk ݃YL-;q߬n/4xxo@?}ڊKFFَfWI[W 3|؉i(y0L¤Z'?YM>i 2f\Tn%_Cj?}n\OO4-P( ,`z v#nD8u"ڜފs_yAۘee@+ FCڣ3>м|2Q`9'*@IxzLaF}J fܠ s_Yz ^^bu@ė`M%uBՌ !G[GvB"5hw i:`_#cTY1Ś*2WlpC)8S~g'-O-& r"!Ǫdt0%]w Gg-l`OqD,FJ5qTץwan*`_l6X%[kt .%oj%j;3sKl\U+6H%/eyI:8>sPxiI"lCkMŮk!vP}7i7]^ {0l_EHM Y#Ci[}X䈔n/~0 aȊnS {]/?1٣G-.!h)^X|'xMWh JZm 8ڝT2Nz[*V?`1xIO F\&_T9  1掽patmex[$J 80VTȘ`l>K ZԛZuK5?Z@ vخUmVA66r[qV _*s5f J9h`@I=z ?ڕs4USH2_M(PuKV`|Ҧ7 Wy T Aq] q<fXQ,)Ƥ>Z a٠8vm,HaLtd_|9Ӧ.0E(L?&kTd&o1'h:M20xQʛ\w+4kvCljAwv%0">oj!|lH'b* pWwafLBU l+ [m*tt-!4rJ- i@Csl9@۰Ĭ[ 6A 2pi kTKPS(Gבp xX_a&Ҩ\Z{eRԥ}6%c UYOt6]u%;`\&RkLio`kYZB-LQص!8# p AnZhiA /+;Ĺsg'gV@W?7&vaF,XX4 CꬆAX;>uZ?AtH&J ឴6X"lіÿk>x/ҒbĒݮ-t9ы8R5+.M޹M0kBY6i0Sޏf"gﻅ.QpT~vuX,tu~gR)W9zhh3>c t.i|53nٰ`బ ;mrd <7ej=B5  JM?_]~sQut]#3Z[֢1'@\}!VO5ֽT6ȗ :5z_,]kF2Pxu^5"b(x8"AJzzHOd%&61ΖSQ+{֏=8l! *W=aӮ gΣK[~ S yTʋ u^^ܪ;yYr~ Z'uM&4vo7r.LZ\ڹ"D55Щ)jiL7#x4Lsdvιz w}kKg9%7˜?J~uN$W_ԼS1_3zAeciq9L,Uqo%%ϜQF2l{!k+SL5bCBZwbrqh(MjGkr9ދz'JTq̓8ak6;gNֆI󘈦ym{鉎-;@nD1LKB1M@]zvmEM"P+Fmo@$ g3ϔҵ!ׅ9)lb?:B,oVVÅ4Q?B'W2 vTlQS[XLA$|4|2'\`4M B@u{"V-ٍ(ȸ\D%%RС EJ4=uo DNR Ԙ+t9%%ǥaE2([Gj{GNRNhra[`v3Ǖor "bl 9Thr[V9TZoTJS|@FP9YH++go-DqO R|(h4%xeQ9hʖدȉş^Ul9B=:/`.S'O# y&F0VDZ ~rm}j*Zǁ&$;FuLfVBB{i9%=?uJEB(;暈dz`JZ}>y}Q687J-Í 4g+ Ϊ@FNBG=F GrZL  a_WVm}$ z1q1uÎBӒEh.DX<JG1I"7Ԍ#)ma֭\mLb9xD " lOb"-s$t.=n_%=]B <<(yӐ lX%ӇH +ղ\SQ{vk lX.ʬ A?.NyY?hO}n ,د3BF;\Je{U/?4~,gUfJ/cڕpHd~fGg#F#Z^';R뒲yv,.eaa!bЬgѸ)̒خ퍻 ỶOD9 3\$kWtqͣr/Gأ}#elRo[ޘ=&حilW7\aT^MHAt1 *,tۣ%a|p][C)biqi]T3M doL p=U4"rvS ).بuR D[uW r0M4)*p `x+#~,oKES)}4V0kS 4T|Nˣgu&jgrՔvd߸rr#h lJq( 9gpu,̥FQo63^&3!ΐhM݁ 9Cr, 0_2o՛)-*;8ދ*B=@N깞}]X =y,)|X2aa8)_ S:p#1'[,S&xKffe.ss؇3]N.fhx[͓4@eI3bq3!ad>}GǀjÅYQ6E W30@ԖxD7/E&  D!Ũ,~Ӥ@95fq /̒`#d$"+FQ4O rHso`MmYiU{'d(g lXfup;BLa7s og̿& Om;<Q6jY1w:xGǣEهVQդpM [Α2zwS&N R3K`"S<‡هBFk[Y2- > |g+fi)HG8 Pt/ɥ!O}-S16YƅU^#p*[T7LDT3CwM,?|hs-q|1}~K `h7xQV(XכUר2N/ XIjx\qLHs0=uA9=\*Tiǖ;i[_ $ 02yNxoqj`& JRi-OK ADbEƮ 1a]Cբ $}#LKJyVqxjݼ?;Ď֗)Dd!aT*#sƳ7=*JyA )>=_ZZqmD5#p1dYQFܗP1JڣW?o!g#љb2V jN_ qkP*# 2wXw@ ƒjZ?a^Q0;VtiߌIw9p0 f ~zj4F 5U4ҘHknNz] 욷&o?i DRzjAM_7XTq2iS~2zmmttĸI6fV쇳BkݮriKd+#/eVFmq$vuD[Cth%q\K;9P"I&UlENAKVeT֠K%g৹r<!q}>+~cL|%li#ÿ'2j@4 og"śn!7P5Ȕa?rrL>º~^g#A;w^Oeȍ$78g ʝDj@LH 22&FՍOBwpR)^k W#HCѯnIG]L°ĜJ*i`!@GyTArPhuUN|c2?{ jd'c0'¢vY-f+w٧lHhEu9-_j*GcJY+1'snesၼsX']6H@,Ҥ21<.UX[O?v}I x'}xg5Bڔ48Z48ǝxi~wK[};Z?Z(E G &.DTʝM" bT^(XoP4DL~9ieχp/]%QctlbK8Z_' 8}wZ$w`P*3 d. R2oZO۞-?.Z5PqO„?:fd%l u.Y@y8܂ 9]QJ"vV{BD׌c2 zjd,JLxi_B6slc%?׃s jy: ZeMm)pYy,ޝsOzo+X]@yq;.'Lq_>3Oo 2i)5?n3+t3%0l]9[䀵_3 LӆH;,;[Y +TkDzl h<dwr(ź"7(P?0V}Z:UG7v;OvyuBJgDIO?nR:s;j/=MTgJ$}sZC p&X9ڭK%k ۬%NO&>tT;4ӌgъkLKSw!ؚ dGW& B"!1 r憚 |.+rg}Ӵ=$ܜH46ojşqe7 E/FzL;}dKEvO9k^s rUU' ǽ4sg@qe%<9 RBG5]' Dm~dZ| iɮT5L} rY}+fS>"fK;OT9Jg-%g ?YQ"eml,gۖ1x⥲EG& ~a5 5R`+vAh t%Tԓ|;j!'Wn1iB82vy7F[o2lRp$T[:_yh["Z}ws)ⷨ|I +)LuhOG6%Avt|~ ǂ&<6aO ,pjN_CА&S3ץQUzV٣}}/?wBg6 X6X NYeE}exbO Ѓd`MuP[u)Lū&DƘ'Tgc"Dg^h鼵֡-8ʬ ӏVR.6]l!5A.?nMס(%sAO$؝O[ѯǻB.ayccЪLq'NMo{N5j(a~i;(}gDa6SH.9j~9s/X+!sJ#?\ !> {?@myhd2 $(]g B:ꒅ8kqUZ`ONs ] Aβ+5 IKfd1Ĭw1ZVΦI'=#5mfw=2ݑq#rB0Ϻu# B)ޔ@sRGp#; {xZsi/'28j/O@7#w 4zF8wikRdSA A=cfȯ'1w2ujw !p~Pn~5QiAYy )Ku7B0ʝX m@NWu[gUr,WLHP{9o>4U!Zl/{P=.+:Nfy5%+Д6B{Ǭ9)+ce ő݌#0ieYY&&-fͫqpGmD҅ͤmxf}'W3|I}l-~kN#"!П?րt<5E^XTXE'pu-%^Jt)%{#N ңIXo92O€tʔ ֥}DǮ']䵥UxLrmb /[Nߎm$> e))KT`|gOc$̻qwW]N;$%S~d*&VSAŨ\lgUQ|otC?1Pv"nv1-mR)q߮mkNNCǬbMH]&hr*'tWj+J YvA*6ݮyz_ɓtw#Lw`Llֶv,nf^J9)2KD&@ga<إGQ d?#8](rN- Q b 2e#hW//*n-Xr{kxN g- 6z[:!ENڭ].L4txOpO@{K ŕY vO_a4x'v;Y}6x7URn ﯼG*=GN׶i=u^|;)уϟ2rc$dtīySq!mm<,D̏INB.O pTݒ}B`mǝ29bN՘p(v }1-w@4jo;$5+xh [h>FL6y>cG̅dy}6yVm6riMIkIb*&?IըHtSaGN;Ov6tL_5ϓ9H%VvB wi[! h(Goʫt`6<Opq)XlRff!}Dvq67MFcVu[v0-'[)xZ*k/$(zVݓä́/^&&%緢6=}!6bϾˣX&Tܾ^}nn{oWH ԉ(>JE>qc%DQWۇ/-~>Trd$*Hsr!9a'9 ˩U躏xB&L\%_]jΝ$9C\T;Л;9g2yyMdS.gΚ42m˳@C ׫O\9qUS}LA qJ &[-;lߊO AFt)W[( 9Nu>PUXV )0QܮڶeZTН*ɷ7lMN >I^qv;ďht rCl?"+ogJJ0M;kFh]nYs>w=0'}.; |}l9*mXnN+퐧`=.wՂ;$y'%E]vUzGtHcMԧfQ';`AiQRfU/]BiP.蓲* 7u)+mfEkgx.Rf413μJ%rg+Ӓ. |͖~XRG@R*X\48$|u$?(s}@^dP\0+ܛ |b فfuޫ.0da.zQpE![J֪ipJź.Rfϥ0sṟopry+iʂo7b䓣# B kbZF&jbc0J9[KZ,b2YF}ݭ&XD|K]|hLZ3K䓁97W%e@` wF,bqX -D FWo2<xH.֕8.s@1INnE(!;Q]v*r%=1PRCe.$k鋯/\*Ќ @81`Uǩ> V~Y5_|:X}.ՈaJ?w* BGM.|qd'/pBZmTI^_?e3mĈnsEЕ%#9\UE_?8zLW1~Gm{*oxna8*3d3vݔJ<~R4d^;~_ N&V @7yoet' i^&2ኊ?Bߣ) VusOMTH?l X9xsdvq=1bHѭHdA/ /xlZD[=(ز"g,p%m<Oź ZJjOIQ%^NR|;J5\ʫ3ĨEڭTiQj0<nc>;MAS G fdpnTE›eh i\-5U:gR/zQ<*q[aHs)aj3 ED" L"!4؉SVpNcS51Fk*Oe^Oe +eFmh]t8&"mIR Zoi᰿\C C6&! 6R\%*Y!Lgs[/z>}s_?M3u Uvf'0OM'Ʃb 'P*jK TgH[gŐlZ'C#eDҨEQ.-H=FfziG[9ѓb5ީ%V_& \Aw0c?ηz.b+˒@1-&izedցq셫G9jfDzKg+FEBpk>IUn$gVx5`LZKNrj~A9Tf>cǽS&9 ( α0A>ic9lc3^-kC=kºc'Ć,6;/-z?6rKIe s-RE3Xh[ȵ*PdY5}az(xgzZ%k=faЏΦ> n`|搲@H. hid޸DܣVSBLK^~Q]#tC ׶ARZ6X$.UmO!1?M#yK` =Rk>qnњ2Fm\;Gt?2/! cBzi@l?V`=Gb6 qxgdHca1 †v+U1[NWL$8ߎ2y$@w̟2UV`rRooL ԊTZJEtБ9UMuyVfY}N8b8H #zH-hxAp1>L#& S@׵s[jHPI4ȧR*w4i5JKȨn\|(}lAOW-J_[>ႇS%%FOŬo7"rI+ֿ^pFg+(Gr2}wçǥ4ńT1rӴOz@'+&E6qCROpkNs.`7!ڠ !J$,tv A hLaa/5lKhPg~'݆Aw*jewcB']}98Z,*8|ScU-EM-XrNZpSd@0um3,;`bxM:H}S];Kq%J1.BP4/ h4v02Ж'eJTҶ<)YJ(9_b攠ay$[81W&s!kN]ޟ5@2OXA V% G0Iqxl_uxN-/ks^3?f~l4a :]@Ԅ.ΛYTDo)}sY0νCd}{WQ-ֽkFP6 xUz:^wq{Wy!Vjb]l{P })\2a$}? שm:=.s A=4:DH;PC& E2$VVi}FkM|-ïu=TAFL$cgċNhv&Rlqk._A)NYKW3Q5pYSXPjp)J~4D!iXK"0$)=N7xkj{۷wjy]vVO8RŢЇ~qؽ1M[hr qd0paatb>lD>þ_ۜ.l?&n6Mf\=@L{U5h 95E^)/4z=r9J1S=DOI; \>P|y4kf?GNsESOxywS5:=g7zE΀]PP̥s2X[ +=A/ԈHLpTrt+]~c/w0SBN-k1\~,8iJ?Mw{0IbZA߿# ^E f+gcn{_1jR-A`: pt#33 L8>?r<@ -bKrϳ)nNneB%Fb+m݈F+Jz@iM(.8'Uu|CϵLg&ȱp"b7fHDȚ3Q1 ibcoy/xnaX_@!c|$n_Q@ۑf˛{o>2JF)H&='Kf3Jʙ="pk. ޟv{6̓ .`!J&v3t: ן Sλ*AK ,/U/;k ,1~f+ZcAP^EKGP;GTS_- J$Εp6;0Ա v5V`(EdǭzuYGN.nPc`xt"AUz^nn kGk(=, a޷-u|ץRfPop֠qdsO\Y Z(3X*|,Wj CmW,?č&!pV% Wӫ1H>֓MR,;K{j1`[z |j~)Ȼ)S#R daqU'Pa5^[9^Ws|)Gf+C \,xm޻T`M"An| 0@^*fmI{0Xõ}+dbx:ḠnHlUqq/*d1@J^+dp쇊/X] %h\ڿVY:il|WJ=XdiJ_Y=_Q6T&D xS#*u]}t?Xx}çZDMnuJeS:F:8{T ?Bv쨉 oȒ=f~Z28uFтh:â?_4^>',-&aYrCE`roɥؼ1Jˉj=sdhR g\e%m}tt "/%5vAj{FC5 'Gt̍̀- )7~T1wYǖѫe.mm8*!Y9m)0c ƴoe_O+A&FSߗ0A:N)| ^6혁L33UUt[>rPsBSIs bbIhxi+>)=nP~*ݐh#Bk\ZmJ=3 Sρu-l, @i>P2|k ܹAWpHMz'"DS=!X| +~^6uT-%R 8  J)z7g-LIw# i˳лe)b +óA˜]ު͡~@=*aIB]PoexY:blUB: "m߰qQ0fwrk vӅIN:NX .ej!i1I~kI|cd>SłT1C&kUy(a ,zZ*|-W {t  - @xA2oZ Y1Lڋg5 ~A&oyqס΢ 9==ԃ%@sl+BrY葷#דVzܶ[[&:#l*66{bYGB5no# &q;f̑O\2Veg`yK{nafҟi yA  r-,7 apArL}= 34 -b|9ϯzԽg -%S X1kO6dwLT|bf*+2Ʀ_ʬ[dtAA^6A=%maFm{HS]_kR֩*kwR5]22)&Zh& 8{3ϣwb{ZKFK7D(KRtкٵG3$64AL֑[>g_w3(CE}O;+=@6G-ku4fJɀ[3C+6vlwlMB V!uzxwYQT9I%3碾nY`DJo8}Ŀ+t+";5EL -fU5@}:|#5^4%JAr_lӄځ?b Eg$5(W\ζc2M/bkwA7fia&f{1əĸ=p]Nr |g: Ge\k,SbA!)R|0F8˿'>wfx_N !qX^gx"Ue>jjBHXfeQutbjjD GvnC+ÈGvzzwk-*ڌ7hJ":+5CXOif ]ۋ\QM 1plDz$UY%uٻRU@2j8mDPnyT$KZBAI l'd<%詿-K1{$=<>QɃ/IdG2CsgTXcz~mDmF@JµhE׭huIfmZ7ݲgͥ Ήʈgg+#@\ iWk6:9ŵzr|JrzU4g5o$'_lyH@_BᅌN~n^Zu:a!%R 4F$"^|[ J*N/$:/HZ9.Z)AB/+ -~^R!l?+_g! %Gq?|Afo =SoN!t 3Fp.,$t{#-$;uG+5u-"LoeΕW˖J/*OM)҃ I}0ZxZ~Z P{ J5?Bt~Ԛ9-y?aEI|6R<^L"褗)g,%gTDz< r"OP!qg]z)c6³~U \_J5]@%ʚG.#D }i&AqHXzV+ 3]WX:D=zJebdus4hI|L~\,Ó|9uk'|* Hondl?Jm1=e>nh!c-;1&Q< Vbyu9?p"YV84rnZkq#JOr5h*ADM_V,xNRܷ'AkBt^k:a 0E N#/׀Fw:gnԜr-,˽IpZ{lkPG}qMπ`l(1SN ASZMCiyMUƼTM~㏈TLGQ| ›:]V)@qTxۅef^A4yVO|ہ+`Mwvs 8z^x"ow62MþgM!V^_d9@.}3^p=xd?uM[Gv^H5paSN1̏ʴ{ku$m}$f}K|\ri(&_pk %aêvHZFX4gۉNMMۗ3nn'Rx7El!-+0&2P9~{e dqU+)4 (sr7:A(Ud}Z i O FGkδɌ;r~UmV{zz8~Fk7F"tXj"ɹ~?%dS^#/JRW\4G:'A,8 u:~ĵx^6([-*1ǻ֝IO)LQ7/0P_8-`oaQǒnUf%ĕf5\,{ixۓ y5^KH1dSV2 @{TPa$bô*5W%1S6 DCmڿʊҵtfiey#"JVyޏ6A ۼQ@?Y`#Gq cȡ~r)p* &𺺿%hÊ'~Fj@' mB7I5W<>4*qxxo+ JQp# fSTqfš~ kr(VyRdWq"~'8½TN}90]O5L[tށJh_FsȂ[=W2xJQ"G WTSЉj6l6 Fon٥NMWligj에6waQ[WծVFԒ!ۤ=^6PE.WIAYΆj~܊ t.!,B$?؍Cvmq=.q$;IFQeS 8k?ٳ A)VfAսC F`5 ashp0.@e!&F-45_,dxyD<ѽ&>#U/QCCBvpVHP~enF 0EV񚄱a~PJ "u_bi}'i۱sL*|)^~fH p"Rlt `!4}KM EAcޭWI$ŬɇWv& D}jt€J u 6~ưRbACdh@h +ֆCJ@,z.0Ɉ ^K|}öffUda-W迖_s㯶N3y@0Ap ⇜꺘IauZ17)5W!J7aki"{!㻧NEGe;<еo^@,ohv;Gն -CO9u !vLC^H- Kv޳Ny8v1j[E|Bj >QQUBkIyNJBXe Nj>=qTX4N#HpD|N7b=:B_"'qLGDJhWwPXo,DAB+[fzb*&ZY۔B8W8[Hz幧!w&ؽ|};بn!a|eD+g\ 6m\O 5Xc0@úAwbܝN SD=›*(?;rͥNYT0oyZ0kuPqiŤOMt!OԴ8#-lnT֧kx۲i4@-{?huݶ;*'\сGm;qmt}gyI]T* 46܌KS!PKT  L T7׬ŢsS l`˦ e5'0ɇ{0:jg-7O2苈+fd5~\R҃ qqr b.$_lF{@2jڈƺ 9wLQOL:H/M%iXHC7&(eP6N5{ïN"^):T#Y70OoAݬZ"c 3ȱ/a ƬguaYF:c/Tu3с>AŦ &B @NZ.K~D>茉;v=E"e[%yV" jl9\sX>@x`k0dAwaWZY@U 3i% ܟ1˺|(CT0*%xcE.jxI6W+h-zCǀ_qmWE{+>Ӝ ؿ(~d[*lt;rG ɀj].F8+zW'06튋KM6Z,f:i"{;x3S@5O(OTKOL`VbwΖӈﱦ3 Kr٬4Z8_Z7yY_?jaz M$Lŧӵ?^7So{. I׸R n0|,jci `Juoˑg,&( d@|?D%Dї$&ӡ;U"lN鉪OIk?h?+= i@>GѼrDX^j[TݏMiVWvR<ɓE9I+NvNugݚ/Dg.\LI03&=}(46iM&wPS*_/ǁ#5v{@}(+kD̤|G"$9xFQijhɏBåQ3'4"E /}MU̐52`;ax;ɱIqƒ5!Jܡя9&ORXB Zu .Mڸ/ˎl<41 RHa9?=i+T0ea^4Bo;6-Hmz3>L)-MU[F°>ňr7R9!QzYo.⑯1|6*"D mϋ%,Bq </eK:WA_6cAyTuH[8DCM#-ppxy79pj{K Axi W bn3KR>mO#Q ۦbZ\?M+Ť=xDIAsX4\vS1G.%Wݿ~=os5t}y<鼫Nd3_}gHt?As۞sC)>4gϑЧ_mHa^k0{/NxtDK2 KZبh #;k8bT2Im`+c + v\î*>L'!2V)L%fН ކ`X'Um얄/@UT^܁JT6uķϱV"ѽ{%:jDZ [..| ӇNn+M@,88O&4KsKK׃<_l0{xѼ9Jdܴoc~SAƣzim͛dc [ֿϮ h8Mps3oa5g Xƌ ^Sc'UX}h5 "q eFbf(ӆ#s&oarfsĴb7I'H4^&zfD?;7&:@{qcQ ui0z߻Mګ[4Ű"<KAMr~ xaܝ=bүK32Se1+{c eg ?#gዢ` zklqcDVnaGk&eR,gQe&=E(l$ HF 9(d5#ƦTJ7!HO:p+( Βw]stf]-3dz?C 4so TA w,p i$ 2~ǮEL2fIgj9a.9 /b0=_#Q:]DSw&w:~Yu;0ndȲCqI~/ʹX ,iLܠ!,zVvbbgئDNZӀ-iNic҆'~ǵ(jggAQ*M3`RpDTdF`6:`KW*ڞZh L<$|v Fh>s!&K#뻪Pys`l>ElKa6#n]$KynbFkq)<Ԉ  5]14vC};u[+"̨l @[~nu*!ؑ5*wh¸Z.2AS_qءou(<3~NLBdRFnE)yY,Mĥ6"{f wicq2L;.~=ȁd hKȁ jQ弘JsHf)+RܲDV3Sn׎Jc_g>ԥċ@l6H"Gnا+ٿ4UvYCN`mODӸ!ȉ 2FLvFPAwl&+',Q:ꀿ:"Ns{|[&4ʩķ6!@! Q̞/>;b{=H ̲Lz!}]&Ð^F-QWu3<`me}J F0~=0Sj Ae>Nm7dJxA0T B#7.,jR`\+c,>:E.PId1)\MOŘN^CfI*{7rygvu0(A0;m)ק?7 :S.>avzI~$XQhMf* Y? ]ZëswFT\I8Ud+XQve[ ]E hZ$sE:UԂf|E>Bz.N>j8!/ń2odHCuOLA?'D{f9˴g31ջ)1ԡS;ufbT=SLVH|*@J_D 8x~/TY?7bZOUu\g vt }r: ou+"z_}]+"+JM? g0Jٵ%C?؏k_ ˊi3YHN %_IT~8[~;`zClI^DpB4ANlά϶V!k=gcZm/mp6dC= @W➳A&*f;ѱ\dbP׿gX!&VLɏ*bW0^Z8 * dz*XsBC D hVbe#7~>Aj?==iH },i.W0BVշ6!Rk@Iehjs?GxoDt?* e7q;Z44Ё؞{ M7KK}>#⸺-'`o,w6ʦ󿾓R%9$ߑxժ87_ˀilPy6t%vX8/M:X)l.2QAh6v7@g,$:n1' co+[6c'ƜZS=XgcIj29KjWZ瑷͗@C-P(${-@N-?2ABTaV s MN^$5F9k1-FrhgH2D4\ ~>k/n@D[3Dq|wi|nT"g6o2D~رIN\OdhcT|"F2rI{#w\r4_O~U/"]lOd?`铕FIUړ0C}Uk"|Ѳ'ǽ Y |&Aՙ]J:A$5ݼKb(KJIh!$M EĨfF O JH!Y (ì*H,hKC[?0Fǃ\)vD-Ĝ>DO ЏKn!fEixiYMX X3 !+TgQ"JdDT`r!F@(=(41]rr]pi^ΧTc3Ak; u~X Js #_kKvgX,ʍ7٨pG,HxW*{۽'}os4|Ku+VtO$^(F%d8TOq]MR=J{ڃo[;bޔh3XFK'h*91I%$, 1q]7{n@j?NL-b96=t15RL*@o\2CLQIOyrX7؏`gO8,H7ojH¡RjnB;r pfNH+sm!WqwR(C_7_=Vpz42To \N)P#z"tK)$d$wom_YTbd8o*.id$R"yQׯF4t/Dtq!kֺŝ_>/;_Up/+ Ze^5ʲ m#Y\DlEAxDYmTG>vk]<qR{h3@S?./VFODt|k#+Nk'4|8iuKy/UWtȞ6tWC_)V&r$rRdgӿE4lz;"|<>tMὮ|*Lrc"V_9Ym&*R;տ}S-l)Lt{R"YUAhI{\|Ɏb2Q*_5_gDz` J}P*z%kexO!}A9L>o%|d}vЌTQ4o0IN G94Zyy&#q\v',/LƑ\9׬czB[$XV'.hA<S{]ut$_^G UR5>emieapZ@>OyO Eڽ(%GoHzkc O((FxtuD {J) k;&jHtЀ `N(?ԗi*b{hzۈ)y  'cu9wb|vwfcNh|,1BB>R>2/GT1(N mPߒHy#.GhS2P֕HZB@D*!9_[@N+Uu=xк@IPhC}yi&|3 !ǔ$K "Cs]Evu^9/ꁓbP2-e`>QR)8c\w.n\e9]]OXMK[r2L|L)S1 rIRÉŁNCbdlY Ƅ5þM/<A%;q_X'_Vg)â`&`Ta(E y&,"5Jа˜T]wrXq}-6&MQڔZEg/I:erB5/{WQ d gx` V"3qm5>GˉJ/ajPvX_E|}hKIc,ÖSޕ_wBi/UyIm,yLc;%zCvN\=QCG:9"LS ΍y6-o$`3ȜZ0=[|:8 uSEspm`J۪4p/5)O [[Q]J42 ~3hpxVBIb_3 #A[h(uݢ!f+ )Ȑ{*O5ALi(Jm/0m nR=ְG+w+V/}\wCC/5~Rwl\TYhȠNGr_4KDv>M: ׹u*^ K &N8vE O([WT9;1(n0*l"L^F LM2[pvR)_%,0制GIFQ\7+R7!$2/igRp[aGwY\A<`Br9hzEQ4_b$B`B<~-lSJUDDjB¼9ҟ'9M>R#,:fFSJ8wa}`YT )}hYG;+*O2{\ef9tt3mpjyO"R6f[ec|jrJVaOBP ӣu@dr1oĒ1aPPx}'{2/4yy.$1d١mp3pwГ,U@x$ LJrY7nHe:Y⸛ BriHhPcMO̿n/J9,dj]֊y{wpg)n_ٺHr^|ҳ2K1 T?=ZEQc=qv5|{[ٝzCcʂ7+ ?cc ۉ'[7 w@* |0E } Db^ ,؂Ж6_ɨes3ܿdǦ.1,/.5mϯ< QLƯ/I.(F=&HދrIW@y_t.WOf RͰPQ>;@CCdNo4&H_ZrwDq$ƬyM|Gbw1:lg1OšNw"SQ!3U>qFAkGZ;šQ%%19!2 M:nJ~|?*Qo6J:#>f5Px44M]Hw\1JalY);.R X𦞵lP;MHwq_9jp[44MёДJѳе,4p)$)Qi:l D% qzaE %QǕͣ벖$nJ&GhWbX`^.͂P*Na\bd^t2qV6xpOȧmcQ='8wx=m>IBJ 툧l 2*%2*BS2߱g,n;I\kEI=փ'ٻ.<IJnD>o]&ǣ?$i?׍x+_26aM\7+ ?M8QMI-9ْaȁm'Pe*l| F<镯N_]YRȰDx,KN.%^7U 溁Ӡ+ٴIFbcDFkbd4#fN`t EysXK(!J|]dx̙e6XDBвU8UȈl|Y!9ʵ"zS'[F (ǎw{,݇Ģ0rSnbv=Dg3^;t 7:Q.<+Gfk6hN!HTQVSfk xr1ljFV7pQ\͜}HޑbJZu}= Qr50f,qs#<{6V1q m]WU K6ΛĆ4t\_+,ZK}d xaDʽENRc|{km.o»ją\]=211#AXd(_EIAZ5Nu 3P1Qn|'gVWC~W5|&3 ܛTblP5[* Ȃ{$!Cqk|zS0v[f >ZgW/k2!_F^[qMєMjb> \Ǻ ҝ&s,#@)W>%Lv}{rE-ff K [zȏ\q_'h/ oGֲ^A=m0J9M`-zBg xX,HJ<ޛ/KQ8\*2;2i:gos'27kU!@ueNu.u_ ɿWPE*RͩPG6R_y|LLIrdp.'"!D% K9?IrZ[;.b aPpUՁj)߽u F$68L]a+4ND<(OCcߥ;R? YA K̴bRGccy64gl!*VV/EDK%9sec_ꓝp?lav ;^7I$u `fPY;AtԆ;G,"XC1L d*b G֙Lw`;Ggj_ lx>0V~ ĹID" HCq$9/\Å[p@$ Y.<_ʠ`,D0Z*~ˀX \M@ĸ; ?bOg*.}SNzBA|yp'* yI B&E3 pH5c `Ԕ;5٫VXn|B k؁Z7_:+MTncHe~yƃy@D`۱0 ѡyCa} `4lM C#%C{DAf\Y;|*n9e$R%% ,co j Y$؞Er uǍ_Go,:[ oCB7ˑ{(.t<4Ɖo|f69'vM;S#^8k5xՖ.{z̞}W3\ Y1,Xe~ɂS0~ͺ^tuDiǑQ}w܋$Nߏ,n6JwG(ؼ\̡R]AwBF6p A=*lkz s*x΢ ͘Biz'ZΑzaeqh9v(/Ct¢d~uޗθ=l8!;h Q*AtVZe! %dJ;z _%_v^f>ݖ)?8UХc[+JZ5I:Tt}KDu? 2g]8ߣ„ 1O8\U+;B8$eY?M7o ysXn n˿ʹ<7N]Ð5!l&%s.,Tl~7 n9 =T*՜ih+dޛKUY^8VAwn49IGTw]!IWl{lև:/h:mCb^2D .P #GT蓂xx6_#ZA ipː1ኚiyVK]t}{+\Thw*aDP&Sd9SĖR_‰qcL7R̝Չmd J M,H$x(\D?,A(=x(QJuu/iJ/I"? +png. 3wyƕJb|Ph/d^ 1h#~?\oLgLa:}4 v. o#0Ӟrn\?K+S!>`VUܫ::a4f V&!G¥mrTn/#+xճ6k̇X]}껤5%a-XОXR9/`,@yW^U y)>ZZ=*ʷQ^K>ڥrsH6Eowehz bQ=I4\[~0\K9Y%p|[e>4_o׵|=AҞu;Tsc /rК?_d`rvF~ =M;Ee5wENѥRn[Ĩ6'(` 8m[m>iJ<257J k׀u㝟7߻?#8d l2Zp8[F]7vQ@;YW)ECaH+ 0 fZ6l>&soJH7(ZkpO].CQg:U75%Йg&|KlY撬u]jY# c\R3&ԀuV(X<{G^}<=+/f "Ss/ˮ}{~q6KA|*))B WOǷߙ)}qݬ?!:VI1th15 AtGf ""o(W.a+T>A{\#wּ͛|}wj SamUbetzzU.Z?R<}?5񁫄0xZ;!;4OZlkZiO%Q7mVpz,Ks>7<0F ?rZ9Hb23 B "ޣM}>e㭉ډPdŹ1O 8C9wNH̖J|e H>:vE? / (Hrx$ t,AFA=L%)ԝا0J=͵b:I$/wM}Y$ !w +Ǐ+ W>Nx꫈暸x_^dE:4CɅJ{\Moa;vy MtL V.F7dfuOKNFJ NfNx#~ێ۶e[\Davuu^/̤ᒹg:]gľ^d+;q^D䀵.郲gA@_k|kz5ꖕb2&Jy EΩG#oJ0,KytL}څm~Df)Aa+\P:: Ht~c0CKܺ)@ڿq6qNgbux,N'~Am08VzU q9U PkT5zf*gTt5C" ϧ_A F~ EYcU4%i_<.Q\n$xӣY-4NJPkx)gwn[l導,V[ i 0<{aU0ùaz!R~ک#) >m Vb \eiXC5-j6zfh7E$,1?} ӺTF;4{{?K(Mtg./E: "`}s_}W ś0b$}>9[@I4PcCƴ:>YlƤG % ř {ʴF%Wdvr;3>,Yg]#GxjaS1nߧ7՘,9tz9Ғ\Ȝ7Kh!~!rUY(Ʈ,;Qu>h@uI _=6؈ڑ۔n.ZڷOy/_._ĒBpXrxqh3@$)]/x1;4naYۋFbCmEE<7pofWphH[!^l؍~K97HjV\b4 p[z0"J+J4|5TMgoSg"ӯޔۿPq*x W. aؽ8/LWj}EmwKmZr"b$Nbq\e^9Km زj~;yw.^)WO ;%‹[Fr_n_AD53|C S ںBXW39D 9~팄Oi^v?rYOꥥsڙ9' V誨Uq:a5лTK ?'MAosz2kU)-+k7v@BcA~1)1j1?d|3EHի A!T7hn ,~Nma /Tw+?LziR_IT,!H]d@FaSEӮ. Acu[ qRJ+u AD[`\]~4gxAp`ַ-v9bX81y) [3̚HIWD?6ʿa‡~T3@!2]!%`$̞KF~%Jƴ,}'UTX\E1Qss_+S_ګ֒҂ 2e6QS`q; Ƕ~4'hg>drȩqˉ2ՐP[k1/;tͻ6Lw]dL.T4k2nVAKT5 uT5̀@S"xӬ{O)'1U-a>2И<؊+A8\, nP'ΎV-,cE-\Ŷil2"%i+ނyޫ2EfGs~X б]ݫ#W 6dЯU$ p Le$(]R@Wے5%!2~0_ޔ7',y@g =` a['w-6)3>'@3hUк,3_%ߓSݱiJ i0Я* m,= "OAMo^'-#4տqlanV"rO F?d +,-,! g\(ث{B!hӚ Gl,br3W⍷B@ՏCͻW`?yY#OjqUs;NqNqjLr8J#LӘDltCyOŘwmI.TO3x,hzaL%(| TUx+UhG[ejG!jFby63G}zdl1$Њr3&._&L`1;js 7sT5>ouj1GheۀlўҔg2|S?Biģݗqzn~UN %qі3mNa-+/r]]o=z={y.m>]&|/,|JU {2хjg3Bi+z?*^emoMt%`&1cE"zmS"Ny[{XsegE`2\Ôc: )]z *3䘝zp6;. ;<EOƵQ̣N3<Tc?׽L!bd9d7E^cb5I% 6O7,,2 1W^VwD& !@;S1>0-psp+$|y&UJ'UvE z{t/9=浌FB&wkyQN[ԣ2LFB@^mTu%%&ַ ׹eY_X/g:,ǘW&ą`O`1'vZt=%]QM᨝U<,K$-/VEOȈT*Qt,W9ږ결cL usӓ_P\[gOL_G[gEzAuK\DBRO' "e7:wjUd92O5N_dQ(Y&MYc+^n%7YMi6sYSx$*ObA߰𥉉&Cᛷm(Ț͗+n #i[zE5CL%=0Km&x$,OCweU58jϿOӖ,2 >7oi5S|=Z+ыa%Li5b}¿[0ΎCsc??uBAܨ<Mn0==NwhCtI,$\\bu2zq~LĨ!?8haq=9%y] iGMmEorFoV"8J{2}K}I:ؚYP.z7(ɥQ ;?e8 "AamDc/@3\;L>|ev՛K,I3O:9);3\pڟ6Q>,a*7;.NKQ?ۖmpA~s@o\$"n߾ցd!L`ƒ(^>hi/E_&6˘&S4JiTEp+^2НT*7ok7^ f+ M` ZL5Ld+-oY(ްYLC2N[`%Au0W?xRmˊƤi>;TBijH-9Cv9-%z]qWKc̩ ұt&{')tR]y#MDJz- QʊN?vF~IM~Ym:}KV~n1fprQyfs~Ssޟ/B_X+݅=G|>}-ԣ3R YZ