From fb2affb69eaece2b4175d315f5c41ba762a92580 Mon Sep 17 00:00:00 2001 From: johnjim0816 Date: Mon, 27 Sep 2021 03:44:29 +0800 Subject: [PATCH 1/2] update --- codes/GAE/task0_train.py | 167 ++++++++++++++++++ codes/PPO/agent.py | 8 +- codes/PPO/memory.py | 13 +- codes/PPO/task0_train.py | 7 +- .../20210919-211343/models/Qleaning_model.pkl | Bin 0 -> 5423 bytes .../results/train_ma_rewards.npy | Bin 0 -> 1728 bytes .../20210919-211343/results/train_rewards.npy | Bin 0 -> 1728 bytes .../results/train_rewards_curve_cn.png | Bin 0 -> 49900 bytes .../20210919-211442/models/Qleaning_model.pkl | Bin 0 -> 5423 bytes .../results/train_ma_rewards.npy | Bin 0 -> 1728 bytes .../20210919-211442/results/train_rewards.npy | Bin 0 -> 1728 bytes .../results/train_rewards_curve_cn.png | Bin 0 -> 48748 bytes .../20210919-211456/models/Qleaning_model.pkl | Bin 0 -> 5039 bytes .../results/train_ma_rewards.npy | Bin 0 -> 136 bytes .../20210919-211456/results/train_rewards.npy | Bin 0 -> 136 bytes .../results/train_rewards_curve_cn.png | Bin 0 -> 33638 bytes codes/QLearning/task0_train.py | 18 +- codes/common/plot.py | 2 +- 18 files changed, 191 insertions(+), 24 deletions(-) create mode 100644 codes/GAE/task0_train.py create mode 100644 codes/QLearning/outputs/CliffWalking-v0/20210919-211343/models/Qleaning_model.pkl create mode 100644 codes/QLearning/outputs/CliffWalking-v0/20210919-211343/results/train_ma_rewards.npy create mode 100644 codes/QLearning/outputs/CliffWalking-v0/20210919-211343/results/train_rewards.npy create mode 100644 codes/QLearning/outputs/CliffWalking-v0/20210919-211343/results/train_rewards_curve_cn.png create mode 100644 codes/QLearning/outputs/CliffWalking-v0/20210919-211442/models/Qleaning_model.pkl create mode 100644 codes/QLearning/outputs/CliffWalking-v0/20210919-211442/results/train_ma_rewards.npy create mode 100644 codes/QLearning/outputs/CliffWalking-v0/20210919-211442/results/train_rewards.npy create mode 100644 codes/QLearning/outputs/CliffWalking-v0/20210919-211442/results/train_rewards_curve_cn.png create mode 100644 codes/QLearning/outputs/CliffWalking-v0/20210919-211456/models/Qleaning_model.pkl create mode 100644 codes/QLearning/outputs/CliffWalking-v0/20210919-211456/results/train_ma_rewards.npy create mode 100644 codes/QLearning/outputs/CliffWalking-v0/20210919-211456/results/train_rewards.npy create mode 100644 codes/QLearning/outputs/CliffWalking-v0/20210919-211456/results/train_rewards_curve_cn.png diff --git a/codes/GAE/task0_train.py b/codes/GAE/task0_train.py new file mode 100644 index 0000000..961816c --- /dev/null +++ b/codes/GAE/task0_train.py @@ -0,0 +1,167 @@ +import math +import random + +import gym +import numpy as np + +import torch +import torch.nn as nn +import torch.optim as optim +import torch.nn.functional as F +from torch.distributions import Normal +import matplotlib.pyplot as plt +import seaborn as sns +import sys,os +curr_path = os.path.dirname(os.path.abspath(__file__)) # 当前文件所在绝对路径 +parent_path = os.path.dirname(curr_path) # 父路径 +sys.path.append(parent_path) # 添加父路径到系统路径sys.path + +use_cuda = torch.cuda.is_available() +device = torch.device("cuda" if use_cuda else "cpu") + +from common.multiprocessing_env import SubprocVecEnv + +num_envs = 16 +env_name = "Pendulum-v0" + +def make_env(): + def _thunk(): + env = gym.make(env_name) + return env + + return _thunk + +envs = [make_env() for i in range(num_envs)] +envs = SubprocVecEnv(envs) + +env = gym.make(env_name) + +def init_weights(m): + if isinstance(m, nn.Linear): + nn.init.normal_(m.weight, mean=0., std=0.1) + nn.init.constant_(m.bias, 0.1) + +class ActorCritic(nn.Module): + def __init__(self, num_inputs, num_outputs, hidden_size, std=0.0): + super(ActorCritic, self).__init__() + + self.critic = nn.Sequential( + nn.Linear(num_inputs, hidden_size), + nn.ReLU(), + nn.Linear(hidden_size, 1) + ) + + self.actor = nn.Sequential( + nn.Linear(num_inputs, hidden_size), + nn.ReLU(), + nn.Linear(hidden_size, num_outputs), + ) + self.log_std = nn.Parameter(torch.ones(1, num_outputs) * std) + + self.apply(init_weights) + + def forward(self, x): + value = self.critic(x) + mu = self.actor(x) + std = self.log_std.exp().expand_as(mu) + dist = Normal(mu, std) + return dist, value + + +def plot(frame_idx, rewards): + plt.figure(figsize=(20,5)) + plt.subplot(131) + plt.title('frame %s. reward: %s' % (frame_idx, rewards[-1])) + plt.plot(rewards) + plt.show() + +def test_env(vis=False): + state = env.reset() + if vis: env.render() + done = False + total_reward = 0 + while not done: + state = torch.FloatTensor(state).unsqueeze(0).to(device) + dist, _ = model(state) + next_state, reward, done, _ = env.step(dist.sample().cpu().numpy()[0]) + state = next_state + if vis: env.render() + total_reward += reward + return total_reward + +def compute_gae(next_value, rewards, masks, values, gamma=0.99, tau=0.95): + values = values + [next_value] + gae = 0 + returns = [] + for step in reversed(range(len(rewards))): + delta = rewards[step] + gamma * values[step + 1] * masks[step] - values[step] + gae = delta + gamma * tau * masks[step] * gae + returns.insert(0, gae + values[step]) + return returns + +num_inputs = envs.observation_space.shape[0] +num_outputs = envs.action_space.shape[0] + +#Hyper params: +hidden_size = 256 +lr = 3e-2 +num_steps = 20 + +model = ActorCritic(num_inputs, num_outputs, hidden_size).to(device) +optimizer = optim.Adam(model.parameters()) + +max_frames = 100000 +frame_idx = 0 +test_rewards = [] + +state = envs.reset() + +while frame_idx < max_frames: + + log_probs = [] + values = [] + rewards = [] + masks = [] + entropy = 0 + + for _ in range(num_steps): + state = torch.FloatTensor(state).to(device) + dist, value = model(state) + + action = dist.sample() + next_state, reward, done, _ = envs.step(action.cpu().numpy()) + + log_prob = dist.log_prob(action) + entropy += dist.entropy().mean() + + log_probs.append(log_prob) + values.append(value) + rewards.append(torch.FloatTensor(reward).unsqueeze(1).to(device)) + masks.append(torch.FloatTensor(1 - done).unsqueeze(1).to(device)) + + state = next_state + frame_idx += 1 + + if frame_idx % 1000 == 0: + test_rewards.append(np.mean([test_env() for _ in range(10)])) + print(test_rewards[-1]) + # plot(frame_idx, test_rewards) + + next_state = torch.FloatTensor(next_state).to(device) + _, next_value = model(next_state) + returns = compute_gae(next_value, rewards, masks, values) + + log_probs = torch.cat(log_probs) + returns = torch.cat(returns).detach() + values = torch.cat(values) + + advantage = returns - values + + actor_loss = -(log_probs * advantage.detach()).mean() + critic_loss = advantage.pow(2).mean() + + loss = actor_loss + 0.5 * critic_loss - 0.001 * entropy + + optimizer.zero_grad() + loss.backward() + optimizer.step() diff --git a/codes/PPO/agent.py b/codes/PPO/agent.py index c0bfd0c..28b2861 100644 --- a/codes/PPO/agent.py +++ b/codes/PPO/agent.py @@ -5,7 +5,7 @@ Author: John Email: johnjim0816@gmail.com Date: 2021-03-23 15:17:42 LastEditor: John -LastEditTime: 2021-04-28 10:11:09 +LastEditTime: 2021-09-26 22:02:00 Discription: Environment: ''' @@ -41,10 +41,8 @@ class PPO: def update(self): for _ in range(self.n_epochs): - state_arr, action_arr, old_prob_arr, vals_arr,\ - reward_arr, dones_arr, batches = \ - self.memory.sample() - values = vals_arr + state_arr, action_arr, old_prob_arr, vals_arr,reward_arr, dones_arr, batches = self.memory.sample() + values = vals_arr[:] ### compute advantage ### advantage = np.zeros(len(reward_arr), dtype=np.float32) for t in range(len(reward_arr)-1): diff --git a/codes/PPO/memory.py b/codes/PPO/memory.py index 605fe03..c47fbc8 100644 --- a/codes/PPO/memory.py +++ b/codes/PPO/memory.py @@ -5,7 +5,7 @@ Author: John Email: johnjim0816@gmail.com Date: 2021-03-23 15:30:46 LastEditor: John -LastEditTime: 2021-03-23 15:30:55 +LastEditTime: 2021-09-26 22:00:07 Discription: Environment: ''' @@ -24,14 +24,9 @@ class PPOMemory: indices = np.arange(len(self.states), dtype=np.int64) np.random.shuffle(indices) batches = [indices[i:i+self.batch_size] for i in batch_step] - return np.array(self.states),\ - np.array(self.actions),\ - np.array(self.probs),\ - np.array(self.vals),\ - np.array(self.rewards),\ - np.array(self.dones),\ - batches - + return np.array(self.states),np.array(self.actions),np.array(self.probs),\ + np.array(self.vals),np.array(self.rewards),np.array(self.dones),batches + def push(self, state, action, probs, vals, reward, done): self.states.append(state) self.actions.append(action) diff --git a/codes/PPO/task0_train.py b/codes/PPO/task0_train.py index a4600e4..ccca805 100644 --- a/codes/PPO/task0_train.py +++ b/codes/PPO/task0_train.py @@ -5,7 +5,7 @@ Author: John Email: johnjim0816@gmail.com Date: 2021-03-22 16:18:10 LastEditor: John -LastEditTime: 2021-05-06 00:43:36 +LastEditTime: 2021-09-26 22:05:00 Discription: Environment: ''' @@ -17,6 +17,7 @@ sys.path.append(parent_path) # add current terminal path to sys.path import gym import torch import datetime +import tqdm from PPO.agent import PPO from common.plot import plot_rewards from common.utils import save_results,make_dir @@ -51,7 +52,7 @@ def env_agent_config(cfg,seed=1): return env,agent def train(cfg,env,agent): - print('Start to train !') + print('开始训练!') print(f'Env:{cfg.env}, Algorithm:{cfg.algo}, Device:{cfg.device}') rewards= [] ma_rewards = [] # moving average rewards @@ -75,7 +76,7 @@ def train(cfg,env,agent): 0.9*ma_rewards[-1]+0.1*ep_reward) else: ma_rewards.append(ep_reward) - print(f"Episode:{i_ep+1}/{cfg.train_eps}, Reward:{ep_reward:.3f}") + print(f"回合:{i_ep+1}/{cfg.train_eps},奖励:{ep_reward:.2f}") print('Complete training!') return rewards,ma_rewards diff --git a/codes/QLearning/outputs/CliffWalking-v0/20210919-211343/models/Qleaning_model.pkl b/codes/QLearning/outputs/CliffWalking-v0/20210919-211343/models/Qleaning_model.pkl new file mode 100644 index 0000000000000000000000000000000000000000..45dce51e48625528fe3e9e518b9c8ef538085da0 GIT binary patch literal 5423 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 literal 0 HcmV?d00001 diff --git a/codes/QLearning/outputs/CliffWalking-v0/20210919-211343/results/train_rewards_curve_cn.png b/codes/QLearning/outputs/CliffWalking-v0/20210919-211343/results/train_rewards_curve_cn.png new file mode 100644 index 0000000000000000000000000000000000000000..3226b8a24140e6c3e723d0dc3774d363ec891e1b GIT binary patch literal 49900 zcmd?QRa{kV)IAFF3eqa6l!{81C><6cA%eI8>F(|ZMMPQzL?k5yHr?Ib0@B?e-3@21 z@0|a+`EJhrx!6Bpv-euhdY(DQ9AnI>pPZ}&A>M5~3=9lH$yYDmVqjeH!oa|szJ?9& zJn0>uhky9(#FXt6EDh`&wQck`z;^ z58KT8s_?_#C#(shtne)wg{@}D<;PX)j=$`jk&gS%D$!+UUOYYz zT`c@nQTTxEaJ9VDD==*Lb=YFqX$2_?h5B^;`L(-^)-N10-#oo`7k+!pf$IfteY)Oq z>;LCJd=b|z85=1w9m*3S?5#iBY9M}6ZING4;CwjYDEa1%Wpe?#b8h?bvF`lB0?Jig zUS2*-)WiJZ{7_TmWSPDuzNylA_XoEjkwwWVWn5Gm>?@{GPn>Y&(QH7B=fyDrC8yWL z`KfL5EkmoNSjV07!>KtdzB7wUxRLFQ4~5BPJdgS97rsRL$2$uiCDBhz$s2r$4VVA? zs@xw`9bMq(=T~!_u;1I9itm3T8k?nB^6lHV=QcKv0w_4L4}|DEj?ubq7TzOqL=gNjBK6h z+7ASDA~AxSm0{*%#ZOlGg-+KBWTGCWj1ni7OnF38SytxtneHj)j+k{uar>I)RDCCT zBNQs)e!{8Kc+H}6Tm0g%=JLrhH8C~cQ@C5r`GG1)jP)*F_@RWPByRuj*K=7VlW5XA zZZ(?KN3-~g-LcZ*;-9DXd7`tPiM9j=641Ku$$Omd54lWi!V@ke2C(Z4piw9d&(rmi z-5FoH!4>6b9&_~Gk?mrq_Sw<4o`Hd4`T5R5N7?j8{G(}aVzjVwYCMW^8>ih<9?ji+8Hg=&?;bE(51QCnYO6{;gZLl9Q9S zYO#p7nyDCE6upy(@MEw;x|C80pN{@8CP04`UG)mz5J1}zQ|HJ`!KA7$9cj=2y~*~5*Avg5^Q>oT>@c+q%ij;ipH0z+=S z*6SF>78C8+>J`^;aqF}=6BzN(=vgbi){c%O%^HvS#l@SqZ~Kp!iOZ9&a|zKB(}v)r z_Dfn@bNTuCHMX>z#!85bWBVswzj^bDQ@n1K#v3`g>;8$H*0V2>u=hA!=k4ZSqQ+2T zrw|hp`ws_4_wnr_UGu4G8Wbu|CF_UG!#x*a0rjpa$q5TyixR4eiQp~+dPc@CvatfF z@(JYhHmgrtJ3EtMF=}?bVlO2m!XhJE(5MWjv+Wk=%k#r1NCinrNy3w;Lc0$;7e9nu zd5({dS=GzKdy^!vCWivM4CdhMW+q)X7m`9m5=%>eKy)fr#BbVft)#}A?4ZM^O*wq&&rm}+Tg)XtH)$XUQ?d^$g;zc5|$7(!9Jk>keA^PN%CoEa-V6QK)2-tpSsucI+Iqq``B z#0ftC6J121nig#2RaDv)-Uv4>L~3fRI#UISKY#xGY%+s9;A+Nz%Bnld$=Pnt`!XB- zh)w6Pw#LtdRLf%}9LW6@Qe_vS4C7`3xx3Sbbie$R#2~m%8{&)Pr&s_vm&2Met?L@s z?CdP_ghi7-nb3A4$+**8Q03*tsYlI`n?cu4FLN~CTJUsep{c9*&jFAze zLq#l`YB8tTFz1?sptG~Hn*08M5ZnS|6z4?~TDqyd4xgj4_Go+Vyu0aeSR|+VgqhBL z@5c1G7U%6CCm~u|=lL7Ri<-!H(45Ef!mZqKGkfANJvC0J>*o_j|Bt;!FLQ>H81V#R zi9%XlNJ{#VKXz}~auO<4V~2>uSc>-);ix&wpW;71UW!M~ZF$)UGP2>z4SHtbRDggb z0G350dc286v}(OD?T_UPnLlh@3>O#@)46S7YPxM-y?gg=Af0I38`1Odqa!D3A{=b* z4@#Qu5n-|desG64hB&7yV)8$D%zqw;Jz!<+-29Q3mq#sN_XR-s2Y_!uyO(92G6tIP z%fRvBlxNvme#bRDJhWYG&K1ST>sPJ%U-N3`DZ}?~!-X@l%l)UPwG6sr+RB#VIx^oE z{CK2~H@&ViQR&Q$tfsB4ZGhJHWN)Q(!b0X@*pzGgVKtiBY<;XGgeAN5Baiv$J7*b4 zvk|lGJT|hLS04}EO-ja!I2SN2=QrESB1D4S{XD z+r?`O#c9xqJ#phc2KJXBP0v_}HtPxdq3z|Q5JlGt?S{|W5X&~O<~+-(YG$m2I;}KP zTK9!>^kgfMZ&JIa5xqpPUUT5B`T6RV?&q%Hy2=e(BJQfQ)WZEYQqLzdLLJcP0vQg^h5;vE(i*3ca* zc+Sl1N^3H zZ`53R=;-Ji?R0Rkpg7%6_E%ddG~Mbx;gXadPP#_%TE=Oj&YY}Sr|6oRnxJ6%AgBHT z3+IZ}P8-8+uLPa(FOQ3}W4HYQB>-kRfco{4DZtE_1~CftMhL`0j%#EO9zNU|F^q>K zeq%L&QrZSAyFo`6(y>sllcxoUT084d!NkTkfY#!P4mwyLJEh4(J3eUj9aCXeb8j`}|Mvp#tkU@%3tplIX<5d!LEvHYjpqWEmj2VY7eE&g#@~ zh(o1cXrjI>etwlCjXZ|COw)I0}WZiJAhcw_UQ*(pYJG7yns)rQ)-?gGQV5 zM4{1;oG$zS790h=;9NB-XtieQeNb`zP<9%fmts@*+1UV}hliEf##LC!YjRx%-x~t* zN&${njWM7ZbTP1MVUL_vvq~t1oH&U^&#baaLcV;_+88fWbK7o0XSOz46O5`6Xjb3PUMDtDfc32Pk~HPE`#P(q zA+#Fk3p`*GRDBs^V7~gz4fukep$hwr8w8%m>BByvdj)=(Uaw*7@Kyc0iqw1P-lc)_NL)5 zu2j}g`w~)#j}@DlnCMKdY z322UAi?Xr?e*JnK0J`4&aAIjFmd|oh2!U%L3%$L)9ux1YPX`s>rv)c6DrXH!k;U*% zI(gUEKi6^^y#+jd0{;8|ACY1qQEET138YhWOIDT#N4d9V?m;BzEBE?>`GgIvF@H zhTX<^)R<*W)!q^O3*Mms4=Q$cx$a9e}$o^NU?a=n^LHPIYJMoui5~th% zJhU#$cWrEKi{{8kN&lq2p~EJito?fTg%iY5>3Z=P2TOS^w7Nh&32r_5#N8tl zc6R25uvP%$7a_F5%TqO;LAnVjls*tnY7w{6<|W+rmiLNejP?RF1_e>+3aR;aD{sHE ztG9=}5s?HkTX@LK_`z#Q%N`j}u~}U)$R#Ht;c1S3pa#n-D^nuH zewu~_MA8t-wGtT24iu`v<82m|8V_M$B5>1zl>>?D4I(-bgq$d;+mli8TFgUqAqs(% zjBFc%Y`dK$=TDKTl7Bz|6C>jt0fF+jyf(VleAKMUxn3l)e7{Dw^CV2Bs)YelbSEpF zg+KrlRa>A7Oa_=OYR(;i?i$9s^8m6wU}Fo4_q>QgUU2k49wXnCPay@J-}YgwpyMJ` z6oz~EJ_6I+xj5b2g_JTK7)NiE=(Z49R3972@-L9qtQMP%)X%qtt@NeflRT99^VviV z%3$T`MnxbsfBxXX8Vp{5BE!y}Z6~9tZ&vs5sz+qa zZnt3a@84IpYA(--f#QgIR%;%}J2~%6q)Wi66vp z{OM**JWv_*Xb-_uAE=-_uGoHMR{Qli$%KdN~LfVvs3?sX8N2)o9swMCi zw-XSoq7IE6&PT8c@<)fM0+C8SCQt64M2v(R{J8NbEw%&r*N>ByYrwRi&_X z(-0K_#S}zBJrHh{oVj?Hf9c5XnvLZ9c$}XMtX5BFxlKU1zt6z1yBKYG;yyg(IOUE= z5h0MWfZ-z?KY)2fLfN(fyu zYlp7c=8 z1>tD&;s+wcpjyan=KV~x0NU)ew`VsB5VG`7)AlyM&3)0!Gj3lZnnb_^2no^T)KuGE zF$zq?MgYm!3}v(fi&zN532S<5rh%o%5X#9*F|lnxMx_%UGfqk;ptgt}k&a}~+C4r8 zn`Hs4lvywx=70IpqWj%}*3GqqYz0@5m6DL$QI(Gd1+O|E#U<3yvHJ??&Gt4b8 zTWV*lwxDtWL(f;qLMS`9G_gY(u0i~^ix`vft8m<%w+v(C7gl+gnf*axg+XD6tgo+^ z8j6QvG~mHRDPWhTd4y%Dj1Uf|f9a`wZbw!{SQj(HRicwFt88FF1>Ck&h-Qd)`_@A1 z8W_M{{$-^N+d{2CY6 z4LG;lmlE))=HY!zPK+Z1)2sJ1c`c-*@F23draVsB%ts4*%U^%=_U1p|>yHxk6ag_q zXKZY|Hc=5tWl>tU$p=0N5>ZGE8t|Y}BK1+VtSaip+yb#{2(<~hGa`2OO@{O%)fE>O z+)odhW~_{URi>qVX$qjQ1^J^SsHFkwuYr*F$h~%9e*PW5)(8bpx4_pKi=~UY^ElKDi?#q()V-4>3AtQ+8JVuO);Ij0x95VlK_C!>(aA zCZ-u+6vkUWzfM#*E`hbR2$7zgkl+R9l-a)2aHy?1#eQ#U-QCj=96*(+J}u6#U%$$& zRHM;5uo<@POsUgWe1(|%5(25ORerYRM1pR z0NePXn10Z853~hfpG35>yqcN}_;y%0M47vCK41(;Ql%aPlQ1e+`&D^GSph?6AzT5_ zYxJ#@ME=Hz9fkd0SW?Hq3xH5j|a>_ape#%9H(|M4dY;ALRGbS5m^Di zb>+dRsn_LyVpEatG>Kb_&Bunp4?sLj@JQXZ>Tn`HW~PaP=X?hW_z1;bRtA*JzG8D# zfNx4}0|KyPsX!0MPI1Ir&oytuMRTD@K#E_JGrrOaI0k&7NKqNBqM0E8f>O6HS#qDq z(?9XuX-AUI6GE-c$tu3sZk389ce-p5j;g(z@SzMl!Kt1RElw-g%Pn9q-1_aL5Uq&E zF;Zwu0!WbU;Hs&WVSEt1spjqN4M@~Cx_Ihyo0@u!_jAh$3h=(bvulR9 z?E(4R3jVLUt}6>9zYrL^10GIqqIt5qThNHfiGW)fYz7m=2}tIwJva;nkcLn+^qwUK}O$aoO71wsmyqf?j1+E6p8r0DjX~ zVEE=>ZN$6RXfImweZ;>>;wPw&XcdYZ%r(Us{nVQw=t?L6sA|K1((ru0!)x63ci6th&CkbQ)EEm9o3RZsv>jxT2EZ1f`mGMfOn zYqvTW#I9a$HENtXz^5nnHx?)qr`@vL#l@+m`Ao-CZkzd6K=e60PF5Jqc&LEn?p9oU zB9Xnr!}Hy;=A1mTL+tcmeHB$_k_IRbNiEnMLZ>-LSw{b!^}7j6c6EpQ)VRCnkRwgz zYEDfYmu~Z4r+9$t|IwaEZ9x1j#7P5UZ%ju!eV%)bh$!2dC*Ja_o%^7zDx?^~$$@Zy zK8eGq#QX;q?qZzl1|rq_$rrMM>a?a)A~j}_q(oOv8WapTn-~5BKPv+4ZriRWLkVbR z=xJ0=?M{|hYGx|3{EtZBF$D4V1q3Frs$_&dMTUZ}1+H6Ru06zv;%IP2@xRvByc6#h zzR5`JpeBP4&gJ@h%F9=S-OQCz`6uZlY$_(kfr{B@V+`u2;%la?fL5IcduQOGFBC2> zmYm9O+jA{Sx1)^;M!;Op$p85sHJ#4)%K%z9h#!Ec?1(E`ujdZX_!@}IiDXe2!<)tL zsut-fMNe!6V$Yx{gvbm8SHU|m|M66P@Yr>`iGqJMvjAgrGZ^@LgXO+&YMcw67f6aL zlYXyIRXCXDSN#yaO)Kmo2X^zuLu{~?>JyWPvN2!U^y=rfzkd7n zcKzSY#0!M10L2eMd_H(hSOye7wT2GI7Nq7bpe`qnUIE9AHODG2@G5t^=inq8^&X*a zxd}L|ebLA!5D)!m~6xZ6)OFWqbo#y12%9|^-v5|Re^Y^u5; zPc%PpbVTbaS2$!97psZA5#A>S^*sx<+W^WWDFp>LI49s)CizsNHAfBSh<&Sv@u+-c|*o+~n9{NU2X z2AYn-#tmqCyRKYHAK81n>3OMY{5}S(cP@`Jr|%q^-N5x$|6Wy#P||Sr0qPkDtYgsi zZP*(qBc7M%ywcxUXCRLMt1K`9cW(Vqu(YtSaB$o6VVLBpy4Is8Int(0NADc>>JBu1 zID*))IncVQKKaL@;dyQkEi6#xZeZsK0eKkxQG+xNKn1bgsR6*~{K4f7@x#+jA$4~Z z0~;|5k<`gG>b*A!o~VkYCXjv*;YX0eKWEk|r)urR9RWc9O(&q zL-%i*yxU%{1d7N6XVVGoIO&|)y%h1|M=MaPj}SJn?}HA4#xlT!2&i}hp>dMjEG!`k zbP1d0@~3IGc1tjg5VTt<2|h~+T4Ds=ej-K1?T`$rI3JoAw@Y4~Y`4%MtO)^7XnIX| z3vMPuzfR@{=dboL#8CtH?(a&&Fo@r|bd$cXRgxLpK=w2|ju)6)(qDt=59f*Ct2y6u zF%Z3@3Fk<*fDeH$CSM9ln#zt{AT}8M9EA)IrKJxzw9_DWa}F-SV=^L1M2E%4Ypy4M zdHNnNDQ}W)%JWhfh`2r!$TW020QjsAs|NeKKRbi z-lgO*qbw^cL)h5bR87s`-0|nPM;Gr<1FI7iywKMLLSdTqT8LdVr02f)v_ONXH2=2EbmJMo{$#NEA}T zfewdEeF_0MDbQ}fu01_Ds<}KBwJ2YC$X>PAXTU!+_u(A|RwE=?3oyVa2znf1T0M{k zqjQb#`)pdJg0{w%oYOzC9|B4>C;fT|y!Xc)ocYkJP200f*^zTph6qheG z@QzKaJ1C(qQhxt7(X2-LPa?zBOR2!l!7A7R3oa3jF3$XBd8vy+tw5j`D+@VQMAZN) z0h+(Qyf}A;c;ti8f{Zij^fY#|+Gd-@D8s>H$2u_aYk~4~T%J!|BK?m6=Nuh*$D0^f zpL&hvV;v_EvNupHveU(mPeg=tk|J1?@+~F=K=b~OtzvHXvjML0G?HE2WSre}ywn=8 zPzQ+qtPf^UA^INt6=L1yz!_))BTh1m4}ir`qg68I3_}MQG=gtq;e`Gt+G;LbkZ8l9 zbCWYYGu`MDmx81)V<$&yYS2QVO8~h}h9c zPOps=WQ?Pd6T!|_!T+LKVgaV6hc$8haq zc=-24CS(XbR7|nx#M3fIj4uG?`fw(N($(w=BbadeA3OF z72vQw%4NGKvr)M#3&++qoTuv-6!bt?I2K_h$l@XH-r*%8LKTb+9dH59fVv|qZ*6@A zx}^h9Pf}KP5%y#@RDzZty=!Vh=)@qRv3y0->t2C;>Y1;_cg; zK&KZ#AX^>~j=PW556lBWN&;5gJQf2tM+OBdp)UmLnNCk%{{{s`3#f)B^OA|*gg>)$ zpbd)5PatzM2)G&a#AOj)u_OSz#6(mt#FYUw4M|B!LE6?brN-1F!!up?vrN*zjs}7m z3hI4GxvcVRr^7EGU=B$S_)4=DCnvP^HQe`6HMy>Rk_^_M%#2LUQF{>c$j^U`167-d zfA{shMLZB$;r(|SE-MejgKnc1YWE4Lc#hbrRYMaQ`KW^*j$NI9g{Tl{=FCGU28lX^ zkKE_r2!S3yg5OA22Wep4U3nMl)@sj-`nP}5B*OHAnxpt6;+ z)sUPWsdD8VE3q`}_|68CGEh4y%n6La!9w^uu;886I1K3b`KM8dnRn+bJ}=}1 z8|;Df_dj5+-NqUPOQs2MO6_g{JE49VLtNpnfvDUd2MGMivkLc4JeMys~oIIXEQG zQ7H3bcVM5uX^N(1*T6A|E{;42g#%4DS5S%o54^x(T?P7!Z|9upRvQSj(FHEdL_M;P(LZeVkOE8$mYr%G39w}g;7Z22eJ|av$ zefjwD3Nkkq`t4giGUkM2)o&SXppFX>_2@qbR7@S};#CT5brFHxfm&PJl}v48jXq7Dczl zfBpIe(<*2*Qd<9qe8moC41-+~7O3rGa?4Zq$^hn`QlvGMaSH~-5=y4#!O>~8o#hUkn0U6Bq3bVJ%K zKgvNdMm)}915Gg65nnCq^!VhcIJl#$E30tr>or!1-3uqkS?86M$mPi@!5*PqnWDS& zf`U|A7Kcjxik<*F{LmiS%a~S&uC=|2rkp$}a4%H4YcYD{Py`H6k4s`gLZnk61w&+FsuF!AMaV2%PNrMBSs^MG!H)PwQ1y?+A% zh;s~#S@h1KjRiA&C`9Ds3o;pGF;Pyl+JB=(`Nb3+ybTRM+WnU?x==pm>;y6JLI58eO!hgJbE2}u-6DDHRE ztE_&e*A8n>|BQ~|WYq*^Rk`0WHzQPWJ$*Vl{8jgOP*X@l5<^IeHbhER);fu9Nb3){ zvog<~;j$|=9JCPX!599Vj19xL`wL5$UcYvlS*L|MEoGkca(ZU^{-b78y}M)UaWk^Jk9gqbpFA!Ik;c zFvB;P`ViTYUe@3YjAbi6WDF2-Pau+iNrcdz0f-|G#&c@%CaVo)?HrFGtpd%_$79ivyba5_JFB z;lb=&kc|fl7vFT)`RdPaZyCr7FvaB0*e%)CGbBwdbxkd%{JV^)y9FArCY8T)Suf_v zI$pY#RRc#zx^Js?^{M8NC5&Ry2-y8$?}4fc;QOp)&*>c=p49DyGv>Zk`%gaa85whD z99(aoA9Wc^n9%lk6#DPVE;pv6I$TvzIz{)ZjFp;uvX3e3mTA2+yjP!jW%rzpr@-Em_Kh0v zr(7)svcqf@`y7RmmWGqqk-ari$*<|hqRc{Q|B0Dq9g*@Di_F8B^4Ry4f}Y&x72>wX z#uNYcsd1L$#K*RTUU5kC$&y9wj z^@GPN+tCf9G*M~HYeHW&)7i3qxfkIU@{mUgjJTG5jf=h4JMea3Cykkjs{fS*-7}d_ zhtY?pqGos5Qa|zZDt1$klufR)uv$;sIe)>!N1r#h{1K(zLzw;1O|`}4l$i4j&6*RQlR_in{duO5!ZRaxOz5R+N$ zI#(_KxbBZeQ+Ko9W$*hq!+7PDN1nH1_0&t{TtECb|74~(rK=_bWFw>Xqx&Q`C?(ZC z`4H-xWBfR-*$>>9`kv9f{JAa7us@Ev`qGsHSf)Nx zT%*)JnS2<98lcTU|8sWmVDhvS3LJy+rmy27ALoM?YQlgR`FbAgoc{D4_t3UB%UXOQNl zUW~axQ#K!-eA}|ZO+jFjWBB*D;xar8*8plZe1CZVq>!DEXM-|*LyZ6>>yBOR@ixTAR# z$!q-zXZ zuN-HT80ODCr47An@Vo21So%bhw-Vv~vKPq?W+>FL`#xq2J2AZr!}VJxzgrjYvsHY8 zYqZL7Kh&MT8mbY@e>D=mVLm46T6WrZF>3Fd@9(^rgc_!?U>7W6(e-uI>N=1iPhOh~ z|6qP=AjdpqZh>MX>f%_1XT1&cX^sNrAa`7J_bLoqBpZ-&ZRSigiYvb|p%AZ0HmX4{ z0d%ysb370lMq=h~;JwLHZEp3^&)Qs6PMf}6q~Uz;E9e7yJg4dwQtkCSbBWAGB0Ku> zy)OHfOv@Z(9(h{wbv6t0?`=>wg?F4JDUj|2teK66c}t-3eh}eMLpVLP=sXAi(7o^7l)r~F3UF>CL8WIlk2u_lY__Id{D1qKwd<^`K= zkn9RzOTk1TV&KD&Ld(ftl`QuaAB^F(4^$Y!XesgRprcpPwL$yLj1CEm*G;lqBNd+c zd0R%VY4^-r0hEsUBlsbs=O0mRT*Fn2vr;p=XS+w0iP2i;(K4U8+&$5(;hvqY6*Ui)Arlq_LE?D@J=^cXN<4#RJ$kP~_=pTC z3Jg>qV&LU2S>3(m%(L$N78Su;GuHSo>sA_BFfUqD^+I|5+>4FXdS{lwv~(^}WN(AC zDYeF|B?(PQC;+LV$u{cuF|o>5^u(D;!IJtnDz|u}W1(Qm0b{GCsp1O}exFBo^{#-e zkt@4smT8t~^jqJ6H=Yx}&pjuy&H8MmzJ%oK6jV65PhzhT@nXQ$+Mw#J@lD4zmK<7P z-X*8Us%UbFPZgq4Jy^)UqfhtV`N5}KYK_?Za#HyGg-^U=tLRq-QwTNB$|KHk9`U8| z4HpkSlQO!l6ud4e^OErayYlxPj`N_Az}JuZ?*8rKu@`lIVByd+^@YE+kzeont(p6s z(@(9#wN&*V3Uc3&P@z5aS&)u5wzK?FlD~mPMzMH@!9{48;wPUT(X5Uu*O0{bM1^(_bakrg)#8ukWO(v_ zd|uAl3@UI{f9DIdSiZONgRfh4{j);V@q7!%d zgTG~+zt35w`fx!4%b%jzg=pTl-*y>3XVd@jX$sYtZnj(26vr7^4%4b#W=$^5#qe%< z_D6t1Y&A9}p_K1QymhAOyQyYQ%ff-xral%r zOXR$mIihgwCcE$x+^TF3brGJ5fR-uMV2zxuwbu8mgFYbgAhjAr)yZm&wy$+}phnFScVUg{9&D6=`UrgNd< z_{IBu(>&QI6ubK;51Mj~-^d=H=lhQoGWbs4!I~4d$NYolF;C1w3jC9*Ybex+eVP}A z=zD-yT%t#unMy)R@guP*R76SWKf+uwradzE+EhAWNAsQ9Y6w0+|pv6z;K7v9IVubH!1uMLb)(kKRsS9MEsM`R~rV&HCg~E*9DGF?&5~f`|8o2%0EgrmIRo zS@21*m^}?nSfB1?#O9u2n|LAnA!uWUNZ_-;h(~F-{$=LO+6|hh5+lLTt2irkiqCCg z;@o|0IG6bNpEQaWj(q4}`8-Ab^(4gaW(8Gb$7?FJ@$}Mb0nANaynM5#?E7OOq|2|z z7ag8DKkHwmU}QgCBGsJcpYD>7#4t#3;vjv&pgFuPcaiSG>CG;;o@$mm>(xiV=<|u* zlP&E*n(@d>CF@Hq>SrxQF{_bFU2?JvffWOddx8o?qDKUY`3ZOt#Y-ZY@b6xAg##m9O-0L&J$#tT-x;wKRIXtOkjS|uVdKgo$Tjl}!g^-4siN#+jka{0cJj!9 z9@4q=8a_n)Jo#wR+=evE{8Jw(%Gz?8D1sGQET@LS0=lfe<}S=}D+gln{lnt2gvPq^ zd^v%I{0q0EIYlU`XJrR>mV(!k?Q!;(uh(t7xC&|7Fcjd(ZJ>- z{ORSt9$V?H1N7`a7cF(q*8{An^~r&A$*oK`r$pOwW; zHnU>um-oD-x4A{88QiS5 zZFOkwZTc!3DJMv=M?4chP|;d&>-|B^zM4r}azW9TgJ*bG^R7%%o4b}`-R?&6fc6XGqZ*B!f?SZ>Sp-a7g@6D#AL=Y}t=m4>nZQhqWilvAF4xn25a zt~tR;PX10MVI3|F)T5;TeDcg1Fl`<^`oqHf`>T~KO)t#@#&DgIP!10@-zN1>_%t+v zB}?HqCgeYy=`e(b-bib{W8hiwIcCpp&tEF{$(M|ly?gf?>pyhrR3DpTiI)(TpmnX{ z4+58`ZZuJTnn>AM30ZCHZf9T@`Dw~=`}3q;oz|n9x5%U{JeVv>KrD5hO}RL1h&;u~ zAWWSIrV>siH0${JI=wWO=;m09?Tm316SMW!#O(TytU5K9x@&vln_(sn&Q1qODC$-OhN^K@q?A+%zb z>e=R9502G`W0ky-q3$;e=PthHD+!8Qr-vsj2Ka4@mf;j$iW8GiS-Rd5_E5p|A z&iPso*Imkv+*_j~0i1&VNOv@^kb} zg^|V1+Tw*f*&8n7=~R65jA8vrnQ70QlWDtu*#(5EyLOJ#hD*GAg=-P=Q8($sc%~C8 zmpP-5-rV3`rg)FGL-9tB{wo_+Z11>h)8)7meBXK#=DzQ`a+yww zi|_d}Jgi(?P&%;-p6$H5-o{aE+rU4W7vUoI>xCPmAhF9Zt?;MNB$CRofP;-x3Eyk9 zLY{IFEsx$_xIcePgX?u=EBHh7NuAW@6j}2Db=F^cX7L9ON>y0Xi&gxUHCp&2&G)$z zOl8&`)9&Q7KGXIiiA}U>GFEqgY^~@>k_VNV=sSaTj)O40g{`8Tn!? zic=T2dzv2;MG{ulOgGAUmFz4NdNqyq6umBt*jT6kg8!lO-sZelkzhXOY<+U6atSv{ z#l$ni7uZ!5#=1;~QCZNZ8_|nKa39Tb}L4%Lj$eaD#Ou%7eyV z;7D>tPTM$J{klF{(+W)H|5_F5^U*f;6{9lj0j46`sz8( z=U~b&?94ZsZe!N6XkJMFt9}t^vUy*P$zXNnZMnTgM^x&b1jX$joh@uE{M@rGlVUnX z&9Bv-Zyy^Hn)l4vUN+6<{d$q2u=H}H+6p7?CQiV`xY+aX2$GZg*X0$Xc(BsPbdL4k zJUravd*z#%;v{5YGhUZg$5pug7dN%8J^x7sC)xqeZYGe1`&*iWITQ2M5S<-t<^q%; zuNUUU8xDs1L`x$firdl_&OS$r3NAPP3V!$(MQ@0u!c+?@Ff6R|Z#qA$6dh}r&q4`m#njJw2BED$ zdMl8vgtF+l{mEY4y0g0{Z3@~i*+E<72$_1^eV|MG>o zbs0*h-Wwf@OG{zA&@?8l^LLf`^;by~if&upkhC2S@`4XHs?eTs?$24pEvSZkBSloD z-zi_Gh(LAGzvv3goLPD&Uom`Lqcr8;F5kCAMm1;gg*zimcf(_Gb`iT5eCDGJGaHn< z0XpFKT}(NQ$y?<(1(kEGZ@K;d6;*!hnJm0gpZT!n!S#a_B_gjUY(er7SD8***$TNY zH>>uEysAw!qm5Y16TN#^Nui4IUrlNJq{_(XU^G#RE3epRBQ;zu8tIT%S9v_~5dQu! zi3sSaOZIEQ4Pr6_^^cCfOt%!TxI@YW=|q#5e*Lg3?l7AnCKz?uqanLIh8=sw(yb!& zOvke6-}zP5v*5#l#8@>?2V%Ie9BHY!8lA@RtY%I2nzQsl?y4N7y!JEJshH1Q8gU=l zZw=roOlqv*@N)mQ5{~u$HLr!6@>{FBC{tfqoBcuj{LYVbN{QsS*(Oo$QEfvtJxl?y zrj&nHWXrgCET(U+$>kQh)jHmN`8_Df#%%bRYl6Gas+%3&@;e+8zXriZDa=fH%2|P5 z%JlDxgahQp?vCEtY28<5B9clloT6nMv{LgAy&6!W!%{>tR7_|X_sDDfxuET0PQyQ@ zL}?=?B2`>|ssEJJ9^>gM6Zk&}Tsym|acXvzop{{2$!hdLxM%KVksa|A`-FE>=91`8 ztXI?Q>+gO(4jQhzbmL8v(|if01di&%6iMJv!8dW|Z5|&}AM|Z}9%!l*cbUn%E#1MjoSG@64(e@SjUvP;N&1G^G zt@$rMb$6=f<9K~&o79(pqqh)BHB8aPxbOHy3;f{kj4w*}Pcoc#PrEWl;~L0bl=tcz zxqkE#I+gWMtBx=5b*vpt68zq(C1o41T3IRX^d+i-W4#AIKC{`tkwk~<(S82x=2J>S z7mKn4$CM7i5?tMu4{pWbFAMHhguAoTr#`TM!L;f}`G@Uu$%bHxyrGk82vrs;zlFeD znKFIjFgcMiMuabK@N~#t#`493BElunlAuPjzr3bB(qgfrPMWK({gn*@Qfut@p3CgL z_7{1$MBgrnLF(nW7~6C3w^9XbdeFV>tZIf+DW*4Q`VM`RGf!M>!A~A8#keRwH9-UM zk#BdQ2^Brzv;HMT3rxX+>G&!&tLF^nv1R@{0W@Y4o9oyUwxwPTBTa>V+2j1V!cRgD zJ%(jMh(gsKmj{qPawoYd(CC}c&(tWU0tfIMtZ}Xx^6%!dE$i|t;}63jdD^v(#%5FKzD*7HR6Ju4Hw;ywcG1bc21*xtx=~PW ze7=2)>Yat05apI!;?G=%wXTbaQ^~(e(=U72Q|PfIf^>S(?s|qx+KOsF$QWkiLkZ|c z@zsrFM)=aNPsWyfS3i9Orb4C*FTL-<{Ji{vw99a3dgnz|WxLBrLN)>A>^Ub7CPNe9 zYUOoIXgJU0c~^a0GRbCKZu!@+y#UraR!|k?Rb3H|^vNU96JEH89+1aCVLz zCB7ectoQbMii_*|if$3vN7=mhBr+i9<}2Ip<_t>v^?&j87Eo2TUAySB7F~i$DN>?H zwrcLPxVAq~`^TV|jrr&+8;Y8B7X)E;25pq37Wv+h!=f z*!jlWiwpIEVFVtq#33w~|7b(zsaxxd6`JEm8_hT0FlfFe+v_Xw<}>h(dtyqmrLMiu z{$Qhm(w34LUvg&-ot6`5Rn6}S*B6jX?4=6SDL$LX+cn$VN-$zMR#s0v=Fhd9_j&yk zllP_c{9M<&6XGKz`v72$Jb09wY8L2{a%*^cu38-SMllJq1Khzh&x`qx7!9OdF1fG- zacIN4LdX~_#X0+~iQ5p54=J(werIMQ%?S10*2-@`+))U6b>XM2@j%6GADve>vrVT$ zf==B$7;Yw7(*JB78~FNFV9kZ_2osHt908tPKR5B@dRt|iqXycWUAn}tH%;&A+c;Km zSpI4Kc-AHG1!I!$40YZnUqVh&g+Z-j&xw8apPdsz-`LU&&MmQCjuRZ$Q!>|NVR5Fs zu4L@qRewhJ;UAZ8nvmZR&ar3mbP3K`m-XKEkl(&P?K9F6(0zqF^DY}xzmz6ZDQWlb zAnL#3J&pQaB?r0zQkSnfZk^qC-|$^PutY)mf)`5a(#)W@kx~TNZtmdH|iddoy@u8 z>=13lb#>}SP>HGdT=C_vd3^Dq(s>W2xAH7}jv++I8#?S{7{PY==P#WCE1I#ctZgJC zrCUW?@wKDrcWs=GS)I2WD`cLMFMpMK)-`LwQRMeKcFX+&o6R?Ly~2$Rmr6{ZZ!svw zR+#*fR+nkZ6l)Hh59wTbKdnku`WgUfJfvOXLOn-X0*ijjNGJcT@oQ{#q~pPjPwjk3 zxYf?xXzo_rV3S|@c+3oLD2m${zxihDs>6%NYQz--^>0Uh36R?=-4$&ciKdaW)Tzw1 zk61`6X=n+Z?}+vNb*9>kmifE9W3?nC&6_AHLngBzqhdYA{`u5MQhg$a;|#N0a$@k= z%h4}??dx0Kn&}rJ;UQmKub%ByPq5TDI0a$892CPp`#;s5?avoQ_t$c>o1ej-9%f;_Wq7p|>#19enK^yEs;BoFMRtaF=^#jBWO6B0i5 zQ)`x7Ne`OPV(rdxU~YR7U?2EwJ>i%uE00W*UjA>FNN42`V}s#1yy(-iL05txa?waN z<8vG>nW5IdXc%$=P8&^kZMg;hQ8BE0MBAgv{$nOKzjo%KF^}X&k7vUP$6p6twk5ji zRN+_Z)u_Kx&wZTtooIC2XU5Tu_0OJViYdIidc}$~O zQHzybJJnDqjcZLwx7XSFS#I`nu21476W_S7wEF0)R0Er-rDvD(9!NgwBcB_S$T1v~ zgXxvKsAOxiI3@pSB2m6UK$uFmnM=AY$9vntD)>9|Yjj#$S3F_}3L`x~XuVMS^PVsh zB>!{xRebJk6Z(lw#qjC}6<#|Fu0Hxd6SI#VXUU+d zP|8-pe0Av_jUGK;{O-A6wfva{*ZXGT^ZUe(E!T8gxr>~*YUBLw-%5235>B6}43W*e z9eisFw!~lPPMx~5>gHx>%q*ip%B7S5B>ZfT% ziJnV;IG^C$LS>FJo)%G=rR7#ysjtn1q-zJw$B`k`aA3KZP!x9;nB;lKDa3{^Qu4d(un)Dch~mYw_v8u4AqYY zcLJo(a?zgUJ7QqLw^JoBJGv>u@G860eSI#5RLhM?LE-vXrEl(y+PJkGgZD=p4OMAv zEnm+&2T`Bp8}e_;D12D*xkqT$#l?v=43WQy?$q3Od!U(kMcdm9$u}oB>&gJ; zM&ps5(N1=7vcl0U)axFdRl@a{g?Y(TOLb7;#St2fIc#bt@QB_ zDaEU#8ApvR!pZbPk7&PJ?!?@>{aN3J1x54-;Wl+q-{O;22;y9!y!oKPJxrj0Yr zL{LzX^lRV!;a$fEznaS*owWkLSMeFgFLu=1kjK0!Kz<<7dQqX}TUN1P_BreNS09GI zxG=izUu7Z~(%@)J+%*kSK3%g+dh>R%i=k2eTlG_wgPD)bdfw;VePzjgEL=OhNVws) z7|~T##&JBENZNgif>&cGPg#Xry=`akEdz+Ar$LBKyq3bxP-{`wprWLR{-|lDnjF`o zBMcB2Hu&mnSa>tFLu=TYmEn73-?bU>@m)IF%b&PwLkDcwKHcl)!O;<<6k=ybNAiRl zPPpEp%z9*c(Nf~9kJ%pnGVx~yq_&Jop8I-B#Si(fftA~1O2z&rzkH50OFy`4A-ekK z(E&|X*SS9CX8#E9xsf`m#^I(t^$}`VhOI|Q{&4d~jIsN<@4;r8@=`}cW7H3p-O!E? zd5YiD^M26B^cvO}>(;?GEh5!?vF;?pB$PQT{EmcaO*hgOt2 zQ=sOFGA|0*_&c5g5)#j}>h-U+WjX`E6LGCNc#W$Un3Oh1yWY;-6XQNNasH`PAVn*0 ziM7W2PeRL;(i4m_dI3nBj{;(IJ2=hZAesQfV{1LbM8f!%*EGcOT$52DQc1C{xbApk zHf_}G`Y%7}V(Q?}m$^@W`PG;|EAeAfK;rvCP6_b|OaN=}&P#{+={<2@QK^$2FBQyy zxTl4aGPD2NnjWH4X1HkT*G^!J(?SAhI+ekROgUHY)4PnnIwEe&9USXH+Tb)}u7iL~PyeC*#53a9f*(`MBJ$2ODedaLS#`PlB#5)MgXM z7I=594e)f$i22VLH_U|q4!`7uN%K>=4fpSvu#dg}HGY2c;XCW_x#PPuV)K`rQ#F=J zjm2hzj{Fu_${XY^<7c|Zs!wmD!Io>&IF>m+{x%gtOJu$+5g&(WppuULqbc8R+G&59 z>5~<1;iTI2OGe4IZ>#r;f8sU|IwVIU+%RqD9{-8KNZ6`eR@}0GPL38jO3=kvzr9$U zerq_!F>%D-D!zoF%=Zsv7k;FusRt=@&UVxm zC3qW^f9qy z(2HX^MzOr^1jZV>dn1X{bTTWhCk(yK-2mp62-dx*tRMXdm0{rfEDi85vy@o6W566F zNMzJic*#4yy_LJPO|LCoLZPjpA>xfGdd7o8l3q&MG<1B7{5D21I5b7;oJhQ?)@JAY zjV$4Ut3qNp9qax3edAwmKBp$pqZ~@K%kO-wi=l0aWp6G1rEK4Yx65}+)?-)ra09Wq z?h1sBw==(m3M+xDt-re;X$fAyr~ zY9fbxhksz4$J$OR?n3{Z3%Ol*+jvPps&{FSH=RsipI`f8YX4hPUOlfGZfwf@>ZEkp ztKKUU^8Bp?k|r-a?DB)d5W@rM)X4SCSu(4+V2P5 zuqvibiG4kYNDoZkJDYFc2FXZf+h;yUEX=ww|oa{db+k zhQdgZzg3=LIA-#BQtx{s`LoRdLfbEWqBnUrLkZRwUBB-(K)v$O>>rUi(W@?)K;1e$ zkNeZHB6(V;Ebl*BHUH_+vi4>sW@UGtAcXnLS)G1wiaRc3sJ{!C0I?Pfh94hu#Swlm=HpWbOn{wdi*j@5S zIw)I~~_THiClD3VRp`=VOQ-BOL5;sVWzCsc-kP-qpxM zG=Geev1Q@I+80d*8@*DzMk{(xV%cO0l~nV_BHr+)oKo$~S^7q|S#X|d!)L~lO5}x} zh2R3#E`dDd@-oevhWf|nwh*pMw+Xsh#8&pq$$X^QWv^)>)3#@!sYR{lG$_8WX1^2l zJ4+73%W8Z$xQET-=+P*SjBL1}A07gjiqkm7zhq*Neq0+by_YK}(6+g$K zkuOA1H6N=`sPuOPRT+RnZu7#OpO)exaiPwL`p>_n`8wOknZ_ z$EGcWA~bFFiq9I}(}P@u zd)xJ7n8pOIC7|BhD33u|it`)wJ<1fQw2!&QgX900R!*|*aW!Z2V9#_}*URI+^;)$Q z&nu6LHGxT<9F^ju^hX}V{vpE4#jEB1yQG6!O#()KhK={4mNn2O$9vr^ zr}_PNgeq#;Y(ekgnZjT85M(?%9VwHiK_Y|ug{^hfiRhfW@V79NZ6H@IYIE7D7RMWc zkrY98YH$~z$a!v)hK@dCu|SncL&Gue;OJ<$pkE!Mfz5-wsVvi9m)7E*URf#pLqu{S ze0v+EH!qJshUEUZb~BDOP^lPh|JJ}_AV#ICUomJmd(;50!h-Pflt`4DXNOG;G3ng;Zs(8bo#h}*Jao295-_z z^*UnXtKZno1ti~!UOlVyJ%==M(qL%#oJha#lR!aa=L_kt(epLUEx*UV$j`Cbe;cVK zre*#ap=I*R+fznkn8y{TaMJ@328JmJ$@54cr_q#B<{R-Jq@P6+cl9J z?^ej^mLQn2b7sj3Vii|==1T??dRINqyHWW?#Rb``HN+5hP~ z0sctvscW58ow8G|_C_Qb8w{N;Y{&U=g*znRX&`X?VUDvQ`yItlWu=|QSOZc_Xa3dI zk_k!#`k0V*SCY54ki6%-O3TfS9j1Uy{utQh7jYT`NEH`u{4pJ^{^-<9n6Ja$uHV*I z#R-}h->Bc2G11AqnQzNQ4Wh-5z8oTlN0K8A@_dT6QVs7+Nj#duZdMjrVM*O%-N`7# zRaJha+!_@^>uy8~%jAfP91V{^>9pGPG#!C4M5)iaPF>o{OIz>SLWDN1keF>9XPW-{ z`iYWiQH+Mv8!VSUP1@NPH`w@bS#m@wg<56hn-3{&a`RE(=$$+^3TnvN@Z1C=y^uok zxgo5pvYy|nHFgpg`o@&Op^Jk)rr=Yx8`YbJI|r-r>5GXsoX$7Syw3qn_! z4Az)JrIFFkNUewoNY&WgM;+aw0RUyvncUNqiI0}&d2Dv6%6(uQp18yhRA;Cw+6Bm zyV%Y|ZR1Hy7|B(*r|B`B0+-qI@uW6rA19zgT5qXvzniIO9>(={9~inPA#Y% zg=u4T7E?sDqJeDaBI~Xg*0#0JDWRm|J()0MnF5o+VU)q4=gBfSn|Uf;s~H@zX?XWk zH{rQJ34e^RTRP)By(s}i)*^l!83?yVk4Rx}w9gt{{#>nbK%Qb>Nu@kIeKghl*d7ng zg#y=UfXRcJoG5`rzjIF1ael=iub!9|O#H>eeg4_3FneWO=wy;tjE|?%r_=A9&Kb_y zx_*rqpP59YPuKGEYE{JnRq&JPkjp&*P2#%}sO@NBn#0;*!cGw|9{oNcb@HewaHZQ_ z%sK~U^Og*1mEs1r*IbX0JDj(VM1TIb$l3C5{@Le7>SHoq5j} zpbWg;D67cxxrs{T!o(J4X55#1{53W>EJbxNoonqb+9$7{d(BrMxvOaLMU!ju ziS`Ego!&XxhD6@ip3E|=gWqgv5B^qc3Gar>vW}(duxO!;GX$TDS-nJk>f$X$9F+_j+S~-K6-5_&&_v)RUxWi7o-HcQq*TOJ_%Xfu#SBNkA)qj(y z|9%mlNr@|v*DEUAJE^>*goGG8?fvupD6-JzlMe5#J1WgHd@xC~7FE znF^QF5^DCL3sE)p9AbU(bW6$kIn20)xe3YvK+CW4tO9A}UYhggL|Q z`pwV-hu>$*;>aiA3?)z&5hQzWzM7c+_HA6JsMdAyJ5ZxeKV`BrhO;*4S$~w53rGru zfi4O`nJiG|DbR%wesvoq21Ji8qeL&mqiU>4JYO)B_j2YNi#JJ-5bw_l!YpID0f!CJ z=jTN1fY}cYN*`ll(wp7@We0Ykc?N<_1U-2RB!V8m&cp~DigR;wUT~xw)xrSsT|(Rm zQF9^Sz(={}p_TFZ{2K#NW=Q-K>j_=SYLZ5a#xs#u(Aj|NGp)f@+Kws$y+`?Ap>Fxj z-1TkX1bzY<3=pr#)hhfV@O$oSwdm^VYMy>|iKS9agnBvU?UcJ?O0bV4!uRhw(>kpb zOR+=$$f@_5^58DJ{(>{LDA`kFQWDBY_6i8vfkTym4bC6>`x7?o!l`N#Ac5-aL@5)1 z5uwA}>CI@yn>Wk@)h8%JlhZfu@9xfTTvDHynvLf4$ZJ+#>tb*(QB&<`)FuwQs@1uz zX=7wPF!FyM#7r~6o<>-JX{t}Tus(MM&f;ej6#51C0@kyt_Ioi`4@da&k^yZB=n*{?8$V9~F%$W1v zQ#~)X-(yw@Vs*RlrNR~*zqa<2;FaSRx{sLj4iAx@EZf|CT&CKuEJKI~whWZ&cX0za z*P-iNU71cd+79>X}|cSU)IIgy#RX*jo1&lUp-PqgAN6B zqcg6LUN4BnYoJFa?OCrg>G^#bmwq8GuAm(^T~)|QtbmA}3_TyVOhAfqp*ARGaR8$> zFmfWmY$A^;j@XKbh!pAO`#*j9^2G}oLqnD$fgcKw#YIHOdU@@sCN{JWINM*W9QA9T zCYF)4>}|Ppa5IxX^wdFpQ*A{hh==2i{qhGxt1$V=ta*x^6z@aKf4j>Jm z0-BA}f`Z|2?4AV&BmzY~`<}plbRUQ@nt(n8rD3R=%Zx|tFZ@P1^??%LGf-LR04p*a zkQM|AI+Q)6rNGf;QjbJPr9j;V%j1Ukg0!{l1Ag%x&u}{DU zp#)urPC8*>VFaa>LyztPErqDv*NZ4y22eil$2|1_b{BO0MsnUU{r>Tp^IUHL@OUn2 zpU?e_t;5cK-DE(TGfYZmOToPMU!1h{Ql})<{D1>)4cdY5HI{IMQAT;wr~f@)cRX?pq5X!~fG{$=~)bPTzH?XIHo8-C+>T)qc&MaObT?&V;haJ5kBOpb} zBXIQx3pUZP#uo(^^pM1%pt(*b^FU`qd7>aTZ~q*;yG#ZBsx|V-;seL(%_x@x*OyC1 zhmXIs`An|At@2395@R93>}QD}090I;D49uE`kYWucNpTqVDD3=IQ?ct7%v@BctCX} za|QxtazRfaaET>+&nPpX6YSJ7fiONwbnW;okAB`Y2m?~kkkZM_gwZ<0r1_squ^;>$ zml%kSM_3Z{;iR@8VSY}|mwoGb51!!Df@triodteq_=`Q!OzT&_bLZ&RIYU~{F-JO~ zcPUJvJ#lJ*JjH42CPJA=+&1Ei{>;k;9dR)R9eG}xeesOpf37(c{eVe{rwfSZ!y_p$ z)5n8Sy(i3lz2H4^V$uK+@x^&a&1N1J|6+)wiLw7zxFFi5=5vRSGeh3&qR`308$!=W zOAdCnRry1t6GAKXG>qUMh9m89{_o$umJ%c0wMioXZn=v7Y!^;q@s~Vh7f*~(G82m} zOraAi%@V~qVNHhkoKjl15m$7i#YX@AX%56+99T5o*wDq9Q{k56^%|!X$wIG^J-4s; zhpYM`5ynZcse=@cTAV@s(!@t;t`_5c*~9igNhzkl6tVdnkYYe0j!lXEH@X86aLd=0 z6znYbCxuRBlB+mg0W;Dnc zyhmZ~FN*7QIne91FzQi1PY`71u;>R?VvH@$jWwWyU=8fH`14!h4oP4Aj0K4y;bxQd z-}j&*Sq0UVkDXXI1^(uRFF#Ea{qK7`&^FtZd+_3xN|ubg{!@pb<2Rg%x%A#QybqZ0{TWc~|*H{PNw6ZFrldk0{5M9n}y5rC< zbUA2tl@*SAy|)U(O6q8XHmOqw<7_!~knwMvI?+eDiGIe$9PWBQu7VB0@fs0lTKcLd zz4YpTe_KYDbt3-;>#f6w$H2n}^(kZ@m26^Co?m~lf4JT>mEfk|Vtpb)OL=wUEzjnL zGQtm6yBSPCob?iUigc!0q;%Nf#Fv7uP>LtYizSB$4JrFcFeb?0sZyNOn}F=A!^rGe z1nvHOSRY811`_W;nNql`MfUufuulB1LnMo)5s9mSH+HAS_stHvvQM#MMG%yi7^T;X z7Er!%1C`A}2_cKkT1tR7r(t2y^)gDv4D1M$r!Kw#F1+xBgal7!j&89QCAOrFI%M`9 z7WT5Fj{2n8$n2^+N^J-f3-{kFpw0z2iQ0e!NDA6fR7=wF@2c?}w@26Aq)+kyy7-XWQmPMv4D z>nmlTrhXP4{$RQ-+U1fW+gkP=J&bd#%K=YnF_$d+oi#>u8j|v1)G+TrX~O!Q^nYL< zaAto8bu{1!dI`7?*wf5Qt9xxhRAb&b1Zbg%6Kfm0|48T-Zn5;m-lFm}h?ESQ>Q+QT zY-=vGuI5fzCoeC5$u6%fKBV2qmpueGS3ii|LL@=A2k5^%%LlVEGWt)}1ED$KY@gWe zzsn96;f>J+Bp^FAw77YRIi214QULG*5|331gm5m0e>!&0=4A`_O#^Bfh2?MlVkVb! zj?;hH*T$)aRD!n*}J<`fBo^3{=&Rj)$cw>b5_Dc zmPhIr5<d_@0$Xe_@EolT#yu8T$_xYQ3g#VZx)q{V6(XD0Cg|K#J1 zg~8uIB3EiXC;$vzoxp4R5!gxyf$0G{53Z%-wzlZ)C7|*OQBYd4XLjKv?;W+YibN}Q<)#2>+;?Kmozq86APpR0~^BPo? zDmZL-GHR4)>0}0`-bY5xOWB3k9H68ur|eO4nUBpDGep*ZFcVi&gvfH4IEK3Fqf4)h z5-hg9nmQt-vs>2^vV=?fbPE-qyg2?T%NJ)IER3sP^{t5u3w1qoK4quS%eUpaL$}h` z?#13gA`pnv$(@Qt&0Dh}sjh}pReKHYFnT9}q zAm%D+f8F238(z>P>NfbYpZnY@JdNU$3m(uAY0pRWRyU3=?B*YOTv*JZTm0^R7QB_m zNe^cH+6jCKQU(_~zIzF-@?6|)LG-JXIUugf zau~8gz%LXQ^Wdy3k6NjUBcA_Qc*3kvFQ|!;Y;!@p2d+TbMbka0`QOJ-liH3p;k+hM zk=I_b`T;yMXbNR{9@I8N#&mWu-L2Sexa_0jp%a3t+b@PP%?F31H&|o*@9b+v81=+A z?rVK;40?<7jgZmUzh49#SqPXa8ZQ8n2 z)z621nLi%h_;b^}4857_5RUj?e2M;M8AYDLhe4e&sW0@Tc9Xzldcl9bQvsAvF&&Eq zGze4Gk(9&C6wUYRa8;Z=Wr|@|iWnQDb)+2u;)yh6qTe%F-zuE(;~}k-J=57|q|%*8wdTMkLTtNSg*Q zhyQA~%!q%gg^0e}ianhFLFDiTp)J)Vf?sHW+5{-N;OVLWF_6piH`wkQ;BUtLI-Ej5 z577tDaPi=BMxW_M5#W@thme8?CL10~1}@w?YN2exIjM)`%!}x{jRF{cR7vHh9%&7` z0Y1kbdtE!>Kb-?iU<7g3Y~2}(vQliw82`b&k4Mo@F=B9#=W#C~3_%;2!+{aPF?Wgx zLG-u-L3yG+M*R1pX2g?Rq;4zv{NWcn5<+*}jwjOZN`5)-m`ZQ%vCIpV4loj@*x3js zQLaoNr`Mlb1BHXfKYrY6xB|Si-367Six5qSM(v-&qzo#$0Q8%CVJL4L$Oi(`=oL7Q zavwx%?u;ir?d5#j??jmbZO>s^SB#nr;=Cw&*yZ;ybchrSHBd@U0)0&0+75t?)&GE% z#V&|nl`nV?b|y$fg3d(Iqb)mNW6v{a0PAj7x1k9%iA^9i@d4P!+kmq3IuQCrR_3!y zEjUMqyKbSDpV2ZIC?O@|?TfOv0vw5Cl`?U$CP( zLzPJQT@R}man=}J7^(pPnSe`j;Jjgj_pU2&F#>V$NtBx!cH{uL9=0&M0XNolWo6)n zJ61aU%dMfR>LTDB#l zKKq}5)|I-E1+}|(t*DHEY_Y|zvJW(>?5e&IqvA)Xq#TGjxdTHSV4b+znK!pYQMBWV z01o0EYu@q={Gd8vZb|vHSug{lYWY};?uGdcMk_~gqjADu1 zF8zN+v4HEgoCOtwlU(nXAF-`EZAW$}$S zecTF)#204k%UAgcZN-`3wcA(6Uv(W_95J&>bF$_$F`;@iuJ`hPfF1}H@nO0x#9l^4 zIjgsTEJXAZQ*isZwSqCA*8{Ojqi8`64!=L{%i2}I6A7}L-`qj~5doV$5D8LU5)8lg zCM6|9b}RpxVPRhlh|*A3S2wxTB+nOp`e$ZCVScbiin% zn#2gIfJVow`G?tUxa2-6VQb*6rB{HTwt9UbL7XguCH&jx-vUTzYp~vfr<|86o4-TU z?$LKxhlVFYRhTmYbQXM|R zmfCaYKb~n@_cqZAFptZs(n|mRV}@${n3|bY13!QDbc|lvsO0YsQB4!1On>WPwpy+qa-+y^G1$fab2LG(0SFi`c{*cqb97CPTAUz2;Q*TZ zp)}rjMVL0S*0@M`RhBG9=U>~b=aHyD4f+y*1`V=Y^XxO51c$RzUDS|mDU{l9~TQ} z=rMVG2Lt&ORi6fl_%JHyNSsIesVq^(Y7VQZL2Z?qhdKP<8i=akC0+DMRQOv-!YODI z|MR;p`c?Hh_?!F~m3YjlV*zP>7q&ePd;C87BuT4({mtIH&x2FL*= zAnXxbm$n@bgFvn?8L`?1u!VWi}AZqvs^Ib3`*Th=554(Ww5SbX@U0~Qn|9!9)e6V(64Gw~fXglX`0F=M0 zQT`=SMqOj0fPi%NKhFz;=Vh0CXH}6W>NcdbV?ct>r_CwfJX|bKV0fqF5iFFPl`k1N zkp?&R^UXlj52WT%?7OB;iW|6tjrfO4dT8K{QCV`V4lV}x65@YB7&-K^1#H33tTWdC zzMmc5$ED2NjI^CRTzVFyFgw~95IUl$5zfcg8Hx_S7L69IxnKsXD1s`8jnzvNBGI39 zN#NQXfm&R4lgED-BMPw8^J{TciP>)g#z+4VX(~v;YEY>sH{P&DetI0FUcgCIz54vG zQIF9^F%f7loWye{e++3KM4}EiGIIUl=!F!xoslmHRJ@_B_9Tx( z-2beYEY)opqKZRLk1)4^GR$zXS>S}N4=~@NO5UixZI$B`s6ejPN`uT98WRHdD*|Gh znM#SMEG~p`uI3xy|E-Q58O%`x5=@m}A5wru0h*sf^*lfb+zEJCBO)USP|{!b$;TvB zpz??+RDwM450E@D0dqa#2mlLZpZ^1}#REv@bzsvAo9HrEZ-cO-TvmF-iVN5n0~z>u zQdMPmkrrebL8}6lHJby~0^lu2x&NY~qE>*m6uj9bj7wuJxllwUh!#4uG)6 z5d<_}?t@JB-prMQRJY}E5Knw**_XKrUMC_c$uP@|@TG3-WA0XhfBTT29f}}iC|~aa zsu=(}Smo``mzLjxFzDo}JE)gZK^xXI$E8ZJ{D5pz0;u&27$(1bDW|T!?Nb3H z+Mq_WMh;3SQm8<#j3`8l{tKFH#P!}R@Q!DqY9eN0QH|Y%5;b`XT7_yn%oAq3gq0MC znYLK4G}}Y3y4m*6IuqEgx`O|K8&v;4z-gob*pQu2u}^`jNi2)kiY%U~7k^nN<1`3S zH<@DCxVW-GZh91CX#ZD?s(IoW$83>X{DpK?qq#q>*EqK!hp(u9+nsL9PU8LhlYhTf z{$J374mJf;nwa9X62TAu20)A|m#qNNx8-Gh5Lq)W*9BROm0E8|^oiREv9mv(@Y(HL z_6+Pvpo!1o^A?9eGkKs|4coOc1^igE63_rLwm~3*-m`oOYSYCmXm~aA zCVOuQ4hR_4dr5$DFvb`l6Ux>83q-m>mkV12np6leHH&^03_<(AANz}1!xZ{iT+w06 ze4jS|emFUNCVVX6tDW+5dwJXc+53md*Xj0HwDrO!?+Jm4+6&}B$`=4(fW+okhYwV! zNFvH~i-H%B@+rOFPLC>IAUj*jT`97DsG>M5GqJO0&!R$&pq8nWyE5P!B6GK%^7iz? zJ*t2Eu~1yL?_XG%aG-b@W?J%B_dlHlBX14Tz(f467!oqMkGK~NP`8*eS>YSISi zl$u9?^b2sjw@7V${QyCyeflQ_i!gh==pCk6BkYNb{^RhUk_M4aqJku-?#jX$EeNluw6&2!9J4E*lAMYvaX5qp&^kDjJ0mYCOCTbN;GWlDup;q1NMBIE0 zj^p)i6l$z`ZlVT!AQZE{i2bhx;6g7O5ir)nptG!6`5&PB_d#~Yf&>xW_pkR84)4Bn zc((un$3G{14RwBN>cV6S8&zcnGXL>>si-Hir8Eu@FfK3qv`c+eHsYV9?2$ozibgx$ zV(Q?DoGR^h&!LkwIdhdTn+IC5cbNG+i8>OEn1j8T$NvIsLCt^#WU8fDkf>lY#5Q2O z{mFmc^zG2c?#&os_%<{U`S7NHUOO5M-P36BvJz@mlQMkP=cGUsC|wrU6CNJ6R8VX-5qTBfDp7F;?Wt`; z{B-PgGcpg&b^OZ1(4>CUk3R2lH`R}75{AYfpG~Oal^7+X0LlYtQE5{fF|N4QT z8SPco9DTc%MORUqq3h-yac}pbsL30O0CKrspHqlL*Lc`3tU&TVkE*Kb<%LaGOzZ$X z4Lpb>v`jXB*eh_W*1w(nR}x6)CjGW7VjoGefOd}SBW{TI^kUP8Z8$kOW8B8KyO%Gr zga@}zf3&OIHLw$TWicpFd}D-DK@GrrO3oto$V+r1rk>F^SM~Gt!j0QDT@aOOV=(fX za@${@6Eqe%vAsFUs!Dqh3_4G{$C{e1`V7cHolA~q(DU3;yJL#!5un#mb5*Iy0<@z=zvDtFKUp+^AOv|l;k`&PFly?Gge z5APRU)BpND+G1w8x=QS@SL+tbB8O%7PwSPJH4Y~>ch#~tp0xL< z7%c_Q6{6@&<8+QEcR38$FfU*DxcK@e=sf&+9djo3$G#+W`1t3g@eW(@Epzi3W(}9u zuD3Ka_~*;AZPHwMm#bhfl#LNb@{<4F@+=b8N^xj7+_$9&u7n_ z1Hs-?$ZbxJq@*NBPCUQ+=H_ww&C^hc_5gp8JUJ{n^qm+|tFEVmknK~$>5$Pk16 zE32%YiBEDyRMh&O;-*i)B>PhdVo0Gt4H33QeGgz^v#j4d0 z=|HHWDMhxhuiA-`jz>M?(bk|yLc6ih z+{lIoROaw%2~5uq@B)~OdI#!0^ z{;dmSXY#kGFDTRcJ>tAZ#!fDxq4BDIQz*iBqHQtf-dnl3_aSq-Gxdaz_jjn$bjwdV z&-c?^RRu7Q!QU&H*?k@wdVhIb3euMW0V|j5 zM`SZ8fb5xaC19>r7ySx{rP6Z?%b0Y7C2|;${qY9u=aOq=Vf6=XWicIcbu0l1;b*1 z5pZyF0*3%0L={@*VC-PwHMN>`c|sz(nV+3ZBaS&aAh8YES5OA|zOZm>^?M@%|7+2; z4MgGk`g}e<0hqFH_wDUj*=*@v{5~Ru6CvbV!$M!G>r$skkBQ=f0|{Xx88JR+1mx)R zbR*VvhT(?xcw-@8Re>j&7HiKA6*I#^JIMQK(r8s~Tt1$3rnlVs!p;U0DJ&JNwDcw- z$oZ2qC+BX)bybAF#YmTWlGXQ=eBq#4g^kCeK4;`@?9l>cbpALoVwDy!QS8R-{?`R1 z-;o&9yxUPOkoNmfRMKSnZ94XHZ{{7a(c7=ezO$46gJ=K<8-5%c3x!x>U*UudXi|M_dOlPB@Tw|w^oRELc6Q@hukF)~jho*l zAws57y_T-4^YGzI@x6FBqOWD-E&H54pLu*RiMUx0Awu};Nw4PtJ}JD7QwklUHyIfU&^f^_3({%stHv<` z`?!~9Z&^-*9Q_*y6JKyz?|*h4q(A7ARxdQ{`*uoL_=1G@&Ka{7CD7^f(|_ll)ZLxA zx3kctpqOO7ySePX-jf4jfU%$$f^!>xH7(?2Bl4=sb0b*XQh`+KEGC8G=A*yVzc4B1 z^GQ^`U?8hP0@KfF5-;tuzi|%!F?e}-&5rM%zvMhSE7s!_FW#k+uEXeiU*Q^#dg ze>yc)xu<5MFG^saCfTRvvB>?lyD)jdu33PZw`{6hz{>jikE~=@)mm4Blj4;3-}@Jr z+3kzLZI~jb8P_nD{ZNqdG!u`{zB}DRxyGTodz#`x9goMufw+n;mug+WZ zK()k!l}VE_%ip(SL>*v|n=UVReD8SG2Zf-z^?yB&gK$Ovmu)JFM~`P`x!Pj*LA1jg z$yS?j)Xe)6^qfI(WoJQ(+hB(sW<=sr!r5m*+IOOP!bL2)g|OJ*y{tw0?}pqtukGHc z{)ii};^5?*t4|VbvM|B#v0}7^MWTL0*J0?ASGKyRBMoKzWUtBKsEdnlP)lMK{a#Lt z#!ZZp6bves4u9;7*W%VK^Z&3@w#9SdnCygdPme0B<_0ql&Ban}z9XgXr4PSqt$?dKbczd2cc~N{B_eTAhR4-@)J& zk?(Ls6~CiQOlYi|l#DFZu+9@g(l_)f&UK=i@c?`7 zgq}PPTT22^+V)^uY$xLCin9R4j6De_yA@nH!7Y3U>oi;hT0=z!E1W~kOp5LIr1 zVj(e`p%6^F=a(|Kj(~%vk^9Oj&_m$9GAXN+EDZ@Yr)E6sO$0O`4Bly;4uwRtyqdRnwX$DG3GIN2*-(S;6;%GMxP>KM){hvi zB|q3-_JwM547zUyIjKenso#W`o;Ytsi?;-lwOfajB;He~>_};nvm+B;_Er0U#?ce>skm ziz^61RQrMX?bT%xY~Ux>{slglB1zULCty>*Y= zc(e*A@et$+3J=e6S@=T9D1?JbVpO9FM!E?a2zf!rn$5JpKoUTv{r&1V%H53U2@1b& zf17(O7hWyU5`}EC$oPd%c>5-Qjf(N*zA|Idwrtz6yht!;o!*)Gb;~Jpzh0I0Q@D=F zZ?p`2HpH;-NA7aR!FvKS1eWe+NQ*kPtgU~j0qH4YG-U?GCE)+>j@H9~g(#+Pb{K(u z06q14tuN04KBR%v=WR~4r%p_vitp;`$~#sL##=1JzE4lP4BGb1(PFVn_CED`Z#D6M z3GzhG5lpIOaQSR)d+R?=o*47p^tkF{Z{}mqTBXFKrnd35Ds@-6{;U4kPy2;GwjfG# z^q23MIp<5{44bZTXLv+B*)S>b@p={J!=E8N1mZs+x=sy1Ga&8jU+clKF)8_FgEu#$ zA=mm7#DXAlS!&jDB=8}i5`FzsAm#ICcXw)W@s6`|*#~LRdppv_@-wP4^B8Ng*I>)# z<4g~__Ok}L
7UYI(yoP6Y~b*lA_XWfx2R|LOLsTJw|ez3W-H{QHAF6~e!4xkQH zwKa1+Cp5iPXdhk9*VL>3CACvH>IS~Qz$hG5O#ECvJ@Ng!>FSnXNZPDO+3HBS^$8a5 zwrAjd-qm@Zst*UPoRRX}C@$5tg06VA;kq!*T!_m~eaXLf_imos*RHOvTp7ZSSB}rb zgd8saVS+^h3R=!wY8ufo{Cd5q@+9N#Q&hIQkizBC%wxo0FkpU!Af+XsUxf!zKP>+5 z{w^k4uTmg5O(jc-d2@LJ6=ly(Gy{<>$-jT5w$!(F>-NHiZLTCMWf|WpR(_&7=Cw90 zaz!(j->8DO?mw+f6xYq)y7J`4u1M!X<3u#CuUg4H?m%0Jf>u>mf18>LNV~|{d*RjX zjEpm|WiO9-Q|mb2PX-dJP_#~A(Vg;*dFy$2c*{MJ?~99mv9Yo8GA`#hBcB262x(S_ z741Z`1%-$I6xx_X^Q=T3{xDY8xIf(%#5Z`|)x7aZ^(iS&|DYgcM<*wO$;n1WZyH>TCmcW zAaDmW=NJo%64WSG`|Q_f{#;xP4G*X0*Q>ZUkfQ-uJ`Ab}iyw5cXo7SggtCxqol;Jh z`F;~H(6XeO@4G^l9_TEt`x6**T`ZfsCNjQEdgi_4TXxE8n{01yC zdci+X?9>5bb#~AvSKZyIL5S`Rku0pY$x-_Y*1K~Xn{3@ybz`DnjV<24H*~l-(HVaM zHe2qVo+d(!-3uEadI?ZQJQx3@E0Rn68~es+7|&zKu}w8mq^+OHAUXe^V} zm)Azt!o12@d52vq*68fT;#%+lY>~ojvN~Oa$ zNpiZibiGPLP`7JnxT2A(+4tlMj*96^Pl_x@R%3FhOEmbVwg8Hm@~$gV@tsd|a`+5t zUPDh!EiAOZRXayYu@INP6I?rU3^Vz&bCXHz^yw!c*Bn@ao+fxqK!WBSyu7_%LE-=s z2I+8q0HT#)pe{#-K%l+M;wT&}NCO>5cX#)0&}2n5yc2U((-i^zg`$TMK$V+EJsS_o zjRrhqVqcXA7oSpfY_{@>P{3i`1ncgUqjjDe(|*)3PP5$@$VMm`8w&%fvKU;FXbw-F zEW42XXiGpT83P5Wmmo2*8@60&J!r`Psb|g^UU`wquGe}@1ZHE($PxJ0L08`4RAzK>U;}O%Xa?{ba^R$$ z@s<4*!=si>roxejX^-J+OTE~oyKh+9Toaqd9G?MeT@*Le(*8fKeRn*T{onqT29>B3 zX^u1QDANR#>It{Hqh_EtUdihiSSZB z6J^1iiSdqWLtla$K6)zJu1+u07#2OAV24yC!REIU<0u3ju7QCJmoInN_w=CgA3GDy zw80lhMfxWuhv|}LRYZi;^i+Kt7ca{*)|zDHv`-;?W7D%%C0dv20$%bQ=*nSf$D1dt z=<^#LFpY;m*c0TR^zxk*{1;-Xl>=z`KStP-F89%CoJOd*vkoW>PFu) zALNm(=1or=ze=OulK9}+GXWYN%>wH^@V5N?3;dzGvO8pm6A{g;_UztW2KNxOoe_Zd z{6sOXFJN=!iZC!3v_I{<{u9S9@1s!(92y)r66&&?(?UG7nEg8K465XSc+4+oH2IkuBd2J@IfMKaYwp#oZBOew4bcfq{-ISiw zj^V-u8$|SNPd5RU`x@jG{R?6ecE$K2S@b;I2Vdg!Pw_EF92Z&#;kO(`*@_IhNdG+g z%u*fsO);}OYwJf*Lf1hIbliS^^-84ZW^_{&T9K<--0$_tWB#8Eve(Xuw@YYg9aTwR zeHj{hNJFFN0QEMr8s)!e+UL*LpV+S$7e6aqd;Bj<*NcAFmZtd!^v~xPr?Oi_(hiz)ILts$2@rM27 z*Pt7-LoX+dw`JFaZE-ovYDOh+DVNgaMt@APYhx8sQFpvviU1~TOa*?w6FJOEduiNie%1 zD~tQ)nPbsgZZt*N#q)i6<+rrMY<;`+1bG(L4D&10 z>Xf@xf&P>K61F5)(BIuoMf-cY(e!R{^PRH!Sh6xsg5KN^zOvKB?|Ah&r_~d97b3|5 z+>AyfEBd3rz`6fLheM&^^vs|%n)%H6Wn3%CBkEK!P72qsPvepfJR9w_b~@?i+i39* zt;U1lHmBey7DYVgt0Sv%kn1OM?xE@Vyo7}9yBxjxD=EL0ZXCV%Xf%1kFiVy9%e{1k zICeawmRGi ze7fB?pWTXae+V=K4bc$_-<*9ImF%G&omI}bR{0c!K}7Ck$z)pZXG z2+iRzS(>G(Zxm%hvJ#tsjM1Tgt!U)>Ioo}~{2m~=F_c;p>49vr%nme+ycEtGBt%8p zsI9KbDXk+-mctDh0!2RF-Y3tVrFZ#Ry)gie{6~#nC0s1z)5}o3GcNgRX}{*?Eh}|+ ztOjbdL(XR{TqB$Eqlqhzz23aZ-Zwc=WqI)KM0o=Brd~*g3y!ALySwcw%^_uG{sBDx zE}nIVMx#&t^zO{^DEq0DQ(XxxeSZ+9BrGkrtL0=4C!jUj1zIB%vIjx4-Woq~U@)Z$4Js^(_Jol^D-PDdoaf_ZTHtXE;6c>UV7G64Dj@-XIn!J?-_`!X%C>|TefzuHxzbnX5G}cb_%$af>~dNw3P3DYrB1s z(I3=LvPdwYBziwMUZ=qG>!yEEsi`tKwIgTywhaxxieRC*@2HAN4<2NZ*;(ut)+-8s zH)v0g8*_>rAkCu=m%EC1lJnEN+so?7`tR>qy^KPS7fX8-mkixJX(Y22{=Ji?Tv0)$ zxS!%0oA$~t-n`q6@fC+*`%W(Fp=S9D01b42&3Sy*tL085j?wNL8A&>s)HXJUx}Wo= zyo^j=uwld?0q620??^UgzH#9oQL-okdZa0LG&c5{53c&y6?^k-XK~E@b-w)Bt_Yz8 z1`NYKpNDC@Z64tbuQ@j91G}#=R%DCM7NdMSyYtFtz4#zNJu7O3@F3`He5CEABvOZd z`fh|%bu{Sl-bztcPteDq#M{%yg$oPRm0w9I%AC5emQ>9RTX(zIt;$lm?8+uXmzOo2CEw{*D`N%n zTzhX*9<$KA5T>zD0LtmFtiG9VPUXC|KlrUm8jegSZ=CUpjxzxx^WBskDGMM^c$Igr zc!FZ4>UfGX=opVnkA@pG54)Sv?cEDQ+tjx_ci)4l1g(tOHomg*r=AZ3<{h6b2 zV~t=(F7qqJCH63pM)emlBKhtQ+69f)9hHrkIKrf7GdI1%!mW>i{I4cA=k6RePR0iNpPzPdmd|!%I}4@)ZVvk*PHVd{ zyK()n(Bo$Wi8*MHecj!8<2d2>q2jbrGNe6d(QsUDpr(1OxQ7qp3^`46V~?i8G~>Sy zM7m>RW2r@4#5RgTWkW@;-r9Fc?r=5s4iKZ;a6w+wH7D6e4<6!oc=lQE6yhuK#QPWD zzke@t+NF!@^{JOAI5+QOAGiuO=T~bA?c69|Sz`t_67=P#8pFVp39xpo-FdR9ZreOl zv$H(!^-^nfJCr2#@ASR@wgw@&vGS3V9BO~gqU>*Tw`;cBQO=|44W$tek1M#8122<+ zhbe?wZZ;Axo9`({A>qIG%3oeUsA1z2y#S5dfO?e@0#h^XQtpdvd_RZztYl zyE><$)T&LzCuBE2F73-yoTO1aBqpAle|iS~s9~416RbonoxJeKpG6RHCP~V?vz-@OZK-zWyWqLLd=vwS218vvkBStFZ1)kpM~4-*Vj7KTa{> ztnm7iVrqR)Pfs~tp5PbgCj)>58S}(>#Ufh zpdWJHXy|;omBFjmud%`b<*9yw=u|P__#IZm4Q1Wk;dqgAkH@zhz(nmcszLH*e^=f(tO%?<}p<|EFd|5R6PwpTfJ@GlVx&pQmvt+P+N1Z za%t&z&c^zhy%9V*V8vkgqQL?ao5DxR;u5U{)z?gy7zQE^Zoc%+-j8FR*gf>lfcpUJ zop-n6R|ay1zXgYFaW+~pJiSP_pjl4itnMFJ-os|{hcmd2@2@=E>4b>O*+iY!2_Gz* zeAQ$_wd*Hp(QWNM*6T;S^2lJ7uI$~P41JNEN`HS}^u#8}F$M&AZRDv8^)yW8uM=`s z+h=ly&SgD14BP}&?q<)`=;hS-9x z(n|Qyhoi3uxssp9;_@=xp+oiHgr@)eDevz7897jXBcQs+vp!y{zM63uXm`}n{99E9 z+1jX`WMwN1vipY_{LjqQnVi5(+jC(+h)<&>pI(=Faa>T)H8%F{f`eSRTwsR%zP~_u zBI`xe^3!v3)moPJWqfs^|M{y=T9%c)r3b(rqeCAlw<*?mYpHEv-hHDXP~;k(+flRI z`?ePML~&j|{q8EoC6;G3G5aJx4ENAHz3c(q0vlVK!-son0Kl&us_KRUiQs#7Z+$@! z$^Y#yqHAkEFGwgUndWT_9d8+Xq?)#5Q(%wR9N6F=B2aW5u^JEnM!Iq%);C-m53v#t z0jls#$HmM32XFH~x~Bi%FP}xPJq@Mf*Y^)}0UJs}(E9o45=~Y!#)AOAcbO#UK z00j%wB2e(jRFrZL;C*l+<5OI?_Y5XsR<~~5VkF=E@KC>G@yAY*T$n&PqGc-fjxnuHy-q$Ir7j>c44A(Au1*Eq~XLNF((K2f(s^XGG`jc+PQ^=ahT6w zylf~bQ!T9pw2=4`MqI3t_WQhBcKV)eNQo{SHp@KQ?GTxB91y@j|La)4c5 z*`_(He;LIqwH)L#PIO+I3rtQ%pgQW^cnsz$LY*LW#0#TiVp=glmxR04M&@}k zrS%A-^o;XXk5C>crQA-6E}5x4L(Ut&mtAB{+&zu4^R%1n5_|+m*ZBVZ z#EW)+?wdt|yGr6z%c-%HRZn}_Ku$W%uLbb`QtqTC2MTy|jLQe#Ud7t*v;XN%(rS_RSeU z^(n~^NT)nrg*dg9o>MK6lIHMDOtsnM0t7Y26dCx z0JRvYU2|Bn(@+)C9geV_@`hbWftE=)(JZ^e)YzMzv&E*@Q3Wy>ceNyilXG~gU#ir4 z3PIkbOmybksO71 znl27Y7)%h?1hZ(t0}>SB7rR&K43_d{ic(7a+5>D?DS#$8S1$Y_ZFI6=K+y5NH=LJDsd8qJD~4^vD1>KO6O&-n)-f zef&tw3w*<*p$C8A4Bwa0m40xgH0_k*3;ke$Zz{ckJs5RuPo_RN@4u%6lk2w zjJmg{r#6BPkP2#NXJ-;tKxL_=5&NZ*6ceDP!vujgyie_}x@@*V{ox2oX|5EL0F}w+ zFJx7)Ode1^L8j4mGfj;T%s&M|7*kPE^kE4-t9GmMwk#{eIfaDh2N8GIk_&%+v0;K&UlW;p+r&XV@4q z2m+T_WI|XTyaux&mBh@Vtn4E@5m#YbS)kwYK!AU>B)!h#oTzI9`hlH!+*p?fYPb%j zG|HWXQx!);2J=^1bh5ay-3~2G<+JT{B>SjPYzu>60-`>{=^s^FwrxXj%YcXhbxi{q zw+oaI#zeE=dp)?}%L1S{z zupvwv;Sg-04sY;bpX)1w0}~T#Wn=akgr);I?XZ)mkoB)i2+(a-TW)6QND@@#`pR$H z<&gxdm}DDH7+BTyGJA6m3DW&A|9dd1dACO2?piGGt>Tjyr5;4-V0fY_euCs@y{m^_?*>F|fxc z=C?;mR0|(-Zl zR_%WVKEJ+KVC{+8z>rm%dDYeNz^C3`F?sds^N2R943;muVTN?FwFkdei&wbL~z)XDq(2x{<%48|~y8(um2#(pk>%Q~qG$ne-GziamZ7^ z21eV`yz32`Pdz0OArmWggl*s&M5ab#rlMgB<=+rwYjSwM&j?oAX=vi%U?0?r4-45$ z9&V18jlsH?KNFpSK+-JNmLH{SmdahZLIHwm2s&k+fMtK+#`eM6UmWD~0!~Ej`sR!=7&LI~+IU!y82X_qK!d6Z z(a2ROq-Lx5wyb1_fJb3mXWeX1I|*E+e06EI11p)3ObziX4w$<`%;aV;9%D`U?J+fF z>BA&a3(3|ZJ|{-sX%~?uiA^&kdy7?KUu-orbI@NzaRJR#ZgA`wm2^Gal4t+?b1PMq2MZCdtE#G= zZ5JNK15K}AmBp4%W32aaLuj9Zvf?LNd_)pLEanw0yy(>v6D{d&U|T;k<7k|#hGNG8 z`dutA{$1A|dY7Ab3qJEF>VH0k+zO!V)>{&BW|ZmXB)$ z7H~{n;K|fc#H*6ApEl#)%Q5HaKj=hw9-@9rhGrxxB3|2>0n_l_#ztR^qmD@uW0xaF;;ip=-U<-KvYd1tPDYs z12wGwvqo(faZ>VT$G&r-IPCG zKC%Hd@`fhA5*4PF_gxu~h58YL82u0~6&4Cz45xt}2SYJfxQlkwurOf?7Ksn*f!INW z5How^Bh0e$5%nDYomhvUsi~PT{5{8rPE=I%ePJQ7rvpAifZD<5jrL;c)nQOXpa($T zN})RT1bG=mTl>f$dXq@-q0|AFhENf>5Rh^2xk;qOS|drMbb z5)rQh&Z^f!zeMnBP`Ut%V<0v=>|;}qSP4WO3e_tdk6O}e--qEwDWF)#pz?k$3=Z`Q zp%JasUO^cN*`*-nhU@+;hF-AXHEH7@R+3~liq-)_s6gLqX=8)!wVUU)@1(S1?KrU% z3?L^jdSQ0u)N87$2k>1yS{AY(;DKt~MbGEYwSZwDk-yXXycZlSp)y1@)Q@(Q5G|o0 z*mL+Wbs4hKyVMK_Y2}Hjo0-^DgC;xdi0x(q?FVR)sC_}z?i*`M(?xJYEQI7Mr(aL< z7UZkszjA(PY$1f{AuJL?0s>G*K&L4~=qUr<_!&#|WKm9a-cBCJo;9CMhWifdKTb?LxN=P@BCFGq|kTeng*e4tJ=cqJp$y%p5Lcvn>kH4)N)s zD??XM4hs}~I6$Qpc{0r3UjnxCaB(|U3U$9G-K6q6-Cf6P3?Z_mfc)cc=|uUOrJB<| zVzpy=X=%@%J#Tl7L_s*cC6@NMhE>mnjZvC>v^3*kUQv zp@=9@5^NoBT#ZAo%SZCi;yj13U2Sa3xic9U5I;!Bt#@;)anK_&(sWG*w~Sa5QM@DD z(4=uMI6%9F$$CKR$Rn$WaEFDTVE*f0(^fd%Bm?2#whE{-NM__5RIHn!0jkm|H|5`a ze{9mAs=C?(s!U#3x6A?-T=yQ}Hw|j;xq@09dxMD%4aEnZZkAE=soFp;S|VbC+SNj# zmzeAYH-@ZU3ziHM`v9hlE4P6L+Fk}2;|sRw<=%6~O^=a}6vaDlLk|SW>75dX52+N#o;}g} z`?1(Cpz`78L(>LSQgU_qHm6ZkEG{m}EPQS__YXD`VG{i{mY(}y(aHL=n zR|AF0Mh(Ex_@=|^A53{`q38;#H$cut>$3;fPZ@H&g^bcNc0c=y(Q05?S4(hLK$7OvA%+~Sb$Uh+O?w`9LRzOdUg@W z0Mnx>8LxtZe&tZU!*}EtKb*P7pff;t8b;JGCFgh|B3$&hfAWOeX7Zj|zBy-kn!o^b=OrG zC1oDN2@X$5Sw%&HORUr7(O$RVb?vRIGV3}aB>sOZ_f(g7oe&zI>oEVqa${bpRq8cd zZo|+{2z%vzS!GSNHe8j}C3O|tKD=-ocgQ8dJhd<;0Am%5D;&%Byj5}&A{t@50%zew zzGXP@Y6vzv@LI@r2TU-lRk)3^s$__4goz3!grmU+z3;a z6lQQfaYwCJ*Cv)%`>M*zDib$)YdGqJ@73~w#G7J%srW-L)Kv(U-y z-R6k$I9I~!0hqPKfY}P>cwX=lOrF!lH9UsP<@8O>e+6StjmOLL1aou4129j)8v&Sq z2o~fU5UU_A01Fi?iZ=%#H3Js=!hGR{vzc90S6Oo)!Befh39d?>`ZBlH?gOs6O1I&I z_yDlTrG=4P(WSi}enbpi=P_VeBP>_2!eh2}R+X5IoRE;~2tcCGSs20%iXq9z)7gd9B4&+(Yy;L7 zo6M9nSm#^eGey7UW0C6>Y_LUc^koSsnL!v>zoiNv(Bsz_bosM6)HZ?cv!74hZ*HWA zG|E0*q*f=kPoo~rz$QWED0tg|%@!&-1-1lHTLqP?AkRjhds5dRWBnT!pUDeRXoid6V~jbQQx^R9vd1GW{LBbEdzNZBrw_Y~}~DLXAn8dG-U zP&*FNVY)JnV}C&%co^&HJYDB(1o^AO)2Nf(6g-KIJLxQ4;|#nnutEj94A^bKlHr3O ztVm!VD)`8Txhz-$!}dpPj?TivLV6s&1&68opy^ZV?rrh4>|zfc!A@-O$bHx&7`K9A z13dQ7r9w%N;}y~5vOCqdFaA?;Uiz$Sfak+PUXr|CL9px)_p zbt?JiQ4EhhhKJ%PQFd`Z@8v$kKX2ouuC1x^P+X9U!$;H(X5vp}-DW0!|+(8CD2D5Pin*Ut~#VLHXx zMcA|yFH$2lOWDP2>fO!*+99}ef;+F^f&mvTTq;}&;@SmwSwV-5>$GsPHRa*iiM*;> zX&{C>b0ea3E3dBS?C+U{U*Pk1LOJ;7c;Q2As+}mDE5f;|;Fp{>B0o_z^ z%Ld)HK(e?tQQP>KT{97tnKh63g&5Jc0vsxoC%Q?g-~g1$PbT zw)&F>_kx)Ff_b2z$Hw%&oF}|I5t}07BDn_E$2|&}|1k zc#SjAC!mK4`VDwwfzsh|5cEVq0}7tnpl23H7BRKpF@D<5V&~K;(nxVGcYKu=L&`l7`9j$FcM^q3hSE+zGbuUC5!uUna)hdW;z$m z6W>+DCq-ZZo#4#e5WF73{W;J6?#VUSz%}o%4bm5#09` z{Hy^#XW=s8=YzN(2<{gY{GyHfB@4HladX|+Sb`&IkvuP#reFu2QsdY!#XdZrTdxG7`VgI^ZNuPFFc1AfhdWWf)EkY5+bZz%Xp8}eHgM2^KGJWCJpd;+!bnc;nJ z**t2ec6RX|Z^a+QQM34u4)Ffr$J0~BGwHX5^g9ZE*MQ%%AM<4R{UGWO1oejs{>VoC z@k5cQXW`YQ#0ZKM9iLdnvlhUJm25Ihq`{%qd(hLR3p3;P(@z?(u-G+yFNC|ydN zQGgfNg})Wh-zoTe1OCAVrNTc3LH{J6e^&4>Ht1h1P^N%7*Kt2i9GXERILgmj6{e6wlL9{E`>cC46e;J9*bVioHvGQWgG9i2ttOKMeR!id8-*F1O;2k?>P9ILYr;S(CA9vrQuM?3TIse}4(REJ9Q z$VMH;snX$W4Lydf%}&!}rGoVurN@b%(xf9eReC&ITZB^z%vUPu{8HlJt#qMGdX&e| z)4T@G?v`8*b>bB|j#scJmdE`#jef>Q_9<+jQ5G{n!myY~GyX)jhMvUM5|f;yqojf@ zCR%(JGnrGRr?9of#7KcDCWXb|VCEWL;>~z#3_jF-g@kq=GGDruZ!5bxxI@#nzTFTMAyhW>S06>o|;8 z=_C{0T^kyU!&U69=5cDH`*bXscW}C&NF4|H72t`em?Q03#auJ+Jhp~@gRP|^B}vbh z3bu*`;_-F$8-(o$tQ!?-v`*hlwMGt0Sz4)E) z&;wrn_wg|2^dgDCIu@IuS{snRRh+By=X;KgWEl+ax~ zUV$UL?NZ+=-&!{X#66kA4`m0{(`nA}3d;VJdg&DVI#JrQiX<~|GFwBZu(egJ)TvUz zR*@z?t4QZm=?u2Eij`7es*v~bt-k%SUK*av(|;ES(?fW(8RX1fYMO*2IN;>-XYrW$ zMRetL_H?GSWd&Jg&{b>={U%#mL55x}6>J4-#AgNBoGQJRt*v046qpL+gvTdQd=}uP zIee^Qznjh!Vn-DF<=7fMqdbH&>Pv>60-CrsbEXU z5uYWz&8gCx+1e7eNP#Iq)(18DLY80`_VbZMPveUA&@F0^(`q<8Wfz{nUhxmpon3r% zwNg9h^i~PLGIGtxd29{+4qIDBvd)(Zwv2bhXBh>YD!q-ZEkjAc3mJHUkH?2|qVaAh z^S+wdn6xW>9^T>GbOW!h=hJhL0-V#^B>>BK&y2i-t)X|awPd8G==Y_9Ekk}liHu#G zD!rSnE#m_zFlETGN5|+9$8X<_ekb{hm*WY37zg&Tj~#JQsnoGd*6Bz>TpVv(NBOoc zlJ>0PLo@J4Yz^&VYpY1sd!&M`!Yw|lDCSgY4_jMBi4>SB%pZzFyleLvG*r&Ry)%lg zZ!g;=)6ltv>eFy2ku^kP|K`Qxw##&Qr7bJiYX&W4YiJ)^TS1a8lM1$ia`9Qg$DAr% z!PZt#DFvni^TB-V*}T$&L%j4Rj;Fhs)38U@=f(H8eJU~A}4+1mIleNZac_-}~M_(Pm3{TW*u z|G5;Hc=Oyiw|xAQ!r+>J5vxscn0I;6f;_s8xDaeDv& literal 0 HcmV?d00001 diff --git a/codes/QLearning/outputs/CliffWalking-v0/20210919-211442/results/train_ma_rewards.npy b/codes/QLearning/outputs/CliffWalking-v0/20210919-211442/results/train_ma_rewards.npy new file mode 100644 index 0000000000000000000000000000000000000000..1d6b88993fe34fd6d08a5464c321a188b04be62e GIT binary patch literal 1728 zcmbW1`#%&28^sB0wx%s1NlB@t*i0_Xx}-7}GtCU!kC`y@(rrUojEC2mOB)T*!Cc0}b!_-5R%S%qSA}j`n3@sqZeW zFLgKKm4A0DYj(k9Jaet+vIgaA!sAMOGLTN*8#y7~ffuVHlJYs*vFtG+<|88wV^ii@ zO<@Y|7e24`mu~~i_xqZWlX1wQbL5v%6`nP4?AOXvFwfI_9)FYwhYtnSlgvb%xY|e9 z=bL~>Lv4bNoOl!*v$18L+XBA2lWDPT3*^Q(ohzFD16|2zPfdst5qV>}xOycLG92Ib zx5Pk`>n-b=8-rfAlKWYM3Z#55PNtla!+v%B$T(X8JDalXq$6^;zi*coFOuW&O7|0G z)ls;9g-*3R5CxMAqS(SC3L$Iqj9*tpqF~|m%~ED0;)lH|;~6rfXOV2Lt&l;Kk``?z zlVRE)y*uUV2xR705R=zS5zy6@G$PrAoZF?v|c%@}Gzy$hc_z@s1eoJx*1F3qxUbI?=0cvlx2Pg=@_eF*@HgDYYUI zI2|+3%>PY@vxC#mBQyX;S_%KK8}>6xZ1D zQRNzx*hJ!C+N8clt>B|x%jDY;_}K5+S~Sm!j~!8+&DAbE_`d9(d@3_=67PrJWG;@z z?yBPC@v!XB-y`i59=4jE<|<4CAdzjNzcS?L2M=Ek4d>xn$?=G%m$_Kb8?b-W(1)#E zVx8m7LmTIgUe?Wp{A}4&S-Swg)xDkCo@dA#x4izG!iR7v?btZe!29@@i>rCCxM`ZM zEaGA|-}HXv7#EWnr6|tg;&ra%o1Uo&Fj|ShtQ)`0|l{;u5NU16wwOa8b^NhMH`?zK)Hb*JSd|6WFl+{lF@R z9yVm-F>jBpXJdL&g=L>P8~ZP?&Q!`+U|f`T-*7bCliX|kp@RjN#*O7+>d`}E?lrwQZ&Wd%Tio}hx{rx8dyAHmYzB_s-1g_vHYT)pS0CC(V#0W14Y|sN zfumkctV{_5swbhTr>RT~?~L6dFJhp9XnA!Vg8~1IZET-cbi@U3Nb_tBgjIh)TofS? z?H>s5FTJBfF(_cn$q9thW_I#yK_KpjKRT+@1j6~b)q^*e==h1yvD{Km$KiWjy(`9P z80}qn<-vIdwx)Pq`)&^dg|P#>z0v|9=wO9KN6=w=Lu#f@pu^?|^TzqB=&;s(K|C^t zj;ouzla{2?!TDoIVfKaw+1Cv^(>OYEmxv=w&(XlV7_< zce#>vR7|pGod4wuDk$w`+@JLnyeOg<_76~yFC^Y8a;Kupc7{s$jsg>TVy*3108AwF zn$J&BusYjqo7o47;m=hrXmq5abgmKSauWrws%#G)oJoatfz3kl4GQXtBfI4m6o{tJ R7@he#0P{tOf(Irv`~%+eIdlL3 literal 0 HcmV?d00001 diff --git a/codes/QLearning/outputs/CliffWalking-v0/20210919-211442/results/train_rewards.npy b/codes/QLearning/outputs/CliffWalking-v0/20210919-211442/results/train_rewards.npy new file mode 100644 index 0000000000000000000000000000000000000000..6e6ccf09f14300f1dea988ea03f5bd2fd1101b8d GIT binary patch literal 1728 zcmbW0%S)7D6o+*cxad!aSqPuPETmP0E5Teu+NQuZ!=R%HUTQ|&h(enb1WVhrNJzwL z&=fTU#Y#o(;|q6-h~}-7B<6bI0)av2(<1ZdX4!lpdZ41I1k66bsnRA zhaU7AbPiSM&(OKOL_dSpy@$5HKJ+Nmm%fLOQAngyvsI zPec7Jp&Q``sNX#FC-@Xv-@W@nTpzE{-tT)jC;d5}cjPZa-|;ni8z!NB?4ln)_h$vI zfA4!v+T@V;|PFj`P%yefs@3_3Ya`=V>3FvmfW>J?{A-&ygH~ literal 0 HcmV?d00001 diff --git a/codes/QLearning/outputs/CliffWalking-v0/20210919-211442/results/train_rewards_curve_cn.png b/codes/QLearning/outputs/CliffWalking-v0/20210919-211442/results/train_rewards_curve_cn.png new file mode 100644 index 0000000000000000000000000000000000000000..e1cd04e28088b0b30cb44fea7c52f82a9a442144 GIT binary patch literal 48748 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
wMAZ(^!aEpPSS@Qt@EMxL?C8G?+ZzmhYi57M&6 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 literal 0 HcmV?d00001 diff --git a/codes/QLearning/outputs/CliffWalking-v0/20210919-211456/models/Qleaning_model.pkl b/codes/QLearning/outputs/CliffWalking-v0/20210919-211456/models/Qleaning_model.pkl new file mode 100644 index 0000000000000000000000000000000000000000..6986805c261b91d541c8b54e8bf990f2b4a4796b GIT binary patch literal 5039 zcmb`L34Bz=9mh8b1YGV*1i2J}MPYMnPKd}65m^$$AhIH`-RwTH3!B~iClhLYZR zrAUGzf|SZ(Iclla0s>;%nclbdu=jo6_g(G(KW`rL9-*~h*dg1)RzLl0p$sKN{y&OjyyiEg9X`4>^I}>f_mj<%irr*rz{v;SsJ@4VH+; zgy4S2bKOrhHf6bpHf9qoY3$!8(hmm|C1>$w=-USQ4Eja#@t&2To6x@4Rui#Hdn%O*4HQjG=GR`Yt1Z7SgDnW9Bxc`BA}E?Bz6it$V;(@+p=ureap)Cwaa z6#1%jtg${3n*$@m<6NUkXJd(|Xl=p~jndfqR$(>6wQVq(!FAIajEVTMe@sUd&{IAHT#4YMwueE#e{?^(RNxx-e#H;ug*mObGXBgNY0#wZRRW;Ko`3lNsF9 z22&VJ4d@_*%3xYDFWDzD4%wNO#-`R_Jj<j;b>`)JdNsNCHgW~NFVo(wY=a9Bi z(<@;Irc7&ETLI;r9owOTL1iGEryW$mtlHYz#joO}P1q-3c6}$h525>I@`T*&ueo0x zmOXO6+!2x&rKv_($PTKRC?69EwN>t-0#uQpTN%s|a9h3R7MH->0(V>?$!AN^6+GNPCeg`N{dvF+96LTSJS9r1;HW=?iH}o z#IY3ab7-rGwwl2jLyOw93Z$tsfmJvcTh(d#oSwFQ()pZ_J!Nxoj9nPxJ(JaD_we3A z#2ABm0dW(}5F{L;MZ~oX8VoUc8Sw>6omEF;@{l|)d#2>eEppESxr2h~5z~%AJ}-}` z3n6&{$Cx7GItJ?nqz$nI8XaPWh*<_rh6pxs))iw^Ps?MfJzOq3<+&@6`!9`tAFk#e z;KXcZAOy4+W+`lNm~SQK{R~1lPrVJG1pVz5g*BZjxf=2hz9UDc^)<#+-N zj}me(gU1ByvysIWu-`#GPRIic-ffTvZKPg0F6rKhQpe?%YI&$;z)0NXyv+9y^9crr z1ROTZaya5Jj}r4q2Jbb@V>VN703J_X&zDm%D*A%sL_5LYq=5GsS|vQ?(B4n9Qw%;} zXivX3iC*vCvO{oBHatVT4>EXGz=!NLQv|0S+!?~1W$>KAowIR8=*zW<%&^9&!;#Un zT}}*Es#Ee2`4BCbVYrc=nzUi6e(cW^=>mi21zfaA#qfed>LJpH8GOW$q)pO0n``P^ ztJA$&)KPV|OkKnm#xB|sKoRhx3_d2{<7R!9!zUc#CyDqe2A?*>&s>e@fw=eCopNtx zxZH-z<|Gn7OT^DH_`HBG*h4IZFFL>%3HTC&FB#yM-w05-HeL7%0l&)NWdUC^L#%+W zJH&4g@tX|3Wr*LliF0uJysP7XmEA#r?-2L948AAe`!+XJ2tRPRKP2vt82s39e`0eB zd*M2((n-BK;HO0T8H1k-_=O$PGWewf`W1nG&EPi%^jjNrew*c;G9tNT;7-a1PWyt&wvlRcJZEUZ%_)5ofhHDPK&TQ9@XIU4mBd8ni}25wE2NM#5c`M+tS9 zGQJe8k-(@zOQ6TcxxC?b?mH=8M%@s8xAwOjt>E{dwc(*szJeMUIQ@$w_`R4iz7nm0 z-$xZ1{(3f&tBK;P$PJ2Ft^Kb-D|i%beM_(|+^>Id%FC~e9`5tex9+OPOhbG#E*&#% zz#|kqMp`&O;5lV-9XYuQAwQvBJlL?Dj%Vmw7tW#N(wWxfGKNxx>++s(d3#^(d5EiL z0}jjSZG_i_^YdqzMicU8UTUuOV97~0nwpo;1zp&Wj;nk%Bgp#b<%jqB(s32`$@Nit HyX}7fVYh>! literal 0 HcmV?d00001 diff --git a/codes/QLearning/outputs/CliffWalking-v0/20210919-211456/results/train_ma_rewards.npy b/codes/QLearning/outputs/CliffWalking-v0/20210919-211456/results/train_ma_rewards.npy new file mode 100644 index 0000000000000000000000000000000000000000..e6793dfa4a0213567fcf3c54d8682963e12ebf49 GIT binary patch literal 136 zcmbR27wQ`j$;eQ~P_3SlTAW;@Zl$1ZlWC!@qoAIaUsO_*m=~X4l#&V(cT3DEP6dh= aXCxM+0{I$-I+{8PwF(pfuE1aa!2keGgd(H> literal 0 HcmV?d00001 diff --git a/codes/QLearning/outputs/CliffWalking-v0/20210919-211456/results/train_rewards.npy b/codes/QLearning/outputs/CliffWalking-v0/20210919-211456/results/train_rewards.npy new file mode 100644 index 0000000000000000000000000000000000000000..e6793dfa4a0213567fcf3c54d8682963e12ebf49 GIT binary patch literal 136 zcmbR27wQ`j$;eQ~P_3SlTAW;@Zl$1ZlWC!@qoAIaUsO_*m=~X4l#&V(cT3DEP6dh= aXCxM+0{I$-I+{8PwF(pfuE1aa!2keGgd(H> literal 0 HcmV?d00001 diff --git a/codes/QLearning/outputs/CliffWalking-v0/20210919-211456/results/train_rewards_curve_cn.png b/codes/QLearning/outputs/CliffWalking-v0/20210919-211456/results/train_rewards_curve_cn.png new file mode 100644 index 0000000000000000000000000000000000000000..9c98cc97b370f0e7697bab3fa36a3dd28cb372fb GIT binary patch literal 33638 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 M4mXcAo4D-10GA=ejQ{`u literal 0 HcmV?d00001 diff --git a/codes/QLearning/task0_train.py b/codes/QLearning/task0_train.py index 7eba2de..6e616ab 100644 --- a/codes/QLearning/task0_train.py +++ b/codes/QLearning/task0_train.py @@ -5,7 +5,7 @@ Author: John Email: johnjim0816@gmail.com Date: 2020-09-11 23:03:00 LastEditor: John -LastEditTime: 2021-09-20 00:32:59 +LastEditTime: 2021-09-23 12:22:58 Discription: Environment: ''' @@ -34,7 +34,7 @@ class QlearningConfig: self.train_eps = 400 # 训练的回合数 self.eval_eps = 30 # 测试的回合数 self.gamma = 0.9 # reward的衰减率 - self.epsilon_start = 0.99 # e-greedy策略中初始epsilon + self.epsilon_start = 0.95 # e-greedy策略中初始epsilon self.epsilon_end = 0.01 # e-greedy策略中的终止epsilon self.epsilon_decay = 300 # e-greedy策略中epsilon的衰减率 self.lr = 0.1 # 学习率 @@ -53,14 +53,15 @@ def env_agent_config(cfg,seed=1): def train(cfg,env,agent): print('开始训练!') print(f'环境:{cfg.env}, 算法:{cfg.algo}, 设备:{cfg.device}') - rewards = [] - ma_rewards = [] # 滑动平均奖励 + rewards = [] # 记录奖励 + ma_rewards = [] # 记录滑动平均奖励 for i_ep in range(cfg.train_eps): ep_reward = 0 # 记录每个回合的奖励 state = env.reset() # 重置环境,即开始新的回合 while True: action = agent.choose_action(state) # 根据算法选择一个动作 next_state, reward, done, _ = env.step(action) # 与环境进行一次动作交互 + print(reward) agent.update(state, action, reward, next_state, done) # Q学习算法更新 state = next_state # 更新状态 ep_reward += reward @@ -78,6 +79,8 @@ def train(cfg,env,agent): def eval(cfg,env,agent): print('开始测试!') print(f'环境:{cfg.env}, 算法:{cfg.algo}, 设备:{cfg.device}') + for item in agent.Q_table.items(): + print(item) rewards = [] # 记录所有回合的奖励 ma_rewards = [] # 滑动平均的奖励 for i_ep in range(cfg.eval_eps): @@ -86,7 +89,7 @@ def eval(cfg,env,agent): while True: action = agent.predict(state) # 根据算法选择一个动作 next_state, reward, done, _ = env.step(action) # 与环境进行一个交互 - state = next_state # 存储上一个观察值 + state = next_state # 更新状态 ep_reward += reward if done: break @@ -103,10 +106,12 @@ if __name__ == "__main__": cfg = QlearningConfig() # 训练 - env,agent = env_agent_config(cfg,seed=1) + env,agent = env_agent_config(cfg,seed=0) rewards,ma_rewards = train(cfg,env,agent) make_dir(cfg.result_path,cfg.model_path) # 创建文件夹 agent.save(path=cfg.model_path) # 保存模型 + for item in agent.Q_table.items(): + print(item) save_results(rewards,ma_rewards,tag='train',path=cfg.result_path) # 保存结果 plot_rewards_cn(rewards,ma_rewards,tag="train",env=cfg.env,algo = cfg.algo,path=cfg.result_path) @@ -114,6 +119,7 @@ if __name__ == "__main__": env,agent = env_agent_config(cfg,seed=10) agent.load(path=cfg.model_path) # 加载模型 rewards,ma_rewards = eval(cfg,env,agent) + save_results(rewards,ma_rewards,tag='eval',path=cfg.result_path) plot_rewards_cn(rewards,ma_rewards,tag="eval",env=cfg.env,algo = cfg.algo,path=cfg.result_path) diff --git a/codes/common/plot.py b/codes/common/plot.py index 4f0f0b9..6707ff8 100644 --- a/codes/common/plot.py +++ b/codes/common/plot.py @@ -5,7 +5,7 @@ Author: John Email: johnjim0816@gmail.com Date: 2020-10-07 20:57:11 LastEditor: John -LastEditTime: 2021-09-19 23:00:36 +LastEditTime: 2021-09-23 12:23:01 Discription: Environment: ''' From ae07519f72e92a48a1f89fa1da0c3462d6113a8d Mon Sep 17 00:00:00 2001 From: Yiyuan Yang Date: Sat, 9 Oct 2021 15:29:11 +0800 Subject: [PATCH 2/2] Update chapter3_questions&keywords.md --- docs/chapter3/chapter3_questions&keywords.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/chapter3/chapter3_questions&keywords.md b/docs/chapter3/chapter3_questions&keywords.md index 5ced147..a1d0638 100644 --- a/docs/chapter3/chapter3_questions&keywords.md +++ b/docs/chapter3/chapter3_questions&keywords.md @@ -77,7 +77,7 @@ 答: - 1. 生成policy上的差异:前者随机,后者确定。Value-Base中的 action-value估计值最终会收敛到对应的true values(通常是不同的有限数,可以转化为0到1之间的概率),因此通常会获得一个确定的策略(deterministic policy);而Policy-Based不会收敛到一个确定性的值,另外他们会趋向于生成optimal stochastic policy。如果optimal policy是deterministic的,那么optimal action对应的性能函数将远大于suboptimal actions对应的性能函数,性能函数的大小代表了概率的大小。 + 1. 生成policy上的差异:前者确定,后者随机。Value-Base中的 action-value估计值最终会收敛到对应的true values(通常是不同的有限数,可以转化为0到1之间的概率),因此通常会获得一个确定的策略(deterministic policy);而Policy-Based不会收敛到一个确定性的值,另外他们会趋向于生成optimal stochastic policy。如果optimal policy是deterministic的,那么optimal action对应的性能函数将远大于suboptimal actions对应的性能函数,性能函数的大小代表了概率的大小。 2. 动作空间是否连续,前者离散,后者连续。Value-Base,对于连续动作空间问题,虽然可以将动作空间离散化处理,但离散间距的选取不易确定。过大的离散间距会导致算法取不到最优action,会在这附近徘徊,过小的离散间距会使得action的维度增大,会和高维度动作空间一样导致维度灾难,影响算法的速度;而Policy-Based适用于连续的动作空间,在连续的动作空间中,可以不用计算每个动作的概率,而是通过Gaussian distribution (正态分布)选择action。 3. value-based,例如Q-learning,是通过求解最优值函数间接的求解最优策略;policy-based,例如REINFORCE,Monte-Carlo Policy Gradient,等方法直接将策略参数化,通过策略搜索,策略梯度或者进化方法来更新策略的参数以最大化回报。基于值函数的方法不易扩展到连续动作空间,并且当同时采用非线性近似、自举和离策略时会有收敛性问题。策略梯度具有良好的收敛性证明。 4. 补充:对于值迭代和策略迭代:策略迭代。它有两个循环,一个是在策略估计的时候,为了求当前策略的值函数需要迭代很多次。另外一个是外面的大循环,就是策略评估,策略提升这个循环。值迭代算法则是一步到位,直接估计最优值函数,因此没有策略提升环节。