Initial YakPanel commit

This commit is contained in:
Niranjan
2026-04-07 02:04:22 +05:30
commit 2826d3e7f3
5359 changed files with 1390724 additions and 0 deletions

View File

@@ -0,0 +1,49 @@
# coding: utf-8
import os
import sys
sys.path.insert(0, os.path.abspath("/www/server/panel"))
if "/www/server/panel/class" not in sys.path:
sys.path.insert(0, "/www/server/panel/class")
if "/www/server/panel/class_v2" not in sys.path:
sys.path.insert(0, "/www/server/panel/class_v2")
from .config import (
SPECIAL_PROJECT_TYPE
)
from .model import (
generate_log,
get_site_name,
apply_cert,
DnsDomainProvider,
DnsDomainSSL,
DnsDomainTask,
DnsDomainRecord,
)
from .service import (
sync_user_for,
SiteHelper,
CertHandler,
DomainValid,
)
__all__ = [
# config
"SPECIAL_PROJECT_TYPE",
# model.py
"generate_log",
"get_site_name",
"apply_cert",
"DnsDomainProvider",
"DnsDomainSSL",
"DnsDomainTask",
"DnsDomainRecord",
# service.py
"sync_user_for",
"SiteHelper",
"CertHandler",
"DomainValid",
]

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,664 @@
# coding: utf-8
# ------------------------------
# business ssl
# ------------------------------
import json
import os
import re
import threading
import time
import public
from YakPanel import app
from acme_v2 import acme_v2
from public.validate import Param
from ssl_domainModelV2.api import DomainObject
from ssl_domainModelV2.model import DnsDomainProvider, DnsDomainSSL, DnsDomainRecord
from ssl_domainModelV2.service import CertHandler, SyncService
from panelDnsapi import extract_zone
# noinspection PyUnusedLocal
class BusinessSSL(object):
__BINDURL = f"{public.OfficialApiBase()}/api/user" # 获取token 获取官网token
__APIURL = f"{public.OfficialApiBase()}/api"
__CODEURL = f"{public.OfficialApiBase()}/Auth/GetBindCode" # 获取绑定验证码
__UPATH = "data/userInfo.json"
__PUBKEY = "data/public.key"
__userInfo = {}
__PDATA = None
_check_url = None
def __init__(self):
pdata = {
"access_key": "test",
"secret_key": "123456",
}
data = {
"access_key": "test",
"secret_key": "123456",
} # 存放调用接口的参数
if os.path.exists(self.__UPATH):
my_tmp = public.readFile(self.__UPATH)
if my_tmp:
try:
self.__userInfo = json.loads(my_tmp)
except:
pass
try:
if self.__userInfo:
pdata["access_key"] = self.__userInfo["access_key"]
data["secret_key"] = self.__userInfo["secret_key"]
except:
pass
pdata["data"] = data
self.__PDATA = pdata
# 校验域名是否有适配的dns
def check_domain_suitable(self, get):
"""
校验域名是否符合
"""
if not hasattr(get, "domains"):
return public.fail_v2("Domain name cannot be empty")
domains = str(get.domains).strip()
if not domains:
return public.fail_v2("Domain name cannot be empty")
domains = domains.split(",")
if len(domains) == 0:
return public.fail_v2("Domain name cannot be empty")
auto = []
for d in domains:
if not d:
continue
root, _, _ = extract_zone(d)
obj = DnsDomainProvider.objects.filter(
domains__contains=root, status=1
).fields("id", "name", "alias").first()
if obj:
auto.append({"domain": d, **obj.as_dict()})
res = {"auto": auto}
return public.success_v2(res)
# 发送请求
def request(self, dname):
try:
temp = json.dumps(self.__PDATA.get("data"))
except:
temp = self.__PDATA.get("data")
self.__PDATA["data"] = temp
if not self.__userInfo.get("token"):
raise public.HintException("Please Login First")
url_headers = {
"authorization": "bt {}".format(self.__userInfo["token"])
}
try:
response_data = public.httpPost(self.__APIURL + "/" + dname, data=self.__PDATA, headers=url_headers)
except Exception as ex:
raise public.error_conn_cloud(str(ex))
try:
return json.loads(response_data)
except:
return public.return_msg_gettext(
False, "Failed to connect to the official website, please try again later!"
)
# 获取证书管理员信息
def get_cert_admin(self, get):
result = self.request("cert/user/administrator")
return public.success_v2(result.get("res"))
# 获取产品列表
def get_product_list(self, get):
result = self.request("cert/product/list")
return public.success_v2(result.get("res"))
# 获取商业证书
def get_order_find(self, get):
self.__PDATA["uc_id"] = get.uc_id
result = self.request('cert/user/info')
return public.success_v2(result.get("res"))
# 生成商业证书支付订单
def apply_cert_order_pay(self, args):
pdata = json.loads(args.pdata)
self.__PDATA["data"] = pdata
result = self.request("cert/order/create")
return public.success_v2(result.get("res"))
# 单独购买人工安装服务
def apply_cert_install_pay(self, args):
"""
@name 单独购买人工安装服务
@param args<dict_obj>{
'uc_id'<int> 订单ID
}
"""
self.__PDATA['uc_id'] = args.uc_id
result = self.request('cert/order/deployment_assistance')
return result
# 商业证书订单列表
def get_order_list(self, get=None):
result = self.request("cert/user/list")
if result.get("success") is False:
return public.fail_v2(public.lang("Failed to get order list, please try again later!"))
return public.success_v2(result.get("res"))
# 获取网站运行目录
def _get_site_run_path(self, pid):
"""
@name 获取网站运行目录
@author hwliang<2020-08-05>
@param pid(int) 网站标识
@return string
"""
siteInfo = public.M('sites').where('id=?', (pid,)).find()
siteName = siteInfo['name']
sitePath = siteInfo['path']
webserver_type = public.get_webserver()
setupPath = '/www/server'
path = None
if webserver_type == 'nginx':
filename = setupPath + '/panel/vhost/nginx/' + siteName + '.conf'
if os.path.exists(filename):
conf = public.readFile(filename)
rep = r'\s*root\s+(.+);'
tmp1 = re.search(rep, conf)
if tmp1: path = tmp1.groups()[0]
elif webserver_type == 'apache':
filename = setupPath + '/panel/vhost/apache/' + siteName + '.conf'
if os.path.exists(filename):
conf = public.readFile(filename)
rep = r'\s*DocumentRoot\s*"(.+)"\s*\n'
tmp1 = re.search(rep, conf)
if tmp1: path = tmp1.groups()[0]
else:
filename = setupPath + '/panel/vhost/openlitespeed/' + siteName + '.conf'
if os.path.exists(filename):
conf = public.readFile(filename)
rep = r"vhRoot\s*(.*)"
path = re.search(rep, conf)
if not path:
path = None
else:
path = path.groups()[0]
if not path:
path = sitePath
return path
# 获取指定域名的PATH
def _get_domain_run_path(self, domain):
pid = public.M('domain').where('name=?', (domain,)).getField('pid')
if not pid: return False
return self._get_site_run_path(pid)
def check_ssl_caa(self, domains, clist: list = None):
"""
@name 检查CAA记录是否正确
@param domains 域名列表
@param clist 正确的记录值关键词
@return bool
"""
if clist is None:
clist = ["sectigo.com", "digicert.com", "comodoca.com"]
try:
data = {}
for domain in domains:
root, zone = public.get_root_domain(domain)
for d in [
domain, root, f"_acme-challenge.{root}", f"_acme-challenge.{domain}"
]:
ret = public.query_dns(d, "CAA")
if not ret:
continue
slist = []
for val in ret:
if val['value'] in clist:
return False
slist.append(val)
if len(slist) > 0:
data[d] = slist
if data:
return {
"status": False,
"msg": "error: There is a CAA record in the DNS resolution "
"of the domain name. Please delete it and apply again ",
"data": json.dumps(data),
"caa_list": data,
}
except:
pass
return False
# 完善资料CA, 提交资料 (前提支付接口完成)
def apply_order_ca(self, args):
"""
auto = [
{
"domain": "testwpsite.yakpanel.org",
"id": 13,
"name": "CloudFlareDns",
"alias": "a"
},
{
"domain": "testphp22.yakpanel.org",
"id": 14,
"name": "CloudFlareDns",
"alias": "b"
}
]
"""
pdata = json.loads(args.pdata)
result = self.check_ssl_caa(pdata['domains'])
if result:
return public.fail_v2(result)
auto: list = pdata.pop("auto")
uc_id = pdata.pop("uc_id")
self.__PDATA["data"] = pdata
result = self.request("cert/user/update_profile") # submit
if result.get("success") is False:
return public.fail_v2(result.get("res", "Failed to submit data, please try again later!"))
if not auto or not uc_id:
return public.success_v2(result.get("res"))
task = threading.Thread(target=self._auto_dns, args=(auto, uc_id))
task.start()
return public.success_v2(result.get("res"))
# 修改验证方式
def again_verify(self, args):
try:
args.validate([
Param("uc_id").String().Require(),
Param("dcv_method").String().Require(),
], [
public.validate.trim_filter(),
])
except Exception as ex:
public.print_log("error info: {}".format(ex))
return public.return_message(-1, 0, str(ex))
self.__PDATA['uc_id'] = args.uc_id
self.__PDATA['dcv_method'] = args.dcv_method
result = self.request('cert/user/update_dcv')
if result.get("success"):
return public.success_v2(result.get("res"))
return public.fail_v2(result.get("res"))
# dns auto parsed
def _auto_dns(self, auto: list, uc_id: int) -> None:
with app.app_context():
# makesure pending
count = 0
while count <= 999:
new_get = public.dict_obj()
new_get.uc_id = uc_id
res = self.get_verify_result(new_get)
if res.get("status") == 0:
v_msg = res.get("message")
if v_msg.get("code") == 1 and v_msg.get("certStatus") == "PENDING":
verify_data = v_msg.get("data")
break
count += 1
time.sleep(10)
for a in auto:
if not a.get("id"):
continue
if not a.get("domain"):
continue
if not a.get("name"):
continue
provider = DnsDomainProvider.objects.filter(id=a.get("id")).first()
if provider:
boyd = {
"provider_id": provider.id,
"provider_name": provider.name,
"api_user": provider.api_user,
"domain": verify_data.get("dcvList")[0].get("domainName"),
"record": verify_data.get("DCVdnsHost"),
"record_value": verify_data.get("DCVdnsValue"),
"record_type": verify_data.get("DCVdnsType"),
"ttl": 1,
"proxy": 0 if a.get("name") == "CloudFlareDns" else -1,
"priority": -1,
}
provider.model_create_dns_record(boyd)
# 验证通过后移除CNAME
def _remove_caname(self, uc_id: int, ssl_info: dict) -> None:
with app.app_context():
provider = DnsDomainProvider.objects.filter(id=ssl_info.get("provider_id")).first()
if provider and uc_id:
get = public.dict_obj()
get.uc_id = uc_id
order = self.get_verify_result(get)
if order.get("status") != 0:
public.print_log("remove caname error: order status not 0")
return
if order.get("message").get("status") != "COMPLETE":
public.print_log("remove caname error: order status not complete")
return
data = order.get("message").get("data")
try:
DCVdnsHost = data.get("DCVdnsHost")
DCVdnsType = data.get("DCVdnsType")
domainName = data.get("dcvList")[0].get("domainName")
root, _ = public.get_root_domain(domainName)
except Exception as e:
public.print_log(f"error: {e}")
if not DCVdnsHost or not DCVdnsType or not root:
public.print_log(
f"remove caname error: "
f"DCVdnsHost={DCVdnsHost}, DCVdnsType={DCVdnsType}, domainName root={root}"
)
return
SyncService().records_process(provider_obj=provider, all_domains=[root])
record = DnsDomainRecord.objects.filter(
provider_id=provider.id,
domain=root,
record=DCVdnsHost,
record_type=DCVdnsType,
).first()
if record:
provider.model_delete_dns_record(record.id)
@staticmethod
def _replace_all_cert(ssl_info: dict):
try:
acme_v2().sub_all_cert(
key_file=os.path.join(ssl_info["path"], "privkey.pem"),
pem_file=os.path.join(ssl_info["path"], "fullchain.pem"),
)
except Exception as e:
public.print_log("replace business cert error: {}".format(e))
# 验证URL是否匹配
def check_url_txt(self, args):
try:
args.validate([
Param("url").String().Require(),
Param("content").String().Require(),
], [
public.validate.trim_filter(),
])
except Exception as ex:
public.print_log("error info: {}".format(ex))
return public.return_message(-1, 0, str(ex))
url = args.url
content = args.content
import http_requests
res = http_requests.get(url, s_type='curl', timeout=5)
result = res.text
status = 0
if not result:
status = 0
if result.find('11001') != -1 or result.find('curl: (6)') != -1:
status = -1
if result.find('curl: (7)') != -1 or res.status_code in [403, 401]:
status = -5
if result.find('Not Found') != -1 or result.find('not found') != -1 or res.status_code in [404]:
status = -2
if result.find('timed out') != -1:
status = -3
if result.find('301') != -1 or result.find('302') != -1 or result.find(
'Redirecting...') != -1 or res.status_code in [301, 302]:
status = -4
if result == content:
status = 1
if status == 1:
return public.success_v2({"status": status})
else:
return public.fail_v2({"status": status})
# 获取商业证书验证结果, 包含验证信息
def get_verify_result(self, args):
try:
self.__PDATA['uc_id'] = args.uc_id
res = self.request('cert/user/validate')
if res.get("success", False) is False:
return public.fail_v2(
res.get("res", "Failed to get verification result, please try again later!")
)
verify_info = res['res']
if verify_info['status'] in ['COMPLETE', False]:
return public.success_v2(verify_info)
is_file_verify = 'CNAME_CSR_HASH' != verify_info['data']['dcvList'][0]['dcvMethod']
verify_info['paths'] = []
verify_info['hosts'] = []
if verify_info['data']['application']['status'] == 'ongoing':
return public.fail_v2(
public.lang("In verification, please contact YakPanel if the audit still fails after 24 hours")
)
for dinfo in verify_info['data']['dcvList']:
is_https = dinfo['dcvMethod'] == 'HTTPS_CSR_HASH'
if is_https:
is_https = 's'
else:
is_https = ''
domain = dinfo['domainName']
if domain[:2] == '*.':
domain = domain[2:]
dinfo['domainName'] = domain
if is_file_verify:
valid_path = "/.well-known/pki-validation"
siteRunPath = self._get_domain_run_path(domain)
url = 'http' + is_https + '://' + domain + valid_path + '/' + verify_info['data']['DCVfileName']
get = public.dict_obj()
get.url = url
get.content = verify_info['data']['DCVfileContent']
status = self.check_url_txt(get)["message"].get("status")
verify_info['paths'].append({'url': url, 'status': status})
if not siteRunPath:
continue
verify_path = siteRunPath + valid_path
if not os.path.exists(verify_path):
os.makedirs(verify_path)
verify_file = verify_path + '/' + verify_info['data']['DCVfileName']
if os.path.exists(verify_file):
continue
public.writeFile(verify_file, verify_info['data']['DCVfileContent'])
else:
# if domain[:4] == 'www.': domain = domain[4:]
domain, subb = public.get_root_domain(domain)
dinfo['domainName'] = domain
if verify_info['data'].get('DCVdnsHost'):
verify_info['hosts'].append(verify_info['data']['DCVdnsHost'] + '.' + domain)
return public.success_v2(verify_info)
except Exception as e:
return public.fail_v2("Failed to get verification result, please try again later!")
# 下载证书
def download_cert(self, get):
self.__PDATA["uc_id"] = get.uc_id
result = self.request("cert/user/download")
return result
# 商业证书入库
def _save_ssl(self, order: dict) -> None:
"""
阻塞型更新入库
"""
if DnsDomainSSL.objects.filter(cert_id=order.get("certId")).first():
return
try:
new_get = public.dict_obj()
new_get.uc_id = order.get("uc_id")
cert = self.get_order_find(new_get)
cert = cert.get("message")
cert_private = cert.get("private_key")
cert_pem = cert.get("certificate") + "\n" + cert.get("ca_certificate")
handler = CertHandler()
hash_ = handler.get_hash(cert_pem)
# cert maybe uploaded to the free pages, resave.
DnsDomainSSL.objects.filter(hash=hash_).delete()
# 入库, 继承user_for
ssl_info = handler.save_by_data(
cert_pem=cert_pem,
private_key=cert_private,
order={
"cert_id": order.get("certId"),
"order_info": order,
}
)
if ssl_info:
try: # 首次入库替换证书
self._replace_all_cert(ssl_info)
except Exception as e1:
public.print_log(f"replace business cert error: {e1}")
try: # 首次入库尝试移除caname
task = threading.Thread(
target=self._remove_caname,
args=(order.get("uc_id"), ssl_info,)
)
task.start()
except Exception as err:
public.print_log(f"remove business ssl caname error: {err}")
except Exception as e:
public.print_log(f"update business ssl error: {e}")
return
@staticmethod
def find_next_cert(cert_id: str):
if not cert_id:
return None
try:
while 1:
time.sleep(3)
order_list = BusinessSSL().get_order_list().get("message", [])
for o in order_list:
if o.get("p_certId") == cert_id:
return o
except Exception as e:
public.print_log(f"find_cert error: {e}")
raise Exception(f"Failed to find cert for {cert_id}, please try again later!")
# 商业续签
def renew_cert_order(self, get, cert_id: str):
"""
@name 商业证书续签
首次续签请求续签然后verify轮询
cert_id 续签得cert_id, 可能会被不断重签, 需要不断轮询获取最新的cert_id去验证
"""
self.__PDATA['uc_id'] = get.uc_id
result = self.request('cert/user/renew')
count = 99
try:
new_order = None
cur_cert_id = cert_id
while count >= 0:
count -= 1
if not new_order:
new_order = self.find_next_cert(cur_cert_id)
# 验证 new_order 订单
args = public.dict_obj
args.uc_id = new_order.get("uc_id")
time.sleep(3)
verify = self.get_verify_result(args)
if verify.get("status") == 0:
if verify.get("message").get("status") == "REISSUED":
# new_order has been REISSUED, update cur_cert_id, reset new_order
cur_cert_id = new_order['certId']
new_order = None
continue
if verify.get("message").get("status") == "COMPLETE":
return public.success_v2("success")
except Exception as e:
return public.fail_v2("Failed to renew certificate, please try again later: {}".format(e))
finally:
# it will renew db cert
self.list_business_ssl(public.to_dict_obj({"p": 1, "limit": "10"}))
return public.fail_v2("failed to verify certificate")
# 商业证书列表
def list_business_ssl(self, get=None):
try:
if get:
get.validate([
Param("p").Integer(),
Param("limit").String(),
], [
public.validate.trim_filter(),
])
except Exception as ex:
public.print_log("error info: {}".format(ex))
return public.return_message(-1, 0, str(ex))
org_orders = self.get_order_list()
if org_orders.get("status") != 0:
return public.fail_v2("Failed To Get Order List, Please Try Again Later")
if not isinstance(org_orders.get("message"), list):
return public.fail_v2("Failed to get order list, please try again later!")
msg = "Get Business SSL Order Successfully"
if len(org_orders.get("message")) == 0:
DnsDomainSSL.objects.filter(is_order=1).delete()
return public.success_v2({"data": [], "total": 0, "msg": msg})
res = []
org_orders["message"].sort(key=lambda i: i.get("uc_id"))
for o in org_orders["message"]:
if o.get("order_status") == "COMPLETE" and o.get("certId"):
if bool([x for x in org_orders["message"] if x.get("p_certId") == o.get("certId")]):
continue
self._save_ssl(o)
else:
DnsDomainSSL.objects.filter(
order_info__pid=o.get("pid"),
order_info__uc_id=o.get("uc_id"),
order_info__oid=o.get("oid"),
).delete()
if o.get("order_status") == "REISSUED":
continue
res.append({"order_info": o})
page = int(getattr(get, "p", 1))
limit = int(getattr(get, "limit", 100))
ssl_obj = DnsDomainSSL.objects.filter(is_order=1)
total = ssl_obj.count()
ssl_obj.offset((page - 1) * limit).limit(limit)
res.extend([
{
"hash": ssl.hash,
"provider": ssl.info.get("issuer_O", "unknown"),
"issuer": ssl.info.get("issuer", "unknown"),
"verify_domains": list(set(ssl.dns + [ssl.subject])),
"end_time": DomainObject._end_time(ssl.not_after),
"end_date": ssl.not_after,
"last_apply_time": ssl.info.get("notBefore", ""),
"auto_renew": ssl.auto_renew,
"cert": {
"csr": public.readFile(ssl.path + "/fullchain.pem"), # 证书
"key": public.readFile(ssl.path + "/privkey.pem"), # 密钥
},
"order_info": ssl.order_info,
"user_for": ssl.user_for,
"alarm": ssl.alarm,
} for ssl in ssl_obj
])
return public.success_v2({"data": res, "total": total, "msg": msg})

View File

