ploop-1.13-1> H HtxHFU,}  Զ^M<4cƒ^Ardu2,JÑN56d6de021249f46c153a4ead2efc08cba28be894 8PQ>1"dELʈFU,}  Զ[=[9I)IeRpLDP|KiӕQ->8[I?[9d   `dtx       8 o (89:YFXiGXHXIXXXYX\X]X^Y bY3dYeYfYkYlYtYuYvZwZxZyZz[${[4Cploop1.131ploop toolsThis package contains tools to work with ploop devices and images.U,}rhel5-64-build*GNU GPLApplications/Systemlinuxx86_64A 큤U,}U,}U,}U,}U,}5a5021a4760b56e87702ba39f7f18d7104259c52f2d97349c2d66a096585d2cba59065f1d8be4e26a4865d6df4ca49d610731549f1895f35362d691048623e5b007ac8088edcaf837182d0a8e3bfae77rootrootrootrootrootrootrootrootrootrootploop-1.13-1.src.rpmploop@@@@@@@@@JJ@/bin/shlibc.so.6()(64bit)libc.so.6(GLIBC_2.2.5)(64bit)libc.so.6(GLIBC_2.3)(64bit)libc.so.6(GLIBC_2.3.4)(64bit)libc.so.6(GLIBC_2.4)(64bit)libploop.so.1()(64bit)libpthread.so.0()(64bit)libpthread.so.0(GLIBC_2.2.5)(64bit)ploop-librpmlib(CompressedFileNames)rpmlib(PayloadFilesHavePrefix)rtld(GNU_HASH)1.13-13.0.4-14.0-14.4.2U+[`T`T\S8`S 1.13-1Kir Kolyshkin 1.12.2-1Kir Kolyshkin 1.12.1-1Kir Kolyshkin 1.12-1Kir Kolyshkin 1.11-1Kir Kolyshkin 1.10-1Kir Kolyshkin 1.9-1Kir Kolyshkin 1.8-1Kir Kolyshkin 1.7.1-1Kir Kolyshkin 1.7-1Kir Kolyshkin 1.6-1Kir Kolyshkin 1.5-1Kir Kolyshkin 1.4-1Kir Kolyshkin 1.3-1Kir Kolyshkin 1.2-1Kir Kolyshkin 1.1-1Kir Kolyshkin 1.0-1- New functionality: -- ploop_merge_snapshot(): add merge to new delta ability -- Logging to PLOOP_LOG_FILE (if variable is defined during compilation) -- ploop restore-descriptor: create dd.xml by image (single image only) -- ploop replace: add -k, --keep-name to keep the replaced delta file name -- ploop replace: implement offline replace -- snapshot-delete: introduce specific SYSEXIT_NOSNAP error -- Alternative (incompatible) implementation of ploop copy (C and Python API) - Fixes: -- ploop_replace_image(): fix wrt level -- ploop grow: update size in DiskDescriptor.xml after growing -- normalize_image_name(): fix for a corner case -- ploop_replace_image(): always unlock dd.xml -- {mount,umount}.ploop: fixes for filenames with spaces, tabs etc. -- umount.ploop: fix mtab removal (#3164) -- umount.ploop: fix for file names with a semicolon -- scripts/mount.ploop: don't hardcode paths to modprobe and readlink -- ploop_umount(): don't return -1, use SYSEXIT_* -- ploop_merge_snapshot_by_guid(): fix error message, don't print (null) -- ploop tsnapshot(): fix usage -- grow_lower_delta(): fix a memory leak -- ploop_merge_snapshot_by_guid(): fix error message -- check_snapshot_mount(): add is_device_inuse() check - Improvements: -- print_sys_block_ploop(): print less info -- Remove delta_fops abstraction layer -- ploop merge: obsolete/disable form with DD.xml (use snapshot-merge) -- find_level_by_delta(): rework/improve -- ploop_switch_snapshot(): rm non-const cast -- local_delta_open(): make first arg const -- [style] ploop_replace_image: reuse oldfile var -- merge_image(): document the function -- ploop_di_merge_image(): remove last argument -- Rename get_child_by_uuid() to find_child_by_guid() -- ploop_merge_snapshot_by_guid(): untangle MERGE_WITH_{PARENT,CHILD} mess -- ploop_merge_snapshot_by_guid: fix ending message -- Rework check_snapshot_mount() -- ploop_di_merge_image: fix error messages -- ploop_merge_snapshot_by_guid(): fix error message - Documentation: -- ploop tool: usage formatting fixes -- ploop(8): expand description of snapshot-merge - Build system: -- ploop.spec: no perms for symlink -- Makefile.inc: add VERSION and RELEASE vars to specify package version -- setver.sh: modify to use VERSION/RELEASE from Makefile.inc -- setver.sh: add -o, --oldpackage flag- Fixes: -- ploop balloon discard: fix wrt 042stab10x kernel (#3156) -- ploop_merge_snapshot_by_guid: fix offline merge with raw base image -- reread_part(): repeat ioctl if EBUSY (#3081) - Improvements: -- check_mount_restrictions(): check for all images -- ploop check dd.xml: lock dd -- ploop check dd.xml: skip check if ploop is used -- check_deltas(): read-only check for non-top deltas- Fixes: -- ploop copy send: fix a race that could result in image corruption -- resize: fix resize working on an older (pre 042stab092.1) kernel - Improvements: -- ploop mount: warn if host filesystem uses data=writeback (#3030) -- snapshot-switch: don't show ENOENT remove error -- ploop_is_large_disk_supported(): check ploop module first- New functionality: -- ploop copy: implement two-way protocol -- ploop copy send: implement async read/send -- ploop copy send: add profiling -- delete_snapshot(): handle snapshots with multiple refs -- tune_fs(): use EXT4_IOC_SET_RSV_BLOCKS if available -- Introduce ploop_get_max_size() -- Introduce ploop_copy_{send,receive}, obsoleting ploop_{send,receive} -- Introduce ploop_create_dd() -- ploop info: add -d to show ploop device -- ploop_check(): open image RO, reopen RW later -- check_and_repair_sparse(): reopen image rw if needed - Fixes: -- ploop copy: fix open_mount_point err handling -- ploop copy: improve fd checks -- ploop_store_diskdescriptor: fsync DiskDescriptor.xml upon writing -- ploop_resize_image(): handle get_mount_dir() error -- ploop_resize_image: auto-mount fs -- do_delete_snapshot: fix wrt temp snapshot uuid -- ploop_switch_snapshot_ex(): don't return 0 if guid_old is bad -- do_delete_snapshot: deny delete top delta in case parent snapshot is temp -- merge_temporary_snapshots: fix infinite loop -- ploop_switch_snapshot_ex: fixed case with PLOOP_SNAP_SKIP_TOPDELTA_CREATE -- ploop_delete_snapshot: fix for temp snapshot -- create_snapshot: clear stale top delta inuse flag -- e2fsck: make it quiet- New functionality and important changes: -- support for 4K sector size (including GPT conversion) -- ploop replace -- temp snapshots support (ploop tsnapshot, ploop_create_temporary_snapshot()) -- ploop copy: implement fdatasync before freeze (improves CT frozen time) -- New DiskDescriptor.xml read API (ploop_*_dd()) -- Obsolete *_diskdescriptor() calls -- Obsolete ploop_get_base_delta_uuid() -- ploop_log(): implement subsecond timestamps (with verbosity >= 4) -- add ploop_is_mounted() -- ploop snapshot-list: add snapshot mode (-s) -- ploop check dd.xml: add -u UUID option -- ploop mount: remove -u base feature -- ploop tool: add -v option to set verbosity - Fixes: -- skip max fs size check on snapshot delta creation -- ploop_resize_image: resize up to end of device -- ploop_delete_top_delta(): fix wrt top_guid -- ploop_read_diskdescriptor(): fix get_basedir() len argument -- check_and_repair_sparse: handle EOF properly (#2897) -- ploop_resize_image: add missing gpt size sync -- ploop snapshot-merge/delete: deny snapshot deleting if mounted (#2887) -- grow_lower_delta(): fix a memory leak -- ploop check: fix -b option parsing -- get_partition_device_name(): fix chmod argument -- fix alignment on GPT partition resize -- fix GPT partition alignment on ploop init - Improvements: -- ploop_resize_image: enhanced inflate balloon to max size logic -- tools: add {} to specified UUID if necessary -- check_and_repair_sparse(): log filefrag output -- print_sys_block_ploop(): speed up -- ploop check: try to repair non-top deltas if they can be opened r/w -- e2fsck: return fsck exit code to caller -- make_fs(): add -i to mkfs -- fsync_safe(): use SYSEXIT_FSYNC -- Fix uuid strings size, use define - Documentation: -- ploop snapshot-list: fix and update usage -- ploop copy: fix usage -- ploop(8): document snapshot-list -s option -- ploop(8): document ploop replace - Build system: -- Makefile.inc: fix dpkg-architecture handling (#2877) -- Makefile: add ability to add local rules -- gensym.sh: better usage and error diag -- gensym.sh: add run mode- New functionality: -- Added check for and repair of sparse images -- ploop check: long options support -- ploop check: add --raw, --repair-sparse -- ploop-check: add -b BLOCKSIZE argument -- ploop-check: accept DiskDescriptor.xml argument -- ploop umount -d: allow to specify partition device (#2788) -- mount.ploop: implement -v and -f options, as per mount(8) -- umount.ploop: add -n option (ignored) -- mount.ploop: add -s (ignored) and -* (reported as error) -- Added ploop info -s -- ploop init: use v2 format by default -- ploop init: create ext4 by default - Fixes: -- ploop_get_devs(): fix snprintf usage -- ploop_global_lock(): create lockdir if not exist (#2767) -- ploop_grow_delta_offline(): Fix uninitialized struct -- ploop_ioff_to_sec(): fix for v2 -- lib/ploop.h: include sys/syscall.h (Debian #728173) -- umount.ploop: fixed (#2788) -- get_image_param(): added online (from sysfs) and offline (from image) cases -- make_fs(): turn off periodic fs checks (#2769) -- ploop_store_diskdescriptor(): check rename() -- ploop_store_diskdescriptor(): don't return -1 -- resize_gpt_partition(): check fsync() -- ploop_balloon_change_size(): don't pass -1 to close() -- ploop_grow_image(): fix an error check -- Don't ignore chmod() failures -- print_output(): fix output -- make_fs(): fix max_online_resize type overflow -- do_umount(): fix diagnostic lsof verbose level -- plooptool_stat(): close file descriptors -- ploop convert -f: do not return SYSEXIT_PLOOPFMT -- ploop check: fix exit codes -- make_fs(): create ext4 fs with 128M journal - Improvements: -- Support RHEL5/e4fsutils (tune4fs, dumpe4fs) (#2812) -- do_lock(): open file in read/write mode (#2730) -- ploop_send: use ioctl_device for PLOOP_IOC_SYNC -- use access() not stat() where possible -- umount.ploop: improve mtab handling -- mount.ploop: use case in option parsing -- {mount,umount}.ploop: don't hardcore ploop path -- ploop-check.c: rename uppercased functions -- ploop snapshot-list usage: fit to 80 cols -- fsck: use fsck.ext4 not e2fsck (#2812) -- check_size(): limit max ploop size to 16T -- ploop_resize_image(): fail if umount failed -- print_output(): improve output -- ploop_mount(): fix/improve error message -- dumpe2fs(): don't hardcode path to dumpe2fs -- print_output(): use our own default PATH -- do_umount(): refactor and improve -- do_umount(): eliminate extra 'lsof' call on EBUSY -- do_umount(): don't call lsof again if not found -- print_output(): check return from pclose() -- print_output(): return exit code from command -- Fix some wrongly used exit codes -- Remove unused exit codes - Documentation: -- ploop(8): document check, balloon discard, info, list, copy commands -- ploop(8): describe exit codes -- ploop(8): better resize description -- ploop(8): fix ploop umount -d description -- ploop(8): fix ploop mount -d description -- ploop(8): improve convert description -- ploop(8): add missing OPTIONS section -- ploop(8): make IMAGE FORMATS a subheader -- ploop(8): other small fixes and improvements -- ploop usage: improve -- ploop usage: update ploop check synopsys -- ploop init: fix/improve usage -- ploop usage: fix mount/umount/resize - Build system: -- ploop.spec: require -lib of the same release -- ploop.spec: require lsof and findutils -- Makefile.inc: add -Wformat-security -- Makefile.inc: proper LIBDIR for Debian case -- Makefile.inc: add CPPFLAGS to CFLAGS -- Makefile.inc: prepend, not append, debug CFLAGS -- tools/Makefile: simplify SOURCES define -- setver.sh: introduce build id -- setver.sh: use getopt -- Remove stand-alone binaries: ploop-check, ploop-grow, ploop-merge, ploop-stat, ploop-copy -- Makefile: add Coverity generation logic- New functionality: -- libploop.so: implement SONAME and versioning -- Introduce ploop_get_devs() to get all mounted devices per dd.xml - Fixes: -- make_fs(): reserve max possible GDT block for online resize -- do_lock(): set FD_CLOEXEC explicitly on lock fd -- fix raw image creation (broken in ploop 1.8) -- return SYSEXIT_SYS on ploop_find_dev_by_uuid() failure -- ploop.spec: run ldconfig on install/uninstall - Improvements: -- Display mount data in error message on mount() failure -- dynload.h: pad the struct ploop_functions to 64 pointers -- gensym.sh: add code to check sizeof(struct ploop_function) -- etc/Makefile: ploop.conf should not be executable -- Makefile.inc: support Debian multiarch -- Makefile: add distclean target -- Makefile cleanups- New functionality: -- convert from/to v1/v2 ploop version format (ploop convert -v) -- ploop_mount_fs(): add option to run fsck -- ploop mount: add -F to run fsck for inner fs -- export ploop_is_large_disk_supported() -- add/export ploop_get_spec() -- ploop fsck: rename to ploop check - Fixes: -- resize_gpt_partition(): skip if there is no partition -- switch snapshot: read parameters from image we are to switch to -- ploop create: error out if DiskDescriptor.xml exists -- e2fsck(): properly check e2fsck binary exit code -- ploop grow: check size wrt format -- tools/Makefile: don't strip binaries on install -- ploop init: fix an error message - Improvements: -- create_image(): remove useless assignment -- number of log messages improved/fixed -- tools parse_size(): print error -- tools/ploop: allow T suffix for blockdev size -- ploop_grow_delta_offline(): use delta.version -- tune_fs(): drop absolute path to tune2fs - Documentation: -- ploop init usage: add -v VERSION -- ploop --help: rm -P from ploop mount syntax -- ploop(8): add -v for ploop init -- ploop(8): add ploop resize to SYNOPSYS -- ploop(8): add ploop convert -- ploop(8): add -F for ploop mount- Fixes: -- default image format is V1, unless specified explicitly -- tmpfiles.d file added for /var/lock/ploop (#2493) -- fixed creating strange directories under ./ (#2623)- New functionality: -- Large ploop image format support --- Now image size limit is 64 TB (was 2TB) --- Kernel >= 042stab078 is required -- Move ploop_grow* functions from tools to lib -- ploop grow: add DiskDescriptor.xml support -- ploop init, ploop_create_image(): add FS blocksize parameter - Improvements: -- make_fs(): create ext4fs with lazy_itable_init --- 3x smaller size and 3x faster creation time for 20GB image -- lib/ploop.h: "unexport" some internal functions -- Use /proc/self/mountinfo to get mount point by device -- More clear errors on parsing DiskDescriptor.xml -- print_output(): generalize print_lsof(), improve -- add_delta(): print more diags if EBUSY -- extend_delta_array(): print errors, return SYSEXIT_* -- run_prg(): print error if execvp() failed -- lib/balloon.c: print file name in an error message -- Introduce and use p_memalign(), fix errno handling -- Improvements and fixes to ploop_grow_*() to be used from library -- ploop_read_disk_descr(): set *di to NULL in case of error -- ploop_find_dev(): always assume ploop cookie is supported -- resize_fs(): try harder to find resize2fs binary -- Makefile.inc: ability to add CFLAGS - Fixes: -- lib/lock.c: create_file(): make sure dir exists (#2493, #2597) -- lib/fsutils.c: use ploop_execvp, drop absolute paths to binaries (#2595) -- ploop_log(): fix loglevel checking for file logging -- ploop_snapshot_switch_param: guids are const -- Recreate ploopXpY devices on ploop mount -- ploop_find_dev(): treat ENODEV as ENOENT on /sys reads -- use basename() to strip device from path -- ploop list: check for extra arguments -- ploop balloon: fix -f option processing -- Fixed lots of memory leaks, mostly on error paths -- open_delta(): simplify error handling -- Fixes for other issues big and small, reported by Coverity- New functionality: - * offline image shrink support - * tools: added snapshot-list functionality - * extend switch snapshot functionality: ploop_switch_snapshot_ex() - * ploop.spec: disable udev iosched config for ploop devices - * ploop list: added functionality to list mount points - Bug fixes: - * ploop_mount_fs(): use mount_data for first mount - * ploop_mount(): do not allow to use ploop on fs w/o extents - * ploop_{create,resize}_image(): fixed size checks and rounding - * ploop_create_image(): fix memory leak on error path - * ploop_get_info(): fix reported disk size after switching snapshot - * ploop_get_info(): fix when ploop device is not mounted - * ploop_{umount,resize}_image() and many others: do not return -1 - Improvements: - * much faster resize when using resize2fs with EXT4_IOC_RESIZE_FS support - * ploop discard: add cancellation support - * ploop_resize_image(): use real blocksize - * parse_xml(): deny processing DiskDescriptor.xml with several - * do not auto-generate dynload.h, instead check if it's uptodate - * create_image(): display error message for incorrect parameters case - * introduce/use SYSEXIT_DEV_NOT_MOUNTED and SYSEXIT_FSCK errors - * alloc_diskdescriptor(): log error if calloc() fails - * ploop.spec: require util-linux, e2fsprogs etc. - * ploop.spec: require libs of the proper arch- NOTE: this version requires vzkernel >= 2.6.32-042stab061.1 - New functionality: - * switch from old /dev/ploop/ symlink-based to new kernel cookie registration - * snapshots: switch to schema with constant top delta uuid - * use /proc/vz/ploop_minor based interface to get free minor - * if ploop is in maintenance state, try to complete it before doing snapshot/resize/merge/mount/umount/copy operation - * ploop mount: use in-kernel I/O module autodetection - * ploop balloon discard: new iterative compacting support - * ploop balloon discard: implement --stat - * ploop balloon discard: implement --automount - * ploop balloon discard: cancellation support - * ploop balloon: allow DiskDescriptor.xml argument - * ploop umount: implement -c component_name - * ploop list: implement - * /sbin/mount.ploop: do load ploop modules - Bug fixes: - * do not crash on empty DiskDescriptor.xml (libxml2 workaround) - * ploop convert: fix converting from expanded to raw - * ploop copy: fixed check for opened fd - * ploop copy: do not leak opened fds - * ploop create: fix gpt partition creation to be 4096 aligned - * ploop create, resize: round up size to be cluster aligned - * tools: few exit code fixes - * multiple usage, log and error message fixes - Improvements: - * ploop mount: check that mount point is a directory - * ploop umount: reduce retry count from 60 to 6 - * ploop umount: print lsof output in case of failed umount - * ploop create: for prealloc image, use ftruncate if fallocate not supported - * ploop create, resize: add check for correct block device size - * scripts: de-bash-ify - * assorted code refactoring, cleanups and nitpicks - Library API changes: - * add ploop_resolve_functions() to aid in dynamic library loading - * introduce optimized ploop_get_info_by_descr(), remove ploop_get_info() - * replace ploop_{alloc,read}_diskdescriptor() with ploop_read_disk_descr() - * remove ploop_getdevice()- ploop copy: fix data loss during migration (#2287) - ploop(8): fixed according to doc team review - ploop mount: tell about unsupported underlying fs - ploop-copy: improve usage - ploop-copy -s: added mode to copy to local file - tools/ploop.c: do not return -1 from main() - tools/ploop.c: fix/unify working with diskdescriptor- New functionality - ploop copy is working now - added pcopy's send_process() and receive_process() to lib - ploop mount: added -c option - ploop(8): added (still incomplete) - ploop balloon discard: add --to-free and --min-block - add Preallocated item to DiskDescriptor.xml - add add ploop_get_mnt_by_dev() to lib - Bug fixes - fixed offline snapshot creation - fixed race between register/unregister_ploop_dev() - create image: if fallocate is not supported, fail - ploop init, ploop mount: fix -b option value validation - ploop mount: fix usage, -d is optional - ploop info: fix usage, DiskDescriptor.xml is required - ploop.spec: make main package require -lib of the same version - fixed a few ioctl-related error messages - ploop_create_snapshot(): check for number of snapshots limit (127) - ploop.spec: do not own _libdir - fix SYSEXIT_PARAM value - tools/ploop.c: do not use ploop_err() - tools: fixed/improved usage for many commands - tools: do not forget to print newlines - make install: use /usr/lib64 LIBDIR for x86_64 - ploop_create_image(): free disk descriptor if fstype is NULL - create_balloon_file(): fix file name in error message - create_balloon_file(): umount and remove temp mnt point - create_balloon_file(): fix error message and return code - parse_xml(): add Blocksize validation - Improvements and cleanups - ploop lib: add visibility=hidden for internal functions - tools: use parse_size() and is_xml_name() where possible - remove merge_top_only param of get_delta_info() - ploop balloon: make it accept either -m or -d or both - ploop convert: change -t to -f - tools: unify parsing -f option - various code and headers cleanups - setver.sh: add -v, -b, -i- Added ploop_get_dev() function - Added ploop_set_component_name() function - Fix: do not clear in-use flag in ploop_fsck() - ploop-fsck: add -d flag to forcefully drop "in use" image flag - Fixed handling blocksize for raw images - Added user_xattr,acl to default mount options - ploop_mount(): added ability to pass MS_NOATIME flag - ploop-balloon: add discard command to compact ploop image - ploop_get_info(): return old info in case statfs() failed - expanded2preallocated(): if fallocate not supported, use ftruncate - ploop_resize_image(): Check is it possible to fallocate before inflating balloon file - Fixed merging all snapshots - Some fixes in ploop tool usage - Some log message fixes - Add function, source file and line number to error messages if DEBUG is set - Build system fixes/improvements- support for variable block size - default block size changed from 256K to 1M - ploop_set_log_file(): make NULL a valid argument - logger: introduce, use and expose PLOOP_LOG_NOCONSOLE - ploop_getdevice(): expose - ploop_store_diskdescriptor(): fix for a case when image is in root dir - Fixed expanded to preallocated conversion - Remove some unused functions and non-existent function prototypes - Introduce and use SYSEXIT_MKNOD error code - Changed image -> device mapping schema - Use strcasecmp for guid comparison - Made ploop_merge_param.guid field const - tools/ploop: remove -b option - tools/ploop: remove unused and untested replace & add commands - Log/error message fixes, improvements, and unification - Makefiles: fixes, improvements- initial versionrhel5-64-build 1428978951AAAAA--+@r+@[-1.13-1mount.ploopumount.ploopploopploop-balloonploop.8.gz/sbin//usr/sbin//usr/share/man/man8/-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=genericcpiogzip9x86_64x86_64-redhat-linux-gnuBourne shell script text executableELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), strippeddirectory  RRRRRRRRRRR RRRRRRRR ȝÌtzJ8Y>\V?Z pEv˒c c~l|^cIXJm!![-O,hwV{wf=3cQP.! PT.s]8%I8J#UTPAwH*GqI^޶$QJea}{_u|}|}1ؔN5q4ZƵkR~Avs Aiȹ'g]7ogdȊ CV+\L~J퉃uÇ+|`NՈ&p^$Lf/ͦmgs]bS6+<{h8g7bHbWOO=J=E#[;nNG|zc,޻3Ʌ={=}{}={˽ɞz;7mսgg{Գtv}6G Ր hdWmݻ:1;@v%e4cw[wuU|&$Q^{net2>LۍFunۉ6m۴ڽǪMr̜%bHzwD*8(cQQqMÖRîՊ DLؑFT$2byoIuE#1e7(H8CCZ(>7=JPnXc4$3s@5)?`1EقŰz谝{9*KR5 AqRVZDՇV׮^=(FAJĐgE=*65 6FQgqJi倦JuV_U)͟AIi|JY$CMF8dyVP@M[FQ!uh;:QkLH0r Dp:t#M [cI$^.`S"(&EnBQ  L4FD} 熙I.d-gg.'rvDLMUJ A]9#(ʙPVr2R 47 @d8= ؈T"Vm{b6&)DhfMPE:K`C/d+D"k,f. \cdIURh`4@n%gQK #LM}]-+{F$J9;PVE&tqIWhU˻^ Fa&c O [ɺ5aeRyЍ1 t[]gU \ˋ ũ-bfF /+<8:S:<+ ElrOC@ᚦ,Q:'u.&TTYɶ0Vzn@qaZS:C|9 (DW\ #hDS|~/hp ڃ9:>丞ZE+Q[&6 As\\/ l09J#ܠ IM51 "IkypSm|DTF?=:Z`^ yK@AQK̥f:P|57B3дh9 D긬.ViNf?e=&V%p*+\JbI XHA M/)zKLq@0Gqsp$-&3'JLRvd;b>2.g;-: }ubI g\+|_-B"r8i2&4+FmW^* IeD E;jaS]&GʌXЁqfTNvH3FK3s|3sI2IoGeK7!Ll\G9cT2$M?S _mU̴T2r)A̎Ha/rZ.Zs_iG#YfXsAo.)3T-YN3S{8 6mk EPۑGa*m*3x\FNaq:dg0y97σ}nahP]f2O@_ACEk1%L(i)a;W͆oPuQ.Utbm?%m)5 Q|mV|S%mes \BɇYeYͿr][ZQҋ Huw=Q~ [9Ɨv6~]sC6]XX˺u[DT/GzJVvΪU|cAu{g50+s+e0P> _)f; _.|ׇo|GT_GɦW~/־}|ңњgv^8 |*7\z~=tO\̖Ο|oV]}-/'Rqj\U?RShVy?ڕUCW#͞]RV ǿɯW~\+g/J̖e >E-nU5;[U&RC+ީWλTM'΍VMM^߮74ͪC-n*[͞GU~woj#>f'TQpj_S?˧LU~X[*?¼Q 5{8oRIDM\Ip=?&D+ڣov'O*PvQcMa@˫&Mc/XMWϩqɪzU/P MuJp|5=nX5=aa=۵~qDj[*YMZ1YIczC=UZJ"-nA j௪~hIUMB%4=T{V:>NW%.l=댁/A1TE瓄䫕A//zϽJjW w!;JK9y9QgN@?ѷmO(Q|J:şe 2ncΰ.ݮJ~s3w=BWoRz9@_|x^+γP^ kv^}Ը*aM'vH?w`UY=\k759:FrHdM߷|#u}p󖳮!3?=OnF#ʹNL/H& Q<˷OXI;gYJΈ"CEI8w,dx2/0rC;DV y Bhp2 L'eeg.|FHXd,2n]G$-s=Eb '3 yӳI䯿ԧ\؅?ja=,>zg*Z# W9C~S6PF~riYSZQ!Ԅ]Ƨ1$L-2  Ηɰ䓯TBx*ŜIOѰ 98䀦#`Hv$i ?Ѕ}˙Ϟ=Cǁr}( V6 JO81a=`,Mfdb<]ݛ$Wk&eg2β7 2[Fg-3ҤDYM"SVPto![Uy= +W62m KJ{|Nxyfm_#W),ˍVX++3(:R 0 }Ə1>g~/cix>qf| {+]`e 0LJ_|*W2'b"Ɵek2Go0~1Kg_߿0k}o?U1>+x3>+y3F_<_<Ư:g|#7go<?g| <g|;o$?x3~3o<x3~;wg|7<?wg<?x3?gm<?o<?q veH2kx@W~.XW'.g݈q2qk2q$g E['"-c.½܉<q11@x3bbL$"ƭD&ĸE[ A85"|BĸŘGW_I4?O_E"yWA| OMג_G|O%ċ#^BO#^J~"'0e!~ ߍx9O(OC'|q'cD%Jl8`s.rdRj/kT̷n25 VgL6`eMÄ"\×oM>_4p'$WX25K^x _L ^>-}eVSx1 ;Lx+.77%75G r TM q1; ~8݈#>j]Mx+?O0Z=kU|i6⊭H}Wh~LNGE*/ߥ_ X < M?}LaW b< ,e&loB??1~0}eBԷom [d#M-a{.iOw+XO}^Hd$|#ͤ&]!m [,qva>vxˤœI)(l;~+#"N %\7+9*au8;fs }1& N Ə%t.TrD)ryuBp<ѳӸRޞ*͑3w]]HceEJZ9 %/zF,HN4ڽ<Әہd/ȟ"!?RթgM#א8?u _;oxLWzVԝPM;;6<anDf#}g|۠]|> X@u(bɽ~CCWTӰLWn1>'Z!Z\Q27V,'vAr#r ѰU9Xk($󈏒 }v#&zאX HBWKɃ "I@Z=+N/m %";tQk~R߇?5hډi#r^qՃ5~a5:M[X5C,tpĎn%\y][R;kxPEު="b}3U?7gY]x'#%5%zl]d!ۤ(8hEu.D;Zڊ⪩v*L%e \$@Qv ]ɕd:-9JӖ.ʦOÔwP sNWLDDk[vL`F :.d`" Fe7=;_:-b`4285ݢV U%8"K' 2jЋpcVoYOJdDJXAk߁j[ R箿H܇ nhE ^֩@ɗF="FN_Q P hl6?x8#%勋/?ޢ䁪';&0Ld)2ˋ:W9z(߼lqeU:=yKP/F brNzKKj!`< 8hTÕ}BR)-|3o |! 1(tU(0dHM@B6e/($^>Dh H\iQIJtz8Qdd;!r>PAsrD H|Y e@inS:=0zO~(m9z#0Q mKy | 8cI rA:2A%wx /c\`̖"ڋ8 QrPfxkB<3@={|[}pT$2vd 26$,C>|+ #V-҄ avX6DEqtZkR@Ɇ LH$\f{ι݅}{s{w@G[% hhU\V‘C>/Zq r\6]WY}RvэHt0>1-4*]+:Rdu9Lީ.3 VU{e._}v܀+0d`ʲ޻WzN$B1 U]&\s\!x.xUYa\-**`wla_ Iuh#]uTבu(=$5rMnR 6,0M9o:K`Bv3pHRo,Gا]Ep?[QԾ!lO'KQn儚,4c\EtfiO; Gq8HR4vCqS!x Ff?ޣ3^x̬wNzGxC#"KR>v2hlE5~Eǫ m'L4913To@utlЌ`ླྀǟF6SPvXB c#4Ƃc7t^u+C9W&z r]1 ia^0;#L!T 9qxѓa$}?O{A|;ܸMwC]xquKV`Ќc2je РKNhW; fz_Iv67 Xe _b];M˸hѮ[C֐([&P5@e6YĭX=VCL0RnEbH7X-r{Cۦ(͓rc hyRQY`xhEx u(K3@PZGBR ߲FXw;Fa](b$>)}d}0>JY.ܮ\ӊBieo!K]GP{zTI6LwJ(OQ|cJA~#bڦoSXon+9=7\bW%wvi1]:[0oE_xПYos[\@*$>:>*5dhwjga_dn GxGiB, ~l6&esS yhx9 ^fEkSM#mMdc-S* gI Qn/u)C]H`c!Bd'Z a<=-F34R}29 3ƳE5iA/+ʹ !tN&c2Ed(z͢l'/)49/-b5 R>O-fq>Oyt9?RЮw$}{}6܆01(}ZԾWzdb+ADj\{AXAzC>MI1b0Ԅ%!ZXD 2w0J᳽:>cŧ+V:`"aOm4o4lЏ;aVVu?mq^OY-Ń:BChmZZnm $xԇO3"a ֙uP8/U>ZQ2V(xFD"chf>0zmK1@H^s> n~"Cs_#ܯ7*ٝgbwuM_*CX=m)Y+X\.Pڮ&6Ji]+ y9$9v[^`.S9~#648՛zzD`׉ -ad_=ih99+c9p< A`dctPMWocn\G /~uURt}rl*kC,It-[nh[=mT\q6r *qzB .+>RlVJoC^[bQ`쾵 B)u|Udh㤩Nd4 jB@e);ulKJz`Yv%3s{}o܏;wf;a #|wq'm nNw<:-6#%WY]tVtuVWfP4. `qt"侢> `ҔQ,֯s9e@E5ϸk?: 0OxU4o^Oߦ9Cd|4t8Mp _ rGڢ^҆ǰd5x>d/{wjG;Sъ_]ʣ-*Aچ#Dxd#;PI2:o5\Pvl^[P>v?N$'+|#ux{fuaj+\GΡ^C=~%Z8]́8#Ž\{kc,]CQ6>wb4XY۰b{Ow~X$/#xM i'f= ~Jj ڂB0F{]VCruqzr)p/Ф:/MoЦ6eɝĵ1ϻb,zж{a:t[>v*1^RcW?oX=ՠ HMu6wѿq.ɆKNP_A9F1[n$֍B?M9C)o%oYip\|NV$l -"RĶPJB)|[(n?/?D| 0M?|Ifuգ tfч/aJ:4#z #|S,á/ 'PA$.WY ,;eu]^-=x7ψX{Rt:ZrhF鮜,7-m$B=w}跨CY0Ya^.㙇 Ha:PA'RXN8U<驩kc |^ tn4Ю hB,눼oCeFη>'N|9<oBU2t8Se޶˕bU*k7uo)XRLo&14V]\G# +:?/0DN8t#ba?<0JB/?P#ִlOEF?MɃQ3PuK=^dR/}_ş% A>1ېO< #a1sLO>ۊo7aEn)+]P}QI2VƃB0xhF72L; iAcHIGN LLr0bЮrN[ܵ(y/_)Hni9M|G/O=Oȝ骸?O!ٓQ}I)lEiҪݔPC[S2j)>LJZ"_?~D;<T?( 斬_0@;_BA-SWycS(dF)P?J\].cĂs{<|OkU65_og]U`48zw;/m{SK٘{;̿-!íya$%<`o04[P׆)\ Z}&UW{šH4m|\n#`o.M;ej`XƱxwݓe#:Z].:-C<M6I2ܝC)r 뼙_K^ s-QԹ=$2b]IIȏ+\:]_4JFsZ (+0%[# ؑ!@Ytn+ ?Vκ){CB#ZJ˲PUb5?JJ~ {^ᶌ^D`×v K¬=0!bS^&擞l()C.$_4Ҡ:kX.u-:7jh1N:S)6DiWC 8o_Rewi6*yB?3|U1qCKM;ҏ(2DpiZ'6&7J5 m@wgTW"a;ЯGㇻ:[ve8v)F&&ZknRGGak6 VY>q&(ܢ; p=}eu^vA ,4Ưs݇vMa}ĸF&E]ct֢N_k)h+On|Zt2>jUÄʰҢeh3Ю'0x۸qx؏ȘCB{ڞANe ~}J)XxG+2x*)f̔xb1`cu&3S 3|Xlʽm x8'S2^j0?mh둪7^)(rV?RQn OC#Sj<ޠVۃ+pT/ ?( \J*(\4LxyWFxmr /S4!7K\F3`hVK>ϋVဘ7 m4O,F'k,U5檪JT++*%7&XYY36Q$q&ޅ_v9vFdѳIi6`"m:I1Կo~NmJ4WI*† 3Bq$"5EʳV3KK7UeL\68*J7W9̲^6Xm|Dz Q׳ w0xa B - NAd,vtE04p]O}4,~I݊x:E+d⛕yb9O\\MnkD|?^)KϪ3*t52L X]h%򋇘55dSǖ/_j(-(vƳJ\gTwkigxb21i>>P}({ AbѤp`eX};j5J,監 j<)0}>L  h5*M9Pn18&e^*WZh:Hu0o[V@hS,OГ,@$jń1hIgJeXhx.9@gNBnanQ[HM0T} Ki:kdrzVI"t8Fd ;ID *ʖ=؂*|;? :WTSad C%/|OJ_-B9˂v`"0oo׫'母_N('w~F9 yUNr+QRWC Q}&r,y2㛾Ndm,\OyOxA1V\m٥Ln=;M Haw2ߧ}N6۽{2\ص!0w2_@}KɌfCy6̍bH6 tզ|ۈg( gl*o9t8<E+ #3kZkZkZkZPm|o(_ Jˡɳg.~Ul Z;24PB_Z( NPgg>ĢgAQp " .Gj!  `x Sxn@g"XD"E*J۴; D[H+x6խ^j=$5$b/+ϸ?Ogү?e&OAdKThNܴ `LqGL/T=3]B1:>/Tg@(Z$=wutP[ XyiaM!ܘ= /WQޝ#iB'!\oj~jfYcRc`%kT6X͈Z\Vu@7תE]ofl:d9^8N%Mz95PN5bwJf8}&%Zݫ Y^-U o:ћrYo/s8TҭvlN@>s *ܥin跤TgT|c:(o'ջ֨-ͪfzz|vY'9LM8Uj:l*|Tb?OUޡ gYs^eե-ġTdwݛUAI4Tm?Oy)oY%뭮{6vGUizT?>_(_5b=c iGWِeYߍ4M_ÚG,T]%ۅq2/k?=ݑ?a%nza°EcJKʻ(# (?H+%>A1K|(R|vLo=Cy>ޕy>_ۨAsʘztU?H(A>V.u+dzU2~N?3cIis?iQMK0WPUp.g\deUT\r."|\f=fSZyw,Q |e4#=Kaʼ)-R A<8x yL9U ͈݈ CCXXX؀،؍؋x11ēg#f^#"V!"6 6#v#"D>^?7"i|K}.DXٲrD}#ʻP߉r7>Du"$dx%^_cW 9k?'%P84 v@GWn}]qBJZ]%P+) @Q]恄xoC6S:Z栧ݧz)oi:n =&Z`Gi XM46`j= Dgy3fnyHإ >ys{H$k ñ  =KVoHNjofj [p{O,CmNU[G$U%M?#x==. g~I_.77K% G.FM*Nɞ6-B:a  0a~xiT _I G "?X68LJv8ٰԾ @?P ./כaؖ#uyjG1ݣݭ.?x=KUmb]uTWWU:JY6Ml5wGW H-ܬWg',+ >?R_g5k\x?KM|Gr_Hf czr?JJM̧^Jq/oHoFK)S&GCR~?X |FOҗ *OVS~ȗs$~.&oϒ]߄y)O @7!O6ɒ?CT_ ƯM0s{p:km >)b~Jדq 3:?{`{K1)B׍p+<h7ukZ 6O( cNM[F4#7i5u|׋"*Kk58N㢱~` rl᭡mZG/'|35MKU+Y { ƞ|5`M=&EǸ$c^dR^$UP;$h$*hW'4ev~i3SE ^B`Sk(zdjԺG E/gKL}4j`C{;'/ĔZ[G4jGFЫjvVF4ҴPHOJ)Zk4n uil;J(U{ ^E`4%^ߤ1ׂ?C=zGkO{?ll[A+/)/LW$VTfY(zބrL0~4ǩ&\WZ 3sL^2֝~6rK:қU(JҾu;=X[~ښ|JWM_,=Zc{Ao!xmH{/~U9,=q-^o^|w֏29 l&~O x{A Fu7;@_~ ]sH/U *K).o Rq 2q rq |GJ_e3??E@=5Uv(8LB|Di|^ , 8J<σ S$>π S#>O 1> 0&ˢ% Aw3y;0E.&2L@)w0y=0XD ۘ\0aǧ xw XyL|~&LV@^w o?ɯ@/? ~&<~&yk?y9kDu~qםSNtxNep;;z7Wba%1ΆԠa adv 9~MC f6*kF91e!ʅ/T}L]{c^ luF.^amosN2ajYw`u7^5[m;E x_Ó z?; }m^ZÍqՠߘᅥ ٠Zq#˓Q"A"賓bŔ[??)s=+o6IMC(൏Q3iv:*lԃ6ȢuM8#N<3T&TUDDKUYUI-9;»,r[E,; d=Nصn' KV>Y?-#k I!.~}}+wMyHwUC/ }ohjk)_Ѐ7Lfief@#Rq1 0^,EŒ^2~ SՋ:%8]:7qe=I:d#W4*JԴJktQkMoU:7c@;1(P r}7 ; ( !35,e]q-| jzIe DG]R4[4݄FQ~9eϭ'\R Qg&OLh4ϺB⺐mRI㎤C(bYu6`L}y#$KFpI+sT5B `]?и%jAkLAA/ =` Y!>ti]jUɇ'>z- 'к ~ տ_`>; Rp nHzWSP`%r9M@o_f VaHED cၝ 4vBbJ` Z B -J5("~G O̐h ^&EPEnnXfmAth g!8mg۠gXP}a^#]oLSWA/1CTDd0}E@\0i/ E7g\‡mdQlQ3&c5 1͆9?PX}{ns;)T D,(һ;P .pXy`rZ-̅[\ձ0o?9.Vdx/k6 }l6m(l]I7E`6w)|/ [A| M<݄j{dd)u}ETC׸ŅxKU͇cGYqXLF},ܰytd4X406hL2{ȵ=]EAVh~ OL SP?-Qflg#q&tE,}ߢEoWp"?ezlib<[Sz/*`?Ŭ)eJ??(8]P6poCXaDN> O]tCvb'` Jq&&MM>~wwo(uflFrAuEpJX_K6>'3=='o٥xA3]A=` {w!}='H rIA?4@=US##).ਹǹ7#[qn R)N'Nl8\J0>m i}4!Tۺ5M]gGٰq3 %ɝa 'LKȍ#7-2w.,T[wP(7шkb{(YO#8&+'5;)al1Ԑld!kU+6ZE.ԆM2Lf# Y9ƽghDMpnmBn $fyA.t]ھhH}j:r 3'֗gQUƈzM?W_(O-zôWK/AzJOB~+ gM.'L`&We ^%#;Yy=flM*^TpQ;F` w7ri#m޶noЋ0uM¢nl~*'qP9p -:q iΎ%A λO5- ~^nn u,#e<$Sc`ꐶ-$y#_+*r>(01mAd -Ϣ~Ac{`* sxz|=*Ӿ0qܘ ]|`06^Iv4ARp2ŗӇ_geZSۖ&F x dS=wBBĮVckwb1 =}uw̼N'Yc$mP4}qsɧý\٧4[ǃ6wP륇PMrN b^sCYHi4@}5AoU4/DI= rG< ?G M3n:OsvQ_}N>i呣9Ğ9|~Xuyzm;Oz/a}p,y;OC/?niƢA~P_| yB|K&ylR9 S pC`n;nX@ivA$^Ty93әy·/r\?$tEql h+ip}i:u$dPPR٫#eBv^>R Zz7nlз!'qcMSpH\EDLn}I޵pU\,-1U/9KMJr+ IpÚ272Ǘsuj'pMYC߄rUݪ|AZmx' 86^^x;NB, fӡS c;\?D GU\S"MC=~=VɊ7̦ nD&zH'L[;Sm( .K-8i[G.7󾒉s*:3{qZ~1D']b̆L]Yzr> 7z\MކXw1I7HPtdv^ͣ/@쁎GOnD=ǻktE 4~н!/U*kS,1Ĉ04n)caX=%xGZr#h~pHyro5zY"p[Ј69)@r1n/B5|W6"L–?Q/7?l9\>ϒt|Lcz2݊W!SVݴBZa7U <>fwbQioГKWj GL=5G ӈ?   DTNi8v#J [WFڪoov,`s5<;GU4CmZ*u4cҔ{ q,fӃ#~c0ŦoKP<+NOa#I#ZWLZandw[9dʈ~vJ'0"Hu v*=>J:R[!]:8B;O7hO#U[;AE$3Kodl6!@p> l>BbKETňczŪ^btbgHS=g7> -1!B  A$s%5 h *q'kzG} ^a Sdof Ku@Uj-AXv{?s9Q~&bT|ɞ(M",>]j,*ވfnUnN4hRb7 ЩtÙŒ]y\u &{TٽJ[( @ l׌h1Ȣs InП <.J:a827vYF([+B R4V@ y}DIXu+E)vYg}C#My)DTc |xb"W] aoc3Cr r 4y_bCeS^R"ڋ- wnm?#Pmv$!Kœgm2o[Ʋ:92j> +4xI\*UDk.LD\Td~q9:owLPtjZtmLi8KjQO| Lb. 'RZa8c^-8&S$ اÍx1Z~f2`̏g O.#ootOɑ-24oQ8)#1¡[,{fm LGj,I;XLQ#+|:Jcl2 :;EaT{ݦfXftMyYk،$j-MŞY%̵WCo͎kS,o6}fjE˰LQ8 za].lIǚs{:qY`Ch8I g[7d3ɲ|PA4#m8A y΃<%眈C?\a 4*o@#ճCؙge^^Ce!8j&TË!=2ij7R1~FR÷gR8,ʣ])PDQ+0HֲJo'̍(C[,%8͍be\/r5ߢIJз`a6 G N诅zƦ/I1`ݜQ[fI%dݺ &?gd$vI/,˒xA'W3.Um̪ne;|LG=I7ߟ JxuW<*QUoa/"w6]WtU~è[tz=>μ"bc%WvOS*{ 3IRv ۡs.\7HͰPh9ӗ7q_s(Tm<+%J,UmN`sݒ'Jug2"kxtkƥACZ4v-7Y sf9'r~M"M!>BΨȪq\ F67V2KJuZuZ=`OWlgҴ1 ^|!#0 eUIg s?Hs81[W bW2-iTL;ac!auṫd@}ӫ%/+gIdJOU8"{F dclKU3Z.})J9<;sdl6>ё$›YGa?WP3WBw(]OBGد-R5fR«TLj+$%o4X zAD۬ӗgb}뜚ӞOQj܎L !UKrrهۚ!'YYgѺ_~VwBʭX(,ġ~br+EWCqD/nr!fW8$jͱ-)/KwXpW$[*gQԿd(=U/JͅL *;5!#3p2ߤgs(#]bGvC[-%SLHh+謺'AQ)i YcC*J\;d$5Mb;">s3$Ɠݐ7((̾u)nw%N zsiU.xGp,%8̢pĉ0mvJapmlҮO,уcBK[WK )ծ+t_Z6Wa."A䕲f+`D_8^CSsF٧s $3erqeGOQ]j'1+(1ëR+TIM7jNL 'p;3q8Q8D cN!VTuEfcP*]j,3,3 o1ϣVݼH1@ >V2JnbuVD[U-(Ej# h_Kպ0,Alԯ1^ t r%70T[= ?h7aJԂVJac9)eAͩ+"O^nD^E:vBMowcofyEJPUnĖ4pO҂gtG#aeAɺ:NDnPa9Ϟͫ㑲dR?p1kd"ҸTqH YRfH&m9OD<=X:OiSo)?KwkSn%̷u*(K󆓊4ndWi8ʵws?T`~ ֧תI`RW:m!V Xb=}#ٗ)kwn8U> f) 套<}*<5ʩ@rqY,Yel-cSO1"IrnCDr`\st݈et<SG.9*Mh0Cw ]4Njk* }H@6B1{ Εn^}. _U=ЬǸ9*YS7llrjFxc)=qBDZX_V|nw&7K5-\sE^э;t"| 뵇H4,Z;M[uM8Q;0O&ܧrW'~XSWx֓g sD8 PᎤ}. E\<[n@RpǁD/k=>~= F N[%wbm"8Se P"G3 :Ts!"N ŝQks7YgɟG'2ga痐r =%~@8( %#ɪ|W8'% E g^ |Pʬo qڊNRG]x)z^*{{e^flcYtcgb9^d!dZ{>0>Yq:+%k*5 kə>? yp1ǻ;*0^72 tߒWE뭩7r26o8#X}(wݲ{N4I׫?wgwp|Y2U89+zͣ?g/~09$Kh.6u>&I2KӐOo/zr`W"~e=an:bR .>6f^_ߓb;OU%MIAEa)ﻕ>E?> aVWTk L/ݾJ6=}L:U[0yC/wYv$?m^]W?~