From 51bd09a826fe3bbca9ef9a760c799aea05ef582e Mon Sep 17 00:00:00 2001 From: mohammedazharshaikh <68691119+mohammedazharshaikh@users.noreply.github.com> Date: Tue, 11 Jun 2024 17:01:41 -0500 Subject: [PATCH 1/8] s1 --- .vscode/settings.json | 4 + app.py | 174 ++++++++++++++++++++++++--- people.csv | 11 ++ templates/index-original.html | 30 +++++ templates/index.html | 39 ++---- templates/index1.html | 16 +++ templates/index2.html | 27 +++++ templates/index3.html | 14 +++ templates/index4.html | 15 +++ templates/low_salary.html | 34 ++++++ templates/remove_entry.html | 16 +++ templates/result.html | 15 +++ templates/update_keywords.html | 17 +++ templates/update_or_add_picture.html | 17 +++ templates/update_picture.html | 62 ++++++++++ 15 files changed, 445 insertions(+), 46 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 people.csv create mode 100644 templates/index-original.html create mode 100644 templates/index1.html create mode 100644 templates/index2.html create mode 100644 templates/index3.html create mode 100644 templates/index4.html create mode 100644 templates/low_salary.html create mode 100644 templates/remove_entry.html create mode 100644 templates/result.html create mode 100644 templates/update_keywords.html create mode 100644 templates/update_or_add_picture.html create mode 100644 templates/update_picture.html diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000..70b8d6d96 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,4 @@ +{ + "appService.defaultWebAppToDeploy": "undefined/subscriptions/4de5c374-d633-44dd-aee6-c60b3bca20b7/resourceGroups/appsvc_linux_centralus/providers/Microsoft.Web/sites/msdocs-python-flask-webapp-quickstart-demo-try", + "appService.deploySubpath": "." +} \ No newline at end of file diff --git a/app.py b/app.py index 3d1808cf6..ed9113c90 100644 --- a/app.py +++ b/app.py @@ -1,32 +1,166 @@ -import os +# import os + +# from flask import (Flask, redirect, render_template, request, +# send_from_directory, url_for) + +# app = Flask(__name__) + + +# @app.route('/') +# def index(): +# print('Request for index page received') +# return render_template('index.html') + +# @app.route('/favicon.ico') +# def favicon(): +# return send_from_directory(os.path.join(app.root_path, 'static'), +# 'favicon.ico', mimetype='image/vnd.microsoft.icon') + +# @app.route('/hello', methods=['POST']) +# def hello(): +# name = request.form.get('name') + +# if name: +# print('Request for hello page received with name=%s' % name) +# return render_template('hello.html', name = name) +# else: +# print('Request for hello page received with no name or blank name -- redirecting') +# return redirect(url_for('index')) + -from flask import (Flask, redirect, render_template, request, - send_from_directory, url_for) +# if __name__ == '__main__': +# app.run() + +#g +from flask import Flask, render_template, request, redirect, url_for +import pandas as pd +import os +from werkzeug.utils import secure_filename app = Flask(__name__) +# Configuration +app.config['UPLOAD_FOLDER'] = 'static/images' # Ensure this directory exists +app.config['CSV_FILE'] = 'people.csv' +data = pd.read_csv(app.config['CSV_FILE']) # Load the data +data['Picture'].fillna('', inplace=True) # Ensure no null values in the Picture column +data['Salary'] = pd.to_numeric(data['Salary'], errors='coerce') # Convert salary to numeric, handling errors + +# Ensure the upload directory exists +os.makedirs(app.config['UPLOAD_FOLDER'], exist_ok=True) @app.route('/') -def index(): - print('Request for index page received') - return render_template('index.html') +def home(): + return render_template('index.html') + +@app.route('/search', methods=['GET', 'POST']) +def search(): + if request.method == 'POST': + name_query = request.form['name'] + if name_query: + # Search for the name in the dataframe + result = data[data['Name'].str.lower() == name_query.lower()] + if not result.empty: + picture = result.iloc[0]['Picture'] + return render_template('result.html', picture=picture, name=name_query) + else: + return render_template('index1.html', message="No name found.") #changing search to index1 + else: + return render_template('index1.html', message="Please enter a name.") + return render_template('index1.html') + +@app.route('/low_salary') +def low_salary(): + # Filter entries with salary less than 99000 + filtered_data = data[data['Salary'] < 99000] + # Ensure we have valid picture filenames + pictures = filtered_data['Picture'].dropna().tolist() + return render_template('low_salary.html', pictures=pictures) + +@app.route('/update_or_add_picture', methods=['GET', 'POST']) +def update_or_add_picture(): + global data + message = '' + if request.method == 'POST': + name_query = request.form['name'].strip().lower() + file = request.files['file'] + if file and allowed_file(file.filename): + filename = secure_filename(file.filename) + if filename: # Check if filename is not empty + file_path = os.path.join(app.config['UPLOAD_FOLDER'], filename) + + # Check if the entry exists + existing_record = data[data['Name'].str.lower() == name_query] + if not existing_record.empty: + # Delete the old picture if it exists + old_filename = existing_record['Picture'].iloc[0] + if old_filename: + old_file_path = os.path.join(app.config['UPLOAD_FOLDER'], old_filename) + if os.path.exists(old_file_path): + os.remove(old_file_path) + + # Save the new file + file.save(file_path) + + # Update or add the record + if not existing_record.empty: + data.loc[data['Name'].str.lower() == name_query, 'Picture'] = filename + else: + # Add new entry if name does not exist + new_entry = {'Name': name_query.capitalize(), 'Picture': filename, 'Keywords': ''} + data = data.append(new_entry, ignore_index=True) -@app.route('/favicon.ico') -def favicon(): - return send_from_directory(os.path.join(app.root_path, 'static'), - 'favicon.ico', mimetype='image/vnd.microsoft.icon') + # Save changes back to CSV + data.to_csv(app.config['CSV_FILE'], index=False) + message = 'Picture updated or added successfully for "{}".'.format(name_query.capitalize()) + else: + message = 'No valid filename provided.' + else: + message = 'Invalid file or file not provided.' + return render_template('update_or_add_picture.html', message=message) -@app.route('/hello', methods=['POST']) -def hello(): - name = request.form.get('name') +@app.route('/remove_entry', methods=['GET', 'POST']) +def remove_entry(): + global data + message = '' + if request.method == 'POST': + name_query = request.form['name'].strip().lower() + # Find if the entry exists + existing_record = data[data['Name'].str.lower() == name_query] + if not existing_record.empty: + # Delete the picture if it exists + old_filename = existing_record['Picture'].iloc[0] + if old_filename: + old_file_path = os.path.join(app.config['UPLOAD_FOLDER'], old_filename) + if os.path.exists(old_file_path): + os.remove(old_file_path) + # Remove the data entry + data = data[data['Name'].str.lower() != name_query] + data.to_csv(app.config['CSV_FILE'], index=False) + message = 'The entry for "{}" was removed successfully.'.format(name_query.capitalize()) + else: + message = 'Error: No entry found for the name "{}".'.format(name_query.capitalize()) + return render_template('remove_entry.html', message=message) - if name: - print('Request for hello page received with name=%s' % name) - return render_template('hello.html', name = name) - else: - print('Request for hello page received with no name or blank name -- redirecting') - return redirect(url_for('index')) +@app.route('/update_keywords', methods=['GET', 'POST']) +def update_keywords(): + message = '' + if request.method == 'POST': + name_query = request.form['name'].strip().lower() + new_keywords = request.form['keywords'].strip() + # Check if the entry exists + if name_query in data['Name'].str.lower().values: + # Update the keywords for the given name + data.loc[data['Name'].str.lower() == name_query, 'Keywords'] = new_keywords + # Save changes back to CSV + data.to_csv(app.config['CSV_FILE'], index=False) + message = 'Keywords updated successfully for "{}".'.format(name_query.capitalize()) + else: + message = 'Error: No entry found for the name "{}".'.format(name_query.capitalize()) + return render_template('update_keywords.html', message=message) +def allowed_file(filename): + return '.' in filename and filename.rsplit('.', 1)[1].lower() in {'png', 'jpg', 'jpeg', 'gif'} if __name__ == '__main__': - app.run() + app.run(debug=True) diff --git a/people.csv b/people.csv new file mode 100644 index 000000000..b9fa4c486 --- /dev/null +++ b/people.csv @@ -0,0 +1,11 @@ +Name,State,Salary,Grade,Room,Telnum,Picture,Keywords +Dhruvi,TX,99099.0,100,550.0,1000010.0,dhru.jpg,Dhruvi is nice +Chuck,TX,1000.0,98,420.0,,chuck.jpg,Chuck is amazing +Meena,TX,125000.0,99,,, ,Meena is outa here +Tuan,CA,,80,-1.0,, ,Tuan is gone +Tavo,CA,220200.0, ,,,tavo.jpg,Tavo works very hard +Nora,TX,-1.0,80,520.0,808.0, , +Sue,NN,,79,0.0,2723785.0,car1.jpg,Sue isn't Susan +Susan,OK,255000.0,84,101.0,911.0, ,Susan is very smart +Darwin,TN,25.0,100,,1009.0,dar.jpg,Darwin is very creative +Sriya,TX,111001.0,100,221.0,,sriya.jpg,kem diff --git a/templates/index-original.html b/templates/index-original.html new file mode 100644 index 000000000..9cdba30cd --- /dev/null +++ b/templates/index-original.html @@ -0,0 +1,30 @@ + +
+{{ message }}
+ {% endif %} + + diff --git a/templates/index2.html b/templates/index2.html new file mode 100644 index 000000000..f42448471 --- /dev/null +++ b/templates/index2.html @@ -0,0 +1,27 @@ + + + + + + +Use the navigation below:
+ + + + diff --git a/templates/index3.html b/templates/index3.html new file mode 100644 index 000000000..44c50d258 --- /dev/null +++ b/templates/index3.html @@ -0,0 +1,14 @@ + + + +Use the navigation below:
+ + + diff --git a/templates/index4.html b/templates/index4.html new file mode 100644 index 000000000..a0c9ba796 --- /dev/null +++ b/templates/index4.html @@ -0,0 +1,15 @@ + + + +Use the navigation below:
+ + + diff --git a/templates/low_salary.html b/templates/low_salary.html new file mode 100644 index 000000000..719502851 --- /dev/null +++ b/templates/low_salary.html @@ -0,0 +1,34 @@ + + + + + + +No pictures available for employees with salary less than $99,000.
+ {% endfor %} +{{ message }}
+ {% endif %} + + diff --git a/templates/result.html b/templates/result.html new file mode 100644 index 000000000..61417da12 --- /dev/null +++ b/templates/result.html @@ -0,0 +1,15 @@ + + + +No picture available.
+ {% endif %} + Search again + + diff --git a/templates/update_keywords.html b/templates/update_keywords.html new file mode 100644 index 000000000..773b294a6 --- /dev/null +++ b/templates/update_keywords.html @@ -0,0 +1,17 @@ + + + +{{ message }}
+ {% endif %} + + diff --git a/templates/update_or_add_picture.html b/templates/update_or_add_picture.html new file mode 100644 index 000000000..6001ec446 --- /dev/null +++ b/templates/update_or_add_picture.html @@ -0,0 +1,17 @@ + + + +{{ message }}
+ {% endif %} + + diff --git a/templates/update_picture.html b/templates/update_picture.html new file mode 100644 index 000000000..2441e3863 --- /dev/null +++ b/templates/update_picture.html @@ -0,0 +1,62 @@ + + + + + + + + + + +{{ message }}
+ {% endif %} + + + + From 3c18418de81e23431b78b5cfd536fafabd0b45f6 Mon Sep 17 00:00:00 2001 From: mohammedazharshaikh <68691119+mohammedazharshaikh@users.noreply.github.com> Date: Tue, 11 Jun 2024 17:09:07 -0500 Subject: [PATCH 2/8] s2 --- app.py | 301 ++++++++++++++++++++++--------------------- static/index.html | 17 +++ templates/index.html | 39 ++++-- 3 files changed, 194 insertions(+), 163 deletions(-) create mode 100644 static/index.html diff --git a/app.py b/app.py index ed9113c90..a24bf5270 100644 --- a/app.py +++ b/app.py @@ -1,166 +1,167 @@ -# import os +import os -# from flask import (Flask, redirect, render_template, request, -# send_from_directory, url_for) +from flask import (Flask, redirect, render_template, request, + send_from_directory, url_for) -# app = Flask(__name__) +app = Flask(__name__) -# @app.route('/') -# def index(): -# print('Request for index page received') -# return render_template('index.html') +@app.route('/') +def index(): + print('Request for index page received') + return render_template('index.html') -# @app.route('/favicon.ico') -# def favicon(): -# return send_from_directory(os.path.join(app.root_path, 'static'), -# 'favicon.ico', mimetype='image/vnd.microsoft.icon') +@app.route('/favicon.ico') +def favicon(): + return send_from_directory(os.path.join(app.root_path, 'static'), + 'favicon.ico', mimetype='image/vnd.microsoft.icon') -# @app.route('/hello', methods=['POST']) -# def hello(): -# name = request.form.get('name') +@app.route('/hello', methods=['POST']) +def hello(): + name = request.form.get('name') -# if name: -# print('Request for hello page received with name=%s' % name) -# return render_template('hello.html', name = name) -# else: -# print('Request for hello page received with no name or blank name -- redirecting') -# return redirect(url_for('index')) + if name: + print('Request for hello page received with name=%s' % name) + return render_template('hello.html', name = name) + else: + print('Request for hello page received with no name or blank name -- redirecting') + return redirect(url_for('index')) -# if __name__ == '__main__': -# app.run() +if __name__ == '__main__': + app.run() +#2 #g -from flask import Flask, render_template, request, redirect, url_for -import pandas as pd -import os -from werkzeug.utils import secure_filename +# from flask import Flask, render_template, request, redirect, url_for +# import pandas as pd +# import os +# from werkzeug.utils import secure_filename -app = Flask(__name__) +# app = Flask(__name__) -# Configuration -app.config['UPLOAD_FOLDER'] = 'static/images' # Ensure this directory exists -app.config['CSV_FILE'] = 'people.csv' -data = pd.read_csv(app.config['CSV_FILE']) # Load the data -data['Picture'].fillna('', inplace=True) # Ensure no null values in the Picture column -data['Salary'] = pd.to_numeric(data['Salary'], errors='coerce') # Convert salary to numeric, handling errors +# # Configuration +# app.config['UPLOAD_FOLDER'] = 'static/images' # Ensure this directory exists +# app.config['CSV_FILE'] = 'people.csv' +# data = pd.read_csv(app.config['CSV_FILE']) # Load the data +# data['Picture'].fillna('', inplace=True) # Ensure no null values in the Picture column +# data['Salary'] = pd.to_numeric(data['Salary'], errors='coerce') # Convert salary to numeric, handling errors -# Ensure the upload directory exists -os.makedirs(app.config['UPLOAD_FOLDER'], exist_ok=True) +# # Ensure the upload directory exists +# os.makedirs(app.config['UPLOAD_FOLDER'], exist_ok=True) -@app.route('/') -def home(): - return render_template('index.html') - -@app.route('/search', methods=['GET', 'POST']) -def search(): - if request.method == 'POST': - name_query = request.form['name'] - if name_query: - # Search for the name in the dataframe - result = data[data['Name'].str.lower() == name_query.lower()] - if not result.empty: - picture = result.iloc[0]['Picture'] - return render_template('result.html', picture=picture, name=name_query) - else: - return render_template('index1.html', message="No name found.") #changing search to index1 - else: - return render_template('index1.html', message="Please enter a name.") - return render_template('index1.html') - -@app.route('/low_salary') -def low_salary(): - # Filter entries with salary less than 99000 - filtered_data = data[data['Salary'] < 99000] - # Ensure we have valid picture filenames - pictures = filtered_data['Picture'].dropna().tolist() - return render_template('low_salary.html', pictures=pictures) - -@app.route('/update_or_add_picture', methods=['GET', 'POST']) -def update_or_add_picture(): - global data - message = '' - if request.method == 'POST': - name_query = request.form['name'].strip().lower() - file = request.files['file'] - if file and allowed_file(file.filename): - filename = secure_filename(file.filename) - if filename: # Check if filename is not empty - file_path = os.path.join(app.config['UPLOAD_FOLDER'], filename) - - # Check if the entry exists - existing_record = data[data['Name'].str.lower() == name_query] - if not existing_record.empty: - # Delete the old picture if it exists - old_filename = existing_record['Picture'].iloc[0] - if old_filename: - old_file_path = os.path.join(app.config['UPLOAD_FOLDER'], old_filename) - if os.path.exists(old_file_path): - os.remove(old_file_path) - - # Save the new file - file.save(file_path) - - # Update or add the record - if not existing_record.empty: - data.loc[data['Name'].str.lower() == name_query, 'Picture'] = filename - else: - # Add new entry if name does not exist - new_entry = {'Name': name_query.capitalize(), 'Picture': filename, 'Keywords': ''} - data = data.append(new_entry, ignore_index=True) - - # Save changes back to CSV - data.to_csv(app.config['CSV_FILE'], index=False) - message = 'Picture updated or added successfully for "{}".'.format(name_query.capitalize()) - else: - message = 'No valid filename provided.' - else: - message = 'Invalid file or file not provided.' - return render_template('update_or_add_picture.html', message=message) - -@app.route('/remove_entry', methods=['GET', 'POST']) -def remove_entry(): - global data - message = '' - if request.method == 'POST': - name_query = request.form['name'].strip().lower() - # Find if the entry exists - existing_record = data[data['Name'].str.lower() == name_query] - if not existing_record.empty: - # Delete the picture if it exists - old_filename = existing_record['Picture'].iloc[0] - if old_filename: - old_file_path = os.path.join(app.config['UPLOAD_FOLDER'], old_filename) - if os.path.exists(old_file_path): - os.remove(old_file_path) - # Remove the data entry - data = data[data['Name'].str.lower() != name_query] - data.to_csv(app.config['CSV_FILE'], index=False) - message = 'The entry for "{}" was removed successfully.'.format(name_query.capitalize()) - else: - message = 'Error: No entry found for the name "{}".'.format(name_query.capitalize()) - return render_template('remove_entry.html', message=message) - -@app.route('/update_keywords', methods=['GET', 'POST']) -def update_keywords(): - message = '' - if request.method == 'POST': - name_query = request.form['name'].strip().lower() - new_keywords = request.form['keywords'].strip() - # Check if the entry exists - if name_query in data['Name'].str.lower().values: - # Update the keywords for the given name - data.loc[data['Name'].str.lower() == name_query, 'Keywords'] = new_keywords - # Save changes back to CSV - data.to_csv(app.config['CSV_FILE'], index=False) - message = 'Keywords updated successfully for "{}".'.format(name_query.capitalize()) - else: - message = 'Error: No entry found for the name "{}".'.format(name_query.capitalize()) - return render_template('update_keywords.html', message=message) - -def allowed_file(filename): - return '.' in filename and filename.rsplit('.', 1)[1].lower() in {'png', 'jpg', 'jpeg', 'gif'} +# @app.route('/') +# def home(): +# return render_template('index.html') + +# @app.route('/search', methods=['GET', 'POST']) +# def search(): +# if request.method == 'POST': +# name_query = request.form['name'] +# if name_query: +# # Search for the name in the dataframe +# result = data[data['Name'].str.lower() == name_query.lower()] +# if not result.empty: +# picture = result.iloc[0]['Picture'] +# return render_template('result.html', picture=picture, name=name_query) +# else: +# return render_template('index1.html', message="No name found.") #changing search to index1 +# else: +# return render_template('index1.html', message="Please enter a name.") +# return render_template('index1.html') + +# @app.route('/low_salary') +# def low_salary(): +# # Filter entries with salary less than 99000 +# filtered_data = data[data['Salary'] < 99000] +# # Ensure we have valid picture filenames +# pictures = filtered_data['Picture'].dropna().tolist() +# return render_template('low_salary.html', pictures=pictures) + +# @app.route('/update_or_add_picture', methods=['GET', 'POST']) +# def update_or_add_picture(): +# global data +# message = '' +# if request.method == 'POST': +# name_query = request.form['name'].strip().lower() +# file = request.files['file'] +# if file and allowed_file(file.filename): +# filename = secure_filename(file.filename) +# if filename: # Check if filename is not empty +# file_path = os.path.join(app.config['UPLOAD_FOLDER'], filename) + +# # Check if the entry exists +# existing_record = data[data['Name'].str.lower() == name_query] +# if not existing_record.empty: +# # Delete the old picture if it exists +# old_filename = existing_record['Picture'].iloc[0] +# if old_filename: +# old_file_path = os.path.join(app.config['UPLOAD_FOLDER'], old_filename) +# if os.path.exists(old_file_path): +# os.remove(old_file_path) + +# # Save the new file +# file.save(file_path) + +# # Update or add the record +# if not existing_record.empty: +# data.loc[data['Name'].str.lower() == name_query, 'Picture'] = filename +# else: +# # Add new entry if name does not exist +# new_entry = {'Name': name_query.capitalize(), 'Picture': filename, 'Keywords': ''} +# data = data.append(new_entry, ignore_index=True) + +# # Save changes back to CSV +# data.to_csv(app.config['CSV_FILE'], index=False) +# message = 'Picture updated or added successfully for "{}".'.format(name_query.capitalize()) +# else: +# message = 'No valid filename provided.' +# else: +# message = 'Invalid file or file not provided.' +# return render_template('update_or_add_picture.html', message=message) + +# @app.route('/remove_entry', methods=['GET', 'POST']) +# def remove_entry(): +# global data +# message = '' +# if request.method == 'POST': +# name_query = request.form['name'].strip().lower() +# # Find if the entry exists +# existing_record = data[data['Name'].str.lower() == name_query] +# if not existing_record.empty: +# # Delete the picture if it exists +# old_filename = existing_record['Picture'].iloc[0] +# if old_filename: +# old_file_path = os.path.join(app.config['UPLOAD_FOLDER'], old_filename) +# if os.path.exists(old_file_path): +# os.remove(old_file_path) +# # Remove the data entry +# data = data[data['Name'].str.lower() != name_query] +# data.to_csv(app.config['CSV_FILE'], index=False) +# message = 'The entry for "{}" was removed successfully.'.format(name_query.capitalize()) +# else: +# message = 'Error: No entry found for the name "{}".'.format(name_query.capitalize()) +# return render_template('remove_entry.html', message=message) + +# @app.route('/update_keywords', methods=['GET', 'POST']) +# def update_keywords(): +# message = '' +# if request.method == 'POST': +# name_query = request.form['name'].strip().lower() +# new_keywords = request.form['keywords'].strip() +# # Check if the entry exists +# if name_query in data['Name'].str.lower().values: +# # Update the keywords for the given name +# data.loc[data['Name'].str.lower() == name_query, 'Keywords'] = new_keywords +# # Save changes back to CSV +# data.to_csv(app.config['CSV_FILE'], index=False) +# message = 'Keywords updated successfully for "{}".'.format(name_query.capitalize()) +# else: +# message = 'Error: No entry found for the name "{}".'.format(name_query.capitalize()) +# return render_template('update_keywords.html', message=message) + +# def allowed_file(filename): +# return '.' in filename and filename.rsplit('.', 1)[1].lower() in {'png', 'jpg', 'jpeg', 'gif'} -if __name__ == '__main__': - app.run(debug=True) +# if __name__ == '__main__': +# app.run(debug=True) diff --git a/static/index.html b/static/index.html new file mode 100644 index 000000000..d5fd5a92b --- /dev/null +++ b/static/index.html @@ -0,0 +1,17 @@ + + + + + + + +6B7Plss57tOodTnu`^(af2n@D5!U*V7!B%Kzyaa1)Lc)yQ_d9o5>dDPy2- zJyXNJGJ;uIIPxF);f=guV_`-&l44)AH%g&`k=d#|egnVKT$6*8S`jRV)_Jd9a4SN~ zKYp9`i~bDiOJB*6v-lu$5jL$E{2J4$(-bF zsP$NqTu+tQx{py>qH#T5o0w-s(hhy`SuGSv+Qx1v?1oJYjMR *~vFcrvK6!7QI3z*hY0tY>WtxHI~TJgJJ1C*f)4}q`)8?-tHFk>p NRi4;+-{?cshrp$&GOE`a zCZjID_iqI}h52;R1CC)2{mRR=7Y;9?Ue}w}k8pQZ9aSGo?uTP8@=L?ncHa8x)8P6| z(x2OZHm`JMGg#iDxxWo|;)stmT9rDyg@M|wA*NAf)POW~et7=b3$~i)plS^Zuima- z{Hz@F*}GXI7 cOmQHEPejOPPb#xY*R0nRlU@=RMRPTAy@IWfuy!{!Wa_7WRyU z%=(Uqa~uBJYFK{ZF}O7b2<2DtjLNow`z|)7z}Tm8aMI#w^IB6=VOX%~IlxubSD2OS z(Z^)lPI~$7uBAz33mnSuRSE818B)M!-J7^Vg(*gR-cwf=qnU14yqR%Jh2C=lx6)6b z80*c%ZgC*P5XF;$Wru2w+gwcFX%6Y!l`5mWySP#ezLqYDfgrn26!ZP)!> >m@=M9u-}+pm$iyi;yD)x$9= z=K#h($iy}KboKG$WjH-UQTwh0Am$n^v10y+XexVj7Jf^1 K4=I4tKUNMc{>|M-%Yz5m% z`gE;g?&Vr|iObjD`hohIMrLU!v=K>@VOr1d=zg{m7kc)o>HA^9A=G6B4N TO%6?d <>O@px|c$;zAhg$Ao<-JSXP>JD1SI=fBcCQp+bnO+4FIDk{=p zZAg#s0ov{n)?~pOhRg~yFT!;mE!_YqjAV*DkE(MKd!_2vn<+hV#+x@}DBd*9Sa84W zdSK)c7^J36LZ z|5IfY+6i-@m-^qS$4@ zE^ysf(L(R3#l-PB0Iq#}#GM;@DL-?hEa)7dUvUng|J@eW&dH715K(@No(jU+I@b-K zS` U=f{H=dZ&4qZjH30TME)jJVb)UymWEFIz0D3^@9>?t&cC%rxnScvH?VP+;#;NT z3g@=95H_<_0dp%DO!h^#ZXZuLvT-LgWy+nUAWfLt&TbN=1(N;pVvS$CxtKa_wu!Mx z0e>bFz%Sqb%q8x&{VIi3#YMR4Wt73KrUN#?YNGw(ZwkqU6~%@ZLlmm&bQnEv>pOb6 zW=L70uvMj?CLQ}}&C^@5W(_L*{q~c|OGO^(wV^lu1-AUC+1G8D#7_qyOCH|c!I=1! zDJQ3wV{1u6YAQ0F!xKAyNs*Cda1$I8wN}{SURIdLt7_gTp1U!N3+YRZ?}xM`Pq3F| zOjq703|H_}fcVJuXV_);9l!5umvIO7z7x1}fJWXS 3J%?B z U~>-#;h$nwN^(&Am*YZaJD2VBW^ zxdKkA9lhWHmOK?y%X>=#3YHeA{+tDWv)K;AbOw9f0@R}RKsqQpu!V8z2K44Lmzzz% z+IM*&e-hR>w0S;h>#d )z4F&F%bjw0^bgpwb{7{C zh$(ra$F{DNvF-&k4pDRA4U+W=bm;kyLk91;*pH+5t;q3JDZk#?i~;6}l@!HdJ2$&q z_Chk=-+F+&qv;tk?VrJSx^5=}_|+P>_`mG-x`h6EdoSxrh`+pE>5?(JO3$pAq$?m? zr=>Wl39>mnC5Bm}t$gM;cgn2=NCpOL7wl};NukPf!_m_DrXi0vb+uWKAMK34$`RZZ zDM=XA$v+*;2tlTB%TP5FmMqO7VNuJ&k&6a>0-FU1jp? CO*B_ZDN` zQBGO7a%UKxDNCTUK3E5P{NnJ8MGq;+$S7WroX_=w5cWl!MQp)mhtw?|mz)85juYg5 zi5r_GF6C(X-v7GhZ$+f+nK@R9G4A)6!yhQeUoX#om6G1yIk2Xf%>kD)c$%oRsu!N+ zE$`i>4;oRjw^=tkm+TD18y1R({#*+byAhDQQw(IT^Y6IUO{?-$o^xbv;Xg|9$v7DM zb8x^O-Mg zgl<$SA>Pdlq$ zzs?>yGL?BtgdBQtZ&j=X8D<9>RF->@o@`Cs0BF5OpjG!nTm|w;*~>-?;w6^CRY#vg z9Vix++@p=>05I1DAMua=_^BJ?9X yjErW_p~AzL|{J64|x z0@kN~ImX~M)NYpxV{{Ah23P5`*Nm;lCZ_GCyJ`=7E9(6-<~{U2GJQ@?hP}TpA9sl? zV5TN0GZ5YWUyDPrX>mf)b(1y?bmN3)aE7B(8de$-w2?X5QS)69^Oy}}K37mqaaAFu z3B7AlPI-p4++)8D+$d#r;t$m^%&Y#cphkh7(UNE6;s_NrVLt7< z-jHdkc)Lw1Z(?e?(-U0cMzGa(&e!Be@m39pXWl$3@RT0pNvk UF%~dhf$TVt@HZ z;q7;XBDsE&)JUC@Fn0Nb%T{49!j7Ck?pxSB2ZYHnA0Ua`;j0LRZGjlU*P!qkaxDGV zU#!Xr;9q_dd~x9 HxQ}d~2 zGiO%hu>*l_jr0V9t{lmlA2Hg5uJ;4B&fH^eccI&;?tFXQT5s(xkf((wKL5I8-=b5> zWk-{rs$QB zRnVq~Tj}PQ#al1Ddi5lHjxNXcn{d_l%a>x*yWBl(hk7&q{=-d{$?l(dB%jo~`J4Vs z9~aQl+t{x6fB+{g)~D;qa86tJZ2DE_WO(+BjZn=AuhU0|PsVR{-`ZX3TB3bFEzJDW zOHx_!r~iK*q767m;TP-bwZ-FXGi}LZst{8yN~Y&10go5PF9J=Idut~-9ZGE8%`rr> zIzT`9(Z#xZ=yfN@yc)53*>JU`eNmOi_{Hi~qmMR1C5w9CnoTrZoOc<17@*v9KuMm2 zf?>pqfeq*6*lLS!_l=g{$ DiZTe+6(y7by{A38e1M9I_9`8~Zg9c9cV*-!s!jcf37=iQ@u z|LoBceQwg?dN~D?a?0RymepCfg3YtA!*3Zf5LF+7EdB%j#N;1)Ec~c#ih-=pBWB+6 z{0tUq7y4D@AMbI4?QeUdV#UJ nf= z80gyGWcJIRXPUB_K1_wKtY`W2WdrMCW}iQ2r3vgs{g<2^EEEd#35kf|^WI6h!IoZa z0R~|Q$h^DC6LrR@c>_TpybMe%C19sl1AFKDT;{UM3Rly@f`@>0C(5~CZ3AsM*ro*r ziPitOpex2Bz^F=Sc`nE@wyx!Uj8l{ZqQp)P_T7#*>sr5buWF?)2H{ab-zyfCKhK7d zCAM9ftxmTmY-Uu-DV9DBCklMkP!T3wPNkxWeWt(PQ-1py<^B7nl*EOk(G&IRu !P?Au@HAwu189y24HMFK?vY_ !B3}HSdHjTVA(b5 z5}qo!-x9&s154s>gwP`2ytiln>un>-D_dmYGtU)TT30w9W)3DqSx7JLPwErYg!?4* z#vl-RJBeU7U7ox_{ryBTRpoYuNBpmT1KERRsb8Jt8)0}pylK>|$xVazz|`-u$7^>d zMtfn47e()q1B0fwsCyIKH)zALCHi2}SPr~vTDj^SPYvMGBY5fs^VKB2_psh4{=u-2 z%t$+Gny2?T&jHt0nm^3lF;L3zLUIub4K{nfeM41{ka2yQ^eCaEj;VRNOL9($9g>E4 zyn)+FcgZ*zGR#w+9lur4e#i>-*UOoZ41o5-Pv*;o6FJkZHYuCvz3ANB(TSCdy#4o4 z`PrSi|IF$X_`gpN({vg<+W>V$Z+d{*8>~hL@jFsk(UU;&KV`X3BTb^nM=!%~+rh-u zip~K~a8nPz<@F>ae1fe`=fTQ}LAPL=kcxdO!unxWIql8gXjeM%X%?0a`G>+pn;l@9 zVL?{fnc4@tp6S~+x2;8VAHOb&8|!A70Q}pH-5tU?t9jPxZi3x$ilB1 ^q%eg zuy!@(M$r8%-cK{?bzf#$K{rA;1P0ux-ebi6xANp+p847$2=ofY5RA8t34dPS5G1W? zp3)%)=859TzC0B>eITN 8knbE)^t}`I7!*u+xvSJ znfV90Ye5!?F5f(1MJLURx2KEfzBzKGWq6E>UDXAg?Nn_XRHz3E4 RBgj#+iS61?hsxS(`MQ}Fk?dq z<8P>_f#C=-#I=X;1FEr`e8Br)_cUDy-T+IUqTY`L;s_#!Um!k 6@dV6Kc7G|1m4tohWKn-78pFGLO1pl$ju`@&>% zm*J_YZrCHoo4DR^*(;KocdJ$}>E6CUmy@6B?A3NTDj#T|t73 kN-S@qz}DB)dk( z-Y;l$5w!evir-jZ%wg5Q(SbjEjv ?4w15+l+}qZTTEVhzyu&)nY|oz-%<#w;MQxw{@ehZPBDMzrqGwc0yr!}T9 z(>}p~6x*XJJWOj(y5EQe`Aw`sulzN w?!`r|oI_u<|@- zPl{2n6X83kjdV$_qjhzj()*XOYdG1EKV4Bhbc#0_Dgafio=h6@J9fz6jNXKKOBe}X z)=BhBR{jz9qUtlgmm%YUW53E3#TAS3qm|_*?J~X0dHB22voo{`N6U_^AbU^X&$e!_ z-!OMqxu _3<#En1y(yT}Ygi%tFY|-pPVPh;?&{;af`*KT@huCB6 z+xULkE8tX 31x5Qk9=%8W%xxT$_}*RZZzp@6*%YVUo7i0SNUQl&;VGE~&mXGNuO za*h1G0s>9)OZMLUrIhfBOQgTK8s&8k5Yxy}GH(JsP%MYVOzhd_V!#kIY1Kz7-{qF2 zXd?-}XQy+Drxqfe$o4N&8-d=rzh=0r&7RM(E5T8NrzYr@t0$aAm!oRe&}$N Nuu Gp=j(7> zCBy^x+M#zJEP19L#l(Hk0M4U(39w1#fzb2B8a|)07!<5<%H5khJ|b-?FCM+F2VZc+ z)~5r5NILa~*86~%mkhtU)O M^0Vu8zq^*`)9QpDyR)v`{dSyf=+)=H- z)xZJ^oLM8xiicz~1-|_dtv gKu$y2^1JFjv(XBp63 zVbAa&FF=?dc}h3`KX$@QF-*|i`-K+Z5)L 7rWK_Q>?9RBY)U`PCT zpK;rw9l{mtN(S@Xd?bd`eiVanXOi0Aub_RH)?qU|x7kD3oe_t)tfA*XS7-X%W~NmF z#tymL1A>pE+xi6TU>+O_Ha^YVFpt#vA7p!8yHd2A*g^GBuI`Exw1sQSo&*;2&k?!C z9^TxkdExb RRo>1B=9ls3>eo);;wz hmBV^+XydV&^1a zkom4ofsvki8vT>;qaIVbZz6e6EN$ 7D?!8~yH1o}to}A{*+sEF zz4G2b9d(-fxtD)&=7OPn8ea6v=#eDZ# !@{mPw8c>d5ndfj8J z5WM-Q^Y=rJpAK2{GHoV}yz=9Q)08I_Tu`x;m8Octn3p8pg75`TG+(BC_sk{<2i({j zBoo#t(~!A-6x@a9(!nZhSTv{dezKPqgG^1ja(Di%PfE^TZX^VrWOm#3{i<+XtSY+f zUr5je4+i*59@p*0b&V)|??`E2mCb6HIR@eN&$J^C2j=X9_eguzC6kdwWlYb~d=u_; zD34tgD7&=agi_T?F!vW7AE&sus=noCB+EcRt7X$rD_qTLkU1@bbkbeh 62A+f{o%!tp20xu>ua+f|7cn-YA7%Yau)%Cj`uX zz(i*OkU?JzBzsbLfS>-eC?<2YkbQ#sJLX}Q%GsOC+!DbG9_q^ERr&JO|6qpYX}-jP zvxmO22mP`UuDqE2)0YoMA&)cs6YFX$E7`SVJM^AD+Z=58OG91X>kBZ=bGe^P77U!I zzwmM#MnFyT_{e_Exa0f*w?AO3jS(5vQFlFnvHB&+uZtS~O6P!Jmv4`Ve_C&Hy~)oV z@-(3MT11RaR~&N5*|W=785u_>f*_l!wHKU^ivyVXk*;1cy_bkVaN+O3fyB6`y3GxR za)^VRu=KDQc?3LkVOBx@m9fi~T;sz8sM*R+o;G%GfXf-B?rJ`WLr0hK$raMf*Xp!8 zTHnGnLJi^e*zA <=Rqko!C^}*hrT_QPEb)MEAM6p z8m;Z#f8gEtQ!c)d#W(E7(!;OYor4PspJ6$&^Ot=S0?XjtO1jqGbGxVINmC^Pz|4|q zIWV&?hD;oSNPXQ3YjHY6yA*@WlYbb(3&w3&MNJif-&fM2L)u_()C5XNZrHEX!fV`% zf`3i<>4<9?_tJ}B)k~}7`k?JH`0^7|cuE}RRV}3_0vqI4)9ZIn@zT*&p2cMzI{Ibz zh$3#ncpz+eR#_;e_82<#K%&OTiZlQL)5Vb=bwnQI4*s~z4I 0J8M ze{s|M>abjBe+F5YeYO*ED4ZC5d`vwC? NG;R( zFKsXF Rj{VbQZ8s@14YfiV78cS>XDTf@#vfAzXQR%8MEc((!%) ztL6!gGmCtRZJI_}bE&R _19(=QWceHSrqtCHK<{qbjGn7rjnw6 zEbMymc {^P#z@WlsmGx?DX|x$3KoNf06rP#3q%s{!eDS58a3C z8jeBWJ|Q` g5B?t`%V zLsyMaz|F&%V}BKylYy{PhOMPmVm9-s<6JhQ?)xEozuax T zp(nk{!IjofA-OxC!}RtW9m)LR+kY1Iwb>)|b_{1b=M!qnpgW{oHRrCJ^&j#|wra(* zLl=&H>58SH=ld2d QvWZCxF}Ji zJ*jWkw`=(>Yr>U^@ZAG-m?WpI?h)~)%!%8#V`{4J)~epx+Q jvj79*o9 ze6j4bNEKXmlzP<(cJK~ZcQTLW396n}DtW3MV-|YpLE!4|x)Ppqz+W&L4&C2TQMCCY zYHUCu_ED7OI@w}UXK$)HMOzp()!&4mb)4Y6ksnfBt>)&m#&$d&OZNLIVdMM!4^w5! z8rE{h57wvwoaNUFEK;TC3kUSY5w-i1zYi1bw<%vlWkjuw@U_^%nsgw0c6Dk74@~aN z{7@t>=0=IFUe}=3nIl-aJA_3|=1c2vL%_Iwel~1k201cNnq!w}q}N?o-`P8$UAe>G zx;Y`<_8_e==h4VNeYG|=Tsx}OrtciUMAlo7kV~z<)W?Ic@v`po>2$`m0qMIN*>;7r zJSnIN+lu-IVT0iq%+8SN0!v;n3frWco;4Y7GfEb*oCS1n-50yXB7C*&^E&qmIin zoNMBwlP5G|GPx(aKR5io1PqQU=Z%AwuDmH$@aiU6tJv-Z$($muyx1B}_cAgkp(`M3 zbrXk?bKKImgXWM-u4i0T39u6mS*@1Q6SFpi4@H>m<*v0gkUxb(S3xV&>l=VpJhwnl zeR+SxfBGDda?12$Z}yrBli|+A2b!5Wo0igc1c3_H;IFx*Q0_B{91xAih218CYt4U9 z3uoVi&RDX^xadT;Rerp$7e2lF$TF<037M$E+AlV(G&Ak)bziZj8}_r?CxOm?iZmf5 zT_RoD6Td#Q?3pd`@cHK$EeX4%Hw8WAsEVC+n77v5@*3P|Q|(#VQspM+!}_01m0va+ z8<5l0>LL=|T%^Zz?oOIcJ#l6%5^sOey~PEp+|10@CY`YZ0|E!`H$5S^x-JcYU_{59 znwp>ZWR}7&1c9=&wcoTUG14#IJ}Xs^`x#x>b4LDpN%C(@7eUWxu;4dNZtp07MXxba zcJsih3FnA7;d-@v`%V4L #;`}r@PUn &8ezuT zJSpAE3tkd4jY2gR7+dBYOwCGRw)l`elEG@*80=b1YzTr*9`EdyA@wRp_A-H*O;}($ zd%FMYpP1BpBYCK+samr&oL>1+Ma?W7p!A!(dZi
4K`zwAGrZEJ8($Ft+Je8p)+%19eN;4~jmpoH!Gs|S%-LDxxwO%q|C>g@` z)ZFdlqFpg^M*)MiT?HD^IX|VT@zgK8U|TD9U*FsoGq%kYo5d7F+cEQ~skSD9aMRwb zsR91#1EV&~Q)$5Khl808L{i~L@trW 1A;D@^gN5=aDu5 z@2{7wBADCm*14&0M(5YBC}xUQ|Bu7KFGB9bRL%eS%NQ-1BkZjVpZx)}f$)JMB)M^p z+;dcCp 3F!&?0Uu#;oVN-)UreSx zQoVgqt3~>p18z_1^He`U(X(3uJ#0Q08fXty+}lYlbPjG+-yMz!GRa^zkD@f#HrB{Q z3mSS5*Us!*el^J+X8M<`ibEjMk@Q*5-j5l}Pux~92yjBs)13u<-Db|zX+Z(odxT^Y z4*mZn50N3Z*Fzu9kb_E8xCYE?Wi(LWC0bS|&@;r!S%G20{q);zBq;DUD}|AU(PL(TynM-h^-PZFw; z!W;fh$2X_<+Rd(7yg_WJ( ZeUb+1QDdKt`Q;pXw+;5Bv8kz+84h$zhU zWArU|h*i?^$}7JDw ~}ooU&>+O-e3sAQ=M&^w%>Io`duv@h!R3--XLqF+EG z-x&dgo)S<^R^0W)m?;QSr3MJ+6rR^N7}6$G@FyE)G)p5)Jt75C4|QszOMCg=>!e<# zPi*%OG>LwtTwBOJsc9O_M>t51t<%Uy5tW@A-S@5dU< t zyrWF1gXNF4kg+;bH(f#5L~{e{l?6y^B~efvA}ENPOVd>yo%Vky^J!eyWAZPAdG*JO z64AB_e~9zV`tF67H+w>}9H8=I1)K_w=55TmId9ht?vLP6r96|q#@XT}XINF6!@jaZ z{??&^;#G_Hektv~FW+LThu#3e+&ZD!?=IK;_gK|^RzBIfn`fNugXn|?XXEi%hYb5- zVq$H^;DWvQT5r+X>s7N)MwofnrVPL6#>PhNO3o4U$@9a>wm0^757XOHMh^m1Ghc7c z265?ByV_~LLk=o5#^*|iL@(M5+$-GWO1txNS)x_mv|{7CCV!B>RS?FF%DU&n@g`5z z-ySQuuuKhrsj>4?zn$tL=Txi>hBh`G#0F=cUCF-Ih>Pd_5(T>5ldDh|OiuXARcYPE z^Fkyae~X)TJ%?wAl9)bJpFA@+q^~A57^-SqbahutLQhy5oS%4Nj_;ygJp^rw8*fpw zP(>hYnteEiee7Gd{$S~b2jKGDJ4ByU%Rvf=>E>j@*yN<35l`u|hIoIYQiug_5LY&G ztIY6Qo)y!l#LT^oGRz4Mrkb*K4(LE$o9Ko3&*85ha_;y=Dq20HHB4|2txu($1|5H1 zg-NM<^hb%by_YRe2C?FGh_sbGrFR`!+V^0__*oBXWPy+gxCl5MU}ZE)B@+$X_N?*Y zs$APL1vw)kkjJ4Lv=5{1kKXaKHo(?ET}AV%hf4cGmbJdL#fQ(m^X*w!#H(7Cr%Ai; zWh7eff$%;)O0sEQYjE5#f?n#{pE8I!NcXMAt;4eXEJtPCD8U)WkbVOVVd==|{M-cf zeL?l-GpO|gT)iq5yVw8I4ElOjiKpqoLw0a21+rzurGEI_BFKtCU%t&sp?p>&A-t_2 z{d%>?S0 @CmGZP*I+z+%o8wub5x#>M!gxbZwv6{Vq z)7e=zWUfG}E)tts6sJ$EVH(48jz?29V+p2janm%qHd@ K7lEpxyY%} z;Mlu{x1>&;LR)_WfojZ?udIMFEv)PR;0={dkxy>;d-*p#x9aBXj4?3SKN8-Qw=+Pw zN$NKR#2GJ+SeXgfO oqOGJiof{n(UEN1A<< z^i?n!6JGG~u3h@m+U+U&==VFylBGpZ(2Y1-EB$u~JU3}okj8!%=@tc9TA$xXvkHD+ z _DW08$J|dsOs-v_;O#mWoQ#SZYj6DfmifLN z=G{Qe%yZqOf{tgvd_kJU5%@z1rHX?aP zP3!dDbz}?wo91B}x@X_GBvukGyiBnkN~U@y4TFJ+l~vUN%Mpt8xyd3=@9wlMMY$+D zW|6FBl01lVvsk;o>se`eyF&*>ho8}Ya0B06V&7P^me%?SS^37tj~DW)aJV;{pR#m* z!98AjkGIK e z+S}WKhLYM_s +|?iL375=l99sJid@NK1a3fCiMPt>?a*c!T|mzib1m z()kbu_CTDN0FoThqVC!!3*Yhj^rezR!3*HTc;Xk@uerAtI#+Ksx@hJind-#}Kf5S3 zsb{u89tD $+EF!GWvYTW9DB(vf+ CC~tLWroRQf#R6yN$?Zh1P?k(c-~=?CjgIUZc*XV$g-E*k zD4N(vC4sgB>bf5EPN5D!+f)_mFIP6DGuO3)|J?2v3uS?~>@eXz(=EMY9nbq*XJ2f5 zyfiVG{FU?3<;{T$bxi_+g5VwfN5~aS$x&+9UgNQ}S~0O;pKHFifns^U!gTjF!a+Ek zLCmFs6 ;35aa$mR>FzHzw?X2f53yE(nB{BGOC-G%+tn z4_N*fW^Yz>>=rrnC6=T_6E|%6Sikgk;hb?zxx)ksf)71V6Q3z9_g8isp8_Ls?h*Jo z*^hDqzJUm^amV+Sm9t$Ce^C>={)JeWM`6(JOo|w!@}5X$N_5KZW`S{{3q|yx0TK0? zc>!dKCdLSI=b{ItLS^@~E}j%CN= p-J|$J%5Cg#&fWTtii_?! zA5&Jvs{TlE^gByyR%}|=cc$8rfufKP@qCPu%WIyMj}t@o6fz3Cyr@f&d3lG7(}fPk zd03+fawF3Q9trfMInF`cTC=LB>>P9}HL7`ST47lp5p9x?hn>!`WAAj5g6vM^zE_+z zYt}JrG++EqM7gd1Wn-iI{29}ikkI5tAW;n{GV>I5G$o2DG+6;Q;9%u8SyEjB_S5%T zxt-#>U9a4&1*p1?bMwZ6a&=T3=a}7N0ibOtDrIdDrSc#cj6Y!FsOqSTA$btcD<%=# zQ^%>xsiSe|*Zam%X-1<9n6-Gb^VOtA*BN14-DZ-|ja8aVZvH%W-hZ?J^i2kT9C$!7 zJkX3Euo*=K@-0;fzfBai^%d)DZl3bE`{C_IaZWBdJ=QMzQj@f`d7Ru~P%?vqLPR~o z-K0SV515TXjRfBVLUXBNIEUWLVcC6pZDm}jh&M)$v;B q(N z!n{nB_8g;+IMsi+I0{r%*>#|^L#M7~*Ux_H*Lhyb%Crr<7oj4RmQ_`eN~EF5`Xtn^ zOkBgnct%O_Sqx{3&+gq!=gMl`?1=Y1O7H5PNLoeC{U;>pe!pCF2wfb$?;)V_&Hn*p zB6A5fH4c5bwNVrw=>d_ks;-gdQW|`L7s*)i7}ZNJI5%eTC UGI+|+<}cewzecFZcv|!P*~(vUUvvNQdGR1;XPuZ3q7OC aSS z(oV)Jb_xy)E(aKJyUWy9UCZDFt|VV6)G%_1MHn%LtM#wvp6!B|Fqv|zA7r^HB{!6$& zqcRE1O3Gw67+gx>&}G;%A%R?|*Wrc 9WszPj%0Y zdJ1ax*gHzKt4=e3agB2)a^GUGfA2+^`8RIg{=o^~rU9XeC|RD5i7Ml(LG*dz&i;X} z+1%t7so@wDd5sOq(~ex<%|-U4<>YXxE+ax%g`Bt)Y*nWB03&(7nb1=nYox?>iBBU? zRLD fP`od=fx(FV&CpSldzJof=HraB8?VmX zx*YVP{_1<5w^VPhum^E1!_C9yYlK+u85}_xKiz-}jlGSwv~RzKK5WQMhv5#ewu}R9 zX{N%ekjQZ3-L+#_?vL@+^Xer@l%-T#UerCn4JX*h_!I6XzZ)**SN^ydex1 3iU6QlReFfQH$Y|TkDIK zhgriEo_qw5qfnpVo+^JmQ3vyTNcjt|ByNVS$xI;AS%5U}SMuNDtpm$F8kDt>lV2A% zqkigY(@X28RsnkuDT`Y2J3}3Q3LyvlpFfM%+LkWp1jYUXmtgM_8VP(YM|L*m?ft;L zRJYphuvO38dO!lwyjF #Q}N;~v@TKu3l0SFu@*maB75}gWZX`_zU9DjVTi$7Vor7YwN zkQJ?Uy1HUC*_i^N%f+<9Z(^QVK81_-=+ej6A=tf}emNGHX+uqo mw5{ud6K5b$T~!2Zpa2_BsY z^#@;4Gs-g)&RUzld*1`@{Le?k(jz}rwmg8o**L)8A7qd4?mhPOrFH?3M&@8?@5m?% zY~c!MM>ZNQd= _!|j(^!%&Y*u3}ehj8~7rlJb@oNm$18Y&W;H5i$Dmmuvc;o|>5k znJy1b8`utwuM?TVzgx`xGO|XjSBnps^#j-_K3bJFc6I$$#c!1_A~plsZ1CRGv+n}a z`1vjwUA&O=wb`PyHv>U*Sca=@njP7h=Z-Qh2nX2Z uKH7 z&_}$k8F?-jE$$Ru%yyC&QEHxY08cm130m!{6nCS-8{;KMvH6z%3)PYl<+) ?iOsB^GFPwLLELGbl@XMyHwyB~7hbmh5wUkWpx)MAbEq*O;1?7AiJWGGEY zH$G#$KHu=R1xU=fr;#f?5^tQhGHE{v>hYqM^1n5JsCJCKdGY>Supg%?Z$hnc#?!Hu z_lbq~Hx7oT?;rrWJa|Z`ZJ7=DD4n4rkPXb1CTxjJ#a~J(Jcl`((rMV=6#T_3{msPd zow+5ioKmyTLG|Vf8RN9D$m#74G^|U~FBb-@+S*b$nAFA}XdF48W1w>y`IrCUwshzB zse9{7)(~nqFSRJCudtAsol4vw7f%sLQ(=9(e&`xp&^mm XrMb9KfEysDQv|A3XlEcA(KaA;wh1Fuwx@=5d1bT{D z4zmBYy+sMFWcUVE+C2%R>RAneqcmExPGL;`trk%$`=+eir;>g$!~r#?apgTwYn^f7 z?vi-(_;T^)ym-% Xj@Hpkt*{(y@41M6^Z#fma%VRd`KnyN+;8QOyiLj)T#`6G{6 z#4^VQj?fnRwqD8`Zr%C3ln3@pKp2k|*Z!Q;vDz1)*ag-MBt3PK@&HfwPj6pKVd#`j zdYS+ghm$%)mwoSS4y pVa;g@WHm zs=bQIl#fpho6gRJ@Yu52xF}dx$yC 8TG!lK(Wx z@my~5Q*+y+4B>rw(fYX?+4izh_V}Pt5`)h7<9-H~)p$jYGC-hM4d|Q%swCxEy}QlR z^F~19e))uX5zUXNlnz%JxEw$lZAtjU+)7g`9ZZfy5F=T0T+^mWBzxuVf~u?Po}TK1 z@p`DY>@t+pNgg|53U31s6zX;El&b$!Rc+TaI`2;=L`{O{9|aczB)oEJFo(f5Ye}(r zBIe(T1Kze!kbJ+!(+6KdgFZG1P&|s%t#(qI2A!o&@4qd5V>A&gI3nT5EH^<)dgegx zr 5 zA@}hZ5sPAKKygT{S|qMHTK!WXhiU6$kK@Qi2I y!P}Q*hIqi9 z{%FG{ih%dl |5XK@xosUwYT(sQ7($rmDT zI`8A$MU|9xC)>9K0PGVu#)gefqH%(jkkJi@Iye$b8ra=cEwF{%_`J#twiQ`q?J^^t zzPA|mep_=i)M0SSZCG|{Zf=)4_s8hAZJnE0v>5i=3^@E2r_IB-u=dK%M1d%@B*6M@ zJvEG=jjz=&1BVAQ5evRdaa!qhY|Y3Um+0 bc!%W*>-%|s5-5@@ZORZn5@wHZqTvF`24_TjwFZ8GCOTaC#ud;{7B4wx zARmA~jRORWtiO#-_He|XCINpMNdXN(5FzT#R%`Mx>y!b^6xq4g@uNH9qf4Bbu#1Em z-V4?bt!a^L=Y1w3-O|T@f5cL^iyeFI!^&nV6HT =R4BXio|iq$`7eVU)Y1N0zA`$Ewx3Y!`EsBB_*!~pP&y{gnE zf;D%gu#A2$PI73X%zLBz _?EXU8Z%*<0It@-RWtLe8?#mYnx-)u9I Gwm~%VfEHWeO~4Bkcv-t7+M x7Oiwbgnp?BUt^9;DVjp+JNLg5_v6bctPERbRFP-zfvx~L9T7S{KOWgl` zd*g !u07#CY&@SL@O@=8-}~P@bJ5W z>tuIoC(x~ralh_zPCS+ncQHLv&;(LFb!EA5{VH`2d$4(^0{{2WD|I?j4Md->cbhwT zV7%R*`{M{UXy@S|M(mQS7F!d+k-MD}3oarn>+ZTdZg05|B{yu59Uvw>GQUV79 #CY2tOM)mhMwJM$~EB#m!Q4bdzX6dnuyC*{3bDP6SpXAgJrP-&8L$Sb3Z zb#hz+;@!D=VlInrhtqm10p>k2h-GpgG}89>MgnO{^38VDYXzm|>0WEE%e>EY{N}EA zc_kEgMFXmDIzIQj)NbyR)`|tJz&BUDA4EE%uz~B-c^1v^s4QC$Xe+p};pK^w!RHpG z zYK9tPAYqPd7NZ&LgU5zg?%FdN)T8_(fWxs3bAnMGC^4Qa$Q*e9qVO((+IgERz1u=U zG_OCTIM)0z^6sO@{Ga2QmD{&C;os(bVdLhj`;#Y6;ZWJdqkV18dC!z2ehwf?nw!jo zA`r(+y%_sDY#Povx71@_ez^KXGE}^UR&^o54@^Iu8?a_%2<5IL*s|=F$vtI_)=kqJ zjhSnM{hs=*f@5#LT>E-WFx0RjD5^oSEZ~UwAxCf=_OMv(hl=Pjf%h+)FbgNrG|Jch zy`phu4j$)?Zg{8zz6ppMxAf5b_&`K>8E$jraQ|05M48>*Pmu@;X87!`A7?u*ZY&aV znZbMe8e2`!^My55n}HX#f_?8!oVVmV@&Skn
nrdS2 zA_c)N^ JdtX%9m{H9QU9OTD{CWYIAXya! zKR zx8G+Oz!57CU z&ZrY8Xd$9u&f3~R*J3f2HzCJ20d{AZ`0wL2AHz`p60)B+24kPP8QA0z^_Q)9Kt)c* z$oajhYL8Ob;WEPQ|FqUM+Wq=e3JtZVJ#u>UDm?mK*qO9}x-%N{Nx9&8_kPoy|C6ey zNEYpfs+}@yPkf;_=_xl#vZ0&=vR3;jGN?u?jjj}NXGFudRA1!Vr|1c(vR JqcZTt1hLOOsIt;%0WKW^mA{B>ln!;!=Xkxd&Va zAP-?AP3ntDpMTdgZZQjmd4Xr~CdqPE6I`K@V^ZpXate|xJiwZ*KxfLMuFx9Jm(JEj znBfA1L~H6RhayzNJ-zrhB z<|^VpB#lc>#w1E|#Kuh>EO)hw_v}!z-SZA{KYgk3MWxJLTZ6poHdyHUo}uLyxsWAk z$<=|lEl4K)G!u~NT-Bjj(X5oV@X?^gMt7l}Iu var~=t|7#@M!- RZ`-j!?Gthys@@bd>3XJn1dDlz;3dsMh6sJkqsPYqMZJPIH$_#QG9N0H8r z282p<%y5|5?>3h!7C?D`x4OX+?;v}hS8D~Z^ONo?w)S*KeEit8adj|ifO%>$|F*_I zcZL{>VihC~r*p+?YIlO{hbCVPCY-6^DB@Ur@sRz>)eClaMiiCNQ^`gZLy8#)aOgCt zllHmQW&sPMu 2?&AXGYT>qC2tL` z_$nP&hBv4!juEN@*gvlykwsydy&r3(6XYZT3DD5$q{sF`O>MgjBZF^>k*YQ5di>XL zonx;^zL{$uKWQ9Cp}_Fgtk~iZFPY`^&^Y?7v0-+f5ASZvoqPWJnb$*0zU8!=F%XZ2 z1BPX!GG*PVoc+@REZOz=NUQ-5O*vlNE~NgbZFo_!zaBUwJ^#~Ce9T5^7 O)4V7X3gCw<7MVUPCI1)CD>0SL@tg0{Lu+P&9I|OxaA(#I!*=Vz& z6$8OSPy6QCqK&_LQ0`skAxsp?DaJZByI?YRYFf@=fXtgcO!5s5>zB7g?krt6& zoUk2N@o>55pq{a7bs -uy}0DhXz$p0oM5rsG+Vr&ysmDy(N%>oS? zb^_k*(;Q|OF{uKGR*79vBYLn`_-~W&;=861UoUgLsdIVio7tL0@Ycj@CVx-xsJ)*{ zv^_#Mc1;|I&*^<8Kc@xHL0ne{AI>F>?%c;46MB>8?woeJj1Y|pnhiev^knMl*N w>6jRkL|~(9j{#VRavqM_34@;VR+ETW#elL%Yeq{QQ)) zV<-hNE6cu09sKiI^;{eAn;Z5ze~Nl;s=+-O>)*)B)yZEt<5bV%Jzcp<={bo2icFvj zBnWKowm4~bbfr1b?wKdI2}Q_u-5s%sS7H!^_6%virn%;MYyulfieLZky6KP^GlNM> zgE{cCC@9XWaY^AmZzRoH71Hg}#^^YEYl=4wnlfM%^L(z@SjGYs!t!Sbw`_-hf``}) z7~qBvve(I!Di6~6i*w%hyZJxfgMnQiNuA?V>@^m{pSyqmZJx6zoli!1Y_zZ!xoDHM z*pTfNfLTRUgxCRWvu>~g$)27*^>V4FRo+AtLy2%P1Z$SG-X1pav90KFUu3Xg-$B)V z$YSosoI(3VI)*>(A(qpLt#{*(z^Rj#nW?ASb%8J4 n1w};Ci9k=;+`niYN zO+hC&h4kE{!1dEjldF6Trx+7y2+U|>u6+aWQGGzD7@1#OZt>~Phc_>tFgrViXF&~P zVt~JF4^=_AlOve}pl>_oCOP*G>`FlhGM%+|w+}7<_2;f1dqm-x0?i{vV*`-8qPWjn z>Kos< SKj&IFjA%>@8nY% zb-cqd>sNrjVXOUF&dNsE{szn7(yRFKQ_|BP_1;a(cdkwdHC%w#BCYKk97>t?m$Ir1 zstq<@?r1_Eit>q@DfiTV(H@%#nqMdK{wP&65x_($5;EVc>R5vbM#sUdIfDH10M{M4 z7rd`u=PVbDKVBuVMmP>{ON}TJ<
<^m(4u9 z^J4 -`tA*9i&7$4Qap^N#kqCGkucC6XT5(n<)5z&dQ9)}ZR3ZC}BX@A*|caR(3? zHWJP Scqsx8uxzij_} zT|h0fUM~2)<=|us9eRUu+hEN;Ao!SSkDVjTCeM^;b9(m7(e;QBBs$R`jJyi_Qqz<; zBc~u2wet9$s$O<%^R ^J?yikK;OCnxmGW@jLiW f7s~pn~NveoX$NW*9Wzz8AKnS-q4OIk&DD2TUo-cTcQ*ZhbM+B`5oqo z)e>EQ0z?hU!!=W+LgQCHv$toDHSyU`Mfi0VXP$* @dzpJ`MeM3Mu>=)N zJSGNs-~LpLj||#c3xR&xjDzj`vwA&fPeiWnV&A<_4$`bg!e(&?rg6o>rzkz`$YXsO zy86u`8*FeCwBCr%( {&G{}x!zi+8BJX*{-Zj6=`}%9u0e$&Z4vZ}3 zjbEm%91C!ksw-j}DFko%|7g%1PTPx#Rq6)*S0p&<32SpV3fkK*+)dibR%KiCQz>hm zy*KU=IjI=s0R7h(r6_$&2FcQRPJk6m;Rw&+2sP)1;jQ_1MX7vutP=p7b~-7ytY5{X zJ`K5Opd_c}TDu%u4$Lr(4z{5q$W>$#aHs>V$EW|;r;HMmV?IQX!P&2S=hi1zYN)cT z&;o?*(dwd&Z9` -~xa~TgjKN9lbHu|4N< cCzjbxj`44@urENi;HGxpTy7&quRAJ zwo5*{Jj4aT=Oi>_Lo2L241;eQeOasQaNliuNF5Mt72AC&Q>7b}3Knp%HkAgDKI=zq zc;CvHOM`M6ct~T8*7yGiu#~=iW^lu{{+ j(&VzfFKNN!l^~XJ`pd(4~U)p8E z%!+<&X1~`T-NKOfCz!t4ZwL6G&Fu7lXzypR|JDN(J7Oc`FkL^?CJ{rPJi+k~t{cX= z2)kInar-DAMLT`|7H;y~#zZRmc%SC&O4$oz?8_J1XpLUZnO4u?N`(zBSq>drj|Ecv zsfEl-zVkcfG(e5iiq`0D6=~O_aar7&^+)?(m47a}vhS}t+>#m0O|#KT?l)lao(Rjl zFO7ZgH2{->ZtB6yM@NIT&9otX_s5A;(2h}6T9@0oa`&OK!Yx;&L+aw)iEpAtWB~7q zDs>UTXZC##4QV^+|I4<0HQpc pWWLV5xRsGTMC%W}v0Ppd(=ZKxM5R zi!V2{H4KGqnq^vgqe+Y;I2C+SQ7=DFpXStVxi&`C7JTsTK>A)wYt)^c%;W%s_^SUp z?gP#!D--u57YUCK|I?B8MR(wByXyVs>%c!FGj(Q#l9^%B!i17CWx|7uim{{g+UX0o zVIK-4;G0NKqeGk3fna8orM3x+6Hf-+jJoNm7910GkHNLQ)!YNTZm%Pg3!ODINB7BX z0I|K|bF$(_H$GH7d6<$~*A`KtmZ(v@+dYIiohTts4wC0zF#>fem!r-6E+ zmRU&|l2vcDB1P! OydErZR{^w8upj+ zt_HC$h+Y{KoI7#->5;*^KaRQ~sQtqCew{93I=3Urv=(LZ53cEIra`af257_Nd!M1= zC&{@7K&FG?Vc292We92YQ{*t-Je^TH>zhP?uY$}K>bTOFwkPx{7BfD)D> e$B|1Zq#bNSbGUCili zx_}NLnh=3mCVh2%>){^iQ&>zznDftaaTmLY-bW4LXNbg!p;jXq_0?T^%>m;VEg0lu z-#LD!+DltmRa37d5`dCGLg*94N(f{=oS_t#xh^kyqw$osl#HCpfG<&ya6HmwBB4A^ zQ8-?+Jxm3ZZxK>vv-UqcY<=AI;OD}lnMggp`BLO z5He7jaPGuYZ}c|ilQ+R$nq)*6ZRcU!OUv^o< FhNk9QS?{Ad8~JLn*xI~55if}qvX}KlSIWbS*T7uzI$k>yKWkH-->8b!3DsS; zI|E7!nPtrhB)S{oJ$|#^S~qn?ZX@28ei=C;QUI@`I;RnIB|R?sYwZl}^9_Ad7CCvv zg&!d0Kks8<(=Brx0PM E=%)brQjdr^8h4~?X5#C-7dcPuwAPz8ji1-Kby zr#qMF??B*uDkbybZEsl{%(?Ezt#ivZW&U1%i(vq;Mg4zUqE!5dCPvF>yW_L)Q_|}Z zj=jFfhsBNkql05(I^thyQ$#S)7yki#lDYwSBYt|*H2(Od&Z22%@N}g2-Vv0=X_Ocz zoGb>aX(VT-N{{&I18TC&Hu4L>l?PMN$Apjn5%M;7`Q7lb67c$ZgO84NJRiK!|3374 z(Ynwl;B!g&Bek{jRfnB?X;5(nqG2e~JUP47xcnl(%y(&s>bFVw_Q1_QeMh&z zqtL_8{;aaAikH(gES4)lo?K*cy;j%*W-Xd$&~p?4H&%Nln0EBWwEp#KEhc-Zkpu?f z>lVdC4}u*kXnQ8Z7Id>D#f-rZtuA6RRTXcoxhJGF)T1_eZ~nf$n&WaVD33I#EkoT5 zcv={b4<>n`A`i%w>rw2#r6UZ~Z5`Hmg1YV{KbF-{_ARy2`_f(1NB{4pNDpUpMMY y{w|Cf_R895lF$~rj?O7hwDM5vl zY>Y>ShJ_vFKU&c~eE{DPYnA`B0of;;hHCgU`FwkQVN>JaYL(XZ*-v~HSA2#}wFOtW zNEDAuN@3X<=xO_D1k&%>DSI ZGkLa4u=6PHiI6ZsM}@wi787!z z`*C?>YCEk%rp42hEE+`OWJ9Lf>zd<^dinyxJ?(OSzJi>T`ZXX%v>RmWH{mcdgo%vZ zpl?E2a((ua?HDn#(ZOwsdF>>Fp@VFi)s&qBwg~fem4<-rB28P=@>16!jz4PBtUI%U zibF;H$Lwq~F)<5u82r0bm9hD{#gv8!f?_NuhoLDBooZYaL7X}e0q;o#Q!01sk}o)o z-YXg^8?hDt(OzxwDmr6&1lNEVr3;U2ZJ2LktuZv&AGGjx?6p#ZxzF@+N~9uB?G6Vz zbKJBWQ=MvPB9)#sdeK7N8MZse@1An{{0+&Jy|GO>>o^f}2^FGWYJyAok}*(60+|IS zZk{}NAL6RQ6KhrHr)s2sAl6;HWjGdY^T^Lb(*k3=udVi%%~SRdY<^ZOIf*I8P$oqf zeh+zvl9jE0{NHMxa9;DXOYyG5GPmh3@O8fn2VY-w!C(nzdbJht3bx%5{kN_bgT=hV zk-3pV@b!9NOv_OBtbj;MsifEDHa@CtC0B*z=w&q1o_5&o@USfSbK1A;`byUiajlfl zP@lHqx?0=Vy^?1_i?VlxtP;&{DJGsyy~IwLTf7`%)pWlkYqYyBTooQ1Fu8~vT_0wk zPU#0!$`l)U=$kGYI=ljoKY@oz3*}B`MgrGNnU`X=3!8#5IHMosh*fM;L6*n<$(vaV zU6p}sw?OyGM|a i3Bc9f4mi=RE3dp*{EKHWP5S18%PzwpcE9E$$HyhfJiDD!9 zxW8=Z2frq7&Vhbux;3!`Xjb@l3R@IlbsQGkFf60+HF5Y>xdH%lHp^ vU9(~2MbJ&O<|M47|gLZ zl{Mv$ejC#AVrM?&TO*fy-s$b#b?VgP9S ?KDSDlE_;EtE^D`V zJ4A3fK`c-x^8&ilgLeVYPhm^RMeEz;z@o|VDUTGOfbqm?Nt<~g%xVeJ&Yk$2Qz!h2 z_FEIKGKmRojo#7$L1l^K2D;W77&R4jknZxO+wXA87@}*VQ*x|so0^A%T4-hMEXQmt z(g1TG0~(ap_$d42Peqt2tmDN<)pPU??;9}pJDk~fJ_}<0Y(Km7%u#P}o6CK+78SEv zi|%XXQ}7xNwN!HYVAzEg4mQA&;m>A5N^*8;uS^zq&;Hw?Qs&{ {E3K i%S KHyEw~rCm2jNPh(e^?ODKs zq<{817mi8AxHaQI*ChU=Nxbyw+7u =wOaSC z*!KQ=$KieBlL3sjjE N^G8eO2 zS{{Q4XxyS*_~bcry(v0IgpYZ*!|TzDgZWiEQsnehXQreLN}5vxZu=~bE%nhq1KaQZ zoan0E?AotbqVOED%+yWtp8=Co(@D!8Lq15wny+2D3Qx#?D-@Y5JX-tUlHrtg+8$+n zVqIU(0#rP}J5s}6zA7sEi0{rhyMyHiDxGWx>ok(CFuRFed4|VG2`lCaTrcQd*5^#O z$sUmsC0Nunc036GulQf5YUy_v-6tvU_7dy8_&+suvaEqq#UBDjmeQuEhDcO}C2V0J z)e@_O*&v7{hd514-^>3>JygWjooxMDqzXZkS*sxw9#sBjP}lG3_EkNnFJV66&^$C_ zIj&9bn|N{0eS`~X;V&ET+kS1fhP^n^Ak_p=lPNVc0MWjdG0+R8Nn|z~Kog*qq;>*( z4_nrj{`PzbUawhC F6Be K|Y;JVb2+Qp~)13@temK~%X#G}}#-&K8Z<)OzRb9gC3cIf#y`cK} zt7!2XO3vq^gzDdpS2&v781$F0ULEWR*JSGba#gS^H}_3SvXRMmJ>i+H{=JR*tQ?l& zRE&K2YNAK7g^P6w68x~#SMs5+Zs)6`wkgeCUFxZ?B=lwD+}nW)P;TN#IRFKlM#1}r z-+vDCSlrdJ!^8tAd7@!EV?(xZ^T@5=-(VyjbZV-0I-M{pX=k9immO zqFJwZ&b#NzIoHyQd;Ethrb=sz{$F+r3p `L2S)-(Wqq@wKy`!t0cVPB_B_ZWY1j~5AFytvpdS00SzW7Dy$C#Ot+0R=Bxi@ zYgq~BjVMd2_D!1Z5tiAR#&$I>_XyW)F>dOD1lHskx-|LF^V##^g4)1gMbNd!sl)a_ z4bA~-u3|6Xj=aH#r+Pj2pXE?G;JWn(BWwF3%;X;Xq)#sCvlh8JT(jq7T)NRqgOS<6 zd(u(;YH<{|ZL(2(N2{9hr(08k7W{n7ku%e6-oaePu|y=cp~bddV@j{?rSfPh<>}e4 ziY9?BHO0Xv%ZrfBFh4|Q_|MX(ImL+V;`0Zja>|K&R5wF)C$ocAg9p10?YI1Bj#;e! z89&s%F!4y_t)J)(+fF|lZAq0S!)(4!Y{^O{2wjU(Ef;C-#mJ1Q<0uw_;*d{u+k{&r zj;QLtq6RqL&mNqjhpj?u_q4~UAU=1{S&gT-QQYbe@V4F4Ry#h_J>sviAhFu?uDf=( zKI%rTiUt3?hubE8&|GiRygk%UU&l^4<}UHR)D<2x{y^bvv?W&4ZjbgMHnuSNB1f7d zcQM<;B;B_3i(9!ZKG*v0vT@);M3!ftNcTsEmG_On_ty5u@SAk 3)%a`p8+rPY;c5=_HvOU5+^x`E@LsqF7tZ7>CM zTNfultDJogvA?Is4ft0}c5UP8Q;8N;>EFLsr1BzUM7~A9Yrjxro}7E}yKL(=rg3UN z0yRi>V|8fg0#~&fBrhvWgjxdh^_dKu4ia(fF;>{8bv;6eb}*|tx4ndduc_sIbc{E! z2WZ&-u(9P2eX3@?cCj(S|Do)~7{Sxc<`%jOu31I17ZfcFrA?M`FwBTlRQ86O<;}QO z(;T-CaEfR}S()V`E11-sL~(<+exEqg^tLzWTa?&CLtV}lPxe(y)%fZ8{Vw{b(dpV4 zD6QcLxFo78-|xo}MD$J9Tu7^?(55%*_N=l-hI196Zs<&9duk9!Y>1@!wF43icUbNJ zif%w>{Z> #wekRXYUl7_SXvJ^A8bl?!MTLzih5 ;dk(KZSkE z)Sk1GY;v<2_mr@~NI9nwZ&=7W JZi*mxY$xhfiPVZ&BsFbE<<-9C_=W+0XqQ z2{XIy`rC)!Yd}HSOn3~pG5{UvBDh7uv1A)hLiFZ%vzxYyv#&| m)>5oPpX z@W3&nPlO*#+SVXgzG1)mLTa6OHsFWX=3FUpDKx4&`l4OxrGejh@&iQeo-EkVM02>T zX^$e~!&fJdBdoG<%*^#CYkEK1!I!IS|FV$@kt|x`SKs}8jb_0|o~AtwdflO3s{5M9 z%lX71+_ssM^^ftB0IavJY0iIW#sPybqrxMFT&Q>ZO3a 7%z4c~^!uGQMP`b`~HqYrd%6OU>TUb}!yII5fv8jNoFZ}a>=!XQtkeUFpu z#2&*qJFT&CJqnb0l(#t4(%x0^+~onyMj19RaG>Q*tDCjhiThV0cvew8zt!R9&ehL1 z`q?tghc+wboH{!b7c4YpUo4QYS+h}u6gNJIXz{}++r$>rgoY8x+8m8imKFf8XZsE9 zQa6_RW`|dUDA{4u 5wI^R8yneYEwhmjs#syX9PI@xlr5mPP4YSrBo?RqGinWuP-SF)K9>l>mrcGdUm z?9MB*kt-cMu{F0#-GDbGgW?mngeL(KZz+vGn5bsU;;*yf^Bx9y+&_nR4AE{~Ch4AQ z#jeF32mw<(8db1ON+isD)y4?ND8NS<%G=qkEW)ypZ|zm0w*f03*OY|bSP4U>^mmC8 zh(pk->t)YJiJ^Y2^!m25mIwp&CZ+$@4Dv|9AHHX#LF^Ix {iBy9klYF*J1*ah72x&TE;&FDKQOy^-5;mZKcRn zpk%+LeR;fhgn9gCtvSS_RL^2+z)~oQgq7MN7AHM4I&Ch&kf NPW_W09a#eUm}n=c(u7s)i&S7f zJf>7>Yj(7mly{DzN-#7>>3x>fxOZ1LE{fmY$^LYpw19``?0fGsL0sNWEy^#ihTbuo zf1sw2T^h&}nH@wfIib=Mw)b<&!WA;rvELhx8`MMbLac1?k_nB!6&4+6p!h)-^94rM z?CVvJz^3?qq KeO*pRu(>0VEP^qW`zg@G%l=*zc_A}C*VEKS-DY5F z^e|(i;l}1-MyVlOLUF5H#uBxC5QROmHKlgU3bz?t waZf56s`m@Cd-#$G@}!HfBi3(_N|AAR&5m-=m0Yi0?5 z5VGo;HH{`A;f26+J$%h&HfYyeYQyp277L4?x0pJ6Qc|y7YB$-*x=rUTs~8ES+zfPu zl~5rP3-(%oQ;w3;Z#i|VI&OH}niKy+`Fv`)b UzXc*VX8ix151B zq3mkK(>#hI3`P-@`JIOLlv( -7UrRQDDz6KQEeBZ#t{DNT zNtHF}x#J`w7 JE zA(47;+Ud!O)7Q`gmuSsfy1q+fpzqRHf5nC4#~!z|AIVONbu;?f^)#}M>qS=|-b*Lr z6EWT(H=anfsT1u!rgwJx^$z_T-nu6v+eKx=_Vn^#ZPvJdCfnvhqQ a9e~LbDSM-kf +YB#T zMVS>^7_x$r0anT9LSqL=Q$NM~nyMa*6n|)eG5`%W9Op%bZwt5hX4Y?G3d&Y~cYfC; zzCGZ{HvI4ivhxh$XVfOS9AR)*==H;YuULk~8%^|2fqTl1pf;1neM_rGAAYn=O^nz^ z>=@R`m}TURQijXFhd7!3mbqw~ebm+c{7}9ImI65niu@KVsjjzowIKO0Y&6hKMQ<|5 zfk0%8;_}i9V@l)v35|1y? @-{Q;E#bo)@TQR3xQSyltq5TsIn>ngZm1`G4Y-RD)uV zc(#*vRF VzaiFoqo=D&AhxStTTY(&i3ZAd^vM%kNanH752%``QmAv3U~Z}! z@uXS7y~AV;-$L*BGH(~r{>RXH1|;>iVcg2Hsjr%QWv+6jxflP+ZE87lAeE^px%WU? z=GN5IoKz0n mX9T&Vo#nS09|x-m%j!CZPn8~QYHH5Z*CGjT=e z_%}<4nBdbr1X6_V`Mb>2IR$zMzABkJir2A_*kgY4-1qDEOA?>gg2RptHOPl+rIm{8 z8HKJR9zobPIs}sKn<1W-8v%WB816wKYsg*DKQ-&C5%Zl7AP%$a?CT;-4) |Gl5oK@qIh8Qmm7IwHnMr9MS-0Rw~)_z5! z#yj 77K`{tqh4)ht>k%gi-#eomY<_G959@B0VzjuZ8_YB9(I>{3jC*l)=GyC?RF6Z za7pAuLod4h2_z+J!f?RG{( p&ZT~( zMsx-96bO$4$a$s> O#7Z?6KZe&pjgmKVf}vUKT|hYJ<)Z=x zlk3|b(u0-1qb1BbjTW*bU{c K^>9E voJMuyO1jW115U2`p0Ongva& 5l?QsS;>0-KGEXr{l_1l|JU(*rVF=`CzEskQKF}g_ZAxN*|K3imqjY+ zU2T1w0duZMOCprxX1>xXPzWt073)5$y5NK6^Zq(udo(&!-Wgyb`cc`hJh6`ZDW~_9 zJbw*lI%`O5w8cA{zN+^2EuU5^2L?F%Alpk#x^>&LvMLCOVc7Bq5IKd()7}xGLE)l5 zoqnZ;9M_t4nr{U)ytpAfwE5PuQ2xdKpVtpAhnZcp{whgwE1KJ(tQ^?VSrdD_m6F@I zGFlPNh}6TZt=`g^q7S39G5IQ$n@1lEjJ?|l(h|u9n9G+E9%B_$x>tjBD*vaDTQdij z=^ON|Nu157%sG~_IwkCy?Qd@TS3z2HZPD%5RB6qKT9FH6IY)zi%c1#!?@m=^*%qls zufg1h<<)!q9sVVgyeFSW`0ecE5Qvq>-qS7E7L3(lC6Y6=M{N%D4bm4?NWIb(lIEnc z(PXq$XrXJIX=rch7%C>m^wBG2!1uCjVk6-P>n2wn(%vflRGQebPQ#* 3C|dpQGxw(^nA_eq)}H+RKAar z@rA Lyq4sc^CKhU{af^R_bQ$=Gb4YaPN)b+<4g?ST&t zGKl?blIgUJ%B=Jq7`KH9XJLCS#&BeKfQ+~lX*h~LHGG1MOUTaWl?MN;bako8w%0B@ z%XO^rYA@we{NZ;h@)j`Lr!}LibN()N%}d<3%0Q>v+JQM3r})nsl4*ns3w)3BvZlNm zd#ulOr8X>zYbPGAp{^5c{lVCwX^3f5^r*k@a=6DbKrn3+u@7Q!9Mk)g`g%sQ*3J6t zXE1SGS+5f9JX|QB@{!a=6hB&H!dr3DtUkA)HpDczxxF~xly}H->Ncne@(tD^(huJ@ zT_U2mX>QbPU(BncRBESVO#^uT%iErftsByJ)2;@;`Jm3Xd;;)~zL_BQ2k&cN3FbHX z)7s@CS~|}e a8i6dvt*tN&2fz^y!5ikL-nb~N)@D>!q>x$r`O%Kylh1pv zdv{9Z^3I0x>5}PUX+R`lLE08-KdAi4z8{1iU~a_9Czht2me$mN{rbDcw{A@Li>Js0 z1Xwj-g^sqOK?~J5I(%VBe(6Cg_CAr9N%WOGP*t3n)=E8G!>ZI4ZEv>L)8HsEDF74} z`LpNqKfOOrg94=-lJilKw|gJmTmGLvs7mk45|(`YF%%o8skHNBuIs!vkKD&L|NofT zI=Q;zf=!pPhhN@X=QgA`lCW0EBQMU9|E8I`OMTbi`>~OjVooRi=|d=IP@JRU|1sep z_dR k}H0|{pv28=DoKD+O110IP7FAriFY+(>%lYGL7D6 zkh3_#-W3KjKRtn;R2(BN#ng{staozTa8;*)#F|5Cf2bqMIz@P*L(<^bKSVHqn3ov5 zhJ<)$95von&ZwV)SnSkE#}fxP;OV-~RLU;06LGy&;du~DLm>#xL}U*obx_VKN92P3 z_cD{Bc2nKIa?q!==O2@66UGTv_TF>8Uh&ng_J0f0PWqj^Gg4w@wt1e5i|J`mqXleS zyv6;R;RiOGGgjdho-l<=YnHzbXzk`E*J~bq{ZKk>b_>`2$SS?nZTt7NjDj5HD6yz9 z!sSCa-fF?OWe*oy^<}bEEzEz89oy2DlM6@nzeKrAwYWMT=X9bzaAHC$nSAosUt`Q8=~~B>#Rnst;*3 z8()u5@^`4XRXn}6VEDsK%#NydY9A`oshP2rKu<3XMVg*Ia&M|_P9t_sS1KBNN?Ffx zathp6x6v|qQf(pZYN?(m>n@T!x8GiN& I}y|pvSj;$dCqW z9{$;D%w(<4F?EioYrKSDT$Um4AZ&75 ^-(>SR zP4xvU@Jwk@LSs%DODgUoN8qLEX~gY!9VWS0nU(ewA4vVwzF`mK1CK33vi) r4PTso*#a^^7K;i4BjQ-qOTFl)UTTHd^O>~6?a$n3W|1{g_LTi?V4qh z>Jn_H#dMf7*OS$e!mbdbKvGcfe(>Kky=W$FF7Rkq+Nh>ab@h_`oE>YCveD8r8C4mi z(BNZZyxqX$bP3XZtZDFlWU{n_iUbU%1=%^?iNZu)r)CIEbSI&^`Y09>LxmxCw5+>J z2c*tqD4j{3(d%3}Z=dY{v)ziFuNN`vNogRc0rIPv)2)IchqvuH(6+;rEPY^_P(ah! z^R)Q-%|iRO_)ZGT$E|afA!7YX!gmIW>I<0_rwSI^!z+>eac2IQ2sJMo3@!LHl@jVU zZLU_=fR&S*T$^ODHzqGv9sqFZ9SgzNNfqje_vgGfSkGlU0C^2Ri=MuC%Ti_V&DZ#l zrUDB;j!bb@@{7ii%YHJ(fx<{z;#56SbkDF09K3mJvez`bvWovP*Tm|#KHHvA$*Y$R z#Fs9Df1Ll`xQ01n5L$lpK5T~HA8P8n5d?0AxcnTvtNFx%Gs7WXE#U}=6IAIBtm2`r z!}-)i>XAw9vXS w2r4gUjAgYb687kK5Z#*(`>b|5tvpp z3v2f%YG|82zzm$GGcFbGAs+7b#?^cASY^xcZ|+<;a2I9&>LLoM>+?M)rn*(lx_S>V zB59;)y+5uhCPhv650Q2N-^5LS{(`m2R|tB`H4u;y(}|dI2ZS7<3XgV&Qv8ZT8?GN5 z_HgtDz)y2C_j`yM!4;}&vQPM~T%&e|l$C6#i ;$(vUU(MsUqQ(3XJDz?3T0s*(Etx{lYtz|JE z *;OArvP2&U)#NTrFmUdoFN6(76zF@v!yLMwoJUQTp# zB87=FY2bfdm(FWFwX4W{2CH_-viu}MstMHtIO#IyJX?(89N@q8DpZ4R^sIKvRwi5e z(NA1nxz^MzU=9&fF{ gb&klM3oFvj%XHs_xBX#) zo !7ik&%1ez5`dG)m)8O&hHhioqzS}(Su>PxMC6YVM zAwbU3LwDnDe&V^1SE|uL1@c-;Vu(*qmkKlvN#H{X5cCCV(1BG`4j|BxsO%L(YT0iG zX%1YW_YvqB
rmN=TW$VjKeI z2@d=G86!T5HC#cbc#cI1sr=!1SowXgL!gP6mpUer0fW>g88WwRNXfrI6_XwD-{z)y zhl(`h2CAE(u(7RIo|-Cc(Vu`=qe@Ykk6#3%=Y6$KZO7*;$@qR8G9%fjMP=>lE-Lv? zbyX;*=sCeeR&)O_otC2=SVeNnTgvmDBM4~2;U802&AhYZEALw@Yy}p(1^0R%=K1PC zdwY}%-3tL7*-ejtgMLGIsS&TB6G86SQCPdHm{jJ{4EYG~P9)=;O~`$bx(x8XMK` zxoe^EDIh)rr8;)y9_easi&MmQwOvyDs5rbz=xH+ U% zyx^A_EqIW69D%#$NGgZyb`tc$0?brbS2PR0oZ#fXt^oR%4w*DCmW$zj65`4ER q(qiS%Gwt040=al2|Vg=JwIc zg9BiD9gS0C8Jt&FwF_R)r{*x+dt61DDhe&l)uPb=MKcPNspM8wSIOCk7VF8AKyw)^ zWP=DVr$t0?qgC@4nw~kf-G{ReZOTj8&7SR6{-0yfD}&4QOtaU*E*uzM)UdC7wQ!r! z6g?@6@`A8Ncf$Q|QreCXfp?Dc@X{S>f3S536}cFiYvFZ&Q~;);jPGwrh`X%x^Ko#j zA&XMcf4_=SX6tT|oQwSK=01uzobp+T2swV`BCGAui3A4$;m=+ak^eD9`G;fXP5WE! zG~5mSW@uFW#1P?8RH8~RwxXl}4mXvx>Cx<(?(wHHZ#iny&0aNA-Z9XpC$tjiEkLUQ z%;-k3{p4|K&n*Gtu~!c2%Z-V@&pCeSS-Ku_!Le*bro%%F9ql6a%_wf19b#n@Aaj&d zc~sl7-E?pn(mINt4L|V0?bMJF9X`BfFKu^L?KyTfB8xPB?u5{%kq^5C&lobF*bTds zZH_u(LI`$5B-x9tx=#k55!{fk@RAaYgAdo73hah-i@X|>b s-qG5QsC0R$; zM*M(^dt-HNIAjW6jbSwGyAz)J+0`o`X%`qI3oVgAs#Z71rG|%f-k`?RcdO4}(&*Do zmqPBRc7HQ?Rib6eN*#{2#|(fr9o1#MhHK%fR(ce )F7JHC|ny6d%)Qq-F0SN^+YYJ0}|j^8kM+nYV< z!63;+r^t#9D@!}e%$(pDFWX#^WQM>VptX$l5pS(Y));+I8xisPp?~SK=x4(Z-F2E- z(MMkQe$MTbpHdv~!z&c$wY5OvP~!4r^>!HPm_TmAD|BxgY(By`^ZnVm!3?~H@>p4U zeMGv>3|Tx6-!tyXyHSw2ibhQiP1=s0gw(M2m{;G78rAgIwV|&_K qUNy4 zS?oIUisYB72szzBGS(~v6L6A2k86E!dXJcyqhFFcPls6j8I?@)vOm|0bdr5~UD$PK zw(*CXwin;p&34ZUG@nVXU2|;`x;>d_K_o%GJ? C8Xsezi)n_8yGA+nBJH>A8H?j2JpNq0@YKvTs8u{(O zfX(GZX8oF0FO_#TsK>g~pD=>kWg>6x8E%E0-s>;yTvK~b?#Hz4?i8u1w2?n$$=mY$ z`00da*>^n`9Vk}H)vG?lRcL9dH|AARwX |{tNTm`vmRzy_CJ`>FeXA9a`XVL=<)xR1$78F7wPigm$`)GbLcm zv)03 g2NTh0GuNUZ;MuT4zX zQ%~cH7J~xS_l~f%_Uh@#k>eDR=U+ekQv75EY5%zhgmzYk%0BcNIi%6qRuk+}UX9&4 zbCh-E-QR{8R@(WQ2$vj2V)sz8uv5Nsj$_1c_;%ay@@8%Gemf$COm}jRsTZKzJ#KhA z&EqH01y?`+{S5C`)H_}=R9o=Ml$(r@ZQ}ZUZ|NcdPq~c&gat5W`L!DG*lbpgpU{t@ zaZ*~2BB{Z$k!*$ikri!ni$8ze>+L6?9#C 2+=71Nh{7#97({UE8WaBLVPV_KoqYlwm9wNcFQGz{a(3~-$_|T^IFD303hA`ini#OUIva> ZoqxaY-8C zh1D(>7*E>)Ms|}zFfBXhhgFi;>V$n$lF*APh6Eg&yRS$y8Wd>!-8(QF{*S39B>)e6 zHEKB9fetG2Q*j$PAjN%tZtHuG?}op+`21 x{K&;7N${qUu+jSa~Ak$4O53SjsPqOyGVvl}vg^^HCh#xm9r z&JZHvJGb}gH}#H=8Hw{Gg#6ZDUI_yw)^onTI#g}DuUr}u27)6ta+a18&X!J9;Fmj9 z&0Z8y(6iH(%61XA_S^c^-mXFl!Ii}@=a?j#*)ACqN7I0nfIGOxIqvyC4Cv+RuD-0~ zws;A^HKo-8kJD_loGSL5rh3j6sL6LdllG6=lxsAfnM7VvopBOBoIH^U@?1k^x=5Mw zn4`~2Tb7d4i+@WlFGT?1(E4rou_jtd)EuZT |IlZzJN!~!G<9dzhWV*Os<7c8WDUXY#@@N-4a>Tx;9|&We% Pc|k9`+$LjLvosSK*_AZ zWQm-C!QQo`A9@d%)r!4uT(({1v!d{r9=YqKsXb1%AB=+ACOj#RvqFGckP^kkD$ORR zQNo6{7h2K?`BhuTm;eGqPS+L0Pfeb)q!2uVK1}}fV9xTZ|8C*m$G!K>nkkh-?>X~Y zVEl_^!SMx;^3R_T(jgA7CX-%`F;btjLga26qpzn=9zhaY+rbw7@I+mScU?)U7?pv6 zKLn?Hf*!Xx^}X@WFiB^09g8-as)a&7=)BIjiFN2JwM2eMXbsEL>LD5(%Y=!XPwFzS zELjSZsh{yaq@dgo8|8e39zYxuXMG%pjct7#Z9XPaq&3Gq{$XPIga7%z`;Y@o2z1K+ z#`4X7*+0Pp+)z!1T35lw8d56MZy}|E^N*{bT6l|mGI|GC(w$&_$BKN#(Y~PXV>VCz z<1p(>)jH=V$s?`C6x_&=y?j6{HQ6!04F!Ax`^Qfno=x)`H8~-JdB_JKyQnK*fqG2x z?2B0GGK2FY-`~5bu*K%y@PD$rT)HFE-QC!kaqp*HOJtRn1AcmPWF1z09?hc=VSsMO zS)c|^I04>@W9-2nz+qOnKB6T8zcPIwYiV|LCE|5WoX|~(;&M}le*IadzUY-qCs~bZ zPxUa3fKoNglusd;#|N~p=@%9sm zSr z E6DJzbKOP^oUThX8MUa7}tf7-N4)cKa+Z#SjusNxgXMz9%!u~xF`o1=}@t~Yr! z5lhM+;VBmFh-|uY)Bt4H6#fBmj>ZC&22yt?R9adTuTxm#l=|g+UM>kgS9A}y>zDNB z5#;9j?X2SYbI+ U=0Af8?bm z(+mZYdesC5Z%21(G=EfQ>7U#@i %oXKR2;QmfzC77@9flkz=f4 z&s?IDs9m~XlffQ TdOS$cHWSxr|l4__pSgnR5v#E%LP+ z?p`@WDk(1eebkpPn+8h$%b&tVv(zT`;yRF^gdn%-%0m#_p%0VioY=VAm2*YT5w24f z()MqL3|XXDkdGmwysTUmIX3T!R#g^r=40=djtb@LrLcFw@N>tb=+GjPx_qX;X ByX0&GN%q K+eJkOqT~3SSP_cM$!xwB8X_5?p$)mY+ft|;|B1Vvk0wt-jy+bIIyU^bu&Ji( zc`GSp^Y2J_ VTZxULStC7<9ICK&xR g19g{9QB!s%6uY%Tka~NHM>rt>E1#mOi+}=kk7SCeBksg! zH{|I3?oPtq^UfvQTUoJ~EzMb6qV}yL)QS;D@CPW=c%jiv{^xDx^!Je27awLW4Z=Tb zFf?sK3mR1I{xQ9*&@jfxY~0URu3l-+oV37wrNh$xtSuy7wr&1KAf zHMp&Tf~p={dmP5VxaM-Ee^K*PpUKLF*Dr4o>Wra2(HNu>!*vXm-&dftr+3o*w$rOL zHkw>lnm?o5qfvD0*@KUB524M5kJPdvS!J&3n% vlo*3eAo6Ln7Hk*L?zwQ!wOr)#%P-oh=@5^}6GUdf(OXxgdp>Drm@e4m z3Pq+0_+PA!G{djKpQ{p&!tz@P%Wc G|AMbUC+W4_r`mW w^a*<*QVd?{sXBb+ufu;t4-RofbQjez;=xT}*Jl5399>*KEqOUVeG{NL zIH(tBer~O~SXz17xH`%%C@Q76>SR5V1d7$Zhw?aq$C6bqg#eGCt*n0SmtK8Agj+3! zAQ*2e6T!RVHF={r!}KHbn>bSEXl`vxK`NHgBKE7x4#_1YSzR?%yn9TrT7?Kj`t6dD zaRoD;IW}!cZGTgrwKoAJ#8uW|p{nl}G`Q|b+)J0H&L~}!!WF+kJ(drojI^L}t&u62 zPs*RfAH<^!QY3PZ&@RTN*^Z`|;3|wMscc>NfAsHB!t36m;}QYlM|Q!L%BKkFC)@Ju z7<6Oue^1`MPanJ{AS3v;)y7mI$F>d^ 6y zT^^v3W)vk9YD;{WJlg-r_;Bk+Q_@2VrJltj4e`ud?*+u4JzI`^F?e%++abuH|+QU)JQyk{kcBIbxE@$NAM(?(iWg9Q4 zx~ijP7GNY Ai@1TsWUz^qnx5 z`0{$2Cr!`@WCS5(oepB{GG%++Ke6|@+-6 w`mr2l!(#~YwNrw zoB9bAm=pgL7&78reIlI1lj(AMf8h=}2j m41(+2i- zg6|scHeNl;#ycOZLXSE0T{sD?#ERtG#hbV8HHG^pdIR;$rBL9N;)Ql2^x$4@1RNi9 zKkU{H^i2(+cWVb2lhb>;TW(7XqV@@`DQ^Nv7d%cbYj$7v=-=^5X#D;>B3VGEtuF5} zqq5UA)bpCUqh7 )g9-Ph5r=DDEPuZ-Pu8XKZH3!e;qF^RGh`JtD})HQgQc2&IR9fp z@{%T7XKV_Q5h%KhEz3aoGC}(7e=uz1Kc)}{;Fac`z0nhf%I?-`s*blb3p?!vtLz}F z`*&)!M@JX$RTw4wnkL*{dhLH9;*_<`4{Wd81oh6qLr%=++=2qJxpZ&CMXlF211&zi zHoR}{ci?+B=QM=XZLN*q7#>7ZalhU!8M(CRaVg{TFIJ_?+tbKI%3AW7VI t^nV?WoEWQ1Og|hRhv!|U*`^t9lvEt(y!$X- z 36JD94*pnBhZrPS{7Ip*w8naEU1^)E9Ie30vtlX)mzp zHSXE^mJG~PzZnKomTyBE4MCT6pseRUT=oAff4*lw!Dn^I$pG>!S*_>#?oL 0);RIc21%{OGu$94j^f(8|Hx%By- z%8jfYPkkAQdV0nv5Fdm_4lruxXAChvWyL&t@+?ivf!NH!>VEGW8IiuV?cCj71{ZQ$ zV$ZZQ^MTvDMX;L!|AvI(QD91!XOPSrfkcC!1gpkzFQ!MT;-0N`8%{d*ZrKvIhlYG@ zgsb-{H9=Y6U?lxzq-4a0llEtp{TXT^GSkuWnIwSv9XMXIsE7L0bcPPf{*RDd6vp(i z`)XXC%$fb(RzX&T^XY1+n#%UVizdrjPsXD0l=IPPiqfYU 0%U}Dds|IqXPxW=%A(LzCxGmCR%kAn)vayZ4>TL1KM9~j{IPV?b2Wo-fg<^%- zi$WEvHI1$&2P4pxSvn5ZegrGAmyi&!-=<81a6>1E?**z )v0ZG$k*K{8X#(TOEDLVclV#k(4^D7`mBQb$SR7*J<9P53AYu 4 zAgq47o^pDE5OrkJ)|-(Z4c?!U!ojdrDFYB*cn65=sAEj3C-LJw9}OiaTY9D${oq@^ z&Fr@1=cDOzAUecy?_Day)l|g1$THqo-yRtOSz{PxF^XZHE2Zl8`M r$5v@snie*AFCRMGj`(vo=6{QjT9o0Xdm7?1il2%yDw|t^V48AlB@88+ z=q{p%jmZ;q?b)tGcN;1}v~^4&(ooyOrPRTGR)6Jl;PEyWSi)we@wD+2tKubSz1|Hr zHFdy|+GiC4VQ%&d`j>+;wN$(BEx4FR9xiC>xDTtVSj;3gA+TQI-iNwqdM5liXlm() z$c43CGgPO-RWq*D1a5?1ML+U^ZkgP;Qcc=3n6j6WlTKHYoh^(1%{6hW?!~W~X7xn~ zC?OO}BpvS7$ujR(>Xofz6qR;QLHXfs*F1=pK$GN<6ywbOM^~hylp63~L)zSxn|t@G zbDy{UXK(T`%stV&A$aKW{JtVY?&|aC(BCqpZPqpvvsdVYJJw4!&S=lNY6kPdAor<8 zpi{+x;g^>U8_a1%qFxK?IqEoiTaVehKO$LDsfb~aXN`*V!U8uwdhwH^*C6^u4gqUb z-s)nK_>Isa9h~0$*a1p x5_x>0eZfTR$!9T@#Dn4M )eJ^)M1HK??}#=z;>@F zq$E{IYB-v;k#`9t=z==t)wYp>R!D840Us$jtiqpDu^;K|3%O3|``zOVJ__+4(`FIS zKAXfGjI~G;m98Z=4f$VyCuj!%A1t-`Fdy5d>?oI3MK#bPTZmtm9f-hD>c)BLyFGX5 zI-sHOXI1HpDtPbLH@k%HMJp>IyVa+FOHla9DP2cquy^WZOH>*Ten8$4QJ}unKOf7- zA|AmJ9wj`nPyNtFx1pt2w&DrzHuHX=i6C`wYa*e^9P z4ffmlFDU<+L*z6xijmo# cmW6bcA8qz3M zxH!zQ8oM09A__n7>Dw8K3fRC2!Po%u-w{`6F>6) RhQXXVYo_|R9|86t|3cg z8j?H(levHhh||-dnbz{7_;%c;|9G22YCQak=}x*cm^Nf(? $#(pkoldc2|b>MX`LV%edU#|mrMJHESu^4V_KVa zr=j$tNd4uY3 YrH zjORb_RaG2|Hc`qzG?ie7 Hj`tFm(>s1F3FEDb%NufLs~8b^2PKs7KrHP{vrwPm!g19~dQeA` z)>+ZHSo~9XcC)OaEK*2mZ8HA%?ORnM5+@W-AWKm`(fZ~n1IoBUOF?4YA=hIS_~c*2 z4oJjL6FAOiPe#09Pb>qx+^oM^eLbfW4xl=p!oJLsyc_U~2kS5ci`d7dSvj`HhW!jd z2C!7zgzR${h+vs8KZgwt@f6XS%u#XZideL}Y^C{3wE!jW++@3^@~mbuDFog*f$)jV zt>BjlE|j306yvLgdo89t-S$9n-mUiEK0l9;GjJ(=KeH#xJqq?H_GWI(5s0f!JBoOj zcgFAf$Lqi~`5pdMEvgzjm^4g}E&P=?w==8dUrlN{o+yiS7!S;MhOkmoUldH5{whhH z?|J^jOD=n`&cK5G*v;;xi%)8HddRH9;er74dRjv}3{)|DvKbb5pin*@iEra3>W7p+ zcE^N591!*sffZGpU03|P#J_ncSG1($_9u9-bGz*KO9}jm>4|!b5ohC(_Q?nfBT}Fg z1T@|6yi9k%%PQ>M&F1n5xM?})nJx=8(e&9ewMDOBb6zq}v<0KOcB(rqW#qgnka6Wk znz43^t8L0NLO%ZOy9sk-gKf@;y!(FbdIko*3>!a?itE&Ww&u}Yo>Y8fqvc3=Z#8M^ z+*TC;G%prtplj$VDdR@XvY&rdO1>y8VH}&}?Td2GaLg YH813;eGeE_vrVWAnmX-9x-=5SwkfJ8P)-y^HIkHZ@${pB(%=+3Y1V zW}a`mSLcL_{n6%Err$L#nEUPI_@h{qLp)+RB&l U2q9Ic48 zDkH<7G7&1F75&b&6x%F NU!oZZ=x zC#Ld{hO-|nu!3(OC81WGfAdHQzM+v|u3MI<=&JZO6YoP$+s7XJ*6)I`Q<3-${8D4D z+6Sxj=cQ6ro *wKx z_QE`yCYjv%5| QMnCg?6^Re);TBk-YA63*-VGQ|$dU5to*0YNk^Rnm9=v zl;7G1{cpCbLX1!J;+1Dbu*M(S