From 58f85edcb47937229b1ae2ca72e08d71628e7197 Mon Sep 17 00:00:00 2001 From: forest Date: Thu, 14 May 2020 12:40:25 -0500 Subject: [PATCH] added btcpay pairing instructions to readme --- Pipfile | 1 + Pipfile.lock | 16 ++++++++- README.md | 61 +++++++++++++++++++++++++++++++-- capsulflask/__init__.py | 4 ++- readme/btcpay_sin_pairing.jpg | Bin 0 -> 35434 bytes readme/generate_btcpay_keys.py | 47 +++++++++++++++++++++++++ readme/paired.jpg | Bin 0 -> 22035 bytes 7 files changed, 125 insertions(+), 4 deletions(-) create mode 100644 readme/btcpay_sin_pairing.jpg create mode 100644 readme/generate_btcpay_keys.py create mode 100644 readme/paired.jpg diff --git a/Pipfile b/Pipfile index e0edea9..35bcb73 100644 --- a/Pipfile +++ b/Pipfile @@ -28,6 +28,7 @@ stripe = "*" matplotlib = "*" requests = "*" python-dotenv = "*" +bitpay = "*" [dev-packages] diff --git a/Pipfile.lock b/Pipfile.lock index 25156ce..3db94ca 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "4f61804f9405ff8f66e41739aeac24a2577f7b64f7d08b93459b568528c4f494" + "sha256": "51691e6158d1c309027d595bc4d26079c368f983223f7a567688dd5a98c865fa" }, "pipfile-spec": 6, "requires": { @@ -24,6 +24,13 @@ "index": "pypi", "version": "==2.4.1" }, + "bitpay": { + "hashes": [ + "sha256:3da21326e5a7e98fae93f7fe4c1b046993cf1d8fba60a6c5049cc15f30026b75" + ], + "index": "pypi", + "version": "==2.6.1910" + }, "blinker": { "hashes": [ "sha256:471aee25f3992bd325afa3772f1063dbdbbca947a041b8b89466dc00d606f8b6" @@ -60,6 +67,13 @@ ], "version": "==0.10.0" }, + "ecdsa": { + "hashes": [ + "sha256:867ec9cf6df0b03addc8ef66b56359643cb5d0c1dc329df76ba7ecfe256c8061", + "sha256:8f12ac317f8a1318efa75757ef0a651abe12e51fc1af8838fb91079445227277" + ], + "version": "==0.15" + }, "flask": { "hashes": [ "sha256:4efa1ae2d7c9865af48986de8aeb8504bf32c7f3d6fdc9353d34b21f4b127060", diff --git a/README.md b/README.md index bedff50..4f94cb4 100644 --- a/README.md +++ b/README.md @@ -45,9 +45,8 @@ Run the app FLASK_APP=capsulflask flask run ``` -Run the app in gunicorn locally +Run the app in gunicorn ``` -pip install gunicorn .venv/bin/gunicorn --bind 127.0.0.1:5000 capsulflask:app ``` @@ -61,3 +60,61 @@ For example, the script named `02_up_xyz.sql` should contain code that migrates **IMPORTANT: if you need to make changes to the schema, make a NEW schema version. DO NOT EDIT the existing schema versions.** In general, for safety, schema version upgrades should not delete data. Schema version downgrades will simply throw an error and exit for now. + + +## how to setup btcpay server + +Generate a private key and the accompanying bitpay SIN for the bitpay API client. + + I used this code as an example: https://github.com/bitpay/bitpay-python/blob/master/bitpay/key_utils.py#L6 + +``` +$ python ./readme/generate_btcpay_keys.py +``` + +It should output something looking like this: + +``` +-----BEGIN EC PRIVATE KEY----- +EXAMPLEIArx/EXAMPLEKH23EXAMPLEsYXEXAMPLE5qdEXAMPLEcFHoAcEXAMPLEK +oUQDQgAEnWs47PT8+ihhzyvXX6/yYMAWWODluRTR2Ix6ZY7Z+MV7v0W1maJzqeqq +NQ+cpBvPDbyrDk9+Uf/sEaRCma094g== +-----END EC PRIVATE KEY----- + + +EXAMPLEwzAEXAMPLEEXAMPLEURD7EXAMPLE +``` + +In order to register the key with the btcpay server, you have to first generate a pairing token using the btcpay server interface. +This requires your btcpay server account to have access to the capsul store. Ask Cass about this. + +Navigate to `Manage store: Access Tokens` at: `https://btcpay.cyberia.club/stores//Tokens` + +![](readme/btcpay_sin_pairing.jpg) + + +Finally, send an http request to the btcpay server to complete the pairing: + +``` +curl -H "Content-Type: application/json" https://btcpay.cyberia.club/tokens -d "{'id': 'EXAMPLEwzAEXAMPLEEXAMPLEURD7EXAMPLE', 'pairingCode': 'XXXXXXX'}" +``` + +It should respond with a token: + +``` +{"data":[{"policies":[],"pairingCode":"XXXXXXX","pairingExpiration":1589473817597,"dateCreated":1589472917597,"facade":"merchant","token":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","label":"capsulflask"}]} +``` + +And you should see the token in the btcpay server UI: + +![](readme/paired.jpg) + +Now simply set your BTCPAY_PRIVATE_KEY private key in `.env` + +``` +BTCPAY_PRIVATE_KEY='-----BEGIN EC PRIVATE KEY----- +EXAMPLEIArx/EXAMPLEKH23EXAMPLEsYXEXAMPLE5qdEXAMPLEcFHoAcEXAMPLEK +oUQDQgAEnWs47PT8+ihhzyvXX6/yYMAWWODluRTR2Ix6ZY7Z+MV7v0W1maJzqeqq +NQ+cpBvPDbyrDk9+Uf/sEaRCma094g== +-----END EC PRIVATE KEY-----' +``` \ No newline at end of file diff --git a/capsulflask/__init__.py b/capsulflask/__init__.py index 0503997..8cd5c03 100644 --- a/capsulflask/__init__.py +++ b/capsulflask/__init__.py @@ -28,8 +28,10 @@ app.config.from_mapping( STRIPE_API_VERSION=os.environ.get("STRIPE_API_VERSION", default="2020-03-02"), STRIPE_SECRET_KEY=os.environ.get("STRIPE_SECRET_KEY", default=""), - STRIPE_PUBLISHABLE_KEY=os.environ.get("STRIPE_PUBLISHABLE_KEY", default="") + STRIPE_PUBLISHABLE_KEY=os.environ.get("STRIPE_PUBLISHABLE_KEY", default=""), #STRIPE_WEBHOOK_SECRET=os.environ.get("STRIPE_WEBHOOK_SECRET", default="") + + BTCPAY_PRIVATE_KEY=os.environ.get("BTCPAY_PRIVATE_KEY", default="") ) stripe.api_key = app.config['STRIPE_SECRET_KEY'] diff --git a/readme/btcpay_sin_pairing.jpg b/readme/btcpay_sin_pairing.jpg new file mode 100644 index 0000000000000000000000000000000000000000..26ef8e37f5e30cba7346d5e5af49348f2b2e8886 GIT binary patch literal 35434 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 aoK*P>#oyduy|n7tBo#$|T@uF*KK?h=+j0{C literal 0 HcmV?d00001 diff --git a/readme/generate_btcpay_keys.py b/readme/generate_btcpay_keys.py new file mode 100644 index 0000000..8c18d1b --- /dev/null +++ b/readme/generate_btcpay_keys.py @@ -0,0 +1,47 @@ +from ecdsa import SigningKey, SECP256k1, VerifyingKey +import binascii +import hashlib + +def sha_digest(hexastring): + return hashlib.sha256(binascii.unhexlify(hexastring)).hexdigest() + +def base58encode(hexastring): + chars = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz" + int_val = int(hexastring, 16) + encoded = encode58("", int_val, chars) + return encoded + +def encode58(string, int_val, chars): + if int_val == 0: + return string + else: + new_val, rem = divmod(int_val, 58) + new_string = (chars[rem]) + string + return encode58(new_string, new_val, chars) + +sk = SigningKey.generate(curve=SECP256k1) +pem = sk.to_pem() +pem = pem.decode("utf-8") + +print("") +print(pem) +print("") + +public_key = SigningKey.from_pem(pem).get_verifying_key().to_string() +public_key_hex = binascii.hexlify(public_key) +checksum_int = int(public_key_hex, 16) +if(checksum_int % 2 == 0): + prefix = "02" +else: + prefix = "03" +public_key_compressed = prefix + public_key_hex[0:64].decode("utf-8") +hash_of_public_key = sha_digest(public_key_compressed) +ripe_hash_of_public_key = hashlib.new("ripemd160") +ripe_hash_of_public_key.update(binascii.unhexlify(hash_of_public_key)) +version_hash = "0F02"+ripe_hash_of_public_key.hexdigest() +version_checksum = sha_digest(sha_digest(version_hash))[0:8] +btcpay_sin = base58encode(version_hash+version_checksum) + +print("") +print(btcpay_sin) +print("") diff --git a/readme/paired.jpg b/readme/paired.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9d16bee4263a5a6add7c911f33f8916ebfa262d7 GIT binary patch literal 22035 zcmeFYbx>W;w=cN&QQVz_ySsaEcemi~5(tnW2>}8GcXuafun-6qg1ZI@9y|#oAt4Ok z-@WhMTQl!f&3*I!n5mlHb=F>It<|encYV5R@9wqlmhZLzJT)a%B>)6L!2bRM?mjcb zsLIP*>*#4KscIyA>;RQ zB0FcB`}iSS_dKWXeSiP}#rj8X`)@q$KfKew@q+*Gz6N^o_ckg3K#S${pLpB<#M?Rh zdffNl;NG6`-(tAu008B8KL}h7?(Pm;M*LiUzD~COzINO$cK0#<_d*5u0eXNk@BrWf z902$G%i*3g0{HK#AK(i(0k(ku{oM}W23+pxf3ExAo%}yx{2hYs#|8l8y}W~cU7Vc# zY595igg9vx@583m_xJL2pk;mJVC(1N?;uX=?CHKn_MZ;>{Zmo)e`LqTO>5xn;zxUr9$If-FGrXAX72yGyVyB+`Z?Is z26);#_|n?Y%KJLl_`3u;(8_yxczAjG(aQPz`?}Z$_`7&{a_KwU_&UhBySO>f3UKq% z8hUzr`TE~i*7!Fsw5USTh-M@Re5AYu+++My;JpbO5ACGM?m!A#Ky#pS12PYeM zJ1=_&Htv7M;vd}pa|eL`z@wj|0RO*4Al3r_fN$L0ePaRuWGVpMCf(irF21|FExE_Z zIso)}{zrYUA^;G*x|b*Yhm5fh0C1lHK>Of-$ZRtK;LQsFAX~8u@D2P|JHY)!x(6=+ z0bl?eKmbSp{eB){-p?c)0QX*r4-f)G05L!UkOAZX1waX)0BV2+patjv27nP@0+<0- zfDK>=IPS5;4e$WG_oxy81OXvH1P}$p0C7M9kOHIu89??PfAW9=pm>i&6+jhG12h0l zKnu_Ybnnrr4;TQ3fH7bKm;z>i1z-tS0oH)cJu>a?*8<0Tj5^%a!^HP{Tcg6&`j*ah~0yip9$W;M z!Bub_+yJ-19dHjk0FS_9@Dw};FTro%75Edp0snx1ApisdfkBWEbO2<2o;0|LI+`hFhN)$><~@}H-rx&01<+SLc}4G5NU`UL>{6DQGuvIG$7g#U5Gx! z2x0;;gIGeWAvO?uh$F-W;s)`6ctd<40gy+KU`QzB2_ym%1&M~lKwd%;AW4uENIE1F zk^{+u6hew2WsnL;HKZ2O0C^2*fwVz7Al;C+kUq$J$PnZM-xV8Splm=sJFCJ$4Fslha1x-bKnG0Yrh1+#@Yz?@<3FfW)NED#n93xkEj zp21$gUcwS#DX?@{HY^WT1S^GA!fId*uqId=tOM2qdj}hU4Z}XdCSfzM1=uod9kvDA zfgQlUz|LS_VOOwUuv<6)hr!X{m~dP;A)EwG0jGx3!To5h_mxRm0<>AV3 zb+|TM4{iiEgImFE;f`<@xCh(^9sm!9hruJ@&)_lecz6;#4W0$hgBQWe;8pNCcq6<8 z{s!I+e+M6ckHE*^Q}8+X5_}E53EzPqz>neQ@bB=S@IMFu0Yji6un>3%A_N%%g`h() zA=nUH2tI@mLJT2|cz{qss3Eiv`Uqo$Il>xYhj2!?BfJs*h+sq*A_DOo5r;@bq#!a8 zxrjnU8KMeNhiF2yAvzJgi1&zL#28`SY!e+ z1(}J=MHV5;k=4isWDD{QvIp6Z97cXbP9f)!E67jC&&UJh3Gxzog}g!Dp~2A5(Xi17 z&`8lxXmn`IXdGxfXo6^BXwqo%Xewx$XnJVIXclNTXpU%ZXx?Z6XphmJqCG>4MN33W zMax3VM=L?AM5{wm|g*K12g0_jai*|%|hV~8ZC)zDK6des68=U~1 z6rBp49-Rf96P*uT1YHtc4qXXd16>#02;Cgr2Hg?e4c!Ml5IqDv0zDf2C3-S?26`@f zF?t1hEqW7rJ9-a#Kl(8GIQk6w68bv&XY>Q~Q}nOsKhbY7AQ)&E*cgNu|%VuILElc_>Bo-A~CTr2{6epsWBNb*)e%Ag)k*BoA)!J1~1O2QfclPGc@&u48`2Jiq_GsS)UkB2jIk`S?6F+2ys-kY!my&SVzFLf zWnkrDm0(q2HDa}4bz{B9`hYcwwScvTwT*R%b%u3?^&1<+M#ILzCdQ`3ro(2%=EfGn zmcV|1t%9wMZHR4wZHw)K?S&nP9f}==9gCfWoq?T?U4~tQ-Gu!HyBB*1dklLPdj)$F zdmsA*`y2KR4v2%q!NDQMp~RubVZ-6U5yp|iQNU5d(Zw;rvBq)4amVq)d5jZ*6N8h8 zla7;zQ;JiA(}dH3(~C2NGmbNdvx>8gbBJ?}bB%M03&X|4CBP-erNw2z<;E4lmBf|D zRm0WAHNmyUb;R|+^~Vjtjl_+`O~TE>EyS(Bt;cP}?Z$nN`w@2rcNupRcOUl@_X_t9 z9uyA)j{uJxj~0&wj|Wc}PYO=~PXkXM&kWBN&jrsLF9`1`UNl}JUOHYrUKw63UJG6q z-g~@JylK2;yiL3VyfeIOyjy%YJ{CR^J|#W_K07`?z8Jn7z6!n$zA?Tvz7xJDejt7r z{&V~U{51SL{4)Gn{1*If{P*}D@n`W@@VD`g@GtOx5f1h@pG1T+LJ1l$C|1kwab z1X=`!1eOF21Rewd1Yrcv2;vFS2=WNZ2gT}5ONR-5K0g#5NZ$_5Lyu06S@=n6NVB#BaA0ZBg`i(C#)xIBYaCZL^wgXNVq|` zPk2UnO?XFyB*G;kC88x_CE_I#C6XgjCDJ7_BeErOCGsN*A&Mf3CrTsABPu7VCu%3^ zB^oB0B3dHaB040xB>F`R5@Qe(5K|H}5OWd>5=#*)5^E6~6I&BI6MGW}6Gsro5vLO8 z5|f*SOPWHOM_NwWK>CKXk93rDmUNADm-LkM2N^(yPDVgRNybRVO(sGnOQuSu zM`l6hK;}vIh%ACEjx3cdkF0{Mk*tI4J=qx9JlO`>0oeuF4LOt?i=2d?k}a9#KS4#8ISC6i`%BG*NU@3{gx{EK_`@IH9X44`~U8B3W;nNL|s*+kh*IYc={xk9-^c}n>M1)?xf#3&jR8%h8r zg;GZ8qRdeaC~wqb)H75fDhpMDszbG-`cY%31=J?$2=yKHmkN!FfC@#$Ld8cVL8VBg zLuE!~Pvu1wOch0yNR>rZLRC-ohN_=xoNAG3o9dYAiW;ECpeClKp=PHRq?V>urPimm zqIRbCqYk5vp-!dFr>>%IrhZF3LOn~pPJKZAmHH12l7@f=MZ-eFPa{dAOru9*LE}W@ zOA|`-f+mF~pQe(gndU9c2bx)$Pc(-#-)R2QqR|r4Qq!{03ew8Zs?i$ITGP7H2GEAn zzNF2dEvBubeM9@6c7k@9c8B(i_7@$D4wsICj){(!PJ&K}PM6Mt&WX;K?g?EiT^d~> zT@76uT_4>z-4fkrx>LHJ^e}o{dJ1|bdR}@-dS!Y&dMkPtdVl(-^e^c%=!@y=={x8L z=%?sc>G$a`>HjdGF%UA)Ft9TSF~~7!FqkmdF?caNW{74;X2@r#VrXS}$1ujQ$ncrr zjNum}oDq)^#mLGiz$nA0&S=DF%jn4%%=nx!nK6&Cim{dP9pf0|65|fz8RHETf{B2M znu(1`h)Iq~lgX6HfytXGlqrTOjj4#Kj;VubkZGD}o#}w-8`B*#CNn8B12Ye^1hX=; zKC?Bm8}lRPXUs{=dCXPJt;~JQW`zF{3? zoo4;Sdc=Co24TZxqhw=c6J(QP(_}Mab7J#j3ulXG%Vw)!Yi4`LHqN%pw#RnK_Lm)# zos6B4osV6bU5(wC-JactJ&Zk$J(InRy@~xT`$zUA_FeW%_P-n$9HbnK9DE$o9O@h< z91a}598WpoIkGv*Ihr}%ag1}UaO`t@;{-WzI4L<iMN2aj<=I{ zgm-~=hxd~Ajt`rUf{&F?m`{OEkMAL$CtoOE9A6e+1z#)Qd%kJD4Zah;8-6r?5`IR0 zetubgEq)7rSN>rB7yRk`rTk6&@AxP9*ZIHj{}ez75D72{@CnEWXbM;exC#UbL<^(~ zlnOKn^a)G~tP30q{1QY8k_a*i3JA&xY71Hkx(kK~#tLQ$RtUBU4hYT)ZV8?X-U?v} zQ3$aKi3lkP83@@4`3i*#y%Ne7suSuK8Wma=IuN=Nh6xi2(+Tqm%Lr=;TL`-eKNgM^ z&J?Z?ZWA69o)g{{z7W0>!4aVn;S`Y&Q57)}aS{m>c`lMBQYz9c(l0VCvMF*Vax01@ zN-4@NDkiETYAos~8X)>iG*z@jv`MsIbXs&%^i1?t3`>ksj6+OZOjXQ8%t`E#ShQHW zSeaO>*nrrq*tXcEI3SKIP9x4OE+wuhZXxa_9wHtmo+Dl@-XZ=$d`bL3{8|DbK`g-} zAt<3Bp)X-4;VTg-kt|Ux@miu!Vp?KT;#}gdB#tDtB$uR=q^6{Wq`PFOh4Ws~v5b>UkW7qBmQ0mQhs+0=6`3QM zU$W@3LXtwULbJkqg*k;? zg)2pbBB>&)qL`wZqPe2GVwhs0Vxi(|#eT(E#T~`(N^m7oB~~RdB{d~;C3mGTrB_Nt zN=-`dmFARom9CYM%4EuH$`Z;N%9hHW%Hhh%$|cIJ%0tSF%7@CoR4`OfDqJcuDmp4Q zDt;=@R5Da5RXSBZs;sM=s@$pKsnV+os4A)&sXD7ZR(+|OuiBv6r#h>;qk5%=P$N@g zSCdfFRI^s|QHxYdQ>##Wqc*Cxrgo}!r;eviuP&&rq;8__q8_52pkAonq&}d&pnjnK zO9Mj#rNONstD&c1uMwybqmiRgr_rl1t?^moyCy=DT$4jnN>f|YM$=F8xn`zjwPugz zq~@09S1p(psTP}-gqEh3wU)2eGp!7*YOQXq39U`7ui7we5^XkZ32iOyhuXf{&$TnP zYqWc`C$+b=zv&=!$aFY#q;zz2Y;^*3Ug+fL)a$&{nbq0V`Js!hi_+!MmD4rQbtkD=b;y_m!em$*P%D2x1o2b57Q^nXVaI|*Veby z573X%&(&|x@7JH#KhVE1z&4;Y5HL_OFg0*DcxsShP;Ss+FlMk}@YN7*NM^`kC~c@~ z=wKLR_|mYzu*q=9aM|$K@UIbp5tEUqk-Cw!k+0Enqimx(qjyGgM*BuL#@NQR#)8Jm z#^%PJ#*xP9#?{6>#?!_-#y?CjOsGxxOcYH_Ox#VvO;SxNO}b1bO+K4knWCFgnev({ zn3|ZnnLag5HLW!5GMzO2YTnh#Z5es#ThZg=8F&23iuPp{GmMu;!K}%vwHcKf> zT}ubc$CinfC6?`$W0sqi->lHAP*%KF3Rb389#)Z78CEq`@2uvm4y^uI<5@FVi&<+~ z+gd-eera7~-D*8*{mJ_4L&QVMhdd7z9-2J#co_LG<6-T?cMs589L1bJ)w;8``_tKebP{ud#n;KW~3z|JQ-gfz3hMLEpjIAq%h!>uEMBa5Syqn@LaW0+%#W2NI;$63ci$6F@?CsrpZCw(VprzcLSPSsAm zPV-JjPIt~k&g{-I&W6se&f(4(&b7|{&Wp|`E)W+|7cLih7ZVpxmuD{7E{!fjE^96q zt_W9@E5ECXtEH=-YpiRbYn$sw*Dcp;H!L@LH&Hh&H+#3oZb@zxZar?ZZijAv-HF`U z-DTa4+}+(H-Lu>q+y~uP-7h>49w-k14^pFV9+Mus9ygx&o-CeHp8B4y zp5dMup7ovso-3XgUI;Igmw=b5*F&#BuXwLguTHONuYIpuZ$fW&Z&`0+Zx8Qh-Z|b) z-Xq={-rs#Nedv8eeYAZXeL{UweQJFAe3pF9d||$nzWlx_zSh2hz6ri%zFodEzK6bd zek6XJe)4{1em;INeuaMReiMGXemDO3{;d8o{zm>D{?Gh#{hR$q{kQyo1mFZP2S^1N z1h@r624n}k4j2j82)GW!4rC0J2-FL74U7oP3TzA<3ET+0dW7|e@sY$My+^K(A|7Qu zdi`kR(Z-|eAnYKfAju$uAh)2%pq!wlpwXbMpr66G!7Rbj!A8NJ!Ow&9gIj~ggLi^| zKPG(4{`kRTv&TMhk?sz=?_%H+rAr0XPQ4X;V2@FXLsR-!}SqwP~g@;mw3WaKh zI)sLWria#t4u!6Veh96U8T%PXeAKJSl(D z`(*LS*;B+*>Zc-4wVygYefl)>>FcK-o^Cz;6^ig1j08j%_CI^sjbcEqnpf=KpA`AG9f|H$~r^2pxE#mMt0WE5?bSd?y*YgANJ zZd7a3MATl?-)E%Hc%P{}vw8OTS?aU8XM@i^J-dF6`<(T;+;g+%zRzDiFMIy>`Qr2Q zXtZd$Xz^(MX!q#n(FM_OqNk&eUO-+@z7Tw&`NHW%_>1fp%`e7Y?7p~-A&udUQH`;U z35iLMX^0t#*^0S|C5+{aRf@Ha4T?>Ut&JUw-H81WhZn~lCm&}S7Z~>{t~&00+NFCV-#e;M#H@nzM^_b=C8Ud7|Yv&KJ&H;)g9e-&R9|2}>_{we`Cfi2-df<;1L zLQ+C?!a%~Ogdd6ci5!UviB^e0i7AP7iNlFoi8rqZUva%ser5A25s##f`Sc3#~k zktXpasV6xkJx$6Yp^yG`=*AG{>}vwA{4zwCS|tba*;#xhGK?w#^a3ijMo_-GxjopOv+55Or1=(%;?PG%V zlwX@aoc}rhwt&1qut2B4t>8sLNkMPHYQa?@ej#U}N}*lh)56@s_QKi1vm*2&rXsl_ zi=v>Sw4&EVV?_tW&|;cm@nWN5-{QpLn&RQ&?c&=K@)DsE-4c(I*pl*+{*q56zend9;`&y1u&R(uuZdd-aJh!}~e7^jm z0;__pLb1Z8;z>nLMSI0u#d#%WC2OTZ<-^Lb%IwPa%Gt{ED$FX@DupVWs<5h@s`je6 zs`F~BYPM>{YTN23)w$Ij)$`StH8?fwHOe*iHQ_b+HC;7JHQ#FSYPo9FYMpAMYKv;$ z)~?q6s3WT5t<$V?t$R^dR@Yy*QTMx^tX`;IuimRZzP`GCxPGSrXrO8kZ!m7~Z%Aoq zY#47iYD6?LG|DzwHHI{1HMTX*HD0{Ne$D<`<+a1>$k&Ch-@aab{iBJviN8sw$)hQ* zsj6wHX{Q-zrf!yKHf;`UPHS#zo@zd6!DwM=QEaho32!NA>26tRxo#zDMK+~Lp>)luB>uH#e3?@sbg(N3dI|IU=o*PWA{r(Kv`Y+cG-j$O~X zO1k>GHoI=SDZ9nHO}YcS)4N-`XSy$XaC*3U)O%ceVtOiihI)41Lf+E8m3eFVHuP=o z+s?PkZ?Aiadj)#+dVP9d^)~cQ^d7&%c*pim`JLmt=kLniy??je2lUbON%vXwh4kh0 zb@nay{pcs|7wp&X_w7&af89UTfA${xJ?DG%_pa|_-&egKdA~mZA7C7iAFv&W7$_R( z8`vE9J4iJsIcPo@GMF>iIk-IdV~BJ}c*t-lU?^>oEQ>@379W*YK<1hT)0f z(-Eu@&Jpzyw~@G!nvv0wqYr2wSU)I#aQYDaq2j~PhrLnwDC4NYsQqZvXzA#{=;x1+ zkMtkqKH7YY_*ne0@8i}OFh)BjJ7zuhbgXdf-Pq>X-8jv-%(&I~lktM_-tmp`zZ29G z(i2t_PbLZ`dM7p}{!Y?N%1l~MKAkL_d^fo{c{fEnB|G(SDtxMFs()&G8l0w^elTr2 z9XVYxJutm91D#=zM0Y>ssqx>&ffQ>+|bZpGZE5elq`k6colW1(w9U57rOjVk6kC#8R$EWEinj)~_O=n* ztlMha?%N65joUNZ-#!z67Wr)Y`SItx&%K|wb|5>9J4!pwJ8?U8JCi#Xy9B#}yGFY~ zyE(f(yBmAp9>bpEp3`3JUhUq*-o-w_zTm#me(-+o{@eY{1IPj6fzpA?!OMgCgXx2> zheU@Who*-ihXsdyhdW2`Bi19eBafq3N6km`M?b!hf06uR^(Ep<*_YujN5`1Q+{e1d ze#aTdoyY6Pe^2O66iysZVo&N$rcS<|5}k^inw^H77M%{9?wz5Xahz$L`JAPly*XPw zyFI5pmp^wrk3FwDpF00~L3|;4VSe%CqWEIy;_wpllKWEk(*H8+viox5EBKZ1tIAim zuZdrqzAk+I`Hk|M%s1O_&%afF8~=9ko$$NxceC$d-;2Kwem}gzyyCgiy9&I@zIuDL zbq%{_xmLgSx=y)nzh1e%{XzFb;fM2&_#dx-%>DTBlk%tZPuri-KWlzY{=ED}{7dYY z<*$fe<-bOMo!sEv2;P|7gx(b04Bj06#`?|s+u(Q5@4VlAzjyzj{o(wh^C#d>_Mf+Z zwr}CLY`2=XzPA~-UAG&5A%9u^s{i%+oA$Tk@A@5Z$8@K9=W&;E*M7HlclU33CHGkX z(0@_^N|yk@AQS*JCIBEi2LPCz?(+yN?$+*4?$HnkBm$0xL?Y4A(J-)xu(2>PvB(Js zafzrXXsD?uP$*hPZWda4P6iZ;RfLU`mrqbokcLG}N|axcTR@QiA15F>Iyx3678y1+ z89yD0?tXvdzgX`20DQFjBk?^bNDn~pK`1_WH+Y|x00Pka1M`2S_59O~``*A2Fc5;g zS8Cw_AQTGTpA91KgNMTZmG1zB!SM+YgmiqmL~_Y9^!)lZDM(@xL*Iy5QU*aIpVYKc z;RkxfP0js`LI$?}=`8|L+wux_kr(&=$p2~RzWiG||DqrSih$j#gz!NCgg_8za47uW z^&kWvdO^o0r<*(jBOoNQ@rfwb(@$yYr{~{(5IOt#lHqO@z=GaqVBkaX?~^2M_wb43 z@bU2R!T(*vc$0g^q%J*EEXV3&(AWUjAAIKgBQ@ej)pg+aiJ~Tbi(K@G*+|CclcTYx zjACV5zO+9$dpAE(aJNgy*w@#^OmetxmxPbs&O6P(OFQ0CV@SR1X*n{yUT1YXEUI}l zDL7*^*F~D*z2c17lY<=ptXw|(1`GX>e} zlrSd$!Ru&M@O@58?74GB^;5wP)MmWM%ZX{^J65Hv89W*OP8< zXYT;QT1JQWuC76w98oSi@kd}0eq?a!gn>oP7a68Cb$NZsHte?bZbp5T0I8XFlQG|r z4@er{)q{wuW;i^W%dirTucIyaZB5t6p1CqdxM=r)n=!RN z*uN=s`*G_h+v;@#^W7(5*yhU{>tZirMtr7Fb}1bS>->Bt&u7;JXO`QOuYZR&cUgVB z5!USH7W1}?rI3>vL~++vj2mhO2Yj9g3Ty5%c_swwTPe-1zf#Xq`5qk{*%}iiX5IX4 z{nUW7wtL)jUXQ$}QxVf-zvtj4uXSrH@q%cv*6=!~M3p;4$t~+}j2z{!@k}u9u?0Hg z?a!T2s}ihdYfM3%Xw{A88g3pZ=_y?Zoo1E~X7V|x3vH~3JfPcC*s{2$E`L5mcg2Ni z4_ZaeP)gQ6`{&g;+&LMEU9g~S-!i+#7C^>Uir?C^TNwPKz_of!$P_U@74*h(g3~aX z!Bp+WhBi~SZ}uc|Ad%`=DQ;79%(;b2`r|s=nNYeB<+u9e#nHD_5%cx=6%Tl=#*@qP zeD(z?+UZ)3OUUY{Y5WZ>NEt#pfI{K}AcFKHJ#9G8a+=D{Mi~s$) z69ekoMt!o(SrExCJw1e;_J4(7xPRwWH(AMJP7Q=<;&72MO^GqgIFmD(2F57L zKNL{z^}}4FF0N{QNPv{|L4|GGHw1RS{o&$9gI-ZtQc)qOLEPGy+(HicCpuD3lFhDP z?iy27s3*YR&k4;Yww;xgR=pYHG-y_>KMj3M6OKN+|3+%~z#luCtQ6ayQ zNZ1!tEj6`0H`i)Sjy#0YZbBsTOO(~CgqD$7vZ5>z`i3UQ_ASdU&Q-h7KK9j>KKL1) zyZ#yj7Ef!`Tc+NzH9N^Hd?b15uN3H)F^l=BqC6cp@<@@xB|@M}JX%x%$$vtle6A~g z2Y9)6^?JX#RvP{>Dpu<}ZMNSU@7uR9co5NdZZcLcxnxH7Euf-3PtTOSy4*gkF(y+i z0V}pBqVc8bcVDSLhUGp5qdr9qm2C?KimHwoeAtpWK0G`x)J36DeYbrDyZMBL)K({h z8v@%CCFSo{YKse8)!)JubbzBmVs+}}5o5d{U&$Np9QGTD1R3Yz+Q=FLpPoqB>w^kq zcw|j!$~z}}f5;x!&_a^oy8W+Sl|lxy?TlgOS2$SEDDN;UQ%Qdb9+lyR_1avn4JQL} z;V$z83EB;ksG&MHGG$4E{mZ@)CU;Bk-)-#@Q6A?Vdctk%<{C#ij51A~A2Vv2GvfG| zEH!v}^XX=LcnKqYQqPe6Pl6xE?FqKs0Vi)rMyY1meoJw^?XIS`TUMyhgik$59&MNk z<*=n8l;`AK*U2F$Q?`PyOLI|Zt0VE`Vv>kEx_BwblhBN#P-E?TI@84)^$*&Jiw8DPL+Xzq3Vbt3DCq~v_eB;iEIe;fjzdzZv#~-*4H#@W_ zF(>va{X5aug{Fpt{Oa;%0wh9o$7H83V#vI(I7LYV%`q9#kB;0= z&iLZZ2#p#FHDlXrn>p$-Id(HQb}ox#HCH>hv_lKk-u~6gi0X#El1Bd%vi|qU#o7jU zq2QdH@IlDin&?7`)}5e>@vo9Cd2EhdYt=gis>esRiTV94V&8;HMDUYPs$1U5(lxp6 ztY41ZiRQmQQ28R^z=o43wf&NyHPfy~q)-b}jH!JaPE|op*H|fBvm#-sNF|#7jg&sX=P8FRvF2Dn@NRXLR{@gcOBB4mcYUl2rv92ED)pH+ea6 z3lP}#{oML`m8p0+)}xMcHC3557`2;z$~1EBBh7ADlAT_usY`I|IBQDfS>7117{~5f zoMoR8C@50}E3iwZ`uO2PKlR1i;;e;QNxmfxbkC%j`B~#dvonIZQKz`%1R{Q^%Mb5Q z-Tegjx|%l_T}1cm=t?`ydo{?Fm)CTyiE*Md85F`VuGE7ipwSYS&udz(R+b8lT;`nf zzBoHKEUu;bs>*wp*CYzO=t9rA7&xcBu#yXIThJRb)b=gSDL}=T-}a(DIB2e{IZU+}@d&qg{u;EXn!xc{RXF|h$Mn7W<2E@tD*q*M z(Zk)Xk1r-?DBsz|_M7}}<>@e(v1F~{4!lvR{lxfHUPPfpVn&*qeg2OW9RBGUwSoJ!l%W>-^>hCsj9tKr#jrL!`>N4wrKhkCswD`Ri`IZ zyJanQIMJ>113P&*FzTzkvI^XH@a zaSk-vrZS{52szEFj3<>nrMqm`)bMMH?r=rnU^tzBi0KXO9Q)oC($-a{<I* zaV0U~pO47=+Y+I{<;4flX1)LmyRcb}rwGU3;|4DW!(IkeQ&SbX!5OJZFU0VKC{qUx zP$2q2)AZXPSCu*Pi~U>dHoUIl@25Ee0u-p91JM;xc?4qN-k})bmRx5Ylp$`_3Cyo^#2wmefpby&7M1=q0PYbi+#t-=L!?G zyi{vKoqH|lDzjmvV0geI8|KSmI}OX)$a9aH+KiNfZB-!+(+zplgx^YHu(KEjeyh;~ zYQ@hR@??xYr<~u-d|psXf**FyO*u3UQ@*t?eeV8K z$tQ@aooQ$8ezKj!%k`eJqOLhz-5CSD#W}~-eFYcRY>thC58paN6YX*-<^8=yQQFj) z0yV$ZMr&Q#1N}VQgfmt&O?B@-M_}=a%bG`XsKSq2CmdS$=H=JIK@w95&+AC<8Os~% zs;hDe@RL1D=NjLeY5E%@I@Op+{`V>_v7mcj)h3{8`)#4an#!~btx{C$z*5zN%Sn` z6<<|1fBlS}oM(2jc(4Q5us~^@q6H0e_d7EpYV%)cJ*g_IiYr0hG%H+OcVFZ8HBL1c z1ab}pf1 z6K?oNRPoh&Ci!ek`=xG_IW70rod?LZ29Da~n7Z1P+Zz(hrRp=-%^yypl&Kk_pV}T* zbm}aU4RLu0?kka#ccnMX_jz0J2E|`|95z2qx0YHf%Zc;A-|!?Pm1c-;>%XBI3m4l8 z`JE=9w_a~ByTMw&K(H`paZIsHj=#XDml}x-35b@Ee2uQTVeyW?=hs&cmR>V9Tl+Rr zGcvo7Pn6b7@)W53Jd#Ll0$d2`N@GG>W9(ObVdlBmvGE-pat5Z3tqtmSBek4$VcQ*C z*Zb%G3gHTUVHLJ~v5gmEvk(e&im`~%?SWW>{r*RBD{#p)eU+acg7q1^{M6*S^)t{9 z-Lk_1L&66m$%Su34t=aV{B)$dIMPvRK6%o`sjb6v=Yig&icAh%VG^#aUu>!(HtLdk zq$;oR`)zrAD7)z!-mGy8dJkA*wGr|s2?ysain_Y%@n$-6dkN?5yr69iG)qou-qsuW z#CU2*vHtrR=kr;-X(6EmJ50G@DdtF@w1m!etr0`38C_lLs*|tn`nm@EOKn9>dEZ~4 zF1Tk;yw7wDJ=mg84LvJbENaWj-KaQ@eu$ei6ra-2R3kzsX9NV2^qRwchLnt{rke@+j`KpfvVt8Pe5MJLS4x^{8;>alVT9c=`;~ zC^ZrUG*$(sMD9po8N7F*SY|8`A$cgMwBI%ns3ji}$d~xJi-SAA;8@->j_UiBc)_{4 zN+R=){uFe>3^-?5udc4EZ}X7Kpb&Kw^#4xG>E8g~$StIN%ktD^MEA#~CC;CvkAxa| zuVWJZ{=&c@@TNjuUA-gu^`g+*QZ5ELo6#vv&A#7ht$gYVHxzL>rk@CH zawLUGrDi%tll&tJ7~Y}%av5q={PD!@6dPLWVq%9|{k%eh1WHTM(q~u0-=3lNLch6! zRBO{r_ygvPQ`7=+Nu+aawKbPS7NsViXT`-UgKRgyb^ii24o%GEFJ$agKAUqY2P9`E z%Q->2$J0X4f&;>lIC;x@^A_iWllc;Q>4^Wf6Q#dksmT-|PpBVD@$0#oIIJ02w|)?UHxtTT78+>-R3LRi(N&I7Rdm zk3AxhO#wGERK3k!FbVB5xSis6W<|OC9(|vPc7#gX(d(e&?do?YvMter`)BRqHQhI2 z%}2x>=K*|y`KOpbd2)PKd+0?VuleES!5}K^cy;Weq+wkZ1?CP5B&a`Xn3w(V>VAe7 z{Z7hrrDt~Z%d#jbjyuw2Qt{B>!Y1BF8`l@L!(y2wBd0!p+NllyqADTSScX+r6Kv1# z<@?!Nh1*jUnpiGu5%22d&~;E#Tu~n&QNyt4vPY+BC1k1{n9@t3G@5 z+E>Ba5}1sRB|?JV$Wg`*Xz#ZneKB)-BMbJFZq$nDqP0!y(q~e{9m-GvRLA9b3AiyO ziD;%+8g2}B@+QOah=@L*cjlkQ#fmFL@V)u&fHt&vdQIhdMwDG9FX@B-%X{@fRdHo) zMuBPR0+VF!hXRzG+iPXMbvfEZMgRY^Eyl-}(tq3468`4<$}{Ja51*tahW+}T5~6hD z8Y}X1QxmIWW-L${C+w$@bM_R11t)tYUvf|9H^+wkGec03^Y@Q|?(Z%63P`792FaFl zz0jGz9}Y$SwpqI@l->cOjoLEZ>=XDB?1G1r4yL-!o6TFF{uV4=OUzFu(3LjQ82U}w z<`~V7P`TN~xeUot=5@%>ZslEiDsw{5jh&xu>x%D)2Y)PXH-&3mE@<+_HO!OI_m8@` zkS~lS27CV~BQd2vnUSuOPD$Up80j8}=!fdJ3}Su9_=I;-_4cINp#pOrz7EO?`O0MUE;1HiPK0d|& z;uhC`t43@&;#@CWJxJV^kfgvT;`#)^|-6_uhd#ka2YF#-H6|_)N9U&_~{?ZK@CLKcAJb5|X+34)2!o@%v z)%X01cuY)qObpt8g~-sYc^w5j`n&m8xb9}!c7Ba$*7>&xaJf*3@1f>6Y|( zPIk6k38qSy^%ATL7bMSiyugZ7Qc8|@Vv*jXTiHjmuiWTairZG1CO@R6IuN4@eq=-1 z)EMZ8b;FTcFg4~?DkN)gwnm%qsU&M4MXujd^~2U<8sA^7riwH7>CTJx(=fq?B$178 zNfeUWoeXMP#6HGGc520>9>kps#xbYoNlFJQc09wfbbN`UVs>iz=XH~u;)kMlbX;an^0o>th!X;xT54+-=8KzHo5Zn8Oa>Q|9~~`6Wjm9|?;DC6%EYxScAwLu&=EVhQ>1tMe5% z4dt->@fY>y#Z5l3#r9tw()B?HVn6Jh-M)-K)l|4F-gXV$Qn%j$vqOJn>xjc%-blIM z0c9`$M3}H%i9T(Xe5Rl@s35DL0Q^X<{iZ`!c4f+c7lJ>2J`EF5cW8gva@I}sSm=1N7jPom9^2@sUpOnuKmR0b zQf8BAlHVs)ne}0B-S5mIrj{_)VBAokLI%_Mtku6o_C~@pVSPM(GQ-kKT+9E33x)D} zN%S7cen~-1_UzmQYZgMic-(u6A!^-c)R_K-i{3(}nTv$db>h)0vG z6+ennm8sd|i)$1}tu~z>_Evdu7gxqHzh64co|Vw=5NmKuS${HqX&6(cSTf>bcpi{v zOrd7B>T<+tF+BL$iZR!`3>o3+4Um1<+uSIt>g{?gzUl|KRA+slshxMB&9Fm-8U18` zrg-X_ptUM~J*R7^FU=yUT|D7uUDh-)iOY~Yl8L+8b?|nCt~!HVfJ)O!b1w z#{b>M(gCRLdTxdSiOkNYO;2OKS?heuJbhZER}{r_&2vfZlKGqT=PMy`)++ux!1fNn z-_QP+nSKe{|1bFe$ap|ok|WXfF|LBnXQ{50f2Mz_`q!DwHIDD?yYHA^TuLh=Rm%gj zc3eUd1;P<(zoPQqdEG(|dhURZGn((SPt)p_gkv+RUyjS4t@)O9uN8IZjJ++-@7hUK z^(_942IG#UrjPw9A?l`{C^h!YGGZ;EuyT1!vCM+(cP`rx+vNJdH!_J7ID9G1=3?G) zQl-rn^!`NS4ITzU9fNH>KYP+j@W35`s@w0t1|)cJKT(ug++1LBuQ^@Enk(#ks*^%Qd1pWE1ugy{wHw3NY+ZeQW%rd;iYE(( z{?+hlFG06x8O^Qko1!hOy0kWtv9Kt2ckJSn$kvSYhZU8%kIiAPAUY!eKLVF-Lr-v1 z?2nnTyOYe=)$fG&8FO9*yotS3()iqhI*hlUV@y6l!XAg5Yl><=CBUvb=cX%DeCLq_TmL&H z+mlaec>Z2*xu|~4)o!GgN)yUFOAwx1-oMQ!-7&CT`u5yuM(SYVDX;do#Qc!AXQ`z| zjejd8e|)nx5=Y}o&jk(D9OK-ccNMq!@=f}cx!K@2k37MpJHr_NKiav@peD3!9Ynx$ zk$^}O5|9pJ=%FK^gcbog5J3|}q=wJ~0tP`)Q9-&TQjc^(Gg74rp-S%{kkBDW?=?J* zckaA-f8P83?%ZGdn>}mxo>{Zj{?=N1%|hM?j1xQ9oIi==o~b%_=mIH7%gj{#C=TaH zGg>lNG%p5W5qwc`hLZ{{QoAB}B6|oWLw#BK*yx`|&PNk{@;m5!KBC%wM$|o$mKxrS zmD;yz+~?!R)g+ZW7f%5pWTR`kW^0MPrvUou_&{>>K6p0tKO6r~_3?b_UltI!1Wayp z8U)pY7YK)l-+>)}eV0u+EyO78pHJHnZVcp(8|Q5fMNNAGz)MCXD(7{ar9)f_x(S)k ziXTp%WtaU{sDiwfepJ8wBH8sfa zovEb~i~L<(9tbH&x`&mRYLwxlh-`>1htx>lanr7U$F495-voWqlg9y3>X4)ST9 zH1Lzw;PnS;u-y}Czv~v0Rq{3ng(j-MgIiUSvZKC#UBzilt$8@THhu>@rFlZUq`>9aKbq&@qR`W-=;l)DdXp^j3 zWhnV$URZ2=$};fU6PF4M&%(`VpDOtCg!}U;FW4^Jl*;lo@&%lnIQ@DC&c84gJqO z)mmm(=uH$_Kq_APzF;DHsnjJR99{}CcejybW%%4E*Hj=q z%S;SOin7P*P2?osm^E6#^#lFf`}2b>@5-gt0Q(|W2VgcxYjYMKj&~)!a1mndO$U54 z0PVbrDgGslKyWn8Jq-WK+~Fu0i99dgq%_s>_LHwV;Mw@ast{@lCX4yKD14+fvpr>4 zK+^J?t(4ZTN|PVT;Hv6hK*)pA9Y3S!4_E>R<_TxDRIDNTi6oO#IF7J3;b z{?|QqTSxgBK?raXuy+c0d}l?HyasDw=!?qoy7=cul?B7=o|uhp_-hhzRrIm2nVedT z`u3}*VW)sM4~oEtw`xhjjYa>%dtlf!ZYhK{bBfhZyv-k;^ApCxTI9@ENp+Z$bMFl! z7OfJ|4jJVu8oN=g4(0uoVhzpV0kez`hgkyR4dj-bzxRRk0tl+E!${a>sP<3G%EBe_ zH(wF$(ibvgGox@nt=p=>EvW?AIvC7Dx$-{5QEp7eOZJM5=`AQ~P{E?k*nVI&q`Ub% zR<80jNl(YQ?F4TF#VG{EQM|Iqr)q$us1U^p$&x#^I)LnZEDJ ze}$5P!aREgKSih!PF}oFCk)SH?@foyII%l@7Q`6nj?Z8`bmSpjeJ{0N_WM0!g@ZANwdCV7&)ji}352e3+w$vOxswg|32-R4HNr#fQ8x6;08b;p0cq^MJ|PZK5aV;@}pm3NdF~t7;84n0|V9 zv30Jy_u2%zqEmb9sJWZ!aHqZ~q1xid{+w-?Aw@X-a;=c}&@*2}r?7a^M}EvZE6mtU zNm6bSPNXEWSwGlnu5ibctW{kgFBW`$vR^?V+0U%oIS=PT#V@KuQIWBms*Rd>mh*IP z1uR2a=Q9onPkS6Iw#JSu6_%E|RI!#9K6V90H76Zzd0UKqCJ;i;Du&Q?P$|)(jgR#w z21Q@HZoyfG&s+8BA0VCYfpJ7$fB%^rAK|Gj3~st7q=vYS;QA0aBIa;iaf4^irxX~+ zSZ3LXYPisc>W$Gey_7T)zKapnDgR=wrgCjB8k^)0_?(s3nyN06^l;CMKCVs|yX^d@ zDLN;*6sCK1+~WI)$wnhjN$B`9y20<8Q*D8;M+phjha(Q?0Nj1vJ&+oN1rst=KkDwS z20&~Ij`XM3!!TbBVNluk1vtr&ORX-M0UENJ^o!*ot3PUV;iWK+Uam~~Is?BEkFzj; z<8MZc-jEu+|GR)0NLBkf%oX1a{w2V`NEy-!Km>g*FPUAXQWGUX{;USUgi#@)(&L8a zB&nZ59<@S2%S9bkc8Bv?D@5^*D%;-x@~6~rQlpw*hw;FP;->vVy8$B-2kQ_0`sLW`W#?eo1D)BaI0WB**^0vavoc1i7M8n|~kEnm&4kAe=nMdcr&Wp^J3 z+Pw6C9FNiN?m0N?){Iz(gh~!YwvlCP5gIP105Ky-2|-S=vlyw@=0%0Ri^S^ef!^*j z>}~hi3{GUx7*gN3#LAe=u6PF7R1<^WW9$VFj7p9E%)c zs_s-g8!J^6nWVdpDQ4a6Ugw8H4{nUwuq?6)frZ`*LD2=|&?r%BOlkmD}RBAjpiPmJZAq_XL8&$s%u_aDD1vrv^pKSQ* z$Z4NdH2N67ys&%ijLE!%Za>BzaRxVjgP5EG?1~rbl`W?} z%~ne0mk~6r6UGdIg}4gd@qGrZn>K09KeAs0i6$q`NjZJWFdrHm(%5p)loP>q-REu( zGIMtDkNOAm?54`3yqZ#6a1ACsJ51aqN@66yp@7byfI422truy9{bea(Z$HMI--Ur3 zL2w^#C0pmd&2|>RM28-z>z6j#RtZXo$3i#kj`JRd`=)!1P3h%J>?C|6ai4jnL3ihF z?5aG!0J$bg;2m@1E!~}MF8uvI_+Mu^eG1-Bv>5h;##XcX^9wZ^ell zOyplclmJuP!iVAJ#g>8+0?r0Ati1Y#KRuh7SSvERl9%haleId?XND;%x`s^ffgXjGK8{ zJ*2?`k;!e2olK2aS3Y*=-!GzZbzUyXd$LE1-)O&bpipeL-JZQ+b1Z$N)P!92oi2+b z)bxdYn7+58%rx;b1146Pje+`*W33g85uKSc$hS#xrt+3K5i;*|b=fC<{s`$2lE`Ax S#)HoZG5&ijuU~7Oj{X;tcIO)a literal 0 HcmV?d00001