openucx-tools-1.15.0-150600.3.3.1<>,g p9|YM[f(戙)-=ଌ|H>@?0d $ 6lp|      _   2 X  ! !!(W8`%9%:^%FSGhHI`XY\]8^bcd0e5f8l:uLvw xy3z,Copenucx-tools1.15.0150600.3.3.1OpenUCX utilitiesMiscallaneous utilities for Unified Communication X.g s390zl33\SUSE Linux Enterprise 15SUSE LLC BSD-3-Clausehttps://www.suse.com/System/Consolehttp://openucx.org/linuxs390x XPgaj: #P3AAA큤A큤A큤AA큤A큤gggggggggggg efg cgggggggggggggggg83bb46195c78962c045f3dde9a9e5a906b97e2994bc6f2fcf144fde33a0797a4e0fe396d9109642c293a73af2ec01ef00af059b128131d2f2398cfebce85704a64f6ac4ba52a66342d849e2b42ebf724fe6dbc7b00de6fd9218bb65e60e8721944737a08b136088f6d93f2c297ac1891d1f6d4cda29465b63ef56c1ead0b2f4a5fbfe61c8d3bad5d286b202a872e99d3d8e982e986c0b7b8eedd815490cf0b5bfdba7a97203e661fd08de4b1c85f9b4414569c474038a4fd7599984b4b12f727425c43b7b37d5a4db97b6152cffcf2a9e9b0e2b5b24fa4c4fd70042be2a48c3472f83d13224ed92e9264c0131074c5d3ee761cc7a74e3889aa4dc212340ea8dd090459b884fa8ee2543d12380268ccfcaeb73b1d49edaf4a30f13f83df33dafeebb5c7fa3d2e20fbee5431a975c7196779647490324dc2346cc561f0f044048dcc291b7e22e4d11a847ab0803c39646bcc05391d488974b29a0f5c2626498f226b7509ae9e5f975138a0dcb2744e67fcfdbba7f05f11485b42b211310d5af16e84407297fa98ea0a90b062f1eb467e7cc5badea8fe505c9df78977cbb0f5cd1bdb51f2499d8924ad1e62ea2f1a050e6aaf5ab9f3117a9b1adb40a0bc15e8495e9f11c5785da9c00f24d015d74e0d3c3b53eee08acce5c970dce443cb5560d4ea0d618d4650ed8674b28dda1a4b88df1db885589e7269f80d1bd51b8afb24ac70d4214780b9364cae0cceb0afc8bdb6c3cbf7b837e640fb311bbc5bc190138d3797d82a722b7923ff202c364754b917fc91d11fd63bd841ea0fba528a525fd6dc989f30814d5755885cca495652cce1d88f4a051470fe7e8ecd433908b04148853f3f460a0bf39b3273dfcb590e5db476d1d68b3b8ef9970e36894dad3473745a44bd26f5f50087ab4f124b228d267fe88ba0833309861d2a39f701a46676fcefe24145afe1640ef437c3ffbd3120bc734f0ccbe93d8c8b299ee6094cba118c8d9e13bb88a603c1223dac70b509a7c00d8d47583dba685473b89972b469329e29rootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootopenucx-1.15.0-150600.3.3.1.src.rpmopenucx-toolsopenucx-tools(s390-64)pkgconfig(ucx)@@@@@@@@@@@@@@@@@@@@@@@@@@@@@    /usr/bin/pkg-configlibc.so.6()(64bit)libc.so.6(GLIBC_2.2)(64bit)libc.so.6(GLIBC_2.3)(64bit)libc.so.6(GLIBC_2.3.2)(64bit)libc.so.6(GLIBC_2.3.4)(64bit)libc.so.6(GLIBC_2.33)(64bit)libc.so.6(GLIBC_2.34)(64bit)libc.so.6(GLIBC_2.38)(64bit)libc.so.6(GLIBC_2.4)(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)s390zl33 1743572748 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_Updatedrpmxz5s390x-suse-linuxELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, interpreter /lib/ld64.so.1, for GNU/Linux 3.2.0, BuildID[sha1]=3c029a81a86256a8f963375c5868dfd264ae879d, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, interpreter /lib/ld64.so.1, for GNU/Linux 3.2.0, BuildID[sha1]=1aff4452777778459492376522d54476993293cd, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, interpreter /lib/ld64.so.1, for GNU/Linux 3.2.0, BuildID[sha1]=6256a27b0f75e188da84e5377226c33e0bbbd7c5, strippeddirectoryELF 64-bit MSB shared object, IBM S/390, version 1 (GNU/Linux), dynamically linked, interpreter /lib/ld64.so.1, for GNU/Linux 3.2.0, BuildID[sha1]=bd76dd7df906b739400117ff90500a42e9864e3c, strippedASCII textpkgconfig fileC source, ASCII text / RRRRR RRRRRRRR RRRR RRRRR RRRR RRRR R RRRRRRRRRRRRRRR RPRRRYg͏rUkutf-8b6d1cc893fb36aa9a581556f0f4c52e9f3f78a4e05ff5717052e8d5c1a550bcf? 7zXZ !t/x,]"k%IN6cბbMb-.vj_5';Y!_=[ŁL0ԭ?f lFeC/bo{D h_ijTVZCF!^klo ο'BsL.\T{~t 5{% *x*j'B[;°JQLeCu }}ҡeog1R5QE8E* c|`¸!5+uP_ gʱV i?Jn Dwif[89L;Ɯo\GVc[*s3٠*:(b}i&27#L}f gwp3NOWBElPtU,+eEz[Na67uQ)<϶WS ujpո`򭯹N]fGxheY"J [mFC]{{i+ @_gy]Rq91sٸ Lv}<O/5yApdd A.ITOYyc-.C9VLD#jGw䉓c+z5W᜹_RA[u\i]D^*{rZ`>ÒƓ^`Ϯ{o 7Q 4'gtç>9Я(UDWc ʮD{ȧxB޷*݀0 տ*兟&P0jU _pMvzթ/dfǘ?;@`? `&41+g6qKYק{yVݪgٰn_zg,DD˰Z(2~ߞZ#I8%01*m`MWHʚ)B's!$ccoPQ?Lowϝ/ОtF|aP8!to}D:HAKjK:Ä("?.Oy Dj.A3lc@$K|.n佁2^F *~5Kmϛs^?i,?0_>Ul|f jG_գR3mA^+EG=Owc3_oZ-;A2zTC'w~^5Sԛ@۴ח:zB=F#>-H n ^/4CoN;5Ѱ۹V0VھoBǣD/WypiuGjzw`o^ kܞdKTBfP 99 8,i2-l.8kw%??`;q'1Ct^%FgEO5> Z^7dfW&8a,8zt,szOᚢSS!yT L>ceҤ$҈bZů~rCrY)2,%1jo,$i{oMaՏubolb>t= Z򡏥wJ(&5!v\5Zm[(!$Ipfi0L/c tH)xtiC$u B{v%]V?E_خ!S"}s 7PPP0ϥF&_9f.1l#7)݂GtEnۅ\87 jhQ 7' ᕷLSWCJfhU2Z%(,cjpm0(&KoOeE5$iMR ^FUN$[0/ӕ>4iTC+̮a]BdMA*G*鈜O=,pcg|^b3ހfWmt yjr~zPT{L#a]M+};xB=Z,߯r,vI{5z_e%4㉩|8VXl,/]xnAq|l4eZ.7j1d'g,yD& +@mw [{ ģ+zѱ 4e4C@ J\5VHQ(ߜIPW~| *M NRM ^QeDͳ@!:-cV-"A^gڜ!Hd$LwŮJ逩r[n B|P,[iBC ZIW4zlXچ< E4}|4 9`zHwH4s_5~kwRWx`nMB1x @WMZpdvSȑZ dTț N&AƋ/@PO/߲z"yP?^ '2S>96S?Ue'S00on.Go.6*qU[GEpл V/{ieEu]EwF-1w]]AGaB&Ţ)7 '9Qxq&t.tLM/g- r&eQTW;[&[v\o/zd'`1P8گ;ĠAzpq 9 "Ω#pP(=&L )$p'H3(v'l/6~M 'FG̒:,\?*65'^ׄ=UAa!;uSw&: ¨/Oׂx;Ah3G3H<=͓⋠zc>Qe 3W`G(ss^\Qۅ0idž1t9AUDʵ?'Z80/0篋nF(>L9.|2D˴lv`sbdJfqM9_0GЖqB)SRՆar7a^b^|yRq$|f:) ڦx&+TFd{` ߙSnӍ$QC#`C߄"e ebZ3l~2`ؔ!O6{URmצmV_TZyX=yWOF@"‡Czyi<ڰt2b[ǚ0< AmC;ǖpkol:Q06 $͙[VQwaٸoIB+< =Ր"9a߭뢛} J7FLlhv~Ab:zVmHsz 6n9:ϭ$QfyǮĭ{PQ~šmd %ʈk$rS=yۻ`?[2ZWk,a;+̑ѹ쒣W ) 1cakb(E}ey_ J6ǰ/f5n>h%lUNQAu۬ytSO +@! yP,W|,0\QW }q eRrcc.Ĉ,ȎP#VVFˁǣM+XN㏁KQJ*- YJb,r:'5xkO5y[`i*lo)]+5Bۙ.QZ`g_ᠲE\,e@LY?Sp GKu]u]_]8G <{>/s{yɥN~,s8UV/P@JVc;j)PTNQ0{kO-j&nE %nmYQj3:W⬁q4OAFQ O؉r{-' G`_s˄Aࢺu]x!ͪ|y!oΎTER5eY[?Ib zNzJ82֨[umgdrĽZs9m!2 E]_7l~:NC >NePڭW7ZGh `n3O7/.OKhrc,uW!qYf0Id0tEUS~[zQ&N /B7,4`yӣǬΒ`^Ł`Zs(WZ?Ik4?` wzϮˍ&t˩FڅEw'W}m4+24?G HPFCџ@PcBs%Yܰr"㝙Ή-'N+-&N?ՍŨHbIH IIil׎i2r-3D ^Y~qc]J@#%(ũb+~69/UL [f_Za B!qX9 {5Ѩg/C\vxkpNEY)1zZ&G{A|>I18tkH7p*S0;r"3SKXNHKcT2c'1$eL#@c1f%uZEpފ|ٛEQf=@mEѸT!6򓷂1lNE(o1IPýR &ϸ0qT'3n},k( LvD=Q8*L$ΌGۀ~%N D%f*5 n@7O7X.3w3q(I6 j3X ~(W[oAcq! ǼJ5ĞcŽXpii t/T|竵Ԁw#q!/8 3X-!Quqk+TJUJ@ pi?TEk~X ÞۃĒG~$נ6i`/9?%آٴkcdkm81npeSkkq5'XxPCv}#Ndw5M"!k-54!1\W?\uB33n!W( !!Nz;E&A#% -\ ab]܆bBڿ7f68Ѧ f/RD`RJ4__Ze'5e7a$[j2_Ա%l'3ҮY/׶_ Ũy6f!5eL\tR[>oUQR=ufw̎䑃}eq@q"| YuT4 H0IsJU LZ))z:$L:,eTC\}ҎEqH3n;3W*M uڦMQ% l#\;zv#rS&XOu֛Nzcrxk0^ :.JaJy=Sdrˇmoߍ.jq)aI'er#\mf<)`t!#L^bUe rv8 Np3*]:2P!h DH6ZS_?D߆{8T@siOx p"~L{u<'uL&coEnm2d%'&E~0 " yjL7~qiᶄmйcj&O}^v9/(1b6ȀqT(|[ѹ_L1TIv+^1` [Gbc- IʭXдy)ûiPix!±=u%k3nmmV!Uݛ<-\nh%|vht\9xI|]*%ZF~u~5ё^+@US Er,7T<́p TRV‚N;ѪIFj&"C[Mꖁ΍iu9eRHېr࿜s"C > iG kG{ف:SoNY˓˕ =MX14"xk˥W~w^a"diNj~#Ϻ`ʊ]Kd`-cF >Tu Lra@W3ܮٞ͊ZqUTk" f6ǤT ɏ5:(3`@:.T C)C`Y` RšOI[` 7iI9V}XIl :]XaHZd߂ -[;hqzEӢA 4yCz*P0ݶr}98>Dd}:LBH*5<\ii8-9%}8g祔AZe)y=#!5U FKYT1s4B_-L+L]u=?&&t;SP(0Ɗ");//| H se6!͞ $Wgy}CJW7`:=\ߵݶM70*:-\,+:5:a{7*\}d2tT*y3@S)z#|!vC=P:ځ<ƻg2mEE?gcLDǔol 9*]o`Y#  e0%J'o:8ku,& WJ6uM) b b An1轷R}nVT/W}dw0@w\2"!L\h w\9܅TIu5ibeEtɰg!}:Zgopد9U5 O/*~8~yyO}5 N_TÑz@mAΰ8ʽ<Zr߹IŇ߇eǗG?h=?v?Fx%[/&z qhGgp-Mf1".z$hm#,;}ꚇ8*X)s:=$w](ϡ;lET>defѭS+ؖ \B⸻FxoֽlMBdkV4Fgeƻ%1V.*FS/~sJ]Af$rtD`L"H3_j]wRH\;QҞW~66dR/2eRlC,qҚ{7ePZC3⛐ ?82]:MWEɏT(" $V/z jl"Q8oK4.9@>m?Y#9g%؄0u=]XeEoK qM"(tN.d> )ggNeS4ӄX9Slxj&H!җ8M-ghSńbUqCA{TGND#ԣ 7i~5aABr / U h8h(\b] :TԊLR^7\yS|+=Qo_CN[l@OgDe03-]+m.DqҌ*6F$aϷλл%qwED}5᰸h!V/GI>=+&#]D}@_( ,Ǹ]5K%y >ߎQ/y+E iG`#qDk Lr< %J$O=H ۻ3N 7n mr`~hMAu{lSkɧ6aO(Ilj^(f}}OAhtnD8%˵4,\#rҲ`x>>*z|{QW!!?Y!UAf&o )Btlz*A)b8uoC$ofJ :ȶ}0sj[>u[W=qCC1iaDTyVb]\7C[g*"5K-к>:3f'*L-;jƫy;QJ9S,"lz <G)W!LQ 6LTS#Wz{I:M/7t~3Ǵ',S&| r&^c fpKU35pVF󈚷pխ (0!\1M]y n@bn:b[ Zc^Ttf(N Vv 'O͔ߪAA ǂhl^vS_$+~9T_֣eQy؀чQ41oj0u[%"<`ZY%d粂n8p9"+6`4wěo|EUSzP*Urۈe* ݿw(h/k4 H*:{f/KkÐݖ(h%bDb8`,Ǟ樴Kr!uyd(oO]*qEu} Tzoh16SdN1M @P]k[j]m;2t J 5+ 1f\xdA⡳k%"LC~vs5b;=WcDEV l o^&M'Q*~ܯnGN eK8b]mkH,IW`%M# EBZOr)0?pSKuR^C2^D~[2pG؎F>}A5!gtYs^*9 ςk7ܚӷ~Fl٤X9>xF3*CqG )LoNϹYƮ4J١7@T%W7@V" Y54㧕,xK4 Bti@p6%/N*ԩ3EUsKh^dR p%)kK?m-iVἌmr+N1 C+"U*4h/F9"2gr_ sr_pQCU@>8l(lS9^4~V%I/}b7nK#[vs!(>pxQzz\yv@&BdmH 얨nH=,T~@'nyr*Wv/X``cHWS)4Z1C巀XڃANo]6?0B'D15ńƓAjYd++UŖRqSL{N`@BՖZD*q9s<3N2a@}DMx-qJn:gՒD u8&dIV~`OFv"~5$/cFQa\4!!/֧{ևߖu|oN%BѴD$EBbݩ8 $h DI_L*4kfΞZ{Tt}껔mD6DE id7pf%,y 7y=VZ1{ M|ċ&Z$} V ]>KH(w(k9F'+~N쟞h ]7-e͓R'?﩯u7$hRp6ehEܿ $!sŦ}obsNktz ~t'SNL8^N4̮ӱDM_irVxC'#L/M6{cy5]X5r!E``ܴ^]5 BN*Z:gvH&6#l.@1O)ɀWzoڰN|B<6[~_;ʟ-S78O2m"T gnUѼ+fCgFS blݏxy CF"OTdB-SoOsT+tCWc\‡+[!ME^.FŻ ʍr_y:4ڭ6іG;1 򮽒Gm 7pB2-U$Ғ6bTure=hs~ ")Kz{3XMb",l4sdWci銉4K;y'_.δ)*?^l1N_@Q="y<#FCW.x8RzO+wLg͟nP簻3ґqInPXğJ!mήY_Ior#xVKk-r-+^W ^ nN(f{]ѫ`#'q_Y`rm#Gx7369 ƞ ":=&% JpPǓOLcBv|0(nڐ$S` l௰ьHDԬM!j22^2UX֓ 5R65='0y93 DNҫd+%:Tڤc n ̲;!NC6i>_#)e5-X%fYlSZՒ: (A[^wrʙ$A|ȕW#R|3S#ڔ9$th"Q3խ?ˣq@> dY0#]GAë7a @,8iHˋa%!;!l|t L"srUǭ2{+vǴ9ʂk4אR'CX^rj]R(~QnG!a@ƌmH(6ig84!r3@҇X'svfj"wE"Rҗ2<@V+0߇Or-_bٗĆ;fbY&8ݸO],Y@-E#QX( 9PMT >-1P,"ʞP9=\fC'v@9Lr; PB9 [1Z-^acT`!Vr}o "-%vlnW'Ęzi}B={6hd#U ף+A d=7\Ð|Q5Ob3Ny zH8imܽEoMB~^jiqQn"~=j5<k.Ojvۙ,Liot@F%a[(Dy/F>aFXDd%Tt&۠LM+NiG  >;meWUuU6?<{9eLD.afnsq~fЅ޷:'M>ڮURs4;ӊ- $(+CʜGYXR0 Σ7Jed K6<WPcM5b3D"/oQ2P:8d npI>K'zl :xږKKF5K_~.LA~60v|E 3;AMHx3pҷdFעKJp 9\d^:ZuyES)uHfÿ":.+no7$?tikr<xX,pc[Ǩ]-=}@tR4@MͭCW}Ur߁}SbJ~qjڎ`AǴf,mh8j޺3& ߚl M`J8G՝#X\RPUt_;)cT"9u *{ЍN2`AiLFM6m)rJvWLQ"H dL-yk}8@hn4`T6gn),j2 ߬:G7ړ&RS% + ¶`y&],T{ZJ`AǩmY*zH*26M515 ˨G }}:_8 .M ܣT;txLz{"zA|*^J˜*VԈ'sҵa[SrI~%û^9T>f_3-Eq+ԞaVr](\tRgeٔ=Lϊh6*heB3EU@kz^£3_3Ss؛DM?_{,ݟ[$xK}nkf\thf %ڛ7V BXumYeAے~p5e.Tы>'20cIp\xVte^цUcj/ut@l ;4 ޏCaJ&*I?;?XR$2Mqr+\;-avgSLAW(p$Z "gOj,9$d;ގ%YgR|!у*-,`›rӱ -;6j:{lRx*x ЪXQ{/1$H1o!뛺B@u) $å c`hk ҒDcrSa% :/PsGp*}2j3__QG%_),WAYC\~¿x4Y+r(0MVM2a! ocIAn2#@7#ϷZEeDZ2zֳsݻ|d8F Z=˥'qT0P%F,5VkF34 ᡪi&{XBĘY7Ex- qtuRkam[w槐6Ó[H9Vqt"toܟ2۪.?&-SG??/1׺&ZvCa9Iݽ4k<S G)w3rS Ǡe>+} e Nt%`gdDnz\T @j/)83QnKp"x|b b8#s7~.Qkb2۟.x ?hq/l9Zji șLbÏf@U~+5>,Cs:{tz myT3P782yR퓁%;J Ԡ3_v+}Y0ˡ۲?Qw[ 5+YI95]-bc6R6[~ib|^ $PôT~5b̲a:f \j)ԉ/CX j$sŘ]Y(DׂPmf$ZHBt\,sDWsu]3"ժ@Z/{: 1 `+q`bOh,QU#Cߙ&!%b" $2R=C ̞L_uGݓS)Ft1_w{~06C AQ:DS.|lǧSDds#uuQIw$`$?C/L.9 nn Xa; R0k ̓yW#r_fwZ}̜d_Gb{PԜ$;p3sql'h5,&ZwsyhW/O)"uPa}g#dۉ|y(.Յ b ;sҐe"Tcxb[٫$%"&%?;+,㼚/G|Kx65#eJ[EJ>g1/b\Cw69d@^m3u4ꮩE N1jOٛkXw|C[ف6zYdvaع*L{ud1ieU,M$w ڹB:5ATei~Rb=~,pKE clA毮7/ً]w\NKB<FI>Xb􆔌݀M;XB}n-3G䦘-WT!!g!2х zܟa8oe&%2hƟ=vqu@(6="\c )۷ ?wi&|[O=֨餡ptKO*/bѝf#%~X/Ď=k#CRj$A5GũRM3=LqkE5&)ԩA&-e]姡ilsW-Q݇m >ypt<-݋fuSig끘ʂ< Zjʁ:y8b`sX ߄N$\uOӌsp}o"r]|/x{;-/C9X_ڴ qngs1 Ƅ7%&U^j]XaꢏTwFZWYJsRxVR߱pgyM疻bpZ3;vneRb_&h5(~Յ[ۗ44ãIҎL;9 P EP5a.F 1ܼꮩ-{QυI<貟/{B+Bx.&U. ~[Qjh_gau5ڤL, _)w<gT/ .4<{-}6(;>G(Z.p3N!"N.CQ94 & ڠsYZov+fiL''Gdv/]|sE6uxW6|?n@i2_%7%+WO#|'!5">'7"Ojj ^tl5Ix0tbFZ`y? Z =WLtQmhiX,(D8ԱYL1qQB{]S~svVx;])WuT_7:: fQAސLpM<8kt d41Xߓ3BYtLL,Rj"[_$4:G j_ؗe/@&?Lu!X' [;{i.͒.bh*E&2 3Jԓ^z1qFڈ;Ӆ\e~%$P#\ ??"1R`؎F.Mq >JK3V&,}$YR<dpAge [ f`εQA4pFf fktT5m龣G!=ˡҐHb "bq7^׼,9`vlĘPfxu\#KC|$=)‰;sdtͯbæ*v\\T~$uG ;[>QmS9Jח Gb\?Zs|/5Lxl~|D.EbwtWFRdtOhPޢ'#o5xBDRcʸÈ~?vГ;:^ b{CgF.r2܌}6æy(u6G^撴F?1ͽ,ҭزL):9i ւZn6J.OJvGpSB/b nfl|iU#xOhrb[C:7RGљ s{iDUMy#ƶ{k}4Z_'<Q}O,N: ૄNTy~S?H\"hgkJ`"5+ W=!эN46D]|̔>ˤRZ5ǒUwx&o EZFF].&e`C9G~$len# v=9q!(PKwWnOd}\]FbsW:,QtCR?-TZo0Cz.X PG}Z J%mzmE$/isqUr&w`K YWg8./ #*j;u9w_+2.10v]PbTtNC[cěSij+7;TTW2߆8 K݅ o܊{zgJO!q-\wϣ죽"Nt V轶VWs^LNl#lr9MAR >U-s){x.~h! U: Άǚ9suH܋Njع-mF!xk~VRFH^%u  =fvťE .f&UI Ԇ6rA^EKeA$ s1|>J2Wsd/Wdmn#h54"}8E+)zmf00I^u?}n(ASLj;$D9ԣ3@2ӣJ>t23WА2ּ?̆Vzca(:X H @% Q8XuIw8y fh'i7,A^^S&No3SP>ǒ;oc4H;1$zD2,/U~HC=)rȿ>evʒfS蜼͆sFrmN.NUtԴ(; "V*'CNgNuUL24 9Y|ѾrN:\ذR!xW#6!ضĚ:OtaoQ >{+x\(Up斜ӆž,!?Y/^2RW'= Ej|` yw0J]ڟ1uNn@UCU37xE]^Is0VL}!v\Mp/< J97`MJxkz~kc\W_R(#brŠxIW %,vR߃Tp7yψ2GjHڥ!;K <$FQ(;>}678\o+J}o?,Q&{`;`C `0Wt[z10e庖PO8i*ۙBS%DHVŬ? ^3kE튡o\pR2(i4;;RB}B}xZ!vCA8c`~1t¹&LV?Nԍnv4).:4qEaQW_ /T0#9ٲS_pumX0*6Z*TkQqrC7Ӛ˻4ṽ N2Gq&0=]#`g9Ǝ=7!@"a=1cWbBų+խwm m.#1Fft_A_O>3,G澰'BK VWZBp RMEXU2j-u(" %W?!*aW%!YrH>vgcړ)H+Oz\!N)NYI|u:v/YA4j 5d^K(u9d8~lP]ͯkĪa uwAs/xoG\كG "I/d`Tszt)sCWjW4o(@RDO7jS^يB#r:tvG 3AXڬJBܤ(ٳ%) +틅^EWv˴ٴ=݄Eyhaz;I zEYL]l<2d$vs;Xn P+ݝ]-\u WH_F*pDE2&s% Z܀bjx/n4gm*B=B&/$'dmDpvt#&qCA%\PTw.yTQf2FU;Cl=w5pH}yQ۷2{VxbqV*a;ÖtSf Z&9m]&bw":T'Uo6x(s4(+ Rkߜ]-A=jͼ?6 !ƸQYО(P?zۓ@LyrCyRኹW~U};^6N@@=0Zp&ʁqQ4^Λgg+f)~e"\4eL㘁O=;I4e!=r+hDW(!֟ !:*<&'.O;'jE 8ߓa3؀)b7"Nf[X]+E17|ItWo7.% zwdfvNW'}m`3aj hBRS5_%<(D., CHIǁq +gUQC2w7ghŠ+BkLÛFV,$d8Aڤ3 i^ePLM:_y”Q/l4$5^g9KKa/ YF0 014JQZNyniiMҾN(q5O }Bgtn"v4SŊ=:iND = = HCT~R:p.\cZ>М%G"qhOŕUVVKqFOx\\9ua*穤HyϨ2wM,)Jb^q/+p:jEoaC ^Fp1@{f%sDۥ酐7j\+%}"bK~_"N{΂G'F-Ӕ;hA( 6z@\ ήb44͜F6Cieկ4ya3 G /qz=2f4Q2Q$][פN/ ]FVKy/:d:N>!ax ]`^_V(?o CѮm~x<G? A#Zv/(Rg"%x97Is??mET:]f܍? >5Pq@ϵigѭE8V]OXJ';sCmIw VJQ kQT4; qߗ909C|8sqqt*A:nA{LO R1⎷[$qZ}Ont:#wO><Hs̶֥O!rIpP%E'z:\$Rf'cO8Vք!rhteb-6᎝ѧ\6\yOD]dz),\$]^bbw$$Lk*hrnc-ӧZ&fW.kP"{lg;hH}x)?vN\}~?4DihG.7ۨN-5D8[=7WaY4(20Ǵ҉Ps;!78*iPjs'( \nJ?S~Omvay''d6:`Ĝӿ1&>(J=`"u&/g `^COXIZ:#Iƍ7:-GI[:V*輌=J v`dz21<ĩo7xr[O]#!<-aXNQU]S>ۏcxUepT03QKs@iD>oZK=Ws(NM:՞mo`|>20FVH7#0|,fSݯ$k4j0i$@N/vxy=;Ѥ\'EƇb-3щqw>j`sh)WQoZc!. gXwiO@ѩgrҹ}+lo-VeQV^S8?e.5 UӅ,Eƍ XțkSϺ^SW"u5/0 sTШ0°[ &nJ)7=$ÿ>Wi@}\dQwnzCvkge9)Boz,j@"3˦|Ww˵%Oz\8CpΜtIkf]wvQ&l᫭zRq2&Xx^lm(tLS:&ݥP"Ay$Js2#d*<@Q&wl-AZ$"W+t;`ˆ*{>D&LqABH r:c)pT'#Q,p9)l6.?0?z C>͵+@쑸T'TUиn v!i'>y9Bà=&'u->'JNysJgedm#qXrY@3 ޫO${7|4܉FvPSVmFn39#1T8l8^ 'ؑڈI"E\B|3ZcPwàyttWE!lVMᜢP@h3/I6mH#7Duup:NqwU~WDZ;EPZ$Xz|3A:;v>wl'_QrO#B5xY7v-AxCAabN%7M=18l@6Pe?1N6LVkbl=H^M^#J2ԥڍo'&CG김1.d,.exW2݈}x.ŦRw4:8~&R[_f /f- G_͘WO`3#ί-#:JbMQ*ᚷ{8Ñ4̱^c%i9uB w61F-e=`:P:[P{彈}[QxAlz\ϺtQTbYSf'禐!a%%[[qcdxhƌX`+ d}e{WS$oKS(. }- $]T6 ނ%湰MAKny٩?Ȁ\xt@0<0觻Q,Va6 e|AHjſliul=1hwSAe_\CLŗ4c͓Uj2E{R>I9(jM\ GFiaǍX1kp״lC R|ΧP쏚f`k1C s=Ļb>5Go6x/MQh5K( UNi1Xƥ?@2ΦOx-9_T|}S&|O?Rry6:!D?2^&@IrR|2>vĆASç2{HμTT =haj-h8 6nHϬ+~|Yb:K :1!Sbe$F0up7rz0YX"pAi &Ұ /Rpǎ9b*<7s\j-B6z/> 6X= &v)k*+jBMس1YCK(cw8R.R3W3boq:0Թ[bt=aSziw~SAͧ$uHpK"mf(G !T-oϾLCh՚7_ Vu/k# ?n&*.q ^urDM3Z~TVSFZ}4<fBU=!JPVG˅Gi8ٷuM8I2zQA2!pY\WIy1!J*{GU( xNH`3ީϸS7{8D^=G/hYq*7X^0FB0}7o)[\}pl>g&ڼ'DP֧?% "82\l4ac3oˈ+ꄍ\poXҌqT<ޡ-fgWmJlth )о=u0-1vLRbgHSl"-sZP[ @u;F)SfCzՃ9xœN' BOsJpV3G.0Os/5E{Ov ysI^Ou_ؕ3Χ~ ;q{=)I"g = m/BtwBypnY$>7S`9L֠4*|ۦ\q\/&B-ճS|g,|/>lS[Av\|s#tR74+k~FK.X~IX6m':˵l*<Ř>i ;2rr{b?5%]dGck6qEx=QVc?ȌMCyVT!!|tzGĔ8Xdǫx]}yS QOaz;qa>V?o847#>tɭ#lz/3"1TL[ϕ+F]"?|Ge~nr"ܦjX өվZAz'q[J ̵<̋n*!;D'Ɣ2w)CDW <6'+k`7-@dV;>6=x.#~{Og .:n%P! ="ѫ"@`bh"ctPyW?a'P$r"4؉.6M3+n+|m p:9|SRH^#A٫';Ogt"L؉ o>mL PIȾ9]yxYztoiSIl6H<7uJ;|HotJat ݀Op4{cjuLap`,csѨ}ayhoYMJ?/"7XSãlǜyzC@~ܳ1'qa<[e:. a0,uH) )TIg|IFga|Ϡnip/t"j$4T?V[ 1 cUP1V5 R->WUuLOB/ (uDæ H_gixHA+mV>&9}E.eIzhr"23 '#1^<Ӱ ͇syĝJqDFhVFYcx?wv˷L/ Ǻԗ W6кq(=f}V< t<>koƁLkw"c3xZ/Pg0%":WS՝]]LR6S}cy|"_C(ьS MV.}Z&W}c.v3[rx"_nVV6=:k7H)3Y괄Rkpׄ4b$"NuE᫦UivF+9V0y`sXLʲěyuxLuPȰ0z*?K[;&%9a";y{AOGg(1{= _f?)?xCnC5$AɃchEn[{šWZBH7):7-co \w鸸V./j&E&ӮoL@L` X}z$"36y1\H?dDaF&P \Ae.{60i! *Ok! :l}99;b6FzoRנ+[^-GicG֑1>6k8=c9f (p5!<˫q5kdc#7*"iO | psXCn_j3%DD~H7L ZT4JmE*h߼HhFzdo0QOrSM?v6c0UO~,qҁ(OX6)kmGS{/pv^3ns:v e=Җt-o2HLPx /.C ny>I w,a9*xS@ocmAtg1Up5 ~*{ƍZ[:g? 0P8O(9'Sg7XIM$}el۱5QA7Z}#Y K;l!6,ОvޕԒc3A;1AiU@cP&a Іn{\=²SjDǎC=vqK̾benvr%Q)}/MC{!RӁ{bS#mchiT:CKfi T>Н#ӳ%X=8PKN{¹gk~cCϱ+(y锲dےc}c_N?Q{:{e;6%f{} \ΖdxqXვwMR1%@Dŝ} Q߽Ai(ԥU!O֥tas䁌+w;5K_߰4b5vpNQQf]P z~^=Ɉq[:I KH&P5گڂr݂0_ISko_${6>¡/g$C JW6$)12\da:޺"^&P4Fs'5:|OXKo~^<2T?oE7BZǐ(D+hɱDĆu:#ŜːrQ/-NUy0f&#K)_$r/s,e== ,˴/ zS*{ 5kͧ|'O\w❦zg 2#$gBRmvg^_(ۛ9˹}%&i \tܥ<Ҿ28*pϩdr)u?zzkB,tuz5d%n{i'OrM:Ͳݏ%p]I+^7)нvm؜$xѢ*w$3s 7rJV9mdnkH!tzA1^Ӭ8h;BYc$S *P3lȢo톦#}xl)exnVeheBZ"kS ' v12iyFWϓaS qѺ\'Mmdqir3[?u`G[zҗ@ND!@?vqr O,J`4lՑ<\?Y?l97Ybt`-ԱcKa&:#}4t"+G[͛1<Լ,9ۙTPahuݶ12[eYvm+%"`<[?+f`)@Wq{(5҂sېimۉí7l\s6YvPmpJv k0!x3嵎0̑az-.n[JAY81l!F -JmhBtW$c9* Q4!D|Z8.EŌ&'jɦ2!Z>^ j-A;WyɛQMaU}s.4QYPa  d^z"&(-pboã,"ni)ߒ2#']P{cT + Uۺ6޸/nN [Gމd81\tcA%Jm.Su<6[x| ȼǻ3*IBrN\Q(Ή #ERj2~$iƫ!\ٙ>ge[ވHaC&EcB_l94 cx_,LZK_mUe7hdzc-8Zjzѩo)-iγ:J"utg쿹̘L!2 MrIk4IaȄWR &=%Dc\? @|3&ue]EQ3#Z4MsֲƬkˑ^qCVV_{\U!wf2֩͠ Tljƪ_nVI0?:YQ8*LK~4K*;g!řB%E|oh8RHwU E7p;i?ߍ'S8n}LdL+D,j\Q:ZaZf#)xo|[y^4^s1RNP~ M9UדO`-NDg! Jmvለ˂ƵыB΂W\n$֢p_Ӓ)4BOyB-lhi!!SYwlNr4vjk]K]a}UXJ)e4cNxu]TnS 3u}=֤80i]¦"H%+8񱆡}yՁ#O`Hh;m쉅58 ~~K{L V t>11rFT7Cr RZ9&֯Cai)a/wa1Q>圧Q7'e. 78nI]GM`bK<'bkMK폑Q%`Y^{yhQdg\|< 6IA@Xe6]qe3;ođ!N374 UoJGvB~S&:SP%jr~ivY噑@xr%ڻӻBHQ sUBXy*a[(ŽXZ[ k9M{`~9t\Lsɟ]貑NXδnb.~6MgX9vr)D9r_LVlVr߿WxV3ʝ4%*LV+pƳ[u#rm(3^NOuqvݲd OztҲQ W 㴯u0RG=T \mFe$5>@fv)):z~'s\uA ? x, 4q7.ڦ^ lT7㷘X#s&"C%M{D=@=r<4iE_EG0۸Ĩ*:MX٪1Y9ie({,5\1d1ͳQ^xbIQu6AG\kP;KurkM ֏)b mI ~I꺁AtSX}=Z"=,?ړ՝>6S7C#P&ػ۝܁ 0)": ՚⾊ɌA{m?"G78aU@ufc/q Zkiio)m>jvJ?! .an4hJzwpPMaU$;\z6OSRn^?@37AوjPXc[NH8S5 5hthG&b{7Ě:=_*>O)X.G@c 4ΖFVYUwL L%>ϋCh!~on.TE`О5~~YU*kxSr ևXyějQ @Ex$o+- qMz!g#` كɍD}ScgfbYgfzzWj/{Qq30|D:β R73CmRWdZ/~2vf^s LDgMa6 Dð{$g.'C%l;N\pDcfd|T:e*WhƻYQfn4@nXxOj|{BW_.tlGb FXևOaW= Rүgp7cd;3AOBߑ!dfQ3-!fn*}իW =%49/i DU-S7U{CX6?$'T5b/扥רjt-IIa ?F,sd⇟SfZoF&;[|.2n];s KW w#պTeDk5p6^*Xfj%~*̺RQ$R^ܴ:tŹL+2(О 'I }11Z,Ŵ6ia[Iznp=$/>'E'`{|(┕ Bap^2rig_ \L% HGU[0$l ,z*AXK )=8[OIv0WTm|62>x6\zd= OU vXuD&kQeј&DBM,51~{Q\#9.tIIo S>/I8z3eEϑH]H?60 _ii):ۣgxlh^s*셽\^AnL<_ BPO e/e)b$LKf2wItΩtD[M_|U4ˢE$Oy_Qɚ*/4j$@S1/xO&i@AV<OOw3%]bݮ'u3B+-W ʁtJK:_NmN f"W 4S zW8^Lg8!Ce&Dr!Mi#&Y#dK/^jKk E4b >YQh`rٗ[ݤ1+a˜6~_`P HQ)/zM=yU4~b-6aoY}\б-Je{6,J}nm4aN7dbE?nO9 3LRM{Qb{YiF7Z iC=ָ+f]{&DkL UR,g' hb~`٥%RE 'BrkiCOM' B' Gh)9M:,VdxŤsM~JDŽaxMXnoYW!?L҃s MaAJ~i ) t[Fr[C@ґ㛄)kM,&͆Tu*˿OoW w8"ŨBPuΙ3,vvn=7tQO^q '|bHU|XP<Off;-+ҞA9)wf /L$;*k;`wbݎ)''kJ4: KpĜzWO_1ϛUyK1vWyr{MRsn\qRk'yR~"Ε{Ă"jCÛL%9HvvNN~$`|T f%\{ X o3%6y݂ʎr:kTSX.`)?;ࢶ DmF YEj-%UU_G,Lٍlztט[k*A7WK )9aIdwЮ}3V߯B+Zqn!NV|lvK2?қ&jsg; |ψ2Kz~ҥBu0R8{ݼ? r29ev!7B(u\0{_-W'1ƿv廡!T 3i!:Â5|XσWǗpJRPߧ#MF2cM}-(LI:= hG֐lߺs…hKۑ1UPSΕ4%7j{n{N8 :埧Ѱ ۽.$VT*K T> mzSw-=cy565yԟF$Vd#Q_Ak?Z{A#kSHa6cr aZqR @6oUN{J5{2]m9ۂ7 [RHʽT!i.,dKLzYU잽hYCH~jqtxhJ7*." ƌDn>'{xaFKI R: D'ӕڍLDy }kB#6!¢9к‰bNR- !=8o2Z9JGo[ݕR@ɍ1İsD_$cwZJ-蜑a5 XQ[,+^r}j ӳu#:e%թ䪭 G=S4P)"A16pOI*6ɅaGdЁ5BU_#YuheJ H:qsdQ;CEroO JU\_t"JbNWzt6IZiۄ7D)#~yJ>#Gd9vL|LM@RހbѶɤ??MK&kAZC*` ̦4B̙\f (B~!;S\ wf|„&Χ. эҁڲLԳ%MwAPKdh !ag4 S+IpЎ.NWHʟ@l:fz;(C`0H;~ g~;A9oIb_a~+Š)e{[I{m*\ _^8>Of6wj>A gg5ÅCݺ1::ed iy0 nXcQq7*^LǡM0)Qȳ޴?mUe͍X]@2b6%$!}qWJq*9Lj4e~Uc~4OkOd[- ?"XsVsR8=>EZJ3N#[](4 꺮th^Kviن˳-Då_*;>%6ƗKP+LfP3OqzVge;e2*4}fޞq&w~zNyGF&;Peg=f8 ۂ]b -Yai"e}-q^~_~1ODP`% At<GߊR]N ݒLnm_-%8 @%3ٺk}PD5}}O[!XLfX|ٞiݐpGԀJ+sք^LW*."Qc#d EXel-S.8kcUkQnACy?c6Dλsi0'bf8m-j,_ {l+7%аs;\SLK , Ǿ<`Nk sJ@p2ToAY&M^U]L!rR5%+ȝpvص^ߪlx4hx2!'9>Kq~Y9ySLNo N4gtޙCG7\;>ɨ8 O}uąN N8Uc"JhVLUKxɿcxaÇ,ԁ:r)h2 57/g7ǒƑ:vP֋>9H|w1YJ iڇo2I0yU]ғKf6<*SY#w%=]VXz}y[pkE6,Ѽ*%^HbKZYzˠ֎ JLd3]f[ KcLҒ\0&Y~i3LybDJ@K6<)Do9Koqx5DG5 MӚEꖏd.[ <ѹ6As"wsOF='ȧ ~7毟3$66pM QgڟHh#W@>ie qR]f$&k6TlS=7\"{M)7ʫwqBuq+&HBQ^F!`sPu\9SKQo5/f: e.z}GKB]F[C RnI|K˂xfrǮ!y5X⺈^D)l LX JGE^YRz-v r},EdHumΝv3SJ5/iH_jR(TЈkSZ-67"1<>ZȄ6J uùݚnCG촂~VA 0:1x3R#GyugfO'#x6RQ>R.ާIt|@'ѫވ@.aWD% zV{Ýu}i׽a!apE'0$LO N-A]G>9Zϭ[fԌ ]z]oάH-R5f _ڌkع]aj|yWl6!`XHf8~_dpRTrr۽(]ӈ,Piw_~Vl rG^R^WDRJ׉ b>>kĊ: uW2\}~lec4; MGD뇉<9hCѪSSX:,K/[Gq\lNKPHP!rCT^%= =IBAb.J298$e?; 3Fvgou䱵P91}+& $aZAEu7==V ?aPVH?3/b$ƪAvcy}y]^!zy8͠? u}(ԚRM/^a V:wx-Bkr'l~;)əCy?(pe&x1DV]Z*b$~hVxP%niF:E!.?Ă(innP⪛jr[(Ek0xqdLߠcSxj>Z)&AU;ڊWwIT'~*`!!:x9T-QV\ׂ8x3Ji);%aonS֭L1tobN ]ZksF([zTYV l_3;I&Lb!'Wj$Y) [`WmA|Z=%mbвW"M(RUb*EVxCԼ3qql ]Ǚd{ s06< $C>GZC̎sXۆBpy~2O] K$^4sQOEKr~AaDbz咉!G歱$r3N-o=f}of#fr /\h,CG1lPJ(KZEʟSR}Fiޢ^nv_DI6s:n0^s 1 .TxS9sdo:B#jQ%_؝O2ˢ}Cnq=> ? {6$ fQ^'ϧ3l}2k{ň9]Wz9N1LJAM{44rRȃOu,±:OI4%$85Ɩ.ma=I^\4yg $4l=*&oJms„XɟR8#3D0cF5TnmEAzp&{:.{p'[$񣧋=JMۊ. aqؖ-QoꩅH pN Ō4,cSNPaS3Y97#e2_x3M aA kUfYR$ccԖ T޼X0p"zamQ{$0%o"G&9ϛg{LEr=ve^fܡVhzb@vr9*kꛯS? #|S<t| ,dtѱ]2U(F'OdQS.U#V1 PF!)[gZܻD=0*^Z_?=z`}8^w `bJdfCCX@,!EW<5qн>]Eo9^sHNc vR 97F 3(&R+N}LbW4}*m0Vj+ozәWKp^& zv+SuZ$mS2d?%8G-7w¤iG2#Z)tfd/R$B6\ᬣ9iLϦD~{!5d0Q4a}sc& hP$X&iA9٦ $UEL_nUJdaC`ez5E /ԑ0:Bwrn3FE_6.-_g!O"¹93iiF\fɢvFSvޯBLY?C;AB[Um8F\(\EBik;g[%Ԃ0TN2W)+Uqھb Squ~^QݍJ]ƿ]S}29HAOR[ U1o>bRwug9Q,Ğbܴ}v3gwk;mgեfitdF@VZGMu]ץ9f)HqсQhQ"CsYguS] ݔW 'UC";h`# *o9]KK, 2L9{GD%$RI I=kиZ85i ,k@Zzsž)"ӣ1 Qn400D-LtjSɈM3F<1p}MR2<;ciblkÁW xrfsA0eUM,Q,2Bc}'^jq GM05!T 6J8@iIm+At}Ѯ$!ct% 7 ql2 ,&*6$u/Cˆ$)Ao7y~ڭϒt12!!Ҕ*]+7/V-IWXF0ROXw94ؿS$0@$(^ ='3Q}{jgω0 >n ]*h_8XDHG5'=h[TJ\-鈨$6žIDQa"ơ-E"M(:P ?4J` 'P`{0$|*xǏ{MtbdRa^b'yg]yi3z-9O?ptuD7&XqFu~*Tt^e}%ڔKf4*Y& j-!{=nvو+HXePC!&K2T1Y8fBv2%tOʥMŏf .ڬ|G5E/9%X$}{1GjzY|[;0Q6T}R Åf=0#U 0CCV V0BZ&R3 U`JZ꡻;*= =쿎>K)t=Ϳs` ;޷ҧ`= Mu͗ r\ Lp ]v݃K$^u͝IիO},,dmw>6An f<UGe6l!dLLEnm؀EhMu0sjlS$% 4H8m (l!H4rX~A%JO(K'BAޓ/RW 4@bc8>Oa\LD9Q01Qgy#^o@ј*;Nv%fj-1;gAGEW]q,%1qXlWK#qO~ه,-zWqQRҰ >.t˪b^?+_]6O} R|^jqPZH-x3ӣ9fnD]04-ITEªDLjB,).F3~ j&۪==FhW1~XF)GwFI[Qj3C ~nwEph{~eZ3( vL6Z lFam#kuLu,'iauj.5q[)"{o%v4!_aݓ%E'[ \`P ZU&_Q ‚[Ymlb'&cX:M FYfAZWڥܪ ~BC6 ;nM#KN=8JfE KGA\-z~Q͍h .W ^ɨ2խɏ\( >f#Wf?&V9~ݫuv6Q|(Wqg̻ ^].@ꧽ>!Wb b  2!iW%,Nk VVU~vR12y.v;+-zy5 !(Q rOK0VY\85HOz"6-'CZ wUAs;4E bwF &@K:Z^IBf2ai= k2mVJusi}Ý 2}QK[1ذO3ERLJvSLMpo|7 p8dV<r 㐖b!9(:T1|ݓ~Ao +b&Z+lQkA+IKETibH-D2jE=V߄ZC#Bs#( %6WDMx"{˱)U<à J^m]XPώ9; v%QVRoApJt|bx++i'+D Ovyg&ϱB}Ax>6w`wwFrxޔXaE6 g=岾֪P]>vU)8*Ѷ!$nA2 \1kM२|]M&Qwm}@)aQj. cAt%8gPPp~:ְ~}_0R-B˵[H0*cf[I1z{n &UQ":=ƓMN=Y"`_S}nAOmN>@=|\SkLBܮо-'rև@{|897ۏƢkŪƦ-CY1Ӵ@oHT1*$(RddE_$4O 4Ӎ4M4KZz)=\ujFL$CHnN99%(l2e&Bm@( hg=R(ҽ{l[$~OQ!-@i6t}JG𔅁VKG%ϹכP|g^ѩbCJy%4ەUutIqYKjq"9OpU l'n*Hps$T6m^ѣ{vJ` Ἷ?Ҵ/PMս;3M)'ߵU.Nu)Dt7M,jgSP!t~?^PJF*S%(TW _X uaf!pL}1 /Ӡ@Vw]yۖ#N_dVLA&mQ2Q4'K|$V.y}`KIs&9qecG`WQ?j^cN%:&bo!~'6Wlexiy)qk0.6!-GG\p3#-7ONɾrpn):E ky}R%X /zNq/l%e5n4 . oT; FR]Kro9v%ʉ&Q_Al;м Ȱuҭ7+oaW6-~A"lAS"8Tʭ{[/DaD f}n1rgjgMDUrnvR w,ʓVШm0s r>Dq2?"r3#7hBaP%7lLHtp5X;Lr0VeNt\ sb;)qC6‘|t]PqMF +b .HrrzG>uf́C6>*pi4]*D,ң@MX2M_C*+$geҞ2rМZ8=?<g2Ecau'֠ i~^ykP}U,A2Ae읤9L>wLM+-dq^-ߣ)3!HzhkX#.f ޡtuz&LxZ!&mAvCG:Cph/ ^z9xjq72X7ЏDnhD7? jPIdudKp>Wkd9dE +b+;Pg'ա 9A(PXxլ$yQ}l v*zhv38И2`T" :[ }1U|(@0cw\[c 9}#?APy?讲 so}P" εH57j}/8B5ns/ajGIV Spl(Z4!ԕ+0^ŋ#_;),ytW[)C8'VU=H0%-M-Hۛ2w`z p _pB aT-Z ~r8qә+Y赱$7S-MF&Dc!M}?Q|$鬟ݍ4h!ڤ=÷S;6cZzk:M ߢ=j6Vsk0K͔D+)h~?@mpmNToMS(PA͖E˂?KBVa4& C=RfQ{YެpR@ޙZ tuE[b]SOl4nSOPWLt t["@d^_]3RσLR s^ZH(5qxUx(v~t{[\N.)?FkJ2!v@.$6GAR!/6?% M9xk`)JAB^c]qnC'PFw[O0ѱ7MBg־ j&*6^и|eP3Cǫ.S< iإ ] Nzqpen2t+qȮy.LdLIx oVf=L:"H}ّhUzG1x)kqsw1~?m\g*%WW ^^~9}=NDxN#rMh4[K^3K.j"y*JH"$E42gEr+S^C5>F,$ߋWK. =_98:\C;I{2(Nj54:֐AMͥe'9zʁ]4.&t'\w! !|ס(i½F"ƈzP,RBF;_2Wbё&+8gkXH_{q'*yxySQEDbZqdd~UoA&c NJF/`@A8X ekxckt5 JCف 6n~-$+0&Jȥ?H%|z"mu%&~}8yo^JQvxI;i[^a8us{^ `+v"˜ZZ174m 05;\M@.4\~*75U~ ej&iU`8 2)8ȓ$[ 7ī|.B S3鼤QJ@=Db28%*#'0{|&WR?1(Gw47sWBx7'xu#''e_VYr"UkTT*s3+"_RJ_o)><12ϙcEU6 G|x̮2|M%VW5`s;hbGA=O+sJ˵vQK4b1dcA#P&HBm/rͦ!#`"&}fTb51Чٍmʌd'?(Pۜ!5Vyu%ǩ2dSRHA,UJ1+#XmHli]&<~[CőXY )zE8+d A|ȅ& ¸P_1(~ A:5`08 MDM*m;1É}!iǜ9 dJ| ~oaA:̢gݻW^ #\ӊ60CUY#AMH &,Kez]-:ezoo$JiG 󐻪2">HzbdR]IrDqQԬG\W慠=?W)\f(lctrops۪Xˬ[ EwԢ_L#]0O{h|` VG|eⒺE'⑀C|azx%K-Zm ώg)|k*/6덊{/n`6!ASW)i/<Ǟٻ{*#v%*CxeeoRzם)u#zjBD 8ϒ"/^HV;ķ\SyY%J OShM>;.Ba4"ke9.C4jՠBXt~bNHHV<how=N%e857G܉=h$k⢭A,qJe-Map.,@k0AG~8q+iHݾN,HXQD,JqR$T{i΂N ,{eCeOˋvtVlqnZL4ğ}#_S{X"pR2 moqՎhdH[sb1y:ŨK2Y_?Dtk1<rM}K C]@KW䂁9jT`Rl ]e9;*`>>Nl Ĩ_s2u9<. (^Mgtv3_re eޯXJa;%y%e :IPtأ s߶6G+D }PM쥭X+ϷOXbNK!VӇ9)_5C,K~\xT*$犉\ 2m'@֙:5ǘsJj+-<}d2Ɋ7RRoIm+ ]]pF,?3Ǟq&N㼓,yMstp'5J1rF{{φsr0XISVڴ/AYG9BK;BnKW*H!\[;\;Vo,󡇶ϔ EOș,Q$}JTs2H̹+WN,zp ˰'WJQb?:{Gn+USpVwߑ ^bduŔ^lH}-4 aQW= 73t\5ڙ"/%A,e{({QC*0A jELL(sTR.c74kmUt0 hH9Z?q`*HVEd?i`5L03_V"} ;-F5_\( +މе1w[{x#~r9_9'?ʇWGC*P}bOgM1cᴆ79)Qps%>5Kx ۀmt@ SP;1>Khvk-0^ZKG0ѪцK@pRђe@/c:S =k&_*{s? Gљtʟ?z?B4<-A uF>}V%;N;%n@])bT Yxsl^"K|^ sV\PoHUvwSL(~z Ka=6WU@qj9 B(.$` cDw'3ʱӴa,;z˦bM<`tP9QTrBN\j]86kjw0ts8I% 8&) `+IK8`^xYD*#K @TTd">TgCQǜgWsA-ۛbq0pFҾmTi=c@|:^;Bf'8 Sqׂ zy"~%>l$E@i{9"q}s)bv'2>-c紸$OcN֫*[>ܣ kc9ڏ%[톁ceUϢ1g'TY|EyNl_k2lYFNCbRN 94㲥kR&-М͖p$͉,Mul+cz" v;Kj+]7޷ѹY)rQ Pz@fYz&Zu%ɶ~/2 e=r AIlO?v|}#4hgn8x.v0c Z6w؜&d=<,/O^/Eƣ)%[-dnQ5Jy@Vi@ӵ*0%Wр6ɮ՝ȁ^orOY ʜ:hg1=^;hi}#NcOK0E(܃Bnϵ=ݞ9ݮ=@i{Ǩ/ hl]rW-^C=b)>KʝqMlMYj;> [*[*; S*֔Mj9Pucs{vME^ ũo!+9U GAazO&1ޣ&ߒņ+/%1ު 7{%;Z8\ϛ| ;(UJO??=ECج:Kyy>.S5qU&tǷqQ:bּ駭)DRFDiiޙdtGhиECL7G33ɯMqۅeW>v|eOߧTfeRH M'2l )ULfl6.K"nS +1VGB,͔rvo%nߋ_,V[ jKwԈ)ө^ b1=Fe d08EWq"TRgVmO{~O_kURX#e@*$w+ `gtĄ!7q|>|Ǟd{v_9WWBJtEyl7~jG~>4dE5yu}7,.ո.KSc\:".Q'{uY  .?C$>>Ŭ[U {}9č2ډ;F5 W G G'ڃeUX>Pgz!Nsղ%M7CܞP[>BW0E}i =셎Bp3F` v@j暊[ȱB^IU=Aş a1.Z6oj{;.*-,/: w=OYCrtzhARВpj~'Xqp,Kzbڠg}THJ%ÚsB JhZŋaͲ6DQ^>u!RK;-N{] [71P*ulxH:50cJb"!;f7L- Lj.,ƛbq?(i D"e{w7qA;̏;TA=)y4E]޳]4ɿf뺏n6g)HΫ]t8K$tTKd8 w#LULY*i3lؤZ6 -Lj1NſԤbĥےj|RMsBs3ۦQ)&'-}wdV;V! h*̏erY_}d8KX4:kg<^!A{D&/O6P t=^,g rBP*{OT6lW!Prl YZ