@@ -0,0 +1,60 @@
# coding:
import os
from enum import StrEnum, IntEnum
import public
from panelDnsapi import *
APP_PATH = os.path.dirname(__file__)
SPECIAL_PROJECT_TYPE = {"node", "python", "go", "java", "net", "html", "other"}
# 旧的, 限制域名面板登录
PANEL_LIMIT_DOMAIN = os.path.join(public.get_panel_path(), "data/domain.conf")
# 新的, real 面板域名
PANEL_DOMAIN = os.path.join(public.get_panel_path(), "data/panel_domain.conf")
# 源任务脚本
ORG_TASK_PL = os.path.join(APP_PATH, "org_domain_ssl.pl")
# 同步更新锁
# RUNNING = os.path.join(APP_PATH, "sync_running.pl")
# 订单锁
MANUAL_APPLY_PL = os.path.join(APP_PATH, "manual_apply.pl")
# old dns配置迁移
OLD_DNS_CONF = os.path.join(public.get_panel_path(), "class_v2/ssl_dnsV2", "aaDns_conf.json")
DNS_MAP = {
"CloudFlareDns": CloudFlareDns,
"NameCheapDns": NameCheapDns,
"PorkBunDns": PorkBunDns,
"NameSiloDns": NameSiloDns,
"YakPanelDns": YakPanelDns,
"GodaddyDns": GodaddyDns,
}
class DnsTask(StrEnum):
"""
任务名字, 可用于具体过滤
"""
sync_dns = "Sync Dns"
apply_ssl = "Apply SSL"
init_sites = "Site Initialize"
init_panel = "Panel SSL Initialize"
class UserFor(StrEnum):
sites = "sites"
panel = "panel"
mails = "mails"
account = "account"
class WorkFor(IntEnum):
sites = 1
panel = 2
mails = 3
account = 4

View File

@@ -0,0 +1,162 @@
# coding: utf-8
# ------------------------------
# 对外接口
# ------------------------------
import json
from datetime import datetime
import public
from panelDnsapi import extract_zone
from public.validate import Param
from .model import DnsDomainProvider, DnsDomainSSL, DnsDomainRecord
class SubPanelApi:
date_format = "%Y-%m-%d"
@staticmethod
def _end_time(data_str: str) -> int:
try:
if not data_str:
return 0
today = datetime.today().date()
end_date = datetime.strptime(data_str, SubPanelApi.date_format).date()
return (end_date - today).days if today <= end_date else 0
except ValueError:
return 0
def account_create_record(self, get):
try:
get.validate([
Param("body").String().Require(),
], [
public.validate.trim_filter(),
])
body = json.loads(get.body)
except json.JSONDecodeError:
body = get.body
except Exception as ex:
return public.fail_v2(str(ex))
domain = body.pop("domain", None)
if not domain:
return public.fail_v2("Domain not found!")
root, zone, _ = extract_zone(domain)
if not root:
return public.fail_v2("Domain not valid!")
# body = {
# "domain": "example.com",
# "record": "record",
# "record_value": "record_value",
# "record_type": "A",
# "ttl" : 1, # AUTO
# "proxied": 0不代理 , 1 代理,
# "priority": 10, 邮件参数, 按需要传入
# }
sys_name = "Sub YakPanel"
body["domain_name"] = root
p = DnsDomainProvider.objects.filter(domains__contains=root).first()
if p:
dns_obj = p.dns_obj
if body.get("record_type") == "TXT" and "v=spf" in body.get("record_value"):
# 处理spf记录
db_record = body.get("domain") if body.get("record") == "@" else body.get("record")
for item in DnsDomainRecord.objects.filter(
domain=body.get("domain"),
record__startswith=db_record,
record_type="TXT",
record_value__like="v=spf",
):
try:
item.delete_record(sys_name)
except:
continue
try:
res = dns_obj.create_org_record(**body)
except Exception as e:
return public.fail_v2(f"Failed! {str(e)}")
msg_body = (f'{sys_name} account Create Dns Record ['
f'domain={domain}, '
f'record={body.get("record")}, '
f'type={body.get("record_type")}, '
f'value={body.get("record_value")}'
f'] ')
if res.get("status"):
msg_body += "Successfully!"
public.WriteLog("DnsSSLManager", msg_body)
return public.success_v2("Successfully!")
else:
msg_body += f"Failed!, error: {res.get('msg')}"
public.WriteLog("DnsSSLManager", msg_body)
return public.fail_v2(res.get("msg", "Failed!"))
else:
return public.fail_v2("Provider account not found!")
def account_list_ssl_info(self, get):
"""
证书列表
"""
try:
get.validate([
Param("p").Integer(),
Param("limit").String(),
Param("domain").String(),
], [
public.validate.trim_filter(),
])
except Exception as ex:
public.print_log("error info: {}".format(ex))
return public.return_message(-1, 0, str(ex))
page = int(getattr(get, "p", 1))
limit = int(getattr(get, "limit", 100))
ssl_obj = DnsDomainSSL.objects.all()
if hasattr(get, "domain") and get.domain:
ssl_obj = ssl_obj.filter(subject__like=get.domain)
total = ssl_obj.count()
ssl_obj.limit(limit).offset((page - 1) * limit)
res = []
for ssl in ssl_obj:
if ssl.provider_id:
provider = DnsDomainProvider.objects.filter(id=ssl.provider_id).fields(
"name", "api_user", "api_key", "permission", "domains"
).first()
if provider:
provider = provider.as_dict()
else:
provider = {}
data = {
"provider": provider,
"ssl_info": ssl.info,
"end_time": self._end_time(ssl.not_after),
"end_date": ssl.not_after,
"last_apply_time": ssl.create_time,
"cert": {
"csr": public.readFile(ssl.path + "/fullchain.pem"), # 证书
"key": public.readFile(ssl.path + "/privkey.pem"), # 密钥
},
}
res.append(data)
return public.success_v2({"data": res, "total": total})
def account_domain_provider(self, get):
try:
get.validate([
Param("domain").String().Require(),
], [
public.validate.trim_filter(),
])
except Exception as ex:
public.print_log("error info: {}".format(ex))
return public.return_message(-1, 0, str(ex))
res = {}
for p in DnsDomainProvider.objects.all():
if get.domain in p.domains:
res = p.as_dict()
break
return public.success_v2(res)

View File

