saptune-3.1.3-150400.15.9.1<>,f p9|{T=f|պ rA62W_G~rkҁS74*"[q61 FBI[3gvʼnٔ.(۲yUys;D&aD"'''<GLiGh!} CGuֹEm?C<8/oA4{5S:uFI0q{1+?eTg| WvE}E]8d*P%A2ruVZ>K ?d   W ,0Ijw &37z9z :z ;z =pz Wjz WzYz\6z^^z``a,bT(b8b'9cD':e'=>?@FGzHzIzX\Yh\ݤz]ߌz^b#cdNeSfVlXulzvT wHzx0zyz$4Csaptune3.1.3150400.15.9.1Comprehensive system tuning management for SAP solutionsThe utility adjusts system parameters such as kernel parameters and resource limits to allow running various SAP solutions at satisfactory performance. The utility can be used in place of sapconf.f h01-ch3c3SUSE Linux Enterprise 15SUSE LLC GPL-3.0-onlyhttps://www.suse.com/System/Managementhttps://www.suse.com/products/sles-for-saplinuxx86_64 if [ -x /usr/bin/systemctl ]; then test -n "$FIRST_ARG" || FIRST_ARG="$1" [ -d /var/lib/systemd/migrated ] || mkdir -p /var/lib/systemd/migrated || : for service in saptune.service ; do sysv_service=${service%.*} if [ ! -e /usr/lib/systemd/system/$service ] && [ ! -e /etc/init.d/$sysv_service ]; then mkdir -p /run/systemd/rpm/needs-preset touch /run/systemd/rpm/needs-preset/$service elif [ -e /etc/init.d/$sysv_service ] && [ ! -e /var/lib/systemd/migrated/$sysv_service ]; then /usr/sbin/systemd-sysv-convert --save $sysv_service || : mkdir -p /run/systemd/rpm/needs-sysv-convert touch /run/systemd/rpm/needs-sysv-convert/$service fi done fi if [ $1 -ne 1 ]; then # package update NOTEDIR=/usr/share/saptune/notes if [ ! -d ${NOTEDIR} ]; then # installed package version is < 2.0, update v1 to v3 # indicated by missing directory /usr/share/saptune/notes # only change version to '1' (migration), if saptune is really used # so check, if a solution or a note is defined if (grep '^TUNE_FOR_SOLUTIONS[[:space:]]*=[[:space:]]*""' /etc/sysconfig/saptune >/dev/null 2>&1) && (grep '^TUNE_FOR_NOTES[[:space:]]*=[[:space:]]*""' /etc/sysconfig/saptune >/dev/null 2>&1); then echo "saptune NOT configured and NOT used - version will be set to '3'" else echo "ATTENTION: saptune Version 1 is currently configured and used - but this version of saptune is no longer supported. Please migrate to Version 3 after the package update is done. saptune will stop working" # to allow a migration from v1 to v3 after the installation, we need to preserve some 'old' data. touch /tmp/update_v1tov3_saptune_inst || : # preserve 'old' BOBJ and ASE note definition files for saptune # version 1 compatibility if [ -f /etc/saptune/extra/SAP_BOBJ-SAP_Business_OBJects.conf ]; then cp /etc/saptune/extra/SAP_BOBJ-SAP_Business_OBJects.conf /etc/saptune/extra/SAP_BOBJ_n2c.conf fi if [ -f /etc/saptune/extra/SAP_ASE-SAP_Adaptive_Server_Enterprise.conf ]; then cp /etc/saptune/extra/SAP_ASE-SAP_Adaptive_Server_Enterprise.conf /etc/saptune/extra/SAP_ASE_n2c.conf fi fi else # package version 2.0 or later # check SAPTUNE_VERSION stvers=$(grep ^SAPTUNE_VERSION= /etc/sysconfig/saptune | awk -F '"' '{ print $2 }') if [ "$stvers" == 1 ]; then # check, if saptune is really used # so check, if a solution or a note is defined if (grep '^TUNE_FOR_SOLUTIONS[[:space:]]*=[[:space:]]*""' /etc/sysconfig/saptune >/dev/null 2>&1) && (grep '^TUNE_FOR_NOTES[[:space:]]*=[[:space:]]*""' /etc/sysconfig/saptune >/dev/null 2>&1); then # saptune NOT configured and NOT used : else echo "ATTENTION: saptune currently running in Version 1 compatibility mode. Please migrate to Version 3 after the package update is done." fi fi if [ ! -d /var/lib/saptune/working/sols ]; then # installed package version is 2.x, update v2 to v3, save 'old' solution definition file cp /usr/share/saptune/solutions /var/lib/saptune/.v2_solutions fi # special fix only for 3.0.0 installations if [ -d /var/lib/saptune/working/sols ] && [ ! -f /usr/share/saptune/scripts/.updhelp ]; then touch /tmp/update_fix_300_saptune_inst || : fi fi # to prevent saptune related tuned error messages anytime after this # saptune package installation switch off tuned to remove the 'active' # saptune profile # 'tuned-adm off' is sadly the only possibility to remove an 'active' # saptune profile systemctl -q is-active tuned && [[ $(cat /etc/tuned/active_profile 2>/dev/null) == saptune ]] && (echo "found active tuned with saptune profile"; touch /run/saptune_is_active_in_tuned; tuned-adm off) || : # if the tuned profile is saptune, try to switch off tuned # if 'tuned-adm off' before had worked, the profile is empty # if not try again [[ $(cat /etc/tuned/active_profile 2>/dev/null) == saptune ]] && (echo "found saptune as tuned profile, try to switch off tuned"; touch /run/saptune_is_active_in_tuned; tuned-adm off || systemctl stop tuned.service; > /etc/tuned/active_profile) || : # if the tuned profile is still saptune, try to override the file [[ $(cat /etc/tuned/active_profile 2>/dev/null) == saptune ]] && (echo "found saptune as tuned profile, override /etc/tuned/active_profile"; touch /run/saptune_is_active_in_tuned; systemctl stop tuned.service; > /etc/tuned/active_profile) || : else # initial installation # check, if old config files from a former installation still exist if [ -f /etc/sysconfig/saptune ]; then mv /etc/sysconfig/saptune /etc/sysconfig/saptune.rpmold || : fi fi touch /run/saptune_during_pkg_inst || : PNAME=saptune SUBPNAME= SYSC_TEMPLATE=/usr/share/fillup-templates/sysconfig.$PNAME$SUBPNAME # If template not in new /usr/share/fillup-templates, fallback to old TEMPLATE_DIR if [ ! -f $SYSC_TEMPLATE ] ; then TEMPLATE_DIR=/var/adm/fillup-templates SYSC_TEMPLATE=$TEMPLATE_DIR/sysconfig.$PNAME$SUBPNAME fi SD_NAME="" if [ -x /bin/fillup ] ; then if [ -f $SYSC_TEMPLATE ] ; then echo "Updating /etc/sysconfig/$SD_NAME$PNAME ..." mkdir -p /etc/sysconfig/$SD_NAME touch /etc/sysconfig/$SD_NAME$PNAME /bin/fillup -q /etc/sysconfig/$SD_NAME$PNAME $SYSC_TEMPLATE fi else echo "ERROR: fillup not found. This should not happen. Please compare" echo "/etc/sysconfig/$PNAME and $TEMPLATE_DIR/sysconfig.$PNAME and" echo "update by hand." fi # workaround for the missing directory. mkdir -p /etc/security/limits.d # cleanup 'typo' directory (bsc#1215969) rm -rf /varlog || : # handling of working area is the same for initial install or update # initial install or update from v1 or v2 - STAGING is 'false' by default # the entire content of package area gets copied directly to the working area # which is empty at that state. # update from v3 or later - STAGING may be 'true' staging=$(grep ^STAGING= /etc/sysconfig/saptune | awk -F '"' '{ print $2 }') if [ "$staging" == "true" ]; then # handle staging area and DON'T touch the working area touch /tmp/update_saptune_staging_area || : else # staging is NOT active, same behavior as with v2 # adjust the notes of an enabled solution, if needed /usr/share/saptune/scripts/upd_helper enabledSol || : if [ -f /var/lib/saptune/.v2_solutions ]; then # remove no longer needed old solution definition file rm -f /var/lib/saptune/.v2_solutions || : fi # set up working area if [ -d /var/lib/saptune/working/notes ] || [ -d /var/lib/saptune/working/sols ]; then rm -rf /var/lib/saptune/working/* || : fi mkdir -p /var/lib/saptune/working/notes || : cp /usr/share/saptune/notes/* /var/lib/saptune/working/notes || : mkdir -p /var/lib/saptune/working/sols || : cp /usr/share/saptune/sols/* /var/lib/saptune/working/sols || : fi if [ $1 -ne 1 ]; then # package update # rewrite saptune version in /etc/sysconfig/saptune as fillup will not # change variables sed -i 's/SAPTUNE_VERSION="2"/SAPTUNE_VERSION="3"/' /etc/sysconfig/saptune if [ -f /tmp/update_v1tov3_saptune_inst ]; then # update from v1 to v3, same as v1 to v2 as nothing changed in v1 # step is needed to support migration after package update /usr/share/saptune/scripts/upd_helper v1tov2pi || : else # update from v2 to v2 or higher, call update helper script in posttrans touch /tmp/update_sle12tosel15_saptune_inst || : # clean up some leftover files from older saptune v2 versions /usr/share/saptune/scripts/upd_helper cleanup || : fi # special fix for update from 3.0.0 only if [ -f /tmp/update_fix_300_saptune_inst ]; then rm -f /tmp/update_fix_300_saptune_inst || : /usr/share/saptune/scripts/upd_helper fix_300 || : fi #else # initial install fi if [ -x /usr/bin/systemctl ]; then test -n "$FIRST_ARG" || FIRST_ARG="$1" [ -d /var/lib/systemd/migrated ] || mkdir -p /var/lib/systemd/migrated || : if [ "$YAST_IS_RUNNING" != "instsys" ]; then /usr/bin/systemctl daemon-reload || : fi for service in saptune.service ; do sysv_service=${service%.*} if [ -e /run/systemd/rpm/needs-preset/$service ]; then /usr/bin/systemctl preset $service || : rm "/run/systemd/rpm/needs-preset/$service" || : elif [ -e /run/systemd/rpm/needs-sysv-convert/$service ]; then /usr/sbin/systemd-sysv-convert --apply $sysv_service || : rm "/run/systemd/rpm/needs-sysv-convert/$service" || : touch /var/lib/systemd/migrated/$sysv_service || : fi done fi test -n "$FIRST_ARG" || FIRST_ARG="$1" if [ "$FIRST_ARG" -eq 0 -a -x /usr/bin/systemctl ]; then # Package removal, not upgrade /usr/bin/systemctl --no-reload disable saptune.service || : ( test "$YAST_IS_RUNNING" = instsys && exit 0 test -f /etc/sysconfig/services -a \ -z "$DISABLE_STOP_ON_REMOVAL" && . /etc/sysconfig/services test "$DISABLE_STOP_ON_REMOVAL" = yes -o \ "$DISABLE_STOP_ON_REMOVAL" = 1 && exit 0 /usr/bin/systemctl stop saptune.service ) || : fi test -n "$FIRST_ARG" || FIRST_ARG=$1 if [ $FIRST_ARG -eq 0 ]; then # Package removal, not upgrade stvers=$(grep ^SAPTUNE_VERSION= /etc/sysconfig/saptune | awk -F '"' '{ print $2 }') # revert settings if (grep '^TUNE_FOR_SOLUTIONS[[:space:]]*=[[:space:]]*""' /etc/sysconfig/saptune >/dev/null 2>&1) && (grep '^TUNE_FOR_NOTES[[:space:]]*=[[:space:]]*""' /etc/sysconfig/saptune >/dev/null 2>&1); then # saptune note configured and not used - nothing to do : else # saptune configured and used - revert settings to clean up the system if [ "$stvers" == 1 ]; then saptune daemon revert >/dev/null 2>&1 || : else saptune service revert >/dev/null 2>&1 || : fi fi # to suppress error messages from tuned, if the current active profile is # the removed saptune profile (systemctl -q is-active tuned && [[ $(cat /etc/tuned/active_profile 2>/dev/null) == saptune ]] ) && (tuned-adm off; /usr/sbin/saptune daemon stop >/dev/null 2>&1) || : # if the tuned profile is saptune, try to switch off tuned # if 'tuned-adm off' before had worked, the profile is empty # if not try again [[ $(cat /etc/tuned/active_profile 2>/dev/null) == saptune ]] && (> /etc/tuned/active_profile) || : # clean up saved states left over rm -rf /run/saptune/parameter/* /run/saptune/sections/* /run/saptune/saved_state/* || : # clean up working and staging area rm -rf /var/lib/saptune/staging/latest/* /var/lib/saptune/working/* /var/lib/saptune/working/.tmbackup || : # preserve 'old' BOBJ and ASE note definition files for saptune # version 1 compatibility if [ -f /etc/saptune/extra/SAP_BOBJ-SAP_Business_OBJects.conf ]; then echo "warning: /etc/saptune/extra/SAP_BOBJ-SAP_Business_OBJects.conf saved as /etc/saptune/extra/SAP_BOBJ-SAP_Business_OBJects.rpmsave" mv /etc/saptune/extra/SAP_BOBJ-SAP_Business_OBJects.conf /etc/saptune/extra/SAP_BOBJ-SAP_Business_OBJects.rpmsave || : fi if [ -f /etc/saptune/extra/SAP_ASE-SAP_Adaptive_Server_Enterprise.conf ]; then echo "warning: /etc/saptune/extra/SAP_ASE-SAP_Adaptive_Server_Enterprise.conf saved as /etc/saptune/extra/SAP_ASE-SAP_Adaptive_Server_Enterprise.conf.rpmsave" mv /etc/saptune/extra/SAP_ASE-SAP_Adaptive_Server_Enterprise.conf /etc/saptune/extra/SAP_ASE-SAP_Adaptive_Server_Enterprise.conf.rpmsave || : fi # preserve saptune configuration, if saptune was used # so check, if a solution or a note is defined if (grep '^TUNE_FOR_SOLUTIONS[[:space:]]*=[[:space:]]*""' /etc/sysconfig/saptune >/dev/null 2>&1) && (grep '^TUNE_FOR_NOTES[[:space:]]*=[[:space:]]*""' /etc/sysconfig/saptune >/dev/null 2>&1) && (grep '^NOTE_APPLY_ORDER[[:space:]]*=[[:space:]]*""' /etc/sysconfig/saptune >/dev/null 2>&1); then rm /etc/sysconfig/saptune || : else echo "warning: /etc/sysconfig/saptune saved as /etc/sysconfig/saptune.rpmsave" mv /etc/sysconfig/saptune /etc/sysconfig/saptune.rpmsave || : fi fitest -n "$FIRST_ARG" || FIRST_ARG=$1 if [ $FIRST_ARG -eq 0 ]; then # Package removal, not upgrade test -n "$FIRST_ARG" || FIRST_ARG="$1" if [ $1 -eq 0 ]; then # Package removal for service in saptune.service ; do sysv_service="${service%.*}" rm -f "/var/lib/systemd/migrated/$sysv_service" || : done fi if [ -x /usr/bin/systemctl ]; then /usr/bin/systemctl daemon-reload || : fi if [ "$FIRST_ARG" -ge 1 ]; then # Package upgrade, not uninstall if [ -x /usr/bin/systemctl ]; then ( test "$YAST_IS_RUNNING" = instsys && exit 0 test -f /etc/sysconfig/services -a \ -z "$DISABLE_RESTART_ON_UPDATE" && . /etc/sysconfig/services test "$DISABLE_RESTART_ON_UPDATE" = yes -o \ "$DISABLE_RESTART_ON_UPDATE" = 1 && exit 0 /usr/bin/systemctl try-restart saptune.service ) || : fi fi fiuk,OY`_-q/Y'~(go]l8u~d~{d${.8~]u.8]<e$#%AAAAA큤큤A큤AA큤AA큤A큤A큤AAAAAAAf f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f 466dc65201abca405e412ef24821d908be59120755e0d0bb45ef5a61f740c7b7cb22b788963797df46672c1f525ed7fa8ec0ed34ab8104117359bcaf5673e227bd013f3cfd82091ff2ce7a52d947d92a275e0a6e72b0b757617ef41da378d948049df77c69088f29dcafd3633f718dec20440f8868a721bd8069076c762e6ef651b36adbf52cc1d4725044670fc463a3c5a33701c1682ca9630179c66d3c996969e8900a3516be4ab071e94bd2c8deafe6ef47cc7c12c65c35e76c5cb995dff3d26e3cf627fed395f2280916c8bc072953a63b157558b4487ff7acbd1e407cc2add538ca8f5923d27881b5c7486af6454475864bb96b98ea9aeb87fabb373c72c77e065576be9b62467dbf14ec943460e1cad5cbf77962ad81a9c9ac34c02f1ca40dd73120e9a1be175fe88ed21bab1a38af441e092ddfc4e68d3882c171395a604c1e5ae8746da0979c2ccd2216d35f3ccd854c31ec90b2eb75d2bb433a6de8a72f4fe295e749ac0b436a7f4f04fb3629555462490172abad38564707a2569c29398fc245fc6b15961b9d3c6f1fa787862444d21cda33219ec7f46734718066a02bd1235f7718565b7e616f31e5c68ccf2a23db901b753e55e24a60fef5fe70df609929a1a1d57bb5be2050e34a30bc76d9af7e87faa94037f5c847c377dd8f50e6c7c857c78dd282d182b89856258dacb81bf76efaf30c7c938d5f0469131adfc3580b12ea8298c62e6127042dd3a86dec49bca28cf12c4f2d7ca3a83eb692ed2316a5f2d67772fde16dbad28a1a80ddb685a26585d6f1f46d70cf78d394087de76f18a958892229eaecf08aad137647801d1a765f794eaa4d21ea2e93a880582bee83100eeba1ebd6824d1e188b5f7d616499cae66702ff63431f94ad8e3ad5b5c24fd7c3fdbc6300ed965808843c687ee77e4d5047400e6c51689ccb7c6017c18c9494bcd40f1449fcb70904118f44af15f4a1c46331ba30dc2b24f4693e6da6ae159c6b6ef21a7628305cdc247e23c4aa4eab0d4e9dcf7618415dc19888f070db972d49cc503edf56c8cd88fe46d868450baef3beeb4a7a14529af5b43275e21acf9a03788a461d98ce7ac84424e9b649f4e266ee89d5778c82aa526c820c893f44615f8781b604bcb33392e00e23a7bf81aff4a15a9b7a2c7330e3b026cecc4d6477b7be44d61e48d9ae9882f13529bff6073d16eb26edaee3fa9a99d818cf3309d80ea5a24a16589479a19eafec3c42d1cc9557d9838bb481e1f4681dd0728fabf66a0c1160b773d79260bfc1001f0b621279f249ac16b41344997aece3b325339855f561c44aedfdf5d898b965a2d4d4e4ba79630e870576ba581cca5d83234df04604e094557d7b2180d932f20765c3ec68ae96f7e8a8e79485f3a643e0ee57754759be6047cc4e2ec3c4e0fdc27f18ffd4f9ab5ebb2384a250e5ae7c99f20e7b3afd9ba1ebcf19cb790e057d7a76505fac175114b8833b8c5f49cee6c5180d3db989e6ec5a91fb9c76a63d4369a1b9f9d0e95e73fe4a55a73ebf380a16f7eb370a3aeac0d112988d29adeeee865389fb54269edfd788197aa6ecdc7b509aacbbc82068be5e4f3ef09c9c2a1858a3db7a4278236ad3f5604279a753c232abf7cc01d74b879382ff4b623ac1bc6f90489f33784424e6bdf0422ac3adfa8cbbca94289b366397a93a1c1988971120ca9aacbe29a279fb12b314739bb0a776f90152cbdd7d1f5164d082eec8c40494b27c5eb51e7b5ab5c93a1ced93f866974fe470994353a99fc5a4bf4641c8a553d1bf69adb44dc1dddb08659e284ae3b23864d7e12b06a46053b99565569b0934b2c8585fceda159671e49c82539ca6fb3a7d1d3c69fe740224c8a3149a13208cb27064341583dba608422eefea1b2f5250194dee28d7ece4404a52bb6fd1053bbf6bfa06649a91d03df8cc53b67e51bb0d9393b23a13a12e5ac7cee942589c2b372b11cf587557a1b296c60320cd7ba7eca81a140c8c47defdd8e869f617ace2a385efc57e10da9e5a73ecd832a1227454d4ccf3fa479bf077a7a2f3cddb9d3b1cd2546761089d2d286eb9d1f371568e014df652b8bdd8141d7efbda4eaa4edaaf831be5204c608326c781752a7ccd2394e466d410eb51542bc7563f740ab2ee0eea934eedd26d79c6addd3d26f6434a8f30a8693dee62fdd2fdb6e012dd27bd9bc7ace73cb07d77dbbf7621f8aa162abaf511d3c89b5ca9da9693a278f4d0a140708513d5327c3ce4e7c152f5a11fe5bd3b3c40f23462e6718cb796c179349ac0db2ef00ff570db28628a584715c5488f83bdf271b560d0aaf7d6b7aa1e16977f707b1073b15abc71f2ea3ffabd4e03a4ae6a4d19c81ab89e62db0fc92b023fd81edc35d61c5cf2b991b8505003149c38e5c6cc114a11a944b698331133a226ea28afde6a06b4218fba210d6e66d645fe42d21d7f2205c871ebd248a614212f604f71aaa7e4c5f63085ec587e0b0e58c4cb7fee519eef1250fa247e8ca0c3e92b57c0bcf0d107af2d358536bdd8682f0398fad7952732ff30b180be6b7967b12f1c15e8ca0e8fcf1ce078da210028cfe69eddef7aa43f8d711913cd9e3eec02ae287fec018951dacc9664e827a21f8c394024103ded05f277c147cff87ae86a92ef13600e177bdc3cc0f033b83dc6ec08cf371738f3d8febe101085b66edad8220392f3486428a26261bc6f22487704da0b0490f026cbba3e8b6a3eb993c179797457637b669d95738e47dec0b08139ebb49b1613e8bb670c8398331db76891b32e4664b441fb8be6bfd34d031de1d5640ce938bddb2fd4cb0b4f3176c5bc599833854ab1d3779b28da6386bb76fd2ce7d047babc794d2ef5bac77c7a325d1b398950054ffd66056aff6874c5ad43e0ee57754759be6047cc4e2ec3c4e0fdc27f18ffd4f9ab5ebb2384a250e5ae27eceaf2b30e822cf885e23ffbd929266ba65137e67ee3d6cd5e544af67ea09c322639b22cdac9fc09b81a8f9b4faea692ca52c217b432f3f6eb3e788a198e2d316050bcde054202f885f0c0f7014857c8510ca3fd3d993ff1a4c0aaa2664e74f2f3ae32ba1a6627c8cf8c312248ddf2a1ab35e1b4c43619e2cc6d99e125e84e90f02e9acde06b8fe5ee3803f85df3b37358f93a4a95d0af637e92b5a7351433f871917fac9f0955b1394fea829af3abeb62afe6065ccdb0c4890c72381b24139ba817d9935f3179c13e66b6132e93ed732c01675b5bdf15227cf96eb951a77e74768067dd68daf6b1bd015da87b4e85ab3bf82e9a41d5447af3344521b448cb5a63c36a73aeb772d666f2cf918d53512bbd04f31494dc2555415674c6b425e3936e3fe84597e8c5da581f205eeaf987415df857026469248580c78537264f2ad666f7c9a1c34dbca35c1e2308076c7421edf0174c6124847f7d7aeda17ed73719f9e8ea1312c8bfd1567df3b71200b38e9aec4ba98380a4e534395511081fb72ad52b322104368243c42f51d27ec9d05510ed0043612e44f8e2768fbf01b142bb73168f28a5910795483a4664726ab05b27baff804b7882a607f8ed1abf0a90149c38e5c6cc114a11a944b698331133a226ea28afde6a06b4218fba210d6e66d82a9db46df2461c8872cd4eef2e4670611ab9e709bedab1d50a75556facd5b5d3d1040bfd8d777c887a08a25cf0b4190116929eeb841dcef3439b7583f22e909a53af82f2308ea848eecb545d69bb48dd12e40ada828701d5421fcfbbcdfbc34f4bf2daae98f1c1d41c1ae083c067d7743949dfc9b0057a1ffc0dff56bdcfd2685eb085c3fb5c4291dd84ef8e0cf50c2bbe4ac66017b342115226027ee46c39699707645af7d51706698de867190567fe2d748f4b94d568a7850772cc46a81366c9704c571ddf11993c23a1c11fcffc780afd9b60ce7d77b4e3aa037f9deb53b77435543815885d53a5b1d17604154bb3a342fd50101c35dd0fb827e8dca23943e0ee57754759be6047cc4e2ec3c4e0fdc27f18ffd4f9ab5ebb2384a250e5ae9d1dc42ad6ba5bcdd020b4595b2ab97fca7efcb435be1bde188db3530c557ee02aaac27dade3045a30c64834f4c1ce9f5a5a4864c43e547bec804bc6e0186f430a6af60fc7648d08bfd39ce750c7c7cc64be05a5ea9d4c5f0d20c737fa5796a9aca1ca85e1a143b67c08994a460dfc2d30d4b9429eed3dda6b875f4dd8464505c2e86cd543164f6cef8e0875da501b15eb66b2153f5b21d5463619ec5988e4590307c7c98f749a714e61eef72dd73a130ead5a3631acbf72af427af778a080acb403867c7456e434728993aceeb6048858bd09965d0fb80aa5a17e3e3e6fbdeb848ad8c81e2ca099080424895fd32f2198803148ae9527057478b6ecfeb7e5c60e886d3da5cfac25167e8649845c43e462bd7a8b8eb33b6cc351be12607302b590362ddd12131a4a472db74c9f5753c54b6122993d69d19f8497e59bdb616a27a2b9d45c2fe764cc84e60270794178535d8cdc165150a4abb551d4a2494abbcf71a003f5d5656f9d9350a56df4237dcf33735d2e67b42034c31a33cc21d278f36c49fd25530eb0e046a764630ae7d89c679ae9e75e9c79032c3d15d21aac3cf6service@@rootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootsaptune-3.1.3-150400.15.9.1.src.rpmconfig(saptune)saptunesaptune(x86-64) @ @     /bin/bash/bin/bash/bin/sh/bin/sh/bin/sh/bin/sh/usr/bin/cpupower/usr/bin/env/usr/bin/md5sumconfig(saptune)logrotaterpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)sysctl-loggersysstatsystemdsystemdsystemdsystemdsystemduuiddvim3.1.3-150400.15.9.13.0.4-14.6.0-14.0-15.2-1234-24.424.14.3f~f-e̫@eB=d/@aaba?=@^U @^@^ @]N@]X]@]@]4@]1]\-@[Ѱ@Z@Z|;Z3@Z1@Z.s@ZY|Y@YRHYY@X @X)@X @W@WWzOWQq@W!@abriel@suse.comabriel@suse.comabriel@suse.comabriel@suse.comabriel@suse.comabriel@suse.comabriel@suse.comabriel@suse.comabriel@suse.comabriel@suse.comabriel@suse.comabriel@suse.comabriel@suse.comabriel@suse.comabriel@suse.comabriel@suse.comabriel@suse.comabriel@suse.comabriel@suse.comabriel@suse.comabriel@suse.comgboiko@suse.comabriel@suse.comabriel@suse.comabriel@suse.comabriel@suse.comabriel@suse.comhguo@suse.comabriel@suse.comabriel@suse.comabriel@suse.comabriel@suse.comhguo@suse.comhguo@suse.comhguo@suse.comhguo@suse.comhguo@suse.comhguo@suse.comhguo@suse.com- update package version of saptune to 3.1.3 * remove note 1868829 from solution S4HANA-APPSERVER as it is a HANA DB note and was added by accident (bsc#1226093) * for verify and simulate output table - wrap content of the columns 'actual', 'expected' and 'override', if they exceed a width of 30 characters (e.g. net.ipv4.ip_local_reserved_ports) * support inline comments in /etc/sysconfig/saptune * change handling of the performance options. Check, if the settings are supported in the get-Functions too. This should fix the problem with some special Azure VMs (E20d_v5) on newer SLES SPs (jsc#SAPSOL-110) * SAP Note 2578899 updated to Version 48 setting kernel.pid_max to 4194304 and start sysctl-logger service- add require of package sysctl-logger for 15SP4 and 15SP5 too (jsc#PED-6220)- update package version of saptune to 3.1.2 * to support setups with saptune monitoring and heavy automation we limited the setting of our saptune lock to commands having the potential to change anything in the system. (bsc#1219500) * fix timestamp in log messages of saptune * remove redundant version information in header comment of note definition files * SAP Note 1656250 updated to Version 63 SAP Note 1771258 updated to Version 8 SAP Note 2382421 updated to Version 45 SAP Note 3024346 updated to Version 10 but without parameter value changes, only house keeping of the version section and comment updates * SAP Note 1984787 updated to Version 42 SAP Note 2578899 updated to Version 47 - add require of package sysctl-logger for 15SP6 (jsc#PED-5025)- update package version of saptune to 3.1.1 * typo in logfile directory name creates /varlog/saptune instead of /var/log/saptune (bsc#1215969) * SAP Note 2382421 fix missing handling for Azure systems regarding parameter 'net.ipv4.tcp_timestamps'. This exclude setting was left out during the last SAP Note update by mistake. * add parameter IGNORE_RELOAD to /etc/sysconfig/saptune to prevent saptune from stopping and starting the system tuning during package update Related to sapconf bug bsc#1209408. - create a flag file in preinstall and remove it in posttrans of the package installation to inform saptune that currently a package installation/update takes place so that some special situations can be handled as expected.- update package version of saptune to 3.1.0 * machine readable interfaces for saptune add json output support related json v1 schemas can be found after installation on the system at /usr/share/saptune/schemas/1.0/ (jsc#PED-2194, jsc#PED-2195, jsc#SLE-23696) * enhance the identification of the cloud service provider (jsc#SLE-23779) * add a command line syntax check * colorized and filtered output for 'saptune note verify' It is now possible to uses a 'color scheme' for the output to highlight the non-compliant parameter or to limit the verify output to show only non-compliant parameter. (jsc#SLE-23727) * add action 'saptune solution change' to switch to a new solution even that another solution was already applied. It's basically a 'revert OLDSOLUTION' && 'apply NEWSOLUTION'. This will change the Note order in case of additional applied Notes, but this is intended. The confirmation for the revert of the old solution can be suppressed by '--force' (jsc#PED-2196) * introduce a Trento naming convention for custom solutions in the saptune man page to support trento checks. (jsc#PED-4118) * deprecate action 'saptune note|solution simulate'. The action might get removed in a future saptune version (jsc#PED-2199) * deprecate support for the v1 vendor or custom specific Note definition file format (jsc#SLE-23725) * detect virtualization environment by 'systemd-detect-virt' and add the information to 'saptune status'. (jsc#SLE-23885) * enhance saptune with the new action 'check' to directly call the external check script '/usr/sbin/saptune_check'. (jsc#SLE-23726) * de-deprecate the MAXDB solution definition. It is still active supported by SAP. And add solution NETWEAVER+MAXDB (jsc#SLE-23724) * support inline comments in the Note definition files (jsc#SLE-23729) * rework Note representation in 'saptune status' output (jsc#SLE-24530) * fix problem with 'verify' output, if a sysctl parameter is empty on the system (bsc#1199527) * add hint to the manual page of saptune(8) regarding 'missing' line feed for 'saptune note applied' and 'saptune note enabled' It's intended. (bsc#1193714) * rework the version section to make it clear, which information needs to be provided (jsc#SLE-23722) * add more information to 'saptune status': differ between 'enabled' and 'applied' Solutions and add the related Notes. differ between Notes and Solutions in the staging area. rename 'system state' line to 'systemd system state' to prevent misunderstandings. add virtualisation information. * add tuning state to 'saptune status' output. The check of the tuning state (an internal 'verify' operation) can be skipped by using the flag '--non-compliance-check'. In this case the tuning state will be reported as unknown (checking disabled) 'saptune status' will exit with a return code of '4', if the saptune service is enabled, the system is tuned, but the tuning state is 'not compliant'. (jsc#SLE-24928) * add support for the IBM Power architecture to the vendor and model section tagging (jsc#SLE-23824) * add new SAP Note 1868829 to set fs.aio-max-nr and add it to the HANADB related solutions for SLE12 and SLE15. * SAP Note 3024346 updated to Version 6 SAP Note 1557506 updated to Version 16 SAP Note 1656250 updated to Version 46 SAP Note 1805750 updated to Version 9 SAP Note 2161991 updated to Version 28 SAP Note 2205917 updated to Version 63 SAP Note 2382421 updated to Version 45 SAP Note 2534844 updated to Version 15 SAP Note BOBJ updated to Version 1 but without parameter value changes, only house keeping of the version section and comment updates * SAP Note 1984787 updated to Version 40 SAP Note 2578899 updated to Version 46 SAP Note 2684254 updated to Version 23 SAP Note 1680803 updated to Version 27 includes version 3.1 of 'SAP Applications on SAP Adaptive Server Enterprise - Best Practices for Migration and Runtime' * Solution 'SAP-ASE' changed - remove SAP Note 1410736. The best practice document (version 3.1) for ASE was changed and the SAP Note 1410736 is no longer referenced. Instead the parameter 'net.ipv4.tcp_keepalive_time' is set in SAP Note 1680803 (the ASE SAP Note) directly. * introduce an additional parameter 'SKIP_SYSCTL_FILES' in the /etc/sysconfig/saptune configuration file, which contains a comma separated list of sysctl.conf files or directories containing sysctl.conf files, which should be excluded from the 'additional defined' WARNING messages. Default is SKIP_SYSCTL_FILES="/boot" to skip the WARNINGS for '/boot/sysctl.conf-' - check in preinstall and posttrans of the package installation, if the active tuned profile is still 'saptune', even that this profile no longer exists. If yes, try to remove it. (bsc#1194688)- update package version of saptune to 3.0.2 - avoid excluding LVM slaves when getting valid block devices (bsc#1194299) - fix 'not compliant' state for energy_perf_bias on Power systems and suppress misleading error message regarding missing 'mokutil' (bsc#1193435) - fix wrong behaviour of 'saptune revert all', if the saptune service was stopped between the two commands 'apply' and 'revert all' - 'saptune service enablestart|disablestop' now always perform both actions and does no longer stop working, if the service is already started|stopped. (bsc#1193241) - restrict the sys section of the AWS note 1656250 to the availability of a nvme block device to support AWS x1e instances too. sys section definition of Note 1656250 changed. (bsc#1192029) - abandon the dependency to 'mokutil' by relying on sysfs to detect a secure boot environment. Related to bsc#1193435 - support /etc/fstab entries with 4 instead of 6 fields as these are valid entries. Change error handling from 'panic' to error log messages. (bsc#1193580) - enhance man page 'saptune.8'. Add entry 'configured Note' and some more descriptions of the entries from 'saptune service status' (bsc#1192697) - as the Power systems (hardware architecture 'ppc64le') does not support files in '/sys/class/dmi' (this directory is not available on the 'ppc64le' hardware architecture) some of our section 'tags' will not work. Add some additional log messages to identify the cause and add a hint to the man page. - fix block device settings (e.g. NRREQ) for multipath devices (bsc#1193576) - 'saptune verify' will now report a non existing sysctl or sys parameter as 'not available on the system' (footnote) and this parameter will not affect the compliance state. But a warning is displayed to raise attention to may be typos in the parameter name. - 'saptune status' now reports the 'real' unit state, no mapping of not running (inactive) service to simply 'stopped' any more. (bsc#1194334)- update package version of saptune to 3.0.1 - fix the scheduler settings for multi path devices and suppress missleading warning messages regarding vendor and model information during block device detection (bsc#1192460) - fix override of custom solutions (bsc#1192062) - add missing update function for enabled solutions and add a special fix to correct the 3.0.0 behavior (bsc#1192053) - saptune_check - degraded system is no longer considered an error (bsc#1192272) - log missing model and vendor information to the saptune log file (bsc#1190509)- update package version of saptune to 3.0.0 This will be additional reflected in the saptune version found in /etc/sysconfig/saptune (SAPTUNE_VERSION) So now we will have saptune version 3 - saptune version 3 Strengthen configuration process with staging, checks of external changes and expansion of automation to new platforms (Azure, AWS) and hardware specifics (jsc#SLE-21029 and jsc#SLE-20985) - remove saptune version 1 (jsc#SLE-10823 and jsc#SLE-10842) - remove usage of tuned from saptune Add an own systemd service file for saptune to start/stop tuning of parameter values during a reboot of the system. Add a new saptune action 'service' to handle the saptune.service supporting start/stop/enable/disable/status a.s.m. The saptune action 'daemon', which handled tuned.service in the past, is now flagged as 'deprecated' and internally linked to the new action 'service' (jsc#SLE-5589, jsc#SLE-5588, jsc#SLE-6457) - add a sanity check to detect Note definition files which do not exist anymore, because they were renamed or deleted, but without reverting them before. saptune will now print an error message, remove the Note from the tracking variables in /etc/sysconfig/saptune and try to revert the related parameter settings. (bsc#1149205) - check, if json input file is empty and handle some left-over files from the migration from saptune v1 to saptune v2 (bsc#1167618) - To support system parameters only relevant for specific SLES releases, service packs and/or hardware architectures saptune now supports 'tagged' sections inside the Note definition files. (jsc#SLE-13246, jsc#SLE-13245) - new kernel requirement for Power added to SAP-Note 2205917 and 2684254 SAP Note 2205917 updated to Version 61 SAP Note 2684254 updated to Version 15 (bsc#1167416) - SAP Note 2382421 updated to Version 37 and move all 'not-well-defined' parameters from the 'reminder' section into the 'sysctl' section, but with 'empty' values. Use an override file to define the values fitting your system requirements (bsc#1170672) - support empty parameter values in the Note definition files and not only in the override file. This is needed for the support of SAP Notes like 2382421, so that the customer is able to simply use an override file to define some special parameters instead of using a customer specific Note definition file. needed for bsc#1170672 (jsc#TEAM-1702) - report an 'error' instead of 'info' and set the exit code to '1', if we reject the apply of a solution (bsc#1167213) - Skip perf bias change if secure boot is enabled When a system is in lockdown mode, i.e., Secure Boot is enabled, MSR cannot be altered in user-space. So check, if Secure Boot is enabled using the mokutil utility and skip setting the perf bias in case it is. (bsc#1176243) - rework the internal block device handling to speed up the apply of block device related tunings on systems with a high number of block devices. (bsc#1178207) - change block device handling to handle multipath devices correctly. Only the DM multipath devices will be used for the settings, but not its paths. (bsc#1179275) - fixed wrong comparison used for setting FORCE_LATENCY (bsc#1185702) - add keyword 'all' to the 'rpm' section description in the man page saptune-note(5) (bsc#1182287) - support note definition versions containing digits, upper-case and lower-case letters, dots, underscores, minus and plus signs. (bsc#1182289) - fixed issue with 'verify' operation and parameter 'VSZ_TMPFS_PERCENT'. As this parameter is only used to calculate the value of 'ShmFileSystemSizeMB' (if it is not set to a value >0 in the Note definition file) it will not be checked and compared during the saptune operation 'verify'. A footnote is pointing this out. (bsc#1182009) - SAP Note 1771258 update nofile values (bsc#1164720) - SAP Note 2684254 updated to Version 20 SAP Note 2578899 updated to Version 39 SAP Note 1680803 updated to Version 26 - enhancements for saptune version 3 All jsc#TEAM-* entries mentioned below are related to this rework (jsc#SLE-16972) - Implement a lock to avoid multiple instances of saptune running in parallel. (jsc#TEAM-1700) - Support for non-colorized output If redirecting the output from saptune to a pipe, you no longer need to deal with the 'ugly' control sequences for the colorized output. (jsc#TEAM-1679) - Add enable/disable for systemd units and support all systemd unit types in section [service] (jsc#TEAM-1701) - remove script /usr/share/doc/packages/saptune/sapconf2saptune and the associated man page (jsc#TEAM-1707) - implement staging of Note definition file and solution definitions. The idea is to freeze the saptune configuration to avoid config changes on package update when adding/removing/changing notes or solutions within the package (jsc#TEAM-1844) - support custom solutions and override files for solutions. Partners and customers will now be able to define their own solution definitions by using files in /etc/saptune/extra or to override the shipped solution definitions by using override files in /etc/saptune/override (jsc#TEAM-1706) - support for device specific configurations only supported for the [block] section, tags are 'vendor' and 'model' to support special block devices of a dedicated hardware vendor or a dedicated hardware model (jsc#TEAM-1728) - add support for AZURE cloud (SAP Note 2993054) (jsc#TEAM-2676) - add support for AWS cloud (SAP Note 1656250) (jsc#TEAM-1754 and jsc#TEAM-1755) - add NVMe support to the block device handling to support AWS (jsc#TEAM-2675) - add SAP Note 3024346 (a NetApp note) (jsc#TEAM-3454) - rework daemon and service actions (jsc#TEAM-3154) - add support for 'read_ahead_kb' and 'max_sectors_kb' to the [block] section (jsc#TEAM-1699) - add a warning to the reminder section of SAP Note 2382421 regarding iSCSI devices and setting of 'net.ipv4.tcp_syn_retries' (jsc#TEAM-1705) - for the actions 'note customise' and 'note create' check, if the customer has changed something during the editor session. If not, remove the temporary created note definition file. (jsc#TEAM-825) - add support for [sys] section and handle double configurations for parameters defined in the [sys] section (jsc#TEAM-3342) - check system sysctl config files as mentioned in the comments of /etc/sysctl.conf and in man page sysctl.conf(5) for sysctl parameters currently set by saptune notes. Print a warning and a footnote for 'verify' and 'customize'. (jsc#TEAM-1696) - add support for [filesystem] section only check filesystem mount options, not modify. Starting with filesystem type 'xfs' (jsc#TEAM-4093) - add SAP Note 900929 for SAP Netweaver workloads. It's the equivalent to the HANA Note 1980196. (jsc#TEAM-4386) - mv state files from /var/lib/saptune to /run/saptune to solve the problem of state files surviving a reboot. - add /sbin/saptune_check - add the description of the solution definitions shipped with saptune to the man page saptune(8) (jsc#TEAM-4260)- update version of saptune v2 to 2.0.3 - changes to the UserTasksMax handling in saptune In SLE15 the limit is removed from the systemd login manager and therefore the setting is no longer supported in SLE15 by saptune. On a system running SLE12 we do not restart the logind service, but try to reload the new configuration after creating or removing the drop-in file for UserTasksMax by using 'systemctl reload-or-try-restart systemd-logind' as display managers do not like a restart of the logind service. (bsc#1161791) - add commands for listing enabled Notes/Solutions to saptune (bsc#1160564) - correct typo in the year in the man page headline of man page saptune-note(5) - SAP Note 1410736 updated to Version 6 correct typo net.ipv4.tcp_probes to net.ipv4.tcp_keepalive_probes- if a parameter is not supported by the system, the note action 'verify' will no longer report this as an error even if the value is not compliant. Additionally if there is a non compliant 'grub' parameter, which has a compliant 'alternative' setting availabel (see man page saptune-note(5) for details), the note action 'verify' will no longer report this as an error (bsc#1159671)- remove no longer needed and now misleading message at the end of note action 'revert'. - check, if sapconf service is available before disabling this service during 'saptune daemon start' (bsc#1156049)- add action 'delete' to the 'note' operation to delete a customer or vendor specific Note definition file including the corresponding override file if available. A confirmation is needed to finish the action. add action 'rename' to the 'note' operation to rename a customer or vendor specific Note definition file to a new name. If a corresponding override file is available, this file will be renamed too. A confirmation is needed to finish the action. If the Note is already applied, the action will be terminated with the information, that the Note first needs to be reverted before it can be deleted or renamed. (jsc#SLE-9283)- Inform the customer that - by intention - the command 'saptune note customise ' does not apply changes immediately. It just changes the configuration in the 'override' file. These changes have to be applied in a second step. This is explained in the man page saptune_v2(8) and a message is printed in the logs and on the screen to inform the customer. (bsc#1142467)- Add warning to man page, not to rename/remove/modify active configurations (bsc#1149002)- update version of saptune v2 to 2.0.2 - support multi-queue I/O scheduler for block devices (bsc#1152598)- check, if the directory /etc/security/limits.d exists before writing the limits drop-in file. If not, create it. - add the '--no-pager' option to 'systemctl --list-unit-files' to get all services at once. - add missing search pattern to the update helper script to find all old and superfluous notes during upgrade from SLE12 to SLE15 For the daemon operations do not exit with an error, if a note definition file does not exist. Instead only log and print an error message, but continue with applying the other notes (bsc#1142526)- on 12SP1 and 12SP2 the directory /etc/security/limits.d may not exist. So create the missing directory during postinstall of the package.- update version of saptune v2 to 2.0.1 - update version of saptune v1 to 1.1.9 for migration purposes - resetting all values to clean the system during package removal - bugfixing saptune version 1: fix saptune issues with /etc/security/limits.conf (bsc#1124485) add deprecated message to the description of some notes set scheduler for note SUSE-GUIDE-01 correctly (bsc#1123808) No additional improvements or upgrades planned for saptune v1 For new features or current SAP Note settings please migrate to saptune v2. - support migration from saptune v1 to saptune v2 ship both versions of saptune in one package to support a smooth migration controlled by the customer. see man saptune-migrate(5) for more information - support note name changes and note deletion during update of saptune v2 from SLE12 to SLE15 - support different SAP Note definitions and solution definitions related to the used operation system version (distinguish between SLE12 and SLE15 at the moment) - Remove calculation of optimized values, only set the values from the configuration file irrespective of the current system value. Current system value can be increase or decrease. ATTENTION: saptune no longer respects higher system values. Use the override option to change the values of the Note definition files, if needed (bsc#1124488) - mark the Notes SUSE-GUIDE-01 and SUSE-GUIDE-02 as deprecated in saptune v1 and remove these Note definitions from saptune v2 (bsc#1116799) - add support helper script sapconf2saptune and the man page - add new man pages saptune_v1.8, saptune_v2.8, saptune-note.5 and saptune-migrate.7 rewrite man page saptune.8 - add bash-completion for saptune - add action 'show' to the 'note' operation to print content of the note definition file to stdout - add new action 'create' to support the customer/vendor while creating a vendor or customer specific file in /etc/saptune/extra using the template file /usr/share/saptune/NoteTemplate.conf - simplify file name syntax for the vendor files available in /etc/saptune/extra. Old file names still valid and supported. Add header support (version, date, description) for the vendor files available in /etc/saptune/extra as already available for the note definition files in /usr/share/saptune/notes - no longer write or remove entries from /etc/security/limits.conf. Instead add or remove drop-in files in /etc/security/limits.d The filename syntax for the drop-in files /etc/security/limits.d is saptune---.conf The limits entry syntax inside the Note definition files changed to support more than one limits settings in the definition file (bsc#1128322) - preserve comment sections of the security limits file /etc/security/limits.conf. Especially, if this is the only content of the file. (bsc#1124485) - work with the current Note definition file to define the pagecache settings and not with the default file rename PAGECACHE_LIMIT_IGNORE_DIRTY to the correct sysctl name vm.pagecache_limit_ignore_dirty (bsc#1126220) - setting of UserTaskMax is not done in the postinstall of the package. It's now done by applying the related SAP Notes. (bsc#1124489) - starting to support severities INFO, WARNING, ERROR and DEBUG for the logging and add a defined format for the log messages - remove saptune as active tuned profile during action 'saptune daemon stop' - start/stop services, if requested by SAP Notes, but do not enable/disable these services (bsc#1128325) - adapt the parameter oriented save state file handling (store and revert) to the special needs of the security limits parameter (bsc#1124485) - disable parameter settings using an override file (bsc#1124486) - store the order of the note as they are applied to get the same system tuning result after a system reboot as before - correct the revert of the vm.dirty parameters by handling their counterpart parameters in addition. (bsc#1124487) - adjust operation customize to the new configuration files and override location and enable customize option for vendor and customer specific files in /etc/saptune/extra (bsc#1124487) - Change output format of the operations list, verify and simulate (bsc#1124487) - Display footnotes during 'verify' and 'simulate' (bsc#1124487) - print current applied note order at the end of 'saptune note list' and 'saptune note verify' - remove Netweaver formula for page cache calculation. Use the HANA approach '2% system memory' for both - display a warning message, if a [block] section is found in the Note definition file because on systems with a huge number of block devices this operation may take some time - Add force_latency handling to 'cpu' section. Use the files in /sys/devices/system/cpu/cpu* instead of /dev/cpu_dma_latency. Remove the parameter from the tuned.conf file and add it to the SAP note files '1984787' and '2205917' - Add action 'saptune revert all' and add parameter based saved state files to support proper revert functionality (bsc#1124487) - Add override file handling for the solution definition using /etc/saptune/override/solution (bsc#1124486) - Read solution definition from file /usr/share/saptune/solution instead of static coding inside of saptune. (bsc#1124486) - tag deprecated solutions during list operation - allow only ONE solution to be applied - new solution definitions as discussed with SAP and Alliance team - support solution names with '+' - make sure a note, which is part of an applied solution definition, but was reverted manually later, will NOT applied again after a system reboot. - One configuration file per SAP Note (bsc#1124486) - add new SAP Notes and adapt content of SAP Notes - Handle different locations of the new configuration files (/usr/share/saptune/note, /etc/saptune/extra) (bsc#1124486) - Allow parameter override by the customer (bsc#1124486) - Expand section handling of the 'ini file' handler to handle the new configuration file entries. Supported sections: version, reminder, login, mem, vm, block, limits, sysctl, pagecache, cpu, service, rpm, grub (bsc#1124486)- remove new line from println arg list of main.go to support newer go versions. (bsc#1120741) - update version to 1.1.8- never ever stop or disable uuidd.socket in saptune (bsc#1100107) - update version to 1.1.7- correct content of /etc/systemd/logind.conf.d/sap.conf. (bsc#1089864) - improve error messages and exclude special block devices from 'number of request' settings. Improve the verify option for the block devices. (bsc#1079599)- Fix a typo in package description. (bsc#1053374) - Update from version 1.1.3 to 1.1.4- Start to support multiqueue schedulers. Writing a message to the log file, if a block device does not support the choosen scheduler. (bsc#1072562)- Check, if pagecache limit is available at the system. If yes, add SAP note 1557506 to the note list and the solution definition of saptune. If not, skip SAP note 1557506 silently (bsc#1071539, fate#323778)- Skip using tuned-adm command inside of saptune. Instead write 'saptune' profile directly to /etc/tuned/active_profile and enable and start the tuned service Remove the workaround for the tuned problem with section [cpu] (bsc#1060514)- workaround for a tuned problem with section [cpu] (bsc#1060514)- support customer entries in /etc/security/limits.conf containing values like 'unlimited' instead of an integer value. (bsc#1060469) - change error handling and redirect error messages to stderr instead of stdout. (bsc#1050521)- Fix a typo in package description. (bsc#1053374)- Amend logind's behaviour (bsc#1031355, bsc#1039309, bsc#1043844)- update man page to reflect the changes for bsc#1026172- add solution SAP ASE (Sybase) and SAP Business OBJects (BOBJ) according to fate#320359.- Support of vendor specific tune files located in /etc/saptune/extra (bsc#1026172).- Tune a PowerPC little endian system in a way similar to x86 system. Bump version to 1.0.5 to fix (bsc#1009529).- Fix processing of CLI parameter "--help" (bsc#1006114). - Fix startup failure caused by absence of sapconf package (bsc#1006187).- Avoid conflicting with sysconfig path of sapconf. (bsc#988186) Bump versin to 1.0.3.- Remove conflict against sapconf to resolve bsc#988186. Bump version to 1.0.2.- Exclusively build on X86_64 and PPC64le. Continue with fate#320360, fate#320361, fate#320362, fate#320633.- Remove ExclusiveArch. - Control uuidd as part of the tuning process. - Minor changes in the wording of CLI program output. - saptune conflicts with sapconf. - Bump version to 1.0.1. - fate#320360, fate#320361, fate#320362, fate#320633.- First revision. Implement fate#320360, fate#320361, fate#320362, fate#320633./bin/sh/bin/sh/bin/sh/bin/shh01-ch3c 1722223521  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz3.1.3-150400.15.9.13.1.3-150400.15.9.13.1.3-150400.15.9.1 saptunesaptuneextraoverridesupportconfigpluginssaptunesaptune.servicercsaptunesaptunesaptune_checksaptunesysconfig.saptunesaptune-note.5.gzsaptune-migrate.7.gzsaptune.8.gzsaptuneNoteTemplate.confSolutionTemplate.confdeprecatednotes14107361656250168080317712581805750186882919801962161991238242125348442578899268425429930543024346900929941735SAP_BOBJschemas1.0saptune_check.schema.jsonsaptune_daemon_start.schema.jsonsaptune_daemon_status.schema.jsonsaptune_daemon_stop.schema.jsonsaptune_help.schema.jsonsaptune_invalid.schema.jsonsaptune_lock_remove.schema.jsonsaptune_log_set.schema.jsonsaptune_log_status.schema.jsonsaptune_note_applied.schema.jsonsaptune_note_apply.schema.jsonsaptune_note_create.schema.jsonsaptune_note_customise.schema.jsonsaptune_note_customize.schema.jsonsaptune_note_delete.schema.jsonsaptune_note_edit.schema.jsonsaptune_note_enabled.schema.jsonsaptune_note_list.schema.jsonsaptune_note_rename.schema.jsonsaptune_note_revert.schema.jsonsaptune_note_revert_all.schema.jsonsaptune_note_revertall.schema.jsonsaptune_note_show.schema.jsonsaptune_note_simulate.schema.jsonsaptune_note_verify.schema.jsonsaptune_revert_all.schema.jsonsaptune_service_apply.schema.jsonsaptune_service_disable.schema.jsonsaptune_service_disablestop.schema.jsonsaptune_service_enable.schema.jsonsaptune_service_enablestart.schema.jsonsaptune_service_reload.schema.jsonsaptune_service_restart.schema.jsonsaptune_service_revert.schema.jsonsaptune_service_start.schema.jsonsaptune_service_status.schema.jsonsaptune_service_stop.schema.jsonsaptune_service_takeover.schema.jsonsaptune_solution_applied.schema.jsonsaptune_solution_apply.schema.jsonsaptune_solution_change.schema.jsonsaptune_solution_create.schema.jsonsaptune_solution_delete.schema.jsonsaptune_solution_edit.schema.jsonsaptune_solution_enabled.schema.jsonsaptune_solution_list.schema.jsonsaptune_solution_rename.schema.jsonsaptune_solution_revert.schema.jsonsaptune_solution_show.schema.jsonsaptune_solution_simulate.schema.jsonsaptune_solution_verify.schema.jsonsaptune_staging_analysis.schema.jsonsaptune_staging_diff.schema.jsonsaptune_staging_disable.schema.jsonsaptune_staging_enable.schema.jsonsaptune_staging_is-enabled.schema.jsonsaptune_staging_list.schema.jsonsaptune_staging_release.schema.jsonsaptune_staging_status.schema.jsonsaptune_status.schema.jsonsaptune_version.schema.jsonscripts.updhelpupd_helpersolsBOBJ.solHANA.solMAXDB.solNETWEAVER+HANA.solNETWEAVER+MAXDB.solNETWEAVER.solS4HANA-APP+DB.solS4HANA-APPSERVER.solS4HANA-DBSERVER.solSAP-ASE.solsaptunestaginglatestworkingnotessolssaptune/etc/logrotate.d//etc//etc/saptune//usr/lib//usr/lib/supportconfig//usr/lib/supportconfig/plugins//usr/lib/systemd/system//usr/sbin//usr/share/bash-completion/completions//usr/share/fillup-templates//usr/share/man/man5//usr/share/man/man7//usr/share/man/man8//usr/share//usr/share/saptune//usr/share/saptune/notes//usr/share/saptune/schemas//usr/share/saptune/schemas/1.0//usr/share/saptune/scripts//usr/share/saptune/sols//var/lib//var/lib/saptune//var/lib/saptune/staging//var/lib/saptune/working//var/log/-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:34745/SUSE_SLE-15-SP4_Update/66808ab9302d2957d845d9fce2515396-saptune.SUSE_SLE-15-SP4_Updatedrpmxz5x86_64-suse-linux ASCII textdirectoryBourne-Again shell script, ASCII text executableELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, strippedBourne-Again shell script, UTF-8 Unicode text executable, with very long linestroff or preprocessor input, ASCII text, with very long lines (gzip compressed data, max compression, from Unix)troff or preprocessor input, UTF-8 Unicode text (gzip compressed data, max compression, from Unix)UTF-8 Unicode textWindows setup INFormation, ASCII textRRR -jk*7# Use a real bash script with an explicit "exit 0" at the end to be by default fail safe # an explicit "exit 1" must be use to enforce package install/upgrade/erase failure where needed # Begin refresh systemd units and clean up possibly obsolete systemd units # The following is a generic way how to refresh and/or clean up systemd units. # A systemd unit may need a refresh after updating a package when the new package # had installed a changed systemd unit file for an enabled systemd unit. # A systemd unit may become obsolete by updating a package (see bnc#904215). # A systemd unit is considered to have become obsolete when the systemd # symlink /etc/systemd/system/.../unit_name -> /path/to/unit_file is broken. # When during package update the new package does no longer provide a unit file # then the systemd symlink becomes broken after the files of the old package # had been actually removed by RPM. # According to /usr/share/doc/packages/rpm/manual/triggers and according # to https://en.opensuse.org/openSUSE:Packaging_scriptlet_snippets#Scriptlet_Ordering # and http://fedoraproject.org/wiki/Packaging:ScriptletSnippets#Scriptlet_Ordering # from the new package only "posttrans of new package" is run after "removal of old package" # so that the new package must do the clean up as RPM posttrans scriptlet. if systemctl --quiet is-enabled saptune.service 2>/dev/null; then # Refresh still valid enabled systemd units and clean up possibly obsoleted systemd units: # Enforce systemd to use the current unit file which is usually the unit file of the new package # but also in case of custom units (that use other unit files) a "reenable" won't hurt because # "reenable" does not implicitly stop a running service which is "the right thing" because # a RPM package installation must not automatically disrupt (restart) a running service. # Using "--force reenable" is essential to clean up possibly conflicting/broken symlinks. # (without "|| :" build fails with "Failed to get D-Bus connection: No connection to service manager. posttrans script ... failed"): systemctl --quiet --force reenable saptune.service 2>/dev/null || : else # Refresh still valid disabled systemd units and clean up possibly obsoleted systemd units: # First using "--force reenable" is essential to clean up possibly conflicting/broken symlinks # because there is no "--force disable" that would clean up possibly conflicting/broken symlinks # see https://bugzilla.opensuse.org/show_bug.cgi?id=904215#c34 # so that first the unit has a clean state and then it is set back to disabled (as it was before). # If a disabled systemd unit has become obsoleted, "systemctl --force reenable" will clean it up # which means the unit gets removed and the subsequent "systemctl disable" will do nothing. # (without "|| :" build fails with "Failed to get D-Bus connection: No connection to service manager. posttrans script ... failed"): systemctl --quiet --force reenable saptune.service 2>/dev/null || : systemctl --quiet disable saptune.service 2>/dev/null || : fi rm -f /run/saptune_during_pkg_inst if [ -f /tmp/update_v1tov3_saptune_inst ]; then rm -f /tmp/update_v1tov3_saptune_inst || : # get back custom note definition files for BOBJ and/or ASE # needed for migration, if customer had applied these notes /usr/share/saptune/scripts/upd_helper v1tov2pt || : else # cleanup of old saptune v1 sysconfig files # leftover from customer migration for file in saptune-note-SUSE-GUIDE-01 saptune-note-1275776 saptune-note-SUSE-GUIDE-02 saptune-note-1557506; do if [ -f /etc/sysconfig/${file} ]; then rm -f /etc/sysconfig/${file} fi done fi if [ -f /tmp/update_sle12tosel15_saptune_inst ]; then rm -f /tmp/update_sle12tosel15_saptune_inst || : # check for SAP Note name changes between SLE12 and SLE15 /usr/share/saptune/scripts/upd_helper sle12to15pt || : fi if [ -f /tmp/update_saptune_staging_area ]; then rm -f /tmp/update_saptune_staging_area || : # handle staging area and DON'T touch the working area, needs to run # after 'upd_helper sle12to15pt' /usr/share/saptune/scripts/upd_helper staging || : fi if [ -f /run/saptune_is_active_in_tuned ]; then # cleanup 'saptune with tuned is active' indicator rm -f /run/saptune_is_active_in_tuned || : # if saptune with tuned support was used/active (in v2 mode) # stop and disable tuned service # enable and start saptune service # (jsc#SLE-10987 decision) (systemctl stop tuned.service; systemctl disable tuned.service; systemctl enable saptune.service; systemctl start saptune.service) || : fi # bsc#1194688 - sometimes the tuned active profile is still 'saptune' even that # the profile no longer exists. Try to clear. [[ $(cat /etc/tuned/active_profile 2>/dev/null) == saptune ]] && (> /etc/tuned/active_profile) || : exit 0/bin/bashsystemd-sysvcompatutf-8e0ba73af128aa4d3a3a4a4002d7ca412a968cb3217e91d6b0ac13d067a59b62a?P7zXZ !t/3]"k%{dC3 #D>S (/@9V,ct|>RP8נuiB q[g%3&WEEgL,%U"fvJ"?}1ag4OPR'.)|8p_^-AwEd6p nAo뒚8]GHPld^v:cA*+5pӣ;3%)_`-T@7NiJ"b fZCqq2{/'X12&]91$NZS- _pR-{'}2'-R:8C XQլn xvO>V$8T1b.ڊB26X u1H <pDG{ UϟnElZVy#G 2-']9fB&DI xHSF'.+TU; .SyK|]wdkCߖZr,|2R/$#TLC9F9J'GNV3r_D.Q#Y5䟪/]jtۃ(O2È`ɪyaVC!i%_YMw8^d<ՓmxGn7W[dvyҠIΐiDI>Ґ¾Zam' s` ګC9"'fOnP^X }vAA*vC1Ƀji^ ?1_9z yR"xKurZ Y3TsjmDC#H7{)HBbO†#U]0ɡ`"n<*azO*,y#$ď(n?)tg|.p\R/{o"sz^=21DtNB  뀚L q7[a?GL(Z"FTg:>"'6DǼmv:v[9{OxSԱR)m9nQ!ec6Bd-爘a,[Dg47- Nو0,{ X Q.l[iQR VEΣڱA?-[rBK9]ΟRE&sH)\ب)W<̿ji峍$e1^.mL2(+d>V=TK׮%-=# exׇ;$8G (R)ePXCswɽ!U;qĥ6/%H"LXFj_4gSXc }0lix+P8$p 1y {MK2vh)ݳ{}y Gl>jHX秽ĚdkVga!Ť9=Q[M6Ի@%5 L4p4]t ~΃%M deABP8R|*Sgv;Ej{S踐orYmdmT>Ct̶A|~0{1߭3-[ o_Bt@觍T-6+Nf#p8vmD,wH~/_WS C0}n(oN?Y#Y5z RpmF(qT+cZ Zn3F\e9'{]88F"O9ݺ(BmN.E{ׄKpdE)j+ |[rТR{N#fk^67N1Ss 1+x9`"%oZIOPC+-E!rU,Z_`#~roL |ʷ 'j=2E{ *.wS >Vu 0yϽ=Z,""J]F׵us)ofW;ASȒ7'L> Wh!#_v>wu)Lc铘XʚC?@ks}v0rIفc/ 7Vsbd8Wq Zx[p՛Xi uœAoSg\YtnOiNߚ^QJsħch(k˭Z$1+ j'ÔN"| ρ9V,}Jpض8jϨzNPH1Lht R]xjyZry t.D?Zu9\(R]XJ,i6QpvU !͗*~ǭ9i^p@L=xmp*T/"Z_!.31zp1d磘k∌,]@Cxqq=fj~DD"Albe7dG3\mj_/4qKڒO*i :K\ko"{zuZORCօZE\$S(*%7ZJh$a`NЋ>dzF*d:ʵ B,w+ SAY,I#P4*?ުigg5"w4)W5S3"ψ<dJ\G<q#W6 uZO>P;uf NO *|,Ckgໝg%? b"17א6P(۲'`Z%jM~.)ۧ_DGػoATt;'t1,l%ïvŃkWF2xzeHlÍq !]&kg&=F$A1B(|3.k~](x:k~A)ŞP } {Gѕ=+`UWEРF̓Gh83 g! &h.px˝d9~"K:x(!ll|lC_F9!md횋Fk#dPN"vz=f/Jnֱ k2UM^=DŽsu 9 5څӒHi')kLaIí9kmXPNiCK{<~7s,QO{*Xa2Nomy~^gߘ҉e$hk7K9C5x4O>?  ~>e tk]04ֶ݉C3d8gGfwj_}pc3=(Bǘn_(a5clן YfKN@+|8aZ{0t?tbm- !Ky0+gM?lٟg*fIEݹ-1gS`uMnJXR$L*KFWY =Vw^RB+Dv'P"}$.OvOLoSg!Dk=L+ U:G]Y8Y#0ŗ^֕P @:(vXoɨkQvNa}A= U[A_ JY[f^'Xi~f|6x&H.]򒆕!@Q lru'cRSm2,uw_EWw_a YvHӱT:lbQ2/Y!4:vuT Dz?RlŅ\?Ǻ/Zwzb[W54]ёVɲǤ`F vaRk(;|f{tT2=R tegЯܮI̼vn_QS{mlM#IiLӜTC Q ZHR5;㱄)o6 *ƮkvW}Wc;3_[WT:er{8--lmRh,4F_8TB ۔@]sU/*`d]U6X 9(c>r/Y^gtT??xC)4ҹC:л%dY&& ]˭1n^aPEK߀,?T4jZ9CmIqۖ1+XPrQ{`A0d vX8Y@THxFlaTcA+\ fzMͨ%C$Ar4,P>D p#1fQXĘ5He\e:>ZLŋ;y=)"5vGyEes.瑚Q<9pxOym;0L[tE=.x'zqza`|It 0īYY`jbAc{3@0s^tܘ}I1Zcn$ωSsi Z5xDuNnwVMK P(#q,D#Zsi6r~^mCnn=SSUzCq̭vKߟlwqjkm^;Ak >{$X 2eC⼲y3;1םg!q @7N\yӠbAp% ?)2`d+w;[)&t2CFbÄgD Z=]N<1H@:N.+odbKUpe`?[g^qC[3Џg(By -h`|d~hTs+XcF4P]A9c>DvF"z/\>{!JF@Lׁa/HɫUAiDG,@Pv ;شtYEDPix=EC5N])DŸ LVMݯ b;k"I"G* ]MrAiH+C)=\.1}2(qߡ- Ha=usV9?Sb?u#PRDBEHQ/˨WKhx2XXFJ-ާ,9/C,5l;@eEVnVB*4VW] hm:+gvx#'a׭8趓nTz,ceR@HزAp\yR*VRsnP^)18 'R 1p!X.5ڽ_nSµ)x]C7?@"X,ɀ/h3c(^D {wy= u|hI!)r#|lERty4A&F~3'3zz&0lC#baM\pMD]QR<d/O?JBUCpSRL&|!8ѰXWIkўr3+vM Qm.ລ3ǁI7w-|TN>q3J dy?#Q u$cf]Nah WI1OF[Q|ۖm&\w4E:R2%CZ? \ƦYte+Nl o~8jRYRvWA 6IŻQi>4/(R˷X~'(5sg̓xЉSu2v6+ ~nK_hz!JlIZHlߗqVp 4x0!l|i"#sWu5SX8[/,vn%xj7\~MZnQmq$jQwDž Jς aAw=9bR/QZ8+jvLc.gYn A9:s81$K畫yvuZCxdcikA" Tkv|LILVj/gѯQ*@'xFR|Ǫzg>CD̘7mZ1 Ÿ*[j{5G^Pы'td݃TJADWǶ׳ ޮxb#ݥL'k7T#e..8mJziV'.F{t K n,Y vthet.[|'/O-’sf,@y1̀_k֞d2MȭxA)̣>+\8fĘYn+֯{ɈPuC! 迮8j.ey TqLWMI!ԣߘUO}/)N\t$ZE}w䬛Jx`Kc #Sl5o,c~7C1,PcE0Ws䊷<ӿ>k=NθYN `#Z( F;k&b0Qp @cBz?@Sl F7,"P!d+7SOfEw)Mv4!VW9!UqE|%"0h-6QV2hJ Lv)]X79"'̂tY ?Ƭ*MXNa&P/)=_^%~8G{SoB?]d R;`Iz71^q:T$kK]2T Li $iʠlZ:-,DnIrZ;"Y'V[#{qwo AWoXfQ>|NsFm Rs;%D^,p:\4怶3ю\6~^qMqI//ͯfь́D}/̚(p;.?«=,_W}REu74?8%Y3y~@|11.D'^= c -Y:Ov%?d-i2:_TOG vwQ$)0M߿쪫 +tw1`8ȧh hSO{U[=a<Dy3gƒ|gH#l1!0<~+@n+NCⁱ&>kUKM.c9bYdBWOdcR13?X9σ9X-(jȤ"’* "@HHKE!e5!#Yh~gw~cQ 5Z5Tj.W6#& P鳤8_msmޅ>,{C94سfr^2׍-m;V+ 4Tmޘwdo$c#uEa@mS]8| c>ᚧpSjB@Gl=Y)@tvRaci_gws[p*Ҁm3 aumdd~U].XԟYdD' yeR!^1<:~ -%OGlP10\L+D5.(w{<=+t x?lʨl@b04lBnUyX@gBnEy@U!0ΥIR)L> A[BRHۦ/-4Ӂl|@7א#9\'Ö W8D6x`Sh* ys}Q}Tɳeb;^_Vo]3?.cXhGҤ(PauHpWqܶwa֝ ?ba*l6>jc<`F ~#MUj :͡XB8'>.*y)g $h#XL"ca^bE]:e*ygpa:r"!#QN3m8]Q1t$]\AA"#ߢԮU nq]9V@bуg- ys6ݟ8*`MD+dS')g36)S&ab>Ew:jLq]}Y;^uņx )?ڝPDEԳ)`0 pRLHm٤̨!Uڸƺ 4`*`2sv3n쒶*N]T<-XmAdiT>,Y!@|JjpR?mܵQ+`l>=ރ_&3t(#rZ6:9$asjqM4JgEsgLe<7f 9Jo9yHa7-s>'OwO: _j34j.hSIGhUy"V^ofӎ|DX赊>LLCؓ?8| Ϸ>]OYI|0~>#̊EqHh<ތ!<‚95E3~ƙ>vs>I1qK>w\nX&A~GccIBV]}ia!(kc%WDUbS%W*K]G_`9&~ܼng}0M*M7o(uK0B~F(&|DLIWIG }(A{@N!>c(Բy_̬̱lgo}c?祿4HyӺɒfxt7 AoHI? jbNVkv1k&O0 #5ZEXbޞ8#zsd^[я6~mV4H寋!+]?̷Nl&?B7r{T⽝8]mҜBHCvj;}?ϵ'a Lz 25 +gRkX(a3xɃ>8;[q^!>?)LGB_ZIj!;ƭ@2)ʥ*]??Vդgn)55^t.ԱT3I716'c9#w>xNֺw/>s0Y"xg(([^{rW8O!A~H(K>7F.ã1<)j.|2f$&$[-]wAvg Dew"iHNH5KM h3٩OTx̴:>k.&ˋ <52w41u`'qٟTXAX]Hw߿kR.(ۋ64!~IO}%M;u!.`hhQ AWauQ='UNj (gO-օ.Pt õȍ8^W*ͪLPYM&5R6_.xT: $;ou]-8v_n5R3L!C[p`%X%aqQbRѕ q!`dtL'5R;HȢ#wsJ?"pxRೕ枱v~K6U[z/Ev(>v?@`~fN {?k8~p B'(QiN"-DCNJ?ABd^GW)ė~% {&&wqjN0L'R =Q:/ϝ52PGx1j[BSW5#/xNd=:.+TNVΆz|:#d.w$&``+K7̺jq CYf%27!g]=-7f}6ᶖ*.K EG7Jg Hъcjg#a;?^l`i$!&G6*^$N碦`>bG}PO& FRdw=ዣ|0:HL~VK>Ew _c汋`N7r&6o90gKE LTb@bXeѡCYvEZ.(H ӚO9w !LY]ޮCQ{Qn*Kb=?g9@qa~ tSᬌlUkP(]|K|Oܕ/#cZw=ĩt͘SpcHPSb /0wgIE:ڜ=tAeC\P;DJwNa{X<;ly_gkueI7ti4/:ul;j#[aQ)zYGZLI~䟯9yyފа%/fTΥVMz@.002]=\JJi)p%!g^ Q}EO=[3E׺12gXYw 6ý^"W  6?WtAQ^Os+1[m\M$ vBc=Y@l)P`<U<*H ;Bs24 '%@ ;C uk Ww0_U$j&ph)A3ֆ4E&GD'W6_Qi'W ~cxb7u롍8'gr ePJjz LBLR94D.&aӍ#Lg=d174jIzJJ='; 2,6|r35}J7J $ΩQ*!09LruqOX<3FuCVnWT8(Rg4D^%a*H1:̛u^6|E'fGU:iݫfҺ/٬y >BkSFOSw&uTն:ъ_P0]9Y!3YAƌс xeч1qIhNjS`0]+l?3Fw+Y*o:O!swp}.Mj*Ⱦa$&+k&yϾqqk)3zx*gNK+a/;M!PK;^<;9!]`,A{:ݐz={JEbPthqR]ugMV=F){9$] ! U4+ci }"EzIН𗜜6_hn"c;Ŕ+_丏^m701i"R4#U\V+Лj,/>4gA_,vrV}ߠL8͖ߓVn'37jr(eqEV: G/uk?`gJS)Z.^V4J7@AgЃiyw%h{z4w0Cxt1ZAutHk߫ [s鮀OY)eCe: ={VbSHkBp~T-' hw΢cXj0WgE p{gPdBAs$au$َetx-tiڷ(b?IV :R]PT@hA)k3Bd$?*yhhq7Ii(b.6]IkL01itB2~* jz(~-kQ?ۧ Žɦ@7' S{;='IBNH/|vcJ݁Ii_2^l!=el=_ P¾eU,(h8Y3!J_Kڏ9jvB%OYyxh8FkJ.A>ϯ\U4{\)IbeNܺ.Bnzc#qC$&> $t`ߐe1$4_3G'o 4Hp"V?Qls>gj _ETXW|- n $Gfwsrs혫ݞɑہ0;N^SnW.!fPpG=pb"XV9'a}>brJ&R[栕D],1WWeP̯aۋ9Hd=KO: ܏ m宲3AU>E5i t~Q>4MxB̸|e4 Zq]hq$r)K1ڰPYbZz|޺̫UܨZ[y&!F\kT)QZ ={J<@Ovy3Ö́{as bE_ Hz3 R/ݭB~<c#l}^7 g 6p5K{( ESءkcD(,\ߍ"HRQؔ#孞olhux/:[,*:{F-_ 5j :\F_QQԭ wP$AḰxfju'K%ᶟhF`cREA,  JRCI? WU'be>,?@M)? w4M`IAכVm5k<:~"֝:[)Bh=MiT%>׃L b0%c*. ![ kJh.U7{ È7ܳs5h׵IZ4Ӌ;|&kB8ζ^u <sd*W½bڮNsVaLco>noY=:hɻ-0t%Sr67SEÚojaaJD}zW#xHdVV3RO&P Tal_9b1ỏtgI죮0-7HbI\&4h| !ρӥ0EY-\,xF}_Nt(qm{"y%tD].Ï'cXVSZ(VhƗʥSlW PJ.SQA*t xA1_ŐA.:Dl*՘9BCŻz⍮ϭcMgXCqcc3w#oSNF ȸ#Cg*6i6Md!0JD^Y^}F[ώavձ2Ӂ[ =%`UwVޚ)-.Jnnzn)t®U _t #h[TCBRXϮ%UT}9~ Oz nI@ @~Gy"DוZ}ׂz} swD0mb [*}\,٤b"M }2Ԡ!+"@RtQ7f-cTbD-; ٠>&Ր ;hokOVvvŒ9f&Ok˽{#0s 8*+&GMAg"}W!a!4JH+?W`bmL<RZ,2,pb5w0 0BuIɴf{SJXqƤp 1m_>Aaœ:4"Y4V9v]ݢu@ߛP58zJzA@9jXеVeo9/ '$]-(@9S`~"%.Hl&@ɧ}ž:fb[Md E:څC/ *&BcE.VS2ƹ,L[i-O BRIK>Plkj.{ 3qv]N#UT("`ַFHM'aJ&y@mpnrO=- RLWyF{- fb 4O PIHx>7 'ґ/82udW$;ɸUPW-ۣ2e)Vri2Σpxa`탍bA娿FոXB/}Dîlgt|8..-{؎Ёm{ 2n):< i/v!,)%/vYi:O^,CYi hϏnGMw2SkoW!!8-x=X:Ru-* 唱>(q_v)y6_g=Dk&)^7pe}4 M{q t^ǔ'FQ/]?؁?$T#1 >%Dm6-fEy9=]jOüޓZ}{dP(;+j*NFmTdNasNrkg@OSøč (dc~fR@\+wQj ¦ Dn$%V ]Pm>Oe Pt]qiFڛ+& SWBGtӪ(jhb}CR[WS~QJO{d̐,H3H$XE˜cl:u3V;u46/bvz@閾oJ3e9>b3tiMBV&m0Or3e$1N^%GYWQmR!R(1L˾ C) ӔW9نm%X]J@2o94]%m&,㠧*@zP9l9a\ 6 S+Xqe>3k(P3!?o8j .]^ޏ,ӄ6=ȱqE;n; ,౑b;O!ٚKwN 款~i͡򣃒2`Kvڂeߣٮ+!-w%P iwI 'Z$ yYZ=G6^vIv ,9XbMIϒ^DvXFrϝ4OSr 48 ;zIc䡁E8\ /CUoux@(mWj)N>0㶯TnlNf'e!m3 ˮ8tĕG&Zt"waҸ<B7Nr֏y\Hxؿoܚ&m& =6;0Y-}m9:lȵca5@0O8š\{D1(\xeB8pʳR8OM} vyܚt1֍,1!x[e 0;dyBn1R30fǜDè򤣞e Qm+ @iֽirv;)#Ղ|(TzӺ03<5M*N$nR@pvds۪<Ƴ2.ĴA>j3BwRVLݔ(bIij 2Gb6t}mMXtm⌿A9HuYAW\Ʒ3%"&"DTU~S,RCFmO$b\ldPb-(ZUѴkK_;jRN["]OI{B}&]|lk)'x sn}ȡJاMr+ pLy-75@uFD{?k_'ӆQGq좪Fc*.^&B4)J_vt? 9BJ P5%ߊ%o9H?vzKo9Y((h2w[W$eܼ*Kp GNpCHlUe٢xF·8z"Ľ3Ve~NsVsYM$%Bj$ouRF]2RE% d#\<˷.:fvc]1^B TrFޡM~H>We1f*c[,?qUlӮCo|PvajV`F3Y"kdbmE,I$WMq /^F!QդnvVMЀ. У]帅,q 5s2d$/ R?U3ag3tgjit Mli-?=֍pם欑rKY= = ijɝ^pk)@d>]φ[OXŋ,ڒjxDSVuzշ"D|F{`Uc(Bb W{B7rt FfߔNھj&/EjLl[YwEVy=8{=oq? bBP&!RPn<դ+~ƒ[Ҧ| ՀP6b#5VE2ZpLbB}'`j0!zH$H%)g=$0PXr('l)LOԈ}-FAXγ l퓍5խFaO} ށ17LF4]}S 7/)`#n#x$Ս h$:R V]^’to3:3l0]5[m`.b+MEOW.W^l*M\#ȓ#zIf$TD}S`OJmEctٞu=Q!!q8"3 8,\i52U \ǚqB3#B^ِ `37uDY3)mSv_2xdg`k.aCA%]ɲiSˈ_<װu|5 0uU,?fbȧ Pi81Î5W{|{qc=XH;I-j̈́ ?xw DJRinq~۹4tΉFI7vӪ:YvDs$M(8>d&Μ:nC+zT7LFtOu9K|ȡΧCA#cgs?3ON^ߧ@9JKHla Ȇ*]\+ JUg-܎[h586ѯ2Cq7!|>m=ڇD{o}\$_|'B$3澖*փM$$P[C謂b@; 3rĖLUDEy d:Fm~vOt.f|ǠUwoNtܱg.ӹ?*M\ͮ _G72U, ~c< 1]"b*aAIQp;])^k_fGvEL-Je2Rs*D`1xDǗ ,*E<|||/&a[n48[b2cky #uAm hZ@ۮ*=9~ ,ڬޅ\^Cށ+5lb>FɎ{sZ%_/tղ+~6NDLs|U:| 0J1=;@$NYds_sݙ$+ԜkЕQ+e](h(M$rvD_xkյ$ɑ`"ZOsF#~MW aLnI0+>^yo43ӳD:&լz<--*tSAH$j=lT7Hd ''&3h߶(ү[m D`7D;ǜZaCluei⍽rrޞ>@=0?k[,_L7*._zX!mLـ\_6#!MS|9SvwrXÌ7b1Z\J"4=| Y{J.sSI߲fWGLB(+=@<U$yy8/jULOZSf]=Qy@@P/pm`X>2|Hmdp;;(vOhNoSUA3y5lN&(h:OneXO9G?.Yo#RdN2Uƀgpp^~!} FKw-8ޗ. RuF0^Z ?P,lq>֦(* zMO|Birtv|3Z'6A;k狦PG@jtv7ہOEN`E6z `tp;uY{ r%i3Hޙ|%8{ co~Mk(+t&@YoS5hF`ut9||0_AZKQp(-Iץj}A-jz)k߶j.[{0]/${4ǵɆ@EW_"4"}*j:BSWhh~*ݍ5"ef¯A]xjYmS`ļz)uִXcPBh~:bbm/ } k -cF+EP1T|,xT 3sT݃3 dņk"0.S]V<;#LN"CYXɽY+ިlS^~#x /QgFf1)4A)2"(]P)95z3\?#x/g_Oē|YĚ{zEuHrAՊy3e{\ZSŻSriQnW˝̪c@Ww4tQP|,:B Rڅcp'쵎 gd+hnV~pfz\HTF_cKVM=gnd†ƘmvBNtZo=[5Z}eH~(1b{/wof<ӿAsubcj(CYzB@MNmeBJ6]>5ⰅT6HV\/& FOe8 Q="puATK;^lSQ3RQIdxXa8ۻx0/60OC11ys FGVVT5U֤Ћ+qu"lWRv:$%[Fp5^$֐LmS3qh\:7Tz1>_ ALo|m#NUR3Oݗ-1 <-y,v.(3ljhoz]3@/;) "0NG@T'Q4ZUs^4ϔ'ٙkNhSdU84ywbS(@@0\ Q q[KK+Lnkbʼnb܆l$zxզkdI`=J9ύ+,s#.XLԷϹxM̒="ڌ@Kk)SzoUYqw31rtXYzCՄr"N?LM`+FCx 9u QN4E?}!3yܟ8*TǕovw r\DA3 O0jt\ gcMfmEPKL%vCʅM9;c@HFc9bBn7-ǖNYau$Iijmt4ZÚiͩ ?;Y Z=<b+ [q jwt(:9z2Q\3q8B2(b"mb[9~!Nf8-hMl(s(|²N&5JqLw.T\/ 夭a+l"R45jKT4蕱?Cg9??o^۳DΌz+ folv2.Z{G⽸ja274X~G>X=!i%3-gV wR}^zm&PJ0oGbt נH#њ)n,IgC;<ˎsQCvv ;xG1/1_9r3X#N@b:֏)ODI( Tϱdz%@a,S@{xxPпab.t1tВ[+$zQc!0m'.nή|vٟӄ""L̹nI2iAdj(eDl$E[l=`o>ZME1 XƂ:V1/Սh'#WG$[[K㣅sobLP]J?0jN>@2d5qIZ$0XE _2e kþ nb- O5PX-^+0ypcpPRC @t/*V}H{?y;uHl}>D{({AګfHx(崁 OJRu; ó5֡voO,0W{7p2y13|:OX#K5%K#`PkzWw0O/#>Y-S7ɭ9\<uj6i33杖J%['l#sOiuͥ#1TƩgh~Χ %@O}*տ:.7,7&! Dh;:(Ek'M}Wd!L cO 뱡GϷOxΨ-zizi}k f ZӃK,:GFK"azR2fbmT DqZ:С:hJW7Mn[,f]ZmnsCl^FW"(\xsౘ綂 ]}oWf v65ذ}I+L;3f83aPI$b$Pn@ S646䥁ݞ%\WEITuj9SF_d c'pӭIT-OC{3/(RUsXI_ho =f~+L'̛naxipAwvϗF}*zHMj~u_>^R9/ \TXӎJk+nCM'nHKXN;w8Uӿ<6z75p -Qׁ)0bT {3^1nCR&m+Spj u 9+W-R@/srDKF輊E K9at3 /КE 4췑imH_uj? Hk%_ kW^&1=.bL#jY&F>h^%C5?U)<>iy/r0օ*L|L|}+6hI/ ff= ~Wudv5{[ҝi&:]Xy.I"Y4RZJ-1"s8_8ÛcD R@Vxc&$.LaxmXRC"7T 7)!-vIS7é:ڄW5O"˺y-xHhƸ,<'"xdjXxSxT &`OĊE Hf5:ALgnjsW .#Ӑ!Be;r (JVZx4D]ۙ])?{ULV=;IG(IQ lTr?Y9 BUuz3Yu?'H*ID+5G$Ot!{H^"?C>BQ'oI(Νڔ.KQob#{?0\(%X6#*)PG˫$anb޻r]D(=VA;g?^~4ʸpQC<s]g<JJ~kh u\W|U؝L¶RjsǗy:yf$)uAwU]qx:.S%}$O8LUҩw:Vg[`Xt ,wiaͥLo@Oh@E-8?2q4M'`ۚ"ZEdgsysOp{fխ&4Z {9#w'I;~ˇ>LIvo-f}ܩ;娆/u<-b}nS1ms<K;}v1_MEV.חv7Tl:YѬ& 49Q RTVno&gD3"LA]{*Ea&FK:~сAoEw㰅3qeXؿ HyJ⺻Z/l9Oz;G}(BBxK.K>`ZۉeCfSE" mۈafMQ{[?MGBe72Vblwpյl.SR1nA%wXҁAo1[{\\ 3DI;CI}g>_';0h9typjBY;mkK(3KtVp}1f x`~U)%FjssfߓJYzl\gB]w&?PFxQqә0Cp١L_#F̚P ⭞w,qZߏb3I;h!dmcNw2 LBbٶs˴v7 ݧ?Xv''93r?Roa;'2tGQR0=w)JԚ<_$zv땒9ȫ/cֆi)ˏS8l~bܱS)+MB' = {CeYDkɍAxzlA`*|Igq#nqzXC"c+[PDsQUWV'|H4S@fi6 U+euou=kIX9EPbH ݣ%Kl\?p@!נA/4^^)j.K;/΁szSsB2dG ҒN m>{|qL%`"L;Z͑q.H]4)y1GYi*n?C#mCAcN5[hX*巪\fDV[^VT{'!6'ј#hHu_`.+wXUAcg#ýY4yr}!ErY {_KۆM2iIR:K /Jm#/q֮êB 3q"R KP xHy4&L Blwlx!Cr _aLpdAᚯt70CqsPb-5߃oJ§%Xc _GGZuOYQc%m斻2@nS|SkdCE9pvi{nS!!,ֱ-+yCOKtC<p7~ ^CP_' r ʯQڣMщ,"ΆL6C»bcTtwrz[rS6}غ}-,@RnGx]@MgVcdRKpZP8$x FJܽW2tRǢg3[۽gى-᫂T90|ޮ%{˙#mAp*icGa$-"b V$A~M:K%>1zΗa."zIkuM`“D,0Nq` A:r%i/Gbn8j _̌;5٘.!:]p:|{CaOʹYZt )|%&dݾ%sjLfg=o}m 4?;.8l 6K710!菤|s'T" 8M؉awM`q PF~K>Q:WA 6!bgd><<"zJu^>ryp?X)9 z ߻AgסTnvxV8ʯϞs 8 xyZo6R :E6sK_̵FMi X`XTnl󩔞U}7)DuUf1s0}Tu_9ЙeB&Tk݇钎5ˏk.?Սڧ5[YnLcېRH:#VW|iwy`KϬ,vEb M9ZXE| XB`ݭht.`3Sp}S&ffE50iͼD6t{d֚bpZzXk5Y;&مz#N.!u7};iOtTULi:m&Wp,Jf0J)lA;mC^qp;nn~!zIZtFrxQ_2`o:S" d^8@ GVSS]&ea̻ݏLcZ޴8Jܱg #abCTzᛖOkumiWPqIFI]{S\R/ +?# I#W#H0wO6SӤ2u R3  8W G CSCuz`źvm4Q`۷Dl#"ΕzU?X,If\ 8^&F}go ޮm_Zcj$uXŎo Fb b O 7'#GO<C+uIw<ry8]$֗KӸDAb;rkJN 4 3v c%-O$?uU %;~GGhD̦]"_΢9*_SS/)HbڦAWQ&jlp>aS|IʴY+}f&3G똦'{rvZ jo^$6\Ϛ%ឨj4H Ź 0Eo졤& +4 !!e%ѲAv &F&~}id <5BX<'q ":qU s)yyJ㵓#5͇!B]IpZ t) of@B[N$/g<-ڪv;VOiZ9>]N 7,wMh3 . S;~.&;.;;S rf p> |¼/%=絠 d$6ϞDwXY]O #Q6oAZׄc0a8.mg'$bH9c`aHۋX?>y6n>nÈ;d@RdYST_ gG{Cuk?U'wۈUNW+ÕEF1qdՒOQ_=M\:+.ՈH;d:zXܕQ8/9' 7^m&W9ae7=gVw;\z 52 T}6K:|ȵ $eﲠ`;r^:lw+A-j3fE OI#[CO˜м!HՂ޿%ԶDig?Ok`<7"G<: A <#};ve*ੁ ] 8VGҪzP39R_/т Ϭ+GV*sov&VaUMhuAX =b)TQql96_koɹF'uxOl7Q5>4{HnI }E\1խBnua'wOXz}OzN=!u QZTz'ŷrh$Qxͻy_c>9sƾ:SfqiLg}]dR+vGSY8J'FU($κ7ĈM%NMȬt( Q#t/e(`U{O{B139H-pt-/oa!Dp7B#NtOD']zξ'E$>zu'L ̀dZ zFBw0S&6"50DC" uF5v8d`,}FR$|Ol\@M./"uYfMpN:+7v0zR'W5T{-g=;Lgxwk8x#-Lue*YQj[@BAؽPmlɱ4DLY6- Hx>Cq= .qt^f1)2b_ S :rjV,~/QAnM"Ra8k nD1A~aO;NV~}8)!fE7V؍mtHjY@M4h%ז0q5{0t㊚!xɕĉ/"߉l sܩ!yHL\1V[Yy ?RV|/ΗZ DVlyd'V _)m,FvI ĥ@5TWp&HbW")#8CrRsB8ؼ0','anʋh/A,bKf2nV7ϙk('{Эq5˾[q0ӓ]a 2gT(}zD؀B3*/Tos$A@MԯZ&oQ& 2omc.-7V*.:##ͱ^L0ĉ@a6?#hY'Tqv+2F87mf>ܹ8cAt :}eZbX.jVF5$8P5Ђ87d74̰:WN#6RkŗGgB<= o\K0'o GS[b5`=*yj#ÚI ICWei=:/zjI.)׷V4V͉|4w6ɘm(Hk^d*1Y@!3ߚ>].rjIv3@d/K@GkS|y`=9?@[~X%ia:8L*#[|͹ 56\hPN4diU1(2xuNyjx"2V{>-&6X9:l #z2CJ`x6 .-TݜX=TA)2'#BJ)SFkW/*]4hePXy2կvn,jh@HOa7_~3۞!D醳'1sD5,z~zuD4B.lc.kfC k \x~cر0m+e2yBE[.*rx~ƻBP{>.U2p|L]/tsY䎝;]k>sLi{Ķ1V211EMts2~0MThtguf]rbx4|@h݄F+hua5нCmǞS.3b:01~pܗrE/#Rb >.U]KoIVB 1JFm0r mb`Cp~o@ ׻ ^ޝξ3/ڔy2tDFQŠG.8:QmJ.>&r0ʳ|*[|4Jk|B裩kTə5f*먃WȷEnodG}:dn9{xDih2kȻ|B&w zqs0g.ϡTrI%0z낁+/{o0$]mُRQ:818V%SCc#cψGٶG幁ٛQXY#TkL*?{B\l9Ҟ8Tx8 UKymƃ0`lgMgBYSnUsMճBmL!Z‹yp>4cs)\-A:Jt#>RŖw?xRṤ$:+gW.b~};}Zih^Z_L/RxCy%)1tSⱤ \v,BdSD3do>ssȤv Zgh3&e~^R{&H$A+s}I+5FnЋNK \O3H.oS0cei{$qM;z0c46&BQWf0N/5Bz8aK]o8RM {˦Xx rz`Ne . pq\mౝhZM,jQgOhߢhXdk 9Z\zg u@nQg44Ü/|* #:P5smdfp|mЬp%%FRp?0ӵ缶HFK5/sRR\ Bt 3ݚ;9P||ɼsc8B@;#l܍R E4 ZAUu[Ct#{@oW܉ս,Q!vhPP@xX|A/̝л8HWR9<'#r=z AXOf1σי;Gdρt%oE'CTՙDנ 7ye=tQiu#q>>fMHeIl_ZCHW }yF٘rѢRK/~ casG9qH`Q{? .`MTfΰQ =Z!WB:>V HY7@Hy)q|f0}~vP4Xz6E6z2I#޶aH/Q"AT9D7uI#wƺ /pޢ?*ppfe=K9icJ} 2DN91@Ȇ} D=K.6/y5GMҺoyx kv#3Ja7:Dl=OR|ırq[aJ±@ 92`{Nj(T{ͷNjzB u-zLtjc.ƞ!A.kRe )u^i휹L24A*P BφY$]+Y\Yv v$8`-vTB}oPAs^٣9~IU+s &y/>w~[q­ƉV x_''XuwZ,]cP Ϧv}U5vj?A6B}Vc`Lo*2j吝ȚBJ_j9, <țp⤶Gs*q"6_IջӾM-zq&( 62XkUq9a h5Ն*Na%pd^J jSMdr!jDZM$láOs RgJP0`vv}B?C` T:[;HwqN͖R:UJL#a-9bG +\YNk,N lhxqBt9la4-J.hHYa6J\&ͬE@]Q"GjI S =Ld-岿&)8LSVZHQJ<"01Jm\c4tԅtǔ%63,p0H!{+N #̉6HCH~琁Eδ(Ԍ̺ ! ?i~ؓ;R^yL,lEMo=Spj,EU-^X6AE 7a;c,ˊɍ)bèb9Q7 n!A€DuTPk(nNpnq-%k?8Dn_j^T+MO*} 5O9:㣲κ1KGzhA)@0s=˲v@9NnrYЌ+EeBW!a`,*ib;l/4H IY$͉P0d]:)\+$%T/L\6|.-X>RB*He9MŅ`:K[w`J~X%0[_!^,9Ú{\V8ӭ-{%*'1dzV~R9M?d4S|D%~lO,=t݇mD= L3Rہo|〈f{g&~_3٢e)xƅZ(5)jm+ KC]{k FHXH0{RO,&2!;`X<(9j ^*'M1nQ}ia-[NB "STՕ}?>sS"ݕ8$ )N~0AS>Kqius#i{Y[CFbP!qw(^K *Ct $Ll[ǼcN|TxMןQ,uNK8b1"HVHK4Ժ>~'6DoZ | 9Z_1;"#CܼPVרp{b*J*8$ 5t2&sWNi)_7UFOom1%X ৆!7f19͘4dQc@[OJP.-dkV73)7$ds_ ,1"ob:ʩf0 og(RM? 5U*%FX}&wh\8\N\c4X(s{b^|t o=p払"~ҙa Miv5i k#~MW'4POB+q*7$ڴav{J~Yt)%z8-'O Mk*=4kd7X'&ɇ=,Å+fJLL]aXZU^n,a8:ޱ 1kC.ܩZnk~&TύhE^ yZF"< XE\ϬaW{O6 ADWH&7s+Cqs'he\e8hbURQN޿n/F8l'N)ϙW)ץЮ %؄ Z/)^g-[NK0ݲhLivT|qPC>m^Q@K2]R,J٫%d$"(㤲 {$dܻEݵ!/{bdS?vsգZuyL6v|ERy1Vwӕf $OlsU.4891|"NWGgR|d*%q?[F@Lniv=\|tjX]G)FPyyc%QQ`P9( /[I ôeJg o w ?oG8y$;nޕ޿gٱY+ lG=Wtq ОuxBc?~ \୍tIPyl+>Yՠ{)b4Klm4("YXL..h6p1 Lfy֢^ئ'"s(H,1LVjJo8͖@~QxkSKS&4񡗖mB ]@LڞV놇 (xn83.41,]Y ۛBoocMXMEiupQ쨑biKRPCcI9/s|~"܇GCxW8%. @mevc]l6o="Kf=־&S$'+gE4MT, 9xįY< ѵ-YZi%6^|"n4aNJɍXl3Y|\JHl+MSƲD)֮hN"Vf\׎X]ĀO5䘬N"&#:Y =w^Ĭ `o;ZMγE[&YP#vɿU '{KՓ#א:cZ\ ErϿ?T|X[Tr2N) N=rf8Zy{O sLmq3#kE)ZWmV4qSvH*9EՊ_p;V 2񋶲è4(4kaAy~y)-v_ģ*0v3BCF)XnwNdaF> W@ ٺ؊h- D0p6 Z6Q#nDϓI\L.]~ V8ڋw6Ž{XǬD=W~U`PYƑǂiP3{AC5#Ps/(?s)P0g~Ӷ=h@Gbkk KkU*d";4J)o50xZ% 6tĽ%Jo9I/(WC` fIRkwN9av21/YiPpⲟ<$!ЈUpY]"kŵ"A9- /c_W [`!8B$e'<0pޤFl l+87m<.߹dr7rzXuD2xV[fk-\*S"=7k{dwxšFQ0;4O_0sםV"FR&}pPJR& YsfBuǚdE@y%i%E{q kך 6*f`t]gah-ߓ~$.va6ǟ~VIT}`=K"L^wRJ n TqϻY]JqqYеCX=ŬL]\="g OEZG r-?afpNпnDs\s44N!kX# 7@Tz 18[g&4*Sns5+Ծg'WGRȫ\"̭->Gd2hLu 8F.CU<5UAG"[C: F &e.\ԱFO?bA:sٙhZ?#58"9H&DKj~Dk]J"h7&5K|Lӿ/*ʫJ+Etvy sӤ"I([cSϐ!7m{hxQu[4tpt@܏M^634,J/eGjpɐCa;KT׿N2?S0U`ޗ+ CڸHcPO53;}ꅋ1 &Br[ ;$eÌʶ`ޣ4L{'.Aپ8ÚE kۑ)͏nr=ޥ\of@j+5j#fXG\3f Z$yGӫp \3xU |y1R;I{>zeNMɦH- ~Q/sxɨס/a}{.J +^bgĤXڄa(13[+GrʎizVAa v_ \77q Hk#uPL~e]d%'}}@v~(])MSrc i3(YYELQ N=$ |=yE%S !g+ЪsՆ,x m~ Rr&ʡ3%3el\>t^i8z]ړ#׺#(m bT,Ko!wyƀ m~El/qP({iFBZ^Pl0mm?6n- [.cU VG]isG|$i4vɿs'Ax|Fkjʹ8 ޺:pSJg\*#FHĬb Tb0T륽."=P1S{*W(LKK6qxe޽{ @ȼ)cP9VrѴ̍ .*,ewc OM.m1PA'zvt J@"T .-5dkO F]BGDܭ99ODef@*J9taQkHF]N 3'&lXt$$!Nzޓīٟ/fl;ƔD9ڈZbBNM 0]Gcq݋z6ׄ#I4fD<K3q>_I'x4xav6JG+@vձ*m(ۇÕFJXlckb !UcZ0Zϗs7,(Rs1~+}:#aՃ+w+Bk樶4?1zy%Z8z07 P)CT%? $j>Mo}m |D712MzkG.> u=Eל2aԁ1 ur74+1nfPڭ )w 9ng !/:1fOTJdi; !K|ǷOb1 {g};911nHnm}# ffhF04#L23:l,s?v'&C;š?5Ee稜0jx`ew+>dSӄ,zCf:򾵠@lAў>ھ2Zc!8>iԋE"R~{ˠ;6PKDb"S8ٛ¢q\șz:Lxv 7KP$_whyga#~*p7k_.TE|ekCYggDp"hR%%.#L>5\ˌqB-X~0y-݈ /9p^мe8\CgTX+P<*BYO]Hr*8S=L ;Bҿ ]삩@?[܈:;o$s=Cɫ~;$o cџT!' >/6";H:˺s`2$R. VkSТ"mք9_1-<ؠ;M Gn<-kfl{4Jj"恓L{];fS;ApȚ\\*`uIAg{B]FcdZW㯥)ktE3d/]%Euyb̦Gpy/qtE}μRZd^t!X|- q-W>D:|Hx0OIY铣RM.\#re茹'rRV fs, Mm%U̳<_=HJbY-0R^|V6ulm!+z3ʷ t˻&U2(s9oWcݗݕ?8̥RVTi?y3HC,{u]Q!P ҵ ӍY qMI7 h.LԨo{[2D~w=m =񿈺ǡ5r TSxV_`0*UJp QTܵ^dع)?) BY\` VؐA1NeUfIyZZ!ѣ!u<`0ߕNB&)Duvk❒CglfЈ*fGb_'_*HץKEB`v`FkNVv{_$bito E(8Fݨͳ*#N9g@4nnQ҂e_LSAC0{ћ{X`2HkX 0l Yy9Ùz]M?[>0 s=GKxjBY3"\6/V&HU#],Ӗey"@h:tNn;i^ӲGnOթ%4->&\{Ƴ tպ~f-j =`ADTnm]G$W9wW TzeӺ]<4\ S/=9[@h8rhxqo3gGJv3/*m4pjr0G`bh>Om #!.Va_LIsDgc@p6`ґm4yU@u pGCW]π,"Q.@{ #\P1`:oan)؅[[0|=u{%twTQ Tne23c.o J}\R)>5 rr6W=-A7v(q+{HOn%pQM 4x[Eڷ4u27J4'|8?4CdNITʬN o%_xHVqz`DckB0>ov􇍘AAq }O0j"<vu2UfvY '{?Պ`}yP3|gEf!$t,]<OԌ^9#tDv'"/,n]@=qt'PΧ=a{U+8~G7tCUbQ;LPN:Ѧۘ r  Stϫ3Y{7TK.19!dFL.3H l+A5*}X_ݬ$? '|7|T^e"K%r?/1BUz_e, k-%Ӓv^$aEf _w"%X":3qn) 5R GGlU|/Es6О~]*Oh ZR?x3Be)QCZj7 Џ/dr5S^.=B'-d3 i?mYjMARmP2.On]j**w"GO.UDl$p6ڽSr -tEw.ZV\ U) s'$hb4dlAOQ: .yuO<RSp!J}K,MhTC@Oɭ%,Urlh \ڊc>D$k\gT 5I^,/.O;/avRИ@%/G@?-&l/E:u% e~$*HT6V 2S6}_>= 'lGO:,3bAٸhn(my0-/d&kfvz!ZrmvQ`8D閆o7Sez77XF9/9bQeVG'ݡav,l'tsYGJx-ؘ>OoGH蜛LߧP x}>YR/=j sfWݭ]ZiR6K|S}Bz ]Kbqs|rx6t)67~bIJaBY+S8>JQcc_f3x>Ƴ qjr=Z~2ߢ>LDϔYK~/eh(f8K,Ѿכ]t2y>R0s޹ZpVř9`[-z_e1<F:Kß$<.%p:q|ϭr> P=ZT«Lͷ"Okod ` ˶ N.>$Z>yTBy}V>x_1y26fMT}ns@/[vvNeYry9ADz ~* .ZR&*PݠWf Kt"W0IT65H:/Y0P}KjpVfA u6&vq&Yι;n+~2s.dXO4-a&KIO׆ r,uN7D^?v~ΠyL͹uq]գtfrdvjyW~uzHczK.Cyi'q?`NxOf$i8F&iZ eL^zOkXR4 /< ?0y>-QX>]ݭPfy:RRLxԶnja솳\\Ӽ$[V ܿLfjܪϟi`3{ykB}ōx[;'Ȫ[n%7Zn昢rIC0́x}`ii5~o04% Gc0Ÿkp"V߻Rnyq.ڎ'@C 6Rw|g3Ʀg3K! iϊr s m%wDZ9ٸ:P$﹅Vǭ 92 _8Cپe,az:XdZEܛmC6G@ƫLeFjKW>m0j6hfMD[[)%f@n 5Β܌5ݟ\"dItx "&le"0KaNL3!i''o FD}Gmѫ?&6O_R bv8K 0Qf^n69ږΣ]Jn}F?î,jא,l#!ցf`k"ބ6o6f="+C'U$5s_l-8B@eČ?= W_5s+׋/TG|| #&-Pj [sVlD Hw _tYSa_ye/6Rbr)i]uЬ*,,2&ݞE$؞ 5ιVM|8pH&q4:&}qq4QБ%d `beEGӗ C!mpgV{LF2AǗ!8WҾ܏qOVANijD&ժ<#6էp-LID8 o⊪2s*C@Y۞8iV 8_%/)Irw֨TLZz@w<VV |Ewa^UҺsmӖt.tnIFd92HQ1lAqPQaGv⪢4wS(ZY 6+FA+v/0QT UsMB?N Z[?'k{ Lŋtlc^w_<zp :'EަA2U!TC1a+$jg̋S$0"3nA@[6RzǤ:bC/'yf16rDcP t|NtSoE B(E^ qٖQ_r{tK+˾ ½rkGYr_]ܜg eo#ht}be_g3#vX:h:>AV>NTAԲ#$rrh,p٭_pik:zPǡ<Ѧ>8SrƜ1֫{uߤ|C yV߆兠dU]\T@? ?vEvqdc.*L}#u?Nh 9wAM9m+@cW<_HE3n֒$7VOD ZD1-gt\L}?-EHL*PˁER/2Ff0-g!+! W+f,vV娯*N{~S q'ia7}-)Xt{A 5vG/nR{@|@XreniCTD^-Ya da3[pVZ1.;Oaa&/"pWH^5wli7>nV*îFN?dSW3+"yI‘]kpEDʀּ}w/h*\.Q2= JvF[Ť%/ 7x-jZ}XQj5ހŋL*|*}LLz)ˆD ;C *> R(=oBRțï=>pLשaL8>_uTB&Yx!A] H6wݨQ=^kΆ+ʳtelNoQүLdQ^3>y~ͥp[LjR'UT5D·(ҀQȟ04eꕄДFg &^3p@Kon[$0RĊb̯BJ].s;MK rj^~F ?xI8XB08.U+}Q!NJ(F亂Opdһ"7U=sVmcPI%]dW6&f4}pɚ) %>񩩕XyM#TkDD43?a';"%S)9{hMh"ڃC Vy|lY܎"]QROgmW݃b`ZY[p\_Oj=ya*\5 }-hEðW?O gɁYZ5y絰NBj"#̝6TmI+s`y4Uu,4 b! W x;46[cy"B UmKGg%-G=)\5)w΁moS̺80M3|$5J G%k l Kl.č̽ՇH |j𜄔{Sd";\Ejjyz} w (K6t,ģv䱎Lv\RUJindGHKHTYjQz"W dR,1SNoብXVn.b"V 6P|[-=\L0vF UR(&DqŔܫT͚ >S1;zC A3|opaޥ`kK EXVn'ND.EXgFXDc.RN}6H:Jji>JemeRD-16HH:2p}5:XI[qg.m15)ZnLh (H[EۉqbA#9,ƹoaS *hzB`9#kEQd*Ys̱d/w =($յȘ޺3d̯t @bieb7RIɵD- @b%8WTu{vfq7c c)[r"+_^'faDj an}W   {\ [s{еBSVEL ˝b :|~ZGW72N3عh2E}Tq\ȞX_EXy", %wn8$rГѶhOgwd@v€éJu@ASF_RP&c@Ce`A<8^#;w=^;5/Y@mcl%%U.e$L98y݁гQVSзgIc>o2B[j ~Qa3^Lo B,4 b `:Jc;@|NKZ00PѨo\dۢ<"ZElcFNBUqH nWiO|,{5{`a!# Ry>=;ig ~ +5xFCe%X :G'Ly-Υd\؆EF XO;$Y ڝBJ`' °Ѝ1'04LVs; HsTz ɨ1)6!=xbzLrtY!o(_,jB6=T~6Ը[)!^}0Bxu+Wu% N֚Fy*Oh_NqR .8龥f<(-ҧ,?␦V"֯}GM (帢wbE OGJX QXV:Ь\+U1Xd&rvU_oRbygBPDTն* ܘ*•Ea B;kzɑWjȯ$wsBw7ոrGYgo8ʚS뼋ٚq[@B>wZ&j[2X`#A/}ܴ%9r֓?K_Q"e;Hq[zE4ɐq:&M z24@gcYxp &U,/ =1ċ+icv̤tVf99/L^^Po8۩63VbDUŨJஊ~LwH1$lN#fo" /DO3Ǥ 8ͨ ޳bNQ3WcdZڥDChz\6*]xΖ&>ɕb喆Ԥ^{)OoVRQ0+`m{H֫&_ R%Ą)f 6&м藡A25 !ȴQ unw; '({uTѫU4"]Nih2U*LD0ѼP>r֑WxCouavb"ް=ܢ FyxAOE$;7O ,=fq,5*C+X-u NfK5+ͬ>Ul#AYz)Z2_x7}>9u~iۖg \ <#V`&X (,u\❽hJQgR#n$@! 4Tʻ,a0]*ʤHp.x%;7bk3uy|DXד<)%6(Lh*=s0 k6ȹ*f&"^x=؎$oVPvƬθ4Qsc閡3}]Y H=㝐Rۭ1e[Kf3a$NG2ZJ#oNmʞ 0R8p7M{D -O@9XigAw4O3pc15곪նI_JL4`=P2$g%"4 !+O𦼻n8 n0~DVryJq׬>;(Mna]Ƥi#,Iֈ'uK+iTwR4;`͢)=BojqAV͊ЯHD4}ŘړgY 1YO ^]k!h/ߠ |*Y}mn?ٍ3d%( ; XES p0o]~LPzh> | \(: G^|䜠MPpdZ۳LN.nc EhQ6))1Z~XtKXT5yu8^*#dH=;}lM)*8*k8-21%Oiqs?UjP۱Sq9  y**PB^9^C0n*!+s4,da&x+<Nw@'yY$gMUi h x/H[87dV1dPoIRyY)C(mTS Bډ V9MTTʝ^˟>huf[񪲽Ik@^d|%(]hy5QMl|Oڠpa+|蚷+g3SZʚ.ك.RBǀă`#/lgwP~#ŬL/Q ߤظtOfq'A]4LZJ[qZo#%JDm~:0 REupaN h $7fl6 W^"DEeWEͭ뫙MZ!y:Bupmg nnj~izZ}+-p҉DhUkZ#Sڭ7c̴%d>Rt B\9.;dzbd͇Vɩi mHIY q^/LrovSoTOzzcƁj7o~wj5p7*JӰC{5o˳G.P ?h|^. T9Ӌpg }d Lzbv /SuewBJ/~^wAˌVk::T83njNY A)3R r%r|a\OR-k2yX!շl\T[,]z]+©co G>Fvj%Gd5;u[pX'sGQg2cĀ!Ua6Ucύ=܏\,'z^X '\K'QBsApnjk= BTObN`f'@YF)`iZh7nIuV$మdGM|3_x-=+tG=cp/"/F?5 n{8wz?'#ly/OP/YI/ʑ %͊S! j,T!2@qv4| J֧ QfkxJ-hA E~U2x} o2!ai|cC-LD [r(#@l۴c3-?th`unUqY^i$SDGGշ4$ }).yMaͽW2O]ɺ2;dw_J"(4]Q1`v5cnrgb2#x)+<bz*&P5+Hqgqƞ;=OB x[ªb_7 yۛlUp8;pe'膩'xN~`: vŗru,P*H&%uB/W> R6ܫ3CT+R?8P\-ba% [4yZf?n3:hl;}ӧ^`:+B[o,zjqy jKsQ>{$f<ws,9}?^)$n k*>r.U疄چk/VOXր;S{4P ƧBUZ4r39=:aytͼ:hGř"Ul:% C,gLp^{n:g8P~A+o RLh`odĆjN"'6iPZ%_,]'?(QήL_@{-RSqgfB#D/Zj7uMVFTgh aoi@hT>:zcbD-ra}XD#}s\PHª ]_wR¶9y1#Ȟ }]"2kG TWQU|pCFTY@JidlCo;"m\&9O,MG{oEjj?Beft޴[3Wv@jSg0fzR/Z,/nl>RTzGO'h $!#"P]iv.9xegP.BȄsveec&P;EK$Pu}# z0~=2vv\L!xɆŠR3.h`-8c3uO=I Yn65ȿ8F]pn},3p i=[@x?zzQ @؈v-g/(ģԙU 0dBw15|ʍ7W=צ6tLZxb }Mqm Kl"Ƽp/ꉮ0_so{[𓧮bP*dc0/ASS}`F1F2)F fUKSGW!ρj rAln78)x NhFV!/1ﱖ~+ vͿ4Lr۽/kdx8U4l_8Ҍ Չ<(Dޛ*b%Ԩ%.k >G iciRUO8&mTflZ1p73K6܄/ y}U^̀8.=~s|]4Vyo/\*0\R%W'0?mլAJ@.m5"gN)ե6У'(c=ћ\b\k?m7|HJ'cwefܩ2iuHJ7UPINLlȁC:8)ҵTH| J,0 80þTTñ[\Ưh ZGs'7=s+MALT׈`o\uMR0a~!Y$zΟ3'I]{ْ@ Mcx_!4X9$),76Ki(ߒ>4=lWӓ׆K*v ] )K/y>q2Be㳣!R2o$%!DȈU"@fʃ0p58k:9clbJ0ʓR|T+1B't+l պľXӏK"ϛUR 2J[Ei @kQ*s'lHX٤)\6`(BZڊ.mղKdF$'[V[ӗ%r9PF Vݯ NE -P\HYsBkmS6qL*3#.a|'銺B3g"^=7ڸ9#G]Gu(GF:–2: ؠsl*tXoMVwLRѢuF|>$]#*3:Or9O/U3Ҩo]H]P˸ lNdnm~' @~U4uP`w;*S ucσ1Mt;PJ63M|ٜB|XeE7mMWlMGdyFv(.u;jtf7`f= g9JYIc ]zs`M ֣_m,Nuƀp*H|>_o.zhys~soJ ]"_/nA6᷋ߙP {Cc57pjsN4x^*˿gG wTZpBRAʦIqKV`~INO?J˦~2Zfe9DgJhv1YQ;"[zDSOT` ,}<*I,B2"j\ZLJ O\ٸCtre~ :QSJ5`rB*yTW/ Cjl9O<.uk"Xz)(1P}" kp9@k߉& ~ͻ*M_[5k)lA;_)x~$@nUyB7%E~kK$Y=ƩA#:&d\cAn^w IW2=wƴu)RR3OkZvYil†mz%24\kAHkf{ypgQRJz I9Ysx?Q{bAl+ISAOFh~rWg ?J` ܔc m߁Mٟ \[bҁc4K'-+,`{rT݊C_vCHcOtn(E !Z O*eE񙨊j[mz8N<{ S_@H"p:0+TnORv0pVWžKD}88Ι[%}3HѸkys KU )\$N)l|!SDGTS$p৉vТ'Pf9qM/#Af+T?^9 W[Po_%N{@&;dnW!%}MҺb^JxH\&?ORߐ8XyA,`|bn6(\QeP?5sB8PHf0 OEeMm t#CmNy2B4/qeOphjљSl@F9#+D+n+DnsE;A\_ 6V$q83(_:H!,&15įôD }>T ]ey;%tzjR2$ J6JyGPϧA|N6EG 3a7 :}WnnѿruQ4BLw|?;DTCSr+76b%8`.>@cg7qo0( 7>3ɤ 0N:rC]Rk5Fp㑒b}"1녛mmnƽT)䙼١jà{< ]9j$6~02XMFt5:`9EuTi. RI>Tg#?BR2L=hO͚@\VŜ:z T"󽡪 B?dUF.#M Iܿ*>ݙ.pf:g_dvfa|.;wRi_607ZMp +={%bh۰.:6^ 2.Rl0P4}] 6O=X12%]tkbxE6!,J)uR˃cr'8=|eWJĔQهHj\|Dpi Nf̘bL '@dR&:\bVqJ]\Ejf+=U ]̤y%ݬCLkWht7 rx).{/+,![@ mYͪ K,a&qw %fOkL秦lG+/V{J/JYg' xoqahU(lZc!Yr={"J5նrO6!J5%NpXi*E^F\Lf# i7ۮRml &\}_G  @ Q߶~0NZh`B ;^1؞UzkoTZrٮʗI265]wD}"PxF}pgZׯ70C~(MҖb~3~#}/NwMJkFۗ;>" 2VOJ?dBD:T]~K0("j򘨹=3(vэP/qvTdx`3$J&~ f2^NZrHZ [^pg En8Y!Kx8y گ G A|cFYԐa,uwc5b&BFKC:̍쒁:¼MU'KGyZԑ `oP,Cʹ7-,Ќ0޿W*mǷ@X}NJh[-ExK֤!sU?CO pRQ 3/ !KOs>^1N>odH$9o9Arf+댧V=ٟQ+"c v639z _mE-!f2TTw{M>E&%}mQټp^$NpI:)v=f̳Mj yčpY]:rFb̓0Cy,>u,beHnտRpA2!luΆ87iZ)S5yVڪԏ0zL㖳چ(n A/=/sE;T N1~B;XOkcAҘ);JӄWv5d>7jJ[A`|$]j *Dg޴v@Ov,ʹ4t4-vt݅r'WԮf# 5%ǹ{O8x[G1cdNCM507H"dIGVG֒-$ڝNZIeȹ ޕBeJÒjK)b2VTƧS#^A["xhSj.Ij 9:Qyg2jL6BT¢,Q#;C~a']sy$B gA_Gw3 zN1JX2Qw9;ڿ+ GԮYq&`!SCf>0C9 Ύ70tp)Af&vʐזU !$͗2Y*d/%$VѸ BG)J\(`:L=D\ך \\zJ4Rʼ Ky)Yq 06RXI2J{(CR^y(Zf|x`~ɅNщns0u78Sl%T2`SynqCKy%Q>c+R,EGHRG+6k.F~$]l3Tt#=R/J 'i~NA6w8I#{퟾v}iB_ *1T=[cb\x= i $9;ܡ!i5f4mprJ[! .[Oˇͥvt#T예]ErBoP"s`- lz@>kSZȪzO{\(=f-. z:<rD P`SS3Lnhr坕)$?J@lT3 Z0>蜪Rǭ[I~+PYn@>"W!4QAMÿW,3P'%lg|IHYn|yx @Y}Aм<4H-:lqUGMIGݔ7EK .зy腳+/t2)P`6W{ ehMc|n=k(:y29 "mSkUd`9ONIxedכI!lZ!ƒvJk]KS2Lq[fHQg WGKaze{dC'.Qkc8O~v1d̖飖JDoSL]SY!amTpNZ#zl-)f0rYF ՜W x 83WPL6NՆTI׌!__Liqv:fGZ>IF']X}^|\onTd6I2gRvaWV:T+}Cef"+ܭ Pw 2P/J9WY'nN?]v:l73.hL&Orf${ g\ SCJH쟍P?iO}/_7XfM#)ک6"p%tI} u3hcI55䃋K` 6ܝ~fFcc}7;@IfE]z?Y*^CQ(uF̅Y1Xm@9v /yj5gta/ Xt|ZM=`x"1;fy8}o40 ML$Z(02z^h"Ekq#xBGWcm$"Yؖ7,E6`yU{aKzO9 R> ox1>[5dE .Dɵ2uvOg`Sz#?òdM6Du!t=1HX 7JAY=_+yă7z^'.^^$ÞWx;HʌP(Ks4cMqꮺ |4H􃄪!ϮC%^f/j-G*^!.gFϾAoU8j'I(i@*kN0\J@ lgϦF)>o3f]ֲ^ `b_>S ź<#T  (!MX.x)"VF[MqKTq=u?s>Aא1€{yЫ$j7bY ʽ$9I/(QܣEIpף䣛 q;A6Pb}l`BwmZ`@H#VA'o7nړ9AֈYcfi^RcԥNVc$l]."[(ܵ]p?{ Kn#Hp2=&>޽ۿ|P@k5ᙏ)lb;kX{!ǁ; ~w~]<2THi$deѐY䚞Tٛ ;AD>1[d{v)`D|k !_rVn F !#;| 1?imG+  E؈Q<>zdɒ;(ց+To$L;5,QJjyD\kxw}%tR🬟A}w2eJ螏\3Ynf_FbU1vi MePIfU0?OM ]^C~&p.Hx$V^ o Kf5꥚|EoAd@(>F;GǙt} Tӯ2e-_wj_tC է:@j$]LGVL8g#\lޖ:mGF?`$$Lys`!!ȿZʫZujlK+{\psYr; |%sMdn1sx\UcI ☎YSN/gv,sju{^ vvQ8$6gMJ1eS)s#2fNm^Ѐ3>&ͩ҄rXѸ#MO|x G6B? ! )2a?x?wlMQ6Ykpde橸o%K;gLUwsav/ѡxs O ;+jm xI'1Gr)xmUD# S)"_24SQ H+n&$/{Êb&"IM=& Y?GA~3(b@vfZ.ͣ졬sCmBq "LL6H1̐O- <ABt N]^ea7\9!HXUYR|0Ll ٲk8Y [>Cc&9Nޚ!\qUJ{ Ȕ 7clY6iB̓\R8?#g-ȗ7zȒU@m8rmk=rYnTS #&v \Q=׽ƇD6:Zӑ7Z"ڞ71"[t1MbRgŇo7#uSgpA# yia_+y׋Pӛ0_fu- Wa=s9frC2,w~O {:8D%%( ac!Lxk5r Tf_n_ﰅf07U: 4'%"{l.Lz#08WWԡ8V L8YkXeU l 1ZwQ&.CuX\Wf]+Yr4)͗v*dWGi<;|ũjVBqqFnB6O!Fv T&1DyH$94&PWM:_& 9%4J]rƲ4K!UHZwOlǺ$3&Ʊvph{7 PLǴ b[:Dʏ(?yv@'y7s|%Sb+[ܕ,w֤٣NLj Ae۫w;u!>>[ 82{=M5J4־rֶ(cX~q{-~,˅_lV,!7DVt2ϑY7b`` tOϬxe]➲udnD*B |5\qtSL;; qG;ixv_S a f03ވ.3UR}4y͆֟ӰtjǙA*!*/m!ycCǩ~޶n? LQv9kVTcI 1zֺ D)ϋ%{Z/- *. +OP^11bi [2^S4'hX 1s#fی?>wD܁:*x]B%8yĔzJs#>*r] K?Lz &hKڎ%kO^A 1ƺy#{?Sʝ-T BՀrBa=bt>f.m?9@6̸,!hjfT/9zCiE+:%Jy/:]N<3/y ^uK>Ǿ"Pm L#q2(Zi CXy/. d!Rt3)>A. spV$h [w6qT]2CT~%5)[#+:!(笪\*RéDiQ)<%Ag9 ZZ"=Km9֕A:v_bj |Wj-[X!S*+Bkt{:Dz40P;˄6`cK\2_84l*U(iA(;}`Vq3,WTIoc)j//:xVϦ-Tśx|vBϵ- ΄,jsҖq}ːBH=W!h޴:]cD0-iyxSlgH;p!~.|oZb5)p>yR!P[22Lؠ7/GW  eyA 6 {,M?taOБ qQ zmWjtyFb0lMh"hSUδZ4&md\"L_sf@`3XZ1QvvzDt1#厄IXWݷؿ9{j.]'us /` P0B`!Oo4/{jQ%HŅUgE̼ f@a@m{4hf7:d)>sRo,w8n~k *74Xw shSӍUJ(9 H'&M2`<_RsM"gT1;q%!NX'=ET+N]&v\ǔWfQ"X^""D$ka\{紪;>&L ڣo t+!37M T:Z({#0GH F=xtE!t]9z_E'cV׮8 TIJf`aXPƕG,V>W1 eW[e []+8Rr T=jo?l[ƏQ(I K NO}!,Qތ4|*`{sss~7^6,swz)T%Hl|CDQjt1_@"}#Bk Gy 2-t.ypB}5?SOt0v4.-Wtز%jL)1G]\i޹.3ғ뻹OΠ\nHݐ#L>&ڥ\K3ӱ%a*v[!I`9+~` k+J~7"&`-s5`qJAj/~lҙ2{+ai6QgƆjG٠=1E|oY9q$d wR~X}~ik8$*!c!5.Y^7(9+suA Q|mmd%5)_J<9c+>qRr7;\@h}=%Ί(9^\|m@*eY^֒Ȧ9N g&̖.dTT|J{ [\u/wآ\&*a⍡s m VZxlaʛb6llT8=ohmu*<8U3vo'Zy6MFSI&tY) ?S[[l]sbE3!BRG5ҵNS .QqzONFkϵF;߳Ԕ1x|c9/ZK?@'$[Ё%mCgn5Gly$ES>_c=f H;zi5V,q}C"`C p*&>j::_x3EOeut2:"E.g.TVwfzPU^(Xf]ER6)tj4".$+&5&߷|# tZFHޛx_qz>/t=- (+a=Y ϫ௼yq[wFkw}i".nM;RV ;1sjL ,{Z0ྦྷ!.;NA~&2t Zƀ@QgaoPzR3jn[j_kPQJV]۩X+"|~bCyY_ g涼걽[ђԒ谝dٸ-g æEzmZ|O匭:l] `Ʃxl"Gdz٧5ݎO @񥃕=VU6*H#. &ɝ :65Klɱ; LSf+j˿P.d1o;DWwLO0ӪC}:u׵u>ZL?ilҠ u=+QԬ_2>lFz]Jˍn_6ԬhA-L_>LtF)- UF vrpn؝bxOw ѵ^4Zast.j|0+tn+Ge v C= 8TXdncq˫ԣ!\՞%?W_ji\{S-G/|PkF=$sCIjV}al 'G:dDXD`W0=x |GlO"(hplD۲1aUz>0K.jq O:x?O*^Ka@fu16}"ц& W¸ .$Fds 36@\ک.fϲ<\jܼɰ0t5hZf @ y =ߨka 7k:Se2|]f9+O6mJlf+$D<6Y85-R5mV Vs` W֮9jpxa†s%bN`l%~NV5 e2Cs$Ԍp=:6S>urD5L9l*gORZ4t: HTT%Y K[B?q&wrh\bq.ԑ;fi.UNh*-V۩srͰ2ífmk\tCBlwݷLZԲunj )'mɉ_F^NM }#cHe5Y}A#/&2\/ soYH͏ezs⅐d3y3`?qb ^J~`lA:Z.:VXma-G<{ڥ\u=C89ohD]R) 5quy⽖:AEME "ژ8ڜNV":waJjrΘybĭ 1d><'ԩg-ֆ(.U gsA[k# hA%/cG8=1ȑ!ERѝ5LM(vTsׅx3CU廞/Y,0kyvu׌Z䜁M!.@ẁ^u!h ǹ ?Qrk4G[+ cȼo$e)נ,. OlOXڃRmL} **QVN%etIhPwA}$_vu2 lâڂHY-&)Q*VJh@ _aF~;Tp|i'e6s춍t ݀[<ܘm-xe/؍ Fb 9ơ T2?*$ݐϭG{=+jf]WfUG3蛏'ċb> +4Bqkx毊ڲ t7L*R=]QbWj!oƤٙ|-]Ts'٦m0Y(g=ciV~1RW'h r堻$HOwZ 8VMLY47Ru&(J^f\lrY׋e¾gǏ=.#Fޥ_&4:Hș]Nt,h|d(TobY끦9qe AZlU{+Cxh:wukW?'hk$ ih;!^89+ўw5>y^ĵjT|r o ;X|gZh@v =gv:%W%-F`Dcs 3o4ꀿrH{C^'CYQ=rjy~cVQ^0'R&]kliY62G'­(N- ZI6\x5q)@}ߞ3-}#EOqa%v={8Ϥj vӲMMUhE䬁,Xh/|R 0嚢@XpX^(%~W9!{Қ%%^pǐ-8rN=C#XfnD7pZ#/ y1P)0zd<ΐTԾ̻2-;`0 +[L/tO"f4˷!H'{Bw&~vؕF˭GuM$ghS։@P#5brZ 8oB9< >J+PrPm&W!#GfR/&ܐ&"y"}u5zJ8M0^\n}))i 'Z%=Iéu;RJn6?wh{5tpoWw)."BDxbs)\S?4'iz7*cy ӧ訝b6n0)E\x2oKF͟ NVPS`]Lẚ_V pw%(%bat˜ٍ/\8 $W㕛u/RU M/"'=Woa"xMKǻJ<'~WOH#[WSR L`^蒋eYHݒ2t0a+ȷ(ǽ-2LI˚gKvh& %jʪ^Q{voX9N~" {1 nƐ,.~#]x'EAp ƈYt簐K2OϨ/t(>Q*q@.Q$ZuuUf0Z572ΠVF4eTծIdkTkwe陊 8嵹| 'uwR'oO[U3MV]9򱶜4# I\2A7΄몞%=[ ? c?ruqw~tݾT z3K7L]ӳ *R\ls1ۺ( H(wlSۃPmJsફ߯ȗJ]+gv0C(Z@ 8$ ;ΒgڿM#?oT n,ГojBO yhŻFSMH1\ˤQDθ2zR4al#TqsTUX#,6F %w8 UmS :j@?-3mSV9/[ҚZyD06\Ve,_A[D1pvqSLMNA9R!zV"2NҫQ5$r`L՜1!#{:J vձVm0';w= /5sQ`՟q&0:/Mׇ,p,l㥃')5aU8Tu_YJF Mu.$n|IhEjE^^R i35ݲνuW/(3nXEFE# r^Pᐎnm:DK셞n ⭂8Vl즐n33mJM`ER>6;[RBY/ʞf{p3Š~DV3lv6pZtdJa Rz<\sK7Zɭ$V,h 7hʳap3%MJXi;|X8^`:狑 ƈ ? /^F|菱4K q EJ=`B'TˑǢ٨,|)"c@Xw˨U0Їh_7X~RUE?A(z{e_Ez5!wъmK[Ax+߇D{TDŽ lODac$}F! ]8}*ZdGRWJ\ ŤZXSf녈Gȇ\+ʲ&e[ j/_ +?!(ٰzjŶ&Xr<߻:xwJܓl"ARww {ޅ%RL<_Yuj$.3C eL59Ð2'nAH?tکduI֥J/whGN~4 ŴÉ00ܧ I5hl!Mla Tm 48QҜ!^ڦK[x Zy)kNwݣr'4*Arlw6Z+Ph9*bIk. +%3"zMpK 86.(ݐɆMqxrC¡~y]?妿rwPZEt[j%A ϯsF[7= !Z\fM$b}#^h8Y3ơ2*u@^KtQCN'Yx]9 O#򽉣^ؐnZ/wIUB}4dq}6Mic Y`7N#sĖ?@iѧ[iZ+@E32Y&0vGHZ_+"VK1S$e'6DzIEQW@> ;Bh.@NM%ȅk%d=HDce gȺGJW}=ڷ|cҨz̡/ o[xm_O12\р,)LD ѩ A>d\FXvZK#8Dm/8 Em2}=6%*9M >{/br~dz.S\ݙ,♥ &ԅH –L_X܌aro 7)-wzbzS@PTlUn[\qɟpumAmON7@?:ծ]W9j$kdWƙ5%c!{ JQ9j4jQKGrf~&l2 8l^qampN"VTt|vi:OJ|TbڻD%>Ŏ6}w'5?vrmUKjh zǩvw 'Gó8c55U^8}|y>rn=<I[~$=]Qm4~80҇:^|Mw~FN;,\8\y\ ĽdDӊII<(63-z0 Ңv/®k|3R %Rʺ}z} y'[A00 .Op4Gm\@.-t;Z%wM+ VZþFg>CwiYIFyD1]XOT_Vm ARsg}gA|LU`>abk܏=u-JAnu o)etUj[-9hNp5`$#S`{ݽ=E,rc͐|Z̴@ x3&Ixt"66軰 Yx8V Sm cXDC!hm='l\fz'P\6XCnsXK`*z3i"=0goE1Zi;)4ob2.᎑15㫜Fd_lp,$hg*?8/*o&*'i ~ !"{hzo]9OPl3g&|GshG=~zʶR ۄCS2q/4f잓Z*pݡ0 W(s-AQIy^2l^A>j։Q>7n=q)ًDxo St ؙ@7 S12w"ۃ=;-$<g~J2ytN~>.`')w^AN_Td͸E/Xt%>f'H7;a>3҃ u$PoVUDbp(lsaaلCg%,׻[z@m=Zu_͍koʬ4m=`P04MW.s5]i':HotEB£* ?,07lo^O }~q>[k]#!ej@n%A# ;ΓsϿ߼I#V@>wKz@2܀xj.NH'᷾}m3o-S=ӑ 8Ǒk)H|y&Gbj :j7L0Tx:] .3Ks5Ӣ]Ztm%ctK~;p鬔B8oÂg9XHhR`6:SfC dd'{@H3gZ=ʉH@{n)?[)c5Kɞғ*ͽsu΅ã'ꬔkKzI)x5_/Zŏ\n/&CPGA`CUNjGT#.Jk.N?P}oߌ8bhزy ;? AgL"糀frՆg"OInRYݏlQZ/HځЍշXCi(Ô0 |%Re4[7l((q}y8_ì8&ɩ*YM.LrxF9HRij3l/Kc#j>W{u;vW֪CTKF'e=,9C;/Ֆr -IiXxC=ҫ\bbS#=P qEi>JNVSR DXpN I!z]}=Id<=)GkU  . $vO•m>KYT#hD0,)&':ӧLQ`WlP]ܱg.Z9E ]+؎mM( mQDz ]-V6TDEz8b}˚`ɵO~cAAwD 2Ĝ:ap<_ b$)UOǑvzܾj R0?>)r_YsƙŖm(]`C.%n*I޵?1H -ZDE,ߥAz}e(Qe6l11@/n~wRִ+?~z{Fc#Yu |RّQu/ *C+D|ԭa=p%_hQ`H}ڴ=p=.nyZ: :Ĺk2AOP?D(KB!ԛNјʞR:.R7\#*ˏlޘHe^F3;EKMay.2@"j#yځa?19[loIb Aw91;r&pƚ72~_ 8HΧ3$r g"|OHƛ%\ &Uu}~Y,Q(E{\KbaW|ĦLgKe|C;r>w%X@Kp2,+7+A#}1gc*)2{)%B$??yI+~,gԴ`zNb}nj[0=Y9\WlځaF}TNd (?4b7*,=w}]3GVM&=0t?@2d 3EӉ`Bڹ I/r^*?Yhjv7{j6](1>:H8K9s̯ޱQiq v!Ɛ6g2P  )\KL\%mk*yn=lodiJ&pd[%8SC+1H-Ђo5er\o-JLZ!b0tq &. @T,Ӯ}M ; /fv\a U 7Nd֭A:9+auLMקi*G o x,$ׂOk[ ee_Z% PLV?U 5؆4B+36Tye;/3cv ]mSxezzB8!f;Rozn> $:6B]$ύV>:y{# /)u7$x!v8v+VWGʶpA: L/3KM)tWUv- r(p?Jl2X$;jjaaG(XHloAiKڬs_IKjSJ^6>Ǥ;ʝ Soh^#twل|N_u*8}qm2b"}/VLȸaST?>V=ЧfkL_q] ܼ q/ߠrU-H)Fnn%@Z_NB3OA&5GV/ԏy/O٧<LK/1OjHuLD\tFbSDޘNz~Zƴel-VB.Y) CpƊkwBJGF[gRpPE]BÜ(tJs 4 rYktAbBzCZPM2:(\XOŵ}%pgG'uJ2hfǷgW 8R9h5/ca=Cܠ`R\)blecZxD4_ރA>GL{@n\@{"#tPɪUfrYqE=%gw+MOVpoaiCgvuN(V)VYX٥1FKQl.n]!ټ]TYbx=Shu#,%R2/",󯇤NJbGDqw `Ӗo,aגּ9q^YoYƔcWR Q4Jabeo?;S8t]1(i͞6@fDfD:3Wd9ֶskQ *~~ޱ-a"<ǖp9_|WԞP߼55.=_J?z̮B^O"nV#*`UWHjE=1G MUEK*r:'đs1m6Z%k԰ #p|k^_q֝2 6sMAXӛxk"ĐH61,u:QѺ4Fy?8BM(`yޥfYya4-76>1E}`4p_GV[;|nSe;|3Zoڼs׆s&Kݗ\χq-]F:=_Ӭqzdơ\?%oA 3tb Ý!2ě "OŃ؀`ScM, |B"ۓâwat?NNxu#qY9QՓ?_Ԡ I<*m#9OPTYuwn|Mz0Mȷ7V"Zko-)÷kDon GfsO`l%mw%^X 69eE!g:Z`yЬ>b^&G+ 4TД\鳕p&d%(Q<~ s sV x >0q]N-[L1=Dev-Bf>4:=qٜ~8cb􆍣Qbe;=j6/Y: ]4*Z76Ò.vG2"H+Ki+M H R[cR-<_ChN|W/m.lJ[# Ri輈b[6y|ɽe Hwm[>!kuHHۘYg5qlI7CؒґJ<=pִ0K8h7hp@Q'n99D`QN[ t0A׈c3وޟS qC[Rg*"ʞ ߞf(`pbds^,1Ө4dʢ-(ŮgCN%a}KӎZҷE ;D@snic_#|MBKy Lny3tΟ,+UF[Pvb5L ! =>;#nn %+Xr秿&K,˧%\M$2x @)딊ۑWp-+]#E}Z{VVSNyȞg. V/AyTEpn$$v%\nc@IEL%f!. iye&l$%:F ~t7y{7jD8KmԭV <෎$Z3˕2/1kz]R[HOx͙@(.Jnc8ɅI#&} }D(ZYd*ձ62N&K✘77nǎP@o'NK1뷶J=︕ms@Ά Sey< Tݪ6JdgЦkq~P rY~[ܚS{}%_bv̱l #1^b"ovEQ#}uNu,66OC!-;7Hpi %'đ.5:6ro*Oey'7m T8$ovPw7iX}]mRl<Yr9cyxJZ_irNe?2i4Jg[u$1j<"q92gĹd- W(K'⟲=|mk%8iz+cuV1Uڊ:`7c8>.~as-odrPV',LըsxʫZ1#hv§Z*lDS=G_S`Ӣ]5uh o:ι1g,m{ֿS. iÆ+If ubT Գu{.DC$XͅĐ Ш^0IX#}&m:slLPףRs)Hd~ Lמy; g$\5iwmnSBNJ~MӒQ!`L9)O\Kp6Dt~H >Wž`,izh+f$Yˮ|ݩSFpj-dz)l{v)U-kFK[ZZ↬G pWK¯}WP4aĞ kwwʽBR5J 1']jXN|jv+jBd }1^sۆִ3<AhTŗ9Yox-%l8k Q`9akm̒:^Gtˊwɕ k@%VbdxL?d]Rw҄5S!&t  #N|Unf70b^W^Ev9 ])O2N}vkh_sNhlWbS~gg A>(ӈŚݛA.RG}J&V-w:"ci .cn$BѯAwM-3d#I5+;vMV5?M#qxCD~bay'NՄ&ATxF4K%Ґ`(;:hTi4hvF7cf2HËmCry^ɲHw@?hq')Zu4)B8gr§W b}+2Y;q`%>&ZqEVzN3M8qhp.m2:w8[*(nLeUn:{5EY:`1*{ @|  /uџP[h&*C*֫ޏ#*ȧe/\^DO Ti w?%#ݟ0ˡԉ=)fR U#f0k`WXnDI`]7aͽ8؄y_/|:j$ j ΰ\%P}Zh+ds]*&li|Nm )1dEؿ)'F#:Vʹ'܃fûd7 :T NAlcC4yTMeƐʬn5-ZZ!jDǾ.CFyxn--1D<aUuHwKcM$H \2VhY8W:]'=ݒ~7KJ]f¥ջ\5  n>-GVs !T*.@ȴ@ Zl10Z3o$=Gn9lG]b:$$եg,` ǰx(Yྒྷa''Vb21y_erOږYoOPxGߌ:غD>Yd6h0bwx¤@n7g˹QQl7? dTHG_ڞ CXa53]oWGBFرҌ7+-Nz_Iglqj;)猌B9 [bH 쉛"9BafHơ> ~j ^' ,xa|B1n"J{ J9mclDn|:^ɾSsH PП_f_In"#ZP4@?KB ҋ(n"+Fq?8FPĴEiVj(p`}f嵶}7eiDf|00/y}zǴ fqfDLJVj,4;*Z!iXhPBRy):N]DsFR1؝E3gV G(N9,'gpTǡBΚҖ.?8ZUCV2p{畲DΞ!ً}?,s<_U4V|ߜ>7]{uH 8=&%eclan85}^3e+nQ-H6j%tٰ/0`:rYնͨa_5THH̶APd 1[ >:?(e5`,Q(lANI2k1"f Srhv?T<YP#ǩƙQoB"jzG_V5-4w'@?59'g\:#Gn3Nye%G~FLdL_$UX9_۾lbGcVUn{PS-JU qLNx-\Yzto.U"Yy _礧CH{֦S9 7[ћv.?IgڂuWv<}3Lnd*%&lrB3BU5(ɿSI^+W_426dDN/ökCYl#Ƈo6%f49C}"1c Nl'qMXc ``"Peݣz;S& .̫ _\+V% sڙG@ݢ_94pdY0pR@Zg)z`#9r H~E,Y^bLrI )_ЅEH IcRs;(=Q CVmAj~O|)v&{RA']:;fe똟me)?v!E|x; h>vɾУev"Ao滾/Gٌd''$))5 .21 87jaPA$$RGXuFs@ݟ:0CžAߊ0d.Xya ӭLVGMd!3`rR̓FS`0E5hi^\!=ĈA QvAL${=@e_t7rMs_$#D;q^{6 {n޽nVFг{_ vaXtwqtG^w*zɔC+tbjQ$#Q%dvYV-*F*WΤԺ"Sxl|r4+^af)"/>O]tûY ڏ !L e!E`ݓa!U=)uyނ vډWCui/&!mOYk>b;α܉) n|OqވԘ9 /'OZF|3,ߜJD!xs9q?@R@U&e&>5h@}q.A.d97Dt@s#0H'! n5d[=P L)>ϋ2Ih[aͭoyfl=*䣌~3wލ3H,^ W'@YRpTcJL͎9 Uzy]C.MP^E4@ QIz0_R _(LA\4-Ho Yq, Üt :y@UO͇N.e]$;( -^:HY?nSf ;(`f4+_oq60_sO[e8Zh ;)"G #DB\0aQȔE`]RpJ ÖTl*k]nl}Xo_҂&&F/j}" 4"Eg %Vpwqͷ6Sj q|Œw/!{8gaI歩O`E"(WͲGM@lc{xyn>L)d-itrͶkI \IUę lNLe-4=Rk1ѝ`vqw.Jw9p Yi 8|$~G=]/e@=T6c+'NH 4*QJcohd}؟Z@O qF5xXEwQGˇnTIU_6]"Ӯ^3PL`1͗u ׃.M'FMcvefx(ۈ% :9]zc=c }ah YZ