fwupd-lang-1.5.8-1.13 >  A `Lp9|,*+wJV#P2?]H=ūJG?uL6W=wTΐ] H=P.pEwBH>97ν>Su8$ضt>3| ,{:o*3ZQH_u 9մϧf9Ca_J'!xmʼWUliF\J4H&vQ|u =C,C?\'o;?!U=gcm:Jcbd86db692c23e17e44e5244c5447dee347c39cbace19e3db9f63cf215bbca6823bf6e89afd9d2dc2e26af49ce00e9eff5572845bȉ`Lp9|.+ˇlhcCͼ ِw+Z;1/"~e,-h%%Qmfbze,;?KԶ.7hV56 \a1P Yg%9]G^J-3 Cg9MA,ܩ$ 3׎P, LP%$jT֣\ىvU#`oΟ5>29\:#]dd {UpC˷6nֆ2gFeRHB >p<2?2d   7hltx $     w     J d    y( 8 Q9Q:QG)H*4I*X*Y*\*]+h^,b0c1Sd1e1f1l1u1v2D2H2L2R2T2X2^2Cfwupd-lang1.5.81.13Translations for package fwupdProvides translations for the "fwupd" package.` sheep10 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]*):ꁤ```````````````````````````````56408650dab72c80c21963c6c3992568ec44c8c4d83c796e1dcc3ee9ad3027d5233d64b972becfb427857807e560c4a81586ff05808c3333efb2631911fe7f8cc29d12a568beaeb927402ae2397b914d1ab86febc3e67cdafed2ab4ce3bda390d2d76e4e6615a403ae7007bf05b2ef6fa6dedaae125e2cc180184ef9c5b61219e916dd9303869bb34ac9125635e71e18d60b0c97e8a8304c4b9063dff1e6c7359bb1ccc929ffbdac746ef0067db35786448810f5204d49507b33486cb81d99bc5e8e34d1b5cbb5c60266437bef0fc21c2b43f2ccf6350bd2b8fb83a051e66ec9f1147c50e0ba6cb99f798817c2511a2fe8458d3e656ccb5b3c7e67c678bf95fd5f4284485374792c4b2644dcc0e732b7207039f17b69141c3e9faf7139d2c837d793059eab6d3c5bae9bdc9032d23163c334adb89041a79e6717e101e3761df436140e47c93498595b665a24ec7299c0343a48b005dab19ea75e10469bd0df6054b28441e0cf99578d0ce4805ad1f973f5236e8e00ab225565d79dd5136f42a4b642118c5ba09b37ced9d03ea23776b8695b701a8840e9059a8046997cac52faa944b621b26b097056f8f44bdbd5f590bc2e959d169a2dac798305c7e9f690284c17516b1d4564e97ecb53a8d796145b45c5057742a6d59c754a1d94f595c030600a5ac2247469e5b41e60469a9374aa4dd931772082cd7ae034b20a020c8e27fdb149d2031f20255309addceddd50048f8f6ee73fa74d75526a0827c038d4f30548ba42f6adf5fed0118a448647ac64d484591219ddcac905b199d461e46f9ab7de226d3075cee6379ca18227ac6617b65af219d54e2b06c0be13a8875e3ba3d3d94b240bd97cd2067ef3960e3104cb17d7f95e62259dfca4649c085ecaa362a2862d57a9a409bcd855049a1085519ceeda4f69bcb73618ee76c18922474f1c36a01298f3e510fb2bb80211f521b3b4c6c9a6ea199fa79edd0f72148c4eaae13a7c51ae6e979e01eea54bfa7633b3706b99c661d104ef06fdbeb32b1bf0def3984cab0bb26a346ba00dbcf7df3f664a0baaf3fac77adac42fed4c6345f7ee9f0f8cd1d6cc2d6de123cf82e854e219ed3c79f94484e2c1d56429acfa37146341da82bef6e622b0cbb6eb9ddf093a7e2d000e1133a6ab3ada408b8087ca86b5483442c30d43c25534b2f015cd0742c3cac2865c2651f7a78313ff80b4e39f6ffe71d922b39266c5513a94e62de875b9ad2a93ccce56085d93efeb6fde7abc82cfbac7ab8100d0a572fd4071718aaa8de2670619a5bd9bb7e05f1114aa0d2d265d8ada298e07400fa279c4088d5c3537fcaba73dc05ba413d8e1a2a240c99a7c0dcbc9a2835ab335e5c608cfa71ef19dcfcb3aa760766f7ccebac7928978f31bbarootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootfwupd-1.5.8-1.13.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.1`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+glin@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- 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-1.131.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:SLE-15-SP3:GA/standard/6a6b6901a6dfd913060eb5b34f62e61d-fwupdcpioxz5x86_64-suse-linuxfwupdutf-8c8464d7d0549255dff14d7480336e3a92e8d4663380ed84a5b8b21ea3e3d02e6?@7zXZ !t/'] crv(vX0ψTa @kĽ]XS8 wOîq_imdK;t \Ǒ'u.L?H F|S a:dxgf+## #! VU9s(B0.#'+t; QyJ/Edm3p.;ndXʆǞDF{0`$U$1ݳ䚠M |T*\=E@Ghq[)$H uF?飤NcKa-xE3"`>-/[̼oU{1)iUM ^YaeesWviY'}gUj$of +7h)MF,&hպRivɷ*+]r(h<"xu2I'GNSǔ{\$V9vrG|-&ݩ"R&럻U^w;WkX'qϤ'CQ) D)D YysA͜g=Թ.Xzq Rj-@.f>{؍8uuyuw%(^o9>A\K # cmڌ{ 8EuNX$"Z+񗂼$ ^ c `B* 찇4B:y5w)v mz)h3[NF%;\`Ač HM!-Jy/$*ɚ; j%iC:PrAci(maWY謿煹O=Q<]k6dKQQG !؄Ѱ *Na`!*3Y^ ml<4"k+eިE(ηH3mKr -{ޙ^h 6!qE7) uل$(' ' 2ZEs<| /١g`W s@;{1=Kaf'-3:&ǧX4H]JQ0a,D'7zdE*z<0)|R IXsj{X)K+kwzOVU[C߷.kb-P3%b4p]1LO 恹 0Gy cn9=;ZkOpVAr,vv7$:UkB4ϞM|Xdg칫P @vdv̲y1ldn"r \ ;'7|z=ӌ_[*s8&`κƫ6q2em1=cqfJEmj)SFW::3`jsMkW(C.]sgŗ`w Q 9S;!AyVp{nV'lmC:n[eO[P źMF!,z):P]18s?ծ4E<졽H~6l~ xZItbMNz51 GZ!<^ ܪF쟬?"nZCT{Gi6-?oʁ(?4~TkK>^z}Snx_Z9v)+Kp5>y.m"[S Ɲ%d%kB|;7QBc܅Okh!{|(hZj%Z++̜:MuLl9)"ZQ6QAVgM˃Q:.iBInZY 0@Сs> *bZ@*>DʑS 4dSϖ!vo}]%'ԛ ydc_nb]+ s1SN:e?vNWJ{wKmȣOٹIqj")˧ni^0}d>t}N=P] ,z*䆛;ZY)~joVTHkŎ Vc{\{c*X>6iHsQVz ,}1gE^?L-gR2*8oGd< U/rrõُ`W/ݔb8*W*6C>a^҃R&[T37-lb]r[St D‡7Pza^dٱ3{C<-^PvD[.d xR'HqLߛD+9W)](mcEҜg !#|TMOYn d)Uťg*x$:F2JNIcyRӿ2syx)euY yjσɧ+ۏᘢ}D)ޡPOlXo.ȹ\~@PqhSo}BIl=@bO*4 x{WGҠ_][ + XGZ@<=8ڑa䟕G1/Um %=,lX,~"[`>iok3[S}jBN*<[kɁ"t]$H1٧$J8JNKփWVdeCvTdXY|ݖpF3}zͨ}K*̂{nk엞'Z_9{uM6PREXлG?_F]37f(MfF} &n|C#YNRcF|iŜy}A'@Sa@#%b% ɤS^&(<<ϔ^ug!VZvT)mG'0ox3lɮ&n}u8gVӛy'lt3[=O[F~ ::C[Щ >K DNo2GXEs_Q,X+3_c* -(!s:~j}R?Vrřښ4mΥup!EOU o,.I3D .~D0_{Icd+ub=مV8zPwKeݪ8z4#fvKjMg]NAI1i+BGW!|.V,9*9f9Jxg #i\0{?X񺰮׽!pMut3V5RiԌ_=#IA%`;SgE-;/tZ}:M#-B "kC\Mʨ_-;ɾ\X*!~J~ZcZN@h%59Lz^gq(6nA 4e>5/K4s_?i 8U)3 3}wEUưFHAg_'טAU>="&O螜o:} NƁUgxz(ًʴ" d B _nl|7DRmqh((_JG3C8GJkP6r,կeኣ+MC 2+vWW^c< 1$;aO<]ة̂x63^E8c6Ul>%DlŇQ-GmtKfs0al̞Ώ$q dr NMOK)>|ꨊKf-W*GTf*jia\Q~7~t]WqrxQѴ;.=$&pzh*2+&hWp41~Rݒ!ny]se;XWtW=+)"neB# Jɒ+=5s! #-@ \mK_'hqtɭ$G}*5nj#>͇ޛِ  +F-CQUDNx7nf-';ƌHר/xzLh3ѺRcȔ(~]nHoŨ\dx+ Yps+Q|O.r<a7eiҎٟZb2oM$?u)[0Pj7hFy bq*[3cڿCD͚.@O^y=#,!lޖmʨ›A9Mꎎɏ"ArE2X?'E<7Gpj R}Փn=JD! {kI%l3|Ǵ#_TZ 8C@7L0F2p[\@68Y-"#vu5u2b19eʃoW.{NIgo蚅S8d~iV@ Ru{zW ϔ"݄SЮ Iw+M쏶5W349}#0r`V:c:1#ԮZ\R*/Fa1C6GU&"sߊ'.Ͻ6y}iN #t0w%08/yr\MO(͙k2(twI҈|U 5xd? R`NICes|Ca}hcev}R4˷Hni 7q%|OR̨w)Hk}ܠ|I~{j,9;2m'riFp Y,$!BeW>-jEol34aܢ,taAz~M}Tsq,}9SndV|[+]DH'7CC q\+QG7?*$2ٜp3+)jP=1hq`PEm[! Ep3x\и%VoeҒ:.+]KMR ]&bzh+K]=1[L&ם.|[#ؗp*CMo7AС J{Q(_.eE>u!Ԝ7mbl^ g#g2m B/sy&k1^Ya"[BC !(:pNTZhBa1I$*0Z DCP0|9%]!>^fff8źpT 9cKִBzm"m}}xa/+@Vz6I~&GQ/Zhg&JA:TMs1IU;lԁP^3w//4@%Zm(9ZbaxdHnZF*`AW2`fۺսt HA%sZA'ov8>Kqi[I|\jܨ7*9wOIŸdEk7Z\ 8dVI2nCtr,-1h,unUTdNNL-~f[kOWT@ҜC'hg&vfHJPj*L|N-wYm#$!`TmJ?$gTqf pBkD=X/iDn[X BU n)pQPT/^$q;e5 靪K.#Q )G9] E U?-t,IpbHWG9"n"&ذ&X#}~GÎW.`Œ v#y̾{9ឤ/Z=liζ0E85E39M4> |QG]Mh Agf)xBKk<hX-;_Cj'W8tI/}b>\X~^Y8NX#ɩGg-LZęQx/CfݩbUxd.38ca6m}eLsj C\u+wۡeMK?}{ZoAP`)N-J^Ѫ VGP ~ Gu 7L}ii M .|~_s`oFD-̔iQ8Z$!ѿtK1}rP^].QBoS撎T҈fŇ?O\>&|9oآpdSWɸ#,hآN7 #K|[FȖ3hչ^5W T,(C"%ͭՖ%TV}?Ptٵ`EH͆*ſ2 x/pB4 %%Z.I3KLlc5$3-[:709tRZ @LD4g~=2 4QvL o?}"v,j96QS[dp!0mEͰ+DM #M9W3:t B:pjZ< {ihv8HwrG\ Sݏ%L繓REkmI֪d'*OsUF~ T< )e1A6!đg'|al}(֕#e"6/S\Z:|c0v#&賗 % m_Oo3"i9W=C!ըaQBz{N_wۣR :)B?E.(MYq8;>HF$Q,Y,b Σ.0-f ^_ChcU jafQEqr8mbY}`Fz%&ɑT|DR^j?T ]^#Yo 93GM2r+4:NX` OGnuC!OvKyZmo,)T0\Gś#rÉ+81rIä_j3'+;/3z^ׅUP~Hr'BUu)sZ<Ui9`o. lcLRxtzxD>s%ÝT N@F*Qhr<(ǮV`F~md9 q:WhQ{k^sVscP3 ])&jpenhF0H- F< pM䛶WrEȰf!E.;hm E1v^Ƙu[ v 7~bsEh#rB-GqOt9dcYQ\HAu! Q;Lhyd[IpxcsWCw~x,2L{F0l$Paer#$i[=. 3oim0LDIj%ܸq~"ςQ'H j,xJUPui'4C|C(\} œdCnsjhJL÷~%ʼn_4OV2 S9 vEGPPR$e}]mԭ쵧ʔh㧟ݮVީ"(:㎏L_i?ۅQÀY;E[H3>W' LE]cjҌ=RHj?hb"}twZ$UFkRd.6%zyXu٩|FOd? yPK^nDMqL/{"T97[ua·5vUGwQFM?$ؖ;GWtA'sp :m XMWl62@L!h_p/DVb3ȋûu~~; ֫ mri qChe;ss[=ʑm!t41jXoֲͣU [Út>`pV6jarF y!ֿ;ʗƙQ5㱌N;q D:}RZ ,*@"ٺ-v&O1oD{+lD'ד> 3K@%g]IZdvb~BG$9:6Ҽoz$hv|׼JJB]clBUFԠG?$/kzFЎee?}د!kޣczwSYgI#c| %ύ|UvɌPhzk:=% ?aBPB8fv?@i{hߢWi t RG,yGM3L $<#PGM{筎ө-Np% #Oj46.hJU[9L';q֧>߉{1IfLAO[?ԔL"ǼKPLd`)"}^L' @K1َ"/Vwoz $8!4a۲D='18HS>W*HEZ wY'J4vșHZRPVӆcTM1{c] (=ǩ]p6|M4K.C|/-ʭBUSŽ@a+5DίXZ^(xTI]GQ<"j%{k6D@W|WL@}6'V99`_9#I$n4k:fa Է8h6d[KBg3 X=geGz~We<2o|w@Yi nN%0>V+F1)J 6D9 bi[Fo0Ԯ0?KχtED\vYgҷupvUJ|W8t&~a09_׾^G8>1z %d}>EGln3+I^,؄ uu(7&0hEX[Mia5du<[ \6 Ua|d̵]JTHK7@:H{ad}{PKZNX#פZ1gbnC`rD{Yx1E{~lQ>[&= !dS`VnMYIQsks?UnLpta =Iq8Z <!1TA<$u[]JIB:1 J?mMpYW˪D7̮2UXG(&e/0rQOdSS Oy ]4.0!?>;g,Qں(NJtv %õ-vKDyAUj6р2k{gčF'W;E%dw5r Iu$-xgm}LV2ff2F|ъ_NE_XFYWEA&4t<:y ǻ8e=J0 Ziybܚ*_$ȍ{JTd}U]#49㼠sа&"2żͤ =圢'p? ڮz#v 9E"2 ލ$s(Fӷ@ɶ9 w5'#PR.#AmCEb]7-xyc/Z;Cݒ]A.0%^|Jfp^0?2.Do2n LaZ9[r6'ؓMNr:?&6C؃n7kWpfJZcZ=x/ꡱtD$'!SԺ ۾QZT3}dsgOJRܗUƭi0d4*ƃ&,4J]US3~]tQ#O % XAH|e{؟xj7y3* Z(rvp zy&-fx;w>$0y'fY*䱔ašͷ` \Cjdp@`!̝"G3 8 ڥ9EA<ÛVQW ۛˎBF/oowQd?0k(xj=onuӿd7{Qo4֡TJ bdOפ^ȡە ~χuE9Gb3|Lv#/S9|1VC4& +Pl,Yrp2NE.^+#bߒ ˎ)G)/\ ՃrwʃʧLϗK HcSNBnw텊[َPD/ W`۟I*q)L kS>[ "R2aTӏ;4>ݮN(wɁTqЂ"G*jmBÄq[Zo,(qY7kJZD*3{j#fW;YfA̬S+ꢆ =/gn7*1 dGP!ŚeyghNlp_VO88D˖~9Z͟mB/AmLEf6.71Uj >Tc J-Tu%bp:Akm .TQ=ǶM;nwgŢPyz'(dC@'-W 5 or:k}\kqCpr h?GԹd&B3OΣ,dj}].|0 6Q6EcsԆ$iM@5HJ i{# jNbN*&72'KJxD34/T7JW_d֨xƃ2Diaݶ~۷s66iZy)2b]%\ 6/$XljCd qZpFe?R|sRޢr"; $l}{iuzl94|'ŭ٦7##urbMg_y+O")0j5jL3/P+ hn;i"[ɭe+=[cdUfЌ$4i Lr9#wB*(Aq!>7"BFPx&p-V?b폓%7x8X~6O4oen?Zk.)rLl0ԾaVD6)W  |1H~pFqat8|9{+7XEXk3Ssopb0"P ~a|nn9݈ 84I'Vg#n^\~ NT7$QG9:1꤀`[BvnEy!7DVY={8_û/ڶӳ#儱=7ZĕnKzJ{6~ۜO?oT,D1:qqL׎%zLVo*D#m8{[we!؝[6[C{;O*eci)ࢽ}uFɱU:Js?.f?ʶt@%%n1ZϞ2-X|$ܦW K96h¥Π]&V܊rcG,* 1-5m=gĝ:;RCs992cJQ $[ƚYYM[?f6}4 Oujjcyq"9l_ݥ϶d5{d0&SbrJ2omIxv9}`ݣo Y޺f,BB* Lu3 .Bu)Wg<\}`6ohCa.B rvlS5c`>: s'ՐYSKi i(%Hm[it Qf`dI͙d Iq9zyiSrh0]fj}Ƒ>esϧj 3叙[5<"[3'B b{56EmXz_j,h&jN9p2 ʚ_V4L(Ʃbܕ~e}V7coCh_;-qpk$΁{ǹ/eb>i3X.0 Xr~ps9HK*"A^t0 ؄4ODࢽ&[.9#d/؃$q&̨9j+=[Ru(o.;nj>ܷ&q9nn,^ χma%6C\agxI6ŖeL_,!-Kha#+Lk%M]r㾶h^ÊkVr Ã3D53f?X& \ SwA{h5=1/QNjCeU_xcc4Ԑ3PY8dKoG(h @M'hiڎG]4O_[*6yMWTLX|!P*ܟoP]\]z-$(BʀC_,GZʭ]'oʊ4v}HVDtrA/[˝j!Z u0Y#SHV-ᩈ9o뚹+G*|J} wB ?xw*s:}{67gJw4}+&kmg+ۡhNoa6 gK8n4~b5)x_*DqDXF7ad534r^.|j \y1Ouri*5z#F$!{x'oRV79&Bu.66ݗi, WkY[ 976"R2zòmh&w"~@;F.{6XM>dOdzCHQG>ӆ բzo V1]3a[+r rRU Tezc/1(UNUU0k˛QiHIJiep5ٷ/Mt,sԤBV/T\n :&㾚%5$5NXjv(=2*29*ϖ?P[ A=CM(ݥ2WB_ ^C 3[N(Nk7q'ۯX{mN+Cb2܂s (*՚u$uEW*GOmFY;uq>UߙCX1vhy$&p%]gn8:􉸸6GU;V\QL8t-oUi&0QX`}sA\r8CG%M4P!fs%!FPł81lڛ6pi|'ޘ,o eGKn1E(Uvz@}Ț10"9[  ٯW P_SռP4)oB;Qf@s4/ lZI frF:v1lv]]z7 bWO pyFOAt/`'Sݒ8-q {POH4LL*OEA0M?btY jLqT5n^ );!FxJ68.WbFyr|%6ALǯxTq$A$KЕ<>G2WdFƎ"bpA$5=JM@Va';*_:,/ó1.{YRl;P=$B? oP-8oް$GA<ܓ ,:}NC%,!uϿʋZj!oFKd55ÒYXEb:*H(On[ \)!X,BvH4{/ ɝYpPuIrQ5&=, )S F=8>IZwVJԜWN- ΂yP=lNV[ĵ4 qӭ+NQ?3CA0tV(٠;p"nӃ _ hiX%>UgH*Z+OljkScN$ӄj*@cH +'Gfd ;X١!ֳg[Y: U1R?XT8qEp?YyڜNF dJ-VC^45!fjٷ_\G{zsF8% iB3Ƈ=eG)Z&"H_J#,7ucC+~< $ץM3R ||c>3@*CE=Om%f8L'9$x:hp3u˸7Vvm4|Bm`)ǒs̱T/僓㓧(2!+d#|n vDCHt|2SNut-[+9efU^5$mTT~OOTJpzaJ# Ḇܼw`+|6ɋuSPpL'RAZFlb:o+Y 64v~94D,dY0hSLX&$pQfEDz4J)yY 8`h]?# Td]vKkyf]A-vug N@XMT@oPxlbt+p0Ɇj?{:|uk7Y5ZU[FHm") BA5Iz.9?crXH9U>8qI7v^V/@lI|eG+2yĴBPL:5 HΒݼ6rG Q uavl>_2.!G#Lޚ 8~}GNa#x-kT{fH{+PRk]K :歁%ٿR[*at6@9d_-/\3=<bR7SHӡ3W~'j6,bb!fqY۸-XϜYYe݀RDaB֟HN% H}ޱlvlщ%'q&!CeAo- yFJ 򬱪rP5X$s!IgbEizTAX s!WBCƭs% oS4sZs2ls ^dB-Bs[3qJ-VDt~̃!jˊ~YUcSL̀IlZ7]Xk*|( _Wvaz QW'FUXЯ eġ'o:Gd i5\# pHi֕*W;~:8WZ,H8۱W%f|ĝ;H3ȰT\ş (=EzR^{ y?U)D:H@g.чG]iςtQ'IQ] S#24B-eB34rB|wąXXb@ _~]lmłd77v[:7* s$Ď2I1Y eklOxFldz[ZAKS+T;ݔPբw*{ѠZ6B>A|3,S/QV)rBa aG ^bL.gF&#5?\-H  vhPB[RkhQcNb=Ͷx* xH `9;dV(WZS-ʄ*Z8|m,m$jQO,pRbO;|!0nZ;z2yhT%_CDm[LTd.FAr_ 5 6 gz݂4t4Uyl` OAP޸0FGʋDY#-KBM|43b*IHkT;YkӍL-(GP]X=#BP* GdZvy[*^ @ڒA<WY&k?%vXi iv!%'YH@bTn?߶|hU-D/6\9QId SPF)Ƿ Ra:T+ǧ ?t&)U/z߬% F/X'on#I̟c|wa۝|`& ; a=Xst@G|aMtT⾀U96<3]!oP qdJbG[5UB_Np a:YP ոv"D'KSqoX\uX.vX0_2`y1;g5– KyLטq>XDB^zxD<-Q;r.w-?mor2gVvzz@CT\m0 lI|P۽907+󩺤t߆,XN4.D"@jV"icUЩ7]h;`>7/(6pӌoT]޸6Q5FF3QfY^g;*7lH2,CuSE%şJ#;]duj!`޿v՛V;v,Xx,dLJ)aw=dk7gU,c2sw]&dH>A^A3Zf?O GQqA,Qd+çPCے0ɲ{6"! Imza#ռ/I^o j+_o{ݳĜ{A $)&E. ,yRj;;ޔ5fmI5֑'JwolwO?Ng);;AóxwMsQ}6.[Z%-$dG"O; hpd XgVg_eJІ ^<)/60MyDH{SoP0"dאz~0<\9GfYbyە%Pg,s3t]kv.yfS~DL)Y,\kJgvD515#g3Wk&VB _'9"V*8]ŠG*8JH2FpSz!LF"AF(FSbӔ,7?.3 8A2kZbvQ )BIօJf/v^`y!i}bϕ]@)!Mv__¢N [Dx{ O NuXPANwSO襓!y.։QKB qx=sn;QV|njaYbutyMdHH䋁\/^@@z/&P]5z:rd 狮wSQ.bWY3ṣE 5"n>|XNm X&gs8"w}2`V\ ]~" ƀZsF&0tVh_4`qx.pMb.|6v.sć]ӈՀa)wڄl olKD}ž7󗬷~V;4Ie)7ߔ)GOXH&:QYx>1R6oaabvv؛ԓ+o|ffK|9~\d%^K,!(,})dcʞWcE8|KJ5K3iÇؖ:CYbk^X>}6taLGݹ5Py(-ӈއ( ,K|j Z,rv+H6CE|Q9Va]cD>"|yW? lזBm3B EA]:-#"^ڴo=?WykOpKBv7&=X<Ì=0%-mDž}j}WFJїDOqXE B˽͗Q;xLm>=aa: y%䑀# ^Ti_ϘpqҰ`DCKA_I؝mv$>ށ.wW6xࣘ+vi\2~~|Oj''Uj;wD4dV<[Qo% ?Hy/tkҶ{+:s1h7ǡ(6?+q%RMZǛqjE'i¾nbPYN~jŀ^ x/iq5EJDa4ėⅼNj`mxȦ,J(5i9ʎ;"NǸ >>^@ 1\zSE^#Mn$2``}]G3.T C֧弥2l[ɒEQXN孝dssX9;DdЌ֣9c Df}Зbe% Mեons 6wEe'#>0ѝ0l0kQSDe)^ w O SwٜqHpR+͆,b/)]ـa!l=¼ ~ 36,bŲ.JK ?hgLyapC 8:">o$=tesCwXUomy B{Ig^CbaPBѸho&붕w/΄JGjQbʖ_UʿӨ<(8nA Kp=F@Mn_E\s3Nbo±7n“ {ءsgt͐H:4HC:Mb<̀+>핑I6=e \m{䠦g^pƞdOL"I7(lp䬧x򒲐 b$ͧ1=?{5㽅j\DGCƅfSҰyj=anC*P]>jzC.ͯ "=U]-ۡ%qէ <~nRqRDrv.G ze%w+^ bUX򸞌B=ëamiaZy*1mT|h D;@n7ēx'ӑ=]=~EQ2 K͓oEO4`XP=ke̻%ځ—o@R} =t|COӀ"8SVhag08ƙV&t;C0?xB݃o\n6_pJ+֛U3ټL= Wj{-PeO~P:{vs|5c0*Lgã]zw.bЃ؃R:v1w־fۚnR#UA+dYM&CT]J󜡫u+'lKea /h&{_+BOh\ذ{ f * 0^|mtF c`W/ө7<PoW֨ja X14@*cAnͭ/79K?( dw$l o,'qe"i-[ۀJ:z LlD5[ I6Ӧy5&BiEa72YC{yg?1y$z'0>Ꝏ'x`zodc1W1vYYP$'sVIN_ RsK',=Aӹ轟pAZ3䈹/}n&/[elWNV!vFa$t&xp:F[}'_JlHwF1!!o>ZwuHF|@o^G6 Gzj}Yԯsݔʲ('̰[ 0F2X6D?ildrJyNY)i̞s/ǧ+uջ?GɎ9j-@eT 6}ȸ < V [mYW@NoO}u]fm wJ~ X'LgZ@0LBD M])R;Mo᝗:CK}+#OG5T3~Y5k7jX㘱8 YW^cz;``?\Yd[!hUv 1Ybwьn~Ĉ*n(2Ztbٜ_G٣ٍqbj=*=Dʁo&oQڱx@_/@Xp6Z`#ZP'y|(|1_T,MiC31N?ٚB+fhPׇq>hh>t 灑КE,k5+z*-OK48CĿGodO"x; et Y隣b8,e7X8$|CRAWMƬY>^N&hg0b@Ў=ļ=T%O N L'~z7IPE܋+JYOQ}?kܴIã}oXcؼ7Jq,b)f8=^2 m%&i.SZ,=z,d?} .Li"g /]VZrEj_C0,x(6qfb>.p;C6e;L [OmOPOP,xa,?2+{N.Cv d}8>Emp=!,p#~'Z`YnQa*c 2Š?,`֒J}V~;@*p9?;-w>k5n}6en%YK6B/V2}tA^G'8QHi `a|pS?pe~G; $\/vGS@8I1&ߊS b ՘=I1?zb8CݞJI9]Bf#K.*<>'S&}2,ea<h,Cn!_2S"ս:q1uV<-RR hI,Y,& ,U$2s;%bsTQoT*HCmr ߍY9 RL))1}/ |?{X>[bG׸iʭ }2_ƮjzpOteې`WP)z؞^f,'apQG 9KHHf *` >YP`>[(, N~_2Ui7yL8=+햔'?Iҏ[vg 4_ Zx,PU9Tj ,݅r}$m>#`LWv(/m N#T2n;~gI`sWa6x/Sv(2o.AУ?UF٪1Zxڛ~@8r_zn;Εefvtz5e3iVz;5u.:]#DAhkmww״aw8]ʺwEk:$mhkzεP+gC9?867أ2℔(m> H$BVk#Ȟ+-V%y^ /=F(=%[S2}:N8Nj*Ѕ _o ; йH2 b?d$S^ㄿ]RM6prQK<_^ Jr& Uñ-e;ʘ&MpA⩱D/2 .ʠZ TRF_3Z{;B_\P94z(J-&=I "B {hϽGZ BrtM#9UOD"6n1SIZWhpĿe6P PF /[+Ta]6wV6Ħg>o'e Drsi*P0r(Y"̕#mC@Y?"´})wL>T$E/kAVⱅl8eZT^\δE={4|p~MS<%TGH纑P[wis6xصAkU뼮ߔ")Z~^)sb ha[<"ΟvRHYxz+zY״"U}U,nK1D^zx3^$1·L p4͇-K.yJLVɭ"6>;҇ي!4jt pSW<TCj! 8C͡M/l)jL F {ZLK8- %z1ݫ>Ud0 o+nK҉+mHe'CfF20CXD?0 [ 4ώ3rU*Z&Ɂb5]+h8Գ=dв)tFkEfs6LJA J(:8YZe|Vr*4J9'EFVҁje̒pF,t"XV"X f|\ d^J(QIGăMES|zV'.ax$ͭǤRğsLâ{ק7W&A qDqhqp-ƛrdiPP$3{97g][DRL ?1QKҡJQK3HGP'hywjʍ}/ osHՑWW[ M5E;0!%8 ndrAND'm\AW+Ba)U_3-.lDPP&^PL O୪!=Rtf Y?KuLKFL ac.C"2gKFqNMek DIp]rA]6o td؄E}Ѿc_B[XPJ|}r-Pby ĦmR|lSM|+v;紩VU.J 4 N7Ƥ% zG.m Q,X_$ Sףay58@U-V@Z`_Tt e)`YGMMUj.0f;ܥf%nWHSyu!T#t=TƖ/%)Hbwm7.A:er Ԏx~] `z^wvlAJsc^:gK@DgDF_N=̬Ck/MwfgNS8oٜvGXڊ3}:oN-W ͊&DA+DޕO.owZɪ!Eb~<4dCQT&",!Nksm4'.T·pED1Q` ٫?LbKС<|x*&gaK;)JdHYEZ6i%fkxC[ wa@*1k;/8=Swz=HN5YlV8wi\X?VeY> Ms(Yԟ۳Hr:LR=Z+э];`Z#/":eZK,Z)ְF\h̵Si T˻۵"Iz\&&|A=3I5У;TnIBB2v~yB͹P-Jۦq3(qmiޞcMtC@L`]=}#"n[ =f6djX`7 \p*f:b'hyaW.ofYYZ,l Cp4 M\ $qB6$:WXk'/*7>ogLw4r̀&~*my/֫Y 랐wejh} ŃNB24n,\<2 "T$T(S*&ʀWswj't!~gW At@01TKD{r!oF>mբ3[+ bqif!@k7> /(FH= j2癱y7V%Bw]^SSКLBL+1Q/&!q{f%(5NLllcl{=jl<ĉy" ` 85N֕k|x1e0|X^-"/4xwwc&8zU :֞H,U/o'q_XiKȡ2y( 45N|!+XWӭ :8s٨$Lp`);fC%J.9 MRn.ҕXM*cϛ ڥ#Z ))y J>\q4Ls!'N,"hehn 9k3,|lM_b^Ʌ?N*bo#jGH뢤W5sxZ$8E +hH>ط; q4fpwq') `6Q*x, i;sNHJocȋL 1s{̇hMiD56>9RZ&KzlWWG_~W66mX+Q)[^dPpr: ܻ(;t-zje5i/}@Խ`}A"6mg h7E-4"1ʸD)rM"猈>/?#2 c[Km-.)F) p Y`}\uRS= vnՌ> qbhӮŠQqx܂?`UeO)НX \`EW^eV+lB?!XMa˂GMv=1 JV_fH7}nzā:=0cpG`b>}b}SqllfCF!_o'{~zcvMOvnZBv<1z>F"N(mTدyyc?1>W~N 7z8y05)v؅IR==%E?{͇c.Tʹoshj zqX{,W}T^垅GW0o]Nd)_Vj.BTmb S_FcMM|*p9\\q\jd0vLI2+;+enԙRxEc)Θx}ģAdҠNJbr`s"}T ]bu qIlvu;P9V*$;̶Q:/‰( G*?͋65q2T6dcƿF+\C H{2TX Yp L73օ\?}>):ʢr%%JUF'qm{5id@4 6y( GPzMh[PL;&ZӧO.Hŀ7{!2NY^&,XU۱6&*Oх {߰5y1mPyiP('@ͥg MZ$*B[x8;?[W. vsQk*bJ> ]SRNw% <8vyX$-ò=V%p#|AeahlK&}x3e< U BGU_]IAs y„n`R*W)jO4?T ƙ>%I? ~8O](k~׼chBP5c{rJ>P6< v,Q@?l~q[n*4*jZ;9Z<`*d1?NGLm{`ƿ!Fjh0vang ?kk~ %]iP1fBD=Ww46j P} yvnd Z~MAakԈtH|<]Kygv.f*xBgcuh~j-|_ !!P{&l0r2ƨ_@ٲkؗ$z"p9;;he%K*$we#!4M6g1;(V_5_@pˠB}jZ, 0eM )@Sc,^qtMV˻MZ.yexV*졸M4I QTǧg$;7"q#l.F$B^{@өd\j)rDbE+[/?}qPSr=)=$oCjC٭W9_=%B٦5k.е29BʨĢ u˶/YЫRyYSYrM{fcbͅ_>RxhHm0RʌI,gnD Wk*#B^AmB`itA2 Sd}Gk]}} 惇6f ;s/Ad-r&9TK#$]$WnŨA ί tyn4ő8Gm'-]V+Ɩz8W -;qB&e^Wkub!S̸Z6@%u 8>GB$a}U߄W1fwNƫAnu"J3ҘZtdJ=}mNߥX1D&_;Y%>Ftc)ꊫOD@; 1K_U"`<).QO,|ocϐTn)RU9zFi邭Ry ޼m]'t31Ծ %HwLbM&O'+b˪c Z|`9vC-Y \b4S!@}$Z5k=80S9x-j[ #Feޙ$ 9_GQw-<0˰SV]yUXO~bAP-Ny8,8OőSJ) ҈kK ?!ca_n0:6qyClZG+P뱙-G^M ܹwC;SB%[^C_J3J sX80 5LSHJ Ch20s%5fcˬ? ;&ޑc9܈12Z; EU[i2INʞPdnq]mNw3jLஅ"Du?u5-n=.OT6_oY!-@栳Č"H%C%B7p\=U_ޣ\6}&[E~uYoUJjlsɂ}F:[ڟ-0}8b15Β]'yߟ;}˔(N IZK#(X9Ͽ8֌_ydd1Iz}ՒTGm?$7'rP gQ[aϴ-}&vՊO֜c ʡH]&YQ|si!B0Zy]R:AhexmY&b^˄Xu-E#۩sz<@f m;)˃+s`vT)'*W6M>v++=(cNKU}Ch?&\k U'}oK.tfEP!Wa rWCN\3yRն?eD;:``y''z| xYe>= ,*n[0dmq1sBKچ%[\ Ssf /FTW~{^4 m\>́Kn-$| ^SA7zҽnO|}$^~Nm5-q%<("W][e | axV-| ylv|ĝ|0ZjhaGHT9u4 7ꀙԢ+Se t|CO'ݠȜ…^4r  u]kK xKل? -gl,^ ׮:욪˒ ɣG)ʛ"J_A}S(ܸd4OEa%y"e Tycb@'_F;hbQD:TIjɢ5 GCnT&FhkH`)y5Ju`^_^G?[Q(b^nqE"B0Og~pj0X~}L$8kv|Ep: Xxf׽FdI(mS/R}  ".oni W&il`Fp6Vl 3ϗJ7˷EYx̉(`l@.yԤ0@SQ%Ư7("}I;$ ~rL5 m_Ŷ4*e@逇 C(Y z!aզ2p˄2KPʬC TP^+[HAmBk3U [H!!ZvvɄ-c}i L9͖YhG\f _J_M6%^lT8-eAP`wXlc$mXqJ-\XPU9t ޣ4󰉤`ڳh  ׸rWe¼)` ę^XAjoXD=GֺxaK5.d(dX2( Ѝ mєؙ(1%j:# Fy ^(2/DF4iD8_s%J4eBP*XF˹&e #FBLnb "ᢤ`.g:f`@)/ oo!lz|33(NZ21j p]sTϏWUdYq*Md Xb=hpeM6-daQ^skNvsp :+ҝUUew1jb2+, dHscR6I71AtɘZϝ;@n8OzȻjDB%3σ+H`(xdpޕW#%QUH,_#X:HZ:D6hJFC=Splu 5J-b{{ K@~.}zZV{r:"$*R )'3*oUCO5r.9JZ\ҡvrm-ʣ F&wg7pXT,)?#KE[8z)a-9ݧjR0&[A~ BT?aj zkYKֽ\zB,]O_Ў8-& 8.hZ)|Pxڸ1V.qM`y#Tm$tL&K_ yW]<:8 ~%cْ)E_KVV^qBa,JHlk:ZW{9౔7.z@`ZArþx2`<¢f?G/o<'+ b$>E v5 1 fW@`daWYI=p`-ḳ?bxI&kz/1FdXv}Ji + &)}IQǬf#jofL~uagɗY :!ȮLǼ@gW,UV;;Ò*d$ !jЇ'sܗ~EB{4Z8 jdW yS09uDM]ށteq)lpP;Mv >=e/LjgPtU^e00TH9yy}^)x{0EuR~=v, K&qKfM3龾Z{H9aFl!օq?)0u+\S,W҃)6b }AP@Lxl-AS󏅊HfC B$?W&{.=!?ag]-ORo7PEϑ'J@ctv0 4*{.HuRMw sbL߃uwt ZBGFcL_ ب;$Nv;0E5վ/ap/YvV'PNV8]MEsQ8RRfS|h&3 K8PhޔTW_f5kiݣ#n*gFlJ` 5D)5bІwW}9oO ( gbAL֬/p:*rw +nXR3Y^vb\k !mN;iҜ!j,EC\ŒO>A qC&>Qۉ o=e|efN|Fahpkپ&n<5DJ[e\0x)_uCQ싷P_Gc立ևI:Hpv?;/&(b$!QUWfn/#Ky k*2;Omow<޲]U1FxZ@KX;eĔ_h_C)ɏ 05+>PAL#E4YxsR}٭o7.=Mwm(`W8 7 ?jn{1.2E_+i1:;_'Ngj.M\h2?s}mxS)e8щΪPQF}3iUT/N@nU- ݗ$vl8h8yXpROwƨ&]S ^/BOv1PvS7+RJl39vTE~pJlۍiDUUc3* NbME'@A&wab>Wuk3O!.31Zs16L 4a0#$rw$hfGKؽqirVBSIhkPEZ`yD}!Lq pZ8xySIK'F.E9M< #J0~ȶF~|vgM¤V`p'DwY3t #̤B*`^^l{~}D8$p{s! vY!̑ ray:g705TQk\+ g9{vXIt3}Tm XugD3 >^ wq&iFJ>SRϠ2EޣIl!)Gg~mu V1H3ϥ {S"'h$2[8ȪfM.:õFq$ A¡C 3MJ|)h(<ͪ-J"_v71ٻz1CPz|yEwyLFȅJvJA_҂go;iygZ)I9~~4 z~Q j؏ RU><&<]kk1CFHX6s%mT3jDrn%dPQQwo.yn]lnׇ'-$1m( c1,E #)/tx~=(qB8 ́}v}K'E4@U# ?>R TgWxL0[iw0K4pzZlɠL6+cO95kP&L\f2w[(3By5*TӮɲ{(? dU Ep| hLֶчRފmӣ&g l9$ Y",^W D2^tSUlE]> vg?p/OXuE}jY ipner@?6AĬc߇'ǒ3m%^d3 _lfJ,*`,7YQrIn>!}~WYb^h4!:򅈝,zEp{ʭfu?e1TH )by (˳~'!H(9^3sb+G=kh7t<'#_Z:rLjQ JPv*oNm@vcxPr0voٍhcRteJHzM22ï4ZN\&àJ;ɃD; L[m_=NstNLa]v*b[1R'KrzϝO F]a36.d̛Z *R)Zldp-)uW Jzt'qCs&@B'gqųW4Pњ.s$E=g-_h hL[e2 sBXH}JO4bt8ڻ~i qĻqݭCHҢVŵ-vEANNFfVQd3Q8[`c߮xMnsjQ["K R-=r}bB[| Yse_/i1sjx ;wҬfP8(e::J$gJZ NDždcȿ Yi N Ây-YCA.,OuvET?r]3FV˳n<wEEl [}^ Uڲ0q tcF>p,i+RFwhas[PWK-ړGQNzȵ^(.:msiz ÛrFDv)n@@ƙ,1kwY,A] K%ᎷmxFyDύx7V4s&z\ Y`X9u(e_(c!)M:hѷiBA8\c},96yzBA}99`lV7V{&n-x|&5G5`>dN My $nrm16Lqxm!!h|$蓣S0S.+ QdpC^e}s?#+;aa-z@}ϸ ;ea]L=ӕ٣ȼ7@WsW-Ur 87t 6 10%^{D1c !gm%Vo|?}L :4@mwq;y0#_p[Чȓ8|WlFԌ_W>|rxZ8˂vfTb;m y<ǭ9_h&;qeAw^OȔγʍNF*M,vĜ8 wsju;MxpE{O!?˞0?g/qtQ7SSVf'{ngEt,}UI֒M*^))srH+>mn,$" V\n-ȩCSULQ4T ['BPMfgfh<)+*"̵gI~4+ԓ"#z_s'R)tR؋k_,FGly e"iz.?yE~,q4~rZcnMt X.kL[\J cNgZ6_zDlj6`#XhnnU5i8^jȽhCH 0p9ĊXϻ"qMSx3 %  V B\qnE}&D`WJoK|T]HQa5-)#b zePCa> Uabz΋\*-Cd́kxI)}FA_Qb|9;shQh0 R4ҕf]ɼA-|lT rq "V= 0;Bay4o,Hw-N}@3k\qPԾͥm'R44t`@%ZX(hWu ụϹs_ (p1Gb*lm=<)3K h]E"Z mU _m}4:N)nG4D&( _i}]׫ usRݧAǽqrtv\-|7MF+Q#_w5@ ŽwС-冿ܕ D_zfN -| +DmTzW @/ڸr5 'e0T}]wnz*BU 읍. d3EgӷRѭlPϡ/ _rAZ}^ŀw` " =bBlCy R"UF .35IxmW5v΋5 &WO9!nK")P^9af`MHRZ +R3l,3ә&.zWA9Y?ui=sha(el("X;;`4VCtw2 lj+U2 &Hm(MC%玫SKENgl8g IJQrYuϊaaI:?=u=7e( !ZcQ)c9:g#w("}hY!N wc!{BuC";BSE!Ŗ3aF>YB-ܡU#Bn a'dX9gEAx- +PӎS5S| C`Ȕ @*;6 #.=3Vch۫+ֱ^"K"d'Eח<#1z./-w(A/㥘P5)7l7I`*ɨDB/M_hMxBsJ'YyHӫ +rbul5Q@bͽh DA(\1ш(iAA/l+i2D={5'(,[4BFo`=8G|ZF%O:DYz0Xdĵ ̠A_ /g4mAG!RE-['\+M #>I1[F&O"l,`:&"[8(K^gGO` ƲHJ6?A1V% z`Ƀw4-gZ &}.+#sO-;CmZ %>&R;k.=%rܶ# UH`L[Y=.Bpx1Ԏ63Clҁ3y6#X4#OU5#v?[jqν v+J9$*{F%p7儮m!pEL}Pߚ+lO,MD΃}׊*ګQ3~_3L I5?e{LC]O -G7a0.xPEBKFP{o*O>2ڂDEsUEll7S8o{~| ~NRzjYh)K!)6@E_,}/aO 1|"kR#>ՠ)ܩ2. O~[SY.rc>v-z0(;F '%$, N<1$ |7͆5E3nחIePo=Vjj)Td_١|GcXu@|[Hݺ~Q K*?4Fxp'MHu%m5SO+LG"$ER%eiΡj )oizfx@s~ P5D|"D҅9,ߴmCrS0!:{gtJuWⵜ QW9+2zI3A:A$gӼW܏q"M#ܱ@G<ʹ\wfH4#f72ݔɕ>jmۛU+Ots=ؕCe>t1z\lPevRu-TbHxY-*ZQi;h`8Rքr΀mrIuۇ^!tI芵X Nip_e1{ҍY{u+A-{EMkH13rw!}$SӊMR=oMJYߵE"0PwF8`.'/ʴqtr=PT 5Ptsl Y_F/l–AL f;P%Qm>Yn7j3~l#ʻ3''2r1TB)7InY?v?t>C٫GnDlܟFދp q|$Lv\bU0 p)5k5_O:U!͊r.'ko*S})?B1A%W!ts鰘@n&{)8յ+ASׁ2GWHpX!IH&kҗ/N@;7*(4i]tGv\XRқ O R04DȎi$ibWƓR* މ6L/?nb0ꗜ26Cz TnE>%Q/g@ƞPCT8 UE>C<1QEپ=E,:Vb3fE]*lXlU}RRtizr9ޟG$[y QTzʵ/LL/î-I7uJV4_/N bńFHJ3.f.vm%|73BųS0]mX'Lz܄R#UQl-IVZcns[7?A<,JRm7<=WtZ)X1]?wQEI\ &i9S>VR=<ePӀ=~B@AÜ Q]emkHqM2rŗCݞ]]I3:q't8,JkiY|y>9hpN,b"5l;}P|PqqR%ȥ5$8\7nY w<ޙ%1Qjg5raw; ǨP:Ԁ4'D߭ $Ϡ}ܹ@qz5XOж<2- &M[V_mf~{:…K*S2 Z)(D<9]JN}LV5@/Fh?$VI6| Jݸv~އXFغLPRbӳVΣ۝mme#^0Pf رpnuZy$ C7.{@}oXQR/ Km5 yiV>}0LfKݞp= KY\H^}ɫ}E X=u Q͔v(# No $Y1|Q2Єs$ Qm͎O;ڽYFѿ>܂X{JJ ,hHyR9`UIK]/je/TaEԎ-; U 7^;k,Y0t,(8v*c  lxH=r@/ezl$Bb:Pj߷{N|QN4(!G]C> ]֡0nj,ysm"hQQVEԼpgmʂ@A6HQO>Jz`a4Y O0L]|)MfRO=g ̩e rqay1k&$.gdw/*e-h%Eb1m4T u0@͒H`HMSO_zciBa )3?5- \ZAhޭ脖cڥ:ψ!|5S"|_w"zseA/5-Mςj0iaܮ{+/K`Ó҂YݲNB_WA^ぜ1O ,߯$RݍٺK0.oRVCpL? 6)lU%Ex&|A1'h]l7WG72/gj5x9cRq~1綩=S] OmB .2 Yg2͵C'JG «|IIKK J"-}4*ļ]&F2<'':2cco*Ყ.&}rZ&$dq~0`1[$ EH%!ů g4RX4e(c~4J5П$!f#ZI/g!-v Z$#lYF*cְ,8!e*;66Æi:mʋkϺ_IB{i7H^>vLĆWRLuw.6*+i p&`Ll{\zT6ΆAdyP4-;M6,x;SwN[of8XKNS4MPZfGPQQRYhr^]|PmD#v=<:=ޅA[*=@^hkQ&:hf72V4Et_Ye4ή%qJV՝xaF@XpR0qplg$: &0cqz{zx^lISjNYtOƱHnB&juXx1Toovirw-35  x;xZhq-Qh n(Opbx&yGvB5i#-xKd_ZvCVK'fJ"4ߞ/AmƯhYROt]真޳a̔INڶluRzgV6`ۺHkIoc__dgT_\T3:Hȯ^ Ԉ:c[ƀ<X8dd9 % Ҧͦl7`A: z?ruƢʊ1plCxsvQߍUpش=1 +@L)y IՋCՎ;;+n~5`N<䞦ihynJ Z?ⶵa<~fN\Y^X1r(x7!0_,s1ty3Z91guThч܇n# >4pˋk$κEѵӡx۟AaltaI$gOo"OX\Fѿϧ>2PHwh42uYجng7JW5h9- C$@qN۞}f8O=@'5QxWKk0?IiX@_2/zϠNOyю4/a6=/-בֿ  46 >e݋LGy@f>b,J-nD*^~YYOY: Ή ЃxZ658H*2Z'{"']`ީTQ.g(o0l )-Mt8IŕmC"/0Pz=ymޖR",Gf6,qVtB^YP&QEDh 耕5R7ȵ)f|o!_^Mrȵ.:w*]wjF!ȝ,=1„%I@ P\;b+8)T6;OM7` oHf[7 8358 YYř6"+ i)}CFӱif(ohOX1@UZ W˒0i ]Pf>EhkVIRh}Zqg"[a|OڻDp71r%l 4:[2XoYr N8&qrL:}fw&0n f&݋-ؼhL p\yE"j- 3i|(ѥڈ.k?er! ]DvMm۝Qlr$` ՞{dPL!#IלO-慇LJn'yYC#6N xBV.Bj?*t]͂(40V1!dAƀ׍ a ڰOFAWq+i;p9( |M4/=yjC6DW8rl8{F.VJXa,0{?*7;a?6 *៕Ή߷)βDn6BVGZHLٸ}^:.zP:c/V<;PYzY֪( & 9HLNl*A,.={#b4l'0 9^7kgjÊyl$ wAON6p b,LI894ʈ!jXڮzG@r]g3-)S4 tf$T2r3nGjK\"oR2u_u y*9XP4 ^C ="A(j~\_QZ.^PEӭFUO#7z\nY<Ӓˢ}ˢF.M0;Z8ٜf$AیAHɱIȧBtw\ 7t օw+:kUѫ)7WMhfܖ' ,qVtV:N`OAeFH 9 3y LuX^i3 琚^9CT,l|5 [0 `$o Y$Z\QLVa|lK"+kSQ @QO}\Ұuc@ f7ǻ9\,s)Yq8qS8cŝ=Xx0ȺI."BnZɹ>6|1!1 lpJ:@B\qVJfߴy ͩxM (@a^yE'yJi5.@pTR/x7/Ҽ :b'u}KQfw\a+6ElAz{%!6S$G%M~l\ 7х9:s<@ު7^*4򆧼^*ikܪ7Z, ,qݺ!v1Pd-R:Ͽ H]PTp5YL7 uAI}ȣ"<|~,0踺_go:Gh2F\9 3d f6_x@\06[7rN8OUڳEulGxZ l/MourUt75Tclkj)>u Tar,ԫ R9ۚ;p~ G;geJg-.Sap j.{k;vp.Hz~C07&fu̼_Cv %fD(zIs6)q؆G]ϚD qKygEт,TJ"HLNap_ 1=fiq8>=)uRE\7j%m#Dr z \>r1;yl/{@J峜(PuZH k1 9ַM#;8m S YU go}P6j3JLS{˪SlZ=?4 tfC𫮺~(5w)szCS>ăFߧ[`c͝,xI3p*Mw5ˍ9 g]<Aj*XzN3/NjYEؓ $j3 )P?ܳEvw~})s<0b2.)bK~ rU=OoIͪLNI%@k:vptwռz`^Enq0H8:qQklz\NLD1 *K?ġc+Ls2͞V~K5HQЌ[{; @i“[yd_<)R֕}:"XjOlšCN+|nIL ڗQ\Wtҡ-}9)HhX!رldbu~reЃ4 ?0)(U/44QemjE6=<(IzY\4әQ3 =V]tIY!*gעAߋ )hLY_!fz6p}Z l-DBszmӃ󻻂SF6[[bbE=:O#uLմA@{h kB)(/ϞN1LhZ_;>gGHLjGj* ==ffʤKX^oR$cY"Qrs}Rٴ~f F7jMmoC!A!.a>Aƒ%$?mztjP1z1We{ڴ0ު4 HUZHY\?m? >5ʕZHoDΞx5qXȗn;smux(LA\5:m E]މH~1z?SMO 7(AǮ㣞u Q>Zɧ6k$jڂh£0fF/{KxɡFtXbHTpLi;^H4-^5gi:ۧ5TyEm= FTm \Qe'JVQ}͘[kܬisQ׮0!S9 ;/\%l g(lFk6WueO1jf4*i޿E z|W$8ucf| ݸn?j«{7I`eJJ#.O2P!Mo`;>>TI0a(2gX( EJH TH4,EM:EW&;؜JƧC8́2/7 @/av)?!P%E7 Cה_ݸ3oX~dߐY29K`0{ ѵ`3~JFEГZ}7h>]4/Tn7ߨ*ߴvfXOh5.VR!1ϩ)"LAzB9WtTQa%I2K[ zu~jʇbb0৞v5ώ]ediucqAp6MzJ /@RiAG .deE= +m|oUϊ3wRʱ͖=8hy0Mۀ;̞kZ_!Ő\0'& *s+Ɍ܄;쳺6fݰJ1,).lx%)5&j ]`o:}8'A c:h+E^>k?%`6!uƎHG M:¿$(/,|v_xdpS#A{ҟ5Gج"xL=#rZXI,)7A Jp!̭u)1ZBwʪdmtP:,0: }+"y1o6>蠧}K;NGBPo!yqiȷv{\ ^)e0퇞/p%z;#>.!jA.KPD1粤O %G+)yqވ[OW80o,R؅>WhD̐=2CEe<@#V>|_O܃[l߆ɧ =ÌLsD[o<Ǩl6,3;?@QN_tA3 E*Mg'f‘zz$C#?zm9lK>X^E,ar/'.5)Ur4lR, 2.enxcܜ:x=ڵJ…ߜ)JR뽸Յp"|ln0 Bf uu3⒂78`F7U)vW<@_ IdSF&R"y y:ɄPTkry;txfll{4(AUjP[BcY3鄼(1TS4\Do^ ̺ V{ P$Gg}?PaIsC+FV+疬pjOQy,C v AsKUZVx?jmՁ{?'lƿ!<ZM :YǏW_ܗ a$&}Ci5R!N ;#>^P 2>ya?SϥmX<I߄v1.OvNo&``o.fM92a$2@ZOa<`:i_9ȉuc)Xi)~ϽnJQ,5`PZptXzeL?əwuKKSoJJZXs}KU9*~Q@?3 IYQ,80eCN^Vs4Z?:EOzueEwpn/_Q !0{Q#W %!8*ޝXcuz%07"Tc!u[aU=>P-Aln{I@oTb5 D @ ]ٗkc/Sfiu}zpUr JjT4aWe讽2@mE~cZAaUt^UFZ3E>xQ.yNPi) 7":ԠҔ'2A<+Ϻy|MMzjg$;;dKV _x#i!2wK&y{";lRt鉾}b,& IXn3h'TĎ.=yM:FB`YQ3ɸ=.Iik "pҬMnwlW 䔏؝`2t9z:"6?|5Hu5+DSݶzbW4Լ#F=$GjtbI $0}Z#bb>L%~C| buOL9@!,b }wmkʝzcE{6g}w`a^<u3nursd5OHBǤ"/p-~9/:khm~<-'3'Ͼ~6;P\P0Ը~LbTc#_Z|67py[|)a h;-B񾡣cZ!0&aJgu|Qhj9נ9]BQ{GXũR܂O t'Nt;xZleovbCjQVt@2|,H5CpK 7F˓Rst[_Xӷ-"K8}N_\m~8Wޅlkl[(:"S"YXgz9n{WpJqt\ :c_fˁyB!Ms&ǕSzE6P,h:>f\SC晓1+##JCeejD5AE ?Da|C[[CDřľ$ymqQfA/424jIҥQ{6! #1Lg5"nPZH^ qe}[fb[1K(}+JgHTݼskz HJ:-NL 09=)h^ǖaHO=4:]1غ5[qG«^?n}MS1*,.]HtD.:EӶ/ߓ*%͎)bGt1,9}p61ZZu!j E3sk\>m@q4ϻ 3fsS6,rgQ~Uxs [s]ÊR6w.漖dp $ob &`ok]:'EM~+P8duQ)F4u.ꭍ9C k`xfQƮ6MR+6I8&T`vVUTTt:(C]* ȫGtA`%ne{J~D+x Fѽr@of .-P*\.2{v|h? Of|`5I4B%fS溙١f_ y Xy-Hbs~mLB 75WFס4QIB ]SfÈuK5#0/ ']#B.y^W:tN>Kuꕥ[Ag[( Skzgr^=LmmRDzJl{B7iP~U5Xb@>2a86[)# pzN~ >e%v!-<2>Whmti= '?O۬V/"_N1[ZWגGE[ )r>!l3G?gGػTruo|VnA-i}- (4Kl^Ga3/Y.%b##9҉ 7[lf*?*AiRFaBTdJA NhY`T|DʼUiHTK7Nىvٝ>^}ywznjHg 97JIs0f NӁH8jdH})Zs\+Xg0_O ]AXroȝ7+jf, Lc_#찴x=_ʗS-5 9*(]*R04ƽmHs*my%RGpdY9tݱlL :=,>dCr/:hDC)ZTVMg,BGq@-'w. }]wIg[W+lխYA#;y6bo8ݖkLSWf^#LnVA&M\aV> f/GbuaiǸ{O_Qr=Uu؋riXN pWߎ>-RkE ]ȦT]̬ ƒ3[0^R-Aa5&s= UDLYH:|/5=]cXQw 4u/4"֌nq~+TaKk˔z'.R;<vL*R9D>ir; itA YՈ7X&FC? ۫R@W0]6!>O8Ust2)=d XG#Hk3qDŖZ _/ 3Syoѯ|ôP6Tbm=h\\̑CxYk/ zmm}N9WdMF>Bڴ`ZkJz3)ɟ prm5_?`MS;F|hlVini1%6,78t 6DU1.r-.27tˑBuw8I`Vz@NͽǯWQk@x55thޘhB.c.&W' ({s2LnJVgTy$Ƥb,O.~wa$|{%q3eHbt{' F0Ji޺>:m&45ڐOF~ji ы*j5_ꩰK.ˉ213YUե'D!ta[Z!A[<#>p$m`Lh@I`#QXv [YW9^NE UIFH.Gծ.yF6[+PuTMG C+2!Y{aPu  #|Xt`8C:ɈcY국M 牒gMoi>N7O 1Ǩ2fdoi&0%G * zqZ».3q-wH~F}ZW!$uT"x>ALtiE[Еhn H1M8v&ry "ѽ2GŦT&j7v?IX-/Hx"`ͭrYQjޘ[Y(&Pp35Q튢,jq^ l䳌9 I9;]Mi\zz'F%ޭ';jp_$H{ʱH7{G5Q#`w(lPba;#kf(zl$ݙ6ދ[`KP _X14]8؂k"Xå#eN"p9!{04>ߐQ8wIdY6P̧ZhjX_SlmQ;O K68x| %s8Oq/XG*_G}VNg#exS>4 &}X|[CI[EQ(JvpL-vE0vh PϷU)>EB NK.rrTSƛعƦ K_B;h=M\'T|tW-ȘK>[k0  dGE)Zkw7+Ę;Qpa ~;x*G:leuҰ!VujFȭQZcW<{R( b_H[tw|'<~Sf62O( yuOHI_-p(h"װnD 4|ar@ i鱡X5܍B~`- ! Ȳ$BZGdɟqaF_' T*kITn!p7TZqƿXߞ:^I +1?_.n<H<ȹ9ě)y۲JMbإYO&Az{x]NX9D+ /#`kȪ//g0/ϵs  C[HYfr;7soKPay͹n)O!C&}~zsJv\9]hA h_ Ē7 Xm/N%қxc_R, ?s6ŮA\i,ק)܂~a聱ipRS*%yGyʤ^Ū ¤ oMa^13Az1cF2 IU@y\Z3 P8ypKb F jOj1>5.1ە|TÖX IâOEO*'-]80W"~x 8g =D+%1A16y̒ tk"Qx;A|l/;Lȳ븙=``@ hO٭nIc*U<vȎAS#21Wqg[W7Ңd*Vlve+A'<|«}3oq~Ϻ*|B=yLmӍRr?RiҌ$tvUUѾģvm#;pwjAV:> | /t AOL|'@ljmwX@@xQ-y|h"%cOr3cy :7ܩfvvYIe`]:p\{>}d~3(Hu-LGeEls+ڗL.Yg+fƝq :)/ptpף*Wca Yg2u!W=k{[u I$.㏵`X +wWӷ.oWX7X՞툻 A f/2-=Nz瞆Pj {=-;w "Hl'l=m2yu'm"kܓF}P%:gLgIҘ߿ix+5*PWE&vVB8;bUhfgs6o.ftGlꏠ8YO7g1Lz !eQE$4t, T+CuJkf$>p]D!\#pܨ%#A?&Ӟ82~޸¾7!,I[rzd)*@IReQu uH:% + J[tkM5f\;ydB6 op|4nU6xǔ;r|+@39^'p\`]&|xXYw]GySWNeV9;uNgxXa"$w]$ $s$_'#^PUޅo8g*yB]$gPsbdw'Ɣ ׇf3{'T$ l-*8g yĺ5iU¿en_YV2 Ȇ s\+3rϯPY]3j] b,Xg汴zŵ9t WV \TKy.>jUtZSW"U1Ͻ'S3xa5ߓw[ GU qWwq}0VElɗ˯ʩeeXXpJXz:C`Z(+6g)cXm}т?Tdz&F4St]u}rJ?XnQKjް/ ^8,;n ~Z~8i'8_p)>c-~ugʬ䦑m@ ˭j-^jbtKi9jbvtNCX'|HK?SGձP4byy,H2o L Rr>=Ah8 =,8%h&Bct:G[uv|/aft5:  ɭRsGT=Jx3}pgI _zuiqqRʋ->`֨qRTH{ GRdhtUsswV,+$27|ٵ~p~[!pS,' ?fy8ܧWhfU)ʏfLkFn\AΙ~?]pU$_AW(ԩ˦2xMq~Qe:rD6)݁9#kafr O z<2m;?W7" e}Qc$+NzgprfG/[/kQBjQ99 Ng3GHbOM%6V]D͙AF}2zc>4zi3T]/c% 6MrlʎI;ryyP%qjxinB/0Wאv"EMDImi|.-D;n9(st_U pk1K{n}.|Pk6ր)BzuIUjFk-n1@F,qI=)tP?,ɌuG+bF *Jf k&>Z1 R?f.vP8h0ɮ7)9EAPz;T_VT'z Gpo' !9DnRki5A"{Yy?1#oiMW{0~DGm۵źJϿ7r0#oGQ{@@3mYO&_B&M;y蜴ptRCEP&͍?-UB.ir^q~nDzhՉ&1 FʘTvb5Hڨr 7$]^0GA@&/ai.VnW@<(TɈd NQB `5 rxg 8ņPQch.1\:1IJyy:eK^PjBD#:#>W3,GFe錮Fcb jkANZLK|m>ca PcC,8Q'8͓q6]tTt[<8\T/9~#tY::Y?F;Uj1!_3O/14 r!L]uނNh&NPb f,椋h|s\v<26\€K$ 4.>l;G:CM'RJI4 kަӉyTY ͒:j#]e* Q0Pse1W|]ОTJ ?|-,Cc,yf)3ߕ=ٽϺ.#$TR܋0#YF{u (/.8 YRnIJ"Z$ یE3Z6]>rp p oNևK"Wט)dh9{t&&s Gy7=p[&0ؑRY7iބ[L'::&dnyHUÙDS"}9RO )s7zH_VX[1pϞM3>(%S3?\|4M PPkma ^/JjQiU^C6&0Eߵ<\Uhmȼ5AtQ8٬()ﭦ[u#;BF'pAf^C;^S E0즃dP[& d_ÛITΓAZ? [a/.#1m7/Vw(@)rht% /LO\!Li69wSCWI&-uzw"@FɌV 3 "q/GD#3J$aww-M&k$DT &<@hBw\񖖠p PsOUc[, 0W]~WbQ6mn0.0A`)-k@PXjnU]⋍' 5^k(7)_D@ M'x &RU+X$܏??5Pw+.s/:C%nS lM/TMq~)߃4xN&hc}HM0s~hnMNJ  (+s)O Y}Ҹ'uC r^V{ZNʋBG[*Ke~$]7y+P8EK%f^[ ħvGRo$ܩrX|+˴)J5޹L Tx!W 2OJO0%8!zw˃"G,6e8]1Ue#vB^Ψ Ǝ)Ƿ.:XB57s Og ˀ T֍7&LD³6/[n?=Z.Ծ`S>rJZJ| IEh\< FyI4S2Qӫ,s, loF*7JR7G+0,D?Ƨ4Y4轙meփ~)Yy\|iyNWǪI =XT톱`;fyƐ, +]: 'K.CkGQF]A/D٪CSzX&G'í+qPBe]MxK! n`ܸppPx)K\Gu:q-! k[^t.,ĺbwd-L{y9";+Va;؄7a}&eӱӱ W>9S‹^W fv%2mtw*pа^k=AV2`H$L A[kBq>59:@k`jLqsA_]ɣ6& W'eFj!S320 &UQECNx^.N\E rأŅF#Y9LžMЭy6"bxc?I@/hd/fDM !}y]qp5]+`";e M_$\{^~ t[C\pdNǹ(H>jwWӖ",40 aTpRȊ"Q, *{δS7* \te WS#+8e /h_Fe.$QmzSowhK:D R2zx254j.*2L4>}}2el'@AV.+[ [5;75x>찳ʍ*4:8tpN_d[T g]3Pv`d(6d7РcH; (ߎuz&B}l2Ǽ>d)MDhQ^սotSUS u$)ES=͋b)_llƈ#'R;.b| LmF>`0>:+@Se;)2w1 &mec:so79YoqF|[8<[͂zp hOα׈RGm;4PeRAd g EYq괐,6F!8̦9 DWb۽n(f?Zh5- r1ĺ&#% /bށETݛ^hl0 ⠗iܪw-b^>XaF84] =c~+FBy8:NNvR3g{I٠9uXŔ#lo6v SJ=懳THYل y(S.%UZm哧ΣL*P/ኣ 4FgX6R<` mf㝉.~SSCahF3OZǩ2]Qwl%a3ӯ}g BMIm%j_;4Pqg~pm#|c(A*^F0$s0">sFrdh=k9HU&j`uwƱV@qbȠsS)H~t$xx=@~G*_kjEv@C8 $i b{NRב`m2v&p:7 Nn4/ WT9]dg3fBN}[lOEa1sUWo0RR(|8LbfFolw0Τr݇fA֤_:1qvb3i1 H\Ӵ\WQI/3a[LߚH=0:v.vJ+=P$·kD47-]O_g}%o2xv,!Lt&*ftjdKNP R\O*d(s 񖹾eP9Jp؍jiYMٵЇphk#Sj cmSB}}odSQɮtJqi3356lvF*/_g̚#k4Q" s/[6&l ^;1_Ǣ 5Y'i7MT_IOކLBy*hBlEQAes.+lvJKx=S?E_vRF07>r{QxzZyJe,[URALNk<V yiv!..?Ѿ)-GUhvnFud>o uiĻ>^&Hq_tşOwej` a޼f@@*%ru5ccTt`~bqbGHv ׬,Pe>./nZT3;ύwx wQ[7M6f|y9aW1skrbUk Wb$j/ rՅRRc.z|(V3-ql3hՎ O(wH^[6CxZ֎5|isdzG߉b{+e &-lڵb9a}ڗGlL-Hާ=W'>!3N?ɫ8JWoC[ݢߥb94™%ƨ1rQ.`Ge@gP!XƎyhs}9WQ_3R Fa8wa,wBWo_4ԘquǤ  Dwh0oBfy@ sYC,+/E.;U/֡ ZYkǩ`7q5kL0{KBXomE>1llU†,kAtc "{9{`u XiPh"+0JX)_-KWn2#SJ6J.}TJf'oVcW@bckdc%1z#pX_An r$?n<$\_7@oXo7Z\-WA)")to}\P9y#ɷq\:{jU!@]ն+,^{2],Bo5T*>($rGw@!y)vj&>zZЭ Gxf+#KS~,:Ir } ]Q4n'K u<0TODaSLxd~}|r$?m']3!\}H-=2FV(06eSi<,@  TڮAFiHO'-#{ 9]A_RV.(LuC ASVg@"|O܁a3ԅNp-S5^_&891(%c2<ƹ#/^ V3vдI`5طg̓NoaFI_pjϳ4tklL|Q=[۸Sj@CN 3ai(6Tc:-,DiENc/K Vf V#/WFwH` G%2r<^9eTcOyI1%ćX_p+|G|=GyޚqyU} rl,԰C_:REMfnLfZ {/=0rVǔ8E"VSMvW6P5P~ÛdIwk?E04KRn%̧w]_#/2j&g U_ѧ"{W9o#M٥r3 -|>+I OPܬ igfϻF4ͥ/}+{쯝WAW57}]HRCX.yST }7%hM5퓂zvk+ҡՓ B4d(&:P3حvFz&i &h% ]ir% =wxSӛDBֱb V_փ3C\}lhyR-3n6>9X4:Qc \q -"hZ ("e ؂LZP /L Ϭ"M0u~~xSՏ{IQӓJ@]yRhNdӥ9EvV$#FD~XqI]a )B&b6pc^u$f'4P1"<(! {5%\]e 30+z&2~Z.JwIǜrd_c(0df_NU @ V=jYfd~[uԷN5'_.'Ƃ/ח4XXLB5oR{/ ~Sne@P ^>~)hGe-#0(]>t4B;GD-:&1hO@ M 'F% <𧪢ּ8Wd_+i|O]H4Q_xϖd i0ӑUK;=2[gWSmJU_Ń. o  2\z!v4~KKQ.t2 s@Z3mplmK0aa?H 2rz|VUfz!tj|Cr#f1qoR]q.&}x? 8Ip4K2%#?2!)V;hW|#c2Q$>AKWr9kYLo^O]Y dS:XH֗|jK ywlk'F@`-U>&a;*;+fՒ\oZ~FU+#+26 ?d<zwGWnX%[kş9HLۍ“NlGeH:sxW{3stJ*=g6:> dam][Z3.U-Ia9E-_nnt0K^@I']ufiH[ CB2Ɇq]::tɋp1!~?mcz+YݹQk6FSOe@ n5NPf2KnʬX*G' zLmtkYPS3.TroA9C߯o,`<:ElFK}Iscˉ/E xFO jUC*?O @ .J]#O $Z2ATAzYL"S2|PjnuȬeSu䅗JYl̬dM<*o.̝+ڥ cQ|eHkoyKut9gHhn!+[GL=/MP+0y]/wԓ7?GG732ZzX\\I -&PF_-qnNiH}vp@\ԣJ9GGSElTr6?m!sKw[Wmzc!eǦmtɲG.9;;T;gn!/D=:h{v%"XbDrJm٫& 5g<}g:f@'3T8=XHJ/Vgʪ^]yʫu}9n։brJL+HJ1~1l/x;{RBr.uκbؔ}¼E˿;%#v$rmҩIPR |a]yDz̈́=*'bnn ޔVcL+Xuuk1>5zvBͮ:\ɽX7SsE\j b9LnH: ?Q.=)b|sZs- IQFCb);+>ɘV &dtiIZ U-h,U>CzjTl \E֙7&J;cw=dNy i)㞷.Є U]*{dY OJo&O> +'6;w N[M5і}ߺ@kMAL\}]8QPt2%Lm.i )a% `W#jV$[ʶ0<#{ze'm36=> zf+??)xR8<@eqR.}W,I(9#uʐN&M h ]TXM+C>S*Ozw?4_M_5Mw DrC1| ޳Mқ)0bt#'շr[>N zm RTXA[L\VѲK d^`R``Q Z'.5}ZWEcFS뚣Xa1<3Asdܝ C/EcDZ:(Q.U81*ZK،EN֢EJUjRl@65=T|'K 3UCl{xA܄"-N6Su TKy3IlJq q"tknpn=";ӖLgЬ7JҔL!!/N{Į)ʞi)7yiz]^#?6E{aN h,]74?6,NHCEx;d5k sYLndFA^,J'KI P4{j%K}M..P[4ȭ 1_KI CE9˅ƅۅeb{Ȭ7. zi;J²ö >pA+6Hrzt5e,:TCG BVWU jMBqX)B[l3$mÚ-Wf+'Ҧc@Mǀڣ8i~ԉ|UwWn#\\2x+^ڻ? B>!s4YX\\-p(k7(va^hܯp>&mSMrNJ~0?kZ}% ܘ!ȔėQ @ċM0Rcݝ\)b4:Km)PX/W(~C[Vkb8(dte?̢/&1>*qk֪zT}bPj)xv31XE ٹ|k:gy.b9J"y~uf*9RLv{.OTzK18zi贫q }Q655(J6 ['p>@Dm6N\^[wݧ(q9v*M$ҔYN> NQVjk'}!9d#)SL8Wl:-{^AV~a 5r1k3>ӹo!`5@fb7Q@(0ʪY[XފG>bR0'Q-Q2#X` _c/B)vKs ĶBǶQh(?UL?2,(摄t9#P;Sb]yXw]ڣT .&7g.ܘnS-f2^87ł fc`zjGU-! fFיHN *i@Hv$3ICx{՚jY&v9XK'K%pC D<0HXfS0 6XIu rBSh[ZsHd{]<ǃ8M; \8ytJp6E*ŖV_CIV(z>+Ls-,~RJ?5pȪd5uaesQFUqTuQ8̚* 7~ˊGr\8QŔB/HWBCT dv3//#nvVR -(A,EY4u;ؚ{dKn\DG^":DVbÂ|&=UíVQF/@y)lϢ]99xԹd>/*wBĥ}wp#MӸ=u8EC_%P?oL^7o7vJVEJX6ieVtt<ƂeU2͢o~^w^H<[,W( E>2!_D-:ʻ.^?9?qp>Loi{s4yu)̾OP$jf< R9b;h%' oVQMIFn'l(B$# )x. -)A_%:ց㠆??tPQ/ 8}KӦvtJC'DKSP1&IE LΗp[2A-&sm%Amdj?=w 𠧯`פb pᱯأ`LBP_2,~T!Mcr5AВ :9ؾM|ɡiᇂ>S^ӌ3T?=n;={U[wXTn{o$4LBL6,&;&^,Mk ̔c3C1rӾo96ؿ%c:fCuЦ-tWǶK*mQ*).:UON0b/ifIP(Lyo?!-=*n`ooR: p"lMMl4o$6aOr"3pqɉ BC3 {yL=6EYOe$DwHV_|:gcWFmX'2-̓X23 7` i1*YUhV #HEY\H[Ud˟`ݑK%^4*OyDU=FXV:u?# U`aE܊q9a øAO< L'ȭpPv6G- 8*'Բd?Ez &1TPd,>x9; |sa?P$ >G(Q0-k}{:h ڄEqNxwMBlUb*MW]/LЄtwq:"[+M )ˡ%Дkhƶf``$(iuk*DRq, Tkmw6TA+?&UQ9+Rl&X-ٮ JBhX2,A.&N>4zN'7>  62f=ܼvS^B=hRt MPn#YeThUHdaX2Lb䉤.;s@6$ nj֞; 6ϓ:o$E7CFtqKΧ3|F|rdeiJt!=kTha'S/A4DGU).b1GR5h1MLdYUP2O'@P"UH 3߁xP1ֽYPBϋTq̟H@QV!EDQ{K(蝸،SΩ(U?և]m 71 _ĚEg2wxݐT?-_OHA}f*Qߎ˳SiN#0~|Vm|TPPc_X뿗FHDF? 8dOΰ`M!'8xU-yܝvCO,-$D|>*+𞱰#;S}DnsW hi)EoJQțYЁU"ӂͤ&!j/2q"n3 l}ᎣOo=pΗa0@o˪W:?i:8-ÞgcL3FahSk][lj$VbК? @ &fEDZ W_r/ZB.jOX;#*07Ki[4Gu~~:,(K%VP ㌮E־/5bFL:gvade\c"kYv#)kP nC Z0uFƙuƓQFrz=?;ȰS gI~vIi-"OˊAfR9:f̓HOH+b@. t8'p 'hnNM (* ARbamې]0%0P o~"K_ÏG S:_j(x. {Cs_݌`C4"w"|iò.RK/'4dDE%xƅ@z /㨋K#zv*gG4։YQkh%ý "N#sJy܀Ǧ'(xL9 Rry׭#H`ӢW^5zN|EZ4U@vy1Ʈ#ˤC+$}*eDU ӠIb屜1ck+2$#q밤еDEmncI5]^{%> V-du .,{҈PJrKkҦq&XGRfO~vC8vKU/mɆVB׹]z7QdeJ)y+.^TThMJ @TJ#.&(x.)Et/8:k`Xڛ`Oҭssn@!8a)Z'[.1߭gȢO~HGRnNLs_(&.jvf7u*,HJ]98֚3SURvv@aI* oaHh=;+af|'f@DE,Nv1 z(9# +jX&~*[)0W 婕#FG>v~g/:IW˲EEN󔄃۫%ZN/Xe$Q\5 {bz!$Ђdei0'%q;c{3|bȋd'$v:Oy6U4ZJedAJlfoU$ϚmК筆[o̰J.:,K1/ yS} !Gc r2de&%$D2RK.)wK=k<L'%$Ylh:² y7noбQ*`X/cbNm<؄%UQtbP, FO65$m Zj ~RZ>нHа֘cДG(KթiiV=W*_7_GqZ~)>XO&OZSrG`:|?'*\Vű(r|E"Z,~\EPQ;\u.^,oPDeBY:;DQ+ ?F4D}dȀqohOm>Jz߁֬|("4%^L|v+UsCc!#fc'xH'RF[V xN< C䓺 ) d6a6 K\J;[.6a<œzB Ǘ15Oi$M[+2,97^wUחu7Ǘ>f'N0Kvg*M_R%Ӑ5[ϝjcm)8gc{9- xI/6.*R) _Qgg^hu!MS @+x8W)RRVBiQ1骿#?@'lmф0'hf[+ry,<e^ʋKm$`AM,`B_B*TveX+JXc욽ߗ4QӿwXJU%ERWyj8aW/7)h :eR BjrܠgZh` TH>M@cQ3D$Z\+rN`j DRQu?3okR@ѩoY%`/nLU0R 7L :w|#ĉ\8)\&u=ϩj1qm* D#*UT vo|f3>!h2RFjb-M"*M( se͎ʾf Pek>Ъ僇pGpݓw*30uOYF;s2 cm Be(;DI)%l] aۣ7o:!zaF3G ;2YP10_ bnV۸7lrckY8#KZޫIc؄Wۢopp>vZWߴ8r5 gs9GKpa{d\/)lz+霱y]<6;"@gb_}~TaZO |L)E ~2g79?qKRv)+"D (ɇmW{4;sFi$x4dd)XVG#5͏GU&:¬C]0sde }Q;[ƞIGp{VE;nNkh )ՑϠD4v?B7F7F)ֳg?B˝9n ^2@F׍Qq,|Qm<ў`pV͜BDB$Fmݟz7B 0:=s8{((Ob(R BMB 57ξPe+<5ۜ26&%e/1xy߼$\G;"N]'ҍR$͟4MYHX>%9)GӃAZxBXRc*\㡬47/5f\uɑ8wJ+vfbw%R]dܘZ2X(ts 8>n7gŢ=\uX"V2x|q/Aisr.CQS[ը_Fb0{-r6˺d=zh [Rde~R9|ii{iRR=mK*7CskcdiZt"% Fԫ SOΖlZ+<nnvꩤ̈f*jYgSץtWǮ6Z>8&, ZŤj 4pb} WGٲWqT?;śrt8ex H sUl/ pM4nɅ Bwښ(A}+rpNE9i`z/n@rC V86`:]ܩON\+<=)OiC1"nWA]NIۛ&3%q $$5rL,?itxj:B-on ^Q@6׹^yuj 0Z)n gg-nvDVW\EL AxfC^bh%ޓ@dd'r=B0h'H^ާ4-X01A,R"N@.HV^7Ԕ\Į J-ӣ u ɿR;Mꭠ\PW$,xmU^zgeYț$)D_ -j/"ܤ#X \3p#m&]"FJff f;lz2BTY/,Ӟ-AvKtCRFo%Ӑ6sodd@_pl:L19Tr.G4R'B6h1aCZ'@ETGë]ñjZW2^ nJ-95gcV7mOQJz?y[`>͔37:pM܏eNC7zVٲTtƏy{Q3cWjkC%,/.#gN P mFuhQAQzFD2֨$Sz"bvlT Up'1#}:lr vEw֣kҢ:O&Gҁ->liCqKS0/EC ޏYk ߌ!Se=Ӎ/NSD+g.jXچ:Yˠ~dfAdjK@Mz-%5uO\h5 ^pzu Jkxdt0]u-|Jbg{aR]b% ZJon̙Cs^}<Nf~p$EV꽸\OYpzzSp鉒JQFT:Hܚ"X}WTRYFj=$̝c&Ox=..wจD󭍙!"+~v#c]+"J?xS`WS.hVE 5^Z홙[kdj-Ld➩:KMxh' ":8^@u}CĀ "C;"UW7#SKfVo)=oX)o[ӝfb̑!'AP;%FGL4sJ>ҽ2*P6CU0ƃnV0 ݧQLZ_꤃AN\ΰ {$ȵ{B> f>!t (KniC53t=vN3Gwx(,gn=Lцc *z>:P{&z hq+&: y~rQKl٫%赨H3EWamZ򕀺lBuH>ewk$^ n=Nx`߱4QrpUsm[mcgPk}VEAAig'ƭ05jJM"̠\20qB y򬘆Rq)w2Sv7PlBj8e+雳7i[V2cfhq!BO[YWTÅZ LŎֺ^B \^SB~8;+JxRqSx:w7l6\& eCvY6o|Q8 ۟AF<Y/2.NALS]:[ڪXd-l8ؘ{ PNڷZ7cM=a Hφ7r {œ/!¿ B8W}P醫{d5zF=*H|};j-zd< sl,,D/HIa>Iʫ_!,$8e#;,d+ӈ[vg: w=1$sK{5]TwHpaOZ r-4\Hɺt!A13. !x>si!i;O d'=_d+F@uifZ>^_t|K#8>JxRuKSH£ yʙ3x Q إDrF]" r@wxvIdi (K̺KSU'mt&:B̛?i+lLVdIo˸ ק. 876p=;\&vHym2jsnVl-ACe6@Tf߸඘:erS2j/¡A;QЏy #@Q6Ԗ,HddM21ır#ė!AK9k{Ґw"e"%˃*i;\sYr ve34te=)K!a@q_\G. گGxB,Cӌ.Ơ8Pw%)6[Qs9M9o&z )l3tqK ¼.n BໂzEbvy_R5^Q]D«p0De_ ^@p}1s{}v\ ~^@ھ@yJ:/N3L8*"+y]~[28Rd+ H 4J/P&xam0dj3ms)|[KVZɌϬb "޲.k-Ghpj\Mg{[ʒ4oHJfS-Y$u JT~;HAºyc٥&6I\^m=xn-%P JǟGMVͥ#侷P@N'P R)3,3t =\U+[f8hb"Siϳ%/*:.kŨ W D/ 3p$.E}"[UABep7+ܓb A*7QwhaYebivy a 9)ܶGpߦ@ۄ[ f {MKV[DT~_tXAmqXT:e\'nGͅ>v1eD `d(|Â͚ 9D3@ gݸ>'f|ȝA}LY#`< r/MSLjGɳ63R^1snބtLhGmxM+8+_CwCBNlrpEN*k6"ׄDl2ʇ# {Bt|w#aci͖xiϒ v` 1 7\PH#w.hrHRGH7J5yp:η;$ļю$O U5-qUI{W/?8 q. #3;CLDGv45 D_GYa1Hj! ̾)}-{'j]EU2 6J-#`b!VQL)${j`^TIxU︡~8U'1@(5[FQ,"}qd(чg'L%zx"LwaIbB=ck|By "Ui5zŐuoT6-ACqeGx!]:m?e]%__+ЃGāvΔ1n@}kvD2ħ6=B@l/R F]2iD&P_On@$nJDN tΑwJq;BpMcd:tDq\kCG)NUcEzt=: ]aD'VAX쓕',oI-j)m%f+0A \ N12Gۅ&8ya[ _g]GT}rI F!o-q H+``_=*cba $ace p(ig@'wsgŵ#8tΌ0nR[XM ^fd&_nE)Aa={58`*ݤZ)\-5wSj] [QBN EϼM|3!9p[EeI"^wfY+b[F:'3MPGr,s'j-X ;C'FLQJp.-딤JQL>9&~M՛afW#4roԪ&\qx\R~7)F=8Gs9Wq&RZ}: J 6G=cRt3,cA ls>)Jf2|Y C1IDk= BЛる Ʊs" 'n%M9nWWڽ@R 9HV?)FS7"/&cۄ݃Ҥa; KqL8VdiaΤ찘.[vbħ2/#E p_Iރ!4݃h@2^ՋMUF2~=,Sgua0[(1u%2GtwiN蚫ZE $` /ymFU:_"|6)9 MwAL,>cj4w0 kcqKm)UA%E.Y2߆w}|50W^#/4rX{^NL<07։IY\a|9d_b1$ FS5E)qlalv4iilZÍkރY E_ɚDrc5M7ͳH?ąvODj?`Lqٻ{ *JK1Ǣ_P2[PL7 +_%ԡ(^57${RQX .YI鋇FNnЅiBhNqnlwAяEѱpƗeY@>> IB>&pO#祥XH..m˔5e;y昣%)3xSA@x9M {0<||{PΚ雉 iCنqO<5űt[Ҕ:O)|<FCqr .]M+3f~z+B,GԴm{W^{CL1_,Gy{ 1355͙qr줭%g&-8ٌ)&~u0d jHj$ڝ`}bf|,{AM#8h*l"P4cj X$!^`Gޙ UpdW'w1\YH+wC)+sj$))1V5O'K^ uM)GT0=^3߽X<%~x)@Bu$/m Ɩ>W/M( 'ڞ}'KXR|:[#)T5UtNpYH'&%V'Pm)Txw$)FeXHЏU}:VlhWdml *:JmeʆFzz|1Q19co:n~E/:.$*ik6EL^PEz-UT_y&Z#Sl`:ÕUty{"NNb-)&HiОv7ڠju\ G%BЧ =1_v3k%Pp$&b4}ZNYݶΔC@VxQxtA]Xl:S. '9 *Wzg>~$`vHRj+1 -2jD"W͘;1EpOD[Et4W4tߨ7l9Cd,>ҖW3j { Le"LxpuMN-4QR]F {wtUN[$dT! APƞ ?lݯ~j=:6oDRczzUBp$ힴ8FOΊԙt"a M8dSTSlҺڬ{NSzq9YwAK!%*/z $%WvHwvOVSS.4/gBd h%>bԵT4g&Yil<ٱo4I9Qk}.pMW>*,0 9;G3 1l5eٴ_mLnz_o2Ck#+P#h,'C,r(Vಳ?j]sF;[Xӝߵ1Dž1Mm58Et/2oe1u4-@}p\7-g7~)7>e驇! zNE L#FV/C.5i-%>¼,|Bp|/L"' g2 SK{wԛO,NOaq= i* ?!.<&ۜb|JM, Oq~"[b;K&0g[ey:^p a.؁: /rb:ɬUdlSpI(XAuLϙb)jr!#)&+bm *l7dk5GV fH<ř'mt:+~6BW_wwL%OD3:C>"(Хx1b$ҋ.~=Zհ.B ԁ 1V$؀گ՛5osEE9J6h/b.~?J9?\e}ݙ*mR^FJDdYNTlC Ո#m`3R3XGT&1JLI.Ab`98}fkǁwz򸒱'ROg;k/^<]{E\fB_GD8 ֓8d{ܿV0xf{fN6'J9й~b+[c7ZК`?O; 1]*xG4R= eӉE9~ ^!i:u 7;/]GG\k58:3!"z6[ iݦ]WZ7K*n$Wdpʝ Pẗ́]3@E.R )P˄)hVսv6 %` 9cap̢i@# iU@''ic'Jݻ(/)y܏A:6s0Hrf1\ (rcUx̼Ѻ2 . qmEԆuL/]WAhʹmI!Phҭ[7WقͣArOuxj`vpPũ r;;sY bڎ\د/jEHMfr6<[W5,ݖ Ĵ%Ag-j}=82LceuyDo-BP*%D5ɧe8FCC^geXh7yжSJc/ٙ [j1$v :jeJnh fxU.rlܳF2ȵ&fۊq,yA%MHf.v4(ˆ.w$uzW"w#xv1_{wa)?^}@9Jpq\GW0BK:4~CGpTmySP' sN^s\B- p*_1uJ$˸&eObtE]7*0Y_E :EV3cg5@&ID=i<۝ر2۩AâLVķo$@W `} 0ȼύ #t$4| )25={Tl> N!g0΃vUټ_,*5'n ٳ3WYǑGL14/{86h9TC5W8 U_\lUbҙ ]AWoDi͹4;bN$[mpXgPK\>asDw 4MD~:eӼ+W4f|yR۝ ̟ic!I 9D[wXj#ثw6OxXYMK.+'[W'."$#M-0uTF]NFXu&$$#d1j;9k\Z\./a]k8h Wai/qc &66x2|-d'g7$#w+3 |#MZ|LzA?AB>1;h%,}>1."QOq&m.be2놝ƒ)[$'3 N$ 7{: LJbZXHϐ-VA]CTRGyQMYWOO+]|cKpч Ob=M= D1??IڨaiT{&WsdJб,u cڳ0pKDX)HA. m﷛-:6Љ@:vPuaNF]]jt^ӹKښNDY̠KCHAxO|tnC|27ERwZ1Y|8RZC8s8@Sv"23ƻ >$BAd|F ֯LsU Vyy J@(pcz^),'h@/B jcݬ化LKO_Ptu$j"0x f[JAdͽtocnqweQolW$PZ"df!Z=/z`pii4G}!Iw:|؆((R~A6=9tZ^<(ONb vAy hGsDۅb!/\ȳ>VSnC sFK7zTB]1[vmS~!t9 ,r3 [E 2H=^X&(M]NB89@'' šJWlHN5|JO]͋X0gmQg5ȏ9mUd Ĝ'  o ?REs&:B^eYEU58)hΜVLa9q"Ͻ+H%P * J\ bDą}"c$#@65aی-DZe5y+~wZ0!Zvxf8H07gKnL32pul)M),Af$n9iu {Bo+ Ȝeav+ ƴ4+XZOG<5 }~(6,ցiWJuA"&9D^NzN*E J@?ew~H*^3F0vI7{^$ل":}qC!ܣbQ-P%ƵL =y #DsmH qO'0^c|V}5h[:::gf^WMwPvWH\a k3vI*oP\RJs" ${ɝa)A!FDA!NͮsT<*iPvحo-܃96W mj\ :\ ғ:qۑcx V))jb~ĉ2 9ÑҾ`y=>!fTܿ,ldi9Yxճ:Ugc5‚k%ZiA0-uOov6 zfZ"pcGQŨsQr Rhǚ NpޡT[#/5atM;Ȩb>.|H{[s@uXyЀ#n.Z⮱ uۻwe Û10IhU&vƶire k`96[t{Iq_y^ Xt8ܽ֊٪c+w>luӁ8lO>J|jV'!~4,8.je/0\2PP3&d8jIQQrkY XYE[m}c#F]S7(^88n]pj;DSf jxXd]n¡QP{|Nx FMVPܩHys2R9wxX5띨s2RqFVj5?A*` .g;;-&VfCEl/p1' gLGo[/za~G؄7L{%A1E'd.|9VtG UT76A\&ԗ e(;,F $ }!HS𶱉n+zҬܛUIRv=? A~wp Mjs# aHs.":ʅcSUsGϳ˭'O6EOSL44xs:|=*K.|1f(IS:-cЍ F%Hvo ->>@QNn^D ް`!kt*}@ڭϰkލ )nc_\>:J䯹) t>EEP)\yGo>o+|bTӊpD⾡իngXA#}nőի=ЗNiEӥo Mp/V h) v1l~ boWROvϯ;zUִBb>k$4WOFXK6'4,<ޥk,l+ ewb"6Cj 9hbTQ}H82;SqR& Wwz@ ߝ%[Lus𞴨ZK'p"cHYܘ ۆ5T?@òmƶ3;ѿ*%!Wud@•m6$ww]9aWʽd,ViюC өr~D ,VS>ԺΌ*WL-Oe_VuQn]V+ѽSs7䮞$`\e)f;ڟq!6\V&ax?V[f䍷cE,g; >TiZUsѳC%qs"%c+a=đ˛IEKF~>HQL03C-{cUǮxd[9 [5Daa'3K /E#ȢL 2+q}UY5d~"@&ϖ#jWV܏YИU|UeU)ZH7&o`*'}7#{0aEELNWtc*˅V[|.HOu~9Ǻ)xzOgaG`\lAW2/t%b܃zI]'%oLA8鹱z_:Y%G (Eˆ7PJanID?XYVQVG`v;u~m|K:/DD>e! *.rj )\>v&/<|?c:Ƒ22n S$4SSN'jVNLor- L-׭Xm7 p uix `|*,!5n2 W[@lj-`e)Jx|dak^R)9 h܂UK? A+iHM8.mk) )v2BYr8OIZFx Q41':d1wyV "ȻsAh`C Añ<ƯR>[im)SG&ɯn.;atdoe)l6=̨ʩڌCHZ Vp7c7yՃ{`_Ftsx 6;jz`N&&m^Z{[GK{AҲA6>#&qӑyXHV'z!+q }"-XbxjQ4cm~v tT' 4f[2;X[HG!˨l<-Ҽ\i߉_2ĦWPE7h#+bVML^B-?9eVRSªX~4D9ߗdQ=% d*@֯U$=skHvO\pSC \  )lV&:6jAZA%xt_#e=Dzˆ "g_.t.:mGO iQ .~Jg/PX90v?ZJ8ʺ4.*i+Y= 1ч 2L; %jRu ^iHiCϥm: ȠK·[ P5 #Ɓj^{8d0NwO1OIӈWj)`6gV[rjksWKAiTLZIBd8+;mts±Fz{E]9=@ݏ^"otmJyhA v_RCGYεf\ }%|=ب4~v\\O``V-k0 4MJ֞[yC⟳x 1x8𽗒RH[ +h()HDU 3wJ{"2gL>L q]eg:#Zx<^iʰL.J ?F YQ>cA4alٱD樫ߪvXiyXW$|~hԓED&ZxIF8}Kٺ0 <s $hXKES\݆6(o(6 o%Z~+u{Jzc~<ZݷG}M7Hu[X`2f^6*f9Z0=PP-}m{tVd>a6M/$,(~vEd^cl%'FXa`/BYد!x֔*4`2Ւ:rU:flcϭOVwFn*&T>6HD\؏&Brz:z I`|X+<<в4*:6}jh;C5 9T>ݳuQOگQyjvК+ #80}Fϊ3 Fgrl{35 uΔb /vшDOί2ˏ,/o)s)fu ?FNE.^OdcK+3Aրz1yL (]SlbxxiKc^\^@Em.7*ŮW\F)!_wg],Zl=#5 "_e=0n6yTi>#r!6wNl.ۼ$Foyn ḯ~wՠT<(Iҹm"r.tcmU[.KT8}nAˀmrWެkY|s6 Vzs|z8#(ba@ǟAHG߾'O\Ckmg&mvf!?|bZjhDP%d"މn= ĺ"lMԪW ?S \ cT5qE3d!Vm2[.PnL{W]YDM[.(O4& n+]D09@RF-4}IQc%د<{"wV +ѺѽSfY$yD<R)?P/n=HZ#*TCA(16aΫFp)"zc&lԥE rx!~7jg8$2g_LvN^\wPqZ~}{W?Eּ'I[N`׫oe*҆ղ-xȷhSxRHW&ķ@!Dy*-l|Hv<xky#bWjNm>Y/fxP^; Lzn[6S0!QI28kd$4NϐH{"ܼYJ+Z} R#kn&6j'cHbT'p?)#1)`"2f*| Ic3`gsl8ڌIiP^El 9("W?ֶp6d+,4h<8899ʊ@>~`)K*0|!`:Ca"[hDy7cG|D 6ӜUl@?[ɟ,YK.!Ő8'>q SA=XI8h`\0vn>,M/mx<hvn+3|(I~(Fl;WLU&f\H%ᠭLq8+E-R{raԵB\eX=mƗU_j W4b {7:؛8F \@`jv8b'7o~Y9spyG.| S,͙[FOF0~ \\8 mκl85y$5Se)ϭR(nm5RDw4QF#HԆVqf:EI\(bݥ߿Dn]rw= L AxOdfU9d`uX{yXJPG^;: Ζw? (-S.kho_^vܙ >Et2H `;BIMM8\iLK_I%!dnx|~ҐaM2X}0A^vzQy퍻h1폽;eS_~દq_іZE :D?S) 3^2 ~.rwb>_Yr=rkM$\xz*ad]Pϖ_ {_uuV~>hdѶ7e ո**ޔol+Lˀ-N +fظL{kh )is7>|Fl/RݓT }!e;4jHǨ^ uї;v3cظ Oo@y‘ҭu}vϒV-񠪘~@*]$fi%^> .I^Mۆ;n4f*{~Kj/Um *a[Ŷ93j)M{ˏ ˭P#s2!Vk-\ؖ\jޮ7n@U%"}{QV Y{pV6>TI|>GRgwO:*U!]WD},tܙufjxz;G^.Jѝo 5穋'p&ލBZju3a;K$q7IT}D.3:y*+cSSYRa30!.A eh$5UD}NwDǕ&j]!ڴUS:Ƈ+?4&1LbO #{0$ƙh!)25Ls`UR6 DSm^= Ln0c7Wꦻs԰]S ϮtJLO0=5 B ,=Oj2Uts4'3/$0RtvΐV^elpcB)FA* ]"" fscp?|m{pOE9"f9nQW/dF~Pye0gupvp2BU"kuظ*8>'4npi,-@D7e{K`){h1#lgnrٺsC->e*5 k0'C$:刪"1$NUdN1J%] c%޺`pbL(ц`f1aHI~2o6Lv_Tndq: qWx5A55wNZ֥W皘&G2/G5)9%/- Ep"M"޹D,[%n]5' L.$YI˪Mr[3tbێJG' 2E4&J54jpbT b`` YC-M9oq7kŪE/ޜaRBZqcsWו,fެdaf|;@EZ{sV&lFitA6#WbUp0LT7-УULyF`/~f"lb_e/򈇞Df'R;z0Ge A:7~^Tb,#D~F7)Z yArFq| {BJ)d;ۛmESR 1>nlVaY !foSJE~Ag9 7 yn:醟.DT`<@@ g|K躒ŠS9TK$z]/ûe @q>ltMZMΞŖ0*&IdMAL&(jHn<\ꍾeGa:ý-XZXYt [vؗgsbKE3 0a!1^0"1ν Wd~+DZrQT]Ԕ~`F<ȴo|DS~o](PH4x0~b[ k^/֯W/*ۨݒfY?Ň2.{B Z[uUi@95o痆pT&f P;=Y3*]qC$gI.Ks}`uFau:Ny6;v^Gym%0pFB~0#^FUgIj;w: 7n ^x(Z"9G,+Zd>.v i4O+nŬ눂[Tooø6^慣dV/ҶQjϲg_ -"4 au龕fL =nBY\p yK9I :z@Ǜ*a613c^~;;2xI1~C8<ʩժPG0;uj[@$Ij:K_%-֋ju4<ʛD!:qtwv' ݉N?kςmAĊ &>bߏy[\8$UVXO*n>oIbiRv_@ 4hj)>0_+Az觓Ae*Fzl*k) sK _o5mJ(kœ^,Cr{V[\l2JT yřvm 2sW v'3 Q3sOyf (g WV2u DxdS$R40p']\S1d~( {{m՟lSdعucfC6GySJ99껞d4u峮XL\~bb1M<62燃'Kޔ=i[Wİ VQIT'|1iY1J3v9Cez^;m;}.RJL& A97U36Ŏ_M@#Vo-߶SqIxlt]_4v9J ''kCkfjlA +W`R҇b6Ď5|<_A+s$ǐKҞt|7eI?z[p؛"?*х CfnaUWxp#R~'Lg i_t% ا5 J" "Q#xt2TLepJo-B}"@Yxj(8)NB ;R8z7rd0io&Q 'f}R|vjE1D"|q\xgO@)v z6 +KuQURjן;WC7{(J ā\ r( uD=|񒊩6P.?7Mɶeo( C"gOQ]SahRO5! 91ԧ_UבJf޸M? \;_d"V÷)f3nگPerYV_7 )ً'Hbgf0H=|xh}l^%oJO ( 6FNw}dC@wjoybVww`" Aշ5g' &ڼ̶, iٔ ?@:r})HG%ޖΒxa=75#WC+`(pY[9w)io35oA|d!\ƽ>S%R4mLl׋+F̔Q!t=YvS2w; 럛vP 6ZmԊЋN!fyn.Y_B~>W yU@K[Dѿt3Y3vDI%IYD lnV{0ca:~k\ Txp^aƗYYmF3s/2`= %NGI:KRPкqC^=B&bZw#gV)C- \9D2w]R gQWVaUp][" @sϕ O!Q}^QWsT 10ldDunLbr4 { BAMRES^[LaW>|0IGT* !7Tڡ(@x@g06( l}?T6j ?R "#DŠ.D+7ڔǧ G)h2ʼ̀Kd< 'u[vy%0vZ>4gp%ҌFްOys/R_duqH_n$Gމ8(=nM~` Qd*0W9ӨX!焉f bb.wE୔k=/yCx0?SlNn9psD4v/!}z- 8&RZ=x(pY:=t *r+!m=@^佈uSyҸjuKWvY6L!!ʢrF` 7Tv E?Teyq 42^`Y'ۮh՜X|x!Fc0;(W _?ԶPH5]"nkN(4ԢY @dipݝi10`ծWMԐ&1BS{qXuQ=t&W9NJX&WN7!ԉѼZvStNo=?z U6Qńa ˩-—Y.aʚg |]إoD1<+eRuY o`ɬZ-Am}G cEhMNJG[+JɗO,E bQ݁ধL4(j-OOGӆ &7eeA}nzF3"~i^/2NUR)EԈڠQX4BFg27=!W AJx5]JlgbYP2deMjnN9s/Uɶ$TY`iMq ?U '0y .a2X̚om]xն#>p_L3 dopߎPŹb?6S8ÎpaIPK[ZpO]5뙭H4@}k ׭nZIh$iU]pQ-sZpXDZZW-<5%cv%bUj~{al7}8|Wcj7S6mg b䌧nuLqDº>m{Y> |ԥWv0v)dv".obAIh\~RbqI.#ax>}W[i"SшDW_a~V`$W]b;ϗ.c=`b㑔A٢vѵ ^rVc0}S zù[[!/˻^z(z!ƀ Uw;N4/&voࠁ=6*B24E1\ЪD1*r绚"'}9uS&Ξ*q̃;)WF;Ėx?i~/ &@"_i tx_O(JH =,KF\դ A~6gY"Ȁ o'hfr,\-J p;KH穒\s08T Ypw>@-ETOVqB:AOt]ڙ+ޣ!mWrߛ7gs3u9l⢅/L1-lB[q^# @λ2<:mYTB5Dn?,ir5$_~ &w+_-lmR\3aCqZ(HLdv[YBseE= S"<HIp88\&Q25%|$s q7BCPÍ?Gp?T{vF`WaY>@g¼JM t[bS|?9G*T.Yu{= P c/(cT=qT3 StI> P;DB"GobU`1Q/ ̫gnF<^0dq%49/eټo9Vi<,Wy GrA5kCR߮fN,G zM>_'Q?4x-I (%!.z^|Q M:- f\3G.ȫ?Λk.t*xY%_5 _i՟4!Ys@W&ǫB Hʪ-Ys-ZFsF}%c"*u#<91% _c#!* FPULݜDt~ SJ7x>5|p&MB1 o9)74#8n_N3ّ "1+u!4p)SW4V ¬)弿4ľ;Lm($}s:Oyx|;ۺL kU/˞Mm{ .X/U.>< @ hTlܔS,r6rpn4߃Cm}_cEY[zTmof~V'7w-',(1>LA"In溑yO Sh1$Grr 3PTR :E٧BT}Axyi?2HlJ-. 0|bpU.6y##m E P O5y&q/ԈW׍baW_P+hV;|BC=&'8flX", + ߂R)s CxW#ۄBrVK m2C-(IU`׆!2¸$ryGdG ?nttgǖH@'Q[ 53]7YxMK,]a>9i2<_,gK!FOJؙeO٬b4~bUMD!gμÔsT5w'v#;DD7Ȥw,%cW~fz%˸V$.Vn %GUWK뱳ua6)^H % K5T޷uq@xdQGepv%H(pUCz6ff.>tJͬjnK[S`j7jUPՆʽZshPhڕy;47c6SdvāAO,G:sj!6|U:ZX?~Vq8NAݤ& i/b{4* -ap5RAz.<,pn璸/'mandzIT&ג_m8ɱ&rj@3mtgrJ6C.(u8 mۄU[hr5B?A_VŊ[4Z"$n>1[ p]f"^D7(OLCy"c㳖\ k/;2g|m_eJXjavhJ,.| Hۿ5h Uy Bȱئz W6X&V1 yOV(Ǎ+Jl\$_ƈe}R5˱OH;21Tk/)D(zz_y8F9\:?G 4lWJ-V6"Ib Un:PekdWuLX>iq3nRuI>;*F gh{l~2nWUZ_X-ڡv*Fq:98!?BaT'HMKdh@n9kV9r672SH&1ihD}#TffcͦAvvt1wfn͢_ . fšQ.iAivVjX:yY J1Nfh4W}f!F?o4SHjo0YBh (Mr lz%Z_MW_'B/7=$:o)&{,D¨tɊX <]G!1̒YsyqWȠV!1941t8`W4dv0b<0L D6,={jz*ܢ nS1mF0!1"Ό!C5LE8)|.ѿK:VTC:;c)O,JjW{(?6,V:PbOs-Oha<a6֚(C3Uނ+JJM]{RߵA!^k{YAPG׊GU`nbs9@ b Л!{*UbZ) "=K9qգ\ ;CPc/,dg5sc9.18IZ iTpY_0}2zaX25|ۈ\B In*)lK ePHWV(lpuTd iUiUu:UN&E*$s#@]qjJ!j벋 czk5}7]AQ i.ܸ<žyMSY(x+D]*W"(cwF>,l5ni:syyC~ Plam?Q+ND\FKtYXePx[sϏvbCQ Cg,*5N3D|Ʃ+rS)ڿkxv_0P<+zy,5\BڽyϽr]C(ˉВD˵6t*W{V~d'WG@|nY]!E[#9Rߴm~0oKOIziQ!Uvg ILVK&M1SV#G9p'@RgMo1U %t%rUD4_D2XvTQ' WBLټ4eP}ծ3IKebvrZՉq+wl8s|;|)jIZBB#F nG{pWduktgdy'$gٱMjҠL0{Ej KQd(oކSq"mٔmO )t/v%a `ʉXu֔)eRD=ziաk= zHATÔB~q O՛){vU+"qIqI mrbVfJ;4Vqn-1g=p)hT\$wOwdå*Ɩ5:;f=}x0Bhr;e3O9ZuHϛb¶JdŔBNFB-LG՗_8dx}U~h3mN6s"$ֵbs8b#al|?KI;*аF[ɚIɦ-j=PB| >dݠQ8dME<(qa{S!;)08u*&e }뗠s4Y^Wsf~t@}% ?LF+5rB_iJ+BZ&;vxO&wO$?Iq59ADaTWʹԳ{l+ryW`d'MZxq ޯ[F NŞKdlN?NTm{P]b c+-* F\*SE`'*!`Xx\Ǽ/=01$e$\s_^%< JJ/nU:,oZԻo; ?<Rg|IiB$GPּz bH0 OGbp9]BiqAY\l~}us%_:U=ΰofGɧm9( R;\xX,Oh{Њ(eMX $8\`kQGtlA%6 7#}wƠIxQS@DFV$\mlO{'k=?dt`a'kTXڔx:SZTi'V& QyyQم">?.k="`"#NÉ3W9{?۞T9`乥1'e0(!$ռ~pk4=>+G˚y8lX^\ 8yYChUE,?ZE?$v4p7:N7$؆-9L)p^kIiQD;4D qE)}e¹າYwW I&j.*y@ _6fHKP'l0meWwKTv\~!h7:{Աv *wڃ"D =UMh|;+NrCoip*`9Ͳ"dXߎ+Z"(g1__PT vXrI\=vx}a&2JEUOX1a&b1sc'䮠/(lq:a%L gE8]Lu$D.3 .WY|ytS⍪A!n?- `#*J#nr ?n,QG/իLV׈"yeMݬ+[ew RqVS+yoZgoBʤ95|0Vۑi܂22DuZvϽ>ϯ?/"D00Uup0Jo9h *ێŻe->{ )T@c<ÑZpx&eA&{;6gHWg[7IhIk&Pv4QSm`kvssi70sjxf[; ~"YL"vC6=g.4U&:<գߘ@r` m:c^8¯GٽtKR';τφh -sʵ<Š\_Q/w'j>POn*m.{jz-xu2o V~]J*gKtL}׏mIDV, BGV[mT0eA`dz)h)sr_v 3F_zYJJ?P7%2* <2l2k@~ޑ;s[kC5}C`VQw/=]_ w>]B Hc<#&358t{95z' OI#x&Fejf_ĴC!sbWncX2/9۪v3)^7Ջy" ]nhO8_!3wY4+ҿ@21Fk?,DP"^{Z'ջ%\|rwdچɡBa~ i >ف&C,AKeE_0? 6; rĞkc 7q,E}j ޟ|YVDbњCI]|Iw홾#hQv]cT1nj+}DJd(V!7Y`k6n׶zw{g^AhT!ls!980勼5ߦbIed4截jɵDWw_6ڛ!F0s MɧęJfeVtYg>{*tJ*(1%éѩ𱊚\tvƒ^_Z2@p]SKmi욋sxlzhl2`U)uNuT. }'oKd-uM|5 w1;aSK?m3R㢚R06[c9?%*T[4`'vI!naHdBΠ-ڤ(gר3NL{pə-C|,3h<Ə^Zx*2iȊ}aᣒId!wpD)q(+{q7<Bq45o }z"l1z1Z0q Y1brxT4G9b@Kb݈=* 3}՞ȩM1h` V(N]%ύ9;.m/(Gaha(Fv ^e;m1ȧ5q!a}jsaK(X'uvΊ'K)MkgOx?T n{\gQٞ/*Gg o\~M't󾲟9xSC5'ir؀=zQ.YC#Vffڮt/Ś>)݌vy 3:{NT4:IJA( ԰őյ5kkhn)?hłK</{j^4i"kkS;aYՐ ʌZٮ/!H#jـs" r,ku H1"On8s^Qǡv`W4,ןťKsgV%EŶU=.oD0[l})5:[U,pexģaozUizT41(]dEx$&y. Ĺ"nNQѩ! uCW8ؗڐCΨFu[ L 5W ̢CHn]u.n0ֺOoD_~S |)rhP{2+C-MK@jO3;ИC.-kҹyIVF$x|La }nw!VED;r蹺<_. D8rv50[R4JKF]83J J5p$BjtI}_DO 6%nŨͮ{TSxo6@{E0#(@b}z*ߟSgA:UzHlȕq*quவ5GXQ7-$EyMzIю^Y02i+eXGYJ@)(_ipIz툗 lRD b5I4 s\ 8RjG%VǓn/SDt]0_@Hwu/wU}M--]ngݔɍiL~B (1XB rm-\V@eذ7do@A(cdF.1}~n SJV$@94q#~;][.߷B@:Uc2,%e@>Ά'=ryԷGj\w%pRAUSX[nrOc[`TpSM q:Uh0^4]^%$_p Yp$:BB1 y`+e/s^R. g\h2ޅl=] PUSoa'_| Xq,*?wXg"{`]:*1o7Ê7^ש ouwHDu=@fIPzd=~uat YE> {K9R@P^|5m Be8lzK5},+?S4v3;JuesJ/?ZAIg3/E$x:`4_5 Jb'q4\bzM -eݿtU#.kE*7y9{~_x m "=ŮJbCȁq41 ʛy|pZj t<\!?%I szT8CW"POt` eU| \*{tu+8yr1I8g / 6bXE5[}TS 9ZCM4{*DlZ e5FB~(\$]pnȬnиzT ڢtJTcjU ߃KN*:rKC fnU6fC˜tΰ@k Bތ@3 KdaJiApl25#_DijwGB^7np`ve$"$[$[)!:ebXz u@Zmndlƪea@dlQspFgG=s+)a"': YF3x:W]$Kp}īD>rg- bX1ĉ@;x6Ù W|6y8Hm%]Row ڴ L~?闈$>ճ OEc'IÜZfH.mtB$ (mL~X~poVҨTJ,5Lh 6&t-/qSKJx; uY^UD}"c$[o&u_P܇B3DӀ;Ku JK{^Z8$ gWƍA5Nlh2AB}ƌh*Mq9eifPcoySy]{+6]t8Uԣ3 YZ