@@ -0,0 +1,973 @@
4wZIF38E5nxrLYkW2uUR7d3iaGQLSTjR4DuJynwT7k0=
dTLQ8Wr3wPn7w6pte1B1YA==
wiYVtfO/yzajW1Tv5z7hyA==
SbQQ5SqO9QrBwZ9ObpMYLw==
+uN+nl1ctTUEd6Q42XgkH/GI2uTwZDIvmcZdzr4SQhk=
e+1YSk47tjYGkSkbGftbZONk+n8PvlqrAp6+/HPZTeOwdNQfV2SVD7PZBpL851jY
1u+XjG/2+GSQRv6EzCaWRQ==
XIfdJ79nObMM+vyAmKbTmw==
QtywOSt2jU7XEVQfd46hXs00/9JPoIU+BS1o4VuvfOA=
vgiQZOjzqS09MX2eZglCbUr34ZZYtOWa6tATLWhZCa0=
gEngtKdD7Bkk/GLYGhcW4LYWZWravFYBj9rzJXdABZA=
Fgu2QSCa2CxbJoMrAvhNvTGwccXxOkfirlwnSmJLjAGIJWfZFOzez1pcC1EVFo5j
uVEt8AsKaCnF/mz7TO+v/wOEvPUNYie2wQzrh5ImgOg=
JRQLesmLVA0iJtifOJRq2+xERViasN4Pxurks4LGYtg71jb/lqYZTgFYWK4ZgvuD
xAHcIiaS3EF2Fb04dUCwi9NZaWlZc3vk142qwPVJ3cSlpL5kw6GeAjStxiNx9Zw63rM3Kut3WpD3iBjW0mjNBw==
1u+XjG/2+GSQRv6EzCaWRQ==
1u+XjG/2+GSQRv6EzCaWRQ==
pf5CQXFCvnMmEsXEN7W4pzBr0U2YRLIkn8NVKrTvixU=
MsacHy0ZakPCVoHa83a26A==
GzlEaoIXhg6Vyg1nLo0z5j3+w+iIrQLN3ozgEjxIbPk=
MsacHy0ZakPCVoHa83a26A==
nsYxafTArA9QHMdLT+B/wljEHxek23nGr2Q+yee0gGpXHv0Jmt5z33o8xByrE4br
1u+XjG/2+GSQRv6EzCaWRQ==
1u+XjG/2+GSQRv6EzCaWRQ==
Kr5TKD40Cq6l+Ep/PZNNFCQOg5/IzHBsaGknafbEEU7ZKy5BLbtzpvKLgZ4y4S0u
MsacHy0ZakPCVoHa83a26A==
xPHjJ9H6/CaXp2UvYD+S5fNcD5vGspmbaAnG29qBsn0=
wKibXn80ykzMCClWI85MOWMcRJDaO5kCxt2AkOk4FURoqPbL5ep9K+D3hNcZeChr
p+vs3TKrtcDgNPUiA4sMvMlUL/MnkYer7Z9Y/W4DJcpuvMm+YWAcPiXqetbeANOCxRpQCSjdzH84G79OIFXeeg==
MsacHy0ZakPCVoHa83a26A==
Tuq25svzYvEoLJdexQZVPqAhpHV9BkQ8wffxfjqOlGo=
lNSpMXSSdsztjsXj5hxacFIFPurReMeLisFInRRAv9A=
TriLe8lLC3IYGif9pbuMnQ==
cbvASHjpysrsjdY5RctXmCy3pIDjYwQwjCP3qUlw73izfwwyLPlMq5KQ3dZ87WFC
tFpWD6xm4PYXNuWIA2tGexjDU4NnN43+1N6ieaVCVur4T3pfj3xUN64YSdMJk0It
XVOAEKYxKkXrTlpM0gq5Z3YpzJbvaEEQYT531YP3tmc=
guMlr0URwZ0PSvqDIfaxHNYmuZ/i+YBibIYMhJqCvvY/mkgEvay2slYt2ZtMPbSTlEJFd3qxswkfdc954iqVXA==
dG/vjuhnCW6wEnc8IwrWG7LlPCYZ3rCaVI/u1iCE15Zz0wcmRBYNVdqu2MW2EMG/KjzLY8KxqdfAMNXdbxW0ylE42O+CqbHdzxpLQoMq5ZY=
wgR07xfoapmx6eEnFHXXYt1a1nlhtXQu0eU8+K9mU65ZtwJjVu7HYCwkRVY4zYUy
NqhMbY8+EQI8zhTG6Zh2I0riPpuU60ii1l1P2h7lH4zNb2B1KbMHW+FgAluhEpff
NlI+nvFYXpD6z7k9OU20odha9pDqj7g7QEDG4rgPrWsyZsbF5cyG7MPG8pdil5R8WFj7GvJozajfGuR52/bB3g==
wgR07xfoapmx6eEnFHXXYt1a1nlhtXQu0eU8+K9mU67QipPzFFxGVc/nquP8Qw+b
xWoGNWjKGPfI4gq8aHoTfK0Y+PF0Td5PwynTkoV5okHg1xjAoPZFCDXtBmdCN697
lGY+HGJ/DlLufZHWWlj7U2klWR9adCRafOQIqxWP2T8=
STVnWVl48+KLq9/tJ+g/iKAFhuL7OvoPhEZaIAXTw5c=
fLETQ22HuDIh4ibW1C50WfK4NBdZSrgQS7BmG0hmrUA=
lNSpMXSSdsztjsXj5hxacFIFPurReMeLisFInRRAv9A=
1u+XjG/2+GSQRv6EzCaWRQ==
1u+XjG/2+GSQRv6EzCaWRQ==
zDrsHVQKJyzs9CngtV2Jy8K+/2TuaYQDZDJvSzecDo7njN6pOQhJ+esHvyfzUeXc
MsacHy0ZakPCVoHa83a26A==
NLUTBPddN6vkhekXgQzZ4p8gNlDxZULvvGAgL8saoBfWKq9pYra+Mr2PDbMrlr5r
hkePqvcOHYWb8uqjVpDiCRoPHTN3W2bU+y/EcR1e6hG016Fq8vWmnyo+RR4FGPdK
MsacHy0ZakPCVoHa83a26A==
n+iDU8NaIMUpSt2+qa7DuTPa0RgyyuCKDwZRR2oL1pM=
/0ULpLqgTvInFD0r5hHANoosZ+xywkOR5dozStfmlYk=
C8mxUpsh4XMtIN+H0SJ4gpfoAw4ucqe4UDvBSoBGQacRC6as6CpEobGkELvao5nu
hAMG91uEKNfkOfEEFCO+FKSUWNeqpUZ2lLi5w11wp4RUsFCjL6xK3VatUGU6CzHG
VmVrGQo2zRokW/ZuO9bN6/efKhHQSxevAO/ibL7thfhC6WPNlTz/qvdPhfSgZH7f
sobCGpmMf4/g7+HpPqBjC6hatZ6rUY3AAzqC73FJ58Q=
VmVrGQo2zRokW/ZuO9bN69T21CyDNz7TGSDI1YJQZSE59m2j8sJ3vQzBUtK4OkCzcZnV6I+9RkS9IjaP9MIDFA==
ruTTNFTdswRs4Mc+srnRk818d9d/TGGXzgPjSrVtMi8=
oPPON0SlfkfV4140QyLyln2OPkSSKrOK4yyLgg8ofuwXFPIZH9aJ4LZmqhxBMjGo
6kikk3J4Y3rxMAlQcavjqz6exc/xUl5FXcaLbJMwDvqaFtI/KGQHZ1vkyFxafrMVgKeqoMycWoDtEM6hFs46nQ==
oPPON0SlfkfV4140QyLylvRyf4SCwLJup0OW2Q2ucBg=
h32BbptmmJEaOdYiHPPX3stgHm2K7NTtwVIxFZf+kL8aoQ44e7bF++W/cXSxfdKI
8nvPEosyLxL6o7Xor8J4fIbBfKnh0l3Vvhgx+zgySKMJ6dS70OqqbRQChh+Des1sJPmO+trahqGS9ubj5IVKqQ==
S4Ml2G0LoAqtuRWT3SLCXAeZDuxpNFKqjxiORgI08iB+CUFjd0kXqYHrk6KVKCqW+h77VHn/5vdGz7w/BRXDixoQ+YE+x2dTdO+jy7Cm+K4=
h32BbptmmJEaOdYiHPPX3vAXeoGRZiWCxdmxR7Q8hB+IaKv1E7rnFi9VPWNM7Phb
kbL8RIqyju0rQDBPslh6uiebB8kiwDoNUN30naKrKkEtNRO/rLin1iBJN/USa9xAOTGOOU0hLewagymWxdqFlQ==
S4Ml2G0LoAqtuRWT3SLCXLs8wLs8xkWuRrDnVoqDXrM5fW7q0LB5EGFcDB9We+XKpzp2MeaGxsXfTtdu8ZS1cSz3ol1DgXEIVhWH5OCuv04=
CAhn8dRUItEbEErp4w+lX9k9oGNbQ3YcYk+6UXomg2w=
Xz2U4QEaaycqaaw10OKovA==
FEZSdYhAV26PfOeirhfdaxrof5YKLvzEdL39WEJcnCQ=
1u+XjG/2+GSQRv6EzCaWRQ==
1u+XjG/2+GSQRv6EzCaWRQ==
ndTb4UE7MEs4XAQ1UQJkRds3Lgtn+I7o8IFu+oZWgJmYoF3TzSlyUBN3n0XvWSjntTMbSg1El4qxg7AyfdoTAQ==
MsacHy0ZakPCVoHa83a26A==
YbRXy93pWqI2aTo8xlvexiktsts264cXdSrc/gaRt74qiQPuHPx+76K/eSKFqxLZ
MsacHy0ZakPCVoHa83a26A==
IcWwn/wZO9ml3ozPJmbNXmWiqRolcasdScKG8uojrnc=
6kikk3J4Y3rxMAlQcavjq8OwKaDsmHeYOMpJ+wEbsyA=
qrJ1r3QhPTUiXOgYpCrgVAUUuMAW7AyjLXPbMrv+mFA=
UJeY/KooFiH2ySjlIgKQbJLw7mV9horfkikV1cnyZGk=
osQChPk8Ukcj+LiIzB9a9MkfNxF+2ZXOGRhqUkaJWqA=
mgV9MrvUK0fssdmv3ApVy0IxbSrp4rNQvoOQTR7cWw0=
J7+j/CsFoXgx+VuubAS5dY8lkxcyOUHksONySnSro0E=
mgV9MrvUK0fssdmv3ApVy092nl9kXtHQfyIUidqmPgY=
b4OJVZe8QyIpjuTpKXDL9A==
FLMbt5iAjw12yzW85KcCsqs2iPYjq/oahhyNIrMD8Bc=
FLMbt5iAjw12yzW85KcCsqdTWr90IhmvvWCIhOFMdNn4o4T6Rr5jk1cr9CE+NhtS1KyCHBkPhjAQyMMfZILfysJZ+xEsNh4zDoXzHYmZiPoXdzggkXskgO6krcAxI3Pi
J1UGlXkKhKXD36OrXXhN8M1RY/xWBZTtpU0WiaR4+JI=
VmVrGQo2zRokW/ZuO9bN65bPgBInBuu7vqiqz/t/mZiVR+tAfux5Wclf9YB7HQ1nLJZ2OPF4htlyEQGOj2cwQ4UkSoJN53oBU0sngMEs39cuOh7v/j9NA7JbFwsTcdG4
J1UGlXkKhKXD36OrXXhN8D1WS69iuMNH+9GVIq1NfWA=
VmVrGQo2zRokW/ZuO9bN6+MhzE5jAqEokidpBAyItQ8=
sobCGpmMf4/g7+HpPqBjC6hatZ6rUY3AAzqC73FJ58Q=
VmVrGQo2zRokW/ZuO9bN6yA2oZogkR9i+ZXbfFYnk2k=
A50UO/kAI17YP7MCbTvBkFQ/jf5eMs11PzZj1m3IBsQ=
xWoGNWjKGPfI4gq8aHoTfIe3NC4TsQR+Y4ztawsU6jIhqzXvCen40Cl+OXaadC6r12PZyaHV1EQjwGttat5Rpw==
T0lwjDK5GymcJe/LbHEB+wrR9bTN9k1u0G65Ghr4Fu0=
0976Vy/lfkoO1AbuRG+nV7aDcJnrAEQ0djgi0wlrBJQ=
+e3y6/ba9jMhf2Q10FuTBQuns9mgOmYUzYuR7Qa6tac=
1u+XjG/2+GSQRv6EzCaWRQ==
1u+XjG/2+GSQRv6EzCaWRQ==
WGDHGAYCEaTGQbymRWjpflQCjFDmpz2UQXEjg8SjJ+Y=
ZaY2rnuCaOqy3H86FOltkEDtspbKPSSmHhDwD429WOIykE37Dz2GFQKC5YQALdjjevjVgsab2hLEj49XZX9U6Ri9STjSCiO2lwI8Vmoh2lddwXaKCNeZi1S21ZbNC4sP
7fBvPEAf72Uv1YEDXbbQ3N9/yYP+wr1BKWIj/bLys5ckMQbxhLZMLvwh9C5VIjNODIZ1X/ZN5OJWMWDVTVQOijLtYnKtps+fSSFgJLqq3bg=
eVCjKDMEAn0sqvaiKhdWjXgeThB5f3lGcuELZNR184Y=
MsacHy0ZakPCVoHa83a26A==
11ccDNyvnMJz5Znbj0DcZmN7bce5HIm4NWXOre/H+sU=
uo/xlfORgGblFKDJREGl/lTaUJULq69jYv5gzAxrH+U/W2q65jNQyAN1HA19e3HZJ3P3QNg4ZXrY7yPx2TS8RFOA4DY2tdyBxZoPr62M23A=
V3hewkLCwXkg3GZGwFnwOv7fTV+L0Eg9VqEN74d5TsnWXpc8TJjfxa4c0vhO8aGh
MsacHy0ZakPCVoHa83a26A==
SclMwfPdgEfvMfSdMtM/jiooYd6FO7yRa2OOEMsrNiY=
a1ZY9S/YfzTR6BHQYzLx1CqYy8QK9aCZiVgBwUaRBngmfq/eXoK6hIVn7GJFhu2xAe3+U1RlVAxYiWdZTAXcJw==
+fsHNSvkFDcz+d2hhMsZz3OcZpsWjnsWRSLChlQ9BHnuKa3Vkksjxve1KPEnzhB9
fsjjo9JMj+4JWdxlwkj1H5kUsALAR/WxfP4TNC22r4AYgOcEeoN2b8bEQSJJiZkX
wlLHv6kT3Q/RmtMBN4nDAcWrODrqf99xtDKfNktGunc=
VmVrGQo2zRokW/ZuO9bN6xD4VveXLCO7lHoImElHK0JlGBZXwceaaN+ebrAeLCB/
VmVrGQo2zRokW/ZuO9bN61mOKnVWgWUsITvZ7kRI9/2Z4FhIDTLeG3KzNUvfCiqA
IPiIaM3loJH/LrwsXAD6JU3rKE+ZPko9lRfNkM1Qb/9CdnDa1HtsuuYmNQhYSg7s
1u+XjG/2+GSQRv6EzCaWRQ==
bpVzAQMRei0e84labnc+JJ4KdXj3zvdPnOkcxieE9lLlazvpZY2G9gSioibOKvLHIRwVsoGFGDwpN1M/HVePWqp7bXTBn42BmNZwnbgKY4Y=
pVMCrZ7PAAHymZ70WROm/wMf9Mz13trkbfUBKDyLMQk=
VmVrGQo2zRokW/ZuO9bN64uOe0KgH9A0mekX1IoYftl1LTqSD7Xy5MBPug6eV8RDcptckGqp9yrgPRnfAqlRv3lNdeejRrhl/5voGtqneY93TmZ8+a6K3Z3odptu/UIN4exJgSCKVYrGDHT+HScFhbm6atxGyMmcsr2AjTtCfek=
L0eUthVnpkGsmKFAX6d+uE/CYsJNqOMjxonFB46aPvI2ZIJtXma82ILlINzNlhZeHTU6kz6RZQqvOIULyUifCbjtSBu6gV6uWPK26WYmM7LH26LtOSSn3MCMPRNr7P5SaCykA5Nf8DJt9hM2bojpAA==
1u+XjG/2+GSQRv6EzCaWRQ==
PMGWnzQ8QEGw1aWFJwhFt2cBfh5K+nkCySsuNxOzhW63bncPhnRuh8uCEzR5/L/r
pVMCrZ7PAAHymZ70WROm/wMf9Mz13trkbfUBKDyLMQk=
VmVrGQo2zRokW/ZuO9bN6yuchr8pcH5MgJA+JwQZ8V3Ij2wgU9TsLBH9CVkSWdtfS1AxJKdLKtrz1Yvqf67J/O7l1HQi2BzvsllUmbMt+UQ=
xWoGNWjKGPfI4gq8aHoTfAqIgMPi1LDJCKZIH2JkdCc/fvgz0AtuviDRJf4jgIan3e4qavATH+GaRiQ/35FHuLzGr4n3IVbdIlAULSsZHi8=
L0eUthVnpkGsmKFAX6d+uE/CYsJNqOMjxonFB46aPvJGmIARu8b/EaN91OHAzG0ntqvFtNlEvN843FcN8m6TkXuDcU1bJbnarf8+lOAI5ho=
1u+XjG/2+GSQRv6EzCaWRQ==
HS8J6rZy+sn9O6K+liOXzD50D5dLk4L8njMez2w6B4DgbbpiITyUrpQlKl2GLCKM
JZGWrpvbDIlg3tUxGwenF3G3jlhRmJuJU5OG+IkIM2w61bQQHGnpGymfXPdqQMbWKKpChUnfadVQQKcPNXuwjQ==
mCBlwfnwxtZoLQ9lqaBAr0DEEekz+Ie5ML/s8B547bo=
AKR+OhMsr76k2SU3CFoUdXDqdtv7NdiPfGjl1r4sEqc=
b4OJVZe8QyIpjuTpKXDL9A==
I5csN8e3J/KIFkMa5t+SJFqUBmdy50sNG7fX4kmottlaB8ygSezryZ5tej3k03LbyXNiRBcfk16ezkeFRCmfdBEG/UDuB6e5/+z2cDuVi9E=
FLMbt5iAjw12yzW85KcCsgF+hqS5z2iL11XlztiYzwW89jCKO1szhfeC5WvOa1ju
VmVrGQo2zRokW/ZuO9bN69XTz5GXWJyp04WU86kDL48xtvnR5qGidiUZkRAoi6qBC/8ol1U70nvhY8Cs/Xr2Kw0Xll/0b/POe3wsuj580Pw=
1PNpySato8UYteTtqAx/0A==
J1UGlXkKhKXD36OrXXhN8D1WS69iuMNH+9GVIq1NfWA=
VmVrGQo2zRokW/ZuO9bN68SPQC+aR6FW31QbyFYt4MuCNM+iooRXDaUW5qnfmCLep10drmbXhynrVzxEOFoBdw==
VmVrGQo2zRokW/ZuO9bN6+B7m/QvaSQI0i4VxwwXs5tdPr1S3/eopRfSM/fQ33WMWWCws8PlKCZdKpePnVT7aw==
mfT8DrNbUmxQ2BnZ1bZFTLh9MEuZKOpmAfF70OnZ9TU=
s6ChnXH5zaR4nss2Jj7ULBibRmB/kmin0eYU9S2eTfU=
1u+XjG/2+GSQRv6EzCaWRQ==
b4OJVZe8QyIpjuTpKXDL9A==
lOh2GtzHjjMM8E9J40AuOXtyI+3ZX1LllW4AGpfIcmztEgwzxGQWyKtbRNoYxBTi
VmVrGQo2zRokW/ZuO9bN6++QpZdIlTbccqQGxWjGwQTltXk7T4JS/Blpi7fwernI
VmVrGQo2zRokW/ZuO9bN66VHp6LU2mm37CM4+FoH0yAQtfcrgvn8s2W6nwHUJwwV
VmVrGQo2zRokW/ZuO9bN61Wilh29IjS/9O4IFA8UmKgbvAzW0ELK9mTaS/xpYOav
VmVrGQo2zRokW/ZuO9bN67cn2xZBq2mylKTJ767KHJq6aFsyNPRK6lBTxG+BdGmk
VmVrGQo2zRokW/ZuO9bN66dGBN8yLxa+guyEY/rIein/vfe5jR4i2YuAR6ZKla/h
1PNpySato8UYteTtqAx/0A==
1V2v8QerKOmubvSxgB4eTFjxzP+DYeNnc6HgAJ6mgxwcmiaBT4n2Gu6nntpdGCee
VmVrGQo2zRokW/ZuO9bN6/jClkijVoYw5n9Wjxgp3SwlqnCiU62n7UvFbquVQgZT
VmVrGQo2zRokW/ZuO9bN63POjP7MKOGKNCTViU5NdKDvFX2l0nqSh3WumxBj86C3Hf+/v7ORyjAtfGzWgoBDZWM2MltvYqT1lGZQxw+NgWuHnmiKQpsdz6Gh45QnvNQYXYO6TClVFsL7D62PRH25ig==
VmVrGQo2zRokW/ZuO9bN6wsUYpbxLVT0Svzg6LM2ez8P4UASHwOKTLYCIv4B3mXY
VmVrGQo2zRokW/ZuO9bN6ynC039s5UvW7nmyfsBS9AM=
VmVrGQo2zRokW/ZuO9bN66pxEDk5DYqG0koG6N9pvu6WMCtGxaYRyunWH40OqBmdoJtnxui4tijRrwzzxTK3dajp1fypf4C07Qw/U77sGOM=
VmVrGQo2zRokW/ZuO9bN66wmtriv6QXeuDc39Fjfymhh1V6oDvIzFea05q1WLQ48HaHdM9RIUPR3Wg2wFAtqaw==
1u+XjG/2+GSQRv6EzCaWRQ==
nNkEkiLAGyoMlIeE163bvCy18MmX4qtE6va8uUK18Q2tMslg3ugvrxPxDB46kWCB8pEqMD+IzFR2QCLnJMhqg05rw9B+wHMBesYMiryKnF4NqlB4ejOAYYUXk2dDJqo2
V/9ovtRa3Br5aRllRV4LnhVR5YDcQIr+cr6TT3w2irM=
8ar+gMkLXblWgiCtU0wkI/XElz3+VkHn+T4Tr/pcdrGfTfSmc6tXzVZzm0lGx7O1T6k1uvYNmxg2tZ40Wbb22Q==
4SeJVYhLrKt8S0v0T7bR5ebT2+K7B8yelthVsbn6IEdh1PciBhoHKWyycUxUAlceyPItjEhj1nnwaHdSkjoTyw==
I5csN8e3J/KIFkMa5t+SJFqUBmdy50sNG7fX4kmottlaB8ygSezryZ5tej3k03LbbUL+JEdkq+sAbuCpAPQk8g==
uBJ8NoDW+Rxskh0SPnfMHcV768klQhDm4d2992TOtD7DP4rjyZJKnxEG1P8SYFwP9lHNy/6YXOmjxwVRDl0Qw6gwemBLdYOlBjtJ4V1mI3b5kYSGhk8BbIf7ZWp0NJ7r
uBJ8NoDW+Rxskh0SPnfMHZr5WXeZC+h7jD7Fo5PXPBuHMXFk6hFXlcAuJSqp8fLUr38B5Pmh0ZmTUeuL8Hso/+vL5ge4QKQ2PFEK3NON9oA=
J1UGlXkKhKXD36OrXXhN8ILw61oB8/7nX/BC+Ss4VSM=
VmVrGQo2zRokW/ZuO9bN6ykzZo3qGqyOlKWVFyEdufs=
VmVrGQo2zRokW/ZuO9bN6xRN41dendtmTF/TtF7jdeZR2P5LOC2DfZ05y4HYuhX1v5Vkvrd6sCKhQUOUatlrLw==
VmVrGQo2zRokW/ZuO9bN64pQ/GyzJqHM9nmcKXBCvov0vQlPm9MWMtYq9RhILqLCJg/OTvvaTLYdhobGrgFXHg==
VmVrGQo2zRokW/ZuO9bN67iWZeQt/OTC88a+HlPjOemTrInU6N8YnDwZdUGr4BdoxidyP79THC+yglGMkx+98A==
VmVrGQo2zRokW/ZuO9bN654Enj8yhWFV20SJ83piZWE=
VmVrGQo2zRokW/ZuO9bN6zDlTRvGybTsiaBjEGuiKSsXOeHIFroITBRQl9Bt1Gt4
VmVrGQo2zRokW/ZuO9bN6wkfnQD8hUaC0DBjNF711SDIEMhcTmkHZUUXVdhC2UeQSapulwfdZI/5mdxSDTbSzvyOqGgUqFmyrKiKVI9IQMmVwKGDsZ2z/cOwdzeloqP3
VmVrGQo2zRokW/ZuO9bN618mYIQDY3C7r3ku6ZRI4imgV0HoJE5EWZiDSwg6OLwVjPewiQsVTb3BW+TLkhocmA==
sobCGpmMf4/g7+HpPqBjC6hatZ6rUY3AAzqC73FJ58Q=
VmVrGQo2zRokW/ZuO9bN6/gIN/z9iCjYtph2OyODUeogrTHKTZoNYWdx8CyeH6O9ObaypwhFi17hLCPjnIgKdfJCptKiO1H2sYYDGDsruwUhb9Jfe895LmOITwgUG10gTINs4Q4vffIouR67WgWXog==
8ar+gMkLXblWgiCtU0wkI/XElz3+VkHn+T4Tr/pcdrGX/Gs6nHFJCviy4EdGvevM4jIpaIq50C50jjsT5eW82Q==
pVMCrZ7PAAHymZ70WROm/wMf9Mz13trkbfUBKDyLMQk=
VmVrGQo2zRokW/ZuO9bN64uOe0KgH9A0mekX1IoYftmOsIqUyhE9wY2n2c582+8NAAMV+BMoTK8Ugvnu/qIDJQ==
L0eUthVnpkGsmKFAX6d+uINvW468tRk1gDFX3gUWs5C8guTVC3LwlMuLUVDbKBwYm0g9rBcs2zUv25kBZ+CG3Q==
A50UO/kAI17YP7MCbTvBkFQ/jf5eMs11PzZj1m3IBsQ=
p9oVsBgcyiBMjDb8CcPOqL5s/76MTqY9EVKKWY3DZ/M=
xWoGNWjKGPfI4gq8aHoTfBVO0rtzJGwPNNCAKcvoQ7YGnBVlRRzBkPuuYdnd1drISaN/5vpFnf0ao1Hkw6ztew==
Fit9NCwCsdSLzR6w+gBNoGY5s2uVB6JGP9x9J3FBOf4Cm/xdCskTHDtxp8EihjtBUdgEtFTJtRacZtDVZFpFQ9qncLSrFFzPEeuhJWjV5mAdMYKjhYnl0InR322ri4Ik4IHbmVVKl+lO1BuM74fODQ==
V/9ovtRa3Br5aRllRV4LntYnx86tGQlRbL7JVboX3y4jkTRmYPPMizKgMeu7xjUZ
L0eUthVnpkGsmKFAX6d+uE/CYsJNqOMjxonFB46aPvJmazgTBqDNu6KDxRd6P2ff9uo9O35KFEP+Az6J83V4RA==
jYPHQAqSoL3QG9u85m6Jg0oiDIwa2nYjYliF1PoBA2U=
pVMCrZ7PAAHymZ70WROm/wMf9Mz13trkbfUBKDyLMQk=
VmVrGQo2zRokW/ZuO9bN64uOe0KgH9A0mekX1IoYftnoN2stukimZz6RUZbnM10O
UbJuac0dxLiN+5ocS3w2vTJ2gfAlxpU/7wO0dYK93hYAFzAkuzTz18R1PHvaZwCx
VmVrGQo2zRokW/ZuO9bN66mHtL2+Awe9OlHlbkcVxd3xRvrMkgiJku5lYacXFBu2/h3APV2hy2k1Gey+vD2kPA==
1u+XjG/2+GSQRv6EzCaWRQ==
1u+XjG/2+GSQRv6EzCaWRQ==
B/KFBviRsSeeKESxapMg/fs5/ZPzR4BOpPWWFr9An2yCofm6uK95bBjXjYL6Cie1
PlGT4c8sCVmjiOTFRN4yGfvAq3iFO19gYmPtxgGTtfXBcIugNSB1a+azggmRd2Fa
WKB28oYcC5fnC2zcST3aceDfd07GweEll3s6AlnHRnjnfWubKY0e6ragOrY0RwctKyJGxi9Ak649yn8mX7TeRA==
tERakgdW1gKgi2GWCqfk5c+AtTsHrnG9UFunoeeqg4HfJEb88wW4SV6AWvONj5+QmJf+YwykoK2iTNproyqFoQ==
qSJ2d3Lca1Lc99lGzLBYNXBzQc4/suVncDNZsfVV/y9a8H2yliwxPTedwaD2wr/Q+59Qk+yvUWPQimbYkNDJMw==
BWvuZPuxO8LzjGvIEF/N9aobIA+bmycFQSobM/wlSktvkTOCjBlqh8mNNslPeKwY
vU2L0bS6L8+lkUFGpSi4jnRNQFHJhuIPha3dlyBSWRIGaG6s+dLGunGCjdxje6NuHwoeM0HwWJFTzrMy8LYOpfrkv0ZE1sQ96G2T/WQy78I=
5OqvAHYlpc5NprsFuaA4XSIoOXT653K+4RgNTeiW+kUrjXZxnujvPY6D1AiLb5vhFjcpMuu6DJskGJK9QEPS1w==
t6Duq0tTp6uxgzWXC7S7MGjScvgtsgliXErl/xQRKqACcpsLFjNeiAdevlM38cM7
HT3Cw4l+gn6EltlXJ/bcgCCt6wLh07HEbIAZoWJaNbZJAz0x+hbAjIqbCobBV9oL
OXg9TWqvRVVy6t0Fl3/CW4VoovJU3iaWtG/bfSeJwEi+Or+SPDI4EoyVtEP1nK8L8YZ5UsDZoAEXCggdHbOM4ic1RI5/zwEGp6+M12KNU+Y=
BHEYimDHdBzRGymX05YuLLLQTpvXRwyIFDrZ+qVRD7NzvoPLjfT8dPQ558N4NxO5ift0oZKz1NHpZu3Y6l4vsuH4ivY66tiCOS7nx7xLiRc=
1u+XjG/2+GSQRv6EzCaWRQ==
Z8WuTRZSFRsHW3aa8lgQG6+7wajU3lzQRwnXYBZK+gs=
MzOj4ZiBOJDNVP8vi/lFQDBqzCSbwe3eSC2XpJYZuR0=
I5csN8e3J/KIFkMa5t+SJFqUBmdy50sNG7fX4kmottlaB8ygSezryZ5tej3k03Lbu7NZH/6lTvTxtzW6r/euCA==
jeIEC1EpbVvHxN3RayyUXoov7YEfYKmeXCp+aXfv6iswjMfc/ZoVvZgnfnUZfpw8KYYhsy4It6JjU9H6IzuS2Q==
1u+XjG/2+GSQRv6EzCaWRQ==
Mn51FuglUVfOuHVv9JQc4IeueY7J6JVetbrQzXDiAkU=
S9tzajN7j7km7OLOHRXxfbD3aS2b67+3TnwevM4yyFM=
1u+XjG/2+GSQRv6EzCaWRQ==
BvuIDKn5qO8+lMEJox45CCGay3qNuqyisNW3P0GDExc=
S9tzajN7j7km7OLOHRXxfbD3aS2b67+3TnwevM4yyFM=
1u+XjG/2+GSQRv6EzCaWRQ==
bH9iS7BmfKTTQ5e5cIHrV+NToa+Qu0Q6miLpIDPC7OQ=
yzGIypvlqQMdPGM23AimC4Y7lLLHmfrBJLMATAMT1jY=
qvERI4kQO4j4/zOld+9/YN+DgG/HsbRkARSc9yvK7Rgu4vvr8lQNGMzQg00VlcGs
n+vWyxFDQEoPBlVkcoK8wY9pKSF5GTVfw5dP9KWL9Mc=
phMO04r9c2TpV77xvulO8olIRtWLKeomLU5UTTbRBIetGFH7WQDRuLS0dY7VBI8D
L0eUthVnpkGsmKFAX6d+uMfCKxbeZE5XF/T3qfhxdVg=
30IhoJmMO5jRhA3VbJRQmB6ToKN7423V7Zz9rtNDRtDbv0huA5RFJOjJUQd/GggiPU0KEuQ2/9BXIKWQGmNG4Q==
L0eUthVnpkGsmKFAX6d+uMfCKxbeZE5XF/T3qfhxdVg=
VMfVrQporTLzVAs+KagENs0jVofd/mPyGKFNcwoEK/8=
1u+XjG/2+GSQRv6EzCaWRQ==
bH9iS7BmfKTTQ5e5cIHrV+NToa+Qu0Q6miLpIDPC7OQ=
/ERSgQcForolvZ/olj9P2J0oecx7/ZPYGhU+aWn0R4M=
Z8UsPk1Q7HtwjRd4g01ryw==
gFnkB/kvXZju5AiJuCf+wqR1SzdMfuFFTSyEiDYcNgc=
Z8UsPk1Q7HtwjRd4g01ryw==
1u+XjG/2+GSQRv6EzCaWRQ==
y8GztpG29fbJjAGhUea3TrxqjkSXUN9MvoVG8cO3pRQowb82hD8hO0z46C+6T0JS
J1UGlXkKhKXD36OrXXhN8OGjxwDG5fPAuMLvgyldMRH5CmDS9k1N8MCQOCqGr9cn
VmVrGQo2zRokW/ZuO9bN64V00EWriC2HeZB5atCMSN0Oq40WOKxh3L5/ZcG0Tqrp
VmVrGQo2zRokW/ZuO9bN6zVOQsFldSKG4yDBE71ttl96CllKkjjneluNPONKAjZzSUURgj/X/N390qBPiN8H2bIxI4vyPndsvXyyv2xBx9+ljzY571rAGsV5aJI7Wn6kU7R8Ik+cX62uj7L875/euA==
VmVrGQo2zRokW/ZuO9bN66+yo8koaMFaeR72YfcN0MA=
L0eUthVnpkGsmKFAX6d+uL9vdbKWfpYY4UwNu87oYnIgCCtJpi+e8uTrhSRRsXcI
1u+XjG/2+GSQRv6EzCaWRQ==
3PYuJCOiZH1sjGKjxSVU6D31QXsJoSCnKTCthZn9WKI=
1u+XjG/2+GSQRv6EzCaWRQ==
cFjvq7khV9Wwxu5Xsu1OwE6rqE/QbsZSfohcUck1furKNEhCeuEX0n+AzNJriz3s
pIUZFpQ6AEp3EqJkh853OQ==
scFGRvJLbyFUFJFhXxK/7g==
hr/CdmsTrSwwnDag0nO6djQNyM2O0QtEmAwfF3wkBOCYf46nzxF0XfX6LWmo8b7e
Z8UsPk1Q7HtwjRd4g01ryw==
dp2JSHgLAi/+qB9QjMonvDoDDgmw7TQ+VmwqyAK+LYI=
Z8UsPk1Q7HtwjRd4g01ryw==
Queh69oTQpHgB8oHSen+sXMB1SZA41AKj6SZg+n1i5iZuLvbE2I8OoItcfYSnevK
vxZRPtvgnx9GXrXB4G/UM7IfKa9jalAOIgbRGI+hFwI=
YY5wEo94l9qfo5TPxQmUglcthatWY50UyDlLUc/NWOY4DuDfSHYIXazG6zJ3YJrhx9u3ySkmLkQ4MCLl0OwlOjy2I0AtdBvPa72TeULtr8o=
1u+XjG/2+GSQRv6EzCaWRQ==
p6i8iK7HDbvmLpoFrhNyv2fudIvUzHqiOoz+6o50+l9i/GjrKQz43HTTs6561PL+Xted9awLhyglJTzcj3yRSA==
+plE/1bhdo64kO07cLlUX9277xWI3fuZoRZ6wJ1QVi33hEmWDKugYPB00y4OhVFi5PhHDFqTssbIi5b4uZtyynS63ZWzr1PB4byXH+2GF50=
1u+XjG/2+GSQRv6EzCaWRQ==
bH9iS7BmfKTTQ5e5cIHrV+NToa+Qu0Q6miLpIDPC7OQ=
43ikdhh+5nkUbDn5nL78q8LnMapFD0boPFqgCFKoysvxZ+8ILFxEiQVEWzk89XEzsimUjSB4LYqSGlsqh2Pk5Q==
b4OJVZe8QyIpjuTpKXDL9A==
u7v11solBPjrBcBVo5sXZKa0LpFHkPHem+adL1M8yWUk7hPYLyRYI5dSZfu89nCPFPhf9NUU94aKkPNU8gYh2JmP1tc/oS9IkhZdXyrRhqk=
V/9ovtRa3Br5aRllRV4LnikxvtPDn/VfIaEjdloAndo=
VmVrGQo2zRokW/ZuO9bN6zQ8lfGYQLJLsEAO5/VgB/KBzegjkQXb1fTWX3fiZAR+
VmVrGQo2zRokW/ZuO9bN69NkBUyMBfBaQjuzLCX3qKuawhpa7JXLStnSrF79XmOB/Iy/PIfx9Dwo85xBfuIZyg==
VmVrGQo2zRokW/ZuO9bN68SkXjAYXGs5kG/vlygx3jWXXNMH/LEYeAc7jarwy3YGpbk9yUbtSO06rvt87svzZg==
VmVrGQo2zRokW/ZuO9bN64MOrrpglm74FxB9UTMyfzJ97fppIJ+DOr4RzryX1EKaiPBcimbU09COIwoK8uJOVA==
VmVrGQo2zRokW/ZuO9bN61c0oXd926JMXR8YFqrtiGeGiJuAxGg5kSa2xwsgL6nj9GUleR0SDCQe5/Kci45DwQ==
VmVrGQo2zRokW/ZuO9bN68JHGZIO/HvwRyeycSUODzM=
1PNpySato8UYteTtqAx/0A==
mfT8DrNbUmxQ2BnZ1bZFTLh9MEuZKOpmAfF70OnZ9TU=
s6ChnXH5zaR4nss2Jj7ULBibRmB/kmin0eYU9S2eTfU=
1u+XjG/2+GSQRv6EzCaWRQ==
TQk1Y2cUz70rESNPqx78tW86sy3auA9+sjF/brj1IzA5BPnC/CGVtd0h/X82RZ6dT2sByDS0lbhPpT37I+JDEA==
yBZOkXnzauCHBf6JZDcSuX6IAWVFN7f/mLHp2zlLvTjiyLdy/A09yK1k5vWnjzBR
MzOj4ZiBOJDNVP8vi/lFQHopeMAQrm5OS3QYAx57o/zaIAPx0EBRpe2B1GoPiw5F
UQ4Ha/xjCooWJdhHec9cB+SI+OdmpF1NlsEvvFMW3DPl5oYbDHHuVE3zN86x1gQJ5UesCIEO75jZ1kwYhqqMmA==
VmVrGQo2zRokW/ZuO9bN6/68eCYO2omsHIYsjZDcD4589lVyxldufbf2a3rRLfam
1V2v8QerKOmubvSxgB4eTAn0sVnJYYY4qW3Y/IeO+WqkU7OjQEsKAQfYN28mTGGZatkN+Xv314Igaq3VBKIUN8rdQOQ2qWAnYT7EeEK2Q0gkmTberTB3TR3n4IKcSuw2HqK1s+ChhUMFoNnrmja3ag==
VmVrGQo2zRokW/ZuO9bN61igcThKylSmie1kHx/iwtTlCbD44ijQhW9E44yCKM2b2NCjZqWm5xgqL/l1MiN868Q0oExprKFbzNDGqHC+6Tk=
dMN4IwVNfE/ejzRqKTPgxrqzkFILPP9CN6C33s+bo6Y=
1u+XjG/2+GSQRv6EzCaWRQ==
scFGRvJLbyFUFJFhXxK/7g==
EOltPINEyhRTwmwvJasndR5zDhf7NoEK6OfvkgnGjLNCyc5VhmCVgR7jmQfUSHreDsXLEUCx8k1FTPKQb2fxsA==
Z8UsPk1Q7HtwjRd4g01ryw==
D3k8pma7ctU8MRwBTlo3u+wHXEsgeHVKcXZD0oQey68=
Z8UsPk1Q7HtwjRd4g01ryw==
cJ3FBg5cODpJtRaDs7LjmGI3TqIMftB1Ge/ZUr6GtXw=
L0eUthVnpkGsmKFAX6d+uE/CYsJNqOMjxonFB46aPvJgPcrGiHlnxvGuvzq6BGsDzFZxm7R3RCq0ZG8Yz9NQcfMh5rnpMqBxckLax0QYjBA=
rFr4agiabJ8BBy9Nj19TNiuOvW7uYo6AMDpKLUBnndbcOcGEJKwpBoF2Cuh/82/P
Queh69oTQpHgB8oHSen+sX9LQslkLF01VtlnvO/Fovs=
vxZRPtvgnx9GXrXB4G/UM7IfKa9jalAOIgbRGI+hFwI=
L0eUthVnpkGsmKFAX6d+uE/CYsJNqOMjxonFB46aPvLD6hgpfwDXNiOshAbmFwtL2svS2jQo4+3BhgupS9yq4NRBNdNqjkG3pp7qGHHpu0c=
b4OJVZe8QyIpjuTpKXDL9A==
lOh2GtzHjjMM8E9J40AuOeXKr7tZXQgCN496lOPVXVYpTpv6yA4LMAkHNkzehtPA
VmVrGQo2zRokW/ZuO9bN6z1Na+n55NoVIUEPKe2xIdIueSTy4qGeqksNkR6Fo921RrF6zd8SgqjC7ScHm5E9Qg==
VmVrGQo2zRokW/ZuO9bN67JmnmwxM3vUU6Uoq4f1x96f+bz0S+1IYRxnU2iyM3Sl
VmVrGQo2zRokW/ZuO9bN68dLTx7VnwbTY3zt7pXwV37JK1ZxzqjLL35AeqfPXaq8tLliSajIq8fhdfI3UECFJX2if3T6QCVpKjPqm0uQstU=
VmVrGQo2zRokW/ZuO9bN6w7usdRmWBp2/Ytsph7xCbNM4tVLJNpW0BGHg2EenNLdcjc0FwnT9DE/U/a8R2ebAQ==
VmVrGQo2zRokW/ZuO9bN68tMEA0Bb/DcioLq8AhCuRkmP2MfBFgvmFTuHPIN630l
VmVrGQo2zRokW/ZuO9bN6wwnK2mcaiEnNpwMK8Hdl7H6BI831+/GzGxUKVK2F230oKzO1q8ZKTphJQxmrDecbA==
VmVrGQo2zRokW/ZuO9bN67XxRUsor6I/ucv6LMwNAOFYyT/H1bCvIM12FMyrT/KUNwaqYbCwTvmhGbTy5GNFRw==
1PNpySato8UYteTtqAx/0A==
UbJuac0dxLiN+5ocS3w2vTs5oUaQBmfBa2f56QezBB9QIoduOdZk+AbqqhWxMam8
VmVrGQo2zRokW/ZuO9bN6/97GYsqRe7HMOpj8ngfDXVvvkiAiH0r4uArOl/e8lpk
VmVrGQo2zRokW/ZuO9bN67O4i/Ajx215jhhMM1L8LYsGN5DOBVv4Qkv1alpDRM3322DTgVJp/Zubak13IDYcKQ==
VmVrGQo2zRokW/ZuO9bN6/2AS3yPpTDasjm5DVgiy6ZWbtbEHHkKc/j1XxZU+NCX07KM8dRYOlZO2kxkSD7FOg==
VmVrGQo2zRokW/ZuO9bN6/6YRBfq55CIo/V3o+xTpV4le1x2Pd+EELIPvNipTlhy
VmVrGQo2zRokW/ZuO9bN62lMh/VvMwaCqOFlogYnTW0nVFRwmtvLBZVf0fV3l1CX
VmVrGQo2zRokW/ZuO9bN66wmtriv6QXeuDc39FjfymhudJIBLwvAsHeSEA9VrAkxBwj6IdBZdiY9uW4g1TEGBDAIN7Lh02LoH4ypU6UHr9Q=
sobCGpmMf4/g7+HpPqBjC6hatZ6rUY3AAzqC73FJ58Q=
VmVrGQo2zRokW/ZuO9bN62lMh/VvMwaCqOFlogYnTW285NWIYj0JpXKOgn8VNET7tM6PG2PWNRB5KxeM6wuxm7zmLFGlfOPZL7sJ7CTkibA=
VmVrGQo2zRokW/ZuO9bN66wmtriv6QXeuDc39Fjfymhh1V6oDvIzFea05q1WLQ48+Od13DO6p3UBTVC/NrGq69tQklX0L/b29fs0vAUt4oQ=
A50UO/kAI17YP7MCbTvBkFQ/jf5eMs11PzZj1m3IBsQ=
xWoGNWjKGPfI4gq8aHoTfIvfbUwKj1I4bsha5pEzCn/2gexripED0DzTPhIa9+VK6XGnHECWWrknZgZrWn+xZWIP9EvVjM6PUq6rlmov/oM=
L0eUthVnpkGsmKFAX6d+uE/CYsJNqOMjxonFB46aPvKzkfaTStZceprPnYdil47PvvMYEz4E5FH0y7w+P94+dbOW2Qrb9eG1XoNuTYZMlhY=
1u+XjG/2+GSQRv6EzCaWRQ==
scFGRvJLbyFUFJFhXxK/7g==
kv/50/uB/WVz77xg5VBGlKh+n2eMT1bPAJGPNd7j89WSg7DI+eNAUWkU6CdLyrZRuhiobabb0gdJwOTNMUL0ig==
Z8UsPk1Q7HtwjRd4g01ryw==
L44I8rdaIsb1gsoD8hyyo6ySMZ+67O4u7VaFjoPFlMk=
Z8UsPk1Q7HtwjRd4g01ryw==
Queh69oTQpHgB8oHSen+sX9LQslkLF01VtlnvO/Fovs=
vxZRPtvgnx9GXrXB4G/UM7IfKa9jalAOIgbRGI+hFwI=
L0eUthVnpkGsmKFAX6d+uE/CYsJNqOMjxonFB46aPvLD6hgpfwDXNiOshAbmFwtL2svS2jQo4+3BhgupS9yq4NRBNdNqjkG3pp7qGHHpu0c=
b4OJVZe8QyIpjuTpKXDL9A==
vF6cvI2zz3yfLrz/L6DzRgGv6XsDcN9sVB3FwfA8MLzAPAXdCZII/EXz6SO5EOOZ/oHTspFgNlpnBMjqQorNIw0esufjJ0EijX6b26jL/nU=
1V2v8QerKOmubvSxgB4eTGKfRFpYq9tDAXrYQaJGbtE=
VmVrGQo2zRokW/ZuO9bN66wmtriv6QXeuDc39Fjfymhh1V6oDvIzFea05q1WLQ48wdjsHPXiUeZ3BBDPdJjNsYJ+kQu1/RLFskDtmrT8Vac=
lOh2GtzHjjMM8E9J40AuOct2JM4l62k01Midr9RwtFN15QfLkh+ztms9US5Qplbo
VmVrGQo2zRokW/ZuO9bN66GrRcKEqMMASOG4UwqbpagQN+C+56g0JRYmYJHmHteb
VmVrGQo2zRokW/ZuO9bN6/k57XMRsOCrXNv/zDBzxwauIuRowWVJLYeVVrljWfZV
VmVrGQo2zRokW/ZuO9bN60Y2J8kd1prOhaMuW5Zgk6k/Eeyr/PTIANiCyequFuYg5txg0eX+6gQusHuUImjUqA==
VmVrGQo2zRokW/ZuO9bN6xXeDXtlW4zUQSIYENuuMaMF0xrzhv/7HemP/hvv52Jr9RB46gVQUDHqkSBy/isUog==
1PNpySato8UYteTtqAx/0A==
oCQ+R9TVccVZ6EH4ieVaYz9eAioZocsIhwZeZ6T6EEogXhK2sP7VKa6x5R7ZvRRy/oc4iambLY8y7ZMorRljQ4G2TjWfbOD0ZyaW+cxeE+Y=
UbJuac0dxLiN+5ocS3w2vTs5oUaQBmfBa2f56QezBB9QIoduOdZk+AbqqhWxMam8
VmVrGQo2zRokW/ZuO9bN62lMh/VvMwaCqOFlogYnTW0FBW5l5jhWkA2HzS2kps1OZV09hmSlgfveXb+m17gx2w==
VmVrGQo2zRokW/ZuO9bN69RObK7qsAvOhoar2IfE31+EaRHuZS+Un6DMnxjUqmfM
VmVrGQo2zRokW/ZuO9bN66wmtriv6QXeuDc39FjfymhudJIBLwvAsHeSEA9VrAkx8hFpemciXlM0irTWB1sf02gZLDYKM3klqX60JGY/GGw=
sobCGpmMf4/g7+HpPqBjC6hatZ6rUY3AAzqC73FJ58Q=
VmVrGQo2zRokW/ZuO9bN62lMh/VvMwaCqOFlogYnTW0FBW5l5jhWkA2HzS2kps1OuOZYkyjYrjO+N3127s9rhDCN5/PmL0nk+yf5gaaRI5t/GZdM/Upl1T+Mtvh+wyIA
VmVrGQo2zRokW/ZuO9bN66wmtriv6QXeuDc39Fjfymhh1V6oDvIzFea05q1WLQ48+Od13DO6p3UBTVC/NrGq69tQklX0L/b29fs0vAUt4oQ=
A50UO/kAI17YP7MCbTvBkFQ/jf5eMs11PzZj1m3IBsQ=
p9oVsBgcyiBMjDb8CcPOqL5s/76MTqY9EVKKWY3DZ/M=
xWoGNWjKGPfI4gq8aHoTfBVO0rtzJGwPNNCAKcvoQ7YGnBVlRRzBkPuuYdnd1drISaN/5vpFnf0ao1Hkw6ztew==
xWoGNWjKGPfI4gq8aHoTfPV4EyHLkgDenUbRbcll9138lE8RDzYbmt1+pKWVIIMUCM3K+F6FYcIug9BlaZhcaA==
L0eUthVnpkGsmKFAX6d+uE/CYsJNqOMjxonFB46aPvKzZevKNGrBXIblRxDFpGOx4kfvcACinPVB19YHIkMzrVjkxDzNTaadggbL36taA1Y3C5kmupHYWT2EnbrIcYuS
1u+XjG/2+GSQRv6EzCaWRQ==
scFGRvJLbyFUFJFhXxK/7g==
eexlkq8uGpRXCn8INqcasVZnx+HQDSAS/yjuycd8XEMYpp7eXJwYDUqqwntjdjQmD3KkoBK6MIyvUkSDnsj0rlqPcMQjZ6MNuNrt5O7Bq5Y=
Z8UsPk1Q7HtwjRd4g01ryw==
6cfEyenqP4uwsPEI5IcoL76/3EIMnWQalovFskPmqMM=
Z8UsPk1Q7HtwjRd4g01ryw==
cJ3FBg5cODpJtRaDs7LjmGI3TqIMftB1Ge/ZUr6GtXw=
L0eUthVnpkGsmKFAX6d+uE/CYsJNqOMjxonFB46aPvJgPcrGiHlnxvGuvzq6BGsDzFZxm7R3RCq0ZG8Yz9NQcfMh5rnpMqBxckLax0QYjBA=
rFr4agiabJ8BBy9Nj19TNiuOvW7uYo6AMDpKLUBnndbcOcGEJKwpBoF2Cuh/82/P
Queh69oTQpHgB8oHSen+sX9LQslkLF01VtlnvO/Fovs=
vxZRPtvgnx9GXrXB4G/UM7IfKa9jalAOIgbRGI+hFwI=
L0eUthVnpkGsmKFAX6d+uE/CYsJNqOMjxonFB46aPvLD6hgpfwDXNiOshAbmFwtL2svS2jQo4+3BhgupS9yq4NRBNdNqjkG3pp7qGHHpu0c=
b4OJVZe8QyIpjuTpKXDL9A==
TgjK3GrBHwrMgSgUIZQiZ37QoufmjLXixR9YO0Rw5W7dqeHylYvSlaeXGAwqcLBsditOl5Z4P/fQifX7bC+R+VsiZo9SiGEwSGB8gF2fsWs=
1V2v8QerKOmubvSxgB4eTI0FXeMKI3pSaV/LT2t+1XA=
VmVrGQo2zRokW/ZuO9bN66wmtriv6QXeuDc39Fjfymhh1V6oDvIzFea05q1WLQ48wdjsHPXiUeZ3BBDPdJjNsYJ+kQu1/RLFskDtmrT8Vac=
HUxaWbdFNk9pZ+7x3i/kLAKFdmesS9Uort28f2HsScJvCL+LQCAEScGRAH9L+S3v
VmVrGQo2zRokW/ZuO9bN69HJ0xQmTlQJpowkCla2nhjRq1jl2n+b/YpLjODVkQpQ
VmVrGQo2zRokW/ZuO9bN6/RccNabSpD87nRBP/0qGqnpN9zKysiN+BjLA+HzfobG
VmVrGQo2zRokW/ZuO9bN62afOUIvBpZyA4oI4XF4NRePSEqjx8AtWMLn6HU063bP
1PNpySato8UYteTtqAx/0A==
7cEbnfYJ0swaXxvbv06hMLBujOBV1XKFN4mTMUm+VYEBBvWkn+U1pRQBi556LexX
VmVrGQo2zRokW/ZuO9bN69VcT/lVejV7vAEiIzLxUkpf7QTHFZhNGhPV4MljgENmJTjAhaKFI4ug6Ssr8PpeX0zhD+0tKTCuad25J52hAHI=
VmVrGQo2zRokW/ZuO9bN62lMh/VvMwaCqOFlogYnTW2fdtnJQe7iYLvdjIihDZXJ
VmVrGQo2zRokW/ZuO9bN66wmtriv6QXeuDc39FjfymhudJIBLwvAsHeSEA9VrAkx++zNjAcoObgMBg54qp/s9/0KlMwi+tb8fp8jUb2iHUs=
sobCGpmMf4/g7+HpPqBjC6hatZ6rUY3AAzqC73FJ58Q=
VmVrGQo2zRokW/ZuO9bN62lMh/VvMwaCqOFlogYnTW2gyam0moXDUB3o6uA6DqbvDBX00mP4x5pqcqNzF7yq2RaKItI50dDtk8Z/tPZiDQQ=
VmVrGQo2zRokW/ZuO9bN66wmtriv6QXeuDc39Fjfymhh1V6oDvIzFea05q1WLQ48Se9rEksx3s52bU/ZSaBKQVuewixSWRfDZEA+quDd3A0=
A50UO/kAI17YP7MCbTvBkFQ/jf5eMs11PzZj1m3IBsQ=
p9oVsBgcyiBMjDb8CcPOqL5s/76MTqY9EVKKWY3DZ/M=
xWoGNWjKGPfI4gq8aHoTfBVO0rtzJGwPNNCAKcvoQ7YGnBVlRRzBkPuuYdnd1drISaN/5vpFnf0ao1Hkw6ztew==
xWoGNWjKGPfI4gq8aHoTfPfjsRNmmxpVEZZUPhOiYQ388MuT/OhaLgsgbzpoiIgD3tGkcfCvz+viEB+EPMx7Bw==
L0eUthVnpkGsmKFAX6d+uE/CYsJNqOMjxonFB46aPvKLhvd2lXIovvyzqrcxURQ39//M2Am6m7Zq0+gN9JQz8wEdtYW6AlHLuAfIIxY2wc7JVDkC9DDGZg9XL6uTza1W
1u+XjG/2+GSQRv6EzCaWRQ==
scFGRvJLbyFUFJFhXxK/7g==
79IvyBh1iH/BWptYEbCsSw+l/05xnpvb8taIBfwVhlA=
32pdC9DD05OE2l0oXazDFCypMhcpH9yyOO9aXIRvgk4nIrUTMOQP1VUtLhh2Qs8C7Uj7CxDiU96GDGuaBaQpJFreeSFUS9x+KIi1tebfRgE=
rmWbXEYcn1JoXoqvrcw0Ax5u+j6voX+vjnyZQ3y/0K7xKcX68tWzRif4KcsRBc/ehSNJd2dTfRzNcG9gyTsoc7S7zeSbBmWhXmcT0z/u3ZE=
7JBtZSqxINOhomB6PtMl4w==
Z8UsPk1Q7HtwjRd4g01ryw==
o5CXq607ui2AXZFiPPSm5DTi/lDrXrMh4roWMjF5x7G/hG+u9SXprjgPCl99jDdz
xv0E2BEGuFR9xpkg1GpebC5Mw4w+QP5WpHEN8hJ+ujjVgXeQKrVGqLUq/9vgNJ2c
UNiwuod7jcFV8Mr1YPcvu/bBgIbyr4W9tRYfkJuniZkBp8+PlmqW93msLukzbRdG
7fBvPEAf72Uv1YEDXbbQ3GHn2n2N0iOXJpiUqmr4xKxGkf0kf+Gl3e/RpB68c/AH
l2Mwyqb5czoRIx3E7IVjn97RNcYJjT99lGke6a4fvnWfpiSXuF4uOeyDU4g0dhSn
Z8UsPk1Q7HtwjRd4g01ryw==
EnD22Fgwsb5+6aOmw2vGI7WFLsxd/aYl9GspieXmZb1ohzXOBZ7pUGdLZ+aNQhDd7qmPiU1ugVtICPRLbMFEPw==
vF6cvI2zz3yfLrz/L6DzRlxe1WzV/jFcyXtKiUtpi94QI37HnN3ELjWt66M5y8IY
Jb4r9oxByixCSQnoAVel5zM3O+lRr8FVjiw/Zfbo1Uxkf6a3W16C++e+YYAcK+kG
vF6cvI2zz3yfLrz/L6DzRlxe1WzV/jFcyXtKiUtpi96YYR05crd9F9EzmFuiOnMLEsJ4gEE8rBGQjUUsabQWsw==
wviPW+SHXn5CELvbZpyCzXaf+8hOdlEUp8Kf7beoVaGptcVMa6wz+OdAtXhlhXWK
1u+XjG/2+GSQRv6EzCaWRQ==
MJhyS6JU9NMCoO3FLI09wWm5rQoEwyZDweUqxlO7le8=
J1UGlXkKhKXD36OrXXhN8A2QLQQNKMa2eDA48OePEM27WxSwGnCwCMrUH3K6df8c1n0TNWB+Q9RAIIq7w0H97RYN/ySmjX4SnywCtL6E4QrM9QJBJY2vcGPOR57IoGf4
VmVrGQo2zRokW/ZuO9bN68n0d4pnw/Gyazh0y52sqN38FQrtZvReDP7dDIY3IVqhqAWUv/DBYGfqXL8HQhgp5AQ9M3ooXg//KOBKqHpxRHYjQEbbsLdv22tnQK8LWovVwL+MTOK8Vy8fWNhdpE4CYQ==
VmVrGQo2zRokW/ZuO9bN68iybrt8ScY6aQlDmfS7eSM=
1u+XjG/2+GSQRv6EzCaWRQ==
1V2v8QerKOmubvSxgB4eTM3nFGP2pv36EbpHua1dkNEKZM+WR44pM/Q4hWbZVWANCz9FqKYzXHibU1DPK2jqziHQDB+SqVAszH0+uWENK1E=
VmVrGQo2zRokW/ZuO9bN600CY+Pl4RXHqvTvXcSJqwzjKI7eZ2px5A5XpYClVOnU/QBPp3ryyqXTzEHYilP4CBLjXhnpfivnRkF3QuK4qVs=
1u+XjG/2+GSQRv6EzCaWRQ==
EWThbuR4/GG6BaYM1OCFb3bv9HOz9LIfzuqOQqjxQjg=
IPiIaM3loJH/LrwsXAD6JR57bAuyhMd5YJ53KmFEk70=
VmVrGQo2zRokW/ZuO9bN64WxM/pNd5thHviCMBpKZs4=
VmVrGQo2zRokW/ZuO9bN658uRBnDzEbxfRqjFqf0/sEgxa0roa8qENsM0q2RUrdjqHMMRCVqK6lR51VKXfthsgl6ZgcQUE9yVv8YpC4PQzg=
VmVrGQo2zRokW/ZuO9bN68hmK+GZFoUEyyTvzmGHcyCXwnKi9i+5unj8dnKHVI78
VmVrGQo2zRokW/ZuO9bN67cn2xZBq2mylKTJ767KHJq6aFsyNPRK6lBTxG+BdGmk
VmVrGQo2zRokW/ZuO9bN66dGBN8yLxa+guyEY/rIein/vfe5jR4i2YuAR6ZKla/h
VmVrGQo2zRokW/ZuO9bN64Z9VYe0ZCMDnV/kgx3bNGE=
1PNpySato8UYteTtqAx/0A==
1u+XjG/2+GSQRv6EzCaWRQ==
scFGRvJLbyFUFJFhXxK/7g==
6+GHIx8l7M1CVhQ+mt7BgHoVqGCg2vXSD0QkCOEZtthI8/a2LCCYty0vikrEKjlz
99QMXC6zSRGnVPAZwSGq0kOrOwzaUo71IM47rv9w2uKBiPV12VPDuxQcMVwbTh8qyqa3HDnir+9V9JoNIEkJDw==
yk7ywnYW1f5ngW+VTtX7sPxxx0y/SJsMj9PyDgNJ9vTupDQPwiLtAkOWgy8TsEZ8pfU2S9p0WthqPMPB5y7BNg==
cAevqi6UMbgIiPjZHshgqefGEYf78Ct3voTRU0od5hfsZw2GaPxr4aZJh3KOfotf
1u+XjG/2+GSQRv6EzCaWRQ==
gwJK1/Bbbbd52Un04TIqalWNfsdq7+w54OSC1lDMpSg2Rh1+jMXyhUy5ymnXEylqurvA/cwv1sNDLCVLwWHmjb/cGSAX7gijahoDC/ZYRzo=
Z8UsPk1Q7HtwjRd4g01ryw==
sraQdlhjoSfXtw9GWvJ/Y1tke4LlBD1v7iTQuzChm5o=
Z8UsPk1Q7HtwjRd4g01ryw==
vg0Nx5F2bJ3QU7xaXh/U/u0m5BLSrZDPehJvAsCBVfJxlVrqwtopbci5kWUvi/Yo
b4OJVZe8QyIpjuTpKXDL9A==
rmWbXEYcn1JoXoqvrcw0A0L0/8w1anG0ay5fA3MCVSY=
VmVrGQo2zRokW/ZuO9bN6z/0tPo5ZWJQ4Vm+Dbx6t/FHlv0FwZN8q3HZSTIaWPJD
VmVrGQo2zRokW/ZuO9bN68F18rKYJsKSFTCyXZ9HNpuaQ0r3cRICrExn+UaomtTQKZVGbev7Xz9be8TrdY/BJg==
VmVrGQo2zRokW/ZuO9bN69bacfnwlLEDKegMP8ORcwU=
YH231WTDnzQG3bFilBiqIg==
L0eUthVnpkGsmKFAX6d+uEm59segJ/wU7Snv5smJqHeq/3hoRnADAYiSbzdXtTqAre12UDagJ6byrfnk6WEhGw==
A50UO/kAI17YP7MCbTvBkFQ/jf5eMs11PzZj1m3IBsQ=
xWoGNWjKGPfI4gq8aHoTfIvfbUwKj1I4bsha5pEzCn+5eZGuG+APefVl9gH/+7NwJAjETGpQmCWaMiI99ycFEA==
L0eUthVnpkGsmKFAX6d+uMq25m1vOsGY6uP5qR9ZDEk=
1u+XjG/2+GSQRv6EzCaWRQ==
C0bSgSb2pPqt7Di7IzLIC32+WZvo5deqtBEBEO0KzJoQWJzP8UYT99jwG3IaC/H03bpL4QWrT6xmFp0h6CSQ4w==
Z8UsPk1Q7HtwjRd4g01ryw==
4na8vZlaw182gS+f9Z3g7C6RtjQeQzXilqZ/n6JCehs=
dY4KBvoy6P950RQXZL6GYimJXkboo1NBcmoEMXba2s+OhLCLF5fsQCIiF1E3oRqDnkoY1koBc3SPKrOWxkVoIw==
Z8UsPk1Q7HtwjRd4g01ryw==
vxZRPtvgnx9GXrXB4G/UM1m/yq1fANOfgxBIymkrDmo=
gId4sld6XXYlD0XJxRJG98hGjYg0G1Yr8o8ltzc9E0n9ZmBFirQvOKLJgxLfVdWw
oaXAJv72TZMsCREPboeytNj++QTEPiD2opFrA6A8P3MD81F+yG48wrc0h0F8Qvz0B3OA9iNPxRLV+6WirKjN0PWd88Tj1zhPefWACBgYJYg=
2hZYMRnyFax0P3xhMuL46zTn8WXdo+BuFoCq+d6p0jaLdzUUnbxtVNZ4nVEG0RlR
1u+XjG/2+GSQRv6EzCaWRQ==
1u+XjG/2+GSQRv6EzCaWRQ==
C/c8EatOg5VunEcrrPlM0NMbe4MAxE9g7ZQx7A2dEyw=
utYLmESYXRSSnYRP+ywpdQ1OrXTNdAedJtDO/MhMEB4=
PlGT4c8sCVmjiOTFRN4yGfvAq3iFO19gYmPtxgGTtfXBcIugNSB1a+azggmRd2Fa
jbXQmdOZfeJyMQFzI/ScysDikHRS5TrEvHG0Bs3I4wJJP5/eJZ6bZyKRaLpgPZ07jT8Wtmz4GDxAtMO/J7H/pA==
1u+XjG/2+GSQRv6EzCaWRQ==
Gi8NEWyMrib8G34Zx/m0YWYTjtgcV/7M8bngkp6WBqMug+atcIlJvh5j8sGxbr/Ma2uDXjBELdwiN7ECJRIcp68S8xx21YKu+fX07CWshTH6dBjyp4t4IZNM8sU7pji3
MaRfsvvjAENQaSXDq/qWQFhq/O1p8zfulu/HktszllI0nJ2fnS54O/UKgAtc+ewPG+R9Yk1ygy6D8874NIGMCg==
WcMdIw3jLmAX6+Zx+QZgpB3BqIDrRvn8Gv0QhsxJANcE/A7IVotjjD0SuVzlq8WnPa1utmiLbKlHEOgvLnRUkiFiaRxsnaxYW/RbSnfHCZU=
EiRTn6prMCNHRKqna3k5L+wCKORHp4dtMnlRLZjdq0iMn0gKl6juZRisJ+faZ1DTs1nryjOYp2a4Esjy136ZSQ==
N0xfC28Y6mIHIf9U7AWC9RIGBCnBDwi4W4AE/jgEVrlUc7Ilv73KSwRQ4tp9WzZiRkrN4CfCpBmZlPbgssoI0A==
2r4Is5SAoEET8tTB+cdS7+aejv7D3F+pR+M47P5kpNn0+3H1NlaQgUr81NFutcMN
1GnL66Ln2uPm6+BeEGC6gGPVjQ1kExwUEqT1pIbl/yrGeS4h+57T846NDqS+RO6S2wG1VqPEy9qLLDgkh1YQGA==
DA0NJlQ+T/djyhzBvj3l6OSlENnTfPGkGLObREGR3CQRNHmByYUuknBv6IE+TYgfDyzClNU8gwMZPmPGuxEICQ==
r48BvwNKwke8iF2U8BoqsvLM1FD9V2yBTMgynLFHp1jLtdGEsyp6JJoKD4oFLU9yxKkmaZ3BQYrpnvEIfFnbHw==
Wr4izD94XSPn2HNicRuvCci6DoGacYGStaJ+2hzHtdGa98LicrgZNaTObTW3BFOnu1xDS9SW6Bs4CrNoOfTqrw==
BHdcBA1LmM8+trvU3UZy4z3mGx3WR8LSCpdejFzL9GodrHEPUEbJmIsweIQSLuf1V9ujJpVCorZSaBCG6b/85g==
yKuxibgFX7PDaPB/DYmDUPtJZdQeCCuF0BGJSCAOXbewxfqMR6YcuL6aKuW1FbQrGF0QQ/o3SZnpEi5CCqCT5Q==
s73b+Mol+11IY7EQI0YzEf+iNI5GE3p5Gv/2RFNW0oLWoxhpeuuL/tlaS9YgKdx9T+fOUXRRkRVpqpm3bzWVOkY5fV2k4NHzY0JPzQItFeM=
+DabA/UPjfMRXvWM2sxOhqqOraqL0dzbG4nETS39ejVVQfRcpmvFT5pKaDIWrl2e78f8rcsrpZFEesqddgNP9Q==
aL+13iRTc46WJrj0Q7liMR/QiSH32m+Njz60ZqdZAnHXdnE7Fc+Jg79I90npthWt2vNZe6SORRDP835NZyQY+A==
xjslw7K1ecbxTwca2n98GT+ukxlfm5zBz+wvYkuJ0A1tGkVgsfG1QecQkA5NjpmeBgHMkl1CXfZuXU1K7U3GuA==
OXg9TWqvRVVy6t0Fl3/CW4VoovJU3iaWtG/bfSeJwEi+Or+SPDI4EoyVtEP1nK8L8YZ5UsDZoAEXCggdHbOM4ic1RI5/zwEGp6+M12KNU+Y=
BHEYimDHdBzRGymX05YuLLLQTpvXRwyIFDrZ+qVRD7NzvoPLjfT8dPQ558N4NxO5ift0oZKz1NHpZu3Y6l4vsuH4ivY66tiCOS7nx7xLiRc=
1u+XjG/2+GSQRv6EzCaWRQ==
e0KzXByI0APlXUZ9Zzg8i/IVH1uistzq7MwtoaGxgpZ78Mh5bVkFML2KzMMwzYQIhJeJOufNZfMXVj/mWO80wg==
u+FIwsC6kUlI7lgim36XpH9c4jFjEmZg6QN+YAZWLlU=
b4OJVZe8QyIpjuTpKXDL9A==
o6QhOIN2Sc4SHELnst17uXcjuHhAAvWOvsffvErW1EE=
gId4sld6XXYlD0XJxRJG96RqO24FGsIGrdCUFBUmNaE/RLGWCzG6OO8cTBcAlykwsdVDCzMnoCMsKygGglVCHg==
JZGWrpvbDIlg3tUxGwenFwpomEoRUIAnIkXeYj8fL9RhkUgc67qEH+Sq8sQ3/IwKos+u7N1yFjye1pjnxK8ttA==
PWKGbNEPxxxpGpe8THO240GJbm4yJdjDxsCM/2BMw51q/hnoZLbgIr6tHVRaz+gWG3fEHKX5EZzaXNwPtY0Z8A==
VmVrGQo2zRokW/ZuO9bN67vuwcv0dchELXYlhxfpm4M8hzNHVaT7uu7GImZnrSgXBrEqk9R9QiOlfDH0ymw1tQ==
VmVrGQo2zRokW/ZuO9bN69b9MuB/5s97YRes20KCkzzVqnwU8G0eTICzaiLMDf4KHXRU5DNxSRqtveE6tkr2zaxz/ZUd2Oy8gJhuE84h380=
VmVrGQo2zRokW/ZuO9bN69V2xBGb+aTMeAtmVW70T2k=
VmVrGQo2zRokW/ZuO9bN62S4UJroJyOG2ieKlT52oNqqPOm1zgh1SxBu9SljGZC+HjlEFcr15y0u7nIU/ozyFnwnNhvr2nU6pKlkc8NYr95IYGQ/mW9xTcrDzkS22+v/QOxjZslYc4A7CGjJ9aQHgQ==
VmVrGQo2zRokW/ZuO9bN67aUWAd3RdneGu2f28zmecGdhPC+6DN/CTrKbNGoWFLGsNNkXhmgN6ckW9Jq72GNSA==
VmVrGQo2zRokW/ZuO9bN6xoN2jG4sMQnjAIgeFb2oC3HFk4lgYQqiWBjXfVG56labDdBy2DRLhoCb5mrLNqyVqh3aTAJhMLK6N/GGIAgwOs=
VmVrGQo2zRokW/ZuO9bN6/2xzbKmwrr62B/aNMqhkfA=
sobCGpmMf4/g7+HpPqBjC6hatZ6rUY3AAzqC73FJ58Q=
VmVrGQo2zRokW/ZuO9bN61s++F7vLdouTIyPiV45A2YGWSuTzFWV15Bl6xmuAOyBICM7+/4unw9el3k5/DYh/uV2aa5+NEnrgGQKU7M1Zhc=
VmVrGQo2zRokW/ZuO9bN6zHTSkiFoEco1cUG+FWqTpw+fNmuVpVPhyEAkvW3BiluyEQ4L/+GcKrDDs3hf0eMHA==
VmVrGQo2zRokW/ZuO9bN6zmI/VVUwZmtC7xi4ixuqqpWUWzD0IceKxMR5Q0KOYp7YjcC8OA1mtuEq/ah+Q7T7g==
VmVrGQo2zRokW/ZuO9bN609YTiXcinKmWC8LpkIHTuHwWqtTe+07Yi0sSKBesLzxyWp9lnetXHy7JyNxAysuKQ==
VmVrGQo2zRokW/ZuO9bN622UUiZ8Sw+yWp1SNerf4yY/bcKCOHQ+nRNjflHgsLZwbRTiloRRZs37mDw9Euhn0TQA8uqcsLQZQrpvANC372RLoZhIoP+wl7W0SdHw3TbhKW1FvjdSz25fX4HkhrdJlg==
VmVrGQo2zRokW/ZuO9bN62S4UJroJyOG2ieKlT52oNqqPOm1zgh1SxBu9SljGZC+96oJpIpYCryDG8ZWav7D4sa/5sIA+tGQmYP7qJSm93yHVEo+hSyOzmDBHl+0DND5f7kCF21fSSwxslUr5HiNWQ==
VmVrGQo2zRokW/ZuO9bN6147x1dkhbDeqs2uAuxfhFmqV1MUQe7ntuqK6FUrhRdWRI7MQzOdeckxa4Eh+ELyFg==
1u+XjG/2+GSQRv6EzCaWRQ==
VmVrGQo2zRokW/ZuO9bN64V7YlVi9OZSuQj05wtmc7bGbE86nxDn34A+AaD5X1WY
VmVrGQo2zRokW/ZuO9bN69QhRiY0bOLUCwwBnxs201we6fLnbbZxXgehNbVg+BnF
VmVrGQo2zRokW/ZuO9bN643IoWqUHL2T5/w9EP2ec3raoiIJ/flgnHJ21t1C6WoGP7DQNWJXctyvrGYpo5ytjg7iIImytKR71vxbINH3gk5XJfbEvJl0fHBFTKBOrFSTDirhrAENr9+nG0fuqCgZPvqJFYhdPcpMQ+emNEsYvy4=
VmVrGQo2zRokW/ZuO9bN6147x1dkhbDeqs2uAuxfhFmqV1MUQe7ntuqK6FUrhRdWiUDdGlXZ70EQEsD72Ns50DUXByidBuHyqnRW2tkYVnJBx87RzLqs3S0t0eLKJNZQ
1u+XjG/2+GSQRv6EzCaWRQ==
VmVrGQo2zRokW/ZuO9bN68FqoyFY2iSiOBEJt5Hw3bO/WpB7OLFWSPWkv3JYn5hDf8LL0L0sqF0dmBbykRbGSQ==
VmVrGQo2zRokW/ZuO9bN6yr91DThSjXI1bxcbeohj5KF29OKctTeIvtahpfmhclB5ZsZfgLUTYicijeLNrQrrw/JeEmjkwenuIXLr7zUG04=
VmVrGQo2zRokW/ZuO9bN66+yo8koaMFaeR72YfcN0MA=
1u+XjG/2+GSQRv6EzCaWRQ==
l9iZYijyfJliYI0Af4rEeUjdY1A47atjNpRz+oxeJ+Q=
1V2v8QerKOmubvSxgB4eTHbLIarp61lHelMuRRtrvZ8=
VmVrGQo2zRokW/ZuO9bN6wnamiISAarYBOu2THtGZh+ZESUwywkIxZSDEGtO0e7T
VmVrGQo2zRokW/ZuO9bN64Wp4e/dI6C2hh1jrdYBzi2M5eyLw6Bc2c0a6eNVMcJziO2Jw2pjzAJSGbhtIGQ8WvYdk0MUN/LzCfVCEXgWpnRmNtkEgJxcpbYolKNsU45y+PPdYIlFGZUVXnex9V36ig==
VmVrGQo2zRokW/ZuO9bN6zRxGnOxZYADIhAxtaAOI7fBzFAZThR4uhxAr/vr5t2d/dhkyznbvK7L6yiJEeS+YoI83Et5+UbdlX9K6pXG6xg=
VmVrGQo2zRokW/ZuO9bN66+yo8koaMFaeR72YfcN0MA=
VmVrGQo2zRokW/ZuO9bN64UvDkWObTyfzKVRFAqVCOSXUxjB845nG0BO7EktHLCQeVRgsk7LbMTSEXwUkEM/49PHhg6Zg6CfXGuvpMGb/rU=
VmVrGQo2zRokW/ZuO9bN66wmtriv6QXeuDc39Fjfymhh1V6oDvIzFea05q1WLQ48JyGjKCkgj8NKY6EuUblqTw==
1u+XjG/2+GSQRv6EzCaWRQ==
UbJuac0dxLiN+5ocS3w2vU23uODnvoH+efKEVvodADYZeAnt3rFmz4RdVUl+x7Jp
VmVrGQo2zRokW/ZuO9bN64UvDkWObTyfzKVRFAqVCOSXUxjB845nG0BO7EktHLCQrtpbbvr4kmWWK3eyCmFftVrIsJrKwLcw3R0jwgVJWjfSYdIDjhTOEELIhAISuTR3xkZYpsKbBlX2YnleE/1ecg==
VmVrGQo2zRokW/ZuO9bN66wmtriv6QXeuDc39FjfymhudJIBLwvAsHeSEA9VrAkxGH2HnePnS2wEvJxS+ohlcuK4kSv6fh43k8mTUZu0YFYIH1555qSQIP9KKgiEPciX
sobCGpmMf4/g7+HpPqBjC6hatZ6rUY3AAzqC73FJ58Q=
VmVrGQo2zRokW/ZuO9bN65g+iFyB5f7Eeg32R/FCJlu//0IzW8fZMf4lH4CVjeoQ
VmVrGQo2zRokW/ZuO9bN677jglX1e0i1pV1GpkT/hEZcDDa9tUgnSWNkirBSahx0u0qtPjiirUXPe7Fd0hHk7w==
VmVrGQo2zRokW/ZuO9bN62S4UJroJyOG2ieKlT52oNqqPOm1zgh1SxBu9SljGZC+96oJpIpYCryDG8ZWav7D4sa/5sIA+tGQmYP7qJSm93yHVEo+hSyOzmDBHl+0DND5f7kCF21fSSwxslUr5HiNWQ==
VmVrGQo2zRokW/ZuO9bN6/xDysL+wsJSb13AswERz4dkTYFzcvIV0sX3DoHiltzk
VmVrGQo2zRokW/ZuO9bN677jglX1e0i1pV1GpkT/hEYTnj+MWXFj6RE+XpFCnTCzquxNuAHZImxw1214ESyqAQ==
VmVrGQo2zRokW/ZuO9bN62S4UJroJyOG2ieKlT52oNqqPOm1zgh1SxBu9SljGZC+96oJpIpYCryDG8ZWav7D4sa/5sIA+tGQmYP7qJSm93zDFboavyHH/E/30Y5zGy9S80fqchh5qpn+hWXvevj0mndzfjG7IkUawnBO7UPuoEg=
1u+XjG/2+GSQRv6EzCaWRQ==
VmVrGQo2zRokW/ZuO9bN66wmtriv6QXeuDc39Fjfymhh1V6oDvIzFea05q1WLQ48l5lpADv+RAocmG/YM1C4kw==
1u+XjG/2+GSQRv6EzCaWRQ==
A50UO/kAI17YP7MCbTvBkFQ/jf5eMs11PzZj1m3IBsQ=
p9oVsBgcyiBMjDb8CcPOqL5s/76MTqY9EVKKWY3DZ/M=
xWoGNWjKGPfI4gq8aHoTfBVO0rtzJGwPNNCAKcvoQ7YGnBVlRRzBkPuuYdnd1drISaN/5vpFnf0ao1Hkw6ztew==
V/9ovtRa3Br5aRllRV4LntugHAma0FfLygytQEEiNgXwYpLpvSwK+SwR3bXBzNDDDi5P12Tl5fflDPqJ8kruRkyv/QfwvQtk51hgQEUgYwDamOo7S6/PquVbXjyBmWJt
L0eUthVnpkGsmKFAX6d+uE/CYsJNqOMjxonFB46aPvKB41NJhNOXzmQW6u8omhXt
1u+XjG/2+GSQRv6EzCaWRQ==
pIUZFpQ6AEp3EqJkh853OQ==
rkPpQEM5ulSmtAzswLRhsBCyXJXEEpSIw5g2Z/s64crOcKWUUZIk6EGChjapE1n6
CAhn8dRUItEbEErp4w+lX0z8TX1CI88WEI4P5ef+s0zfoJPI4aAfXDX98V9+KxQcNEEcqIFNkcGNxJRxgvv5MA==
1u+XjG/2+GSQRv6EzCaWRQ==
+8XsgdN9A21GensTwqLfjk34XtEJ8VmdZJpEuefqZGk=
rkPpQEM5ulSmtAzswLRhsEqQcfkMOmRnIzVUAsnSLtZ/Hw6a0ekZuUWjie+vjo1n
cbvASHjpysrsjdY5RctXmM2FOfvpWaHVVm+bR+QWYtwiNLTNznm5p1IWw+vSifnL
AiWkQRrzFD3LUw2z7QD4xEZdfKA3KieUvHOqM1b8ZAQ=
8ssTN6K/993nJI2CDP2nNMqT5dgWYIasvgmax0WUHUGusV8UWaPuTLmYe6MzCdHM
1u+XjG/2+GSQRv6EzCaWRQ==
pIUZFpQ6AEp3EqJkh853OQ==
xcYbEGWBIrMqpoXTqO4xygmSzbK+FLyCD9Yz16FeUX06RnLD/Ki2p4MhA4yz7GVv
CAhn8dRUItEbEErp4w+lX0z8TX1CI88WEI4P5ef+s0xzxjZI/4/pU6mwV6dtO7y1DZJv9YAa3JDW1rykBZazUQ==
1u+XjG/2+GSQRv6EzCaWRQ==
1LOLxtfZubxdsf++gOZ2bRaYF1H5z3v/kvyXJgLxVaQ=
xcYbEGWBIrMqpoXTqO4xyizgkbrDuhCl+sVZWWpFDiz1v8H3jnwQEnUW3JuOSs9h
cbvASHjpysrsjdY5RctXmM2FOfvpWaHVVm+bR+QWYtwiNLTNznm5p1IWw+vSifnL
AiWkQRrzFD3LUw2z7QD4xEZdfKA3KieUvHOqM1b8ZAQ=
8ssTN6K/993nJI2CDP2nNGRPMRrJiBKocyjtlRxi+1kZ5LwDNhuYpbuuDYSzlqMt
1u+XjG/2+GSQRv6EzCaWRQ==
pIUZFpQ6AEp3EqJkh853OQ==
G2gLKkq28nSWxSSV6serdwPTXVq97YYNgwDv4sDaWN0QVF42HNzHWiUs99FqshMs
CAhn8dRUItEbEErp4w+lX0z8TX1CI88WEI4P5ef+s0w/1ZZTsBYRfXaWgfIXlbsBz1us6NpynirTqzOjHsdLBw==
1u+XjG/2+GSQRv6EzCaWRQ==
5R/rOEnb+V0FncWy9qJnrQ6QekaBaXrXmluvKtodEfE=
G2gLKkq28nSWxSSV6serd04d1wUJ7YM+NiieLU8z34opTFXWo3j0bJnKtpHKzGxn
cbvASHjpysrsjdY5RctXmM2FOfvpWaHVVm+bR+QWYtwiNLTNznm5p1IWw+vSifnL
AiWkQRrzFD3LUw2z7QD4xEZdfKA3KieUvHOqM1b8ZAQ=
8ssTN6K/993nJI2CDP2nNHywNarigtbT4p6K3WLc/Bk8k9mMUqAiq1P1faXEudk/
1u+XjG/2+GSQRv6EzCaWRQ==
pIUZFpQ6AEp3EqJkh853OQ==
s+yOzEE5XYPkSOQ9ceEAX8p2lUXLEornfdomUPOyOGQD+D75NNFtNOmDIeqqUHE5
CAhn8dRUItEbEErp4w+lX0z8TX1CI88WEI4P5ef+s0y8piOMl6x7IbO4iaCrfJJanTVyf6h/oqszeFWhNWIibA==
1u+XjG/2+GSQRv6EzCaWRQ==
znTDD+TmVcFVUUBo8nxeDBnZHTabdDJDsO4u02Qiz14=
s+yOzEE5XYPkSOQ9ceEAX1zB0HEhjJRT73W+MYHol9UrnBYCgupivn3ECfkRgt8l
cbvASHjpysrsjdY5RctXmM2FOfvpWaHVVm+bR+QWYtwiNLTNznm5p1IWw+vSifnL
AiWkQRrzFD3LUw2z7QD4xEZdfKA3KieUvHOqM1b8ZAQ=
8ssTN6K/993nJI2CDP2nNCv6O4FGr3yR+CsalMoq660GiKKjP1h0OZXynI2I2jPh
1u+XjG/2+GSQRv6EzCaWRQ==
bH9iS7BmfKTTQ5e5cIHrV+NToa+Qu0Q6miLpIDPC7OQ=
/ERSgQcForolvZ/olj9P2J0oecx7/ZPYGhU+aWn0R4M=
Z8UsPk1Q7HtwjRd4g01ryw==
gFnkB/kvXZju5AiJuCf+wqR1SzdMfuFFTSyEiDYcNgc=
Z8UsPk1Q7HtwjRd4g01ryw==
1u+XjG/2+GSQRv6EzCaWRQ==
y8GztpG29fbJjAGhUea3TrxqjkSXUN9MvoVG8cO3pRQowb82hD8hO0z46C+6T0JS
1V2v8QerKOmubvSxgB4eTJhFEA1z5XTTrkAvv9L033bhlinHrX8U4BxpV/ggET/b
VmVrGQo2zRokW/ZuO9bN64V00EWriC2HeZB5atCMSN0AsGnyGB2rXvl7h6QG5R0r13erElT875XA7UJW72+Z2sXE0hRuBInnEh/YfCGIx6dHRwd2d2w/nMEvafm/45O2
1u+XjG/2+GSQRv6EzCaWRQ==
cJzy0A5ic7WCq7dWr0SiJXr2qhhpU3LQ338iqFXzNKUbTwYRpnBSBODivdBuGLB+nLDlPHLi7yE71ib68Q4rlg==
gIGPX9yrbBe1nfmXtWnTxyOM4Zm60LfoxSfb3jRCV7+2ics6jR/Nv6AoKcEFkzBffkRC1HPNTHggJ5pfQjYC90faxQqswQU3djQX5gw/ThE=
1V2v8QerKOmubvSxgB4eTObso9ce4aQOaRtjK1HmpMQYvsjyjDzCp5XHlp7fRuVFT14OGl86etamY3pUmj+Se665h3jhkRNsltCNoi5PgtA=
VmVrGQo2zRokW/ZuO9bN64V00EWriC2HeZB5atCMSN0Oq40WOKxh3L5/ZcG0Tqrp
VmVrGQo2zRokW/ZuO9bN66+3bjhX5XHJzVlo32tiNI1A5FZWyHz5VSoo4zFYEIRTlBWnJ7Kxif4pGHKBebr9MEdUGPyjEt5wMEuEiT3XrgCtHFZ5pyWO0mx2MUj5OPOe
VmVrGQo2zRokW/ZuO9bN66+yo8koaMFaeR72YfcN0MA=
1u+XjG/2+GSQRv6EzCaWRQ==
NhnIR3Ilo4H2su9/cTNo/AQH3ie9JLNxp257WAjGRB3XlWwdKG7n+zbvxhv3nJh8
RVksG1zlkTEpq4zGHhuJg8yssI+R9WOGs1U3aucN98r6hKry4Eah/FsabiXrIz2lMJNqh5eWjGL8ZamjgSE9UPVKIdRv6D01D5ots+KuudQ=
oJQSCA4LmnTse1ofrS7jT9NquSrADPks3Hbdt4STyFwlvQDL+6utrGV/GkTI4hA5MOoC/MBfc3XAU5DSRrjwc99ZwPXm8ofPNkUdvw67ptY=
VmVrGQo2zRokW/ZuO9bN63xGG5T+b2zY/CPxRxJb2VUVBBuW2KMw/jBkZumywzlYpKLW90uhKsVxgxB+fZ63draGD+1xR3vxkQQHZlyfOJs=
VmVrGQo2zRokW/ZuO9bN64V00EWriC2HeZB5atCMSN0AsGnyGB2rXvl7h6QG5R0r13erElT875XA7UJW72+Z2t+NiWYbi0QSLQsa9s5g6ncma2R62ZDTx/JdE3KKaxX7
1u+XjG/2+GSQRv6EzCaWRQ==
J1UGlXkKhKXD36OrXXhN8JqHKdHs9BbjEOhU94M1QEHnSQX0/ro+nitzBjDhhVxKQXsLLC3pMBtw3NRb0j0E4Q==
VmVrGQo2zRokW/ZuO9bN64V00EWriC2HeZB5atCMSN0AsGnyGB2rXvl7h6QG5R0r13erElT875XA7UJW72+Z2l2CMbGEdcfcO/LeY1ikf1mI7wUZ4oVBrL9SSs/mP/qE
1u+XjG/2+GSQRv6EzCaWRQ==
Tf82sYxbtK0v2fvBhMa2vaJ7BVV+15UNpxJPkh6lAiiG2GUJPKDLYDIU6mMBdDK16su+9obx+rdWtDm1Szqybw==
L0eUthVnpkGsmKFAX6d+uL9vdbKWfpYY4UwNu87oYnIgCCtJpi+e8uTrhSRRsXcI
1u+XjG/2+GSQRv6EzCaWRQ==
3PYuJCOiZH1sjGKjxSVU6D31QXsJoSCnKTCthZn9WKI=
1u+XjG/2+GSQRv6EzCaWRQ==
+R0T1xTRi5pYsPbT9XqhJM+nacK6aHi5D2qxNUXeLTXcd+HcGcpl9Pf61UHM6+oQBgeph/1Z1KFWAAO3lu6Ekg==
PTK4tlQYo4jqyLgQs6UV+W0DqEqoMhlqXAixwuV9jDk2HoJeR3oRVclOt7sKCaBewo1aZBQjbnZaxXeQ0c2FnqXn8JjIF1dtB0bWuB3ETAM=
1u+XjG/2+GSQRv6EzCaWRQ==
C0bSgSb2pPqt7Di7IzLIC9G8/prAlzAw6rPfXbyeJc9Ws7HR+ypvGAOej3WPozzm
Z8UsPk1Q7HtwjRd4g01ryw==
4na8vZlaw182gS+f9Z3g7C6RtjQeQzXilqZ/n6JCehs=
Z8UsPk1Q7HtwjRd4g01ryw==
b4OJVZe8QyIpjuTpKXDL9A==
JZGWrpvbDIlg3tUxGwenFwpomEoRUIAnIkXeYj8fL9QwBBzRpQr9bsfT6WzySo1aMzW5ZIQ8OmvmKJ7KhqNcHg==
W+5RMzryWgfLCHr0OO+ErAkRKP88ZR1POW2gAlT76Ao=
VmVrGQo2zRokW/ZuO9bN67vuwcv0dchELXYlhxfpm4Pymuce/MHlG20VOPlOAww9
VmVrGQo2zRokW/ZuO9bN68dODuoVuZCuTPZRds4J92aNm17nWBSzz5udBMyZrWmh
VmVrGQo2zRokW/ZuO9bN60JgQKUNW8bKwvP7tS1W8Hr6CH5mZnTfqIze951k73JX
J1UGlXkKhKXD36OrXXhN8CxdaZl4pe1HGV1gXLUy+I8=
VmVrGQo2zRokW/ZuO9bN64KMemQHe8TYfD+ukKnvS234nolxQoiAVeDl4c9g3D35
L0eUthVnpkGsmKFAX6d+uOWvw7d3Z1qNkKJWxOQKmt6/NWl/nOSKU8oR+1/n1Gnw
A50UO/kAI17YP7MCbTvBkFQ/jf5eMs11PzZj1m3IBsQ=
xWoGNWjKGPfI4gq8aHoTfGUTE0iHPquYolbfRmFcSDH/5jkjNKGfGs2l+MGdvm3TtuLHRd8NEGA4KxVMLWejbY4TxNUJGMppBFfQy0QvzXw=
L0eUthVnpkGsmKFAX6d+uBP+Vz+NbKb7onykeRqgNWA=
1u+XjG/2+GSQRv6EzCaWRQ==
19UU+a2zRrCu/h+cRG7l49DtWGMAdcQZs2cEv/0bItCl76HZ4bSw6Y1M0Prra7Cb
Z8UsPk1Q7HtwjRd4g01ryw==
xxc8zY/f++pnBV1vFvcv+wA1AkTXtRAKfqsK59lSAV4=
Z8UsPk1Q7HtwjRd4g01ryw==
JbnXIK/axHVmA2plDNFCpEofHtK6A0JApZ48oEIOmf0=
L7TXg8ZazVuH1ZErRElYFRj1WXF9javUE6/F2G502VMBTjAInB+6Y/HtrXpmsAnpzpv74kTm0rl0TKLahdzl0wpav3rxfDXDIrkGNsT3PB6MA85c8XcRkzo4scr6ry+u
BVjCUZt19pbTX8Or8oaV65vhrq3kKe17A8TlQZNAgqzc/dGN7zkbx4si3wMEgAB6PJmIYz5wnQHL5AtjVoTfMtOEpoztxCdmZoB50NSUoqyzv1+G+LiDstu476NuYU8F
661hZf7vhUQ+50okfwfTXw==
+plE/1bhdo64kO07cLlUXzzWH25pNAS0eDxp8hnHILg=
1u+XjG/2+GSQRv6EzCaWRQ==
v7rIadArj57JhGrubJmmUgj133hOFY04LATFLSkaxIsuSpa2blSGNY8sNPc0eLk2
Z8UsPk1Q7HtwjRd4g01ryw==
xxc8zY/f++pnBV1vFvcv+ygZfDGElOVyvHQ42KQFdpU=
Z8UsPk1Q7HtwjRd4g01ryw==
njCY7aXbCwuxkjjIu1puUdjBlJE1wMKH0pBczPmk/vc=
rRUVgORyr12VQZnNjS6WApHEkc/eDCTQHWhfIyIb++k=
hNJr40AQ/ZQGDydBZmRy2f68KNYb5azt0xUxeTS5/EFzNx2WVCx45PmZP5W97Dff
G0vJrhxRS9Qaca/7P+fH3h8QPLQ6FuLzM6pWghpDkQZgKTnPQf2y3kCDppJrqC0h
lGY+HGJ/DlLufZHWWlj7UwOWZnYknTSN/NXoU1kFR+VBhRkoo6+Uiem5G97IVPMa
1u+XjG/2+GSQRv6EzCaWRQ==
scFGRvJLbyFUFJFhXxK/7g==
yu6QeOWV7WCXLXv+228v5yTJb+ZE2Lc7thxsTXMY+ic3AelIjLd7V1wmcXPrlb+h0xTSpvjyxTxNjRV604YXKELohlNVd+qUttJWWxwquteyoaL4bmDk44Bwe2e0ALHH
Z8UsPk1Q7HtwjRd4g01ryw==
+xb2xoytdwHb4w6hRNemFCw4npg1GZqPobCsFRJWcoUvyaKswuJh7lrzoB9wkDZm
NVxWhyVFlGeG6clOmyBogstgA6Nc+iSXhgL7EtnDWRf4iravCjkyXnlJykZvUhOVTvxVUO+q9WFt6hzga0Ro3GrzcVDhoe9RnofzeQ7ujYM=
Ys4bozvJBgtB7q16qcvtB88MC0PyFCgy19m/wV7A6l6OmAvSK3rV2oWk6ESmWKmS
Z8UsPk1Q7HtwjRd4g01ryw==
b4OJVZe8QyIpjuTpKXDL9A==
UGSctzorKMmnxEYKNtDxBkG+5x2TKwiXaxQI8U4uocoBlEiAATToay8TzdRBZNhR
FLMbt5iAjw12yzW85KcCsoieY4IWYPJyPSRkmdn+cfs7iq5iBwfxpOoPvA8azlh1BCNdIh1Cs+9MypqWwMRpeQ==
I5csN8e3J/KIFkMa5t+SJFqUBmdy50sNG7fX4kmottlaB8ygSezryZ5tej3k03LbbUL+JEdkq+sAbuCpAPQk8g==
l7lZE42K6/zdlW7MaDM5MgNVgpO99PUr/40WbTQIioibytD2hhE2ibrOklmx1QX8Im9d1YMlo0yCkZTiTNBSjw==
VmVrGQo2zRokW/ZuO9bN6+VvVwOQBo0VFgYYheRjmdCv9xKQxFFn16ajTNUA9KcE3rN+nywv19c95dqEl/59yA==
1PNpySato8UYteTtqAx/0A==
WPPo5wdzfpZFD1m/rdImH0JP7/K8ws2etv2UmlgzKT8=
VmVrGQo2zRokW/ZuO9bN60pwTy+l08CqReemX/4iUFuIIkxPytbbGUaonpd/K4TUusP3d75sFYplZ3tGMBlTmKbWgzCDizI3IkgGjDW+0p1t1OYI7n+E6rRsjFut2fD2
VmVrGQo2zRokW/ZuO9bN632I6L4AzmreOzePuA8V/5NmVDElRHHEk5RDjOwjpNLWHYFsPqsGxNpkMM3+rBEdFg==
aq813pd5W3Kze3SD8/5g2Q==
1u+XjG/2+GSQRv6EzCaWRQ==
1V2v8QerKOmubvSxgB4eTKZWr/WEAAMlRv29Q/Iy5lt76K1abejuwHgMwqoERW1lzNKVe+31cJGdcnGlihv5jQ==
VmVrGQo2zRokW/ZuO9bN609+BZQP4vIM6d0N1lpYQxA3UDfKhNXmm1NUv0gTN+sU
VmVrGQo2zRokW/ZuO9bN6147x1dkhbDeqs2uAuxfhFmxq2/uca9NaDYGJ2BAX8sLGBMoq4SgDsdqW8lDCHh4t8W3MI6y90ONbxwN/0XgjZI=
VmVrGQo2zRokW/ZuO9bN60Nk50Qwj9z20ehngOG48r9BRy+qBUf1fK1Y7G11/p/B
VmVrGQo2zRokW/ZuO9bN6/8kUqOod83k25/Fvn/xEkx+05LX2oReTaqdu1rPcElK
VmVrGQo2zRokW/ZuO9bN66tF8DKBPmuAjX1pAYDoT9uS1GVQErhYas+XWgtfjKM+
VmVrGQo2zRokW/ZuO9bN6x8/vs7LROi8hOe9J40mDGEcHmy64QTlaRkWehjObZfYDADTT2OWX3axlhppQcklnw==
sobCGpmMf4/g7+HpPqBjC3MpScF3xOXOtmmfpIXRYCw=
VmVrGQo2zRokW/ZuO9bN609+BZQP4vIM6d0N1lpYQxA3UDfKhNXmm1NUv0gTN+sU
VmVrGQo2zRokW/ZuO9bN6/2o2vULl3N5/gPhVtQCuWmSHLWbZQrlValc0BjDOvRO
VmVrGQo2zRokW/ZuO9bN61NUgCVbH9jy7WpQF/bCcm+rsZ1fj8s491iETmgiBF9GTklXxFZfRecw+l8psbyfDA==
VmVrGQo2zRokW/ZuO9bN63nSuyvh9ljsJqdW4CFtssB5j3//eImNrztjz+3upk68
VmVrGQo2zRokW/ZuO9bN6147x1dkhbDeqs2uAuxfhFmxq2/uca9NaDYGJ2BAX8sLGBMoq4SgDsdqW8lDCHh4t8W3MI6y90ONbxwN/0XgjZI=
VmVrGQo2zRokW/ZuO9bN687/2h8B8mYOA2oUbbvNj/Cm54Ktrk5UNUsSdTqqfEgG
VmVrGQo2zRokW/ZuO9bN6/+XlDBJX1TRtbUIlcd6IFBIgtyLYWoZLjrN2INv0Dor
1u+XjG/2+GSQRv6EzCaWRQ==
bjpI32qzKze0nfrRYYQXm+/sRMe6h5CkZObdyvApmzLE4njC9j10+sbNqEk5ChkPfEcDyR1JpL1GS8wiHaMlOL14BQg+CEyve+XXXUD9we4=
1V2v8QerKOmubvSxgB4eTE00bWTpOyiMieDlvHj7U1Apyn5Q0bXZL3CKmMEODcWq
VmVrGQo2zRokW/ZuO9bN68CICbBhsvcEmdiYbOQtm7M=
VmVrGQo2zRokW/ZuO9bN68J7WxZzQERUoyW2V5kCwKmL0JEwSVbMNsl2BO3jQhX4dLwhicJpfJWGKcIA/GqjC0VgLJwSagmQuZBe1ihkqMYhlg8GeJXLLYu/TQhKSRmgox10m53iap8DixCFzZ3few==
VmVrGQo2zRokW/ZuO9bN6wySOTbUHxbzhY3UsJq8YoSPcz8kEPvhCVD4uoHVZ3qI
VmVrGQo2zRokW/ZuO9bN6/X5P0JQh/3A+CH7XrFjeSd9KI8kDc+IxDE1U7VwybBMnB/J4L2Yvak/7LkrJdxkQJUsaq4LTR1mDsZbTvkNOiUQNjrojSDoBdPlOrTaH99G
VmVrGQo2zRokW/ZuO9bN63k47vOEzk2ToWEqG+K6PEMRMOlxUQAmASFsTBjX8OkPE+8zA3jPPKOQOIGZgFSvu+QYTNPuAJWXgxGZ1oMyIm4=
1u+XjG/2+GSQRv6EzCaWRQ==
vvyNsBh8Qly11awgFEvFvkAYAmIk3cEBOGlEuQ+bwcumiLJeeGw/OqpcO9ltQm2K
32pdC9DD05OE2l0oXazDFMiNFdQAydH96YJ2imtAoSJRBvIKGw/wxaTK0PY1JxCpwxFzKPM4gOZ8tAiF49AVag==
32pdC9DD05OE2l0oXazDFBHwuplPLSkBar+hHKCGQ0Y=
1u+XjG/2+GSQRv6EzCaWRQ==
UGSctzorKMmnxEYKNtDxBhUdHKB1TlzvHma6ZB2OP89I/0ceSQwsOhIo9DxlVUqQQxUKOymZC/Fxq0mGlRBAhAmdnjJ+bsoMsL1x9Ph+GlznDRHPsD7wMdZIxgpfrR0A
wlLHv6kT3Q/RmtMBN4nDAenvh32GBGMItgnKRHvBnCNsKM2bVBtW+ypXkAu7eMvODSZAt1eKKvO2Nj+J9BhlMeScCtkJO3hfSGuPXQRmZbc=
VmVrGQo2zRokW/ZuO9bN6yZSb0DavYDcujrWR4OPDwDxfL9ltFihW2g6WG8TISGh
VmVrGQo2zRokW/ZuO9bN603fw7pULghHsOizoCLe4WAPBSBCS03YjSR0gKTDvDGF3om1X51JLsEkdcg6HqmQnQ==
VmVrGQo2zRokW/ZuO9bN66PF/Fwc+wwnKW8cUhE70wXrQogUH4GRrbnfJ0gZYiVlTK8QVoJlxz5XpiVBOWGmAQ==
VmVrGQo2zRokW/ZuO9bN63VlC30w8L0ZWYw8dcFA5hJB0EbV0Q5TmJ1O4Mr51QMi
1u+XjG/2+GSQRv6EzCaWRQ==
lrR3WnFqr4j5hbrwaaP1tJmvvjjSOmVTBSGTaVg7MZ0=
UQ4Ha/xjCooWJdhHec9cBxV92d+HPzD7tXfjD95KVEVvrhNS+oPnem7RHbwinRog
VmVrGQo2zRokW/ZuO9bN6zel7hv88GFbKKFquLLaLvc=
VmVrGQo2zRokW/ZuO9bN695gtJLKsQxkI7ezFA4trQtszPMagVasQitiU5IejJku
VmVrGQo2zRokW/ZuO9bN6+TXJ/6Sleyc7X80oo6UE/WtgO0n0FJ+U23madI3ZoKy6Z5MLigo3cYbSl0dHym03Gi7PXphxGjfTQBOkbMfP7iHTJipdJADUbWkBHpSxRIDiSxEMO6l5bqG9gB+pkaJxw==
VmVrGQo2zRokW/ZuO9bN66+yo8koaMFaeR72YfcN0MA=
VmVrGQo2zRokW/ZuO9bN62vETaYflMeVygvqhpVoQ3U=
VmVrGQo2zRokW/ZuO9bN695gtJLKsQxkI7ezFA4trQtszPMagVasQitiU5IejJku
VmVrGQo2zRokW/ZuO9bN69jKuxEc82a0xFWhwMHDPrDR13fnBQsPQxfveBuxRy87hOYmXl3WTvixfd7d33Jq8BsePwKBL0G2b2eDKK7O6ckW/l96rrOeaIy9O+V6JANIllKZ1YPrt0f2/43W3GCTh0Lylipo3wFu1AFvHpCr+VQ=
VmVrGQo2zRokW/ZuO9bN66+yo8koaMFaeR72YfcN0MA=
VmVrGQo2zRokW/ZuO9bN66wmtriv6QXeuDc39Fjfymhh1V6oDvIzFea05q1WLQ483wEF4zfShJjv01kkQifRxA==
1u+XjG/2+GSQRv6EzCaWRQ==
L0eUthVnpkGsmKFAX6d+uINvW468tRk1gDFX3gUWs5BuSk0/8rbXKn555Y30HUAtAxrqVy3QC5MaQ8+G3CH48gjScQpJlX8Zfz1fdFc5Hxo=
A50UO/kAI17YP7MCbTvBkFQ/jf5eMs11PzZj1m3IBsQ=
p9oVsBgcyiBMjDb8CcPOqL5s/76MTqY9EVKKWY3DZ/M=
xWoGNWjKGPfI4gq8aHoTfBVO0rtzJGwPNNCAKcvoQ7YGnBVlRRzBkPuuYdnd1drISaN/5vpFnf0ao1Hkw6ztew==
L0eUthVnpkGsmKFAX6d+uE/CYsJNqOMjxonFB46aPvIgZNur9gpa0MDNbr9BxFFG0xiJBN1M4CngjXcrXkOt4w==
1u+XjG/2+GSQRv6EzCaWRQ==
scFGRvJLbyFUFJFhXxK/7g==
mIUa+sHivIZkzvkQtcFvOPU0vsZYNfw4KTiO8i9lACD/ZhLp0/10ku9kZlzwRHsrKFkl6a9sov00D15JhJs9os43iMX2DaJ1RsIb57MdfLo=
Z8UsPk1Q7HtwjRd4g01ryw==
4yIkR+AlYu6VYvW12bszGnuN/zX/q5KaTLhD/CFcsdglpsgfgxjMo7nP8o6G7qfidXShkcCPyXLGOAeYwZ/6Gg==
H4+nILWBiZkNgah0/hydHUIMmy9gRh29qaev1nx0KW6UQ6Co7P91eyUYOhpG3RzP
09KozU/7yULY+0EODxiezbVqQBl2PvvAbkfgMz4JwL1nK1o+bL/JNt8bws2SrgCVY4xvngIkDlKHqyCLIvs85A==
1u+XjG/2+GSQRv6EzCaWRQ==
Ys4bozvJBgtB7q16qcvtB88MC0PyFCgy19m/wV7A6l6OmAvSK3rV2oWk6ESmWKmS
Z8UsPk1Q7HtwjRd4g01ryw==
b4OJVZe8QyIpjuTpKXDL9A==
cnfluVyaRqVoEQIVyLHdZLTLQXVdv0lrrYPfjEduwVA=
1V2v8QerKOmubvSxgB4eTGnN4BANJ+SFCHCs/Dcv/kA=
VmVrGQo2zRokW/ZuO9bN67737oe/oMM4gnpJfk/XhH2ZuajjQP4vaGHP/SuYUGjNWGdtJc3wPtQu5TB5ccuyew==
VmVrGQo2zRokW/ZuO9bN64+cExdaTGvQBPAhGdzCjOc=
VmVrGQo2zRokW/ZuO9bN66wmtriv6QXeuDc39FjfymhudJIBLwvAsHeSEA9VrAkxHWVsDTd59dvK6quWPjOCBqQk3i5rSBB56qkE0VvjH7w=
1u+XjG/2+GSQRv6EzCaWRQ==
vQwaisdUFOt9b0SJYuH/nrHigrTUtycF35lf58xGUQo=
VmVrGQo2zRokW/ZuO9bN6z5T5VNPdaadcuvWRWrVNTg=
VmVrGQo2zRokW/ZuO9bN6xF1SJaAm3VttartJvhccJnzdQV/LQSXGhLLjbY/0F+Kvj7jJ+B8qeaibZyY4g7d+gvjPVdvg9Yrb//34X7xLC0=
VmVrGQo2zRokW/ZuO9bN67j/fkBTLAylrEpOV1UzPtg3CP78rtGpNimiS3NasK9O264yap+Xp8NVPpR9KacRTcWiuAqHp0Ap4Y3f95QRn/o=
VmVrGQo2zRokW/ZuO9bN6+M4+6rVyb7NONX8aRT9a92C+ew4adicsV5HgH/rbqDuuS/PRWP3EiXGrRSKt32+bFiS2XdF3lyKbs42F9fVbO8=
M0ZySqkmhuHCw6olbCKv95w0wnb5tXdVpvk+nm5slh08NVVq6n6s97xgKedJivey
VmVrGQo2zRokW/ZuO9bN66wmtriv6QXeuDc39Fjfymhh1V6oDvIzFea05q1WLQ487TvUZRg0S+ASX0nottqzPKBQ3h1XsHaeIrnxqKqkBTYlzfP4EUZFbP7L18OCsggD
1u+XjG/2+GSQRv6EzCaWRQ==
WPPo5wdzfpZFD1m/rdImH0iFX9A99vV8Az+JZSt148L5AhFbaif3fu9iVg3ckh97
wlLHv6kT3Q/RmtMBN4nDAaSBHbk2ORJ9qGX6fxECpK1RKbThXidPLPhgS25dNb0e
VmVrGQo2zRokW/ZuO9bN63zFN5O/w1krXKBn8bzERXc=
VmVrGQo2zRokW/ZuO9bN686EF8o4uYt9CpVRorQjkZz3W1n0wYgzGwk+NiVyzbgp
VmVrGQo2zRokW/ZuO9bN63evYWl4d+9fbxv8r6LS+QAybrVjzG+3fHUhhylIA9mo6e6FiUljf7xAdS+ahdzILw==
VmVrGQo2zRokW/ZuO9bN6+jVcto8aD5XvwwXx5aUnoa5mtVQ2EBn8nATLiZPzMi/HuuhTfQNiFlYg93TUS5tkg==
VmVrGQo2zRokW/ZuO9bN6+QruFIVNQABgBxbXowXfwxxTM8iiQQARErgegfPB9Wh
VmVrGQo2zRokW/ZuO9bN64TJ4DKZo0Gndaoz7Fw1Xt0CRZYRP7NToOUBBvCf+24s
VmVrGQo2zRokW/ZuO9bN69GQyz8KCC+Pvm2xLo5FYTWAh7T/0QFhsGUKuM//eNUOmpqhN4Dx2L1hQ4X8dg10wEoNzrOIBdopndyekq0Bajs=
VmVrGQo2zRokW/ZuO9bN6+4lW5AQ9tETBgMEp4Q+BAgRhqkIZxh7mdu34d9IuQz300lS/DHj+zHfViwjlSdKrIFF/kFqELqsfS4pSXT3mga4azrufZkElfz7HDmHFEpS
VmVrGQo2zRokW/ZuO9bN62TD+TJTlOvFB9KoppiohbF/jAp4s2ko+b3k9hNWb2RbKx4BJ37Pl7YyImAqSWKJ7A==
VmVrGQo2zRokW/ZuO9bN67rthG39/u+hUAk/TFHDa1Wb1/Y/8IbnZZof1cS1xvEj
VmVrGQo2zRokW/ZuO9bN69jIxF5VISZtC2vxWRknx7k=
VmVrGQo2zRokW/ZuO9bN6zpXUm0hbDyLX6etxqjLu1K5XQzc8Q2mhTqcDz4kQ9cu
VmVrGQo2zRokW/ZuO9bN6/xDysL+wsJSb13AswERz4dkTYFzcvIV0sX3DoHiltzk
VmVrGQo2zRokW/ZuO9bN66ZBpFNU0zH7sDb9Gjo0gZtLVRecNZnME2QVG30THGDOpQ9UxnHiK0BKOb0uf/uvDg==
VmVrGQo2zRokW/ZuO9bN61XaLttL0MoNju+noyx63Cz2zOeEXSpqQQkT3x5Eva1G
VmVrGQo2zRokW/ZuO9bN620zSkiHBXev6YTvy3qjpOw=
1u+XjG/2+GSQRv6EzCaWRQ==
i8r3p4WXNRKCI8aP1TiiVaUBSHhNDEkE+I0ZdQZ0E2fN3mAaK87SyzGyc5RsBkLm
32pdC9DD05OE2l0oXazDFMiNFdQAydH96YJ2imtAoSJJ5mrU73f3LuM+hr6719Nvw2aP1Iie6JvbZM39LfxE5Q==
32pdC9DD05OE2l0oXazDFBHwuplPLSkBar+hHKCGQ0Y=
1u+XjG/2+GSQRv6EzCaWRQ==
UGSctzorKMmnxEYKNtDxBhUdHKB1TlzvHma6ZB2OP89I/0ceSQwsOhIo9DxlVUqQQxUKOymZC/Fxq0mGlRBAhLFib1UtJJE3oXI8JGHuWsaz5ao5Yrl4mTHEkV81lBv1
wlLHv6kT3Q/RmtMBN4nDAenvh32GBGMItgnKRHvBnCNsKM2bVBtW+ypXkAu7eMvODSZAt1eKKvO2Nj+J9BhlMeScCtkJO3hfSGuPXQRmZbc=
VmVrGQo2zRokW/ZuO9bN67AXUgS+fDV1HxR1bHXVBdSBSSVPvTbZBR0otYw+ZUzh
VmVrGQo2zRokW/ZuO9bN603fw7pULghHsOizoCLe4WBSFP8SgWLwjrrjHO1NHDHoYo2u5EXJzIDbBxxaI8ogtw==
VmVrGQo2zRokW/ZuO9bN66PF/Fwc+wwnKW8cUhE70wVZUiAce9gRQJJnB1mZUdX6HspbyO+NCvZMY70ucW0Dqw==
VmVrGQo2zRokW/ZuO9bN63VlC30w8L0ZWYw8dcFA5hJB0EbV0Q5TmJ1O4Mr51QMi
1u+XjG/2+GSQRv6EzCaWRQ==
lrR3WnFqr4j5hbrwaaP1tJmvvjjSOmVTBSGTaVg7MZ0=
gZ7BoIAABc+I8g/rYzq+f9PqKkc+TNah2b1na1p7zHw=
VmVrGQo2zRokW/ZuO9bN6w6zlKqELgjUJVYhREqVmjBBKwIUuhoeW64wqACrHnk/sBZImDmt1pSw+EgcMuug8A==
VmVrGQo2zRokW/ZuO9bN66wmtriv6QXeuDc39Fjfymi29n4e9VN/4+CxhqGllp2xDqXzOd65Emdf5J6QFdKBOQ==
1u+XjG/2+GSQRv6EzCaWRQ==
L0eUthVnpkGsmKFAX6d+uINvW468tRk1gDFX3gUWs5BuSk0/8rbXKn555Y30HUAtAxrqVy3QC5MaQ8+G3CH48gjScQpJlX8Zfz1fdFc5Hxo=
A50UO/kAI17YP7MCbTvBkFQ/jf5eMs11PzZj1m3IBsQ=
L0eUthVnpkGsmKFAX6d+uE/CYsJNqOMjxonFB46aPvIgZNur9gpa0MDNbr9BxFFG0xiJBN1M4CngjXcrXkOt4w==
1u+XjG/2+GSQRv6EzCaWRQ==
scFGRvJLbyFUFJFhXxK/7g==
93qh3LWtDbS3SyePJReP6jsF1VKANKi+6evNonB5uyLdSE6N0sUkLsyo2Oyx9tLtmeQB/cybjR0IJ6K6jIQfzPvfzq6azhr7iH4/fiH6EfY=
Z8UsPk1Q7HtwjRd4g01ryw==
HekTtfoHVg3XfaL9R7E49w8i4Mn50UG5Ygh0DdaapkQ=
eSPztIvQjoLTN8Znx7IdL75xSIhOXp51CK1UE65wFhD9NbwORZrSBUny1dYzzNpTk2EB8sQQyE3CNPZ6IAouhgSTIJ52VwdAXpdNF/eJZTg=
Ys4bozvJBgtB7q16qcvtB88MC0PyFCgy19m/wV7A6l6OmAvSK3rV2oWk6ESmWKmS
Z8UsPk1Q7HtwjRd4g01ryw==
4v3Fsfhp6sTmQRx3pzHef4TfTD3i0IgHyNcYtfoSjDc=
lvKJ4kjRaSkMPrABG7aCEJmYXbNh0v/s+pppFYUG6x9bQlXTb3Hl7lcBwO1yCAFI
wh7h4vS9A/4uW8JsaQxIble0Ws3BjmxyVJEa8k0MOtvUOkqmEtn7q7Z1yjJ+Zx3SAzljZ0wfYW6LQy879pz2Nw==
+m2Ig0EQEJ4Gc+2v8s5xrnZRBGAfDHuVg5r9VE/U7Dqcsp5mSPEG0DHHYcBZkfWo
b4OJVZe8QyIpjuTpKXDL9A==
9AemQt8r1kTjrdxdPU8tBj/kHbWwcf014qJUMMHqYSX+XYcC15XlV9Y2l3wXe+bG
UbJuac0dxLiN+5ocS3w2vTVMweREQHPMT5TF24s/i3k=
VmVrGQo2zRokW/ZuO9bN6+tw9zqnh3u5A1NhNYJl87Xnz4nHI7yYAPBUB95ZdcMTD8uYh73ynLIjqg/fi4OObg==
VmVrGQo2zRokW/ZuO9bN6098TYgw848grOgVXrtIqhbRYYMu6MALJ0yVic8Pynjt/r9jQRvGeKLgacbwfztI5A==
VmVrGQo2zRokW/ZuO9bN6/SsZ6fYJudISaI8DXgbJ8W0Q8UfYg3BBSdJBxSTcMqhhW5nB+L1BxnzotuxRNaPrw==
VmVrGQo2zRokW/ZuO9bN682r05agXpuA5IoNQgquuTykEMTJmG0Quato5oCZwjq6
VmVrGQo2zRokW/ZuO9bN63P+EUZOI45PqES3tmisTPmd7QRbNS6wsDKOktQ9Qwo6
VmVrGQo2zRokW/ZuO9bN66X3Y/rjvJvSf+wpvx4SUcep3r1Bnp9Te+VNVy5WQvqGkeV7kCIS1KXvgSs+EhG1Dw==
VmVrGQo2zRokW/ZuO9bN65hAGaICagbU0z0X3nArVjY=
VmVrGQo2zRokW/ZuO9bN6z4WjW/SsLoZ57veFK3bnhMyo8wZ16ih3/zxaNDyoO9cfJuun66XDseOxj22PLhpRA==
sobCGpmMf4/g7+HpPqBjCzH4RKY6kGVLnZTY/hL/Ut2Rj3thgUQp3+KyTOJGBh6e
VmVrGQo2zRokW/ZuO9bN6wZh5DTtRBbRUrbsvwnlajLuleLTDTF33y82OqR3qUGY
VmVrGQo2zRokW/ZuO9bN6/SsZ6fYJudISaI8DXgbJ8WJL0qNa7mIESq971gzJ5ahuCyjiaFlQfhuW3gpjVZ4/w==
VmVrGQo2zRokW/ZuO9bN682r05agXpuA5IoNQgquuTykEMTJmG0Quato5oCZwjq6
VmVrGQo2zRokW/ZuO9bN63P+EUZOI45PqES3tmisTPmd7QRbNS6wsDKOktQ9Qwo6
VmVrGQo2zRokW/ZuO9bN69aJLNbnttj3SGrA2ExojYZ6s121/75zoeboJKqtS6BVmlci230FCvhcu9B0Fw/SBg==
VmVrGQo2zRokW/ZuO9bN65hAGaICagbU0z0X3nArVjY=
VmVrGQo2zRokW/ZuO9bN6z4WjW/SsLoZ57veFK3bnhMyo8wZ16ih3/zxaNDyoO9cfJuun66XDseOxj22PLhpRA==
A50UO/kAI17YP7MCbTvBkFQ/jf5eMs11PzZj1m3IBsQ=
p9oVsBgcyiBMjDb8CcPOqL5s/76MTqY9EVKKWY3DZ/M=
xWoGNWjKGPfI4gq8aHoTfBVO0rtzJGwPNNCAKcvoQ7YGnBVlRRzBkPuuYdnd1drISaN/5vpFnf0ao1Hkw6ztew==
L0eUthVnpkGsmKFAX6d+uE/CYsJNqOMjxonFB46aPvIgZNur9gpa0MDNbr9BxFFG0xiJBN1M4CngjXcrXkOt4w==
1u+XjG/2+GSQRv6EzCaWRQ==
tKJ02+ccDnR3mIaCZPGi488UHPIqbcu9XBAqqo/CWRQ=
cnfluVyaRqVoEQIVyLHdZFwAQF7pvykJgJoCoB26PWg=
wlLHv6kT3Q/RmtMBN4nDAbHO7jhwpeE03j8YeokLr30PhzgoMnSAYUP2mp9rapx7qoTUUd82iRttZ5+rnCuoUw==
VmVrGQo2zRokW/ZuO9bN6+dVTHfEQ+IPhBzt5SkSgfoFMIbcJPPDYVL7GtYsJVCU9p+DKaoiCvatFgaP6FKbDA==
VmVrGQo2zRokW/ZuO9bN65l5slQHXbeWug1MG7BiBL4STK4zkzblhQnI8KE+m89gIbEudBPYi86HLLnD2U3ujQ==
VmVrGQo2zRokW/ZuO9bN63VtKuMywu4CjCteKr3FS+s=
1u+XjG/2+GSQRv6EzCaWRQ==
UbJuac0dxLiN+5ocS3w2vTVMweREQHPMT5TF24s/i3k=
VmVrGQo2zRokW/ZuO9bN67737oe/oMM4gnpJfk/XhH1mEpJJKnSiTLW7byv+lqAbOBILExJIY4O3mnaZVJnwPQ==
VmVrGQo2zRokW/ZuO9bN64+cExdaTGvQBPAhGdzCjOc=
1u+XjG/2+GSQRv6EzCaWRQ==
uBJ8NoDW+Rxskh0SPnfMHeLNhf3YpGL7She1WunT6CJn2LN9f/Iim9wgfiyJ7glGnkeKXQxyXDNFQ2kY5icF1g==
xWoGNWjKGPfI4gq8aHoTfJj+FBvCjb5jrWY03ZumgmetDwyj0mdbNPA2iFSbLJiI
AWid6G8ypXqQe9XxPPYED7MQxL0YpaGj+LgpAChp7fECrKhV3RKqrOxMNOya1Nww
1u+XjG/2+GSQRv6EzCaWRQ==
jeQ4FR9lP1Gz9+qjlwNjIWx9H6gmy1OKlS5+iDme1l0=
ZKaMl9Z1Uit3PMfrWOo4DRfgaHblxmqQ4Gp+jpEFizMg9u9PTqjRj0aRDTDtW2Rn
9C1zlqFWxLa7bSo7npA8JeejmEwm1Ll1S+uPBtManEQ=
hiWZK3dGWUUJRGj86ed1SBF4hPl5+RNYjI6EKh+NCLE=
T0oueOXKb6Nj33DFDDKa1ELiQwM3Z8pdGGprNIi5R6I=
hi7gk2IPyTe+wZcRsDfa01FfDmCV2UGS7dl5BxAEnWY=
aDrqk5T4YrZRF3nbGXehgLTbqfe3bjbWfpLUVJPmSd4=
di08RBML4OTOLmWohvGZAeo5aOWZGm8zjNWBaSBZX+0=
4E0YNxQKZtqIoiEqkAJApA==
1u+XjG/2+GSQRv6EzCaWRQ==
1u+XjG/2+GSQRv6EzCaWRQ==
DF32V1J+W4z2pljS/Ie6eN51f7MNcmonhJ2Q/u+VDWGYf1Y7J2Hc0tMqYi+yw9o3
PlGT4c8sCVmjiOTFRN4yGfvAq3iFO19gYmPtxgGTtfXBcIugNSB1a+azggmRd2Fa
jbXQmdOZfeJyMQFzI/ScysDikHRS5TrEvHG0Bs3I4wKuo8yABo/LpZWSf/6wZKZofys2rUz7N4h6PaT8SCrc+w==
qW+8sjaD4wJAM6sfoNoytJcNx1vvWkhUCA4HKIA/fdpFi/cOpUAlEYusLrr9HKF1AFbsX5WVXsFR0N00lHinng==
tERakgdW1gKgi2GWCqfk5c+AtTsHrnG9UFunoeeqg4HfJEb88wW4SV6AWvONj5+QmJf+YwykoK2iTNproyqFoQ==
xx8J+4gjcO0Zl90rFiq+ekk/OFPSNhHkxh4ivJjHxIr+CeXHQWkV94VLhdBk/0wG
kkLrERFZwXXewzo2cThHlHNXEz7m0FQfteAYh4fsvuV3jqq72S4g9HfbOHhG4KpI
Pe/xS1n5wZJMB2aQ8k6lYebKTqVkjd6j6uQeLi7QmpuwdDfzN/jx+xeUWyY3/atnLjEvofkrbmpWVcANz/q62w==
9OptBYfNSJVjdihMLEK69adhRdY7Q0f7LRhRFDOtVCTHorzfwJKXaPNGyOJANylUq8FVTpFDX0SMtPg6ep3OCA==
BwKsrfmjpADIUCQPfqMUxZ/G+1dpYbn8XtJJWMB8JD6k5JC6CjZ/DKDjdEiWBLSeG3U/dMHar6VSpc7AMvIC7Q==
HnxJqrrQ1O1B1lxuqYiCsy6aqesdSpmlLGtT5PWIZTcNizCUA7G110OYQ+TDNS9RDoNRsRXD5CYH1Qz8j5S3jC6EIrIsx2glfjMmfLzh1aI=
QfO6esCWc2mg04pp0kQRJHdG/G8X8Rsa9Q6lcE+boGUeoIRvOZ7+2CFzEqqO+7oALX7R5YyiwNxooz/Uv4AJbg==
HT3Cw4l+gn6EltlXJ/bcgJBTg323oXmG3uep0OBzDCp4QkLS1Ox+cdhpv9SC76Q4RtQXkbmT6zEPvXZ5sM8xognV5Z2CfFdisHTwXqaVHTQ=
OXg9TWqvRVVy6t0Fl3/CW4VoovJU3iaWtG/bfSeJwEi+Or+SPDI4EoyVtEP1nK8L8YZ5UsDZoAEXCggdHbOM4ic1RI5/zwEGp6+M12KNU+Y=
BHEYimDHdBzRGymX05YuLLLQTpvXRwyIFDrZ+qVRD7NzvoPLjfT8dPQ558N4NxO5ift0oZKz1NHpZu3Y6l4vsuH4ivY66tiCOS7nx7xLiRc=
1u+XjG/2+GSQRv6EzCaWRQ==
KAguCfbF9hMod9F924NdkWiUylj+ldlfeEAzvt2wHzxXFkrrWMzIDe9G275Itl8urwWxUvggd/qbN8q/D//Y7w==
Z8UsPk1Q7HtwjRd4g01ryw==
IAKw3rCOcvL2NtZ43BGHvdHUDOw6NIjnG1M4G42ngYKtIzfqatvqfuodzaOzqSZJcUV1MQJM0Qf76raiWPSgKw==
DB9RYsvseYNOenFazUS3E9zRdGQlOn6o1wai+LOH9HCvnbEmkhowfVB6z7tzDlyFHb1+LLexsuqsrnmJqXVH1ThGr6O8UCxez9I9wLmYop4=
Z8UsPk1Q7HtwjRd4g01ryw==
b4OJVZe8QyIpjuTpKXDL9A==
J1UGlXkKhKXD36OrXXhN8KU/7gILs58d/iYfvSHKXOEmjXYxPeezb6XGGfZe9OWO
VmVrGQo2zRokW/ZuO9bN67I3hK5WpVQo48VIIm6cdw3/kUMEWVqIWyW+aM6nEUx9IwI6ETwyY5oK1lNLx6oZyHaoHaqa0/72v2iNjYp4sxInuVW6L/gqnu+qyostjWlx
VmVrGQo2zRokW/ZuO9bN62wVEe82N4NHxNQPQiNik98=
VmVrGQo2zRokW/ZuO9bN604MEpoE3DWyxwSxPESmtNE=
VmVrGQo2zRokW/ZuO9bN6584QaAZo5gLmRZ/Gxm+RO91j6D0MgR1dwPKklzRK16eDKo63J1KeOaH5//oO6vIffU4d/GXhzB5XEtnF5NiWes=
VmVrGQo2zRokW/ZuO9bN64t2l4zqfsJ67vwMtB1J7GgrMohsJf3kM3q9hD1/07te
VmVrGQo2zRokW/ZuO9bN6x150MumqIwmmiAW1YIuG3s=
VmVrGQo2zRokW/ZuO9bN6zhol2B+ykNRvQl/TRSdWZBjxvpzKnck3sXmPA6Jv5uVvfDKSo3rYIKecA3DXecYtNvWdGJxhHF7YFJw4gGe2Zw=
VmVrGQo2zRokW/ZuO9bN64ZTCtjiSIe1Vj/8GYr6HkmNT079DTxgtxT38z0x/lW/6C+WNMopskpRFxQThkqEDA==
VmVrGQo2zRokW/ZuO9bN64ZTCtjiSIe1Vj/8GYr6HkkdGEtlEG/GCJatRjXP4f5QBIRRuyFA7qBTgVye1zUnLA==
VmVrGQo2zRokW/ZuO9bN64ZTCtjiSIe1Vj/8GYr6Hkl1JZhHEFMLOAZabzEwcYExT3qYNW9QG6NgwqyUYZzwdos3tZU+QeMgodkTohiCS/s=
VmVrGQo2zRokW/ZuO9bN64ZTCtjiSIe1Vj/8GYr6HkknEZBTPbikfuS3h0xQMInc7FhhpUAuCAWobv/ws1pwnLc3KbnkOravfjSA9jkbeGU=
VmVrGQo2zRokW/ZuO9bN64ZTCtjiSIe1Vj/8GYr6HklD2gqQJE8Nbx59Tl880I9uluVZ5qpCbWs7mpzBWzsWgA==
VmVrGQo2zRokW/ZuO9bN63dmCpjIL5eXfo4Q6ki7uwQ=
VmVrGQo2zRokW/ZuO9bN60JKAP0f5b6Sb7s9Js4pTMqf0Qdin4Xe+yHE+a9OUNJ7
VmVrGQo2zRokW/ZuO9bN6yF5reIxpcu48tpbw13FzleydoSUQmf9uiRktoHrECHC
VmVrGQo2zRokW/ZuO9bN6zP/DB6XcJXCO4xhckKf+4JVyvEO7BMF9SuwAgoChyVd
VmVrGQo2zRokW/ZuO9bN6/qFPBjAcCRKO+Q71Jok/yHRvedPc1qQTGBXupsmVZ9sP4dqquQ7sW16hLDNiICdZpDE6M+x02gyZOxdI4tLq0s=
VmVrGQo2zRokW/ZuO9bN69jIxF5VISZtC2vxWRknx7k=
VmVrGQo2zRokW/ZuO9bN6/qFPBjAcCRKO+Q71Jok/yF9QXjEMLxZU0vpc1LZyobx1sk+WwvRCZVY2v2NBNrn+N0yXwAmAcMdsrG/c2X1/e8=
A50UO/kAI17YP7MCbTvBkFQ/jf5eMs11PzZj1m3IBsQ=
xWoGNWjKGPfI4gq8aHoTfIe3NC4TsQR+Y4ztawsU6jIwDlSKweP2ADouWPA6KO64+6f7hpxbMwSK0qKMDd7fZQ==
1u+XjG/2+GSQRv6EzCaWRQ==
jeQ4FR9lP1Gz9+qjlwNjIWx9H6gmy1OKlS5+iDme1l0=
9C1zlqFWxLa7bSo7npA8JeejmEwm1Ll1S+uPBtManEQ=
/RRFyRIzAaDrATlqd3KEgcgVUp5d/QbV+7KcjcVmkUw=
CfTcUkLRRv0dS5fS+h8Anqk3owe9WUOkLmcCx5o21EY=
oS2TjyjVloijdu/67u+fRnndwAepnzgG94pl/V7nnhU=
4E0YNxQKZtqIoiEqkAJApA==
1u+XjG/2+GSQRv6EzCaWRQ==
1u+XjG/2+GSQRv6EzCaWRQ==
wa/zfUFOh8xDx8S1IHzgnSXQJ4f3LL6dWZ/5SrHSbNk=
MsacHy0ZakPCVoHa83a26A==
YMgJs2jYQOJRlqipbQnIHrMO7VdYxCD+bpYEZq9yiOoj+A0ZrvZWpwbpTzya4N8N
MsacHy0ZakPCVoHa83a26A==
PlGT4c8sCVmjiOTFRN4yGfvAq3iFO19gYmPtxgGTtfXBcIugNSB1a+azggmRd2Fa
jbXQmdOZfeJyMQFzI/ScysDikHRS5TrEvHG0Bs3I4wKuo8yABo/LpZWSf/6wZKZofys2rUz7N4h6PaT8SCrc+w==
CuuSwrFICDA02qTR6VjYsHSNalTTxskSfC5LC3Ld51OXgw0sKtCMUgASIfeMqN1ZNBHa0kGR9gPRxejNBv7VZA==
ZLahABYge8VJw3uw4Apg0RDDKyBTwFSsj7mEAa4i5Tw//JqMZOrWMoZsU9bBnMwsVXPF3u7L+3iXFRIeu7EKAQ==
A5Sj7WqqvV0VII+z0mDZbIJA2k+OW25KOEOxAHLuBag1Yfpz8Ci1oPTy/1lZ7sAnv2B0MYLpIpMl3cDAiH189g==
Qt+Ji4QoiG8LEYVwQlr05ljH8HJaNlKlkKQqIxUrvofOVz+iknwd1IVqcNLkg8n6aA79JtZ1qIFnVhvgGU8kslMFCBOEX9AsYHHBY0FpZ10=
NcSfyXWJSkdHKlgPrLMlrjVg85Edr6yV4qiIu/F3BR1eIVJM4KFfZU6eKjjRijjqbtXWSq+7+tDckn7yKQzOgQoLrsqn0dsBOT/5DdaVtJI=
I3uf3JLyPHWumCTzaivA1hn4ggqt7n+CLguYNcPK7H341GShd8yStS2IojjzM3Z6z8TxcIJc0IhNLgsXjRHWqQ==
dk8/xMBCLHg/lKOFMqeM3VzHUpHlik777q6oa5XIs3fcufY1RbsmhkGlzApBpfTt1aux9goQgekItTbRosJkFQ==
OXg9TWqvRVVy6t0Fl3/CW4VoovJU3iaWtG/bfSeJwEi+Or+SPDI4EoyVtEP1nK8L8YZ5UsDZoAEXCggdHbOM4ic1RI5/zwEGp6+M12KNU+Y=
1u+XjG/2+GSQRv6EzCaWRQ==
jeQ4FR9lP1Gz9+qjlwNjIWx9H6gmy1OKlS5+iDme1l0=
9C1zlqFWxLa7bSo7npA8JeejmEwm1Ll1S+uPBtManEQ=
TauqVBRzhXlpHmx8tamWwWOf322n2CdQfue/oYMlCf4=
i1yoYs09YlEzlYKKUoZQm5oUm5Zkx6uji9POnf7w6VA=
i1yoYs09YlEzlYKKUoZQmxqF8rcypNaWq5JKbNMuz5I=
4E0YNxQKZtqIoiEqkAJApA==
1u+XjG/2+GSQRv6EzCaWRQ==
bvSFS37gVdU/tRV9oJk/REARMsT5T+HCLIPggTcYT/iHnFJAn6CgbasENocVJRo86kCp70OQlnuKQ1VxLU5Ouuxj753YtsRbd4wmskmNmYc=
Z8UsPk1Q7HtwjRd4g01ryw==
8tet+3DhZZmzXrr99eEqsMiTGvIDnt0GVWfuEQU20gfW9J5+7M6eegwoRoQYEfDU
Z8UsPk1Q7HtwjRd4g01ryw==
uTEK8Ng11d3ix2pA+DD/aRxQTzArJmIAnBSntu7jsOE=
xWoGNWjKGPfI4gq8aHoTfIZxpBuF1OkvioSXdtVksgnnO2K5X/sdohYQTb/vIwajfxonWGpmDDQGdzwfzz9Sy5UOTNeNzLsKm4RtWJ+xhNA=
L0eUthVnpkGsmKFAX6d+uBWSR38I0ooDiDs76zI3rHk=
b4OJVZe8QyIpjuTpKXDL9A==
1hs1FfIPISXmd7TJ/r+Vlyw8y6VIweiKckZ8C8mztr9a7VLfpX67MmzaiM2SXyEKLGyI1wkjyVS3k/j5cUhlfA==
VmVrGQo2zRokW/ZuO9bN617V6VcoPmJP8hv6a72U0Q0=
VmVrGQo2zRokW/ZuO9bN63NO1+r9BtXFes/m3ODt3iwAB7/ThBAJyryPt5mxxqoD
J1UGlXkKhKXD36OrXXhN8C63lxd4EpfxGz/0DS5QefI=
VmVrGQo2zRokW/ZuO9bN65rMxPeCALphHDz5Q7t/D3vK+ctL/EDW2mMDa7RvlIQB3qOdyWJsfvOit1iX8/Kdmw==
A50UO/kAI17YP7MCbTvBkFQ/jf5eMs11PzZj1m3IBsQ=
xWoGNWjKGPfI4gq8aHoTfOp/HurNdgjVpTSCoIaS0kRXhnaZM2O7ZRfIBho9QOLjKEBRm5Hr1KerJpnVspxi3A==
1u+XjG/2+GSQRv6EzCaWRQ==
tucU9npBPNbcugtUFB/gAY/IvLbXZKNphv8pWh9DAqJ+NFCGz/tb740uMChk/b5lzlUJML2J8nkBareSA+/XE6rn77Ris6vP14ZmLyS8U3z4ffT0r5dWbZfvBUocME+AZCRlaKB4lI5q+zu+VUpUFQ==
b4OJVZe8QyIpjuTpKXDL9A==
J1UGlXkKhKXD36OrXXhN8K8/fsU94gqB334RvrC300UHbQrOzgRkI+C2c6AwDyjMofRKbBf4e1PZyHC57O5Ll9UesJTYTadbwhXgQfbssmA=
VmVrGQo2zRokW/ZuO9bN6+11dtTHoiwRoPNuc4fkivA=
1V2v8QerKOmubvSxgB4eTB/LijzrBlw+EKr5AitSYH4=
VmVrGQo2zRokW/ZuO9bN636QPk32wCTYBB4+ynUTrrs=
VmVrGQo2zRokW/ZuO9bN60bwiL0GtHOCFVYAGyLOKOCNRLnJQh3WFh2dbN24lsWtIGp06Tm4T7DlY+k1uXvbXw==
VmVrGQo2zRokW/ZuO9bN65hAGaICagbU0z0X3nArVjY=
VmVrGQo2zRokW/ZuO9bN60bwiL0GtHOCFVYAGyLOKOC0J+6NaCfCvvjiZByx5QC5
sobCGpmMf4/g7+HpPqBjC6hatZ6rUY3AAzqC73FJ58Q=
VmVrGQo2zRokW/ZuO9bN64ZTtcOaNOWDw4lxcJlpwtP58d5dvxb9f4wp2aDGVf25oHhLkr8Zqdl5Z/sW/a+UGQ==
1u+XjG/2+GSQRv6EzCaWRQ==
J1UGlXkKhKXD36OrXXhN8BFC6AZchjtYabI9fXc7NOaWTTOz6Q6fxvd0NhfpRHDs
VmVrGQo2zRokW/ZuO9bN64ZTtcOaNOWDw4lxcJlpwtPue15XZ9C/Qpd0+heFd7j3
32pdC9DD05OE2l0oXazDFJpdoy07zmhrOwf6Yp+7dd3k/urJfND57cGfoLGXiqbF
32pdC9DD05OE2l0oXazDFBHwuplPLSkBar+hHKCGQ0Y=
A50UO/kAI17YP7MCbTvBkFQ/jf5eMs11PzZj1m3IBsQ=
xWoGNWjKGPfI4gq8aHoTfOp/HurNdgjVpTSCoIaS0kTOIy1rJhLM5s4Sz5hHVFBIsUqSgzk657Byv+e4RuDZoQ==
1u+XjG/2+GSQRv6EzCaWRQ==
iYAaunsPri2RFbbWk0jK9XzhD4wIU/a6oK4CO5sA0RykGzbqaiyBoUbfng4WK42/8WasMB0jR/X2cVfeWRMhp/1iywdjzbRZrNHhNkkKhBA=
MzOj4ZiBOJDNVP8vi/lFQPxAKDTdSj6GrvIx/Q9AqR33BxzjMUHBSQa8S1YgFOl/
L0eUthVnpkGsmKFAX6d+uBWSR38I0ooDiDs76zI3rHk=
b4OJVZe8QyIpjuTpKXDL9A==
32pdC9DD05OE2l0oXazDFHAoRqIA3yrpPhwhqrPh0oBUkPhOG4vE37I52/Vaq4VX
32pdC9DD05OE2l0oXazDFJpdoy07zmhrOwf6Yp+7dd3k/urJfND57cGfoLGXiqbF
32pdC9DD05OE2l0oXazDFHZbOWKp7XpdbO8sN8fasX6woEEWlRFLeQi4mUf4sBNj
32pdC9DD05OE2l0oXazDFJZhhcuSIh5qlxLApXE4NnemG7hIp0WY6Ai5Z3tSTxyG
32pdC9DD05OE2l0oXazDFBHwuplPLSkBar+hHKCGQ0Y=
A50UO/kAI17YP7MCbTvBkFQ/jf5eMs11PzZj1m3IBsQ=
xWoGNWjKGPfI4gq8aHoTfOp/HurNdgjVpTSCoIaS0kR59dE5RcFeOFJ/LTDjpfYiHwJKhyos6m0OBKDvvh0BMw==
1u+XjG/2+GSQRv6EzCaWRQ==
eYCcyAVSyrdJHXbm/1bEwyKeEixwoWs9HayNCAFVaTQ=
b4OJVZe8QyIpjuTpKXDL9A==
32pdC9DD05OE2l0oXazDFCx2B+VnEBaz3W5oLrbTTPE=
A50UO/kAI17YP7MCbTvBkDYvwux2sT03hNoDnVKQvXo=
s6ChnXH5zaR4nss2Jj7ULBibRmB/kmin0eYU9S2eTfU=

File diff suppressed because it is too large Load Diff