ploop-1.13-1> H HtxHFU,}  Զk p|9)]?I3!s Бu.7:>h172019ec57b40ffd095fe23016d56e7b04c66db6vM'L;IMْFU,}  ԶCʈp` cZx(d(5PȇY2(d>8[?[d   `dtx      <a(89:MFX]GXxHXIXXXYX\X]X^YbY'dYeYfYkYlYtYuZvZwZxZyZz[D{[TCploop1.131ploop toolsThis package contains tools to work with ploop devices and images.U,}rhel5-32-buildEGNU GPLApplications/Systemlinuxi3869큤U,}U,}U,}U,}U,}5a5021a4760b56e87702ba39f7f18d7104259c52f2d97349c2d66a096585d2cb8bde991d98d7d98c52ab1edc0199e6e1f5739775d6b3be923ae2c0efeaaf2652007ac8088edcaf837182d0a8e3bfae77rootrootrootrootrootrootrootrootrootrootploop-1.13-1.src.rpmploop@@@@@@@@@@@JJ@/bin/shlibc.so.6libc.so.6(GLIBC_2.0)libc.so.6(GLIBC_2.2)libc.so.6(GLIBC_2.3)libc.so.6(GLIBC_2.3.4)libc.so.6(GLIBC_2.4)libploop.so.1libpthread.so.0libpthread.so.0(GLIBC_2.0)libpthread.so.0(GLIBC_2.2)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-32-build 142897895299999@@db1.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 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tablescpiogzip9i386i386-redhat-linux-gnuBourne shell script text executableELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), strippeddirectory  RRRRRRRRRRR R RRRRRRRR RZ d19"ϫ2system_u:object_r:sbin_t:s0system_u:object_r:sbin_t:s0system_u:object_r:sbin_t:s0system_u:object_r:sbin_t:s0system_u:object_r:man_t:s0?Z |TՕ  h"Jc!AL(_G#B1yy72_{@_CXƘ6RV[hiVZY-luM VZ֭,bwb͞sy7Qom{>9׺uWe[gZɾk0) 1lVQ#h"bTBhLqc+UZ]iPYS}?WkkWTƌ`42yjr\ĕPH yA4Fty~~A<+帪F_5.vLN\9֬X97x0fD!_&Xv o҅KV \Zb%uw鲅,̚hᒛqU񇂑0tŬJU Xt<֨+CцJ+[ȳ5c*WX0>^#z%u:Vz^܃:͛uE]F*eVZ&( ղsvgSWvlhjQX(pbplv8x}TWryDvX %/ӅLANSPqO aji6DM CLn!h74*j<p :tDcNlhX +D k 2J2~buD7d! '(9T`Q (QTO4,V?NiZ/OJ`J|eJ*$k`#e`}稒}뀨a?A"xzUYȖfXRᬲ#EAU\>Lb<9yHEaLo)Fˤ32b4@&\otϙ99 ;2iuG WЁnfNznzgV;Ug3O͹3'/͟xg*BtW/U9Kt'ν~ڽ iˆd<ÞC\e& va')ӏ|N#|܀PQ}Xش,?TpeZßG#Qӆs̠g!ovH3uNHU^^׀C[tg,Vkf[N^;zw~'!,fQXuLGg,I|}>+>c}f Ϣyyyy/ f ch*ɒ]*..x3 O\"cVccIKܿpR%ЇQ 9YB(W_q$+cʯpe_ F*hd^̶_R˾c F_^|G+;/,ZYj;xl~d#£'O(_C^Q_rnf?~'w3t/1^jMX<(-@ ?b&35O2v3n[XrV%{ op"e1|!;Zs~?]/ewxr|q/_01g>E3~7p!l_&Ƌ &}?R7Ö=_+7ocyr2濎2(~`_(_؟3{1.c% b|c^/ofxVz>x㽌3yG2dG 39Of|'g{bYCρxlkx`|'x/_e3;ؐFIK?hS})9@ޑqvђ y!o7p{٧ /wn~f70w ioXN,P娅Ǔ6,/ 쏳SLEgg)<%Ԇ9!EU]򅢺*Ecj䚩lP|9NA4J0JzшW7J~5Qb59>5qĉfq;J*0xCѽ:\IW /PF55^?A\ۥoPyB`ëxfװ@[eq{<$tF8 Z7Sm{ې-;[q50_OR g܉j8!G$lc5^:8N77!7ߣ0}߻x *J G ƌid9 g臸P".@ux$jAטV4Epf'` bWs}-ާB2qUh-Ϊ5,>.V5Jx3C0= Bno;Q_/7vn>-}O@N6b(!S ‹Wx)/D% tR uD >R#(\hlF\ X>2!XPppF~µ):z>ۂK :ԚP!H F}iL%AIݠcR)4T&2#-OuhD_s +`)T?a߫X^o1efDT,է'peQtL ՚, ʰ@\( Y߾xX1O`fj0!/+L F}$2&f7Rx!oǂ*_pd*o۔;3,qO>ow͖y1g݄3:-c$I:/>J"òMw!Z==<g0\I.L҉aJ<g_D@>cBbG>!<^qv*YA ٥@&GyRˎ+#Hc&2Rυt$ܯF^>AZq4p׹)Ig"H"-H/EHg9p Zt$BEIZ. uH/$?1pFz9~IbH!%iR8+oBꄳq sHtR#]HK%epF H $8{#-=H+, HaGZ,p)@:E":j!Z#iGpyt8k" piN#y$)\¡)\ M0eΆt.)\F"Ct1R ]G 1H Gz"?ROB P7ҥ5_#]Gti-J?R@ kGt$զ^o鱧߇nu |SV8\4\a_˜XWa m4⽄1C4յ0fV0f%0f6 q0f:˜I513 cfi ciue˜iUL3N?uI141b@'m# cFjd?aL0f'& cj{~˜~0fAL1#d?al(O3\;FLd?ax'! a:FQ%|#n&|quwPEGCG c%숏Ɗ# Qx/axaZ)vX157fX9icj3J-@\C+Vx&a~r ! c4ńj1a~~q3O+'Yk' ce! cvRk~Xd?a~0Vp'\;LƊ!繪Rrf2 hq++5ƕ {iΎ$~@OFANjSü'#Q#a[(ï緭y گlm~”Z:~M%Id( m6cNbMv>:C6 1i7y4*)zxtZ!O\Axůylh˹$;ЗZyh&tȔ͕8BaTVfw4IY *>nFw>֘&?D?W_͟~??y6WC?gol7/6ߞfˇj6se7{ms`C/C/fgvg7?3ò_5׿+S/.Ountss[Ձ"blfozW݁lspRc\_?`-a1߇eX>ǃb hU\L% ιz7S&v2}oÃ2qؕTNykkf'E:[ks[0d"o6'T Z=[E[C: `kKnw6Hu%Wa/d&x>xx;[3c~ @ZhgRkRD3U<71I8>[[?׸71]{}:ښo]׺Lgmg;Xv{CS;Hی Z#C]c^Z=ZPU.`wX,J\~|mCgE|3>< 3EKd"~ >y[Þ{ økIҳƒmIMhDK ַG 7X?+n,I}pZ+=SgwdZF֤<o@H+'ɧ/.D{8 `rqq}֮k-CƧ7bs?6*}f\k'N >:\%gL:/hGՠRyΠğCKq K[={[k<ڃ[Z/l~cRj>P^C w^+|òG 2pա~]tZ({x1-;2LIr* JFP{Nͱ\3n@nGN؋C]p4,RB8ϛ> ڒt9ITXožct j jk,O)nCɭW%_ߗm?zJ`\G{?;(l탲^J.,s7p-=@q,zg%dB [ڮ(dў;0R҃Bcv 8op/W%Oih6Ulx:c^3g7X2?ǩf/mpL+g$.}emGY}CB׍1JEHHxu8 AU~ZYB8WܚNסpn{ȒJpK{<7P$Iےp!Qkݘ$L 8G5-BN4VE7rjF5fNmc7U8˯8[lJu]mŧ!|Ǿ9Wyq'Tr >$I=og-~A{K0MxMs=7-Yw4pH^,BB2hdL4gu*X%t45 ; |^P6Sn8S!6ƹFcD_5skP2GAY(чt|0& 7IkP#`ℌ@Ev>@7\^ + g0hT;(_PڧorBoN][{LUu5agM+\vrR,tYAbtkFd Фf&/f.;.sw;r3r(\^PŽ(q{ʷ ~_)]̓tDLztRWGJK%By~VB :@'LN/cnZ2P _I. k@p;YDv_#s8d˳;0>m':0f1|ne_daӀ 9ό4&4HiE@P FQeM?ogY je_OmDnI?*G~pl)>kV|:{0דSEopr7!p7Yvnaޞi z7UCW-HKXw<۵͍-wDm' N瀦/qֲ0p[=o P_0off9Qɷ>FvC4y}PRD^anh%D/" KC+G׋׭)v& C%R7 8O-mGje?;Oe$@bHdzGZ9ʴnףoXAmjo>g1Ov_3-2~ en@GlBQ[;չ^6JJj&:91Cxi:XH5Aڍqu.>d,n1䡲Dum.#{a##vCvc"3Q2dP)IyriК,2Z9#uE8Wxe=H^#18RRQJ^ O~Kd8U Asb7IU?>4U{ ҝG+#˄ }Y.J-cK~g>7|>s=Muyjyۧ:r}Ą邏bb 8|f|t)|±쌹r?rTrIr'+1bc:2QՀT 柵Vk<(ÀgA˿-PLoTUݫf΀cP }YB$ūIxhm$ S﵎q. &.LB)nnRJv'{ob*eydk6YMrV`Ȏ_R^8z,tt t!06$~LI}|J k meZpwx;noغ6>"ˉY_eZ:FT#ZdXYiao\u< O|Q?yǴRLm(*+3{/@^ ; 2$Ys0^ޥ - -w(EyUw>eV8)pv{"4Ʊ{usptZMhA&&&lA"ڋे@hԂBA#=YFZJU^,zEAŃi~ڢ 9$(6ffia3 9VȃoB!ƉR,0 x(8{~w/S;][Z$(]5%{,]ljdb5o8PMI$3PINa hxjAeК;kzA6|Aڊ~H10!JZ`<]~KX"x~:S$zuI=8 i`g7\HHCĶ}N+[79YG]v4޽Fq6z+ 昋eoK)k?MBEHz>CzxF /*U8۔2*JT73j5!\) aj D\ 'rڠ?.~( (/uf=#0q?`,.7uV܊Ea-J @4%lUEc.H3X>jч&kFo3us\\=)=O"Τt^2Ȟ[^b3:R%[!K!=M b "wU"͟\vۜw|[}lSU_am A&C٨7$J~b|]1Vx),&31IVp]67q.c2K\V=}sϽwu|xmy3o1jV ['5S-wv&p_d2wt@< ۔γS<2 7M,2 i vQ| 1$b7#YCI%|ES7 xF/[Kx})t < 6q1qñ` P[XEPE}э>e*4y9^ɐ N> }`/-VzC c\5/t4jQYP/9?5|)1A%9@-dӀOaX8  Oa͜,hQqHU!}e5f}{Dӷ;l/*ޘ{N6tW&xwWaC98~?Pkn@gQ}Y fis}·dzwgCVoIrw,hcQ.,Syu4ۗL!O/X 4) GB{HHdFdp$j@LNGD:mP\! NM($YFm5Ȣ4|~k(KwF@MP}]KDcLCum'#M lƦQkig\E㾷,cd{{}S~3SY j)z o90ߞOS0Y]XiiR9!;y(^ͱ:3$c~`\IPpU}YsyϹit&/888G<9{ ig"ޥ1R|d}e->K cǧEP芅͖Nrun]G%/b]o$(>_8c MV}ܤkM.`&je:Ir{I/;z4l$t ?'ct;Va5''ԣx#Gd;n7h Ϗ㸍 }OhofD!e{1M )+'SD?}ٯ_d^u-n)#B##Xb2zfG0nS&? uW #7,񽑒>L_95܁q,#1^(AFr76YYj,FL wI;'aZdnA^!a;\Z (?-<"Eʘ}bl"| $C ;ϙ>=xwA}dp) }7f_3&`W VWгP9hhSHHZ82{>Vcb߇ʽV+먦u&odG[ pI#dȆzy6Rh,A `lB>etY~:٦r'<[/w=ᮺ`O-'_],dݱO}W ራ5~h,xHwǒslK mw6(zE'چNGnVjbg)WOwoH˂ R}ƛb]T#/i*? / Bgm>8@[GWf^sl&Ap7mjCT%2TH<$ J_>ۏ=]: t‚KBM>r|Q6wc -s;~;GbY%ƶN62BX$k HB'q/K>Cq{ly~"bf-aF{U`eV0ٞ՚Y5Z3ϞN¡" P;QKyI V>خ6j VH#UTvU/JPѥ-x<,Hw%Y[,aJ_t}}m$(u7}r_ ^0τ~h pdmIZCma^w+Y2ס)n'PQk1"u,c+PB]C7!33[5*aoHIQFmN6M9Qizנhړ~ZwF| ޷svQUڏ?4xggϣNFͰt87iא)}7@GҏCD]n܏0ʁ>F@Vb-(^"y ^ wݐ7D}'=3m0l+ؙq?bD{A ajU@Ѵ%l]dY*jгT!EM&9]N;^݊ 1fB#D"+g),~V**Z]]WseԄ1 ,ՒaF"LqJUEˌ%q J%6@')zXSN#7r!%[ !q%+ŭ嘗|PJq)BJ"1>Fno7RI<C../drQYe֚,VN[J ^uUd&yIj;eK!ɕ};{4s1 & 9g:< ,3.wzS\21BH#`ujޠjV{z0]FRWZl.(lʰ%%]+JN<6m[NF Ջ^/IV?Ii|'⚞G:C=ʋ,k&LLLpd%,?O.*Ѯۦ&vȤ/Do\ `ƖѨ; %A8Jsݜ*?;N5x‹ #M"rkM0vKi$P1 o 5N-GM[AZ~g5oj B,D8ZҪGq*$ Vr0nv4my:ߡp^q0]h0 X5cNq i@5%, Q ΀c3@1 w,kBu fm;`oiSK@L6K+&:HɰmH )ܺsK@}qp$h`FjFއ>qi$g#ױ I%+*FT+MJ-A 4  QTSV\AX!B}= Uº9T-=0 3s /Dѩbaҹ*!"5k;*UM cxd$yI&u!yǏx?k#!Zk9JIԌ΂W,nVB(\}BeθmȵZPV~ k굣zt6=vݟD=Nҋ1ܵi{wl@^TP| ^o]kAC$%X.JH^J,lYvL=<^,"z'ыwߛ7l7zP}M^/2(σ?r|Ѿ}S(C3? ǹB!Cy}~{yT(zGthY}b纮߁6!л $)9,M(eԘyu7=?kffk\rjWzug>WyXZmF,(5'w= APb^k| r)V/L :iD}D\&`t#c%iD,lZ$"dy(It{C<2v{R`.}m MqJbM \c@TP8^. i Fb05j5vω#$Yu= E8[j˽}ML$A!%KXa8"2'*Q.F"[SlVjVԢA@K% Q&0t0$ΉArI55ճ",^,`btu9m9moǀ"jj4ZJE[k͆ ח~dAȜؕOp {1iP܅2)mzlwA( :L%l;Onz9OhigLjLjZE%IYaG]ik[[+֭FZQ,KtUUgا/=t8F .2~JWS絡p68x23 GpWLYQ`.%a2|c'eiMOdaxc4P<ꞚKˍ6LIA5|vΈR7C]mh[U>mNYɴePMGuF ٚ4 St[ذ&ٜVK:\di7L贎VWa)Qz|&7A؅}99{N8_Q>bPo H"|(83}ڬĦ4 2Nnad}# ojLˈ%I}8 Pl/*B`~jIKT}dL >jRlBߡd4ƉHcP3hx1u2_&"= (i冾քS?sq6Gix׵"GOK54иB pkxa:q҆Qd6^i`R>%5lvIдM÷ZI+7hfl3}hQݻ=]sabc!ugXc? 2`d\f}oo9qmℋ޾W4E)i'HkH+UaF0G# X`(Ǖz=ۤ_?Sѫe7u C6”N=wCXIMэBvyXp_ >ot஘pM$܉gڃx[o=`yHI;Jf&#@0#eЙ2Nǀs"p HYgc[ `r N#`xtLʛ98L^u )/;^R2;-)RceKy:k ?:#~kZ^`4Iy.~pϑw @'㢔!`/@Z#,Ark/-i3:>WUwyƶ3eW G}l9_&ޔݓ %4ŏt(-}c#b~<^jO?Q],c^I } ;~]o$ &ª]f",'dvW~"p,C^E[Qkۊέ"!mtw.^繠mǸ=&@'oS{A+vuSZޏU.^?E)cW8#y`.[_ݿJ@WؘZn^ Mkl.Kv7n8&wZ<V@##d% |2cm2oY˵xH!Gj4ha_Xۄ4RdQD Z?.$YQF%P3,o7΅ݙ cf4/ hN$x[Nʵ^DzX/]S:lv@褅p"M}t@KGoj+]f\:C7ĵAt /Y&~@VoqK Q>WF`H'= OBJm2«M&=i)g[oUƀBm O1,xL8fs0`N}x22EY5kmzjډcijDNm4-T2垑YO}9C^QT3b՞^9Q\~7KBte]g|/}/}%ֵG#ɱ1]|lܟgݴ,~n}:pȚYNOv´jNTVItyq-nr)>ٙT7_ֻ- r?W"]pʮ@}o?ٷcj.W{{GcK:5X]\QdO}wCZqvΛ`L܇+CWg8s`|Ǚ]W,Kw ^+/A~$.}&0܆gG"d b? =.~k=K 7 |^mhcG lH\x71p%QBs5U_&ko^_DshƳg jGhHGbOZm~wL| ]Pb*=b31VZQGk`;N':w7+ f1C :kUN!2iv3TRO8~ݻOa}{9<RH'u*9a/ÀMqXg|8IGEҘiйxp -"~ItQHe g|WNeq+ HZO7p|y"9ip0^GIQXPP%ek(I()%-zQRCI()tQ~F!J#(ipdRY%RQ>(P҂-% e.J棤5"43DK(V%(RDI_˫Q.o;:5?u+UY,Lӱ,XLiM/Nfr=LÂ\b%5<5ZE5`Y :iXXô84,agT0 k,X^ò4oL_7]P1}%r<؍Z?mgp};wmu/3$n .?DU\x .f\ wE+XСjќbI#&h~'3挙01qQp"Yz@(Gٷ; ѶCP #hQ[NCv^:CoGWH_&\"_"SڷM  s_[m{40,Un6`S˞je|2j'[ZmRB砥O>e9{@,uCuGE9 =cj׉wȨ[VF5ػ'oL3N=gLj-|0p ]T'34p*F7œ>oBiv+&<9Ě}}}9"ٹ/o]?e˰8u&̯֯v5UtYz#!^ٔ $eWܖ񊧿9]<ͯ:D_l"kȌMrCFG.[<6NeBcS:fmɓaG; Fb/G,|x:9&.W3XTÜl<9<Wr;s˫'g/&Nч.ϼ;3{>6iߏNoLdEtFyn̛oI!pwïҍqwgsW&3|i7{F,yF = b:a"'!{0-8^ %?m'שK0aXL} D3GѮmvd}x.۹NOn7q-64|yCڰ9"E&7Aws\6>Bw 佅u:ji*KE=S V3fR|5 4v0/lo }W`$-;^VnhGsp%14lԃ+p5/ށZ@Mz u8s!OxU -ߧio<uz͋qo $QCZ r!`ORn;w^WO n/NXVgN:]/..o.\.\.\.\_.ogdu~ƺ p\`]] @*%@]} X]ALAIKUoJb+11* ִ]8Jfу'=xsoDOAуcP4$&jCn--AQ8Hǻ:8F[JlO0TO-2۟> &g%)̹0y(3R+ OaVNyJX3L*Yav||̚Qǖ8fHKQwvꂳd~w]D*2;fg4ڑ̜rL|6sT۞!Nf:c,*v.:|k[liUdf91If¬R)ojaqwnSp9A[A!=D e`gf۷775;(HżYcl!f 5FiAb`"'nwyGN it˃}xl2 C{'ĨF8zSXnF3F\DCP0 Jguo; 3ϻ[9!=ebMnmv!c(<#**q;_DS";[ dLo Ρ,KĽ\T Љl< F-9#\m>*B =!{7Rf` 8X>CT  4ww2 μB8n -NUPBˋ)J!rAW#~45NBzI@\#VC9`wPYgH9g$A9#I@@2DEA23HRɒ!,$ArTnZuz_4}y~G.c}?;鷫kxƿj  yyaAt3aWkp=Xx 'gtAٓv&Ng=v}6D+x!IcAd\Ns_i͓'+jRXx?]w|LyoL>"8"Ȥ䔦RM ߾ R u Lgc`2 Dp. DV+q|z78x=k> U?Ƀ&*ATO)'y1 $LMK1ȃc@l/su`Th2O7u#7?uK_~M_/~Y_~=_'oa+gS+;wv2fez @6}H: @|EP#7&m/x};ՀoSmg8A}ʙs3L~ÙA5g J+/k>W)L1O_q`?E`3Ig +Hs0Q~͙l 0P3Ʊs kSW焅gZ+9_s_=s)hX}{+{3_p #)Q_s$w)Ўcr`; gjcny™ Δʌq|2O|sqM-оM6_ۑy܅Dk( wv)N邆cykj*G.hS ūdM4+b^/3k#~zU'.Mr:Ot-Q;jbf#qҤS0|x@c5.$cAæ^Ϟ!N2YW&~.y;@$Y؃FDkG;_!.HJ!n# E$ gOBv7 :E;)FF+.E&L{\g}\S O(o˸ӈ7l4Nvcn.kWju2,ux9ߘ$6Ct(>{PLZvˌz&TUsv瑄]̹6F#ADyܖ4ԩCT֢%1:\8N̶/4+]=:E׳Y齖TiZ}qrMV:מo舊]u1K6Xgd?f qy!m4Q*ڻ2hPWoB}0M:crWz5:[0e8y[_.K$ݝ[܇qs%&# U*\¦+&h|iaC Wa$^#t\)H kOoLEM'L$uZnoh?2dV۹K ".&y.j]Zj&vwr 9' ? 'ƌGf,^@%Pٯ)l7pPR[Wsꁢ|i.:5GeF̮`ahƯJk)\aRQ=qLpWD%h5Rӻk䔄4{?$=D"`UW_̘dzdkPwJV#t}GjcfI a!Tn\"{S_PW;%wAiYdJ XAێWBl\8Pۿ29mgc2~@Vbl}&x3RCӞ8r7 g`h É)sqm*gL&fz۔;T)bQ L`E2`q(EB{b:. 6pJ{&T.ZbSp!˃4)}dv.y} @ô}2_!D6T>\2+4- Tr|?6Ŀ2ҊH&[~v/o0&zzOaՊ_6p:#YGEs6\ԮHǵ+ɱGXZ ^GYػkk}9|}kîƵRQ*+oXD+iswWS JL0O>ռN<fR{|zqi\x^}ȧW:W0_aDX"ъ*؀>fTڕ+)$Fb>"/4n7,#kz BH006Jmnd q=M;~8qϼmBԟuIC?lF&=.={)6.Rr5z!q=\&cɑɺ Nqq&- ({z/戫P=<VEe~|fpט>ٽUJN4n:gʧ00pOElp00oZ'gʿ=򚱃u~Qj^},8~smnQhξź]ƶ3[.5 i[E't=J2"٬)^N8ɩd&:Lp +˽5Agd{˫G^3|=pG=gUbtmr3;Qsf vB~onc-\+w0.9Z̤.^t0E2a[17{To _5-ohVj~kh49|6x ѯrPݒ7Q"4ahfI࢐'M+Ȧ\3N"mU^gWT?[+o+ku>^w#yMl:\dg;3+aBdEwwo7<8%`{4V|#XSS3ezyF\,jj499x ["w$bki8*"Zz_'JkvCOfn( ,X*iCU,=z,lj#`f1w,ӂ:D} =oҘA;(^L G޼\?:cb\#a4p!/, -i!W!awb܁C@x~iZ4f iir9ЍIrSYe\*%lGWL0dy&z! <یl+O"S8jޞDs q8!22IOyhLNger46J囗MÙ$u0{g$Z6%a x2W؍f&%y!a%F6kFk.-Դw* :u{-+`0dh;asaw;6G붞:ѓ$W(^fkӑx01s)ٻve9 6$*}غդMpƥ }Ү:Ƚt٭ js 0kޙILUXWіɑ&H!&}3e= G֋i0anY SJ44$Pqw:?tʐ~J9kGY*JxWX5-:J.nDv4g] e"3΍y!pNKݾZݚC],NĶV{AleME~q2 i82M>l326{$9AQ"7zZ5cύHLoLW5{3a"lVĽ} .Ad+d7  U8 M#/3Ixk84Swn<(`xn2ÿpJK rON ~aY9)>pW$[*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?~