
    ":h+             	          d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZmZm	Z	 ddl
mZ ddlmZmZmZmZmZmZ dZdZdZdZd	Zg d
dgddgddgddgddgddgddgddgddgddgddgd d!gd"d#gd$d%gd&d'gd(d)gd*d+gd,d-gd.d/gd0d1gd2d3gd4d5gd6d7gd8d9gd:d;gd<d=gd>d?gd@dAgdBdCgdDdEgdFdGgdHdIgdJdKgdLdMgdNdOgdPdQgdRdSgdTdUgdVdWgdXdYgdZd[gd\d]gd^d_gd`dagdbdcgdddegdfdggdhdigdjdkgdldmgdndogdpdqgdrdsgdtdugdvdwgdxdygdzd{gd|d}gd~dgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgd dgddgddgddgdd	gd
dgddgddgddgddgddgddgddgddgddgddgd d!gd"d#gd$d%gd&d'gd(d)gd*d+gd,d-gd.d/gd0d1gd2d3gd4d5gd6d7gd8d9gd:d;gd<d=gd>d?gd@dAgdBdCgdDdEgdFdGgdHdIgdJdKgdLdMgdNdOgdPdQgdRdSgdTdUgdVdWgdXdYgdZd[gd\d]gd^d_gd`dagdbdcgdddegdfdggdhdigdjdkgdldmgdndogdpdqgdrdsgdtdugdvdwgdxdygdzd{gd|d}gd~dgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgdĐdgdƐdgdȐdgdʐdgd̐dgdΐdgdАdgdҐdgdԐdgd֐dgdؐdgdڐdgdܐdgdސdgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgd dgddgddgddgdd	gd
dgddgddgddgddgddgddgddgddgddgddgd d!gd"d#gd$d%gd&d'gd(d)gd*d+gd,d-gd.d/gd0d1gd2d3gd4d5gd6d7gd8d9gd:d;gd<d=gd>d?gd@dAgdBdCgdDdEgdFdGgdHdIgdJdKgdLdMgdNdOgdPdQgdRdSgdTdUgdVdWgdXdYgdZd[gd\d]gd^d_gd`dagdbdcgdddegdfdggdhdigdjdkgdldmgdndogdpdqgdrdsgdtdugdvdwgdxdygdzd{gd|d}gd~dgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgdĐdgdƐdgdȐdgdʐdgd̐dgdΐdgdАdgdҐdgdԐdgd֐dgdؐdgdڐdgdܐdgdސdgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgd dgddgddgddgdd	gd
dgddgddgddgddgddgddgddgddgddgddgd d!gd"d#gd$d%gd&d'gd(d)gd*d+gd,d-gd.d/gd0d1gd2d3gd4d5gd6d7gd8d9gd:d;gd<d=gd>d?gd@dAgdBdCgdDdEgdFdGgdHdIgdJdKgdLdMgdNdOgdPdQgdRdSgdTdUgdVdWgdXdYgdZd[gd\d]gd^d_gd`dagdbdcgdddegdfdggdhdigdjdkgdldmgdndogdpdqgdrdsgdtdugdvdwgdxdygdzd{gd|d}gd~dgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgdĐdgdƐdgdȐdgdʐdgd̐dgdΐdgdАdgdҐdgdԐdgd֐dgdؐdgdڐdgdܐdgdސdgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgZ ej2                   ej4                  ed            Zedk(  sJ ej9                         Zed k(  sJ dez  ecxk  rek  sJ  J ed    Zed    eed   z
  fZed   Z ed
