From 05158e0a2e7e995ba850c1f73333db19204753bf Mon Sep 17 00:00:00 2001 From: lionsoul2014 Date: Sun, 25 Jan 2026 18:56:46 +0800 Subject: [PATCH] search tests result updated with the latest data --- binding/cpp/README.md | 123 ++++++ binding/cpp/bin/bench | Bin 0 -> 81008 bytes binding/cpp/bin/edit_v4 | Bin 0 -> 75272 bytes binding/cpp/bin/edit_v6 | Bin 0 -> 75272 bytes binding/cpp/bin/header | Bin 0 -> 79728 bytes binding/cpp/bin/make | Bin 0 -> 75424 bytes binding/cpp/bin/search | Bin 0 -> 81216 bytes binding/cpp/readme.md | 563 -------------------------- binding/cpp/test/search.cc | 10 +- binding/rust/{ReadMe.md => README.md} | 34 +- 10 files changed, 145 insertions(+), 585 deletions(-) create mode 100644 binding/cpp/README.md create mode 100755 binding/cpp/bin/bench create mode 100755 binding/cpp/bin/edit_v4 create mode 100755 binding/cpp/bin/edit_v6 create mode 100755 binding/cpp/bin/header create mode 100755 binding/cpp/bin/make create mode 100755 binding/cpp/bin/search delete mode 100644 binding/cpp/readme.md rename binding/rust/{ReadMe.md => README.md} (87%) diff --git a/binding/cpp/README.md b/binding/cpp/README.md new file mode 100644 index 0000000..a14768c --- /dev/null +++ b/binding/cpp/README.md @@ -0,0 +1,123 @@ +# ip2region xdb C++ 实现 + +## 0. 文件说明 +``` +Makefile --------- 构建 + +src ------------------ 源文件目录 +src/base.* ----------- 常量及工具函数 +src/ip.* ------------- 实现 IP 处理 +src/header.* --------- 实现 xdb 头部解析 +src/search.* --------- 实现 xdb 查找 +src/bench.* ---------- 实现 查找 测速 +src/make.* ----------- 实现 生成 xdb 文件 +src/edit.* ----------- 实现 原始数据编辑 + +test ---------------- 测试目录 +test/header.cc ------ 测试 头部 +test/search.cc ------ 测试 查找 +test/bench.cc ------- 测速 +test/make.cc -------- 生成 xdb 文件 +test/edit_v4.cc ----- 测试 原始数据编辑(ipv4) +test/edit_v6.cc ----- 测试 原始数据编辑(ipv6) + + +bin --------------- 可执行文件目录(通过 make 生成) +bin/header -------- 测试 头部 +bin/search -------- 测试 查找 +bin/bench --------- 测速 +bin/make ---------- 生成 xdb 文件 +bin/edit_v4 ------- 测试 原始数据编辑(ipv4) +bin/edit_v6 ------- 测试 原始数据编辑(ipv6) + +readme.md --------- readme +``` + +## 1. 编译 +``` +$ make +``` + +## 2. 查找 +### 2.1 示例 +```cpp +#include "src/search.h" + +// IP 版本: xdb::ipv4 xdb::ipv6 +// 策略: xdb::policy_file xdb::policy_vector xdb::policy_content +// 不缓存 部分缓存 全部缓存 +int main() { + std::string xdb_name = "../../data/ip2region_v6.xdb"; + int version = xdb::ipv6; + int policy = xdb::policy_content; + std::string ip = "2001:200:124::"; + + xdb::search_t s(xdb_name, version, policy); + std::cout << s.search(ip) << std::endl; + return 0; +} + +// $ g++ src/*.cc 1.cc --- 编译 +// $ ./a.out ------------- 测试 +// Japan|Tokyo|Asagaya-minami|WIDE Project|JP +``` + +### 2.2 测试 xdb 头部 +``` +$ ./bin/header +测试 IPv4 +版本号: 3 +缓存策略: 1 +文件生成时间: 2025-09-06 02:24:16 +索引起始地址: 955933 +索引结束地址: 11042415 +IP版本: 4 +指针字节数: 4 + +测试 IPv6 +版本号: 3 +缓存策略: 1 +文件生成时间: 2025-10-17 04:41:04 +索引起始地址: 3094259 +索引结束地址: 36258303 +IP版本: 6 +指针字节数: 4 +``` + +### 2.3 测试查找 +``` +$ ./bin/search +测试 IPv4 不缓存: 成功 +测试 IPv4 部分缓存: 成功 +测试 IPv4 全部缓存: 成功 +测试 IPv6 不缓存: 成功 +测试 IPv6 部分缓存: 成功 +测试 IPv6 全部缓存: 成功 +``` + +## 3. 测速以及检验正确性 +``` +./bin/bench +测试 IPv4, 不缓存, total: 3910284, took: 27.60s, cost: 6.59μs/op, io count: 28227147 +测试 IPv4, 部分缓存, total: 3910284, took: 21.85s, cost: 5.15μs/op, io count: 24316863 +测试 IPv4, 全部缓存, total: 3910284, took: 2.26s, cost: 0.25μs/op, io count: 0 +测试 IPv6, 不缓存, total: 4792520, took: 100.40s, cost: 20.22μs/op, io count: 80758866 +测试 IPv6, 部分缓存, total: 4792520, took: 93.06s, cost: 18.71μs/op, io count: 75966346 +测试 IPv6, 全部缓存, total: 4792520, took: 6.24s, cost: 0.81μs/op, io count: 0 +``` + +## 4. 生成 xdb 文件 +### 4.1 生成 xdb 文件 +``` +$ ./bin/make +生成 ipv4 的 xdb 文件, took: 0.57s +生成 ipv6 的 xdb 文件, took: 1.24s +``` + +## 5. 原始数据编辑 +### 5.1. 使用说明 +* 新的IP归属地文件可以包含空行 +* 新的IP归属地文件顺序可以乱序, 程序会自动排序 +* 新的IP归属地文件顺序可以重叠, 只要无二义性, 程序会自动合并 +* 最终的结果会将相邻的且归属地相同的行自动合并 +* 以下测试, 原文件使用仓库自带的数据文件, 新文件使用当前目录下的 1.txt diff --git a/binding/cpp/bin/bench b/binding/cpp/bin/bench new file mode 100755 index 0000000000000000000000000000000000000000..0e5beebde4dceb8189959cb480706c569b6aa8cc GIT binary patch literal 81008 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 M7HPRJgYQ)RFB0Hks{jB1 literal 0 HcmV?d00001 diff --git a/binding/cpp/bin/edit_v6 b/binding/cpp/bin/edit_v6 new file mode 100755 index 0000000000000000000000000000000000000000..5a83315fb57de0dc7008ba69131bd2405db5aa02 GIT binary patch literal 75272 zcmeFadw5jU)jvLy3@~!Z85A*9tW)1ngCfp^Kr&o3feDGfkgb7p;M3AG7+*|Ha~g@hv{IO8Je{-WVzn{I=-c+n4!(3 z$62lqKi&KXe{S(_GAxSeaWk}*6ZNez@~4FZF3{m-Xe~$HtbAWjPY;`nMjRJJA&)^P z*~N0s5A<^Bq08W>8JhegI{sH+@H0L1>ga4{m|kwKQ7%0U80E~6b?|Tcr{Ou@q`p$4 zT$?W!$d`Zj&tRwRTBE*n{+sc+Mg?X_IpN^XNz0mngFYvNn@bB-1pC6-R2lvn~{$A+M>IHv!FZgHolK-<_ z@Za1EA4+<`bG(;&-M!?W+za38dddGxFLd76Oa8&V(DS2S;Metn|6nih9lgNc?+xCI z{8#qE=QX|1*{_%OPV5E$TfNY;67ts5xOk=)dM5Oe|H)qPck}{x_kw?TFZo~ZB|r70 zyNB`eSTA@^^}^3Rz2Lv67k+{bJ=PoPrC&z$l7DV5`7Z_h!XDan4=TP8vxGNSPwZ#p zxd81Q3~Q;dLkGA>ApgqCZ=F|HTizI+-4HG>x0MIWO3LR{HdNkP-59QHC@Yy%Q&(GA zHv5*ENgnOp72!MUE5VV1Id$dptLIeK7JtK5`n+gnLuGx<>y#J~V zd5!aD*B4)FK~GxiAikBe=K(KzE8LS5qe$2{N|$vbcd)Fy%v)YOeN1`j)ze3n*NB$q zf_)agHZ;t>v%I#_6l|Rfb))JdVZGa}5`iI7qKkxRA9;MkG-OD22!=^%L-o8$^!nV{ zjdRQE>uRbi?)2rMSZ!tH90Lql(1o>bbX85Hajw8qJO3LBF#Eg$ya`tpUrW5A*BdHD z6aN*j^HEkv3wu+~{J&KjtbSf3%<7XOP8CxwlL5Ef8Ln(Bz4{KL!T)=u#33}Ny0N~l zu~M*UdN{A5E)q7HiJ_kqZB*(vd$y+TR%pEcHy!26C1dMqA$XCBaPd4Sff=>)t5M^% zm5q^kmA0x|E5nT-1iHH7HYm;8%BwIY0jP(f4ObCjt7@o3M)b}cTjhf4unk4RkdL~m zIkWGyRn5-3(%bz@^al!a}c816uY;Y7{N$za~>YGkOb#BdMS)f)_`s^+-5 zOCYG2+hD5-SJu?n=2gzCm{)JBs;B|m7;CHy+o~YajUuTYRnKpz4ui7B%F5exr1jyt zS{tfs49}^!>@u#L#xQzo1?p$a$5@39pE7Au`KXaz+mujn;-u@Z$9LYyQMuiszJl&i zU$>~gTP)Xa1D2wR!E)coQQcE~mXwjByQTTMMfIfe+>v?7FJJ0&RO&O=M1#Db8&hru zR&5Tf3^TDp>xZvQn-l+K0^&fNX-@oihONJCfQS*2DN+U^9AwK9-z>q>5<-^mhgqMc ziN}fm*)iYu!*@S?Ws3j!FU%G3XUF&bupvzQsPy7H2hc+J4PgAUqxO4^^fic2JpM2& zAeZea12$L0CELqJe71;Z*gqu@+d$h`BmVqj>oLhYcSJO8b@$k18&#+Y?&Og&1VERS8SLpCnhX2NdcNu=M zHED3wh_6e7&$>a!)0zgaH{d(c;Kz;lyJ>LO?{qvJY4BMFyel34M?JsI^dlM3dIRq4 z&;e$<%(&SOnvYx;u&?-M(v=Q>cekDn<|lm+gmhTo^m~|pss+xmV*Yhm;C>T`@VEs& z&H{IJ=n>L0$^tJm;1E9BRTjASBR#_IHcewf3M_C4bn>sz0>_de`6pZ8=2&B5sRhou z&A;m{aPr9fn`MC;A}EsPTHt2iFrnT8hu|jv7Fgi@lTe$j$pXhfOa3jhzy~IwHromd z90M!)x6%U7Ni}P1#}c8VlU&-&kjXpJl<*YJs0^fp4|Ihg#q}EbwzI z@OLfnYzw@@0ykX7B2~4(&$Z<5vcS)?z>iztrmtEg8*QbwX@P&+0(V*97g*rg z7P#92cU$1!vA}aIaO?WfYk~ilC4Yeh?y~0{_qFe>m_T4*Z7$|KY%Y zIM5RZK9j!vr5rurlw*B9e#K^!TUx^zi5+rule0}^PmKQZWt%N=(MkL(T~KIa{<%!i zK1n1JRVzfC2DP>;6{jJsZA`^!Kx@yW;xwGKU!~$Sn6;mz;xv@CC8;=#D6JtCr(vw! zl8VzH)~-#(X$Wf*Q*j!=T5c*%!&kd76{o?gotcW$(A6?haT>VVkyFX`(y-M&NyTZ< zYP(W#E}XQDsW=T=?U_`Z3nJ}TsW=T>?I)=?4O?wVDo%q|Ye>au$ZEHw;xu5jYg2I= zuG+*@oCd3wn~Kv=)h+Pgoov6G@lR558lc*)RGfyVwlNi_ z!Kpoyiqp{4ewB*Tz|?+{iqo*vmZah|D7A)EoQ9-!ODawSQoA-4r{SngOvPz1YPqR6 z4Mpw3RQz(r&rHQ>Flrg8I1NSZ$jM~;X&`E!q~bITwOy$=4MJ^WD$WI}_Dm|yg|GIj zWIS=vw3lqQD(QlNO^mO^MGw8$J$`>$d}&&IQCj?tw0Lb=yechzb6WhmwD`2N_~f+s zm1*%YY4MS1@r%>q-%g7UO^aux#rvkkPrcBcUq{p8htlGE)8Zec#otbgzm^u?k``Z| z7GIkde=05ho3!}P)8Y@M#qUpxFHMUtN{io-7OzcoPK#fc7N3?DpPUxIGA%wP zEj}_WesNm-+iCHkY4NPIc;B@6sdZ`npNz}OVf9^TGC3CT@B$$EmKtX9)RMi~I{c+3L@YFPHj&_-gj7M(Grq{~{Vc(6HF;J!J`hsQwL# zWCb$HN~c-z#z3sJH<}rEU>l&7OC= z^`_wZZKzMZ80qY!pNo9mx+aH&PDUoCFFHM4aO+|s`S>gR^8x-Li=V)p!IF<63@Q6m z2b+cXcw#{M=K>Qczf^pU_o(0DM|_f-t#Y$1ZZ%7!HG7tIqx)hacs7YZW0f%==-`Km zpz~$5R3xyDEoPRN@zMFX&ayx9`(a4xVf8mg&g@V;jNW({QTD};1Q?i?8tE=|q4;X{ z9PdVv;3Vl+KlqYG_o-z9#bGrh@&`O}s_RAO&jDATMrMu_^k{tR)24N zIYaU1JRPj}XCn78^~WNm+2iacxPtmItm7XiL>-6Kxkkp*#_Dc$5HoH?Mpj>FR;7*+ zU)|*FQu5)WWR4-H=Ma+i65#55AXFO!*2C(4hOysg+p=vXEeFFn!C0{^7`w+AjL*oH z6^BRmzZ34G?m12x4yzw9jE(Sgz9Gk=E|igDe|9499hKulHlz7A_4~+TLR)1e>Sit_ z$_j%11aPesIOcW9v71ymdN4ca|1dmUj@|8s@Ofo_JF-Lsj&T6Ebif<}qHTqpyX4qC zSauLkDPTeWp~$mT)&&*;A+z3K8}DZ+P~8_1A>v;HK*{`q2~cj=ck3IWo*!Xel-bo& z7O3a30>xqV84>PNr@|UcBj8N-#kJ%s@ca<@I^R|^jbe8*+Rh4Y#}_kJGeirl`kXBo z%oe4Ijm)~2tYipu2p*%P8R+YCA0uy;BZUrlr5m_Ac+@GtPS%JG>VuN)6} z3Q+@Lh}2;2IJgkR#?N-5FjHrN4&XS!9Hr_GBnFi|FK{^}EBj^TBa+b{)-;uDw(5c% zOo$U98?Xknu>q?Yc5lD{tPz`htvB9OG_y^0BAx5Lpt4EJ#N=mwCoo6w+jlUi?7Uf4 zK9Qq)x=PE6eXYK2a(u#IWKEoX+aGPV&r=)#{KtUE@jgFf;6ENd8%xn?{KiuBj6{cY zK@&OEW`xK;TjU>o1B2nGWTi{qaOf&|!|_bnzD3@7Dm(-T&NmP^6CJu;ZI&l}O%rB3 z1C)`=X2{VAyVl@SRz3|6lw%W)BBEA*j((a0TDSDM9Qo`wp=`2#me=MZ(V&NMWx|=r zw~njEXu=WhzmDsdS6uisad>Uy%82aty*( zsLHV?GrLF_MsQivJq5P#x25%wN$j03KV!yrbr;Bd1%xD2RTMp}u40JMzMkt}NJS~u z;XsBVxFft-2P%gXJEZkpoohvXXcy@(Dhn!~%N56D<@Fh|^4ICI@`i60Nc47-!W>_# zdJ1*QiY6=Xt;awU!t)na>TipDixOk8u%<$cy+U3nn651W54FapvH}gXj^`K3Z>g@O zoVw(8%-T+p+#Q3^-mlW`co@}^Q1C~)>?j6MN`45A^=m^X>m!PB>G^(Ob}Ak{l@acT zO!Qwc%~D+WFO)00mq*i~DgW`J12lnHYFw}!^ry5{A2d9>P5nE% z$>47lDzMUH;-{OWNBmW&pf4-vtB&Zkf+eUx*B`R7Q#m3KXTXNdeb3|L3K(3G%r7OiR=&s>MAU+VB zuPHcao2y$*V3({6@yO9HrTG)(*j4zjM|{%SzRUW_v0)ye{gs=XTO1dN{P<&5CtDaI z`dfQAj1AA!db{X*Mb{P05TgLicni(=N?v>bO9PyN@^g`PPN}{6y^tnnHGxa=8HUThEr-DjXtMgu>yrk{Kur`mk3Z2A#`@V`dvZ% zLf{wkY9XT-JZ>}$xS?*vcoF)#XdOq4Zx`q3LF1t4smQ;J*3!Z$mE-j;IaZ2=#vIHT zF{kYRhtxcn>Oct*AcI{YWK+Cydm$0owiLQ-@;a&${9Pq0Wgc1fZ9 zIX?Pq&NzBQv(={#b4~=oa?B;ifi+f-y0%NrJU&k(NGL^JWw6ab4nO9Knv7cI*bD$6 zbrEajmjyg?p|hkVZ)LJwht(;fn&&)CBq6P)H$a!HJYb};vIhirMSZXhfnVmkTW3WGVpc_xCQ-Txlps!i z88t~QGEy}DW9mDO5DI(H-!3)30t8$(-3oF_YjEEZZjWNgv0Aq84rfgu38MET=p`9GnIUOsZU zD0_}5dn+k5%ie&IQ*pc0Ux*dOd$MwfYn*Guq6h0^b1wL zD3Uhmat#f`^HY+fZ04E(i=~+!cjsVz{x%jhXM-v%an|$vBbiZY^kWA_vfDabYWZ*W z(c(?4)a=T(Q0z7*Tk8tNM#;+GWraq?ZeMFK9vL8d5B96erk)}hsaf(eT1?U7{qLxI zky}ileuHZODP45K@jZM=dTVZgmuy`yC8r^?x*^q?65&G+`#N ztG{Ex(~`Nsn!w~3lFhzoOOB<@+Vl7}`CnEg9d4!3CQP07`wB5j@lP6jpP0ScVRQfuN2HE$|2|M(s`n2^d3&^n;Ghmv?rbANQ7T|VPWW&n!oTaC)^jLOQ!Xa`X+lYGX;WDc#Cnlrf= z7kZeQ;_adtLFEhDgRklw!Vq!n1J~Op2|l6QD2woAY?%bBNy(fV4_{pXc}m;ErDT$ zHucxgP_LAtxO%r}+XB~%=nDuP#zvd^{Q0au3}qF++bt5*CkTR0cFXbUg;YLXITrHd z$jWqY$bVdFZV{xw-Gn?)#ghtU<>~@-6j)CK)y+jF)G-WQq}$ZZd(Z@!F79Bo*ky;2 zBsHJQvG-Tds=4rG+AlP#w*tr!M@}Wzc~Z;sta9-t^3?1x*lKdT$R0iJY#g&1rpi6Y zLPpgQfZFyFti;js24#x159 zuhI%!MX_+dlc?yVP~d7Yn}pSP>}nX_XF*P~>-DY_`vvIIGGW;sRv#rpx?mZZGWT1^ ziTV9_^1DrY3Ezf(kx4%KdW%+zg53mE_cs{pEo05d$+&LN=eIWZkjGU=01*a+hB{7dD<~r zG`QA~+enIlpEp5pn?0*QP4Fdj4ganp*^pb|o`VGhf~A(9L*Hrdz+5oxU1dv1=?D#P z6$>8~Cmzhr6fS@!e}cxxmwR>querA43J$BC<(^gojWyooz?gz@nP(KjB4{h~bzkv? z{7(q5)I1e6l5!$5mwIQ`vVd6Adeyd%$^Q+^( zV@-K8nTlkclVqXrmQOLjtz<_GmWK}Z8sH{?^>y911%&HwNEa7Uz}er(wTgwo!Zi#< zN*9_ygAm3o_t>s63S)iC)$cBmdLE^-`AW8h>QRn2y4969Kf+ixVlMTEh=u%fJaeVy z{}$5;5=>@w!11B}Y&SXelD-OuQy>Hmg_M^(O(ewVrU%(&kP01US+&y{U}R1D2p;gP zM$r)DV;MsF4}$T5u!5nq`6>xj^C~1j;mH2wqFO2XG}a_Cx>9d_m(=_f2Amu-0k26* ze#jik3DHdYQOxnCo<|2iCui0y$RX)E)v^FpitS61~Z*7-B6QJt0X;AHoh)2&#mP3He`>TJ~X@(3$`h z_D>KbV5xw0bCICoP0;5%T6DD45k4c9tK_dom)j6E$jGe-sp!6Mg|Jleof9XOmd(A7wMm^*;AW zSM<<-QQnCcP7vTsF3aHx(NU&W?=VcsdVPT}93u~YDOevM-?8oh9*ey&R!HDN48O&j zINzm=2CeGDRJlg4n3m}99Hc(>0c|I#4@B>sIKg+3)w5<)?a ze~)4FD?F-lK7(RqOy>3 z3M;9_2ROfXTYT^U28_GOg8GD7i)C~$b~AR6cT3HAoP@x&733ON>*_41S|P_S3r1^m zgygRhoVH4S7Wv85S*MzbPl4v37_x%*hx&WYcZV zEsd4H9ztgsrAjv#Z23+=Psc7jYh4g)iBUDR{L5ADDu5z-v-80WC;|Cp{{r z{rh8@vBIP=w^Rb}uxB?WM-fPX!)7YD*Z`-RVdca!WdByFc?YRU!X~0U#?XsR6nW`g zmzDl<`$Q+cY+EM6Dm4uyy}lf^j21U65n(^Xl9t&YNCtTl6878AjVSsL4kKY?#S9Si zadKTTU%*U@$goyK?wgPjiqC^E?t>7ii(Hht5-D&%tXub~Uqfvh@{av^^dk1lfVtSv z^xr082=P#a6!w<0pew2NIIb*H&kxA?#hW<%QnQZO59KKe?wbWf%~FdC2q-CRH{ims z<1iV5VIs%!koT~9T;vUB3Bz5Cizh_?pQpui(<8vV5wDn)xMy)LRzd2nx5QM|JO~l( zd1Tb*bKL@iQ3V55Y-h1&)fP4kR!S?#5SvO^$B-n-D@Fyn9>at7K7C1)S3OZTB=thv zZhF9@_jR|OA5A*N%A0|X2=#rGq=brjGr)NG;wg|=?y$|`}o2?f&j zC0PAi+CubHHv>p&=CO#*H_#5Nq4%ahqw|xtX?LSA@}~BcV7REKn++*7zk`&{zW^W0 z6(sjX1pOu8m^Ka-(yoXVnENB5l|rOCw^zYF`G>Dn?02+BTh09u*e6>J`$TDlh0;&9 zZx!eBEm8^Ns_+fnxZ+81IUaFqToM>|iEb}lhnDH~(m%C3#(R`)s74s{JZ6vf^kiQx z9Ie|y$}X63x+Sy$RU4*1yLP+YwT*?wUeyS(S2a|y<5JO`#y;2ih;&~DbiS8bBy?`= z$qciaZOSgtODnJQ!PC@5<<9kKQDN8iw{=6_DxC9Kv>ayk71#pb>TG9*##kg%-j7fHCl1=YW)cI8Tn> zhIH(}<2)ix)*xN?;U88dkzH!uCuo9lgmqp@>+2z$1rqkfv5=DIQS(tuoTM~%axOs} zI}5NI5^CoT3LhOr(60JATAzblDjtG>e&UJ~Rey#{E~JuiLn|Ls7Y)*ZApH%b%h@yx({{gOlaZIlrg_q_quQosHeRyU0-v)U^CTcP`4l) zRGD-Kl`ZQ2fvlIa%2D-75{2A_Xt?SVkw($#FJ3n`uXHY{XX_1NL;ITznd!-f*O?2M zd`@36%qM6YqTJ8XTZZ#eY#BQhv#->`J3ZR@Xp%YyO*BO?_s!JzWPDpZlHxo_(f7DP z-(IA=UUXfRRMVQ;0lK+5ilOe0Fpnr4tUdS5sY%n%58Ao4m3 zWa+1gIFv6VT=Zlxy2Yi|KyXWt?LMRbW+EPpZU&uV2*c(O{MjnCOoS{7hhYeV5XUn> zEv~!w1&&WbQeG$HjNn=xVhs81_+!2g9Xs>~8TEk?o zs=SJd&~$jjzKCo!@#D-&me}6KD(9G5i9Dn~7;PshktV^{VEmpg^^w=eRlR?cCL@j- zp0=}L$ny`7pRH**gM&@zlS_I+5x!g9jav0V*sebN7gmGq2-*Kpco2uL8%$PT6=1sc zF~0p>$&`)iGfash1-zwrfWbMGi=C$v`;a;sy<`sed7z7<6f z(){n^UwdRy5s$fXE9$lah|3no6*kfp+|Is0&)L}~%YnBV9(c3v|3SWa0Q8m4i<0A2 zoPWc*PJIKs#XcA6G>*Wr9!^ZE2K+LPbkqFq#O~*A^_YNI>k4P76VX(iWt%&3!~o}) zfl=od&q!c;^?wzPoAFGHK1y>>r`TrhypSq|mHMVKDv4*y^`CPjd z1uW<9aQOG~#ZV?Va!Hd`R{F{D`A%O#E60+dhw~gbnd4kf#i)H7#)3tggI}UW(f0m& z`Y9mjF@2!$V`?AumhRHi*Y}n_L{I;DZ|T{3{fl}_KUYt`ndz1dX!y_mPtH>=6+KxD z)~BDRd~_>?DS4i9(6;V9BIJd$7A8lro+STgOc&=sopQz5Utm>$BbDk5qEXthH9U0j zR|#|-RIHf1P^bw}TlDLUMF$Cr&p3rcEI500<4xM`_U^SA{Tqn&c?@`qTUr<8MJGIn z&%VKmtzwo8Ut-`3C>w`wlq+^&oicP;SwB?1QFzz=J0p8|o=#d@);E!s(AkzeFAF{X zr7sbkPypnPLg_)UWlVhh*AzNc0T1YNd7zc_T2B)j^u_v|igMp~(OBQE&I@(D9#!q| z*Q~^PtnV_%Ik7$;AP3ih{vC^kL?`S-tZ(Ffqz>)u5aSJFMufUNOinW zRBK5ORrHA?jr{QXS~~}G+!gF>7{LaI{H@{hq_qR-neSV$y>XvlQ|kP#uNB+~z{a4` zGujV)yp2G7-?88uX5t%Y#U~IH>NZNM{MSqL@;Ee}q$gSatbbkpWuv^cJy5OxR(q@( zL&zuEGta&!U3z~d%m0i1I*pzgFYtmg%~T&` z^CJ@+6-ahl^j|VnW}pe2PqGe$?>v2HnkqBUrtd4 zDYKwIWKR}TRGVr?X??zczc&=0?=nxRru|6l7xH!p|v1bPV%M{($2Gbe)8TUU1 zf|Q5+oX5F=69tWAb0OX+MvV}r6#FSTG$>4GARYW4;B za>X{WAA&LMwC_;1Y&dnnhC|u$Azo?iuHi>oT9*xx;wz{Lr68VL(Ciz&bhd1}a|af% zR*fR~8yoc0y*hrR9(&KIVK{2=!3nU|krl9SED{4a`XvCx8>QlR0?Qn*s5Luqevm%@ zilb2RDcFP87ca6h#l2;U7mJvFSjV_ds~_tlw2ddDj;_b)Z(FLL7ayQM*dlNG7A@~9 zO>w2r^Uwq9>s}A-()b40LdL11YaCn^2RwFB38x}q-u^&jX&1*nj%J|tEe;Rz)!B=- z^uye8Sgl3|xFU0KF~xT@sGx4%nbh6!>i9M!a&f|Q`&^q7DYm0=xJmW0Afg34%@sW^ zN%vg`{KB8!Tt-8LJ8z?SCP3Mbk%gS{7Dt9HI^n`aVmQ60PYgH*U=FBS)W)fy`63pF zja#VuiSJ-dpkfwJRn^Oi!vo?MlA3kZwRhmb%{gv1Ya#2Xm)Fg4&zT*bJr=FNT?4}I z;PIuoa0l@C(juFBM=L4cD6hi}0sdVjPL2GTdjQ7DdkAufR?=fCb{k~OP$(B6Hnvr>yEF9pEiKyP|Ni89@j36b8H&Hm! z)~7IuF&}$MHD0pDxF;^*{7tb&v|9b?D|+XkTiHXRduVs--SZat8^vC#O=?+8M~B%% zbM+o-f}9%jHZHVq-7(ATqwVMm_EF0piKAllwaD6XbP?`bzAM{5>O4mu{{=XNvO-jX zEqVWz@BnG8?2^{HFoo{X+aJ3T%Ml*p_!%ip_4N-KZFyg6*@G5pythp~zzpzOhoO&m zsplAiS4c6Xf@K>^4fFj{fsQ~N2`JQ}bo+r%N$C+X?0_Q#vZ2mfuXCvY`%XHK#wA5~ z1Gq0lc&_Mj-2a0NQ9g>qRW%@j@l>z1DRHu~jszCA8Fn`2ku z7l%H7Lj|4E8{f_i3ckIE`gFc=PXZTUlEaSs6AuWcoi^O`k=AWn!r-CMTTb;&+IcCV z67(jS_V$-(=Y?p3_A0*gcA{TR@mfcwfc3Mi;#E&^!YUi?L$&=SA~!^AmUyWowo+9N_}MJ_k*>W=IoU0&ht(k{cN9NmEPA1Y3@L{DJLVi0(Xy^aky8@V6i zd2|CdEVkhz`Y{;a2zvu&s(zEBijfO!$^LIVCE}Fd)97nAdb4|j4f@{ubGOEhH1LS~ zA)srk*h={|Xh@zT>9*CNANok!n&3GKOuYKm%2CJ~ltwd9==&(C`y=9RhUlM^b6)G0 zu;edNV1iihci?D*AiJlHh_v=??_8|@ z2~HO|mNt)wGw*YYG0fM#kn~k(W1$~STWs(8)c01)x7(8EHx~F>%lF?b-))xf!}#uQ z-(mf5`5n5w9<;1y0<`yoSYLHpKi~kBYaRW=-Pb**Rs2wxS> zao^!G%=^U$^ydeXn;!bp3%r+zIgWa$K009uZc#Ww@h3d3po2yVJ@#%m)6F?>DEKM1 zoS_YjMDp_e0SMxx^=EA~F-nP86Zifu*R=>n(9#ojaIY-~`ee-mE zs-IFQOr27|CBqPCkyA$$_DRj3u^@CFbOg>P;K)VexnhH;QNY76yKoo|cV;NcJ)B7J z2x?*K(Q18uElD&sj*X)nA>}zw6WDE@6!7KAr>M+5t2MoA=6j$t(3oj=$(N*Rt zRk%y&(lpNH%CQnyUix(|ZnQ5s$@avb)DbD$X?U;s69wREm~U{D^5&;9Ky=fWQu7yr zk7wyN=5!DTYsMf>Y3w%b=?7V7pf%>fPyIORBmoh2CvRWo8BsU;&^RXRHej=KBYUuj zraeU>wTO;iyotl6`-0BUTjB($OFsdM{#E-6`TM7x+wxzhKrXyD;$)+^Il1I!;O}vh z7>C*P%Xe8k@0pKmv*6y1l8NyWE#NSMdLE?y}Q59|_YpdAPxY`a=FgQVSpP z(S}k_Lx+j$2KxET%R$~ZICA<_vK?~#I(w8iNn;R1agX!{pyVNtbUhc--=oiTQ&5mR)2RFnzquv$7SretvrMw-A1@ezW zMfi?~;*+w2xIYmZzQMjdIDA|5ljESiVJJf1Hs!VG23)Ba;ww>xc>OyY4hsssY->_q z_jrEMdO!1s_9TQQX&>}-E?|6~dG2xuPe=0HWitOi5h-moD2dg(lwD|4EPM{GcMLu$ zNQ|S+>MhT5NTm%2PN}*=!LI$FD>)>%y?@;^J>`7~d9(?be)D@wehkUmk!)%O)zwor zsigs023dcBtYQ;fRsU$t+HKmeG1~OmyiNO^<@-U)_YW-JRrt1e^mYG}xKC)EDB*xA zwRj~k7w8xFaXfDiH)1Cr1WCLZv`-y}Psjswim;C{fkKzzR2~dvoVImf*3oe84>HVY z%hfoHP4I^NN2O*vfw0N3Z`CeEAE)9KP8cdx^B~(?s9)C7vW7h9QB~3omKBStY{a2j z?vp`hwp%Xe)9@AR&Ea4l>vijj@>~%`6D{lS10*fFsnnwI=<IRy`7TplO z`82)osVH6uhI1U_C6IqQj<@$TjtAzJC<9aD_@}^FwZhO>jaLYImKyXpyVE1JFhLBh zL*IywO;&x9qNDT49*6IV-o`awm^+O#GXYd1Pg5qWLJ;Z1n7eE&M(>?ZrH0s@&!xUA z@x9{zX1{4DhlA47e$xmLYuRsl3{lH)hku}#`~SdV>PY5@ zweV@Kq8Du9b}p7DflN9k=+lVcnV$(aRYR8Je{yD1AGbKOvvFy28^)Aw55*s{sbVlU zqYer^&dgqx0b?f{Pb~G7rKj8N8)SIY_sWa6pc*{v&=uJp7``*0yiVGjMarw{Z^g=_t<>U#u{*o3aRtd!1&{YK)M;#CFpeMVz5Z0q%{-`(n^q76D1k}54S5bi`WN^CK! zOVJU!z7hOP-Y0*VZN}d9edGYz8y=83*KGP1C9q!E=n`1&Y_(`_F#Z_Z+nH~ym$4HP zZNqzVm}ao~&;=<`*>36SJ{O|}!C0Qhz8UKCEu@G1oqSy_4|7GP?4RU}v~l|dh1VgG zaCFWe^n8(bL-F5}TReNQ+;oY;FE8dV?6!;dpnjoK{eBp_|7(MuSR;Hk_s~DL7U#0` zg_iwDH~CwQoRmMDA`=hDsPDiR!|Yf>Vt0tgXj+bw82E<7ic?qhh~|jJWQd2oGsVJ# z>n*_1AUd}3RcPJ};|dMSG|aM`c;)W*bIt2w7=Kc8HM*TkktWdq;V3mvnj1^0iZV1Q zKK@2|!@f-Y$(#7VYvCy`wGpk1ayEIx#{*<>L{sGyB9E)jmYQE@LVTJ_R&bUXq>2UM zeo{;)y*`Js*@p_DSYz8jhgCh;ubO&0VpH#>5IL|Uem1sI1Y$-Lx$$k*hm=SmUPS7FJqfFr)-Z4a-+&<_)z36{qL5}eHo z;SItOn{UAzky=~vp}l>p^;*QjX|eh)qQ;wMC_k0=zi<~-`0Gm0Am35=>u~$aYux^V z(@uAad6SpFg!^tDr^dAo?=nZeHd{=SpeGnF1wL3>U1C-6SFp>s4RbB|9IGoEISy~&v^>YGAZpIhbqY11tE(3*yN8900Y{pj$ z?gVmTFP7H!3oM)LMG96Livdvpdp>a0DbO77pVDdtfrX&2&@OJK{S=h&%JwD1f{P!t z!r^?p$5yy(k&9QhKL-)w%J#xOSg$O!pAs)%EAL=`b>DGiL$uY2F`pGw!h>x7;|+&! z^|+5MWbe`j(N?mo7q%JamA8lzAHgO&NgncX5Eyi{5?}A8P2j5nNhjTVKzZ)Aic$zZo9RG%fL)s{$ z;rweq2(!0HIsV;PsNeBvO302y(BuMh5%hX+`0Kz+)-K`6cYG7sHi2x2^j&3$(|-cU zMk1{UwBd63B3DstVV{#=$w}>XtUQWi{S=&ooa`-*1+F?tcAwM|T#@YfO=@Z^h6XpM z$#d~-wpZx$?+NEb>QOG^1m*&vd#G_RAP-wq7BmSi5iS0ZS_&$Lx4!lF1PpJ9TkJur zvycJ%r6CXYU;~~ae3p59_!q+s%4k?X`D?NAcCr6NWNeXtV`Mb0CI^&V0p&Fwp?U(2 zcB+KAmSK1fL6vcK%R*!-Y^q;N*oVUOxQ{l!<-G9g|Vu+Vhy#rk+ ze5_(o2`oH-JsUt{tBu!-aj7;w=!=o4Xf=2v&QP1zz?dJi0Nh%5rtMNX+8{Lm&}+!c zVG6eDEh|Ax{NnE_S-%1%i#^e$pFo)k`8ThCRiiS4M37?e5W4(S$-&B zFL|0+9b`sl0#oXl0%_ZU6vLm32Z;^odlo}cINjku*c2!>k4#qurL0%SGOMqzjP-o zj))kSyV}sWZ+Q9rWuTK|#+Cr@-hYX^_q>tCyZ0-ASKKXQcWKA)kA5wz+wHCgSh;z% z{asCbq<5q5NcHr^45YCWB`GDO(Y;X=77r+ZO`%B`Evv_y>B&b!N{W%$yrqRU? zVAXI#C8$q7)>EEMLg``sJpmcH&~T|skx{oU+O#X6ZO!j5F@u=jUs=A-x8(W40^f~q zi~GS`zl*m*ldqQ*Q16PjYj)>3>S!u-Ss2(X02 z8fz5awY%aVo5>?AI1UEAiHBy~gr5UA*UYe*unz@~t-4vPfFd?Tu2<(8%OMy#dqc2k z)nmBA6vL7IQ|du5jwMR#+KmV zOiK)l;aPxS8$8zY4YAMqh(-K!ov8G5PE+*dsE_W1ZpcS31b9Xj7xQBnsx*Hg9lO<9Xt!XDCqhP7Tm;K% z{Ubn85L-CQSO!@Gr&N3LBw|;M;&5vO!wX0#T4#wn;5J`{JV=CpPi7t`Ps=DR}$# z5IkmhONj2Q5Ujb7(jRU_sW|}@AtfWkQ@_eYyi&k}oTHG#i`-sWxeG)7?i|z2%g6UZ z%2c-~8Wu$-x>3f9vdo-=O#(MELl?qFGsz3*+ey4k49bGaK^oThNrZA(G=J4_x)$ER zCgzis8BlU(ApmvLvD7XBsvEob_6krPH?lalWFlt?#yIx2`Qp`Py(j@7c?J|xBY1ar zm#p9^QU7k}ipGc0_jtPw`U0&fDa181sre&O>msoHn|Rs>(hu|EFY3(4RCPn^di zC0H_I1Z|iacYsY$v+<%rtwN|H5FTHo`&NE|Ds|rqeYNzhP?bq*b5W=6Ss8-3l8~M+ z8;eTI{8)cBW{ckhFy|9U4pkr2^g%h^)P(j1{RgmSKre)be;SOJVY|(~xwAZ#AH2(z z6xrp zNxy2&o=}eBwsk0%-lI_dDf5Zn0G-LQy-2vqb^%L~IN5d=uoOf1n{P)+pc)!jb`DbD zLz)FZv9fIRZUdFlK${t%0C1%LFnHS{36DgTr*Nm)iDpU%kU+`bPg);GSxbR z^i4)LWm}X7?fqE)pz=mYkzl4xiL-IRCp-=zqS}^%K$mt&pNN2sbWwNX_%%H%I?ZhvVg1uXq`vc@99u zO6z0{nZBp0rYL3bBl357O!-gYqtSyh!1sLz*fkpPCWu_vLZa83e> z>IQ*jItXtKfd0v`vc4zTB`3ATs4@W7=_y`I%Hv2$?jk}oHptSHt=L`Y3-QoavRUy7 z-##Cl6!Ub^2DzCJM+WI&{2KRDgUUO2*U8)I(dBv+UbqdH%CTu) z-!49Lsce;xMVvwZTM;}d`x!hhk@tiA36XKrUAPmA*TSGN8(|t;rOsVJKUw4@?h3(? zZ&46cD~f%4I`^g2jZUBO+XseyhKP`j@3FlvrPM(J5FJ|hjg1O za)h^2FE5Glt|?A+@jNhof9OZTOE;9)MUgX0_TT0T@77}x?09TKM&n)$?u*H>J3upz z|Mjbu+SO?&D;%Dfn&e|d`8LiVs?T#`!d-uOKwjb6pgWGFZ$0U6bQ=C2<_^4eDlsYcH47Q34);~w5g5wreS+G!gP7~p6HF! z{O_=6^v>$GcEAsOs1L=Be&aO+^jk>L@Q4Dsjt9g~Kwq-!^5hsEZ#@_uA;*hhc*6jJ z89YS%(1_F`4%4L1W|&`JDL_Nj>qIN^@CGZ*mUcEC4Bs4zFTlF8FdL0?Vx5QSQXR27 zk!UX#CLgRPtUvE|zX0_~y9(q}qOgY82XqiEyySu29TigMd8ft)9+hKuk~u+iW-&_O zL6#gjIw{+(O$CVJBs-?F2Bf_x^*#mV{W|LFXO=m2nt_g{o?f-Bt$`$x|l;(U7llA_aF2~PbAyXc{>wM7(!H5cE_PBBW;3IYa zL*(PTH>U7`N6K+1l((i!Yp;}*zesDZvv1hvw7(Nu!HTfy4DCBou7J9DqJVYLWm^F& zn@>(SAPDMph$xv<#L4^4O>6`1Jjyy5q4-57rr2zY+qtmSacoh z$_S5~j;p|rAS)X33k1;=B5o#)FsV<#fe1!;ZHZ$EoDw)~yyO06#SvcX!*zc& z^b6GSH)u|*QVNt1LEnkMlqres{;fMSh-vp1QjfF{c8BmAlE1u zEtuoDZi97#G+_^euH*=kT1W~MCVV&6X%Bi+jx8l0rpBKWOptj$QRzputCPduUy$QN zzRj+qSGM!l=6uIm;(;z>3ic zC~ht{?H{QJ0EzWE1VDT|q%a}dcdOSwKrgbx6YKLf;PzJhY)*V(W`^no9HYgwS1?q_ zx0L+iw=*HXoj>hKes$sH&rrQZGltH;=mGfEEb@yzVm`i@hs(_#Z@Z9MbR?Q^NF9nE z4}haynC;>I0l0wjiXj>kg}RQ9zJib6@hny*ydLT{8hOY(*CKb4E_Vx(rj7Z#J#^X> zVh`NoD&~EP!|GqwqcjAe)YzGGsxJV-%3ZNR8z+%*b0Fr*Oixa+a%|`ziH^7=U8?^Vlni1SZF4SssJ=kh)g@z?pc3y>pe`FCZ|) zS7(5}0Mqh#C@oGizlW)-)&d6fbP3A5+W0DQw5K)M0^*Hy|eR#QkP0O*S07;Mm_Jd22vXaq#0{^u!s`(sBKu z8&6b7O9wchR!{6h5ozhK0bG1Sx`f|P;v0w6*7t!7EI#pzrFOs`N3O*uuEMXONlRa4 z`Z~C;Z0qp_@VyVM1h`pbNpyVCM_PIg$_5voOl*5(oV4^7BowVX16k?Wb{ECNHv5a0 zBMLn=klVdjhaC$je7*-KsnkqxClJFRU}|QK$6Y1W^*J;clnrn8G@+O^&J81Ld{tU} zOzq9gVk?d(9(Gg)-N0O zUv%4%Im5e@*A$!=+-PsbAs%UMv!e;sOKV>m&#-72p2jPRm%@*rWlwjmX(0tc!5ovX~y3AMjS<^lmuI7xX-}|OJ2?6$iu9)JDc{TkXVNE>I3Uw|@q&o!tFEIb2@cvgdf7Wp3!}I~pGl55U;a<~5tY8d12_65*TF^@#EyNugdb zUThGf{IJ>r9jLCtDkXpi8{%++LgeeIS>_gD*PY@)4GBum5--30h5%?!!0Pd65!4%h zcOvcQTBVjdF;ubtLCw%zk*4(9dJeEad@{I=K_-TkeTy>CBSxASU;&ILF~WWc;$s6n zRIU05(|!guFUrO1GxVW3P&{VGk*SxNhcXoGO5C+aSurrJ1M()o88-){8D9meSk8=_ z1JaDQrlp$$(oFA2OE(9knQjh9Gj0w@Gj0w@Gj0w@5jO^;@GIK4;rB_TwaW)Kp+cE$i8j2*9G>|Degx*xr0 z9hK&KTG-k(0^E#G^s9M4h|iP?cXmF}!<{W&5Vzb9Y7vhy@J`TJ%uJ>~OW*JBF!%d; z=FfOLl?Ejp;Vl>7gGUHk&cFvBH_*;S(@cBVdhb<=-X_ZH?feTU5>{NxQ}_~ZZq8sq z^G33a2+xlG+t&}IB@<}GS*{YLj{a*G3L_2^_}wlDUo22S@8wvy=FAI88@ri<+fjKh z<{)2|?fw?1b`_9YZX92XD4L=F5Z!+C2D7K$vDaP$DD}{*wiZ!im>4ry`Y@S%uNYcl zcxd&|1wEb}=>D^FGl2Eqxect#^bKkkF4)6UFeo&EF^ z2;T((>N-?T16aWg2W5-;GhFovD9>`qhKb|q`_O{u-A)^BiW!tA2#2RbZ#m8e+%f)9g%Q4BlIXC?eabS#nt{rX&D5FL!q z*MIVj=ex7PBA)Md!=FpcsiSw7(FEsjzujd1_S;)95ZKtCfu^*KIJDbvjo7soPcj}> zBgn(N2hr~)WAHOkkbHIO-5|4)U#sxdy(h$_p6gJL`UETK)=LrGznCzVY0Hpi3f!g9 z)c2K^@BWtW(fBs?t0))m^RiEWP)Z2ay-syAP#V2~AIgs3?YdFBaE+KRVt*!o)iTm5 z;Qa|t`eY4!^V0CK{U*L)ET_KlG!Q7eZ`7tDDOFxJ@P7_y=i9jd!*dO~ivqvWd)gC@ zGF+*{yEp`S5p6!au;cVg?CK~Wz-ka)1Z?h3!tV`Z`w;v~x!)pgNVxuc!}^a5-_9n{ zXh9*^ES=A)5^z8sM4NqXh9}fJ71OMT`{|`A}w`JI>W>?o#&Kc{r-7>qe zx}v->+)!P6>)5fg>+36P=hzx-6|-wE3A^hMbKBa$#T{8cd*btW!c_GpWL%9{^{};w3fJS(O4Z;dY*$8(PNV% z>i~_^5{v@qr7?E(cUrMd~bo*@ALY6zFglZ zU!HHYZ;UVBSK#yKdUJibxw)fq^KwV$j>*l>Ey(qc@{aP2${jUoRNko3qsENNA5}2Q zpXbf<<>ls$%FD|eoi`>gKd&IqKiWImH#&FpsL^?&M~@yeI)8M*X#W`R7~h!OF{8%h zjTt>=%$WQ!1!MgA-h5wvZvLqJy!_GmWAgL!3-bL1-U44iZo#O6yn@jMV+!&M3JUyw zkmyJCexNo2KT7+NVzZx@Iqp>$>I=Yy9rG|P6iQ@>@B5a1i zk{v-DVHv_XST-(1coN}qgkji~dlA~O?ytQgk$4s1c7)5(Nkir*5+mRM8iDZhK{nfX zgsZVY--s{|&Y2+#5{V}ePDBXrhwWN~tKeaK6yb8XbZvJg5?u&$5YEB7;END`fbbSf z^9P24K7_N*vDuCx%!4K9g+XuaQ7Sc7)BVHq|dT!XL`VLcWS*;s5eAsm5l z1;RpvYY^gHOfYMKvRIBV38F9^rEcS0LPqumd5VWA8$!BEG6Akr)O(twHET zxB@Q3)d=12`40oXR>8Nw3}NdJ6A3QAo3NGQ2LEi>ZCi=ZjqpjvS0)k*z{k>6i9`YT zxaL=AH^avh2@l{aegnQBZ2fH_u?BG0>O`Uxe0C$8gV2j`0m4}bmm_RKxC-GagwG*t zMYt7V2f_~!+Hi}p3!xjK14nBM5oROoLKs45`yKddaR#3qEU*FYEKtm94a6JhIHiG&MsR{swA3*nl-p*_s^G2pnUu?FExgiW8I zzYw`0xa{W*?B`qoB}e!${O4Mb zNLdH8Q@HTskb_AJ-rtn8`MfcefQ+g0cKFCFE%5KvKmCO@DfL_vPz zk9foQ?|2RRkmZd(=2?#anlJ_-+TxF}RrqfqXt+#3bef*S_e#LxgcWDGmSz-XWk)ju zS#CX@VEbLAA<-WJSAVuU~hqPu3Ugm!luqME!8Tm5`^#a7N zBJDY(fok!`zC8(8D_}uFXT(*`OOACtxCZG$qNSDOui(kd;S)0fMel zlv#)}P%q-I6#qVedKLh-6FSauIRqX2{!zxntnB+UCuX_hj)_@0%libfyi5BAvI?U8 zre<~7GZ$v`&nhU&@)l*~AP@4Qe)I%t!MMbKY|o{&iNtJtJB9!!3Pt-Z?Yq2B+;M;A zk1|4l4+JgLv2o;e9LE4m)eCMK^`efYeT(#ZTkVk^Yn?Pe)HxIQvQg)F*0~k< z834Qqc}_xq^BA(@Nxjbd+15DQy4(@S%30b6bw>M6&FXMwpguOS$kN230dC;g3Op*t zP7do@#JW11(Y{OjEO*2+??>7Qz+b}naV<$C2BR)rhGq5-kVPFCxA)J=4rIA*%yM2s zo)zN1VH|Jp1^f|#V-#?Lr}t+RleXgSv}J_*rxS%TZv4kFzrYyN4*pOWo01~S#{T9O z+V!aC9?RntafY?O0kOS` zxpWpBE|3QCM_OEf)d2P(1k$nKbXtV$30h3q%gF5N+aoPko3zXU&X1tK?gM_u3ewV* zVWoxjE<>K?M-qwMX8HLFE>cfe|F?>62FlofxaDQfy zI-@u#yT#NQQ_$dtdgHJgI932($8E4ji0>@YS7;R#p);E?VXOmx(G>9q4%=1&_8efQ z9wm%B+G_y&j-E}FZ3XOAz)YEEzBd7THx0&L9N&`$qYd7b26I8SPNu;;fRTUJItlY9Pk3b#k^~c< zOF_%E!0&j0w6u29vohc>A&={icwG*2o#QdRUaReZo>|%lc3QOWl&mIurUR-mUDGD@ zq7%jEqQ1*nUnT4N|Ju9u@VKgKzh^S1Ergb&MXXRDfC!2mX41Thue9mVhO}i!0-`)l zCNn3=Kr%DTOxgyOn~GLc(1;X@acrBlb__*f& z*4}H)oO3e6qwV#d+x>mXI_G!RUVERl_g;JLbhmGUN8g4na0kjc9dnMc+2{-GpRZmp8LW9T?%v~} zV@!i}3i%%1H8XP$jwzp8f7)>O>hX-j`6SI!$8VgwmVo81lvn?2bY?_ zck@HAHRvC%aix75-yC-4f_Tm6D^J0zYN@YHqP}lMnRjAt4?T)OP#&jRUU|L||0GcJ z%SXai5`UJ@Vk8Y$1Q#$h+Toyd`j}m7+W>ic zAa9;CGn2$|=xvaP3~n1oIyek&$4U1gc0oMHcyv(Ksa}p?1xSutNeL@zmmp6s@>3Zn zQU2ed)6-hS+7h~==E@-T;Uccz4Ed9!qo3ir?!%a$-TkTTW3PsbR+FyWhfDrG#bLgg znwdG9%Djfk^scq2+~>hFegDkNspL;yBIW8iL(g$*$XDy4^_{lU+Gu|270PX|gFlRN zpQdtKsa)7i*F+Zq-h`#o&FB-a)^0+i8bY2o{%B?frcWor-Vdz7g^`aq0c;7dF5*fo zsJkpkUJKd}f3%#8oTq2nupt4cNzu>lTNtf?hAkAin6czbZHdPt4~r|Da24Nm`v zYtQ1^A4_9j_dodZv)1CP7vzF>RUEGvAJn(n;S^r~6T}6noKCX0up{pEq+S;UH~Q9- zdXA>Lj3fUN#LYhEtxMUKYCFWX4|WL4+6vRGv88{;48lNVVfXoHkYux>T#&i)pCq04K9QDJPr(CVmvJLMbf1wLqD)@nl zV|tAq(+@!2dX%{WvO^72rne6^0Dl%dP17?orx8yGJZq_q&qoAjb?uqxF*I%uL9nL} zJnM<)X-qJh#{th7wbYOQj_VV+z8S~HUoZD3GO=g)W>}h+`;h0YsM{2dLsvtl?uR<= zfP1|R_H=t7xD^>Yq(2%PvJLs}?q`1_gM8pC1ic+weDJ^o|qm=pnP*dNQS4`r3M~A6;GV#fp}@B->-&~^%)%8K zX*!`=Z)?6ArF&CX77h)AuKaA^hM>BYewP@RUN^E1E3&{P4~5iqHGsZSGx$xTkt0tqs_e@D)~Irk z$uZ}lfQ8K&Nh~Y3|EgCXI^+uhWczSEWg~Ii4_0iU9`w_Ig@;L-gVy*0>Os%W$F_jh zwgu`o%erEL+B}z#KOI8I)$@tx?)ilOdOqPK44Zrqt!oBtw{DuFz8KhS-9ATOJ06(1 zIe$Mnl!7P&*7k$cRUr!tIg<1)BMI&FhCu!D9|kTD2G9mOf@+d**qucZ$h)V#i^yHhFZPp9QR+hScT3ck8ayJsnd2U1L2TQa6Q; z#W7_ewS&svf_LKlT4>?HJAg0<#lSh%~1WE6o=cmK3L`HG>_>KOtwo&kOqR|k z@vMsyR%|*=BX&oLtD&a(`oRWPd4yysNgS18os{qzoF{QMwfG4GBQ&QIy_ZS}i%XqY zoZ{Ev)U$j+@Og+^QIdL3v*Ng#yrHF1M;o>h-`{4;{efL){Rf{@T$a)dpG!UW@Od|1 z{|leXeVSbR@Bh4CR+bfMFnBxDIMY6+Ii}-GCzx($I>~f5($ICzmIF=^m!)I4+-Q1Jel8cBXNreN1yq$C*wr-OhB9 z>29V|OsARdVXBVj@|iX;jWBIz8fV(aG{@BBe)a$7O?!D)cXXWEaMD@*cqx9gA-XKQ zEF4+dGOAA-FKuiJN1EQuus5IoEC3*+UZBsWJc-6f09UT4F>nK4rQuYGpX^5vZwySo z$uOS4{OzEX_&b3Ue|w{0{JbIR>x|DqV2V=05JekO68{k6^z4EX{az#CI~hO8z)HU} zSmD05GJoAW4C7arAE8Vw=V6vZ&vz)%FAI?TUotM{oW6f0yoC$=h+$WYpfAGzjq&ps zr!6rEKjO^>IGu3>12vvvT^^!T5)n z|4POezQq9DjPGJR#rRUj9|K;gKApHu^3?{zDD@FNPcrV;^HnTg>PbJ2Kyq$moa9oX z=q2ILGoCcCq9`um@skZ8?Y@KYO^nm?M@rve{0EFbZD6$+6IG@A5}CERFg}MByn^v#=DvJ=CT}&2o0y`Ko46A=-IpQ}7ev9Tm zyyS-n{t)m=?NaT&eyrsjrgnZ$B$R0-In&@*YLSY6waiCHf6#K?p#1YIy=xaxN0j^# z$+Zw20FUx!rIV}R?*M)*ybkdbrT?E|6! z0FN>rK8WgBr|Ql(0GnO)KE}mg#W2xnLgRemBJ_PvrTZnnkL2grE(y<{8J~(6A*h~C z^AG0wTyDtsoOWJMoXmJZ@IC{)$oQv#*JIqB$KwuWQ>QO#em-##JVi3{69yFf^CTSl z2IxUeyO?oUKcD2I){_Po`3=DJ{jz>A9CT`9T-GzEF}{xRJw82LsBva;kxy2^Z)7>+ zEazCxL+=?;ef<6QXTYidsH+X*{mlQH1;jr))f`Ivv(wSQEAdCG;HxxVryBZ=EP4-; z5`C9M^&DSn&Zi7f=QBQWlL6@614_44k^ej3bYIiw7(RNJn^HS&mGHh#n{)jR7YI0R|Ya!+@oFZfE`&<0mp+=d(+zfgg){ z)=e8mu}ewdq|Z9;Z!1~O4O$MLxX7I>zwZVE(z`2^=E4v`rL$5SaNNSIl+ZZJW&7|> z=GaJhuwKc!T{3>4ik#1|9KYVa1f1rbhaNW)8d%VM%s=HDr%zRp|2izxNzYU4KhrlN zls>3&bL{?qHS?>8L3i=RI~bqfcBFT8DLn$5?6$-`(7ko~t;o6FoZrFtQHPuMiZmLa zWS4+bJ$G+1xPG4$hZhLWejUuaPU9Nq6BqeZ6?`Yl*~8^>v#Z}Tu9g`g^vx8dXJBus zK5_Q1-eh3427wD|mz#ah-SZ#RM^@1u<8PBHkETyDeS%JN$@4m;zU zr`9sQ+cpC9J8U={VZ5CeI+$*By0nV?$E)DKtAfu%pi1k_H-1kfJc!a7xIiXLHNO|5 zvv;wa-R%FYXO?q;lfCl$1A|rMe5(rn2bQ1XaU}g=-Vvt$+qqn@>2#FF`NTyE%s;ZljQi)=`8>Y-^XYpu&XsVH8>`^ESdL%+4*{oo z_C9HZh+p(8;N(xLX_s&uKF@M;tOx0D3yw1V!SBz%7kC}yPq2KEW;1^u%aM6%jPc01 zhEvA-HH_f+SJtsr}wETJ$baL&*V09F7_~ZjKOoZ!Np%)%y|4fgP&=L z3TvECTx2!#Ph4t1{k}R5-&ckIO5mgi=?^06I+nBhdV}cqO>y`@6*)^9D);9#Rq$)8 z;J0YJPDN~`(>o1O_X4N>aE`A(OaUi7>yM$qtG_V-%^q91K9^U)zol{5^Yf7zNygEC zRN;TA3cmO_(~f@sd@198yZuhar?@|Knc`KNadnmf{>=C;#t{(7JX;07P2=#l-)rPUEjoR-3jZ;1EcN{2>(9-M`|o!%<5Ocs zE`9ew=}zD@kC&eB7+5{b{P7D6ApPel;0?^^zEunJ;{7A8qO-)PV}ekVq%cCWO2gD zq_W>@Hc`RGF)6!0or$I6$&q-Q-Fb$6TIbqWIGG(zseUJu9AfUCVykT@H*KO_Rowf! zbS8U>(P(lgft^|MiFC2hnT+)$@Gll^#KttGO$Q6$c5l><#o}E(&31QJPn%uV z+5dr5k2<2uh7y_7uw#?{Hx>6%7v1Z7B6ibox=`#yTef7fDF>~I4%4$7_vLM(7E+mA zj5ck|qnp_1k@h~f0=KP*ZsvQ+I2-r3?B)?CKj_3Zc$CQHb~Ns#`q1KOBQTxYZv(T7 zM`qir8JS(Q7n2@?EyXM>M{#AdwhI0mH7$!9b&V>Wm)m?fa+^)EW(#ohRW4;DagpOP zV=Z)U7aJSRmRQ&ZE9GpmbEAbJyFZb+axA$v{kxyCO2BNhn(S@yXth; zTuQXj&AFEiS+NRDEEqIie$B^0<1@^i*ziy z0hZav9&K^6yBWQEbhQ}y`$Ji6Qq{dyM4E??HZL1mNDm{4bjCCZX3Roy6u*v;RM>6I z8HA;xO~*#;2J zR&^_T)qB>jSl8L1?A2?}Sh-@Yea300^~5l9tXR1=MmciWm##QqCxo_p+VIx{0h(Ggsr? zw*QO8F-N-f8;&-sbfJ(-BpqK9c^hb14i(nLkhvlY3k#Ud7vV3IJU&s`EL-EN-EwnzhlOaM(iGE7#kNx3z+tcZO+A`7)ZrzC-`uV zS`~)$G4Zz9>#`|3pU4b4HeJAuig5hw#)!Sj8Ayx{7tOVlzQ|YN`80-A-XVTFmmN+g z$LLD5)m{UnnCOQG!;b3O{%CA%e*}L~xE}g{dQ+?$y%4$}uU2QV`^VrS#=AC*jI?*0 zbIyvDopuyMh6ae%K21;_&{5l&$yU+~BU4LX#(l@-I7rF{jP$ z4P_(JC`JUssMMYJaeOxO_-wp_Narbal6`PTNS0gm{)qvWXdM}?Oku#u>)D|vI%|UP3?p7)X|L6_#%jbGtHtaQ z3u6mAswW`5MlY?zJA1%|@!hD$cNhBg|M$KYC1XSV4V?^e3rEk`u@UNgBYNaRkv#Iz zp$3aXwv*3i^RP>v;qPgnR~tmpcCJuJ4`!%Mn!K%EHgporXrgF_wt268%9b82vP@)T zA6DE7!>QmDy~D{)6|$JGDUu)sic2B^1~V}kQ|DfHRa~K!gp>xTc7WVV$YI}nHInwt z3cRS1c`q6@>&HSd0pDqZTJ`R5-Wdqn_TVNgDlsQ!$(j_$>T z2C^}a(WKdId8tol2eF}bwJu$r?aOMWwGJ%raJrv1!iExUT3?m=!Lss#fg8=tYpA83 zVP$~_*U8^9jl8lqew~?j8{tvA=3TwSqIixOiyqB}8<&gBe@ZxuMnEz*R=V?O>CW4# z1YW6n?!H?gOhWC+PUdV)2@;LE7Ur=u!fxyY!LE0wdzOiDZ%$GdK)ALI%i4|Ul#_{- z{2v*Y%Q-CJ4z83(XQ`J)mzg55q$$D&2M3YTy_+>vm4PnfC z0|mz^M=*5XB2$yRh$0&{ZN^{fc;zuCt>;;PprW*XQ3D8T6iS&)Z#6?v-%=}ucoO-N zI_%zc9TJ8ibJ=3sS$LFAVg%x76aGpOemJbf=rZ&8gtTW!A~r3{k^fbR*Lp;970-w^-GJ&l2I?2>wUDe z=#`~N7X04|OSxzhbdYfzL~wL8CN_cyijFyQ?~b-%B}G45QK>z|j!+NcP8DsGxO4$) zId}&)1y+oQQRd;bya{|&immL2Fgjv7_)(8iwR}aEDqI?c%Z=NDOy$v7YKUm7YpTYu z#-j_je~Q_kjKu*d40+kcoUOdBTL~J|3)l`?cKK9L{Ovx>*+gqJn$T^(BU4yM5kDBm;aY3@dU zf0>!qxwt$-k!5a0u#g8l>7vEBp`8+8-V626Y^!6^t%!$UG35XKoX*qXaUdkTVLcW> zgPBqN-UHT5nQR^gs~jnbgH1oTUX?qe*H*YKvgX-=RHE$ivm@cMmb2pi)T>7`I`Z#T zJ;MIn!*y3R4<#ths*R%Vt}rQ;f?l&%suenP$pWq7xFTs=28H(DJj=1_j|Qcd`{U`h zPnJAI7g$^X&ubfq>-J*0Ej_M-Yeo<2dMVhi?6Wc(VN~sIr!Y#(k&X^Lvhpw7U!`|S zEoH*Kv2NdFW~TL*Yv!iH#zYPtAOfouqjy@_;-X@9_6CAqyAhzuj*J!&qpoTKJRZB4 zL4K@ZUcT6CFTwpR@0Bd4@9{j^S{^;ha#n`|%9dQeilZ&LJvfrhaF9XIlAbQRio9RF z%E=Y8vwYC9N?#^i+EkziXc!ID#pHRgw}Y|5_&oxNVwsji&H?Qnc;^C-j-#?J+{d?2 z@L^VAYy^+EK#O@phvW#Zp_9+4Fn(*x3B#s^b9wmX`Qn%h>K{!Hr;ay%zCuH~KK1ZCi(+%SG!Os}-UI1CSFaY_dTC#k|khkkoZ z$Bn}ItbSe=c82(=_)rSc^$6Ee%>#2ILyk!fRRbb*l@lXrlx3u2 zGFEuvKQe-+@%*;jJ`=oQtOEGs*Zb7s8Y5CDUN`n6;&msy{;233YRTWm`GxXp)}<`+ znx6nIzWhU+UnpK%^rVpI%)GzqE?>SY7uw+C_ve2%uD^&q6{P;M?}SjPKYu<{+Q&h} zCU8LSHcNilmqMs)SV46p-O2sqvjm;e_)oW7%72i-WxosA*TSGih8z>U7=N^9gyfff zB7}|;6Oz09;+P6D@LxW)# z+Qx=2i+v0lQ?zfpWysLC2`5V4w zxP{X1thtl)Kf#{C0qI|=c{6|KEi~yX(08inef0(SlWNMoH$wg8$+^%P6pl|YOZnyd zcA>%t7M+bw&nz@M!?2=3eS93o-9fGt-t5_ z|DONzxDRAz-kEvlop;`udFP$WxvL~FCCzTPnZJIvD{KroFVi7KMuhvaWSSydp>2q* z$o6fU(>4I{>G*G^OLgB#LnMBto1q77{opcR7CpVVBXzLNbj{M~GGAZ6*0c2()3rJD zF!S}N*U3NlImO?En|-eyHeG8zQC^#oKE;hVb-3wT^N}~rU3z@;mp$DFjY>F}h(Ci) zvWuWYM!rKvKGSs={4`yYpG3$1g$6%UT{q(RGu_mD^Nf6{u20WqGhLR!-}Jq~%CA#i znUT-2QOA?&zHiWBx@LLbLq3yLdd`3U*I=jZ8l$|v+M(Gfz;r1m{9RUCbMv^o%W5kx zt*xmGExdGL;kZl3<&ABsADbiMnazp+l&PuHX4=p!ZG;)*+tQl#u!)ax!;E;QKl9Sh zFSu<|=el`QZd%w@UpwXY6%TyKG^Cq(n1(;%GnzaRE`pC~bbkC1{&X8*{1xN>j;hz@ zH?{=M8UEnl$pYBRpI1Tn8NI+~0cmgW7zpVNejSMJ4L+m~Jg@bU{upTK4bMc%@T}~E&S(38*Y<(`Uw!bi3k^H8mv))l2mMp~z(2ANcugPW zruUKlwm#q)eZc4S!MCbD(x>$y4`cgCKcx>o-`z+0b$#%ysgLyM^ueEp`hd^w1OL%J z;P3ST-`f|w5B}8m!RMFypmTU1^$qlae|I1B{0j2fTYp^F2R&2!NWZ2J{Gapzzqk+l zxqYO6w~zD_`=E#8uCteZ_hcXVGy34$r+t)rcOU6NPOs(0`e?5)eWY*hBYh#@7xYrE zyHW53oNaRT$bm+hY}9usw5}pC!(culf&7)1&z)aiSKbty(-~&M2K+TVGc-W6sUBReD_SG1pC-9xNy?uUNRygM_@rUyNq zig|My%Y%(`YJyGvijwJb@TbI+TRy$KqQ2p_a>h25lvR{nT`|1?G+Z}5nBy)l56)|> zUr=6KRW~;{ue_?UvAz)r5c@UC@|KsD&uMC^nOj$K&DGQMSjN}I($G*RC0@KyggZUM~+Zw9Co5ITa@&z@ORdpp_v%VfTD%@DrP&=mr z=;s^M&bW3OBG^iEZmzl2<6(={f-U7Nw!EgUy1oQ8L3<%WXa3D|D$D28*49_ts#meF z9KsQtQ&a27FAqRM%IoSYtIE;dRpfA}ZeD%;EhR{cGUk-u3?Zs3ub308n1|ezwPi#C z?BlH1E9Nu>|08mb2iPG#bxqY(jU{E%-R09ghMah6>YD@s<d>#9r<*SS!i+Yk!s&2E(lbe2+GBt-ql zVagh7=2xNB=gn!FSKd%xTT^kHClA@`s;VjtFl50H+x+U%U2+q?q2309R{L%gEZ8>>VW{}ZnZkXJ|xTT@T`-wq%wetsy(;u9jy!KPd$18%-8 zSk+W^^{qyQ|Le+$E>v05)KK44CD=4Qm{(CB3L4eKAdnDk6zVlwwzhsQ#=if%(aMuU z#@5$C@In>AlKB_}X4WmJL5bH?HHGF^*{bJO1)D$!M(v7QFnr!pUX4BpKm&%{U^OAO z>c%Q0MC(-AsutD+ZO9UYeAHK0&biH2U5`=B2K*RZ=~OeyR@2nffC0lcUvzn(Lzm(> z&Z%MkoSHgYOV5_dE z1rr%+stVewA>d6SssV&7Xsii>&ZerWTXggd!TLHI3T_HkR$OukS7zfFoLd1(81gVw zp~I(6o?M_@K2gNYZm-@V{>zQ1U-d4gPtBiZ;w!p*9I)bllnbN7)Y;@y{SU>DU9%j2yNO12#{DCEHs@c#a5X+CDbI%3aw= zKg9N#5xz~t53<>zsIbg8p1uW|N`}p0gnuOB2indt!l4~cgPsAli;ZxVi0^MJFv7v? zpTPu@ZkvKIe|FUIIioCwht<>!vDpUOt})WD{OSFOJ>7PL5q?gDPqWQ6!lAQkPUC95 z(Fg~>#c-N!F~aZ!_#}52nDk8{t(caQF2({-;vlMFxCr3Ve?d zZcBy#R>!j?1@8Wx4u2;F?%bfm)fBkffMowQI zP76HEl76%WjwM^-=eEGHWJvr9EpV1?{)#Mc^2q$j7PujTBC5;+H`|60vn+53ZsIrF z0w0us+HCVIaCEf9ufYNzoPgSF3oUSTti-R`0?$l9ZMIemT(ZDdSm37YF#16Y+-g5r zWr3e*!Sj>_PP?4>d&UAEVFKZ*aDwrfnQ>Q&$ht1_BMa>EbvQB zAlwEEe5?h&&;oZ`;LR4e#{zG)z;i6{6&AR$bQiG?THw?X%-<>te4Gh{`;-MYHp*lh7pALFldevyso=P^e6C?1bjuMlA>yxPuW zn2N5pAsMEEt38_xQ?b>4l?+p%)qa)?Q<2q{Cc{)tw8mtZimP^WGE9Y4yCxZ?qN+_w zhN+-xIms{;Q|*FemSseo#SPbTV1#Z&tz8K%Oi?M#Nbu+cUo!&E%A zXOm$noZ7FFVJ={_pC!XoJhi3CFcnU%F&UOvO;!kPK5H)SgX-sR(MnN`|Qb zYClVcsrYG2lVK`+T4ORyMNhjq8K#1#U6Tw`vC}3c!&KqoCw)g!!k?yu_oakCObPEw3BQ&S?nnu*PYJI{3I8D_{F{{UqbcG0Q^G$^2`@_t zFHQ;Hni8%{30J3tZ%PSYn-ZRu5}uM0z9J<&E+srRC46B@_`HMD2xNdKTnzsQxP{@Cz2)QIp!Tu&i)63usr z#tSseHmA2F!4K4}7^qetp{#VN6OpDXBcR09T&9jKa+RssBA?H-Fo{=?_jkb6<;cuJ z(nX?(Yc%HO9_hN(7n!coNcX;QyVWO{9{CPnRAMnsbpvCf5trNp!zE^^3kX><&4|fTeTL7eju$@E1X@Y5 zCYQ00ZbpIFB6T=?UGK7((|b!E+@Uss4AE|*RaMl{=W37@p9`82+wx7q;LB3C89t}l zX80WH8sUq$ASM!S}S}J*RdWH2~K_+6sfO#!L0jLpFq*AP7vvRE;-rsBJsZfS06)S_7rslQ-O{T z>BiQ%nt@%l3*c_`I8u>fhuUrUvedo8m)bpnxm*1?F_#cC=m^9rU9;5}5F$}e8~GjT zuMJ<8`U}IC5r{qK+QV`ck@~2*M8rf~89fA7P(O}k{QbBnqg$P2Bs`_B?pB8|;aVhQ z@ouvy^+Mt6A!iqp4<9B{q@S8XNZLBU)ww{Z-Yl?otMAc`{w~XwWh-qt7#!`7me~B! zJ2U*TnOU-u?vlN42m7mU9wQCi>ML}kV_aQt$kDI^dF1GyGvIiR$gyFYQGJ`5jU*D$J6XUIkul<0 z*n%HO`axDME&uq4t)3J0ctCXYqtjB>w_O!{d8!(A$@GA?10u)zzeLA-EI1rX>&5hAX?@FI_(U%D?1_qq6e)Oj&t#x~#n6*$GK?_mI@lo;Gzc%9IsNR^D5WP9-MJt68Xb zW9VCyDT_vT6=cdSBub9?T#gQ(i=z~T93$RZo}MVbxu%Xiz#(@+OUNL}Ju!&c;uQ#u zdKQW$q2Q19XOvf+lplhl12>|Plkz9MFc8d6hQlY*f&-C=_87)lvI~2Raz)Sls5(aG zf4-CsnnXQ&@FBy~rYv%$Q!h$a&lM~O{mId>KPsNJQLR8T8T_qA0akiU{51RYioY5K z3}68R)OF-I_;P9iX(&LqC&|hV<*-1c#gN=mJtIDRV6^8*k4j`=*ujwX8fB>_-BmP6 zvdR5WiX5Hc%0gX+>1sLaGJ2!>z~P?qekjQ=jBVM6AwCeCuP8XEo1;fbV3({6bIIW^ zqy>}Y=#}u;Lmp|(fYyO>bfinnHp-0|9qH$b_P5k?5(;++2?8JGmYu=3yUvC-vd^JzW6$7OO2{bjx{*sXc-nZm98Q=njw4tDMffSKvn_- z$Y56h$rQKTSwuv(jv|LmUd!PGzbj>BhD(;c8>C1!Iss`YdWjt#6HW=rBHK~XEH$&6 zlP(CBqYgO+tkDLPwM~lLDax9`h%%Hl18V`0L(e=>l2NK0oe3bME@UnI5}#`x#w=;+ zTQG!@)lYuPVxDs~lZ2F#-T+;)veJlSVJii9MS0*Q@aql1ax9fq8-)g^H%`EN6#7mX zYGYx4u@Ni^c=sbV#|S#f4nvJPk1&kM)fFUSxBQ@N54-IdHnj?X&!qZjAp-J))v{FA zCXMLd3EovpZ?;QA!y+P@q998x&y#OUHc|E{`NcOD-&9i&}O{k>4Ro2#hX7 z>fa8=;~YgHO+m4cy$8(FYeAXPCFxecFo-x>+N4MT4Xphd%N;Qv$>9z5Qe_W@yYLqo zQur_6rYC-6L%P)RLwJvDNRwLp@Pt3IOD%4)8qKI}61kf}3BnXtqa>+CMvTTk=6J^* zLSgrNJEh3WK)_|%e$Xs3l9dfmK&6&HVw~6b$DHTG9iZ!wtZWOP1YI+c(-SW`(gDJL z3Uu(Lg_^?q>{8@RW?D0Bd~xfrLT!M+-~(ME|1mTF^T?y;4_zwqo+a|mC8cKG>kwGs zlU^7+zPdyiTquV-)4JY`jxSaUU*=5E)yeszXS{Yhm?`*}OsCBTEHNJeyH`-QQBWrG zdlUFIng#UyUb7tSZom@xiKeoT2gydfhHP4|{6=~w!^+ZsPDjisL@+qY>h zYk9@W4$oGR{`GJ>(_ew~6MWvSBK=_5{!eY>f5d-uYw4D!vd3&YhotxR$oiXwJDw1CZ2`McH4niJ2@NvwB5` zuU{O)Vl74l<-_8?aAyYEI#qgy+BO;iNO+N$7364;gHgBokPBc0$~f81lI@2h=#{IH zkwdo=!-!wm&4JsYJ|9X_`p|od50jl z>lf+*MCk3bS$iCEV7A#47XK>vSLphPIoqBvo5IaWCVB;CmzN_clP=fnXqPIIq-^Gz z0E;QCm%4`P^EYbDwbyV^B`cq-#|cF+VYj-M>CujRD3U$a{Zh*>*hWh>u~4%qHwL1& zWU#i5Kr~lY{vj(=Dt3F?{ISsKqV=G^I&A7W>1>9Jd6%9NbN0}3#|E! z?gC!3Ev6^>(q?Tc{3icrR7>4$)OLib(|LChW-0!pp?8bfs}owS&^dO4=c=D=|C~^C z@71TRKQV(GjWRJNrG?i4-`2yjbn!O1<;cPx5<5d3hozgg$l2<`J55O2^|EsK#+Nb4 z*$zvN;cRU%tq{&y!isM|jt%^;&DcjVD*`j$#@s{v@{Vr#w6}@(^~2JvttjcX`+*I; zn%LzXpM>|@<%Ak)W*vpmI1wo?%A7~ zAmH88cws>K$dHMbnLv3bA(d#;hnApC&tl=Ri81<5hu>`9UqDhU%B{KItn0I=0(e`8 zJo=bNopu&v9y)jrwU+j0^ss)A8)}$T5kBHzhcT_luk17CV-RU{u5PuJqRVvH07vz^ z)v2Ic+1NDz+opNk?5eFZ)91XZe%gS_jz2xf4mqsCr^t6Lh(Y zTAPZVN|Pct0id)MOD_Zmo~%}aX(zRSC=_)>s!|1tOH+~3;g2pVfOk>OF>peb!~2iP z*>45R)Y(?8ydT{FVJs^O=$zJ;%IQ-2^4ff z4B+Z!)*q|!=+#iZ&xD-Fcj--ef@W(p=?tOScB>=FkVDXnOqnaNj4!zf|3)nUzcIeZ zBp+?vq17Q{4*}Kf4aR!QSTk}mE~LbX8Q`yrQ)d7~K|U)4#b`t!d7q&p!n|qoEAPwR z4?<^XP#wg1i_)me74Ys2%6?8zeh86MeG0M@X$yYr=ejUFAMK4s{Ri-Yy)L&O!+w!& z1pV$mD1!TeRQ1v8-5XjPh*sH%&?R!il6sCG({`bJ`Se05GHn1fTjhNtDg=Js2*HiG zR)HG-Iy4P`S8@V@+;T3Z1_XkomPaw(X>UVaF!f!fBcSXFWVeZhkBSo<=H?9-K)?Ar zS|zsJwHvHV;qHVaZ#f@A{s5TwYb;2u}!%xp5@W>`|GBYj5{ zPOXh=Yo$G)U?+y9MvL@HpCL+~K_F{9gUf4=sBv_iP7Zh^C+h9(#+vd&Ae9lVbCN6+ z*7;5Y+(vdpp?T=wXAE#N!1}uGQ32ul8`8yv6mZ^Sq*}$yVBs@#MNET;38D)@?u*nN zMrN#Ux%$0E1ka&#My_C8I6TU+Ca3x!&ciU2g^)wN2cdws(lt+t{6b78h%lMuxC0~l z@ekQd>-1GPi~<30D4?u!HIopdneJngp_z1;Wz|k&fRQv|BUtHr3Rwe?k5;&}ANXT~ zp#@{mK36oo-r+Fd$lm3mSSkE8$1yaeUi(8*ihxgcn1F_uAX&qL;CfD3Ryn-fV0 z-H@+WC2-{6Frn%nN5LnSm`-LAANMQs4&cw1D zrVt%va`g_yl&sem_`)!9-xq@QKJp#w4&brq3*&_ZE<*QPvWfFuQfbiky`Rk2ov)}dJ-p+m~(-8e{V@cwTT%Dn_D6FF>I5nKkPMa5!1Hms5cvF-Rc#+ zrX2Q_p}Xm;@#DwiQf=>B)y>B;ALhuhFeUYVAE^E06mofB(SL;Wlco zTKsm1kGWod*8)$sz@N6jJ1zb{TKs$9H`kXIdrN6-aaQq+fN~NmsU-(EzxP;t@W2O@ zyD5TtoZrAQ+8@0MJJ!3UNFFC4aBT&-2G%;d3aeMh(M$Z{y3s=Nov33^$^Y@YLh^aC zCk(GZb5L}5$`c^oxz@=&x#bMJ(Tj)tSR^mXIlZcY;QitKpDeW@v zi`-C9E}sc~??N#z=3&N?q3kC?gv}~MEn0&6Xmq0M6 z%6}LIChYXpZ&P;k!$8!W^eMTPR(V}*8YRlr&GaaDrK_1(I2pr+Y?{rvrSTx(0W`+K zM9?&f^XMx0WG|-Rr!aSL3f2LyN#Qs~K{7nCXg2lVpHht#DvhrD zWvEZ=V#{tw^dgV|gUwaoVk3-dhL#gelf7G{$aYebfK5VujII}*B+}BlE-QoN&Pf^Y z**YdcD>W4*y}Z%tjE^W=>va7gn$XNH1tSGd0z!W~&j_OZU@#I&*69Wa<8fkLag@XZ znUG|Zq%(lZ+6RaU#O6a7_d|%(#SThcspLB#)~);1uP|&I^4_hw-yxbifw{yO=^qtb z!TBJ#6!w-gzhaVACAGoL6~YH?Xs| zP2^}E(srxIMA~4cP~1hoctW)QIa*X#J;eMMa*MvnJ&Uuk3Q}|45>r`Z2m;y*NT|=} ziqOEIR6&6i+gWT`wLiHCEu{@)h)pG|V@ML^6}PPj00n0@j3H|6Q0JI z@NJ=f$W0M0Q_M{f9B>w!B2vq<@CjvS2x(rEUP#4Ivxy26*?Ooes|4<5WJuYUVDWEh zi_lU%6d);52~gJ?sE1Y2dsCp%`AOZhr&1VtQ~OddT$Iy8hm<03Bc|)Gv>PE`VPaoI z&|eCUX_uow>J`yKbAN=&oi0*c+p3|T{L|AW_B%SmZRY+6^ph=yexkHNLm4RBw}|@& z*hMp?63W%8ow{9 z>p{v+sByX`)Q+MJ)t^nfO>f$!B4e*=jM%FhA=q)TXij6F>s$nSE(5yWOD+<+w)Cck zS=BaWC+MY?*LB}1!$s&ycE&O&AtUFrV{oJQz8$@cE1?mh*COF(wR*w~wH680xnQiR zQw+t>WcnqGe=mju6aEj2|3&y$B#p96V(!li6@p8^K(szfj-C(07!NC0w{U2B3b$pE z=nNR#r3m{ZsdRHz?{cgtjn2oir`DArMfxMEG*;y(MbpFZNTbkV=pRr9-s?I&xqdoF zj@^QI?7-vvBTm*JUbo?QtCC1AMfMAtFgQXxFQfK#Kh6RP{o-gq$#ba%$Rg^Oh8i+8u>g#BI4sxh?bOHk&SDYyNGhEssl?)rB@=7IsY;^P6?A>t$32vjsVAnJx5wAm$5J zQ+*a?3&KH_Nw;6=P(K;WayhFUQLi9TNL_@As~!<(61ATBy0Lksb4eYpSA-QEWLD$` zR~D?!T*wq~`ii3GqHYLsKS!?_&P%aoY*fs?QVZ`WY3HI!>c=R+6t4|$B>lVKw^$^_ zd644obA!IKSb4qp+G?q`Ex7|QQ;yYViA@q*`I3eXWV+3A=TuC9+{v$PgMT#r($J|{ z>WcT#DHU4L)xFR@!2nYGi8wQbU8-)ioI3;nUBq6m?+F~hj*|L)WDI2QSvV=NPlDZ% zA-}u@HgZfawzUvcurdFY8g851)Xx8E?yJBR-jrc!A&!%MZgzC7CObfz_7!?(!ai_H z|I)VzB=#+*rElrhZ=U4|(1Lkfifm!ey4a!V&xG@LiWVx#d4MbLLWIu%T!fGp+ z#hF{mMrTa+ZzgM_DWAp<2UAJeMTelqVZR_+i_DOBbm!f2bcAYSl_9GRzjt%+F31|j zS$}kF!27urDF-!yXr;^Dm8t6$qMv^r^!UB+2Qi?9U<;Gy{_NlK_$@YNr?^N@Nm zY9L4T_DxtTaMbXWoee{tzd$RnHZ7;Ivx)KKNzpJVD1vvW<=~y(2|Lv@K>-VO%ia%z zL)d+tV6r+!fN9o8|MnhA#B5N{U`!Y>;4Q@i3?5Cn*l{Yc_p8q*O4_K+2VLxC9#EzC zZ=CKjHuO%2O($$Tyv3uqr<_z%=cCY<*pQWqq4<1Gz1mZ+>AO4kU%u#l%w-U z0}8>%#*+dQj4}qw-B;3rAK6T{~+Hy0Qz#*s6>Ai=ijidQ!7wo>~o<^;|Ltf;l!lYY(or=kW>Bc!tUp8b%B6b z%L-h7<8+4VAT1=GZL6yyOE_>ZGW2VrzKBk}uFOlMWIu_1?i>DWn~-bwVoz6 z=!^Cri)^57yk}?E1^T!iR_(CYJc#w!fY$W0qWuRW1=oSz?Td$nC)!zu(BBX{qHB-n zZ|F0^)#VxY%`1k#`zsW_yaSA6v6lEiMgPAbj{IS^*HlwIkc|VfMQwvY+S3-E_{&ugW9;_}Nmf2FCHW_tAWXahL~Wv< z+PsmSl!wXW*o^)*wE?SNPEmzPwO|lrPZm?uMs*2t>+=Qdy@A*Qhk3g0OAwJ2?VpW8 z14@C6Ju}!}re=UfTL)BU>}UM=5%>ejVb8%5&%v&#=r`yeVw%rZG7y1)Xv0F931QrJyF@L z?ZTjx9J2|H4!Hv5auoC{hcFO^HT%K>xne8(Ayk0$4EuJaqy6Oh?Vo1FhPkCRJF^eB zw6zYCV&ZWk$&cqFG<*9O87*6H+l~dSbwm;TjSl(nQ5`>GkG^M=kc|>NFaoSe&-B?h z6pIcV{sMrK4N}S5zSeYT)S4YQ-%p)?#Zjo(RP4d)ix*j$>g<^6#v*1Q)-jG#%E$T$ zb>qpXBkQpnZcDcFk^{5{TjWjOqUD{Ysg5Li9(rJTJ3uEpKEg>#db6fH>oR_5y3*9<_aH^q`R*Leqm3K%&^19oi{$19Z)_&&q7MMBR$O) zo_Gz!7v1SSePX~l0JB4#L}{EFBBPicI&P6}CqBZGK*emHs%nsxbQg$UL~7R7)ZL1w zJ}aH9)*_bCAg`@-R?Z2|8IM}vt^r}U^7zs`UNFM(rNuUN*UO}QgS-|8{`tF7oErHv z_W+EQckpE{TTn|{OvP@4tRGXj1zhI70U~HEsdbLo{6Eztl zn9UOh!T^4*2E^RcT;drG&Hv0xBrWsRt{`q_HDanP)6 zA<;b4yY=RIi~J2^FV!ZsETN&pY@vC23qA9T#Jr6QEnIiZHrwdBcD;>S{zx1Z`Ad3mJ^%U?HxrJZT7C5yg}PEbCZisPDgJ#RU*Y0*bUS&3;%1 zBv>S5I30!%$cFmrUvw@NV&6&U(d7vdZU^^;2+tEujvFeFA<9RwxT@yCVfr-S9kTQX z+^AB2Mu}l3fnXVugIHsSh1)7yi5WN`Iowkr#bQGR-9q#*ZmFO?)?F1O%1}>(zGUIg zCnQ;LkUMf?VRBX921s+k2YW6QGnX9_(x8n7>lmiIG#G|p!AHuT6uAJxpgv+CV?UE3 zPZHTZMD_@L`nsiezTLMjm2Z!W#%AAD=wsLCH(}5yeevz8S%PoZp}lmzaZdslU=rPq z`x7e#(@yDbdQa=IEn)Cbj9a)bPlXv=G6s<6NpFH_yS_j@e+7`n>)d)h(XOU=$&?_l zezsM-8hF|qt8ADL)u{p-xqJ#jjEY=te(`6LmOys@ zS3+K4?$R!SR}Q!1{D+EDE#c$XvKRv1Vy~keXCps>cphoTX317~!hZ+jo1kw%P1SF5 zR5Nfs=TE);n;;GB2cn)S^nL%|(RW=>`oPtrKA4UAjT7b{RftoJ)`z9Qwk#9?ilpt%_|it`nz z`yC?v7ID6!Kh9Td5l=T6>mXBxq?UhxOsz$n2Ju0z&HD3xP16q&bx&M(>GKTD1W|XR zl`dm|>jzB4+RqW7`wzpt17!EM5s^~AZCy*$d>CEiXv#by&b&W31KoVYiwRqWwrzdV zf2+km%i@2=;vZ-6PqFxGEdJ>h|6TC+)bFrs{lXMEK6{a9c1SU=zZm18aK z!#&qMr=;t-Zc5kys81GuUnunYH3`_NaE|*{hoRmtIgo)a)I;MshQfF+5px{Jp@#6p zXIEnO3&fsqwIPa13O6R4Fs7Sx;Qi1R#g;Qh0}fZS)yNBk&{pV=4NF%;IR5Ja0Ot2k z!xL{NK0yCqK6G&YWnqa4ZmiO{of z+wyWTc`SD|qX}ej;Zi@E$W3YPtfc5!R`%%K0H-iHZ^t46g~=X6vCUHNeV%MG4k(ZY z9!Xv2S|y6ZJY<|o9Vz&=(tztnam8M_uyTs#Fixq$TtbtkaV}SmmO}H=uXAyued!6- zC$?Hgq->+&?EndK>}sfQFqHD(qF-%-H(9dUH3i7_jk<&jU z>LJIjwTF3=G>VoK_eie;N*)3^hBVTe1_!P{IC!r#@&}|)cH#=eS-b)<^dv<{yoyKu z^yF^%bEFk#B>w9onajZqp*J)*{5Wf(G&z)AfvB(G7={SXu|RBcmLK;g0@>~MZT{@7 z;g61i`opC7~bmb}nE- zo_X$a7*9v?++`yDzY!_zDNqt^a40)bsc7&lT<;iqLXa3koz;(?WtU3n4xCc;0R_AE z6HD18xV^vTkG-W`hcw?p8ufu*qaQ)^7lGucpf>cDOloPwD1)T0BdPv;k&JY@HD#lg zkD0>skGJ?oS^Qt1N1ADlz;ChW>-Hycd*3=y!T@#3Gb@}MaXjy1Zp2PG2$Fa+Xuopxg`zk%P$jmE4Z)jE85j17>_uP$`!QYu`M3Re zTW|e%a89W*IN6Wy1;*+X#(33qnV@HxK~F|cdZZRch_3bN*P>&Sbv#MZ(Y3nQ?t8qi ze*Gg9ehO!908st>50nY35QMtW=dSmo_rCl4WcNAkxupN|KXHBi|75@EH|!2dZ~INF zL9AuJ>0H#y(%oSn=;MCorq#&z@9$@}lSfG{^paEVXBH7hj|3_AGtXy&q)`}$PbMCp z3JxzIJT~zl{kOoc4_2GCb_~H*Ydz$jQN=S}bV8o=>u*aA@On}Yg`TPkPg>v_@^0L3 z{!ISe%TT^->N8jcab2FqcNA>uFA?;>-XRJPy3&FG{;y9|r^K6yz8iowGUheF$Y**kp7>!dBCSb0T#QmhPuuE9PGeLqJaI?*W#rSaht zBk~OKs)G7A2BR}=>-DYQ-Ri}n4iT5W&bcIAe~D%=%!y=_*kV=(pw9YuBlu~&-g08* zUsz}CUEfU(puWM=`^__}{&^|1S5~?-_8iw2@?!qNZo7C<`Z1mAzXdV&e`U}UZGz3_PTJ?ven*n-$cQ$f zMl)?{nqb^HFg1qWFQru#}hCh*m~Eo812Q(`9i)Q{@yQU*3=aF!XQiUr{( zqPPJBG|0*ntZt@Zg*yeSn`t0bCqq<|xaSc!N@~EW1-Fp72tXc@PCr#V#ci530LNjG z^lRkUU=X^8)NH}|mi~?+%VhrQQ{-!6)w5m%^;MW^IjaMJ$|_sIw3>-ZVr0t9btlcTt7Ct`rsW9D%(Kx4+!R?JpSZ zbfcI%arsM_@8)xAT$Ao@O)t>+_Nvjp%771=)*-PfcoppOY~|Ie)1nzl=8NeF^Jdjx z>4gay)yf2%3TRKm>0`8wST3Yzw5Dfj8|l~22_(1~TWAl*vCg;z6c!!ngh4R^UkmO8 za$+x$)(rHuPH`g!D~%<9D1g1-yYeJx_IXcgb%MYm^#3BexS4h@DB+dui--jmKd6Pn z_;{zSsCBV}SGNBJBE*&LMg6f}S!6#cUi4Pp#{TO5V@i9tEdzZ%)2{@F*u2LYKgHGK z{)>09@o-Li#&@G5hfY&Qp5<+C{8Y*F)OY0xvipQ4UaBqoO>$~{3!|AiP5u^s z(|#((^Y07eg!xQ}@k~Ydz(O(haKu4}?6wS9=!dvOwB!ShQW#=*>sxi;5H+d7CspH$M|p_aI`w^Lmn%Ggc+O7yWZEkIR=#v z)o&pZL*N*!I52+VIy48^JW(D-N4&&`;(yHy`co&Lu$o+*Fky!JHw2M;q@WgSXl6co z95dRrqW_uu+eNM5ny)qJ@~A&Z;(8RBt#n;srAzRW_yp?1IKlfE@D{^xT)gBYXY0@a zY{!>)j`+M^g&qKJMizTJLO<5tg8ZtLPq0n(^Izuq?Zk^C*!Ns=APX2QZKzN9XvQyo zg?_fV>s)<)kCmVouAh+3dsWSd!JMAwQx3Kq61AmK#6EmS`WOsu zt6goP74~61_EAT``A?_=djM32;)c6uAG~J@KG1%;3UJ;6o5BG%W{&-znpq6-%201b z6ABxvSX2TF4`9y$(Aa9@^54lkym4N?OD)HZm^ zWCdIGmX#nTe(}3f)~|rcVo!A0M;J_n{F_(69-2r@#x{DzFIgzse)CIAfm8+>L=wYb z>fI%U??DTlYG*wrEj^BuR7z&!02UX{t5;F*#l0_Kwp7xwJ(axn#Rig%YhQdqhI)by z;})fPElj`mMYSg7+LzhJEa_(I(Ws=J9mNP6;{>pcoeEPWFUenO1dDXD<#|TXNxst# zfFy$iY@Mr_#X)9tCNSm@>jG)pju^w9iwBSm>H8D9qA7B7$AN z6(fmm0R`vPR@NY9T(}aZ<>dxfz*Cw=#8HA^9!=S+Sh6@tkhp_|K~2B0pCY%Kc)cC_ zfq^KvYitO4MFSu?SzJre2EPjM(}ZSbFk~7#Qdn+36GiY*A?pMzQ)z<2f#1g z2#X^k#^tV!sNC1Q{Qei9lcUeMn#mvDE&Bp@?|CDOckd|@;%*t6OFN1``n9kgx4W?C z0?uF?j;#65Taq;9CblF`LqNAM^TqUDZI0tio1=K+Z3G6CUQLZKW$M;zak=T27~22s zjVoOHFs@q_3yfR1xw!|A*9CBfG|UI=24jPB@Z~;T?hXbcIe^hj@MHi+ktU$c2VO-S@DmU2N1|emv>F$KsD#{J*#OTP*&1_$}rK zbNw#f3QfFTR>*Nzyj^1l0X?QP-c-Sq_9W@nUoV@bzg~8xsqYw*`deI2S>7)jMQ(`q z%dptog4&QZ#FkJ$LK862v1omw+vvBx=5sr~fI>UxYoBsZ=~kCLsk_rah{#6vSq!p{PnYi4Lo*oT6}R^2RCKp`6fv($OUatMmfz5sMu z^(d||MR8>Rqd0%4yc3zNlF!M%R@$YBMl4oBl?_Z=TN!;M6?M z<|(fRlz;N|vNz?}18f!CVtSgqH!d>CLL0WoDb8+Sx!*Yu#iA*2gT%)RO;Byy+|tmZ zJ@|hJ=gUF|G(}sE`tS~n4FzZgAJ3@bVty3L6V+cx$8Pbx2Y-|&R`T!7 zgJyNb&k?EgL(h>STxv4SJqHNet?s07L?0(Pr7a%^FUE^lJP&g@&tpAAoM-agjSPbE z{Q)dh_>>e7PheP|)>?dY%F;lVk_kc0Utceb)XR^raq zT@NrH*q!XfH(&uFTN)daH0}+H6Pi6AtLs|D9^mjpjJA_XC@IhT#c#2*%tZ<}QoCj4c69kWMw@0{ zKE4-Fu5ya3L6LQm6M5Xo%fzFxN#I1{(JZ@TvKz*?6L^^zl=+o|RIKp{hH_{$uWEN8 zfoWe*W@0cuQ&whzy6ISImjc!GhxqmiP#q&G#AS5!gHwt=j=gQZc(qxF69AHDVnAvF z@9sDxD|kxOyBlN0XZNG+@pc`?3)H5x2-nP{$cG}^8=wIokWz}Wr=zpIA+IRI-Vw2*Zs46#2Za@lYO>R-EM{K8-A}BTo&eXS4wFv;M@c#v84f(qZlEDL> z8LC1`uw+CJYQHL$4mM$!jTIMZ6=FC7;jzWKZRIf(soPd)tEFv)Lz%QD2W9G(m0<`g zap{E_<5B1gFV>$;Sz13PGT$G<*)NK004$F+H>19O?*XhC&B$d8Z{s7Cl& z&q54P%?6-E**XcE-kB$>Cn-TmfA}wHAA*`7#@|wWf#VGE5EGcEu35<@gHML)>{noA zs>|@xHW}WOWf?rE??(sul{W&41T}41bjBc9cxFhj@RVVj`y*^~zimJ1&;ByJ?-*;o zlwVeY-vg!Yc(^m;>gdSRuU1A5@*ahSXA$D6R|KLX0?Jt>%C>3I8%6-x4QCM<%tZoO zvHdtc!NB8df(J{Rk%u87{1OPSijF)F2+#I;UvE4pzQBi>+K+>_ibvUnc{LY}vB(1% zzcb6UW?>h8i@tj&ExjFsZjYTaG%g-D#7?|cjwo?XfWqQYPGSo;N8i%Nok<)Q-iMbG z|0!p0vmXaJY@ekyM5dE=45Uqq4o;h<3?2Z=KGpctfT4fjJcP8g17Z0^G!}n2|GPz& zrfl&muln2f4$$~zpTznj5Sxnj=WAU*6YbvyDcT6(#$_BSvfxY6{?lQ2xyCJChKN)G zRHC#^L6;eDvU;jA19rqRz)bm1;-k`oJizw@6JHmWeUPW=4&Za>_}&3172hVn68NHc zAXB-XuD@Ey|cxVr@ zTCs`K#y}Ujc?J7V%KR$!c?Jfeu0zy8ZsNm{ei|6R!u?dg@;2Uea(B6Oxz5E4x4|+w zI?e6b$!9K=E%MP&hTr>E2v5p>2Fpw6Z+?D4SBcVtBY0gDDKlm7Eso%BJru%@$0j5+?$zMFm>j(o zG~@W+z#6Gj{lky3rAdP)rY89)QSQPSMD+zuOt|Y03&_h{8}!7Hu&pQTjeO->Y<%IN zZ*n|*5*rE|(4Vjpr&`>uPLNu*AsmQ};mIPX5#4Gd=;lQaT-xWS7Ss)(B@p9Oj;p_& zC9uFCKbqtR=nnzR)?LH(b~;N|hH`fm_AyX~XZpP-7y;z9ikek!)7Q%n;q zG~`vZ#wqr9Xf%3b^;kRL10U*<l8UoraplEnR0ZqpP;>S6d(rzn9@p$XO;21ep z0>v8&2-M(VVtZF=5r=6~XEV&NFBhVs>Ml`>JiNh5wWX7l2g5f9VhgdZEXqRVGO*6$ za~flI$K#zPLgj<@g!Shg&KEI!Qm+E}lqjqr<_h-i!b=`#-Q0jO-+fhV@DVv`Cz%sP zW0oKX9%LCUhbL#*wX48oL;e-%u%{mwwyM-u0B)L>f4RCe{MMAE;xKE!TCL(NbL(sBcHvR^95;U~|trp;y$GkcTyI zgv&(toSNuKHuME3&_uZ;F@OC(I{zVP1&4V5MF=MtCcfXYnpI8SH$E4Yv7Vq1@)^B* zB${;N3bVgQ@8&Bn)-X2!!2C1h3Va?VQs82=-hR{N*tu~vfO-d2qo#Lj&kPB@8(n@M9#>J#$VJeub~1S8zG_|Z5{37pd3aeuSoFt7FD zx<4xVIm&n!BPZ6WmdAB)*A)YLF;0Mo*9%&7!%TRYUK5De`J(Yk(aGNP;UGE20vx60 zs#U%3J~DL-*3$<=rLi23+p9xgY#+?_&d(U7RZr{epfK5*0x zwLLh<2NO_U2}EO(7_MXa+?~=~E6pbo6*J zyOYl~f!aA%=`bYG=j*1TsU8*`5a)Zk)uS)REDp5Fns(pY1!qlQH76J zNXt%7$FO>QKe9;6ehuJ~)Dkf;Kz9U1`HO zHJIDISce_;DSW;MC#lqM3tJtXfU*5>G`U);@BiVqL0NXh)r@S`FgJ{>;Z-T&XHvp# zDdFuY;XNtgLn&cSLe}zl^3EFOd}|H6t>K{&mlxr#fs_+)*kAMJ`7K@F!}_KDlTo)E zuFO89yr$s1;0Aje4)I89BI(U2URtwm0^QY2$1h(jdb-mP!5w9x9r)UXPX=P`i{m8Ae>-qX!Dv)sS$)(Egrm4y#hfVBq`Dh#)}Q2 zmv^fz7z5Q+SVH*lU_%T>P>6g3N0xcT*mb9PaD)V_(=3wz=AA6>r=OEZh!Jdh>MPAV{tsSxyaE8qeX@*yUD&{l8W`{Jx zZ7K0)hcx5&q{N#Y(u_Adq!~6lq!~6lq!~6lqzD@wQrH#kTk(AoY0dJ%%_!0Ad&R9K zc5OAyS}P1yM+(nIBk1bR(~u{sJ5!-QNNWmN5&89c{uLAnEv|((lf;{wGnvu6kt`#? zv!nm(>j%=(iB#e&SBa8G|FsK*5{C)=4hMuU>MNx6ay(3P=7ppUJ=8&dHN6jYkT1)o zTsyuJ$SpUHFGLX4&_6`?30i~6lkeDTuK|>N=v7;TpwUf?87#G%bSxHKOLPyd0b@b0 zX9s$Ic5WuH{%>vrYqd-$z6Z4)<0fYiO+pom*D@sD-6DwZ;`VxbVlX2Ll_Owm)aTY! z-{pW6ujNdym1C#5UlK9r}y(n17j2vr(u7+0?xsCd0H!0~>2e43~jAGyX zL3RHfXd?tm5_$pzs{skX~0;A}5oX<-61$Hcw1pWG4Vi4_* zEzm#t#`E21cyYelX;YUHbMoljB~-!r?YA4vZ@={)L3Vbl$8S3&Ar9>}eoyRLizgXz ze*kHi_8{cJWDGtN1<6;pp-Ng6eNItJYfFerJ68qy6^JVYQ{Q+R2$bE|YugZ&%x~fk0)N*o-2Z`*A`qMF5O*fB zEb9kY(y(|?E}{{(QN|a1`P9$n>gt6=3#B_&+aDr)Oj-cj0G{;V0bTVm6h&Ku*zlc< zZxCZk5t5%Y$%Syo-`rutW2X4@Fqb$g>#FqQyG6_leWvSoDfz&oiN9o9JdE>50x;kAa;h+?G2V-k7zf&$nCg~J}CX>Uzzf~{0 z1vI?G_lrDKz-i@T%Ro9Th;;sMgcBS$!>KdkO_MNww!T*mwFM`$QkN) zm>@QMAPQd(VdTJvO$K!g2^*#p_LVp!xm(==7>REHZhcjYQyJ>BL=f$N`8B|(w}ALU zyJ&$SP+ZLx;N=Xn1$L{eLplQ@z-5;6Tce!W#E3zl_4g)+>)1pTt5Z3=fwk5-+^UzL zbNFhbfbUoexXCCWE|`Pw^Cb!x(su#e`!)(Fw-)e8P_MxT6!a1vu4WUSVHEJFQNVyi z0jp7`K58&KS-?1J0g6$;92PKCFJK*9irhq_fX%B-7G2$U0WT1%&LVzi2#uh#XtYs) zjjW3HzYWcQN(k{gH`hw*b`* zSo*t)l%rOZ%RQL&I`@XJ#dynY0Y2Ilp^Aw_@$J(3LmE{~-R{WAp-kk1l{_}Q1zGg$ zX1+&7zHU9=PkZFcO6KEwu4leZYrdB(`Sz=OP(#v*@`j(1k1xF>=)3@dB%M!*e1gso zuzu=U-Yk*Np!4b;`5Kb>etk;5CDwew9{CEB`R1RJ@3+=`kMziAOXkZzCEpv?d>xj2 z`_(Ow0D~`IHK*3^U6IddKYpr6t)alA3P?y*|K2NnySlYk_*(Uky~0Lv#rve_$KU+E;lMW>_=W@D zaNrvbe8YinIPeVzzTv<(9QcL<|9|Fy-Iivno>Nm>RXN^iyLnDiO+|TAu(76Y?)dR@ z8XBtVDs7FniaB)`1)cQ>Ic*DUi){PuduCtk5BnZgK7MKW$1f`Tnx918F-}{szW$c+ z&QW7?s+$Jc%y+=`m%nW_4bFWJ|90Pxf429fpCI+ERTaVd#_{9JOUoOp=G4~KSCrS( zHB~hR6ZvWyZe^zZO6$IdSAV=Vws-l9T1(8Phxh*E1t8hK?%ut>e{lcr@85sluMr&e zgG)!vzjRckbCf)ORO$Fp({20izx(4qui3xyv3;#8_C2shd*C_ddhS@Q<~-tfnES zv1)EjeO>vjd1Dt=-fY|Vd{lk+f! ztg8njG6U0cQK7Z?8+vCo0=eqOU z`R;M<0(YU?>v4NLo*YlEC(o1b8RseR6neZl?i^1}PEKx4UQT|_xSWEV!W?g|JJ*w& zlbf5Hmz$qEF1H}JFxQ*s&hzBulv%%PYt$%=6~E^F8@F`MLRd`T6VX#^sL78<#(B+_-{qh2y*h?gCFiPC;%#UO|4rxPpR$!UAuhyUx6FZicW|G9A#uVyg{V*Osfz6w1;Wl6&>jAj4u=DdW+-KlAZ;8hj!gXL9>KN*3n;(xaV!hz5 zfZGOlJKW~FcziVKxdQG4xU1ln!EJ+E33of(g>aqq-~(JY+^66+!`%dT6U^agc?sgbqw!mG1eIqyc=vWN=aNTg% zF^sc+t>EYE6);eNpKU)w{psEtkLLlt>VEJC;q4E^<85%A560uO!EZO*AlxFjt#BLQ zJ`8sS+-KlE19ubL?Qq|LdkF3UxQ>T_4_9g3aEHMygF70o?dS3M4R9TB8{js;eFE-w zxN8aj1^5YfHr$WlHp4x^c({%sh<`X9cfl=#TL^a*+yLA|aA(7HKLUE;Hp6X&YkL%O zLH99~4|$mlcLLmJ;FiJN1GkdyQ;;{fW&ab8AA;Nb4B7$m)b=OT3vR=6kWZyft^Cz2LUtVSESE z;f|{l7WFo`wQyJLM0>&A{s!tz_*+Pa&7_81kaM`raA(0?0k;Atb zW?$&ApEG!1#tIC6gpb63$Gmv_LZUDBz+}M43;qb>zQPPkUN+Ce2EI}zk~5um4HBe?^lK3p zvEXI;R{(1UY?_fitw_&6{3_y}Lma3UKep`&z}f)w6C!82?=bK)=*EA(Ep5XX`8WZS z$fKzV9!<@3rvP0Gyralc8K z&RF`S%+bsH`!e0j2KX`y!vn9%JY?^;C~Z(?VR5FrICC`8AT7#AOQ00A0sgZ-FJV5K z1Alrma3WK9;IaYB`^VCM-0vr80l)`?mOU72V@R7`*`r)=(ClIk3_)maaG5H!1C$LTX<@4>3h z%jsUX(7kT<)|W2WXrRsw(@rTJpW#M*bc?l?TdXbdgU?govkrAFpt}AWMg-IwrfoDf zd$)Kl$F<{uKY;P$OJ%cVs7vW^1N9G>ZScA;*uV7P`cmK7r88EN%tH8^OXDq_&EA2` zdo6fErkA_J)V8p_ZSKte&PJh(AAjxOF$3))o$_{4yKpP{W(n$VdWCj1>iG)V>1_aw zqraP}zpZi~+RxMGDkyo3JXP;Y;5iJNaTe8kAk{mxpS8cKJx^m!ZO5}QNL?ms3;8QO zzEuLblEO@8DTFY`d3w;P|aDu?-*UoJcxNKVc6UvQA6AX(XM-_}zf<8**O>m4=pE zRT`s~+J6oB_%>#q8FuXkH71oPoy8RR2`NY}T>?zd#Qfj|_Ow#z- z0bgpymTYzjj@3AUW#@4+plv)Zk`d5eF9E_)ECSRmwOt?W`uLP8z!5v z3^#mrF$w#@V+j0`Xdl^U@7KVuG-Op3X)`azgmEwAi(8QicOl5%y9=1MqlD2L?IXbE zDKc4h6xh?iw9XUV^T1wmU~d51;lOqSn{Z%0=+T0P1Z9<_C5? zweJ(o7lSB6-!RUkGDyVdDq!1ytt22nzb`HIcfhD&O0F%P(NNL|w?iIEIXs0jkD<&L zsSFa$t-k^0yF8n%AfTbt7cZS5Y2OB316@Ex40`RyE*aR@z&O*rr zuGa?WWxKmwS$hZu)`Iky?x!B>fL%ED9suV!Z}%X_Nps&axIB+Sk1>iJGcNe~!DBV} zjl$=nd-eVdy#?RLGTllUG}GDwb+&e{ zw$xMmuvR$=aR#U)j&3&xpdU+sU|x+S$a#go!SPT2ca#iz~4Kc+A?ah zvkkx>0F7@uenACuop(P~uhn-z&ulc{r)`+FtaQ-j@xnAZEp5&&&OpWQosrF+K=nO` z6O^z{)B)hT0gqq*$;WF5WoW&4&JFBCY{1DBe25!R>{7IiKqJ1ZwuI!uF1D+1wm~`zu&}44OW@*i!>U8M0^vBtc z7;(A3Q*e@7QbN4yv6g-hYvHXpcD6t7UrAo%AoLX+De$qIQG68bYJMo2eFVqeQ(+V! zk1gasZ>F``MlZ&|27?wKuy_lAU?x{9gSwJ+b^vi9@bIB+PlI0-?$hhB@q>r5k^FJR z?-Awk=J>&9q4rSx;Awp0_(v-LDvXotpO27Li#u9SROlVzH%$B>_ebCtc<<5t3ay2t zyq1@ax!q?MWEd{-gCE5)wzXxmQ5<`31V0q88fKEgfp9w(+<~<}(OjnLoFr4Z9Ki~Z z9JibhYD?y#OdHBm9Sf-ZnN$bXBF0AVX3rKk>2L=SlWb>ag_d z;)QiM=kGrSp3SK9bgI)$b=v(ps`pLMjN|3^lgOXkiNPrQM$Q>>j%y%at%=rm(oRdG z`R$LXHw2?}Eb84s^y9`mLE4kCq9jz(~UAmJ)F(L+R21!#Fv5jEg1QT zL%`+&Ya*&hsc(auycYBy{%*sy7F?6_Kkjw2yFO z;50od8gTkHuDyY4Z|BCo)Ia$0lh)$PN|WyU3XWHd57Mm=oWg4!MO=#NX(W4#v0+_L z%5{Nztz$hY=V)pRE#2oLes-ZdF;8{BCvFZbj=?rKVJd4;b>ERu=dZkSBHoT7f zg(j$!`zr;^b{+Hse*-j?W7+IdqDg|Lnfmx#L~xdstc1qU zxSfe$PdjK<5KW7wiGk+S5}GS_i(4s0K9(1+5qY(raMLI4ZdSl0@EJ z6B6QXx3P7OxYuL+c#gOq6tl&>hJiQWFP&~|pCj&^ZhUi&czC*T-yHG#>Bi%8#C7`- z{nkj!Rei(5he(z_h1Ki7p%dBt}Bep|^C(xB&E#@n;RMQ&rTlr-p# zS@;P8V_T`X)i5@fii@Tb^3F^`u9`(O_s=5y53>j-X4p`aa$gnlka6QQ@gvto#+}pT zwIhM4n{(>P0Ti(5GKTjPS9lF98i~`tDNg98LtJHxf9cxfcA*cpyTu5}P<2!Gd-Gj$ zw^F+yi?4fJJ6y{y^FWx!?>yqyBvpF^@CaBeV6h6OmU^#xMh~u3D=zaIx64j8UM6Z3J7LkGcqr&KJ}47A4ddF`;>Bskm9xbQ z({cHg>Bc3q#j|Au>?)&+RNslJ;AiV#G1^m5pZ{_h&wIrt_Zd=^R*iebUp&T}UU8#$ z9*(I9i57nukLw#W!{s>F(#zV9{Va z>k?~lHefvB5*N9QpDGC)d4d`*`~L5fz&;7=lfXU+?32Jg3G9==J_+oTz(0iqD8Pm^ zdZNnp|FI9$QQ&Nqhd9^Q$NBpBElhW-zM^vfBlhzEpYxJNdK~~)#$R+e4pVuIsMJdbYx}6hz{u9LZDE))a^?fRI@BN?PesOXP z_!Sc3yoK|2&Xb%Eaz4cQFy|wjk8(c7`8ekjoQruvCLia1&I6o>IB(&+o%1B;gPad> zKFs+D=cAmDaX!xZ1n1%iuAg&1=K;<`oVRe^&UupaLC%LbALe|7^HI*nI3MSHf^%^s z*U!11^8n`|&RaNd=RC>zAm>Az4|A@#e)9h_a+W}qSyoqfl7GQz9eBCC-yd99zOX!S z!lHh8TJhD2%JM+vF${ln9WGq@VV8-WwOZ=oW*US;AQ#=DqLgmL--2cmz9@sk;^X570#0h|f>j$MKK+RF6f zpI7vEFdu~DB>&@?0X+|)M8CvG^`6W)#c(Oneo=&9&G;n>7IPpk!Vf=20p~DITSyXq zA>*eoj)0cLA7fnGDSF4fklcRH^zF>}dgikdVP)d~8|I_iPrp+__?wJ>gXy<0o;p?m zs~EqV@y8g~;U5Zz7iv!<$`Svu0mVSKN6UF|t-_sh{u}ex?W7+QBtGur6g}~!M1d;8 zn;DNP81X8Fk1($LeLLeXF;36xC_Tw|`SI#}hswmkn7|6%mzML`HbtoK>j==h5Y^x0 zg2EupP?yC@#@iV`n(+&PQ~PJLAln#!mhmpeYZ?F7>4n>K3~=Hzc&j3m&q#210pm9^ zA1#M_82=^XT5lgN!k=~@CH^fAKj&G-2Oaopj640JcY%|9T38NBNLgL?Pu`q zierIOz4ApX4I*D8=?}{JE&5V1`4qda($K^ zoR7aIad=Vezvxn1fwK#tA(`J^1Rn)H4?h*9{YpJ9o-acGro??>=u*X=o;g#h*^lb= z;Ts2a-l{TjF5_a80$yVL4#vmNRX_#fA2P1}TMQqW=ImeizD_NIMufFFVT8oyed)B6vU9xN%`p4TMq6C=!D`;qSep9cwP|69wM zUT^Y=L(v0TV-yp%3ue2nEUpJ@aC3FCujOR}79Ji~aq zsqi|Li9ayz3n<_?#&>BvqJUkDA2>^hGK{-(c-+C9%5)5HEpvus_7#a^{_Rkxwo4Bk zCWIeypwVhgS4sZhG^$X||9a*##&X8+m+5}S_4;Qi<714EI^^&_5@#YyHXHAg6l(u` ziNjtopLtxSj&Y~nt_Du}Gj^3Ce1z%a2NdSN5%>|7cIdXT1F;1<*5mO2lhDQqyTz9i4v{zXgrRxJdaYa_!8q2=PRI#@hcfmGJTlwTNodA=ppS!HxKRfaXYnL z+6i3RpR*K$CCq0Y3`?Q={hY*oB5oW=CR4!M1)2>;ueK6IO6K<{Tz`fCw- zdX<6tcbIRKzS*F3fyC9Z_5TK@A7eXtH($J-@%A1C(7Usgo&ZkvU&mW8Ok{dl^SMTy z-^KV$1RSW}#X<#W`}SGja$Z=kaQS{G4wq~Ey9&p2Bh%lD+;2kCGm$0xI`bLjdRcwM zGmMWhPTw$5dK7k>+T%Y_ogb|-aWobb)Q>}semn_yAw5}M1UDrP{G4nKj%=?bP<44mwq)2|2@;j_I6{v7iU@wn6au#@p5*NfYc z>4PGCRvxP4KgjarVxm*xT-cHgF#S+kf%GmorK^k3-^lb%z5QDede2;kUfVxO2Y#Gvm&Axmu1pYYWx! zU=jREiDMn-kpGW>Q#;!n{@a7V$uD*KV?Sp;A(n&Iw>KG|v@STD_{|0owBNgn zasRmrU#T)N(@%URr}+~1iFR&?e19BdXG(lB{rSL24q6{H#ac;^@%w#+$oD^Sc%8%* zX8r$u5&Y_mu-c&yw*x0Rk8M_j@|}MiE`Z8#!sT}~IJ{8ec3L{y!t{Pt5c z))(z&>efuPX-3zrquo%f`?54fTQk96v^#@U zZDw1*Yzvy(4VaZZ@pPsU zeYvPF(HTQ;LSb4LV8@eX+HBn|D=jEVU*U z9#eJpqWI9`am6s6+-n1~iAQG5CmESdw1<)$gNrf=SdPq+Drps*H>!FTH)p|;|}_FJ8?b!M_Z-EDS6qUVR>acMfV zy4kx#l?_&F_3lgdXUy(cPtw|Sx@)c_SYf4{Vn-HiLM1bX(agm9GER}IhVBL3Q9E8K z`SCoUH^Hi?SQE>T)uslp9HlJc;otx)vx7Xi$VzS{wC}C8Nb%nr!m80tow6X}JcQIn zU{fAOq}xqVSmA{hD_lv_2`SsBpC(!tnMx~qBk?|Ugy}n->BmnhMg_Jk!?tW`OqXV+ z*NpaHK1^d??@X9$dJ-Lx9^CWx1lT~KBS{$WbPT@26vk7g zG8u`d8k;b%&eJXioQ`0?Y>o9`&&FUHo=2u8c0oUePbSd_I-H|b>27&Uv^D1PM5mdG z^sR}RbOD=5!uK>Q0%m=zE7ISSQP(=%yy`g^&d~*0PA%u^winrD>qIH&nNJb?uTyGl(HW14K%n z=12@Fk})Z7TdTcK!orNv-j13)SfLy$HT_bl^YWg*Cej|#-f_M(*ZhzQ(8Qs3n$!+J zJU{aE9*xxlu~ZuSJt~#T`yOk^|AdO>_)0ScjSEX2c|xcApbG>8aAP%d0zbWiK|M{i zttg4G*EU)zg1Vw)j~u_eY(eX=!b)d4<9!$yu})1D45%*Yr*1s2B{x)Z^3sFXwu9y3 zD3)*Vj3aOrzzO<-HCm=Sl~{{W(`m}BNC&L#66o@1cj_ZYFimT@b)arv-iTCaBZ6U+ zQ|CP#pH)0QYcQ!;ty9r~T4foiI9}0OTWqA(79XneQsJ=*b{{)f!{dBopnn3{$=c;z&>YLc8@ucl5;iY~9ft>y7p%ZIB-2>{18emkRO`a-Fjm zJR;&{6}@v}fF)W^MyoH~6-&w4p*1*Zg0KxEUgSx~*|N;5z%p-<+8!6i7IsulKr&2_ z3kEc{f(qliLXPhy==DFlt_8{1kiJ355ITv;89Urd%GWDLJ_N}l9}2Z5({095sYD8P z$u|6L9rQ`#IMU9g)A2QZ)F+kpUe6mk9Z-=Tu(Wxfe#+Jwt$C^7%pNTI1%^{Pmaz{f zvooE*d`-a&U7>bKbc{nyOv=<*mwp8oi8&^@0V*9J>ngU#F<Vc0Iwoepnb8_>~o-N=Yp|;akU=&jX5uwO|Ak9?Ko=7@vX4WSWQ|jwVgl$HXX0ydP zoldO5Uf#u2IzQXz#Y`(4ft|P`JsCJ-j{fh7chJt@5UojeGn4>V(SW?~+KE2TWfQ2_08#(f{vx`VVqX8t?5auF=OlEQ;jqW zg!Hkp%_Jr{Q+a!V_-t+&kw*(Fq3lSxGDj~;18=dqpY)N)LbDaYwd8sPKO(6#968L; zn8VeGQIU*tOsQSzSS%kLk)aT>SJCq+XkyY&9OTAWeu(Mbvn_4VP+A&^E<{Yyxk4(q zqDG#)rD}>9MN&C&m~G4JbcBa2@gmbqz`VpFy1$^O5aG`oQ#MF)QnMD{Y zYdo@8XmYdpM#DKAh(q@R%a_)x zIUAm{&UfEtHfX>WY8CjAvh!hJ>gyiXJj~&wL4gYMH>AWNTL4Fb_By; z-%hYXN8Qs{Cc?!qDQ2VGlspZG2~tb897 z%8$leM+B=aGc$%Y9?V!>Urf%Ga&m@({If6eXrZN*X;l-g>+Ei4P(GW9CoqHHOEx9z z{H!IPk6S`w+DOR>4sjcQrySSZ6tZ zm8kI)cpQi}53IoYYE56ie5(V?vA#qK1}h(gX#tshDqo*GwapZ`Ewbi`uFgo_!)Hgr zVl5{)?5`!_tWaPt`5)0oRNZ0=(AG)sW@|Zm1Bxill@0^er0-XBniI|k=%meLfHj+ z9>JV#k34^R(?E^w?av@6Ueqwy{CI5~m8I1^Jk?d2_2J>i*;B_W3FvG6tW&RPWt1Ur z-{tE^(!QH(dhzpIDt;m7PMadvlTR$yKFLgCl4qJ1=|{w8E7SDE4r7E=Oh0zED;Num z-<{B5Gu4wQ*(LoH`wU@|aZs-o_wdadAeIKe&c_yW<@RK9kiHU2eSWkos z@KLfSBg*Cas~m^rYZ5r6gLEt^$}_QbIF*5_@>D`Tpev7c^TYS&bKU-F%*WaO2ylAGTbI}Sg6O<~3sM_NcDg)17m+EB z|8&c`yxwO-=XzfeMeTem9^VP!0`1wM%jh^0ooqrYAX%7&6uJ-}ad4M~d z+E4A&?Ps=vzJDQ^>hgMD5}l88d0oFQukZgmTz&~N)cc(1T+jHYPWwVwle7L;aM4V1a>|4dx+`l`Ny`2$d%+OO-^-@OfS z`F33~=ek}E&qZMxJG%VD2kOcMm-lhU(DvS~+|DKo_Oi@hh%GnIGD?~P~$8qWI3iovTsBZaNxT9aSmLwv*ucN zt)vZH|5NzRk`g}i5hvkK-?zT6{ebDV<1m+e(^U;Sj?O{yK-a6$G8_~t|Mm%ra_5W@XU`5DX6fsrQtz9)J;%-PF%R>{`z+K$XRDxPx0Yf6Gfy87NPyqv* zAh*jZZBeOT+w!fC(rPQd5MLOc0csWSSzknpa4!LpVuhf{{yv|%_wL>-Ngsay`2EvW zGBamp&YYP!bLPyM$GxX0I3dk$x0%0m+m$wkoLA_O0wZGD`N=c|wtQQETY>HSHkYk8 z;xq8iOqc3@kcLS7OxK|YZRv2CFN>aT+`&57X1ZqSbeXTGU+eeu7}K>m^)U1GqSwVg z__@U2g!@uV51XzvpD1sQkv_#ec7YBzU28tJ&B~AT_*A#Ss6?kA3TX^F*<8%$_*l=E z>N<_~G+nbjiH`sBjrL4+Jvus@>89qJY2-_F{YF01Wf}ZU`64vqyOdXA&A~s@dUrm(R-| zarubcVf8h`azs3{x$uwOH*xY*8@i>LFoS$sT7w=o@iA_o5zq8D{{6zMXB9s&bit1+ zUaap_GRD2P>LI2f-OR%@{1Kng<%#fE_?Sj-k7wY|uo1@JmH4--;>}rgO~G@|TG?;B z0Cw|d69_+}8+ZYbb_b7uknZ3mAi6tvya)W7dr032TDrs22bJ#*?(2chU=Qgz&bq@h zp$9w*dcd=y2Rfha0bbez{sTR<=V$2H0p0YAuLt@wd%$1T1ODkfr2n!9{I~Sb4#hp- z>Fl9gR}bkY^w4fKJ*0oO2Rd);A^m_J=()cK__aOYKhy(!XAkg?dV=@B{}ny7^O_#$ z?9)Si$Mt~!-5%&!34ZHtTs+$YJ!5-F|5Ok7TYG@JdcZ%VhxBjtke>3=)y;VMRS$Sh z_RyYtd%(Y-hxSA>bX#t?hkhB_L;9ILq`wsK3%jY;0u+29W{Hj*J+hCH<^t4r0JNoo zRvq9Zf&7(~-8QRcc3FLBdR?fj%vKgCEiRi;QCD$WReh+UuC#c3b|iHT$+e`IL~?TRwAoU0JAZdR3@CP+l};I{p-S zhnGz$E3c`&vy8FzMJ44WSC>y22^wyg63X$Em4#;3)yyrcu9$sWXl7YOU0qEb5+L?F zl;tZcE}LFoUv=B;qHC_6lFKr_E0)^YirF)YK*_A{hGb-2MSVrxoQfim|LQ5ByzgnY`Kg*!8^xDaYVBbu?wQ7#n%YLdxW0bMj zvZ~pYHASMy8KF1%t256_rf! zluhv(+~KXNsTTy4K@Y2&UUw(zQALbpx6PYZR$Eb5Uo(4pbyeujvN@iARfpXAxzlTl zuCbsetuR;LKQ{V5U=R2+gRfudS)C5Y03t zlv`dC4jI+N&`+>73iX*iTU~P-B;Nl`MtO7Cur;&6c;WI;(JTmosk7%+p~Pz{>cg`t zY?ZfFgz7;EWOe!N5Sq7_Rbos6PzymDswBi#SyzFC=$#q1ig{Hb8?uDJA2pRTrr&9+ ztby#ZF>FI25UjSU`ubW33)?I)+<^+iiISU>!K~?3NHDts!#z|}YcxP*701oYb_x2r zgmQc~U@06IDDw^*-ZjQ+i5ZsHCC=L=s7ICM49iXUyh-oyq&LSzgS4OxD z20guPXBgoM5#P&pfe{W3`8iA!8Ma{v^Jhm*A2Dz-Jg};&zs=UqHp)o9;%5&c_H>)y z2tO~vr`djJgu~}loyOJl4MsThJ%-b4l?d}^+5=3xNQYtnT4mU8O!yiDz9t2(8sT** zaMz7G{^k_8$AIrlfp;3=4^rSe|DfY(O@X_f)ZrZ|@SV@-aGPmIGJ>rJ+|jB7%zBw& zvmR6*xh`N|@n_PN3jbh_9*@RP*dPdLwZLijFn_8A&aqx691NZK6j3*5SX^jP3Ou%yqoz}*&jfdzh%1uk3Q7hB*Z7WgF=`1KZewgo=T0v}?5&$PfV zwZLmF@XIXlc@{X=*ygXn0v~1q;V!kn4N)#)ms{W-OZt@-xYq(-Wq}(@aS^-P0?)Ig zUt@ufu)x<@;3F;YW(z#u0^eqVkFvmbTHs?W@c(-M+XDY>f&aF^e_Pyu@ttyHvtyG;9?$#wHJdGd(Fy#OE-0`u{Y=JapU30z%H<+V zg<9L43{#QTHYUSVptWa{VJgnrZ zL`wMADd7iG!uO?wm!yOjriACDglDIOD^tR^q=c_c2~SQ5Pe=)0nGzn65+0TkzBna( zeoA;yN;oqm+&d+Fa$QRQC&IGQu6_VXCP)45>>2W985dD_gdMW7M{R(FS4Sgqxg4GE zcBpIM4I=$&k$%2AOZ~OsbE+$ZuhG34xszyqKr}v}VYWNEOA`7-{VN2?awL?MHnkXO z+8jY8u8wEw*nD@1>J$0=?s-YPg1pZFS06!U7BWyIYIJ8~?(CATU44n^LPolS!fjU{ zV|wH}0V%^`Tt|57YvuNf#!*7)~MO>qMX&1ULCW7Y@2s9QM1%g(3OayJOsU;$UWo$K* zyarF(qk5A)L;pkI)OPg=BV|@F7D8`4gdqFkegOvNB}TkcoiBWi?#?b0iIyb&>c?L* z>wdLVplDZvBE8=&C%axG{s-Xd(@4ybqF&5YpyN}zu~*#rGw2A$X1J%REeMgQ*Nyy6^##M1r9Nr+9KqQ0?pBujOOg7R z`ZE#J=yr5rTtWQ^mht!FqKtNRrjhWJvARd?&xG5Mki{36MX4i%uM3}D%69lPkz(Mf zDFmmz3b;BK2-P})wOu_xH~M6jEz4HibSRV^h!)ub(FKk`Y-*OQWVmJD`=MUy-cHic zu6|56I@I0vwj7N(kw=cc;(+5lD#r$HLG^9wkCDWLHp@!H#Z*d!1q6I?;94ng%<7P% zH>+~wP*%YANoa^1z1s!m^T@syBnb-~qXBU0fEfftHWjq(mZJ->>>!>JzyiL*;pZr< z^DPX*#(JA|ypOp+b#DX&i+>9MIrA$!ria- zh4z<1z!~g|YuK*9^HZd2drwU_vfa&K3n(mB4yv;eU|E&I-J{+@7nPZrQW?^(Za7AS zBHsuj-!LQJ#XaPE6L3{QJ}8Tg>>Qyl7EYC8d990Ww!+e>Q?QuBL=x5KIf{;%-ex&= zle<8URYQ!RB6lu81!H*|k%6@S1i^r^7mz;#!lu3+ke4t^Ao@dDIZRNmg?dyBWiwNg zaQCPS=*IH?ByjCf&(~2uYoM0&;CchEjd;1XOXB?_K*XPC;Jw_ydlB8P4c8xw(s|zI z8*eVWsqp4aYUF4<&c$ay*`h7P@6 z3Jqf)cm^oLmra!;W6wZJH0T$hesXl|2n5vMe+ed;0a~~AnuT=sn~^tBKJ#mH5oyrF zurl@TZzP@(>bs8Xuh*UUqm0c(jMD2;`~?=j&ToRrFwb6xe>n96PHd4NkNGB4lT1iw;!U<2$AG9c^nxd8ilZFDwlx|B%a%$;w+(W#unZWaVw| zZj1v@mvNBoZC0;j35o{(TMt1YIPY{8?%Ndp9@)*JAx;9jdB|*=-0F8z>U|+A zkf7^${-W&Gs@WW0PPqkIhl3<{#UN&%H^4ON`=~MrMf+&CqrA!_{}3GQv#HB?mR{_G z#!im!$jP)&A0(pvg>jbbf?t&@yXHsLA?g4AGKa9JXP0(xc$<~^?hNW#8R}m|lY{=G zfa-;cXKhk{0Gf^VtwaGBiqJZ8kptoAxV*wkFnCod-*`*v2glc1v+)_Q= zzJ&6!y+^xLA`3zdV&gvYQdNe#V4P%=(@_mMTI$Y1T?XoEKI@XbNxcq5S^2#q*{1e%OI8ND<;d64+;MXBDtPQ+ue7%J(mrx@uv^St%FT|g85fBD zw>0E96z&upgm#phc8A_?I|tg$KJRXIkQf6+V5k;|YPYNuIl+@bWuH3q?;Ha<-nJ*y zUm>{M(jcP0wTD93u+`;);Q#9iuPvM^MggkvE~@d3yyzg7K+vxf6M?Q9d7Fcn2BvWy zTMR3R9BXtpAYD*7AS<7e8Zfj&?Q=Vsd4*6jgV9$-5_$Aght!ydKBr=|9GQxJ$E3zr z2~grebat(Je+P-55Bx$eXkZY7$AyXkcR<-J#*6Ae$%X4UV!XSlXY{}OZhb7?kJ?g0 zE0JThPB~hFh0+X6Tv3PY`@7UQfZ{+25+I|wf=H%#Qj!p#-To<+$eieM%T)a%DM* z*dwo$?GcaNVN)vr_)@Bg<|81ltdynM&C;M=_oJUGrFS++10o_Knxb$^O)s$B7HuZ) z=@WI~Ern$e9;h~&sA;#<_#~nP!{|(;zH%rYrxXP@g~Y;ml0oM*!BaXXjQ|Y7)!Ec6 zH3rea+T&P0iTOy5Y_u0Etq^ySuN_k4HMFKTesp7o)bta0k8VtpngZ}dKDSFv9yT?) zQQItXH-Hj^$*$yHlq5CDh|&1Rly@8Nr`C4y*0rRXZ z@^_l~UqBu`fB15d_iT~(Hd1Qly#ayce(A-2qbiG(e))2wC9UnR(NTp;{_C6x+FCe& zbdA^ULSu?{Os3PO0hXALfZZo3+axFx`F#oe8qExPexF&6b}wLw{DsQjy}Jt|pLHtl zM>aZw(F|X)l5v&ax1;WGaV+C(*}g+_Tgxj{c6qmp^lwErF#VNCKgRFdF4Fgt?SIz> z|4aN=n)nA1f1@>hO1FKDHLAux>hOc?(-ejdt3q}_$N6jy`UHHMrC!?BUBcIq<~5{I zPe-&l*FOzDG5t?k{J*#O7g_vk;kQbAQ@??H4=B(Sk5S4)`%=DyeAjIN3Hgr2BNUvQ z4}iF)=5RK3k)%OMYRV$-FWSsZmVsHhe5*e_4zXAbiJ*L1_!@U&px<-B;8dHl5deo5 zh*?37hA52M)nB>+Mxca~?e((#NFzq&Q^-is?SdEyD0?Wlo$7DIaz+yQzCd;ABAX1d4P87={kP}qC=IZa52q!Q* z*a#Tcm`41N;2gP!zyoTBhR*&Qd}vn=d8Z(_?SIsf$e{Pr7Htan!0fY9i@yZ^<+?s% z&bBAauJCY@iC&4>I$T!%CM#4b_IR5EvGD1l_n^Nz zZR(Xoo17&tqsA2J>^rCCWp0sy{sEw$<-fcCl!QT_T9*w)A*dW>iszUDZkteL_Neu2 z-0x#3tD1_KRI)je#y(Py0djyDPl@INYXPJGjA*kj(i3B8i*^j8o9$m(DYZ9KX%nhW z%e@7drTCKu+$(0U7UjWRJNrFl01-}WQ2bmFB(l5IaL#k4U#{lZUAD7MPIc8)fCl&97sUvmKF~XWh%zisjkhtRt-OCgj-2e_HN7 zvRMHd^L@-c#4qn^mrr}2c;7lAUB4YA-T5G}VN?^lyz4+@zg<4zj?j?~KUG z#z-qsFp+%P#zYEjHYI0b?JDFjCB=J%Qv=FZ)Cb?tTL?qM4|?R5@uHp3ZRADRVz!Ql z)}*9QiiIw+so!V6S(sxyR3Wu)G}tnzkI?2XQWFGyt#ua%mCp^H_ze>%A0)UEefs-5 z(5J@;kB$8m{cZ4@{d+Zd#-iMs`^$wwpG6hWwhNI*mwD7_uNMRDsxBjp_H2x>O{gF> zOsWW5uGsjvw0?dD z5VWYj-y4r(D1HG+18c}u|KI|f`Zy%i>m|spz9Q;2&-pU?0!)Xou}OXLJeD7Vu!`O7 z5)tZS1VJXdsWr`>0>y#Rs1Sv3=Aq_X|9ZE7#jL=oo-M2ehtsxFP^aP0L5HJTGXQ-7gwagaoeIJQ(`ohLQD$RZbQW}BKl z23<{#71|@6j`|U+p{guE5;jx~F|G}{Jq1ha3s$E|jkf@xG#5%QhWebWR6=PdwV)^z zbwsLS1&T|3fwDCaoj(%Z`8l0v30aQp@05ppZQmIfvNO`!iBhD+XCWK>-rdT3&<~2E z{X9XX-$>uax_0erj9X$;nt`h@8tQWb1)UHATy0|gu^NwF4dwex@X7TxdRL154s>ZL zm0!3YBcav-&B)}r{ooVR|F?vHlXe1rL%zr)AAP-5n~jWJ7*w}680#%#&B)0(pByJ< zfRARU&Hz;Xn$;f&iqVOJ^S;DDgt-)kw~uAtC*d=+C1`2#e{t094*I?b$pKDK0WgtE zT@Bu8Y!2-Wa9tRgh5kmTJ_>wjUbiOzv0tDYRi(d?1@{A~nnADci}1Q&w8BP&Zjl?7 z*>eM!w)5rDQ}U(8$*{&DwGkCYd)^GjZFH{!HGx;rHT+%02?Tu0xs)0Z2$q_D4SA=% z4|T!Rca^O{r8PLDSuA{1oY*iogSY@%@)>#~w#>Z~c+IsPS8!PEEOR##Xsq!r2gW3f z%RD0!7D3yXuIq{~=zC0nrN&7pk(3jexzxL67Bh&Yo<~h53Caeh=@5t--K}(^1LW8p zC`T9%3L)~2NR3ydGvf*)!H*ETLS))nNO9?vqxD#K77AG!R6diVQ}X2@8)T)?trDYe zm$dkPG%Sk}Md&2ts|~H_6Ks+3Zl<}~3@T5#c_5w3LM}W%Hj36^`f^aD7t7BTV)G$o zCCEnLo`lqR7_GNKVw-*N!#iuYpuXwBC|zLSgN{*8n%OIik=!ba1T!ZU9(c*WDr@Tz`YR zxR3(QNk*zw%#0>nLs!IjL`(=n2z+0l{>;dX^(|MwXNcgr{&IacpdSDvef zvJi5rKSe0$o8g`*HU5v7POyJuHkJ#95B0B~vYTGjSK%-U1kpl419te}gPom@mOZU#}^uER!&br?&8>YO2QF}4C}DYu9Rx@0r(93dXa_DBOr_QqGk zqMTe^u1*VOc3p$6wucBwKmwKuST`368r}hY-lK&_n=?YEMRSyq>(S*l1PwBBD*c#l zu-Hy3jI`QAeX!ikSvqheyIk`C@p4v4tmBUebp5|umBiT}L7%>^SIu>OjN}QsfVGjh z!cT1`vEDz*YMSeP?(;71rvDwhJn*$>dOzD8 z>ki z(6r9B{L1BW^s+!?cDCUBR?&J^&Yz5i605T|bv(QR%^@-DE(`eDrN+NR=EYpM5aDWxiv(glA=Y<7 zPjX>9Rm}&ya2*f``#h1x`a5QTm=1_-;fWQ0(d{O*#MK`^MwyB-B5?DP}fC-3Noi>Nv2Q*t$}^19k|ktkO; z)1zEtV&-HF%dTlQ=a$AwU=N}*<|U_LwCh^YN@iDyX}AFi>o4Lwx(Ytohbee<20WO8 zb-SGMO=s1y<)^%CwE4Peuz-QY!4qB73Pm9UN>N#s|I3Uob& z2laj0lE|-mq^?NnnYi7w!mampmz^I?64Os3&=H}&kCM=jYD5Dp6HF@fBc8X@evCgB z{Rm>h(2oY9d|f}1np|LKszy@NQDCM*BsIMQpU{S=kkW1%&U5xxMvKf0W_aQYD zjqn{%EyATjr8q&Ah53YjxD|qL8}&nOig1}?Zi;-2oK$d}fktmn>ZVN#oq+SutH}^+GEd@)p?Wlx)@^^2u*zahGG@JV) z&`-7*`iasE4W*B4-zM%CShy0(Rl{ywx#CH8ITm(lToM?1iLNhQi<;^B(m&NZ#<-R3 zC`Kssye5G9bf;g<&(rlFWjE9~T@%`XqAgv!L+{%90%NagsMxC-B%0$=(VfOV*LetZ zT?Vv$m|P^ZZR<`Av#M>%ZqQ3DukC?T#6|cj4#pBFAwzHG;NqrDcvm-aB|J!sS|m(2 z5<1i%5~`P=VNG3Q1BSinf8FALz~cXf#a{*g@}yCgS#^7+uwv@lHo<63mK?nRhA|#i zux{bd^b~2%BGC>Q+@(g2NmA+Itls8aUL2i;Wly!+AvN|wRB^1rS&XiS;gLq6h0s5s z41CyjdUE}At{l6a$^zx=r#M-Ic-@BIu1X@g)VLo5C`jQ5?YxBA*Mm3%W9JEmTOFm@K8H^kM;c9QvMAOZq?9j(tnP8APXKt6HBiK4&6B^^@9upyO? zsSEq-K#=}6;$>`JP`+S-%2Lxfhr)-s2@7{~BgcmEq+WtD^+sso(3CO1S@*hdkEy%8 zE?r)8zF;-gXHm8w98{Tf2b8VqfqpEPv&vERN)m%6y&%`3f?)U))8 zu%dmCU zHvQ6oiCOCMk1;3}TG7=npy{CjNbLb}W(vDh?P?i!2mrc-qh8+=IEZZ-^*Uq>4r!e? zF0oI7-I4xPH^N4a>BY7VjEZK=`|FRnZF0*7{!`EV3vfj?J5uNKo;Ew$o?>%=HtmlX zoeBHEDdS7uB9J(?T$Zt=TfcdhCrAtCaj9_|N7iVczN^n}DB#8%l#^xd0(20YY7@sH zxEEGi(O8_hr6CxM$??r(%{1lH_~B$KX-Gi_)Hv)HM5~b*{Ep$gM~)6sTi?)m)fw<@ z3Ecx;gPaXShXs9KNsVQoCK#RJ_OxXhe9CeDRmdCgeH?;73&R!+vx_=Z==Gu2V!@#t z)Yt3o>#J&n|Gx6ihN~YM}#VY5R`Z&^%{y?OKq=Xwp zy9QzlI@AxzNKw6i6V?hGH9Tc!!{FyXAU$i-bQ%YnkSDiwhaz;hdI8!_AA~LHmpfPt zwj*TUr=k87OfEFC+7E=W?O>BcOh+PSqk4oHB8WlTl08Hs@WrlEiG5HFCra9+%>rE< zWuF12k8hmrGB)&1h)pN`lvg(=)zr&D&dbOT1c&9=Jn-%&b%(nz*JM43zOydX~%i+YN4iPO4N?;Uf!|o^Kr+`?? z3T3K`0n|HZOB;?Dw5!jc?s|Lij0C1v-#4Ml1Ih_~JSm^Z(Q~`5K3Y)`X8Ztd(D%3S zN0ddIl4F~C8%x-fGM{U|Lk7$FI~@Lq&>+r_4GNB7t5ej@bnd4Yb z!Kj^&Wr9VTqrF6pA}xLO_>(};ZG1mr$J9RUDc-5aukR^-pdSD0p5n9g@)!0Le~uo1 z3*#*t(6FEVe>qRNRrF*Lnm+YB<;N}PJs zKPwNb0vxGSA0Qf~1zW>|7JU;(*FnUJ$qSj#^;ofdo3`)}L9wYPagq{euWr0qy8yYY zr5XL}kM{Z`VzU)BH80GKjC~j0-huLMVwMbDV&L;D8;5L^%Xed)GH7XO9~8b(Sl4~K z!h3n1PFh>qJDw8JwkdI57IOS+Z#*(~9*}1gNDrV{M#RQ^OQut|qYY?tS)9#@JEOp)YdA- z8^(-qb$-VE^76B^#V9HS*)oc!Hip z{xkn|{%;qZS|5nkf2%%LjuHHc`ux$rXRS{HUzhrv+CJUkyV<~Jt>0NDeg8)N&g-Ur ziTwYfzfPfN>PuIEFR7+_!5arVibZ4c=2s3+9U#8Dg^><}Xnmt~ef zC?y3Tq0#=6Q7)xmK)2bh%3V;>qN3_%HA7y;I1WcuwJ z3&jAAd<{U+Mycq1|I!R-)S4YQKTe&01*X_U?7{1c7g?F;+B(sLMNA*8W1OdykM$Ai z#*iJE!oeD4$>ZM;WvGYmN%v*I+N&m=z-;REr)vPUz(u{8K;hZgjE9%W7tI@ zoQi~c`v;MvMI8G$nugN1X1I~A#$LF!59XG3_4h~sQ)D(Srg)DA6qL<7pSn3-oxc&0 zT%7RSKG)_%itT6|Zc=NR5y5<(=8AMm(!JLLzp$q_mfGRt&f9P-ql3x;j4Y&-w`Qc- zB4ck|AcoV2`ow^90Oo-D6H4RM(0CEEL&q)9?Zj(Y5~!HQQ&qLHlHmsN^GVIRs@Ze! zVCW1Nt2Lix)XM8-xMoZbO&^6?;I08-b9j7dCd>gmzO>M$u6>=9ZJz(0RiiBlu5 za1X#(d6&McUcko98p?mfEM{ms5+u*OHG}+fX z7;O4TYTAn$YP@$&Ilu(4T8AKycdOSKj8{N5rGRA}OAPh>CjuRTF!>f}5t{wbPKhQG zJe&bT2zW#N<7;{=O z*N|g4NWfSI=OEVDVd1vQc47t&a1QrWNU_*Z!LSe`j9V(Gk9AiCi5%)_R4$Y4^9PcQ zAUQ~C90rrC`Vc^x8$Q@`p_sYt;E-A^8%@VB`K8t{1dDdmb6yB$P;WMnahyqwzaz3q zMD{EA^mR-3?G}DDwcQ>Soz1bU(8r(6vo$r92KA66Z*|Y&GbIK2o+Oc#Z-SufDZ%6ubtZ z(Fhd!K1%Zbh`5^}`X_0e*ZRaQ=?fL8AlCaGIA4)+UgC(hL(tqn{N3$$i1gdU`HEgR zU$IR*)nu%L%z-C0{S9PlO~=`)e(<$ff8MXD|8b)3iR&&so}n2d>TdMX6$}V`=euu?B&Entp zS~C4ni~oC;H0c)q74Ub}@34ND71q}y0n2*EPkldt^;MVk0}fC**U>)Qb=`AHx~}V{ zgbjeTEWA!A^!hak*s5@jdydmk?-w1^pHE0^dgxC_@LnS3ILe{g$k>e`%znYxWA0|q zK_!J2dl!u9<{Wq}+EZ*fLmE(AO;cyQNC<6(f!M$dHH_oGUI1WzKO7lbM|^@NA~TT; z01^r<81%7ujbTY?uM3PpCbqc1b_ov?3k4Od4_yUDJ*jaS6|30TL*u}V7}Um|#!28q)c7ScLgqmz;(P**T-2W< zHi+s4JOs51hv9H%h9bY46A5lXEmS?Ukb3L|l4xuk8%H^U%Jc39G`D$@W3-q&mKiY2 z4A{Y5&UkD}FBLBI?{4p2`t)IdQ<$8$V~qlZ**u0~o2AwZ8jJ%9q=83LUv;k{YN&kX zsno%uy;c}-{V1;3D;HKy(H+JqRhUa?(lpNH%F$wIUix(|ZnQ5x!TQ9W(h(^;sCaig zPX@Re>KhEDy!ok|F3yvDEj4~6+VMDfL~ZJ^di-1E`I8@KZmI8W9jN z0rK``$OyXFhsH74X$EYXu4Mm61XG?;k(xxuFWSsu({({-$SrXK)Ty5UMgOXk1poch z&Taa^NstTcjX2pTZcZ+~1^Bz&B*tMj{qkKV&wGwUGU|i+{_;{tN?qU7&t2|MoGbW0 zoV#qZ&PPJ^O&o4;qr9N+u++pyh_pfYLm4Kn8|ddVF9&(w;mGNq67`T{*V-ezNg4$s zihHCt03{EBbRvzkw$_O&5Ki7JZTu5bD7$e5;%r`l7;us-BwoQ2`f``njeLc)-|a}| zGPH(RXVf|aIBTNRJC*l>QUAzJhzM_IFg89bfcq1{Asg&F0z;23l+EZYbgnrQ7xqvab=DEv(JRQk%mx=WM zgr&6Apd?!BRCc3M(a_nr-Z9{WATfqItG|7gLn>uBa7xt$3U=*_$8tz;d;h^_x=Z^i z(hNZwb#AxOze03hqA;X_TGCxIsi_W921)mfp}gk^%SJkVHs7Rufzf9A4_N%~TKs>o z_@973)&6|yLn!GbMMvkkfx zmDGb}#Ud)}aj2I2WRRKG34)5RSaVmcVP|nd7w7hG5J6PYvi?3u(juEnECP=vU#L<- z&Y=Znu&=r&NIR9F6k41cbZ+u?h>r*VA;3O}V~ZURt!;ZNiVD-(pA9r;arl@2|JiT4mcv2mZojD-#9H>7K0(kj++iQ+;eO_0Pa)qwzn{5? zZIl?H@@1#o&vX$-mjo&IGviMpLDDFU!zW`;%SQ`e$BePD-{Jv!^=kOdrOF);!B%TM z_+RMvr7yX_Px|$@MF)93$s(*8-BeY0(gN3z_uzi>m-3UZL;13)Yq&^)Xh`Eb3OK)x zpcnQIQFzFmp|q&O#4@UhPm2}4WD~b@u{`mo(=b7sMi|fhjQ!P2@N(=0M;7IAlOrn& zmo~R!OzHYi>_Hn&sU+qfVdA+g4a!ayo>=NFOHa4hH^{K4?~@m8MKO5Tp(DJ*KV+9* zd5g3;3Y9n1-=Ps1=;w#%dl-S}SdS=_#)kt&3`^{wAM>ZQg~P+#X< zmZ85y(+}oEHk8<6R=1)fba^A%(|En*#MIYVXY5_y%N9U=L#L86Rn5MW&!PU8~;F(?si1$QKP9gHBB_!xiB?`Kje9RPYsd5UD zN7rUajc+j`HrXjFILi!D#e(pFD6TgFwX!k+tDDJK;ZDHnW->_C$q>~PHhJPkNwqd{ z3z>@mLR{IN-wW%N`Sz3I1#jhj z?62Vz{d?w>gO)*|!6W76y+qZGuVq6FRA&BI4@a=_o zIA??7hta_UCM$!__HC#;tPMvT&cF5nGkXe^&L2jDeL5#AK|2;f6Y|YP&|85aZviix zb}>)B!%t+}1+szC50!xq-*F%thPXn|hRfv(orTf)y-uJ>PH1moNF(4ereE+Jy^fH5Z+R^7k@F_AdCk4mA@1z?-luu zhes9qHiq+XHQBH1_A77l2-RaSv{NL^v<$L|_i68fe^vKm>{I>xmwA3W z@!|;fJr^C!0tQPTnre^w;cqd{wzQq6&+oA!jKcL}GI+0Q8e%Y~=lYdHO^0~dUe9Cc zk+r>qU?gfwr;rY8uMUN9d&=D`dSM^tV?T8Sod1M6&AUspt04)>&3WK8|$Al3Zwc2YhX-| zSpa4&Jkxe54Q=2W0BAMjG#x3fNQ>W{~Jq$Nw)2rJXZj zR)xV>*y~_cO%sJ;GsxT(#?*%uG4G!lYf#Q0OVJ!+-qtOv1M`C<_$=l%CPrag#de*3 z^Gi&DR0e8A62qqEdryk|6g_mRowZY1d>kpMluW|`EH0dvts>)#dtbtAsbpY#DtYaT z9V8pqzW9U;^#mQpElTrRn11bxYE8tL_FC2cFRzfiY_s18&=i7{i{62bB%(dk#ZU7~tDg$A|2y zNBN8}HrPnpwNBsy>wER%IVv{*No%W7Mh9KK)1;oj*ppF?_9=W=Zx{$J!Y4J*jL}E| zkSb~E`cn&v2)6w}ND|!wik4Spu!@Xh+-n4OnwFOtjS4SKBjPAQD3_+}RZJsJ5+v?m zL8$3B_EY#)yAOha`+-5WuCXEbS348}ZU|cMZznX2F1Nc@uyFHg`@i0jq%k+KC3zYGx`p{ZAn(@ZIKs3!iZ|W{K}qS>)Cg0i zZoL+loBkI)*xe2!uNH|LSG*jeU$-h07`JhAvlWlm1#yNn!Uyd7VS}^ZXg^-4IZzzS zIFonBPk>tW%U`jhE$rWqH5s3+52-mtnEF)TlPGB__M@7_0zTv_8>o3RqwB`ROGT)a~k ze$4N5Hxp>Zn}uqlrG=JaUNz}4^e>1~a=uttn|6w&fZ+jGO9gRl2(=qR@@PoVTOYDe z7!}wPSnwE&KP*R@D9}XzP?5sQ5w>9Ya=-*IOP}uP%xf1Vv|G5IU`T3|E+F~pP5C&k*274HcY$}j_gWXb7 z6*!(37P3Hmkm?z0f`cjB;$H{OmxT|?i#7=QW6Oo()55!gu~+gDkXyvt_Yl6A@?N206;#AC z_=uoULtt)+@a22{S|ZuP*Kif$J;`{Y(&ITz(Uzk=vJ0|dBznQmGpe|lABAE`^%vZ+ zN1c6wmKL4}$$Qid&FbVY5vinOKC3 zmD`vtdM4l9a1iWNAIDOKPe~zV_&w&{0^~l6o#K69rJK+M}O@O56(IJ zzi?5?ovn*NR^rZ9*+a~Sqg}~Sd=nNBvZb>zN#owIIHB3~vAVWZ90AS%_y`Nlfvoal zKhQ_HdO#oDt01j7+Ots|%?_qhe+_EMExh)X{hOqJApH7x)5p6p(7_;Y%P%7%e|DbY zm7_I~*;mPm8XVFo41jo-xAA*m6-?lGQxhtEaLCu@ci9uOF zIYh-8pL8gLM)Ma9r*~luY+yQBnF=9yCLB;V1xxK>pt`YxZ?6DVr;)_5H61C7F~+gC z%@?n>=vfH>$x|Va>d|(0cgPB!67}tYta$E0^gZ6LgS1^6h=Bv(-3Y;a9SFgh*^2Mk3wY{lV4Wu6Oq zROl|GN7L7#>1)yZ1=$c?Xy}a)%&OG*3>!IGhd!JKmKq0LF&}*vejpI5wTr`F+mHaq zonZX=Jysu0M?;M;3iS0amGrCT>!&eUwigOh*=}Gd6erv6 z0+u2$f8!m<2~>mpOV36OY)I1pC{nhM!=`uU$;xp`NYWqvOWKE^CJ6akj4yheAs%8v z>}kRA5pAcy_4xQfVh(mFxfRN$x6T8pzN^5rv?oD1Lq;6 z#p3%$FQK#e!};HBvNT~^K>15x!xz0Zekmxi{s_hji*T2D0=XR%1r~%gV*4|@R#hw;vu_=?AwZm{F!RHsL0|C z$WArQK~Ryh1>f($3Zf9^%B!Op;E#;HMR?crASW`1wgQQRkb)?~nOa6x&t-i7KPlrM z$6?|cj$;nqXy{CF%0Zik{QhWP3`<4wM}s*qGX_VV(6+I`qk}NS{L0zmqM^(a9AhUm z6>z*f5eJ6SQ70g%a83e(>IQ*j3J7oZgZ>H8(%vW7B`35+DAJFn(_=iAm`4$l*dzpN zY>=gi+pxRP8|rZyXF=WZZI&pOpDk?DO;qM%^9ML2lv0kpUVQzs3F3fbu@x zb@H^ib-o^s7j8o(a&)rCyPMBkD%<2^VMoCCZWvF>ehJG<_@e+nAu@W36L(_qS{Ni| zJye6M)YbRXP8NQZyFxJJTLeVq@*?lvw*5(Qqtj=6`@ql-ac|_FtbubYHl_AK~rP%ZsDDYl>4{JP+KiUMflt4dQiCq|B6kw>v|7^iUW( z9-EQSxL1SwVsdm2XvXosK2=hSdf$E6(xkx?QY<%INZ?<^kBsLT_Vm#p>6xHGl>KLhM2g1SFP@XJ;8qu!ifNoy&z@>eD zYC-)iXbHwRmE-DfOA#zE$d4}hF~&m>vvu29dOw{lD+9Q@3VRu1(KmRo9k&JX6rV>v z_9c#xydy{R@qwl=+y$89eVFDkTtJo27RtC<>9;wc>_pb^7H;$f#n+{lpllgm#Rw`D zv@jc&{CRIN7`qO}z=?tB-2wq6=-ALU7Fx!6$f(YYnQMd=bw2#OGmhQ%Z1snz zqOo{TpM#%@?JICo`QbXz8>iUcq0#7_)n)DAz!LDiWk$d88Up$)sAzaZ0bR!f;>RH` z*>$;c6pyza3Jt~kMNqtkD+{tvIS1Bxd`@HNo_M^aNT__!p0NJB+w~H}C-o|jPmaPG;u6uk@8Km6^zQJW zGRre5*6*kswUf-TqBDz-18?nQ%aQR}c5M<`+2DUgyh!oDw`3L-J&oF;s%&!g#J^i+wy=}ERoHS5`Ce{L>AFGGaj(P{Rw4G-3RNIB>i&6Gf zyIO1#M86a3AHeTg zllP53LC|`FLcb4p?_hN4rsd{%kKW5yUaVnm0HE>DkjwFTl*W;6M(h1IMUI`fb0YcS zhmMyWV2p@BW{(-?4?a~7P(6l(O5#HsDV-1~?@p1{UMVYomeyWt->~0de?PjM1!2<} z(s!6#4sr2VKFgxXwj66cJ~@#AMo_OsKuM<{PTY5HU>$JhQP#-_#xC-KtVJ!{Sb-fv zEe9EGYejugx^gVCj%B5VhE2g$;14ID2C?(@z= zr|i6946+aXI7kjzfTPr0wW<$1z(yU4_4J|eX+@3rQpjl32I~KL-~sXUS-luh?dsJ6 z2ee!+4FU=lx;`~@XMk%Ij26ssT(?0xL7dQsL04h~NlhdL0u#0y>$C^CDMy#E9VW$| z7mXnEexlNcVpk`J-(Qep1J7sI(JI^axH;dkl-M0yDb$bBR|%_-wh0FS@1pEoTVyL- z3Uc(d!fgO4N3qeIhxL#@=cINm(_sIJ-{r#lmu_*|RL~EjFt$yp0H;AO$6Fq%{XH2E zdmF0xdB{lBe7Eu8kAC^Eo96qDK=(~U6dNO1@$e!KoG2QyRe7^W zY4Ix^zdUxlki*IE9z*RMt90HGgwNGBFgc+8vHEy4@8xm0i6j^dySErISx{{JLt1&x z)g?xdvS~xx1@=w5zVX}tCO!S7-+od(A_gGN_q40WUXRByIX*|rCkFFjb)NvBWn$&_ zwpDt+fWRPModNoMOv_^+v^dQ?2~}JBgsk@cC6L{mak}Xr?ElV0lUd}8{_RQq9*a{g z0#ETS3U+-TevRyf4fSJc8CnY4u}w8tVB-ylLY}zaf~CoZLl+$Tt0ZspD=H3t9Eu!2 zO`|mzbo?rO z4NY3|2IJSkd}Uh?AHerKxDwz-ktE*wRWE7D*~lAMbRxd};nC8PTM<#X?ldH&W!qI4 z3)$>1UydN;R6lMGV;y$PukiUEoTO66H?h|-2pF4Q?RHg4HNAd40F(`BbT=TIHOvho zYj{;kcuh*UIVHR^CES`4?nnu960(-ZlXuoI=UZ#oV+{{zbo&r)>q9<43kRy+xuB`- zM_9jXIB?PJM`jG^P~KEKM9(OYt;bVXOpp1T_tk^(@<> zlkBj$FDyDKI`Li~8alGUQ@FGk?Tr`M#F=L7t;cacnp~nZQgNSw5tg``BQ6l>+v~3& z_jlS}?*&%im`iN0m!mu}h@nw_v4~~zZnxzU=rnV8{a#UKm)&*o`0Ic6HMD8qHqNHg zI7CAzu!r;8zl7CJ?s}jcCNFN;b39KoH}v%#jlqj4%n}FA`Wr!*)#9O>)srZN2T2O_ zg7IR580GkWDP*9!3QGq+9&Cug2nv?3rDT~|h+TKG2PGsZJyX2=`UC-xo`BWj(ISX9 zes?0}bF)&@ofxXv|Da^(DoB&^Z9NB=KQ;lajX@@cm3^zy&n-rp7+`*kCo#f41M$&* zZi-fYglWHom>2nCwQ2g$>?awxSJIK$?EG{dVv74w;4 zb3mHm=9GAIK$`KbDe>ljG~>+yX@<=KX@<=KX@<=KDZ<8p6m~`Xc6^^iTDz=Y14=Z< zUg6RryY>_shv(sisv||Fp%Zj<=V|a0)t!kD>eAZ$f~9vG%FYM?gtFr?l%0#1LbszA zuA|UgPYql9kpMTsi+(ll2R(~`FlUb>dYH4t3*wghK~3T@2Hpu8g_+5;XX*R>t>%6| z&-@v0r&6J$A-w4VczA@c=`?uwxPf*Ks%GlL)_bo~#Y*ZTKNo-2uTf?hRu;3XvRtH@TuPSmI_1EpB1m7EHp_pax zn9s4$O7(Ylql=8fLcic+_AlFP4%_RLa&qiBE}_+OWQn|@uQQvf#bCMHAx^e=kE&~d zfSZTvd3VL*vDIAG%H`P8Ygca)9fa9MIRJE6_$m>x{zW?s07fzFIG+{si|$w?3HtT9 z#2`8lo2!5Fjpw_w&_q1n?Seg*nAd?2{;rZQqYBP%zujzp`|T_!2(0X1?>r?T4(-jzlUuy{}|p%J!D#ut3~)X!JyvUx-cr8`#L3oP6z&4q0MPkQixu39D< zk(LE)_>RXnh_R)JHcgu3!nosa?y%u8Q+#@uOPrOgtCG%li=e<$pJ{tCB_G;oY!&-r zKFU|mMmffKVSDKBCk11VxRD@^rI5|Z;nmL#>+i>5TtGQE6U$f_`SE#hh&ohKx03Q) z-Ss%WAif+P8@mAmU;S9r51$^!apTXx^lIBDATIg{I2Q?Ff4@jJUv7jMqX-95coOkq zk*i%jpDr$td_=kD6sTW?u*<^P9~eWnkonbz=Mtd~mSc@>9@3Copya{jkA4;=`~v$n z=0NQ_;%AHT)gkOJql3|M49jl=c-YjJus_1)?E+oK*~$AvSvc{Ik1^5BZ z!*AoX1`O$-zfwTkvTy|_{J4V7H~&DyLUfSIijYvfVnpzN);eK2%pV`?gV|rq|Y1%${MZvz1SueM!hwgOJNM z*EZj_?}0V@Vt?BAh_d(PWqV&z_BH$tc|$cdw~umNG%TmGzOT)E6ij~x%vM$F+V{vG z_TBgMFJ8VMN#|6Qhid9ZjVdcHtE-q^U0qXNRyDi60Apvv+Pg0H z#j=;QrkHKm6;-u4brrW&)yyuNlRIqQj9YEPhFyXGSq|dnruPdL)u*c)^dU8C& zJ-MDd&j`;*Prk?J^?1GB9Pe;%t~bv+!aLHN@Ac()a=bY?Im2^ubMkUV&f-z=Hw2~&CSir9g#aSH$T^x=gITt<>U>|%gxKn z8<96MFF(&W!ZX46$@5r2y!$;7pf(&Ia{CZtv!9zj`W-0NccK-h&5FkzSb{g# z#^d}t?oPNeTvrI<6O-8lxXYmAtY#Sc-d?!XaQlVh@eHWQgW=AHI|r@<>-3Xw-+_C> zoOpZ%I_WXExiHwg3im{Ro9zv_Yp|fc2I6@P?vXzR_bIr$Dcvz8ehzmvEMh}3ORd2B z*URB{!d(Zq8piHSOsjk09)bIhL7)%w^31bswtL~O;DiJ%u@r6zG`9}au>cA_&xzH- zT?*H>Fdp9qw;8Sr_1g(I7j7$D9M!bh?uo~5g6o7^3wIjaWpHcZu7cYP_f@#9aCgG> zG{oc6fUf{<2f`h2-83M=sE`l06$a5YaBE?Mcca}p6e#_0o!I1RhPxAPHrlTQTZ60M z*1~94M+d)+kt_zyxO>|!ZpTS)YSB2Z$jD7$g**2qIaM!@i06*1k0e-m6 zTjTM^;5M|xjl``xIPWMBYaC zKs-JW{M-z;6z;Tx;0L(Nze0K7Z)Yd?5biX%Yv8VdyAy8harBq2h}lRcfA+hsvDxQ2 z?dSIE<5&)1M>tNW*sh-!k6+9L{yt~{o6U`Xx%gL7g|_2DJJUHKGi#D``dmkY?W%Kp zmkxJd2&l+^6WpcM@wmuHAb!Lf!oLQG!*pr}!w|9K$WW;@rc7ini5Jdg!1z|Gi$j+>C_ zT$VN|GiwQPL^1-IC256yGhM)1nCTps=_ov1v<2&vRTGb2#C$IxUuH=pV@dil7^bM1 z;})mQwi0-)^iKn91z;GS;>UC$z?K8Xw&0JjrGPzR$;<9}#K2d~L~^FRA=P9P3ciy!;;1Yi!xzyKj~rsr-0KZ73p6K_Hx{!s$P zv5h7s+Gt{?CoO1gBme1wt`aoHX5@jG5x)}rU4e3%0ow&xm(c`p8Rs<}OBD-GcLC2f;HgDf;9XnBdk`W>9qGNK*RqUQ`hAES3izuSKi6YTJ^*FuJS?++ zfGm=cc1PdLEPtl+#!SbL*k%RzHyG*VNId=w{25W;M4R51Rz%v0y3&>w>YGXw^0@F% zjCs&Sp2{d8U8qWuEF1fqTVJbC&H~Vxk&84b{T*a~Tibp4Y3Zf*Zd)EBPcQca;9Lor zaRbY>vE1dSS^Jyxyn#7&H4G(ab@3xDPQacA>=Q6##!jS4p+)eXpvC09wDgYN-O_Tk zNy`l2tOPCh0)K`IoS7YIR$5pt^@cYdj>q?~4c_`^CV5@xPs)KLUrfaC zO8-gsd@<3apZe4K+vD*`r2lJ7;wfX2<7Y2)sghsC3EnND%$SG@KiE?XyMSXk@XZ8$l+PKrlfD8gs|cCd z$O!}Vp(^5sma(k_>;&4}l%s@kC%O}`@9W7#-e$lCBCpBwO!p38t`r!*6h1Tsb^@^c z6qpmdq(v>XKq!I*Y}n2JqEFH$+cu;vOA@dM zc(d8vBuh8hWp~pih!W&K7L7=?2ttZgkUzd4f22Yof+$ZEBO)O1Bq;Jw`K0&>{zLcu z&diy+_ulLxP5a*WzVCIuHs{{oJ#%L6nVBkjs6X@*vUN z`U0>Gz^VyYQ&t`?nd%v%Zkd%)$Kifg3bT56OVbGeTY zFA`yEfPK(~ods+Iux81n_)@^GabXt&n{?&f2JCGc-%`l99atlLd-@DT=>@LWMd+7Z z-Y#YBp%_>T>c@0H^iA|zIQIP=+RfWN=yBTIw;C?bBk0E%#jY6_@+u)?1LWP;$9Df7 z$b;`=n{K5J)?!Vua685~_$iTIx`0K21tp@eEU+KGJtc<~wwIP|n~QP|Mx8H#d|!y_Jn5LPseS^6qy_7f9y&&%y0lRJfYI8^ zM++LMJNQ0!e?{7F3v&r-MzWoGAeHuPLRVsQTu_v z4S4C@?|!^CAx{_b>_DD7Np2D+Gw>mHAls)=H`2e47Wyt9f_(ICP|@2c=VZ(|q=zkD z^ab|MSC@@@OOD0eJ3MrZ4X{ok-@*6ha=UQs)}QpfR#9Qz?am2GtqJC04Y>_@rN5oG zJ6IEVn=HEnv9;ja{TOTw`iJTpE?+i3hn-p$D*0;RDY&JS`Wmf=vncaE%lj!r-Ogcd(9S{eF&odwc(u{y6&) z;~wvq3Qlq>OG#D>*3wNs$>p}<*j@j;e;^!7|FXI_Xoeghpih5>MO7N zb!C%Y@0kS!21_d;Z#U$PMsv9cj(uN%JY=vNX41jIa63}p&E=jYp3M#&>5Xl{(Ga z@MiKC+R&xEpDZ}0*T^ybJ;-|+Wv+m1-w>7Q?1PoSUj@(kQ@PwK;-TR4T59975y4qq zdMbJhjoY~h_S^!V^~CdG%@YI9DWx=5zK!e8;`&Y;(>%_07IkJjOV+w)nn@6}CTxU* zeb!64+%UHr=an{9+UPZNOK%zJI(6Rcma@?cyGmAJ+__AP>_6kE!w%eQ5ORFiV-l41 z8Mb2!#WAdUjCs7zK|u2~+q4_`e;-EN9d+_uiTq__9&MZGw(wczflave8$HH1Japz; zgfq~F<)EF$qov|54~~B1G43c8yS&EsQn91N*jg(7T4L-h6_5H5P<`V-f=5dUCK04d z(8Zqsz1nlag(c#L9^He-gt*6R zY+WGkD>3d^Anpgpd~u&){A0eja<;L3fw*h7am51h-Py*@1>#q;jYk)Vn+_oUtz~eu zuB;&7o(f`rse-azHJ`-XJ)c;fnUC7MIN$i`0$JwiR9h5#-C>^juX}cRUh;XqZy1jo z;yD9Xs3*vTYJI5gewG_E}roj+snld3}a`x*fr}m@O*y`Ax|Gf zS91r^G2LCe(!xPipewKQ+~5_r((e@G(tG;XVMXRS4-aInEdg|AN$&$nBa4n!s%%UD zUa4|{$}#IPkAck^Nh~Y3`5}+-#R~E5662c{V#H@$Ss|X9WqiLv{C2i+Q-yeVj`5ue zvHd{f$qMo31C3u+h`UOS-&Kf<=YGwDY?o9}HWJ7EV8x}>gP!sjf0`#Q^co{&)Pr7~ zhiw9lZDry%!`Mz)gZyJpF2 zM*&ke=k6y5QE;Zm7&|~*?K7}IBuOVJNoc1-JQd4-;{6Kd(@;-bkvEAdTyJ4RAo5%RuT=503aqB#Bd5LlF zJn@jvxO$%WhGATa8=e&b&t0=`APD!0%T%8;kR9~ETKqcMJstxtC!y5!K`S0$xcvNV2by8Iy3*)AKld0<`NZYkkIJspKIIdCC^261 ziJN^#;+V3K+ClaI<7hmuFm`%Hhj9lU=aWjWqWWC#F}8ZeZ64zauXxa7{6pPf)xW9X zu>bFV4eZyzehuu`zP~IWMck1&IGr(&wLbonO!Aa}}EqmFfWDahYzvLs9v>5{KKk zK8qAA<}f{!=@?(9xDX|M{mp;ol5{?fXHJx`nvrP=F*HhC4Kc;n@q|LAG(w}4bUc${ zj+E%NG<)J~Vj*o|hlCKBOn*VBh7uNIGO;*;*VANrl`m*~4&pqNbiJooaa>LQu0V*x z6`RHP_nf*vu*lBu6*6VnjWE~Y7_BTPq`jxil)I>B_3=@ir5 zOvMr|pJ^piKhq|rA*NkSQ%pygjxrr%I?i;0=_J!Brn{Mnqquygl}!Cio0x`}b}>yc zRk`2&-#JrG-qp>`Csr;!ts5_?4^{?hs%onI%jyT^Y4xY7YpeXV$1?29=RWfQ@QF9* z^A$&;@!`RhEhP%B#s$j%d3YWW;`6oHZawqd6^e5%~h~?087D}`;KgoZA zae9x85`8~Pcs&<*nS#Xv=!@_N89$40+ERk>LyuL!$&4d-Ch;ia+8(|DypZ00#rz=_ z{8g4iKWm+|-lVa5M z(Rxm8R=8WwSF?Ow&tGx5H!)6fDN(eKvSAcH!?TimGPR{`;{ebZ& z7=Ky8Vj(7~LieThJh4qN>ib#(eh;3KT>g^6=dhep8Si48hk-Z`IMwr8A5@H;%>M-A zvsl3^7%!&hBW5c(soNBzeD;FFUdC6moD|DB7kHujI-mKQTz<=^w0sx-dB)v-&dtC{ z4lwov_x-Pb|j_rNR2KCUI?X(2g> z$%b1XCcc&Dqa(kRbBJ)yugfKVsO697T&DoXBeiL%uLyn~@FU@MXg^W+|IZfT|GLD> z#mJSa2zq8s>5q(eeOaA%C?ei>0M(~l?7mC^&oaJ|@yW9lP|Y~KKSli7U&Szy>Bkc1 z6B{|;z{2-?n8eG4pY4*?NiE}}0VM?0mg!{1Cofm$^bP=}jlh?nK9gTm=k)#rrOl;< z%e_wG(D4{6dMt|6x7T`-qgbGCr|PozwGbN?&F?bc;HtcK|58Qbhi7=n8aS zV`nHndZ(JwCmFBg`<3rf0pDIx_)x+slSc0V^zWO=@SXU{U4IW3Hm;P(k_Xs zWBcDp;1%9QV$PHu72-cxPSbe`U&oj6_*lxXyifu3eiNl77=W@qtk3r=Sky5-wNU{* zjIU$7i}{0$M;V`V^}~ySABlRFPbo%im&Slg`@@djN|y7yl*1=B@+Ql#yitMl4hf|e z7$T^8S{ek7Tb`C~kT~q#$JM2eFvs15dn<%qx9g1GDI(_?mNV|s+wXwWyz|)eN`y7Y4d7UYHM*)H*NG0GLBZ#5`ARD}Ph%s=5*eD^3K-e5eGPyoF%ONqWqBfG8R z9_ZdOEd@^fVd8pqemCPE15WL=yIKL3U1I)`VTJEv{_8Y;tpZ@)W!fciKCzJ}ir_D? zobejP%*`%7h(Ls_C*$<(5~U@uw}h9Upw5p`L|g)XYL{DF?Q*S@!%Q}EdlCFWF1LJz zV%BZ<9xN!RTtDmoDwcJ&#BGB4FvI*~u6gPT#z(po;|0urE8~Lw3QR*X-Csoh!b7M& z)6;Q9@Swz@Hm!zD<4F9;b5-S9WrAtHSBMW=e-2 zq3W4per*p=V%*;)*@X62Ph-6NY=xhyh}bA`KCzLDnLl)a0_A(-IJ~b2{||we+xmkR z^)$;F`HDj1d!IP;R8sw?r!$J+mlVODDuTZvam+8Kkm)0eh_``Lf7sya5A%*xdY;&# z80EYEIJ_Nrp?W@A1Sh9d&KGO|^f)?H;#>(EsVjn?#&X>L`8kZc?e-@aALahg#$|k+ z@rlzE@Mp&V$aq(W0_Yn(N(UUJ>OZzzol`uH(lNj*<&pExO3ClU=p7U8F%0BgN%=!r{vQ27nI&)+<&_|m+!aY@Wi9l{H~w- zXn$rsaM`}Deia2?sYE#bW|+V7HU(>Ya=FAEtn%ar;Bp;wy1GW+lTv!3i2PSszJEyZ z$?s=yI0ueOA-yeGsmK%|ekJF*R?85tU)-B0XW-?TE<3WRL~*qhzq3xW({FYL%wRCo)=_7+w{3=9YLtV75@9>+oiFhX4ingpDNJe95O>~%!<+v|r6V;Q-%xs``a~j>mM2|H0 zx)r!>wdgv&r-9h!eJ#7LKbG!|1vfdA$mKRy&rp46@wgHgPwlgT*~TNY@!gEfHrg{u zj=}nD5|$&ovQAnB_l>HS#f{oVmCVa+z8tyL=2_DP*!c>V(jVR!vzf7aIybY`)oQma z?2r|W4VkIIOrO~uj%*CZ8`nyK((E7h7DP; z3bia4Ml%~5$huXkD!LE)j@sc$>5u0Dz3EkTb#E+7R+}oodX&0|2Lqd6nO*FGdON$F z(Ycpay^_B#l+~!KI%7q|c?iK4?D;H0J-RId+goGV-u`fWK(!~P+e~&4KUokF*isC8 zuVpa3nc03blED0x!8{yIn!Sl+cQ|22G3#Z_@ZgY$B>Pi|ST+`=xvvlhOw&Nz45!oK zVH3@g9u__6aDU8<4)*sCBa7_}O$M83XI0yq$;LKUwXawgG=u9~OcU8wuRqNUu3>OZ zOS>>z&RD-1TpQbSh+SxIa1i{F56>9`ZhMLUfa5|*{sI1 z?po24jU^HmQe9Ptj?&rc-d&Bch5z z!4M``yMC(zbt0b0q{5MytBITqRFgu5Wie#y$UMV*CevB!?z%==Wz!6mt9HxHb>S3D zZzhIWe$O4Ij%;lz98b5lb<~^ZXy*X#Lcni!#1hyLF_3}JkZp{eJBWdlO}2s$=crYt zPaYF*qq!~_HPhjN-k3=juuUVpMzh*)w#0hEgNdxV7L^zIN+=!2uu8{>-%KSF@yIY; z2{f2%fMmnnaDUj#UE3W9uI={Ye*k`q{2Lz%wxbt97vvJlEN1sG{L4_=rvCn><_#NG ztZX#{7&0_Kr1oic!;m5!Q|ImMaJETMm@(R}QL_iCl`EtsPReyo-e=cL+PB#^Zj+Xp zA5wlY`D$ZHJ$1+PBTw(9*sv*<&R|DI)ur-YLoa!b=%SWfX|T}af>K7F(LM3&3;{nJ zP%WImJ?~)Xo~GKclT_I67%kNST~I0^$1g89P&=%RGTCT+00Scy)m#C;YLY=}#&bf} zP_gu-2d`tV$>k9&yx`M@G08&``U_T9*}imgGe%9+l>2;cve!$X$s>K~cO1bqHCZb- zUBA2$sn$jW!^rB+dpSPqcziZuQn6d7q64+gHc)ZAzGFqPk-DPzP?eVok5!2KmxDD} zi}^H)vD!d$T4X3}c4Mj@FeBk?q|Y`?`68IZiTHU=>xt$_#0DJA(I4xN^rsw<9_8!| z2jEc(@)oSd*$2K1$+D~7Ju$!%ts|o~km-q~9`b}o~N_YP2-)H+)|Z|HO=q?SS<(&p{?l&yQTmZicf zd$C*>7*3g3);XNaXeNpIn!*seK<$#~=!BY>l&P~X+6pf3EFsnal@5@7{h4shSN(C< ztiUTGJ?{kqYVn!LhT%JH5-lICO2>MtOtW_gD^kpfNwOx{VRMrVblD~^9#G0_Dm3`u z(O@Bg-HF+dC+m6=@X>pkTI;~_CgR<+yEc?)lEt+8K}~+az>TKnHPlkh zu-c-+b#k{%HHQV1U#I5XYIxMPc~>s6C>W&1qC>M))yuWa|CLx6jetmM*t+w8b?1#m zqPA2$d*3Y(W1;qBCv&={G!h8dR`tO+Vs`8V!LGN*vGSD#b!6)z)CCahZN##6b37Uw z2wMJ+9+%5GreTlF;+juz3)p^Z-SOxKQi|5c0H zXF+FDICo8LB7&j^@qmo`?glnHJW+jf+MU;-%DoJOYO#%pWUm<;iqF{KBVvx_XEr&_ z=YRnGAu2RE@P=wPNcw3l8G101Sq{0nV znD=@zu~bV@|i8WBq}O()va8AgqzGGO6CGhN8Ts1`6?n z)0R5S&UMW?3`6F!-ZYc&C}ZJ%h@;K@3q2ly!v{G!Y99E@aIRWypM24zCmZuJdOuK!G4E_L+!#ATlE4N zXA?d2O9}-Q%fZ}f%fy~^%ssMX-_j!+t0W2r@41TuBSGWET^X8nT#G=*B5cn~!fd z)Gc$pmzEa2(u!ok|1GeT3)Dgf1F;w)I5HX&>_-Ge#vHkK2O6=GqMySk)E?T7VEF6X z2~_K#b_Q!Xcn2m0R+NX4=i#-y3Vaoct?YvsJYqWdr4a7xI-+nV2IQlUcoH)RKIBrm&d*x% z@v|*%rHz!F;K*U6I6^umhoI9PmZh*eRP+fI`B?h#6r%fhD(~#qW;Yye=?+h;H#_(` z7H4}%POLLDKj~O1frv4NUEv5B0sw({G9zQW0vpmIIK=pP4&#`(2$N{8r+2P z9fO|cZuIwem}z6@=4U9f%nb+@@_;8@)GIf%RY#a-pdOlSWlXvO@enMA+`r4ydNMo? zgoHP($0DeAU{Jm^fi=@WG7W>3kCcSKCLemYq)zEH1#XM1d9o)O&b$2VNZ739w75U@ z>cIgS`FE-wVSoF4svb&EoK+e{*#CIX*tr|j7L`P zh5NhoPN}6-*f-ejn#|O+{!YzYo7o&r!2?8KwP5s4DqGJOn4O)0;5|12RN4N)EMn9} zO@PB=*Jh9(Yp6FjX6z-{pXL24%jtTykG7U^teN?E7~A+qPa^d5OT8wR@r3+zAYTTO z(}CIBk6+kQkqSB0I{JMJxzKW{l*%TjIkNe7d54&5ZHAu0VMtLw)en`Oy_B`iZ!+jm znCcG5*(2Q==Y-;DsDNHv?&W(hLR4jj`|+F%G@DkmPana*jHOee3ctz~tAb&yN~Pi4 zr?bO0sCzJ;h%Spq8N&0jW%SmXWT%I6qAEH(fFcylrqvaG8ss=JaV;H7gee0br4m_D zC6{YeIIQYT;*<_Dv52V3#_%g>RWkTgl}^fsZdI{9eze{fg*1JJVj>7>4Mk!pc;M1Z zNU7?nyON=gNe)#5B4w4s{c)6~q+>=Gcx|A+ACL6;eZ9RTc=K7%tDXFMp;%a=1Zs-c zsU3-U?Fp}I3VOF&=Wpcvn(}80Ru=u5p$6(*`TID(rg$yWk@$5@3#0dH?d9w5-8HSW zIMsnW|3?A8g}okh{q=qrn(F$`Vma>mhk?^O*E+x6FGEwkkp|U~bf@#<^9q^b_)E8J zPiKEOdUoe}$$a#Dt{lulY3n6t2P4#{ulpmi&Smo>d+ksIL zTE3{n38hN;m)`7mBzOB?kE{0lm6eKJ(=P6hT8MuCSJRta`A3dYoSJIBV)@5i`A0dw zruN^;A{knqraN8v_5KZ-{>P=1E1z^ejXZ<{`~BBh_n)G*Qns!kp zThjS7v>2Ib?CAXZyLnB^Sur&JDe3&W9qDy;d-;05A5H1^y6j2k*Ys#yx91mA%*|Af zb1g&X)91${Ghw>^O*$XbkgNPA@Y)mEH)8SIK^!lfQo!*pT#K_)-FNJ)YdC)&zB8nB w1pd>f6uSQUzR29`y5rDF<8P_M^f4AB4|KU2t-wK{{7Vi~oXcGqT&Lo{0m%CXjsO4v literal 0 HcmV?d00001 diff --git a/binding/cpp/bin/search b/binding/cpp/bin/search new file mode 100755 index 0000000000000000000000000000000000000000..db8b85a099b4c306984ba58ae25dbe541159d117 GIT binary patch literal 81216 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 Fe*taXri=gp literal 0 HcmV?d00001 diff --git a/binding/cpp/readme.md b/binding/cpp/readme.md deleted file mode 100644 index e2baf9f..0000000 --- a/binding/cpp/readme.md +++ /dev/null @@ -1,563 +0,0 @@ -# ip2region xdb C++ 实现 - -## 0. 文件说明 -``` -Makefile --------- 构建 - -src ------------------ 源文件目录 -src/base.* ----------- 常量及工具函数 -src/ip.* ------------- 实现 IP 处理 -src/header.* --------- 实现 xdb 头部解析 -src/search.* --------- 实现 xdb 查找 -src/bench.* ---------- 实现 查找 测速 -src/make.* ----------- 实现 生成 xdb 文件 -src/edit.* ----------- 实现 原始数据编辑 - -test ---------------- 测试目录 -test/header.cc ------ 测试 头部 -test/search.cc ------ 测试 查找 -test/bench.cc ------- 测速 -test/make.cc -------- 生成 xdb 文件 -test/edit_v4.cc ----- 测试 原始数据编辑(ipv4) -test/edit_v6.cc ----- 测试 原始数据编辑(ipv6) - - -bin --------------- 可执行文件目录(通过 make 生成) -bin/header -------- 测试 头部 -bin/search -------- 测试 查找 -bin/bench --------- 测速 -bin/make ---------- 生成 xdb 文件 -bin/edit_v4 ------- 测试 原始数据编辑(ipv4) -bin/edit_v6 ------- 测试 原始数据编辑(ipv6) - -readme.md --------- readme -``` - -## 1. 编译 -``` -$ make -``` - -## 2. 查找 -### 2.1 示例 -``` -#include "src/search.h" - -// IP 版本: xdb::ipv4 xdb::ipv6 -// 策略: xdb::policy_file xdb::policy_vector xdb::policy_content -// 不缓存 部分缓存 全部缓存 -int main() { - std::string xdb_name = "../../data/ip2region_v6.xdb"; - int version = xdb::ipv6; - int policy = xdb::policy_content; - std::string ip = "2001:200:124::"; - - xdb::search_t s(xdb_name, version, policy); - std::cout << s.search(ip) << std::endl; - return 0; -} - -// $ g++ src/*.cc 1.cc --- 编译 -// $ ./a.out ------------- 测试 -// 日本|东京都|千代田区|专线用户 -``` - -### 2.2 测试 xdb 头部 -``` -$ ./bin/header -测试 IPv4 -版本号: 3 -缓存策略: 1 -文件生成时间: 2025-09-06 02:24:16 -索引起始地址: 955933 -索引结束地址: 11042415 -IP版本: 4 -指针字节数: 4 - -测试 IPv6 -版本号: 3 -缓存策略: 1 -文件生成时间: 2025-10-17 04:41:04 -索引起始地址: 3094259 -索引结束地址: 36258303 -IP版本: 6 -指针字节数: 4 -``` - -### 2.3 测试查找 -``` -$ ./bin/search -测试 IPv4 不缓存: 成功 -测试 IPv4 部分缓存: 成功 -测试 IPv4 全部缓存: 成功 -测试 IPv6 不缓存: 成功 -测试 IPv6 部分缓存: 成功 -测试 IPv6 全部缓存: 成功 -``` - -## 3. 测速以及检验正确性 -``` -./bin/bench -测试 IPv4, 不缓存, total: 3910284, took: 27.60s, cost: 6.59μs/op, io count: 28227147 -测试 IPv4, 部分缓存, total: 3910284, took: 21.85s, cost: 5.15μs/op, io count: 24316863 -测试 IPv4, 全部缓存, total: 3910284, took: 2.26s, cost: 0.25μs/op, io count: 0 -测试 IPv6, 不缓存, total: 4792520, took: 100.40s, cost: 20.22μs/op, io count: 80758866 -测试 IPv6, 部分缓存, total: 4792520, took: 93.06s, cost: 18.71μs/op, io count: 75966346 -测试 IPv6, 全部缓存, total: 4792520, took: 6.24s, cost: 0.81μs/op, io count: 0 -``` - -## 4. 生成 xdb 文件 -### 4.1 生成 xdb 文件 -``` -$ ./bin/make -生成 ipv4 的 xdb 文件, took: 0.57s -生成 ipv6 的 xdb 文件, took: 1.24s -``` - -### 4.2 测试正确性 -``` -# ipv4 --- 只有时间不同 -$ diff <(xxd ./ip2region_v4.xdb) <(xxd ../../data/ip2region_v4.xdb) -1c1 -< 00000000: 0300 0100 9f2f 2969 1d96 0e00 6f7e a800 ...../)i....o~.. ---- -> 00000000: 0300 0100 509b bb68 1d96 0e00 6f7e a800 ....P..h....o~.. - -# ipv6 --- 只有时间不同 -$ diff <(xxd ./ip2region_v6.xdb) <(xxd ../../data/ip2region_v6.xdb) -1c1 -< 00000000: 0300 0100 a02f 2969 f336 2f00 ff41 2902 ...../)i.6/..A). ---- -> 00000000: 0300 0100 e0c8 f168 f336 2f00 ff41 2902 .......h.6/..A). -``` - -## 5. 原始数据编辑 -### 5.1. 使用说明 -* 新的IP归属地文件可以包含空行 -* 新的IP归属地文件顺序可以乱序, 程序会自动排序 -* 新的IP归属地文件顺序可以重叠, 只要无二义性, 程序会自动合并 -* 最终的结果会将相邻的且归属地相同的行自动合并 -* 以下测试, 原文件使用仓库自带的数据文件, 新文件使用当前目录下的 1.txt - -### 5.2. 数据正确性测试 -- ipv4 -#### 测试一: 测试数据文件包含空行以及重复的情况 -``` -$ cat -n 1.txt - 1 - 2 1.0.128.0|1.0.128.255|测试归属地 - 3 - 4 1.0.128.0|1.0.128.255|测试归属地 - 5 -$ ./bin/edit_v4 -took: 0.80s -$ git diff ../../data/ -diff --git a/data/ipv4_source.txt b/data/ipv4_source.txt -index 00dacc3..5d1fdfa 100644 ---- a/data/ipv4_source.txt -+++ b/data/ipv4_source.txt -@@ -7,7 +7,7 @@ - 1.0.32.0|1.0.63.255|中国|广东省|广州市|电信 - 1.0.64.0|1.0.79.255|日本|广岛县|0|0 - 1.0.80.0|1.0.127.255|日本|冈山县|0|0 --1.0.128.0|1.0.128.255|泰国|清莱府|0|TOT -+1.0.128.0|1.0.128.255|测试归属地 - 1.0.129.0|1.0.132.191|泰国|曼谷|曼谷|TOT - 1.0.132.192|1.0.132.255|泰国|Nakhon-Ratchasima|0|TOT - 1.0.133.0|1.0.133.255|泰国|素攀武里府|0|TOT -``` - -#### 测试二: 测试数据文件乱序以及数据有交叉, 归属地相同的情况 -``` -$ cat 1.txt -1.0.128.5|1.0.128.255|测试归属地 -1.0.128.0|1.0.128.9|测试归属地 -$ ./bin/edit_v4 -took: 0.88s -$ git diff ../../data/ -diff --git a/data/ipv4_source.txt b/data/ipv4_source.txt -index 00dacc3..5d1fdfa 100644 ---- a/data/ipv4_source.txt -+++ b/data/ipv4_source.txt -@@ -7,7 +7,7 @@ - 1.0.32.0|1.0.63.255|中国|广东省|广州市|电信 - 1.0.64.0|1.0.79.255|日本|广岛县|0|0 - 1.0.80.0|1.0.127.255|日本|冈山县|0|0 --1.0.128.0|1.0.128.255|泰国|清莱府|0|TOT -+1.0.128.0|1.0.128.255|测试归属地 - 1.0.129.0|1.0.132.191|泰国|曼谷|曼谷|TOT - 1.0.132.192|1.0.132.255|泰国|Nakhon-Ratchasima|0|TOT - 1.0.133.0|1.0.133.255|泰国|素攀武里府|0|TOT -``` - -#### 测试三: 测试数据文件重叠, 归属地相同的情况 -``` -$ cat 1.txt -1.0.128.0|1.0.128.8|测试归属地 -1.0.128.7|1.0.128.255|测试归属地 -$ ./bin/edit_v4 -took: 0.91s -$ git diff ../../data/ -diff --git a/data/ipv4_source.txt b/data/ipv4_source.txt -index 00dacc3..5d1fdfa 100644 ---- a/data/ipv4_source.txt -+++ b/data/ipv4_source.txt -@@ -7,7 +7,7 @@ - 1.0.32.0|1.0.63.255|中国|广东省|广州市|电信 - 1.0.64.0|1.0.79.255|日本|广岛县|0|0 - 1.0.80.0|1.0.127.255|日本|冈山县|0|0 --1.0.128.0|1.0.128.255|泰国|清莱府|0|TOT -+1.0.128.0|1.0.128.255|测试归属地 - 1.0.129.0|1.0.132.191|泰国|曼谷|曼谷|TOT - 1.0.132.192|1.0.132.255|泰国|Nakhon-Ratchasima|0|TOT - 1.0.133.0|1.0.133.255|泰国|素攀武里府|0|TOT -``` - -#### 测试四: 测试数据文件重叠, 归属地相同的情况 -``` -$ cat 1.txt -1.0.128.0|1.0.128.8|测试归属地 -1.0.128.8|1.0.128.255|测试归属地 -$ ./bin/edit_v4 -took: 0.81s -git diff ../../data -diff --git a/data/ipv4_source.txt b/data/ipv4_source.txt -index 00dacc3..5d1fdfa 100644 ---- a/data/ipv4_source.txt -+++ b/data/ipv4_source.txt -@@ -7,7 +7,7 @@ - 1.0.32.0|1.0.63.255|中国|广东省|广州市|电信 - 1.0.64.0|1.0.79.255|日本|广岛县|0|0 - 1.0.80.0|1.0.127.255|日本|冈山县|0|0 --1.0.128.0|1.0.128.255|泰国|清莱府|0|TOT -+1.0.128.0|1.0.128.255|测试归属地 - 1.0.129.0|1.0.132.191|泰国|曼谷|曼谷|TOT - 1.0.132.192|1.0.132.255|泰国|Nakhon-Ratchasima|0|TOT - 1.0.133.0|1.0.133.255|泰国|素攀武里府|0|TOT -``` - -#### 测试五: 测试数据文件连接, 归属地相同的情况 -``` -$ cat 1.txt -1.0.128.0|1.0.128.8|测试归属地 -1.0.128.9|1.0.128.255|测试归属地 -$ ./bin/edit_v4 -took: 0.71s -git diff ../../data -diff --git a/data/ipv4_source.txt b/data/ipv4_source.txt -index 00dacc3..5d1fdfa 100644 ---- a/data/ipv4_source.txt -+++ b/data/ipv4_source.txt -@@ -7,7 +7,7 @@ - 1.0.32.0|1.0.63.255|中国|广东省|广州市|电信 - 1.0.64.0|1.0.79.255|日本|广岛县|0|0 - 1.0.80.0|1.0.127.255|日本|冈山县|0|0 --1.0.128.0|1.0.128.255|泰国|清莱府|0|TOT -+1.0.128.0|1.0.128.255|测试归属地 - 1.0.129.0|1.0.132.191|泰国|曼谷|曼谷|TOT - 1.0.132.192|1.0.132.255|泰国|Nakhon-Ratchasima|0|TOT - 1.0.133.0|1.0.133.255|泰国|素攀武里府|0|TOT -``` - -#### 测试六: 测试数据文件重叠, 归属地不同情况 -``` -$ cat 1.txt -1.0.128.0|1.0.128.8|测试归属地123 -1.0.128.8|1.0.128.255|测试归属地 -$ ./bin/edit_v4 -数据有二义性: 1.0.128.0|1.0.128.8|测试归属地123, 1.0.128.8|1.0.128.255|测试归属地 -``` - -#### 测试七: 测试数据文件连接, 归属地不同情况 -``` -$ cat 1.txt -1.0.128.0|1.0.128.8|测试归属地123 -1.0.128.9|1.0.128.255|测试归属地 -$ ./bin/edit_v4 -took: 0.75s -git diff ../../data -diff --git a/data/ipv4_source.txt b/data/ipv4_source.txt -index 00dacc3..976e6bf 100644 ---- a/data/ipv4_source.txt -+++ b/data/ipv4_source.txt -@@ -7,7 +7,8 @@ - 1.0.32.0|1.0.63.255|中国|广东省|广州市|电信 - 1.0.64.0|1.0.79.255|日本|广岛县|0|0 - 1.0.80.0|1.0.127.255|日本|冈山县|0|0 --1.0.128.0|1.0.128.255|泰国|清莱府|0|TOT -+1.0.128.0|1.0.128.8|测试归属地123 -+1.0.128.9|1.0.128.255|测试归属地 - 1.0.129.0|1.0.132.191|泰国|曼谷|曼谷|TOT - 1.0.132.192|1.0.132.255|泰国|Nakhon-Ratchasima|0|TOT - 1.0.133.0|1.0.133.255|泰国|素攀武里府|0|TOT -``` - -#### 测试八: 测试将一个IP数据拆成多个IP -``` -$ cat 1.txt -36.136.1.0|36.136.7.255|中国|0|广西|来宾市|移动 -36.136.8.0|36.136.15.255|中国|0|广西|玉林市|移动 -36.136.16.0|36.136.23.255|中国|0|广西|河池市|移动 -$ ./bin/edit_v4 -took: 0.80s -git diff ../../data -diff --git a/data/ipv4_source.txt b/data/ipv4_source.txt -index 00dacc3..f895c2f 100644 ---- a/data/ipv4_source.txt -+++ b/data/ipv4_source.txt -@@ -54778,7 +54778,11 @@ - 36.134.84.0|36.134.85.255|中国|安徽省|合肥市|移动 - 36.134.86.0|36.134.87.255|中国|广西|南宁市|移动 - 36.134.88.0|36.134.89.255|中国|内蒙古|呼和浩特市|移动 --36.134.90.0|36.141.255.255|中国|0|0|移动 -+36.134.90.0|36.136.0.255|中国|0|0|移动 -+36.136.1.0|36.136.7.255|中国|0|广西|来宾市|移动 -+36.136.8.0|36.136.15.255|中国|0|广西|玉林市|移动 -+36.136.16.0|36.136.23.255|中国|0|广西|河池市|移动 -+36.136.24.0|36.141.255.255|中国|0|0|移动 - 36.142.0.0|36.142.1.255|中国|四川省|成都市|移动 - 36.142.2.0|36.142.31.255|中国|甘肃省|兰州市|移动 - 36.142.32.0|36.142.127.255|中国|甘肃省|0|移动 -``` - -#### 测试九: 测试将多个IP数据并成一个IP数据 -``` -$ cat 1.txt -1.0.16.0|1.0.127.255|测试归属地 -$ ./bin/edit_v4 -took: 0.76s -git diff ../../data -diff --git a/data/ipv4_source.txt b/data/ipv4_source.txt -index 00dacc3..756354c 100644 ---- a/data/ipv4_source.txt -+++ b/data/ipv4_source.txt -@@ -3,10 +3,7 @@ - 1.0.1.0|1.0.3.255|中国|福建省|福州市|电信 - 1.0.4.0|1.0.7.255|澳大利亚|维多利亚|墨尔本|0 - 1.0.8.0|1.0.15.255|中国|广东省|广州市|电信 --1.0.16.0|1.0.31.255|日本|0|0|0 --1.0.32.0|1.0.63.255|中国|广东省|广州市|电信 --1.0.64.0|1.0.79.255|日本|广岛县|0|0 --1.0.80.0|1.0.127.255|日本|冈山县|0|0 -+1.0.16.0|1.0.127.255|测试归属地 - 1.0.128.0|1.0.128.255|泰国|清莱府|0|TOT - 1.0.129.0|1.0.132.191|泰国|曼谷|曼谷|TOT - 1.0.132.192|1.0.132.255|泰国|Nakhon-Ratchasima|0|TOT -``` - -### 5.3 数据正确性测试 -- ipv6 -#### 测试一: 测试数据文件包含空行以及重复的情况 -``` -$ cat -n 1.txt - 1 - 2 2001:200:120::|2001:200:122:ffff:ffff:ffff:ffff:ffff|测试归属地 - 3 - 4 2001:200:120::|2001:200:122:ffff:ffff:ffff:ffff:ffff|测试归属地 - 5 -$ ./bin/edit_v6 -took: 1.74s -git diff ../../data -diff --git a/data/ipv6_source.txt b/data/ipv6_source.txt -index 4dee31b..29617c4 100644 ---- a/data/ipv6_source.txt -+++ b/data/ipv6_source.txt -@@ -2,7 +2,7 @@ - 2001:200::|2001:200:101:ffff:ffff:ffff:ffff:ffff|日本|神奈川县|藤泽市|专线用户 - 2001:200:102::|2001:200:104:ffff:ffff:ffff:ffff:ffff|日本|东京都|千代田区|专线用户 - 2001:200:105::|2001:200:11f:ffff:ffff:ffff:ffff:ffff|日本|神奈川县|藤泽市|专线用户 --2001:200:120::|2001:200:122:ffff:ffff:ffff:ffff:ffff|日本|东京都|千代田区|专线用户 -+2001:200:120::|2001:200:122:ffff:ffff:ffff:ffff:ffff|测试归属地 - 2001:200:123::|2001:200:123:ffff:ffff:ffff:ffff:ffff|日本|神奈川县|藤泽市|专线用户 - 2001:200:124::|2001:200:129:ffff:ffff:ffff:ffff:ffff|日本|东京都|千代田区|专线用户 - 2001:200:12a::|2001:200:12a:ffff:ffff:ffff:ffff:ffff|日本|神奈川县|藤泽市|专线用户 -``` - -#### 测试二: 测试数据文件乱序以及数据有交叉, 归属地相同的情况 -``` -$ cat 1.txt -2001:200:121::|2001:200:125:ffff:ffff:ffff:ffff:ffff|测试归属地 -2001:200:120::|2001:200:122:ffff:ffff:ffff:ffff:ffff|测试归属地 -$ ./bin/edit_v6 -took: 1.68s -git diff ../../data -diff --git a/data/ipv6_source.txt b/data/ipv6_source.txt -index 4dee31b..9e83b03 100644 ---- a/data/ipv6_source.txt -+++ b/data/ipv6_source.txt -@@ -2,9 +2,8 @@ - 2001:200::|2001:200:101:ffff:ffff:ffff:ffff:ffff|日本|神奈川县|藤泽市|专线用户 - 2001:200:102::|2001:200:104:ffff:ffff:ffff:ffff:ffff|日本|东京都|千代田区|专线用户 - 2001:200:105::|2001:200:11f:ffff:ffff:ffff:ffff:ffff|日本|神奈川县|藤泽市|专线用户 --2001:200:120::|2001:200:122:ffff:ffff:ffff:ffff:ffff|日本|东京都|千代田区|专线用户 --2001:200:123::|2001:200:123:ffff:ffff:ffff:ffff:ffff|日本|神奈川县|藤泽市|专线用户 --2001:200:124::|2001:200:129:ffff:ffff:ffff:ffff:ffff|日本|东京都|千代田区|专线用户 -+2001:200:120::|2001:200:125:ffff:ffff:ffff:ffff:ffff|测试归属地 -+2001:200:126::|2001:200:129:ffff:ffff:ffff:ffff:ffff|日本|东京都|千代田区|专线用户 - 2001:200:12a::|2001:200:12a:ffff:ffff:ffff:ffff:ffff|日本|神奈川县|藤泽市|专线用户 - 2001:200:12b::|2001:200:130:ffff:ffff:ffff:ffff:ffff|日本|东京都|千代田区|专线用户 - 2001:200:131::|2001:200:132:ffff:ffff:ffff:ffff:ffff|日本|神奈川县|藤泽市|专线用户 -``` - -#### 测试三: 测试数据文件重叠, 归属地相同的情况 -``` -$ cat 1.txt -2001:200:120::|2001:200:125:ffff:ffff:ffff:ffff:ffff|测试归属地 -2001:200:125::|2001:200:126:ffff:ffff:ffff:ffff:ffff|测试归属地 -$ ./bin/edit_v6 -took: 1.75s -git diff ../../data -diff --git a/data/ipv6_source.txt b/data/ipv6_source.txt -index 4dee31b..7a23ba2 100644 ---- a/data/ipv6_source.txt -+++ b/data/ipv6_source.txt -@@ -2,9 +2,8 @@ - 2001:200::|2001:200:101:ffff:ffff:ffff:ffff:ffff|日本|神奈川县|藤泽市|专线用户 - 2001:200:102::|2001:200:104:ffff:ffff:ffff:ffff:ffff|日本|东京都|千代田区|专线用户 - 2001:200:105::|2001:200:11f:ffff:ffff:ffff:ffff:ffff|日本|神奈川县|藤泽市|专线用户 --2001:200:120::|2001:200:122:ffff:ffff:ffff:ffff:ffff|日本|东京都|千代田区|专线用户 --2001:200:123::|2001:200:123:ffff:ffff:ffff:ffff:ffff|日本|神奈川县|藤泽市|专线用户 --2001:200:124::|2001:200:129:ffff:ffff:ffff:ffff:ffff|日本|东京都|千代田区|专线用户 -+2001:200:120::|2001:200:126:ffff:ffff:ffff:ffff:ffff|测试归属地 -+2001:200:127::|2001:200:129:ffff:ffff:ffff:ffff:ffff|日本|东京都|千代田区|专线用户 - 2001:200:12a::|2001:200:12a:ffff:ffff:ffff:ffff:ffff|日本|神奈川县|藤泽市|专线用户 - 2001:200:12b::|2001:200:130:ffff:ffff:ffff:ffff:ffff|日本|东京都|千代田区|专线用户 - 2001:200:131::|2001:200:132:ffff:ffff:ffff:ffff:ffff|日本|神奈川县|藤泽市|专线用户 -``` - -#### 测试四: 测试数据文件重叠, 归属地相同的情况 -``` -$ cat 1.txt -2001:200:120::|2001:200:125::|测试归属地 -2001:200:125::|2001:200:126:ffff:ffff:ffff:ffff:ffff|测试归属地 -$ ./bin/edit_v6 -took: 1.46s -git diff ../../data -diff --git a/data/ipv6_source.txt b/data/ipv6_source.txt -index 4dee31b..7a23ba2 100644 ---- a/data/ipv6_source.txt -+++ b/data/ipv6_source.txt -@@ -2,9 +2,8 @@ - 2001:200::|2001:200:101:ffff:ffff:ffff:ffff:ffff|日本|神奈川县|藤泽市|专线用户 - 2001:200:102::|2001:200:104:ffff:ffff:ffff:ffff:ffff|日本|东京都|千代田区|专线用户 - 2001:200:105::|2001:200:11f:ffff:ffff:ffff:ffff:ffff|日本|神奈川县|藤泽市|专线用户 --2001:200:120::|2001:200:122:ffff:ffff:ffff:ffff:ffff|日本|东京都|千代田区|专线用户 --2001:200:123::|2001:200:123:ffff:ffff:ffff:ffff:ffff|日本|神奈川县|藤泽市|专线用户 --2001:200:124::|2001:200:129:ffff:ffff:ffff:ffff:ffff|日本|东京都|千代田区|专线用户 -+2001:200:120::|2001:200:126:ffff:ffff:ffff:ffff:ffff|测试归属地 -+2001:200:127::|2001:200:129:ffff:ffff:ffff:ffff:ffff|日本|东京都|千代田区|专线用户 - 2001:200:12a::|2001:200:12a:ffff:ffff:ffff:ffff:ffff|日本|神奈川县|藤泽市|专线用户 - 2001:200:12b::|2001:200:130:ffff:ffff:ffff:ffff:ffff|日本|东京都|千代田区|专线用户 - 2001:200:131::|2001:200:132:ffff:ffff:ffff:ffff:ffff|日本|神奈川县|藤泽市|专线用户 -``` - -#### 测试五: 测试数据文件连接, 归属地相同的情况 -``` -$ cat 1.txt -2001:200:120::|2001:200:125:ffff:ffff:ffff:ffff:ffff|测试归属地 -2001:200:126::|2001:200:126:ffff:ffff:ffff:ffff:ffff|测试归属地 -$ ./bin/edit_v6 -took: 1.79s -git diff ../../data -diff --git a/data/ipv6_source.txt b/data/ipv6_source.txt -index 4dee31b..7a23ba2 100644 ---- a/data/ipv6_source.txt -+++ b/data/ipv6_source.txt -@@ -2,9 +2,8 @@ - 2001:200::|2001:200:101:ffff:ffff:ffff:ffff:ffff|日本|神奈川县|藤泽市|专线用户 - 2001:200:102::|2001:200:104:ffff:ffff:ffff:ffff:ffff|日本|东京都|千代田区|专线用户 - 2001:200:105::|2001:200:11f:ffff:ffff:ffff:ffff:ffff|日本|神奈川县|藤泽市|专线用户 --2001:200:120::|2001:200:122:ffff:ffff:ffff:ffff:ffff|日本|东京都|千代田区|专线用户 --2001:200:123::|2001:200:123:ffff:ffff:ffff:ffff:ffff|日本|神奈川县|藤泽市|专线用户 --2001:200:124::|2001:200:129:ffff:ffff:ffff:ffff:ffff|日本|东京都|千代田区|专线用户 -+2001:200:120::|2001:200:126:ffff:ffff:ffff:ffff:ffff|测试归属地 -+2001:200:127::|2001:200:129:ffff:ffff:ffff:ffff:ffff|日本|东京都|千代田区|专线用户 - 2001:200:12a::|2001:200:12a:ffff:ffff:ffff:ffff:ffff|日本|神奈川县|藤泽市|专线用户 - 2001:200:12b::|2001:200:130:ffff:ffff:ffff:ffff:ffff|日本|东京都|千代田区|专线用户 - 2001:200:131::|2001:200:132:ffff:ffff:ffff:ffff:ffff|日本|神奈川县|藤泽市|专线用户 -``` - -#### 测试六: 测试数据文件重叠, 归属地不同情况 -``` -$ cat 1.txt -2001:200:120::|2001:200:126::|测试归属地123 -2001:200:126::|2001:200:126:ffff:ffff:ffff:ffff:ffff|测试归属地 -$ ./bin/edit_v6 -数据有二义性: 2001:200:120::|2001:200:126::|测试归属地123, 2001:200:126::|2001:200:126:ffff:ffff:ffff:ffff:ffff|测试归属地 -``` - -#### 测试七: 测试数据文件连接, 归属地不同情况 -``` -$ cat 1.txt -2001:200:120::|2001:200:125:ffff:ffff:ffff:ffff:ffff|测试归属地123 -2001:200:126::|2001:200:126:ffff:ffff:ffff:ffff:ffff|测试归属地 -$ ./bin/edit_v6 -took: 1.78s -git diff ../../data -diff --git a/data/ipv6_source.txt b/data/ipv6_source.txt -index 4dee31b..142f7cc 100644 ---- a/data/ipv6_source.txt -+++ b/data/ipv6_source.txt -@@ -2,9 +2,9 @@ - 2001:200::|2001:200:101:ffff:ffff:ffff:ffff:ffff|日本|神奈川县|藤泽市|专线用户 - 2001:200:102::|2001:200:104:ffff:ffff:ffff:ffff:ffff|日本|东京都|千代田区|专线用户 - 2001:200:105::|2001:200:11f:ffff:ffff:ffff:ffff:ffff|日本|神奈川县|藤泽市|专线用户 --2001:200:120::|2001:200:122:ffff:ffff:ffff:ffff:ffff|日本|东京都|千代田区|专线用户 --2001:200:123::|2001:200:123:ffff:ffff:ffff:ffff:ffff|日本|神奈川县|藤泽市|专线用户 --2001:200:124::|2001:200:129:ffff:ffff:ffff:ffff:ffff|日本|东京都|千代田区|专线用户 -+2001:200:120::|2001:200:125:ffff:ffff:ffff:ffff:ffff|测试归属地123 -+2001:200:126::|2001:200:126:ffff:ffff:ffff:ffff:ffff|测试归属地 -+2001:200:127::|2001:200:129:ffff:ffff:ffff:ffff:ffff|日本|东京都|千代田区|专线用户 - 2001:200:12a::|2001:200:12a:ffff:ffff:ffff:ffff:ffff|日本|神奈川县|藤泽市|专线用户 - 2001:200:12b::|2001:200:130:ffff:ffff:ffff:ffff:ffff|日本|东京都|千代田区|专线用户 - 2001:200:131::|2001:200:132:ffff:ffff:ffff:ffff:ffff|日本|神奈川县|藤泽市|专线用户 -``` - -#### 测试八: 测试将一个IP数据拆成多个IP -``` -$ cat 1.txt -2001:200:105::|2001:200:11f:ffff:ffff:ffff:ffff:ff11|测试归属地1 -2001:200:11f:ffff:ffff:ffff:ffff:ff12|2001:200:11f:ffff:ffff:ffff:ffff:ff33|测试归属地2 -2001:200:11f:ffff:ffff:ffff:ffff:ff34|2001:200:11f:ffff:ffff:ffff:ffff:ffff|测试归属地3 -$ ./bin/edit_v6 -took: 1.52s -git diff ../../data -diff --git a/data/ipv6_source.txt b/data/ipv6_source.txt -index 4dee31b..e450e27 100644 ---- a/data/ipv6_source.txt -+++ b/data/ipv6_source.txt -@@ -1,7 +1,9 @@ - 1:1::|2001:1ff:ffff:ffff:ffff:ffff:ffff:ffff|0|0|内网IP|内网IP - 2001:200::|2001:200:101:ffff:ffff:ffff:ffff:ffff|日本|神奈川县|藤泽市|专线用户 - 2001:200:102::|2001:200:104:ffff:ffff:ffff:ffff:ffff|日本|东京都|千代田区|专线用户 --2001:200:105::|2001:200:11f:ffff:ffff:ffff:ffff:ffff|日本|神奈川县|藤泽市|专线用户 -+2001:200:105::|2001:200:11f:ffff:ffff:ffff:ffff:ff11|测试归属地1 -+2001:200:11f:ffff:ffff:ffff:ffff:ff12|2001:200:11f:ffff:ffff:ffff:ffff:ff33|测试归属地2 -+2001:200:11f:ffff:ffff:ffff:ffff:ff34|2001:200:11f:ffff:ffff:ffff:ffff:ffff|测试归属地3 - 2001:200:120::|2001:200:122:ffff:ffff:ffff:ffff:ffff|日本|东京都|千代田区|专线用户 - 2001:200:123::|2001:200:123:ffff:ffff:ffff:ffff:ffff|日本|神奈川县|藤泽市|专线用户 - 2001:200:124::|2001:200:129:ffff:ffff:ffff:ffff:ffff|日本|东京都|千代田区|专线用户 -``` - -#### 测试九: 测试将多个IP数据并成一个IP数据 -``` -$ cat 1.txt -2001:200:123::|2001:200:12a:ffff:ffff:ffff:ffff:ffff|测试归属地 -$ ./bin/edit_v6 -took: 1.99s -git diff ../../data -diff --git a/data/ipv6_source.txt b/data/ipv6_source.txt -index 4dee31b..ecd29c3 100644 ---- a/data/ipv6_source.txt -+++ b/data/ipv6_source.txt -@@ -3,9 +3,7 @@ - 2001:200:102::|2001:200:104:ffff:ffff:ffff:ffff:ffff|日本|东京都|千代田区|专线用户 - 2001:200:105::|2001:200:11f:ffff:ffff:ffff:ffff:ffff|日本|神奈川县|藤泽市|专线用户 - 2001:200:120::|2001:200:122:ffff:ffff:ffff:ffff:ffff|日本|东京都|千代田区|专线用户 --2001:200:123::|2001:200:123:ffff:ffff:ffff:ffff:ffff|日本|神奈川县|藤泽市|专线用户 --2001:200:124::|2001:200:129:ffff:ffff:ffff:ffff:ffff|日本|东京都|千代田区|专线用户 --2001:200:12a::|2001:200:12a:ffff:ffff:ffff:ffff:ffff|日本|神奈川县|藤泽市|专线用户 -+2001:200:123::|2001:200:12a:ffff:ffff:ffff:ffff:ffff|测试归属地 - 2001:200:12b::|2001:200:130:ffff:ffff:ffff:ffff:ffff|日本|东京都|千代田区|专线用户 - 2001:200:131::|2001:200:132:ffff:ffff:ffff:ffff:ffff|日本|神奈川县|藤泽市|专线用户 - 2001:200:133::|2001:200:135:ffff:ffff:ffff:ffff:ffff|日本|东京都|千代田区|专线用户 -``` - diff --git a/binding/cpp/test/search.cc b/binding/cpp/test/search.cc index 670a224..b9e48c1 100644 --- a/binding/cpp/test/search.cc +++ b/binding/cpp/test/search.cc @@ -12,9 +12,9 @@ void test_ipv4(int policy) { std::cout << "测试 IPv4 " << prompt[policy]; xdb::search_t s("../../data/ip2region_v4.xdb", xdb::ipv4, policy); - test(s, "0.0.0.0", "0|0|内网IP|内网IP"); - test(s, "1.2.3.4", "美国|华盛顿|0|谷歌"); - test(s, "255.255.255.255", "0|0|内网IP|内网IP"); + test(s, "0.0.0.0", "0|0|Reserved|Reserved|Reserved"); + test(s, "1.2.3.4", "Australia|Queensland|Brisbane|0|AU"); + test(s, "255.255.255.255", "0|0|Reserved|Reserved|Reserved"); std::cout << " 成功" << std::endl; } @@ -24,7 +24,9 @@ void test_ipv6(int policy) { xdb::search_t s("../../data/ip2region_v6.xdb", xdb::ipv6, policy); test(s, "::1", ""); - test(s, "2001:200:124::", "日本|东京都|千代田区|专线用户"); + test(s, "2001:200:124::", "Japan|Tokyo|Asagaya-minami|WIDE Project|JP"); + test(s, "2001:200:124::", "Japan|Tokyo|Asagaya-minami|WIDE Project|JP"); + test(s, "240e:3b7:3273:51d0:cd38:8ae1:e3c0:b708", "中国|广东省|深圳市|电信|CN"); std::cout << " 成功" << std::endl; } diff --git a/binding/rust/ReadMe.md b/binding/rust/README.md similarity index 87% rename from binding/rust/ReadMe.md rename to binding/rust/README.md index 17d1830..b4d3c48 100644 --- a/binding/rust/ReadMe.md +++ b/binding/rust/README.md @@ -6,11 +6,11 @@ - 支持无缓存,Vector 索引缓存,全部数据缓存三种模式 ## 缓存策略对比与说明 -| 缓存模式 | IPv4 数据内存占用 | IPv6 数据内存占用 | IPv4 benchmark 查询耗时 | IPv6 benchmark 查询耗时 | +| 缓存模式 | IPv4 数据内存占用 | IPv6 数据内存占用 | IPv4 benchmark 查询耗时 | IPv6 benchmark 查询耗时 | | ------------ | ----------- | ----------- | ------------------- |---------------------| -| 无缓存 | 1-2MB | 1-2MB | 54 us | 122us | +| 无缓存 | 1-2MB | 1-2MB | 54 us | 122us | | vector index | 1-2MB | 1-2MB | 27 us | 100us | -| 全部缓存 | 20 MB | 200 MB | 120 ns | 178 ns | +| 全部缓存 | 20 MB | 200 MB | 120 ns | 178 ns | - 在 `ip2region::Searcher` 初始化的时候会产生一次 IO, 读取 `xdb` 的 header 信息以初始化 `Searcher`,header 信息主要包含了 `xdb` 的 IP 版本,该操作对后续 IP 的查询不产生性能,耗时影响,多占用约 20 Byte 的内存 - 在无缓存模式与 `vector index` 缓存模式下,所有 `xdb` 的 IO 读取都是按需(按照 bytes offset, bytes length)读取少量信息, 都是线程安全的,可以 benchmark 测试验证 @@ -131,21 +131,18 @@ $ cd binding/rust $ cargo build -r $ ./target/release/searcher --xdb='../../data/ip2region_v6.xdb' query ip2region xdb searcher test program, type `quit` or `Ctrl + c` to exit -ip2region>> 2001:5:4:: -region: Ok("0|0|内网IP|内网IP"), took: 16.941042ms +ip2region>> :: +region: Ok(""), took: 79.651412ms +ip2region>> 240e:3b7:3273:51d0:cd38:8ae1:e3c0:b708 +region: Ok("中国|广东省|深圳市|电信|CN"), took: 7.575µs ip2region>> 2001:: -region: Ok("日本|东京都|千代田区|专线用户"), took: 231.75µs -ip2region>> 2001:268:989e::1 -region: Ok("日本|东京都||移动网络"), took: 12.167µs +region: Ok("0|0|Reserved|Reserved|Reserved"), took: 7.256µs ip2region>> 2001:268:9a02:8888:: -region: Ok("日本|静冈县|菊川市|移动网络"), took: 107.834µs -ip2region>> 2001:268:9b87:5f00:: -region: Ok("日本|爱知县|高滨市|移动网络"), took: 812.625µs +region: Ok("Japan|Aichi|Nagoya|KDDI CORPORATION|JP"), took: 7.921µs ip2region>> 2a02:26f7:b408:a6c2:: -region: Ok("美国|弗吉尼亚州|恩波里亚|数据中心"), took: 132.333µs +region: Ok("United States|Virginia|Emporia|Akamai Technologies, Inc.|US"), took: 8.461µs ip2region>> 2c99:: -region: Ok("0|0|内网IP|内网IP"), took: 861.25µs -ip2region>> +region: Ok("0|0|Reserved|Reserved|Reserved"), took: 5.33µs ``` #### 测试 IPv4 @@ -154,11 +151,12 @@ $ cd binding/rust $ cargo build -r $ ./target/release/searcher --xdb='../../data/ip2region_v4.xdb' query ip2region xdb searcher test program, type `quit` or `Ctrl + c` to exit +ip2region>> 1.2.3.4 +region: Ok("Australia|Queensland|Brisbane|0|AU"), took: 6.07µs ip2region>> 1.1.2.1 -region: Ok("中国|福建省|福州市|电信"), took: 5.342625ms +region: Ok("中国|福建省|福州市|0|CN"), took: 5.653µs ip2region>> 2.2.21.1 -region: Ok("法国|0|0|橘子电信"), took: 25.667µs -ip2region>> +region: Ok("United States|Texas|0|Oracle Svenska AB|US"), took: 4.556µs ``` #### Benchmark 与验证结果 @@ -182,4 +180,4 @@ $ RUST_LOG=debug ../target/release/searcher --xdb='../../../data/ip2region_v6.xd 2025-09-24T07:01:48.992563Z DEBUG ip2region::searcher: Load full cache filepath="../../../data/ip2region_v6.xdb" 2025-09-24T07:01:59.775879Z INFO searcher: Benchmark finished count=38335905 took=10.784124584s avg_took=281ns -``` \ No newline at end of file +```