From a99c1ce6b8a81063644e683bc3bf24316ecaed6c Mon Sep 17 00:00:00 2001 From: Razvan Deaconescu Date: Tue, 6 Oct 2009 15:28:58 +0300 Subject: [PATCH] added old repo files --- old/bt-prof/Makefile | 14 + old/bt-prof/README | 16 + old/bt-prof/add_client.bash | 19 + old/bt-prof/cancel.bash | 5 + old/bt-prof/clean.bash | 26 + old/bt-prof/cleanup.bash | 16 + old/bt-prof/clients/aria/config.bash | 15 + old/bt-prof/clients/aria/parse.bash | 20 + old/bt-prof/clients/aria/run.bash | 81 ++ old/bt-prof/clients/aria/start_mon.bash | 13 + old/bt-prof/clients/aria/upload.bash | 13 + old/bt-prof/clients/azureus/azr_helper.bash | 32 + old/bt-prof/clients/azureus/config.bash | 16 + old/bt-prof/clients/azureus/parse.bash | 20 + old/bt-prof/clients/azureus/run.bash | 81 ++ old/bt-prof/clients/azureus/start_mon.bash | 13 + old/bt-prof/clients/azureus/upload.bash | 13 + old/bt-prof/clients/bittornado/config.bash | 4 + old/bt-prof/clients/bittornado/run.bash | 34 + old/bt-prof/clients/hrktorrent/config.bash | 31 + old/bt-prof/clients/hrktorrent/monitor.bash | 31 + old/bt-prof/clients/hrktorrent/parse.bash | 20 + old/bt-prof/clients/hrktorrent/run.bash | 92 ++ old/bt-prof/clients/hrktorrent/script.bash | 1 + old/bt-prof/clients/hrktorrent/start_mon.bash | 13 + old/bt-prof/clients/hrktorrent/upload.bash | 13 + old/bt-prof/clients/mainline/config.bash | 16 + old/bt-prof/clients/mainline/parse.bash | 28 + old/bt-prof/clients/mainline/run.bash | 81 ++ old/bt-prof/clients/mainline/start_mon.bash | 13 + old/bt-prof/clients/mainline/upload.bash | 13 + old/bt-prof/clients/transmission/config.bash | 16 + old/bt-prof/clients/transmission/parse.bash | 20 + old/bt-prof/clients/transmission/run.bash | 81 ++ .../clients/transmission/start_mon.bash | 13 + old/bt-prof/clients/transmission/upload.bash | 13 + old/bt-prof/clients/tribler/config.bash | 19 + old/bt-prof/clients/tribler/parse.bash | 21 + old/bt-prof/clients/tribler/run.bash | 82 ++ old/bt-prof/clients/tribler/start_mon.bash | 13 + old/bt-prof/clients/tribler/upload.bash | 13 + old/bt-prof/config.bash | 22 + old/bt-prof/list.bash | 43 + old/bt-prof/mon/Logger.py | 72 ++ old/bt-prof/mon/MLservice.conf | 1 + old/bt-prof/mon/ProcInfo.py | 767 ++++++++++++++ old/bt-prof/mon/apmon.py | 950 ++++++++++++++++++ old/bt-prof/mon/p2p-mon.py | 37 + old/bt-prof/run.bash | 36 + old/bt-prof/track.bash | 11 + old/command/ban.bash | 11 + old/command/cancel.bash | 9 + old/command/config.bash | 37 + old/command/run.bash | 12 + old/command/test/test_cancel.sh | 10 + old/command/test/test_clean.sh | 13 + old/command/test/test_list.sh | 10 + old/command/test/test_run.sh | 29 + old/install/install.bash | 5 + old/michel/client_config.txt | 40 + old/michel/client_info_bak.txt | 36 + old/michel/client_info_full.txt | 40 + old/michel/client_info_less.txt | 20 + old/michel/client_info_peers.txt | 39 + old/michel/client_info_seeder.txt | 1 + old/michel/file.torrent | Bin 0 -> 344104 bytes old/michel/local_down.torrent | Bin 0 -> 56132 bytes old/michel/local_run | 19 + old/michel/remote_run | 13 + old/patches/hrktorrent/all.patch | 144 +++ old/patches/hrktorrent/all_mymake_flags.patch | 157 +++ old/patches/hrktorrent/makefile.patch | 23 + old/patches/hrktorrent/signal_handling.patch | 104 ++ .../hrktorrent/uninitialized_core.patch | 17 + old/patches/hrktorrent/vars_mk.patch | 13 + test.txt | 0 76 files changed, 3835 insertions(+) create mode 100644 old/bt-prof/Makefile create mode 100644 old/bt-prof/README create mode 100644 old/bt-prof/add_client.bash create mode 100644 old/bt-prof/cancel.bash create mode 100644 old/bt-prof/clean.bash create mode 100644 old/bt-prof/cleanup.bash create mode 100644 old/bt-prof/clients/aria/config.bash create mode 100644 old/bt-prof/clients/aria/parse.bash create mode 100644 old/bt-prof/clients/aria/run.bash create mode 100644 old/bt-prof/clients/aria/start_mon.bash create mode 100644 old/bt-prof/clients/aria/upload.bash create mode 100644 old/bt-prof/clients/azureus/azr_helper.bash create mode 100644 old/bt-prof/clients/azureus/config.bash create mode 100644 old/bt-prof/clients/azureus/parse.bash create mode 100644 old/bt-prof/clients/azureus/run.bash create mode 100644 old/bt-prof/clients/azureus/start_mon.bash create mode 100644 old/bt-prof/clients/azureus/upload.bash create mode 100644 old/bt-prof/clients/bittornado/config.bash create mode 100644 old/bt-prof/clients/bittornado/run.bash create mode 100644 old/bt-prof/clients/hrktorrent/config.bash create mode 100644 old/bt-prof/clients/hrktorrent/monitor.bash create mode 100644 old/bt-prof/clients/hrktorrent/parse.bash create mode 100644 old/bt-prof/clients/hrktorrent/run.bash create mode 100644 old/bt-prof/clients/hrktorrent/script.bash create mode 100644 old/bt-prof/clients/hrktorrent/start_mon.bash create mode 100644 old/bt-prof/clients/hrktorrent/upload.bash create mode 100644 old/bt-prof/clients/mainline/config.bash create mode 100644 old/bt-prof/clients/mainline/parse.bash create mode 100644 old/bt-prof/clients/mainline/run.bash create mode 100644 old/bt-prof/clients/mainline/start_mon.bash create mode 100644 old/bt-prof/clients/mainline/upload.bash create mode 100644 old/bt-prof/clients/transmission/config.bash create mode 100644 old/bt-prof/clients/transmission/parse.bash create mode 100644 old/bt-prof/clients/transmission/run.bash create mode 100644 old/bt-prof/clients/transmission/start_mon.bash create mode 100644 old/bt-prof/clients/transmission/upload.bash create mode 100644 old/bt-prof/clients/tribler/config.bash create mode 100644 old/bt-prof/clients/tribler/parse.bash create mode 100644 old/bt-prof/clients/tribler/run.bash create mode 100644 old/bt-prof/clients/tribler/start_mon.bash create mode 100644 old/bt-prof/clients/tribler/upload.bash create mode 100644 old/bt-prof/config.bash create mode 100644 old/bt-prof/list.bash create mode 100644 old/bt-prof/mon/Logger.py create mode 100644 old/bt-prof/mon/MLservice.conf create mode 100644 old/bt-prof/mon/ProcInfo.py create mode 100644 old/bt-prof/mon/apmon.py create mode 100644 old/bt-prof/mon/p2p-mon.py create mode 100644 old/bt-prof/run.bash create mode 100644 old/bt-prof/track.bash create mode 100644 old/command/ban.bash create mode 100644 old/command/cancel.bash create mode 100644 old/command/config.bash create mode 100644 old/command/run.bash create mode 100644 old/command/test/test_cancel.sh create mode 100644 old/command/test/test_clean.sh create mode 100644 old/command/test/test_list.sh create mode 100644 old/command/test/test_run.sh create mode 100644 old/install/install.bash create mode 100644 old/michel/client_config.txt create mode 100644 old/michel/client_info_bak.txt create mode 100644 old/michel/client_info_full.txt create mode 100644 old/michel/client_info_less.txt create mode 100644 old/michel/client_info_peers.txt create mode 100644 old/michel/client_info_seeder.txt create mode 100644 old/michel/file.torrent create mode 100644 old/michel/local_down.torrent create mode 100644 old/michel/local_run create mode 100644 old/michel/remote_run create mode 100644 old/patches/hrktorrent/all.patch create mode 100644 old/patches/hrktorrent/all_mymake_flags.patch create mode 100644 old/patches/hrktorrent/makefile.patch create mode 100644 old/patches/hrktorrent/signal_handling.patch create mode 100644 old/patches/hrktorrent/uninitialized_core.patch create mode 100644 old/patches/hrktorrent/vars_mk.patch delete mode 100644 test.txt diff --git a/old/bt-prof/Makefile b/old/bt-prof/Makefile new file mode 100644 index 0000000..a1a5093 --- /dev/null +++ b/old/bt-prof/Makefile @@ -0,0 +1,14 @@ +.PHONY: clean check + +CLIENTS = aria transmission mainline bittornado azureus tribler hrktorrent + +clean: check + for i in $(CLIENTS); do \ + rm -fr clients/$$i/dld/* clients/$$i/res/* clients/$$i/log/*; \ + done + +check: + for i in $(CLIENTS); do \ + mkdir clients/$$i/dld clients/$$i/res clients/$$i/log 2> /dev/null; \ + done; \ + true diff --git a/old/bt-prof/README b/old/bt-prof/README new file mode 100644 index 0000000..bced74a --- /dev/null +++ b/old/bt-prof/README @@ -0,0 +1,16 @@ +clients/ + - bittorrent clients + - contains + - run.bash (running script) + - config.bash (configure script) + - dld/ (download directory) + - log/ (logging directory) + - res/ (results) + +meta/ + - bittorrent metafiles (.torrent files) + +run.bash (running script) +config.bash (configure script) +add_client.bash (add new client - create directory tree in clients/) +track.bash (run tracker) diff --git a/old/bt-prof/add_client.bash b/old/bt-prof/add_client.bash new file mode 100644 index 0000000..ca85544 --- /dev/null +++ b/old/bt-prof/add_client.bash @@ -0,0 +1,19 @@ +#!/bin/bash + +if test $# -ne 1; then + echo "Usage: $0 nume_client" + exit 1 +fi + +source config.bash +CLIENT_NAME=$1 + +mkdir $CLIENTS_DIR/"$CLIENT_NAME" +touch $CLIENTS_DIR/"$CLIENT_NAME"/run.bash +touch $CLIENTS_DIR/"$CLIENT_NAME"/config.bash +mkdir $CLIENTS_DIR/"$CLIENT_NAME"/dld +echo '*' > $CLIENTS_DIR/"$CLIENT_NAME"/dld/.gitignore +mkdir $CLIENTS_DIR/"$CLIENT_NAME"/log +mkdir $CLIENTS_DIR/"$CLIENT_NAME"/res + +exit 0 diff --git a/old/bt-prof/cancel.bash b/old/bt-prof/cancel.bash new file mode 100644 index 0000000..5921993 --- /dev/null +++ b/old/bt-prof/cancel.bash @@ -0,0 +1,5 @@ +#!/bin/bash + +kill -9 $(ps -ef | grep p2p | grep '/home/p2p' | grep -v 'grep' | awk '{print $2}') &> /dev/null + +exit 0 diff --git a/old/bt-prof/clean.bash b/old/bt-prof/clean.bash new file mode 100644 index 0000000..9d49122 --- /dev/null +++ b/old/bt-prof/clean.bash @@ -0,0 +1,26 @@ +#!/bin/bash + +BASE_DIR=/home/p2p/p2p-svn-repo/trunk/bt-prof/ + +source $BASE_DIR/config.bash + +pushd . +cd $DLD_DIR + +find -name '*Tropic*' -type d -exec rm -fr {} \; &> /dev/null +find -name '*ubuntu*' -type d -exec rm -fr {} \; &> /dev/null +find -name '*Ubuntu*' -type d -exec rm -fr {} \; &> /dev/null + +popd + +rm -fr ~/.bittorrent/incomplete/* +rm -fr ~/.bittorrent/console/* +rm -fr ~/.bittorrent/mutex/* +rm -fr ~/.Tribler +rm -fr ~/.hrktorrent +rm -fr ~/TriblerDownloads +rm -fr ~/.azureus +rm -fr ~/Azureus\ Downloads +rm -fr ~/BitTorrent\ Downloads + +exit 0 diff --git a/old/bt-prof/cleanup.bash b/old/bt-prof/cleanup.bash new file mode 100644 index 0000000..95fa20f --- /dev/null +++ b/old/bt-prof/cleanup.bash @@ -0,0 +1,16 @@ +#!/bin/bash + +find /home/p2p/p2p-dld -mindepth 2 -maxdepth 2 -exec rm -fr {} \; +find /home/p2p/p2p-log -mindepth 2 -maxdepth 2 -exec rm -fr {} \; + +rm -fr ~/.bittorrent/incomplete/* +rm -fr ~/.bittorrent/console/* +rm -fr ~/.bittorrent/mutex/* +rm -fr ~/.Tribler +rm -fr ~/.hrktorrent +rm -fr ~/TriblerDownloads +rm -fr ~/.azureus +rm -fr ~/Azureus\ Downloads +rm -fr ~/BitTorrent\ Downloads + +exit 0 diff --git a/old/bt-prof/clients/aria/config.bash b/old/bt-prof/clients/aria/config.bash new file mode 100644 index 0000000..e36f146 --- /dev/null +++ b/old/bt-prof/clients/aria/config.bash @@ -0,0 +1,15 @@ +#!/bin/bash + +CLIENT_ID=aria +DLD_END_STRING="SEEDING" +COMMAND=/home/p2p/p2p-clients/aria2c-1.0.0/src/aria2c + +function run_client() +{ + _METAFILE=$1 + _LOCAL_DLD_DIR=$2 + _LOG_FILE=$3 + _VERBOSE_FILE=$4 + + $COMMAND --log=${_VERBOSE_LOG_FILE} --log-level=debug --dir=${_LOCAL_DLD_DIR} --torrent-file=${_METAFILE} &> ${_LOG_FILE} & +} diff --git a/old/bt-prof/clients/aria/parse.bash b/old/bt-prof/clients/aria/parse.bash new file mode 100644 index 0000000..4c1e7b9 --- /dev/null +++ b/old/bt-prof/clients/aria/parse.bash @@ -0,0 +1,20 @@ +#!/bin/bash + +if test $# -ne 2; then + echo "Usage: $0 aria_log_file start_time[epoch format]" + exit 1 +fi + +LOG_FILE=$1 +START_DATE=$2 + +grep 'SIZE' ${LOG_FILE} | awk -v start_date=${START_DATE} ' +BEGIN { + FS = "[ :/\(\)]+" + secs = start_date +} + +{ + secs++ + print secs "\t" $5 +}' diff --git a/old/bt-prof/clients/aria/run.bash b/old/bt-prof/clients/aria/run.bash new file mode 100644 index 0000000..7ec397e --- /dev/null +++ b/old/bt-prof/clients/aria/run.bash @@ -0,0 +1,81 @@ +#!/bin/bash + +# argument should be metafile (.torrent) +if test $# -ne 4; then + echo "Usage: $0 global_config_file metafile kill_afer_dld use_monitoring" + exit 1 +fi + +METAFILE=$2 +KILL_AFTER_DLD=$3 +USE_MONITORING=$4 + +# load global config file +source $1 + +# load local config file +source ./config.bash + +LOCAL_RUN_DIR=${RUN_DIR}/${CLIENT_ID} +LOCAL_LOG_DIR=${LOG_DIR}/${CLIENT_ID} +LOCAL_DLD_DIR=${DLD_DIR}/${CLIENT_ID} +LOCAL_RES_DIR=${RES_DIR}/${CLIENT_ID} + +START_TIME=$(date +%F.%T) +START_TIME_EPOCH=$(date +%s) + +SESSION_NAME="${CLIENT_ID}_$(basename ${METAFILE})_${START_TIME}" +LOG_FILE=${LOCAL_LOG_DIR}/${SESSION_NAME}.log +VERBOSE_LOG_FILE=${LOCAL_LOG_DIR}/${SESSION_NAME}_verbose.log +TIME_FILE="${LOCAL_LOG_DIR}/${SESSION_NAME}.time" +RES_FILE="${LOCAL_RES_DIR}/${SESSION_NAME}.rate" + +UPLOAD_SCRIPT=${LOCAL_RUN_DIR}/upload.bash +PARSE_SCRIPT=${LOCAL_RUN_DIR}/parse.bash +MON_SCRIPT=${LOCAL_RUN_DIR}/start_mon.bash + +# parse and upload result file +function do_parse_upload() +{ + bash ${PARSE_SCRIPT} ${LOG_FILE} ${START_TIME_EPOCH} > ${RES_FILE} + bash ${UPLOAD_SCRIPT} ${RES_FILE} ${UPLOAD_IP_ADDRESS} ${UPLOAD_USER_NAME} ${UPLOAD_DIR} & +} + +# call run_client function; CLIENT_PID stores client processes' pid +run_client ${METAFILE} ${LOCAL_DLD_DIR} ${LOG_FILE} ${VERBOSE_LOG_FILE} +CLIENT_PID=$! + +secs=0 +while true; do + tail "${LOG_FILE}" | grep "${DLD_END_STRING}" &> /dev/null + if test $? -eq 0; then + echo "${CLIENT_ID} time: $(ps -p ${CLIENT_PID} -o etime --no-headers)" > ${TIME_FILE} + if test "${KILL_AFTER_DLD}" == "yes"; then + kill -9 ${CLIENT_PID} + fi + break + fi + sleep 1 + + if test "${USE_MONITORING}" == "yes"; then + # do a parse on the log file each minute and upload it + (($secs++)) + mod=$(($secs % 60)) + if test $mod -eq 0; then + do_parse_upload + fi + + # restart monitoring every 4 minutes + if test $secs -eq 240; then + bash ${MON_SCRIPT} ${UPLOAD_IP_ADDRESS} ${UPLOAD_USER_NAME} ${UPLOAD_DIR} $(basename ${RES_FILE}) + fi + fi +done + +# one last time :-) +if test "${USE_MONITORING}" == "yes"; then + do_parse_upload +fi + +# do an analysis on output file +# TODO diff --git a/old/bt-prof/clients/aria/start_mon.bash b/old/bt-prof/clients/aria/start_mon.bash new file mode 100644 index 0000000..d185c8f --- /dev/null +++ b/old/bt-prof/clients/aria/start_mon.bash @@ -0,0 +1,13 @@ +#!/bin/bash + +if test $# -ne 4; then + echo "Usage: $0 ip_address username remote_dir mon_file" + exit 1 +fi + +IP_ADDRESS=$1 +USR=$2 +RDIR=$3 +MON_FILE=$4 + +ssh ${USR}@${IP_ADDRESS} "nohup python ~/apmon_use/mon-apmon.py ${RDIR}/${MON_FILE} aria &> out_aria.txt &" diff --git a/old/bt-prof/clients/aria/upload.bash b/old/bt-prof/clients/aria/upload.bash new file mode 100644 index 0000000..a06a52c --- /dev/null +++ b/old/bt-prof/clients/aria/upload.bash @@ -0,0 +1,13 @@ +#!/bin/bash + +if test $# -ne 4; then + echo "Usage: $0 file ip_address username remote_dir" + exit 1 +fi + +FILE=$1 +IP_ADDRESS=$2 +USR=$3 +RDIR=$4 + +scp ${FILE} ${USR}@${IP_ADDRESS}:${RDIR} diff --git a/old/bt-prof/clients/azureus/azr_helper.bash b/old/bt-prof/clients/azureus/azr_helper.bash new file mode 100644 index 0000000..a9ab823 --- /dev/null +++ b/old/bt-prof/clients/azureus/azr_helper.bash @@ -0,0 +1,32 @@ +#!/bin/bash + +METAFILE=$1 +LOCAL_DLD_DIR=$2 +LOG_FILE=$3 +VERBOSE_FILE=$4 + +cat < ${_LOG_FILE} 2> /home/p2p/p2p-log/azureus/err.log & +} diff --git a/old/bt-prof/clients/azureus/parse.bash b/old/bt-prof/clients/azureus/parse.bash new file mode 100644 index 0000000..da02b7e --- /dev/null +++ b/old/bt-prof/clients/azureus/parse.bash @@ -0,0 +1,20 @@ +#!/bin/bash + +if test $# -ne 2; then + echo "Usage: $0 azr_log_file start_time[epoch format]" + exit 1 +fi + +LOG_FILE=$1 +START_DATE=$2 + +grep 'ETA' ${LOG_FILE} | awk -v start_date=${START_DATE} ' +BEGIN { + FS = "[] :,\t[]+" + secs = start_date +} + +{ + secs++ + print secs "\t" $4 +}' diff --git a/old/bt-prof/clients/azureus/run.bash b/old/bt-prof/clients/azureus/run.bash new file mode 100644 index 0000000..7ec397e --- /dev/null +++ b/old/bt-prof/clients/azureus/run.bash @@ -0,0 +1,81 @@ +#!/bin/bash + +# argument should be metafile (.torrent) +if test $# -ne 4; then + echo "Usage: $0 global_config_file metafile kill_afer_dld use_monitoring" + exit 1 +fi + +METAFILE=$2 +KILL_AFTER_DLD=$3 +USE_MONITORING=$4 + +# load global config file +source $1 + +# load local config file +source ./config.bash + +LOCAL_RUN_DIR=${RUN_DIR}/${CLIENT_ID} +LOCAL_LOG_DIR=${LOG_DIR}/${CLIENT_ID} +LOCAL_DLD_DIR=${DLD_DIR}/${CLIENT_ID} +LOCAL_RES_DIR=${RES_DIR}/${CLIENT_ID} + +START_TIME=$(date +%F.%T) +START_TIME_EPOCH=$(date +%s) + +SESSION_NAME="${CLIENT_ID}_$(basename ${METAFILE})_${START_TIME}" +LOG_FILE=${LOCAL_LOG_DIR}/${SESSION_NAME}.log +VERBOSE_LOG_FILE=${LOCAL_LOG_DIR}/${SESSION_NAME}_verbose.log +TIME_FILE="${LOCAL_LOG_DIR}/${SESSION_NAME}.time" +RES_FILE="${LOCAL_RES_DIR}/${SESSION_NAME}.rate" + +UPLOAD_SCRIPT=${LOCAL_RUN_DIR}/upload.bash +PARSE_SCRIPT=${LOCAL_RUN_DIR}/parse.bash +MON_SCRIPT=${LOCAL_RUN_DIR}/start_mon.bash + +# parse and upload result file +function do_parse_upload() +{ + bash ${PARSE_SCRIPT} ${LOG_FILE} ${START_TIME_EPOCH} > ${RES_FILE} + bash ${UPLOAD_SCRIPT} ${RES_FILE} ${UPLOAD_IP_ADDRESS} ${UPLOAD_USER_NAME} ${UPLOAD_DIR} & +} + +# call run_client function; CLIENT_PID stores client processes' pid +run_client ${METAFILE} ${LOCAL_DLD_DIR} ${LOG_FILE} ${VERBOSE_LOG_FILE} +CLIENT_PID=$! + +secs=0 +while true; do + tail "${LOG_FILE}" | grep "${DLD_END_STRING}" &> /dev/null + if test $? -eq 0; then + echo "${CLIENT_ID} time: $(ps -p ${CLIENT_PID} -o etime --no-headers)" > ${TIME_FILE} + if test "${KILL_AFTER_DLD}" == "yes"; then + kill -9 ${CLIENT_PID} + fi + break + fi + sleep 1 + + if test "${USE_MONITORING}" == "yes"; then + # do a parse on the log file each minute and upload it + (($secs++)) + mod=$(($secs % 60)) + if test $mod -eq 0; then + do_parse_upload + fi + + # restart monitoring every 4 minutes + if test $secs -eq 240; then + bash ${MON_SCRIPT} ${UPLOAD_IP_ADDRESS} ${UPLOAD_USER_NAME} ${UPLOAD_DIR} $(basename ${RES_FILE}) + fi + fi +done + +# one last time :-) +if test "${USE_MONITORING}" == "yes"; then + do_parse_upload +fi + +# do an analysis on output file +# TODO diff --git a/old/bt-prof/clients/azureus/start_mon.bash b/old/bt-prof/clients/azureus/start_mon.bash new file mode 100644 index 0000000..d9a01ca --- /dev/null +++ b/old/bt-prof/clients/azureus/start_mon.bash @@ -0,0 +1,13 @@ +#!/bin/bash + +if test $# -ne 4; then + echo "Usage: $0 ip_address username remote_dir mon_file" + exit 1 +fi + +IP_ADDRESS=$1 +USR=$2 +RDIR=$3 +MON_FILE=$4 + +ssh ${USR}@${IP_ADDRESS} "nohup python ~/apmon_use/mon-apmon.py ${RDIR}/${MON_FILE} azureus &> out_azr.txt &" diff --git a/old/bt-prof/clients/azureus/upload.bash b/old/bt-prof/clients/azureus/upload.bash new file mode 100644 index 0000000..a06a52c --- /dev/null +++ b/old/bt-prof/clients/azureus/upload.bash @@ -0,0 +1,13 @@ +#!/bin/bash + +if test $# -ne 4; then + echo "Usage: $0 file ip_address username remote_dir" + exit 1 +fi + +FILE=$1 +IP_ADDRESS=$2 +USR=$3 +RDIR=$4 + +scp ${FILE} ${USR}@${IP_ADDRESS}:${RDIR} diff --git a/old/bt-prof/clients/bittornado/config.bash b/old/bt-prof/clients/bittornado/config.bash new file mode 100644 index 0000000..f326760 --- /dev/null +++ b/old/bt-prof/clients/bittornado/config.bash @@ -0,0 +1,4 @@ +#!/bin/bash + +CLIENT_ID=btt +COMMAND=~/cs-tribler/perf/bt-clients/BitTornado-CVS/btdownloadheadless.py diff --git a/old/bt-prof/clients/bittornado/run.bash b/old/bt-prof/clients/bittornado/run.bash new file mode 100644 index 0000000..976b19b --- /dev/null +++ b/old/bt-prof/clients/bittornado/run.bash @@ -0,0 +1,34 @@ +#!/bin/bash + +# argument should be metafile (.torrent) +if test $# -ne 2; then + echo "Usage: $0 metafile kill|no_kill" + exit 1 +fi + +LOCAL_BASE=~/cs-tribler/perf/bt-prof/clients/bittornado/ +source ${LOCAL_BASE}/config.bash + +METAFILE=$1 +KILL_AFTER_DLD=$2 + +START_TIME=$(date +%F.%T) +BASE_LOG_NAME="${CLIENT_ID}_$(basename ${METAFILE})_${START_TIME}" + +cd ${LOCAL_BASE}/dld/ && ${COMMAND} --responsefile ${METAFILE} &> ${LOCAL_BASE}/log/"${BASE_LOG_NAME}".log & +CLIENT_PID=$! + +while true; do + tail "${LOCAL_BASE}/log/${BASE_LOG_NAME}.log" | grep 'Download Succeeded' &> /dev/null + if test $? -eq 0; then + echo "bittornado time: $(ps -p $CLIENT_PID -o etime --no-headers)" > ${LOCAL_BASE}/log/"${BASE_LOG_NAME}.time" + if test "${KILL_AFTER_DLD}" == "kill"; then + kill -9 ${CLIENT_PID} + fi + break + fi + sleep 1 +done + +# do an analysis on output file +# TODO diff --git a/old/bt-prof/clients/hrktorrent/config.bash b/old/bt-prof/clients/hrktorrent/config.bash new file mode 100644 index 0000000..c607897 --- /dev/null +++ b/old/bt-prof/clients/hrktorrent/config.bash @@ -0,0 +1,31 @@ +#!/bin/bash + +CLIENT_ID=hrktorrent +DLD_END_STRING="Torrent finished" +MON_UPDATE_INTERVAL=5 + +COMMAND=/home/p2p/p2p-clients/hrktorrent/hrktorrent + +function run_client() +{ + _METAFILE=$1 + _LOCAL_DLD_DIR=$2 + _LOG_FILE=$3 + _VERBOSE_FILE=$4 + _PORT=$5 + _UPLOAD_SPEED=$6 + _DOWNLOAD_SPEED=$7 + + echo "metafile = $_METAFILE; dld_dir = $_LOCAL_DLD_DIR; log = $_LOG_FILE; _verbose = $_VERBOSE_FILE; port = $_PORT; us = $_UPLOAD_SPEED; ds = $_DOWNLOAD_SPEED" + pushd . &> /dev/null + cd ${_LOCAL_DLD_DIR} + $COMMAND --minport${_PORT} --maxport${_PORT} --maxup${_UPLOAD_SPEED} --maxdown${_DOWNLOAD_SPEED} ${_METAFILE} &> ${_LOG_FILE} & + popd +} + +function parse_log() +{ + _LOG_FILE=$1 + + tail -1 $_LOG_FILE | awk -F '[ :,]+' '{print $7;}' | sed 's/kb\/s//g' +} diff --git a/old/bt-prof/clients/hrktorrent/monitor.bash b/old/bt-prof/clients/hrktorrent/monitor.bash new file mode 100644 index 0000000..0b3d2ef --- /dev/null +++ b/old/bt-prof/clients/hrktorrent/monitor.bash @@ -0,0 +1,31 @@ +#!/bin/bash + +if test $# -ne 4; then + echo "Usage: $0 " + exit 1 +fi + +source ./config.bash + +_MON_SCRIPT=$1 +_LOG_FILE=$2 +_VERBOSE_FILE=$3 +_START_TIME=$4 + +_MON_BASE_DIR=$(dirname $_MON_SCRIPT) + +while true; do + sleep $MON_UPDATE_INTERVAL + ret=$(parse_log $_LOG_FILE) + if test $? -ne 0; then + echo "Ended" + exit 0 + fi + + pushd . &> /dev/null + cd $_MON_BASE_DIR + python $_MON_SCRIPT $(hostname) "$CLIENT_ID-${_START_TIME}-ds" $ret + popd &> /dev/null +done + +exit 0 diff --git a/old/bt-prof/clients/hrktorrent/parse.bash b/old/bt-prof/clients/hrktorrent/parse.bash new file mode 100644 index 0000000..5a79ab2 --- /dev/null +++ b/old/bt-prof/clients/hrktorrent/parse.bash @@ -0,0 +1,20 @@ +#!/bin/bash + +if test $# -ne 2; then + echo "Usage: $0 hrk_log_file start_time[epoch format]" + exit 1 +fi + +LOG_FILE=$1 +START_DATE=$2 + +grep '^ps' ${LOG_FILE} | awk -v start_date=${START_DATE} ' +BEGIN { + FS = "[ |:|,]+" + secs = start_date +} + +{ + secs++ + print secs "\t" $19 +}' diff --git a/old/bt-prof/clients/hrktorrent/run.bash b/old/bt-prof/clients/hrktorrent/run.bash new file mode 100644 index 0000000..5fa78d4 --- /dev/null +++ b/old/bt-prof/clients/hrktorrent/run.bash @@ -0,0 +1,92 @@ +#!/bin/bash + +# argument should be metafile (.torrent) +if test $# -ne 7; then + echo "Usage: $0 global_config_file metafile kill_afer_dld use_monitoring port upload_speed download_speed" + exit 1 +fi + +METAFILE=$2 +KILL_AFTER_DLD=$3 +USE_MONITORING=$4 +PORT=$5 +UPLOAD_SPEED=$6 +DOWNLOAD_SPEED=$7 + + +# load global config file +source $1 + +# load local config file +source ./config.bash + +LOCAL_RUN_DIR=${RUN_DIR}/${CLIENT_ID} +LOCAL_LOG_DIR=${LOG_DIR}/${CLIENT_ID} +LOCAL_DLD_DIR=${DLD_DIR}/${CLIENT_ID} +LOCAL_RES_DIR=${RES_DIR}/${CLIENT_ID} + +START_TIME=$(date +%F.%T) +START_TIME_EPOCH=$(date +%s) + +SESSION_NAME="${CLIENT_ID}_$(basename ${METAFILE})_${START_TIME}" +LOG_FILE=${LOCAL_LOG_DIR}/${SESSION_NAME}.log +VERBOSE_LOG_FILE=${LOCAL_LOG_DIR}/${SESSION_NAME}_verbose.log +TIME_FILE="${LOCAL_LOG_DIR}/${SESSION_NAME}.time" +RES_FILE="${LOCAL_RES_DIR}/${SESSION_NAME}.rate" + +#UPLOAD_SCRIPT=${LOCAL_RUN_DIR}/upload.bash +#PARSE_SCRIPT=${LOCAL_RUN_DIR}/parse.bash +#MON_SCRIPT=${LOCAL_RUN_DIR}/start_mon.bash + +# parse and upload result file +function do_parse_upload() +{ + bash ${PARSE_SCRIPT} ${LOG_FILE} ${START_TIME_EPOCH} > ${RES_FILE} + bash ${UPLOAD_SCRIPT} ${RES_FILE} ${UPLOAD_IP_ADDRESS} ${UPLOAD_USER_NAME} ${UPLOAD_DIR} & +} + +# call run_client function; CLIENT_PID stores client processes' pid +run_client ${METAFILE} ${LOCAL_DLD_DIR} ${LOG_FILE} ${VERBOSE_LOG_FILE} \ + ${PORT} ${UPLOAD_SPEED} ${DOWNLOAD_SPEED} +CLIENT_PID=$! + +if test "${USE_MONITORING}" == "yes"; then + bash monitor.bash ${MON_SCRIPT} ${LOG_FILE} ${VERBOSE_LOG_FILE} "test" &> ${LOCAL_LOG_DIR}/mon_out_err.txt + MONITOR_PID=$! +fi + +secs=0 +while true; do + tail "${LOG_FILE}" | grep "${DLD_END_STRING}" &> /dev/null + if test $? -eq 0; then + echo "${CLIENT_ID} time: $(ps -p ${CLIENT_PID} -o etime --no-headers)" > ${TIME_FILE} + if test "${KILL_AFTER_DLD}" == "yes"; then + kill -9 ${CLIENT_PID} + kill -9 ${MONITOR_PID} &> /dev/null + fi + break + fi + sleep 1 + +# if test "${USE_MONITORING}" == "yes"; then +# # do a parse on the log file each minute and upload it +# (($secs++)) +# mod=$(($secs % 60)) +# if test $mod -eq 0; then +# do_parse_upload +# fi +# +# # restart monitoring every 4 minutes +# if test $secs -eq 240; then +# bash ${MON_SCRIPT} ${UPLOAD_IP_ADDRESS} ${UPLOAD_USER_NAME} ${UPLOAD_DIR} $(basename ${RES_FILE}) +# fi +# fi +done + +# one last time :-) +#if test "${USE_MONITORING}" == "yes"; then +# do_parse_upload +#fi + +# do an analysis on output file +# TODO diff --git a/old/bt-prof/clients/hrktorrent/script.bash b/old/bt-prof/clients/hrktorrent/script.bash new file mode 100644 index 0000000..6f3d11b --- /dev/null +++ b/old/bt-prof/clients/hrktorrent/script.bash @@ -0,0 +1 @@ +bash -c "~/cs-tribler/perf/bt-clients/hrktorrent-0.3.2-mod/hrktorrent ~/simple.torrent > out.txt < /dev/null" & diff --git a/old/bt-prof/clients/hrktorrent/start_mon.bash b/old/bt-prof/clients/hrktorrent/start_mon.bash new file mode 100644 index 0000000..7575c07 --- /dev/null +++ b/old/bt-prof/clients/hrktorrent/start_mon.bash @@ -0,0 +1,13 @@ +#!/bin/bash + +if test $# -ne 4; then + echo "Usage: $0 ip_address username remote_dir mon_file" + exit 1 +fi + +IP_ADDRESS=$1 +USR=$2 +RDIR=$3 +MON_FILE=$4 + +ssh ${USR}@${IP_ADDRESS} "nohup python ~/apmon_use/mon-apmon.py ${RDIR}/${MON_FILE} hrk &> out_hrk.txt &" diff --git a/old/bt-prof/clients/hrktorrent/upload.bash b/old/bt-prof/clients/hrktorrent/upload.bash new file mode 100644 index 0000000..a06a52c --- /dev/null +++ b/old/bt-prof/clients/hrktorrent/upload.bash @@ -0,0 +1,13 @@ +#!/bin/bash + +if test $# -ne 4; then + echo "Usage: $0 file ip_address username remote_dir" + exit 1 +fi + +FILE=$1 +IP_ADDRESS=$2 +USR=$3 +RDIR=$4 + +scp ${FILE} ${USR}@${IP_ADDRESS}:${RDIR} diff --git a/old/bt-prof/clients/mainline/config.bash b/old/bt-prof/clients/mainline/config.bash new file mode 100644 index 0000000..f5436a4 --- /dev/null +++ b/old/bt-prof/clients/mainline/config.bash @@ -0,0 +1,16 @@ +#!/bin/bash + +CLIENT_ID=mainline +DLD_END_STRING="seeding" + +COMMAND=/home/p2p/p2p-clients/BitTorrent-5.2.2/bittorrent-console.py + +function run_client() +{ + _METAFILE=$1 + _LOCAL_DLD_DIR=$2 + _LOG_FILE=$3 + _VERBOSE_FILE=$4 + + $COMMAND --save_in ${_LOCAL_DLD_DIR} --display_interval 1 ${_METAFILE} &> ${_LOG_FILE} & +} diff --git a/old/bt-prof/clients/mainline/parse.bash b/old/bt-prof/clients/mainline/parse.bash new file mode 100644 index 0000000..d436695 --- /dev/null +++ b/old/bt-prof/clients/mainline/parse.bash @@ -0,0 +1,28 @@ +#!/bin/bash + +if test $# -ne 2; then + echo "Usage: $0 mnl_log_file start_time[epoch format]" + exit 1 +fi + +LOG_FILE=$1 +START_DATE=$2 + +grep '^percent' ${LOG_FILE} | awk -v start_date=${START_DATE} ' +BEGIN { + FS = "[ |:|,\t]+" + secs = start_date + done = 0 +} + +{ + secs++ + if (done == 0) { + print secs "\t" $3 "%" + } + if (done == 0) { + if ($3 ~ "100") { + done = 1 + } + } +}' diff --git a/old/bt-prof/clients/mainline/run.bash b/old/bt-prof/clients/mainline/run.bash new file mode 100644 index 0000000..7ec397e --- /dev/null +++ b/old/bt-prof/clients/mainline/run.bash @@ -0,0 +1,81 @@ +#!/bin/bash + +# argument should be metafile (.torrent) +if test $# -ne 4; then + echo "Usage: $0 global_config_file metafile kill_afer_dld use_monitoring" + exit 1 +fi + +METAFILE=$2 +KILL_AFTER_DLD=$3 +USE_MONITORING=$4 + +# load global config file +source $1 + +# load local config file +source ./config.bash + +LOCAL_RUN_DIR=${RUN_DIR}/${CLIENT_ID} +LOCAL_LOG_DIR=${LOG_DIR}/${CLIENT_ID} +LOCAL_DLD_DIR=${DLD_DIR}/${CLIENT_ID} +LOCAL_RES_DIR=${RES_DIR}/${CLIENT_ID} + +START_TIME=$(date +%F.%T) +START_TIME_EPOCH=$(date +%s) + +SESSION_NAME="${CLIENT_ID}_$(basename ${METAFILE})_${START_TIME}" +LOG_FILE=${LOCAL_LOG_DIR}/${SESSION_NAME}.log +VERBOSE_LOG_FILE=${LOCAL_LOG_DIR}/${SESSION_NAME}_verbose.log +TIME_FILE="${LOCAL_LOG_DIR}/${SESSION_NAME}.time" +RES_FILE="${LOCAL_RES_DIR}/${SESSION_NAME}.rate" + +UPLOAD_SCRIPT=${LOCAL_RUN_DIR}/upload.bash +PARSE_SCRIPT=${LOCAL_RUN_DIR}/parse.bash +MON_SCRIPT=${LOCAL_RUN_DIR}/start_mon.bash + +# parse and upload result file +function do_parse_upload() +{ + bash ${PARSE_SCRIPT} ${LOG_FILE} ${START_TIME_EPOCH} > ${RES_FILE} + bash ${UPLOAD_SCRIPT} ${RES_FILE} ${UPLOAD_IP_ADDRESS} ${UPLOAD_USER_NAME} ${UPLOAD_DIR} & +} + +# call run_client function; CLIENT_PID stores client processes' pid +run_client ${METAFILE} ${LOCAL_DLD_DIR} ${LOG_FILE} ${VERBOSE_LOG_FILE} +CLIENT_PID=$! + +secs=0 +while true; do + tail "${LOG_FILE}" | grep "${DLD_END_STRING}" &> /dev/null + if test $? -eq 0; then + echo "${CLIENT_ID} time: $(ps -p ${CLIENT_PID} -o etime --no-headers)" > ${TIME_FILE} + if test "${KILL_AFTER_DLD}" == "yes"; then + kill -9 ${CLIENT_PID} + fi + break + fi + sleep 1 + + if test "${USE_MONITORING}" == "yes"; then + # do a parse on the log file each minute and upload it + (($secs++)) + mod=$(($secs % 60)) + if test $mod -eq 0; then + do_parse_upload + fi + + # restart monitoring every 4 minutes + if test $secs -eq 240; then + bash ${MON_SCRIPT} ${UPLOAD_IP_ADDRESS} ${UPLOAD_USER_NAME} ${UPLOAD_DIR} $(basename ${RES_FILE}) + fi + fi +done + +# one last time :-) +if test "${USE_MONITORING}" == "yes"; then + do_parse_upload +fi + +# do an analysis on output file +# TODO diff --git a/old/bt-prof/clients/mainline/start_mon.bash b/old/bt-prof/clients/mainline/start_mon.bash new file mode 100644 index 0000000..9b1f260 --- /dev/null +++ b/old/bt-prof/clients/mainline/start_mon.bash @@ -0,0 +1,13 @@ +#!/bin/bash + +if test $# -ne 4; then + echo "Usage: $0 ip_address username remote_dir mon_file" + exit 1 +fi + +IP_ADDRESS=$1 +USR=$2 +RDIR=$3 +MON_FILE=$4 + +ssh ${USR}@${IP_ADDRESS} "nohup python ~/apmon_use/mon-apmon.py ${RDIR}/${MON_FILE} mainline &> out_mnl.txt &" diff --git a/old/bt-prof/clients/mainline/upload.bash b/old/bt-prof/clients/mainline/upload.bash new file mode 100644 index 0000000..a06a52c --- /dev/null +++ b/old/bt-prof/clients/mainline/upload.bash @@ -0,0 +1,13 @@ +#!/bin/bash + +if test $# -ne 4; then + echo "Usage: $0 file ip_address username remote_dir" + exit 1 +fi + +FILE=$1 +IP_ADDRESS=$2 +USR=$3 +RDIR=$4 + +scp ${FILE} ${USR}@${IP_ADDRESS}:${RDIR} diff --git a/old/bt-prof/clients/transmission/config.bash b/old/bt-prof/clients/transmission/config.bash new file mode 100644 index 0000000..f1a3098 --- /dev/null +++ b/old/bt-prof/clients/transmission/config.bash @@ -0,0 +1,16 @@ +#!/bin/bash + +CLIENT_ID=transmission +DLD_END_STRING="Seeding" + +COMMAND=/home/p2p/p2p-clients/transmission-1.40/cli/transmissioncli + +function run_client() +{ + _METAFILE=$1 + _LOCAL_DLD_DIR=$2 + _LOG_FILE=$3 + _VERBOSE_FILE=$4 + + ${COMMAND} -v 1 -u -1 -w ${_LOCAL_DLD_DIR} ${_METAFILE} &> ${_LOG_FILE} & +} diff --git a/old/bt-prof/clients/transmission/parse.bash b/old/bt-prof/clients/transmission/parse.bash new file mode 100644 index 0000000..e9e27d5 --- /dev/null +++ b/old/bt-prof/clients/transmission/parse.bash @@ -0,0 +1,20 @@ +#!/bin/bash + +if test $# -ne 2; then + echo "Usage: $0 tms_log_file start_time[epoch format]" + exit 1 +fi + +LOG_FILE=$1 +START_DATE=$2 + +grep 'Progress' ${LOG_FILE} | sed 's/\r/\n/g' | awk -v start_date=${START_DATE} ' +BEGIN { + FS = "[ |:|,]+" + secs = start_date +} + +{ + secs++ + print secs "\t" $2 +}' | grep '%' diff --git a/old/bt-prof/clients/transmission/run.bash b/old/bt-prof/clients/transmission/run.bash new file mode 100644 index 0000000..7ec397e --- /dev/null +++ b/old/bt-prof/clients/transmission/run.bash @@ -0,0 +1,81 @@ +#!/bin/bash + +# argument should be metafile (.torrent) +if test $# -ne 4; then + echo "Usage: $0 global_config_file metafile kill_afer_dld use_monitoring" + exit 1 +fi + +METAFILE=$2 +KILL_AFTER_DLD=$3 +USE_MONITORING=$4 + +# load global config file +source $1 + +# load local config file +source ./config.bash + +LOCAL_RUN_DIR=${RUN_DIR}/${CLIENT_ID} +LOCAL_LOG_DIR=${LOG_DIR}/${CLIENT_ID} +LOCAL_DLD_DIR=${DLD_DIR}/${CLIENT_ID} +LOCAL_RES_DIR=${RES_DIR}/${CLIENT_ID} + +START_TIME=$(date +%F.%T) +START_TIME_EPOCH=$(date +%s) + +SESSION_NAME="${CLIENT_ID}_$(basename ${METAFILE})_${START_TIME}" +LOG_FILE=${LOCAL_LOG_DIR}/${SESSION_NAME}.log +VERBOSE_LOG_FILE=${LOCAL_LOG_DIR}/${SESSION_NAME}_verbose.log +TIME_FILE="${LOCAL_LOG_DIR}/${SESSION_NAME}.time" +RES_FILE="${LOCAL_RES_DIR}/${SESSION_NAME}.rate" + +UPLOAD_SCRIPT=${LOCAL_RUN_DIR}/upload.bash +PARSE_SCRIPT=${LOCAL_RUN_DIR}/parse.bash +MON_SCRIPT=${LOCAL_RUN_DIR}/start_mon.bash + +# parse and upload result file +function do_parse_upload() +{ + bash ${PARSE_SCRIPT} ${LOG_FILE} ${START_TIME_EPOCH} > ${RES_FILE} + bash ${UPLOAD_SCRIPT} ${RES_FILE} ${UPLOAD_IP_ADDRESS} ${UPLOAD_USER_NAME} ${UPLOAD_DIR} & +} + +# call run_client function; CLIENT_PID stores client processes' pid +run_client ${METAFILE} ${LOCAL_DLD_DIR} ${LOG_FILE} ${VERBOSE_LOG_FILE} +CLIENT_PID=$! + +secs=0 +while true; do + tail "${LOG_FILE}" | grep "${DLD_END_STRING}" &> /dev/null + if test $? -eq 0; then + echo "${CLIENT_ID} time: $(ps -p ${CLIENT_PID} -o etime --no-headers)" > ${TIME_FILE} + if test "${KILL_AFTER_DLD}" == "yes"; then + kill -9 ${CLIENT_PID} + fi + break + fi + sleep 1 + + if test "${USE_MONITORING}" == "yes"; then + # do a parse on the log file each minute and upload it + (($secs++)) + mod=$(($secs % 60)) + if test $mod -eq 0; then + do_parse_upload + fi + + # restart monitoring every 4 minutes + if test $secs -eq 240; then + bash ${MON_SCRIPT} ${UPLOAD_IP_ADDRESS} ${UPLOAD_USER_NAME} ${UPLOAD_DIR} $(basename ${RES_FILE}) + fi + fi +done + +# one last time :-) +if test "${USE_MONITORING}" == "yes"; then + do_parse_upload +fi + +# do an analysis on output file +# TODO diff --git a/old/bt-prof/clients/transmission/start_mon.bash b/old/bt-prof/clients/transmission/start_mon.bash new file mode 100644 index 0000000..715e842 --- /dev/null +++ b/old/bt-prof/clients/transmission/start_mon.bash @@ -0,0 +1,13 @@ +#!/bin/bash + +if test $# -ne 4; then + echo "Usage: $0 ip_address username remote_dir mon_file" + exit 1 +fi + +IP_ADDRESS=$1 +USR=$2 +RDIR=$3 +MON_FILE=$4 + +ssh ${USR}@${IP_ADDRESS} "nohup python ~/apmon_use/mon-apmon.py ${RDIR}/${MON_FILE} transmission &> out_tms.txt &" diff --git a/old/bt-prof/clients/transmission/upload.bash b/old/bt-prof/clients/transmission/upload.bash new file mode 100644 index 0000000..a06a52c --- /dev/null +++ b/old/bt-prof/clients/transmission/upload.bash @@ -0,0 +1,13 @@ +#!/bin/bash + +if test $# -ne 4; then + echo "Usage: $0 file ip_address username remote_dir" + exit 1 +fi + +FILE=$1 +IP_ADDRESS=$2 +USR=$3 +RDIR=$4 + +scp ${FILE} ${USR}@${IP_ADDRESS}:${RDIR} diff --git a/old/bt-prof/clients/tribler/config.bash b/old/bt-prof/clients/tribler/config.bash new file mode 100644 index 0000000..c1b72ac --- /dev/null +++ b/old/bt-prof/clients/tribler/config.bash @@ -0,0 +1,19 @@ +#!/bin/bash + +CLIENT_ID=tribler +DLD_END_STRING="DLSTATUS_SEEDING" + +ROOTDIR=~/p2p-clients/Tribler_4.5.1_src +COMMAND=~/p2p-clients/Tribler_4.5.1_src/Tribler/Tools/cmdlinedl-razvand.py + +function run_client() +{ + _METAFILE=$1 + _LOCAL_DLD_DIR=$2 + _LOG_FILE=$3 + _VERBOSE_FILE=$4 + _PORT=$5 + + export PYTHONPATH=${ROOTDIR} + python ${COMMAND} -o ${_LOCAL_DLD_DIR} -p ${_PORT} ${_METAFILE} &> ${_LOG_FILE} & +} diff --git a/old/bt-prof/clients/tribler/parse.bash b/old/bt-prof/clients/tribler/parse.bash new file mode 100644 index 0000000..4a73cf3 --- /dev/null +++ b/old/bt-prof/clients/tribler/parse.bash @@ -0,0 +1,21 @@ +#!/bin/bash + +if test $# -ne 2; then + echo "Usage: $0 trb_log_file start_time[epoch format]" + exit 1 +fi + +LOG_FILE=$1 +START_DATE=$2 + +grep 'DLSTATUS' /home/p2p/p2p-svn-repo/trunk/bt-prof/clients/tribler/my.log | sed 's/\(.*\)DLSTATUS/DLSTATUS/g' | awk -v start_date=${START_DATE} ' +BEGIN { + FS = "[ ]+" + secs = start_date +} + +{ + secs++ + perc = $2 * 100 + print secs "\t" perc "%" +}' diff --git a/old/bt-prof/clients/tribler/run.bash b/old/bt-prof/clients/tribler/run.bash new file mode 100644 index 0000000..9e90ad4 --- /dev/null +++ b/old/bt-prof/clients/tribler/run.bash @@ -0,0 +1,82 @@ +#!/bin/bash + +# argument should be metafile (.torrent) +if test $# -ne 7; then + echo "Usage: $0 global_config_file metafile kill_afer_dld port use_monitoring" + exit 1 +fi + +METAFILE=$2 +KILL_AFTER_DLD=$3 +USE_MONITORING=$4 +LISTENING_PORT=$5 + +# load global config file +source $1 + +# load local config file +source ./config.bash + +LOCAL_RUN_DIR=${RUN_DIR}/${CLIENT_ID} +LOCAL_LOG_DIR=${LOG_DIR}/${CLIENT_ID} +LOCAL_DLD_DIR=${DLD_DIR}/${CLIENT_ID} +LOCAL_RES_DIR=${RES_DIR}/${CLIENT_ID} + +START_TIME=$(date +%F.%T) +START_TIME_EPOCH=$(date +%s) + +SESSION_NAME="${CLIENT_ID}_$(basename ${METAFILE})_${START_TIME}" +LOG_FILE=${LOCAL_LOG_DIR}/${SESSION_NAME}.log +VERBOSE_LOG_FILE=${LOCAL_LOG_DIR}/${SESSION_NAME}_verbose.log +TIME_FILE="${LOCAL_LOG_DIR}/${SESSION_NAME}.time" +RES_FILE="${LOCAL_RES_DIR}/${SESSION_NAME}.rate" + +UPLOAD_SCRIPT=${LOCAL_RUN_DIR}/upload.bash +PARSE_SCRIPT=${LOCAL_RUN_DIR}/parse.bash +MON_SCRIPT=${LOCAL_RUN_DIR}/start_mon.bash + +# parse and upload result file +function do_parse_upload() +{ + bash ${PARSE_SCRIPT} ${LOG_FILE} ${START_TIME_EPOCH} > ${RES_FILE} + bash ${UPLOAD_SCRIPT} ${RES_FILE} ${UPLOAD_IP_ADDRESS} ${UPLOAD_USER_NAME} ${UPLOAD_DIR} & +} + +# call run_client function; CLIENT_PID stores client processes' pid +run_client ${METAFILE} ${LOCAL_DLD_DIR} ${LOG_FILE} ${VERBOSE_LOG_FILE} ${LISTENING_PORT} +CLIENT_PID=$! + +secs=0 +while true; do + tail "${LOG_FILE}" | grep "${DLD_END_STRING}" &> /dev/null + if test $? -eq 0; then + echo "${CLIENT_ID} time: $(ps -p ${CLIENT_PID} -o etime --no-headers)" > ${TIME_FILE} + if test "${KILL_AFTER_DLD}" == "yes"; then + kill -9 ${CLIENT_PID} + fi + break + fi + sleep 1 + + if test "${USE_MONITORING}" == "yes"; then + # do a parse on the log file each minute and upload it + (($secs++)) + mod=$(($secs % 60)) + if test $mod -eq 0; then + do_parse_upload + fi + + # restart monitoring every 4 minutes + if test $secs -eq 240; then + bash ${MON_SCRIPT} ${UPLOAD_IP_ADDRESS} ${UPLOAD_USER_NAME} ${UPLOAD_DIR} $(basename ${RES_FILE}) + fi + fi +done + +# one last time :-) +if test "${USE_MONITORING}" == "yes"; then + do_parse_upload +fi + +# do an analysis on output file +# TODO diff --git a/old/bt-prof/clients/tribler/start_mon.bash b/old/bt-prof/clients/tribler/start_mon.bash new file mode 100644 index 0000000..52c8045 --- /dev/null +++ b/old/bt-prof/clients/tribler/start_mon.bash @@ -0,0 +1,13 @@ +#!/bin/bash + +if test $# -ne 4; then + echo "Usage: $0 ip_address username remote_dir mon_file" + exit 1 +fi + +IP_ADDRESS=$1 +USR=$2 +RDIR=$3 +MON_FILE=$4 + +ssh ${USR}@${IP_ADDRESS} "nohup python ~/apmon_use/mon-apmon.py ${RDIR}/${MON_FILE} Tribler &> out_trb.txt &" diff --git a/old/bt-prof/clients/tribler/upload.bash b/old/bt-prof/clients/tribler/upload.bash new file mode 100644 index 0000000..a06a52c --- /dev/null +++ b/old/bt-prof/clients/tribler/upload.bash @@ -0,0 +1,13 @@ +#!/bin/bash + +if test $# -ne 4; then + echo "Usage: $0 file ip_address username remote_dir" + exit 1 +fi + +FILE=$1 +IP_ADDRESS=$2 +USR=$3 +RDIR=$4 + +scp ${FILE} ${USR}@${IP_ADDRESS}:${RDIR} diff --git a/old/bt-prof/config.bash b/old/bt-prof/config.bash new file mode 100644 index 0000000..1e0a273 --- /dev/null +++ b/old/bt-prof/config.bash @@ -0,0 +1,22 @@ +#!/bin/bash + +BASE_DIR=/home/p2p/p2p-svn-repo/trunk/bt-prof/ +RUN_DIR=/home/p2p/p2p-svn-repo/trunk/bt-prof/clients/ +LOG_DIR=/home/p2p/p2p-log/ +DLD_DIR=/home/p2p/p2p-dld/ +RES_DIR=/home/p2p/p2p-res/ +MON_SCRIPT=/home/p2p/p2p-svn-repo/trunk/bt-prof/mon/p2p-mon.py + +declare -a CLIENT_ARRAY +CLIENT_ARRAY=("azureus" "hrktorrent" "tribler" "transmission" "mainline" "aria") +CLIENT_ARRAY_SIZE=6 + +for i in $(seq 0 $(($CLIENT_ARRAY_SIZE - 1))); do + mkdir -p $LOG_DIR/${CLIENT_ARRAY[$i]} &> /dev/null + mkdir -p $DLD_DIR/${CLIENT_ARRAY[$i]} &> /dev/null + mkdir -p $RES_DIR/${CLIENT_ARRAY[$i]} &> /dev/null +done + +UPLOAD_IP_ADDRESS="141.85.37.25" +UPLOAD_USER_NAME="p2p" +UPLOAD_DIR="logs/" diff --git a/old/bt-prof/list.bash b/old/bt-prof/list.bash new file mode 100644 index 0000000..f2f4408 --- /dev/null +++ b/old/bt-prof/list.bash @@ -0,0 +1,43 @@ +#!/bin/bash + +print_hrktorrent() +{ + __file=$(ps -e -o cmd | grep 'hrktorr\ent' | head -n 1 | cut -d ' ' -f 6) + if test " $__file" != " "; then + echo "hrktorrent: $__file" + fi +} + +print_azureus() +{ + a="1" +} + +print_tribler() +{ + a="1" +} + +print_mainline() +{ + a="1" +} + +print_aria() +{ + a="1" +} + +print_transmission() +{ + a="1" +} + +print_hrktorrent +print_azureus +print_tribler +print_mainline +print_aria +print_transmission + +exit 0 diff --git a/old/bt-prof/mon/Logger.py b/old/bt-prof/mon/Logger.py new file mode 100644 index 0000000..e938292 --- /dev/null +++ b/old/bt-prof/mon/Logger.py @@ -0,0 +1,72 @@ + +""" + * ApMon - Application Monitoring Tool + * Version: 2.2.13 + * + * Copyright (C) 2006 California Institute of Technology + * + * Permission is hereby granted, free of charge, to use, copy and modify + * this software and its documentation (the "Software") for any + * purpose, provided that existing copyright notices are retained in + * all copies and that this notice is included verbatim in any distributions + * or substantial portions of the Software. + * This software is a part of the MonALISA framework (http://monalisa.cacr.caltech.edu). + * Users of the Software are asked to feed back problems, benefits, + * and/or suggestions about the software to the MonALISA Development Team + * (developers@monalisa.cern.ch). Support for this software - fixing of bugs, + * incorporation of new features - is done on a best effort basis. All bug + * fixes and enhancements will be made available under the same terms and + * conditions as the original software, + + * IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT + * OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY DERIVATIVES THEREOF, + * EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + * THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE IS + * PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE NO + * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR + * MODIFICATIONS. +""" + +import time +import threading +import sys +import traceback + +# Simple logging class +class Logger: + + FATAL = 0 # When something very bad happened and we should quit + ERROR = 1 # Tipically when something important fails + WARNING = 2 # Intermediate logging level. + INFO = 3 # Intermediate logging level. + NOTICE = 4 # Logging level with detailed information. + DEBUG = 5 # Logging level for debugging + + LEVELS = ['FATAL', 'ERROR', 'WARNING', 'INFO', 'NOTICE', 'DEBUG'] + + # Constructor + def __init__ (this, defaultLevel = INFO): + this.log_lock = threading.Lock(); + this.logLevel = defaultLevel + + # Print the given message if the level is more serious as the existing one + def log(this, level, message, printex=False): + this.log_lock.acquire(); + if(level <= this.logLevel): + print time.asctime() + ": ApMon["+Logger.LEVELS[level]+"]: "+message; + if printex: + traceback.print_exc() + this.log_lock.release(); + + # Set the logging level + def setLogLevel(this, strLevel): + this.log_lock.acquire(); + for l_idx in range(len(Logger.LEVELS)): + if strLevel == Logger.LEVELS[l_idx]: + this.logLevel = l_idx; + this.log_lock.release(); + diff --git a/old/bt-prof/mon/MLservice.conf b/old/bt-prof/mon/MLservice.conf new file mode 100644 index 0000000..5e10ed4 --- /dev/null +++ b/old/bt-prof/mon/MLservice.conf @@ -0,0 +1 @@ +anaconda.cs.pub.ro:8884 diff --git a/old/bt-prof/mon/ProcInfo.py b/old/bt-prof/mon/ProcInfo.py new file mode 100644 index 0000000..8f518eb --- /dev/null +++ b/old/bt-prof/mon/ProcInfo.py @@ -0,0 +1,767 @@ + +""" + * ApMon - Application Monitoring Tool + * Version: 2.2.13 + * + * Copyright (C) 2006 California Institute of Technology + * + * Permission is hereby granted, free of charge, to use, copy and modify + * this software and its documentation (the "Software") for any + * purpose, provided that existing copyright notices are retained in + * all copies and that this notice is included verbatim in any distributions + * or substantial portions of the Software. + * This software is a part of the MonALISA framework (http://monalisa.cacr.caltech.edu). + * Users of the Software are asked to feed back problems, benefits, + * and/or suggestions about the software to the MonALISA Development Team + * (developers@monalisa.cern.ch). Support for this software - fixing of bugs, + * incorporation of new features - is done on a best effort basis. All bug + * fixes and enhancements will be made available under the same terms and + * conditions as the original software, + + * IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT + * OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY DERIVATIVES THEREOF, + * EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + * THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE IS + * PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE NO + * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR + * MODIFICATIONS. +""" + + +import os +import re +import time +import string +import socket +from Logger import * + +""" +Class ProcInfo +extracts information from the proc/ filesystem for system and job monitoring +""" +class ProcInfo: + # ProcInfo constructor + def __init__ (this, logger): + this.DATA = {}; # monitored data that is going to be reported + this.LAST_UPDATE_TIME = 0; # when the last measurement was done + this.JOBS = {}; # jobs that will be monitored + this.logger = logger # use the given logger + this.readGenericInfo(); + + # This should be called from time to time to update the monitored data, + # but not more often than once a second because of the resolution of time() + def update (this): + if this.LAST_UPDATE_TIME == int(time.time()): + this.logger.log(Logger.NOTICE, "ProcInfo: update() called too often!"); + return; + this.readStat(); + this.readMemInfo(); + this.readUptimeAndLoadAvg(); + this.countProcesses(); + this.readNetworkInfo(); + this.readNetStat(); + for pid in this.JOBS.keys(): + this.readJobInfo(pid); + this.readJobDiskUsage(pid); + this.LAST_UPDATE_TIME = int(time.time()); + this.DATA['TIME'] = int(time.time()); + + # Call this to add another PID to be monitored + def addJobToMonitor (this, pid, workDir): + this.JOBS[pid] = {}; + this.JOBS[pid]['WORKDIR'] = workDir; + this.JOBS[pid]['DATA'] = {}; + #print this.JOBS; + + # Call this to stop monitoring a PID + def removeJobToMonitor (this, pid): + if this.JOBS.has_key(pid): + del this.JOBS[pid]; + + # Return a filtered hash containting the system-related parameters and values + def getSystemData (this, params, prevDataRef): + return this.getFilteredData(this.DATA, params, prevDataRef); + + # Return a filtered hash containing the job-related parameters and values + def getJobData (this, pid, params): + if not this.JOBS.has_key(pid): + return []; + return this.getFilteredData(this.JOBS[pid]['DATA'], params); + + ############################################################################################ + # internal functions for system monitoring + ############################################################################################ + + # this has to be run twice (with the $lastUpdateTime updated) to get some useful results + # the information about blocks_in/out and swap_in/out isn't available for 2.6 kernels (yet) + def readStat (this): + try: + FSTAT = open('/proc/stat'); + line = FSTAT.readline(); + while(line != ''): + if(line.startswith("cpu ")): + elem = re.split("\s+", line); + this.DATA['raw_cpu_usr'] = float(elem[1]); + this.DATA['raw_cpu_nice'] = float(elem[2]); + this.DATA['raw_cpu_sys'] = float(elem[3]); + this.DATA['raw_cpu_idle'] = float(elem[4]); + this.DATA['raw_cpu_iowait'] = float(elem[5]); + elif(line.startswith("page")): + elem = line.split(); + this.DATA['raw_blocks_in'] = float(elem[1]); + this.DATA['raw_blocks_out'] = float(elem[2]); + elif(line.startswith('swap')): + elem = line.split(); + this.DATA['raw_swap_in'] = float(elem[1]); + this.DATA['raw_swap_out'] = float(elem[2]); + elif(line.startswith('intr')): + elem = line.split() + this.DATA['raw_interrupts'] = float(elem[1]); + elif(line.startswith('ctxt')): + elem = line.split() + this.DATA['raw_context_switches'] = float(elem[1]); + line = FSTAT.readline(); + FSTAT.close(); + except IOError, ex: + this.logger.log(Logger.ERROR, "ProcInfo: cannot open /proc/stat"); + return; + try: + # blocks_in/out and swap_in/out are moved to /proc/vmstat in >2.5 kernels + FVMSTAT = open('/proc/vmstat'); + line = FVMSTAT.readline(); + while(line != ''): + elem = re.split("\s+", line); + if(line.startswith("pgpgin ")): + this.DATA['raw_blocks_in'] = float(elem[1]); + elif(line.startswith("pgpgout ")): + this.DATA['raw_blocks_out'] = float(elem[1]); + elif(line.startswith("pswpin ")): + this.DATA['raw_swap_in'] = float(elem[1]); + elif(line.startswith("pswpout ")): + this.DATA['raw_swap_out'] = float(elem[1]); + line = FVMSTAT.readline(); + FVMSTAT.close(); + except IOError, ex: + this.logger.log(Logger.NOTICE, "ProcInfo: cannot open /proc/vmstat"); + + # sizes are reported in MB (except _usage that is in percent). + def readMemInfo (this): + try: + FMEM = open('/proc/meminfo'); + line = FMEM.readline(); + while(line != ''): + elem = re.split("\s+", line); + if(line.startswith("MemFree:")): + this.DATA['mem_free'] = float(elem[1]) / 1024.0; + if(line.startswith("MemTotal:")): + this.DATA['total_mem'] = float(elem[1]) / 1024.0; + if(line.startswith("SwapFree:")): + this.DATA['swap_free'] = float(elem[1]) / 1024.0; + if(line.startswith("SwapTotal:")): + this.DATA['total_swap'] = float(elem[1]) / 1024.0; + if(line.startswith("Buffers:")): + this.DATA['mem_buffers'] = float(elem[1]) / 1024.0; + if(line.startswith("Cached:")): + this.DATA['mem_cached'] = float(elem[1]) / 1024.0; + line = FMEM.readline(); + FMEM.close(); + if this.DATA.has_key('mem_free') and this.DATA.has_key('mem_buffers') and this.DATA.has_key('mem_cached'): + this.DATA['mem_actualfree'] = this.DATA['mem_free'] + this.DATA['mem_buffers'] + this.DATA['mem_cached']; + if this.DATA.has_key('total_mem') and this.DATA.has_key('mem_actualfree'): + this.DATA['mem_used'] = this.DATA['total_mem'] - this.DATA['mem_actualfree']; + if this.DATA.has_key('total_swap') and this.DATA.has_key('swap_free'): + this.DATA['swap_used'] = this.DATA['total_swap'] - this.DATA['swap_free']; + if this.DATA.has_key('mem_used') and this.DATA.has_key('total_mem') and this.DATA['total_mem'] > 0: + this.DATA['mem_usage'] = 100.0 * this.DATA['mem_used'] / this.DATA['total_mem']; + if this.DATA.has_key('swap_used') and this.DATA.has_key('total_swap') and this.DATA['total_swap'] > 0: + this.DATA['swap_usage'] = 100.0 * this.DATA['swap_used'] / this.DATA['total_swap']; + except IOError, ex: + this.logger.log(Logger.ERROR, "ProcInfo: cannot open /proc/meminfo"); + return; + + # read system load average + def readLoadAvg (this): + try: + FAVG = open('/proc/loadavg'); + line = FAVG.readline(); + FAVG.close(); + elem = re.split("\s+", line); + this.DATA['load1'] = float(elem[0]); + this.DATA['load5'] = float(elem[1]); + this.DATA['load15'] = float(elem[2]); + except IOError, ex: + this.logger.log(Logger.ERROR, "ProcInfo: cannot open /proc/meminfo"); + return; + + + # read system load average on Darwin + def darwin_readLoadAvg (this): + try: + LOAD_AVG = os.popen('sysctl vm.loadavg'); + line = LOAD_AVG.readline(); + LOAD_AVG.close(); + elem = re.split("\s+", line); + this.DATA['load1'] = float(elem[1]); + this.DATA['load5'] = float(elem[2]); + this.DATA['load15'] = float(elem[3]); + except IOError, ex: + this.logger.log(Logger.ERROR, "ProcInfo: cannot run 'sysctl vm.loadavg"); + return; + + + # read the number of processes currently running on the system + def countProcesses (this): + """ + # old version + nr = 0; + try: + for file in os.listdir("/proc"): + if re.match("\d+", file): + nr += 1; + this.DATA['processes'] = nr; + except IOError, ex: + this.logger.log(Logger.ERROR, "ProcInfo: cannot open /proc to count processes"); + return; + """ + # new version + total = 0; + states = {'D':0, 'R':0, 'S':0, 'T':0, 'Z':0}; + try: + output = os.popen('ps -A -o state'); + line = output.readline(); + while(line != ''): + if states.has_key(line[0]): + states[line[0]] = states[line[0]] + 1; + else: + states[line[0]] = 1; + total = total + 1; + line = output.readline(); + output.close(); + this.DATA['processes'] = total; + for key in states.keys(): + this.DATA['processes_'+key] = states[key]; + except IOError, ex: + this.logger.log(Logger.ERROR, "ProcInfo: cannot get output from ps command"); + return; + + # reads the IP, hostname, cpu_MHz, uptime + def readGenericInfo (this): + this.DATA['hostname'] = socket.getfqdn(); + try: + output = os.popen('/sbin/ifconfig -a') + eth, ip = '', ''; + line = output.readline(); + while(line != ''): + line = line.strip(); + if line.startswith("eth"): + elem = line.split(); + eth = elem[0]; + ip = ''; + if len(eth) > 0 and line.startswith("inet addr:"): + ip = re.match("inet addr:(\d+\.\d+\.\d+\.\d+)", line).group(1); + this.DATA[eth + '_ip'] = ip; + eth = ''; + line = output.readline(); + output.close(); + except IOError, ex: + this.logger.log(Logger.ERROR, "ProcInfo: cannot get output from /sbin/ifconfig -a"); + + try: + no_cpus = 0; + FCPU = open('/proc/cpuinfo'); + line = FCPU.readline(); + while(line != ''): + if line.startswith("cpu MHz"): + this.DATA['cpu_MHz'] = float(re.match("cpu MHz\s+:\s+(\d+\.?\d*)", line).group(1)); + no_cpus += 1; + + if line.startswith("vendor_id"): + this.DATA['cpu_vendor_id'] = re.match("vendor_id\s+:\s+(.+)", line).group(1); + + if line.startswith("cpu family"): + this.DATA['cpu_family'] = re.match("cpu family\s+:\s+(.+)", line).group(1); + + if line.startswith("model") and not line.startswith("model name") : + this.DATA['cpu_model'] = re.match("model\s+:\s+(.+)", line).group(1); + + if line.startswith("model name"): + this.DATA['cpu_model_name'] = re.match("model name\s+:\s+(.+)", line).group(1); + + if line.startswith("bogomips"): + this.DATA['bogomips'] = float(re.match("bogomips\s+:\s+(\d+\.?\d*)", line).group(1)); + + line = FCPU.readline(); + FCPU.close(); + this.DATA['no_CPUs'] = no_cpus; + except IOError, ex: + this.logger.log(Logger.ERROR, "ProcInfo: cannot open /proc/cpuinfo"); + + # try to determine the kernel version + try: + output = os.popen('uname -r'); + line = output.readline().replace("\n", ""); + this.DATA['kernel_version'] = line; + output.close(); + except IOError, ex: + this.logger.log(Logger.ERROR, "ProcInfo: cannot get kernel version with 'uname -r'"); + + # try to determine the platform + try: + output = os.popen('uname -m 2>/dev/null || uname'); + line = output.readline().replace("\n", ""); + this.DATA['platform'] = line + output.close(); + except IOError, ex: + this.logger.log(Logger.ERROR, "ProcInfo: cannot get platform with 'uname -m'"); + + # try to determine the OS type + osType = None; + try: + output = os.popen('env PATH=$PATH:/bin:/usr/bin lsb_release -d 2>/dev/null'); + line = output.readline().replace("\n", ""); + mo = re.match("Description:\s*(.*)", line) + if not mo is None: + osType = mo.group(1); + output.close(); + except IOError, ex: + pass + # if lsb_release didn't work, try again... + if osType is None: + for file in ["/etc/redhat-release", "/etc/debian_version", "/etc/SuSE-release", "/etc/slackware-version", "/etc/gentoo-release", "/etc/mandrake-release", "/etc/mandriva-release", "/etc/issue"]: + try: + REL = open(file); + line = REL.readline().replace("\n", ""); + if len(line) > 0: + osType = line; + REL.close(); + break; + except IOError, ex: + pass + # if none of these, try just uname -s + if osType is None: + try: + output = os.popen('uname -s'); + line = output.readline().replace("\n", ""); + osType = line; + output.close(); + except IOError, ex: + pass + if not osType is None: + this.DATA['os_type'] = osType; + else: + this.logger.log(Logger.ERROR, "ProcInfo: cannot determine operating system type"); + + # read system's uptime and load average. Time is reported as a floating number, in days. + # It uses the 'uptime' command which's output looks like these: + # 19:55:37 up 11 days, 18:57, 1 user, load average: 0.00, 0.00, 0.00 + # 18:42:31 up 87 days, 18:10, 9 users, load average: 0.64, 0.84, 0.80 + # 6:42pm up 7 days 3:08, 7 users, load average: 0.18, 0.14, 0.10 + # 6:42pm up 33 day(s), 1:54, 1 user, load average: 0.01, 0.00, 0.00 + # 18:42 up 7 days, 3:45, 2 users, load averages: 1.10 1.11 1.06 + # 18:47:41 up 7 days, 4:35, 19 users, load average: 0.66, 0.44, 0.41 + # 11:57am up 2:21, 22 users, load average: 0.59, 0.93, 0.73 + def readUptimeAndLoadAvg(this): + try: + output = os.popen('uptime'); + line = output.readline().replace("\n", ""); + mo = re.match(".*up\s+((\d+)\s+day[ (s),]+)?(\d+)(:(\d+))?[^\d]+(\d+)[^\d]+([\d\.]+)[^\d]+([\d\.]+)[^\d]+([\d\.]+)", line); + if mo is None: + this.logger.log(Logger.ERROR, "ProcInfo: got nonparsable output from uptime: "+line); + return + (days, hour, min, users, load1, load5, load15) = (mo.group(2), mo.group(3), mo.group(5), float(mo.group(6)), mo.group(7), mo.group(8), mo.group(9)); + if days is None: + days = 0.0; + if min is None: + (min, hour) = (hour, 0.0); + uptime = float(days) + float(hour) / 24.0 + float(min) / 1440.0; + this.DATA['uptime'] = float(uptime); + this.DATA['logged_users'] = float(users); # this is currently not reported + this.DATA['load1'] = float(load1); + this.DATA['load5'] = float(load5); + this.DATA['load15'] = float(load15); + output.close(); + except IOError, ex: + this.logger.log(Logger.ERROR, "ProcInfo: cannot get output from uptime command"); + + # do a difference with overflow check and repair + # the counter is unsigned 32 or 64 bit + def diffWithOverflowCheck(this, new, old): + if new >= old: + return new - old; + else: + max = (1L << 31) * 2; # 32 bits + if old >= max: + max = (1L << 63) * 2; # 64 bits + return new - old + max; + + # read network information like transfered kBps and nr. of errors on each interface + def readNetworkInfo (this): + try: + FNET = open('/proc/net/dev'); + line = FNET.readline(); + while(line != ''): + m = re.match("\s*eth(\d):(\d+)\s+\d+\s+(\d+)\s+\d+\s+\d+\s+\d+\s+\d+\s+\d+\s+(\d+)\s+\d+\s+(\d+)", line); + if m != None: + this.DATA['raw_eth'+m.group(1)+'_in'] = float(m.group(2)); + this.DATA['raw_eth'+m.group(1)+'_out'] = float(m.group(4)); + this.DATA['raw_eth'+m.group(1)+'_errs'] = int(m.group(3)) + int(m.group(5)); + line = FNET.readline(); + FNET.close(); + except IOError, ex: + this.logger.log(Logger.ERROR, "ProcInfo: cannot open /proc/net/dev"); + return; + + # run nestat and collect sockets info (tcp, udp, unix) and connection states for tcp sockets from netstat + def readNetStat(this): + try: + output = os.popen('netstat -an 2>/dev/null'); + sockets = { 'sockets_tcp':0, 'sockets_udp':0, 'sockets_unix':0, 'sockets_icm':0 }; + tcp_details = { 'sockets_tcp_ESTABLISHED':0, 'sockets_tcp_SYN_SENT':0, + 'sockets_tcp_SYN_RECV':0, 'sockets_tcp_FIN_WAIT1':0, 'sockets_tcp_FIN_WAIT2':0, + 'sockets_tcp_TIME_WAIT':0, 'sockets_tcp_CLOSED':0, 'sockets_tcp_CLOSE_WAIT':0, + 'sockets_tcp_LAST_ACK':0, 'sockets_tcp_LISTEN':0, 'sockets_tcp_CLOSING':0, + 'sockets_tcp_UNKNOWN':0 }; + line = output.readline(); + while(line != ''): + arg = string.split(line); + proto = arg[0]; + if proto.find('tcp') == 0: + sockets['sockets_tcp'] += 1; + state = arg[len(arg)-1]; + key = 'sockets_tcp_'+state; + if tcp_details.has_key(key): + tcp_details[key] += 1; + if proto.find('udp') == 0: + sockets['sockets_udp'] += 1; + if proto.find('unix') == 0: + sockets['sockets_unix'] += 1; + if proto.find('icm') == 0: + sockets['sockets_icm'] += 1; + + line = output.readline(); + output.close(); + + for key in sockets.keys(): + this.DATA[key] = sockets[key]; + for key in tcp_details.keys(): + this.DATA[key] = tcp_details[key]; + except IOError, ex: + this.logger.log(Logger.ERROR, "ProcInfo: cannot get output from netstat command"); + return; + + ############################################################################################## + # job monitoring related functions + ############################################################################################## + + # internal function that gets the full list of children (pids) for a process (pid) + def getChildren (this, parent): + pidmap = {}; + try: + output = os.popen('ps -A -o "pid ppid"'); + line = output.readline(); # skip headers + line = output.readline(); + while(line != ''): + line = line.strip(); + elem = re.split("\s+", line); + pidmap[int(elem[0])] = int(elem[1]); + line = output.readline(); + output.close(); + except IOError, ex: + this.logger.log(Logger.ERROR, "ProcInfo: cannot execute ps -A -o \"pid ppid\""); + + if not pidmap.has_key(parent): + this.logger.log(Logger.INFO, 'ProcInfo: No job with pid='+str(parent)); + this.removeJobToMonitor(parent); + return []; + + children = [parent]; + i = 0; + while(i < len(children)): + prnt = children[i]; + for (pid, ppid) in pidmap.items(): + if ppid == prnt: + children.append(pid); + i += 1; + return children; + + # internal function that parses a time formatted like "days-hours:min:sec" and returns the corresponding + # number of seconds. + def parsePSTime (this, my_time): + my_time = my_time.strip(); + m = re.match("(\d+)-(\d+):(\d+):(\d+)", my_time); + if m != None: + return int(m.group(1)) * 24 * 3600 + int(m.group(2)) * 3600 + int(m.group(3)) * 60 + int(m.group(4)); + else: + m = re.match("(\d+):(\d+):(\d+)", my_time); + if(m != None): + return int(m.group(1)) * 3600 + int(m.group(2)) * 60 + int(m.group(3)); + else: + m = re.match("(\d+):(\d+)", my_time); + if(m != None): + return int(m.group(1)) * 60 + int(m.group(2)); + else: + return None; + + # read information about this the JOB_PID process + # memory sizes are given in KB + def readJobInfo (this, pid): + if (pid == '') or not this.JOBS.has_key(pid): + return; + children = this.getChildren(pid); + if(len(children) == 0): + this.logger.log(Logger.INFO, "ProcInfo: Job with pid="+str(pid)+" terminated; removing it from monitored jobs."); + #print ":(" + this.removeJobToMonitor(pid); + return; + try: + JSTATUS = os.popen("ps --no-headers --pid " + ",".join([`child` for child in children]) + " -o pid,etime,time,%cpu,%mem,rsz,vsz,comm"); + mem_cmd_map = {}; + etime, cputime, pcpu, pmem, rsz, vsz, comm, fd = None, None, None, None, None, None, None, None; + line = JSTATUS.readline(); + while(line != ''): + line = line.strip(); + m = re.match("(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(.+)", line); + if m != None: + apid, etime1, cputime1, pcpu1, pmem1, rsz1, vsz1, comm1 = m.group(1), m.group(2), m.group(3), m.group(4), m.group(5), m.group(6), m.group(7), m.group(8); + sec = this.parsePSTime(etime1); + if (not sec is None) and (sec > this.addIfValid(etime, 0)): # the elapsed time is the maximum of all elapsed + etime = sec; + sec = this.parsePSTime(cputime1); # times corespornding to all child processes. + cputime = this.addIfValid(cputime, sec); # total cputime is the sum of cputimes for all processes. + pcpu = this.addIfValid(pcpu, float(pcpu1)); # total %cpu is the sum of all children %cpu. + if not mem_cmd_map.has_key(`pmem1`+" "+`rsz1`+" "+`vsz1`+" "+`comm1`): + # it's the first thread/process with this memory footprint; add it. + mem_cmd_map[`pmem1`+" "+`rsz1`+" "+`vsz1`+" "+`comm1`] = 1; + pmem = this.addIfValid(pmem, float(pmem1)); + rsz = this.addIfValid(rsz, int(rsz1)); + vsz = this.addIfValid(vsz, int(vsz1)); + fd = this.addIfValid(fd, this.countOpenFD(apid)); + # else not adding memory usage + line = JSTATUS.readline(); + JSTATUS.close(); + if not etime is None: + this.JOBS[pid]['DATA']['run_time'] = etime; + if not cputime is None: + this.JOBS[pid]['DATA']['cpu_time'] = cputime; + if not pcpu is None: + this.JOBS[pid]['DATA']['cpu_usage'] = pcpu; + if not pmem is None: + this.JOBS[pid]['DATA']['mem_usage'] = pmem; + if not rsz is None: + this.JOBS[pid]['DATA']['rss'] = rsz; + if not vsz is None: + this.JOBS[pid]['DATA']['virtualmem'] = vsz; + if not fd is None: + this.JOBS[pid]['DATA']['open_files'] = fd; + except IOError, ex: + this.logger.log(Logger.ERROR, "ProcInfo: cannot execute ps --no-headers -eo \"pid ppid\""); + + # return the sum of the two given parameters (or None if the case) + def addIfValid (this, sum, toAdd): + if toAdd is None: + return sum + if sum is None: + return toAdd + return sum + toAdd; + + # count the number of open files for the given pid + def countOpenFD (this, pid): + dir = '/proc/'+str(pid)+'/fd'; + if os.access(dir, os.F_OK): + if os.access(dir, os.X_OK): + list = os.listdir(dir); + open_files = len(list); + if pid == os.getpid(): + open_files -= 2; + this.logger.log(Logger.DEBUG, "Counting open_files for "+ `pid` +": "+ str(len(list)) +" => " + `open_files` + " open_files"); + return open_files; + else: + this.logger.log(Logger.ERROR, "ProcInfo: cannot count the number of opened files for job "+`pid`); + else: + this.logger.log(Logger.ERROR, "ProcInfo: job "+`pid`+" dosen't exist"); + # failed + return None; + + # if there is an work directory defined, then compute the used space in that directory + # and the free disk space on the partition to which that directory belongs + # sizes are given in MB + def readJobDiskUsage (this, pid): + if (pid == '') or not this.JOBS.has_key(pid): + return; + workDir = this.JOBS[pid]['WORKDIR']; + if workDir == '': + return; + try: + DU = os.popen("du -Lsck " + workDir + " | tail -1 | cut -f 1"); + line = DU.readline(); + this.JOBS[pid]['DATA']['workdir_size'] = int(line) / 1024.0; + except IOError, ex: + this.logger.log(Logger.ERROR, "ERROR", "ProcInfo: cannot run du to get job's disk usage for job "+`pid`); + try: + DF = os.popen("df -k "+workDir+" | tail -1"); + line = DF.readline().strip(); + m = re.match("\S+\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)%", line); + if m != None: + this.JOBS[pid]['DATA']['disk_total'] = float(m.group(1)) / 1024.0; + this.JOBS[pid]['DATA']['disk_used'] = float(m.group(2)) / 1024.0; + this.JOBS[pid]['DATA']['disk_free'] = float(m.group(3)) / 1024.0; + this.JOBS[pid]['DATA']['disk_usage'] = float(m.group(4)) / 1024.0; + DF.close(); + except IOError, ex: + this.logger.log(Logger.ERROR, "ERROR", "ProcInfo: cannot run df to get job's disk usage for job "+`pid`); + + # create cummulative parameters based on raw params like cpu_, blocks_, swap_, or ethX_ + def computeCummulativeParams(this, dataRef, prevDataRef): + if prevDataRef == {}: + for key in dataRef.keys(): + if key.find('raw_') == 0: + prevDataRef[key] = dataRef[key]; + prevDataRef['TIME'] = dataRef['TIME']; + return; + + # cpu -related params + if (dataRef.has_key('raw_cpu_usr')) and (prevDataRef.has_key('raw_cpu_usr')): + diff={}; + cpu_sum = 0; + for param in ['cpu_usr', 'cpu_nice', 'cpu_sys', 'cpu_idle', 'cpu_iowait']: + diff[param] = this.diffWithOverflowCheck(dataRef['raw_'+param], prevDataRef['raw_'+param]); + cpu_sum += diff[param]; + for param in ['cpu_usr', 'cpu_nice', 'cpu_sys', 'cpu_idle', 'cpu_iowait']: + if cpu_sum != 0: + dataRef[param] = 100.0 * diff[param] / cpu_sum; + else: + del dataRef[param]; + if cpu_sum != 0: + dataRef['cpu_usage'] = 100.0 * (cpu_sum - diff['cpu_idle']) / cpu_sum; + else: + del dataRef['cpu_usage']; + # add the other parameters + for param in ['interrupts', 'context_switches']: + if(prevDataRef.has_key('raw_'+param) and dataRef.has_key('raw_'+param)): + dataRef[param] = this.diffWithOverflowCheck(dataRef['raw_'+param], prevDataRef['raw_'+param]); + else: + del dataRef[param]; + + # swap, blocks, context switches, interrupts + interval = dataRef['TIME'] - prevDataRef['TIME']; + for param in ['blocks_in', 'blocks_out', 'swap_in', 'swap_out', 'interrupts', 'context_switches']: + if((interval != 0) and prevDataRef.has_key('raw_'+param) and dataRef.has_key('raw_'+param)): + diff = this.diffWithOverflowCheck(dataRef['raw_'+param], prevDataRef['raw_'+param]); + dataRef[param+'_R'] = diff / interval; + else: + del dataRef[param+'_R']; + + # eth - related params + for rawParam in dataRef.keys(): + if (rawParam.find('raw_eth') == 0) and prevDataRef.has_key(rawParam): + param = rawParam.split('raw_')[1]; + if interval != 0: + dataRef[param] = this.diffWithOverflowCheck(dataRef[rawParam], prevDataRef[rawParam]); # absolute difference + if param.find('_errs') == -1: + dataRef[param] = dataRef[param] / interval / 1024.0; # if it's _in or _out, compute in KB/sec + else: + del dataRef[param]; + + # copy contents of the current data values to the + for param in dataRef.keys(): + if param.find('raw_') == 0: + prevDataRef[param] = dataRef[param]; + prevDataRef['TIME'] = dataRef['TIME']; + + + # Return a hash containing (param,value) pairs with existing values from the requested ones + def getFilteredData (this, dataHash, paramsList, prevDataHash = None): + + if not prevDataHash is None: + this.computeCummulativeParams(dataHash, prevDataHash); + + result = {}; + for param in paramsList: + if param == 'net_sockets': + for key in dataHash.keys(): + if key.find('sockets') == 0 and key.find('sockets_tcp_') == -1: + result[key] = dataHash[key]; + elif param == 'net_tcp_details': + for key in dataHash.keys(): + if key.find('sockets_tcp_') == 0: + result[key] = dataHash[key]; + + m = re.match("^net_(.*)$", param); + if m == None: + m = re.match("^(ip)$", param); + if m != None: + net_param = m.group(1); + #this.logger.log(Logger.DEBUG, "Querying param "+net_param); + for key, value in dataHash.items(): + m = re.match("eth\d_"+net_param, key); + if m != None: + result[key] = value; + else: + if param == 'processes': + for key in dataHash.keys(): + if key.find('processes') == 0: + result[key] = dataHash[key]; + elif dataHash.has_key(param): + result[param] = dataHash[param]; + sorted_result = []; + keys = result.keys(); + keys.sort(); + for key in keys: + sorted_result.append((key, result[key])); + return sorted_result; + +###################################################################################### +# self test + +if __name__ == '__main__': + logger = Logger.Logger(Logger.DEBUG); + pi = ProcInfo(logger); + + print "first update"; + pi.update(); + print "Sleeping to accumulate"; + time.sleep(1); + pi.update(); + + print "System Monitoring:"; + sys_cpu_params = ['cpu_usr', 'cpu_sys', 'cpu_idle', 'cpu_nice', 'cpu_usage', 'context_switches', 'interrupts']; + sys_io_params = ['blocks_in', 'blocks_out', 'swap_in', 'swap_out']; + sys_mem_params = ['mem_used', 'mem_free', 'total_mem', 'mem_usage']; + sys_swap_params = ['swap_used', 'swap_free', 'total_swap', 'swap_usage']; + sys_load_params = ['load1', 'load5', 'load15', 'processes', 'uptime']; + sys_gen_params = ['hostname', 'cpu_MHz', 'no_CPUs', 'cpu_vendor_id', 'cpu_family', 'cpu_model', 'cpu_model_name', 'bogomips']; + sys_net_params = ['net_in', 'net_out', 'net_errs', 'ip']; + sys_net_stat = ['sockets_tcp', 'sockets_udp', 'sockets_unix', 'sockets_icm']; + sys_tcp_details = ['sockets_tcp_ESTABLISHED', 'sockets_tcp_SYN_SENT', 'sockets_tcp_SYN_RECV', 'sockets_tcp_FIN_WAIT1', 'sockets_tcp_FIN_WAIT2', 'sockets_tcp_TIME_WAIT', 'sockets_tcp_CLOSED', 'sockets_tcp_CLOSE_WAIT', 'sockets_tcp_LAST_ACK', 'sockets_tcp_LISTEN', 'sockets_tcp_CLOSING', 'sockets_tcp_UNKNOWN']; + + print "sys_cpu_params", pi.getSystemData(sys_cpu_params); + print "sys_io_params", pi.getSystemData(sys_io_params); + print "sys_mem_params", pi.getSystemData(sys_mem_params); + print "sys_swap_params", pi.getSystemData(sys_swap_params); + print "sys_load_params", pi.getSystemData(sys_load_params); + print "sys_gen_params", pi.getSystemData(sys_gen_params); + print "sys_net_params", pi.getSystemData(sys_net_params); + print "sys_net_stat", pi.getSystemData(sys_net_stat); + print "sys_tcp_details", pi.getSystemData(sys_tcp_details); + + job_pid = os.getpid(); + + print "Job (mysefl) monitoring:"; + pi.addJobToMonitor(job_pid, os.getcwd()); + print "Sleep another second"; + time.sleep(1); + pi.update(); + + job_cpu_params = ['run_time', 'cpu_time', 'cpu_usage']; + job_mem_params = ['mem_usage', 'rss', 'virtualmem', 'open_files']; + job_disk_params = ['workdir_size', 'disk_used', 'disk_free', 'disk_total', 'disk_usage']; + time.sleep(10); + print "job_cpu_params", pi.getJobData(job_pid, job_cpu_params); + print "job_mem_params", pi.getJobData(job_pid, job_mem_params); + print "job_disk_params", pi.getJobData(job_pid, job_disk_params); + + pi.removeJobToMonitor(os.getpid()); diff --git a/old/bt-prof/mon/apmon.py b/old/bt-prof/mon/apmon.py new file mode 100644 index 0000000..0b9f58d --- /dev/null +++ b/old/bt-prof/mon/apmon.py @@ -0,0 +1,950 @@ + +""" + * ApMon - Application Monitoring Tool + * Version: 2.2.13 + * + * Copyright (C) 2006 California Institute of Technology + * + * Permission is hereby granted, free of charge, to use, copy and modify + * this software and its documentation (the "Software") for any + * purpose, provided that existing copyright notices are retained in + * all copies and that this notice is included verbatim in any distributions + * or substantial portions of the Software. + * This software is a part of the MonALISA framework (http://monalisa.cacr.caltech.edu). + * Users of the Software are asked to feed back problems, benefits, + * and/or suggestions about the software to the MonALISA Development Team + * (developers@monalisa.cern.ch). Support for this software - fixing of bugs, + * incorporation of new features - is done on a best effort basis. All bug + * fixes and enhancements will be made available under the same terms and + * conditions as the original software, + + * IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT + * OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY DERIVATIVES THEREOF, + * EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + * THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE IS + * PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE NO + * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR + * MODIFICATIONS. +""" + +""" +apmon.py + +This is a python implementation for the ApMon API for sending +data to the MonALISA service. + +For further details about ApMon please see the C/C++ or Java documentation +You can find a sample usage of this module in apmTest.py. + +Note that the parameters must be either integers(32 bits) or doubles(64 bits). +Sending strings is supported, but they will not be stored in the +farm's store nor shown in the farm's window in the MonALISA client. +""" + +import re +import xdrlib +import socket +import struct +import StringIO +import threading +import time +from Logger import * +import ProcInfo +import random +import copy +import os + +#__all__ = ["ApMon"] + +#__debug = False # set this to True to be verbose + +class ApMon: + """ + Main class for sending monitoring data to a MonaLisa module. + One or more destinations can be chosen for the data. See constructor. + + The data is packed in UDP datagrams, using XDR. The following fields are sent: + - version & password (string) + - cluster name (string) + - node name (string) + - number of parameters (int) + - for each parameter: + - name (string) + - value type (int) + - value + - optionally a (int) with the given timestamp + + Attributes (public): + - destinations - a list containing (ip, port, password) tuples + - configAddresses - list with files and urls from where the config is read + - configRecheckInterval - period, in seconds, to check for changes + in the configAddresses list + - configRecheck - boolean - whether to recheck periodically for changes + in the configAddresses list + """ + + __defaultOptions = { + 'job_monitoring': True, # perform (or not) job monitoring + 'job_interval' : 120, # at this interval (in seconds) + 'job_data_sent' : 0, # time from Epoch when job information was sent; don't touch! + + 'job_cpu_time' : True, # elapsed time from the start of this job in seconds + 'job_run_time' : True, # processor time spent running this job in seconds + 'job_cpu_usage' : True, # current percent of the processor used for this job, as reported by ps + 'job_virtualmem': True, # size in JB of the virtual memory occupied by the job, as reported by ps + 'job_rss' : True, # size in KB of the resident image size of the job, as reported by ps + 'job_mem_usage' : True, # percent of the memory occupied by the job, as reported by ps + 'job_workdir_size': True, # size in MB of the working directory of the job + 'job_disk_total': True, # size in MB of the total size of the disk partition containing the working directory + 'job_disk_used' : True, # size in MB of the used disk partition containing the working directory + 'job_disk_free' : True, # size in MB of the free disk partition containing the working directory + 'job_disk_usage': True, # percent of the used disk partition containing the working directory + 'job_open_files': True, # number of open file descriptors + + 'sys_monitoring': True, # perform (or not) system monitoring + 'sys_interval' : 120, # at this interval (in seconds) + 'sys_data_sent' : 0, # time from Epoch when system information was sent; don't touch! + + 'sys_cpu_usr' : True, # cpu-usage information + 'sys_cpu_sys' : True, # all these will produce coresponding paramas without "sys_" + 'sys_cpu_nice' : True, + 'sys_cpu_idle' : True, + 'sys_cpu_iowait': True, + 'sys_cpu_usage' : True, + 'sys_interrupts_R': True, + 'sys_context_switches_R' : True, + 'sys_load1' : True, # system load information + 'sys_load5' : True, + 'sys_load15' : True, + 'sys_mem_used' : True, # memory usage information + 'sys_mem_free' : True, + 'sys_mem_actualfree': True, # actually free amount of mem: free + buffers + cached + 'sys_mem_usage' : True, + 'sys_mem_buffers':True, + 'sys_mem_cached': True, + 'sys_blocks_in_R' : True, + 'sys_blocks_out_R': True, + 'sys_swap_used' : True, # swap usage information + 'sys_swap_free' : True, + 'sys_swap_usage': True, + 'sys_swap_in_R' : True, + 'sys_swap_out_R' : True, + 'sys_net_in' : True, # network transfer in kBps + 'sys_net_out' : True, # these will produce params called ethX_in, ethX_out, ethX_errs + 'sys_net_errs' : True, # for each eth interface + 'sys_net_sockets' : True, # number of opened sockets for each proto => sockets_tcp/udp/unix ... + 'sys_net_tcp_details' : True, # number of tcp sockets in each state => sockets_tcp_LISTEN, ... + 'sys_processes' : True, + 'sys_uptime' : True, # uptime of the machine, in days (float number) + + 'general_info' : True, # send (or not) general host information once every 2 x $sys_interval seconds + 'general_data_sent': 0, # time from Epoch when general information was sent; don't touch! + + 'hostname' : True, + 'ip' : True, # will produce ethX_ip params for each interface + 'cpu_MHz' : True, + 'no_CPUs' : True, # number of CPUs + 'kernel_version': True, + 'platform' : True, + 'os_type' : True, + 'total_mem' : True, + 'total_swap' : True, + 'cpu_vendor_id' : True, + 'cpu_family' : True, + 'cpu_model' : True, + 'cpu_model_name': True, + 'bogomips' : True}; + + def __init__ (self, initValue, defaultLogLevel = Logger.INFO): + """ + Class constructor: + - if initValue is a string, put it in configAddresses and load destinations + from the file named like that. if it starts with "http://", the configuration + is loaded from that URL. For background monitoring, given parameters will overwrite defaults + + - if initValue is a list, put its contents in configAddresses and create + the list of destinations from all those sources. For background monitoring, + given parameters will overwrite defaults (see __defaultOptions) + + - if initValue is a tuple (of strings), initialize destinations with that values. + Strings in this tuple have this form: "{hostname|ip}[:port][ passwd]", the + default port being 8884 and the default password being "". Background monitoring will be + enabled sending the parameters active from __defaultOptions (see end of file) + + - if initValue is a hash (key = string(hostname|ip[:port][ passwd]), + val = hash{'param_name': True/False, ...}) the given options for each destination + will overwrite the default parameters (see __defaultOptions) + """ + self.destinations = {} # empty, by default; key = tuple (host, port, pass) ; val = hash {"param_mame" : True/False, ...} + self.destPrevData = {} # empty, by defaul; key = tuple (host, port, pass) ; val = hash {"param_mame" : value, ...} + self.senderRef = {} # key = tuple (host, port, pass); val = hash {'INSTANCE_ID', 'SEQ_NR' } + self.configAddresses = [] # empty, by default; list of files/urls from where we read config + self.configRecheckInterval = 600 # 10 minutes + self.configRecheck = True # enabled by default + self.performBgMonitoring = True # by default, perform background monitoring + self.monitoredJobs = {} # Monitored jobs; key = pid; value = hash with + self.maxMsgRate = 10 # Maximum number of messages allowed to be sent per second + self.maxMsgSize = 1440 # Maximum size of a message. Bulk parameters are split in several messages of smaller size + self.__defaultSenderRef = {'INSTANCE_ID': self.__getInstanceID(), 'SEQ_NR': 0}; + self.__defaultUserCluster = "ApMon_UserSend"; + self.__defaultUserNode = socket.getfqdn(); + self.__defaultSysMonCluster = "ApMon_SysMon"; + self.__defaultSysMonNode = socket.getfqdn(); + # don't touch these: + self.__freed = False + self.__udpSocket = None + self.__configUpdateLock = threading.Lock() + self.__configUpdateEvent = threading.Event() + self.__configUpdateFinished = threading.Event() + self.__bgMonitorLock = threading.Lock() + self.__bgMonitorEvent = threading.Event() + self.__bgMonitorFinished = threading.Event() + # don't allow a user to send more than MAX_MSG messages per second, in average + self.__crtTime = 0; + self.__prvTime = 0; + self.__prvSent = 0; + self.__prvDrop = 0; + self.__crtSent = 0; + self.__crtDrop = 0; + self.__hWeight = 0.92; + self.logger = Logger(defaultLogLevel) + try: + self.setDestinations(initValue) + self.__udpSocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + if len(self.configAddresses) > 0: + # if there are addresses that need to be monitored, + # start config checking and reloading thread + th = threading.Thread(target=self.__configLoader) + th.setDaemon(True) # this is a daemon thread + th.start() + # create the ProcInfo instance + self.procInfo = ProcInfo.ProcInfo(self.logger); + # self.procInfo.update(); + # start the background monitoring thread + th = threading.Thread(target=self.__bgMonitor); + th.setDaemon(True); + th.start(); + except Exception, msg: + self.logger.log(Logger.ERROR, "Error initializing ApMon "+str(msg), True) + + def sendParams (self, params): + """ + Send multiple parameters to MonALISA, with default (last given) cluser and node names. + """ + self.sendTimedParams (-1, params) + + def sendTimedParams (self, timeStamp, params): + """ + Send multiple parameters, specifying the time for them, with default (last given) cluster and node names. + (See sendTimedParameters for more details) + """ + self.sendTimedParameters (None, None, timeStamp, params); + + def sendParameter (self, clusterName, nodeName, paramName, paramValue): + """ + Send a single parameter to MonALISA. + """ + self.sendTimedParameter(clusterName, nodeName, -1, paramName, paramValue); + + def sendTimedParameter (self, clusterName, nodeName, timeStamp, paramName, paramValue): + """ + Send a single parameter, with a given time. + """ + self.sendTimedParameters (clusterName, nodeName, timeStamp, {paramName:paramValue}) + + def sendParameters (self, clusterName, nodeName, params): + """ + Send multiple parameters specifying cluster and node name for them + """ + self.sendTimedParameters (clusterName, nodeName, -1, params); + + def sendTimedParameters (self, clusterName, nodeName, timeStamp, params): + """ + Send multiple monitored parameters to MonALISA. + + - clusterName is the name of the cluster being monitored. The first + time this function is called, this paramenter must not be None. Then, + it can be None; last given clusterName will be used instead. + - nodeName is the name of the node for which are the parameters. If this + is None, the full hostname of this machine will be sent instead. + - timeStamp, if > 0, is given time for the parameters. This is in seconds from Epoch. + Note that this option should be used only if you are sure about the time for the result. + Otherwize, the parameters will be assigned a correct time (obtained from NTP servers) + in MonALISA service. This option can be usefull when parsing logs, for example. + - params is a dictionary containing pairs with: + - key: parameter name + - value: parameter value, either int or float. + or params is a vector of tuples (key, value). This version can be used + in case you want to send the parameters in a given order. + + NOTE that python doesn't know about 32-bit floats (only 64-bit floats!) + """ + try: + if (clusterName == None) or (clusterName == ""): + clusterName = self.__defaultUserCluster + else: + self.__defaultUserCluster = clusterName + if nodeName == None: + nodeName = self.__defaultUserNode + else: + self.__defaultUserNode = nodeName + if len(self.destinations) == 0: + self.logger.log(Logger.WARNING, "Not sending parameters since no destination is defined."); + return + self.__configUpdateLock.acquire(); + for dest in self.destinations.keys(): + self.__directSendParams(dest, clusterName, nodeName, timeStamp, params); + self.__configUpdateLock.release(); + except Exception, msg: + self.logger.log(Logger.ERROR, "Error in sendTimedParameters: "+str(msg), True) + + + def addJobToMonitor (self, pid, workDir, clusterName, nodeName): + """ + Add a new job to monitor. + """ + try: + pid = int(pid) + except Exception, msg: + self.logger.log(Logger.ERROR, "Job's PID should be a number: "+str(msg), True) + try: + self.__bgMonitorLock.acquire(); + self.monitoredJobs[pid] = {}; + self.monitoredJobs[pid]['CLUSTER_NAME'] = clusterName; + self.monitoredJobs[pid]['NODE_NAME'] = nodeName; + self.procInfo.addJobToMonitor(pid, workDir); + self.__bgMonitorLock.release(); + except Exception, msg: + self.logger.log(Logger.ERROR, "Error in addJobToMonitor: "+str(msg), True) + + def removeJobToMonitor (self, pid): + """ + Remove a job from being monitored. + """ + try: + self.__bgMonitorLock.acquire(); + self.procInfo.removeJobToMonitor(pid); + if self.monitoredJobs.has_key(pid): + del self.monitoredJobs[pid]; + else: + self.logger.log(Logger.ERROR, "Asked to stop monitoring job that is not monitored; given pid="+str(pid), False) + self.__bgMonitorLock.release(); + except Exception, msg: + self.logger.log(Logger.ERROR, "Error in removeJobToMonitor: "+str(msg), True) + + def setMonitorClusterNode (self, clusterName, nodeName): + """ + Set the cluster and node names where to send system related information. + """ + self.__bgMonitorLock.acquire(); + if (clusterName != None) and (clusterName != ""): + self.__defaultSysMonCluster = clusterName; + if (nodeName != None) and (nodeName != ""): + self.__defaultSysMonNode = nodeName; + self.__bgMonitorLock.release(); + + def enableBgMonitoring (self, onOff): + """ + Enable or disable background monitoring. Note that background monitoring information + can still be sent if user calls the sendBgMonitoring method. + """ + self.performBgMonitoring = onOff; + + def sendBgMonitoring (self, mustSend = False): + """ + Send background monitoring about system and jobs to all interested destinations. + If mustSend == True, the information is sent regardles of the elapsed time since last sent + If mustSend == False, the data is sent only if the required interval has passed since last sent + """ + try: + if len(self.destinations) == 0: + self.logger.log(Logger.WARNING, "Not sending bg monitoring info since no destination is defined."); + return + self.__bgMonitorLock.acquire(); + now = int(time.time()); + updatedProcInfo = False; + for destination, options in self.destinations.iteritems(): + sysParams = []; + jobParams = []; + prevRawData = self.destPrevData[destination]; + # for each destination and its options, check if we have to report any background monitoring data + if(options['sys_monitoring'] and (mustSend or options['sys_data_sent'] + options['sys_interval'] <= now)): + for param, active in options.items(): + m = re.match("sys_(.+)", param); + if(m != None and active): + param = m.group(1); + if not (param == 'monitoring' or param == 'interval' or param == 'data_sent'): + sysParams.append(param) + options['sys_data_sent'] = now; + if(options['job_monitoring'] and (mustSend or options['job_data_sent'] + options['job_interval'] <= now)): + for param, active in options.items(): + m = re.match("job_(.+)", param); + if(m != None and active): + param = m.group(1); + if not (param == 'monitoring' or param == 'interval' or param == 'data_sent'): + jobParams.append(param); + options['job_data_sent'] = now; + if(options['general_info'] and (mustSend or options['general_data_sent'] + 2 * int(options['sys_interval']) <= now)): + for param, active in options.items(): + if not (param.startswith("sys_") or param.startswith("job_")) and active: + if not (param == 'general_info' or param == 'general_data_sent'): + sysParams.append(param); + options['general_data_sent'] = now; + + if (not updatedProcInfo) and (((len(sysParams) > 0) or (len(jobParams) > 0))): + self.procInfo.update(); + updatedProcInfo = True; + + sysResults = [] + if(len(sysParams) > 0): + sysResults = self.procInfo.getSystemData(sysParams, prevRawData) + if(len(sysResults) > 0): + self.__directSendParams(destination, self.__defaultSysMonCluster, self.__defaultSysMonNode, -1, sysResults) + for pid, props in self.monitoredJobs.items(): + jobResults = [] + if(len(jobParams) > 0): + jobResults = self.procInfo.getJobData(pid, jobParams) + if(len(jobResults) > 0): + self.__directSendParams(destination, props['CLUSTER_NAME'], props['NODE_NAME'], -1, jobResults) + self.__bgMonitorLock.release(); + except Exception, msg: + self.logger.log(Logger.ERROR, "Error in sendBgMonitoring: "+str(msg), True) + + def setDestinations(self, initValue): + """ + Set the destinations of the ApMon instance. It accepts the same parameters as the constructor. + """ + try: + if type(initValue) == type("string"): + self.configAddresses = [initValue] + self.configRecheck = True + self.configRecheckInterval = 600 + self.__reloadAddresses() + elif type(initValue) == type([]): + self.configAddresses = initValue + self.configRecheck = True + self.configRecheckInterval = 600 + self.__reloadAddresses() + elif type(initValue) == type(()): + self.configAddresses = [] + for dest in initValue: + self.__addDestination (dest, self.destinations) + self.configRecheck = False + elif type(initValue) == type({}): + self.configAddresses = [] + for dest, opts in initValue.items(): + self.__addDestination (dest, self.destinations, opts) + self.configRecheck = False + except Exception, msg: + self.logger.log(Logger.ERROR, "Error in setDestinations: "+str(msg), True) + + def getConfig(self): + """ + Returns a multi-line string that contains the configuration of ApMon. This string can + be passed to the setDestination method (or to the constructor). It has the same + structure as the config file/url contents. + """ + conf = "" + for dest, opts in self.destinations.items(): + h, p, w = dest + conf += h+":"+str(p)+" "+w+"\n\n" + ok = opts.keys() + ok.sort(); + for o in ok: + conf += "xApMon_"+o+" = "+str(opts[o])+"\n" + conf += "TODO: add the others \n" + return conf + + def initializedOK(self): + """ + Retruns true if there is no destination where the parameters to be sent. + """ + return len(self.destinations) > 0 + + def setLogLevel(self, strLevel): + """ + Change the log level. Given level is a string, one of 'FATAL', 'ERROR', 'WARNING', + 'INFO', 'NOTICE', 'DEBUG'. + """ + self.logger.setLogLevel(strLevel); + + def setMaxMsgRate(self, rate): + """ + Set the maximum number of messages that can be sent, per second. + """ + self.maxMsgRate = rate; + self.logger.log(Logger.DEBUG, "Setting maxMsgRate to: " + str(rate)); + + def setMaxMsgSize(self, size): + """ + Set the maximum size of the sent messages. ApMon will try to split in several independent + messages parameters sent in bulk, if the size would be larger than this + """ + self.maxMsgSize = size + self.logger.log(Logger.DEBUG, "Setting maxMsgSize to: %d" % size) + + def free(self): + """ + Stop background threands, close opened sockets. You have to use this function if you want to + free all the resources that ApMon takes, and allow it to be garbage-collected. + """ + try: + if len(self.configAddresses) > 0: + self.__configUpdateEvent.set() + self.__configUpdateFinished.wait() + self.__bgMonitorEvent.set() + self.__bgMonitorFinished.wait() + + if self.__udpSocket != None: + self.logger.log(Logger.DEBUG, "Closing UDP socket on ApMon object destroy."); + self.__udpSocket.close(); + self.__udpSocket = None; + self.__freed = True + except Exception, msg: + self.logger.log(Logger.ERROR, "Error in free: "+str(msg), True) + + ######################################################################################### + # Internal functions - Config reloader thread + ######################################################################################### + + def __configLoader(self): + """ + Main loop of the thread that checks for changes and reloads the configuration + """ + try: + while not self.__configUpdateEvent.isSet(): + self.__configUpdateEvent.wait(min(30, self.configRecheckInterval)) # don't recheck more often than 30 sec + if self.__configUpdateEvent.isSet(): + break + if self.configRecheck: + try: + self.__reloadAddresses() + self.logger.log(Logger.DEBUG, "Config reloaded. Seleeping for "+`self.configRecheckInterval`+" sec."); + except Exception, msg: + self.logger.log(Logger.ERROR, "Error reloading config: "+str(msg), True) + self.__configUpdateFinished.set(); + except: + pass + + def __reloadAddresses(self): + """ + Refresh now the destinations hash, by loading data from all sources in configAddresses + """ + newDestinations = {} + urls = copy.deepcopy(self.configAddresses) + while(len(urls) > 0 and len(newDestinations) == 0): + src = random.choice(urls) + urls.remove(src) + self.__initializeFromFile(src, newDestinations) + # avoid changing config in the middle of sending packets to previous destinations + self.__configUpdateLock.acquire() + self.destinations = newDestinations + self.__configUpdateLock.release() + + def __addDestination (self, aDestination, tempDestinations, options = __defaultOptions): + """ + Add a destination to the list. + + aDestination is a string of the form "{hostname|ip}[:port] [passwd]" without quotes. + If the port is not given, it will be used the default port (8884) + If the password is missing, it will be considered an empty string + """ + aDestination = aDestination.strip().replace('\t', ' ') + while aDestination != aDestination.replace(' ', ' '): + aDestination = aDestination.replace(' ', ' ') + sepPort = aDestination.find (':') + sepPasswd = aDestination.rfind (' ') + if sepPort >= 0: + host = aDestination[0:sepPort].strip() + if sepPasswd > sepPort + 1: + port = aDestination[sepPort+1:sepPasswd].strip() + passwd = aDestination[sepPasswd:].strip() + else: + port = aDestination[sepPort+1:].strip() + passwd = "" + else: + port = str(self.__defaultPort) + if sepPasswd >= 0: + host = aDestination[0:sepPasswd].strip() + passwd = aDestination[sepPasswd:].strip() + else: + host = aDestination.strip() + passwd = "" + if (not port.isdigit()): + self.logger.log(Logger.WARNING, "Bad value for port number "+`port`+" in "+aDestination+" destination"); + return + alreadyAdded = False + port = int(port) + try: + host = socket.gethostbyname(host) # convert hostnames to IP addresses to avoid suffocating DNSs + except socket.error, msg: + self.logger.log(Logger.ERROR, "Error resolving "+host+": "+str(msg)) + return + for h, p, w in tempDestinations.keys(): + if (h == host) and (p == port): + alreadyAdded = True + break + destination = (host, port, passwd) + if not alreadyAdded: + self.logger.log(Logger.INFO, "Adding destination "+host+':'+`port`+' '+passwd) + if(self.destinations.has_key(destination)): + tempDestinations[destination] = self.destinations[destination] # reuse previous options + else: + tempDestinations[destination] = copy.deepcopy(self.__defaultOptions) # have a different set of options for each dest + if not self.destPrevData.has_key(destination): + self.destPrevData[destination] = {} # set it empty only if it's really new + if not self.senderRef.has_key(destination): + self.senderRef[destination] = copy.deepcopy(self.__defaultSenderRef) # otherwise, don't reset this nr. + if options != self.__defaultOptions: + # we have to overwrite defaults with given options + for key, value in options.items(): + self.logger.log(Logger.DEBUG, "Overwritting option: "+key+" = "+`value`) + tempDestinations[destination][key] = value + else: + self.logger.log(Logger.NOTICE, "Destination "+host+":"+str(port)+" "+passwd+" already added. Skipping it"); + + def __initializeFromFile (self, confFileName, tempDestinations): + """ + Load destinations from confFileName file. If it's an URL (starts with "http://") + load configuration from there. Put all destinations in tempDestinations hash. + + Calls addDestination for each line that doesn't start with # and + has non-whitespace characters on it + """ + try: + if confFileName.find ("http://") == 0: + confFile = self.__getURL(confFileName) + if confFile is None: + return + else: + confFile = open (confFileName) + except IOError, ex: + self.logger.log(Logger.ERROR, "Cannot open "+confFileName); + self.logger.log(Logger.ERROR, "IOError: "+str(ex)); + return + self.logger.log(Logger.INFO, "Adding destinations from "+confFileName); + dests = [] + opts = {} + while(True): + line = confFile.readline(); + if line == '': + break; + line = line.strip() + self.logger.log(Logger.DEBUG, "Reading line "+line); + if (len(line) == 0) or (line[0] == '#'): + continue + elif line.startswith("xApMon_"): + m = re.match("xApMon_(.*)", line); + if m != None: + m = re.match("(\S+)\s*=\s*(\S+)", m.group(1)); + if m != None: + param = m.group(1); value = m.group(2); + if(value.upper() == "ON"): + value = True; + elif(value.upper() == "OFF"): + value = False; + elif(param.endswith("_interval")): + value = int(value); + if param == "loglevel": + self.logger.setLogLevel(value); + elif param == "maxMsgRate": + self.setMaxMsgRate(int(value)); + elif param == "conf_recheck": + self.configRecheck = value; + elif param == "recheck_interval": + self.configRecheckInterval = value; + elif param.endswith("_data_sent"): + pass; # don't reset time in sys/job/general/_data_sent + else: + opts[param] = value; + else: + dests.append(line); + + confFile.close () + for line in dests: + self.__addDestination(line, tempDestinations, opts) + + ############################################################################################### + # Internal functions - Background monitor thread + ############################################################################################### + + def __bgMonitor (self): + try: + while not self.__bgMonitorEvent.isSet(): + self.__bgMonitorEvent.wait(10) + if self.__bgMonitorEvent.isSet(): + break + if self.performBgMonitoring: + self.sendBgMonitoring() # send only if the interval has elapsed + self.__bgMonitorFinished.set() + except: #catch-all + pass + + ############################################################################################### + # Internal helper functions + ############################################################################################### + + # this is a simplified replacement for urllib2 which doesn't support setting a timeout. + # by default, if timeout is not specified, it waits 5 seconds + def __getURL (self, url, timeout = 5): + r = re.compile("http://([^:/]+)(:(\d+))?(/.*)").match(url) + if r is None: + self.logger.log(Logger.ERROR, "Cannot open "+url+". Incorrectly formed URL.") + return None + host = r.group(1) + if r.group(3) == None: + port = 80 # no port is given, pick the default 80 for HTTP + else: + port = int(r.group(3)) + if r.group(4) == None: + path = "" # no path is give, let server decide + else: + path = r.group(4) + sock = None + err = None + try: + for res in socket.getaddrinfo(host, port, socket.AF_UNSPEC, socket.SOCK_STREAM): + af, socktype, proto, canonname, sa = res + try: + sock = socket.socket(af, socktype, proto) + except socket.error, msg: + sock = None + err = msg + continue + try: + if hasattr(sock, 'settimeout'): + self.logger.log(Logger.DEBUG, "Setting socket timeout with settimeout.") + sock.settimeout(timeout); + else: + self.logger.log(Logger.DEBUG, "Setting socket timeout with setsockopt.") + sock.setsockopt(socket.SOL_SOCKET, socket.SO_SNDTIMEO, struct.pack("ii", timeout, 0)) + sock.setsockopt(socket.SOL_SOCKET, socket.SO_RCVTIMEO, struct.pack("ii", timeout, 0)) + sock.connect(sa) + except socket.error, msg: + sock.close() + sock = None + err = msg + continue + break + except socket.error, msg: + sock = None + err = msg + if sock is None: + self.logger.log(Logger.ERROR, "Cannot open "+url) + self.logger.log(Logger.ERROR, "SocketError: "+str(err)) + return None + try: + sock.send("GET "+path+" HTTP/1.0\n\n"); + data = "" + done = False + while not done: + moreData = sock.recv(4096) + data += moreData + done = len(moreData) == 0 + sock.close() + file = StringIO.StringIO(data) + httpStatus = 0 + while True: + line = file.readline().strip() + if line == "": + break # exit at the end of file or at the first empty line (finish of http headers) + r = re.compile("HTTP/\d.\d (\d+)").match(line) + if r != None: + httpStatus = int(r.group(1)) + if httpStatus == 200: + return file + else: + self.logger.log(Logger.ERROR, "Cannot open "+url) + if httpStatus == 401: + self.logger.log(Logger.ERROR, 'HTTPError: not authorized ['+str(httpStatus)+']') + elif httpStatus == 404: + self.logger.log(Logger.ERROR, 'HTTPError: not found ['+str(httpStatus)+']') + elif httpStatus == 503: + self.logger.log(Logger.ERROR, 'HTTPError: service unavailable ['+str(httpStatus)+']') + else: + self.logger.log(Logger.ERROR, 'HTTPError: unknown error ['+str(httpStatus)+']') + return None + except socket.error, msg: + self.logger.log(Logger.ERROR, "Cannot open "+url) + self.logger.log(Logger.ERROR, "SocketError: "+str(msg)) + sock.close() + return None + + def __directSendParams (self, destination, clusterName, nodeName, timeStamp, params): + + if destination == None: + self.logger.log(Logger.WARNING, "Destination is None"); + return; + + host, port, passwd = destination + crtSenderRef = self.senderRef[destination] + + hdrPacker = xdrlib.Packer () + hdrPacker.pack_string ("v:"+self.__version+"p:"+passwd) + hdrPacker.pack_int (crtSenderRef['INSTANCE_ID']) + hdrBuffer1 = hdrPacker.get_buffer() + hdrPacker.reset() + + hdrPacker.pack_string (clusterName) + hdrPacker.pack_string (nodeName) + hdrBuffer2 = hdrPacker.get_buffer() + hdrPacker.reset() + + hdrSize = len(hdrBuffer1) + len(hdrBuffer2) + 4 + + paramPacker = xdrlib.Packer () + paramBlocks = [] + + crtParamsCount = 0 + crtParamsBuffer = '' + crtParamsBuffSize = 0 + + map = None + if type(params) == type( {} ): + map = params.iteritems() + elif type(params) == type( [] ): + map = params + if map is not None: + for name, value in map: + if self.__packParameter(paramPacker, name, value): + buf = paramPacker.get_buffer() + bufLen = len(buf) + paramPacker.reset() + if bufLen + crtParamsBuffSize + hdrSize + 8 <= self.maxMsgSize: # 8 for 2 ints: params count and result time + crtParamsBuffer += buf + crtParamsBuffSize += bufLen + crtParamsCount += 1 + else: + self.logger.log(Logger.NOTICE, "Message is getting too big (Max size="+str(self.maxMsgSize)+"). Splitting it at "+name+"="+str(value)) + paramBlocks.append((crtParamsCount, crtParamsBuffer)) + paramPacker.reset() + crtParamsCount = 1 + crtParamsBuffer = buf + crtParamsBuffSize = bufLen + else: + self.logger.log(Logger.WARNING, "Unsupported params type in sendParameters: " + str(type(params))) + + paramBlocks.append((crtParamsCount, crtParamsBuffer)) # update last params block + paramPacker.reset() + + paramsTime = '' + if (timeStamp != None) and (timeStamp > 0): + paramPacker.pack_int(timeStamp) + paramsTime = paramsPacker.get_buffer() + paramPacker.reset() + + for paramsCount, paramsBuffer in paramBlocks: + if self.__shouldSend() == False: + self.logger.log(Logger.WARNING, "Dropping packet since rate is too fast!"); + continue; + paramPacker.pack_int(paramsCount) + crtSenderRef['SEQ_NR'] = (crtSenderRef['SEQ_NR'] + 1) % 2000000000; # wrap around 2 mld + hdrPacker.pack_int (crtSenderRef['SEQ_NR']) + buffer = hdrBuffer1 + hdrPacker.get_buffer() + hdrBuffer2 + paramPacker.get_buffer() + paramsBuffer + paramsTime + hdrPacker.reset() + paramPacker.reset() + bufLen = len(buffer) + self.logger.log(Logger.NOTICE, "Building XDR packet ["+str(clusterName)+"/"+str(nodeName)+"] <"+str(crtSenderRef['SEQ_NR'])+"/"+str(crtSenderRef['INSTANCE_ID'])+"> "+str(paramsCount)+" params, "+str(bufLen)+" bytes."); + if bufLen > self.maxMsgSize: + self.logger.log(Logger.WARNING, "Couldn't split parameter set (name/value pairs might be too large?). Message length is: "+str(bufLen)+". It might be dropped if > 1500. Sending anyway.") + # send this buffer to the destination, using udp datagrams + try: + self.__udpSocket.sendto(buffer, (host, port)) + self.logger.log(Logger.NOTICE, "Packet sent to "+host+":"+str(port)+" "+passwd) + except socket.error, msg: + self.logger.log(Logger.ERROR, "Cannot send packet to "+host+":"+str(port)+" "+passwd+": "+str(msg[1])) + + def __packParameter(self, xdrPacker, name, value): + if (name is None) or (name is ""): + self.logger.log(Logger.WARNING, "Undefined parameter name. Ignoring value "+str(value)) + return False + if (value is None): + self.logger.log(Logger.WARNING, "Ignore " + str(name)+ " parameter because of None value") + return False + try: + typeValue = self.__valueTypes[type(value)] + xdrPacker.pack_string (name) + xdrPacker.pack_int (typeValue) + self.__packFunctions[typeValue] (xdrPacker, value) + self.logger.log(Logger.NOTICE, "Adding parameter "+str(name)+" = "+str(value)) + return True + except Exception, ex: + self.logger.log(Logger.WARNING, "Error packing %s = %s; got %s" % (name, str(value), ex)) + return False + + # Destructor + def __del__(self): + if not self.__freed: + self.free(); + + # Decide if the current datagram should be sent. + # This decision is based on the number of messages previously sent. + def __shouldSend(self): + now = long(time.time()); + if now != self.__crtTime : + # new time + # update previous counters; + self.__prvSent = self.__hWeight * self.__prvSent + (1.0 - self.__hWeight) * self.__crtSent / (now - self.__crtTime); + self.__prvTime = self.__crtTime; + self.logger.log(Logger.DEBUG, "previously sent: " + str(self.__crtSent) + "; dropped: " + str(self.__crtDrop)); + # reset current counter + self.__crtTime = now; + self.__crtSent = 0; + self.__crtDrop = 0; + + # compute the history + valSent = self.__prvSent * self.__hWeight + self.__crtSent * (1 - self.__hWeight); + + doSend = True; + + # when we should start dropping messages + level = self.maxMsgRate - self.maxMsgRate / 10; + + if valSent > (self.maxMsgRate - level) : + if random.randint(0,self.maxMsgRate / 10) >= (self.maxMsgRate - valSent): + doSend = False; + + # counting sent and dropped messages + if doSend: + self.__crtSent+=1; + else: + self.__crtDrop+=1; + + return doSend; + + # Try to generate a more random instance id. It takes the process ID and + # combines it with the last digit from the IP addess and a random number + def __getInstanceID(self): + pid = os.getpid() + ip = random.randint(0, 255) + try: + sip = socket.gethostbyname(socket.gethostname()) + ip = int(sip[1+sip.rfind('.'):]) + except socket.error: + pass + rnd = random.randint(0, 255) + return (pid << 16) | (ip << 8) | rnd + + + ################################################################################################ + # Private variables. Don't touch + ################################################################################################ + + __valueTypes = { + type("string"): 0, # XDR_STRING (see ApMon.h from C/C++ ApMon version) + type(1): 2, # XDR_INT32 + type(1L): 5, # send longs as doubles + type(1.0): 5}; # XDR_REAL64 + + __packFunctions = { + 0: xdrlib.Packer.pack_string, + 2: xdrlib.Packer.pack_int, + 5: xdrlib.Packer.pack_double } + + __defaultPort = 8884 + __version = "2.2.13-py" # apMon version number + diff --git a/old/bt-prof/mon/p2p-mon.py b/old/bt-prof/mon/p2p-mon.py new file mode 100644 index 0000000..077053a --- /dev/null +++ b/old/bt-prof/mon/p2p-mon.py @@ -0,0 +1,37 @@ +#!/usr/bin/python + +# +# P2P lightweigth monitoring client - sends data to MonALISA service +# + +import apmon +import time +import random +import sys + +CONFIG_FILE = "./MLservice.conf" + +def usage(): + print "Usage: " + +def main(): + if len(sys.argv) < 4: + usage() + sys.exit(2) + + node = sys.argv[1] + paramName = sys.argv[2] + paramValue = float(sys.argv[3]) + + # read service host from configuration file + apm = apmon.ApMon(CONFIG_FILE) + apm.sendParameter("P2P-Next", node, paramName, paramValue) + apm.free() + + +if __name__ == "__main__": + main() + +# vim:set ts=4: +# vim:expandtab: +# vim:set sw=4: diff --git a/old/bt-prof/run.bash b/old/bt-prof/run.bash new file mode 100644 index 0000000..e1bb57f --- /dev/null +++ b/old/bt-prof/run.bash @@ -0,0 +1,36 @@ +#!/bin/bash + +if test $# -ne 7; then + echo "Usage: $0 client_name metafile kill|no_kill enable_monitor port upload_speed download_speed" + echo -e "\tclient_name is:" + echo -e "\t\tazureus" + echo -e "\t\tmainline" + echo -e "\t\ttribler" + echo -e "\t\ttransmission" + echo -e "\t\thrktorrent" + echo -e "\t\taria" + exit 1 +fi + +BASE_DIR=/home/p2p/p2p-svn-repo/trunk/bt-prof/ + +source $BASE_DIR/config.bash + +CLIENT_NAME=$1 +METAFILE=$2 +KILL_AFTER_DLD=$3 +MON_ENABLE=$4 +PORT=$5 +UPLOAD_SPEED=$6 +DOWNLOAD_SPEED=$7 + +if ! test -f "$METAFILE"; then + echo "Error: Meta file does not exist: $METAFILE" + exit 1 +fi + +echo "Running $CLIENT_NAME" +cd $RUN_DIR/$CLIENT_NAME +nohup bash run.bash ${BASE_DIR}/config.bash "$METAFILE" "${KILL_AFTER_DL}" "${MON_ENABLE}" $PORT $UPLOAD_SPEED $DOWNLOAD_SPEED &> /dev/null & + +exit 0 diff --git a/old/bt-prof/track.bash b/old/bt-prof/track.bash new file mode 100644 index 0000000..2bd27ec --- /dev/null +++ b/old/bt-prof/track.bash @@ -0,0 +1,11 @@ +#!/bin/bash + +TRACKER_PORT=6969 +TRACKER_PATH=/home/razvan/projects/BitTornado-CVS/bttrack.py +TRACKER_LOG_FILE=./tracker.log + +# tracker may already be started +netstat --tcp --listening --numeric | grep ":$TRACKER_PORT" &> /dev/null +if test $? -ne 0; then + nohup $TRACKER_PATH --port $TRACKER_PORT --dfile $TRACKER_LOG_FILE &> /dev/null & +fi diff --git a/old/command/ban.bash b/old/command/ban.bash new file mode 100644 index 0000000..99f723f --- /dev/null +++ b/old/command/ban.bash @@ -0,0 +1,11 @@ +#!/bin/bash + +ADDRESS_LIST="10.38.7.26 10.38.8.193 10.38.7.22 10.38.7.29 10.38.8.62 10.38.7.31" + +for i in ${ADDRESS_LIST}; do + echo $i; + iptables -t filter -A INPUT -s $i -j DROP + iptables -t filter -A OUTPUT -d $i -j DROP +done + +exit 0 diff --git a/old/command/cancel.bash b/old/command/cancel.bash new file mode 100644 index 0000000..85002b3 --- /dev/null +++ b/old/command/cancel.bash @@ -0,0 +1,9 @@ +#!/bin/bash + +source config.bash + +for i in $(seq 0 5); do + ssh ${USERNAME}@${ADDRESS_ARRAY[$i]} "bash ${CANCEL_SCRIPT}" +done + +exit 0 diff --git a/old/command/config.bash b/old/command/config.bash new file mode 100644 index 0000000..964126f --- /dev/null +++ b/old/command/config.bash @@ -0,0 +1,37 @@ +#!/bin/bash + +declare -a CLIENT_ARRAY +CLIENT_ARRAY=("transmission" "mainline" "hrktorrent" "tribler" "azureus") + +declare -a CLIENT_ARRAY_SIZE +CLIENT_ARRAY_SIZE=5 + +declare -a ADDRESS_ARRAY +ADDRESS_ARRAY=("141.85.37.26" "141.85.37.26" "141.85.37.26" "141.85.37.26" "141.85.37.26") +PORT_ARRAY=("50122" "50222" "50322" "50422" "50522") +#ADDRESS_ARRAY=("10.38.7.26" "10.38.8.193" "10.38.7.22" "10.38.7.29" "10.38.8.62" "10.38.7.31") +#ADDRESS_ARRAY=("141.85.37.241" "141.85.37.242" "141.85.37.243" "141.85.37.244" "141.85.37.245" "141.85.37.246") + +USERNAME=p2p +RUN_SCRIPT=/home/p2p/p2p-svn-repo/trunk/bt-prof/run.bash +CLEAN_SCRIPT=/home/p2p/p2p-svn-repo/trunk/bt-prof/clean.bash +CANCEL_SCRIPT=/home/p2p/p2p-svn-repo/trunk/bt-prof/cancel.bash +METADIR=/home/p2p/p2p-svn-repo/trunk/bt-prof/meta/ +#METAFILE=ubuntu-8.10-desktop-i386.iso.torrent +METAFILE=tt.torrent +KILL_AFTER_DL="no_kill" +#ubuntu_7.10_dvd_i386.torrent +#ebooks.torrent +#dark_knight.torrent +#prison_break_4x01.torrent +#dexter.s2.torrent +#tropic_thunder.torrrent +#Fedora-8-dvd-i386.torrent +#kubuntu-7.04-dvd-amd64.iso.torrent +#kubuntu-7.04-dvd-i386.iso.torrent +#kubuntu-8.04-dvd-i386.iso.torrent +#mandriva-linux-2008.0-free-dvd-i586.torrent +#opensuse-11.torrent +#speed-racer.torrent +#ubuntu-8.10-desktop-i386.iso.torrent +METAPATH=${METADIR}/${METAFILE} diff --git a/old/command/run.bash b/old/command/run.bash new file mode 100644 index 0000000..5797a03 --- /dev/null +++ b/old/command/run.bash @@ -0,0 +1,12 @@ +#!/bin/bash + +source config.bash + +for i in $(seq 0 $(($CLIENT_ARRAY_SIZE - 1))); do + ssh ${USERNAME}@${ADDRESS_ARRAY[$i]} -p ${PORT_ARRAY[$i]} "bash ${CLEAN_SCRIPT}" + ssh ${USERNAME}@${ADDRESS_ARRAY[$i]} -p ${PORT_ARRAY[$i]} "nohup bash ${RUN_SCRIPT} ${CLIENT_ARRAY[$i]} ${METAPATH} ${KILL_AFTER_DL} &> /dev/null &" +# ssh ${USERNAME}@${ADDRESS_ARRAY[$i]} "touch bla" + echo "$USERNAME ${ADDRESS_ARRAY[$i]} ${RUN_SCRIPT} ${CLIENT_ARRAY[$i]} ${METAPATH}" +done + +exit 0 diff --git a/old/command/test/test_cancel.sh b/old/command/test/test_cancel.sh new file mode 100644 index 0000000..92f7f6c --- /dev/null +++ b/old/command/test/test_cancel.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +REMOTE_USER=p2p +REMOTE_HOST=p2p-next-01.grid.pub.ro +REMOTE_PORT=10122 +SVN_CHECKOUT_DIR=/home/p2p/p2p-svn-repo +CANCEL_SCRIPT=trunk/bt-prof/cancel.bash + +ssh -l $REMOTE_USER $REMOTE_HOST -p $REMOTE_PORT \ + "bash $SVN_CHECKOUT_DIR/$CANCEL_SCRIPT" diff --git a/old/command/test/test_clean.sh b/old/command/test/test_clean.sh new file mode 100644 index 0000000..5e0020d --- /dev/null +++ b/old/command/test/test_clean.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +REMOTE_USER=p2p +REMOTE_HOST=p2p-next-01.grid.pub.ro +REMOTE_PORT=10122 +SVN_CHECKOUT_DIR=/home/p2p/p2p-svn-repo +CANCEL_SCRIPT=trunk/bt-prof/cancel.bash +CLEANUP_SCRIPT=trunk/bt-prof/cleanup.bash + +ssh -l $REMOTE_USER $REMOTE_HOST -p $REMOTE_PORT \ + "bash $SVN_CHECKOUT_DIR/$CANCEL_SCRIPT" +ssh -l $REMOTE_USER $REMOTE_HOST -p $REMOTE_PORT \ + "bash $SVN_CHECKOUT_DIR/$CLEANUP_SCRIPT" diff --git a/old/command/test/test_list.sh b/old/command/test/test_list.sh new file mode 100644 index 0000000..c692345 --- /dev/null +++ b/old/command/test/test_list.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +REMOTE_USER=p2p +REMOTE_HOST=p2p-next-01.grid.pub.ro +REMOTE_PORT=10122 +SVN_CHECKOUT_DIR=/home/p2p/p2p-svn-repo +LIST_SCRIPT=trunk/bt-prof/list.bash + +ssh -l $REMOTE_USER $REMOTE_HOST -p $REMOTE_PORT \ + "bash $SVN_CHECKOUT_DIR/$LIST_SCRIPT" diff --git a/old/command/test/test_run.sh b/old/command/test/test_run.sh new file mode 100644 index 0000000..61699e3 --- /dev/null +++ b/old/command/test/test_run.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +REMOTE_USER=p2p +REMOTE_HOST=p2p-next-01.grid.pub.ro +REMOTE_PORT=10122 +SVN_CHECKOUT_DIR=/home/p2p/p2p-svn-repo +RUN_SCRIPT=trunk/bt-prof/run.bash +METAFILE_DIR=/home/p2p/p2p-meta + +# test arguments +# arguments are +# - client name (#1) +# - metafile (#2) +# - kill after download (yes|no) (#3) +# - enable monitoring (yes|no) (#4) +# - BitTorrent client upload port (#5) +# - upload speed (KB/s) (#6) +# - download speed (KB/s) (#7) + +CLIENT_NAME=hrktorrent +METAFILE=$METAFILE_DIR/fedora-11-i386-dvd.torrent +KILL_AFTER_DLD=no +MON_ENABLE=no +PORT=50100 +UPLOAD_SPEED=64 +DOWNLOAD_SPEED=512 + +ssh -l $REMOTE_USER $REMOTE_HOST -p $REMOTE_PORT \ + "bash $SVN_CHECKOUT_DIR/$RUN_SCRIPT $CLIENT_NAME $METAFILE $KILL_AFTER_DLD $MON_ENABLE $PORT $UPLOAD_SPEED $DOWNLOAD_SPEED" diff --git a/old/install/install.bash b/old/install/install.bash new file mode 100644 index 0000000..70d2dc7 --- /dev/null +++ b/old/install/install.bash @@ -0,0 +1,5 @@ +#!/bin/bash + +PACKAGES="build-essential python intltool python-twisted python-apsw sun-java6-jdk libgnutls-dev libgpg-error-dev libgcrypt-dev libares-dev libxml2-dev libssl-dev pkg-config libcurl4-openssl-dev automake1.10 autoconf python-m2crypto python-wxgtk2.8 python-pysqlite2 libboost-dev libboost-date-time-dev libboost-filesystem-dev libboost-thread-dev libboost-iostreams-dev libboost-program-options-dev libexpat1-dev dialog libncurses-dev" + +apt-get install -y $PACKAGES diff --git a/old/michel/client_config.txt b/old/michel/client_config.txt new file mode 100644 index 0000000..0299743 --- /dev/null +++ b/old/michel/client_config.txt @@ -0,0 +1,40 @@ +p2p-next-01-01 256 512 +p2p-next-01-02 256 512 +p2p-next-01-03 256 512 +p2p-next-01-04 32 64 +p2p-next-01-05 32 64 +p2p-next-02-01 32 64 +p2p-next-02-02 32 64 +p2p-next-02-03 32 64 +p2p-next-02-04 256 512 +p2p-next-02-05 256 512 +p2p-next-03-01 256 512 +p2p-next-03-02 256 512 +p2p-next-03-03 256 512 +p2p-next-03-04 32 64 +p2p-next-03-05 32 64 +p2p-next-04-01 32 64 +p2p-next-04-02 32 64 +p2p-next-04-03 32 64 +p2p-next-04-04 256 512 +p2p-next-04-05 256 512 +p2p-next-06-01 256 512 +p2p-next-06-02 256 512 +p2p-next-06-03 256 512 +p2p-next-06-04 32 64 +p2p-next-06-05 32 64 +p2p-next-07-01 32 64 +p2p-next-07-02 32 64 +p2p-next-07-03 32 64 +p2p-next-07-04 256 512 +p2p-next-07-05 256 512 +p2p-next-08-01 256 512 +p2p-next-08-02 256 512 +p2p-next-08-03 256 512 +p2p-next-08-04 32 64 +p2p-next-08-05 32 64 +p2p-next-09-01 32 64 +p2p-next-09-02 32 64 +p2p-next-09-03 32 64 +p2p-next-09-04 256 512 +p2p-next-09-05 256 512 diff --git a/old/michel/client_info_bak.txt b/old/michel/client_info_bak.txt new file mode 100644 index 0000000..0389efe --- /dev/null +++ b/old/michel/client_info_bak.txt @@ -0,0 +1,36 @@ +p2p-next-01.grid.pub.ro 10522 p2p +p2p-next-02.grid.pub.ro 10122 p2p +p2p-next-02.grid.pub.ro 10222 p2p +p2p-next-02.grid.pub.ro 10322 p2p +p2p-next-02.grid.pub.ro 10422 p2p +p2p-next-02.grid.pub.ro 10522 p2p +p2p-next-03.grid.pub.ro 10122 p2p +p2p-next-03.grid.pub.ro 10222 p2p +p2p-next-03.grid.pub.ro 10322 p2p +p2p-next-03.grid.pub.ro 10422 p2p +p2p-next-03.grid.pub.ro 10522 p2p +p2p-next-04.grid.pub.ro 10122 p2p +p2p-next-04.grid.pub.ro 10222 p2p +p2p-next-04.grid.pub.ro 10322 p2p +p2p-next-04.grid.pub.ro 10422 p2p +p2p-next-04.grid.pub.ro 10522 p2p +p2p-next-06.grid.pub.ro 10122 p2p +p2p-next-06.grid.pub.ro 10222 p2p +p2p-next-06.grid.pub.ro 10322 p2p +p2p-next-06.grid.pub.ro 10422 p2p +p2p-next-06.grid.pub.ro 10522 p2p +p2p-next-07.grid.pub.ro 10122 p2p +p2p-next-07.grid.pub.ro 10222 p2p +p2p-next-07.grid.pub.ro 10322 p2p +p2p-next-07.grid.pub.ro 10422 p2p +p2p-next-07.grid.pub.ro 10522 p2p +p2p-next-08.grid.pub.ro 10122 p2p +p2p-next-08.grid.pub.ro 10222 p2p +p2p-next-08.grid.pub.ro 10322 p2p +p2p-next-08.grid.pub.ro 10422 p2p +p2p-next-08.grid.pub.ro 10522 p2p +p2p-next-09.grid.pub.ro 10122 p2p +p2p-next-09.grid.pub.ro 10222 p2p +p2p-next-09.grid.pub.ro 10322 p2p +p2p-next-09.grid.pub.ro 10422 p2p +p2p-next-09.grid.pub.ro 10522 p2p diff --git a/old/michel/client_info_full.txt b/old/michel/client_info_full.txt new file mode 100644 index 0000000..08bf04d --- /dev/null +++ b/old/michel/client_info_full.txt @@ -0,0 +1,40 @@ +p2p-next-01.grid.pub.ro 10122 p2p +p2p-next-01.grid.pub.ro 10222 p2p +p2p-next-01.grid.pub.ro 10322 p2p +p2p-next-01.grid.pub.ro 10422 p2p +p2p-next-01.grid.pub.ro 10522 p2p +p2p-next-02.grid.pub.ro 10122 p2p +p2p-next-02.grid.pub.ro 10222 p2p +p2p-next-02.grid.pub.ro 10322 p2p +p2p-next-02.grid.pub.ro 10422 p2p +p2p-next-02.grid.pub.ro 10522 p2p +p2p-next-03.grid.pub.ro 10122 p2p +p2p-next-03.grid.pub.ro 10222 p2p +p2p-next-03.grid.pub.ro 10322 p2p +p2p-next-03.grid.pub.ro 10422 p2p +p2p-next-03.grid.pub.ro 10522 p2p +p2p-next-04.grid.pub.ro 10122 p2p +p2p-next-04.grid.pub.ro 10222 p2p +p2p-next-04.grid.pub.ro 10322 p2p +p2p-next-04.grid.pub.ro 10422 p2p +p2p-next-04.grid.pub.ro 10522 p2p +p2p-next-06.grid.pub.ro 10122 p2p +p2p-next-06.grid.pub.ro 10222 p2p +p2p-next-06.grid.pub.ro 10322 p2p +p2p-next-06.grid.pub.ro 10422 p2p +p2p-next-06.grid.pub.ro 10522 p2p +p2p-next-07.grid.pub.ro 10122 p2p +p2p-next-07.grid.pub.ro 10222 p2p +p2p-next-07.grid.pub.ro 10322 p2p +p2p-next-07.grid.pub.ro 10422 p2p +p2p-next-07.grid.pub.ro 10522 p2p +p2p-next-08.grid.pub.ro 10122 p2p +p2p-next-08.grid.pub.ro 10222 p2p +p2p-next-08.grid.pub.ro 10322 p2p +p2p-next-08.grid.pub.ro 10422 p2p +p2p-next-08.grid.pub.ro 10522 p2p +p2p-next-09.grid.pub.ro 10122 p2p +p2p-next-09.grid.pub.ro 10222 p2p +p2p-next-09.grid.pub.ro 10322 p2p +p2p-next-09.grid.pub.ro 10422 p2p +p2p-next-09.grid.pub.ro 10522 p2p diff --git a/old/michel/client_info_less.txt b/old/michel/client_info_less.txt new file mode 100644 index 0000000..fe4ab6f --- /dev/null +++ b/old/michel/client_info_less.txt @@ -0,0 +1,20 @@ +p2p-next-06.grid.pub.ro 10122 p2p +p2p-next-06.grid.pub.ro 10222 p2p +p2p-next-06.grid.pub.ro 10322 p2p +p2p-next-06.grid.pub.ro 10422 p2p +p2p-next-06.grid.pub.ro 10522 p2p +p2p-next-07.grid.pub.ro 10122 p2p +p2p-next-07.grid.pub.ro 10222 p2p +p2p-next-07.grid.pub.ro 10322 p2p +p2p-next-07.grid.pub.ro 10422 p2p +p2p-next-07.grid.pub.ro 10522 p2p +p2p-next-08.grid.pub.ro 10122 p2p +p2p-next-08.grid.pub.ro 10222 p2p +p2p-next-08.grid.pub.ro 10322 p2p +p2p-next-08.grid.pub.ro 10422 p2p +p2p-next-08.grid.pub.ro 10522 p2p +p2p-next-09.grid.pub.ro 10122 p2p +p2p-next-09.grid.pub.ro 10222 p2p +p2p-next-09.grid.pub.ro 10322 p2p +p2p-next-09.grid.pub.ro 10422 p2p +p2p-next-09.grid.pub.ro 10522 p2p diff --git a/old/michel/client_info_peers.txt b/old/michel/client_info_peers.txt new file mode 100644 index 0000000..0bebe45 --- /dev/null +++ b/old/michel/client_info_peers.txt @@ -0,0 +1,39 @@ +p2p-next-01.grid.pub.ro 10222 p2p +p2p-next-01.grid.pub.ro 10322 p2p +p2p-next-01.grid.pub.ro 10422 p2p +p2p-next-01.grid.pub.ro 10522 p2p +p2p-next-02.grid.pub.ro 10122 p2p +p2p-next-02.grid.pub.ro 10222 p2p +p2p-next-02.grid.pub.ro 10322 p2p +p2p-next-02.grid.pub.ro 10422 p2p +p2p-next-02.grid.pub.ro 10522 p2p +p2p-next-03.grid.pub.ro 10122 p2p +p2p-next-03.grid.pub.ro 10222 p2p +p2p-next-03.grid.pub.ro 10322 p2p +p2p-next-03.grid.pub.ro 10422 p2p +p2p-next-03.grid.pub.ro 10522 p2p +p2p-next-04.grid.pub.ro 10122 p2p +p2p-next-04.grid.pub.ro 10222 p2p +p2p-next-04.grid.pub.ro 10322 p2p +p2p-next-04.grid.pub.ro 10422 p2p +p2p-next-04.grid.pub.ro 10522 p2p +p2p-next-06.grid.pub.ro 10122 p2p +p2p-next-06.grid.pub.ro 10222 p2p +p2p-next-06.grid.pub.ro 10322 p2p +p2p-next-06.grid.pub.ro 10422 p2p +p2p-next-06.grid.pub.ro 10522 p2p +p2p-next-07.grid.pub.ro 10122 p2p +p2p-next-07.grid.pub.ro 10222 p2p +p2p-next-07.grid.pub.ro 10322 p2p +p2p-next-07.grid.pub.ro 10422 p2p +p2p-next-07.grid.pub.ro 10522 p2p +p2p-next-08.grid.pub.ro 10122 p2p +p2p-next-08.grid.pub.ro 10222 p2p +p2p-next-08.grid.pub.ro 10322 p2p +p2p-next-08.grid.pub.ro 10422 p2p +p2p-next-08.grid.pub.ro 10522 p2p +p2p-next-09.grid.pub.ro 10122 p2p +p2p-next-09.grid.pub.ro 10222 p2p +p2p-next-09.grid.pub.ro 10322 p2p +p2p-next-09.grid.pub.ro 10422 p2p +p2p-next-09.grid.pub.ro 10522 p2p diff --git a/old/michel/client_info_seeder.txt b/old/michel/client_info_seeder.txt new file mode 100644 index 0000000..9a33588 --- /dev/null +++ b/old/michel/client_info_seeder.txt @@ -0,0 +1 @@ +p2p-next-01.grid.pub.ro 10122 p2p diff --git a/old/michel/file.torrent b/old/michel/file.torrent new file mode 100644 index 0000000000000000000000000000000000000000..22c654a26cfb37237e34cb5fd7b2c0111918593c GIT binary patch literal 344104 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

!q5Bk_|Gr;mV0WDozBNUz0%g1QXHVmP-ym_ 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%0DR$Go>pjB@ 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 z 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

s9a<=LGuPF{oikbc{jQESb5-_o^uaydYlYKm z(c5vKwN$Ca%I|UZdEvYsscau|WTK6ZlvY!sV0Mb>Oy=8Kpcrp&zJl5N)nVl9;#BL7#?dA3m*Q-JIqa#9bt5C$;TKfb! zcPM?FhfyUO6z^aO6G#x@X{3}UAE(G3koV@8XMiT)|N2%) z?(@hK*!=5T|45i2*@jiZkqc8F-_~ z672qok&hlQs{J%9`caN$x8$fMA<#&WYQfdhEO^PHUt>lV+;J5(8u;-4BrkkQA6rCg zDos3c2nVkGysXred1bNoUg9K{1RkykiuDh>+ZO|tplJBgMK!iem^*#o1}L4b5z|!d zE*@y`2KP@?nlOoj8Wrw1rm#CU(xoW{OtqYcW1tc-PRz6KDW?EAK*ql*Nd}ggD#?*l%kE5bJHCey{R*Q@N!d)V5su)-3a}g??Y|;Y0az2LQ*EQ=cmOeZT`liK zn469-vvr0}ajbTpA|iWdVKHXPD;-~WvbX1G>Q0R(%5;NtuV;NL^m!3MOg>Bqi}YSS z+?XK{9JpO=&`lcX91Kk$@*C?0EsD~>Y9m{U+y_@r_Mk`e4qpfS6skjGkLmLY`fyb1 zUrp@UK1p`_C>x-p+zVH3NSZ+K3(~0-om2lv$sqnwC!aBz3M-1?gaA2`Cti)@XA=Jg z?BN7&V=_|(Q8!>kcWFc|o@cy^ymo{y*%wyLmU=DC-bP3=$fLsOgnbu=u9=2wBWvbKfHd7K;Y{o&gsa(lG zjPNPKL}c?_E(%a@o0eZsl3Psu@6+7%H4K0eFEpc+X_`Xc@UuG?S(PR~V!IN%D_-=s zeStwB!!$pMp?p{XcD}P<8MUBZG8ElDS{4jXLJUkuVg}E-^()&#tZzHl&3XHQy2RDe z-RhnAqYzA$)_sM_m*Er5v`6EqrH3#WawooFN*)XCxA+E$T(W$*p!b|)-o7mRRbj&{ zhBo20v*=jiX~kbmR8(#|tUIMi4u5H|zYg~8sl;&R>S{7)ddaXQ>5@#`dp|PEX*WqO zyD_c~&=wko^4Dpt2_gME90=5zokkfJTyX~<3Qv)pXMVijc_vp3({8XmP`dzAx0Sb~ z0xao+&G5`vY%{)CgfT$!o6Tx;!iSU(LnK6AOYUBt&ZJRTy)@NP3DBxYkldByav#L!gL8`2sdor= z8#21lK9Yv_zukL%_Z=qv&)JM}9Z&NQo$MfhoE5FT-eYkh+bpji7KAtY#6;C)r{ry! zisg8p#)?H;{Rf{j95TF-Qx#b(;YYgU0!7vG8C?vAE39&^0Cyw85XQ}67x)t$DI3Ac z*`y(RmtXGa9D^zU#cTM>1(FWRpfjHls6gG8%S#+GWih$KpMi%l;?H9J4RtPN z8y8*s^Z19R3e8P3d;W3%Y*>$_h01S(q|O~iGku58S|P=&26q5n)r z;7Yl(pNAZn#Hu%r4@zze_p}w^;`xR!bXU ztLzsr%_dE5?jK#ov&r#p!@|^_`f^#kgW-35VkbJb;+?V#$MA7Ia_*6C;~Lv6zfE2v z4_MstDkl!HrfK?;sCfr|Ws>J0AB9+AH;-bSp{m5_QMhp7r6TnyP3l0J!GLnqY5mH< zP7rW(kb8JAnY_r9AoveMNnk1jZWvD!ps(k?c*Yv@Pz{w}B`nhZuUx2|4xL^vWSTPz z%UXFxv7)}bN3aDGy!H0vyNABJzCOXu5=ZFGpD^7@TgE3 zqe!*xK^)esDt&fwVJs4n?;!-0hj;+n54HXKcIC1TW=)b~WhsnxX zGRUTX6WGCh6++Yd_xN${`ZAL$f_hLMNl;#zw>f9`O@GO5)R~e4`fGR|UNI(fllkR` z3Q53f^z1F;JWU8ZFs3qv2@6AVl=3exc|A={`NcL^jB@AX54c)p50Wp0&$lTty{n*p z!r>P%6zmy0+q zG&V%*^XAXs2i^cWRm*W%8YA#QeEmF%rI-{!HD8Qy>od=}h*=gsM)t%AuAb^a z_E4{L_ddAyrKctg*cdDxE4S3IhloR@Kg}_JrlN2^`nznS$ySm@{E(BX0QQ-Gd@}{; zpkYTTsjlcI)ZbotuIh1AESWk^gOGe4FrcpPz7;yxR{Bk!Go&O91$XE=xeFtkq(gEw z4B(|8_||XD0x0g=8M-#A+Y;Ke2IDHH%rtV|7OBC#7xE6&|JEnG;Vo1W`M}|A)ZJkO z&5PA@_w7G;IzLAhT<((Ip;Jdx!?G0*()-n>`o(T{NKZX4T3+o>S2@6Ucw&Kly@px7 z3f{HaE>^S8N9gv2CvE4X$IG0F{cxmeR1utWYLkMN9uZb@k$q|2ez$4M^u0x2WN$PE zhasXIVgQ1>OFAYN#BlxvwwCU`f6!b~HM@(Y(iAU9LpV`5P_uzXj%J;fFH~G@63dHp zzl|5Op#7vrh0g{#|3};>6eBf-3cQuA4*0;VI*)h>!e92t1gD1L|E_f|np;}f(j|!K zxs3|dQt}-gn|dqIRfH+|`Pl3LP(~3E{gW_r2_}mv8QGf8JvS(;7;1&vJE|m!d8RtV zj}oA9x2DoGzE$G7G)31edLYB`Ao*h1JgIw!cv+SkWetDxeqH9@K0PLCy}kjB+tgVP zuA;A$?`ZyRXc@F~X#ws)l_+CUxI*Y`XZ(%1z+8XADVw@7mVe2!O2lqLbD3Tz~+6gNuR}G;CL<-Cb6oeff9aR8?QFssisOO6IyBkxycr> zzQ)qg`EIcv9q(wnNTp~c_2VjK#$=*|MhKk2iTJ$QE2`S$;6J@5pWJGieeB;qJfLgd zd4cXF7`)S1rl&51W)_*kCU?FEl0ne$c*_T&H7>t)W_<1c5t&Abpb80Y7lqrV{Him(G7q>EeK?+fZBsklSVlV>RC^|fotL8=_MV4P|l1}a$z|E*o; z9u&V|eIu4AEd!FtD-s$dWaLor5%)P4hjBX{TBr;Tf$)ppef^v09+L*+Sp*?UeDs4s z)%{hfW-Nu8qvn2}$@+2QeL878-!B@UxDqP&1R=5hyy>M1EOh8NbVg6n88*g>8@}B5 zAjTTr&ecw5MB-=JDT5Acx*-Z>QaAD&lq`$XAs(3$PoRIS@0(TmtQOre+~X&NdW+jv z{L(c`T@AHEoE9q37myORqV6i(R(DDxw%d<_Pop2QKm@lQVBY7wf5ZYmz#DuI$kRGU z*zarIDzm{f$cj#PQ8PoQ74EL1uu4VhX7aFA-NYur#m^^U+d7$6DkjIx!C@|3*I%{u zZ*&TwQm!e-HTT$RQ}|mmX(O}yR{O@)bY+T?Z5Y%od9x|cC)2{;D0>L*T_N{n8R?6sQRis3;&@b9kDI8Us z0c`}dN*26z0)W*!Y&%%mc66V2n)Es9yQODHKaN`4Q~;1N*ShwiFQ3UY7gLdDnJ?^3 z!^Cq;*vPPusT7~jyY=cOw%&pbE-l0O49B}F?mYV;^~{5sezYNk%);+%bcnm1yM_Fh zzHoh{n>{Id-4yS9D_!+dXqnM?!=nR)ZyB5yls62M^)CAQRutJAjvs>BwPXV7dMrA9 ze9se$iEbryOvUkL3Rc|MGk0;?v*OM5tj)9K2+kn-CyFm#6N=4P^h6*H>4|l*X4hjrNfhB?cVndTj{TsN67>z zTHS#sq$%!eY7yfp-NxDU1)4YsvM&_?g}}Ljb`2aC7;1H7-x4>Pj{_}fuD#?WA7I4s zx^~D-Pd~gz9Y`E2crstpswOna-DV@BcgGNBjt#qh37R=eq`IxcY;kx7AP6+rL!YAU7APJ^CRZq=*By&Og+)dB<+Ys=MN2ZYy5bN`<_ zl_-{3M0ebS4hLhDC9MP}!2h~1P05l0ZWtV|(b}18>K}1HDi?8y{>j>nqEFag)^J&- z8esPZ-MrnWA|f0scMk!vEAOLOp}z`Mw;MmSwJ=30h#q#L)?6{`!r@8W+w*L??}c60 z?Yp5Af=j!Tu@8c03+_Gwv#tIW`s#uFt|0Mmu6j2SbaVr=NmQ2DlWq!?7xk+dUSB@b zFjfOC%>hB?HYrj7Z7Z5P?IpE7)FZYym9x`cJPvYAPmNWOKlm6^c40+HQd}czz6PrFz40cU zeIw~(KV6PcdzNn*oVppP?4ffTB~bJLI%Mo)zP(eXIwLV#j`|pz%asor8Ai-G$Q#s? zv9#dk`zq>Fy{E#CVRAx7SUkEGl}SS23W(}A!7*llxld8ORT;f)o*lh3IVlp9G!LYG zgH!K8{9gu#Q=qjZ9McyXt*OG0d;HFXPFWfH$R2``;z6uiKa}j;YOWG8f+!$d;krRI zZ6!x5JirR{4!aU*H!k>zbwEbE5^%J2aj&4(`b|?6I30{^tYb-8?Byz*%aHrg3DYhp zr4R!+Z^RzkVa_3RoxXrisvRNeqB#oW@cpH@CPby}0mt^>4n$aOZQJXuCjNGnYmt1C zm3v!x9{~I9fh5h6X~G=WcN1XoO84#0Gx%^uL4q5!Ijoa7(lpixIQmE14v^*{l(PAI zzvUFaGqVoqYmHXY#^Pu3D!c(j4TpY7GOV!QIzY1&Goyn=78g1N^GM{>Ayh712k%J2 z^UJknxR4P}DAb<$7XOjc8ax&%7pHN^hNjZFkIyz{^Sqq@#}rg<7&hYa7xNvA6()ML zEIgnKRHZ67+kT&nGjAiZTNV;5)$y0&CkEtE6eVD#Ody=Df=;1U87aTxmX84{$FZcue}#$bunPw< zb`s*^9Hi4G3o47rCH6aoQb)N@lQ9Y(fI>JMc{~h}AzxXpIw(0CR3y?>OW}}U$&mQq zbb~n z*)O5#hhaJ(N3x>*rqkV;jtmue%@TRuVu!h8BL=lI zDjyvM*`Ci4^RZ$kQIVRRJg6kTWfV$H*`<`U5>1O+x=w)*#7qqLQb2<4=`jU^jW4rm zf4zfq(1c#Cv*k4#qbiWKdiKh*o_nc}n=O8V*8R%jRzMZ5Y#$+O2D!*dnjZXC=yI>I zps_!}OU`&Fqy$Ga+oT0ifnNrauy0GshjAKR0r}DaD${jdGDT^B_h+X&9!t%c?fUX3 z(TY1*}Qc_EtpZ@byVPFoSc6;zuwTu} zS&Z8D+h7(q+CNQDPuNv{b^*I<3v5qYIU#ca?#@}oc7X{?!lw&K@HNsc#u=HC1`PO# z5J(3=l9!J7z4pYPSL1!E#envizdsgv#-U@M$!Z$sN~6Gc@^Rdsu!ORJ``Lw)TXl6O zukebqu816`!Q?#hGP|7b0e>NyCAQ}X;*f-Zuc*VH&yk)Qp}>W9aiQ=}h6WNaX73Q2 z!Px#Zexo5bQc^v&zI!TZgLqXG3?vaU1K!U#nNybcw*EX6DdApOxZFMGRslr%wqYQE(aNu@9WtUaOhN32n(3-JK-D%)~V z2mipYqfC%7uSLyeHl9+)1sFk{5LfsmK!kL`4M&a1J?qD>l+zS*>(1 z%7Ckqb9@`u&@o&EJ=L^;SwmN1#5oAv?V>c|N|F73XlpI+l<72}PD`Yp;*LsY=RFYf z3XIljlvq&=(?N_i1rU14kdrTIr9@Bp^Y!689A3KWtmJYJA;oB#CR; z@jnl)!_3~TOkgCI7RPa&{yoMf4~_8j6tRWTQDY;@IMiDgG2*a)1$`n^$QVhQ!vi56 z(BIzg@tvS2&2C2=(!xB7{X&OSLN2jQ@kBgAM}5m4f}I7DP)!~y#!Tzz}Up;E8(TUelgDiE1ey8}uDq_VgU!Bfm+N5`xd zpd=B|{xX_1HSDH2hkuP~rtYpM&{`~G?-0k69T33->-G`@MqgY-%5M}wZp(o4Al6h& zhCPvBOewi_h^ADUL6E)sT;i|l>n7fjPe)Q~+CUo@iMUL(!<4AMawf(&5@-S?ty=}q z;;kpvDKkbqzf@##kaP;xD9ac3Bg#`^jW{%f%8aJlh6tJrgy`lu%^cagha8?k+gq)P z3>*C#`H6OmNHUZ<|*BZEKos!Min?cCh#jLwV=Tkf^!N@`JRzyz> zs_Q=!`kBAV%n<;4P;~CnW>LEnhAa&9R|()ouNUAj@Lnvx88>`(|2~bdh5AVnPjyB& zoTKM9C7}~YsZ-+;IsZ)Jre>-L{P2#_I{@PRmsn|&@Vo<#E6PehD%NQH$RlL&KZ$W_ znatm$H{x2^$8@NllBjP%XbD~(uhw;Ed%Toxah7Kgb=I78#6j;9G)tl=qi{A|{5;&& zO>KQytX!OXL;Y_I&z#0u<`}?%^EwQ#h79K}+<)z%JFl0Qgml3K(nkFM#~p%^;f}Ti ziCo{ax3Xxm)ZCkOgveyg5VN+RGG7Y{sNawkiydu-d8ajbx#ap9w z`4qX%kIzROAV4~5Kr}(+sa7j1W4SBT8b9~C)gY)tG^Nw6Q;T+4Uh)gMwsZcyv2!cV z77NFDOi#L|1$zyWM%Q`9E)uzvo%-Y|xe|mElZKozDHrOEdk<~*_0Gl)(DY(wZ=1wS z<{X-weFq`xmZtN{ndd12HrcDB)l&~3EE{i6K$4Ne1tAS9{4Vs}C+kDRm@FB3@=ZaZ zaYVe{p%o<_b6i0AW^61zdO{hAf$iHo;zW zeQwH-*6w>dg@>0g8)s+J5Wj+xb?n#U7`SX2=Z<*ECC(X_@v#&KpR%qQ^p!EY&HM!XUen z{Iz0=FD09y&4Qqiebfu7Avib?)i2qaEg!Fqu-ULFL#Kw?S8@b@oEHEkA%B-16VgBU=061HQq+Y--oTj`k?+q;dD%M19kvn}P6sq9Jv)O%~@4 zAuEPxj&cp218$M24Kq3Hssr8mqY~-5g!;& zH1vLI^Q`Eg^XgyMNwOv9URKWNnnBBIj>7T6|Jl#zJkddQv3HKBMc|PMnAw9s+@3)a zU6J295a`RuLg#o5=*97}I_J^ssskk={idVUd9nci+=eL53BIp5fw@D{Gb95B5uGjp zP36Bhj4^s;Ci!E$jOr;w@;^FM?`qo z_;4Xg7${Vqd|hcg3S>O+3Nyd0GZ&2h0rJB1MaSy!!xJ23UPD|H1`h zHUO_z{-PLG(KXUEe)feaMBie;eo&FmsleqWSlx+RE* zKmY?cf8I|ubc@Pjo(^<4;g1KC#UzaBNmO>$ZLm~9uP_HVbw%h zq)O_aNbPCTm!Q>$!+{=|mhL}@*fhw|W63f%6l=%_a$w|OnLJcf;&vIYp3ulfhfW`*^#c6*O&ro7Lhb8kW3 zcZUjrJdlo9%QVSuX+P^WoOS(Viyjm-OAiu7AgaY4C^NA;W&w#s;B=ky*zhEL&4uGo zqoC++_dHM4AmuR}LP3Cp4caoF3+@>z;O1i7OHEPEk1{bn)#dc3UYusr4*f0nr`obb zN!)rob=4t~t8bd9L7__MW;2(zS}c33Ly<|-)JB5cdMfokMzQ?G26S`+sWo(S&HwY+ zrTNsw>OtEiMcJw+&0KG8e)u$FnuvyMD=i!6A- zY-%??@yz(0bm$B?DtTGo`X`1X7R(tr3pGOfguqlas3Iq3MZ=hXtxf7B$C~~SfP=WW zz?hrkcs0mHj};c2Md7n+eXV}5aIzbTiwF1xC&C~U@+M!O2T1>f5+}!?j}wpao?;f& zHXKDJ_UA%vaS?r{^QvX?M03J*q;x$32$}ZCJug4TI|}ovW2NwiypZRiQw^w~3flns zxtnq^5ai%qZd}Nq+NeWel)^75Y)#NRlV|Ck*IG>t7pC1L=bv-k?8+0?3&Au8aYPw0 zv+>)dyewE}Tx>2#_v8YmLIE~R>MBj3d49OMk7Qhd4-W(oK|AHPNX~NW$G2k6&l3Nq z6WUE;*-%mU>(&2qMXcyIit$pGbl^A@6kH0xLIvRrJbq=Yzzt>YW_p?kvI^|@iVRVo z4DkQi0K-e24tuoo}V|Sg76GBN8&*H*H92<*s({>?2Udm|qBRT|K06 zUAhyv0c;h3R`qM{Y*cN6MXVj*wC>C?uox*wY(Jq&=ar8*pj?WCZ%hOf!GU0-q=na{ z2avC)o&_5C;G&d&7m_;Hs^6AjK*j9cipn{-#_HVBz?Rf@+SO&dJH?$UZcL?Qzj9XH$)IN$#|=vXZk`LCQiyhmiMA_ zEgJ}<1)pE`CXi{@i~ji8GM&A_z(_r&^Q`X0p1t)~p}N>)v`4kU;9E^wMzLG9Br%#W zChtyq8;g5o&i&kVuS58s*=}ZdN35YMhWosCjD76JYFJMa^a3AdzG9XZ0=g}cA9|EEKeSR{X?96>`m598PN;7Pt8#xo?jHzxwxJK@q z2WV9mx}|8Uiz1f4RPD8#B6;m3ZQfCM4MPy4A7<)f+a>ly;i=c<{0$V$}5%1JmDmrVTq z;_+awv>Xu-?MCyuR%Y_+i8xx2 z_yv+^Y*sL(5FR7bBK|iBmr~Zto};D<&2yx}Qt;53o0f2q$}Bz6cxGMf~4o=PhYc zFI{5*X%l0?-Sj+(j<`A7FWCKKoe(pxUI|#}SHvIYo-fT7p*KH>7{oTjOScQ1dfIQ1dVp*&ck1J2K;Il%ZnxFUmWJP zsaGy%Rx0$x|K91eZf#38la5nm2OsN+*1F>7nmJ^`XX)JMq6dvUQk9>GfitW^WNgBRo&zA@4uKQ^ zWvV?6xuVjo&f-%62qJKAG4vV>S2~PaJ7Ny{@Ddakz)dn>ooaW%g2LB0)A*wl{nhNA zE8GYj)O+h}=5nwexgdr2^8r_%>!m-@W+Ulbnt18WuhcshJc}Cc(=4z3u5ej00w@@pZeTW>9SO6F8`J_zD1V>78eL^v{ zde(0_nW{7$hIu>dpg6Ef?z%zOZ)>A0q{1>)Q27PS_qa^)3b5|_^%nl(NKEg>pcNw)&&X(q&CI(R8%<@Tqu+mP1B2iTvg^jf&*JP{ z94=M+o|GWWeK}&E4_1|`C~yvqdq2pz0rzms_^@4O4DZjT(Ndaw=p849I#e8dYZ`{( zid^Xr+P6a7#F^PHCNiop_?C;5bHU^WIh=nDI_g18NhWsLS#ZBY51FHDH`byV6&*LV zDuvL4%cHFZ@huTAV9xykTaPO(0%~5gHBO0#$sX!)aocE!&jpu)1fmS&EjZmzipgI& zWNPmVNu9(@W%n6rbd8$xz7{d5JTi)RGO)Utaydxw2gO zbHFdTpytrql#asB!*7;4XSt4#r|$1h+O&T@+wf|z>s$iYdSl9-rD{kz0`4u{5!#!g zSp}s%t5m!&8liOYm7wE2RKF#lp?Cj(0(#6|ol>vPVt%Dz!mSA~CN|vk!rz=+wDgLP zqy|ij&Dy+WH6*Qs>my!3?9!2A8EqnbMZ(oJYQ(&l60qo4+U)F3A^REmJYrXLzbU-E zEE(hUd4s6|ig;iX{K2J)C|y}rP$k56O%AWD4x%+YkuD9%EH+_w4=-dpjW&9hoHR?u znyZ|A8s7yVmG9_WNX^>_HWYx*G+ymLYW~iNTr^L@CATN_2Rr2r(^55=nh*84Iz^r+ zFF%N4tVPdaPE&S8Wu!$u^oIe%nv>VB496O>nE~;#Cn9ehx+C_Pp2XJOt zf9#l-U_QW^L@pNNDILe3F(fsEkdO3*`|Sx;3rauQe#8d_K>jua>I$gG&7SqBw$WWl ztEh0i<7^zWDvZJ15cB@Y>&!BG9ZS^YN)bHFw|otxGeXrmHT|jayFXG+LkD0-_O<`z{Fkb^`ndqxezO(OSg2=Ul@Kh!EB$V$E?pY9=Jz z+ZROE29gC?iA`hp=+URMl+gpkKKj78)l(rW@tPp&K5KMA5>N_CCol8F+u|&m`PfJC z0xhVT?M>5aR0RITPY<71QggsOsDu3A5> z(&#TM?hrppP>lrG0fB+rDNjhL-Xplml45QgEeyg2`h2#hog+$ox8YS#FICa zV^|#KK0kbD7H70wesEfM5qVOJ@=tAu#<;Ada>CP^T9JP-*IW@ir>nGaw zzg!X7K=P!GJy?iRdD7Pi z28q*b*hq@v^LQQTBc+MAe_~Tew`YV_BkC3W8#5ZHgu1W)Q;w*zm$oJS^EClo!_M2wDt$*sE_b zlNQnaMLiU6i$y2LbIiL~g@V83^P2Jd7Vaifds31^w*U~PuBUj?oJ42G)DdDN{oV%1 zTm)E=a&flBB9V)V`fv7atH_>4f|caU*0UjX6DxvsZM)Fq1|6`A zRu{6KZLBv*62R&aVZa=qJDefHloy_W5`6M8?Q zQ(TSwOMaaF2LAUwVCmBTP*dBIwjp$}vxYw3Ky?L{Bf<^_E?3SIx@7tn@RJrQeSD<= zoZ1OmkXW(T`6kV>o~#Lei7CJ|<~jdAu4nFlv}00Qi7eHYyTs%5#!Hi^tRm^V1S0I7 zCQ&j)tyjP6{??C6GhkfCv+r>aLBYqsvW7*Hbt&w%RWH-Ir$=TYrUfg0$g*%<$$G*x zq{oGdtl=!e<;EvbVU3%mnn~>-<*SSlgxT@B-2+}79MqwW>3m}^@VGcui0Klf{}=Ul zU6LiY(t8$@qA(m9GDPTHA6@k7)%X;|t)C6uL<$?Uwnu%!_Z&AEXS*uDUQfJ%czy#m zHACCB;PO2VL*5A&=SBU(1}&8WKB*&a&DBm21)W>vO6XV$2tn>%Zm>M&pZKAbsstO& zI}}WVORl0Q*BYzTre+B0gvzJu#TSg`qhyFeYf{k(;QKkCF-_O8IvnHw&*vW}`vUJh z8NRhtgnSZM$!cDEuBM(A=&@Qxs`()tNJ3Nt2Wf1WMSReMZ1Ec>)FE5U!eottaW^$t=H~+23c0W z4Q_`;W~uDcRD=i35?%UO&2LN5m1aTe|CCZJ5mkZ8t~l94df+4Jc>rGzii7!vjo`~= zP9;12bx$cRTn(T8)4D?ow1$-h@l zfSnyO4x{TVK9b|dm7?M%|ml0C1n>qUjbs^tN*Ux z0ZU@vIUBjK6Oc*J@F!eI@cMpJoC{~Mb)&j_Rc52>Ss8pc5EPV=A}82 zT$V|kF$N^!@TYPx6x}&#-mSmhvt5==;g8CiJXVELe0{V0DVFx!uZ} znf%9$lGE!@@x9EtBjRp1tPgYMbY@`Q$s3==MWa&37Z&Nb?V$9e%pU=!5+hV$ny&XY zEpjsVdS7zAgzWDElQc9H-Vb3dMvWg@-hOy34x09uGk%GW0RGs7X|tF;;!g1X3kqcj zv*m&~!h`H{8D;;`rU^uLuL?-s6O*QajE42>C`cg7-Mis$#Y}}{gVn!XK6$OZ>C-eU z*!S8H1-NHh>LM$mMOft!g4dFz1<~q5e{_WGaw1|MFAt(3MxJAd*3ZsKT&l|{6L){P z(G^;_el^34H>8^8NL}jAjV3twO4zyu>W%PLPw8;Y;jm#6lTXOg2IMOUP#K5w^0x#piFg(AsXm7Ig+IC+m5g)Iz>4 zn^~XKm{q(|FJQohW9&hBXM_Q@o>SuQzUarG+JeO09^4j@3H?+p*HP`$$#dejf-pB{ z_HMy9W_wGSL3wB*;a9~wB?DWshj>Lh_x!uy%)sg_P)g;$f@RU~?37~)pet(Qy^Wwx zG9D3Y8c=}c=(4_)Xj2pOg-BiF1DVIA&*&Y(Vs|n`gkRNgcDMB?cdp^kgeA)PsAz?WK>b<_8wRG= z-6+z>YtaemSnZYlrZsuGC2>GL`H~AY%W0f-?xy1Oy(tgeLZZp(^xAl|#WYqvc#}hy zQg49R=VsyN6y0!vU3Mm1l&eC>O(=X#qjR-qF6DJ~bi9p9g7;!F z(}wNbSr;aeVuavsi-FfH7_Au1!tlzI)?*(n*Ya%LMi6N@Taaic2?(@B#+?EA6?WXT zl8N~)wo*JCrFeIc)8UX^LDH>DP(jiAGwIwF+>5RENEVcpi}P20bBJi>Zkq@oNHD-F zZI!@rsW4j>oblqViXx!2YM*%6xE+MRwJ3a*c61SafQpbz38QHqX?~AfTg-#h zUKzBM{=tSH`2l^=iL0z_()4ziMUj(NwqJ<7enC`}P*9r8sjq#8>+uX-)qAix9Uz#W@pk`bpbZ;bAU-aH5wJEc9wYkDIdb^j>u z*{QtW3YAx{JsMXsFP&`t#`TcgCNATqh!(BHn?_#Xx8s-|2q^T^Tz^cu?)6UQ19C2C zgPH>uRGK|QhgxX7+)0*!yuMTgSuaN;FXVLJbm6-U$50qb$*|S@l2+#1`H$GTN}7FC zkLob~=y>eI1QHg6u#+VdG2EF~0si@x=pfXxWPvCE7XU|*zSpWGfy=}WpcjXnCNpc}`hsi6ZaWVDkY ziCJl^wRB#LWfwsWhhfy$>PzUzl#0N61V=Ko&qo6Js=uhA?nV%-!1ypg*O&54nnXNn z>sV73pE2?OYcH}9Fu&$`Y%_WEi;19|kGLc7-IM|$%6F~q+Q|G5*91OHdtmSO$05Bs zo^YLRX?~mdDd!LK_x)9pJi0v)x8DdQIBT(JWJl2gfb#G=;%RoPXZ4|Ub+&V4TZ(hf zwJ)}BxiH@Vt}_?Z>R|Hqxlt&cf*&44H2)}0unZ9JuoyoG%bnALTu8iI@ws@6V*@hR zX_Gv?NKMwvi^zW1e_z{0EdVMoCBXwHIlO@6cyR9-dKe((vbjkt zID6ebQ($W{%$^rhH4DG!jOwoT*%K55p4>9Dj0Aku^s>uCqh*rmaK+Jn3F$=p9YzoF zKk^1&I9xZ62uqDcQmZ`R?1l>dUcqrlDv`O-C=4DyO5(nN!sy`hK1f7Q795&3$qZnJ zJe)dOU4M>}Dn07Q;OW?Exv0aBl9+ne1;5bGXXD)I5y?y?2UpcViJg~)v5uskHo!m~c+ON6 zArcgQV#>c@MGw@k^h}

mzp;^0-;_(}YWklln3pb9*r&y^#cK?^rO}&4!^_w`mqg zyqI56-Qa^u&_Mz3#NG9d%Tl-k4?*i{19Jx~2bwlM5Kx6qosn`cN?0SMGyN5buo3PF zmv#t|{YI(GtugdN1&U(bU2^?SpHV2PlUFe>pT) z;5lrrcWsJIfIra{6K?&;8*=GU?q^Z)XsPy|_}`a?v%qcp$~U|<#jsvADYERZe3a{Y z4`c#$e{6w3EVCG5u7eW@U1MLxPUEq<`H?nYrq#@K-Hh3mdyAml<T7}|E>@u;>a6f3i%ehU0N_S5ar_liRmoxF5H!fln^5aJ*}R$zH~gO0$Pl>)@F z04PjjjPj;iVUJnW|29>Exz@4z`IvV3mV`_61ZdAAhShi^q)w zX(EA(33tblQp5`}{C4p=dbcCvl zQFZkeaX+^!9H_tNK_)U>%%>I@9R0DMv^9`2+x8LypWcfVPB z07XE$zq?0K>EXHfEzxUJ6iR~+v&= z{9ZtmUX|IR-7WvPwDfV>VzLnvavbK;mG!@tbz&s$V|rcy_cfUEC`-!a+!5mCT!-I7 zRCKhUh=0i(3y;E+~~J5GzV|ac@LF9@pYlk z8v%M8!6SiWiZvxd={_D8moT)%!h9{q2hzEK;+R({RSi9i?F}%$#lfs=o=8_ln1BUB zKVe7) zjWW!(tuE6ilRMHi{iH_I&gDll&luM`Be9hW{&<~jTX{PGM;GObnW}LKnCy?l9wLQ; zQ(I83qmLA#BNx70HQJAk;NIhogEB#&Y+o-{ZDM6}A|oNG)CyF{@_o-Qh5U2z+RBnvaAc!~wQEMV+`>{PL|Tha*=4bw`b(4?lYrwu26mnIg(1 zgAEYvv5QgWxr3Y{L|Muss|^q#if%;=Xkx%*xthj`nbGHyIa?aBL+m$`%idm{IdX>g zt@diJu7iw+KK?wxHb;Sgh7jH9z!ZXR+AASYKKpHXeE~#lH584fw$yoRf}b}R1P0)x z#by|NOeV`xt&Fctrl|J@qC*73KhiCz8(~xS3YIZO3N_jhjo<3kv7asQQESA5_y1Wg zL!>xbod@q83j6Z8WUEicS%YM|rEL$ahx#TaojbnZZ=r={<+OO1dl(zlwxo60JN%Qi zmtJkXW_lQ#CSgn51-7k84@f;*h2|akI6Gd%>~mE>I5fR zXM$xKJ(O~_g?Y5t?AG0OW-(7uj$NH{QIwB(5v-U?EGw|#Jr`&tYB0X?Dw~yKFjQTS z)J1WwPT0bGQHZ&S$^7|mbSgK-YQn|ClHW?-T6ea)I@(PZh_i}{l==qOjSzTHGcKiI zItVc-n`(tHBCgbuhyWZckU9DjeTMYu<)gO-SJMcInR1Ob9^&Gll?%tI2&FnurA@PKhQ<#$AQHi&FL@|7R5wc ze?YM|z6lW|6@hw5L1D8dN2+i*M6Y*udq0h{uf2YUb6u{DGj&miJ&W3?VqBvvAb^V4 z03vzYn!i0sp#iazm?L&ckY8KTR^Te)FP?3G;Ow{)+|0?2-CtJnS)==WZ2x^KA|Oje z!GZ7J1qJ1?UET!*Yt!fuXJm$qjfOQ?FJ7DC*J!2s2?x6``Th)n+I?iR10{XT>wCx@ zSaF;F#4ytaL^!{U3#q;c!+b|gCdC1=z*G}b+_Gf~@2mKAil?V>Qx%jMwhdYJI=LN- z7J9I<(-IOn6Ph{LQQnLN7h~`lKtG3fUmts;gyoGkO@NA1nKylV6 z{9d0^fEJ{s3R6;L)30@3Q&kVI#?6!^`F(;p+Z2D3w921PBb!Hiu#MXcsTxH6XQE46 zK{;%BTyv2+`((elJqUsWPhsv34#^S^6$$0=!E%))5fGi}?SPn*Lpj!gy|1w(nxove zt!k#FGimsqP2X(yG64AZ&H=Hvez%hBNC)7WDZ*KU9r2bqln*;xbbi=P)_PjmED0^_ zS;a6%!rn1rh!2{UnXa?6Wc$*yzD+g1z@OB=NYo~z13^y4Ep}BBUh3@V?q%}4lml?< z*m1+gJQ*_Gv~I7T)xUT2DJh+LUvBLwjO9eKd<^bgRuKB@|492+@eL*6*X%;4{-pF& zCh6S+CP%a}ZZjyV43_S)D#ON`3jV60zN(MKNZNL`_>9-MK3 zljlzM8riY}oj;@?P#nkrEA{YQ%w`=O5DKnn4clj#IC5mb3fAPq#=a`D9HV(Kk@x>P z*)xapJz^>`RAY(V$JB|H#=K}+aK)&p@P#0ITIN)IIDAmg(lYhB& z?4R?Rc+Lmri!ey^&~Y^WPi+g*uE#kPpCN6exjT=3m{upYoShvZF+`XGm=Z5)&pm5z z(B+su#Ki8JT^ z@|)0}Eiz0c5GZ2q#)AjoAWMl!&~AJ&W6@K#+InM*Db&l6T4u>VmBq>lOP@ebYbI?o zFY9FGxNzdl-5XDMmK%SPpW*jHys2M2uYw|Y7HFq!!MBw%ADUpa6X4a z!ms;#&`p+t$w9q?Vu_0{z3){}l$ALR`B$vCgC7)_%wr{fi@`s4Z6EB9IV+QE- zmuik&a<$Kuews@-8rh9@pTTHCRXMq6q~o+N2V?wWBNM7n7l#R&G)Us4sjXS&nyFJ9 zSclb7n7r;aZy?q>?J$?~xLF{c!&*kAE?TwSFmb(mSJQnNB7yXD$c2 z^1cc-tAt$FFR2q^lmf7bt1v_o|nTtakCuV!e4F~J^RCG^1fa^8&+I!S}-c~jnt#rRbZjzLG z;ev2YD*G%c;dT2XuYoxEgvuJwIet+1OwBdhPyah7OmQJyhPZvN(gA8aOPEk;N|$BB zvLL}Kc1=cupGIkc`Rc8e2F-YFm1Jp$K@_QFQZd|Wgkhij_Dgi>MbBlbStBA(L&g}A z^av-uzF`0n`*&{ZA!qAG$XrfZKHCOiJ#|gU0M}r@h4VSLOT0$9{Wb9DE#k+H=nylOieE>Oo-TUmHRA7bgge8pwm|a&aTl zcp)jA;oVU+pe2_i7!Q!$Ffkd22`if$#AsVmz4=j_V`igv8Ta3Ishd(H(t8qrs_;e_ zp~mRe<6{O>bsnIVq}6**_su@vk-lPvI?(JdMI(2u(>5$a#DlFGTE1@@=Zv+^9(@VT zcjjz?om5DPqwuZAEn;cTe#K)Hew2d+rENs#NBI|fQ!l=rNk?Zqb-vvuL=-wY{I-VNrO}4ta~Z*9(0fPc07mTNnNX1yo~Er1AEn3h@&C z>|ho3xK8PhblkM}?&HeC*m=GCE|FEQQh<$|T#-TLvk7W%4&I^=7$lIl)LK=ked9WYE1Sq1Z$@$<-(MGkva zn-K^`ra|MxokKp2Rp+h2_cNP6*3Zi}5L9SY3@_t@=JG!<4(&Q$Y?cB}QnbiRxbZR! zeVd!mq?;8uDV2X&fe0tdUi^ zl8Q^_wiZGN%#`PmW65;9sfy<~I)G6Hl?VWP(5_$wZiF=t<9$v$Al&H~i$@Jl!L}Y1 zTs?-Os&Yt{=6!xKWyU2dhgE##-9mRO7W&@Y^4qUWgj2A~HG}RRio5R_&vP1?)Pu@3 zuW+Y6bla=hU?7FRl&ykhVvpBnL zCY3(ah+XQ5`eg=mjJm{n{!giuvaq#V#nrMuQ~Dn{Yxnwx6*OyHBh)-hC8%j zsQPZV@ZUi=s9$NLsW$*7hYt}xov7O`T&F7XlR$0`O}3AUBQ`aHK??KrPnE%<&RN%z zDFidbW+QDVK>esKS0=C0f<{lGF1#YR@^};>zuw>sY=xo~gbKfQNJf|giyLE3^A$Pt z)1>v@m}LFZ1tLEy(;L!Q^&Fjr{ST_K^xJZfyXS+3n6rN18d0fVhO`4~Jb-ZCy;8#j zlQOy6F%j!8SwLbCF+&=OfwK_|=$cs3qN5SOzQKs{Ye`s!V3*7Q*u$el$z$!Q2pB*+ zd-TWceyujx5+5q-fRKPbGZ3+ zR_@q=T2vi5Cf_L|;QA&B4zX*?LgwDc=zppwc`{n1N7l#%t7v*hDLQQfxFQn5Y{ef4 zYL)|*gIhA_(2|Jn9z4q=0+f{WEfxpKA*+YSW!16)2l#0*Geq@t*fweQcT|}HB#UAq zqV2uIzPr#>2=Lb_S)+uz>X=EDorm6wrF;GFdtgc7tFGjUMhKjdh*92+baEZHV9kDT zGP>d7^dExcylYW!$kuiYy{j|9D_kZwFgcPK*q(8jieLwq!Y$kV6UJ$C&R*ln5}6{c z3owjuh{$Y#l?6a2r?|#jp8R~6g=R_Xr{FyQe8HQyHcs`t*aTgC(JA*zJ;F0-_W~W1 zQ1oxf9MNVOlWygGQ8b^4rK0l`yS)O#Auv_o(=E?>8=ILk2{XpC1?D>S?KmnBi2aY@ z@=3|^q=%DmamWUajV$9#G695l34y>K=GkKgUMdVGiRj%ogQ0NaDTA}+7(YaVVwy05 zM!x0VG1^DqTQ=m;XfrD8B7~y7^+$=)@{~Qo`45JI$>=*+Bg3uYjcz2Hnihf_M-_qIQ4)^ z%q;XR>WRebWfXV1T7jSx6t~hou^xMHX+ak2$NrO!s9?3GHRDcDKLpbX_!LnxXddYW z5hnir8D_9PKnVm+?xUazoI00cOdUG1A%7z$-0l~crQr5`L8PIfi;Q+h8xyFGW`+qb z-GyasSxm{WFYcw!7%oZUrDE{CwAdnWW?ZXq=7R4WwBi39TfWdUT>455b1-~(`21vv zvHKK3y&|U$enjtG=sqt)5RZhi;EQPOyt2F+ITJ2Q(0te1!;H4N_=1g7!!!7-GsaL) zq-dlv4Re`28kB|^oD+SW=L(>=&d@>;{3sjy0dXC#E%e%jPi;AI9iSsOme$=V6@Y)R zdMNOlQim)msSkm-uch{6XSW$#D5!qC8bLsdSmz^;+IkqzLp`UA+-DxRt?t=2oW|~` z96tCn)WF|sHvX#xmncy{>I=Qy+TUXYZh^_uNcBVr0wH%LX*KDvd^ujlu-^KHF@Bu9 zQ2^u%)WK5L1bqsUKZP7FDRS;#Gvyjq;<wjtnr^j5O}d)tMvy$NhtJg5xTuT zTm!N{b?<1>y~pg)w{q+tzg&kA9RV>I>Bex4Q86{-dV0Igt{Gl|=pb0Q)?>|OM0&_t z^95_odPwD0*Stx?^Pe({6I(}(tX!XD<5kV%cwul+O^OZ!l)jJLW(Y&mx)JO=Rx8G$o1d|$ECCtjSj+{99))^?O07|H{Ry3>d>P83WEa4uoE zwP>~szG-R3zGvI5M!-p#0B6viAI1pf+h^Cym@6Tt6Fu$hnN-{yM*wM}W)Rox6n=g2 zGOJH!bj$p#pbH}RF$t6ph^%V(gWxjm9DfD1maYU0b7T0tfp#iIS@>!T0{k8dGL8j2 zi|ZQn5d8eBdie0jl7E$$C-6$k;C8J%=7~@w3LYjiS~@@toP_MLigIT@BwIotp0x>o zMI_oGTOFY%w)O0N;z}TxFp?~wVa1|G(cnLqVK(>R265udpFB$uobHbmgl#8Ox)#}1 znCJgvJ6W%&ewyF-USIP-xfU~BO@U7POuElE#=WUwJQyZO89SWQLl974ixP*6JR8C( z8@^4iiwN9LyaeJe@K)N<5nlSR@YoHId6)V)=vGkt6;PJ53uhyK@LG-$5!sYiw-ugI zUc5s-k#u;t6uC0@>s@`THc^;Z9{_OhBgx}bOHI%z zXxZQZE)O?^+I6AG8N>T2N;vwr$uM?6Jn`fqc3p$W-Y1hYTR)bE=L+;b5oLaBBbU>C2;*?7WJsNR(a0W_I6@cc871NkgUXgS8E&nqN_$bvWUd@tZPot|QQ{yJK>pM}=_{ou9td>9q>O{`th^(grnKhObm~I|NmQAvwo5!r=K7IM8p_8AYvHkn5v>I9 zRO4h^vPw77u*Hz!yXl=MP#g4Uzxj^D%%M-YS}}_lx&vd|zYwDNH6l(5!ampp@*;}I z2xB%r+_6P9rT~3}b|*}5*o~TMevQYk)N?w}&}CWChW-8f9bzeVzTTjORIEomWcsj< z$(B4*-@D3Wp6{N&F~{I}J&|M(YHfCS;idY;c_f4{u#V^^Y!8|>2|7cPgxjW7^_(p} zxAROYc)=5D{xdg>0Dt21`E#6PKl6f5)0!&BvjbKxcs4&J1xcTG`tV_4Bm(ZVO@fSz zY#7tuDhoM{Auax7;2V<2P?;h!+4`yNK69~jQb<;u-JI+DQHdG;{PdgvNE5Gjox`Rz zbte*Adg%R86!9a0NS3)_bjt7JN^VQOsA2MGJdvs;UO!l;&oBMk%l(IUTS6G_60YOY z9JXJNs{ImP!*(v4_3@-}0_@6NwI%LkmR5@c;v4!A>!GC^*5^uetsMQQ?Tq~{lL1F~ zdGzv*oP+3&y^7-5O1U z3^2T#GG4Byrp>5{-bFFYUt31v4XLty_{zQ6y+NT#1dnAC`Fn@#!@DP^J73R$!j1Do z(NTGOzo(K4qq8^vJEK#YF`Vc4dh4f4jVT+_Sz+>!@Y*$UR@Mf&o{`(Zoc6TxEO0fE zFR!aILWL{S=tr-8#S|sLWlT)NOc*ydZn`46qCe^DX@8hK=wF5HRp=$OCY26as9Dsc zD+qM+d!J_klGhBC!UkIqLKIo=57xu4{mU@VlhV>8H(BmLdeBNdU2flh-8;Fe1fusG zsS7+CxX)fZoeAwYQ*Z5X%wIDaA*FnTx}1W@X>jc-l_|=BxG^2}cH1a6jacg)rOa+XSV!^Rr_5m75}Uiee2KejdUMXj+yVahvm4mt`hKV15TP zWbjRhV(LR|S%xCKwkq9>GMwW7&uHW*UG{7$kS|Y4{qn2Jk8$T}oQqu>$)`-bPsam7 z7r&51Zk~cCl2*}d{H;5E?+nUHjn+mc$=+HXp%QeKLYwep7AsKIpcY6Q)Ol0 zJr#BFKG;{xPJgWPuzo9|L>2rNG=+uaUfUo*cr_{x03|{~GS%I_tei(CTi6}QYRh2* znSd0$UoJ2FCk=Pxu^~}dx%JArLEC4tsD?QP%Q;XP%ct~`39ZJ~RYgvTlL&r{4$yGe z2fs!xN+Vqm+B}~Xf=adw0{^H)v9}I<%|`}~`!q&Ftw`oO{x#b|X)R;rn*EWS{jsoa zq1TDsf30TEG(41CnCa;G-C*)Vc|%Stmrj+5$`q&5_20$?VxiDeV13kKgv*`a%^LU< z#EULOom(G|KTOtyOOO#NfM{ox=somnQQ9_g=jDkkB6LAaJ5&fWX01j_`OZ32IBXgX ziHNMN9D68I37Nc&Y$^M2OTld#sqt+n*%_OgVgcz~MXUQ4rh}NfGQ2mr+_~cYWl%1c z6M_9^{6pd#;~)WwYe%a#%*UtyT7zukGqNa!d_pRt0`uyPMVj#7<&>r9&1xhVHP8kH zzxPEw$C+elzHo(pmQO$qms#|XE^?T=(yqe>k(%%I%q8(#u|=dx4>7tU**E~QB#F9~ z4FlAxoP$B9ljcq*d!9R*DiAdl+LM+UGH9dZSVwr;TYD^GyT{&-Dqv~kG$P1E4Y8f}u7!4ib=W%`(ejAg4uevpC#4 z3BXSoXL)uMdkbnB?L(kjxZrRd7iV>}I5BX`OZ)bSU3xEc?dkQU_tA)r50uH}tX2u= zM^DBlv>&4L?D*r9Mir@2`B(R&Pwffn7z@t9S-|A)Va}fjiIzI;4TrH4PT4vp!x3f= zVkxVH05D4CD?zza)?&Ml4Iw?*4Rt|OmBF%z{dx43@j1zI$rJ@ufK3`Uq|X9Qrf5p| zJ3XibS7Vodo{Ag`Muv0ORh*X!E}Q@dzYadJ8U!1+_)K-^=c?zK?)JbqF)l`&t%JAm zm{Ff%@#|0QR&wXnR=)xwa zj;6QzOacg2^*{w&X_7OYV*$cOf%7dSzbh1*El9OXwi}&8ySSUw(O2z)auLlMV=_|> zXeA_-*rP`-%k-kjX+<);xuE*2%mBi#4Z)~_+8o}fZ5)yizo0oAJFqDYiN9SaWS`Rn z|H{a%e9M) zsMHBc?h!p8-N5+@<|||ng7D7FEpx0Mu`Yngu%=rxIhdjKpIQ<#fm$F8kg&B)d995I z{g2Dvxk2wFvH@_CQEFW;2x^6a0D2pjOwYk1?-RI$oySGXY*9TcZna1(M8MY?5_pt zRnzT_y7*ipoXIj+48xD5ewuF7FQ|vUs9x}a{jAHO!!H(C((6Z5?>ElSKlbT;*a)$F zre7TNwQg{(C>gvmElVk(NHq=ZtyAK4Y}ue4wa5@%4L%1Gk{+K1CmZSxY{t$2L7hUc zT-;F8Ta`D&wcC6QFDoEK5XiQx^2O~zd%;nDgRNM<_Ead1HMz4THm?(- z?1A7yUH$}PA#}pZ7t?!>KEd#pHSGuJ{S6kg2YZOYu-5Tw9GOg8V84<#w01bIKXF=* zwKC)M66%g)i*s}v17sAYJ3trkwx{=O7N)eyZd828&4ES&Az4j0?k1&T@-^V?KbBQK#|l$#(%oKiGFS0sz>~oGw+!2+1`!UIP+!zxJ3qrA3-)Mq)L!D$|_=8 zoDG8?8amZTwv~<+8705@k@L4{98NTH0TNDAeymnp28miep1nickHgC7zPICHQXn+wd14pXYEt?V}CTjBT$TW zdKIsFZaF9`!CBsYR1HZ)#I&tk)V%JBciY^s@?SX@oU%5v?)U&yk=(#kQ(83{3>^`` z^ZnyjrAC;;o-8M6)-P)u^5Dm^@zBHZ^V7bT%ese;H8+*QX?0su5qa(CbJ_bM4!@Kf zB2H=y21y`Y!pDZRp|K)IL6vvI(~tSD6mS5k;AtipH|qKdavO-tXN<=;ir>9~h>afJ zpqr~YSF+|-@Ii<>ZNL!~S^o1W<5`O}75_Rc2-nM|@YfAitht#kp*UG!clyyy;jRl}y|S^ol4CTs9K6UV~0A262u1QUN0eD*sYoz)w%8(%pA-)_=M zc2%~_the{eJ!zIv)75(Os&!m~jzB_8Mz?VQAB5Wj*27vkpPAoPO`Lmp^#;h$3aoP& zUi#_MJUARNCc4{O89(d?lXN&9N(wsfG0|>zfy?AKguyBua59|DYD$hVRe%Noz5*d= zHScnq)H-WLw`_}CRSlAedqY-0hqnI@nd?Mg{3`~Louk>8I14D-^&vjUr1TF1xs@jA z5>$Khg$J+2Q(TKr@F)Fzf@@8>Bal*$=Qgkm;rwex-!K)7NKIjoG_iG78lrdkOT zEkcK_n_+?_liQLLNC-+$0+Po}{Y^2#tFzS-i5QS-R4u=g1)AwjV3_zOywPWiMfGeS zxq1J!ax0c8gH6YS-fim^q@o5sy#_=##ly}qt`}(kVesN{b13fR%}ut`J(#8nhU{d0 zGmF9EX?E#>Q-hr6$U5dtQmeqsgiRkl!At~_#4my8VPz6mdHMd|-GCoWnP-bSY`UKI zK|iQN<37P89Kb34vy~U5bvL>|Tb5xN@p&pZ;3ZGsJs}V~e#sokjzqE#i%zOmv3Yx2 zz(MT99N&EvFk)R~_YC|&&FW1*yVo9&-c&Jv6h-+Bh|FAgLtb3%=B>XoMEJ*$jQj$= z^IN+qWz${~-D-lM;7;^VHxr{x;NBY|vbX*3|OL z2?`stNsyE?koTO7F6%@df!6xV8R<$N&ymx;=bd{*ztpCG8ZkS^fqozn#r&SCL7F7j za$7iOy0ISpOwAK8{@$0^lS%Wn_Y z^)6I){6)#|?*b2D+(}+LL2~(&w@B?nW;j~9(N0pI#9A#@DZCxtb-%!=p=9dyeI$_Z zz4FUeFpbb80>I5OXZSCJXjOI1!o7;T-euB$(o3VkNkv7-x43hq=)c-a$;Lgh;Fs2=N#2QkalAr0=ch8sinCd_UdJ^r|mU(&V*H?qB0W zP+5XW$r3GqI6FHqw0TVsh2nmt0i&P1i6`37<5A#Kd#|ug`_2p*1|nko8nOg_vB7iU zae)cAw`@|y_+jjpdW1#jNIvstP9I{^cHGM=ZMsAg>iu`i$v{7%(T$idlfG-`|4SO$ zA1+K)w>3qXU85P-cYyYLv}%Ean%_BpF6M$6(WkzH?uIH?VU@6}3c|m|G99~_&-bfp z+{1dwG{FaP?XCLAleUQ<@q-R=H%I_```cGLTPO}E4E=lX*DI*iR}HK7_&VcF-dB#` z77F*`@^=Ls#WSE2;~6!j3LFHTooTM14-1tFH2fnBuP9vk6(KGImxh6Ii5h^~=?qBU zt6y~}6#b$Turo_Phzum`Ym{KgP-`bjb_$GH?>DYnn=!Z8*VtYn*XG4-7?6>&T@e2S z$(opKKbTw5*_@2{eYQxw&#pLCL;{DiaYKRX*TWGgKX*T?mf7gu4I0q{g?dQ}F+$vy z7)uy^wXsMxI%k#)_=67ig3N_+&uQ;W$v4p!#wyZ^<^A#U%b@r@6zur73*HB$0w&@r ztrB5)N>*VGge+K#p9&ZH>~RIZS}gVQW=VqwA~Owx{`Ia#To^!q_-M$Nw6?u;;7B0R zk35RolvZ5+@go3ctGhGDoi;=N2US(Ip+9i@u|B<}0mz7^`RIFrX0GxwvPF6%+LPna zajL%@=OEf|#x;!qutaJ!>|qsy$KB!pf<~}Bqt(vsMmhU61-zF(=elu)yi4@y;=v+W z-g$h+R=^YHB`^o@WCiM>0o&n_sjHAmZ+E($9R$njPEnXbN5%fpQO(iYA(Ow?=|PBH zZe0wKwmf}q5)Bw+!{{x;ALsp+Wq$n_V*Cgm9N)ijpS*+Qo7kSXg3Nuveo-cGtl6=H zApPt_)BJfe2;sdlvGwoulE6HU7To)$#QwglqcA_`F^g}k<;(0S3ma)I zA~^#o3?``koh?QebSCaUcd>pNnc~|EzAfrEXODafAue z0-5jY0|t<jozSC@{d*3MQ=zof+wbo$mh7&|f5TW4uIzf#bKhxO)) zt7_fqg<};MMmJjgn5(AEDMIUe**U?-Hz)ikLUthaZ$x|~9zyDetHDTZ(#*Wcp~YhA zVk})j*2jC(L655O;z%&qbO995qrkPVs=KXV1XewC{H}dR%S)r{hZdJIB7KNOk_9@Q zF3cWT52`5BF77CQGL=T5I|pUYk5Di*v~KLo=0vV{(+6eI`gs58xU2vUz$+zO0ktSc zwb&J++|(}OUYHd7+i>D}HX}9Nqt2)W1d-Y8)kgI2+;$1*v1UsSmXaD6Y>(sUWs>aW zTY7qI#8zJCZILFmX#<-QRjvG>G6hhGW1d7o=Aqa$Usr5F!K1FP)!``vGpv@FfSbs5 zW`g*1f^ZG!W)~EMA+#LiF%8|0PkUzI*rJ1f&Rw2joBuDJ%7^{SL@cC^YZXf}dU+V# zHf6Es2Tg;6lhf%#XaWkWlFGGk^&bYbKTrO7ZBy~-U0o_+D9qu*Q}MHFjVOX8w_8y>)Aui9tRGA8zOy;D2Qs>MYL4=6U{1zOC9(pU ze9N7vaZU$cm76&0D16`P51bJc`kO5|Ar*#T5gR>u_s%4GMDPx`0ZK!rGQ1;3*I~UZ-p1^$U_s`{yvW;qX5tj>|j!GQX=NGahRX)LmNOyj>SGKa_5}; zNBuixd5__nZ%F6gF_to<7EoeX#@;dL?%B`DW#yD@qvmq3!!pg<>(m11>UMuM#a;P& zaftq1*6vfmDDajBHIyv>cuLDV83Uzz49JhTh?EYQfI_dvgt;`8@UkftgV`WG=56!I zq7QgnzLc12$O35BU~D!ON{LCGYYzBdk!708;7NN815MT!ou+Af8fI?(*eh}jDRcs}comwXM1cS9{ zMRjnmsya-BC|fPs*W$3IdJ&bZiY;6#H*(-dH5tDDq~9cpXK^x2k9EMgq90uF$ZU2oW>RL_vMuwHyHN=DGhVe|85>OLBgGTC7UG|(jd>TIAGFr=wlCEIKig9<#+TM05EVnhEU}G&;D2HL0NB6~PXN#Kx_eDo`}>jJ?|{114b%iuM#8DSR~DFn-Y6!l!a4QG8kzmN%fGuCf@`jBVt&G*l;yJT8KQ1QGG42F>&Vcw$g1; z#gKR}Y^u1DzNDi;!s|pt5~Y)7eqAEgcTi16_uLz(ZhgT@FR5vl{b0vMKGeV_^@p74 z^3w?_NcIFZ=*9H_b=pav!n00jJCdhevFx!-E+0Sw5@|nOM||~cA0su{K9cdZ`Y+{} z4D9Ic?_$Oz*d=@JjdKjedc|Mq)p)DWW24GwvOVtzzEJuRDej}$LtYb&$Zo5DOIn$f zN#))r0wnib9fmJF-)((HKcr&!-neO`VT~|gu!XB))ds&h9_}Zp5iVHZ2u>`jEc9va zxN|oIsRuDW;GT^uEImpl!Fzh_Wp`MYTvTr0X>%;q&zZq<2U6wQ$i(F3(bj=dl=8g24LA9zzdokQA=+=67*QGq*$wT*6_{=WAP%DNjY&Za%Ynfcimjf2Oh0WA;ft5F5CS(~jU=eZmVpR~tr_8-3lYVo| zM9D3C6K!Ia5TzZZcFtDY_2ho>!hMsu!|tIe7+0#tz|^vKCVP_7mNeHsb7ABxn?)%r zpKtf=e#}Vo?Hi*Q9=qar8RIj(bwBC#5QA{7M$rp()Ee{Z2+F@$A?yGQ4j2`YdJUic zGp1Qhj90GV8z+Xo$IxIUnb-e&rpL$UE)#m@zZ)xyWWF)YI-rwu3wIDubP4QXB3db! zoQREnvlXnC2&r?rCY8|e>6{-7;oyO5^IP!2KEkXadI6|AcE?AjyP&}<-Wh;|&f!FI z^sI_?$*Bby0=QCyIux)p+YDUR^<+5=-cVUXAE=j^(mGN$d#iFQ3ve4<&h+Y27@l6;LLJ(G zKw$ecPylQr#a1Xtdv`i{5R8SCVY`y3uYQMJ+9;YG)Y{}^TB$g#ysv#TkDw_3!;=sDr67xKW83@K4T+UTL0fV*mzuwbNnmo&C zIA)&2UZ=GWLoWg`>Uu<_dhVt}etWpl1S%UIUWepz#G;jb!+43F~}WyM)L+nMx{;pn*U!{}S&EicvK{6J$c zNyeF?fFTw2yrWA46r$4{;*q4+X;P<`l4k?UHrJeN8;?vbmH8u>tPV^8-nucn3~|mT zQGn7o?IU$cLLEVC4rCO?IU=zy95Q-SM{s^8K?J@RhUvDETMN0>j5r;dc6#>JI5FUG zC82WOWHBviD-J~EVBS<1o-+p^WAx-kz;!@dXIhEy!|OkK9ybraq+rl;!H)`E#3PE> z2Bl&LCRmaS_$}yEa)KjL&pUi^oRa&NP?P zJ46uQ4Ca{i@Yy^pk~jJ(WMk4Ggb(P~oq!nKP-JCei@*<*7fd-2>yPRsH?IF2<-OUi z8BkVGI$Y*U9zcktKEEj_jHYl%bY|`P*5B{N>k=Veb28>jtkZ7`5P(&wP!1ytSB5O^ z!K6O=y(+S>+J15^=?5R~ALWH(M~$M~&82|*LA`D^?aZPpN6gNiBEbo|oue@XQ!%XM zkQ(s*@EB&7``hC>b;4f_9|plea5gu^bc%~0E|KH(RqDO?^qE(5W>N^?FpP_FEv!eQ zIKW%YyOBTDf}wvl(&9{tmp;|79>P3sMTDCe&b;kuK%;cEh$!4nv@zz)IkiCdum4^o zL1Vk=iUhSIxT|+i`w?9MqFS#pKL+otvSbx~XCHA})LC{7yzt-`NBA*VS`qF$C$|Zh zGfC;Lya0qx2DOQofnzrjOFDz=(|?R%jt+quL2lNMXKP6IC~CJDeTzYxBy?c>ez9&^ zO3_a6332LZHfpKY=7s|XOIG^+mu=qXnBaBD8r1_a9ikuFei3zFB?TZmithHR-;tC& z!U<(3TpQQxRMD}Mi2n83OY6nk@gU}R0h73M3^ zJCKlii{+7rf)(Oe`|KmVQ}-y07}VrHV6vUpeXk1za$3qfxt`X>j1sHykn!v8*V{3r z5bYLX55;=?-R(rHF~k)=!)L4=Q;BG1X0+2XfCB{jT*&YtkD<6Or3BcVT9p+kY*U5k z6B#i@nyIr+1+3Jx1x;93M?gR|oTcrz0q}G*N2Mv+EY@DUx1F7<_q?(x{a9rIwG0ya z?ya8^&{$e^qDmG|rij&j1pS_=|7B-OijpXb*tPXu2LtjQ148Re#^^q#JikpTXyY%K zDB4I2DNM+mzoWFK(2BTS56ga-TVZTsD}3}W(5$wl9riEu z!E6#WF*fRW-x*U*hCAA5UEIPcY$~Vs1?pL znCs|sfiTR1?n}g@8bXKirG)rK;IddeNC@(__%1I>YgXqmiMe0aUyq>p|Um8o!B<=d^5aN<|_nY6)+fY!HtEopLowPW7v>h6qVaNG`^Z+#Pn+ff{QngT3cGR+27^J|dqP=6mh#(m|YY*Q+Nj4B`7XEY_ z{DATtlKdM=42msv0LbBK`xPV>XWCHU!+aI1?uK{jBdU*KtQfWO8@WH{hISPL@8BfL zO}Djdq`o!@^(SQkG6iF(piGt^#>kX*Fqa;`fRD8%)=?PJ7hDFzEBR1Rjr3P@bJ>L` z1YJcc9B2lMfK8s14!Pj%rL0nSRw7K>^H52zn+2!aTx*+l=5L-1R@LbhkkTa~2Gd41 zHcU%bYdw+HDGbN=N_(v=?AFHlUR=se{9MTGySe9ryFx71ys6+$Lt|~p_H-$Q0t7|$ zI7%F-oe;G>fQ3itCefOUqJU%qvZ9~R?|LVul7kUtU@mX8s@%;W_v+{Ha1Ds*4C&=8 z$i&IbQTN+NbyY2TxgnobHNwkcozE*t9_8*!xX`H24>SAc4|H~%Je@z3i%n^i^AKAm}AeM5-pm)64nMi_ZL}#hcl7*H0MxrgdY}d z$UhTE^nf+kRXe5FVJ6RhGvEsbCxSA`eeidFcg<032Lqj&!<@3os2FzaQxp?hxPQc` z^Sdin<}q1h3BM5d@~?j(xf&Sg3)s@6fT9mD7nXWR)4#N*jWl$+DkZllge{4Ck-vdR zOJKKz;jj@VHX>;U#S~_mC{xjX>aTQ3K3GN>D=?mvNqPNlqM%D_bI22|@F=MC@i?)@ z$=m`67BMkxHCMF;?ecH`gzO!=hXl2JV-&p7#QF*>A3YSJ=rx0l;o* z4ynR5VUu}zVC<$sP<{lPA+6ldtdRLJ(1HCfswDTDKaY}eMp2>k@BZ2|F~k?-V06}W z%NLzHBUY<50;DBpWVIrgQ~p5Oteb5Xi|xQKyjOzWCzhZQw;jPQIn4v_&x3VP2bLg_ zw}eCw_qu=vn}G4CcBM`*3CD!cNx+dp8_?c~DV@|KA|i7~Bj8tb(<7q&&%x*Jt>A69 zSMUYdfo9cb`qD5Jsfqo^BJdJhFUC7#pjR;Q06VFN zIgt*3ppnFz)CSL}1Rk)3quB%zwPGUL*W%m zfHC7JKfyxO$uqwJAZLnjAj$@>y#2H{A?OXCsu`e;4Nl)3Pgb zC-$7@1T=S@bJxvTd1ID^h`s=a0c4f4&=6#|ZXMGI=%hGlbuFt^>+s;~@L2$q7PBKF z8~PP&&B2ReDw!IF-Iw8k<*mnN{~m=r9{db_Q6jxGva~XJpJt7stBCe{`qTbKpyA@I@Pfc0b=twy z@-AjyGUk;(LzI=I)d;@%Rq4pGt}o_0V||c{EU@Cjm@omVxm{>G%{U3QVfI?e)iU*n z)H?^D=|=0lnrmM%M?2t5(kAK>>~esOhB!>44s5J6TNhIe`mNNR_cAu0p5E-dM-Ue) z{-!kSt86COJTKNND0Xa0tQ_P_+5MA>ItkJxa;ELp8lJzOfxMQlVE=#F7b(-=UbR%a zEsvWT5FPjH3cWUILAe`XOT4{*&}CzR;$Rym!f4~-YP+5O z2JgIqxnPj)=b}6BAf33rvTm|`CNk70{t(N!`*KeFA9ciW5d6;xF-vVtNN2KW)4jz1 z9otKwLQhAe*I}V2KT`q(x7-z{j#hBxr-w;Ow5pS+^BduLNSIO)Sta&G zBB25N15JP^UUbdI#=2_yF{UNDylrCSQB){kWEp`SB0xQp%?6qOc$w(rvj^js%LiJT zdX;SB_c?kk2jK}90g6g1rP+=sabqm9p48A8y(@!wLv35_oJnn(;ru~*n}hz68aOc0 z=81}ioPj6C@@t+C8@1H~{1C}+k7*t8+s;UiBFv=>&$T-`IEe z%o*(T7gm1~bSBB$8@=h=k@Z4yKu}S+DoaDin^gf*U$1-#kP8LaqS&AjHx<86{viA` zV#P&35g31|ryZVVAP1 z8^9&H?r;JA+wQKY1ff|@2y-x4H(|jjQa@}+y_f=w#%W38P)Xs~`%ZEx1zUp_egwmh zN`zU%8(bG@%9_K&n`Ro^qTn)0rg5m;cFb;B8y?az%Zm{~tehM|`6Iq74_2J#O9_!s zzsnM3k7vdJ7q1o!)=t>Ne!uYJ-bsNrushF=TgJ3ia3 zEJ_La;iMGZz?KKMLt(??D;9oT%)qp5yWp%S=QBgtaWj6!t9yL@^YY|8j}^93wN}Qe1TS`=JOz!?vaKJ4@BZX zwJPca;0rZ@tQoI;HlInFm71}zhMffgGJK*80YzYtgJjWCA)pz-Aq2CRSTU8Cm$_dp z2fK1UH0lXEt?!S1s+i_fEBCv44ymy=4OyO=H=*g+hC?jpf6oJ>)wE4} z>MHL+r})wR8vD)-HpUkFps6J3ulZwBs8;PMswK?Bg(b(o<0spYd3E-X(gQwCJQj>y z2+?AcR#O<;iuP_gUbV7`9Xpj=sSHk`N9Q-ehK=Tma<9SWF@rBarQ4|9xi_h zjX4J$%o_}s)^=EYYt$1&IQwvlaJ#5V-#OO-4})N`u@1l|Re9R%-i(p^T3lgbJl;aT zmQm+jYR1i{DEL_^aw{vC1tFS1camff;tX^2CH-!_s1OcHKTA~AP;FJ>Y=YV&FIFPw zX=>=`z=i7W=b|Y|i{KQ&|VtHPWN1#(3EEnkAR)&ZH80JR^yQpC+mlXWBI`N|}3J{Pj4< z|0=sT$4JvMT*|8EJx-*_@4%~-&Ypvj!ySy(3*n*DgJLsn_*F_h(%kti$M#R;=Ftdk z9S5<-PXU^aDeq~c=o~Q;2!bssh7r+4&JU{uRn+abeP~>Ki{V6TqF1_6i8&v0X5yx4 z6_+=uB&dgAqLNc7PDg>8HpJNhiJmv_+?=3Lyburfgc!r_R<8x*Bk0mtkU%tGv#zTV zAcwK4A&R6_bDRdV^w|)tcoD?Wz|X=>kSCKRNay5`zM$*k5j|8X(=5(JR5@PZc*pTa zj-=Mx#B6Ra-zk;b*?3@dr&1oj^9qYkl&uo$NAx)6ry3jw88wzE{ih6&zKZ??7*00Yp5)vV2Rw@nf<3nIq82rMPfPr;T zCQ{45M`aPq;)u!l&r_9Nq<8GRYG}1C#tzCYDbx@qVJgTbR^xP!tI8CQO7y0z;iP2n zyy2n@72IR>q78Aa)wAzyn6u(NZN#sYU0#*P+!=(HCVstD^r^MlKBA9KEImkZ0o;vA zI;<)E!0P9}eb}GisQ|e|eTga-*|3)`q7kN(2#1q5)il-QACl-PnH0H2RTX5h|iCAuYpKaVz$mRcOe9rZ{JM;>U^rxa#Sd+NC)*&k|ZL%DD-7#<0saP?(VwxIj4_hsGrByC9T!vTOK(?dT}Ld~pBCH9(ZZmrCIz1UV3{ZNy5u z?8~4#U~$&EKq?%DPR<1MwBZ&7nR*2q&crr)>5r0$8~oguJze14=mhuFq74cAYBM); zhV{ouW#xcPmivNG=0BD@DZwuEzd+udH+bid(v7$GK>3r=A*ZRzx)T-i@6-B`H++}0 zTng(?Lt$XgR^9l-aaAN!md8}E7zL?bJ*u$oC2TqZ+f!Q7^|!w*i#!h15ux##`XBB{ z%u#^GE}xSHGafsTzORT!bycSlZ1fP$yxx71fq$Av+|&c{m(4pC3$N9{>Z|pi3%rx% z+EGY;alcwO*>MX@lXHEM`562h>)R6TT$;#KCc&OCUxg`Uy+oP4RSP7K^e1p-p1{7? z>VLpd9G+1AtjhM$bC z^ymPiUTi7;%FBP{#W{mWw)E8A(;;GBaOf=-M@Qb~ZGQ+N#c1k)~N*deFJd4~`!8#KD{G=(+OZfS_!%XjEo zFTNH|Z9vegt$%Yo{BQx$q^;TE?=+2^ZYv;r+iHCc7F6|_{@0^PsDh&DulR0IC`t}yhH8+3 zhZX7W=qM`^4s#>6+Qqf~i2BXMpKJ5aK?r>MVp^L_Yf3DR=Eo=^j>ar1Xc*o21D*Wb z(B4j*R6%WdYaX8os~%s0=my}qi0T74A|v;rbqp4E2k7dBNMHA?qZ#}VX8-)c>LpId zea#|bG&QB(zTOjl^ywd1sp0ZtvzSO6@p!tX5!RiiKYNh}gwW=~LA98}8uyasIBND?%pW-Td9+T75u4iXpDyypB zAre=S@*3IBH31`Fx;R#K!_uMf@Hs{zm#K9Sz-lLatR332xP0PzH6Li`6q6KVPDD_b zQ5$1LI>kz-?*$yBarX-|!vW$mv*>Yur=Tk}qHgffIgTND-4y>+K?Se~C~DT!d&(xs-hwDc~)zd&vCCY~zNUoij1l#Z6i6-{6C z-Cr>@*hT?#2_X9-OHM2ws@PnU3ZA|T8>eYbELB@j*?rbo{*{esDY01E3qm;QPwJ)% z`Oq*MOEvTi&e4YHl^VjVVsaS$eG>1FUoZ7npu1uMe#$Y!qcP$<^#1o9eot++HMM9f zUcVRZoXd8)NJ8qbH^cA!z~TG;R7!W>?La>2-u9pkgD zI47Z}g#g4QXz1?z{Sl!nn8f4aQ3m>TbF2-m1{- zEgq0-Bc}#pcf|0B)4s-ew*BD7JY%RlBY*YMvydfAOs5Ey`_}-BLKg`P&4+orp}H!A zkaId1i-3b$&oUJZux1^?04^|9e|#Xmu@n+woo96kCLr2U+(Rf-W+Q$Rjc`-3SPIO( z8-Mb4?6K!u)A$X$qQ?)SQETl z>ws>Ze}vyeGV@Fy5H|Caw3?gT6hO%@Zh^JSQyhSDo*2)?oH4tTf^Ihvovk}c{M%nG z_?Qhh-WFZ#+pFuwKOd`oDSA7Y1Aq}(0VwMs7X|s`3{QZ2K$N3G&VopJf$n*+ZCR&P zabE`ig3bkXgq%!B?R@Uyqg-x#3BX#65xfZl8Y%#;wNT*!)+sK#mwJXhS$Z+=*GZ)q z?H<$93&KG#G$LvAyee!@Js?Ot7+9psj1?2XRcn*U$9_ZZ?TE9+TY|tW0D%~mT5ei33l0m~MX4|Onr(c@?|ao;kQido(1AN@(~x!F zx=~7lQTP%W45({g<#P}4_oe;$H8bna0I}UFVJ%UJTpV2l0UlKnJ zU^TfA%NOpP6p8cJ|JAo9&e!Wsb!3Y`T%~QFs#9IfEiv4H`lEL4@Y6$TZi*+$U)d`dCz}TgvN!%Ok)Vhn}#U7EmXh({f?VIf#A< z+q7Mw2Q0kyc{#zAN*VjAlF0!I`{OaW)8E}j(O?)2{(3tI`M1PT!oIWuyp^ckZiMpJ zTf4#LL`$l)JN3_Vlp9J3DagdyT9NfjEMP`MqE5Q1wp{{O19kjQbHY{{UlRx&kHhvK z&Q)s=w^R3Khnevbn|Rhy2Hp|}8H(C2_+$f1fd<~QcgI*gSd?_Sq>A6-Glkya}))G-P?N8+qkof{9xM zlRuZfbn8tCo#=S&-7m$8$v=8m4DXUk?ov|Ad3hTA>uSljv7tW$D%I3Nodf<-JK`nP zP>{sRR%QL0TGnKqAS(Sk zDYmu1uTtF?j~%FiZ@5Ngb@5x4gT)C`!4b+~Mkkq)Zg}kuC=@O%R z?XYVw109+wWR?4S$Fhjww1f(WM=-ZcyrUzeb7b|WUsz$}!r%G|mPZ(^;2JExXFP*> z?wTT6B_=h<gttXTQAoy4)hqEFRrWNyim8a^TcBz*y4&sy48jIegVltRF<4 z8_~=Gbvi;DoI3jKz8rLZxBV3jN3CAZs{KgmbzH1t!|B-pM<=Hyc-JhkpyCO!y%Wct zk=T{hUZFK7_+3L|OQa1qUJL>m9t-!-UmI`<>rx88CYk9;JTj?44iV4%%kM_oc3IZa1ytTDZch)y;|U?W!I#t_G>piuUW*PL3o zlSN9^;Nt|jY#RL&HMY?w&WFQI-U#jPd9&-2Mj}Ql+a^2O>+sU_lPs9viuRbIKPjb2 zG}nuW+!|x@k-}>O^hL$0&@K)JqS?&>X`pb2vt4kN*kLTXkch+O`f}cyTkdLws3itl zi%a}wdS9^a?NOgtA_cf)iGV=@;J^+-ln2d4{Wuu-DJ`Q60*)ZVP=^kZ@~8IhgXrIB zk$?7!%l)P9I$SG2xf-=W?%Cq`j(QJi#OFURcV}HSv#k3v)&sGOix?~_ie5Wxw{hG4 zbC#YDdLFIwOuDQIHr7}&%}^L+8Wc!GnG;M5uP_IfehYe3>Ry|+`u(ZY;pp1 z_|oVjePK8&R>7QHCBh&jLdoaR_09Pu3OBR_it-+; zcqm&zjwupQc#0aE;@etFqNc^cP>aA$k)}3O0j;VrDMA1#!UUXMa+as(WkRh>_XVD= zgU~pxO~tkD3LC$_g_etN2L(VudGptS>S=TZIpu!kzXbjel`>%2d9&6My|xDZP6w%J zn29+f8c#Am#-Poejf}>}>8n@T`wb;mot8RCv3*;pzy_feernYZzu1UGOt7Fwiaoac zDMJbe(Ze{umSP56l3}*~IOBxb@TVgJ%Y2qYwDt|ggajQCf$sV58Gw z%RMh}Nt5>VkNrNRmA|MmBu~24k?TkU_UzdJ=uF?bcf3JsXgzT7ve?1OEoAzGk{zJB zw^cf#MfTc*6FSfxaTf`32Yi5;@}hVi+B@+~K&52vJ3<#=2tJ7ll|waNEhY2v!Ajex z72a{K3v;Mdf(tjYP#R|Wzk#?ax(!0gx9@sVp-N{p)o@)JDyaipw2-mi6r5~YNAok$ zDF~sy8eKF!BSUUj0W5(1+4$MRv^oCk%za(S4p{ISmQz#sT#U z6j>jykRxHe$kf_Bpa<8&j+zr-5}@bOkeuf*l{L~+4MWcRk`0aRTE4OR`?2*zNW^)y zRu;DFJRpnk3_kAd{K)|<6cS&(Rk~pZ6VT0r?*&TZ*8$O1L!cu-ZJXlPRIu;IY}HAY z-WKozS-l?bN3_l)N3Y+mHa@|T5yRK5K*E7XWLe|Gc{l;VJUXFJNOW14>hB`K1O`Z~ zxN>D4o;obYnmFS#9}ql#!VevRs2y=5Nbkgh#9{A2iaf3Fq@>npCA8KuKw)FK+T7h4 zbDpE2hT6B_+P`6ksS&r;h9Y)%(nQ9?yp{G%4E_vEg}zj}+qzl;*z!xrivH+v<}nvx z+xdkK#(!l;Qzoq~OSvSEN1`ccH?#m<0rr_8e&frc*WyKhtjZE96(({h-LG9gdlD&_ zKZ^>4;iK7>i9w_K(=ez>h?0|n(Ah3@Kn2XfFiBYI61ble?nE|;%R z;o4>Spa(rfUUtjcDf zM7ry+7l{4jLwE;uyxQ0LS{UzBd4S3>4D3!X$~-!>*k2JYjZQUP?yrwaHAV<{ z<8y3aRFD0>*-;5UpobhYZBYM71nYHjep;@iG4FoLrI%B8fb4YG>z1RpcB_;QBy1f) zS2yLef81dQkj<95*My|BdON--`JkGoVWh$2{Uk*lBiFn3}kq_%w1_@?pizajxbu?RWqb=WgJ9HmnG2E`| zS1qbwO+ihOA$OOz!dQNJPF?>Xb_M6@X7N>aSd(_J#`@xt3V{EdE5}6COX7|vVj+QgH_UZ!OJzW;*c_EyyvM+E(jreN`4>ZPe~oJ;wG+&{Lda{r zhWfhhs9M>XfDwGE#GPkm*wpEqHVd+Sk*PoKQmy=)R~%c)Gy)us_J}D4XkDD-Ylo{U zYViJ83ZKP+VeR;`r-sg<&jhjySuBPf;#wu6w+V|#h&U^CfH@Dhc83DJwIUDj+oXQ2 zKsV+SNO^AFupTyi<|DaL*G#ZwLa2Z*TXKs)SG5PjH~j&jqp}SbTM6Ha5RS%K@jGsT z99^O-t6N18L2hU(y%nDiP7Z}gkq?dA=)H0=-6EnNn*z{-EQt!;wHkZ$3GaI6YVdT> z7nD3p#0^Uxk-)9D`yO(YF6ckg?*_3#e*`)6Gt&Q#@}NDk1-g%>Mpa6&BPY5Rx~Bup zt8BDDeO2Vl(3;!jPeKuP++-!#^&WATj!3F?;kGo0yd70`RAIQ#{VXT569Pd0dKAWd zOy5aaX{xjJW|}U_NvpD6wshd=O!0$WaBMK~RsWxHH~_|_oAdpYQ8)fHOBZy8kQ&dy(q~s?+<`5Qh_6Hu^e!}iz~4R8@6DXGiKZtu z5RN*Gh9z{{XE;}y1_%X^{Xbph2K8-ke#j*^Xg$^jYe;ROzMi@bX;L+r-5AMoSznD4 zlhtuM*hLV_1t?Kme-fwBoqP4QeE5&+_1S~Y2rvhK2vkb2Yqk*bqJ-xeEt#KM!DAZq z^7~4a4&&TR<}8@hW=XjPpYb-bzTK3pw6Cu*R)lZ9(6Za6dSZqVchSV6h|{d{V2qqo z|6UV3#oZw1(>T>-Z6k)YNO=}^~Wlb3(pH9H+WmtS6bS#uM@&V_Xc`U z^xuknLMe1gyJX1Cv3YK*@3dt(f&OAz1)W5>ivm^X1*r&rISAXk|bS}Q!Bk$E+1v?LxSVak+7^o}7&|c@_MqvlbW%uG+ z!xN!HS+!lG0pM5OrREj@slT1j&#zPhU*_wGcQ9g43(R&sLXoHHW} zNVug7nFGB>P;(2!$6Cblp_I<2>5k~<2qMH3=uBsW8;Q9_A2?XqJq%XvlVIa|nEec# z*B`8QBvq_=B_9vL3Y(;vKKm2De!H1rQQvCwLAJ|V(D7ZGPf~1+BX2ih@WC$q8@D7fnP0Gl?d#~{hEVcF#wU0$fZoaov z*3u;V<-wUMTdax%1~jj_ddK|@O1GWIpo71rJpF*~xaZ36 z{YU_$sII_Y{?Tk(@Jkvw1T_nB=Qmz`YrGT+vx5#r%Z#`jzy`AC$J9g% zq`3!{@K4}|yO7U*ud4FlB7Wc{*EUYkUok8xfGB6rYmB6kguq{ZAZV$)v)CkvirP7s zepUT3go245OuBN*lr|N;QMF1UrB^woRjM{sC)7-Yhcn@F>8qA|xxb1vg1h)&j0IJWg4eBH-Rq zW@bL5^v)iA^S$_4s28JnqOblSd3c_bS9N zs9jgO$tZXCmy;!P)dODu9l7ms{*!#KN|J8S^dMNqIQ++iR#oPUhb%Vh+)AR?bvTNb zmM)LI=;S&rxazQ(gqxjO?~zQ+TIN$(8g~DTb@7+Alo?TKzl<=MkkxKYDjQeD2p-rz zbWj|w05D|vw1Cb`)wm-N^v~3+1z4tYjDfA5DAK*m`pA5c7InKKFReQ_Gwen3b|2FiG>aLs6~&1K93&SDz-f ztA`#&wo&MW^_U6%XVLM`*iIT0?LQtYtG85^Sq+$UcP!^US&o@^#Q5LpLUN9n+b7R) zIC&{taes=#YEZ>FeNk>y(>%6cZjgCocup3DWl)OPB!48)C{0wr$lH_T8`9rb-J50- zj%#+`3nU>q?y(IX7=(|MC8z~>x-0mMRBKnOB!Gol_i%bj8WyvqkM#OMtQhL_F@A)T zAz|Rz!bvk|;P-o8WdlD{MtBVScQfM66f=SSKcTr=IxMm9KGxj_F+TD&)v9Fkam(a$ zlveG+kCmzfnJ)X_Z_^eOvu&w_ZQ{5{u!txD#zA15o`K1-0Zw=FYYAU+Un;&PFh!DU z;a(gNXh3d@5&hE$YKV=>_d;uQv+!z67wlg==KW2(OX=cPOD$8mT4# z_{88Ma9r;SpBw3^V2W5XAlMn8H{64fC2IaN1D(Rv5*uDY$+mCDa=AF5&NrLvZL;!v zT#NhVE8@QbBbg`L0{Z>=&CP#R1J0DIphbiYNb%J8K!OnKQ^~a=dupo2$*@?p<8kka z$u@TfI5l+hJ4w^VCFHh7g){OMz)-hzShL%6?;z@pch}GVCWWvM@F#f-f?yVdkpN_^ z5cdubi6@fCmIDQ2{{i6ZaezsI2Lu>$;;#eVNl@*od<5*-`#y+@#g9Gc<^$@`q(%ii3D03jQC>khu2}Gu))>Txrg}Uj74OX zkuv4j-ZE`MRg;zA3QvC{!Z@+Dmuu66{(L@sMOREl=Q!0(M6XpMv5NBnb`MfN-foR@ zOygFuHwEFd^D*$vIqbTb8zY&{gpfZ0NQze^Pld2q_4R?g#ggM$c|rDJX@G4#HQ~-n zPjYN$aNx^BmL>@?5x9evO^o)js{bNE1Aw!%WeR8l;L1Ic{%pB58<7_SQ**iYv3H#4 zsSJnq9aaS11UoIYiqgb{%jFo*-J8LlU0ellqlmI_2FrN|f4Dg4>OPf^&fswi>>U$S zv}Y`N$Qupp)Oj-b&Wjc)G6)gjNi&V&rx>Cab$cx;+77Ke=-OGoS#Tm_9W7?Xq5FDm z8@m>xvI-$Xg@{BljNx_r`qhtc0p-ORof*L z6=7ngW{kHdx&eCEeBfDY%$wRMZ%rOkEzpL`??|*U+8B>bRCA9Ac^`SJJP{> z>$5n)Lc%xGv1PYB!H<>_0=qFG>N5#fLqb@4M|>J_9MJ@mFq_i$sW~-2skXCp6k6dI z6z5^+=3@YNXM(VbkWij)GyisjF0P@SYMfR6ZI_xakJUJdfU}qYwhlSe;-3U?;600o&&=a zicBA3YYrCAmL`cG7fJa?MLblc5T{EJ@t>8!M5g!QnE(P?DdOHv^D8qcD0Z>x;D5Wp zl#q|S0m62DUQ@Xn8rQ;nX6_&>Jekz%YoT1HuY;!%Ap({H*^!PiX&V}kj_gOf{}J}D zKDY)AJelM1fPqAjg}h!X-@~T>L%Ut@Pw5l{KTb=6+&bD3HEMtY=l8kz3J-g)r9l`E zqqQ0Dw^gC!%~{{$%Z%g-7hwkczZ4HuXo#}2j7yYeQV_k?2e~E>N^S|=*wDILww@6| z#`CmN5>7audJeC8d#TiW=9{Yqu=)aX2N!V5p0EIGe8Og+Je}1+b%kcPvPt7jT*5e% zfU!%U`i`T&<8z(i&x)I|TJZTgk?gd_OAZ131SQ1)dRLnAw(^LlfV?c;NMK3Wl@s4i zEr>6GI}O@t6xK+bQQJIY?xlk+{0@6n4_)B~l#TExE8xSWg!e;Z}g*F@MyMao*=fm(PBb5cG-oZ#5DLz>JYP(usa4mUk@Q7Sg$dM+J zi}ut|qhmm2#|iW;L+7aySkSxRUs4Ak$__BgTDVR**lMR3Vfh2a0Cs1R+CVZ+mwK#g9|7Yz4M%i zZ$wqTIlYmY5BMAxB=}?nQgkFPq(cD_99N(FXI(Kd))ra$$PD}gt=RWyux@X%t5O1C zcInzPcFB#w)jPlsi91Z7o#Zk|soSn>3=-?CxQd!km$c*rM#uL_$jmN8o_pk3Wz(N( zKW}LTQ)H<;dGT4LUUK&8JnU-vf;vS>lYFOwy(CxDlkN$fG>Zo5mga>_T_Cjbrn2s< z{|qWjcUHtCaIk6-Qn`@$-_iQ=70^+F4>1}|3-KsRmRdv^+`9RZgop-vgQDJIk4hc7 zDr?Zu@q7F<+-c@+zRZ;;_HdgWH7tiyY5Jh7Xd4p>{fJHMrBiNxy6-N5$kGxAbv`I8 zzDtllEiaRFRE!^Z(@Q`e2T%vd-A5<}J+_aFFeA&LmD_=|w{vwh*1_!-t%F8^{>d(2 zZCmI)!~V+Kq%#!fe$ZIbex?CLMiXoFM9|3-$)pUTGxnz4bk$oczJpV?jbdp@)z%@z zE%{lSesncFM=>_FhQ5K>^pP9XA=|x-Q9e5#R|>6xs+WNTV%B(2Id@C zRGvpX0VIRz>G$Cmo&%rPd`UvHKl8I`@{53}Z%7gVCo4^20f+pH$HQ*`7PfIdF2T!S z&bXyDMADGO|8H7A+9%Nfvz&VgcGH_$!F9pyDQM2Pe5J0Oo15B-=IrFVS4lgk{hJ5_bP-0}^LViD*Vp#rZ&WPZLSa5Q;Yofw|8xFa8rZb1tMWz6t5))h;tn#2ov92v>Ws*k1$zeruu=!>~&VWo>; zh`Cw|L^rw3r0ESa{6q4)U5cJ`AhIG*Ze^-NQ4K4OaONZgOV)zj<<-6MDate1s~^+j-^2DWM06 zWXQ> zsYcUAaXxhYbk^1l4J+0Jz~Oyp&BoEo0>zkur_-M=>PNSC+*^{12Kr}aVL(Vnwa5NU z`@rVx#In0}UXgQHkp}LT;1h*EEg&pbcYj78f_^^So*o1v?3xT#C?)5~EWdP*sgCIO ze)8F}3!2T4(qXr$0jo_polU;~O}c&+VmwoJ&k&hX4SzUZV>c$1sS} zb@CJ;IgM0nt(1C!de3=IHz{&nGcMxFN)on_o$e!Ug)~I9wA@XOPuJ;WulpXRG&cJ( zIg1~uEq!bZOYf%0qXryv&i$HaYsyZ_xJMf!##eDB)M+^Km>E%+ z`#^lga;ICg|8GtI*~Y`|7m`=SItIsHT4LAZ6m8@Zmem^xyvadSEt3$-#Zc{g>iwvF zyAr?gWpCvDjG<}$kXgq16Tb=ed8HiK99ZZ3EVPGSB49%kZaa$7+BJY?$5d!lOi&_YfiZ0Mj^BgE^)rM zjg{7x!xw-3SR_gq>Q4a6DR6h?ULl2hfN<2v_aGSMaeCEwK(I%~%wjtlJ*x?2A~{YL z7~c!532oJhJGF$Re4fiJ)gHwnY4Q$%FFxxo)IvlUtyTWhZRB`|J?zI{U;fI|%W6QL z&68<$8MvNyBKij`oIvxOk}We2R#q&5r|A5UH`{5hhS@&Ig$)8FNFf!d?`LnTmoA?C z_b0o>I&&`?r2W6yWoY$uf%R58I;$P`7;;IH)c>`J%|HBk;K zbldlZT$PU%`>I#*gw`m&{XnR_-;UWiNTAphZ|&VuS?yXAG3%FR>c^l)Ic1ihsP_AI z^&e*?xgX3?S)L-bNz=A390G?eTV+2nm>=HHPBErs5>fnVy9nH5qSlSf@3SNuqynoc zv|ot1L$U{su&cOv6V`NJF(U$TK-ARpK->~ewGG;1)r*h^e#O1s%j*8{%q=r;nL>Ma z(D)uI0VoF`*wx7j{b8W#Txzd3uIsp6EffrW7&wUbW19x(oM(rfbvsSLl$Vmp3kFs< zxYe>ozOCDZpU$rX*X3qX9T~xQ9vADS*e6nx8y1c%`M8tQ>W4`Q|6zk=9<#^sH4ff` zL&~ixL@{?;uQfM_!PkU)EUjXDi%{Say^cn|MV@q7IXr8i4H0v`B3T*r zKIgr(5RyX;Y4ZJ`P;E>o5hekrUY%dYbA!+qZ*$08i!%MIvFFr~HK8v~IfGJke-Y-Q zy7B)ninNjNtD?5c=tr*^R@y~&MRlW>7OMN445X2~1+Mb)&WN4qxsv|Z=RwU%ZRzS8q~Erb*go{;_`Vtk9K?#2n|?c-`2w~COOC8EEPF%gJISQbBI~cCG!z*@SXPF99zObJ)dJ;yxx364|a#gz-%&?3O>mwIz?-~B# zA4D|KO$Ca0zS4PkCAZo*QZT_o%!s|C&vBDYu_wiIQ>2)YcTNpKT#I!U4(bS9zJ!BP z38%hRfaR!xRaS6AhZ>P!kCQ^-B=e`D309bgyq$B(}7lmb;IA+GukK$@h z8aE8>6rvMCEb4&XLS`=e$LAxtdPhp}xhK4TkbhZl?gsd-aq$j4Z5I~a(a+OR-IG87 zyXqJ7a5X`J*l)w)vDzX`*{;$ieI>}?<(0x&;r<92kE?%Q#w$BI1qR1t&T3gp{`Gk} zEAxO!l?oAM+8q>agYqYbIrb%T{_`+2=tgIKd~}j!a24iGWP#7)j{>7KttEa2?ebC< z`@GR#yW1l&=-)P4r@}^P@{`Klz71hf)olrR*!SzUJ2zH>`x zR)rY4ZVztPdUOSkKVgvn2BlkvuwF35RFk&Yj-Mcgq~cd_Ca6wQR=gggc9?5&U9Q0Y zBIjAaW-VHN?9V#^`Ior*W<1XV)xg&1+U@Cd(C)6v7l^r+b%-Ek+nnkhW0JGe=4na6 zv6Ue&_(gy_qQm8>kFMW!T(Cvmux&6xQ1ltLLxhh?*_5d;NUZ-pG zV^gUzFI)+6TU$5)#cbsd9vJyvKA&(JoM0QPl3wTVrmdZmvdN%ZtWI#?Wi`#OI$W97 z^_{zoD{w0{!YMon@>AgY8iQmK6>8G#b@N#hEblb%(6+V~j@wsDxvxlo@)dD6G&)N8 zU`Mke5xFm61`E#t{slKt=@7~VVaiRzwkI*3xfQQzIv2#*#}&&n!Bb?St6Nx(MLg!; zDC4cv4o@ncXSKXl&ZTQ%&H0+9ALJH3ol?S%e=i=|Q`+%IAiFphRl?sqct;1|hS=_F z-NM$PPxpmCo7yXlY58{xf%KN8cmKR>W(ZZbZE8Sp2TKpDKPWVOj47Z@dCkWA|0Qd( zShm0PPPd@;>QfGPGLZ_7zdF+6GBx==V6#$mo_=!3oKbUpqr^qWv>>@P*aRrNS&v_o z09U34Q_}ePel{s$nWQ;s1~QBF$gya}h-N z<}q9$B25$}sp(Q3{wpnahRGo4>s0b56vd|qdUcm$9*V>weuPx)Y61N98HKuL1WsKx zuzqRg3c@ZSD=zN$iJibMoxfGsSO`N=9pS*)@OY0(Rs0;n`n_ep?cc1#AW#F4B>v(0 z*JpWJ35|bKQ|Qr=rb4T8A9NRflJin=>xde1I@BK|6h{5oAdEJ1*U=rUuFLkjovd`B z>(h)4K=!4;Ah-;yuC*RAcJ6q#Z!2_s;h&&2K7X_)|L34HsU9E@5oFCRbZk~rPkn2; z(1Qf&RtTB=DYIQ$fFWwD$#nf`-e&P5o31#On~q^?M3z05^;yD-qBYy$VfPAR%E@z1 zPugP(Rz$=Fri%H3_v~)LIVt;*)xe9y6|yMfhO(@*#)dm}gEc_p(LjIUr%cGG28=j% za|;+eZuy%+c)J=-pT99PpdXhaq`HbW!xBmqc*c!@lIjc@NvHxq@v}2HH88pEFk;xG za1{P183rd~$Bqi;XmJFQ{HM>OsK8J;Ci?uj40R~?uL_E*08{{OPf1K>n(#_FVAEi` zpM^CA5SyfwlaZM`%A?${I57ALMPAT#95Uhv%W?NVY$xjb@fuUi^tTlYPU09a^8R2i zpI?O6UjA^;uws^jw9kk@RV&W1VoQkG_TA4228Z~s6WiH%A;5^52%bj4jo zSbuS_M9>N4`aPzr+~MFB>g;~Qa6_-d?}1&$AVv9P;bsc4uuiEO7sE1GM--RyyEqSx zj!$u>fDU#VJgv=@RMDOxSJB*UiRcMopAH1wsWk8KN29X516OPQWq-D0qU2=E zNy3HPt*rfKX#^NWOm(0z%g>w1s{;yKH-z$-;dlAZM1zTxg$X1DRVEt}?Jfhdg@Y;ZV0Y@}gIjW?{%vxeOrvfr?R}?o~ zL40a^)galNGf;_Cr8&JNi_*dlH#ZZ-DVMeVhPafqTkG3zQs!W`bd(I`&Ol~`CMMOD zSmXaGp3UI)IH6&cWK)F5SIE5aerjUw#EJ5u<%0;Fs%#Lw#q@_x_NUV@HufRTN7SFz zOpOn!=Lk#~4SD6g(_zW@@P-=20J!X1F}W`0u?O4~j8%&dGPt;Pa$ z`ePRXlro=!Bk%9BPA?+(v+YKF!Y{S&&2@|=rHXjm3{#i-w=1!@WL@K>s6nVMutm(W z^Vsi+Ha7pP!46;H<4N~Gvl;VHMQDjN>f|c5Ig&q`kR4tVmJ%N9Hf{RFye>h4=_-!j zwplTSK^*qVvs2KvAJF)XDJ`$4|Ezt-YodupX-q?x# z{|L_}tcAlN&dYZVS$E^mFH5OXw4+F{rJt<`v!R6;pqWW#+d?$s9wKB&!4R)x)SXzc zT8(%Uya>QA^X4Vh-}*X80H^`(w515fY=v4vBz`hA%4`)U`NdKP2UXVFuizyFvnspE z9%}Oo29fNFW9AKWy45Pj89&Z*nS(ea@-btB4mO|B-MQiL5OhgSvG%$PYTFV6E@w(4 z(Ck?ULV<-<(mdB5V@wk&dqRjRU~^6FHLu;((@oQ>uG#HuN*|3#$pn{SjJE@~ocb^! zg;*BhPo#=*`Sg<0N}uO>I=Vm9vcqbpH4d9$g3*Z4Z> zrw;R4IOL$zH9HGIr`HUez&B7i_U>^{-j(x;gW;lgbO=+K{jdlupbtieECU`+WzS^i zinkH*;TluN2v+|7wP==eJ*RV*I5363ph#87i^u&s5nZcr` z8QS4bpJZYujs1UK=MxyWZn>rD-m{$!%0FGFVbw31LboIxtwZafH&da8!NfpH27~_N zj$&EA@7}(*-CiTJjR~iw1C*|BPgvDgu%vY)&NrghkICG<7&+Ad%k?!w@?rUp4gL;d zIIq}gHppxfFhr2_L@1dV?*zP}3qsc~aBe~Jnax3?s$1cxPj?%`>~Rr!1*im9wiZe% z#=#$J-cY;t9-NqV{;=iR!v7PXB~CPkeFVxvk|Q(?8LG|LR{;<9C1>l1%l57rRKfda=jnC7NVn;E-2+#3t0qa3$V zkK%0(;%>FSa-+Z#Qhx6z8Lv~fii}EL%oT-v@Ty~T7UG6m+@mMy=2D1SgExb!$eO8e zlkOz#O9s{1*Q3=^N{%C`48Y{krQ_)G-S5~PN|k=5wC~}NnDe!Ab-|5tbfG7&>)q?! z*E4y1(d?f0AA}wKwmY!i#kn|ha<(9rlw`lj8iR9H?$-yUzDTNE$eFHQc<)k<@H>hc zzhVf{OT~J6Js?9Dvy2s6xpBW#Oc_Eey+iP!vxK0iEIJqs#yvl(-JaR~byf_*Y&U@8 zJnSG{%=WZP3az`99-}YIRM6LMmIv?}ZBFOrG@kc~_y>hYsViN}6&~kzbyRJ;7)!qJ zMiC1G!A3j`-~)P(0!VD0r8Q57c0GPi7M&+TvrolG81YF7ALlEwQa znOZw*0l0IYnky?6sxl&lDZzx@?;+f+BB9l6F?oeZ@1unrG2!(qt*VW;ir5{ZujN#! zkw&i$E2}9T1Q9x;Q2YMqmW{C8zf?x*HO^ZUr75^_K+d;vzZt81DakO z=OGh>HgDAzIHuRzVf&frJr%Ar>jn%9HI_To$Jru$C)Wi3!*n1hS48JoUs+3&QpUV3u&@LVq$y^hRDz z26Z~}RVZ6B#i;Z%qSmxgZAcOJo-bO`UQqD%id_pl#AndTMAG&)xrrp;ppvl?=Kc$6;-&^>1~(Ps^?epdjayqH!v4 zZa@9oB)GFFF~m?YLGX@&h|!+HihTF4hwVm6J&$-6pvt3`(xv-zULHr8&UCh~O>9yt z|G6&aBD+jJ2mm9*Fu=>ez%PGF^E0SlUK;qIm^t>o!hu; zt00vm<+}J;byMVu{lu+xP-_eb>U?QJk2%8N4aA(3yFFr(|Bn=Fs2!8_CBdS_W*WBE zJUcgR+tzbpOie|%3}=WuPWkuouM6p;y#`#t^h=SH2DAF+wAib+3d(B*H)AeJL{-n` z3%U-OY2%c??+r~pJtj#j*-dQBCO3qxDkTfdpEkFl{KcY-4$~OsBM+o$hL8t-v`|`c zo6>x5xft5b3xxR@vZbOrb*p_#W9L^^naqPb%PYyZhpTng?x`uV13HEB}RTsL?Ra^)0Lb^c6 z)A^JGeGnM|p7ks6El7P1ulz)y6e0Qq1SsO&(_=GhVy@3Wb7_HQ-bv+k%ZrY3jwb6e z8R`_QkSY(TWt5T-L$(~IGPj8e%6cIlYm7-hP6B-4SKs+@OIIr6amO7cR9$KH>~^`r zx%PT*@FTc2;je;=BeqIGvLC?G6-fAe9^oRP3PBBk@A$pG1Q*jUYT7@8Wt$jAv>34Q>ilVITnGTLM)3tlC z-&`MlJd=TkI#zU&xo}t+7sFP|_L(}DMEX;#2??cEt6`7Cpu&qR?=b;&mRumzs{xwHeRACC=huz;4_&4@0YG3#1wqUn6eKZd@tb{XmF z5y<6l#E5VlEB}SKRr2IG&8f?P-KiWz05oWN%a1^*Y9<$7X%Ke~^&yAbt0iiBSO;X9qU1Q=;lZ*) z-u_#FP)*5?LfEmJer0gF4_RZv3p0_;s_pMO-s2&Y9Snu-hknZVj|*_|{_fZSH&G|0 z?tP#69vYULnX?Ot();PAr}=vhvrnB#mV7T;O1KCl_=&>vag)c1GB@GP1oJVHtani0 zZmQgCY@o={l+9DW6J+({drTnIOw3X!0^CP^TD>X{p=r>K`-FywQp{a&S1H+@@v4y; zq-9#0Liu!VpFH@dW2NGdwJqhI!ek)TcXo!4iM5uRUC50u=l)eRl!0}UajPWKvDaTh zZO8F&++gFW3o4M8myO`QJM^N*v=drNMYi{(26jZlT{yaqOueqG*OoFZ088y)mn zktI#y$Lh#5_HLe;%opM*&)afPx0IRtd@_|AB*1(tC4+48K!>f%f%1w9RsKWUOkr0M zdVWR;CIyVDiug`e>3odkdfW$Ki5p)e2p#!*shht#(Qgp#!jy=s;SeDq4(5ea!1%Qc zmm1dSuiAE2G@IIvf{7!+G|WlP0`pWQjY`vGRNR20DYgsa{bxY{`A}Owb^;JF4rSRJ zAJ$QLQrk2f@`!99hjTh6VGX;br0tEQ9$%7u^~-m9LHnsUysz33gw-Fl&)MDn>mBaP z1eMKLl|}myMUTKmhUgn6KRE(l69{*&M;1~Z=cobtdJvEu1NOh$`3(hMiXIPlau~JF zzBO?r@LIHrJNI23p?_<}T}xhS*oKfRCev3KMOJpN{m`MjBVGFm@-`3e*dAswmj8n$ z+5Ombs7sGRTYnH-PCr8-xL;G^X;~eyIg%qTZ;~vka;`&wH%KIW;sfm~pDJRst8+YI zEQAPDERw|tcq{ail%PTypXA9Ao9&PpZo0SK!I`Pyom9Go&#O~1=xRdOQ_&}2I@sn( zSlE>{$9AX+>lz^6SRK!mMB2d@46OSOBVj=Sc$(pgwn)`XF&5Vt#9LkAIhR zk3gnl-^P}2L%db;w6Zf2gNvQ#iReQDRhS4Lu9}++PjziTQ9rCpdK`>#SikiUUn0?` zXD=g|^KSb9kqsgy?haOabZeiDF+yo#lj`2lENrNcSQld>vsZG@`gcs8;z=tqNA$iH zIm3i{892{xXx0ho7Y+K0vXo<@-Df3r%jNj@y4Bo9-5!x{bu&2^X{36Ly(FKJ%hIf* z!?jmk+tAub#A1Ftx@h|KTIV46wAf;so9N~y+vP^TGeW*j()=@KJ#@0`J_4u-3hS~U z=au5easGIajcrG&YyS$`yKXQ_XBz~j%lC-W%;d9_X6`BiuDS3;JlPBrNHz*qGqIdV zzS+&TL2I7kfU{U{rezJKNg45kPfwz0@GkQ(aRAwoE9;?wvvMC=-`~d*k9{?gDWK~? zG+coja43CxWzhgiRI3JwZ23lhgYV9*`b6xi-#!1Q%)lo!Sg}qug168vUC`0Ho{ZJg zvNTlS&8W0#43y-;Zh~dhg$i&-H-b9^dNO_KRURvO7y)7U{fZ!vzhAdGlx!ZK!8wuk zxogO^G2DF!LGwv%qecm~i$U~ZI3{7-q?ua=g9zJA+!!};IkjpfdI!_m@d_9$zTIjk zTP=KV{{V#L$|!7-8}vkQ~k<2TLb{65Y`JDfP$J znqb*&_ZP+#5U|qH!*NRyFQk%gYlKaBX@{850b^j-mgnn$X=Gt=@ZliDMoZc6J#aMi zQ`a^zq6WY8>?$V7Ug$3#$TBVJBM<=Qcj-AdLjGFs{@Djne*=!(=i6`j>+b#g(oT|X zgy%&a6%mua69BhgY&#zTD(N2(03nJ*(~0>OVes{Ox?gQJ4j+yrRD05=0=sf(LjP4H zgVKZVdYq9x7980esi8{QOFoTp<%bNYETBE1d3l;4 zikoU<)uUEFAZWa7v*EkZGGJ$xv;!Gbe2tqds^N=vGS>jx(yEr{*DPD&M(1d--eEHv+q({ZKX(foEh> ztr#<8XO`KD=FoLya9Sr(aquMAfpnX!U`Zo{r!ZSb0#wQ^3TzxNnk=f|EI}JKEAwEQ z6osTa`2Q{R=C4hD$)b{^o(H}Y8bo5D#M$DXk$9G9<}$VPVk9z>V2n#u=&}lZv*XR| zJT#E7Vq4iTf8HziiJCq$R_GcIjjmwM$Lqm<^{;}%>L8pvXnpSQ@t6(7K(82rf#Cm1 zHN;Tu5JJ0yG!A6bO0eXZv9czK$^6z|XAFyvnN8om)3(+Jb5y?K)~}G(y%`L;7~}VY z+y-nutft}FU$e$X0ARXkx4)pgdw#^?5A=IITpSf{$xoVawr}lPZCepq5^f$%U4`?6 zLi>-U^Fs7~9E+7MaR;oQPgVH^$i|&X)ph zDAQf#0r5lr?RS*ckOyyi6>?3=1tjoR5*VUfOpO`4TPM{N==niM=s+Fs;2o?Vtt^L1 z;Pi4de7_8vLwLPwM1a{%3uvqwv7j9Ra5BH7!SsxnGjYqPd%!qS(EP@=!9$|GpUI0H zt18W{>h|GOlleaWz5b_49Wk@ z*5JeR+TN+7=2wNdrBU(8H@H!1|4^uYo)?|QE@$mM$*X}%-0Z1E<|cYua8J$`o{MTvJ|jCWFh&d@w8AmayV!CL$+gd84I+^0I? zmXUyR&W={M6enJD`h&FleBT$#P*?XeemJ$P(t~!>UEd8ZP9h}mIve`PT8UT zT%R}sIh2Q8gtMd7q+P2H{zr#6J%w0ZAW0j9M+@{7DB#)4p-t#=SbVu$GOd19kXIZu zs-?Hvy+n^=#htSrER}A>M%SBF7zNEffNDGVL5B7Qb>NwYiFm$6+6fxlB5U}nuxNcC zFz-=p7Ow*7Ts!D?DMJtJs>_0XW3^Zqxd~IzNYT8yBGcHG^pTL{pZ@XRW|eM-V&DWz z!~k6YZ0UC--c^m`bY!yu9JuM&qk&6Zn$U4RoTp0O%MjIu%u~O~4N@{`Zp`L=X*TA{ zoTHqZXTSak0U}ADx)b)!04SRUV5cTH`HL&auQ~3|_0ZmLl&!WvjgAEF8r0HYtoT+x zyXA@UqO3E#Xf-bAL2qYqqNQy*l6$;VopB0`)!sZS6AQFS65+Gg7^z}g(Xw4Nlyh`H zP{C;^(EmSc#-sqzoqBorf6YtUU!lJ_^lKmu`Rb5uZ_v#V5WEp zMD>Fk1)LAv!a{kwRTlfK4yR3Ty_@CJa0U8#pA>y8R~P?L9>qh2#%1FxJ^Dh$=!`(MShGiOG$f zC!hGwqj3pC<6{BvwtIa+oftT|1g&t~_VJ$ps!zmEsr#NgDC{%61yz(=EhD-b!$i^c zrFOe%f5cB6{~9qyXPM1$!7ak^XvLy`gC2``RzoIw9O%Pc35}W<6Zx{^B?Hygi#}om zHrvgcPgS;dr+K3V9|OJiQXk^$ODY<5xSs~=wU_*~s4Gn6y&Di3Cc(eGEXkUG88{@yrW4^%oQsxlM9Aez*M-tX)8&n=|&X1L}33w)pR}}I^yxv&; z$TiB^D*zON?RSy}l)|D3(3-#0DPkOxv{GJCjlypipL#uchtzJ4<%o5pYygJu$;@8^ zyW)c9Vu^s(S-k+G*P0lYDVhX0m`mEcaxdJ3w)Wfj)}krmM_xDOlWT`SIDY)-Y;v;1 zUTiD493*?JAVN2bCmVA!OE)oC5e=c-Zf_cFP1!Y}JJMr5ARl_cL{5te?!LlIKfWvDN2U~bS%F;Q0l37n6>n3i_<&54Yd`?zIWV(4&5 zU$7&zlb1H=)u$9tjIjCE0g?2ea$xRZ7afZkJv`i8hUHdthUF$6N@xFwXBU|}s$qUv z3rh8S5t!dkm>o%R(jsg*i40|qM$3moQehwHXxi%$#?K118sl{Vsv0I{N;vsVAE|7q z1oou`FeoQ;daLF0&~}**+o|{)3%xet$wBW%EHbTX=BY1e(`+|zocq1Y`L%c*Gn@H^Tai`u$!$Np#9x4#E zH?hxy9r;h>`Cl}M?c3Q%PrE1!fDFPCCVV~aM74v;p&3~|%)Q}|_Mf6=J=_`&c5Syt zQO=G=Y1AN?j4H5K=yx#%L57m|AVca0IDkr&=@ij%@m?UTA^nI{&~obrQSCBn3*gk8 z^Rh%^!pfcnI-cMaq()RVV8zJ^h05hB-Eb4Z-fsjty348wmGE$plX`O)i43@t*cam6nSh*n}6dMrU9H zOPq2-OO~smKXFJ#Q5n8xk`xnm^ZCEwXMY}LzE6t!bVHJ{mAHXUj$y*x_f%E)@4$M~ zlA#DZ)-PdLG*G6fp;L;h%nyt>T<|@;E>b54!!_yUx<+3i!u$49l1qdD<9UPf%J};w zel=h|ewiO9Qj2l4t(XGq8rtCd(H)|8Bu$6xFZvt|RJVGH3QUFp-$bqNe-e~eeW<^> zRl*+1traqo5#U-o&|w4zhK>+RdCavOZzMwy2*9|v9MqCbCdW?e+*4EFq{0ZwI`zQ) zHhq{NBe#4^G?9SIz+D!AU;VDjrS|O=1C+fmTAqv|fI_vKNChOdq!*&s2)Pu4;4F_n z8)qSE*6t+l^w8bYNu8p)jY9HBr{0pMQl3H?LGPTMKfZpeZFkuKk~h=D7fgJYob1pWG1%%6G3l7kZ=!i(n{%75i8sSSmO+K{iCI!YZi+zNva3J%+RC*N+{ z04R72kCoVl&&y`s2^+&s96HVlWhKdogc@T!03h7{7a(7%#lVJ{R4Hf5Wt%gxBrY_u zl6sxRSXIscwW@<*QS&Jr0zshto0q7pNzT@X)nDFX<~tOR-DABamkTsKFy*${old0m zbwn(Nkz+UjDV#Q%y5iQ#C!bd;A_f$HBW}(?VbTxq@Jb*3h<(z#ds zZZwGg@=U0G`06JWfKkMGGm#BzaA>aQs|VO43OlmJwWgpT=*BH+X|!^qy*`>azalv4 zeTUAk7)&uriv4bG&?e%sZ>q)90-O|0AG+b{h>wrpr4-B}ab<3;W^O~X@yvjJL=uS4 zi@64i82AK)L2jZ(hBJsOo|4j_d44;oK`jIPb0YS^KZM%AgTpjtd$la-U|JU@LJ#Tw zE5WDW=Lx3RJ!YDIfszHRUo_BkvocG`tbPKKD|=uHAiZ?-qaw9?Qf(7fsAe5jq z_AwPTj1wjg1@cM3gh#8hFV0}2=GtCYirHy7#n&&vh0?^Z6C=Xl1Vp&$68hSe{vs8P z*xN7SCQynGO9(SamF?=2hQb`Yl1vgCo7m;5ZVtDhlJk9`cU0%jBR&}0@0S`M<1-mw z-AFlrXeTQGH1X+Vtb-!S6FGHk6G$QCC_6QsV9Z9)=2%r|SEt;vW;8hEkftL3Kc)ak z)W)!Nz0S|U0$1Fm2Pv%IWOrf-C4veJ)voBSFjM5fa|}jmo%KQ;emLNpqY|UfwH{pw z`W!h^t@MF4D2WVRR(-}|c&c;lhLrV7z~z%q7Z$Na#?@lVoDf;y0e3C2KS;(CUg<=) zWX$9tHZ_gkyn=+)&lw}x;hT!HUf=ug6v3U9Qit7z_|$a-QrBYJ(p3wC z?{q`|%nvrO0~;F-1_N`4ukHiJOIHm)ekXvTq4OMCGnLXKTq>^BuwdX21ZSs*A;W3P zA?#d!9qN93c!O23)e_D7)5XGjl0VNu)%{QOKk?OdwK=(0__CO z!Fd-hyCC$hyVf)vN)DT-sXv&FPixO?*p=`jiTvY8A28)1f|ym>c_}TNVRY_FT5=Y^ zzxywAge_9EP9I6tJ<35#O3=+qI@O*0$*!A*sWH0_oW>;Zx^Ia#N7ZpI8^z__*-%5| zZv;oY*P`QhEdjkkBdxN5#$y*xgpeETnnVa*drY5%HU|K`AmU*oGvn4J$xZ*y49 zJ{JTd5#LVd=D(t?QkLutCQrh$-3l%j@;qZy)yUr%mjSmt(!VlK>z+bjM*toG1|aM0 z?~H+wPwQ!embS>RRY-yT)25uT!y%teX3v(kYv4O%RhTJReVt+SD(E_^BT9(4!ytJ% z-9p|v9me+3iV^aw-|d?o8kBZa;0vG!1Y*e@#=ASvgL1X(k|b|Wad@LWH)pATYW}rq zSaD*bHko(4z*s)=I1n@)6t}@bUcwf+fw>AD5W=GhTY4Rw`c6PN-!~o{`&uR2rp1u< zmFRo~2>d?}c2GpuFo=y>MkCBCD*QyA8VH>UuGux^VSvZa){h}?IHDc&Cfq1mXsC?N z6@Gsc%EVi}2fyVE1Q$@Rp@0ufExfWVYpwEDS;_bO&}>yd2!$S=SP|&2N?fcdH@2T;0DVlZ+`t-0fNDZXm8uiGw-3!Mnfz2EzR8Z#slA`2o z+%}^t70&4spZ8?#&J@&xPsdb3)B2FK0g|J{W<4*~n&lO_jV*~@Q z*wN(^9CvYLXP_2=N-L9Sqx_Li%$zHG?{DTDNv~TyJ2=TBRjJSm|g_F>(O!fjk0&j9j3A6 z0SSW=O}UA!&Al^WV>MvvI!s&?eM!X)PlXs1aU#=e3&YX1Bxe|ExI3g9^1{M(o@AEH zqO%IltPPHGoj3ZtMsKTB#Q<|?>TY#)R+MIWS|X zdy2=WtC!j$lk%+w{#H;x6wg)cGeo_*5EwNRIHyS1AGn9l? z^LM83FgkaHfZRokf_us<;3n2xuF70G0$D;;TKK-xqp6x^+sS`1>TY8x4Q<|i{7Vh3HCg|)d{u+LkqbjL{lZIcWWXeU;Whf ztn*gw!W)aG*k%7O|3l&=+J_SQW;I}~QXiylFl(YIS2$2kbM67HP1h6YCxZa7F1O_8 z2D+8K@$Qac8D{gZvO>drlHNfDxq`xx+-ATjlMEjXo>c0=&{Y?u;k%KzT2J%gCNKgNvFIBDdW~ts*toU&=(u-D#8*#WXCtgeT9qEd)tmhs%Q{B*A4NMNnC_+4(BYVv4O#d`L;5ocHt;rx!_Z#RTVsynLkn+()G}%qK8>$=aTIanD+fZWC>lGS#t&TTR4%Wyz+G6bM7?A)2_5CFMu+Ws?+CM zgJev-9C-CYzA|hu285J{E-&1bsE!g-z*MCK?MQ+Rc-XYO&iTXYa~`yUYssm$yynL` z{amI=*v9aG3yO9=3ft;s*j@~fXFXQs)i;18yede_#4+`j@Zb+(t;&JE%Gbj@2I+Yu3X>vBN#w6>o{4kY{B+7Rf6z``OuG_NI zrR8Fxk<0|cSm09&^6)Z%?dL7V zQ2B*>^CvB$_xW1~u7ZA7p+sZYS&Y=G>9Y?;829~CoFb$B%L%`K?gdwx`pmE)29BjN z0Z}(4p`#yUw?JIdLI%ikzsVgH<24hf40jT@Ec_;)$GHf;UG zv>GT$3CX^Kj)XTHpkLzqRAr2#C6aIPtNS!VrFQnD2kCP% zP3s%m0{;%^Tkt9)Mf~A25m5kI45t_ywxJk;3Y06$H22>^(w*D!hUdha3Adl-12e5f zuu~~xmbT%>)Cw(lZe(N;G=C#FmuGSFGqdiGVmzQrDvib(?x|y`uSMS0lu6EG1WCS3 zC8vQJX_|~8ih^%Cs+OMmg9KK=@A)@9NcQBSslJa!7`1~DYFw7U3sGU`NerTSd^=3ObhIYz?l7f zn`#@rpPuM53;B!@fPJ`pu}2hFA}h$+@<^@6Pvr|oSn%5bROM&0(cw_D95aBl;|x>Z z*-zuJ?53GI6bScsyY#)mL}GGaY3UoQna-hh<1O*R|F}ld5O6DRYqdaF)K^7MH5ra2 zhQjit#M}aghb|2E4G$kD199Y+dW_(K;>evK5hYg(*9!l>6e@^0%xsQlwmG01`f2sB zMhj$Y9Z4&oa_>3^R?l=)Q(r7|l4+lQhXK)74 z9wWDGv+OD>piBQ@EPrHwf2!qLL4J?=^dP;+OF*jY$QX|Hsl?^#WkyyXDJ$P>tjk}+ zf`MDLSfsHK(Wbm<j zVl^6hWGNDX>FI&NBk)!Yy5=m1;RK}{uQhkVM%UH+N^mjM8`ntTO zLE^#QY+qN-`&hd(!Jx&4vhvw3_umosPCb^C6Run}$qRhx$0YaO*rTu(5Wo}L8v!9M);heY$kf35Jd)J6gY@0ht z+5=b#Zy>yTj49a9Uk%j;*Ib;5L6#2kkGDTK374&Bxke+k-g}Ef!+-XPe?(6miW2KthQMC0K`Fy6GN?ZxU_K=jIVQ4DwhJFvBL0nZyW=sAH2>`} zOhJa4@+SXzLKoK}?K;Z!(TS>vZ`lwS|LA{l4YiCIN#E_sdM#=0nr$xqY(9LVF7xa8 zc6m2oV9eWlP#ocdPx(T;oo(B&2xz6JX2K%f#jj0|TT z)}>B%SpU=>^s18ueMWdw-8d0LN5C|fCZ%$3GU0KOAFAHgsn)|cO0UbM*f0D+n&g52 zH1dVLDwPHAl5`Hqp(F%Pbxe$_o--i0_??R;auwT7)oBa4wdh*&%>2vQuuvvH$vBlc zpnXLFfC1O+P;#<9ba*rlrJI@XjhnOs^J#|T`K$&2TQiH(f@N+^vV7&MNnx?lp3a*& zUcMJm#Cg>H=l(Qu4^5KQ`tZFJE9B>WiO1~BFFdO7NIb;=cOPJJ?)&m*?O5aICv-Yq z5xs}WxCj?M9Af5r$7gEc6n%r?vTl)==A#HTrL(o}Z|oiaroadL?#$uub3cph{sEKb zXsa0JshP6)bbC#R=iks_SC>}nRwJf$h}oNmMb`bOv!@ld-@+K@Ni^(Wo-3UhDT`GH zr8W^HsB)z>j6KMiU*tKH)UFC^4kGEKutAQtSq&16lSK1HPGbUJjwWxr4dfZ%z@<>l zz(fJ2azJwOReQfB$@aNWkaJy9eFuDiel-GkoS(A_zf+fzoVq`9nsr!C^R=i_n2I0c zZxoELnxWBqxU)U@nSw)>T7}#3#3FfC+s&KY6Mu7$+!vFtCCZ2eKh57=%!L(D6JMb*u-H zOD8h1`Ko2qPQc$*F_LW53XL9GL49&01&fJ065N1#u19aKozDVW`{5^0bLx}3ZBl3I z-)9Z~HXYI31NwiP^)vyJjP(0EU%!~s_+Ri)7HO~wd$2lk>N98C{I4!bW7AEKK> zZXb+UoFs+yK;(97$NOnJneg!sewgT(WSx1UsW(8cC}e+5AI^(n#$KS-emW7fBW5RD zQ(_mPDSMT%9F1(;fXb4royLf8CC|CGe1xTOppL9S4Ek|q5&Ft6p zy7>pO+|cb@Pl4CZjhO#s?c4+YrqwLkLNQXTCD=+%mSh32TyOxB3vRQ$h#i>%YrrrN&6wh) zq(na>H5AQXshab-)c?c(ur^lTE3fIc5++vVO>T3-xnP#FxI{%3ixw1Wr1e6GmzrNt zRAG0~@I~$ACA~HviFhs~X~Bqx<_9Hrcqv{9D%#?#EH2ntArf3LqDgPpgnLno2QBEg za~VgtSZ_}%m8lP1#K)S@vJntY-<}KkBVhI2NA)6P>C$-+$BB!JOYOrcW_b<@q@|2R zyibn2DhB{7XsGS6tVwiaz~*rNdU=4DVjl06AvIJy6<@~e3 zy6-AUFNY?{q6qP-15it@UGr4z_@A$)JU$k+kx`UdeGLUIG;lb{u4`X2Aldz|NPs{( zKjSnZo>0i`wUX&6$G0HWgx>%F-+7^~ELH3KQTzjQ+ZH=mY3kUZhS*Ui6$lB4n*#OaX?HR1lYp%t~ zS@J7|mH!b%)olVxPMd7Et$IWXyefZIIm7VwhWO+J|7+hF0|TD0@rr_%NE`I)x8&>y z=Kk77@%nDuxA}o{wfP+Y45AZLz7vPz0=tirs8Ty)f;Ocn9HnT%N;ZP*qM&b zy*HGh43CCs{{shsali$K=v;^UM+2PQfw-&tl2rw~l#oTes$nKkAm1SNpJdhm!-U~& zW(Jh<20|T~%Aw6&j>2>8)r=`<6(*bdYB4E(eB2y&;kcN!@VGCL$j$EiS{m_8ux{K= z%K~$Kc#T~l?bff)sVO`JC-Aaw8HUh=wp1#uevDQjaa6=RJ!SFyn%GLFYNv!ed#)2r zlynqQJRJ2j(8-phbr3M&vpNj9J3@^0;KWi_?4Ys1f5(Y_+V4Dup4wn=ps2p%?8uyg z-3`FC5{FJtP*}A`RThzW$H^!F=uyCo`v2iJl-9N*rGlpih;oBk9z^Eg8{b>M6iuzO zuNnhY?cQ@q^$#%P(+Rf?;HuD6TMlZA&kBglZ@G@47+R|X{v3tLwA!}&Lj9vj?8yy> z0*}RS%}3GzV6>x&F+ntGEPPm^DqtkcdM&(y_*Eapa`KiDR}al zTIm2olo@GTh;LLityhp?4jskY`)Hm^-Y$Nm?pP(svVN& zAs9R(jg$uQ1rL$*$wQJ>t!92|)_)5Eyw1UkJWk>RbMIqOB=?x;;S3 zHd*O?TeP46qlHeP?#BIJ8_QVi&&`+uz+kk}zsP4#O>vd3&zakhKQ&RgFhzOGufhQD1_yBRM@Z5A(TX#LH@?sM-bo?_*snTVx{o0ZN z)MkG)8`FeK<>T}+(8;w9l+PlTD87CCfHg@n6TDXkmkO;?=+NT#w#?b3ClYmffmL9J3z$0gZNd+BxX? zOiR$&$>5^Q>~&&G>?$6|sn%npys_6PI>#yCiQnb71br?`$rA}jWj2!$q{#d;8|jFj z>7r4N`j`uf^}o2P7+R5)VFqu7n6JvZDtO_T99>pDe0L5hvc;1C)l?ehB+Y9y#gOcS zyiFJk!%K=pJ9a{tL~8zaHo&%TODh+jqrg10(Q%EZTne!a`}j+(9ZVfn+a}^ZrciaD zdYqtY0MuDS)q4Ioa< zt|U&@#xR4dkoZn3mAkzuW5)6lcP8I(E7co99u3gpTf}Ff1_Sgg7vH{Kjbc%4&PHPt zLN$^!8&+eg>R>#XpqI@I1V8)WGfTS(ddt8wT z?R(|=QdPK*hbmJP1$3*XPFC0ODx19*AzJ_bw!#McZa(zQQCifcd{dqG&PlmwYdB3HadRY9gDdhF> zY*o1;HII_=dyav%rC=Pt!$)#)~<8l0|HfzZ2T zc;cCjIupkTr0nC_TN;{qX==Tz)PwRnKw$&o4%lr%JjaC6 z?QYfER%Fqa8Ac&k09pj1@*tM&wtA4%UtVes6eXXb=-1)kVs!4vNK`{n7jZk+B6-1u zqS7Q!N~Ho&3`(L+E%Er59YjcijSJwug`o7B79}723vpBaz5a_n$dMa{T5%>-nUT)@ zNEIyjVTflJ!AE|x8g0)jkN`Q!XM)`48#v_A<)@-Ci>{GQ8TbKAN$kASgB$$nIs&*) z0&O1Sa^X(1?!Nk^q>~nSiO-mzBM|~zTS#>;T@fj%x&{}iSWqT(6Z4=1p3h1|+Gw_` zhUh0z5}Kr^^O#BCV{|%OevVyI{d!P0UcyIqX+wWQX1@5wS)lqu@)hI=;N+4ewvp-2CtP84T{N{_J$f{u5u&F z@~k?lRHB+rr~*5Rfl@s6oCbd$Zz6HXzAl{^V)FTOk#q)8L)&_nbL28R+k{lXrHhZ|+O!Go83U4f&uW`1%qBzk@R zJ;X=87!5W$Shw%dTPm#pzmpOn!=q_=|owut2BZQt}=# z>+@h8aoL?d9o~X*ruyn%43#pGu`(;L_6=)Ag(uk6OGyZ?zu`7vIeut47q))}eZ|Xf z{zW|Ru*3&WDwadsE~=j95uv}R2&I`J8tJVC4Q3~KRiO8rXI*o@{`)H{sHUT`gop5M z&KcDl7d$$@Nhao7z2BT8YdIFqPhoAMu?&Tpo9Ky#O+eQx89jZaOIQV2LNky z8=sLAPj^0hKw*;`%93x$F5jA1C?4sa1vX_YXO}K-y{Y35975IQlPPx=sObJE4X|-D z9P|TVx=4e92sACXNb&Aw#d_^7MleYTA;WM>MyuczL3YyEFyu`2Gq$(E`Y|Z2wSKb$ z;H2;wzFV*TEzsgR7Q3q4b;&3S)yqb$amKaD#P?ckV59g#g@qUaHtbny6({vMb;-8n zL0+8Zs?I>z#*Ev*!SG|a?JhR_7paa4gXRWaYeVrSbb=VFHC)?f>Hw5be_(sUDK4vE zjC}TUBOdtw|L3qI^!3@;sDd$x9BM35UiQCn78BmnuVs(DZ&ex#I(r+by9`Ig6;V9HGuT zpNt?<$^7IQ-S(7R6l?3yw;hgiWlf)1NfRKMVc_$CYPCO^V>jHb6o!H#1G96Y>id_m z_V{~Tfsbr!%jLBKe% zAfOfn(kgbL5G1c~cEF37q`5s+2N@9OozLq%P<@1WGj71}A7$$!-U_5h;SB*ex{i`- zNwkdF@Y(P5FLdh8KBSGvEjh;o{e|-DfXz|=#(PDV#cN}d9OF=lbp5$AFa10PMC2u# z@2kf=IUv1#fwaW6eYHJdGCCZJ@TpqdJDj{aKZ!?Fvz&$_uoJzfTR{ldmCzgBhl4>K zV(AsjaofxakV7lHnHIvpbA#^cV~NlSCo3xPCJ*C}$7R&%!5=mgyp&+{pgxf}gnjJR z;jxOl&9TsF3(X<>B(7J6Dj7g-i2XWh94tK0m-qx(cy|ep7%rJ1H@_&p#+My%A9XXp zDv3m*gk6NZ6w2vXpj^0R8f6(bIZv7?^IGt}#(VsHwF<`X#nWB-FKhAB?mF;A73PJM zF}+!?+MZ62V2gZoy~GuJPh>`!{VwSS)5Yx!KbsRDYk#XDy#R=hyw$NTse!_Yfv$$k!|W4e~-Me z?l@n|@)FZT5$Y^qSV**^xm+(Ve9@FlE8#iwF`0sdFXo|zJFROF(*IW=hoDM|LRI>O z`8CRW2eE#;HL8+HhEmgnNrB;+oL##&zp_u<@b9Y8Rs5l0*fWslvlgPKdK0TeXh+7c zGU%qfGkAVgM|V=8nhOe`B#SCQ!5`4c%g{VnId(iC>lfz!P`Wm&ywyNnwkaN9Yx6b; zaKW1(4~G_|j`u2T&Ou@k=FK=HES;{nO#^mkE%lfRY!|rI_V$urNnCGIP7bZxrr;9=JU>?dZm&KT)vjmya!f$I@BDr7z{og-oC&Q%mvAR z$-~k=QLcqJIg^@ zIKShM3iP2EnkKwo@>qck@32-@%}>Zi@Vp>;r@>%*!!NA^FHlagi1A!QNoFxf_eKw8 zWbm&;@td)gDOup4T+9udn*O8|@h}ec7)_VB)@NsC9C|l~FkEJ0^5m71v*>?eHxHK# zVO3W2*JS7zEu3c-X-bwj1co4Eev(w%^-UvwzT<7(#Q7y|PR1!(@gR&%ZZcsM6u5!5 zXW>|h?*cEijyQ*A2zUt0;_31f)l}xmvE)X8qH`vmG}QMPY&Juzl+IW1g0#!iv67{^ z+AQBf50tj3TrXtRf~ByHLFYYQ;Zr`37g4qg$lPZg-9z=eVuk)Ij6QL9)o%>!hOx&-#Hi-w7R3*1Y}NQWacaRMP6feak|FKI^*HgQ%*7!HJ) z6@=t;nu%0yqMqT7$j*MtWX66)RWm3s@S82}1Oha_$&iv~1Rwi>iM{5}CQhpn z(I@BI=s_AsW7b3hxwXYWXAJTFw^GY(2$zfOTN8pS{8;2Bl4IB-)+N1fWfag`4N^$vA`vtkKl=GXg@rcZ_-n^ zM=Pp&254;MB^IYoa0-%HPDd@p!|jk31m>wPnxU%-W@C$qtTNDvgY|KfVgtbW(3mv* zwY>E%5&NR{5W3X>!|PQ@fn;0+xo??G4U*7V$^^#Flmuwf(t88lH(k|>4Mm>?0;+rO zrUN*$XPEhoaRP_@nj-gZ4gf*djmvKwEVxf(@lCW`A&)VhxfO6C@actLdWj!##M?Y2nJkkJ9zTWi2Udlr73#5%dbSP zi*>zur?Z942~oa^J?_d3{Nv z56w7^t6g^qONGxvRC<7k-$GF2{s)44Io%$!>i%*ab$2a=m(@HM$-wXSwPFxED@>ML zHq+W>h$(dBL@t<8`LcyCo>V3b>Wku2aziK6{|LbBGW+etWW?nZDA-`E3@z|Hnz5i# zHK6HxW-#DyiAf$WxIcSb3QD5=)^p;ni~e4T;zNXhKXGv&LjbF^wvpP~K8fZpAFEWl)5qy3#=2ZFa9ISOkF(kTS-Nb~x$hqsQdk-?0%( z=L($Y{&kzgIcV;oOrG)iyIs>Vx(ot$|Ht!HpZQR zjDpCx?2MZwBzXvb)1OvExKQ#xBLha}%FWAJW(v=Eb}(iS%juApKBoGxK?S_Zw6YL} zB_^vKM*gT3J;^vChBR0DYOFSwqSo(Ln0j_6 zMe^G|R14M8>{i*2XI#iRG=$JwRc0iuj?^IbISP#M#FPoCnFeS&{-Iz4tk|~!+yIKu zejM%?byTxlf=${K`iC9dc)1M(OLM8wGuvQlf^}C`qbqcK1Yh;Ni3;Y!T)7>!Qdi`s zyM+(B!<6PHuf9zHNp_vW1T^gh?EI(qvtCU%kDxi@U3Zr|k~+Y|$2%3iu~4N9umPGy z;!s1MqDgeXzDY-*A{@>Uv*Eu?bY5$Nu<7{;#tp$|2V<@xpt>5FL2?TctPW*4&S1EF z#|kK;_(CBcEqu$jd7$Vr#ASYzTVdu|NC@4WdzGH3l8g;~MZqyfqG8GS-AYFhhP#Cl zW7(~xn0qr`bm}4R8)WJn@V4-na#ueLCbxW1 z5m9E%_SIS$5Uwu5*CB6}ujU=Vs_DUZ$F9ZE#3;?=d_`s;etdz4S$?v1<)}PrRg6s- zp4Fi$yX1=Amv^spO7{IMupSxTx%pC&tQZh$*Wh1ZqufF3+4wD;04-)y zdTZ;Gxr))5@g#2;J6an|rB_O;5Q7SLTx|O%rDgy_S0uYZLG*qYzYtkDWB+}$MwZ9vth*e=KA zu)7h*s44(n2p>V3N6b;**kkEpYS1YIVXHrpn-xt9Jo@anStBM&D;&(B440ga3h^86 z;J0>`gnVUSdfy^>R^cms`4Ec>>Uzf^ze!!2;({sj2vZCEWsXJp{G<SwP2{F_D(~`~l-+gb=ibETRf4$D|CXGDp z$3NYNDLIc%^OW~nT5jqL@1V&ArB@9dj(xaP@?dx0AQazBY@L~8mSp?D)wLKI7o25q ztskaM<(Nldc>rAFZ@bLQhDp>pYDBzJ{e3kUaUu?kCY?k8su`?9A1S8`F>fq8@#c5J zcrpCm#MaQHHKw9eJUEg%FJw?qxUc`eKbIjns31G5+<9N@+BY}f74Nmtf0Lm;GySOf z3(*I?QS1ICv03lM;-Z!6oSTMA`ksuAW3 z!o16^ym70x`7(!L6$BJB*%q-cg)=hn&MCb}{pe_$>EL4%tn>QnJRKDEBDkr6)y; zu*=<>cACA^C6KgqmMtC+#~dIb?%4U})Zisp5ijKOx*tqY60LqXeg|EnRA9Cp@?azk zm(jE8J|Re&+3aFz)8ARt3bvxf)<=%h)REG>q9+J>KLE}FyRt3IiEf)EL=33@)K1`I=1G5t%ZY;ox_@K^-$&^O||pJ7e)llTxJw* zYE%@jm#{N`e zW9L=2J(kQ}QFY%~gyDXqIc_Awk%!|5Do^U>TK}vr_VaIerIM-sQjW5mEo~k5w@(zk zM>dp!`&Q(!l2!lr0qp!QHhR&pn=V53Cd@*Nl_sNbBy7ypn zR|^2hIv(jHh>qQ8{^6a8%A*wwTXFzutz-6eEyHRb7;e2+S)>%#BO%-KGG69?7A{11 zd3oM!?#bI3K4Pp6!o##4)?RhPC@1CqVs%%hhp|AHpBuvWaBx}Gsp?_#0xa8YZu9|X zFz2r-Ho_J&|HV3&x8Oq-a;+^`{$Z#i*MsT(Aq(X%V8Q_UU>6`_X$i2j-3E&fMtl-J=ia=e&TGdT;A0hsdA-qx8`q!k2P(c()eSwQxy)_wq3G`GRcpm1;e5 zSB33j&5t>GTDMjmAPK&9K=L_4g@wM)Y_a{ncHpSRl9ir~aR(Cp|FF+sq?xR8BjUPM z9{djs@uSMBtflCwU*->Dazq&@nh8_dF&9TU?q@!KOvvJiY&#E}QZMlfHSro-0w~Vx z=4c|g^{!2PJib6@FV~gAW0qk?aeAn;oT2=9zVRu1Th!RNr~d<{(JI}yGgwX4A$Hn(b#8&jucZQ33GoSU3t^qTc!|U-hGWy#^Ya0FX*K8-xY~??3 z<0&*S%j?}r$Z*L@GWa_s+??Rf8RbtzL>Za>vKl9mM_u?2Y1-4_nQ(v z^%SVSF})V@XFI~f)}fVcvw+IErl=w-9$rU7+4v>g(A|^bQJ8KU8NrPEh~7)6%2)}6 z?;VtVQoQiTWv~6W0x1&}S^!RJwug#C5X`y*Kl=E2j>N zCZ~_f9ptU-Oc8ITpjZIc2CjUGtumb$w1&NZlBUohT*>7P%YjCYWc?K^mJS?lR2?eU zAZqbhO}(*}njWP9YH+~UEDt}>%Ich)ftO#|xXFPjyu`$>Lp~xldJ+W)%3S+fNO37t z-Fmiv4lQvk?fO{lKnrC5gO*MrSiJ_V+mX8pZgNPUlLsKS$sCKXK`rCTA8)b&eS8Sd z-1&1>6V*WS?fXSL**!5bdO0-*e#Y8i5BC)c$t&uDa{sz-)7OxF>M?TYj5lwKRD>Ankn{a{k+Ue-B`)!f^G%2l+3mYlF zMx0R4@uu#`6dO1rt5TlNHK(MLvUPiJbO^ds#m2gLe8V^?i=kXeIc5_E7P+8#VH%8p zOHXUxwFJ~KL{hQKXWOcix74^Y_ITxTl^4No0E$4509UdPRfT!UKubw-88&IC@Rk@c zGw#s3J{nItErQcOK&y$EJC`iTSSif$D^k9?Po?MAKIQh7N`bUAxpwuIF%z&*`25^>07rkFPYoL>ic#>gN@7}YUKKDZ0;kT~^nf}Ap$wK-7 z$>AvF@94}lNFo1sm=DznNiy{VfBGfXjQ>pkcAwjP*%s&?z8qM!`$13 zl3gZ$?KYBHb`2p+c%xAQ($Y>SEG<95 zWF)sE@h+@=z~p=}F{Iu##a!;U!H_U9C=JzsNHj=!i|D89GKSbDEinX(yL&wLtZJ$L z)8cxj-`3`O6M=9}24m>xhhvmwlda4V71r_<#$S>9^pprR>1L>AgU5kZ`sv2HGa=AjwjS!U%^mA^T$-5!AUmt zLDd!J(k?lgGHkTQNLzh~*bo;@X-y#Vj4>_QPYyGsL3GcrdWcY<6Eu_pl6h?S*}14Q z|278^S|tz0>|8^#@n~iNn2OjXTo}Kz5Nlxod^>c>x|bk7u<-NDa*qx2gwbxvDsDCg z98@h}T8H=WTAoGjXVCluRmR|D^Y)O1^Tgci@}4IZ@3*^_^nVKUoSxX98aG z&~SdQgrv6~XQkg?5W%C9Y_nRgkNuu_5VeaY=`E7KphWMdTEAC~?IFsHc((a?S_kQ1 z5UYL?j#GyK!31rU4ASsIJBsaxRQPe=5kTcW)RK53Qh){2DdI#x%Kr!zXc+(`5?}K! z|Gpeo<)NQSDa)hXA!ofoJ@NAq8d~zhebwY2j^|~O7%(8j%AzvWW6lc(gC#h1HUl`W zh<2~>rK~E|a>R`v#JxDWLIVKl2?ZQj2uJCWt-R{f*Hw%v{C9?do*)ND3S{0VHJX)Z zTR?_mb7p}r;=dSs(Dj=fBA=geiO5f*C?_dc@h!vDr}>UUJsMOK5UYOOZ!4$zadtHODQZhII7j zwCyNwNFgE5w4>L7Z?S!@L=IjaiK}dj2p6Ap8cG`;6mQ-=1dhW9f1&Ek0B*W=7K69; zWWK0lAS0MaJ0re-5c?sCQ@?WTwn3@LST%_GN{AEgi&%)IMgfi_+g6X>oRgZ~YX%&7PFq6uX1*DQsF zpMNF?V$>7PSt|C}4BPIZxW$&0tP5Re=gubvLMCo1S-Ryk5THRSJOR_*5?Gjj5MklD z4h0eX%d%=5qh5RH2kW$tW~n)k1^>J(L4L`D*m1eGm86h?j5F{zwEJ7?T}i$J9SydW znm=}KO{5ftxipv*A*ZZG{8zVTOjp zyqf3Ey;?#2XWtn0zENt$HN*kOzGw#JV~1azIT)GR{md29!G5nma$;7C=Ks7niAX=a z^1lmV(_#9fG1}N_QpV$6{?>g@rYCORCAjPAZn@vT4!p;gpBUT`w`;Iqs87&I>zu5k zSpC)U_J>QpB8}oLL$j5flZ%l3sQM6;|G1)3xnJ_S9j%i#kGEm8g~-iaCNWZ7iByKX zc;DoCwI2KN*sU)S>_mi*wZkf~9Vt$b%8>t6cY|#DLGf1<8Gw0?s_7()qFzMFW$|0f z=48f4*5hIKMZ0w-nj;TF|Bs=8CgPgTFqdSl-Pk!TY&(wP4ce4}WnrVg@+z7l_3 z*Pe!crF@9IF!j}_q}%kJY~X;uaVG+py0grz*YFaNKMv6JK$_5I3Oe8OuZ2>7+-N=LKB%Psio5d`HsUMP4`)M6>6BI~0t}jV;O~ zc?y;=<{vRsj>k-*7>z_{n6CRyotJG|`EqU^(OW%3;n- z&W|};FSFmXoZL`k`M1=@OnHFU)sz8bU)Z9j<3JWk#i|XY z0SyFNf&$Kfh;*AJIeKF+8k_`TNi6r2-@>Rlm(5l4d(c(*+3WB4%MRGS=W-!PNgcF% z`9&Z1R!A0)UXH()poQ|Br8h46mbs z1f@pgdz2HN&hv9(sykvrl#PuGq)0%-yoEn!C!N{k)^@8V4`JM1pUG8Ng_ zPIG!^$;EJaMXHz-?<$xkwtyxopNnG&=F1=b>*f{a4{#O7ip&WlL{FU2%_}{+ta{== zm`1^$*|1G}g9UF5R2k2?8+NMsiw7A=DD}lpq9+$lHYHx6?Da_yW6$=(8h8^~YLhj4 zNhX3;yGEMFMa1=+PnS01P|lsCWt!HyFr$YRSt#k`EuPOhI&{9}TMPW+kIn&A?t#Ks zIYxoF`k4mraa98hpXF*@x-HR9Q7#^WKs~F}* zO=25z7vhL|hYS#c)ZcU;sRj0bc=RI3@u$twSDHevI-6en4okskF1`mn_?*`U^t7G9 z1oyyx6m)qtForPWqj69Mbc@?JG~<75f*nt^Ps8zX2i)xp?&K|)Z@QmaeTqnF}rqcJG?w(i8FRdIjH}_&m=Nscj09oXT z^xiIjLi-H11m8NL-8cg=J1;eCZ`MV3bc$v~AlAgyDnF&!Pp zHmfN`h|_d2Z7t3?&1e_;=7Y&=@k3C@rMQx-=}fg`ZP>ChW{X_oXhcx5usWlzTq{Yv zzwPxfy+Cd4_kr2-)6Zj_Aq>I!E8UG0Eo_e`$J#250wEo1@BZivk^3(&m%i0!oLil1 zDwc1sY}{sHLtavYEgZbC(*y%Zk{>m}#bjy0{;SQD{qBPD_WB=(y`_X?Ba@^At zxxVLydq`6Ap!VY8rooB+{enI+5C#;s&nKq<3jc!yNS7*_W!o)m8HJRN)^vTEJe`q^ zJ`D$aCHQ*xlac^&0ni@QoJhBCw;2w2S(I~0{O<3tmpRg195$l73=nJ>E2{?rya_8| zKBFIc>c`mDFvJc^$FvrAo`@!rW&!(@wREaguwRfk=_-n3pBcpxw&Ly{{!8O&mMzUb zJ2TK;{^%ZXsV%|(65{XZ*HMpmv{J~4Miov=8FwpVTy38|gQ>$5$UbiDnU<0w>;9=T zATJ8{bzWNxAk721BNWoJc}h`i1V!4)gHZxXW;|fknH>s;SbiA(2oeJ#qH``jcdoTf zCE^s|R)5^powNUKV9LwE`TvNeLTDUz6UA;bPhKBmIKY35$UBZ_?kO!cGHoxqC@9$v0vx==;-SOJQPJz+~Pvda^$FjCB%+4N7 z6~u{HXf5f4YFu1R&RWFu7JwnJzxii?A^IB)>a zZOYMq{hSf5q@oxkZyS7_OiVJME5;Em6prF|OVoKRW~pd*hT8K&=CIQF5hknz(Dw6t z#(*Hy|BK_PSs=4$*y_R$3m#KMZ=-DM&PGmA4sv{Jg()0d3@RsZL$YD9M{M{(aWR3f zX@d|Dme;#o{W?a*nBpypO$e<+hxhVA@8lD9L?tM5(XP~$+m(F=RvS>%X9G;eAYsZ6 zDS&-_WKfaelOlTUdex=tsu6f?+;m z1Txn6;UmBQcV!%x-RijcdyJ>n0qZm7Ut-v9v0ZT^#o5b4a_J|BMwtDgX0^R1if5+; zo_tnKxzXE+E>1$@;sTea=yvgyg9q-G4+n?)G_enp;LUcNf#ajjsZ`jbP=PW+=w)Cq zO?vZA)BnAzl3E@)qa4l{;FIrLn=>JE&KG)^yR)QO80DTZaOWXJsnm)yI<1>DdVm}- z&4lq&-CI?{xry}h`98F20cxGygmPCH5TFM}KJ0vXT632_*(?JH*54oR7Xw{-*oo?4 zS%r{V0F^$YN*EW#fAIDCvsy$N1Nq$vN6jOxE`$&swHOPJ@!(6=vbeV@h2w^wE(6l%)5?*})PmD+p)lNHinr?jZeZY5O58LLN<%RlWc*u}Q zplxTjryeUbolel^2>(lNU121doM84lM5~$!=v)@WEYNtjjO@zC7kq*sCFepNa+()bUj$+cp;hT zNLpo=NKqpn3y#yy9dI)LVU)MErxY(}m@jL6PN;jKdx@(5H@WFe$J&0_P)HB9_KgW& z%X_oMRi4)fvFK^NFOZ$hwZ4_&@2mLNo7L2nmVAYia@HHc}XjyAghUa@geb`a2lVy?)L24(@ zg)N1U^O`>vKkO%WC#QOaQ$pUGE8&{5J9Bsg=6|^dmMezEyG!*SoWu?%oGMza{T;os zaDX;HX$VJ;a#RNUbU(7>4J`_e{r76iZ+>^x8D84=*Zw_Bdo4Wh!)nPG#HX_+>)r}) zVWz;&;PeXu3pYgy`fNAGv9acbaNdG`%Tm_QkRh9yrrEVP11!W9Jmz|37@{OxK*8Kz zrM6?jZ4Me<<((}DTgZV8BFo_Qpz|j_O;Yr$!*x}kFZDW-vbtXq^T5V}QwXER8H4MD zs2Eo}5YQA<4znm3P&}{UT^b?tX@Y_XuGzfp5m_RQnWJf&9@V>z5q)kE zoBa2jJ*^G0R!bTvZum00mdj|wOPit-mVzuhRqM2P>Q+`Zb2OL)W}?5(vaT_j@^q*I zPV@{oL!`&nWQ>$)AOACZyA(`Vg3vc5%K_kT!t0OFH^>qIwnS+W!)Wt8~gzgtokYsDe z>dDa8_@Gs95s?U^)iKTE!|h`d$NmpQ?T_`U`8tf`Vkx5AQK}Y!2W{;dHA}Fewt?(@X?_kz;(Ei#r@$9@_yBu6A&YZHNT~XDbwLiWH>W8_8#A@!j)Fp|u|%1l zhQIq`xrY5RU{MO4y2Q?*9Nfm3AWE{nZ;n*BOjn+_;%iKD^`8j3)p&at;I1vM!G5So zYvXW0*O)B35@ShEMOA@R<_~`LdK#m-K&=gFwDtBYEc;{AU=rrs19(P4G3)bcF2 zZp#f$dH37a2d7oGu|q%KA#jIsoOE`=VGTq2_zG+B#INUt{A>Odd#okymsxllsK0e< za;ixCI(hxy$s78J{5--ULu;!ad)V%eP))}}K*~cd&8^NxBrK~Ek+zSUjAU5F#(LT-S0M`SuQqt7qVDv@ z(7O15Ym{GKo25R)FHcdwrX`w2SF*J3uZ7GrzD*k%>BQYGS&H2hihGVvr4e&%j;#v@ zF5ffzHJCzTeJBUV1$K7TjVmNojV0J!cV|}Wy`>g8y^1RF<8l{OWN>FYkI7+gDX^sE zvrb3Fgy+v|Zbfg_m74(rpoqPfyid$~)=0Y!?Wt_}oZQDim&fi#F9GRfEjGdp*s*D~d#az>abYcDn~c%AT;-9~l2D zP$&pjdtjhKMSVfxNKO$sa>E@I$oSPI68 z*95Fulcd3YeGHe8G}RhNO%@O3N=Y4k3i>bl5|T}b88doL%lcORf&`0hz|s8G%u)c=>~Z^QD? zpSxUiMf5p)_Gg%2weJ0o2x}UR%HQUQT3gb9>#lxSsbTWVjTSBxw_!cSZkBqa^UtME z)tyscBX%6raDVc_opv6`x^q#bAd(V>)jVde3T?$3Px+$M7=>!iQAAGGfajJ-U$5nL zXvhO9)}Tk`T08q-tT}=~K&(AB{QzJy-ZeSBNhzm0zCevutlz89X)N;1q1Y|#WdO>KX2{Q?L#h&HB!fk-1NZj@WKAk#1${2+Y4_z6|W8M@gh`=>fjO&Ct{;9|+8 z2mer`=i0wy5r{|v)wEZIe#r1|_KdmhNubf!QZ|(uq>o_>v}fs=Fe7>5uhs>!n0FO4 zsAq;OFqNys8kLQ*J%$=gi{qTC%&zRMxgdOsAbNT<-5ZSf5`CCo$*!us4xvUAu#m2E z&d^0FyIK-3FQ&5iB-)MEUaCMU}Y~sHY9xip)DnH-3VSB=;lBpQN*p z$_Hng|0_f<{@s@7x?A0h;;fs=;9#oBk-g}6^6F=Ve9sSw4i`Q=sOA}-#H8|nJcH3&JHTX%Ydc_=#T`f@0WM^ z*wopFh;!3%+2}dw&MPQr;)1_vK*?y%>aq23D=Qso=aJnhoTC%_CleClx-rxwNAI@$ ztXI?yg})-6hl_c9UR9R&wXYP^%XjD_t|?ilOrOu5{$pwdRr)GgTU}W45A0&BJZry- zP0B10#*mhNB~0&jLl}jX#mUVIg;DRzW*OnsQ#!KW3pCvTH$ce0T!PhYLq`oaq_?hq zxKm0`hh?9%hV%Fwi0;g;WN&}9K6Ft>ihC#2iuYJjpH*+js)X+x0j!~rxZps_J5Vr?Emi9$Yp)+r<8Ha%l@gNbB^=4FjA{eyt^30;pD@R z$C~XA+$b>Sjt~Uq4#t*n!CknEhU!gA8Z%r42Bt#Tdr|f_n5F5waaNA$Wr~bBH|Y;s z_bopnBv_YHYaoM~$UZJRKzN zM5OfOz{>g%zdm@#9Yy2{z2zgfu;||L#xQ-q`6nieb~UQG9Y32(d48@M zV3FN*qXME4s3Y)rl`gOGLf_$%SyLK}Eee$d_@d}VgW5<7gCEHu}(!{9(z$PjZj-_h?IV=CeMC(fy0~ip~JkQLaBMMV$V$qtaIk%Ftf()HHSS%`4l;VBhOQ2Z> z^KU97CdttIrXHa2geuQ+_|mvrI6L(^K&Xfnor>1h(;)B6OZ;Xt>v+v18;YhVTy1+$ zv}_b)d5%5Va1ypoQ5v|kseY|HY7#`BR%~5qjw*rk@dnXK`ecg6gX5D52L?92UdE8t zKs-eQD7=)KerT+V-E6@52`4zoR5+dRn5G*q?BT5rhBjL-x2j2zT3Q2JL#GjCg+tIW zDQs7&)yapK;-;Vj12dk+0NcI-<$B*%Zerj#n7_oAvf$>XZ?r0UH9IU6w)@WZk0ybS z>jT$^5F*x!c3+$E-wBjNh!O>E9)@G z?MMTSLq_<&Fy{dBD zTjER*2*I)fvgc@op zQN_){peq0=FfTbVOwtnNv}K;fZ!{hSF#1ywNeF!+HN1IWD3dv78hz^)87qe!%Qe3- zbkP@AIV;kAMuL0~0JM_wJjOs5R#ezs0NZTOsrc(QfZFV6b*^<)J~i1oNhXU+x(gC6 z`ywx|EoX!Q3WOuYJ2zva7U8iR^V>El`)HfZ8nO6<{*fzwaO*;L28 zgmhSn5t$=tzzINQ{kDtx?5hpp`$gfG zhoE$u2T_h*%|5#m+?#51x*EUyqi-Ei3Ks}6liL3YK*ofFV*8$9q%^<*HZ`mRnvK7~ z;ee5k4DRK-VY!=~kT5~N%V-q@Q=)gd(*f@{LAybsOpuY7rEmPKa)_f3y=6oq;F6iQ z7jW`%bG#_mN$@!(_H)Ta@+FH-%devda0p6X0+-Rl1W?CoY}n;G?$;%pjo+J!;G2B6 z7eOgStzUvy3>;QYcM;P1F2tdihAIyE<)wNyKjADZ1;k~E-4Q*;*Y`TSxUsYem)kL^ z!v1_~d0Rm6UGFldkT_6wWdiR_)D8KV0+=qAU0ikQ`&N$pHM}LW9EaNp1ZeP5YfJc! zuM4j6pK>WVInBI#H&cl7df*O0o2tV}`fg{RS~^1~9a|$>>A~)PYW`^ly52$BXt@>u z$;D#ev>i2glv;YNfwVV)ZbGD{hbVi%pBy-KERvA9(3{~EHp?ai#z6$2e|x-ilP)crx{u(9hMF;{bT8V|E;fVZ1qRE-lER2x zx3^}a5DlKyKaN-lRf9Ykx8JI4pD&0IWKPjP0nx(6*SL>jH)HrC;?g5xayueis$4|e z(kRAe48nm)?~#%;ml&4R=(C{#MrS6=bSb5EmnVBpe(* z;6R!N1y_#>$@J7-oEA5Hp6;(TFU3R~_K7wrqwaON9d?!e+pIN z%?<7jI@$f_L*|m?We&blF`fyW(%HgDc}tpEV~PFzNt9D6uyfL@oR!+B3!cewSAfpl`eX zSpq}3S8haAHzEhx3e(wUB%&FNEK8sDa1#bh+!HJ;*6MPdEJfAnqlLIre4;fe1IJIt zC&z#yLdgK89Wb}mPH$nDZf!Rl+6CU2E2eSDtpc|IpdgtS1`y0nAl*`i!DSuJ8i;q{ zL>8J8y5NAL+Zn7xRsnpd*4haaPLGTV#Hp1iS1&K|GZm^^Qp{*>cAeurHdruPbks~! zkQy^297@Vb351a2;K&>lHt9&VXGSuH!B_72$Pjhz>f;}VKq;m$09h?$q~RnV-;o8r z8{Py5j)gj(uDj< z*2Q)Sabgtawous_Q{#y|LDKYCc^&xklfvi=!#H1nv}|g!;oxU7b}z-4nTJ=U_vCQgjzcW|P@O9dv{y}FM{BV#4Y?0+5n0tztyxVe$abu7`Zp|_o zU_x*IQ0&hA{e0pXh3K&WfcPDEyH<2y38M9!Mhe!aka45(JuP`3b=JRM zl1h@jP1BX=k)CSwoDb`Gl!jEc_6(~!28IUI(7b8kZ8K>6R!f=1wVh;4_S~O?PKe&Vb`8hk3}R($)+x;R zrRqsCKV48)FpVgx|JoI6;WdR(P2935S&wUQ;qbD~dMfLIhl^(X-4)o3H8|~IlV~oa zSabzL(NF`iS2@u@nxg!;*~+p z8#w5Nt0Qiy4iJ~}yAaBvya27vg^z9Tf9S;Y<|DTq3u3R4J*oe;pH#9^{!Q47mi=Q% zQg=TZb!eqOmmR#MpRw#D9M3CTtpgD!bWkeCdkV+M0A4ipcW3(^g4M0dzJ(e_`D{aI_wS~^j<0@7F`r|yQ@wOtb&#`iQ1*5b)RJB1+*nm#1= z6xL^_U@9R*CUlln)7+IvQ%3kX@BnO+;7T(r(Cm#a9SX?n zz;F3yCwsy5B4ce>x7XTfJ(O0cg33+`sAc=(ZrZ;og3*3+oo-eqd6aNEPRQ#XJ0A+- zOZ$)G8&KHOtzmUt)4(B<+6I?(n-acm)(6)m&y^eIb1jju^l{sE-f<3!S7wJ0P1_M@ zY?wa~Es^QNVoNH@LMYuLACz&!{^%ci(yHjK@My1`*yo+3KI<@Eb)0k}_B_KMN7(py zVl2Yv*1`1@KOGgz1)l{ZwTDz7*ePgZh$lT~{3~)F+KRyo|%8A7cS3 zxVO|YWr_KTQhTo1S(;v0-S;wyQa*>BO41NQjT)>N)>EM_SnFqV)qYn1)hrQpl+z?P z@nD%tEJtt&dz-X!8{cQs`?lIyI|6zbnfK973AAatiDiFR@0#b*{Vw`WtB3C6i~4+? zYM{-}#6B)OT_arK)sD^dz^Q1ZG(#8AS3|>_>A%Hl4A7(JGIxK)FV?FAIPqJ2j*-tX zh-VdcABvY4f{rxC-PTd|-Ce%hcGhs?#XQ;&5VFc=s_!yaRF=`U+z3RQ0FsAl_vTQc zr4yL@b${;RvEf)YBdJ%I7e^y!;DBg_obF1@*}qgs1eDD%Q`%Q1M(#3G87k0x7_3WK zNX$ym7rU}0UUz^0Bo)x=DR2xADF=V1tLrE}JlF$q{#FeRqkAjuSDMtcsR^hK{lD$ zmmDs!l?tnjW9fd&>a9`}tQJ+_c1vZ5eh*T46w0^_WeoHP>II#vbEJRk3eKs{pnZ)V z#p(pWOclmza6%iS!-wKzsKQ1;w%)hlY4(N1vpRk(Q|o&3F5PFJ2Pg#P|In? zHE&o7aLui%ELo3E51l$sc<~vqXrOOBU=mR3!t zh)^vDf@gs8k9Jd=|8A}rhfeI=c!)hk6!>fPk6v?-K6a}N-0NJBrrfs!vLKGf5{C?1 zfNf+j52W*JwIs8v(``Mdj2|hT5#eRnMG@S#mPRK zdv?+W9e9*J+DusdkFC7hzzk_>?tLkCdck9?6aK;uwgq{l2|Do;+G%GK6AxXeKlBDi z!|&1syE5|S1?IFQ_B-G_DWfe8J{g_ZW|r);SDr5Ks3^a|A#4l@q@@l%bTJM73Tk_c zbo!DMn|Wu1ugox^HEBk5BM z(4%ENwyL=E>c_>G=8xC6#UzCgq>ccS=ANbgd?F79Qbp0y;cda<7f!77pHq5bA*Ha@ z4DWtzQwQ-k#;oKwN_#Df$@lh^&HVIRYw4B;q2TCdgxs0tZH5if@|EA_6jT+z;owUK z+PD*Ez5yUK!O5Qd?M8hnDyfqS&yn@+N_-2K?$xAS@%v9Oa|(D z+Ngr5ypRf}MnnMuoDhj(EoS?8`Pq9T#Ea15B=&Ono z(YkkFaEDn}+G(uTI$Hf%k5{YeTWNT6Ot@cRUeB_tY-$ta{|p=(B2+V5Q5 z4-UvMU~LtJSfSN0fh(nJn?I^wFR~66Cwq0>+sQNXPW% zglLRQt9L`fMv0&YSP?Lm=;^v?q$>VlygnZWR05NVS*`y@Gl%JZ4CcO&rZGu6p%j+m zPW0M*6p~BU89Gm;By0Z$KDL6=0;P)Q2g&(2kwrJ4O+@gI`BYR~ku7Fly(+^%XBw5S zu1TG+IO%UM>Fe&yKB1dl3`WsifwK|hFkc1?BC3O4uM8=?VpF9LxfyDOkG}$cepp>- z7qEZa`OAOIZ?b?=>bBK<+1Dp>Fv*W4#Ja8sCdixN9`(!Cc64|aYPo2>L&f@i$bu)*0w7Snn;(8KCvgqQen|w8P zJO~3ySsio{vso_MyCS#2AdgyqmL=Ck5P@h>y(p~TKKExtpkM2#iq6t+7f&0@ zM+o7{GT@c54)zWnGR$G}F-NP)gMDoOD(z_vM9kmF=2(;zAY-z+BWV8+O+L+7LI}JEr zR3A6oa_2?0;2cLIaz)BmkZjel=bD`&ae2btjPN8*Op6RE$n%3_iRk<;NqZgj3%2KI z@L^LiEUKi$Q0uWlq%>vHb~#oFw_#9QG{4zO#`52Y%`VNemRe&h$nTTlZ;?5d5>HG` z1VI2uDTY~`$P4dX@oD|$8QL|)C6YNzfF^p%os-9#1gzMB(BgDZx##%g5@jjcpj)Z_ zhN)9EB=tiiXbH{3%fJQ+4DC9g7^4U2W(|0i?D3Y$EC>8o`~Z3qV&kKXxiTwvZTDyH zcP0H6?oIs{D2fY!dmq)dDA4jD5oTj_q=uPPu zh%hVbtWx%+3S8}k*4yARsi~@@dNYFbe$fs4OF{_5Hlpd88oz-cU_NpC608ILPlxXG z3lQF2Lt+^>Uh+9OxKgVIb?Ywq9;H3@qYAPwU0DTF&M!_QQY=RggEfS<{Bgg4ONpmL zleo0?eKUJUp8M6xbiX7+@N{iBF5^e6_Xq!<(iFun6wUs_G$`qBiEpLuGZl=u4Zn?? z>I=ji7bA;_gbq7TTHSBl_dKlRBA7xX7=-{E{gg<(|9Kh=fBSyYWDY-4y^CcEa5P&{ zQJ&xnILJOXrmZ>!486;pcpzD;P$T%BD$c8@n6&cGMHf35JPk}(-E4<^ah~lCcfB$ zZ9h{<$HfgDW=vLZR$*k@nxBqF?)zk|sLE{!UtLg7o2e&*!XqlXkmw9SW2zE&ahEmK z;>PbRJZY!ky)ZzsO;~Kd_&7!)Y0b1cqGh9mQbzU(dLIQ{XvF4kl}7>1CQXL)OC;E> zce)P)Kc&%xOrVH8lV0@wwtyrY08C`Fs-c$qs=Y#k!Y_|r%6u4U+246K30Gs`1k8aU z$?)SIDaKjmTGiAQKf2P#y!fpveOCv|FBcTj#u#}rM*lw34dJENP{ASBZcwMY&R_8B zoW2fn%!=W*8diCCXgt#&ouJyB*9S2y9e&$_wdP_=1ZitAR}3g0F-OjPjI)W6O|*sz zmtdc}%(Ec#(v{T9`jSEydSN~0<~LM!3#>wQNFBHf1*M5?flgZ1P0CS>2=**m^tA&H z;MfdQgwsTz&TMG8fLa#atU%64Q~?v3Wz&N{!dP`?=>=1(*h~7l+0u(hdTT69(EzGK zW73&9-<6d>mNjEH?O!dyfNfF&(WvqoP($A7G?>E<4w8LPgnKMV@mjw2poVWsb7dEw zp#)A02&Jw_QY^>8#;poH8Sz-Yhu$z;kf_hxji6!J_62v?dfae9=GO-piFt|rnrZ2h zk=fq>__ElsQT7K}8Zd;x&j~B2QND8Q!E3f+Y>-^7+wxk0h)oh0xPh8RX?vZ_^3J%P zW!HVPPF)@5ws@9DI4b6ABYj9{!g!PPRh6R&1wwL6)E-cA!sBoZ7G=#b_Lw(f$8@%j zqzl!ZX-DlRr*eZytN3f(7>Ysj`pQe>zDD^1{sv-PMDS&MWoT)b$>~FR>G*3jjraDQ zY^l`c^T-W5^`b55!Hu34xLx<=(Af|NpXLcmr`Z{zswVJ448L|zLcJ83%Tpw1Nti7i z5rlnipi++*1x)!PS+(gS0!jp_q{?cRq6y%B=?%r`jCE721Ji4}6#c2!xChyEJc z(K#En^ie|%0#pg7TnGQ_)J>X&qpUmCHn*Zgq(p^UiQ^?zHORzD0z0UXz}ARL1u)ae z>^;{ll@zW@HsU5Y8D@lyh6)(qVbhoAobxS(`bpt>f&^a6<%4p})^RBy%08kbi`Zta z1=680(G}12;6Zsr7chOM8w?7rMLX9d0wKY7m{-d?Q_gr;LvA=`%;pF<&fFph`%f|6 zY*YF2>1t`=|6@wxuL>ZrTpS|QQZ@hpm1u%pO_J8xco3<-@;*H;?vJH-)@KaRO&&XZ zOF)Ka2hV1r63FsFHcgs(v~noi(57<8d6=BSd^S@m1cyA{agnYdikooqkcLCQSb=rS zVg%v)AzL~UUpBhk(rs&9?(=y7YUQ*35n{YE$*up9(|%BJWEhJ~J7;TFX{rZ=bRZA; z_yjN)BJ;^enXR}uw%tf8bRudM*bt1EV6ak_0YU)4P(T`p-0Qn}W=BApAyCcVuyU_! zI$^wm!ALnS=|c#T4+?S*z@|MMZkxJt|G9ZSPDj6abFwa`_BsD%6fN{ao24(O1M1v0 zot{=m?}^BT8~7VXO3}16#m4ARs_!rw}(UC zSV+_#t}&ZblCDdFQx19}SKZY=!vT%MT1tCahqJq#od>u2`17_4+Vz&Lg}t&y5n~>X$rV$P{`p*3DHo!Nm3CxKAwD&0 z8Q@GJj?egTH-F+Usw+wM^bSvW=4Ace$%&frrsjH2e;-?fpYxS@5k%}l?n3hDm>I(r zx;N|*^jS(*ThWn5@jEJL%1XGU>>|t=0JcLjsSf~!EcLN~OPBC4|7Qlb^Nu#45KY-( zD}V0CH;Q96@Iak!J0xH9FKRFG`Ju|@*Ytc_lt!h&rz=3IlK#eNEy%iX=$qO*a+w8u z;=JKkQK0c*5THC#k^GA2IozifEFH+5@y36IK1ZtBS9 zy1O;uJDB2ugW3p*NejuI{z6wp#~fcKGpenza;wfU+cqIuglN2tig&A=>@SZpSC}_j zH4P{QO;HNaE;7Ajm;p!rI=f#1XbfZ1b_D82CYg}YlOkioM`wctuo^`Bm6q_ zVT&^7pq~yVxPj{xZ`nM@VYkiN)XJLcFD#smUhc4Sb@L3<`Wm7ZdMJnM0Tadx;2 za7M4DU-6&<=X}f1@-Q3zWOa&+l_4NS79arh$(LWP-v!$& zD|qMCHyflzI}}+pb=i}xqee<1x!9;j0}Yp5|Ux6yLL# z4n%5bsF5h1$p6_gEE$3crklU!7Oo%O)MgtnFK~_4*Kk=tGy}0&wF?jb9mNaNTcXG6 z)a&FM9yX6FI_uqmUNNaF>3VgoZ}`0s$Z-?40IiatT!NK0Cc20A+nP52un;b-wFgWF zzwKmEaPT%mzok8w`K~oFA4py{zl1V4a6G|_`!=tH-B{afKWsAR5{6Z;m#g}sJ}jwEAeF+n}Sv*ngii(mPeG2ZoWuwmLJiBh#+9?QS)ANspl9} zu2t?e!Ynaihn^`%xS;(>c)QQt)l*z5`OyAJH=SG&c$i$@4uZ+DZ6Y~xUtxOq3HzK^ z=4Oei#okO!yjiJ~TRc*#AFAQABdudtK4eM+W=7$_dv%^8(s8Wy05IEjR8C?pxL>>d zR%FnTp(-^eC3jRlTPx#n#2b!h*xn>PXG+}mEIY)O( zE-y&jH4d9;M9UwJ^i9nul8|ygatFdhU6FLx^+Kdvf^6J?S5&bJX_;gZr7*bd3-NXY{tvHzWu+me$GS8IiMeKxnqbF5)`Fx+K;(g-OvG<$IaaF<1$ z5uo*#g=|BqF|yP?wrb30)vTV~rr7=|$_w*D$jJmFW>$oLfQw`4f7r63F7W8A&xL=a?V16YKU4@x6s^}8{CJugjhLB1RG&|O5h#>kX$LMppk9Yp z$+Qoe(!|TMRSsYpG^T=?0O$wi;FHnlSx1{Vg=5<_2lX`LXEj`&AqTy+Sbi58*2CHA zgB*9>kcU~YbPuRy5>Q9N@^>YC11h8ETb->#VA6ZUJg}LQQa(0;HVW*`W&;}37qpC| zGT;YrXR6vr`5T<`6h$rM6xFa9SjTChW3wp9l;OafREN1?oi1yhTBL&igc7F)Za|eRTj;4Z&hPWO zA>Jk|>b;Lk55oTC(7-Y5I?R-FMS9>SSrT4pK_^+3aSjvM|DVIQ#%QrdLv1@Lt6 zLt_8MY;p-J>T(oU#Ku$AXEjEsHCC;->e|$X-llS<9anOgD+u>C!3( zR=k&cIbiZMg5J1QFWqg;lj^kD?~7;4DWsO@%8wPj@rhLOU|F|$c7Iwe0XE(1yUKS4 zIXtzd!^_9PFinRI_!qZ?6Ha$r`KPM~DoMJY+v63b`X(EE1F(8N(B%lZu3dBGm1 zqP6A5DAxT-s!UN3LV)$6!K;QH8!W{*#X+yVo!?_6*AuH0IJbije1jA+3RX^|W>yR3 zleI??m3vm!C3n4#*&03^@nXt@gM22KekA8g&;`*`io(44pjNMiTabiTNc`(yo{p>_ zvQ%5*xsb5=#eT=Pe4l*TCWQKL=Y#0#aDq`o$;vJO8d>>^DE(Gefm5ut&6k^+(DU)G zV7G6qD?w+dk>quY{->=)?{ligeOCv?Orl%u$3*Tw zJ$Ao%vhf9sH|(hPA`C{`#^Jn+UrXYzc6y~uU$j6dc2$AVA7~Dbplkh!bPb-}F-!K73iev+5NAuQQoK3$pD zSa`S)z6_5o!T~_Os4y#e0v5mEHr{fGMpBA*{D4r~GV|w|l&|#2H6Xti1Lcajst}2+ zApOqO`Xzw2V9FeH)E^;l_iaX@e_UQQ-%Nd+X-q?{$V(2GY1F)BIE%G1dvVpl1(T{S zF`q{x0!lQLmwpKq*Mbg^&0z$GzhNzs~Ne?Ag7Tu5;UMu5J z$mRN8KE!$yujJs!#24A+@CY-V*m(h~)@vkoc4)B%(+*_rc3Nau?H%_)!?-K6e%s-0 z^0A)p<^K{(fpHnuuBSu)Gps8+!D5L55e0aRP2x^$5dH)<`46*`JgYC!I`fvrRsE1c zrkG%SBZoyU%m)cOtSug`>Y>?Lc>Df(NjVvlY<$M@Z=o z6i>&A#;=Jp4_h@I=EJJ#yE=W)|s2x;vO@S)dAok<>V40PC?@#^Im@fb4c zf&7S>RC0(8C9JI$^$#jTXz zjWGbd9{Xl9w3Vy%`AKzaNQ58kCT=$gPF3zpVAHwr=beiUzYv;HXeO)@A(`LII_|rQ z{c@0iddU&pmFA1iUUIjFMB`YikEJX-S%>;tKoTrN_Y27m4-CamJ2?dTV}YH=BPzk+ z)1HZETF-qkq1=b(zBs65Fb2Ijm31pE_f)c+C`U_&ZAABmJq|m{b}_f3!d*>EIQhD_ zEH~)>O>#Lk-fl>}Y=4x_lJo0+O|<2=dot?8U|ykF2!qJn4QY$;^iv2=2j-nJ zcmO8~fj@@^L9mf^RAyR?=_suCFenc6ijYI3Q-bX4PkvlNJiMR!0~Hp<&HPG<2*>%=y#~%&L;G&fL(JXyxE^&O8l6;-IAf zWx;GyPd41KcCyLGslax3!gnH+_k(fFxmlliN@A4>nf934l`-@A=7VolYvmY{vmLg8 z;Ll*Yl%Cn~WGj;IC$m0WvFoBk!UKEw9gCCVpIQ6by#kVr}#Vnf;yVw-Nj`(b@ zz8wt8iOQ*s_y3OL%z@}KK)-6;cyHR#frJV3?gWVXzS}U0pwX5qI1m%4AQsk3p_+S; z^pzj_QZ;dlhobO)zTUpn1b~^uDV%!;29boAei1GV?}8R4R#W0lBb@iLYSw~k1HJ%yGk(yKy0Y%P zX3BgE`)eM?B{TNCkO(`tUVv)WMqn3amIRcrS=2}7k05GO27^A4`*Gu|KpK5~KJMCP1Gin*I`zNGB8UEV?!Z4J7~g}~U1?c!DNSSIDa$Bqrfy{Sk-IPc z^cd3{SA`8ndKcj|d->v*{gnif0jH@n4CQ{so!e3RIf$vsPu9ismW3HkSlXnX-BF(Mhdy<%|B-{cW4_57+8WX$A*QT-+a zfeR?e-+2x+@M9z9(ghv>2$J>0DmUqU@ib^g=oG4z@3e5V8)J01K^AnFdzZE%KK(%z z54cZaTGFu~69LRjKjVdll((rY_RZ1yw%>lNM&v|%-3_7p&Uax1l&j?=q-BW8Sj8l2 z5V~N3P3AJaYH1C!@3?VD%U0tZALMIW7XRRn4E2b)8QKS+H3ly1y5$Pqns8rOS|&;_ z<^snz#^Bp^OLUyQL9NOHrRKdzt0C-Nw?Z>he5&2$7}(LFWpsc8sjZ)p4kFz-haI84F~Xd{}pW1`J!cd6mt zs+)=|{YK|}=M>9bIq~dbJ@uPj7BKBr`WfG%uQsE!`uf?m(S*jTJ`H{=N8|~X^o@6P z&A#P?b`~URmR1_s|5DsVT9+ee+Y9l(eZ8u|0=|j4_s!8**z2o z3T~+jb^#WrJwv*d^WuehDn03wdTuFyL!VEqN@PMis+m!+#h`=D!1#KehFi`)KJLb? z_v83dAgRg1dHR14jUI>z4cvGeqR9PDoy*P&|F^FY^3*6!L<*%jCJwCG+_fPQpq zq=AG&Fd`{jr%yy7b$k&~%+vsSZ=Jv{0ft9v7wrO03J``-OnWu#2XO%CftZKook zK_=?>G=yC~S!wGKX>ShvVw;L(U|aaqvmX+a+!>=O9Ks8uM7@L#O@m&8N_a}S7VL1Ufn^vuVps0C z&2~OlMK0*Lln?#k@P1789r;;3j9{OPoOs@mN-PEp3u!V*vz!mcYw2LVI11)84j@ZRcE! z^i44GT<+{-43pDXZ%%Np94O_M@WnPioV{PwRCU+xpQy1|ko;N(~ZJfEDHy6^0 zfXJ2>litlH@kSWcu>>{@?jhAOcMqI7ccrQxw181PTpQ^ls)XQ1RluyXYFe2Z#a8%$K5J!k#_D{9ql0kVPoU`7yO61Tpwp`oY0Nd z&friSQ=(hy#RJ}4)ThPHa6q&k;&{dx*W-9WXAYDu>+tWPwcy=2-dok_NrX0L@gyVJ zK-GrhdyPS4rkkTT$>dx|Cfy1&1tGavQ2Sgko*@f~c#$%drcTmuRl5Az0#yZt^k zYMg)G17BIT%4Ey?D+SHhPQpXYb9P?oiO`)rrZ-4dIMG%_Z4Tx8VZ#^a^@E!S5q@1rrIly4d>ctE?x&UPpH zrM|sK32GxdmQ^5hF+@J1v35P5p+4*Fd4TUuG8eS zIdH$#rq^q+n}#;pH(AS|LXs zr?vIq)2yWdtT))gU{%VHRsJJ=xcVW)*OH1IFtJ|F)Ysobll`t05$JVRu*1C708q<2-YGElX3pH1?ec*;81R}zJA~>hwr%`H;GM0 z=^5w5%kib5yx*INXSun~6pQnx@%5bcvzzOpY5c!GUo)gpl$Cf#N%tu3x+X!sn;lpJ z%ABV@4L>c@qW|HKiZHiz#DcIWz>@30%GK&1c%tY;ym4jj39K3Q=!zzzq3$Lb^8Sm% zl!2v4fUTWh^0_GcL6LBbBns4&EpoTt7Bx$lXcdnQxD)G*t(0Nm2;@ePP%&S0aG*TK zgf2UaM!_H2!x!QSc0n?u9rEq0i^Ecwk9+O2&D-(fg-2*B^sgiRp;j&WyL-PS_j)8Y6`pY zp0>i%id`X6*t%m<^Wn4y03p^6nCunqB`D76uy&e(8C28M&4PNH|J<>xMIV9^o#!z7 zDZ_mF)gcc6;0GYIz@in%az#Hj$)6B5IV{+H0-!G*{-j9I(skgil-9Ov zT9{^g6nSDgxDV%?dH;U)etY^i`DW`@8f@-TE!J!GF}nj_RcVN5srZ*~JlM~(`P$#i zerx{SV2V+YXx9k>@oHUD+PoIH4I1J88>$UcZ~XfU*t6mGw1VZfybdfRt1S3ph;v!Ow})m!%C1e@akkx zUEd)Z${)S?^4RP$T;CjpV;OB|czW|GP>xPFNWJtUdVcAc%C6Cu#=3*#_EH}JJ3z$0 zin^dqG+tAQSD!$HU+U;%y^;Q%EN_PaCSTG$^A$a@1-5IGz^}0S<^H~wrO)Df)`LU2 zVkwQVkkZ@{DV9=xUiLmen+=S{E|GCpt9#P1QM-|jE%Yq6OiNF`7sV3u9ipowGFpjE zL?EhD71dD5>IW3;MDCSME3sm(+IkHSmpyrtL@QfxbIrt3^2=m$Ji1I)T2>e{7JX&~ zY<$%lXH%L~i%2($4hfNtj%or;SoQpw1T~8EEpmMDgrFm_3HSj^L^;vyRk^V*DUQ2R zhX(Mm1d%J@Nh7$4bRR~00+{mSzA;lOzhdznv681@=9Mp%mp37+V_NClIsl06_aPrT zZ;gAZ&GsX$UA0!_TvLR@6L6Hq*bD9#MoEinBA{q0=Zm)@k)X-wU&1{%CYw*NPj*O(d~a=93o#)J3`iTQ}Ys%O-cCd1O5p#M~I zasMro?q`%06F-PuU|Dbb<)6q$hA?92Sv@I&4LhKl#O9r6C*a(2Ua!Ob5@F@T*T%K% z`NmcS_Lp8<{+{)DtE004#l-&>lkp*c>||iklk8G#fK{ZU3H~6yw~ZadDk|J`LkBdP zSu{og^(=u3{m5?uzX7LC#Yxs%DGwj_Y*6Gu18 zD+~RAC3 zxuK)4I}%sH>;5Y#4J|e|7Jh@^be49&U8>m_AqsWBUVdP_-dBu$32C#tC-=J>7>Hmv zVrC9w!OtZ=Jf?LtcX+?#-d0X9o2e7}vl?#(N(q4LF5S3v!dR0L-(J)=N)<2mSCaF&2? zT~eOEt>4mNVm%52&_2z`y96dx_bgF?h6Tq7v;H%YIt$@Y{PMO6Hm?iYJpere0EiZNyEptNQ%BT4m}l`7zaMm}2qn;nhf@c3ERpW1C&C0d<)z z@fyBN50ul0?P20Z$!-b8N2J-0UR_cWvAhv^XCt0E7OlsKzU}%fIeJTX^VS6V8EkuC+e-s)?^uD5QJl)sZr7QT z2*zU88!jzvIJoq}gW7gFv>=}MA0QY|P)pElGvfNk6s<{o`EI(Zm^0_g#Y&sFE=ngs zJ>LYWMp*p7kaH>DY*(~-JHP>X&c9bovaNTz+V$c1k8b;2j6Y$-j+%APCr;IYeFI<; z?MPm|A^P=H*J$)Q>@TUoeLHRjVf2`6m+Hvl&6fLOaJ|fcSLKMceI=UuM;GY9OcAhZ zCgO9xRR&5`_!<8orR}Y61AoFK8dBhTZ_%R~Ve8rTqrRCDaR4uf+hHYXAASL8u`e1^|)|4wU*DGYOo&^%VB--rP99^3Hyz!_-?XlP@eQE=qe9x=6}e!LDIc%PMcc>03}aD@i7wk9YgKAEy=U%oIT^d6!Y zVKVo*2oyl5rF@LZ@m;B7F;p ze8Fs_{H4rrRaL&?rHu8q20?+O+Zj3C0d25^`lLG@EDCsDL!eU~iLv=s%UT|!N|FCDUu}0 z`j6}J%gwQTOUSPRYPAR+iWa1CP5E-O;t1o)wJ4|DR4W>rpiYt5)QwWC-+81+(l9!t zCGcT$mTWxkM#MV_uACHKlo&^*i}Xhl>#G$iZ-}i01>}5n>V?GwpHfMR7Vp&d685o| zq2k{iNQ7Z~K)hm^J9^xg1aRXLh@-sYeTlgm;vryZdst=V@$I?zXm#2 zHTk3zNza35eh&*t6geXGh5oy+W^(K8pzQvD;|7&?Y}r~3iOM8dRMU8XFjYI3tt$xB zyGA1xC^lr47NB<`p=gX=>xwCdYjRJ1vr@FGjUAd0g~Kepd5k{`9(EYV^79!K#1q+T zmXYELt8{B1J0>^$?rA+m2n~fYWURi#udLU9U5Wxw-lYd*Ny5JRXnI_KG?pS#dbG!r zD>2Kambmc*B@T0(gRb84T*a&k37ofA+3CETWh;PS^|aSfep~!3ewgRkh6*#8?J;Ps zo)vDl!CF@N&@t%dL-UNK-t-H>ineT3K|8TJVf5nIY7l$Dd!`ydUhxA`z3fM0KSgYn3PP*OTJf$d5f1yT#Cj_;Qsros>D48O{T z?>sPe-RqIoZt#1}DB)y|C;#t>JCC7Sbk^Gp2H$o^W}S>E8vzAEIKQ$VJeRD)j7Clj z)GdSIVfacOILUHO#EVZFW-!h}%q17$bn?c&O&pox_CHBB4rt7 z(5;Yipr1iICN6er1f0B6&@4>$Qd<>v6@$B*zdU#0*-WN%c0bEV5K$R;&CyG^O@F2N zgBPqUp0aJkrhR2bhbDe25xrEpMSTGnbpVsZ4#r zM+#bVR>LN_Mt7?6X<>6)Qr_K;Z$m>DJGs zSQ;N*Qo(S{P+v)u?Tl)d<-!6e^?i2hsZi<6aG->H+_RQOf;>omndAF54_U5&I+S@+ zSiL*-HxnjynvbAEbtiE_T_QrO$qixoI_z%_^?yIXcou9x&Z- zUQ@hL6ftVMr+-ZCs52%&>1f!$?YyoBWck zDpW2J2`e86u`|XY(8yjgRMJM8ZDkpwT{*t@FyZ6E{EPMZtUvipJCZ(-SET|WC zA6WSKrc8sZH8Vw)ljT4Np)~+JF)MV9zt)tX8~t_){vOi}M6%&Yh$@eO zHTN7Rf&N6UaM)uDovEhgmJSC*I6ZV!?~11*3-uJ!rI`K?{Z{bIZ}=M2Bn@@$%ZJBZ z;)o(gEbooDXN&Nb2i4HaQ&>UZj{m5>0jnFP;!p$j%es>r+?I$p8s;ckDMQFnKvZ&8 z*45?5d+!khj_JhC z2#9ao-Z;m@^yfhV_-1HFUsN;B786I(Vu0gmtskLPP9L5P*0iCBkfO|`bN>11uv$9ai8sZGOd;449gf7;u zdS*$(X$};I?B_0++G0>K6;o$%7J$yBZxLnpw!fM^>ONaQbMjgrY?yc!j6T_XxE1f! zxJ8&aQ7XsrqP|_`d->tWbFT9TAw5=ze&_)6{!9d1L}%9& z0s@r7xIN|6N)-ghtn&Pk6wXi6hz4&}Ee@$vJa5N6dwdhJaD7B%9x?rU$?W=d&3^;A zb{c(jm%rsXk0&5~iOvLAr9e~Y{227p%%$te2$O)LS2N-8Ih(hW|x z3GY*HJg7n5qm1Op{-4&%a5Yylig@73#qt{yb2GhOmN}J$uzs+UOarA0lb~jtU9K2L zKb|2I?~$lK#w5?d5a?e7=ju>qW!DgGv2od&TL>F(C*YtHj1l+RXf|kbSz|bk_BF0>W zx~GQv4R)g+*JVaQ-a^vJ`#e^eti&sba=6_&BaW^8GV{sjRm=nW6;1EwMv3bonv!dm zLn*MNX;Z$+)o&YY!c2$Z)APBi7GLrD66E5{$hm#U&B!HCan~8^HnJ0@TF&>`^zQzV z{N@@2@p`qk0Md_{zY~=?>^(^g$~Sh94W9~s!wA7gRWAPu!@>v@1u>1g8k(IbF}K&N zT^a*c4`h0f$}g0ta&LS=ZW|jW(yb8cy=_+aOc<>S1sV0Qj1}?LJXS7HMpX4he9%h* z5}Xd5OdDY!tePISA!Ym-oiwYoQM}!NPir8*g2CS@MXJQ6T%$%h)}3S6%HS*WHE4%A?5!7^9Y26BLuGWKN3@T?Mc|{Q^sU!0 z5($wBB8FucQ_t6t@c6`$ndv|mI3TUO@3x37pF4~7W73-P9Ol5j+xovtK-*Rk=a?z; zgN5b^eO{Tg|0%Bfy8vi*5{?O)aQ{g-E)KF(IEPi2vJJtAxcLqv#}+(+plcfqFGCY_ zT@aSa|3GiOt}zfi-|4o$+s1QnNKM0;rp?~JwxESNlKazr_cM(GTC&{CYt~^Hbm3%C zGUS4UJp!Bu9%3EEW>EsIbvZYTxhp9fNHkvc&gJyR0ETC`4D2< zUt+;dnR-kVR0O^KqjJXJ+cQq%4ce(&*3?-&5b?XcN(_ldY=3E1YC{#Q#%vMHuBmRoP@n_d~+!Ph_SfwHo^@N>rtK1b(jEA}J@gCg1KbY~r z;^;mXBOi|S!6T;dWJ@kV4R7@Tkk;|&nzP3!4S|_5GIde+cdjl+al@&(HJM{P0Q(}{ zbkng}iNIs!2`m;_T;;8MX8JTj}g1AUk%jppI$MW$vdA8fK$A@gD9iH8^@cyDwF6!smc$%Vq3z(? z*9F>^CRqLr8%{+(i)4=(g7qe3dtsuVld)6)Uh?;mw1j*`My}LhHMNLnM<)2%?ip}ADLWEoKhx=OoRCKmSvvg#nH619KWf$T zh30m1$D-Sj771`1RDBioqexBmxq5JqV#~sw>30e$%{MY@Xpx>DT`z0xYR6V5Ulb0U zllfEQ6)|B3jmzjSh-BW>0bP;u1;5GYSHv+d_s^er_?WYiX|Ux2m}F9JQ$_F`pnh5`)PWDD!8gJnSI#+^w z8+@9pTztZhR)phHgDG7znzcC@hy-P;;zjWjUP~voZS!+>tag@v(??ulUuYxEoVkRO zvW|;Ws~D3Fo_=t3Gw4d`!dagoX)*2cRx$54dr)+=F~zJA^hSzvTj+hNZ(*XjI>@!dz=`aSv!mUs=|(8 zpL&!60(mto6QLnwAk#uz6*O{*(2!lCK6~z0cq_OqHn!_Ud+%=3$&@bUlHn{gAP|l_ znm~GT$To)xvay%B`Qf&`$n4*h+~HWOK8h!AmE7U6*J`eL=MC{aT8ozyr(>djy@~^v z9-=FrDbY!nm)$(D6p_HvC>l(*Ov!?Wmx<^zRxRJbf{Z%}>BWL5BL2W&OXwvX%V zd9~8ZMYJ8NM9UDt-mK+eq8H4YY?_dT^Z0oP2ipff5Qy`O{eP}#J|Y~}w;bHZ5!sZc zB&$m4>Z@`_uf;K!#;~2e{3yK(P_O62Th#sDcDvVAVGH(20gyvWsg0~7Efc7&SI6JcdPQ`yh_ zEppBIK5)NLLE30*>2L``YP0UZ%gV)CdR^R*T5;a}ea;a~4zb&&(&=zFo_2YP4SrsMbAC;sX#II{;j z+gUd$-}qG{N@kc`6i>#*y$YbX6*1tww}mf5dAeQEiZ;k#X4hAnT&+f|baw z=|!{cYmLro$$#&H-5R5uf^d0Lgui@-GI8E}$b%`kzY7a}n75wd3a*mDgB&!hdlF_S zXW9Jt$kVOVXo>5j^M;YZam~8nz{^NCGbc{Yb}iM#`9I?_JQbBNyn~=b=+6!7sM}(( z1#1XQm{n__?AHlg8$JsZ)(&E|?e-))$>+Vk#DT(mZ}@t0x!-6k-BsKt-Kc`@TWkvK zqIv+qJB23a$4N|P_tVaovvqNDo1Otg4Vsqz$O@GyrT&%`q3ZnigYS9Z*WkjzBqaO5 zmJ1*ZSDfHGOoeTRYBH4i9Ou+_H?~Qzjkv?yT>oXov%<8XNgUZ3&X*$qdxME~iGy!O z0FbM5fUGXr=Ys3N@8;<7*;sfDuWRV=Vl~>E zTPs$G3yjs@{N?o+aoLiz2rVbUifmA3bw`v_=!K0w&pcU!ENm+A-B(d5sz&iprUX>1h3RLSRI|)3~*ZaWwXZj zid+GXw3O6as*Aj@bIhgvJ5wLqq5y0r6zA}C zQKRI**}rL3=es82$5*Kl<3=+nFSAc2lg`GnUep00 zA{14nE-^Jf?y1{FkPzIs0bic-(V`^?VAYySU!Nt)t+_~|X|BbJN_LZcm^W{~r8ZIo zHBL`P`9jRpiEahvXKn@RU#G59UwF)v?lCJNFxiY*WG3eQk%lBNptP+PpKT&pXOc`F+s(LvtoTnGmYp)1|x1F?hnT>6Twgm^t z{9JPmz#Lv`vDNdkd4p#wW0uJ`2+>kD2F^o{QLLFfZu;(vmtSRpDyp6j;8c>(x9V-m z>8%a%TY_c?R53?YzeUzXlGX^2%#4xW?`Urg$W&vB?>Wg*WqMvYBaLg@G`jnF>!A#o zVmjZH0&WGuu4Ekt12;jV3zQ<;?Z+Gv>>sJ4If@r#{*y+_M6_JW1$=+4j3qWM+rVdj zz2O96V7(6J3a7~;JQw=VA_bMf3^TyXSQzsEOCey_m`7QxmdlSLcsmUXaE8skOU1B< zc^2kk5`2!UYne^kZJC-wi_eo2cs`g64RxB&5dr|!kiO^eUt67bnlLy#D0ph;pK;bR zQsyhT>QO??#jzp5OXL==Kupn}y^{S#;kUz1-X6-K9 z*|2)RMU$_^(emWj4ua&^b;H}yLx=wMDg3(J=@gLe?#t#vZ}PO!`qwv z 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�?`7kME8<-!_>qrf&! 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

k2()%Ta4L{ZGoV(f~ScNwf|zc1KmD)dURv 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 literal 0 HcmV?d00001 diff --git a/old/michel/local_run b/old/michel/local_run new file mode 100644 index 0000000..2ac173b --- /dev/null +++ b/old/michel/local_run @@ -0,0 +1,19 @@ +#!/bin/bash + +CONFIG=/home/p2p/p2p-svn-repo/trunk/michel/client_config.txt +TORRENT=/home/p2p/p2p-svn-repo/trunk/michel/file.torrent + +hname=$(hostname) +index=${hname/p2p-next-[0-9][0-9]-/} +PORT=5${index}00 + +read name up down <<< $(grep $(hostname) $CONFIG) + +cd /home/p2p/p2p-svn-repo/trunk/bt-prof/ + +ping -c 3 141.85.224.15 &> /dev/null +ping -c 3 anaconda.cs.pub.ro &> /dev/null + +exec bash run.bash hrktorrent $TORRENT no_kill yes $PORT $up $down + +exit 0 diff --git a/old/michel/remote_run b/old/michel/remote_run new file mode 100644 index 0000000..88f1a3b --- /dev/null +++ b/old/michel/remote_run @@ -0,0 +1,13 @@ +#!/bin/bash + +hosts=($(cut -f 1 < ./client_info.txt | tr '\n' ' ')) +ports=($(cut -f 2 < ./client_info.txt | tr '\n' ' ')) +users=($(cut -f 3 < ./client_info.txt | tr '\n' ' ')) +nlines=$(wc -l < ./client_info.txt) + +for i in $(seq 0 $(($nlines-1)) ); do + echo "ssh -l ${users[$i]} ${hosts[$i]} -p ${ports[$i]} \"nohup bash /home/p2p/p2p-svn-repo/trunk/michel/local_run &> /dev/null &\" " + ssh -l ${users[$i]} ${hosts[$i]} -p ${ports[$i]} "nohup bash /home/p2p/p2p-svn-repo/trunk/michel/local_run &> /home/p2p/nohup.out &" +done + +exit 0 diff --git a/old/patches/hrktorrent/all.patch b/old/patches/hrktorrent/all.patch new file mode 100644 index 0000000..e61a8ff --- /dev/null +++ b/old/patches/hrktorrent/all.patch @@ -0,0 +1,144 @@ +diff --git a/Makefile b/Makefile +index 20c89a9..677bd48 100644 +--- a/Makefile ++++ b/Makefile +@@ -9,7 +9,7 @@ $(OUT): $(OBJ) + $(CXX) $(LDFLAGS) $(OBJ) $(LIBS) -o $(OUT) + + clean: +- rm -rf $(OBJ) $(OUT) ++ -rm -rf $(OBJ) $(OUT) *~ + + install: all + @install hrktorrent ${PREFIX}/bin +@@ -19,6 +19,6 @@ install: all + @install -m 644 hrktorrent.1 ${MANPREFIX}/man1/hrktorrent.1 + + uninstall: +- @rm -f ${PREFIX}/bin/hrktorrent +- @rm -f ${MANPREFIX}/man1/hrktorrent.1 +- @rm -r ${PREFIX}/share/examples/hrktorrent/ ++ -@rm -f ${PREFIX}/bin/hrktorrent ++ -@rm -f ${MANPREFIX}/man1/hrktorrent.1 ++ -@rm -r ${PREFIX}/share/examples/hrktorrent/ +diff --git a/core.cpp b/core.cpp +index 5b30d20..8f51f52 100644 +--- a/core.cpp ++++ b/core.cpp +@@ -55,13 +55,10 @@ CCore::StatusLoop(void* data) + if (stdout_is_tty) { + if(ioctl(STDOUT_FILENO, TIOCGWINSZ, &ws) < 0) { + char errbuf[128]; +- std::string errstring; + + strerror_r(errno, errbuf, 128); +- errstring = "ioctl: "; +- errstring.append((const char *) errbuf); ++ std::cerr << "ioctl error: " << errbuf << std::endl; + +- Core->VerbosePrint("Core", errstring); + exit(EXIT_FAILURE); + } + columns = ws.ws_col; +@@ -113,15 +110,6 @@ CCore::StatusLoop(void* data) + output << eta << "s"; + s_output = output.str(); + +- if(s_output.length() > columns) { +- s_output.resize(columns - 3); +- s_output.append(".."); +- } +- else if(s_output.length() < columns) { +- for(int i = 0; i < s_output.length() - columns; i++) +- s_output.append(" "); +- } +- + if (stdout_is_tty) { + if(s_output.length() > columns) { + s_output.resize(columns - 3); +@@ -199,6 +187,31 @@ CCore::saveDHT() + nodefile.close(); + } + ++static void ++SignalHandler(int signo) ++{ ++ Core->VerbosePrint("Core", "Received signal."); ++} ++ ++void ++CCore::ScheduleSignal(int signo) ++{ ++ struct sigaction sa; ++ ++ memset(&sa, 0, sizeof(sa)); ++ sa.sa_handler = SignalHandler; ++ sa.sa_flags = SA_RESETHAND; ++ ++ if (sigaction(signo, &sa, NULL) < 0) { ++ char errbuf[128]; ++ ++ strerror_r(errno, errbuf, 128); ++ ++ std::cerr << "sigaction error: " << errbuf << std::endl; ++ exit(EXIT_FAILURE); ++ } ++} ++ + int + CCore::Run() + { +@@ -261,12 +274,23 @@ CCore::Run() + _session->set_ip_filter(IPFilter->getFilter()); + } + +- std::cout << "\"Return\" shuts hrktorrent down.\n" << std::endl; ++ ScheduleSignal(SIGINT); ++ std::cout << "\"CTRL-C\" shuts hrktorrent down.\n" << std::endl; ++ + pthread_create(&statusthread, NULL, StatusLoop, NULL); + ++ /* ++ * reading stdin does not work with output redirection or running the ++ * program in background ++ */ ++ /* + char input; + std::cin.unsetf(std::ios_base::skipws); + std::cin >> input; ++ */ ++ ++ /* wait for signal */ ++ pause(); + + if(Settings->GetI("dht") > 0) { + saveDHT(); +diff --git a/core.h b/core.h +index f48782a..ada28eb 100644 +--- a/core.h ++++ b/core.h +@@ -20,6 +20,7 @@ class CCore + + void loadDHT(); + void saveDHT(); ++ void ScheduleSignal(int signo); + + int _argc; + char** _argv; +diff --git a/settings.cpp b/settings.cpp +index 19b5187..f799f04 100644 +--- a/settings.cpp ++++ b/settings.cpp +@@ -38,7 +38,11 @@ CSettings::LoadConfig() + + std::ifstream config(path.c_str(), std::ifstream::in); + if(!config.is_open()) { +- Core->VerbosePrint("Settings", "Could not load config file. Will use default values."); ++ /* workaround: Core->VerbosePrint uses non-initialized Core */ ++ std::cout << "[Settings] Could not load config file. Will use default values." << std::endl; ++ ++ /* cannot do: Core may not be properly initialized */ ++ /* Core->VerbosePrint("Settings", "Could not load config file. Will use default values.");*/ + return; + } + diff --git a/old/patches/hrktorrent/all_mymake_flags.patch b/old/patches/hrktorrent/all_mymake_flags.patch new file mode 100644 index 0000000..ca985ed --- /dev/null +++ b/old/patches/hrktorrent/all_mymake_flags.patch @@ -0,0 +1,157 @@ +diff --git a/Makefile b/Makefile +index 20c89a9..677bd48 100644 +--- a/Makefile ++++ b/Makefile +@@ -9,7 +9,7 @@ $(OUT): $(OBJ) + $(CXX) $(LDFLAGS) $(OBJ) $(LIBS) -o $(OUT) + + clean: +- rm -rf $(OBJ) $(OUT) ++ -rm -rf $(OBJ) $(OUT) *~ + + install: all + @install hrktorrent ${PREFIX}/bin +@@ -19,6 +19,6 @@ install: all + @install -m 644 hrktorrent.1 ${MANPREFIX}/man1/hrktorrent.1 + + uninstall: +- @rm -f ${PREFIX}/bin/hrktorrent +- @rm -f ${MANPREFIX}/man1/hrktorrent.1 +- @rm -r ${PREFIX}/share/examples/hrktorrent/ ++ -@rm -f ${PREFIX}/bin/hrktorrent ++ -@rm -f ${MANPREFIX}/man1/hrktorrent.1 ++ -@rm -r ${PREFIX}/share/examples/hrktorrent/ +diff --git a/core.cpp b/core.cpp +index 5b30d20..8f51f52 100644 +--- a/core.cpp ++++ b/core.cpp +@@ -55,13 +55,10 @@ CCore::StatusLoop(void* data) + if (stdout_is_tty) { + if(ioctl(STDOUT_FILENO, TIOCGWINSZ, &ws) < 0) { + char errbuf[128]; +- std::string errstring; + + strerror_r(errno, errbuf, 128); +- errstring = "ioctl: "; +- errstring.append((const char *) errbuf); ++ std::cerr << "ioctl error: " << errbuf << std::endl; + +- Core->VerbosePrint("Core", errstring); + exit(EXIT_FAILURE); + } + columns = ws.ws_col; +@@ -113,15 +110,6 @@ CCore::StatusLoop(void* data) + output << eta << "s"; + s_output = output.str(); + +- if(s_output.length() > columns) { +- s_output.resize(columns - 3); +- s_output.append(".."); +- } +- else if(s_output.length() < columns) { +- for(int i = 0; i < s_output.length() - columns; i++) +- s_output.append(" "); +- } +- + if (stdout_is_tty) { + if(s_output.length() > columns) { + s_output.resize(columns - 3); +@@ -199,6 +187,31 @@ CCore::saveDHT() + nodefile.close(); + } + ++static void ++SignalHandler(int signo) ++{ ++ Core->VerbosePrint("Core", "Received signal."); ++} ++ ++void ++CCore::ScheduleSignal(int signo) ++{ ++ struct sigaction sa; ++ ++ memset(&sa, 0, sizeof(sa)); ++ sa.sa_handler = SignalHandler; ++ sa.sa_flags = SA_RESETHAND; ++ ++ if (sigaction(signo, &sa, NULL) < 0) { ++ char errbuf[128]; ++ ++ strerror_r(errno, errbuf, 128); ++ ++ std::cerr << "sigaction error: " << errbuf << std::endl; ++ exit(EXIT_FAILURE); ++ } ++} ++ + int + CCore::Run() + { +@@ -261,12 +274,23 @@ CCore::Run() + _session->set_ip_filter(IPFilter->getFilter()); + } + +- std::cout << "\"Return\" shuts hrktorrent down.\n" << std::endl; ++ ScheduleSignal(SIGINT); ++ std::cout << "\"CTRL-C\" shuts hrktorrent down.\n" << std::endl; ++ + pthread_create(&statusthread, NULL, StatusLoop, NULL); + ++ /* ++ * reading stdin does not work with output redirection or running the ++ * program in background ++ */ ++ /* + char input; + std::cin.unsetf(std::ios_base::skipws); + std::cin >> input; ++ */ ++ ++ /* wait for signal */ ++ pause(); + + if(Settings->GetI("dht") > 0) { + saveDHT(); +diff --git a/core.h b/core.h +index f48782a..ada28eb 100644 +--- a/core.h ++++ b/core.h +@@ -20,6 +20,7 @@ class CCore + + void loadDHT(); + void saveDHT(); ++ void ScheduleSignal(int signo); + + int _argc; + char** _argv; +diff --git a/settings.cpp b/settings.cpp +index 19b5187..f799f04 100644 +--- a/settings.cpp ++++ b/settings.cpp +@@ -38,7 +38,11 @@ CSettings::LoadConfig() + + std::ifstream config(path.c_str(), std::ifstream::in); + if(!config.is_open()) { +- Core->VerbosePrint("Settings", "Could not load config file. Will use default values."); ++ /* workaround: Core->VerbosePrint uses non-initialized Core */ ++ std::cout << "[Settings] Could not load config file. Will use default values." << std::endl; ++ ++ /* cannot do: Core may not be properly initialized */ ++ /* Core->VerbosePrint("Settings", "Could not load config file. Will use default values.");*/ + return; + } + +diff --git a/vars.mk b/vars.mk +index e79e4e5..aca9a50 100644 +--- a/vars.mk ++++ b/vars.mk +@@ -3,6 +3,5 @@ MANPREFIX = ${PREFIX}/man + CXX? = g++ + OBJ = main.o core.o settings.o utils.o ipfilter.o + OUT = hrktorrent +-CXXFLAGS += `pkg-config --cflags libtorrent` +-LIBS = `pkg-config --libs libtorrent` -lpthread +- ++CXXFLAGS += -DTORRENT_USE_OPENSSL -pthread -I/usr/local/include -I/usr/local/include/libtorrent -DTORRENT_VERBOSE_LOGGING ++LIBS = -lpthread -L/usr/local/lib -ltorrent-rasterbar diff --git a/old/patches/hrktorrent/makefile.patch b/old/patches/hrktorrent/makefile.patch new file mode 100644 index 0000000..34006b2 --- /dev/null +++ b/old/patches/hrktorrent/makefile.patch @@ -0,0 +1,23 @@ +diff --git a/Makefile b/Makefile +index 20c89a9..677bd48 100644 +--- a/Makefile ++++ b/Makefile +@@ -9,7 +9,7 @@ $(OUT): $(OBJ) + $(CXX) $(LDFLAGS) $(OBJ) $(LIBS) -o $(OUT) + + clean: +- rm -rf $(OBJ) $(OUT) ++ -rm -rf $(OBJ) $(OUT) *~ + + install: all + @install hrktorrent ${PREFIX}/bin +@@ -19,6 +19,6 @@ install: all + @install -m 644 hrktorrent.1 ${MANPREFIX}/man1/hrktorrent.1 + + uninstall: +- @rm -f ${PREFIX}/bin/hrktorrent +- @rm -f ${MANPREFIX}/man1/hrktorrent.1 +- @rm -r ${PREFIX}/share/examples/hrktorrent/ ++ -@rm -f ${PREFIX}/bin/hrktorrent ++ -@rm -f ${MANPREFIX}/man1/hrktorrent.1 ++ -@rm -r ${PREFIX}/share/examples/hrktorrent/ diff --git a/old/patches/hrktorrent/signal_handling.patch b/old/patches/hrktorrent/signal_handling.patch new file mode 100644 index 0000000..fda1bf4 --- /dev/null +++ b/old/patches/hrktorrent/signal_handling.patch @@ -0,0 +1,104 @@ +diff --git a/core.cpp b/core.cpp +index 5b30d20..8f51f52 100644 +--- a/core.cpp ++++ b/core.cpp +@@ -55,13 +55,10 @@ CCore::StatusLoop(void* data) + if (stdout_is_tty) { + if(ioctl(STDOUT_FILENO, TIOCGWINSZ, &ws) < 0) { + char errbuf[128]; +- std::string errstring; + + strerror_r(errno, errbuf, 128); +- errstring = "ioctl: "; +- errstring.append((const char *) errbuf); ++ std::cerr << "ioctl error: " << errbuf << std::endl; + +- Core->VerbosePrint("Core", errstring); + exit(EXIT_FAILURE); + } + columns = ws.ws_col; +@@ -113,15 +110,6 @@ CCore::StatusLoop(void* data) + output << eta << "s"; + s_output = output.str(); + +- if(s_output.length() > columns) { +- s_output.resize(columns - 3); +- s_output.append(".."); +- } +- else if(s_output.length() < columns) { +- for(int i = 0; i < s_output.length() - columns; i++) +- s_output.append(" "); +- } +- + if (stdout_is_tty) { + if(s_output.length() > columns) { + s_output.resize(columns - 3); +@@ -199,6 +187,31 @@ CCore::saveDHT() + nodefile.close(); + } + ++static void ++SignalHandler(int signo) ++{ ++ Core->VerbosePrint("Core", "Received signal."); ++} ++ ++void ++CCore::ScheduleSignal(int signo) ++{ ++ struct sigaction sa; ++ ++ memset(&sa, 0, sizeof(sa)); ++ sa.sa_handler = SignalHandler; ++ sa.sa_flags = SA_RESETHAND; ++ ++ if (sigaction(signo, &sa, NULL) < 0) { ++ char errbuf[128]; ++ ++ strerror_r(errno, errbuf, 128); ++ ++ std::cerr << "sigaction error: " << errbuf << std::endl; ++ exit(EXIT_FAILURE); ++ } ++} ++ + int + CCore::Run() + { +@@ -261,12 +274,23 @@ CCore::Run() + _session->set_ip_filter(IPFilter->getFilter()); + } + +- std::cout << "\"Return\" shuts hrktorrent down.\n" << std::endl; ++ ScheduleSignal(SIGINT); ++ std::cout << "\"CTRL-C\" shuts hrktorrent down.\n" << std::endl; ++ + pthread_create(&statusthread, NULL, StatusLoop, NULL); + ++ /* ++ * reading stdin does not work with output redirection or running the ++ * program in background ++ */ ++ /* + char input; + std::cin.unsetf(std::ios_base::skipws); + std::cin >> input; ++ */ ++ ++ /* wait for signal */ ++ pause(); + + if(Settings->GetI("dht") > 0) { + saveDHT(); +diff --git a/core.h b/core.h +index f48782a..ada28eb 100644 +--- a/core.h ++++ b/core.h +@@ -20,6 +20,7 @@ class CCore + + void loadDHT(); + void saveDHT(); ++ void ScheduleSignal(int signo); + + int _argc; + char** _argv; diff --git a/old/patches/hrktorrent/uninitialized_core.patch b/old/patches/hrktorrent/uninitialized_core.patch new file mode 100644 index 0000000..b045b49 --- /dev/null +++ b/old/patches/hrktorrent/uninitialized_core.patch @@ -0,0 +1,17 @@ +diff --git a/settings.cpp b/settings.cpp +index 19b5187..f799f04 100644 +--- a/settings.cpp ++++ b/settings.cpp +@@ -38,7 +38,11 @@ CSettings::LoadConfig() + + std::ifstream config(path.c_str(), std::ifstream::in); + if(!config.is_open()) { +- Core->VerbosePrint("Settings", "Could not load config file. Will use default values."); ++ /* workaround: Core->VerbosePrint uses non-initialized Core */ ++ std::cout << "[Settings] Could not load config file. Will use default values." << std::endl; ++ ++ /* cannot do: Core may not be properly initialized */ ++ /* Core->VerbosePrint("Settings", "Could not load config file. Will use default values.");*/ + return; + } + diff --git a/old/patches/hrktorrent/vars_mk.patch b/old/patches/hrktorrent/vars_mk.patch new file mode 100644 index 0000000..66255d9 --- /dev/null +++ b/old/patches/hrktorrent/vars_mk.patch @@ -0,0 +1,13 @@ +diff --git a/vars.mk b/vars.mk +index e79e4e5..aca9a50 100644 +--- a/vars.mk ++++ b/vars.mk +@@ -3,6 +3,5 @@ MANPREFIX = ${PREFIX}/man + CXX? = g++ + OBJ = main.o core.o settings.o utils.o ipfilter.o + OUT = hrktorrent +-CXXFLAGS += `pkg-config --cflags libtorrent` +-LIBS = `pkg-config --libs libtorrent` -lpthread +- ++CXXFLAGS += -DTORRENT_USE_OPENSSL -pthread -I/usr/local/include -I/usr/local/include/libtorrent -DTORRENT_VERBOSE_LOGGING ++LIBS = -lpthread -L/usr/local/lib -ltorrent-rasterbar diff --git a/test.txt b/test.txt deleted file mode 100644 index e69de29..0000000 -- 2.20.1