dgk(  sJ e ddgk(  sJ ee!e!f   Z" G d de#      Z$de!de!fdZ%de!fdZ&de!defdZ'de!de!fd	Z(d
e!de!fdZ)dde!de!dee!   de!fdZ*dde!de!dee!   de"fdZ+de!dededefdZ,d
e!de!de-fdZ.de!de-fdZ/de!de!de!fdZ0de!de!fdZ1de!defdZ2y(      N)OptionalTupleUnion   )
generate_k   )ECPointdiv_moddiv_ceilec_add	ec_doubleec_multl                                 l   9ro&\"9iM`EQo5rPaH{	
l   /M[	5s!#\r@      l   h!y(5sRD5q>3pp ,0jql   & \tl
1NSTt64_xl   O/vk#f~VGijg72fa
l   \m0 C2:WF4)b}@r{4V l   {d/E0*	TeSyWciyr>4l   V<Q;vLM^w 9>PD!->@x+l   v4I$&`rm
x{G<?h=Eg y$C9 l   L)]z%~5(YvNq	;GHl   ,TVsd qYvb~2%fi: T8hl   @gGAGf12oo}FY2*xqHE){	l   {0U O)]W<Bu2/|s3l   &j/x`Ng
yV3`|/?)6El   tv}<=h@<:aWmk=9A=;l   kZH_&PE5@81	([l   bL3p|{h:3 ?|clN0$V.]XZ8#l   /33JyO8`2(n4rp"23|vK l   [''%G?#0'%`	%GYp]}YU48ml   #G?_@O606bj9
ov:C{o\l   uyW<Y2SwK|-[zF-16o~$l   :{_kQ-[!H{\GUGFdQ@l   &>#GDntGA?Qc+r$!FgSl   /Y4TE	ZLxU)	1vzl   Ti}u#2W>K/mQkg-*SpKl   }!7/Mg&B	0o,jM
~e l   /]9s'@-9BV1lUC9&AfO[l   -_6_#SSJi)ij0/D'T:8dZ%bl   #GR:m:/ElgnvG~Q8l    hd`0?c.}CXX9m7l   OKhS*$DJ6=7$ ,5Pa>jHl   Js$[bu i)x ,O,l   X >hW-wJh/*r|	f]L
_C l   y;'(TK4& ;avGNql5sl   WIBV:v+i%"@w $w\	mNqR^l   /O	*Z.3Zr<:eoQ3tBMZ.fl   C/bK"ZNt_F.A{i\h+dl   N'>ix>8/j:hZ<FfYbl   af!01srD;
9;6\!8>/GPl   S5'2@In-CzQuA
k	 l   r=nX#tSc%uU$Yn`aAl   L*Fj:?OLR[238>$MU2l   ~<
bi>#JS/_
rAYIhk_[Cl   h;3icxxc>R?<s(8+Q l   $lpMFNlT_.KNaA*-27:\E l   sU%Lf"-^yy_'%)\Jmp0l   wYt]F9sd=
<g28^`m qD<^l   O/#v=d<':A}N2bW-V6g9l   Qe1,
R_{%O`v+;'%W+"$ @l   ,3]sn.c?_'gF.)^dc< l   JD()'V!a^k$dYmo*s~l   E7'dY	FFwbO7>X{Bh?l   vXvA}GDrB)/nc$TWbtPSl    7gv`tGHa9dK~K)l   I5-?FHkVP+l5o+!qSl   7ilOk[QS3g;e1z`w"=7l   s4o1S4f2,
~d
f;-}Bl   Co89elUAT!RaRBMWl   q	he)=.>cl%4Tl   X9eLB<Ca(jz8-)p]l   s~DeTE[DabKVWyAA[{Tg(l   |Oo6~_lXk{Cen`hbT_M l   3Y^p %143%#s%bD
Nl+|W*l   &T9e%#yWM7u@OUFy
Cl   :L^+G.FWD#]qB?#S#LkECKl   Y%HQ\][1bBkB5Z{/Zul   .(jy:bnI'"K{Y992_us~l   S+_<ENr-.yD?^j(G8/l   k7}~cE>*E,)kh8T(VQE`Z``Al   7u)K/FY6X}dZ/m3'Fl   PS6_$4aVWZ||G9Zl   @%E }wRe t+t2|P^[$l   t?DN9(K8H)sPKP1CMvw l   ?ZnhG^  kx zD&|~8ol   [a)B?UP64#4wtgS+icDl   ?CSOyVP_DPk*N%!9 l   ]@g%w+}"6RwTvo4l   9L>'d=^t?$~=z}'xrl   s.7<
81%y-~C^pp'~w\ql   1$}'#{Ah-T!*
JA'3,"cbHgl   <F>I5hJc7hy=Hdl   Epg+2vF^Ri*U8i79F l   >R^MsXzR'(,	[_t
\Pl   oW4_\.nUUPKS})#Z:l   _IXkDRsrVgE`7/)t@"l   c|
 P0
pun!,~xG{%Vl   Er:iM	[xi/<xXIl   ^g+m	/>mP0)mlDW6Wl   ?Y*E^uA?BNf-[~mv<wl   \v!2u2RS?qX`	by^Nh@l   V!n%^TBp9"d
 /
ql   !;G,;>W[YB=o2Y:Pz&g6l   x-x(w>yhIU|?l)/o^-1*fl   N
 k]KN^Y693Wm>J']1b@l   m&Bd93@BaXRn_%z (M_fll   Oo)gD,$2a^Vl   R1bAn7@@F}.]F@D}}l   _sAh.hy/{	F7>grA.Hl   {T'V[NS8X&?}7GmT'Xfyl   ed]Mu>Hwwa68coi<0L
l   o;!=nMvc^k;	sul   *9Lc28 +/t|h](b4 ,vM5s6l   2z'zwQY##O5,&~Q$W@l   sc#2^*.&c$4aOnjX*l   ^< }y]TwoJ-8`
"l   imlQ'/M!bJMv0'J%~G8ZOKUj)7Kl   9_7uo&^j(h*^ aK[>5\l   u&"#=ay.$5[YCf0- l   U7_~m#M,je%Z>h6zQl   .yqo[VOM^@ -Sp-<Y^K.l   6TqA7w` ]^SzHLY
Q9Nkl   8kb9eFRP}IBW/vv:@l   Ev
_2e5;9A,0m@3Nfel   [EP!a)kaXN	h,EKu_X,pWl   Pp?eeW*Z?enMhl1o~Fl   }^Cx!2	_}$$B?u2V\wl   Kw*Yp3*W'm%y1% wl   )egT:=bwC8(e 	Hf	 l   )LI=?dwd:\JXWhpl   	DOQ}RU/j-g%ZU5v^ O2!l   '9o-&6IO<h
T'C9vrl   muTFl`0F_jq`'o/xGV'"?pl   %.b$|ZBuBx0 3^8Nl   w1-tuE,LnH`_	
]@h~>l   .[~:]t 5.iG{u>@NTOhKKl   !_d?~dbF&<VsWW7&J'xnkm$l   9WN1A19cH97UsYIUM}SNel    b{X2x&9T"[P[3r>[dTl   p>f
*p-m#)FH5>I l   s'2Z|$)#n|>V:;+
r+P==sl   I7%lb &.ug%~aomn;es]l   e9Nv,	= A$z88,DLbQaF4 l   8j="
TseNHu3OP6|6l?s=%l   /
l[~fvEcDbJ~%RjuOl   1H?kShSAn#b3+T
]nCe|nl   MK+0y=yu\MK_=v#E}dBVl   /`:<m/EQ{_'r3XueUHl   yhS**meg({b*C@>5{'Z[4,EuF)l   BQ-cDBT$_
(oj$KTK*Q8l?l   +'<CsfhW9wBG*l   v6](&7
`? iNt[8	Cp+(e	l   @bT!y0tD(ch[vT|WjkQl   Xq]N;9TSFUA)S.r	5{nl   YfdWV
5j(w	`,rtu l   ncq>Ous-G4RJoR/W4[Z@]%l   R`@Ahy~F>9xm&@l   9sKg$)&HPrW[VSVUD]1l   !;L-I)eSBVPp,{ +?Q\@l   ?BedBC%)e&ctU[J&P6!@Qh^l   <EjT7	cDhQ+{uLH/t1l   Gaw#e8.$o/:ED2lN\Ul   Jl}RorvRJ+grj%$wK%S /^!9l   +Nr67.(W{kwj"m.R]N 6Nl   OIGkEex}s*'D^"FXX}%QfJ3l   ]7jwl?/\8Uin7,Rl   e0dJmp]R@=V1:Z3.?l   1/XZw<|RNik#0N$!Ll   |5vg$yneR>R&@:^y l   TwV=8[x/l0n^G~k^OSgzHl   J0[xK<P#$cR2Tel   ,V^0 *j82"RV2l    rn'<:GH5]AIQ:m7oI2(l   uKs.q6V1|_D*\R\_ekl   9 3;NDrZ1 YV9rFiHfqF/l   	c_t\GdA-M}|n&D;QzM=9jl   bQg0;rSZB^PFk7uiN1Lkl   Dp!6_ot<Hg|4Hd&,F7nal   mbb
YjoH"Lg3"	A_YT1l   bl['[,EC=o<tK&X[4aazl   '~\"vE9VC=gU~nB+^Ml   t*sAXE|%W?,+A|V  l   GJ5ztcJ]qX2X:"Ecu0,8l   !@kZq8=O/tP;AGs39`l   TJ<bc
2= _2.kz#`HA l   ilw"Y;h0:R"] d|5*fl   TxV})kB^:~d$k~1l   x.JP,||)_&d$2]TYsl   oAs=-(DXp5LKY-S3*l   shaj	$i1Gix+w2~x7S"7Z! l   O4=3mx Pd\>MLV{' Kl   E\g&C7mZJ
)iw9 +^E&H|l   w	SaHi7lg]Sh7i'E>K\< l   aAS8YV4~dlbuC7*{l   fz]zOEecHX/N<pl   yBY{	4yaVv3.GHUIkvwn{l   }E-5s9]vGH~35HtXN+-rB=Al   kH(Ckt=Ff*Tp93^W`f8l   dX%"@kQKr'_<Pf hj`l   r\ShozVI;z)lPE;dl   yEol<w2_#;5UNhwfv%@l   /KL;%S!Lue_l   "%	x^yk{(i.)J|6Bi2#l   Rv:q- y<Y]Qe([->l   7se&j4}!s %$=b4xz^'Zul   YW#_<C|8Gm<-
DQbmEl   v!Y=[T6-5.Vhn%d<<\l   _(0y89t\7:3hlz.\QPl   lV5<2fUKN$c;# a&&ul   &,PHW)=9UN'q:Gb]OTXnnl   $c^,fEPD)	|@js|2`Ll   	t`AafV@;*0II_Tlml   #C'H5$e[o67ANXD>*h|D2X l   QB6 
Py6
?xB \piG@` l   &&B4YlYh%+4\CX}zf~"Dl   NZFN[#98050m!&Fw)l   ,+| Emc3esjP4;D}!71 x l   _mOMKK8F/6w:,^}m3fmH l   $N= yHS/m<
r7% l   7h5a|M*YAF3csHBd2l   #bMJTuF-~RXTT@+l`8X&fKxl   -G%5# R&7>#Z
`sPchl   +.NCP{[Tyot=&"[e?:l   X4g.)!hJ@"?Eo"ejwE5nl   O
|d9\,{MEwS4}
Q6l   7\ru;$.Kga]'Q'"-jl   QFo1lGhm!')uM^l   mpid,RpI%a3=yQ3y?LnQ&L}l   Z"~	(Luiw '	d@. aaEB l   8tmD[W
YpCp
~ hvAl   x/_CL 90zy`-Af =l   Mse~VWMk^;$f5SPoi-{)Jl   s0Ktd 4hDHC=%+XXUQl   (yI,>(6:-b17UD$_r|tsl   _J6&wEgo.gf{ U)RSl   bS8&.]Q>)tZ=TO6 l   .?.ZA:%MCw}GWLIU;t_l   =Z
v`
K,aZ&$ZsO<{)2yl   "KtCa,iHgb60UM Gk<^l   M$>35j)!{,|)B5@l   k{h YFN_~FY{33%:BDy#zl   b*$!6IV:F\28tc#4l   BO7U( O4|I3HzdQ!~e	cl   ev>l[B<`N>#eC'c"dq@C;l   7$q7*t|N!+a$NiVU
}.#._l   F
:n-\3YYK-x!1IV=bY|\|l   Wdc5
}xJb%3=rte$Nhgx3l   o_'#NP^OV'S{5!)gNN1=l   jx=@E$UQ1QCmE/ ^MNl   <6Q9IP\'c	(Mo?2r4^i? l   PgWhjJ5$#%#/rg}I IDd==wwl   /kk.lP=}~c35/X$ul   Ri`uOmE8J>zVZn.}V?m9<3 "D^bl   <u
%{&]Jq^4^J5+d`rbhBS&72 l   R\85W(b:D	\}]0b; ,
z l   2Vt<=\$Y."egIT:l   ';Ku:rxl|v&4	v$Rfrl   .9 3`rL0	 s3'=Qpl   cz15I0y%?5|SN@(;*n|ND+vu l   23Ne||z
xX~r@kw(BH-a7<]`2l   ?!U\>H%`y.Ti.ogR)l   N/1f@>_X?ueYH,e;#	4!eb7l   @tLF|1/9/96>oyl   Js[fNd/`l&4[l4P/&A3Y l    40MtI^$'eU=RgOGU^Il   )K{VO"}+hn1hiV5EIRl   Z*K15@a6@I8W}|l   DsaWZ>tFIo=s	OV/R|r'#tJl   u|=]{|d|F[h WvCs:-D*l   vqNE*Ah(QgwW Z[o6^K/V[BDl   @9g-Oba}9NNvZo&F\hel   ^tx=SSc=+1iFhemGal   _W'qjbajQ8l`[h~l   Me8N'Llx_*f$~s9ur{8Al   bKQ!t q%U_"FUt+%\nfl   L@YL;&$sEfT8,i/=o6"Z4!p.l   QwW`#FW^avuTn@6l   N0:[4PjoCoD6u:QIXl   EbjN!y/&EFedPENQue\H~&l   nA=,HKT2|_	#wdV`p3l   pDjuFC2ss0i*=Y.^)l   '0:}	r/L+-vCY]u AT`wl   u66+<^ 6h1f-D2 	6~m[-jFl   G6+OFq22Z-RsSgv oNIl   Vo4, v% 3S"zq\B	_ l   SM
LF
"|0\dutH+,q-1hiLl   |3_i"r#|L"48)'wSoIl   -^#T U|R<RN>"ezBYwQEl   avwG5nLEw-"_P[RJtl   Rb%77#fh4	6OZhLN
,Gl   m>h`v2s9r`s!jjxG:dl   8:l?(7u!hScb-6$~l   2R~H*EtBp7Zkf,I9l   U Jq>mL;BxI9u$0*x S1 l   C>IFS(#t/SfgoUXcl   Rtvc(4a-7s>BSOgVnl   (k+3mkN50@X#I( J(93-DAl   ^Rp[MriV]6CD9z2/1
5_l   /4-^nlc Q2w7%('EkgN^l   b?qXl`dD-_Kh1w$x
l   .4q:!d<Je*gAB(:OIoyl   yUqW$&%dVjUR`WpT l   n2bmofV9dAGM/[gffil   6kgjO,)nxav)*yBcs l   EefuXjj+.4$&A0L4Bl   -l 8R`O)}uhqj Vl9TJ	l   ;V7nlU):HO*S^y,oz]2>AYl   @LEvuzh;bOWN5]]UR`Rl   %TX[lr(K||t4D#9[l   ^F;92M#o!kQo2&vhuKTJ?l   >8_XY[J'z#J**nmOo].~l   {]Wl$3X!5b.h1$C)^t$HU l    zk[wKRCo4$\
K7PV=v#pl   WUOC}X}cH+kk/Jz/|
J@3(l   {Y'SJSQPc #,/xl   \jggQ4>*y FE7(.3f4SF l   rtV$CLXJri[rlnP-4vXol   ufN	I?HAvtYB*HS (!l   )v<%0MehBs&o"!]14*l   38>cj0|=%-IO&L8%!")TP+l   FcN|!iiVk@7Xy l   anw`OslQbOqCeH}l   P9{
zY-unY@=K8_wv}.l   A96A>$SD|[p7bVcOQ0@#!Wjoal   `"9?13~JkUvu:rp Rx l   !QB><1IOb()zu?q
)gl   =Jd\y:y#\b#tY(W%5 s<<kl   D:Zh\!|GSWu:5?w\'7#ml   >:Sg] 3
@T	i>Si5K~l   f$BRi1Bgd]>KXgQ _z+"bl   @~)d?(EXnV'+U~g1t 0l   odq{7pW
$T]LmJB?Jl   r"ZlZj_3Vr&d?o#ml   }w*RHw#/S	ni}Djl   $~T':+KYsi}`s`1K*Nzl   KP 6 'z>R2OVTsdM#l   e"1!tIp83FRg2x`v5l   r!S'q?23MkR	mU:\N2.6i$l   0De5dN2-W>H56;xj>[al   V~#.lk=(UbG_e' l   00E3dSpM8}3_1Z! l   (Dz>c@05;xoA
#a{!Rgl   tK3CA+(juR;<4zcij:l   r=4*mKd`7ILFp7l   .6WXZf[D	,E&lO%*e^q:zic4l   k URzv J9Rr47R 4-JsCcl   k,yK#5r(-/vInh#Qi"Ml   z$ZTPAhw8 cL	+l   N=iRm#z_HXnr"5cB\kRl   ]@oa'lix(1aIL`Wf)fSl   b]NMz!Ru)UZk'lbR>l   *)rUg])h@& Jigl   }|;3&bVEa%1LunP{Lp
l   AGCR4VUK"\}Ht3U+{l   t.7`I%`4mo%Zv89A8|M>bl   W&(/4TZ;O=N(e>8>@Zl   lc0L 6oxrat$;?v_WeKl   1ksVa >/(r!8RW9_C5l   'E)a,LRS0ATf
^{wl   4r\&%DO}5)Jt6&/ful   !e !D\5Jyn[q\a[uU?+ l   ]/@Ll<\86adU cG>kq,8l   .5&+p':&6:I-l   +|jGtD$0[eZ^hwMl   nIyo`Q|Lx(8#/,-2326l   fIDe2V! 9R~i[ra\3*A l   t+<^x0l[P_Fr79!el   *Zxh0],%
M~	u0h8dc l   Q
:O7{g"JY.<:*:tB["[l   >[Sjnu<'SpS2*us9X,l   LR:-hckITF=(V4%=ml   E9%[_N+KxGr!&Eol   pL
<b3v*&.Z85? l   tzVF~HlM# {I{:g<{	al   $8"hTGJ%G~w+oKn.>W l   e;FnYq--lm:r8rV0	X+ l   YJq{-p~[?\3/:3iZb)l   }[*?(IP6jBI'| kgMl   %Z`aqEJ=[S<"MuKd7MI#Ql   O\r-Q|?kyy)`b2o3QL\[o5 l   bcwnu2Fgm(#1Ii2W}CCl   v6(Oth;H 1 tlV l   W^(2O-
#{a\z=,1]HJ[cl   *L6i.]*eG!GV}K)2<l   U\A-Vd
c(N@HXS:@Tq)|/l   L2|V{/n{Be2y@"7CxXV"l   B-"WM7&.+Y^*lx
 l   dG\j\SEtS}o4E;iDx]6l   TPak3UW9IpC<>'~o0S*_l   A{=0@b0X1doM:A%n[ l   yzUF}YdWK
a}b2gys"Ia#+l   <oV\Ul("K):E-\5l   	*r&3I~7MkXSIB8G+uH/l   2;/9w/T	WJiP({-zL^/j<l.l   UK"
^-YFr=8g@	ZY-zl   +tToQA"HHc# Ptm:|>"0RLAsl   y>??}QY5urV4 l   c/Q,	!";ON1UUb.31l   YI5"-@khoP8L;Bzp  l   3[$5jG\T5+PJ~UOWq,1	=1l   \+A{^vj>!)-=0U}^'l   rj4iziFbj7-{o<.y~l   V^acig`?(D	pG._l   H(	bqs/Z-wl;[eO'' l   \05Q4P#a5: 'NKXX l   _>)\t<@O2oJGbCXt}xM\l   <<c+oYMdE9'Xp~XxJl   {RcTF&[zwm|E2u(j?	~*l   #	r7'X[)izOO18l   8iNku?1UM&F8QR(fj}l   
.PTk>i=lW%f"^,FWa#a:{~|D l   >87	=ot8x5+JMmjTe/tl   AlkusEiK2?r\Jk@A}{Xl   v1u:BG^Hl7:F`M]M'Mbl   o + 5A+*n"Ia%dNSl   ;$|<JD ':(][ut,nY7|)d+l   or)cf(v%;R(Os #SBDx><H7wXl   Bh&L@6$_fZ;68].(Y%l   	5)lo%/BjF+}|8 	 l   GZ0PA0M3r@V.]W}m/`4y/l   WJY,75Onp{k2Uoxn!> l   	-)15zECNnl\"}k^xKqOl   XXF%oNWa/T?\xl   22>P-7aO:sK(J{>Clo#aG$l   C +1bMYH<8_ Q_&R+w`l   sJ Cs^ruu,8euyn,Zl   4!=?~XV:g{_Ci wj	 l   blk
svM:P:,Y6m)+`#{:I'5 l   JUGz(3>?IrqQq,8HTe&]Cl   rziTxILu\8r:96#Q[ al   C5	zX `Us& [$)J5O4d]%l   4NhBsy }(!gJq6H"v"@7
l   v_;Xf!mob~I5[@d:Q:7;l   $1:RNv	j^d	.O
@ml   bhlhlOffAV?wb<Yisl   K5`7=r1F|Ip7P	.0'N6 l   *p3Q$eHc'ze,-cB(o?%pgt$Fl   cE,VFt8a' c)f <GT]* l   
qNiHsfM17>HqJb\Qx_}_i l   ,yc}22N]3UI?EQgUl   Ps^>dov*O{[	DO.|l   Aes?.;o+
aNVXL\LPel   oz?AT,-*VNX6::7T4# 
G l   i0MX\O$l%g
}F6jp 0l   J- Kr{7*-i#p&an< ;Xy_~l   W6#moHOp^$]xJO]REu l   _a&K+ig	%:.>.@#{zG>9l   2mn#>CB'O0^oZ:(8l   	G}Z>Y~5r&Kmi@"}@m$Al   UhG%8f6A-o]U?D_;l   ob2roo
50`Rz_^$Ol   3zax0|'@N'e3<l.@?gTl   u)&k)%K&/>>H$0MIkyio`gl   k)(Y Yt*e@p@XW)k)),D4by<xl   xz[hZmtp ;>*6d)3a/l   (_) "lcQ^y.,ai l   #2P+AGl/*aDaQ &(?==l   GVIqJp2B=4'pa_H,uZ5
 l   8w8_'?Tq\Ujn={l2!rul   zSM*ps0rhSS5ZfVcA, l   jsm~A
U(
,tbdY4\sl   Qznk1(xBo_m|/mK7NhYl   U?,2~!*E_57A/y1M00[eol   G?h	ZQ { ,(V
\GTqDl   M^/a9R"S7H9u12cl4/?Tel   IBHh6/ig<z6RaaZE)OC~?1l   .f|yItX('N^qx{2-Fl   1vCP	#stkU?F-f[{B)_l   (@1Xq#7f	wKW(6de,q)1l   	=8Y~`G nR|yk<Y0P?Vl   !gci
}M #R1Z{VRzA. l   IfMfOfo+4R@h_JDiI5)tyl   =;1zHWC4XHc\J+j8DRc}l   #w8u&R~~MB;G\!9zcpm l   `lzl.^ib>*'#Z~j-ol?[l   <{CTl9;J>+pwlvJ3c_jR3l   tUa/W/(ub,t9V7x5kEj[l   F6t@oxUv?$r1/1t=tTTtZ-l   eNB2Fpbj5ohg+drf6>(Y,l   D:PTT5,`riR;lW	q ~
)l   z pSMc93@+f;zW|]gvl   Z{(%,Q9u(E0X3N|xkr2l   LE
`MpsYpe!P]|W@";Bl   f4c|l{@0Rh_|DW\G;7-l   7p?0hs*5V(?"Q	zl   a	}h-$E12b(c`+
e21 l   ;u3vBFXG#9~!Aos(UAR l   (wZND0O iv|45=!2pl   @:^q?2U`+lseieFk=qVp`yUvkl   )m&z;e9bXnEtCLrH|F"l   p=`~1zy(X	Sa-6wA*gl   +~L+|XS`
'@dcT25-/
Ll   Zs".2BvGmi+0C4$+@Fl   E.<FsUZ 8AM85e^tl   	?FvH<."Qt
@0'A8of{g l   --'fN__6aQ:G@L,<&<[tl   F\~d<b\6Z[!N9~jIl   TeCGUCc5L`70+:el   iIF"ht_'g4_`Zf\
Bwl   31unQKGyF]GP^%y+micy*o3rl   2Rp|5yg.WL;{;#{}}!aY^]9 l   +-,urD,v?~60;D>"92L>l   \ySj5Z `[2yht@p4O}"$` l   Cw_D120m#cPp4$FNT4=, l   (&#pm/!l>RlZw;`Q"!wml   )1:3T%O#l?Lmw8=2qI~IxXl   F|5&;3VqH.<+l"l   a"\8h!)\`MAq(_=])Un"l   `d.nq:t,?QvJIcEl   #z)uL=sEyw]'UEN)rl   ":oa3d?4h6_U*ofr5	B?'l   =,U	*=L-_u	:`0{J'QJtV l   jkxX;q-c.<:n5 g7&l   x#uL4=Kw03+YYm3]y+l   M5SGE;DOJ~V|8<9L2l   XJ_#_EN%krr[cW\j"q7gPl   K;#8>j?Sm:M2x4g7^)l   M#+%f
Z5Cn[xp]EW>c	 *rrl   u.Nj_@&!jyq+LJ!Wl   v!b(Hk{r|*72l   AXa-Q|Ia*3^wen6?a/ l   iZzKU=a1Hc@Km]HdGQY`&l   !d|@gfb_[8t.p=@ l   ac{-s@  Jxu7_g	Ih7O4=}l   
jPiH&~)R
VN*@XX[(kGGl   F i@smuhZ]YA+F0NVj0o_Pl   ZXV]6_G4w -C,w9CCkYRl   oLfa8@J8GZN-}<ODZjV)l   tZkr"3($9l~[^6F31 l   m\~B}[Y"q_-^t?lRe/U]l   8Wk[<yE3qbIn@[T-|^rYl   Z1pFspyt5	lRre{xl   VV/q]$- %y0Z
C0l   :O!vu05}tTw+CVf-p3cJjvl   c\.Lp`vY/(&`N .#l   8i*{p11tR	ihKp=!++l    YU~WYeJ2	)0vyf73l?s!l   y^~oCFkenIb~!saKq}
%/Kl   EZ0e)wZ sQ+v g_dm9Yhcel   HV'70qIa5;'(.=X73l   %l;PkPUB6)2P4i"cl   ^dh|D0l:U[kTVU}[AI l   OI1UM/U[=7IN#%i!Z.F`l   rj1nkgX,L/.2y^m1GcTpl   b_ah5RcUqOw?%tAb^l   lUQ=$c&6;Z%EH+2uaw6;wl   yZkJCC}&I6%)ucILwl   tH<iv! fRu,!CCn#LeXOl   Q]g~}-&*=]<=S`:l   &,che`|x^K-%^;#-vAl   Ym|xL)[8^@~z+,Ol   $;h[R4aedI?Z|w>+%TJl   PAsv*MqF,AmW8}oXc12l   zDgqiB$
IAz7*|h_a 
Dt l   uQzvnz]%vm^(~.<VHel   C.O,:nI4nZ5R(2Gg6l   g=Eu|GA0>aJdhuB\3@o"`Zl   MY YYB|"3sc/`Grs_bDl   g?)s"U%}kh,@026S&w`G=l   l}[&/G8T Y?$ss!O	Bl   2~`PG~qh<40w2o#"5sPl   [-H
r|Oe~FH{hEW>9_l   'xgezJQ(rI0q)_VZnW$l   PddB[KVk5_a~OmG/!a\)l   j|uVTa4=o6Jl   <_Q'(c3-"A;:%ikl   HBs~c0#}NM6*0mB~l   -en@1Qtp2N%l   VrUcR;iN(xKw.[n7/Pl   oP|v:f|L.a=iaZDhE\mJI l   [>5 +jIUr'
YFmoSSl   ?TE5a|/
}o'g>p`m
Nmk`Al   Y
qq:GJ~~eP(*h_w$02l   	;Zir*y}SZ-FNVl   o2M _Wu(ids76u)lUg6JO|t@Nl   /364*]tKOEYuW1u
G,}l   li=Y\^,zQ,\`R+	
Xl    vC]<3gOQ,Ft
)yj(l   V_Kpbpk@?lXdHT5l   q'Z0]8}i}S \e|[I? l   )L*{!61BJC7wXx Yl   kt,cd`/FnN[>B9zqFXS>#l   IZ~ipR=2dJ*pr.vNk[-Q@w;ll   "A&:i[
l8(4x{>~`k&5l   z"2]>| 58z&=zNvl   @^/@8zM@l2FCf8[%l   t!1z?cpX-6'2}3:2wYKCl   B+<M;T\V><7(x#*%wCY&l   La'-.-iGpd.n!|l   nHhK&Cx}*rg3U62G4Q0l   { enIarQr14DidPl   7.~}9ekEDe-U$y$l   _&j1Q;IWH,/FX>nCWP:l   L/F)B|~U:N/Q&K!brOl   LQ	S,.jgbIIxZWw
)>l   =+LZ&,6&|1{l}@#'5
l   8>^LH{^o#n]v\3D.XL^? l   *<cWA;G;DCndP)OCOz<P\l   oMV<\P._pOnev>"^WB3=>_l   A	s%QcX@-%~5W l   qW6*RQ7R;Dq	l&y	hiTSoCTl   
&cWk#;y+vLwp\!LNxcAl   @(61k8lGByt5Uy,p: 9rvl   <BBE<|FWN]L?d`
xHl   w:`pv+xf,iS[3:Dl   Dsxu|lP9h	*^52)l   a"p<Ri&AXb:=[@R{:l   oKe-k}{<!fR{D8X6t596l   @0GX"6#<	'2:<LAZl   "YE~rLU-h>H9w| oRL1d l   *.({`^%H$q.2AaYl   \'Nex#C	
,Sl&j%d
"pc!l   Bm<3#0K>1<r/XRJX]l   N(CG1 70/T {LfR92'&	Cl   #%:3j7X, |eP=:`@W'?O	l   &EhWQtaY$H\G<
/CE;rh+u! l   /EcbLElo.IbWM3[M.?l   sT,D%[
dsBwvx64m}JOgnyl   88]6m%_9?o
82!l   #W8m'w}G2,f(k_aJ^sQw l   8f/?vmYsx_Gl0evxq|N l   0K\kD(NeE-D{_FI{R_l   mYY"q@
>iC1ek(Il   w1Ve1&`gtnv5Xu<l   ]!bD]}XF40.4Xv}=UW*]l   rAz
?% c*pl>2HV)4l   B`w#5f&EdhChJhSY_'l   0}CEfIB<`Ru.Z <G 8[rFl   P^#+{JCBQlau?9=vVJ|l   +{$My D1-Z4irZ*nT.	l   QX}
SL93b4#1n?/ga/Q[l   N gvm.=DuX5D
UYf l   @58\P~h MD\WF"^IcBjHUgl   Z:=K(N7cdFwXN^.TpljX5l   pP"b |DucP&m>vl   UOj3,/qcJDBuj:!!]tlxl    	pRz48FmEd8>t\\rZ3}Wl   Z Nw%'dD:l=&sKlWlml   k6PI\SFsDC.n*S[l   `&0;'
>$?%1x*sl   \o#42@RhLyQ-^(2bgLl   hedM!#3bGFE4;h hl   cvry&+WuqRSy9x=;MDGfKWl   ;&pJ> fnk&192F:Aq8<$\ l   nVqP:{8`)K@[Q79dkd^sKYl   f8dMKo JDZTyq$9em+@Wl   8~F<}ZG:V5^BYO^''V
l   BG}Id6vi4zia?54pCl   \Lm8F9}~
p@Fq5bd6)l   bErDwd@
!2@<"<@'Ul   ds'u=86[X%{m`Ja-#l   YU-;nI7h6>@yKw^F	ml   x'M(4~uK^jyHe,\m;l   ]51,m2%
],x}%P1OjD	l   )nj<8
b-2k>UTMdz>)> l   c9w'fk<Spr+L!j4el   G<V4%p9&^k1.\?j	O?(l   =c${"2]H-#"6^n={Wz]lV4`l   ;(~_Mkv`8>4M8	k`pZl   .0U^=!PXOC&cxC;B~t6l   VQQ:$%@OYD*Q=l(u0+_	l   h!iA<1S
][wVokl   ]w"*iU)1xC|b\xExu}W?l   BHU'/Ryt~{0@v^L'aqnEB_l   sc3OR3Z89Wy@x	Rdbl   5mVVH#(aj8.s8`XCl   mnTdP3)M'AqiDtX<906l   -u5%gB`RAao+M6&$)L2 l   0Z]'2DD:Kqr>EhV^l   
uwTG^f3:Sl)@,
N)El   Bg7 ;p#V,.`*M5d${+txl   Fy"nCu<1`V~A2\(r1epl   kXWfEbc>XcrzOh
, %l\l   M[B6"khVbe{n@[\q"l   3|V 3i4y
uJ:d}hi,B_+l   bM:Klv	Dkz"{U-gIV?^Tcl   ziXR*=8{bX.@c*TIl   \-0X3)S)WQ+)h-r]2_TV l   yX~<q1YhH2B2h a]%&{fkl   >Ro^fQJRz|`:;GeWdl   L7/y:m#R_TSs]:Oe~l   4,.hFL%80a]k0rZ+Zl   y#d9XZ(z:7A+44}r!l   P+ZWzzj#H-/2`+ttP]~>9ftl   Vf9qP27MV!63-xUe2l   #Q33^h#-xYQ+xxx{E'l   lVS>C&7@8Lhw _y$
{5wgl   
(+!Ht/@H-yl;}H>0l   3xaIM:<N1TBmtPfl   4hPFh\CFm6C/eJsql   Kf0RAJ01A=1Z2o:6@s	Ol   T9Rj<\&51fG%5F 93;g l   zdp.ed(e\sJGU)K"gl   ksF3`i{s)X~B&r:o0l   d,%_q#$OhQ-5;/9 to l   @\U)vD!=\@aF{1o;}e]~l   -_"1Nt*l%O)}c#\ij+!E!'l    n9H_z)""mNx\IZA3!l   A?zZX<OeUE(3H'4#kb1'k((l   a9e=T6.?%#`pIn:3^{2{;$IZAl   mX;q2vEv3@Z@1u$0`cTejRl   ~a A/t>=)o)>|8w6KiOKl   e\^TKbPe
ECvS&\5W.b>@U7l   og!\sRNSJoPM"{d^l   IeO!xSVykHX]9	Hqi{~V8Vl   s%<J$&}
h<h!"$/R,Ql   w6:LO4]
C_t5}E\ll   A^[~92W4s]B4(Dxl   ^hS T\Er% E^hcn*rF"N- l   4#KNd"%#2GoT8);ie cyl   try\S ]?b8$\6)NU!1l   ##5dYE{z5qq}!l<u,Y,n;gl   -|r>*1^ DP9owVO79l   _/65=W"Ld(:"MQ
}@u l   gOEwjqvR>|AFU#_Tdjl   ^+7OoV|1?cee\,g[A/l   fEjuQSh]e@n,jjv+K'tOl   Y##Hk&tgT08ACiP=0"m`oq`l   NYY,{_r(T#/:5HE4Xj<l   ${P#*fdX"GX@{? j05l   1UgtA(j^gZ !yo~9ol   [f;hRox) @mN!P-o"M%?"Ol   ?R<Ly
>JD'O0:S% &H$B/nl   =Y](\qfccl6-":,7bl   9^Z_9}?k|A=S&Zk*^kl   :izqj74J	qhA64D(!l   .:LZZ8k$:.J	E:X	`<'l    l|bsy&iyF uRG},mOr?l   @c\AZ}$Y>}wL
J&xw0#ZOl   l|:6+Itt$;du6W0cDEOB"l   pi<}%7DH2'>\,!hZ l   CX=1|ky=h7eA#('b }l   u7~D	uDU@nP7Se,$Zcrl   q//LR KR\]D~2f	s J?l   n.d$n^Jc/RViX'G/u9jNl   c
PEAV\_V
WbF|\l   g[XF<_y4g!5fH*&iiov_-= l   xk@X+5.&c$V.H0.l   YTtbO_'n>XXl|rPNp`z l   /V<k/2!(NUZ3%_4dvm*XeVl   #TDM0_x?Y
^-]u(Tpw~l   QYMsI/N|13$=1X{U0-l   !s s%>reg?28TDKJV{" l   6M-VK){^fxV*cYt'K:(}WIl   <*Xc@ykm%=O#LHE3	Fl   94"+[G\x'9mdIaF?'Pi!8l   MZOJ3`*H-J"&U+*G\^p?6l   @"({r6zG(
3q@B;Iq] rl   ,@*osau_8M@&*P/]8Dl   Kwjg-gbig!wNX_' l   Y$b,F.~iQs1}M9\Ozt:@l   )M=N*hf'w{!X<+P	eTC#6ol   H@9_ik=}_ ^qsxrOnl:k:I^ l    R5 (e?PBlEP#K%9~~8&l   N%dYrx8[JV55b^coHrl   _nbQ`>G"~RGi\kQH`F}el   	Z:,o|Y@YwkG|y9Ql   o%C/S]>rzRuPvt-l{t
6l   yx:WpE~Aiv%lq	"4}l   jzLcAds`I]tk>g(=FLK	T)8 l   $8!RjX]C?"&7(A~]c\D%@l   l$xPHh \e6GXGnku{
8gt.w7l   *a 98s k ._i@s.Ds+QOl   "{"5+,o{Ef CIl   %qpHR p@G
mMeG07B(
l   uZZqP7Cf6^wCeU/*l   $\~|3o[d2}	X9=zH0|ul   \%ks'Wm#YY5\n'ri[16l   `>8]-*a	~+o	$8!j_{Vl   =t`s	92Y h9
LEq&u-AUl   YITSO$Q7)}AQ(;O/#jF gNal   1;;/j*B;G}gdniT/){l   Jp_ U]VmX.PW	/_4W_utJ&l   5"h_S,7<X(H@dwFbCl   MHUc.Cb}q$ob KOl   kMDSppJ"{Z|c9gq}n[.XPl   L2*pQ1R
:ahSI*~5%QEOl   rJ^`|<KtCorra]qwe6ml   YS[[StOFMJI}H0!C\l   sFr:GIh5,hIz<\8l   5z
W	g^<wuSVHXFLu^?l   RF
=T<M8HL,5fFSCHCV/gl   
?x'u3ohftLmlI<)Cj	l   p0GT6!i	"-\;+1axj{D@
l   =c
;=]qjs;ugerf;ml   7f'p?|N Y{[r'Wv9<NCl   !F) gy 4Z<}l0)<3(Nl   jeh%qexA<Cl| [D&e.-vG$l   ."Kki?:(	9B&oH6/;%?Wl   |	B4/J0.-V$(QV9Bsl   FgrpRh0%\-NpDs~d+3 l   kiprfQxcK'WwMbnOl   "'l-pKA7+7,xk+sH/) HUl   Q=1;j
KP4[G/)n.OSY| l   V:"4c0 q-,:")#jl   Hug c<K E/PXS_Ta2jl   M}/v.wK2UBFM\r.=kk-=l   %_:Id6kcj?x&>@ l   g|{
!Vk'w{6geq./yk{l   %RFfd:	,?ivDEjwpI#l   .AmO> YDtOKR&\"i(l]l   7%o DjDy''>t'^7Ka]il   NYxN*"%C:*,$!)V#; l   e*|,?v
wz3. =_5l   4E\UsG3ckQ
W9}~Yql   +$w
6=f'Q$C6p=B0TG4:jKl   p#y'fqM<rkqQIY.2pl   EH( YS<~1#Z=#u[)l   i5SBSWiS<f|_	X	U!_t:l   s9'*,s>]UGv	\E=X|gl   )WZiDF#;@+V7aWxQP%Il   pJ=)$ 8Be\&Jhj$?l   Ae$M<MyTjzkf_hR<]^dl   v`Y:Q0S~{:B|l   n<do'E'S:HqzA@LN.H~nGll   s{s;}|_+- -)Z:$/vl   sXlz/K)0B[R_'xX l   `vu|/#yT/%/! T,AHl   i)fd6
JS`0Kr\USul   1Zh|dM!"C'~ptB#.98l(]HR\l   Aqbkx_Nk
?v2k1OD(YX"7^+l   db69KvCK=3&g.\
W, l   -lsmJ>y%
n\5M
l"T/glxf/3l   #]Ag&
k;>28 0@7P#`/l   8)}_i
5TeQ
4/l^8ib DC_ l   ??}1G*<O^:&3EceHNl    <
p?y	Pi<U=
"/$E`Z3$bl   ;RTp	SnW
P'~:V{
c%l   ~|+Qowc_LUY,Oz8$KdIl   SFU1XHerIz aCs 2BckGl   v]0iV#;i<XMM:H3ZNa\[*;l   pV'i@akm]@Vvnj@@l   +-U	Q'U&) {&&@^[l   g@q&^"Ls$QDIB<Th! l   |f5)yM!ioJ!Ml   f^-on&_I1UkQba
>l|gl   :K<}4(0ZW8S_+JNGSd l   CJ?Tn*
'/Smr)73l   Lgq[TLg*sRFpvcA2&n3l   {pc?Ij
i};!77T3
J]:l   [is!Z2,M!5'L\I<VZWx1o>l   hbU6o"k)Ll$\FZ-hN~CD l   'Sy|7MM*H(s{"3jw<D$hVl   dWI<m<d3W8%/hJEul   T!e\Y	b%'rqdz S)<BkCwl   'k$]OIYZjp-s&Bm_QZGPl   >gqN L >=*QO'CRxal   47L`	OYux6ai]0pKC
<K}rjl   b]Q
N Wr!$%_^?sn#X$l   f5'ME_n(&3<!F.WR`-7	l   !QWz$g5j5[)SB_HEel   g8/Q@lDBfzD rqeD$Rl   
_+?	?Zk.^	NoEJ~Zl   W-X)=u8* lA[.s8$-l   wA*VJ9U964~I0D9d\r95l   -z2Cg~{~,wAwE&6o}l   =4u:=a		T/yMv~Pb:rl   @1JiA;h-I4M2eEl   <+c\q~+=WHWS,$9G]V\gYl   pMcq'c-;mS#,o&SJwl   46NxHs.a"ngW(5
$9h+l   a2iIN`5,a6esjU< r1W l   pe<(~'L$&#NxU)< ]ZV'c'wl   :gDP>^xx[YK@ND	*x|o^cV;l   adN'S BTL;x{.O5 l   tkzo"v(ZeqSd\:l    \
/WR[_LBQOrl   1-UX_nL4see`GxwRI./l   t >|
 F}s+c!bTE	'+]Ekl   TmqQ-4rVidGM;Nv@L@		l   q$a\e^xB ZKaB1+2~Wl   D[+Z<6fmw gUf(N :3D_ l   6q$FMZ^#ogG_84IY+o`$7Sl   [8+WAkL)D Fm+Y<K l   :{sQ?}\ 
}@`]MPl   sC~e(f5@"p<:XkG+~~ l   O
IE~A%LPO<i}HMEfM"&Ohl   \le5j}htaZ#XN0~`Nl   
@`#sKQ	]yex~.*Hl   1G9X_:xV=Rv&si-d4&=pE4[%l   ^p?O>?"ZL'Rw_{'ukN {W}l   Xs*nd/y*7-|<elg22Pl   P^qjK:-O4IoF@,l26YHLXl   5#%'Ow:bYup|T`"Q{I>Pn\Y l   !l|C1eCHo[E>Am!l   kX<Ep fB[)woTi(>l   5%@;kSI3t?	%K4t<*l   F@r B(?9h0UkNy7z@fl   _GU(/<YK+	Hjwp-*0cl   z];ewY),.y:J}t3m"Hl   ',"DaZrd2xb<I :*eq< l   0W2u8>	NhOzM/I8X6l   D`p2hvuOh Z.F?U}g+:{H@zl   T;kc{PYL=[?mz_.Z-il   {<2
C>l3M+8c_>HXT~PeBhzl   	 `Rb3cbk<~t1*"FR l   |^HH"1v^!ot#;89:f}Wl   NSFjll]~ywMBe3PZ|LZl   st0Q?,1*AFJyRycx@xV</l   Jf?27B:	PKTsoJrbz7%W l   6&>k_ziH>5d@A=Ml   Zj&E>+/@UBJ-2J.~l   iZw]{U?f%  [B*=wl   K	OJ"kECz3PX1$D^$=l   YBJefq#3{JgJM69KuCSl   Dm<,LCoc
w(hm%%Ag*ul   z	QKw.H&Is44O^`OB{Dl   <>_Sjg,NQM+6w*h%&##B_w5l   zhk:QEPi-bP_!i]icfl    &.h%:-
prHm~2	m_la`hq5l   ,QL o:B,J~(c2"#l   tms0|UUY9%2,ElkKHl   2s/<9&*7b_yB1.h	-,
l   r]x^:q&g>VGs~B.L,,*kNXp l   jU5!zrD~&vM6_ tiy-<l   5"_
O{"PL%0u5Ayl   _yc%69pTR[T{)2Ty#l   2Wkfb,eAiSb'FL5`\)l   uyD"Q2Z"JE]e^NUhXzW_LWl   J`DE
jsrb&PQ9iBz`M(Yl   D-FrmuA{A^^ w3S(Bl   eJ	K]^)4/n? Pr?p?}Oul   b#SCn!%{7p=|WfNN5M_Del   dJmOj.!-wz=*b!-VV?, l   -rbzX~Q4EeMNnV4z(Y1v39<al   Oa0p\NMZ@!G\Bi3@BBl   DPKG?|dF-QAA
b9<s?l   At|l'C$`6]"^FP[=&"l   v eo#_X ZCQ=M-	-^bI]ozl   w
f{V9c4p@9oxzzb7|l   u[v3k5Sp)*$[G([l   '}U]aFH4t&fK5sg:Ie'N],l   %Q 30S7)NB` 8;bRG l   o4_F zcW6#*@sqV)?tgl   iRh#iXKV3S* %\A@o4Il   h-L9
P/VWZH=!|x6)l   4ix)<yxZ9aHP7%Y2/CNc l   a\Y(:|>)	=z<9`?5l   '
E0nV=7@;~uy~H,.[ l   "&qB+2<=03eCacWyHNl   _!
OH t@Sp-HpX&[9ial   w
`% JL4t]Tyb?_>$#B@l   %&)FDl6*<~<)uGbdIl   [4~E.,'pXT>Y&}FS8l   LX jW] w!]M9JP2&$l   r)O;TpF.bIj0Q" 7^v=l1: l   9TsMW/g&UpWF<nl   wfTE\R6cHbNj
~%z>g`xNv'( l   '8`q03u)Mw:wimM,u05Pl   29Z{ 4Y,'Ecl   F':BxUIj\vM,(;O%P.(l   yWiU~GIlkO[ImVnz	ai.0#l   ~LH6!h7tKLt-3i[o)OvEMal   CC:._DiDPmG	0B'V+ijMOl   1u6<G`K0df6he}Twd^BWVl   E^CZ:r |W2}1-D6<3{\4l   BR G
~vq Nb,K?`@y0M0" l   0jSCL&G=b:).w1GT h8l   {d&`v1t k'1a&kJ:BO
$l   fSO} w:Nih=~ea(60l   I78/8s${<W8TE!Oh]QFO^!m l   Ku]n.1ypmHSth2&	yl   ebzE-O0b9`2Kj65~hc< l   hVZxizeY7nCR+n_Ly%) l   {vz~{9 2'd=gJ: l   9oM?NByhw,}?7CP^Sl   u[W>:W ;G4@cQUcGlrkl   tW /LdpITh0Z?V$.'gl   (Q NXmR$,m-qtxl   H/"ahw"inf6;@QBNAU)xl   ^<\G4z7')o!I>\Nvg?1'!I8l   Zr{	>0SA\T>Lo(1`&l   =0(qW2~bNS\worqO_>	Pl   :ASd?id9?[	Q~H_m0t%n~}`l   {V5Gs9}
5}!b-	~ <l   "_Ed)+WE2o;TuI,+ail   u{z^mv[a0JhR9,([H3oN_l   *X<OKGzm-.kw< Y;8
l   o#~ )(KJ	;u:$ [IPnil   UqJ k+*1$J 
( Sb2[m80$l   DlSC9G"L1>:"H"0O+ml   vI!~Jx5#H%'\w3OZl   vQ]7bOv(v:p1,K%_q$wA Al   OV~-EilV2YwF=fX~\vl   Czpk~m&CVvy3?{L]bl   Xw?EH:#c|Iy}w!$bmNF&l   C8/pt9xWx]|F-l   vNe2+bz|>	.n:)Wn(`l   ;4
Vg_'`mb	I;r9j?nUg/l   MDSdq@	
-N3v>h0T^|	l   Z^4$NVibC)7	AL}Dz	l   a$$=0JK!nd{SeY%3'Ptol   jB/Ld7,P{4E?^S`0uTl   C5i.1.Bl<C-cf]dd?vIvl   GE	Sxv
JAV=]	R7t&NTpl   f`H};g8e"P`C5ijz1 l   qtK:ii(wSW*u;>]7_zLl   YuT:j`2tefSY$d4#l    M7.&~tt;7-t[55c_# l   C)T.fF}x"%qFd7l   e<jg|
>$\^~TXW,\>l   9=j{xnj{68%h147smJ= l   7j'pECv8_4%a.K4hY5:&9Ppl   BWwUqhrl}b,@/tal   f2K(z0#Iaw
22Kl   6*5ld6FU:e ZW6xeLp^Pl   Ad4}ypwxqjsJ%fack9Yl   ~HTU?-_\!^+e2vvFvul   yX?hlHp&5w`^J&35A) l   L"+z %*>]Cpk?JY(b}l    0>_l!gn	hox#@4/Jg7 l   ^RSzDl;W"t?7l   CZ0TBG"o2VAsq01a4l   t+RE#@?6,	'8#-Pjv@&l   D'v2cd'ssEj Q$= l   p/2JnK5LZJSgp51# l   C?6gU A]M3CJSE4_}l   KD]2'5(S,;4#e&FY9,nCl   &$8S1<a^VL%\1	#@4K&=l   lMe!^[BXXhPWF#.AxZ09l   ~(f:B&p\lb`rVod?/l   .WAq:mTy)nPkx`1B^zl   M9<>=BPJfpSuE]l   > \J	#~g^GAo_*sv]l   +nIdRE)nof_~ 9_Dz         c                        e Zd Z fdZ xZS )InvalidPublicKeyErrorc                 $    t         |   d       y )NzFGiven x coordinate does not represent any point on the elliptic curve.)super__init__)self	__class__s    m/var/www/html/turnos/venv/lib/python3.12/site-packages/ccxt/static_dependencies/starkware/crypto/signature.pyr   zInvalidPublicKeyError.__init__:  s    ab    )__name__
__module____qualname__r   __classcell__)r   s   @r   r   r   9  s    c cr   r   stark_key_x_coordinatereturnc                     | }||z  |z  t         |z  z   t        z   t        z  }t        |t              s
t	               t        |t        d      S )z
    Given the x coordinate of a stark_key, returns a possible y coordinate such that together the
    point (x,y) is on the curve.
    Note that the real y coordinate is either y or -y.
    If x is invalid stark_key it throws an error.
    T)	all_roots)ALPHABETAFIELD_PRIMEis_quad_residuer   sqrt_mod)r   x	y_squareds      r   get_y_coordinater*   >  sK     	AQUQY&-<I9k2#%%I{d;;r   c                  @    t        j                  t        dz
        dz   S Nr   )secrets	randbelowEC_ORDER r   r   get_random_private_keyr1   M  s    X\*Q..r   priv_keyc                 ^    d| cxk  r
t         k  sJ  J t        | t        t        t              S Nr   )r/   r   EC_GENr#   r%   r2   s    r   &private_key_to_ec_point_on_stark_curver7   R  s,    x"("""""8VUK88r   c                     t        |       d   S r4   )r7   r6   s    r   private_to_stark_keyr9   W  s    1(;A>>r   r(   c                 $    t        d| t              S r,   )r
   r/   r(   s    r   inv_mod_curve_sizer<   [  s    1a""r   msg_hashseedc                    d| j                         dz  cxk  rdk  rn n| j                         dk\  r| dz  } |d}n6|j                  t        j                  |j                         dz        d      }t	        t
        |t        j                  | j                  t        j                  | j                         dz        d      |      S )	Nr               r   big)extra_entropy)
bit_lengthto_bytesmathceilr   r/   hashlibsha256)r=   r2   r>   rE   s       r   generate_k_rfc6979rL   _  s    H!A%**x/B/B/D/KB|dii0AA0E&FN$))H$7$7$9A$=>F# r   c                    d| cxk  rdt         z  k  sJ d        J d       	 t        | ||      }|d}n|dz  }t        |t        t        t
              d   }t        |      }d|cxk  rdt         z  k  sn U| ||z  z   t        z  dk(  rht        || ||z  z   t              }d|cxk  rdt         z  k  sn t        |      }||fS )Nr   r   zMessage not signable.r   )
N_ELEMENT_BITS_ECDSArL   r   r5   r#   r%   intr/   r
   r<   )r=   r2   r>   kr(   rwss           r   signrT   s  s     21222K4KK2K4KK2
 x48<DAID Avuk215 FQ0000q8|#x/14Ax!h,.9Q0000q!!tr   mpointshift_pointc                     d| cxk  rdt         z  k  sJ  J |}t        t               D ]?  }|d   |d   k7  sJ | dz  rt        ||t              }t	        |t
        t              }| dz  } A | dk(  sJ |S )z
    Computes m * point + shift_point using the same steps like the AIR and throws an exception if
    and only if the AIR errors.
    r   r   r   )rN   ranger   r%   r   r#   )rU   rV   rW   partial_sum_s        r   mimic_ec_mult_airr\     s    
 q*1*******K'( 1~q)))q5 e[AK%4	a 6M6r   yc                 x    t        |dt              t        | dt              t        | z  z   t        z   t        z  k(  S )Nr   r   )powr%   r#   r$   )r(   r]   s     r   is_point_on_curver`     s3    q![!c!Q&<uqy&H4&OS^%^^^r   private_keyc                 *    d| cxk  xr	 t         k  S c S )zG
    Returns whether the given input is a valid STARK private key.
    r   )r/   )ra   s    r   is_valid_stark_private_keyrc     s     {%X%%%%r   key_seedkey_value_limitc                    ddz  ddz  |z  z
  }dt         dt        fd}t        j                         D ]L  } ||        ||      z   }t        t	        j
                  |      j                         d      }||k  sG||z  c S  y)ak  
    Given a cryptographically-secure seed and a limit, deterministically generates a pseudorandom
    key in the range [0, limit).
    This is a reference implementation, and cryptographic security is not guaranteed (for example,
    it may be vulnerable to side-channel attacks); this function is not recommended for use with key
    generation on mainnet.
    r      r(   r    c           	      n    | j                  t        dt        | j                         d            dd      S )Nr   r@   rD   F)length	byteordersigned)rG   maxr   rF   r;   s    r   to_bytes_no_padz"grind_key.<locals>.to_bytes_no_pad  s/     zzQ(C!DPU^czddr   rC   N)rO   bytes	itertoolscountrJ   rK   	hexdigest)rd   re   max_allowed_valuerm   index
hash_inputkeys          r   	grind_keyrv     s     3!S&?":;e3 e5 e " )$X.1GG
'..,668"=""((	)r   elementsc                      t        |  d   S r4   )pedersen_hash_as_point)rw   s    r   pedersen_hashrz   	  s    !8,Q//r   c                  >   t         }t        |       D ]  \  }}d|cxk  r
t        k  sJ  J t        d|t        z  z   d|dz   t        z  z    }t        |      t        k(  sJ |D ]/  }|d   |d   k7  sJ d       |dz  rt        ||t              }|dz  }1 |dk(  rJ  |S )z
    Similar to pedersen_hash but also returns the y coordinate of the resulting EC point.
    This function is used for testing.
    r   r   r   zUnhashable input.)SHIFT_POINT	enumerater%   CONSTANT_POINTSN_ELEMENT_BITS_HASHlenr   )rw   rV   ir(   
point_listpts         r   ry   ry   	  s    
 E(# 1A######$'''!q1u8K.K*K

 :"5555 	B8r!u$9&99$1uub+6!GA		
 Avv Lr   )N)3rJ   ro   jsonrH   osr-   typingr   r   r   ecdsa.rfc6979r   
math_utilsr	   r
   r   r   r   r   r%   	FIELD_GENr#   r$   r/   r~   floorlogrN   rF   r   r|   MINUS_SHIFT_POINTr5   rO   ECSignature	Exceptionr   r*   r1   r7   r9   r<   rL   rT   r\   boolr`   rc   rv   rz   ry   r0   r   r   <module>r      s-  "     	  ) ) '  [		SWiXX	
i XW	
i XX	
i XX	
i$ YW	
#i, YX	
+i4 YX	
3i< YW	
;iD YX	
CiL XX	
KiT YX	
Si\ YW	
[id YX	
cil YX	
kit YX	
si| XX	
{iD YX	
CiL YX	
KiT YV	
Si\ XX	
[id XW	
cil XX	
kit YX	
si| YW	
{iD YX	
CiL YX	
KiT YX	
Si\ YX	
[id YW	
cil YW	
kit YX	
si| YX	
{iD YX	
CiL YX	
KiT YW	
Si\ XW	
[id YW	
cil YX	
kit YX	
si| YW	
{iD YW	
CiL XX	
KiT YX	
Si\ YX	
[id YX	
cil YW	
kit YW	
si| YW	
{iD YX	
CiL YX	
KiT XX	
Si\ YX	
[id YW	
cil YX	
kit YX	
si| YX	
{iD XX	
CiL YW	
KiT YX	
Si\ YX	
[id YW	
cil YX	
kit XW	
si| XW	
{iD YW	
CiL XX	
KiT XX	
Si\ YX	
[id XX	
cil YX	
kit YX	
si| YX	
{iD	 YX	
C	iL	 YX	
K	iT	 XW	
S	i\	 YX	
[	id	 YX	
c	il	 YW	
k	it	 YX	
s	i|	 YX	
{	iD
 YX	
C
iL
 XX	
K
iT
 XX	
S
i\
 YW	
[
id
 WX	
c
il
 YW	
k
it
 XX	
s
i|
 XX	
{
iD XX	
CiL YW	
KiT YX	
Si\ YX	
[id YX	
cil YX	
kit YX	
si| YX	
{iD YW	
CiL XX	
KiT YX	
Si\ YW	
[id XX	
cil XW	
kit XX	
si| XX	
{iD YW	
CiL YX	
KiT YX	
Si\ XX	
[id YX	
cil YX	
kit YX	
si| YX	
{iD YX	
CiL YX	
KiT YX	
Si\ YX	
[id YX	
cil YX	
kit XX	
si| YW	
{iD WW	
CiL YX	
KiT YV	
Si\ YX	
[id YX	
cil XX	
kit XX	
si| YX	
{iD YX	
CiL YX	
KiT YX	
Si\ YX	
[id YW	
cil YW	
kit YX	
si| YX	
{iD YW	
CiL YX	
KiT YW	
Si\ YX	
[id WX	
cil XX	
kit YX	
si| YX	
{iD XX	
CiL XX	
KiT YX	
Si\ YX	
[id YX	
cil XX	
kit XX	
si| XX	
{iD YX	
CiL YW	
KiT YX	
Si\ XW	
[id XX	
cil YX	
kit YX	
si| YX	
{iD XX	
CiL YX	
KiT YX	
Si\ XW	
[id YX	
cil YX	
kit YX	
si| XX	
{iD YX	
CiL YX	
KiT YX	
Si\ YX	
[id XX	
cil YV	
kit YX	
si| YX	
{iD XW	
CiL XX	
KiT YX	
Si\ XX	
[id YW	
cil WX	
kit YW	
si| WX	
{iD XX	
CiL YX	
KiT XX	
Si\ YX	
[id XX	
cil YX	
kit XX	
si| YW	
{iD YX	
CiL YX	
KiT YW	
Si\ XW	
[id YX	
cil YW	
kit XW	
si| YX	
{iD YW	
CiL YX	
KiT YV	
Si\ YW	
[id XX	
cil YX	
kit YW	
si| XX	
{iD YX	
CiL XX	
KiT YW	
Si\ XX	
[id XW	
cil XX	
kit YW	
si| YX	
{iD XX	
CiL XX	
KiT YW	
Si\ YX	
[id YX	
cil XX	
kit XX	
si| XW	
{iD YX	
CiL YX	
KiT YX	
Si\ YX	
[id YX	
cil YX	
kit XW	
si| XX	
{iD YW	
CiL YX	
KiT YX	
Si\ YX	
[id YW	
cil YX	
kit YX	
si| YW	
{iD YW	
CiL YX	
KiT YX	
Si\ YW	
[id YW	
cil YX	
kit YX	
si| YW	
{iD XX	
CiL XX	
KiT YX	
Si\ YW	
[id YX	
cil XW	
kit YW	
si| XX	
{iD  YX	
C iL  YV	
K iT  YW	
S i\  YX	
[ id  YX	
c il  YX	
k it  YX	
s i|  YX	
{ iD! XW	
C!iL! YX	
K!iT! YX	
S!i\! YW	
[!id! YX	
c!il! XX	
k!it! XW	
s!i|! YX	
{!iD" YX	
C"iL" YX	
K"iT" YX	
S"i\" YX	
["id" YX	
c"il" YX	
k"it" XX	
s"i|" YX	
{"iD# YX	
C#iL# YX	
K#iT# YX	
S#i\# XX	
[#id# YX	
c#il# XX	
k#it# XX	
s#i|# YX	
{#iD$ YX	
C$iL$ XX	
K$iT$ YX	
S$i\$ YW	
[$id$ YX	
c$il$ WW	
k$it$ YX	
s$i|$ YW	
{$iD% YX	
C%iL% YX	
K%iT% XW	
S%i\% YX	
[%id% YX	
c%il% WX	
k%it% YW	
s%i|% WX	
{%iD& XX	
C&iL& YX	
K&iT& YW	
S&i\& YW	
[&id& YX	
c&il& XW	
k&it& YX	
s&i|& YX	
{&iD' YX	
C'iL' YX	
K'iT' YW	
S'i\' XX	
['id' YW	
c'il' YW	
k'it' YX	
s'i|' YX	
{'iD( YW	
C(iL( YX	
K(iT( YX	
S(i\( YW	
[(id( YX	
c(il( YX	
k(it( YX	
s(i|( WX	
{(iD) XX	
C)iL) YX	
K)iT) YX	
S)i\) YX	
[)id) XX	
c)il) YX	
k)it) XX	
s)i|) YX	
{)iD* YW	
C*iL* YX	
K*iT* YX	
S*i\* XX	
[*id* YW	
c*il* YX	
k*it* YW	
s*i|* YX	
{*iD+ YW	
C+iL+ XX	
K+iT+ YX	
S+i\+ YX	
[+id+ YX	
c+il+ YX	
k+it+ WX	
s+i|+ YX	
{+iD, YW	
C,iL, YX	
K,iT, YX	
S,i\, YX	
[,id, YX	
c,il, YW	
k,it, YW	
s,i|, YX	
{,iD- YX	
C-iL- YW	
K-iT- YW	
S-i\- YX	
[-id- XW	
c-il- YW	
k-it- YX	
s-i|- YX	
{-iD. WW	
C.iL. YW	
K.iT. YX	
S.i\. YX	
[.id. YW	
c.il. XW	
k.it. YX	
s.i|. XW	
{.iD/ XX	
C/iL/ XX	
K/iT/ YX	
S/i\/ YX	
[/id/ YX	
c/il/ YX	
k/it/ YX	
s/i|/ YX	
{/iD0 XX	
C0iL0 YX	
K0iT0 YX	
S0i\0 XW	
[0id0 YV	
c0il0 YX	
k0it0 YX	
s0i|0 YX	
{0iD1 XX	
C1iL1 YX	
K1iT1 YV	
S1i\1 XX	
[1id1 YX	
c1il1 YX	
k1it1 YX	
s1i|1 YW	
{1iD2 XX	
C2iL2 YW	
K2iT2 YX	
S2i\2 YX	
[2id2 WX	
c2il2 XW	
k2it2 YW	
s2i|2 YX	
{2iD3 YX	
C3iL3 YX	
K3iT3 WX	
S3i\3 XW	
[3id3 YW	
c3il3 XX	
k3it3 XX	
s3i|3 YW	
{3iD4 YX	
C4iL4 YX	
K4iT4 YW	
S4i\4 YX	
[4id4 YX	
c4il4 YW	
k4it4 YX	
s4i|4 YW	
{4iD5 XX	
C5iL5 XW	
K5iT5 YX	
S5i\5 YW	
[5id5 YW	
c5il5 XX	
k5it5 XX	
s5i|5 XX	
{5iD6 YX	
C6iL6 XX	
K6iT6 XX	
S6i\6 XW	
[6id6 YX	
c6il6 YX	
k6it6 YW	
s6i|6 YX	
{6iD7 YX	
C7iL7 XX	
K7iT7 XX	
S7i\7 XX	
[7id7 YX	
c7il7 YX	
k7it7 XX	
s7i|7 YX	
{7iD8 YX	
C8iL8 YW	
K8iT8 XX	
S8i\8 YX	
[8id8 YW	
c8il8 YW	
k8it8 YX	
s8i|8 WX	
{8iD9 YX	
C9iL9 YX	
K9iT9 XX	
S9i\9 YW	
[9id9 YX	
c9il9 YW	
k9it9 YW	
s9i|9 YX	
{9iD: YX	
C:iL: YX	
K:iT: XX	
S:i\: WX	
[:id: YX	
c:il: YX	
k:it: YW	
s:i|: YV	
{:iD; YX	
C;iL; YW	
K;iT; XW	
S;i\; WW	
[;id; YX	
c;il; YX	
k;it; YW	
s;i|; YW	
{;iD< YX	
C<iL< YX	
K<iT< YX	
S<i\< YX	
[<id< YX	
c<il< XX	
k<it< YX	
s<i|< YX	
{<iD= XX	
C=iL= YX	
K=iT= YX	
S=i\= XX	
[=id= XW	
c=il= XX	
k=it= XX	
s=i|= XW	
{=iD> XX	
C>iL> YW	
K>iT> XX	
S>i\> YW	
[>id> YX	
c>il> WX	
k>it> YW	
s>i|> XX	
{>iD? YX	
C?iL? YX	
K?iV? "tzz($((;":; s" ""!,,. c! !! 	
7K7 77 77a  ^[;q>%AB 		EE    ED    CHocI c
<S <S </ /
9S 9W 9
?3 ?3 ?## ## #  8C= TW ($3 $# $Xc] $k $N W 7 w "_ _ _ _&C &D &D) )c )c )B0S 0S 0c g r   