openucx-tools-1.15.0-150600.3.3.1<>,PgPp9|QO mdԌ+vHًԨL<;j0hvbJ7$;z,oY3rTbB K>?d $ 6lp|     c    6 \   (8%9p%:%FGH`IXY\8]^?bc*defluvHwx`y+zCopenucx-tools1.15.0150600.3.3.1OpenUCX utilitiesMiscallaneous utilities for Unified Communication X.gPxinomavroSUSE Linux Enterprise 15SUSE LLC BSD-3-Clausehttps://www.suse.com/System/Consolehttp://openucx.org/linuxppc64le 0 gaj: #P3AAA큤A큤A큤AA큤A큤gLgLgLgIgLgHgHgHgHgHgHgOefgOcgHgHgHgHgHgHgHgHgHgHgHgHgHgHgHgHa7ed20db207c498030047d0284578f3802f736501f65a02c2f6f3caf9afc2dac5992735f6d90b02ca69fb36646454245f557e2bdb95beb0473ca41bf9926e1c55ebb777d919ad7d82c56a3f080d813bb9e27fcc1270d4de26a658fa08af7b6503b9d8fed4d93bcb5e21f15140d9a8e801533b91c4cfcf8ef94559725df93dc0a5fbfe61c8d3bad5d286b202a872e99d3d8e982e986c0b7b8eedd815490cf0b5bfdba7a97203e661fd08de4b1c85f9b4414569c474038a4fd7599984b4b12f727425c43b7b37d5a4db97b6152cffcf2a9e9b0e2b5b24fa4c4fd70042be2a48c3472f83d13224ed92e9264c0131074c5d3ee761cc7a74e3889aa4dc212340ea8dd090459b884fa8ee2543d12380268ccfcaeb73b1d49edaf4a30f13f83df33dafeebb5c7fa3d2e20fbee5431a975c7196779647490324dc2346cc561f0f044048dcc291b7e22e4d11a847ab0803c39646bcc05391d488974b29a0f5c2626498f226b7509ae9e5f975138a0dcb2744e67fcfdbba7f05f11485b42b211310d5af16e84407297fa98ea0a90b062f1eb467e7cc5badea8fe505c9df78977cbb0f5cd1bdb51f2499d8924ad1e62ea2f1a050e6aaf5ab9f3117a9b1adb40a0bc15e8495e9f11c5785da9c00f24d015d74e0d3c3b53eee08acce5c970dce443cb5560d4ea0d618d4650ed8674b28dda1a4b88df1db885589e7269f80d1bd51b8afb24ac70d4214780b9364cae0cceb0afc8bdb6c3cbf7b837e640fb311bbc5bc190138d3797d82a722b7923ff202c364754b917fc91d11fd63bd841ea0fba528a525fd6dc989f30814d5755885cca495652cce1d88f4a051470fe7e8ecd433908b04148853f3f460a0bf39b3273dfcb590e5db476d1d68b3b8ef9970e36894dad3473745a44bd26f5f50087ab4f124b228d267fe88ba0833309861d2a39f701a46676fcefe24145afe1640ef437c3ffbd3120bc734f0ccbe93d8c8b299ee6094cba118c8d9e13bb88a603c1223dac70b509a7c00d8d47583dba685473b89972b469329e29rootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootopenucx-1.15.0-150600.3.3.1.src.rpmopenucx-toolsopenucx-tools(ppc-64)pkgconfig(ucx)@@@@@@@@@@@@@@@@@@@@@@@@@    /usr/bin/pkg-configlibc.so.6()(64bit)libc.so.6(GLIBC_2.17)(64bit)libc.so.6(GLIBC_2.33)(64bit)libc.so.6(GLIBC_2.34)(64bit)libc.so.6(GLIBC_2.38)(64bit)libgcc_s.so.1()(64bit)libgcc_s.so.1(GCC_3.0)(64bit)libgomp.so.1()(64bit)libgomp.so.1(GOMP_1.0)(64bit)libgomp.so.1(GOMP_4.0)(64bit)libgomp.so.1(OMP_1.0)(64bit)libstdc++.so.6()(64bit)libstdc++.so.6(CXXABI_1.3)(64bit)libstdc++.so.6(CXXABI_1.3.9)(64bit)libstdc++.so.6(GLIBCXX_3.4)(64bit)libstdc++.so.6(GLIBCXX_3.4.11)(64bit)libstdc++.so.6(GLIBCXX_3.4.15)(64bit)libstdc++.so.6(GLIBCXX_3.4.21)(64bit)libstdc++.so.6(GLIBCXX_3.4.9)(64bit)libucp.so.0()(64bit)libucs.so.0()(64bit)libuct.so.0()(64bit)pkgconfig(ucx-ucs)pkgconfig(ucx-uct)rpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)3.0.4-14.6.0-14.0-15.2-14.14.3g@ed@dJdc<@c< @c2a@aLl@`6?_{ _ L^3^@]4@]@\@\s\o@[@[ā@[l,[!@Z2@Zc/@ZaZ*~YYYV=@YS@Y9<@Y(We7Ue@U@nicolas.morey@suse.comnicolas.morey@suse.comnicolas.morey@suse.comnicolas.morey@suse.commliska@suse.czschwab@suse.denmoreychaisemartin@suse.comnmoreychaisemartin@suse.comnmoreychaisemartin@suse.comnmoreychaisemartin@suse.comnmoreychaisemartin@suse.comnmoreychaisemartin@suse.comnmoreychaisemartin@suse.comjengelh@inai.denmoreychaisemartin@suse.comjengelh@inai.denmoreychaisemartin@suse.comnmoreychaisemartin@suse.comnmoreychaisemartin@suse.commliska@suse.cznmoreychaisemartin@suse.comnmoreychaisemartin@suse.comnmoreychaisemartin@suse.comnmoreychaisemartin@suse.comnmoreychaisemartin@suse.comjengelh@inai.denmoreychaisemartin@suse.comdimstar@opensuse.orgjengelh@inai.denmoreychaisemartin@suse.comnmoreychaisemartin@suse.comnmoreychaisemartin@suse.comnmoreychaisemartin@suse.comjengelh@inai.dejengelh@inai.dejengelh@inai.dejengelh@inai.de- Add UCT-IB-UD-Use-GRH-to-detect-address-family-on-non-Mellanox-hardware.patch to fix an UD init issue on non-Mellanox RDMA HW (bsc#1240204)- Update to 1.15.0 - UCP - Added 2-stage pipeline protocol in the new protocol infrastructure - Added reset and abort functionality of rendezvous protocols in the new infrastructure - Added zero-copy rendezvous data send protocol in the new infrastructure - Added support for user memory handle in the new protocol infrastructure - Added option to force ODP registration for certain memory types - Enabled lock free memory region deregistration - Updated allow/deny transport list feature to control auxiliary transport selection - Multiple performance improvements of the new protocol infrastructure - Multiple improvements in error and debug messages - Fixed assertion when sending from non-contiguous GPU buffer to managed buffer - Fixed the race condition on endpoint configurations - Fixed endpoint reconfiguration issues due to asymmetrical selection - Fixed endpoint reconfiguration error due to wrong locality detection - Fixed crash during connection manager cleanup - Fixed rkey index calculation for rendezvous protocol - Fixed rcache dump function - Removed logging from rkey unpack in release mode - Fixed dobule free of rkey in rendezvous protocol - Fixed rendezvous pipeline protocol error flow - Fixed error handling in rendezvous get zcopy protocol - Replay pending requests of wireup EP CM during connection establishment to prevent potential ordering issues and wrong configuration - Pass user-provided memory type to the function that checks whether the buffer can be sent inline or not - Avoid memory registration during UCP context initialization - Fixed CPU/device atomics selection in the new protocol infrastructure - Multiple fixes in the new protocol infrastructure information output - UCT - Split UCT_MD_MKEY_PACK_FLAG_INVALIDATE into two flags for RMA and AMO - Added put_zcopy and get_zcopy scheme support for self transport - Added base implementation of is_reachable_v2 API using intra/inter flag - Introduced MD capability for non-blocking registration memory types - Added check for dmabuf kernel support in ROCm memory domain - Fixed exported memh packing - Fixed an error in checking return status of multi-threaded memory registration function - RDMA CORE (IB, ROCE, etc.) - Added implementation of is_reachable_v2 routine to IB interface - Added option to control CQE zipping per CQ RX/TX direction - Added option to specify how DCI selects port under RoCE LAG - Added hw_dcs to the list of policies to select DCI by an endpoint - Removed implicit on-demand paging - Added option to set RoCE lag dct port for response under queue affinity mode - Improved IB memlock limit logging - Fixed dma-buf based memory region registration - Fixed memory handle data corruption when PCIe relaxed ordering is enabled - Fixed performance degradation when indirect atomic key is not supported by the hardware - Fixed remote access error to strict-order keys because of wrong offset - Added check for UAR support to memory domain opening - Fixed updating port counters for devx qp - Fixed ibv_create_cq error message on node without Infiniband - Fixed performance degradation due to using 2 paths on NDR400 by default - Removed unnecessary async lock which otherwise would block UD progress - UCS - Added ucs_string_buffer_rbrk() to split token - Fixed lane selection and added bandwidth estimation for Sapphire Rapids family - Fixed displaying wrong environment variable suggestions - Fixed VFS warning output - Fixed SEGV in ucs_debug_backtrace_next(), upon previous SEGV handling, due to ENOMEM situation - Fixed memory corruption when using UCX_MPOOL_FIFO=y - UCM - Fixed conditional jump patching - Fixed mremap() override - Tests - Added a rocm docker container for testing - Added option to send client_id in iodemo test - Added support for multiple connections to the same server in iodemo test - Added synchronization before exit to hello world examples - Fixed wrong usage of ep_close in examples - Tools - Added user-side memcpy option for AM benchmarks in ucx_perftest - Added wireshark LUA dissectors for some UCX protocols - Fixed memory access flags in perftest - Removed support for librte from perf - Fixed worker flush deadlock when using multiple workers in ucx_perftest - Build - Added support for binutils 2.40 - Added versioned dependency to switch between packages with the same names - Added a separate xpmem deb subpackage - Added aarch64 support to the binary distribution pipeline - Removed dependency on libnuma - Documentation - Updated ucp_worker_release_address description - Refresh openucx-s390x-support.patch against latest souces- Update to v1.14.1 - Fixed ROCm to prevent the locking of host pinned memory - Added CUDA 12 based UCX builds to the release flow - Increased the maximal number of endpoint configurations - Fixed filter for a slow-lanes in selection logic - Fixed TCP transport bandwidth calculation - Fixed device detection for ROCM - Fixed compatibility with CUDA 12 - Fixed rendezvous threshold for multi-path configurations - Fixed error message in case of static link - Fixed BlueField-3 detection - Multiple fixes for Azure CI pipeline- Update to v1.14.0 - UCP - Added API for querying transport and device names on endpoint - Added API for querying datatype object - Added API for exporting and importing memory keys (no implementation yet) - Added support for non-persistent active message header - Added infrastructure to print protocols v2 performance - Multiple performance improvements for protocols v2 - Added support for non-contiguous datatypes for rendezvous protocols v2 - Added support for reset and abort request in protocols v2 - Added support for user memory handles in RMA API - Added multi-rail support for RMA API in protocols v2 - Added support for up to 16 different lanes per endpoint - Added support for dmabuf memory registration in protocols v2 - Added strong fence mode for ucp_worker_fence() API - UCT - Added new uct_md_mem_attach() API to support exported memory handles - Added remote completion mode for endpoint flush (via new flag) - Added support for dmabuf registration - Added new uct_ep_connect_to_ep_v2() API - Added new uct_mem_reg_v2() API - Added new uct_md_query_v2() API - Added support for IPv6 loopback address in TCP transport - RDMA CORE (IB, ROCE, etc.) - Added ECE (enhanced connection establishment) support for RC and DC transports - Added support for hardware DCS in DC transport - Added UD interface and endpoint resource information to VFS - Added CQ creation via DEVX API - Removed support for accelerated IB transports over legacy experimental verbs - UCS - Added support for auto-correction of user environment variables - UCM - Implemented CUDA bistro hooks for aarch64 (to enable memory cache on this platform) - Added support for CUDA virtual/stream-ordered memory with cudaMallocAsync - Documentation - Added FAQ for using pkg-config tool to build applications with UCX - Tools - Added runtime library version to the 'ucx_info -v' output - Added support for memory types in ucx_info - Many bugfixes. See NEWS. - Drop patch merged upstream: - UCS-DEBUG-replace-PTR-with-void.patch - gcc13-fix.patch - Refresh openucx-s390x-support.patch- Add upstream gcc13-fix.patch fix.- openucx-s390x-support.patch: fix use of clz builtin for 64-bit value- Update openucx-s390x-support.patch to add missing ucs_ffs32 on s390x - Drop baselibs.conf as openucx only works on 64b systems- Update to v1.13.1 (jsc#PED-912) - Core - Added new objects to VFS: local and remote address of endpoint, statistics of ucp_ep_create success/failure, failed/destroyed endpoints - Added support for UCX static libraries - Added profiling for rkey management routines - PCIe relaxed order enabled by default for AMD CPUs - Fixed not deallocating memory from ucp_mem_unmap if no rcache - Fixed versioning infrastructure - Multiple code improvements: refactoring, debug prints and assertions, etc. - Multiple improvements in build, test and docs infrastructure - Added new objects to VFS (md, component, log_level, etc.) - Added configuration variable to specify which loadable modules are allowed - Added build-time configuration to disable sigaction overriding - UCP - Added API to pass pre-registered memory handle to UCP operations - Added implementation of AM rendezvous protocol - Added 2-stage pipeline rendezvous protocol for GPU - Added support for fragment mem_type for v1 pipeline proto, disabled by default - Added active message support for proto v2 - Added UCP memory registration cache - Improved adaptive progress - deactivate iface when all p2p lanes are destroyed - Added support for user memh in proto_v1 - Added support for selecting local address when creating a client endpoint - Added option to limit GPUDirectRDMA size in rendezvous protocol, UCX_RNDV_MEMTYPE_DIRECT_SIZE - Deprecated UCX_SOCKADDR_AUX_TLS configuration parameter - Resolving remote EP ID when creating local EP disabled by default - Added client_id to ucp_worker_create() and ucp_conn_request_query() APIs - Added ucp_worker_address_query() API - Updated ucp_ep_query() API for getting local and remote addresses - Added address versioning to correctly preserve wire compatibility starting from version 1.11.0 - Added new client/server connection establishment packet header format - Enabled rendezvous and tag sync protocols when error handling is enabled on the endpoint - Added iov zcopy support to RMA operations - Reduced memory usage of unexpected messages by fitting receive buffer size to packet size - Added support for modifying UCT and UCS configs by ucp_config_modify() API - Optimized unpacked rkeys memory consumption - Added request flag to influence latency vs. bandwidth protocol - Reduced memory management overhead with new protocols - Improved performance calculations for new protocols - Added AMO support with GPU memory target using new protocols - Added put_zcopy, get_zcopy and pipeline based rendezvous in new protocols - Added support for user-defined alignment in Active Messages - Added support for offload tag sync in new protocols - Updated ucp_atomic_post() to use NBX flow - UCT - Introduced API uct_md_mkey_pack_v2 - Introduced UCT iface features API - Introduced max_inflight_eps parameter in perf_attr API - Introduced UCT_SEND_FLAG_PEER_CHECK flag that forces checking connectivity to a peer - Introduced UCX_RCACHE_PURGE_ON_FORK to enable/disable cleaning regions when application is forking - Disabled PEER_FAILURE capability for XPMEM - Added API - uct_iface_is_reachable_v2() - Added IPv6 address support in TCP - Added latency estimation to uct_iface_estimate_perf() - Adjusted knem and cma overhead cost - Increased built-in TCP keep-alive interval to 2 seconds - RDMA CORE (IB, ROCE, etc.) - Introduced NDR autorecognition - Introduced CQE zipping support - Set the default MAX_RD_ATOMIC to maximum value supported by the hardware - Disabled mlx5 ifaces on verbs MD - Added detection of IB NDR devices - Added check for CQ overrun in assert mode - Added bitmap usage for releasing detached DCIs - Added configuration for requests ack frequency with DevX - Added remote QP info to tx error CQE traces - ROCM - Increased maximum number of HSA agents - UCS - Added topo module infrastructure - Added memtrack and rcache information to VFS - Added API for a per-process aggregate-sum statistics report - Added memory pool set data structure - Added new ptr_array API for bulk allocation - Added ucs_string_buffer_append_flags() for string buffer - Added ucs_ffs32() - Added ucs_vsnprintf_safe() which always adds '\0' - Added thread-safe put to ptr_map - Improved accuracy of the topology distance estimation - Added prints of leaked callbacks from the callback queue - Removed a diagnostic message when fuse thread is stopped - Added configurable limit for the memory consumed by rcache - Added configuration for VFS(FUSE) thread affinity - Added memory limit support to memtrack - Packaging - Added cmake config files for better integration with external cmake based projects - Tools - Added loop-back transport support in ucx_perftest - Split ucx_perftest into separate modules - Added process placement option for ucx_info - Extended parameters correctness check in ucx_perftest - Backported UCS-DEBUG-replace-PTR-with-void.patch from upstream to fix compilation- Fix UCM bistro support on non s390x archs - Add ucm-fix-UCX_MEM_MALLOC_RELOC.patch to disable malloc relocations by default (bsc#1194369)- Update to v1.11.1 (jsc#SLE-19260)- Update openucx-s390x-support.patch to fix mmap syscall on s390x (bsc#1182691) - Core: - Added support for UCX monitoring using virtual file system (VFS)/FUSE - Added support for applications with static CUDA runtime linking - Added support for a configuration file - Updated clang format configuration - UCP - Added rendezvous API for active messages - Added user-defined name to context, worker, and endpoint objects - Added flag to silence request leak check - Added API for endpoint performance evaluation - Added API - ucp_request_query - Added API - ucp_lib_query - Added bandwidth optimizations for new protocols multi-lane - Added support for multi-rail over lanes with BW ratio >= 1/4 - Added support for tracking outstanding requests and aborting those in case of connection failure - Refactored keep-alive protocol - Added device id to wireup protocol - Added support up to 128 transport layer resources in UCP context - Added support CUDA memory allocations with ucp_mem_map - Increased UCP_WORKER_MAX_EP_CONFIG to 64 - Adjusted memory type zcopy threshold when UCX_ZCOPY_THRESH set - Refactored wireup protocols, rendezvous, get, zcopy protocols - Added put zcopy multi-rail - Improved logging for new protocols - Added system topology information - Added new protocols for eager offload protocols - UCT - Extended connection establishment API - Added active message AM alignment in iface params - Added active message short IOV API. - Added support for interface query by operation and memory type - Added API to get allocation base address and length - Added md_dereg_v2 API - UCS - Added log filter by source file name. - Added checking for last element in fraglist queue - Added a method to get IP address from sockaddr. - Added memory usage limits to registration cache - RDMA CORE (IB, ROCE, etc.) - Added report of QP info in case of completion with error - Refactored of FC send operations - Added support for DevX unique QPN allocation - Optimized endpoint lookup for DCI - Added support for RDMA sub-function (SF) - Added support for DCI via DEVX - Added DCI pool per LAG port - Added support for RoCE IP reachability check using a subnet mask - Added active message short IOV for UD/DC/RC mlx, UD/RC verbs - Added endpoint keep alive check for UD - Suppressed warning if device can't be opened - Added support for multiple flush cancel without completion - Added ignore for devices with invalid GID - Added support for SRQ linked list reordering - Added flush by flow control on old devices - Added support for configurable rdma_resolve_addr/route timeout - Shared memory - Added active message short IOV support for posix, sysv, and self transports - TCP - Added support for peer failure in case of CONNECT_TO_EP - Added support for active message short IOV - See NEWS for a complete changelog and bug fixes - Refresh openucx-s390x-support against latest sources- Update to v1.9.0 (jsc#SLE-15163) - Features: - Added a new class of communication APIs '*_nbx' that enable API extendability while - preserving ABI backward compatibility - Added asynchronous event support to UCT/IB/DEVX - Added support for latest CUDA library version - Added NAK-based reliability protocol for UCT/IB/UD to optimize resends - Added new tests for ROCm - Added new configuration parameters for protocol selection - Added performance optimization for Fujitsu A64FX with InfiniBand - Added performance optimization for clear cache code aarch64 - Added support for relaxed-order PCIe access in IB RDMA transports - Added new TCP connection manager - Added support for UCT/IB PKey with partial membership in IB transports - Added support for RoCE LAG - Added support for ROCm 3.7 and above - Added flow control for RDMA read operations - Improved endpoint flush implementation for UCT/IB - Improved UD timer to avoid interrupting the main thread when not in use - Improved latency estimation for network path with CUDA - Improved error reporting messages - Improved performance in active message flow (removed malloc call) - Improved performance in ptr_array flow - Improved performance in UCT/SM progress engine flow - Improved I/O demo code - Improved rendezvous protocol for CUDA - Updated examples code - Bugfixes: - Fixes for most resent versions of GCC, CLANG, ARMCLANG, PGI - Fixes in UCT/IB for strict order keys - Fixes in memory barrier code for aarch64 - Fixes in UCT/IB/DEVX for fork system call - Fixes in UCT/IB for rand() call in rdma-core - Fixed in group rescheduling for UCT/IB/DC - Fixes in UCT/CUDA bandwidth reporting - Fixes in rkey_ptr protocol - Fixes in lane selection for rendezvous protocol based on get-zero-copy flow - Fixes for ROCm build - Fixes for XPMEM transport - Fixes in closing endpoint code - Fixes in RDMACM code - Fixes in memcpy selection for AMD - Fixed in UCT/UD endpoint flush functionality - Fixes in XPMEM detection - Fixes in rendezvous staging protocol - Fixes in ROCEv1 mlx5 UDP source port configuration - Multiple fixes in RPM spec file - Multiple fixes in UCP documentation - Multiple fixes in socket connection manager - Multiple fixes in gtest - Multiple fixes in JAVA API implementation - Refresh openucx-s390x-support.patch against new version- Update to v1.8.1 - Features: - Added binary release pipeline in Azure CI - Bugfixes: - Multiple fixes in testing environment - Fixes in InfiniBand DEVX transport - Fixes in memory management for CUDA IPC transport - Fixes for binutils 2.34+ - Fixes for AMD ROCM build environment- Trim bias and filler wording from descriptions.- Update to v1.8.0 - Features: - Improved detection for DEVX support - Improved TCP scalability - Added support for ROCM to perftest - Added support for different source and target memory types to perftest - Added optimized memcpy for ROCM devices - Added hardware tag-matching for CUDA buffers - Added support for CUDA and ROCM managed memories - Added support for client/server disconnect protocol over rdma connection manager - Added support for striding receive queue for hardware tag-matching - Added XPMEM-based rendezvous protocol for shared memory - Added support shared memory communication between containers on same machine - Added support for multi-threaded RDMA memory registration for large regions - Added new test cases to Azure CI - Added support for multiple listening transports - Added UCT socket-based connection manager transport - Updated API for UCT component management - Added API to retrieve the listening port - Added UCP active message API - Removed deprecated API for querying UCT memory domains - Refactored server/client examples - Added support for dlopen interception in UCM - Added support for PCIe atomics - Updated Java API: added support for most of UCP layer operations - Updated support for Mellanox DevX API - Added multiple UCT/TCP transport performance optimizations - Optimized memcpy() for Intel platforms - Added protection from non-UCX socket based app connections - Improved search time for PKEY object - Enabled gtest over IPv6 interfaces - Updated Mellanox and Bull device IDs - Added support for CUDA_VISIBLE_DEVICES - Increased limits for CUDA IPC registration - Bugfixes: - Multiple fixes in JUCX - Fixes in UCP thread safety - Fixes for most recent versions GCC, PGI, and ICC - Fixes for CPU affinity on Azure instances - Fixes in XPMEM support on PPC64 - Performance fixes in CUDA IPC - Fixes in RDMA CM flows - Multiple fixes in TCP transport - Multiple fixes in documentation - Fixes in transport lane selection logic - Fixes in Java jar build - Fixes in socket connection manager for Nvidia DGX-2 platform - Multiple fixes in UCP, UCT, UCM libraries - Multiple fixes for BSD and Mac OS systems - Fixes for Clang compiler - Fix CPU optimization configuration options - Fix JUCX build on GPU nodes - Fix in Azure release pipeline flow - Fix in CUDA memory hooks management - Fix in GPU memory peer direct gtest - Fix in TCP connection establishment flow - Fix in GPU IPC check - Fix in CUDA Jenkins test flow - Multiple fixes in CUDA IPC flow - Fix adding missing header files - Fix to prevent failures in presence of VPN enabled Ethernet interfaces - Refresh openucx-s390x-support.patch against new version- Ensure /usr/lib/ucx is owned at all times.- Update to v1.6.0 - Features: - Modular architecture for UCT transports - ROCm transport re-design: support for managed memory, direct copy, ROCm GDR - Random scheduling policy for DC transport - Optimized out-of-box settings for multi-rail - Added support for OmniPath (using Verbs) - Support for PCI atomics with IB transports - Reduced UCP address size for homogeneous environments - Bugfixes: - Multiple stability and performance improvements in TCP transport - Multiple stability fixed in Verbs and MLX5 transports - Multiple stability fixes in UCM memory hooks - Multiple stability fixes in UGNI transport - RPM Spec file cleanup - Fixing compilation issues with most recent clang and gcc compilers - Fixing the wrong name of aliases - Fix data race in UCP wireup - Fix segfault when libuct.so is reloaded - issue #3558 - Include Java sources in distribution - Handle EADDRNOTAVAIL in rdma_cm connection manager - Disable ibcm on RHEL7+ by default - Fix data race in UCP proxy endpoint - Static checker fixes - Fallback to ibv_create_cq() if ibv_create_cq_ex() returns ENOSYS - Fix malloc hooks test - Fix checking return status in ucp_client_server example - Fix gdrcopy libdir config value - Fix printing atomic capabilities in ucx_info - Fix perftest warmup iterations to be non-zero - Fixing default values for configure logic - Fix race condition updating fired_events from multiple threads - Fix madvise() hook - Refresh openucx-s390x-support.patch against new version- Disable Werror to handle boo#1121267- Update openucx-s390x-support.patch to fix support of 1.5.0 on s390x (bsc#1121267) - Add baselibs.conf for ppc- Update to v1.5.0 (bsc#1121267) * Features: * New emulation mode enabling full UCX functionality (Atomic, Put, Get) * over TCP and RDMA-CORE interconnects which don't implement full RDMA semantics * Non-blocking API for all one-sided operations. All blocking communication APIs marked * as deprecated * New client/server connection establishment API, which allows connected handover between workers * Support for rdma-core direct-verbs (DEVX) and DC with mlx5 transports * GPU - Support for stream API and receive side pipelining * Malloc hooks using binary instrumentation instead of symbol override * Statistics for UCT tag API * GPU-to-Infiniband HCA affinity support based on locality/distance (PCIe) * Bugfixes: * Fix overflow in RC/DC flush operations * Update description in SPEC file and README * Fix RoCE source port for dc_mlx5 flow control * Improve ucx_info help message * Fix segfault in UCP, due to int truncation in count_one_bits() * Multiple other bugfixes (full list on github) * Tested configurations: * InfiniBand: MLNX_OFED 4.4-4.5, distribution inbox drivers, rdma-core * CUDA: gdrcopy 1.2, cuda 9.1.85 * XPMEM: 2.6.2 * KNEM: 1.1.2- Update to v1.4.0 (bsc#1103494) * Features: * Improved support for installation with latest ROCm * Improved support for latest rdma-core * Added support for CUDA IPC for intra-node GPU, CUDA memory allocation cache for mem-type detection, latest Mellanox devices, Nvidia GPU managed memory, multiple connections between the same pair of workers, large worker address for client/server connection establishment and INADDR_ANY, and for bitwise atomics operations. * Bugfixes: * Performance fixes for rendezvous protocol * Memory hook fixes * Clang support fixes * Self tl multi-rail fix * Thread safety fixes in IB/RDMA transport * Compilation fixes with upstream rdma-core * Multiple minor bugfixes (full list on github) * Segfault fix for a code generated by armclang compiler * UCP memory-domain index fix for zero-copy active messages- Update to v1.3.1 (fate#325996) - Prevent potential out-of-order sending in shared memory active messages - CUDA: Include cudamem.h in source tarball, pass cudaFree memory size - Registration cache: fix large range lookup, handle shmat(REMAP)/mmap(FIXED) - Limit IB CQE size for specific ARM boards- Update to v1.3.0 (bsc#1104159) - Added stream-based communication API to UCP - Added support for GPU platforms: Nvidia CUDA and AMD ROCM software stacks - Added API for client/server based connection establishment - Added support for TCP transport - Support for InfiniBand tag-matching offload for DC and accelerated transports - Multi-rail support for eager and rendezvous protocols - Added support for tag-matching communications with CUDA buffers - Added ucp_rkey_ptr() to obtain pointer for shared memory region - Avoid progress overhead on unused transports - Improved scalability of software tag-matching by using a hash table - Added transparent huge-pages allocator - Added non-blocking flush and disconnect for UCP - Support fixed-address memory allocation via ucp_mem_map() - Added ucp_tag_send_nbr() API to avoid send request allocation - Support global addressing in all IB transports - Add support for external epoll fd and edge-triggered events - Added registration cache for knem - Initial support for Java bindings - Multiple bugfixes (full list on github) - Drop UCT-UD-fixed-compilation-by-gcc8.patch as it was fixed upstream - Refresh openucx-s390x-support.patch against latest sources- Remove libnuma-devel on s390x for older releases- Add UCT-UD-fixed-compilation-by-gcc8.patch to fix compilation with GCC8 (bsc#1084635)- Use right documentation path.- Update to 1.2.2 - Support including UCX API headers from C++ code - UD transport to handle unicast flood on RoCE fabric - Compilation fixes for gcc 7.1.1, clang 3.6, clang 5 - When UD transport is used with RoCE, packets intended for other peers may arrive on different adapters (as a result of unicast flooding). - This change adds packet filtering based on destination GIDs. Now the packet is silently dropped, if its destination GID does not match the local GID. - Added a new device ID for InfiniBand HCA- Drop doxygen BuildRequires: The documentation was already not built with this enabled. Removing the BR causes no regression in the package but eliminates a build cycle boost -> curl -> doxygen -> openucx -> boost- Rediff openucx-s390x-support.patch as p1 to be in line with potential git-generated patches.- Switch to version 1.2.1 (Fate#324050) Previous 1.3+ version was based on a development branch. Supported platforms - Shared memory: KNEM, CMA, XPMEM, SYSV, Posix - VERBs over InfiniBand and RoCE. VERBS over other RDMA interconnects (iWarp, OmniPath, etc.) is available for community evaluation and has not been tested in context of this release - Cray Gemini and Aries - Architectures: x86_64, ARMv8 (64bit), Power64 Features: - Added support for InfiniBand DC and UD transports, including accelerated verbs for Mellanox devices - Full support for PGAS/SHMEM interfaces, blocking and non-blocking APIs - Support for MPI tag matching, both in software and offload mode - Zero copy protocols and rendezvous, registration cache - Handling transport errors - Flow control for DC/RC - Dataypes support: contiguous, IOV, generic - Multi-threading support - Support for ARMv8 64bit architecture - A new API for efficient memory polling - Support for malloc-hooks and memory registration caching- Disable avx at configure level- Add openucx-s390x-support.patch to fix compilation on s390x - Compile openucx on s390x- Fix compilation on ppc- Update to snapshot 1.3+git44 * No changelog was found - Add -Wno-error and disable AVX/SSE as it is not guaranteed to exist.- Update to snapshot 0~git1727 * New: libucm. libucm is a standalone non-unloadable library which installs hooks for virtual memory changes in the current process.- Update to snapshot 0~git862 * License clarification on upstream's behalf- Initial package for build.opensuse.org (version 0~git713)xinomavro 1743572560 1.15.0-150600.3.3.11.15.0-150600.3.3.11.15.0 ucx_infoucx_perftestucx_read_profileopenucxio_democmakeucxucx-config-version.cmakeucx-config.cmakeucx-targets.cmakeucx.pcopenucx-toolsNEWSopenucx-toolsLICENSEopenucxexampleshello_world_util.hucp_client_server.cucp_hello_world.cucp_util.huct_hello_world.cperftestREADMEmsg_pow2msg_pow2_largetest_types_ucptest_types_ucp_amotest_types_ucp_rmatest_types_ucttransports/usr/bin//usr/lib//usr/lib/openucx//usr/lib64//usr/lib64/cmake//usr/lib64/cmake/ucx//usr/lib64/pkgconfig//usr/share/doc/packages//usr/share/doc/packages/openucx-tools//usr/share/licenses//usr/share/licenses/openucx-tools//usr/share//usr/share/openucx//usr/share/openucx/examples//usr/share/openucx/perftest/-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -gobs://build.suse.de/SUSE:Maintenance:38152/SUSE_SLE-15-SP6_Update/15b0146de093ac75f2d1eceb61deab29-openucx.SUSE_SLE-15-SP6_Updatedrpmxz5ppc64le-suse-linuxELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, interpreter /lib64/ld64.so.2, BuildID[sha1]=33d2e92410bec136cad039da3ac39d9cc79e47f6, for GNU/Linux 3.10.0, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, interpreter /lib64/ld64.so.2, BuildID[sha1]=beed237104f4c316f04b7a642a4ebb4135888878, for GNU/Linux 3.10.0, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, interpreter /lib64/ld64.so.2, BuildID[sha1]=94fd11178c301ee734bad9ed841aaaebf0354949, for GNU/Linux 3.10.0, strippeddirectoryELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/ld64.so.2, BuildID[sha1]=84d3758fc4c0216189bc0438bcabb834217c6370, for GNU/Linux 3.10.0, strippedASCII textpkgconfig fileC source, ASCII text' RRRRRRRR R R RRRRRRRRRRRRRRRRRRRRR RRRRRR RRPRRRfOE 0lWutf-809e7fee1270877ad82e9088350fb00006530e6f7ad09b51d3da9c5356473cbc8? 7zXZ !t/k]"k%IN6cბbMb-.vj_Ԇf %<D5oK_&{i.X2\<\9ѓ7 =6ӗ~>'6G[y]Wxsev!Z EgB.ժq琖1 ,zjS&ʲjԮ=W (mI&ԢSpثsq1RQoR>Yi-q:gs0@?ѵh|ugҺl ] &%1!x+8YiL8rtClYTuhRUiZ8Ws0HyV$ icf$ CoBf>\8쁈RJDoS1"{n|Yh~љY7.TVuTu/̉=,] .)d]'wH'N $!3_70cL"6 6ېڟ6B=C`N)y{婠^arRNoK&SL (̇uNk^ʜQwxFY2nruR{!e2Ljb{ /ᷲhKP-1nE%B }ȗ/8y({QZ_KK=T K'0"cہ l1< 6)KbJUMf\eE=,&*ċɘ,07yQKMn^àu_֐&8o:UC!/.HМ*Z/ʀa%amRDof*_N$9Z+ν N t65KߎρQ_ ^Wg[ '!1׶!Չv^ sԅWleo Pg)dn'+iPP iCV0V9( whZ!:G=~(|xXlB5c+pE bWLN9 QhߴT#E}b~fa?.( EsLUlaX+3G,х Gno3֢ |%F)EŸ7Zj#ǷswMe}sM߆]c!a2Aa3^]s@=bY^$Z2wGw>kJuܗ?pȜnW} q=Pʌkm:'ja56~铇tm/t[|2+ehdGNm $LTkݎDVT*y nqSkK4[tE3g~=pXmD ?NoxzP3å,qׅ{ڲ:6t΍se"?3rpSyS8r{~(:j-wyץQrk>t?͠1|xQiD^q3Ԝ-nQdL걑$#"NT*[x fFݏg3%CvB;Ęf:rayUDq%UDahw؟ ) F(F-8{3nWTR(' |֙< @6?n =65 |grVfv'vtP1҅#O}G;f sj.N@W'R"ؙ)ĥ<>%iL쥹:1 IO ͬ8A/D$1izGJ5PxCMԐl !@]g2N[\.}GW'J!OǾFΫMϙib\Gc8*ܸw:[!eL$4ĄDWjq&2y2CDMNTNwJꣷ?%%hLdO8&uA(t҆YGɄ} =Wj@s.b5c#ې@'ۥ){}Dj:KksS Fmxx$eFQޠc8lݘݪ!yWFEׅ`I˿5XW$H#vXT┪yOhz%hz3`L:(jjp/Xb@[Z@ cԦ)EǟEV768x5qf` ]"[Vj1ە,"z2H^W 0VJYIBnUՂr2P4,֎DKDh[L3iQuay+CNS·DfmU$x;XN}\K!:u\ު^9ӻjKzv/X,/\0$3M#] Kh ZVJ=T>:ɢlh !,(6:s-£Hd 79 @ĂWuN9gc-iEKڵt?SސX} / vzCKJ$2?&eaR\JjM5bXdտ:lΌtvH֤T^kQI m Z1 ?4>w6n^4m㸐$j~FGkHtmf-Jq |v[v-֚뫗GM暺qlA$"0nlU0ְߜ%Nbb#:*QXPf Zl<\Prq9 u꽼Ux".D4oM/H9R2"u):T|J 8iUUE**ečPÁɋ4,c gfe{fMHa}FMSr!S>dʮC"'$u9,08%NZhQSJ06_^g26WfVRAP=Lr+lg'avSĠ U&R@K VAÑB(UONB~eZ9*$ F&Q+uyb0bAe1Y+=7W[ mK6x4T2t&)BF2Da8^S>}sV 6ӰrKCYWBm~/={?acjn؏PW`>FKقZ_3{{YA|nZ`Z%I)ת{EYT4P-8a6~c/s+T Y8>_vCbejsdw2hϏ B h~sMOf42)KΈw Ue-48jY-H­¥*f1> {*?<ٻdӪ>& ϱܺel8 ]=Nص*L3d"317i|RWb(fM}JNa=V/ET?QDPP YL䲍Ahf3ǟE.c1ŢaCaC8Ēoί@>T*1q kh Eij^Z@&o$_*.T )іd^XqnJR鞛#3< ! xP}S05.%5oȮe.;@M EËpCl=4N7k3Wd;ML|0f1]FgՀmQȫi/Тt_ E$Ńr2"`s;ֶS.F'ɱv.(xQ0e m#2 `-P6@ ? rIBn%ߘv#I^-6! Hl#l۽0}gÅbs֟s~4ׄH%s $~yKb Oq$e ̫|t#`s*6znr X]0W.^ ~.l/ "o.+C;+.3-8Xm~XۃMGXEqIRkq2"t*Cm"ݸjcB l2\el5ZFVyϴeku vRnxsKoyyg:pdž7 xLҰ| jV[׽9;NRPlMnpo=tSas\tODsX!$]חlb=iJY-o⒋M~$X 6 @c 2SY+a="L*9qnIfjPh =ZĚ"=fq\ K8ÙP9i//,;>`-)~-ޒQJ_x`4~"e1Ǎo,V9/HOTάXm+\w?gi6HɞƬY G^E dߍnQ5K`\ڻۏ^ů!xzAOqPc&q=ǔ1Wk3 wuz+z0/4PǍp1K%.ogȌܸv+4\y1l,or]gԞL| G 'MR_JL,zS)YVkn\`P¬5ؼXd: |BDi iTwdhM]à7)r^"E^NCpF/!RbӁ ̀Q}ޮ㏻*_%iݦ~JAַ!f^R+@WdJCеxU & f T̀?H]2im!s!~`-'Ѧ ڿ3wV ()vg5 @B/MTJ遰!gfjY>S?RLmH2j mĦ vՙcl%zx<&0a\%ģŐf/=4g SYx6&Ssdi6,5/k `k:cwTAmcMVjɤ^a#KE!T=% n[WddyC#mAI;ՔPyps(aq5q8v0;p=ywp8 )J"}CFk6%B3_WnnC<`g!NB?cD2K6 Y\@F Ƈ~HQ1YTՐiV`[[)-P?V"N.@j|Q` k[D> d{se!|/4 G?^ G KG( guG$z>mӰk=׬?C_B_6e$qZN38byٔ\)$DC!ijљYQw0VFsTg~L8gC}L g?E'5"@ϡoۖ~ei8EP{X]oǸjW 9Hx3k]yO!\WPuᕨ )6 ֬pB˗je]W'v5_C. ' F0ȉk 5oixPĈ~"3տojtxp]7 c MnwlfY!Wp˩1hsl VvOt! -6ǫgjjPn~ȷH eyă+:U6NU:?',Z~{ %aQú*b!JT"1#^XA)W5XU㚴v=]fޣS2N߸r( ܸTw 7HؔL,]pa/7\qxyht:GSGT u0cHRK鄓 &WZΏBݛ>!:)Ѵ$ŘՔ*?EGlP 񟹂<v7% Z67j-0hGUFϗsj\Myᨽ>F;lEɢMGo,{Y'`wNm^S(I!awNd@pYTñ!MF̰W:+x/q.<d>5Ŀ8y |;߷h9a(:r&jlvslc4a[zGz*g[[kZ>ez×|gY]ս8\AMIsC^Wn!0*ffH65TˊM몿ᳫCvHPO5ޯɲ kU46 c} `9vQ( ‹6&8r UZ*mJL>[:N \_?yMP]73 -tƊ3h-1C^(7l1( IkуF=5:N Z˞"ԍI*A7j#oFJ?Rk6A^2RW !hێਣTQq`,g0P{#@(fU٨K=g  (K+jz[g6@@1!KS&[KZ/8#*9!FWkB)v^ΧYPD:eQy,EPe|mW?j$egg"(۾~P9z C e)X'<6soyG!N}Bg3}w"!gC8nf-ՍÂ̲e  FDA w5",@0dA^J)1Z+5k|EqjFnU>iv$9#* U!#9Tv: >wKfmP[C+82CRU1l|{\Wԫm^_u6W~s%5UAWkCWa<'E5+Իo"ҼtHU5iwNZVYK4*&:HS\z*Ea4 m@r\H= = HR`>xV-ҽ"barFЇru|WV~}ރ.j_|Hj: ØCUだóNWju E+-~]f; (W kC}E-~T O8Xٍ+yu*V6O)L 75A%ʛ$7=/S7LOWĤR[Ct{#Af +$k-1A[7G?m C?!L0BˀcBz%8p,Ȧ솸fx{S#v.*V=CTaCX~cG_~m CD+f|Ǽ*^LT@TF|o',c 5{T#f!t J#{%rȇRr姰CӏWMIClk.~~\ {VSqa:z;6=L.tE{e۰Yى 1VQP·V TJ%|\.NM2Ѡ)r߹F="Aq3$.ю9oI(iRkɻPEMa: ʼf$t揜RAIS8 (W8;.f(y޽7,kJ)O` 9zAA2Tp;Ńл)HYvԵrފsi):L} ?Y| r8|;B0tOb?ZW0}>U*U 2xv s#-p{A2֯V(`Q}?ĒDov IQ'Prܜ]4;h4X(~#sY"ܤ HKJ_rc@Жq_3Dxu;O|kQg6*$(wor mN1e NVd7*tMX+H֠M>6^Q,3mQʼLl TDV;me\@vMϋsPo C4|Kv-?sG&ĦOb&O|%JX md_Ew.vE=f S8Dplʦ_{w$5O$VO u*(GtP`x,ŕ%]3˩_L &]?-0OvƢtoM;!r)Knn9g/!=T>o020vvD{+plKvvtUcz9hwO֯C{6  ~`lgb`T^Z EF/'TwdNeNj(4ʪeЦǰGr~œ#)@b6d~*$2#usdt%ۖ' C|>a(4Pfnqj[Sp.XP\`۶ԜZ"tBB'5 X v !A/e-|'|Jh0H)q翔-KQ\8#F/'(|Ž CAH^w)FRa}U_$5SOz|FIw0ZR=0Gڶv?IE[h{E h/l.$zo)+o^\q1!H*sN+?pPW|g #>K#^xyOm+㝒 BP UPK:>2ȴpԬFUź3YlD/CS JQTlXCBqpߧ]<1Yʚw.M-'bb7|A R}0 .͛8 9?\3MQMH}Ӈku N> i?^9=ل&G0ɃY7q(Hcs13*vf ص5Dvd_q!T!5St?c#jD[el9=PYO}p^e@^ݿ(~D*ޟ,qe\UBzs#BuX1uS@=3v@赵9N}D:ԕ^v]6D/AFl~N'n'վ?U.I;6*8IUcT_ 6Z&^(!Ar"_ o9fzDߚ4fe/W;rOjVEe^(~O}']uR|6u_kyNp6{?9&?U.`]2k;(#6T& UTϔ*vjO&ljž~% 1 cIFZ7iȓ iB1=iBȉ:`F ݔy'A(kEZVzž|OX} _h} R׀owpD FY"8pin9Ę]@N9}[UN(vܡ e ꙳.nGjk>kh-0o_=iBD{ڙ3:Պzi:^!;P phd&o!+|粐y= ga8_I)}a:+9ɾt&XEmN)0Ԝh1\Q{ 00Lbblgh;ޭ 5(fnkoawˬKFoU^9n"řMj-Ż}W&=9e8NP|ئK "O}\GŢ ve1EXt @Ts^+&]yg?_g 2P 6PDH/HeUER tng胴~zuE4 v((vnMHrZtܴIscUgakCR0՝C6F&[%ܩrˤf1=̴P;mQ~( ˫;{c4{PLE> A3IcL$yӑ6rhқIA_M]5G190F{)|FX۬/tk]*HOtwo/&@ pxdI"v]7U i` Qg:6Z""qZ| \B8ر?-h2I6{~S33wK1@Q!E!9HYKh(FT܊eh< -F?.L!e2j͵< Kuy ̑M\16G\KՒ/6`DIh\>e|~)dǿ]of T6]òToBp(حFQgTpJ,Uk qXHaE&$6Z`iQlOludx}NmJ3K|&`oS#: Ep$>f2gd--JyW\G2Dֻ|21<C*"{ےn`Iulmqpm6p$=ѻoSu߃T9o~'z5&u!X؄ŝZg6`w*_!EOX {ôyr?fmRC6 ;^M'+XIXed=zJl,usNUla(J ` xl/ʷ7(ӫNj2zlGNzC-n!C9LjQ?8VwG}!/tVGeKe@5{lAUP o*\_Oc|fzu|R49Yɜ굽8,Rs<0ܐ/K4EVyNy gv/|_Rͬu.!<*L,nF2X,I E-%(r{DSC%LIV~;X2ͷ{Nq`!>HP9/!A#Gb:bJw#|7Uη-KX cB5kM`,"ؘ> aAe _0褹Ȕd\5d%sVBVR'3F!'gټ*V6zHѡ8ٳoMlNH:FЀBMD[po -|imZ U˘PpQFNQ~1َqUOggZ.Rnb>eE̊rK6Rʑgux[Y7T/L.>; ]="Ō mx#;jrv͢lWPS `*g8*\wNrYbbz4+䮙6=!ڥAmaR=:o%0mYF6(ٷCaj.VоsٙϾ ڸU I9 pw=jG0U-ࡢ E A i{a09'z݃M@-rf, ' N ?䝫K4aN;@cl ؠNaO[@Sp**n=T p"^cHj^ +; &fPŸSxR'$iC?[e_CpG]=SR|MI.&~aD֢m]40 Nda %y"?>1P1HyX=BˆHr^ΣSQ&aٱ_6XPf1\",8GU4 sʙ A&pH^qWMj"8."^9.`g ޓk_hbYLŖ0ꀻyY A[7&qr;[_ 'S(+גehI *71c3{XS/ iƤUO4Ȍu3،0:@BRV蹦M 䕖(T'ԳXeBӹbq:," {"cʿzhb=S.vy:~x4+R6)O=}a5*LzY/PFTJWBc ׊DtSR7ද>TLr~Celd6Cmǀۅ',Rw䓦ש$| 6:Kѩ}T HR4 Y8i%vx.@|ϝHƺY®Ǭ{xX Ygq@8-|bb04dB3l/bkZ"$ZOin GP$ 5, ˯%RM٬8.3x%nOVMmA3q?m1 ~5~7xܔ 8&C dËmha͕bPbQ^e186OrOkv\ %Re3%ZOk,%yEaF u DZBGYMRiDWߟ瑕 wl'sO%I)&pq,$=%*b߇|3[XvN.b48YWۦ;)BN z+  f#!W␪9dE}-v#nVð.PJѠ:UrqO@xNv#)wڿx·Ź32jZGgSlV0֢m >gΈpRQ_lqvҶyo.g<d&j>lpofٕŤHu>U?9k{$TMS3 i 0w-lTh+1{"L%t-Kel`'iS}- 0}Zkk3٩YڌdPQG(ʛ8xJ0["=_S gy=cxS\?'9LuÌc=x#B~)p@>E`he"vdqga2VvGRdz昧_ٞk]kR:YՕlɮT '^zbSS@ݳB9_%--4DtBs}^)ϔ! _MtWly9> i77#1ƴuF9EFE)ʲ"m. 'l4f5":,BqT!e,tbD ,*暇,ܾ܅ ^\ֆ#OEȂk%HbRZGR9Fz6P`eɦBkZ-FҮzw6 r֟> 'I dg[}kx2S&,yYOYm:7f%ܭLFpm<5 ryC7ȵÎmLԂ J٥j r>Iۖx0wcmX_b0ƍB%70RExF? |  5KX3)/=ggzUfZD,uj;zIfY\A0;'~EJ0#`Y;14؟ȖWXFoVD#SJB>/932KE*V VDS~;\u9a94+gAJ˩Yu܀BtiԃVmgN! ./_K"4hXHR KH .M~sQ] L%|b!*Z 3 /RɏVutj#{T.8?Z ;v[fC!ьv`(e ypt}M/ ABK["okϰaQ`#MxANG8ЏOʦ<,܊"o/c+:SO(1?n[ NBf_ 1u1#ԍyeq~l/ 1"t~=L5RE@[Y! &*|8+ 4mLTkzz0uxaض~UT4BݚM1{s:3>ؖMm"fiA:l3˱dwu:G~-%2͉>i bLtld9,^pSK\6ě#" p!]FFH=}QTY\gƼjeA>dEpCw&FhX(?Å6?+sCI|a;JԍhM(<>أ^\R "-K4E6%DBHzFK 1¼r]HqdyEiTxr !4nκ'*(Z 5 '&ۖP L4~t5'&~Z`n %f $u0czچ,FGy^̚Y܍ ZI&'=Z]?ɾ rpd|pJkA~lj\8(#ԅ6sU3Wl>64ђSV`Z,Yo`uᔜ_ӁUv@ ݞ=KhVze-R{ON F8:ؚC^pTcK;2K ,Np4udz~V"3I6Y&n B)&&r6m lx)i?bJ'KoNFT*\;QS\v|Yo&a ]L1hze[$#؃\)qWSP,UK@'?.I$ѝ dbZVvgˑЇg\}IZ ơ/%' ogf.37ށDL]]Ͽ{>-:f*|YxϮv'@&$ׁ姱[x8s6\Sh.s6:~!<4R@2L1 ,.r* -96T o"˨ RsatnX^S#Af2M͂VFau#,5NQT`o2}-b14?9c!z0 m]DY8Z< SN7*+7W;CC|$Ѧ(0慯W键%u1^"5 1Ɖe䬰f$Mэ|Qa2~R:(CZOɗ X8N2bN|7Tf=\ fKf?-l͆4_n܌$ncpt(%۶A^c1sn{Heh:-(SR#bMFT mabcɠ[fg%%P-@qn|\I(ٝ&@\Lhd?oC{.ou<cZTWDb9FE&zް-YopU!o CSyڳ8s81M§obzpm_|7\F=fEALC7mvbiL68(eӦ u.-ܪFr݊/lLxcxX48t6g2k቏xəd6>>+kTL?^a7,WZˑ[ڜ]H7``n/5"YoFzк2_[ 4/LkcRQ0r3xY9O|vCPb4/w(3uPeR.7W A3銊AgsTiRPn -VK"K<ħqi)CM `N'G}f#iRT eTTܦJr{d:1xI 0MU}5_O`mE.׺Hx_lUHfG;"bh r F(\ 1DW? C4:xtQ%EV5Y9\6C7Hzt?f%!]l@?WK=oȲwS;* 5#M9}P맚G|c-@-[Nl"u}Ą08IH"WL {VpR]XcxݢbE=OozkvYqH_8 9n}2.D|5F؛k9@#zr!hjaaH7y&AP İrbflK`1= N=ݥ ̪E]Ty c{w#&kŤ]5VY[fD>BBx}Ql7Ǝa4r{osGĴ|Ue8#Xx>0)!@o@okaH"MhB`m0@1)Y`%.VzU+`WFOTcGbm~Z,1hFg迱c2hx!(XVM'䕡;{nYjU#QHi3GatmcaXM)^V$&|NM61c1]'Ɇ xcꍀfsApXZQ5 J7t7q`1md=akC]q${ J&Fj2pbwK* W@iEXbgrd5ר d)< $lHA#gt#L*hb7J"dm'D&n*fȰQ(9Ar3CM})S#:)򜲺,ӈή0A0,v~|e9H6,( , !EiNplI6\TϪ&-95y8gKvro7ߞLxJ=.˷z "+=R4'OE `1#mU]RdF` 6\Œp@tI;xb1DoMӴX/f5V/ u-KAG5o`'bSEFs<"tGKOˤ &/Uip7Ruk謒3d@ǝ"^7Ek#R?4F- j9 |6>JmU'J=F ,R# &U߼& <ڑӅ:lR\֟D)3 2ab0P!٬xX->8tge<`.4#W:qs/0,Ăm;3!Q/pG7@92>њDpdOS4Au^fBWCנr}FT<&f*~j=JZ-BP8΄+Z>xڄfd׹tw33^Չ?b]Jؽb''\/YZ(z8$bW5-esY?hQ#뺇(p95-Hf`=Yd %>>WEa^He(/F %.I)XzBwZL, 'fж|Z-n i8]|M ey2egU(O -q^N{4|$hȓoWuc"zI3}K~E?\%RwT]ӎl>_1j31r<JS_-c@=<-(^"T{=3`=!f2w@@>| Օ{DM(sby\F%swZ=􋱖A6=K9jׄ,3TuxFzq$D. f*r2܃CP-ĥ}tkLHLF Yjt$ND,f{L?\TD4[\1ZKxg&4s"9?  -eKW+;&8 :J#`xS~jwBu^(F}Qc|@pو67Etݡ~*Alb~ŷC݇ܧѧ4`]j%x"un/@Gz圫ca(\k <o zĪ+0X: h>fCD{+>E-%ܿHkoYl6t7~ڛ|)v;~vJic⽉-^Isy/~iU9/V%D&Cf8 bhMh.طRX)EIN 7DQs83L?Eu}ex昅" k*gNW4B{ ț2 $.Z5&+G[\ 5Zy{YI2[S-i qSAhiz7oo@zt(G!e=ۇ(5cC %h ;͡mL"Z&LempH3)8_s15<\3t͖/yGg/z"az:k2l.p%^iˢ뎑<]P}>V%>ֺxRe 8FU|,v[Ն3ԃ:H\т ǾJq{sgx6Np 6oe@jt}l?p EfΈyz2v c׽O˞n9m uݓ7^ RaHԱ+3,fM0847V~ a8rv`N9QrontOW}1w/@qW+P ͯo?q?ZwAFQ2 z{n.UVh+{~E'Lf$RTPe_K\2Dƪ+N};}MD%UX_(B^f?f&]-"0-d3(%).=,Өr2J6jiМWk%;|qw *ٍo^==&Bg+NqkTO-;nn;5 il ;,c-!Ƞ]ASwD;GpG]8]'u%f,*8\%̈wn/>ШX{/sYG{JtQ Q%̿ sf1fSjs؛< /+Д8׷ZdF aNfM &1e獶+pmfWkZq^rX/,& r(\ᥨ*= e%됆]Yk Tr de n`uMA. f`=B chzC3zjƈCtR5`a=+Db&VfS1,hO2Hv69~@:Y q^>D7Jq#=A;:v[] C2FW9haqs̞?> n}}ext7U=$=('NιXi 9boAo pg[uO2Wz eLEWOS3ΒNN4bգ ,/$.pHZJ$DѬw#]$Zɉ#林dSҗU|1n+2$q}<Ԇ*:PmtCVA]Na/>yKN)b3YExKES|6-E]LC2\ZT*(ݫTD;PsP6 KA\СM [q,)˼9پ1@,F=K$Dym_Iq$QxCKy:& &nwr6*ҟV詀}聾-V5cEEE:1_B`')i\3ߪBU50)s9w`ĜjPi=µ0jrP/%%l3H0|νS|v/>7k@lȞ|p٣^=$Re {NCkvoF._1bLVrXTYJPG;#[Xt~G~+ہ5("LzH."?p~f-ƕ<'XܧHq;+gA⥎֬V-+ۀ y Yx "r16aχ 3ŗ i_7$<+"x傌C@FjRk%ty3p M ]ʪ7Hx[9cWKHنa|C!8 &+QZ_!(e [aW]lLx$^h8FY!W$߇`)WW s`zIQV"dnkl„5:oh5~昁'F!1||+BOMVG8g1sG'[ fe[ON2,^8Z ޤ@B|;w+\e2xtxo;hm2AL`"`!(ϲd'4*?՝Ɔm@K [̻b&]6+ˡ^ u; 3$^+-ԛpگE磟 r)\J; V'6J6p]H|$&urLD#gUCkZN%R7~0h#6p 7VZo:-U72uעN^@|+~{Byc1ƫ\k[J&>=]嗇OU3J ܿĿcv m[*F|OjTUJ]YN_>p``,h-Y-zLXGr%.4,mk9DahZC|XS)95F?-Qw 櫽BX9#p}aˮ)1N ÛA{_FILnCV:pZƬ apct$EEYCɑМSfv (i"G`GVef.?WQʅb -ga8ih\H.!v|jU=5wwn6#.}{\fV˔OP5[ ٶOn x$y1fuSDR;qe]^55MrAfGTKܷ73u88݆TNIzϝf:SP Ov[%.Kv 3\.! Cp.qL"mYI篙 L/|-:@rX]\z"ժ9֢J;^Jbvn 0Aw[$*C&IoY@2=《u$T&hrtvPpؚ0Z.̙@$STz稖`A>EfgLBTf DRw{E.6C7Hkޖ:hH2-41sLH'vI#S$.K6x?5R!%B2n[^*kjnm-L>Ԭq_;Mɬcw10^ф N1O=+ cM 8T ݑ4^2~V^\#k_*]Be{{zz~=} _ܑngUp9u1XkuŜ MRe84Se!EaPWR请:CтT gu]n[YHY A^L@5YE rU-pyU)8nx#IlWGJ^PwSZ׫e.ҽpV嚡5jфW=UX.K ,RD$TݛSդ/HH@ƍͻqc5I#L&E_yDCaU=w5SmV7^lQQW;E+rLڏhP,;ω- TTg ջTYIsO>G ȫ[NϷ|[j ED#G?.Vw82UlD Wpa<x GJޠ|':Z*s%m)ՑMp4=l-Ca,W06zckp9u.-]7 v2wKxW3ᮮ݌<`)H &_ÏvSLt7g%| S>(զ1h)>zV7~}v"u1ɀ-7/GS(* fh ?,34(Z"!lo]+ 3tTbk)AR*LWe\:CMb787 /J V*nldqegSר f<CoLwַF?"S2!DHFHP[TKn~tbek;dO 1s>+;uw^7FMb MQRN iMf/{e&k~!"ZASy8bymֻ...Z.|+ Hȸ|?10g50*6 t?(Ѝg!c)g˿>hϦjHxONoZ_jjJZ(WNHPΊ}m:S)%AM;=رɃ1F ._X7"YPIOV.ѓrY F3+bE6H; ?N)H=|+:VǏ=7˖,MN.PpbRLxIv(DowN8/Gr!uG&9",x}݂M9_뮛ueOX lNJ_|=0QfҤt 5]0͢>G=N,{S9ZXB컸஭y<1fPHGm$jc4MFA%ޫҀ1G}ﺀn.@a T nG* ]wM s 3>q6^?e7f~ϧjK(cg{Hf3뽏#cw{5}|T&>q I~tԘ)P(ΜF"aŌ#MY gU)P_}|agxA15Gʨk)&:gYYwq(^~_Z?XOc9#:«SdY_K1'm*9x DOjRn);JK(nggI츅\9"5t!KO4-g)=~j/\-'x.?v '&:\^aaXߊN ' ʳuMTz*bHFp,Ʊ<"Ey.jP!:RwAG5G#PaxǑ}#"ʷwJ[FKQVM-XOda |b teMmnp,h_K)@?B|F@lAݕխJORS頵}((D13$Cѵ9C D8c|+%"6 ŕPak .zwa}cBlXmxޤ{h9pH:q~%z&$NV8(K@|k\DQ*1p|*D{Q!.ߏe9.9.ز|}M"-4?_#{xh9eXEs"0nqcG)SC̘(860E*BdXxEA]0 7P /na5J VbSBH%N2:(* xx$NJqγN 5r©X+sud1BHS*Ŗ/j1Ғn @U5rGYRzj,RAbx죵r$UXo 5Plc..RT 7)6CR|:5}]: W< LCsmE"z dnQk[-Ԑ!*]XũpLJ&ZVf?L.>#SX!_#e1[A* ac(&;0@d!zHb 4e[ jPWt8r28AvhV C44.Tl*qRKE198°)u+XzcaHo, ow !v'Wv\R{K b8NϕhUS6eH}a,,87@JMLqW'.;a9Y'ES}N ޱsަ4 Ͼ{o-ciCx@1qPR*cu$χeU.yr}" hí>HYb2dAV`fU ʗhu|*~_M lo&¸Sr)H:<2gè}|\Q ~&f8E ݫ[Փ9)ͯў& h=Ր R:ĝ<4\>E8;߅$RgW CT`T3bEٲA)'j5>3QIvZde E'LŠ0"0uG2sǢD>lWZe,(>D$XLQ?;ţwz-oLFo 'tBu*gd-;ۆ2Sb c|͚Nq5="hXJ@^d`D*[cH3ѦDK#zXouk7k~h ޿.b8SFF8O*A1gP燹s?֙cj_1Fܫy++Vw|Ҙϝ¼=lcS7 va+wϤ|3EVyG(y&8N; z{T;t (ʃFBKSJcRQM{g"I3 q@?$HzXL;U: NSMcKynw1OʼnMlI )|%da)K7ٖd%`W7f,wN'  %z '_6Z}oί:_ijFCԫ޿NSDcId hBQnob+t1;Ͻơ59ZBhX( %@Bt0LEίKR~.Pf[PE(2e0zhgtxk 8\ U+#_QHE41wސO#j AɆOB<ZTu Ehm EI1FWyc_|;:pyL 5H$R!glŌsJ\hĘ,o1,wmf@&_Xa"=b6Uq4b5Y?`7+?/Y׎ uLM=7U(PM<vwǔv}xGB ɘB.Rx9=HUeRD_;a7g}';ʐ0*IP"*jiP'o;DH.H9s zՂlx[U/wcɣZWJW5o"%{HTU .Q(K M4O93a&|9X:)ΆH)S΂~H9*6eѡ:'΄&p*Q9b5({;AwO ["5yTK(;ӬWg"-=I`Pj |O# ,gD#a¤ 'Ch6[[ma zUk-1[s[Ȁ,# r@!#=#&7x'&gZ,yW2ސXFb?ԁ2÷CS]F5gI5Mu[ktϷzo\w\$Vd|*ֹ<)G؝8-C_?2 1A*y)^b_<|_'3M}iqv$_N$Q$KҜ7Gm0-#IetXj[۶b:hB-ZcrN41GPAQh"6ت9c=y H<Ox5Sěv`37&Blv@F_Z[~mk!Qr7hqT\A[{]x4\3 n9k:ٚ)[q\AVVbcfZx F|5M"?F)L{sE~D7 .6ojq\+QCNɺoM /H@Bl]В(\ '&iʰX*K ^K-ns% "K1!7 %_c@n U{E&j}OvV%C[I#g.]YS*}8N{"4Y8I ڎ1G&93kQAjILAf0ipJ8q?JS pG\H)a@|7YqtqX臐BIAWyJ9{g#&TF͌PNR~>⧐w:A'IA !.B>sS6 ՑyP=Er; SpXKzQ'{㹍3r*3H]ޱm)bizFdBaTcl΋gɑ 6H ߖ3S 64*UqH@.TSv}$7+o.U$4՗Ms tRUb\| :bK`kd˵ؾy8> .o'w|T-ҌҶEkYB7NWj!` iE J7}tnX=9'X+S\Nր1NA9ƅFo C 0=x^HhwDn.^\"3٢̻@.́/,4ѯmB"߹bwZ‹J4 O[/b 7M$Pu0O'.sgӚMqY.lPthϹs| -V} HlRV +ɸn[qr8cBD:~I0le3Z$V@Oje(&LS@Ro)ujAVt{:0/֔=%؈![.#h-.ڣF͛`wh=1HfI2 q - )yc[<9E |Ԅ'LڵarĶZ1JJm0?K TX3Tr,T ^?2f(jW:BsAUakqh\ʜ{lTmN1k4^m|k+3bBt:3̼IY7pU떾J$D>jۊ%"= r3F(cn@EGx1@rV*SˋӶ%YIflA)řHwnsNnXZ6Vh=Vw2BK(#ekSb?w 7 ro%=鵼Ai}(fEfDD6aH<)Vs|*<ɺp}?w ASIapWP8%6h\NKH2 N]}0K'䧼-UnK 'AuƨÐ[TW1[B)a`ty硴61; ˟w4%iՠնk)T9gub6M.i"9xO$ ~jFH(ܥXL YQ7M< DMNF9ⓊiX-NLkoɕW.tX#Rbr舦񘛒%.枅mYY4;nIipP i248dZz RM4K ,>Axٍ&O MFmTHs)ڳDŽp$`O!*b!D>%@fY!Y+rn[Ś#,Z$ek}[U7Ht>n9RQr^[}mUq*TþvqJ(z/ "7z 춷thMUHm-i4ySةb.!R3ف b>nMG("z|ñ{ W [GS}^Or6<G,=gZ|AKi3gL q!KɬsR,[MuPɝ #?`%@ڷGg'rpC,Π0'b%A4~E|AN<bn֧!.j]k3q'#}XX.&vm_*6Ă]d"!/r=r,G9cB}}y-1dq!$+$+e7=6 (v?v'!_Dj،y''@7 dz:{\?\g7J!m읈uJxMٍ0`7|XB}3 I|gLV+ U t G޳Siw{U^ 'x >h@%Q>s-΂d/j1(G CSt3|tpM)Xq?&w䚷Mn֓iK۝nUm ]d9}-ժSۧd+ ey:tbb*٬YvF 0D7Q~p%Q:{J^fz!"? | uyZo2|^?Xy:JH7;3k10djM 90)^  W KS ͣ?oiժIrD1 ˈGvu@ $;u^ 0 `X0@fҍ4nT(r'k(fcrj9чkShNj9ә&Ъ0"j|Dl\+SCeCЮDB*Şpn $&~b|~oIR< M:ρ?5m$,vd\` T&\BUںҚS!̾d.6mO0J] ‡.P4)Я3 !Eկ.f5l0[w)aî(c'UI(up$`9EL]G׺~g$t|ych;Sb'$z̴EQ5楿tl )I. ӣ7&c!Єؠ-$sN?DkH)P 9 6s*fXupCTl7LNCWX^&3rh |{iVny_ɕ@=ŕhhbV)`uį~{e+[隝,en.z< z:d-:ƿT蘶+-a%^\"Qc涋lxW˥zpEEЩNv|_TF%5jV|Vt~Qǚ) wd4f(͎ZӭJϠ'ET%8ʄ! w 2 wO'wCLP'xmmT:ԧ;z <63ǗTh})[ %O1ʦ eD7)oz5օWޱVT@:ɽJoJ)3&-ļVP-9MN=S L ,G(9*`#qXY=YT$^2]5HrR, T<>\eОlb Lǩn[+s #^>@Csnj xGB3"rټ!HAE=WͺE$ RyT9$0]݉0z"0d-'kUQcT/ڟ+1J/E.l?Z9FFO G@!WN[;]\eY zuL_xsaS"nr~>R۱>R( ;U䢫e;y ޴ͭ9LL&ᚪJB1P:R;{z9hevp|RbT \DAZcHR@9l8xn{f6qW!"9H $5ԌkK,}.Dwlȵw$yQɰp^*$l]_%3a?Qe>y":iV+'Dkayxc!fc3/.KY(ט9}@=ï"+"qYoAkOQ~孼}`o\S|F so?,1m$ۿFr/X&:{,!A!c?zH]q.THh`D 9^~I \XХmG| n`0.r) ˂P)-9 }3T롴#1ߟk{dYݻTRcIam~wBWNJZα-p'%Ya*ԴS`.]1dd'|KV%$܆|4;ƆՀnUMnTsȆ:3't40-zuK50bkw~K[Ўb-$BLz k_@ȥ'zE U Xe>#X2#,*TPCla^n[zꤲn?hO#Dg $Y!#ݑR j)W;uPu^ZlDmxY k|)K"KVV~ Av'm(aqRŊMR1f#Jʁ\Ck`j%5gGKe޳.h>,lS[~ХsJKJIf Zazo>{. ('bv2]m K;Q?(!h Ih V1.yn-?SO f8sђNUXqyA QehdDjԨ6"SugMn\\ "xr$ɷϘTy bpWˏT<7VsTs>#CLEOY2n Fعair}[{։jks;Oŏg\ɕ7Bl|Uq3RVXR_Y$kfz.ǬuDOqۦPsbL8Wnٗɿo>M|bb\$=nwpG~P[ae_ykp<a[I{}`kIUOtџi-QoP Hgt>"$Ĥ<]6X e:ɋv`(G{DlU??۬SS(sHr *<0 Mc~+:"b"Iv2/躃R ;F+\7Ml].#MTE$e\iQlKrB_ơvOLK@{l NN<5Y/,gY1bH8ӛ^7Co$!^il+(u=ߺXi2*7o-i΢`ai)}&GJc)9Pɡ\vj!I,lc;֘A6Optie K5O}3w=`(P0Od0.?~ QCnvuNC854s|׻ʟs`iY=ǖ*~4MBߨF]pGist]o$l&oߠ=N_6S >e,Mv4 U3yH[HL|r|֫~6= WMnf mUaƗC ԟմb.1;S0e;A,ʁۗJO9ɴ"_U쥇:pnc*b>Mv֝uHs϶7bB*JKo"U!/C|ܧ"hӡ eHpf3l#Ŗ;C$Z $ۚRE1<($aR6H)RZW/8hTGMsEXPFs|v4-up3NJH}bRk'X }QXy@a8 "%PA.<৮Y^,! Qyn7J7́}y*0X,޾\I2P23ʙX>8Jk2:#^1X]X})oHo"Y[蝬hBF蝾e[)塵ɶѦX?*i"8 02Lb+7޴!*]Sq֗ lIp`y?X4HB? .֛2M=n9׫5L!6, $:=*EZ?۹p'~SD(7ݨz٫@H*v^u(2Np%?zAF@AW(/ ɦV}c+*whickYta pXj,!y%˚6Tґ@jR&v-E~}])y;]ȡ,:bEt0Nu>H,O9}Nuz9->lޕEd/uީ=  JDL4 q)$ՌmB:FoSgQXc

ӾqbI++]9Y =2l'N`Œ3s12lCZ8 Zw /.9^Nd. `'A/5diYm7yzuF7!:,|F'I,~Wկ vn9*9+d$AA+m$Y(ØO<-Txa+@@bV![pqZT^VvȑK{~EPkטٽۭ~JJp" _Ltds(34"YΥpKhSd|~O40v@8 $,(yF*I*2\Z ɭ>qg2s%U>d N#Cd;[zHW! $]xf<<־Zީ+w[R_(R9Q@"a"EFܞM\uxi1̬P=DA4tVeIm1֨(k\pU_*0jC|%el1٧&i +8+ĻY,X~&Uqn)S҆|S 2ʧ"ϝɨ@[VsAʬ!wWYzcaP،o pO77&^N|qWE87V38yVr=#$*Ubyڪz:{>cGv'/pu`Sw$ Tpɜ|Q)¢YIxQ'2[kʱ qRS2"` r 08yE2bB.5ǂ=LN V1h;#qwrʈ@D/WI|-jwe@qa{4)2\?pQ+U8@<#v^ZTYP运 w$F,YҢ=Pᡫ'f3P,r\bu݈йq >{r5hY^?'xV[5( 7Iޅq;`Y(^zh%)TQKZܗwujö+^w֯B5mJ! >tJju |A9,_?ˏy-^L}S\g G:zm{1bQxӟ#xnҘr6_O `|;̢ϟsxgQђIhS-LOxܛCT`|oG)Sb3#\XقA8ZywǭG؃LJ'$OCFpFٮj*p W(d7h2XBAUVlj|Գ~`ITQL~pK%Xv`r.lA2:(04ov6zAgyh+uP9ΧGcgY 9_<%|'_z(2г,Mm&YkyġWSc WJ_¸[C>yqS,^euH'',O+WLO_~+/g#6 esu3=;ؿpyaMͼ\PdV {^ma4{5mڑh[;Ϡm0D͛*zmz:n*d3rvyU5~Y1w]z1qb2pTY^lVƶ{Lo \ը'.}:O)'+?[.]AbR knG t͵uUN~4tp#T)|.+ rӳGuX-\tM=I(& Hf,F*k~yl v̼saAR]EC9Pr17bdMeTi*hn;1i!ƱGDVCptEOsXds;H(@㚲 Q'L9#b\ Q(xBGk/'H46w8f(%wѡȿx~D=|') i}Oi.s/GG9jfi]^5XCRBKYzf8)<(4N_8I vcEҚk,iJ lfhF9 ve܇nsT"mMR07uuj`RFl=g/Ք hCg.8$LI=t]Ĵ—Mv*?: Vu3 M| ^^t?F~] ʸ|E; S5:G$ѐrwH` 蔥g~(oҒa_h̾*e;NҬh9Rt.OG5VvF6a"S-kr9rT_KXOY{~(T†ҨT?Q9>8J* 'y&՗k9d_}f!\$fQ<`NOv G37ol!2f!cFIq4VdvH|6o 伉\BA,;RO|SXME0Y$]#WbM!967 >/j m޲(gD:KI5{&"(1Y R~>6.޷Hl4!q:diDݣ]*8uA MGKb:9l/B9ތ-{N UGUڃRH;Ba|lyŐPU3uCSQQ RM=ewY_P8̖tXķ)hHb6knVἎoEbZi#w.EGqegÐ*n/ֈlRumZ (Y,^P0p^&+;a)n!> gʐN"{͊驌X\<5$7!#: 7"D F!茷!P8McrZŽjLPb)d">rNpp( (ߖtI~a˜quXW΃[*GW&&Qв1KI}("gJ?I-Z5sF$(7Nt&ƣLɨi}brʫ>*uqў=0TLq5!G".B_7s29\r07R@FTF4N|F&Lgf>rsӀyOJŖνn.waטpjs892\:'J]hF*n$/B3~g )sA@7Ͼlبٱx Vx]0b%g3Hɾ⟞׾(XuQvmNKr ˸ގ Ve`*9b^=8 HٛLʷ/ovQy|"wq:ӽd,FBi$Vmw!̧쁫)t66c{>C=EXɒ;SUCj@ ءMh&>EYkX~ZYM5LP}/$' ݍaAqn)&LQ8}b>=*?ikr&toVpzdJxoލElu< htL4g |BTL/W#`)G^P#oj=>bw[(꓉:=5uʕ_P)8iߐcY$`+]LSHYp4a=ǮD°oâSWH?Oa!&'a{u |{nw6bRQlA?M S<>D hHʒ:wbkgwZMdJA'ۧX_G2g!m1g"5WSW ;6eu":k68EP>I"[`9rjI! ЂЋOίOvc咫QfSod5VvJW ð‡^KtI*<`n١> .n&ɺaP6\ٗGxXjCnZy P#m| ki.6*?}f@e۾-;JXUZ /EirC41d-Pw|Xr]<pÛ3fC,!INygPL:\@MܗB4leJf7kKySYcE`PI __n uQ26uҳu:=IL9j4$̙f% O Q|Zo.}O`0)(@F$$Cr *nS”2"q^cfb|t0DIfBNTmN+Mk&Mtɢϴ@~ۻG da)zזUЛy:pK٫ 7@dtH1r,Vힺ:Y$OXjDW Ddad*^*`כ5?(vʎhӫW X=w,np`Z2] +Q)\APɨwɠIVTє`Gʼ';'ntA fX% l/@PX:8 f:01.IS6&HV)iTjGNѣQًIvEݺt^ woH>+<>A!ӆn=i+5Q}?iii~yZ& &#ReZZ 冼- :a|f~=x0Gxt%6PQ9CaIt, V\a~2~a+9zѝOy`Q9 ݛ7|qQ;2ǁzȝ#_vىwR*8G(N@Z'cJٟkɥ2}͏ ʂivl)_Rxj!E)ƺ-#rQsnNB4Z`}xSϞF`qn&OGsdg~Zm8"*̑*0TSط@vR4`DUjW"#:8O d/az P&6&yDNې'z2l5 ۚʥ˖>Ab${sL.騉}2mX oP!P %HOIC h}^xE@a̐Al} LLj3`D׺*D-m0Qo; @]S2jIVa2+uU<[pݓr[xW>M)ޮTJ4pMf_O87euʼwb|]ADXXi;Ra;;2ݓ:Ur@~3u p`s  :n<( Zdހxtj,î7s~'qV|U|d2C*Rh7υ9^TqIz`U\p@^7c%F: fܧӅq:yLØEcX8xά rVs?a)8  9#IMW0ZT4Vƹ^Tgff2ۓ=G[/GOĚb6Ưίlë<|ƚ3 |]&XatC;y=?dus=!8q@Jn?FPp{zPmZ~sw y>ٽt.w2SW< `L@JS#+̈́{e Gڐ宒)znIf-a=5u-wCGͶZ0/tL8$(BB<r_@( {PN.m(7Re.5¢Uif*#;Р p^cq։+*g#s̒&͢R%CcadiG|GֱTKLDG!)J`bk]f+^~ 1VՉ{L1`%fq,+p2L(Mst<_SVƧZAۋ[ RX-o y8bPER +3X !5{2競af80I+ ;hDAjɃaOK$x <%W9_BMOi3etJa$XX*y1]{܌7b/d˽R-G5I }Eؑ}` HeK/P؃yXZ8Fi;a 5RETURD_M Osw(T?$id"Pf>5v]4A=*P$;6\ D;_qWzf ;\4KgǎKRV#\G%rD27%TG vp k4B`h/`&N4^ XOv4!} _ԋڍ%|p* SY=8[k^(,f;:iDD‘3Jae" Y{M_oyꅿnm˿\\q.0g.pԻ.l_iT6P:&kE #̓Z%?yyf gig>F7!!pG\¸Su8B]l5[6K" hR{B+ CcpU"e+4[#KplC'䎝iq()O^AG^q"ٍ1vPlʔbNg YZ]IÀΚݺwnL$u<lYb0C:>5zovZ*@H!6XM{b Ǐ _(q$,A3;y!' ~;)U ʶs.-w/_N:℮r'XJ6mQlߣ0`Rw$U=DWDi7W(ph<6UX ¦tq`w~.-@P,Xs̪k7Y]4*[lQۧwYL[ #$TGqET\o~ I2G8F*$ (? s#uXX?@P'|iԠ$@@PC=K(/0_u1TQD6qH(+mT!a#܁a7So8tEDzk__؎'*cq[@6c[˃=hŕHjuVZ;E/s9li+YL̘)`6iPx.vͨ$m;.hfsbP|❫~l lVHd +Nm Vri5T72PϙQdS"\L|&ъɾMَq޲[Ϳɠ%\}LrMrSۜ-SOkM W}Kp`_pnwY3;bBYc>c:j*(= @,PE d"-CSsݒ9COM|Do)y1f %6ـY:Pt؍NIYVǭId_o8Ru1cGLkFlrF4!իKIYwV{4 h%FpmpV;^b(];!kJ缼.H+ln`m/au+"wj+4ka@zL(00k~Ӭ ޓ:x) %Dd*&~i>o"p!xd|{2TbdT;IJ摨&gru^͝Jsd!'mXRS.N;_Z=@-65==jA<*fz6v֟aMAA( [0ʊo4&IzP/cu0,TAiܩM82a1}|Sa|D㻻K]/2u|D|?[١H͑W%;~@Ԟ /<k._\+jACp%o E)7c}+Xj˦)5/d}8u*`sD( }j@M !6#^(4Tp:ЙA *in^!MfMn}e# 0 OB ]p" ظurnAQlh#FbˣD8)FH ?`'3 86$G6pE~-\"̍`J_<%II:t,̔,'v*y P1S@@6Z`xIQcd2 0·ZP2D 7YGWe4h:b7Eryn1jcF(OfsKc޸F5,?zU捻a"K hfY :`m33Ȯ6սx5(Q.eaA\q`rfe Pk5GmTh.M#Hy!z9Z0:hF˙EO^{J5 7>7`Pr;ѐ,Y&uFڛyKbb.Mr)At&Jg$T#P개B;j4Z}(,/5a1-#5]MsF˪F#a$Yl@AHM}m):9¡7C^ /7β3EG')U(%Cg?ięr;n Ni2s32UJ,-*~wρI jumwPToiqYh<3]sRP=M"rTxDz8{ m ;h)g. *ͩ߯~lҽf(Qu"* ,^4={4b>Ԣ;L-hbH{Evgi\{[ͮ`73Gժ{5=$%G{z*=%M^ջ"oIIavtJ`XV\jãx)(. d K,g>z0.̞| XuXw - uշ$)ϭmifb%hyP?Z=f|LsYk`IѺmFo#Up!#rLL2}DLsZt!zQܱ/jqԅ{o|5"(_*Mԅ?`XfյS,b7mteZ;y牲:Fu{sf.,'cC^tnAf0{'(,u}WM,톛XerJ3nf괅CJ]_+%?^~ߵUo.( ]0>ʯrA7_^h[]v93:ƕUK"Ū5Έ~4I%`9UGsT]I7 @P)v(essѻ <`/ml+sOGͫjfIfHs:7)ex|o?=~9a|a[LW/@Ӟ0]B:#xN_Z9!IsӺe&06'YD>U~4DVD.jP/3$ʣ=g߁b}"EΠƄD0NKf_5ᓎ]k$A^+QQldG0E1MWԖ?@||6Wt~v\evSIo]ٴhW3|@e$SyO,9#v#6 6URl51e^&x̱ EE/?_}9}bh.!W>#5_=Xdy ʥc41[4gҹ3 !8> @{XS& @]] L9xCS\hfCt:Vɍ!`mU_˶{7j &#G{8坯nw1/!#`<(/9z,/8JD(K4J>{M[ȖEEnW0"n[ׂA[.;VCďU?.M n%#T"M=\B蕖J˺Jqw}s%ϋ=Fhጰj39J2 Dtj=QlsАklE҂w{W˝*J7wq}ǮtGTFef$ʃsigӶb\LY7E }fj¼e [d`{ BrT(]Gm >iqJkejQ2V 9B]rLTuqey g04&LD#r/&gB ]m`ϹQh/m$qv*o>Xq8tc+nUsPn|l:@Ch+CA%X ң( !VQEer]E+Tw*"sEw9q{يFM0.?yۘʖ%:__y#=aXV4S4EAU @\M 3}LD6OUav.W g7~e/[S5Vʟ5j.Sqjd 0-T~ѯ@U>L't  sׇpS1ey WV9ۅz'ZեWb?EkđvKH+䴉?r!@EݥKK AfH_K.Ì5̯=Ug;ᄓ5^{se&~=ޭ̦e^Vj:vwf\[W+SJׂ8 ׍Cϵy_5'ޯyAjhuaǤW; Jw+%siWF-ݘl`sP5(M9&ߴMUF+GyoWe]MQ_#@_{T&seM/'G8R8F( zh#kKO4AFhf0rwPl;7x&%M7Ŵ ʂw< Zͷ24SJ7U*a؏ ̸ C!ilJq"h6!T-"sܿYLe6[:!D!Xr_GsBV\n7]pe>Jq֯fg x ψ2f,o/֊qN($aa̢Z<'MDo%Qz5C;$|yzoHC ,Y1}c@448vs|c]ǖKb}1ƏόuVY yF#z{@ (t5y) jΤ*hz-hR|ק/οcl?YspJO--@>p 9)SKg!Q2_{i>zkKMP}8bwH?]Ib(]G#~~VH3(^s-WgOLݼCa2ɵl? R=j!((ްgryŒˍ! Qp9}&yc~8&.|pT r C⽹8nxmN 9Š gu!'NYP*!*Y;k c+? ށDY*98=OP'Kpc.L À)9!>>1@K\oFد,,?.f6S:1Z^O lڵ/j^ n+ ]:X*mnJ&A%zkJn> l [وvM3Y&d6r5+'R)3w @HIV al.8Q69UЃrٔZ$IY;`q岙2>14O7j]e$I[v7gj:M ܨ~X~.@Ua/e>v?ZE1p!Mquȸ+^%]l ~%9 H^+e\wJʃ6S[Jlu(UgJH]T{8 AsPDuBTBkOH87 j.,s+$eX0(4 4갪=RȪ:VQBe'ka]EV|S虰' ѯ7*b;%@QHը;T𕯹ɵ`8 _O]G@T~ݷdI0ZkbcE+>j<]͂ 6eqr'yn1&ti EBKoϷK>Du,Q}.aDlt)|m*!~^x ۵-Ȯ2;Ē,ݜB* ZhwvGݭi;# upc4':!!;q:UGVjo6mrAgq}d8cPߥ@'o }?$Q#OpGiIҺ\wEHbʑ!e@& >]DQso/Y::A&A3F֠}xfQOHyw1Kz`v: ;xk-eS.#G!T0<YE#]{==G[C)?K&R{2q}[>hr!/Atm޹sh.#a̩.~T'WxKJҼj=$rZ F@b(O3X]_(zܛDN"n"< q ˱u|ui-OU"&oak&{E[Sϵ(3Ml|t)6 EB藨eVm,Ұ-2esm;Gg< סZu,fNw7+K4ֺ/o|I$71DCnP&.fwdnzK<˜!cٱ$ss݋Q"`kx| =[ir ߹YZP~[rPCPjeخ[ػ{?(Ͼr)h$ ?öc @g>)\譞ʁRϻ~άA+d|3P\pq!Z2`RJ@:{ENwSpNuSe#5Ѱ.6RС ZT>xqӵ6Cθ*tĩ FDFA^9˂6K;]DL*I̱n`)YM\chIs'Cur aw8Oڍ~]}͈D[uEok^~; 읡jPi?H^zq<_ow9X376ל ,P} Cڳ|#%2&Q*imɕe蒰xF:4z*m7KaD1.uEwZV۲5 zCτK~/Υe8֬cVv9TA մo0 ,N/M >[[;}*ףu/KSdDV8lمx\|ELs϶nC J ڮ%>aA. KMvamPxD,̧+Qɔ5iE*yΩۣ_*^wN<4 cE2ּ˜& d7uٍrncpBrE#S]l&= N/KV{]Lho+>XK+*y -fۚrL.(şϛ;E}yo[A?&qA2=lȪqkE?P<8*!2%]@7A;y͂pL`8:hͨlm,z*zŧYPi^j_]u%cn(Q6mtX-\W`\ c3zoBX (Z 1ٯ+qkAd*R!cO?J (4^!=;pJE"j<*F /npGKbdܫ1}g1G&vRdBur׃gq P=-`K3O"7bym5{cB]Qhv%|}b鈞\qEL[z媥oaAQfՂX_K˃)αKdt҉>B5[btS[VO1УwY3BW9bkS&W~Qn-#G8/Aa}Ph\w >c٩T..3KzC y´@Gw2`֊Mr'QOJd@vVo4 kرw=Bqr( ϼ32@A:Tbi?a"v-+dcm(c}薘xE{52is³=ͤ}+VXTFkVQ{Cئwxr,EC}c`ssQQo5MT@j1+6?>^&AF}BY86_s*k/{7P|FO":,;/P ElxĊu}2bt'ԡGkT<+r Ɋ Vt֓|U^.ETE0 T ?2@#&8]tK5c_gz-^ºDg.Ie"pؙ[y>vtwVa e-%8];[Ez4lD;Dy,= Tޣk]ރ!DpR0 TlfD.rx? a>[}ʜK>H殏*@7Vtl(zm^b"߃SϤz!sT.(  ER]ܡkGT$YC4$JD|s,|{ !W5qBʯN4;0w(i30y q)"&{Uɂd*aLF[Ǟ1Ap0yea_U,.-wROIԫ"F6,'pk3m ߆hI1:UJolA?i*0Dۧ)PkOؘV7w:[@cN/Jybr3ӢeC.!NCH PW-d%8zBh2@?&H4B~ *>[{̙}A(;nG8\pwE*~ljDj9S/V>ϺEao:/Һ1<\I<@*nKV}*؎`jwYuk *I5C zD\?]K nlbB(ogh6:-!@|`-H vĺֲN`ZO#i%Qme;Tte0J'r#n{`!it@zLa+T.yBiTpGڋa])j01o:j) Hby<?cч< KXÜ$ ub\I+)(LuWיRHǯ5?_̍ 23״BV^SF{ %`²읉4ȡCjP- jRM WMe ,q )shS,LRB\l[Q%٘+ O$7ihٶk laD" C$\9cFzѥԗ\7y  H| x >sZye:mː 9W)N ޅ~v"Ҋ;fsavaԣt5lfwWov jlXs$FZ:nR;kp`+f )BVRX^jt/W&Ul4qH48Vӿ6f0*HƓrP` XczaǍLMQ9p"*r4JlC>Wa#)2=> ){43孭Y:Wkv>K78;jGu qYGt1ڠFQbP|WL<Y.k]]85c]Cb$ ߊ0珴nC!ؗRFT"q^)'y( I,/eUܞL '>sFĝY Z_U$:dnʈG\ӴqnGE$#1pZDqb;wWOww'0GQ ِ(4@dU:I7<.rLl$HI)A6c獒(ېvi`gw6qF1W΁ iL[%G eֻ Gi:O>tCB[9pja3VL[" 8HҞFq2kNeYjǟ0^c -S \́ŒlрaC!pҫrX 9+YsoPԭdq_jAN$3]3iGp\eNլ Rtq*<cIX:I !rQx!bF;YOgPG=X/tOrX^2Z59`~4`NSߎ[-U:2Dp-||ݭxWQ F\vE ~\_jifnusTS!'}=KyF5]#6L'h~M:'da72ӥݬ-lIfYA8Of=B8(uMY}$!@™,dW_X[Q+[ABNj%{a4fGj@0A[6▯" $5\$5.c]Zc]9,xSZMC۸u۪ ZAZ8$aq eUn(9t(_LN29=-yȘ ytg *ʢ(h$RdsY$ք*ۧ/#Tv-M.{lPIBzhe<-՗zD)nljJzҮr'68|Mͨ7ÜăCn,v& hѽV~Tr+j< }vo7%5ILr5j0k/CniثPS88alأCb>IBToSq8# {5B *F t?Y"FтlSybW[;R ][fm5-779Fd/s$kWz}N "7;c%C}{v4j#(g{[ S&Y2>!7Zu!;w#1}GpɎw'ك/6&$Ձ9 Ɨ3Ao3rЇI8 ?;Ү9J y~~~L+Gvg _~^]g.O탾hK^R:ϺRQ; \&,7& M]~bp G*F=G9xh/DnFmC%Ti&pɣC' pGd J)4jPngp~h^94w:mTW4.݌lC6ākRC3[ IIP@(^, Yy AGcF29͸${[K(#!Ý[([8?f֩%,ַ6&,z쌵[Ӳ 3{ lcH⦲I#r-9d* $sAR+խTW.=x`W~_/tv-"^IRP<}>3fgJRn qC nAţտ:Dz oo!,fF}0tp <ܟFx@f^[F:HjeDbDtj*TW6>!C*=$'f17H> )96v?.w f'@L2m8jf|T5ZVQT3VLd2w;CRC.6Z%psJg&c7"w(Gm_\_zCq)%oc\t#Kv 2ZF^XXb{=7CHdqgi]рssUkibQr5{ /O}l'&Wʸ^HEGME+ܷįl1Y!8 &Rj˧ߝgu5 *>{-K&H2"zǾuJQ2I.\YiҠRD4pgIWWwj'-vxkz=[)gޠ|p8}`֋VB Pa:4RtB>!x '3u/%-%ӸVi@ 70A)[|x=5͹.Rtt U j@65[ ۂ.܄uQ9cpZTHhwNL+I MЮx&mwA%l?[h%DM lUN˻]"9yAST'/+N[tks0P.o ݯ F4PZѽ5(<4־f HDˤ?p]06n_/Q֣QN×#4 .'z+ 9&ڬ ْܡN yǮ+q/!*fB; ye߃NkTri .>~#L߳W3k? ^" l勎@wE)D(S+SB 0K 7!>j# + ;] g5l~dDfsn!/*o:P b-3;z߮'KJ7jQQz%*3PifjG )c[ټ7~vXOFɈEחC,qFj#1(G>VJOk"%sRx"bK2~x;q* 0&P1vtg;CGIBoPvkP\-L24g"92 ï8dV9q1RUh(z}"v`u{bʮ!Ia2V?]"!8iV$M/IgKѯ2$Ç#~g"k NFkm.Ɲ|, T!d>&㺂̝s'mbk?(Ggz 覀1!>6DGS{%d2 eJ+ .ޭF4[Pjf:4jL-LÜ;g+#`H]_ȼwUZY 4o225VO1h៞+6 ]MN>*YylP3ISnŵd/ݹ&7g5s~ňT'v>nso&nf-y?K]2ZGuV2lW74D5Ș.PD0[]rP.xl{=V_K Dv`i:ڢ-鵭#4AI~Orr*av^ķr?c>NJ1YCkt"^{Ekq?,9#ڎIw,ѠwFfR LЬP#|^@P\)ՋK?{Vv_VJ % :j޸\ z޴̽+]W|<m|9*J$b\ar8KOtg.9/︴cƉ.$ GE5g,"a%>)VJՊ[I ֭h~?2֮=\OyNLŗFlȭ 3̤S$ - NI6>ra(Nhbi6 6=!h|:YB|u{a𱶮!ObgF݇34˛Wr.ٚ(w+濫?BSCkoG ۍ7kUgY}ٽcu4 1Sᢺ%9U-3V%!9`[ۻQvT!y턙Ge:؋Ypcۄ&!o Tj;+Π;sLuV.|E)WWڄ3Q9iClZ5XtcQa'COao}M@GՀuX+ X(Vj5hm=Z`ݱȴUsjh:ZUUɬ~L} Aܹwxd;mʖo.saWq3MV- 'yD\[QWMc0ZWڵˌ+k"v)kAIu/|?Лop ): 9ţۣs<¦3ԳRJ =8z 9'b.هhI_+ ,s'R.9a2gZRU=)uF0jWD ;ܽ[a!V6r3Ԃſ#6E@bwZ.'VDdS{3hz:ٽW9؀v떹Y%0>`or:^_aWfcc&5(ܺzϊp3!( |-Ő8C^a}rX4ؖ\A~@?!i/)sw %q<}rdu%ZM?njBux87}u7v">%ҕngǞ&yfo̸|P?4c1";yR5yX{: 籢O> LRIzN9:= - Aʦ)Rlh6o=ux{@ILB i2,_'xl]#8'?mj/1Qj'Ę]AdN׀@0-Kr |h[:q)!R\v_?GRA\R ^R%Yẳݕ< <dU_=z^ex̰#%Lsbܔ.&sXͮmW^i0DxT|RhK \F |L;<r6OzFDK>'iZ%b {G;;-Wbϲګt 'O tJAr xL(C1DN,dЄh{ŢZ ,;" *7`TIT'eːTe߾!czgƔ0i7U9f}ɐ4|7[]󿻗$|_l w58s#|shq"a%o?u:YyU+qy!zu#˽!'>hھw!>2?Rx8V4gOA,!9WL{<@%5LG8 h6-a+ r"^PuA7wRKIL͈ .Ӥ {d?/.Z Mer1jK!f >~ YZ