From 4aac1cd5c65462d5ad13e377705a00eab8c80d81 Mon Sep 17 00:00:00 2001 From: Thomas Pornin <pornin@bolet.org> Date: Sat, 15 Jul 2017 06:14:55 +0200 Subject: [PATCH] Fixed behaviour in case of rejected renegotiation. --- T0Comp.exe | Bin 73216 -> 72704 bytes inc/bearssl_ssl.h | 9 +- src/ssl/ssl_engine.c | 5 +- src/ssl/ssl_hs_client.c | 502 +++++++++++++++++----------------- src/ssl/ssl_hs_client.t0 | 13 + src/ssl/ssl_hs_common.t0 | 17 ++ src/ssl/ssl_hs_server.c | 578 ++++++++++++++++++++------------------- src/ssl/ssl_hs_server.t0 | 13 + 8 files changed, 595 insertions(+), 542 deletions(-) diff --git a/T0Comp.exe b/T0Comp.exe index 80b77913d2ee348ef25389473538c0dc6e36fe80..67eba109800eaebba3b6d72a00e5390a7089078e 100755 GIT binary patch delta 27466 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 delta 27822 zcmc(Id3;pm)&F_!o!q&ZB$M39WU@du)?r8>><Md-ML;&$1Vm+vAOaUBsL>cE5mzc8 zUKPcqKwDd_TI*7mYQ>_~1*_84RxMast*@<CZMC(<-}jv7&M=_9?LY75m&&=%_dMsE z=RD_G?{lA|osR@M9}ir6RS(MgIYfraQ#Mgd5m`E8?9d%|El?kLN~J;*qu|$oAM>`T z{;JITf$FQedvB^9wKYSLg`X+-XHX6WzDaasI}vlY!C2V?wZ@w&wZ({o6EdocwpK#0 zBS;i5N;*(vz=(F_;*lUKZZK$+*dfPgXJ(+a2sT27B_fv5o&#n_9thHKG|-U`VwfGw zH)0*kN*pw_ay!fEoEbicr9~($5@LoF-^XZYZ%P-6BLU(7!DToizV?>f-l5V(9kw?r zT;5`4^0u85GIVz7!rpmOr=Znb4SlP0xl}h_8;RL5D-IV!hOGmjO^fC292T>SY2s|Z z%y!#*G~8`kAXAcd(Oe|L=do-kBMRTm(nX7o!;4H^T)G^us<2|piRQk_*zu-d`b1-$ zh0zp;uDyWEK4vDd+>iD#en3}jjo%B*4vxDK(0zf$5+nVrl6W!VmZ&n?!_4l1wv_}J zg=vN)1|+)?jor|SMhjhhuTk?k;yob-l3YZz!MFxmDh~HTTEa9Ax@a=1RGQbM(;=DT zoflZ8Ebq0z<-;B1p)7Pa-4jh}h6I}4F`IZqls2O8kkQTp(Rc-<Lq@#Xdnc!R3Vv7% zLzegoGpvuUY|4;85=zW%LUWN3k3cv!4h)~|3S%@EQG<V-2`w#bEp5c3T)?6P+guD8 zacU&$O-8^ir4+&yXo4BvJ2PI+-Zdhu8BW??WaI^FkkQ$U!9mH}5GoxXD`>{0BHR*w zFkmx~IQ#heGf&q)ab2K^>oLM;XQnRJkCJ9^sflF992ypF-htW#jGT@V?+;dO3G@7L zVnj<;dx_UASf1iq>H>^*mO9S9X6Ra_wIJiZgA%(htUNu>O#TE_3tj^URmLt$ybXys z>K<}24lFCUFtH%xAbJlwSc*p?wd?qLbDnn8XlH?_A1&R~!w?6aEYc3M^l=VrhB%CR zvH?Hb=r_k4C<7l3p#1`=#0d^?UfKZ`&}ltenRKE9EPb2<nvr&Z4Vco4x#R9i4@>tt zj?O?3BUP~#gGY6Aha@Ieblw0DN*K_CQW9XG&uE4uzz|7}N)DZZsGyr-3T38=qKtO7 zx9yy<Ly(mQrOT~223IIAC`DqjgwWUkW=pM@o-$cA0mA{R^}}tH#$m{}iaD5z!4$o) zqtaWSTb}xgJP284)ry0+Y6p(fle~ks`fI@H>2k`ysvME8F8WeqDR$>Sm&6rnOBYn} zzZX>Yr3LA7zTid5kHvrE1vl3mIDs~I;+Q!?ri%$Qgq3&OIi(B5DGSXZy+OhZzQ48{ z$6FY?)sLsOEd@<91&U83&Dc2DBU86%V9{8f@LDmEhb~S`GtAO>Q>Gowz^#eNC$M%T zE;h`vY@r=hSY^0qvvlE(rHT6uv;4U1>Z0YTV**vnm-?WLrQbEoisPlrvaCThOZu2< zIjc(lTMy^4f;qf9356QZ1T+d&ycu=K3y#FhMV9N3XXHngV<rssX~d8so_7^3%Cl<d z*Fe>w6$@YGX+G2koYy)3b1YD2rJ0Slef~MtH0~X5LK{<-V@}iI8+R;tsFim?{?Zsn zd91+&Ct}5c#zv$#>%IInDGrjgLl!@)RK_3+k9!N|F`{K#mKc!yLuMrykjz!-RUs5j z@PDO=P>lcMH7**T$)#YGI0;WInN_fc=4t0=ldLNB8GU4@B!9ThH{EIl<qI?#Dbi;g zlNK9je0jPR5N*X!w-WazzXl;+34y2NPT)pX_hri<%R7fqmSfm~1royx(dRhjLeEMN zc`p|YR3Cbu7d5CuUV~Gw`g&(Nb!GQtyePHY4<V|H@9XV#`sE*D+yJt$wXgRpr(dcU z+e&`KPF=#r+t+dlSiVAT2}sty1F=gcn~b#JQEn*%odZHAxLd>S&NSgJr+D~T+UMbA zn$-&LEpCj(spQFQQ3Pd)i(`EWB?cSNq|W#<mOIu!2%*f~@|<J#mW{K~&TygLF>ljI zv`0y!oDTbXV}K?U#RX<ymx=8$i(1g!<;FZ!T!L|nK57uAf8w2`>0%18LJ^Ap3(qDV z3x*kAA)c2cs=BqJJ6ag7?o@A9am9kEKv^|Fe_YD>*!JmKe6?vAX4$5@XPJJoxMIYA zGM#`AC@XeUC8{d2bc>=DsS|XM#S(7?+(<?{Cv;t1%wkqzc)8~JjZ~6YoSbBG8?oT= zHRN%Vs4`u|2F)2uRK;{JuShO}Mq-;8^A1OAy*r|fo>8(Th47j*7jfhtBYqjQM)CxZ zT*lHy{Bkgw(EgM>PYUdrDKM8iMRM!$T%#SG*Y^lb9pV|yq*ZJjKiYm1?{zVuaamp{ zR#_-z7+{trz`ooY9;+|tLS|=g*owtkySxpt`l&n{cJu?shz~-tbui=pj9al3hdKrv z%NoiUvm);;Ft8wjJyECw8l3e07~7$`9%w85lfq+p`4~fWdAqwcfW9i!=+5aOLRSjC zLFltWKM@+QtcJ{#N|wAx=v_j8D>T1~`D28x7y5OfuLxDuoI6<P3Zd5veMacth4!ss znT0~H7W$ab{}I}~mUCwa-6ZsTLJ!rR1%7i6&ONUOr(f+cG?yzMisqr_;hue~u~!R? z<n6oV*e<qep*I#H_KuzW9-1;<;mzyWcM`K3-@qLHMgn<_JSjSMsf%G4Dz+i|U5L73 z=noKb?CLQtMqa2m*U62IMw>v|t@QTwtmpYT<YE#FxtN+l#UaOba!VI#OL@`ad?(a& zxgy$xkscU%AvCL6Ygn+rDM&tqQerOVhY-M{+2ARF(sa%<+2AFBvUJX?=FlwkTV$1| zvkqs0PA*(La6*x=+r!)4>-L`L^Qw2Oy6!d?T|QJ?6f1TbrDjErv#Yq!DRis7WxZpn z+-vJSrXIaMG%^S7$G0P}K|O@tM;UpxD|r|UWG7z*$1V5X>OG(ceLIx=jBy{NF!R^+ zsq7y|@^#BaFAo*R8b?7V5{qME4i%Rq3j?&lDT%{}5FT~j>OPgZA`g*zZ(E;OLXcA& z%(Yz%hLHO$xbg;?l8VcmGQBEbP=re34c<@ttXYIUpo$w5&42{|B)g#m-k*n(>oTcS zCKbs^=YBVn`b8#HY5BQqeMjH^qw&rVk~g^IC%Lr2l=Ub*=Z6EWr(;PCS$M<5)5>ux z@i5v^w}5H6!@W=YUZ6&JZhScC9r4-9_CASMfyVkZt48m%e$!OM+uN_da=f4R>ruoL ziQXIB65@sBx<nkZ{Ss4ZB?l7~8CLvyNJSH-5x*IUE;KKu_shKN68%+?_oKw5LS8i! zytScVF1Aiyq<^!j@aFdK33_4w8jPiz`d1<SaQ{R|c4k&}4~YFw|K2Ffsq2-;Z-f5Y z>^0Yw!^OpQXMjFZ*Eb@@OY<5FVcv2AZ2zxytD|^-30-VehxGgMGkNU2x30b?Ebgf9 zGYI`MRJ~*rq{xW5jIgYrmxap4p%Q6c^^)eVF)DSNym#v3s+;Ew=nL8e+T<-8P-5|3 z0ERCaPzA;<1Fp6(ps~I55(BGxWO)s#i-Tq}ud2MmL}^x#JzX<!YJZe!<&|y4)NS;R zS*^TF+uOUe`e<t_r}8n;4npGv?U-wMZw{=egnS^VHv_$kv9QZlzzOUs$PKy^ypo1t zsNyLNgZPNYKSMFvd8%$&fYNR0I7WLt8*zuDZ#0esJGTivoN`^9BU-YE<mw%te=NY# zxo#s%^9rNYEq4Sn_zl(;9WyBVo<@vn7_4N;v>8;Hl4lgq1}oi+WrM0lqGW8MF$k$! zgGGB0I?QCwu{9{vIvNsrIR(5mMv`(-&3wythj|+YRTS~w(aCX#Lnesl7;o30iqu%3 zV#~4I9>{gaF|r#+KsRE?n;8WyC+M=OE8_^!q&F~)!<1&@p)Cg8F_4Gacsxcv!BaN& zcCd3ahAF3;D|157#jYR}8?zbNM*DE`h77Jea{`x>@8r9^QB3l3RNKh~>H{P@3Z(m{ z)A5NA_A`xkI2sts-Xx#2Su6QnD90y3L=SM*^zI$p&C)FI<-xJkWG=11a!<z7ox-57 zaUM)y9-Yc4?1bH(T;FMooW^plgcCo7QIS*N6!Da1;V~T?WMI+?jr?t<y3WxU#-v|e z*hK#fjoi)IJmQ?fl<XCeA@L|JjyMJGEXcUCL5ib|Sf<E{x~DQKc8Z;di|%YW5vSP2 zuEAOeg{U_A%Z$;ewi(qnTj#KDNo8?Nr%GF~s|ppD=_*&~I#)FQf(xq9buKrYa<|O; z_mJKxdBZq17T(y#Vx>+u7cmMop}S}_pG|gm%6b=9I^BC0S2>kVm5UJ*N}d`<OTZdJ z7{41HOLMrVA*-<;YsY$*E-a2g7e<}#?m}cZWlncrB_%o{?v(hvv{X3~-C!18OH`{f z0jSUcsL%m$V#U?j?OWT3PDf6yu4|3q)M)R%3GbSuL-)uy=G6?d%VebV(5}@uJ#?Y9 z?o6+FSgDG83x_qNY`A@~(+5@Q<MeTQZ#!q)EAXau5!l6jot|4^)+ml=dy!~FXCo(} zz368+{Z8}(J%XIR?qasl-|2^BFRpDIlKhV7R4;P+I{jUo)`WWRg&_&T-I*XHbPy7L z5c;}Hyt?5PWxR~Wit8IqST8NEFDV}2)NMOwtK*$Hyh@dN9mC^An3XN3&KbPR8R!hY z-YxMS8a}!=Pu1}=*q0&BkmO5fRrgFFq>-~B`6@Hc@?s<Us-@o85xr)eg-oNJceZ-h z&?sFw(x`V0Bb*^FHgIWmXN1f0$i-Y48Yx{l3<o2PM`Lgl!^ivnh~m^T(WstT+KQc- zRovt>#pDJ5xG^)TF~WfxrN_)jXQb2QVh*yvkqGe#fF69Kbc9Cv5z2Tprvi0ZE@h>i zT*xf7%$wNQ58r{-H};AipZ_4|FZ1qb9B83*%v0WP8{^%Mm$AEHBvi{3hDcR4m6mgz zj}JuhaHYg?W>Z}mPg0iC?DBjlEv{9Ude=1#OtESsuM6o0_)#@09%rym4OrTTWCPLx zKVP@lV$NlS))gSd6P!|aB@%86qe+d}Qj;^uJ)6-)2f5Bfmq$4scxy_9kSF1MEfda3 zI-HaIa87Vnv$=EFz{!mRxHV6XuVFM9J`Wj!U`*EYd6_d=<_eTD**%w))`CEK9Udc} z<pQKLoP0Ef&AiN|Cxu>zky~IyDrmG1$#k@-x}#0i9c{|-@pY!?jy4rLQ#C49f-x3) zUH66|+WjHuYjvY)F%)Kws!Sc5if1>La71S7ZZ*r9>CEzH;F(}bD1Mg-#cXYBwhl$| zb?o+?X;N9)CMP4qz=&iqrZA)0>A6rxq^HhW|G>MWI+UfSUvJ%*$^sYuV$B~JGtAcC zc{|7S9KtU<P3#)J2kIB0_;=6)<;zoP!c0C6%koCl#48uh4c%_upT|_DL=Q_7m4<x1 zA|;EPnH+(Au~tFJl*z3Q;rqhAw7HS2YbKvfW7!#17v-5{@(u-K{YBtFTEJI0sBr<j z#y)_`M8UgpY=7(ke?0aQ?7qg0t5gB+jB#bWan<KV*dun1tJJeBzqwoVDRgVl9{McO z$d45?{sb&LS9YU$!Rp#^*bU*lanl$MPO!T7r~*8#pgwzSypfqT{PkkAY+sTahNnNA zxEnagjT^Ou4GHeNR<hIU-ds=upH#4V+*vi9U@nz*a?kU|HdpkKobD@*&pS~x>1}F` z_2h~rUqFe;S3ulWKz!%QAq)>b<#!A>*L%3Rwp_P7axVr4KExeN{CS-F*XEKjY{d?? z9^s77K#W{{ayB42dSv<>tD^NHR)<|a?^us#58wWi<11}cPE32N$M+b<{>zD)-Yf;( zL$Dd4c8th?ebB{rlQ)}uG=-Td+l+3P<K*2@kj^*kI1W|)^SmCq3Vm=yhj#|FeTHA^ zVzbLfcX(6C=9g)H52MUQ+gUg<&x(T1TW)~YKNFfPb*XPB9PO#=3j-kz+!ZI)1rGt_ zx`(_+PpVQO@7E_)r$TI>t5yLGbP8?(uq5928qkte4;{(AkPDtDcT6YG2wID?l{ore zt&{Q_HfWvxWlFt{6%;`{xgP8sr@5dd@lYnpQthuUC{xZE$CZ=vz55RZoq1wG@&6o! zqk*`Y@s6X=|4VdIS>fgy9W`)1nWZPS`fmy|vXs86uoKG)#Ez!EP#8uD_0ELdk9eLD zQC8eQb+U@l{Q<K7oBRpY(K<Y>;EV-*Z92DSUPQ%@;^`Mw5HST}6j?`eTK|ch^kF{N zY*0q|L|yMklPda1hlU7?9xLYyqDLo{>b|cfxo!SKA2^zGLS487?r{G>@2nI1PFg43 z_FvYsmwuH})(ALpG%Pz_M-OQfmLAf&9P8|~Sk#}^0yGh|Kqr&gx9`bSgYB$|H$B#> ztIt}V)|4qjs|CM8P0!as3u-H}MjU_MI-xW@iDuP{#{tw<9#@({)o?O^(vr7hj@RP& z?2!F|1(Ushyp2hi`iW<#3Qo037v;(Eg4PYnY?&W1L>bM%>q(rogAfeHM)NitpQZF< zQ^dW#T}*Rd$#R7E|6lD$Mf?)2#Qg+E0)#chZwhqyV}AF+S63+s{r(s?#J!)t*oXWP z=jBcv71s^Zel;S|j`x{><zlh+5A}*h@G%K|;)A8NQ@gA4y{o65gl)xvsl&R7SPV`i zMXY@bl+&`^r}aGPe5eI+LX5iN28S+yUtx4Ij!lClC)1fs-gX|B>2*!(kHYSm)(`Yo z)2d3u*NBO)$n35*QSF6JsVk7<BXk@xv2J@4PGOC8r}S4Bc>AW;m{x1td;FA|$)ay1 z>l$&A!EtD6f`)JGX86Oi#$|ZwuZj&2^A9t%_jsSeNmat@F})Y>Cj1pmf5Op=0n*-C z(`(C+>mQT&JwkVg0`I(2`if6ID)H6S>R^kye0>aNwRUk>65i+2`_9d785VT=LnUO% zt8JdIg-Hf34dc3?$B`Vv2D6W0wdW$nXRa5`=;qxwBTyb2Ta&4}ZwfP8z-{xsKVwXB zcFA>Mm%62%nps)Qm6nq_S>Dn4DBum6*)7a`{$8ixAP&D4&*X!@YiACrIu-}J35NVw zr;q%+!!t|bjnHYl7J0c%IIl<_{Bgg^3JgyCysBBTy!TO1D{s$Gm2tC5dWbSQRkkb+ zF8^}8Sd_&QKh^d$ZLRmdJ}Wll&5WST@jR8>25Su%R=Qb_8&)A)X~^~7nN@jOR)Bc( z11k|j_I9l&qp0F^n{wFw!@W%Fq{kDQ3}3vjhJ>7m<GdJkS~7chz1YU*LCG45e0ep> z!mU|edr!{pt9PF4+Fxe(s7FEBJI^dV>!1sB>3t{as9UerZ@sLE!X3#0<B2IF75x&a zQC{=B?rNOS2|_0doh)>c(D6c>g`VVHJEt;_4asP62cCcjc!%c1`)1eQlJ_sYRP&t2 zeQ1zw9B<&<Uf6KXo7*p}HE^B_uQB?+Hn+C=SPzhfm8F~e6wme?sTb!?!g~?=?w8eT zG<#b$mSX@F?iBap$vYU`DWn@*Jg+Z`-#c$)3K2hH)!-TPnCFdn(Wd0SCd{SR;62I+ z3Y8mVdV0y+p;(;!7*a;|RLb2XeZ_*m+b6#xOBI*t5Azg@Y)KwuKHu{Txg8*dO8TRI z_ss(%f!ADor^a{a*U$j?EOMCp!lpEA#SCK!&xjvFGT=6HK5k>RAZl_kQ4%wCwr`$K zwY}fWuMDz^g|~pC^XoD6>lTc!mVPJ&Czp)kO5yY)V6JJo25qR~dEPY(8msf+SAH<I zW^4f>WC!DaVjqNQSJ%WhdB0z9ZUe5i`40aTxwt#>5&MN}pqi@>`XtMgEN{kXJyRDO z@ed(366Z(w0%XKL0C4XB(b{uR{f~jPR6yS-nVh_i{S;aGG{7&%hFs!>OOAOyn$ZYZ zO=w(v<7SJN%T!j9{wkIji+c{|qLN0`t68}9xEJn67WT3vAi3UK3r{^RYwV(rQ<tW1 z&&5m7>5M?UoFALe;{tJ6KhX^9(#;?VFxICTk^lqe8M>h)0mg<jLlR(|mu5)9LT}p5 zRZhkER5t6z2}F}=QAt#^axY6%w081iK=Li9>AtI{6O)<{6)fP65$_ILycozrYJgpm z0J<EJ!W|ae|4zgJHv{5vDISaBsZDGZ*BCh7OCZBP>5z1^!V}zR+{h2y{pK)sU~j>9 zzc1hiFPWi^3nhu;hfqhGB<FDQB2JceU>_Fn!<m40+^ezs(!oL^<=?l>p|7FfDy~I4 zn=a88S^A7lSJr4}OC$Mx#%Pxkg}SH)Zgsn;lzjHE<hrjB=NZIk7ysME{dV@pMPP86 z%jzzof@F$4man<3GdOtYm;LaRt&^4LW0=u6?n7CLOSP8iULk6%6_70yKFqOWn63EW zV*=ch*Y0)+lT^iAbUg~n!g9~s$7tJtnYo*NOvt)j-|Q&+DuY%WUzT~H$f22#87h%u zeSM#uV<`98IgxdrotqF>G+9vYv!^VskF8rZ+ewr!({K6l4)m5P$whj$Y+cW%8OK^e zJGCI2)l#}hbJ?E0X(SPf58`--t=MSHRFphhTH5>ml9H5U;F`7YFU|A-3zibYabP%) zM}D2Iy-67Me1Fz4lP#I^zC!T)^S%&13S;FVGZe$djXMGM3og1*NIrH3^_Nh)6@5Y* zZA@XxA;WGxJ;M=3>kMF1_lA-10#Ud8&N1A`&g8{%I85k%z$Kay(j_AL_)?x_nHkAD zP{pk8_ukWIL{eX-cFe^uQ@a@VBBg$&dnMOSWS$k%SoSmDfW@#Dl+oZ`h0MfHO}RBU zGR6*~GPsp)>KT@MzZ}pTT14utqd(Ya#XFJT6w{3OV2B#6n6yr0Vfi_cwKl^-uP|v~ zI$m-7LJCd}QqrX?8P-|d%UXn?J_)M+#KNoh5bg+Kgy#m`wT6iiOaL;{d5VCdd`Z`y zb5}Hv{f<cd3-XghVbw7w|C55qV|noFd81+Ch0Oc<(pW<mGi4>wOb${`2lfd8BOK_! z^ovVWrSk5frMy2btt&raQ9yNhqQD-*>%Xj4KI9qgY$9tXW4Tq{%4N6^gaWXI6~pal zpFsAW6~4&0)~5+0c+zlLp|uk+;tSra;9d=2CH}6nOntx2-2$dr>Ps}hkS+svDv{Q? zEE)F!W=swN*ESr8pDNFs4m1URdmugw&?{Zu)4Oo_@aSv+YZvN<XHa$u?nLjY<u#}4 zn&5T{Y{X}Rx|po=-gp|Cy78Fzyh7p^I#`lV(6M;q1btUtP#bk8L#;S~>;2fR;saX1 z{hBv=MGt%@OjrD?RZl)q^=j|>6+Qa0s#d~uYsqKPyjXr?6!wF*&aij6r+9CyC~IV| za(4xD`OCV6yIBRf*0?|7NCJB!t`uVChm7wx6v2WS#03X;i&wvLT0iaxxCf$d{O#>s zW(Ka8edXTX<vBVLzXp}Z8Nu$ABm1(n+!@HaEMSy%U~xp>VL!H=gKPSZr&@a9YEPe* z-YI4}!Ci7sVG7r^z;=Sy<F-Kl`30B?n!XEvoc!!K7U7Nn-)O*tw;TAB@96zTB}9`m z$MQao{Xo9-V$9;{_i;yWMR;D172`TbVdG?;rC>nzB#z#b;O<wh6NWn9lvpTxQrvqB zfx*`$G!8j=P8fRVPuRq4@`}!$u)+_OWBUOrbHeFRIr>*g_WH4cM;CMHrBXS*5n=g- z7G}x|JB14o1{4$LEmCnFE?rFZesFeNo#y@S>@v_#&u&yRy+Nz^p5m#iqA4EedJ9$@ zjYK6TO|!Uq#hM%c8U#k7*HSV*E*+&v@zEG2U42I3YnMbyvY7F$nE*C&|23RqnJ6$P zaJynfl;$vowqtX147Ou`6G)tt8H70<S1<#&^#d4>d^-%|u=0U_t?E@Z#>Vv96Sdrk z=OYM8&$%0u=d53a-4jtAM!<dJz?(mpUWW<ppgm8XKXoFW?*V`6opD9q@<Bj6>QF`6 zf;sp!{M&}~E#7Tc^i%hEKe?hlbudtFTIA+jkYmveLU##$MCkK5N5BtRoZD0AAZxm1 z(OE(-5YFX7ueIJYEV@t99|~;^ves3>9YKo@2JclCy(aXJ;CG{c1`&6vPT4Hf*XHcW zlD+~oM0;#@>p`I}<}v4YdCZ}FrsYEW3LTa|J|7O{->WuL7xo0-_D#Q)&jlL=Y=2Q9 z({(YX7Yn^k=q07<i1+rDm6)lDs05Lz#cx~YkO@>SD1=le{#6SK6Az3c`N$B(v%8>C zpizp*FVGap@8?9Rm=CNWahBx8<OsWnun0r4j1MW1hh~CK1=Zsh#{jPtSVbpE=1$NC z?7XqPLEc_L)r373(7l3c@auM+Ku<98_FpxkvH@%7g(8uIhHk*OsY}RKMYwcK^pID2 z^|I7M*q41OTFb$!rFDd*05(<$YQ=dKBfkI823?%o09_)eldus7x<=3ybh_d)cH-Yt zbS0gsOq9ciK(#>21>J?VsHH7*wNkVP{}esqeR6eS%A|w%tyq(Ot#ZJ7Qx$-|E$I(b z1pJSM{!?Uf3~3C5WlE7&)F5=a5kq>uQ4YF9(wZ(cD#2MHGOL8Y_P8{(YUn(p7DC$G z<wh^0uNI;CMx4!g-`a9{iX|R1mw>)xa<RVvb*MPF33Q*m1@vX1Zwmdh(0>Wd%jMh( zq5Xt53O!lq0--HJHwxV>^g5w?gx;5n`{^h~z$-!z3H?AQg}8tsp*2Dqgf<JEEp(~S z4MIDGUMqCB(EEh$6Z(qKLqb0gN_ktT8w$X~p&FqLLYsxo_9k32>eML#jtvDygRTg0 zgf0p+fZiyadjji`zE9E*1(HZVAu{^|7a;vy;4IK0V-x7_#13@5m#^uGj})AH1?c1) zwmDbmQla|;ThKYy+uM~%7YgmP*MqY?e>CV*`TsO#*P!py=CY2QDtr^%D5#5O6>P^D z*FK#`2d#t|pe3~;33NY3`{x>!b)<5(V@m4PLubw_7>JqXTp!J`x8v9Dc57rWF1Q`& zZa?qU{L!XOulwjg{&=8qJ++mU1+&atTH>Q~3hGse_W5WXP#)FtOhKC|S&*7#=2Mdo z+Y1((1vEz^)M=SnNb53aJKE+FjqJ<dj6;|C=vo+cXseHIMP7t%@X>dX7opn)?N^T# ztTv0eZ2aucd9Gl6%H*9A|Lo5>SkP*g&|M<x(Q5@4o2B$?AH5A!PR+cskVl^uTxE8n z7X@+fcbb*-x}g08qh=Mw`-n~A0;_4Lpe{QYzMX35DnF0QOV!X{1Zp!q=-+-Oo9RiV z*wVr^V$ohSS`bU_G5gRGKaVB*(XCmM2`Y%Q9!uV7)=^JE+O+{R-A8P5V2ZY8M89Va zqHko04xs~CqC=^mU)tzH=5QLSkzE}Ap*ey^3+l2f!cPKC^7FWv8fk`)xS1Mhfsgj& z+>Z02)KaZTwc&czM33l9iiZ>CNP5Rd^~f7VLwN~7rx^k?n)p{M88rcop_=|0jSJsT zV`-D1E}9yC#T-Ys_<8ffzck0wy*^qLe%+iv`%*qUD}30TNWb&Z*+7#hzfK!n2Q-<c z_~>~nrcS1(1$EKJ@O$PIy02bK9xV9GoJwzLgy3%{?C9iYe@-f_0@LVS$=k0shl7Dr z=<oGdh0(rh2Wl~$i~$<m7A^?Ppd26F6^;gGlC4qh!{K%{i}HN*0y@+z3j63+f}}ij z=eNV%0<*~Rt^6%q15_-C`^9!TmAVhW>$UDC!N951UyBm^HixG9i2a^R3w^|{&7%u^ z#6`@fs{}nu&s#@mK0PRiix_Xtr~SSpTUkIq_Yqq;jd-(%^7j+ha3RSrHv+NIMKk~} zcF422PK#)eAYH^Fnkk5js8@^V3@u4q#9}(nM{MPEN@*lkPNz!+X)CAG&5TkqNVa2N zaff7Tqo>nDz9I*B2|b~a6tRR3`iL9t4Eno|IKXF8KJPz$n@cI0LG@}W)d<=zR+iDp zf>OGM%W0aQ$$l@VIfAsO%PA#Dx7u>LGK1>Xa=O;n<JzyFhc%M=uB6BOJhr)#ek@4a zTuJW>+MJTEu#!H}P(r$rXfW4ezs;Skh4M6#hH0T<LE20UH4D;FYoS@bBs+69t;o__ zMdxWGuC1btf}W)mcbZl7HGx-%Gpoq+71_)xy2V#yXI9hgeje9pHQgadJF}YZ5yZ~C zVy>oFHL^cL6Rx4xd}I|eI_#rJs<2(Hq4#}QB`9|Y*ZxL(NN`kO4Gr>9zrs<0wX{Ug zvoxY`0v7xZAB}}km#+5_SIMQ11#PBjg;N49ts2TUca+U34450}GC^H%G_{>J5RI1t zX+`0@zy_K)NknNiM9-t!1a;B+!fOKO(R~@TGq92D$t<~<+6sSYwozPA7j1?!ZS<Uv zt|_cnZ8Y>`mh2+0@CaQ*hkSHX;gJ+z(G;C|Q{kh5i%4!!L-ZR!7gMjPI`6*11A%sW z-ADUjrk#SPaNZ7jx$yVM8!f1d4i#?4KKh$}-rI%m1TLYgrfbPh3O@>T(9eBzw2*Re z>fej^`zSD{D5g@>E@%gZi*j;0=_)_3xG0p<Mf@AXELl^e0+&*pUul8riu&YirYSxe zR@6V|GMbJfQ;y8oqAKf3y2MA5fUcsOeKfPEpLKPLzT?Bwiw0U-XvrDc=($A`t!v2h zQCrb=+Ddl|+Cf(qO|`bteP^=d4!W^ufwhhL@LLbiH-NU&U?1HFbS;hc(Gx&B=n)^i z0CXLta+hkwUjcd)@zD{W>#5d9e+9aM5<WT#bR#wSD9>47?WB`@R0ebto#Lb3KsVEw zJ{k<Pi`slN4(JyAd5C3%pB*$E@K&nx(ITMRXsM6R2D+WD_t8e6uhVlrx)f+P{mVz! z0_~xO<=W=$KznJWkM0Kg2HonT$AG>`uPje#(dPiaMfM7fehG93HTviX(6?!=k3IzY z4t>W*6j@;1N$>b540IRu!u-Wm>JIc>TH>Pw(A{*cj~apQp{G~M`nQ871KvxY`kC{9 zzDG4J+RSpG`)GrYHUNE}_W5WN(EU_&wwAmG=m8q-qg_A`(q<oh2k0TX$wxl``T^|+ zLj8Bp(|`}t0YCE~&?8i`ij878MO5HXn$*fj&ySDM3_<%<H2S9X7|r%kx9Ab;hosL+ z_N(Wu_pB#qi=Q{5@I&iIbgdwsA3wF8q^~p5>)%mpA3dov?Viz`;E(Aig1YRw=%?0? z=@miyvBJM+?WZF?Vxvz};YN0ijfR5HP@SOt#I8L@a^)9GI_o`8Q?w)vi^kLobd#Xe zW*QScY`#bz2;4z4qNTwD)P&DM>H5Az;{|D>FVRFFvC*H>DL!InUZw?t*qQt36<V7? z!N99@rAGFj^N-L$+AgRoWuF$kAMhqWb7{1D@MpAJXWHjRgMpvXojQ*$h(2WgoSqZ3 zpE%sVpf`NP&isl#@DV%nYpTL`DIJ-5^%@Pxpq=J#XsnM?9XYkZ-_qhtW}o2ev_>O) zQ?y;ZNjLcD%INL*3l2~FXnV9i_$D0?q}RVUNlrpA>#=KZQW2kv0NoTF6g))JeKex* zP3sWdE$Bx3wp4U@@Gw1?hSAZ%x9EusIw|;jdM1OW1dq^588kEa2l_<@%?tjK-pHWE z!MEuT8MHL`4*fZU&JO;G{+>apwZV7!<OM(QCYlWX4}~(QE%+WqGiX!r&s3E`mj(Yq z@eJA$e4hqo(6zx2Xrv(S2}iBJ(&-x6cSdgvencw-b=mhtA4-`Y(ON(AVTAi*+UTQa zqP4+~iN7Nwh|+2PMwk1F+-Lqq+x)zrp<(_`H~Q%HXubM7eceZYh#m-hLf`h$-=en! zKcV{s?N=8>w^Qm<y5EPq+xe89_eFC`j?h2oRUZ|W+z<2{U$VSpPw<~~*hhU!?gDzp zN5e`U0Q%TR(@M6}XY{E?xeH2e2O5J9Z`j=Bu40s;W`R0TpV4<Tvf1x{(|tZ-zyD2- zYeW~9bPpb-x%k-36V$-qkAcp}pyz_0Q>UQK)LBxmlzPQSR{|O8V_$L`kf~C$+qIb+ z;7vfCFK9E}0>1<5Dj(e;Xt$5PFOtvs=!b$n^wBdV<IRA={sTXo=_N!hM_uTngC)U$ zrLM@J`zffdPx&xea6irsf9<1opj=haq0RgTW<qMdk6tQyJ(#Di_R;U*TE4o`M{f(d z(?@?6^tg}yCg>F(QH=HSHp%+8nQ{b1H|YZN1WojjBWR<K$_4G!2)+BQV7_`TgWd}k zsSgD0$8@!wqUuH|LBDiF)#E<mK2xIJO3C`SpSaVMsG3eG9!3LpOpVvb?iIV8x~Zvx zy6nNRdeu$M@$;Hvj@?}?_VcF3N`Y1i(#2P*7ktE>yHXwT5qID!HM+}x|6^~e)b)V; zHptFYsk%!Ub<v#IG`m_|FK9n;f9|24yIdq~?$15cFMY)QxraI;h`V#E-9!B?gF0;d z^7a*?Cof>QTY(=lC5!6SHg1G4q-WLQm<r&NzK@p0w%hpd?4zq<x7ZD;N|t857!Oi$ zL7VAgEYyS4O+NYzXt0{Qnl(4$Hx*T2h}z(zT%e)qT0vO<iU5bH+2?4{QlR0gd5uO@ zKqFNCxf=BbYE-}TQ5{f|Dp;%Yh5(IJ4L%wPG)k@Z(RiTI>ZWyCathEGbwHyO%>o>& z+ScpL1wiA}0Uw<K)T~CkI&US=c-7{kwLmAS2Ys{=Xo7mxN0$IiRDbc&Wk8cu9^P{} z7S{kxR&gJtt_M6>P4eNbKvUFmAAJ*Os!I9jZlG!ERv$eGbc%Y~M~?$dSMT}gX`mS@ zex5Gy0MJae)JH!Dnx$^?(d#L|+3IN@9sxR4{n1D70nJgL`{-k!xvD6sjs6R0o|^8X zKvV_htF=DL2U?)|$Sz6ulGD@xLAsalCn^3ufG=p|J-fFowLiegyK|WR1EKrBK(`v4 z%hd2?J{AL7D`0W1rt?KIDx4ZngLHa{=rV^tATZxgr?SBGEM;xzL=(z4cOu`QrO-9; zC4vk1V)3h_l(k=yJB$^+I-7GZ$*P~OWvBP@H!4%xgwI79^xdqqj-qzuf2TSIuZga% z@D6cNm#FC*$Tj?mX&Fsl<2y@f=QyN_w4rQe-Ef+(O=qXGO@A>rTQb{@=HF;wHaBRO z6dVY0ItYq>kd+PzN5?5F>HDO&EzRS`;-1G}Em&7`)_@=I`Pb$d$X(-8mb@0Zif$7M zo2d-zPGRZnyCtoCWYdbi2aZ7xgPQcD<Z8aA+PUrd24t?wXZh_yHDBBLa+*p9{L8cd z&vR3Ld;eb-{~L+N?}T#SGW>E=n)P?d_=nJcff}Skr$<V*%tt2YehO;Rzd-RdO0+c1 z9w~YRW#{Trbd%}+ALu3hUl((%&!@ff3-(_8cF$C{*V?omFaJH&TK_%Ofza*-^gz{) zev#_t)BOAbj><hUB79}3WRdWh8dNOl>^XXXbaU;Tj!id_(dqjF7^r%fDe5U1{e&L# z(WG}_B0&EVL)rZIv-sLk?P9hJF9Led=HO!@mz7;fXz@VRYIP{spn;&KKbo@*>G>d= zlRY2k;s=QZ{<E;z<IA9NVv}<fO*tX=|Mx&$@_#r`f8jlIS8eJ?IeTdt@pqMTK<~%b zl?2XoE<*YVNgu#D&lc-vbTi#-y#~4$Z|HkOzFg>d`Fv82@3Zef{`b~ja47t)^)cN^ zpWrx|Isc%1kvx@p1#?tBUc5r;R2qUE|EV-C6^!9AHP{XG)F3O23)UdL9O)?3>Qxj9 zgF#mXM}prLoB$J>g16J7^o`&&^(Z|OoTZ+J<b3rieHg^s3FX+QtL{{6uTh6-bB?S2 zM0NK0;0&|dp*z-23IB5SSDIs|wy1y54fge_7fkF`b>itzNsp!r@}9;QyG!#1<16jg z@@~gHlk4*8;l$VTUQiRoAxClKri<2edOI(KuVL@!tx@yDi6!F15-E7PI6ay^$$L+V z{|I(|Z+(_hD@A!Uh4b@_wNR@xHj3IMV&XDMUn5RjCWe|6*W((Izh2~T6&a4!cKW8! zyT$dprLYHm%GJ1A>^v?qkBdX8$B})W@wkNLPc$$8LL-;f=HoRIp}R@wCUCZ*XE5h} zdfG3bEq|+VK#Kpl6#ulCewy0yzh%4*{-eebpU*XB-Iu^&*SS%CVT_jem8a;2{MT_e z<c9p;3;iGCRN9;Wu`y9<Fj0)w(SiIBnuc4wj$X}QqqwVXr^9f|g}JRcpBrox*T5AY zlI<Y7;Agmh!!nl$eb1+C;XSEvRII&6DeeyMNuP{Lkx?n~65%{9be>Qi7lkI%n0d9d z`T%MTykb9vFTD5AQ)({W01r$0u%w#}<}Vf6DRj5c@h0=fn=HS~9F+oCCSY@bGxp^$ zJtUMYPS*&n4T_r3WkS1z?h*Qw(8EHN&62f3#|vF1v`gq7p-%}t44S%!RIVrp9WQj5 z&@Q2Sggzzouuv5ed7<NlE)&`%bdS)dgdP^E@<d+fc%jRLb}>!S9sy4YJuFn^i-OSc zLYE2c61vBy9KhNFku2c!cu9|!^d3p?k@QoNeoE4ZC4E@ZD$Kem6&6DRY9&2h(&Ht) ztdND46|#&f;<PFfc}dqw`st$Is(Wa63Fqz;dPpe6m{TLPS?E%sokDjD-ItQbA)!<% z3PPKOE*07-bhprbLJtY0GLaYBEOe>RPNBPn?h|@QD3y!6&}N}a%Tvti6tG+9KB0$% zQiUi8Z5FyzXs6KKLiY(hB$T?bJarc>p;RSlq0K^<3hnH{{M|jI|L+rUNGSCb1)<GC zmkR9^x?3pq5*bZ<bGljRzJ8oOB$N^&Beah>!aUiWZ+4m6&0Ec<%@@r-njf0+Kz(3v zAT=|vIPlHDU4eT84+QoFo({YkcrEbfz^8$toXVUbIlZhA)=X=O)ncu)F0wXRms{Jc z>#UvD?bf%g?^};rPg*~*Ub0@p1>h%wF9&}a{9Ev|V3j@4Zno#xCiW9K*t6h|#Zn$p z`M8D@Mye30A}YW=pfKTY?0vs?syEeAAH1J`Gq%?zx=ZN&LZ1-&Oze&f|2g5j9J>pg zHzob{7w8xHT3$=)^hcugPo^pSVLmn&66%!Ri*&5?0nl!x4}<m)e&14du7By{p!Wp! zfi?(VOOBM>ai!0Ie~RdyDx5R3`0FHnVd)EyIhJb>?vj~^Qv@+mxQ)p%i{ejeDBSW4 zB3+G@$H1R1$OC5}DF0q3Uosp7YT%21A?OrD)1ax)HgI*N1auLVf}V*r+o0w6>%0c` zH<h3+>>0EX5jW^!>Iu4OH1)>gQe6BraL&^Y^fFu<HRy6&_cZ7b3RPHZ1|t0d3RU!1 zP=h|iZ;UDW$b0#L(o_@^Kima1@P8pP2I*2zgUZx6q{~6^>jG*#(%nD}>aHdrT?vZA z3^fVqT2O=f;D(MtebrRZe(DtP6QBmoR5OsC1!~Z2H4EueK~YI;A`DtQ1}o0zP+qBS zR`;j})#K`A^-J}p`hzlz5~Hs%&=_uvF(w%^jQPeAV}-HCxZK!j+-`i|c*d|zZ|{RW zM!awDD&-R*Y{D}?@8foF8t_r#Hy{x}Q}x8%)m{j1Z|dd!`@wR1_I#S0T(+*oi$0Xh znYCesyVBeCP__5qL-*&?X>M}mN#~!lc4bS_Oa5S~H|60;-oYPS@W9rGzpcD&k52ZI zk5+m=e>CO|eRPcX?xR1hSbzSy>F$bUYg_388lOxqyND*Z8!n=iEgQT$A3Jx+#Fpjf zuUgfTJSpj3*t%@_+LrMfanpMF`5Rkk?nSK|Th<Mjc+Rp_>)qCk=d5U@FG$bbxD1k0 z*KZs$m{#D6Nz2-n^)zGI#?>Hg-tZreE}!S>tJ^ew!-kgiD`~}s^Jx{T)Z*>@VUGu% z{Gn}Ct!&*$_|rhima}J~)^y><Wyw`78)@x&Ms407o=Ox>TEDR+N#LF}v1P-?)n57j z-d^#KKk?S=Z}dj)Z+Kwu{%3Q%!7q&VRzKgpn8hYcKoQiMPI-G?ILW*8g&Oa&=kN7? z|H36X+RW+~`*^!wEXzYRR-8M2#l~~o_1?oTjxC?MZe7dDbGT}A*WxcANcN<&&u&@a zg%2!_ZfvMOw<Wp0Wi8EXnBcD4FrcNa#cMtAN3Zp#Qyy6KQiXcphd*7^wDVnCU9mH2 zt6x66Ay++Uj1InV;HrO|w`t;ITYmYA@=xzrO{NveF)TY^RYn>>oQ+@<8CEVHQT$tN zSRvD@%t5kk=hA%DZA2TAmjo@`##j337~!yC85UUODvaDZ{9B5DOQ2}8B>pC8!_NEj zRj<=R_yiKExAC8iFC*xAHA;msH-y98bC7h#+sx%3i%c-PBhQ8`eqCS&1S)gFW(|dr ziWHcl77o-<Wd6>o0yV$x4CXK6Ts-U=Dsk2+%sl*HF`0xE3L+J0+4=PXRW+}}E{Sw@ z8R1A<2ues_4uy2pbXGW65<v|kZ7^#Tv%{th39dA9I=8Awo30@qC<svshgB@44TmCi zx$q;>d4noeEPgWtG-n4&V$P0?fjVuVP6~vkFE39>Av;oO*kN6`_CXM$8-;VlWLv0N z=bo@tV@^dqyR(5VXk=XAs=);|fpWun;@Y=REA8C3Aj>?b^G=_K)XsOqYNBe`Ij~UG z6a;Gwg??fOf+|w9^KXSJVHepF@956?h3e!&NiRVgg}7xyJHK0~#`F<pzR)%cP1F`y z!jHPh5^lVxHX7Y|a*;YSh^C6<MuzRYyGUJ?YK!EfG?Zrt17T;Q5ov=}#J$D@tqgbm zDR`>iIH(Y}1ei9=<A1s>G-esZ6HFcMNS)-?*+>Wn545L^Hsc3V8x3BP(&A~34b#2_ z+h)tsv7?od=rKNkVdD>PK{kg)!qWL7$4ZK@d|F*vCoDE$jl*t-wT8`dr4Y=xi149) z9Qd}KQzB}x%HP=@QFBz=&Ywn9_XTa?ykHJu<ZO(rM3{oG1P#O4$kB}~iE#Ll&AiA` zQ0`BXBLfI&gw(ckf@Ua$(WY#)AEBh?Vs(CslS^2~S;(V`hjUvxf&R?{hx;IWa~6u} z1~J_b#{d0}jcCAX*wEc%LvBp~?t~+CwyjfPWTV%1+CgomF24p-#FDU$majw|sB(S; z_7wNKqF|0L9a-oVk+w9W&S%u+2Jx=V0k+Xe3~q>;V2pjxjUo-xfEfi<yE>{8qaTgr zM>?PA&h{gnkD76^@h^mb_>FhML>4FfRuBS#L@p<mfS{6bLis!2kE(`n8GbV}{WD<b o&H*K=!l)U#b6Sad`r(=i)u0{@$J9Sfqj~7VPKA13?Pv)8KmG&;YybcN diff --git a/inc/bearssl_ssl.h b/inc/bearssl_ssl.h index ad807ab..d15cf55 100644 --- a/inc/bearssl_ssl.h +++ b/inc/bearssl_ssl.h @@ -871,8 +871,8 @@ typedef struct { /* * Secure renegotiation (RFC 5746): 'reneg' can be: * 0 first handshake (server support is not known) - * 1 server does not support secure renegotiation - * 2 server supports secure renegotiation + * 1 peer does not support secure renegotiation + * 2 peer supports secure renegotiation * * The saved_finished buffer contains the client and the * server "Finished" values from the last handshake, in @@ -2063,8 +2063,9 @@ void br_ssl_engine_close(br_ssl_engine_context *cc); * * If the engine is failed or closed, or if the peer is known not to * support secure renegotiation (RFC 5746), or if renegotiations have - * been disabled with the `BR_OPT_NO_RENEGOTIATION` flag, then this - * function returns 0 and nothing else happens. + * been disabled with the `BR_OPT_NO_RENEGOTIATION` flag, or if there + * is buffered incoming application data, then this function returns 0 + * and nothing else happens. * * Otherwise, this function returns 1, and a renegotiation attempt is * triggered (if a handshake is already ongoing at that point, then diff --git a/src/ssl/ssl_engine.c b/src/ssl/ssl_engine.c index 7106a5e..529b107 100644 --- a/src/ssl/ssl_engine.c +++ b/src/ssl/ssl_engine.c @@ -1253,8 +1253,11 @@ br_ssl_engine_close(br_ssl_engine_context *cc) int br_ssl_engine_renegotiate(br_ssl_engine_context *cc) { + size_t len; + if (br_ssl_engine_closed(cc) || cc->reneg == 1 - || (cc->flags & BR_OPT_NO_RENEGOTIATION) != 0) + || (cc->flags & BR_OPT_NO_RENEGOTIATION) != 0 + || br_ssl_engine_recvapp_buf(cc, &len) != NULL) { return 0; } diff --git a/src/ssl/ssl_hs_client.c b/src/ssl/ssl_hs_client.c index 34cb407..9d3418b 100644 --- a/src/ssl/ssl_hs_client.c +++ b/src/ssl/ssl_hs_client.c @@ -525,207 +525,209 @@ static const unsigned char t0_codeblock[] = { 0x01, 0x11, 0x04, 0x6F, 0x25, 0x02, 0x00, 0x01, 0x01, 0x0B, 0x01, 0x06, 0x08, 0x00, 0x00, 0x7D, 0x2D, 0x44, 0x11, 0x01, 0x01, 0x17, 0x35, 0x00, 0x00, 0x9D, 0xCB, 0x26, 0x01, 0x07, 0x17, 0x01, 0x00, 0x38, 0x0E, 0x06, - 0x09, 0x25, 0x01, 0x10, 0x17, 0x06, 0x01, 0x9D, 0x04, 0x2D, 0x01, 0x01, - 0x38, 0x0E, 0x06, 0x24, 0x25, 0x25, 0x01, 0x00, 0x75, 0x3E, 0xB1, 0x86, - 0x2E, 0x01, 0x01, 0x0E, 0x01, 0x01, 0xA6, 0x37, 0x06, 0x0F, 0x29, 0x1A, - 0x36, 0x06, 0x04, 0xCB, 0x25, 0x04, 0x78, 0x01, 0x80, 0x64, 0xC3, 0x04, - 0x01, 0x9D, 0x04, 0x03, 0x70, 0x28, 0x25, 0x04, 0xFF, 0x3C, 0x01, 0x26, - 0x03, 0x00, 0x09, 0x26, 0x56, 0x06, 0x02, 0x66, 0x28, 0x02, 0x00, 0x00, - 0x00, 0x98, 0x01, 0x0F, 0x17, 0x00, 0x00, 0x74, 0x2E, 0x01, 0x00, 0x38, - 0x0E, 0x06, 0x10, 0x25, 0x26, 0x01, 0x01, 0x0D, 0x06, 0x03, 0x25, 0x01, - 0x02, 0x74, 0x3E, 0x01, 0x00, 0x04, 0x21, 0x01, 0x01, 0x38, 0x0E, 0x06, - 0x14, 0x25, 0x01, 0x00, 0x74, 0x3E, 0x26, 0x01, 0x80, 0x64, 0x0E, 0x06, - 0x05, 0x01, 0x82, 0x00, 0x08, 0x28, 0x58, 0x04, 0x07, 0x25, 0x01, 0x82, - 0x00, 0x08, 0x28, 0x25, 0x00, 0x00, 0x01, 0x00, 0x2F, 0x06, 0x05, 0x3A, - 0xAA, 0x37, 0x04, 0x78, 0x26, 0x06, 0x04, 0x01, 0x01, 0x8D, 0x3E, 0x00, - 0x01, 0xBD, 0xA8, 0xBD, 0xA8, 0xBF, 0x82, 0x44, 0x26, 0x03, 0x00, 0xB4, - 0x99, 0x99, 0x02, 0x00, 0x4B, 0x26, 0x56, 0x06, 0x0A, 0x01, 0x03, 0xA6, - 0x06, 0x02, 0x70, 0x28, 0x25, 0x04, 0x03, 0x5A, 0x88, 0x3C, 0x00, 0x00, - 0x2F, 0x06, 0x0B, 0x84, 0x2E, 0x01, 0x14, 0x0D, 0x06, 0x02, 0x70, 0x28, - 0x04, 0x11, 0xCB, 0x01, 0x07, 0x17, 0x26, 0x01, 0x02, 0x0D, 0x06, 0x06, - 0x06, 0x02, 0x70, 0x28, 0x04, 0x70, 0x25, 0xC0, 0x01, 0x01, 0x0D, 0x33, - 0x37, 0x06, 0x02, 0x5F, 0x28, 0x26, 0x01, 0x01, 0xC6, 0x36, 0xB0, 0x00, - 0x01, 0xB6, 0x01, 0x0B, 0x0E, 0x05, 0x02, 0x70, 0x28, 0x26, 0x01, 0x03, - 0x0E, 0x06, 0x08, 0xBE, 0x06, 0x02, 0x66, 0x28, 0x44, 0x25, 0x00, 0x44, - 0x55, 0xBE, 0xA8, 0x26, 0x06, 0x23, 0xBE, 0xA8, 0x26, 0x54, 0x26, 0x06, - 0x18, 0x26, 0x01, 0x82, 0x00, 0x0F, 0x06, 0x05, 0x01, 0x82, 0x00, 0x04, - 0x01, 0x26, 0x03, 0x00, 0x82, 0x02, 0x00, 0xB4, 0x02, 0x00, 0x51, 0x04, - 0x65, 0x99, 0x52, 0x04, 0x5A, 0x99, 0x99, 0x53, 0x26, 0x06, 0x02, 0x35, - 0x00, 0x25, 0x2B, 0x00, 0x00, 0x77, 0x2C, 0x9F, 0x01, 0x7F, 0xAE, 0x26, - 0x56, 0x06, 0x02, 0x35, 0x28, 0x26, 0x05, 0x02, 0x70, 0x28, 0x38, 0x17, - 0x0D, 0x06, 0x02, 0x72, 0x28, 0x3B, 0x00, 0x00, 0x9A, 0xB6, 0x01, 0x14, - 0x0D, 0x06, 0x02, 0x70, 0x28, 0x82, 0x01, 0x0C, 0x08, 0x01, 0x0C, 0xB4, - 0x99, 0x82, 0x26, 0x01, 0x0C, 0x08, 0x01, 0x0C, 0x30, 0x05, 0x02, 0x62, - 0x28, 0x00, 0x00, 0xB7, 0x06, 0x02, 0x70, 0x28, 0x06, 0x02, 0x64, 0x28, - 0x00, 0x0A, 0xB6, 0x01, 0x02, 0x0E, 0x05, 0x02, 0x70, 0x28, 0xBD, 0x03, - 0x00, 0x02, 0x00, 0x93, 0x2C, 0x0A, 0x02, 0x00, 0x92, 0x2C, 0x0F, 0x37, - 0x06, 0x02, 0x71, 0x28, 0x02, 0x00, 0x91, 0x2C, 0x0D, 0x06, 0x02, 0x69, - 0x28, 0x02, 0x00, 0x94, 0x3C, 0x8A, 0x01, 0x20, 0xB4, 0x01, 0x00, 0x03, - 0x01, 0xBF, 0x03, 0x02, 0x02, 0x02, 0x01, 0x20, 0x0F, 0x06, 0x02, 0x6E, - 0x28, 0x82, 0x02, 0x02, 0xB4, 0x02, 0x02, 0x8C, 0x2E, 0x0E, 0x02, 0x02, - 0x01, 0x00, 0x0F, 0x17, 0x06, 0x0B, 0x8B, 0x82, 0x02, 0x02, 0x30, 0x06, - 0x04, 0x01, 0x7F, 0x03, 0x01, 0x8B, 0x82, 0x02, 0x02, 0x31, 0x02, 0x02, - 0x8C, 0x3E, 0x02, 0x00, 0x90, 0x02, 0x01, 0x96, 0xBD, 0x26, 0xC1, 0x56, - 0x06, 0x02, 0x60, 0x28, 0x77, 0x02, 0x01, 0x96, 0xBF, 0x06, 0x02, 0x61, - 0x28, 0x26, 0x06, 0x81, 0x45, 0xBD, 0xA8, 0xA4, 0x03, 0x03, 0xA2, 0x03, - 0x04, 0xA0, 0x03, 0x05, 0xA3, 0x03, 0x06, 0xA5, 0x03, 0x07, 0xA1, 0x03, - 0x08, 0x27, 0x03, 0x09, 0x26, 0x06, 0x81, 0x18, 0xBD, 0x01, 0x00, 0x38, - 0x0E, 0x06, 0x0F, 0x25, 0x02, 0x03, 0x05, 0x02, 0x6A, 0x28, 0x01, 0x00, - 0x03, 0x03, 0xBC, 0x04, 0x80, 0x7F, 0x01, 0x01, 0x38, 0x0E, 0x06, 0x0F, - 0x25, 0x02, 0x05, 0x05, 0x02, 0x6A, 0x28, 0x01, 0x00, 0x03, 0x05, 0xBA, - 0x04, 0x80, 0x6A, 0x01, 0x83, 0xFE, 0x01, 0x38, 0x0E, 0x06, 0x0F, 0x25, - 0x02, 0x04, 0x05, 0x02, 0x6A, 0x28, 0x01, 0x00, 0x03, 0x04, 0xBB, 0x04, - 0x80, 0x53, 0x01, 0x0D, 0x38, 0x0E, 0x06, 0x0E, 0x25, 0x02, 0x06, 0x05, - 0x02, 0x6A, 0x28, 0x01, 0x00, 0x03, 0x06, 0xB8, 0x04, 0x3F, 0x01, 0x0A, - 0x38, 0x0E, 0x06, 0x0E, 0x25, 0x02, 0x07, 0x05, 0x02, 0x6A, 0x28, 0x01, - 0x00, 0x03, 0x07, 0xB8, 0x04, 0x2B, 0x01, 0x0B, 0x38, 0x0E, 0x06, 0x0E, - 0x25, 0x02, 0x08, 0x05, 0x02, 0x6A, 0x28, 0x01, 0x00, 0x03, 0x08, 0xB8, - 0x04, 0x17, 0x01, 0x10, 0x38, 0x0E, 0x06, 0x0E, 0x25, 0x02, 0x09, 0x05, - 0x02, 0x6A, 0x28, 0x01, 0x00, 0x03, 0x09, 0xAC, 0x04, 0x03, 0x6A, 0x28, - 0x25, 0x04, 0xFE, 0x64, 0x02, 0x04, 0x06, 0x0D, 0x02, 0x04, 0x01, 0x05, - 0x0F, 0x06, 0x02, 0x67, 0x28, 0x01, 0x01, 0x86, 0x3E, 0x99, 0x99, 0x02, - 0x01, 0x00, 0x04, 0xB6, 0x01, 0x0C, 0x0E, 0x05, 0x02, 0x70, 0x28, 0xBF, - 0x01, 0x03, 0x0E, 0x05, 0x02, 0x6B, 0x28, 0xBD, 0x26, 0x7A, 0x3E, 0x26, - 0x01, 0x20, 0x10, 0x06, 0x02, 0x6B, 0x28, 0x40, 0x44, 0x11, 0x01, 0x01, - 0x17, 0x05, 0x02, 0x6B, 0x28, 0xBF, 0x26, 0x01, 0x81, 0x05, 0x0F, 0x06, - 0x02, 0x6B, 0x28, 0x26, 0x7C, 0x3E, 0x7B, 0x44, 0xB4, 0x90, 0x2C, 0x01, - 0x86, 0x03, 0x10, 0x03, 0x00, 0x77, 0x2C, 0xC9, 0x03, 0x01, 0x01, 0x02, - 0x03, 0x02, 0x02, 0x00, 0x06, 0x21, 0xBF, 0x26, 0x26, 0x01, 0x02, 0x0A, - 0x44, 0x01, 0x06, 0x0F, 0x37, 0x06, 0x02, 0x6B, 0x28, 0x03, 0x02, 0xBF, - 0x02, 0x01, 0x01, 0x01, 0x0B, 0x01, 0x03, 0x08, 0x0E, 0x05, 0x02, 0x6B, - 0x28, 0x04, 0x08, 0x02, 0x01, 0x06, 0x04, 0x01, 0x00, 0x03, 0x02, 0xBD, - 0x26, 0x03, 0x03, 0x26, 0x01, 0x84, 0x00, 0x0F, 0x06, 0x02, 0x6C, 0x28, - 0x82, 0x44, 0xB4, 0x02, 0x02, 0x02, 0x01, 0x02, 0x03, 0x4E, 0x26, 0x06, - 0x01, 0x28, 0x25, 0x99, 0x00, 0x02, 0x03, 0x00, 0x03, 0x01, 0x02, 0x00, - 0x95, 0x02, 0x01, 0x02, 0x00, 0x39, 0x26, 0x01, 0x00, 0x0E, 0x06, 0x02, - 0x5E, 0x00, 0xCD, 0x04, 0x74, 0x02, 0x01, 0x00, 0x03, 0x00, 0xBF, 0xA8, - 0x26, 0x06, 0x80, 0x43, 0xBF, 0x01, 0x01, 0x38, 0x0E, 0x06, 0x06, 0x25, - 0x01, 0x81, 0x7F, 0x04, 0x2E, 0x01, 0x80, 0x40, 0x38, 0x0E, 0x06, 0x07, - 0x25, 0x01, 0x83, 0xFE, 0x00, 0x04, 0x20, 0x01, 0x80, 0x41, 0x38, 0x0E, - 0x06, 0x07, 0x25, 0x01, 0x84, 0x80, 0x00, 0x04, 0x12, 0x01, 0x80, 0x42, - 0x38, 0x0E, 0x06, 0x07, 0x25, 0x01, 0x88, 0x80, 0x00, 0x04, 0x04, 0x01, - 0x00, 0x44, 0x25, 0x02, 0x00, 0x37, 0x03, 0x00, 0x04, 0xFF, 0x39, 0x99, - 0x77, 0x2C, 0xC7, 0x05, 0x09, 0x02, 0x00, 0x01, 0x83, 0xFF, 0x7F, 0x17, - 0x03, 0x00, 0x90, 0x2C, 0x01, 0x86, 0x03, 0x10, 0x06, 0x3A, 0xB9, 0x26, - 0x7F, 0x3D, 0x41, 0x25, 0x26, 0x01, 0x08, 0x0B, 0x37, 0x01, 0x8C, 0x80, - 0x00, 0x37, 0x17, 0x02, 0x00, 0x17, 0x02, 0x00, 0x01, 0x8C, 0x80, 0x00, - 0x17, 0x06, 0x19, 0x26, 0x01, 0x81, 0x7F, 0x17, 0x06, 0x05, 0x01, 0x84, - 0x80, 0x00, 0x37, 0x26, 0x01, 0x83, 0xFE, 0x00, 0x17, 0x06, 0x05, 0x01, - 0x88, 0x80, 0x00, 0x37, 0x03, 0x00, 0x04, 0x09, 0x02, 0x00, 0x01, 0x8C, - 0x88, 0x01, 0x17, 0x03, 0x00, 0x16, 0xBD, 0xA8, 0x26, 0x06, 0x23, 0xBD, - 0xA8, 0x26, 0x15, 0x26, 0x06, 0x18, 0x26, 0x01, 0x82, 0x00, 0x0F, 0x06, - 0x05, 0x01, 0x82, 0x00, 0x04, 0x01, 0x26, 0x03, 0x01, 0x82, 0x02, 0x01, - 0xB4, 0x02, 0x01, 0x12, 0x04, 0x65, 0x99, 0x13, 0x04, 0x5A, 0x99, 0x14, - 0x99, 0x02, 0x00, 0x2A, 0x00, 0x00, 0xB7, 0x26, 0x58, 0x06, 0x07, 0x25, - 0x06, 0x02, 0x64, 0x28, 0x04, 0x74, 0x00, 0x00, 0xC0, 0x01, 0x03, 0xBE, - 0x44, 0x25, 0x44, 0x00, 0x00, 0xBD, 0xC4, 0x00, 0x03, 0x01, 0x00, 0x03, - 0x00, 0xBD, 0xA8, 0x26, 0x06, 0x80, 0x50, 0xBF, 0x03, 0x01, 0xBF, 0x03, - 0x02, 0x02, 0x01, 0x01, 0x08, 0x0E, 0x06, 0x16, 0x02, 0x02, 0x01, 0x0F, - 0x0C, 0x06, 0x0D, 0x01, 0x01, 0x02, 0x02, 0x01, 0x10, 0x08, 0x0B, 0x02, - 0x00, 0x37, 0x03, 0x00, 0x04, 0x2A, 0x02, 0x01, 0x01, 0x02, 0x10, 0x02, - 0x01, 0x01, 0x06, 0x0C, 0x17, 0x02, 0x02, 0x01, 0x01, 0x0E, 0x02, 0x02, - 0x01, 0x03, 0x0E, 0x37, 0x17, 0x06, 0x11, 0x02, 0x00, 0x01, 0x01, 0x02, - 0x02, 0x5B, 0x01, 0x02, 0x0B, 0x02, 0x01, 0x08, 0x0B, 0x37, 0x03, 0x00, - 0x04, 0xFF, 0x2C, 0x99, 0x02, 0x00, 0x00, 0x00, 0xBD, 0x01, 0x01, 0x0E, - 0x05, 0x02, 0x63, 0x28, 0xBF, 0x01, 0x08, 0x08, 0x80, 0x2E, 0x0E, 0x05, - 0x02, 0x63, 0x28, 0x00, 0x00, 0xBD, 0x86, 0x2E, 0x05, 0x15, 0x01, 0x01, - 0x0E, 0x05, 0x02, 0x67, 0x28, 0xBF, 0x01, 0x00, 0x0E, 0x05, 0x02, 0x67, - 0x28, 0x01, 0x02, 0x86, 0x3E, 0x04, 0x1C, 0x01, 0x19, 0x0E, 0x05, 0x02, - 0x67, 0x28, 0xBF, 0x01, 0x18, 0x0E, 0x05, 0x02, 0x67, 0x28, 0x82, 0x01, - 0x18, 0xB4, 0x87, 0x82, 0x01, 0x18, 0x30, 0x05, 0x02, 0x67, 0x28, 0x00, - 0x00, 0xBD, 0x06, 0x02, 0x68, 0x28, 0x00, 0x00, 0x01, 0x02, 0x95, 0xC0, - 0x01, 0x08, 0x0B, 0xC0, 0x08, 0x00, 0x00, 0x01, 0x03, 0x95, 0xC0, 0x01, - 0x08, 0x0B, 0xC0, 0x08, 0x01, 0x08, 0x0B, 0xC0, 0x08, 0x00, 0x00, 0x01, - 0x01, 0x95, 0xC0, 0x00, 0x00, 0x3A, 0x26, 0x56, 0x05, 0x01, 0x00, 0x25, - 0xCD, 0x04, 0x76, 0x02, 0x03, 0x00, 0x8F, 0x2E, 0x03, 0x01, 0x01, 0x00, - 0x26, 0x02, 0x01, 0x0A, 0x06, 0x10, 0x26, 0x01, 0x01, 0x0B, 0x8E, 0x08, - 0x2C, 0x02, 0x00, 0x0E, 0x06, 0x01, 0x00, 0x5A, 0x04, 0x6A, 0x25, 0x01, - 0x7F, 0x00, 0x00, 0x01, 0x15, 0x85, 0x3E, 0x44, 0x50, 0x25, 0x50, 0x25, - 0x29, 0x00, 0x00, 0x01, 0x01, 0x44, 0xC2, 0x00, 0x00, 0x44, 0x38, 0x95, - 0x44, 0x26, 0x06, 0x05, 0xC0, 0x25, 0x5B, 0x04, 0x78, 0x25, 0x00, 0x00, - 0x26, 0x01, 0x81, 0xAC, 0x00, 0x0E, 0x06, 0x04, 0x25, 0x01, 0x7F, 0x00, - 0x98, 0x57, 0x00, 0x02, 0x03, 0x00, 0x77, 0x2C, 0x98, 0x03, 0x01, 0x02, - 0x01, 0x01, 0x0F, 0x17, 0x02, 0x01, 0x01, 0x04, 0x11, 0x01, 0x0F, 0x17, - 0x02, 0x01, 0x01, 0x08, 0x11, 0x01, 0x0F, 0x17, 0x01, 0x00, 0x38, 0x0E, - 0x06, 0x10, 0x25, 0x01, 0x00, 0x01, 0x18, 0x02, 0x00, 0x06, 0x03, 0x47, - 0x04, 0x01, 0x48, 0x04, 0x80, 0x68, 0x01, 0x01, 0x38, 0x0E, 0x06, 0x10, - 0x25, 0x01, 0x01, 0x01, 0x10, 0x02, 0x00, 0x06, 0x03, 0x47, 0x04, 0x01, - 0x48, 0x04, 0x80, 0x52, 0x01, 0x02, 0x38, 0x0E, 0x06, 0x0F, 0x25, 0x01, - 0x01, 0x01, 0x20, 0x02, 0x00, 0x06, 0x03, 0x47, 0x04, 0x01, 0x48, 0x04, - 0x3D, 0x01, 0x03, 0x38, 0x0E, 0x06, 0x0E, 0x25, 0x25, 0x01, 0x10, 0x02, - 0x00, 0x06, 0x03, 0x45, 0x04, 0x01, 0x46, 0x04, 0x29, 0x01, 0x04, 0x38, - 0x0E, 0x06, 0x0E, 0x25, 0x25, 0x01, 0x20, 0x02, 0x00, 0x06, 0x03, 0x45, - 0x04, 0x01, 0x46, 0x04, 0x15, 0x01, 0x05, 0x38, 0x0E, 0x06, 0x0C, 0x25, - 0x25, 0x02, 0x00, 0x06, 0x03, 0x49, 0x04, 0x01, 0x4A, 0x04, 0x03, 0x66, - 0x28, 0x25, 0x00, 0x00, 0x98, 0x01, 0x0C, 0x11, 0x01, 0x02, 0x0F, 0x00, - 0x00, 0x98, 0x01, 0x0C, 0x11, 0x26, 0x59, 0x44, 0x01, 0x03, 0x0A, 0x17, - 0x00, 0x00, 0x98, 0x01, 0x0C, 0x11, 0x01, 0x01, 0x0E, 0x00, 0x00, 0x98, - 0x01, 0x0C, 0x11, 0x58, 0x00, 0x00, 0x1B, 0x01, 0x00, 0x73, 0x2E, 0x26, - 0x06, 0x22, 0x01, 0x01, 0x38, 0x0E, 0x06, 0x06, 0x25, 0x01, 0x00, 0x9C, - 0x04, 0x14, 0x01, 0x02, 0x38, 0x0E, 0x06, 0x0D, 0x25, 0x75, 0x2E, 0x01, - 0x01, 0x0E, 0x06, 0x03, 0x01, 0x10, 0x37, 0x04, 0x01, 0x25, 0x04, 0x01, - 0x25, 0x79, 0x2E, 0x05, 0x33, 0x2F, 0x06, 0x30, 0x84, 0x2E, 0x01, 0x14, - 0x38, 0x0E, 0x06, 0x06, 0x25, 0x01, 0x02, 0x37, 0x04, 0x22, 0x01, 0x15, - 0x38, 0x0E, 0x06, 0x09, 0x25, 0xAB, 0x06, 0x03, 0x01, 0x7F, 0x9C, 0x04, - 0x13, 0x01, 0x16, 0x38, 0x0E, 0x06, 0x06, 0x25, 0x01, 0x01, 0x37, 0x04, - 0x07, 0x25, 0x01, 0x04, 0x37, 0x01, 0x00, 0x25, 0x1A, 0x06, 0x03, 0x01, - 0x08, 0x37, 0x00, 0x00, 0x1B, 0x26, 0x05, 0x13, 0x2F, 0x06, 0x10, 0x84, - 0x2E, 0x01, 0x15, 0x0E, 0x06, 0x08, 0x25, 0xAB, 0x01, 0x00, 0x75, 0x3E, - 0x04, 0x01, 0x20, 0x00, 0x00, 0xCB, 0x01, 0x07, 0x17, 0x01, 0x01, 0x0F, - 0x06, 0x02, 0x70, 0x28, 0x00, 0x01, 0x03, 0x00, 0x29, 0x1A, 0x06, 0x05, - 0x02, 0x00, 0x85, 0x3E, 0x00, 0xCB, 0x25, 0x04, 0x74, 0x00, 0x01, 0x14, - 0xCE, 0x01, 0x01, 0xDB, 0x29, 0x26, 0x01, 0x00, 0xC6, 0x01, 0x16, 0xCE, - 0xD4, 0x29, 0x00, 0x00, 0x01, 0x0B, 0xDB, 0x4C, 0x26, 0x26, 0x01, 0x03, - 0x08, 0xDA, 0xDA, 0x18, 0x26, 0x56, 0x06, 0x02, 0x25, 0x00, 0xDA, 0x1D, - 0x26, 0x06, 0x05, 0x82, 0x44, 0xD5, 0x04, 0x77, 0x25, 0x04, 0x6C, 0x00, - 0x21, 0x01, 0x0F, 0xDB, 0x26, 0x90, 0x2C, 0x01, 0x86, 0x03, 0x10, 0x06, - 0x0C, 0x01, 0x04, 0x08, 0xDA, 0x7E, 0x2E, 0xDB, 0x76, 0x2E, 0xDB, 0x04, - 0x02, 0x5C, 0xDA, 0x26, 0xD9, 0x82, 0x44, 0xD5, 0x00, 0x02, 0xA2, 0xA4, - 0x08, 0xA0, 0x08, 0xA3, 0x08, 0xA5, 0x08, 0xA1, 0x08, 0x27, 0x08, 0x03, - 0x00, 0x01, 0x01, 0xDB, 0x01, 0x27, 0x8C, 0x2E, 0x08, 0x8F, 0x2E, 0x01, - 0x01, 0x0B, 0x08, 0x02, 0x00, 0x06, 0x04, 0x5C, 0x02, 0x00, 0x08, 0x81, - 0x2C, 0x38, 0x09, 0x26, 0x59, 0x06, 0x24, 0x02, 0x00, 0x05, 0x04, 0x44, - 0x5C, 0x44, 0x5D, 0x01, 0x04, 0x09, 0x26, 0x56, 0x06, 0x03, 0x25, 0x01, - 0x00, 0x26, 0x01, 0x04, 0x08, 0x02, 0x00, 0x08, 0x03, 0x00, 0x44, 0x01, - 0x04, 0x08, 0x38, 0x08, 0x44, 0x04, 0x03, 0x25, 0x01, 0x7F, 0x03, 0x01, - 0xDA, 0x92, 0x2C, 0xD9, 0x78, 0x01, 0x04, 0x19, 0x78, 0x01, 0x04, 0x08, - 0x01, 0x1C, 0x32, 0x78, 0x01, 0x20, 0xD5, 0x8B, 0x8C, 0x2E, 0xD7, 0x8F, - 0x2E, 0x26, 0x01, 0x01, 0x0B, 0xD9, 0x8E, 0x44, 0x26, 0x06, 0x0F, 0x5B, - 0x38, 0x2C, 0x26, 0xC5, 0x05, 0x02, 0x60, 0x28, 0xD9, 0x44, 0x5C, 0x44, - 0x04, 0x6E, 0x5E, 0x01, 0x01, 0xDB, 0x01, 0x00, 0xDB, 0x02, 0x00, 0x06, - 0x81, 0x5A, 0x02, 0x00, 0xD9, 0xA2, 0x06, 0x0E, 0x01, 0x83, 0xFE, 0x01, - 0xD9, 0x87, 0xA2, 0x01, 0x04, 0x09, 0x26, 0xD9, 0x5B, 0xD7, 0xA4, 0x06, - 0x16, 0x01, 0x00, 0xD9, 0x89, 0xA4, 0x01, 0x04, 0x09, 0x26, 0xD9, 0x01, - 0x02, 0x09, 0x26, 0xD9, 0x01, 0x00, 0xDB, 0x01, 0x03, 0x09, 0xD6, 0xA0, - 0x06, 0x0C, 0x01, 0x01, 0xD9, 0x01, 0x01, 0xD9, 0x80, 0x2E, 0x01, 0x08, - 0x09, 0xDB, 0xA3, 0x06, 0x19, 0x01, 0x0D, 0xD9, 0xA3, 0x01, 0x04, 0x09, - 0x26, 0xD9, 0x01, 0x02, 0x09, 0xD9, 0x42, 0x06, 0x03, 0x01, 0x03, 0xD8, - 0x43, 0x06, 0x03, 0x01, 0x01, 0xD8, 0xA5, 0x26, 0x06, 0x36, 0x01, 0x0A, - 0xD9, 0x01, 0x04, 0x09, 0x26, 0xD9, 0x5D, 0xD9, 0x40, 0x01, 0x00, 0x26, - 0x01, 0x82, 0x80, 0x80, 0x80, 0x00, 0x17, 0x06, 0x0A, 0x01, 0xFD, 0xFF, - 0xFF, 0xFF, 0x7F, 0x17, 0x01, 0x1D, 0xD9, 0x26, 0x01, 0x20, 0x0A, 0x06, - 0x0C, 0x9E, 0x11, 0x01, 0x01, 0x17, 0x06, 0x02, 0x26, 0xD9, 0x5A, 0x04, - 0x6E, 0x5E, 0x04, 0x01, 0x25, 0xA1, 0x06, 0x0A, 0x01, 0x0B, 0xD9, 0x01, - 0x02, 0xD9, 0x01, 0x82, 0x00, 0xD9, 0x27, 0x26, 0x06, 0x1F, 0x01, 0x10, - 0xD9, 0x01, 0x04, 0x09, 0x26, 0xD9, 0x5D, 0xD9, 0x83, 0x2C, 0x01, 0x00, - 0x9E, 0x0F, 0x06, 0x0A, 0x26, 0x1E, 0x26, 0xDB, 0x82, 0x44, 0xD5, 0x5A, - 0x04, 0x72, 0x5E, 0x04, 0x01, 0x25, 0x02, 0x01, 0x56, 0x05, 0x11, 0x01, - 0x15, 0xD9, 0x02, 0x01, 0x26, 0xD9, 0x26, 0x06, 0x06, 0x5B, 0x01, 0x00, - 0xDB, 0x04, 0x77, 0x25, 0x00, 0x00, 0x01, 0x10, 0xDB, 0x77, 0x2C, 0x26, - 0xCA, 0x06, 0x0C, 0xA9, 0x23, 0x26, 0x5C, 0xDA, 0x26, 0xD9, 0x82, 0x44, - 0xD5, 0x04, 0x0D, 0x26, 0xC8, 0x44, 0xA9, 0x22, 0x26, 0x5A, 0xDA, 0x26, - 0xDB, 0x82, 0x44, 0xD5, 0x00, 0x00, 0x9A, 0x01, 0x14, 0xDB, 0x01, 0x0C, - 0xDA, 0x82, 0x01, 0x0C, 0xD5, 0x00, 0x00, 0x4F, 0x26, 0x01, 0x00, 0x0E, - 0x06, 0x02, 0x5E, 0x00, 0xCB, 0x25, 0x04, 0x73, 0x00, 0x26, 0xD9, 0xD5, - 0x00, 0x00, 0x26, 0xDB, 0xD5, 0x00, 0x01, 0x03, 0x00, 0x41, 0x25, 0x26, - 0x01, 0x10, 0x17, 0x06, 0x06, 0x01, 0x04, 0xDB, 0x02, 0x00, 0xDB, 0x26, - 0x01, 0x08, 0x17, 0x06, 0x06, 0x01, 0x03, 0xDB, 0x02, 0x00, 0xDB, 0x26, - 0x01, 0x20, 0x17, 0x06, 0x06, 0x01, 0x05, 0xDB, 0x02, 0x00, 0xDB, 0x26, - 0x01, 0x80, 0x40, 0x17, 0x06, 0x06, 0x01, 0x06, 0xDB, 0x02, 0x00, 0xDB, - 0x01, 0x04, 0x17, 0x06, 0x06, 0x01, 0x02, 0xDB, 0x02, 0x00, 0xDB, 0x00, - 0x00, 0x26, 0x01, 0x08, 0x4D, 0xDB, 0xDB, 0x00, 0x00, 0x26, 0x01, 0x10, - 0x4D, 0xDB, 0xD9, 0x00, 0x00, 0x26, 0x50, 0x06, 0x02, 0x25, 0x00, 0xCB, - 0x25, 0x04, 0x76 + 0x09, 0x25, 0x01, 0x10, 0x17, 0x06, 0x01, 0x9D, 0x04, 0x35, 0x01, 0x01, + 0x38, 0x0E, 0x06, 0x2C, 0x25, 0x25, 0x01, 0x00, 0x75, 0x3E, 0xB1, 0x86, + 0x2E, 0x01, 0x01, 0x0E, 0x01, 0x01, 0xA6, 0x37, 0x06, 0x17, 0x29, 0x1A, + 0x36, 0x06, 0x04, 0xCB, 0x25, 0x04, 0x78, 0x01, 0x80, 0x64, 0xC3, 0x01, + 0x01, 0x75, 0x3E, 0x01, 0x17, 0x85, 0x3E, 0x04, 0x01, 0x9D, 0x04, 0x03, + 0x70, 0x28, 0x25, 0x04, 0xFF, 0x34, 0x01, 0x26, 0x03, 0x00, 0x09, 0x26, + 0x56, 0x06, 0x02, 0x66, 0x28, 0x02, 0x00, 0x00, 0x00, 0x98, 0x01, 0x0F, + 0x17, 0x00, 0x00, 0x74, 0x2E, 0x01, 0x00, 0x38, 0x0E, 0x06, 0x10, 0x25, + 0x26, 0x01, 0x01, 0x0D, 0x06, 0x03, 0x25, 0x01, 0x02, 0x74, 0x3E, 0x01, + 0x00, 0x04, 0x21, 0x01, 0x01, 0x38, 0x0E, 0x06, 0x14, 0x25, 0x01, 0x00, + 0x74, 0x3E, 0x26, 0x01, 0x80, 0x64, 0x0E, 0x06, 0x05, 0x01, 0x82, 0x00, + 0x08, 0x28, 0x58, 0x04, 0x07, 0x25, 0x01, 0x82, 0x00, 0x08, 0x28, 0x25, + 0x00, 0x00, 0x01, 0x00, 0x2F, 0x06, 0x05, 0x3A, 0xAA, 0x37, 0x04, 0x78, + 0x26, 0x06, 0x04, 0x01, 0x01, 0x8D, 0x3E, 0x00, 0x01, 0xBD, 0xA8, 0xBD, + 0xA8, 0xBF, 0x82, 0x44, 0x26, 0x03, 0x00, 0xB4, 0x99, 0x99, 0x02, 0x00, + 0x4B, 0x26, 0x56, 0x06, 0x0A, 0x01, 0x03, 0xA6, 0x06, 0x02, 0x70, 0x28, + 0x25, 0x04, 0x03, 0x5A, 0x88, 0x3C, 0x00, 0x00, 0x2F, 0x06, 0x0B, 0x84, + 0x2E, 0x01, 0x14, 0x0D, 0x06, 0x02, 0x70, 0x28, 0x04, 0x11, 0xCB, 0x01, + 0x07, 0x17, 0x26, 0x01, 0x02, 0x0D, 0x06, 0x06, 0x06, 0x02, 0x70, 0x28, + 0x04, 0x70, 0x25, 0xC0, 0x01, 0x01, 0x0D, 0x33, 0x37, 0x06, 0x02, 0x5F, + 0x28, 0x26, 0x01, 0x01, 0xC6, 0x36, 0xB0, 0x00, 0x01, 0xB6, 0x01, 0x0B, + 0x0E, 0x05, 0x02, 0x70, 0x28, 0x26, 0x01, 0x03, 0x0E, 0x06, 0x08, 0xBE, + 0x06, 0x02, 0x66, 0x28, 0x44, 0x25, 0x00, 0x44, 0x55, 0xBE, 0xA8, 0x26, + 0x06, 0x23, 0xBE, 0xA8, 0x26, 0x54, 0x26, 0x06, 0x18, 0x26, 0x01, 0x82, + 0x00, 0x0F, 0x06, 0x05, 0x01, 0x82, 0x00, 0x04, 0x01, 0x26, 0x03, 0x00, + 0x82, 0x02, 0x00, 0xB4, 0x02, 0x00, 0x51, 0x04, 0x65, 0x99, 0x52, 0x04, + 0x5A, 0x99, 0x99, 0x53, 0x26, 0x06, 0x02, 0x35, 0x00, 0x25, 0x2B, 0x00, + 0x00, 0x77, 0x2C, 0x9F, 0x01, 0x7F, 0xAE, 0x26, 0x56, 0x06, 0x02, 0x35, + 0x28, 0x26, 0x05, 0x02, 0x70, 0x28, 0x38, 0x17, 0x0D, 0x06, 0x02, 0x72, + 0x28, 0x3B, 0x00, 0x00, 0x9A, 0xB6, 0x01, 0x14, 0x0D, 0x06, 0x02, 0x70, + 0x28, 0x82, 0x01, 0x0C, 0x08, 0x01, 0x0C, 0xB4, 0x99, 0x82, 0x26, 0x01, + 0x0C, 0x08, 0x01, 0x0C, 0x30, 0x05, 0x02, 0x62, 0x28, 0x00, 0x00, 0xB7, + 0x06, 0x02, 0x70, 0x28, 0x06, 0x02, 0x64, 0x28, 0x00, 0x0A, 0xB6, 0x01, + 0x02, 0x0E, 0x05, 0x02, 0x70, 0x28, 0xBD, 0x03, 0x00, 0x02, 0x00, 0x93, + 0x2C, 0x0A, 0x02, 0x00, 0x92, 0x2C, 0x0F, 0x37, 0x06, 0x02, 0x71, 0x28, + 0x02, 0x00, 0x91, 0x2C, 0x0D, 0x06, 0x02, 0x69, 0x28, 0x02, 0x00, 0x94, + 0x3C, 0x8A, 0x01, 0x20, 0xB4, 0x01, 0x00, 0x03, 0x01, 0xBF, 0x03, 0x02, + 0x02, 0x02, 0x01, 0x20, 0x0F, 0x06, 0x02, 0x6E, 0x28, 0x82, 0x02, 0x02, + 0xB4, 0x02, 0x02, 0x8C, 0x2E, 0x0E, 0x02, 0x02, 0x01, 0x00, 0x0F, 0x17, + 0x06, 0x0B, 0x8B, 0x82, 0x02, 0x02, 0x30, 0x06, 0x04, 0x01, 0x7F, 0x03, + 0x01, 0x8B, 0x82, 0x02, 0x02, 0x31, 0x02, 0x02, 0x8C, 0x3E, 0x02, 0x00, + 0x90, 0x02, 0x01, 0x96, 0xBD, 0x26, 0xC1, 0x56, 0x06, 0x02, 0x60, 0x28, + 0x77, 0x02, 0x01, 0x96, 0xBF, 0x06, 0x02, 0x61, 0x28, 0x26, 0x06, 0x81, + 0x47, 0xBD, 0xA8, 0xA4, 0x03, 0x03, 0xA2, 0x03, 0x04, 0xA0, 0x03, 0x05, + 0xA3, 0x03, 0x06, 0xA5, 0x03, 0x07, 0xA1, 0x03, 0x08, 0x27, 0x03, 0x09, + 0x26, 0x06, 0x81, 0x18, 0xBD, 0x01, 0x00, 0x38, 0x0E, 0x06, 0x0F, 0x25, + 0x02, 0x03, 0x05, 0x02, 0x6A, 0x28, 0x01, 0x00, 0x03, 0x03, 0xBC, 0x04, + 0x80, 0x7F, 0x01, 0x01, 0x38, 0x0E, 0x06, 0x0F, 0x25, 0x02, 0x05, 0x05, + 0x02, 0x6A, 0x28, 0x01, 0x00, 0x03, 0x05, 0xBA, 0x04, 0x80, 0x6A, 0x01, + 0x83, 0xFE, 0x01, 0x38, 0x0E, 0x06, 0x0F, 0x25, 0x02, 0x04, 0x05, 0x02, + 0x6A, 0x28, 0x01, 0x00, 0x03, 0x04, 0xBB, 0x04, 0x80, 0x53, 0x01, 0x0D, + 0x38, 0x0E, 0x06, 0x0E, 0x25, 0x02, 0x06, 0x05, 0x02, 0x6A, 0x28, 0x01, + 0x00, 0x03, 0x06, 0xB8, 0x04, 0x3F, 0x01, 0x0A, 0x38, 0x0E, 0x06, 0x0E, + 0x25, 0x02, 0x07, 0x05, 0x02, 0x6A, 0x28, 0x01, 0x00, 0x03, 0x07, 0xB8, + 0x04, 0x2B, 0x01, 0x0B, 0x38, 0x0E, 0x06, 0x0E, 0x25, 0x02, 0x08, 0x05, + 0x02, 0x6A, 0x28, 0x01, 0x00, 0x03, 0x08, 0xB8, 0x04, 0x17, 0x01, 0x10, + 0x38, 0x0E, 0x06, 0x0E, 0x25, 0x02, 0x09, 0x05, 0x02, 0x6A, 0x28, 0x01, + 0x00, 0x03, 0x09, 0xAC, 0x04, 0x03, 0x6A, 0x28, 0x25, 0x04, 0xFE, 0x64, + 0x02, 0x04, 0x06, 0x0D, 0x02, 0x04, 0x01, 0x05, 0x0F, 0x06, 0x02, 0x67, + 0x28, 0x01, 0x01, 0x86, 0x3E, 0x99, 0x04, 0x0C, 0xA2, 0x01, 0x05, 0x0F, + 0x06, 0x02, 0x67, 0x28, 0x01, 0x01, 0x86, 0x3E, 0x99, 0x02, 0x01, 0x00, + 0x04, 0xB6, 0x01, 0x0C, 0x0E, 0x05, 0x02, 0x70, 0x28, 0xBF, 0x01, 0x03, + 0x0E, 0x05, 0x02, 0x6B, 0x28, 0xBD, 0x26, 0x7A, 0x3E, 0x26, 0x01, 0x20, + 0x10, 0x06, 0x02, 0x6B, 0x28, 0x40, 0x44, 0x11, 0x01, 0x01, 0x17, 0x05, + 0x02, 0x6B, 0x28, 0xBF, 0x26, 0x01, 0x81, 0x05, 0x0F, 0x06, 0x02, 0x6B, + 0x28, 0x26, 0x7C, 0x3E, 0x7B, 0x44, 0xB4, 0x90, 0x2C, 0x01, 0x86, 0x03, + 0x10, 0x03, 0x00, 0x77, 0x2C, 0xC9, 0x03, 0x01, 0x01, 0x02, 0x03, 0x02, + 0x02, 0x00, 0x06, 0x21, 0xBF, 0x26, 0x26, 0x01, 0x02, 0x0A, 0x44, 0x01, + 0x06, 0x0F, 0x37, 0x06, 0x02, 0x6B, 0x28, 0x03, 0x02, 0xBF, 0x02, 0x01, + 0x01, 0x01, 0x0B, 0x01, 0x03, 0x08, 0x0E, 0x05, 0x02, 0x6B, 0x28, 0x04, + 0x08, 0x02, 0x01, 0x06, 0x04, 0x01, 0x00, 0x03, 0x02, 0xBD, 0x26, 0x03, + 0x03, 0x26, 0x01, 0x84, 0x00, 0x0F, 0x06, 0x02, 0x6C, 0x28, 0x82, 0x44, + 0xB4, 0x02, 0x02, 0x02, 0x01, 0x02, 0x03, 0x4E, 0x26, 0x06, 0x01, 0x28, + 0x25, 0x99, 0x00, 0x02, 0x03, 0x00, 0x03, 0x01, 0x02, 0x00, 0x95, 0x02, + 0x01, 0x02, 0x00, 0x39, 0x26, 0x01, 0x00, 0x0E, 0x06, 0x02, 0x5E, 0x00, + 0xCD, 0x04, 0x74, 0x02, 0x01, 0x00, 0x03, 0x00, 0xBF, 0xA8, 0x26, 0x06, + 0x80, 0x43, 0xBF, 0x01, 0x01, 0x38, 0x0E, 0x06, 0x06, 0x25, 0x01, 0x81, + 0x7F, 0x04, 0x2E, 0x01, 0x80, 0x40, 0x38, 0x0E, 0x06, 0x07, 0x25, 0x01, + 0x83, 0xFE, 0x00, 0x04, 0x20, 0x01, 0x80, 0x41, 0x38, 0x0E, 0x06, 0x07, + 0x25, 0x01, 0x84, 0x80, 0x00, 0x04, 0x12, 0x01, 0x80, 0x42, 0x38, 0x0E, + 0x06, 0x07, 0x25, 0x01, 0x88, 0x80, 0x00, 0x04, 0x04, 0x01, 0x00, 0x44, + 0x25, 0x02, 0x00, 0x37, 0x03, 0x00, 0x04, 0xFF, 0x39, 0x99, 0x77, 0x2C, + 0xC7, 0x05, 0x09, 0x02, 0x00, 0x01, 0x83, 0xFF, 0x7F, 0x17, 0x03, 0x00, + 0x90, 0x2C, 0x01, 0x86, 0x03, 0x10, 0x06, 0x3A, 0xB9, 0x26, 0x7F, 0x3D, + 0x41, 0x25, 0x26, 0x01, 0x08, 0x0B, 0x37, 0x01, 0x8C, 0x80, 0x00, 0x37, + 0x17, 0x02, 0x00, 0x17, 0x02, 0x00, 0x01, 0x8C, 0x80, 0x00, 0x17, 0x06, + 0x19, 0x26, 0x01, 0x81, 0x7F, 0x17, 0x06, 0x05, 0x01, 0x84, 0x80, 0x00, + 0x37, 0x26, 0x01, 0x83, 0xFE, 0x00, 0x17, 0x06, 0x05, 0x01, 0x88, 0x80, + 0x00, 0x37, 0x03, 0x00, 0x04, 0x09, 0x02, 0x00, 0x01, 0x8C, 0x88, 0x01, + 0x17, 0x03, 0x00, 0x16, 0xBD, 0xA8, 0x26, 0x06, 0x23, 0xBD, 0xA8, 0x26, + 0x15, 0x26, 0x06, 0x18, 0x26, 0x01, 0x82, 0x00, 0x0F, 0x06, 0x05, 0x01, + 0x82, 0x00, 0x04, 0x01, 0x26, 0x03, 0x01, 0x82, 0x02, 0x01, 0xB4, 0x02, + 0x01, 0x12, 0x04, 0x65, 0x99, 0x13, 0x04, 0x5A, 0x99, 0x14, 0x99, 0x02, + 0x00, 0x2A, 0x00, 0x00, 0xB7, 0x26, 0x58, 0x06, 0x07, 0x25, 0x06, 0x02, + 0x64, 0x28, 0x04, 0x74, 0x00, 0x00, 0xC0, 0x01, 0x03, 0xBE, 0x44, 0x25, + 0x44, 0x00, 0x00, 0xBD, 0xC4, 0x00, 0x03, 0x01, 0x00, 0x03, 0x00, 0xBD, + 0xA8, 0x26, 0x06, 0x80, 0x50, 0xBF, 0x03, 0x01, 0xBF, 0x03, 0x02, 0x02, + 0x01, 0x01, 0x08, 0x0E, 0x06, 0x16, 0x02, 0x02, 0x01, 0x0F, 0x0C, 0x06, + 0x0D, 0x01, 0x01, 0x02, 0x02, 0x01, 0x10, 0x08, 0x0B, 0x02, 0x00, 0x37, + 0x03, 0x00, 0x04, 0x2A, 0x02, 0x01, 0x01, 0x02, 0x10, 0x02, 0x01, 0x01, + 0x06, 0x0C, 0x17, 0x02, 0x02, 0x01, 0x01, 0x0E, 0x02, 0x02, 0x01, 0x03, + 0x0E, 0x37, 0x17, 0x06, 0x11, 0x02, 0x00, 0x01, 0x01, 0x02, 0x02, 0x5B, + 0x01, 0x02, 0x0B, 0x02, 0x01, 0x08, 0x0B, 0x37, 0x03, 0x00, 0x04, 0xFF, + 0x2C, 0x99, 0x02, 0x00, 0x00, 0x00, 0xBD, 0x01, 0x01, 0x0E, 0x05, 0x02, + 0x63, 0x28, 0xBF, 0x01, 0x08, 0x08, 0x80, 0x2E, 0x0E, 0x05, 0x02, 0x63, + 0x28, 0x00, 0x00, 0xBD, 0x86, 0x2E, 0x05, 0x15, 0x01, 0x01, 0x0E, 0x05, + 0x02, 0x67, 0x28, 0xBF, 0x01, 0x00, 0x0E, 0x05, 0x02, 0x67, 0x28, 0x01, + 0x02, 0x86, 0x3E, 0x04, 0x1C, 0x01, 0x19, 0x0E, 0x05, 0x02, 0x67, 0x28, + 0xBF, 0x01, 0x18, 0x0E, 0x05, 0x02, 0x67, 0x28, 0x82, 0x01, 0x18, 0xB4, + 0x87, 0x82, 0x01, 0x18, 0x30, 0x05, 0x02, 0x67, 0x28, 0x00, 0x00, 0xBD, + 0x06, 0x02, 0x68, 0x28, 0x00, 0x00, 0x01, 0x02, 0x95, 0xC0, 0x01, 0x08, + 0x0B, 0xC0, 0x08, 0x00, 0x00, 0x01, 0x03, 0x95, 0xC0, 0x01, 0x08, 0x0B, + 0xC0, 0x08, 0x01, 0x08, 0x0B, 0xC0, 0x08, 0x00, 0x00, 0x01, 0x01, 0x95, + 0xC0, 0x00, 0x00, 0x3A, 0x26, 0x56, 0x05, 0x01, 0x00, 0x25, 0xCD, 0x04, + 0x76, 0x02, 0x03, 0x00, 0x8F, 0x2E, 0x03, 0x01, 0x01, 0x00, 0x26, 0x02, + 0x01, 0x0A, 0x06, 0x10, 0x26, 0x01, 0x01, 0x0B, 0x8E, 0x08, 0x2C, 0x02, + 0x00, 0x0E, 0x06, 0x01, 0x00, 0x5A, 0x04, 0x6A, 0x25, 0x01, 0x7F, 0x00, + 0x00, 0x01, 0x15, 0x85, 0x3E, 0x44, 0x50, 0x25, 0x50, 0x25, 0x29, 0x00, + 0x00, 0x01, 0x01, 0x44, 0xC2, 0x00, 0x00, 0x44, 0x38, 0x95, 0x44, 0x26, + 0x06, 0x05, 0xC0, 0x25, 0x5B, 0x04, 0x78, 0x25, 0x00, 0x00, 0x26, 0x01, + 0x81, 0xAC, 0x00, 0x0E, 0x06, 0x04, 0x25, 0x01, 0x7F, 0x00, 0x98, 0x57, + 0x00, 0x02, 0x03, 0x00, 0x77, 0x2C, 0x98, 0x03, 0x01, 0x02, 0x01, 0x01, + 0x0F, 0x17, 0x02, 0x01, 0x01, 0x04, 0x11, 0x01, 0x0F, 0x17, 0x02, 0x01, + 0x01, 0x08, 0x11, 0x01, 0x0F, 0x17, 0x01, 0x00, 0x38, 0x0E, 0x06, 0x10, + 0x25, 0x01, 0x00, 0x01, 0x18, 0x02, 0x00, 0x06, 0x03, 0x47, 0x04, 0x01, + 0x48, 0x04, 0x80, 0x68, 0x01, 0x01, 0x38, 0x0E, 0x06, 0x10, 0x25, 0x01, + 0x01, 0x01, 0x10, 0x02, 0x00, 0x06, 0x03, 0x47, 0x04, 0x01, 0x48, 0x04, + 0x80, 0x52, 0x01, 0x02, 0x38, 0x0E, 0x06, 0x0F, 0x25, 0x01, 0x01, 0x01, + 0x20, 0x02, 0x00, 0x06, 0x03, 0x47, 0x04, 0x01, 0x48, 0x04, 0x3D, 0x01, + 0x03, 0x38, 0x0E, 0x06, 0x0E, 0x25, 0x25, 0x01, 0x10, 0x02, 0x00, 0x06, + 0x03, 0x45, 0x04, 0x01, 0x46, 0x04, 0x29, 0x01, 0x04, 0x38, 0x0E, 0x06, + 0x0E, 0x25, 0x25, 0x01, 0x20, 0x02, 0x00, 0x06, 0x03, 0x45, 0x04, 0x01, + 0x46, 0x04, 0x15, 0x01, 0x05, 0x38, 0x0E, 0x06, 0x0C, 0x25, 0x25, 0x02, + 0x00, 0x06, 0x03, 0x49, 0x04, 0x01, 0x4A, 0x04, 0x03, 0x66, 0x28, 0x25, + 0x00, 0x00, 0x98, 0x01, 0x0C, 0x11, 0x01, 0x02, 0x0F, 0x00, 0x00, 0x98, + 0x01, 0x0C, 0x11, 0x26, 0x59, 0x44, 0x01, 0x03, 0x0A, 0x17, 0x00, 0x00, + 0x98, 0x01, 0x0C, 0x11, 0x01, 0x01, 0x0E, 0x00, 0x00, 0x98, 0x01, 0x0C, + 0x11, 0x58, 0x00, 0x00, 0x1B, 0x01, 0x00, 0x73, 0x2E, 0x26, 0x06, 0x22, + 0x01, 0x01, 0x38, 0x0E, 0x06, 0x06, 0x25, 0x01, 0x00, 0x9C, 0x04, 0x14, + 0x01, 0x02, 0x38, 0x0E, 0x06, 0x0D, 0x25, 0x75, 0x2E, 0x01, 0x01, 0x0E, + 0x06, 0x03, 0x01, 0x10, 0x37, 0x04, 0x01, 0x25, 0x04, 0x01, 0x25, 0x79, + 0x2E, 0x05, 0x33, 0x2F, 0x06, 0x30, 0x84, 0x2E, 0x01, 0x14, 0x38, 0x0E, + 0x06, 0x06, 0x25, 0x01, 0x02, 0x37, 0x04, 0x22, 0x01, 0x15, 0x38, 0x0E, + 0x06, 0x09, 0x25, 0xAB, 0x06, 0x03, 0x01, 0x7F, 0x9C, 0x04, 0x13, 0x01, + 0x16, 0x38, 0x0E, 0x06, 0x06, 0x25, 0x01, 0x01, 0x37, 0x04, 0x07, 0x25, + 0x01, 0x04, 0x37, 0x01, 0x00, 0x25, 0x1A, 0x06, 0x03, 0x01, 0x08, 0x37, + 0x00, 0x00, 0x1B, 0x26, 0x05, 0x13, 0x2F, 0x06, 0x10, 0x84, 0x2E, 0x01, + 0x15, 0x0E, 0x06, 0x08, 0x25, 0xAB, 0x01, 0x00, 0x75, 0x3E, 0x04, 0x01, + 0x20, 0x00, 0x00, 0xCB, 0x01, 0x07, 0x17, 0x01, 0x01, 0x0F, 0x06, 0x02, + 0x70, 0x28, 0x00, 0x01, 0x03, 0x00, 0x29, 0x1A, 0x06, 0x05, 0x02, 0x00, + 0x85, 0x3E, 0x00, 0xCB, 0x25, 0x04, 0x74, 0x00, 0x01, 0x14, 0xCE, 0x01, + 0x01, 0xDB, 0x29, 0x26, 0x01, 0x00, 0xC6, 0x01, 0x16, 0xCE, 0xD4, 0x29, + 0x00, 0x00, 0x01, 0x0B, 0xDB, 0x4C, 0x26, 0x26, 0x01, 0x03, 0x08, 0xDA, + 0xDA, 0x18, 0x26, 0x56, 0x06, 0x02, 0x25, 0x00, 0xDA, 0x1D, 0x26, 0x06, + 0x05, 0x82, 0x44, 0xD5, 0x04, 0x77, 0x25, 0x04, 0x6C, 0x00, 0x21, 0x01, + 0x0F, 0xDB, 0x26, 0x90, 0x2C, 0x01, 0x86, 0x03, 0x10, 0x06, 0x0C, 0x01, + 0x04, 0x08, 0xDA, 0x7E, 0x2E, 0xDB, 0x76, 0x2E, 0xDB, 0x04, 0x02, 0x5C, + 0xDA, 0x26, 0xD9, 0x82, 0x44, 0xD5, 0x00, 0x02, 0xA2, 0xA4, 0x08, 0xA0, + 0x08, 0xA3, 0x08, 0xA5, 0x08, 0xA1, 0x08, 0x27, 0x08, 0x03, 0x00, 0x01, + 0x01, 0xDB, 0x01, 0x27, 0x8C, 0x2E, 0x08, 0x8F, 0x2E, 0x01, 0x01, 0x0B, + 0x08, 0x02, 0x00, 0x06, 0x04, 0x5C, 0x02, 0x00, 0x08, 0x81, 0x2C, 0x38, + 0x09, 0x26, 0x59, 0x06, 0x24, 0x02, 0x00, 0x05, 0x04, 0x44, 0x5C, 0x44, + 0x5D, 0x01, 0x04, 0x09, 0x26, 0x56, 0x06, 0x03, 0x25, 0x01, 0x00, 0x26, + 0x01, 0x04, 0x08, 0x02, 0x00, 0x08, 0x03, 0x00, 0x44, 0x01, 0x04, 0x08, + 0x38, 0x08, 0x44, 0x04, 0x03, 0x25, 0x01, 0x7F, 0x03, 0x01, 0xDA, 0x92, + 0x2C, 0xD9, 0x78, 0x01, 0x04, 0x19, 0x78, 0x01, 0x04, 0x08, 0x01, 0x1C, + 0x32, 0x78, 0x01, 0x20, 0xD5, 0x8B, 0x8C, 0x2E, 0xD7, 0x8F, 0x2E, 0x26, + 0x01, 0x01, 0x0B, 0xD9, 0x8E, 0x44, 0x26, 0x06, 0x0F, 0x5B, 0x38, 0x2C, + 0x26, 0xC5, 0x05, 0x02, 0x60, 0x28, 0xD9, 0x44, 0x5C, 0x44, 0x04, 0x6E, + 0x5E, 0x01, 0x01, 0xDB, 0x01, 0x00, 0xDB, 0x02, 0x00, 0x06, 0x81, 0x5A, + 0x02, 0x00, 0xD9, 0xA2, 0x06, 0x0E, 0x01, 0x83, 0xFE, 0x01, 0xD9, 0x87, + 0xA2, 0x01, 0x04, 0x09, 0x26, 0xD9, 0x5B, 0xD7, 0xA4, 0x06, 0x16, 0x01, + 0x00, 0xD9, 0x89, 0xA4, 0x01, 0x04, 0x09, 0x26, 0xD9, 0x01, 0x02, 0x09, + 0x26, 0xD9, 0x01, 0x00, 0xDB, 0x01, 0x03, 0x09, 0xD6, 0xA0, 0x06, 0x0C, + 0x01, 0x01, 0xD9, 0x01, 0x01, 0xD9, 0x80, 0x2E, 0x01, 0x08, 0x09, 0xDB, + 0xA3, 0x06, 0x19, 0x01, 0x0D, 0xD9, 0xA3, 0x01, 0x04, 0x09, 0x26, 0xD9, + 0x01, 0x02, 0x09, 0xD9, 0x42, 0x06, 0x03, 0x01, 0x03, 0xD8, 0x43, 0x06, + 0x03, 0x01, 0x01, 0xD8, 0xA5, 0x26, 0x06, 0x36, 0x01, 0x0A, 0xD9, 0x01, + 0x04, 0x09, 0x26, 0xD9, 0x5D, 0xD9, 0x40, 0x01, 0x00, 0x26, 0x01, 0x82, + 0x80, 0x80, 0x80, 0x00, 0x17, 0x06, 0x0A, 0x01, 0xFD, 0xFF, 0xFF, 0xFF, + 0x7F, 0x17, 0x01, 0x1D, 0xD9, 0x26, 0x01, 0x20, 0x0A, 0x06, 0x0C, 0x9E, + 0x11, 0x01, 0x01, 0x17, 0x06, 0x02, 0x26, 0xD9, 0x5A, 0x04, 0x6E, 0x5E, + 0x04, 0x01, 0x25, 0xA1, 0x06, 0x0A, 0x01, 0x0B, 0xD9, 0x01, 0x02, 0xD9, + 0x01, 0x82, 0x00, 0xD9, 0x27, 0x26, 0x06, 0x1F, 0x01, 0x10, 0xD9, 0x01, + 0x04, 0x09, 0x26, 0xD9, 0x5D, 0xD9, 0x83, 0x2C, 0x01, 0x00, 0x9E, 0x0F, + 0x06, 0x0A, 0x26, 0x1E, 0x26, 0xDB, 0x82, 0x44, 0xD5, 0x5A, 0x04, 0x72, + 0x5E, 0x04, 0x01, 0x25, 0x02, 0x01, 0x56, 0x05, 0x11, 0x01, 0x15, 0xD9, + 0x02, 0x01, 0x26, 0xD9, 0x26, 0x06, 0x06, 0x5B, 0x01, 0x00, 0xDB, 0x04, + 0x77, 0x25, 0x00, 0x00, 0x01, 0x10, 0xDB, 0x77, 0x2C, 0x26, 0xCA, 0x06, + 0x0C, 0xA9, 0x23, 0x26, 0x5C, 0xDA, 0x26, 0xD9, 0x82, 0x44, 0xD5, 0x04, + 0x0D, 0x26, 0xC8, 0x44, 0xA9, 0x22, 0x26, 0x5A, 0xDA, 0x26, 0xDB, 0x82, + 0x44, 0xD5, 0x00, 0x00, 0x9A, 0x01, 0x14, 0xDB, 0x01, 0x0C, 0xDA, 0x82, + 0x01, 0x0C, 0xD5, 0x00, 0x00, 0x4F, 0x26, 0x01, 0x00, 0x0E, 0x06, 0x02, + 0x5E, 0x00, 0xCB, 0x25, 0x04, 0x73, 0x00, 0x26, 0xD9, 0xD5, 0x00, 0x00, + 0x26, 0xDB, 0xD5, 0x00, 0x01, 0x03, 0x00, 0x41, 0x25, 0x26, 0x01, 0x10, + 0x17, 0x06, 0x06, 0x01, 0x04, 0xDB, 0x02, 0x00, 0xDB, 0x26, 0x01, 0x08, + 0x17, 0x06, 0x06, 0x01, 0x03, 0xDB, 0x02, 0x00, 0xDB, 0x26, 0x01, 0x20, + 0x17, 0x06, 0x06, 0x01, 0x05, 0xDB, 0x02, 0x00, 0xDB, 0x26, 0x01, 0x80, + 0x40, 0x17, 0x06, 0x06, 0x01, 0x06, 0xDB, 0x02, 0x00, 0xDB, 0x01, 0x04, + 0x17, 0x06, 0x06, 0x01, 0x02, 0xDB, 0x02, 0x00, 0xDB, 0x00, 0x00, 0x26, + 0x01, 0x08, 0x4D, 0xDB, 0xDB, 0x00, 0x00, 0x26, 0x01, 0x10, 0x4D, 0xDB, + 0xD9, 0x00, 0x00, 0x26, 0x50, 0x06, 0x02, 0x25, 0x00, 0xCB, 0x25, 0x04, + 0x76 }; static const uint16_t t0_caddr[] = { @@ -811,58 +813,58 @@ static const uint16_t t0_caddr[] = { 694, 730, 740, - 810, - 824, - 830, - 889, - 908, - 943, - 992, - 1068, - 1095, - 1126, - 1137, - 1462, - 1609, - 1633, - 1849, - 1863, - 1872, - 1876, - 1971, - 1992, - 2048, - 2055, - 2066, - 2082, + 818, + 832, + 838, + 897, + 916, + 951, + 1000, + 1076, + 1103, + 1134, + 1145, + 1484, + 1631, + 1655, + 1871, + 1885, + 1894, + 1898, + 1993, + 2014, + 2070, + 2077, 2088, - 2099, - 2134, - 2146, - 2152, - 2167, - 2183, - 2339, - 2348, + 2104, + 2110, + 2121, + 2156, + 2168, + 2174, + 2189, + 2205, 2361, 2370, - 2377, - 2483, - 2508, - 2521, - 2537, - 2555, - 2587, - 2621, - 2989, - 3025, - 3038, - 3052, - 3057, - 3062, - 3128, - 3136, - 3144 + 2383, + 2392, + 2399, + 2505, + 2530, + 2543, + 2559, + 2577, + 2609, + 2643, + 3011, + 3047, + 3060, + 3074, + 3079, + 3084, + 3150, + 3158, + 3166 }; #define T0_INTERPRETED 86 diff --git a/src/ssl/ssl_hs_client.t0 b/src/ssl/ssl_hs_client.t0 index cfe5f78..911fdfc 100644 --- a/src/ssl/ssl_hs_client.t0 +++ b/src/ssl/ssl_hs_client.t0 @@ -805,6 +805,13 @@ cc: DEBUG-BLOB ( addr len -- ) { 1 addr-reneg set8 then close-elt + else + \ No extension received at all, so the server does not + \ support secure renegotiation. This is a hard failure + \ if the server was previously known to support it (i.e. + \ this is a renegotiation). + ext-reneg-length 5 > if ERR_BAD_SECRENEG fail then + 1 addr-reneg set8 then close-elt resume @@ -1257,6 +1264,12 @@ cc: do-client-sign ( -- sig_len ) { wait-co drop repeat 100 send-warning + \ We rejected the renegotiation, + \ but the connection is not dead. + \ We must set back things into + \ working "application data" state. + 1 addr-application_data set8 + 23 addr-record_type_out set8 else do-handshake then diff --git a/src/ssl/ssl_hs_common.t0 b/src/ssl/ssl_hs_common.t0 index 962daa7..dc025ff 100644 --- a/src/ssl/ssl_hs_common.t0 +++ b/src/ssl/ssl_hs_common.t0 @@ -79,6 +79,23 @@ preamble { : NYI ( -- ! ) "NOT YET IMPLEMENTED!" puts cr -1 fail ; +\ Debug function that prints a string (and a newline) on stderr. +cc: DBG ( addr -- ) { + extern void *stderr; + extern int fprintf(void *, const char *, ...); + fprintf(stderr, "%s\n", &t0_datablock[T0_POPi()]); +} + +\ Debug function that prints a string and an integer value (followed +\ by a newline) on stderr. +cc: DBG2 ( addr x -- ) { + extern void *stderr; + extern int fprintf(void *, const char *, ...); + int32_t x = T0_POPi(); + fprintf(stderr, "%s: %ld (0x%08lX)\n", + &t0_datablock[T0_POPi()], (long)x, (unsigned long)(uint32_t)x); +} + \ Mark the context as failed with a specific error code. This also \ returns control to the caller. cc: fail ( err -- ! ) { diff --git a/src/ssl/ssl_hs_server.c b/src/ssl/ssl_hs_server.c index 8a4c01b..3970d28 100644 --- a/src/ssl/ssl_hs_server.c +++ b/src/ssl/ssl_hs_server.c @@ -540,245 +540,248 @@ static const unsigned char t0_codeblock[] = { 0x01, 0x0C, 0x33, 0x00, 0x00, 0x2A, 0x22, 0x01, 0x08, 0x0C, 0x47, 0x5F, 0x22, 0x08, 0x00, 0x01, 0x03, 0x00, 0x75, 0x30, 0x02, 0x00, 0x38, 0x13, 0x01, 0x01, 0x0C, 0x75, 0x42, 0x2C, 0x19, 0x38, 0x06, 0x07, 0x02, 0x00, - 0xCD, 0x03, 0x00, 0x04, 0x75, 0x01, 0x00, 0xC5, 0x02, 0x00, 0x2A, 0x19, - 0x13, 0x06, 0x02, 0x6F, 0x2B, 0xCD, 0x04, 0x76, 0x00, 0x01, 0x00, 0x75, + 0xCE, 0x03, 0x00, 0x04, 0x75, 0x01, 0x00, 0xC5, 0x02, 0x00, 0x2A, 0x19, + 0x13, 0x06, 0x02, 0x6F, 0x2B, 0xCE, 0x04, 0x76, 0x00, 0x01, 0x00, 0x75, 0x42, 0x01, 0x16, 0x87, 0x42, 0x01, 0x00, 0x8A, 0x40, 0x36, 0xAF, 0x35, - 0x06, 0x02, 0x71, 0x2B, 0x06, 0x0A, 0xD4, 0x01, 0x00, 0xD0, 0x01, 0x00, - 0xAB, 0x04, 0x80, 0x46, 0xD4, 0xD1, 0x29, 0xD6, 0x4E, 0x06, 0x01, 0xD2, - 0xD5, 0x2C, 0x4E, 0x06, 0x31, 0x01, 0x00, 0xAC, 0x2A, 0x5B, 0x06, 0x0F, - 0x01, 0x02, 0xA2, 0x05, 0x02, 0x37, 0x2B, 0x29, 0xB0, 0xAE, 0x2A, 0xC6, + 0x06, 0x02, 0x71, 0x2B, 0x06, 0x0A, 0xD5, 0x01, 0x00, 0xD1, 0x01, 0x00, + 0xAB, 0x04, 0x80, 0x46, 0xD5, 0xD2, 0x29, 0xD7, 0x4E, 0x06, 0x01, 0xD3, + 0xD6, 0x2C, 0x4E, 0x06, 0x31, 0x01, 0x00, 0xAC, 0x2A, 0x5B, 0x06, 0x0F, + 0x01, 0x02, 0xA2, 0x05, 0x02, 0x37, 0x2B, 0x29, 0xB0, 0xAE, 0x2A, 0xC7, 0x29, 0x04, 0x19, 0x2A, 0x5D, 0x06, 0x0B, 0x29, 0x01, 0x02, 0xA2, 0x05, 0x02, 0x6E, 0x2B, 0xB0, 0x04, 0x0A, 0xB2, 0x2A, 0x05, 0x04, 0x29, 0xA9, 0x04, 0x02, 0xB1, 0xAD, 0x04, 0x01, 0xB0, 0x01, 0x00, 0xAB, 0x01, 0x00, - 0xD0, 0x3E, 0x01, 0x01, 0x75, 0x42, 0x01, 0x17, 0x87, 0x42, 0x00, 0x00, - 0x3A, 0x3A, 0x00, 0x01, 0x03, 0x00, 0x2C, 0x19, 0x38, 0x06, 0x04, 0xCC, + 0xD1, 0x3E, 0x01, 0x01, 0x75, 0x42, 0x01, 0x17, 0x87, 0x42, 0x00, 0x00, + 0x3A, 0x3A, 0x00, 0x01, 0x03, 0x00, 0x2C, 0x19, 0x38, 0x06, 0x04, 0xCD, 0x29, 0x04, 0x78, 0x01, 0x02, 0x02, 0x00, 0xC4, 0x19, 0x38, 0x06, 0x04, - 0xCC, 0x29, 0x04, 0x78, 0x02, 0x00, 0x01, 0x84, 0x00, 0x08, 0x2B, 0x00, + 0xCD, 0x29, 0x04, 0x78, 0x02, 0x00, 0x01, 0x84, 0x00, 0x08, 0x2B, 0x00, 0x00, 0x7F, 0x2F, 0x47, 0x12, 0x01, 0x01, 0x13, 0x37, 0x00, 0x00, 0x2A, 0x05, 0x04, 0x29, 0x01, 0x7F, 0x00, 0x01, 0x00, 0xA0, 0x12, 0x01, 0x01, 0x13, 0x5D, 0x06, 0x03, 0x5F, 0x04, 0x75, 0x47, 0x29, 0x00, 0x00, 0x01, - 0x7F, 0x9F, 0xCC, 0x2A, 0x01, 0x07, 0x13, 0x01, 0x00, 0x3A, 0x0F, 0x06, - 0x09, 0x29, 0x01, 0x10, 0x13, 0x06, 0x01, 0xC3, 0x04, 0x2A, 0x01, 0x01, - 0x3A, 0x0F, 0x06, 0x21, 0x29, 0x29, 0x88, 0x30, 0x01, 0x01, 0x0F, 0x01, - 0x01, 0xA2, 0x39, 0x06, 0x0F, 0x2C, 0x19, 0x38, 0x06, 0x04, 0xCC, 0x29, - 0x04, 0x78, 0x01, 0x80, 0x64, 0xC5, 0x04, 0x03, 0x01, 0x00, 0x9F, 0x04, - 0x03, 0x71, 0x2B, 0x29, 0x04, 0x40, 0x01, 0x2A, 0x03, 0x00, 0x09, 0x2A, - 0x5B, 0x06, 0x02, 0x68, 0x2B, 0x02, 0x00, 0x00, 0x00, 0x9A, 0x01, 0x0F, - 0x13, 0x00, 0x00, 0x74, 0x30, 0x01, 0x00, 0x3A, 0x0F, 0x06, 0x10, 0x29, - 0x2A, 0x01, 0x01, 0x0E, 0x06, 0x03, 0x29, 0x01, 0x02, 0x74, 0x42, 0x01, - 0x00, 0x04, 0x21, 0x01, 0x01, 0x3A, 0x0F, 0x06, 0x14, 0x29, 0x01, 0x00, - 0x74, 0x42, 0x2A, 0x01, 0x80, 0x64, 0x0F, 0x06, 0x05, 0x01, 0x82, 0x00, - 0x08, 0x2B, 0x5D, 0x04, 0x07, 0x29, 0x01, 0x82, 0x00, 0x08, 0x2B, 0x29, - 0x00, 0x00, 0x01, 0x00, 0x31, 0x06, 0x05, 0x3D, 0xA7, 0x39, 0x04, 0x78, - 0x2A, 0x06, 0x04, 0x01, 0x01, 0x8F, 0x42, 0x00, 0x00, 0x01, 0x1F, 0x13, - 0x01, 0x12, 0x0F, 0x05, 0x02, 0x72, 0x2B, 0x76, 0x2E, 0x2A, 0xC8, 0x05, - 0x02, 0x71, 0x2B, 0xA6, 0x28, 0x00, 0x02, 0x85, 0x2E, 0x05, 0x02, 0xBA, - 0x00, 0xBE, 0xA5, 0xBE, 0xA5, 0x01, 0x7E, 0x03, 0x00, 0x2A, 0x06, 0x17, - 0xC0, 0x2A, 0x03, 0x01, 0x83, 0x47, 0xB4, 0x02, 0x01, 0x4F, 0x2A, 0x02, - 0x00, 0x51, 0x06, 0x04, 0x03, 0x00, 0x04, 0x01, 0x29, 0x04, 0x66, 0x9B, - 0x9B, 0x02, 0x00, 0x5F, 0x8A, 0x40, 0x00, 0x00, 0x31, 0x06, 0x0B, 0x86, - 0x30, 0x01, 0x14, 0x0E, 0x06, 0x02, 0x71, 0x2B, 0x04, 0x11, 0xCC, 0x01, - 0x07, 0x13, 0x2A, 0x01, 0x02, 0x0E, 0x06, 0x06, 0x06, 0x02, 0x71, 0x2B, - 0x04, 0x70, 0x29, 0xC1, 0x01, 0x01, 0x0E, 0x35, 0x39, 0x06, 0x02, 0x64, - 0x2B, 0x2A, 0x01, 0x01, 0xC7, 0x38, 0xB3, 0x00, 0x01, 0xB8, 0x01, 0x0B, - 0x0F, 0x05, 0x02, 0x71, 0x2B, 0x2A, 0x01, 0x03, 0x0F, 0x06, 0x08, 0xBF, - 0x06, 0x02, 0x68, 0x2B, 0x47, 0x29, 0x00, 0x47, 0x5A, 0xBF, 0xA5, 0x2A, - 0x06, 0x23, 0xBF, 0xA5, 0x2A, 0x59, 0x2A, 0x06, 0x18, 0x2A, 0x01, 0x82, - 0x00, 0x10, 0x06, 0x05, 0x01, 0x82, 0x00, 0x04, 0x01, 0x2A, 0x03, 0x00, - 0x83, 0x02, 0x00, 0xB4, 0x02, 0x00, 0x56, 0x04, 0x65, 0x9B, 0x57, 0x04, - 0x5A, 0x9B, 0x9B, 0x58, 0x2A, 0x06, 0x02, 0x37, 0x00, 0x29, 0x2D, 0x00, - 0x02, 0x2A, 0x01, 0x20, 0x13, 0x05, 0x02, 0x72, 0x2B, 0x01, 0x0F, 0x13, - 0x03, 0x00, 0xAE, 0x93, 0x2E, 0x01, 0x86, 0x03, 0x11, 0x06, 0x23, 0xBE, - 0x2A, 0x01, 0x81, 0x7F, 0x13, 0x5F, 0x01, 0x01, 0x12, 0x02, 0x00, 0x0F, - 0x05, 0x02, 0x6A, 0x2B, 0x01, 0x08, 0x12, 0x2A, 0x01, 0x02, 0x0B, 0x3A, - 0x01, 0x06, 0x10, 0x39, 0x06, 0x02, 0x6C, 0x2B, 0x04, 0x0D, 0x02, 0x00, - 0x01, 0x01, 0x0F, 0x06, 0x04, 0x01, 0x00, 0x04, 0x02, 0x01, 0x02, 0x20, - 0x05, 0x02, 0x6C, 0x2B, 0xBE, 0x2A, 0x03, 0x01, 0x2A, 0x01, 0x84, 0x00, - 0x10, 0x06, 0x02, 0x6D, 0x2B, 0x83, 0x47, 0xB4, 0x02, 0x01, 0x53, 0x2A, - 0x06, 0x01, 0x2B, 0x29, 0x9B, 0x00, 0x00, 0x1D, 0xB8, 0x01, 0x0F, 0x0F, - 0x05, 0x02, 0x71, 0x2B, 0x00, 0x0A, 0xB8, 0x01, 0x01, 0x0F, 0x05, 0x02, - 0x71, 0x2B, 0xBE, 0x2A, 0x03, 0x00, 0x77, 0x40, 0x78, 0x01, 0x20, 0xB4, - 0xC0, 0x2A, 0x01, 0x20, 0x10, 0x06, 0x02, 0x70, 0x2B, 0x2A, 0x8E, 0x42, - 0x8D, 0x47, 0xB4, 0x1A, 0x03, 0x01, 0xBE, 0xA5, 0x01, 0x00, 0x03, 0x02, - 0x01, 0x00, 0x03, 0x03, 0x81, 0xA0, 0x17, 0x3A, 0x08, 0x03, 0x04, 0x03, - 0x05, 0x2A, 0x06, 0x80, 0x6D, 0xBE, 0x2A, 0x03, 0x06, 0x02, 0x01, 0x06, - 0x0A, 0x2A, 0x76, 0x2E, 0x0F, 0x06, 0x04, 0x01, 0x7F, 0x03, 0x03, 0x2A, - 0x01, 0x81, 0x7F, 0x0F, 0x06, 0x0A, 0x88, 0x30, 0x06, 0x02, 0x69, 0x2B, - 0x01, 0x7F, 0x03, 0x02, 0x2A, 0x01, 0x81, 0xAC, 0x00, 0x0F, 0x06, 0x11, - 0x02, 0x00, 0x96, 0x2E, 0x11, 0x02, 0x00, 0x95, 0x2E, 0x0B, 0x13, 0x06, - 0x04, 0x01, 0x7F, 0x03, 0x00, 0xC2, 0x2A, 0x5B, 0x06, 0x03, 0x29, 0x04, - 0x26, 0x01, 0x00, 0xA2, 0x06, 0x0B, 0x01, 0x02, 0x0C, 0x79, 0x08, 0x02, - 0x06, 0x47, 0x40, 0x04, 0x16, 0x29, 0x02, 0x05, 0x02, 0x04, 0x11, 0x06, - 0x02, 0x67, 0x2B, 0x02, 0x06, 0x02, 0x05, 0x40, 0x02, 0x05, 0x01, 0x04, - 0x08, 0x03, 0x05, 0x04, 0xFF, 0x0F, 0x29, 0x01, 0x00, 0x03, 0x07, 0xC0, - 0xA5, 0x2A, 0x06, 0x09, 0xC0, 0x05, 0x04, 0x01, 0x7F, 0x03, 0x07, 0x04, - 0x74, 0x9B, 0x01, 0x00, 0x8B, 0x42, 0x01, 0x88, 0x04, 0x80, 0x41, 0x01, - 0x84, 0x80, 0x80, 0x00, 0x7C, 0x41, 0x2A, 0x06, 0x80, 0x4E, 0xBE, 0xA5, - 0x2A, 0x06, 0x80, 0x47, 0xBE, 0x01, 0x00, 0x3A, 0x0F, 0x06, 0x04, 0x29, - 0xB7, 0x04, 0x39, 0x01, 0x01, 0x3A, 0x0F, 0x06, 0x04, 0x29, 0xB5, 0x04, - 0x2F, 0x01, 0x83, 0xFE, 0x01, 0x3A, 0x0F, 0x06, 0x04, 0x29, 0xB6, 0x04, - 0x23, 0x01, 0x0D, 0x3A, 0x0F, 0x06, 0x04, 0x29, 0xBC, 0x04, 0x19, 0x01, - 0x0A, 0x3A, 0x0F, 0x06, 0x04, 0x29, 0xBD, 0x04, 0x0F, 0x01, 0x10, 0x3A, - 0x0F, 0x06, 0x04, 0x29, 0xAA, 0x04, 0x05, 0x29, 0xBA, 0x01, 0x00, 0x29, - 0x04, 0xFF, 0x35, 0x9B, 0x9B, 0x02, 0x01, 0x02, 0x03, 0x13, 0x03, 0x01, - 0x02, 0x00, 0x5B, 0x06, 0x08, 0x77, 0x2E, 0x97, 0x40, 0x01, 0x80, 0x56, - 0xA1, 0x95, 0x2E, 0x2A, 0x02, 0x00, 0x10, 0x06, 0x03, 0x29, 0x02, 0x00, - 0x2A, 0x01, 0x86, 0x00, 0x0B, 0x06, 0x02, 0x6B, 0x2B, 0x02, 0x00, 0x96, - 0x2E, 0x0B, 0x06, 0x04, 0x01, 0x80, 0x46, 0xA1, 0x02, 0x01, 0x06, 0x10, - 0x93, 0x2E, 0x02, 0x00, 0x0D, 0x06, 0x05, 0x29, 0x93, 0x2E, 0x04, 0x04, - 0x01, 0x00, 0x03, 0x01, 0x2A, 0x93, 0x40, 0x2A, 0x94, 0x40, 0x2A, 0x97, - 0x40, 0x01, 0x86, 0x03, 0x11, 0x03, 0x08, 0x02, 0x02, 0x06, 0x04, 0x01, - 0x02, 0x88, 0x42, 0x88, 0x30, 0x05, 0x04, 0x01, 0x01, 0x88, 0x42, 0x02, - 0x07, 0x05, 0x03, 0x01, 0x28, 0xA1, 0x44, 0x29, 0x01, 0x82, 0x01, 0x07, - 0x01, 0xFC, 0x80, 0x00, 0x39, 0x80, 0x2F, 0x13, 0x2A, 0x80, 0x41, 0x2A, - 0x01, 0x81, 0x7F, 0x13, 0x5C, 0x37, 0x47, 0x01, 0x08, 0x12, 0x5C, 0x01, - 0x02, 0x13, 0x39, 0x01, 0x0C, 0x0C, 0x03, 0x09, 0x7C, 0x2F, 0x43, 0x13, - 0x2A, 0x7C, 0x41, 0x05, 0x04, 0x01, 0x00, 0x03, 0x09, 0x02, 0x01, 0x06, - 0x03, 0x01, 0x7F, 0x00, 0x8D, 0x01, 0x20, 0x34, 0x01, 0x20, 0x8E, 0x42, - 0x79, 0x2A, 0x03, 0x05, 0x2A, 0x02, 0x04, 0x0B, 0x06, 0x80, 0x49, 0x2A, - 0x2E, 0x2A, 0x9A, 0x2A, 0x01, 0x0C, 0x12, 0x2A, 0x01, 0x01, 0x0F, 0x47, - 0x01, 0x02, 0x0F, 0x39, 0x06, 0x0A, 0x2A, 0x02, 0x09, 0x13, 0x05, 0x04, - 0x63, 0x01, 0x00, 0x2A, 0x02, 0x08, 0x05, 0x0E, 0x2A, 0x01, 0x81, 0x70, - 0x13, 0x01, 0x20, 0x0E, 0x06, 0x04, 0x63, 0x01, 0x00, 0x2A, 0x2A, 0x06, - 0x10, 0x02, 0x05, 0x61, 0x40, 0x02, 0x05, 0x40, 0x02, 0x05, 0x01, 0x04, - 0x08, 0x03, 0x05, 0x04, 0x01, 0x63, 0x01, 0x04, 0x08, 0x04, 0xFF, 0x30, - 0x29, 0x02, 0x05, 0x79, 0x09, 0x01, 0x02, 0x12, 0x2A, 0x05, 0x03, 0x01, - 0x28, 0xA1, 0x7A, 0x42, 0x8A, 0x2E, 0x01, 0x83, 0xFF, 0x7F, 0x0F, 0x06, - 0x0D, 0x01, 0x03, 0xA2, 0x06, 0x04, 0x01, 0x80, 0x78, 0xA1, 0x01, 0x00, - 0x8A, 0x40, 0x18, 0x05, 0x03, 0x01, 0x28, 0xA1, 0x01, 0x00, 0x00, 0x00, - 0xB2, 0xB1, 0x00, 0x04, 0x76, 0x2E, 0xCB, 0x06, 0x16, 0xBE, 0x2A, 0x01, - 0x84, 0x00, 0x10, 0x06, 0x02, 0x6D, 0x2B, 0x2A, 0x03, 0x00, 0x83, 0x47, - 0xB4, 0x02, 0x00, 0x76, 0x2E, 0xA6, 0x27, 0x76, 0x2E, 0x2A, 0xC9, 0x47, - 0xC8, 0x03, 0x01, 0x03, 0x02, 0x02, 0x01, 0x02, 0x02, 0x39, 0x06, 0x14, - 0xC0, 0x2A, 0x03, 0x03, 0x83, 0x47, 0xB4, 0x02, 0x03, 0x76, 0x2E, 0xA6, - 0x02, 0x02, 0x06, 0x03, 0x26, 0x04, 0x01, 0x24, 0x9B, 0x00, 0x00, 0xB8, - 0x01, 0x10, 0x0F, 0x05, 0x02, 0x71, 0x2B, 0x00, 0x00, 0x9C, 0xB8, 0x01, - 0x14, 0x0E, 0x06, 0x02, 0x71, 0x2B, 0x83, 0x01, 0x0C, 0x08, 0x01, 0x0C, - 0xB4, 0x9B, 0x83, 0x2A, 0x01, 0x0C, 0x08, 0x01, 0x0C, 0x32, 0x05, 0x02, - 0x65, 0x2B, 0x00, 0x02, 0x03, 0x00, 0x03, 0x01, 0x02, 0x00, 0x98, 0x02, - 0x01, 0x02, 0x00, 0x3C, 0x2A, 0x01, 0x00, 0x0F, 0x06, 0x02, 0x63, 0x00, - 0xCE, 0x04, 0x74, 0x00, 0xBE, 0x01, 0x01, 0x0E, 0x06, 0x02, 0x66, 0x2B, - 0xC0, 0x2A, 0x2A, 0x5D, 0x47, 0x01, 0x05, 0x11, 0x39, 0x06, 0x02, 0x66, - 0x2B, 0x01, 0x08, 0x08, 0x2A, 0x82, 0x30, 0x0B, 0x06, 0x0D, 0x2A, 0x01, - 0x01, 0x47, 0x0C, 0x3F, 0x2A, 0x82, 0x42, 0x84, 0x42, 0x04, 0x01, 0x29, - 0x00, 0x00, 0xBE, 0x88, 0x30, 0x01, 0x00, 0x3A, 0x0F, 0x06, 0x13, 0x29, - 0x01, 0x01, 0x0F, 0x05, 0x02, 0x69, 0x2B, 0xC0, 0x06, 0x02, 0x69, 0x2B, - 0x01, 0x02, 0x88, 0x42, 0x04, 0x28, 0x01, 0x02, 0x3A, 0x0F, 0x06, 0x1F, - 0x29, 0x01, 0x0D, 0x0F, 0x05, 0x02, 0x69, 0x2B, 0xC0, 0x01, 0x0C, 0x0F, - 0x05, 0x02, 0x69, 0x2B, 0x83, 0x01, 0x0C, 0xB4, 0x89, 0x83, 0x01, 0x0C, - 0x32, 0x05, 0x02, 0x69, 0x2B, 0x04, 0x03, 0x69, 0x2B, 0x29, 0x00, 0x00, - 0xBE, 0xA5, 0xBE, 0xA5, 0x2A, 0x06, 0x1D, 0xC0, 0x06, 0x03, 0xBA, 0x04, - 0x15, 0xBE, 0x2A, 0x01, 0x81, 0x7F, 0x0D, 0x06, 0x0C, 0x2A, 0x8B, 0x08, - 0x01, 0x00, 0x47, 0x42, 0x8B, 0x47, 0xB4, 0x04, 0x01, 0xC6, 0x04, 0x60, - 0x9B, 0x9B, 0x00, 0x00, 0xB9, 0x2A, 0x5D, 0x06, 0x07, 0x29, 0x06, 0x02, - 0x67, 0x2B, 0x04, 0x74, 0x00, 0x00, 0xC1, 0x01, 0x03, 0xBF, 0x47, 0x29, - 0x47, 0x00, 0x00, 0xBE, 0xC6, 0x00, 0x03, 0x01, 0x00, 0x03, 0x00, 0xBE, - 0xA5, 0x2A, 0x06, 0x80, 0x50, 0xC0, 0x03, 0x01, 0xC0, 0x03, 0x02, 0x02, - 0x01, 0x01, 0x08, 0x0F, 0x06, 0x16, 0x02, 0x02, 0x01, 0x0F, 0x0D, 0x06, - 0x0D, 0x01, 0x01, 0x02, 0x02, 0x01, 0x10, 0x08, 0x0C, 0x02, 0x00, 0x39, - 0x03, 0x00, 0x04, 0x2A, 0x02, 0x01, 0x01, 0x02, 0x11, 0x02, 0x01, 0x01, - 0x06, 0x0D, 0x13, 0x02, 0x02, 0x01, 0x01, 0x0F, 0x02, 0x02, 0x01, 0x03, - 0x0F, 0x39, 0x13, 0x06, 0x11, 0x02, 0x00, 0x01, 0x01, 0x02, 0x02, 0x60, - 0x01, 0x02, 0x0C, 0x02, 0x01, 0x08, 0x0C, 0x39, 0x03, 0x00, 0x04, 0xFF, - 0x2C, 0x9B, 0x02, 0x00, 0x00, 0x00, 0xBE, 0xA5, 0xBB, 0x80, 0x41, 0x9B, - 0x00, 0x00, 0xBE, 0xA5, 0xBE, 0xA5, 0x01, 0x00, 0x7C, 0x41, 0x2A, 0x06, - 0x15, 0xBE, 0x2A, 0x01, 0x20, 0x0B, 0x06, 0x0B, 0x01, 0x01, 0x47, 0x0C, - 0x7C, 0x2F, 0x39, 0x7C, 0x41, 0x04, 0x01, 0x29, 0x04, 0x68, 0x9B, 0x9B, - 0x00, 0x00, 0x01, 0x02, 0x98, 0xC1, 0x01, 0x08, 0x0C, 0xC1, 0x08, 0x00, - 0x00, 0x01, 0x03, 0x98, 0xC1, 0x01, 0x08, 0x0C, 0xC1, 0x08, 0x01, 0x08, - 0x0C, 0xC1, 0x08, 0x00, 0x00, 0x01, 0x01, 0x98, 0xC1, 0x00, 0x00, 0x3D, - 0x2A, 0x5B, 0x05, 0x01, 0x00, 0x29, 0xCE, 0x04, 0x76, 0x02, 0x03, 0x00, - 0x92, 0x30, 0x03, 0x01, 0x01, 0x00, 0x2A, 0x02, 0x01, 0x0B, 0x06, 0x10, - 0x2A, 0x01, 0x01, 0x0C, 0x91, 0x08, 0x2E, 0x02, 0x00, 0x0F, 0x06, 0x01, - 0x00, 0x5F, 0x04, 0x6A, 0x29, 0x01, 0x7F, 0x00, 0x00, 0x2C, 0x19, 0x38, - 0x06, 0x04, 0xCC, 0x29, 0x04, 0x78, 0x01, 0x16, 0x87, 0x42, 0x01, 0x00, - 0xDF, 0x01, 0x00, 0xDE, 0x2C, 0x01, 0x17, 0x87, 0x42, 0x00, 0x00, 0x01, - 0x15, 0x87, 0x42, 0x47, 0x55, 0x29, 0x55, 0x29, 0x2C, 0x00, 0x00, 0x01, - 0x01, 0x47, 0xC4, 0x00, 0x00, 0x47, 0x3A, 0x98, 0x47, 0x2A, 0x06, 0x05, - 0xC1, 0x29, 0x60, 0x04, 0x78, 0x29, 0x00, 0x02, 0x03, 0x00, 0x76, 0x2E, - 0x9A, 0x03, 0x01, 0x02, 0x01, 0x01, 0x0F, 0x13, 0x02, 0x01, 0x01, 0x04, - 0x12, 0x01, 0x0F, 0x13, 0x02, 0x01, 0x01, 0x08, 0x12, 0x01, 0x0F, 0x13, - 0x01, 0x00, 0x3A, 0x0F, 0x06, 0x10, 0x29, 0x01, 0x00, 0x01, 0x18, 0x02, - 0x00, 0x06, 0x03, 0x4A, 0x04, 0x01, 0x4B, 0x04, 0x80, 0x68, 0x01, 0x01, - 0x3A, 0x0F, 0x06, 0x10, 0x29, 0x01, 0x01, 0x01, 0x10, 0x02, 0x00, 0x06, - 0x03, 0x4A, 0x04, 0x01, 0x4B, 0x04, 0x80, 0x52, 0x01, 0x02, 0x3A, 0x0F, - 0x06, 0x0F, 0x29, 0x01, 0x01, 0x01, 0x20, 0x02, 0x00, 0x06, 0x03, 0x4A, - 0x04, 0x01, 0x4B, 0x04, 0x3D, 0x01, 0x03, 0x3A, 0x0F, 0x06, 0x0E, 0x29, - 0x29, 0x01, 0x10, 0x02, 0x00, 0x06, 0x03, 0x48, 0x04, 0x01, 0x49, 0x04, - 0x29, 0x01, 0x04, 0x3A, 0x0F, 0x06, 0x0E, 0x29, 0x29, 0x01, 0x20, 0x02, - 0x00, 0x06, 0x03, 0x48, 0x04, 0x01, 0x49, 0x04, 0x15, 0x01, 0x05, 0x3A, - 0x0F, 0x06, 0x0C, 0x29, 0x29, 0x02, 0x00, 0x06, 0x03, 0x4C, 0x04, 0x01, - 0x4D, 0x04, 0x03, 0x68, 0x2B, 0x29, 0x00, 0x00, 0x9A, 0x01, 0x0C, 0x12, - 0x01, 0x02, 0x10, 0x00, 0x00, 0x9A, 0x01, 0x0C, 0x12, 0x2A, 0x5E, 0x47, - 0x01, 0x03, 0x0B, 0x13, 0x00, 0x00, 0x9A, 0x01, 0x0C, 0x12, 0x01, 0x01, - 0x0F, 0x00, 0x00, 0x9A, 0x01, 0x0C, 0x12, 0x5D, 0x00, 0x00, 0x1B, 0x01, - 0x00, 0x73, 0x30, 0x2A, 0x06, 0x22, 0x01, 0x01, 0x3A, 0x0F, 0x06, 0x06, - 0x29, 0x01, 0x00, 0x9E, 0x04, 0x14, 0x01, 0x02, 0x3A, 0x0F, 0x06, 0x0D, - 0x29, 0x75, 0x30, 0x01, 0x01, 0x0F, 0x06, 0x03, 0x01, 0x10, 0x39, 0x04, - 0x01, 0x29, 0x04, 0x01, 0x29, 0x7B, 0x30, 0x05, 0x33, 0x31, 0x06, 0x30, - 0x86, 0x30, 0x01, 0x14, 0x3A, 0x0F, 0x06, 0x06, 0x29, 0x01, 0x02, 0x39, - 0x04, 0x22, 0x01, 0x15, 0x3A, 0x0F, 0x06, 0x09, 0x29, 0xA8, 0x06, 0x03, - 0x01, 0x7F, 0x9E, 0x04, 0x13, 0x01, 0x16, 0x3A, 0x0F, 0x06, 0x06, 0x29, - 0x01, 0x01, 0x39, 0x04, 0x07, 0x29, 0x01, 0x04, 0x39, 0x01, 0x00, 0x29, - 0x19, 0x06, 0x03, 0x01, 0x08, 0x39, 0x00, 0x00, 0x1B, 0x2A, 0x05, 0x13, - 0x31, 0x06, 0x10, 0x86, 0x30, 0x01, 0x15, 0x0F, 0x06, 0x08, 0x29, 0xA8, - 0x01, 0x00, 0x75, 0x42, 0x04, 0x01, 0x23, 0x00, 0x00, 0xCC, 0x01, 0x07, - 0x13, 0x01, 0x01, 0x10, 0x06, 0x02, 0x71, 0x2B, 0x00, 0x01, 0x03, 0x00, - 0x2C, 0x19, 0x06, 0x05, 0x02, 0x00, 0x87, 0x42, 0x00, 0xCC, 0x29, 0x04, - 0x74, 0x00, 0x01, 0x14, 0xCF, 0x01, 0x01, 0xDF, 0x2C, 0x2A, 0x01, 0x00, - 0xC7, 0x01, 0x16, 0xCF, 0xD3, 0x2C, 0x00, 0x00, 0x01, 0x0B, 0xDF, 0x50, - 0x2A, 0x2A, 0x01, 0x03, 0x08, 0xDE, 0xDE, 0x14, 0x2A, 0x5B, 0x06, 0x02, - 0x29, 0x00, 0xDE, 0x1E, 0x2A, 0x06, 0x05, 0x83, 0x47, 0xD7, 0x04, 0x77, - 0x29, 0x04, 0x6C, 0x00, 0x01, 0x00, 0xD9, 0x93, 0x2E, 0x01, 0x86, 0x03, - 0x11, 0x06, 0x05, 0x61, 0x01, 0x00, 0xDA, 0x08, 0x4E, 0x08, 0x01, 0x03, - 0x08, 0x01, 0x0D, 0xDF, 0xDE, 0x01, 0x00, 0xD9, 0xDF, 0x01, 0x01, 0xD9, - 0x29, 0x93, 0x2E, 0x01, 0x86, 0x03, 0x11, 0x06, 0x08, 0x01, 0x00, 0xDA, - 0xDD, 0x01, 0x01, 0xDA, 0x29, 0x4E, 0xDD, 0x16, 0x15, 0x2A, 0x5B, 0x06, - 0x02, 0x29, 0x00, 0xDD, 0x1F, 0x2A, 0x06, 0x05, 0x83, 0x47, 0xD7, 0x04, - 0x77, 0x29, 0x04, 0x6C, 0x00, 0x9C, 0x01, 0x14, 0xDF, 0x01, 0x0C, 0xDE, - 0x83, 0x01, 0x0C, 0xD7, 0x00, 0x04, 0x03, 0x00, 0x01, 0x02, 0xDF, 0x01, - 0x80, 0x46, 0x88, 0x30, 0x01, 0x02, 0x0F, 0x06, 0x0C, 0x02, 0x00, 0x06, - 0x04, 0x01, 0x05, 0x04, 0x02, 0x01, 0x1D, 0x04, 0x02, 0x01, 0x00, 0x03, - 0x01, 0x84, 0x30, 0x06, 0x04, 0x01, 0x05, 0x04, 0x02, 0x01, 0x00, 0x03, - 0x02, 0x8A, 0x2E, 0x2A, 0x06, 0x05, 0x60, 0x21, 0x01, 0x07, 0x08, 0x03, - 0x03, 0x02, 0x01, 0x02, 0x02, 0x08, 0x02, 0x03, 0x08, 0x2A, 0x06, 0x03, - 0x01, 0x02, 0x08, 0x08, 0xDE, 0x93, 0x2E, 0xDD, 0x8C, 0x01, 0x04, 0x17, - 0x8C, 0x01, 0x04, 0x08, 0x01, 0x1C, 0x34, 0x8C, 0x01, 0x20, 0xD7, 0x01, - 0x20, 0xDF, 0x8D, 0x01, 0x20, 0xD7, 0x76, 0x2E, 0xDD, 0x01, 0x00, 0xDF, - 0x02, 0x01, 0x02, 0x02, 0x08, 0x02, 0x03, 0x08, 0x2A, 0x06, 0x80, 0x40, - 0xDD, 0x02, 0x01, 0x2A, 0x06, 0x10, 0x01, 0x83, 0xFE, 0x01, 0xDD, 0x01, - 0x04, 0x09, 0x2A, 0xDD, 0x60, 0x89, 0x47, 0xD8, 0x04, 0x01, 0x29, 0x02, - 0x02, 0x06, 0x0C, 0x01, 0x01, 0xDD, 0x01, 0x01, 0xDD, 0x84, 0x30, 0x01, - 0x08, 0x09, 0xDF, 0x02, 0x03, 0x2A, 0x06, 0x11, 0x01, 0x10, 0xDD, 0x01, - 0x04, 0x09, 0x2A, 0xDD, 0x62, 0x2A, 0xDD, 0x60, 0x83, 0x47, 0xD8, 0x04, - 0x01, 0x29, 0x04, 0x01, 0x29, 0x00, 0x00, 0x01, 0x0E, 0xDF, 0x01, 0x00, - 0xDE, 0x00, 0x03, 0x76, 0x2E, 0xC9, 0x05, 0x01, 0x00, 0x7C, 0x2F, 0x2A, - 0x01, 0x82, 0x80, 0x80, 0x80, 0x00, 0x13, 0x06, 0x05, 0x29, 0x01, 0x1D, - 0x04, 0x0E, 0x2A, 0x01, 0x83, 0xC0, 0x80, 0x80, 0x00, 0x13, 0x2A, 0x06, - 0x01, 0x47, 0x29, 0xA3, 0x03, 0x00, 0x02, 0x00, 0x25, 0x2A, 0x5B, 0x06, - 0x02, 0x37, 0x2B, 0x03, 0x01, 0x93, 0x2E, 0x01, 0x86, 0x03, 0x11, 0x03, - 0x02, 0x01, 0x0C, 0xDF, 0x02, 0x01, 0x7E, 0x30, 0x08, 0x02, 0x02, 0x01, - 0x02, 0x13, 0x08, 0x01, 0x06, 0x08, 0xDE, 0x01, 0x03, 0xDF, 0x02, 0x00, - 0xDD, 0x7D, 0x7E, 0x30, 0xD8, 0x02, 0x02, 0x06, 0x1C, 0x90, 0x2E, 0x2A, - 0x01, 0x83, 0xFE, 0x00, 0x0B, 0x06, 0x03, 0xDD, 0x04, 0x0F, 0x01, 0x81, - 0x7F, 0x13, 0xDF, 0x76, 0x2E, 0xCA, 0x01, 0x01, 0x0C, 0x01, 0x03, 0x08, - 0xDF, 0x02, 0x01, 0xDD, 0x83, 0x02, 0x01, 0xD7, 0x00, 0x00, 0x54, 0x2A, - 0x01, 0x00, 0x0F, 0x06, 0x02, 0x63, 0x00, 0xCC, 0x29, 0x04, 0x73, 0x00, - 0x2A, 0xDF, 0xD7, 0x00, 0x00, 0x01, 0x00, 0x76, 0x2E, 0xC8, 0x06, 0x0C, - 0x61, 0x3A, 0x06, 0x08, 0x01, 0x80, 0x41, 0xDF, 0x01, 0x80, 0x42, 0xDF, - 0x46, 0x06, 0x07, 0x5F, 0x3A, 0x06, 0x03, 0x01, 0x01, 0xDF, 0x45, 0x06, - 0x08, 0x5F, 0x3A, 0x06, 0x04, 0x01, 0x80, 0x40, 0xDF, 0x47, 0x29, 0x00, - 0x01, 0x01, 0x00, 0x03, 0x00, 0x46, 0x45, 0x39, 0x05, 0x14, 0x01, 0x01, - 0x01, 0x80, 0x7C, 0xDB, 0x03, 0x00, 0x01, 0x03, 0x01, 0x80, 0x7C, 0xDB, - 0x02, 0x00, 0x08, 0x47, 0x29, 0x00, 0x46, 0x06, 0x07, 0x01, 0x01, 0x44, - 0x29, 0xDB, 0x03, 0x00, 0x45, 0x06, 0x0A, 0x01, 0x03, 0x44, 0x29, 0xDB, - 0x02, 0x00, 0x08, 0x03, 0x00, 0x29, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x01, 0x04, 0xDC, 0x01, 0x05, 0xDC, 0x01, 0x06, 0xDC, 0x01, 0x03, 0xDC, - 0x01, 0x02, 0xDC, 0x0A, 0x63, 0x00, 0x01, 0x03, 0x00, 0x3A, 0x01, 0x01, - 0x02, 0x00, 0x0C, 0x13, 0x05, 0x01, 0x00, 0x61, 0x01, 0x03, 0x3B, 0x06, - 0x07, 0x02, 0x00, 0xDF, 0x01, 0x02, 0x3B, 0xDF, 0x00, 0x00, 0x2A, 0x01, - 0x08, 0x52, 0xDF, 0xDF, 0x00, 0x00, 0x2A, 0x01, 0x10, 0x52, 0xDF, 0xDD, - 0x00, 0x00, 0x2A, 0x55, 0x06, 0x02, 0x29, 0x00, 0xCC, 0x29, 0x04, 0x76 + 0x7F, 0x9F, 0xCD, 0x2A, 0x01, 0x07, 0x13, 0x01, 0x00, 0x3A, 0x0F, 0x06, + 0x0D, 0x29, 0x01, 0x10, 0x13, 0x06, 0x05, 0x01, 0x00, 0x75, 0x42, 0xC3, + 0x04, 0x33, 0x01, 0x01, 0x3A, 0x0F, 0x06, 0x2A, 0x29, 0x29, 0x88, 0x30, + 0x01, 0x01, 0x0F, 0x01, 0x01, 0xA2, 0x39, 0x06, 0x18, 0xC6, 0x2C, 0x19, + 0x38, 0x06, 0x04, 0xCD, 0x29, 0x04, 0x78, 0x01, 0x80, 0x64, 0xC5, 0x01, + 0x01, 0x75, 0x42, 0x01, 0x17, 0x87, 0x42, 0x04, 0x03, 0x01, 0x00, 0x9F, + 0x04, 0x03, 0x71, 0x2B, 0x29, 0x04, 0xFF, 0x32, 0x01, 0x2A, 0x03, 0x00, + 0x09, 0x2A, 0x5B, 0x06, 0x02, 0x68, 0x2B, 0x02, 0x00, 0x00, 0x00, 0x9A, + 0x01, 0x0F, 0x13, 0x00, 0x00, 0x74, 0x30, 0x01, 0x00, 0x3A, 0x0F, 0x06, + 0x10, 0x29, 0x2A, 0x01, 0x01, 0x0E, 0x06, 0x03, 0x29, 0x01, 0x02, 0x74, + 0x42, 0x01, 0x00, 0x04, 0x21, 0x01, 0x01, 0x3A, 0x0F, 0x06, 0x14, 0x29, + 0x01, 0x00, 0x74, 0x42, 0x2A, 0x01, 0x80, 0x64, 0x0F, 0x06, 0x05, 0x01, + 0x82, 0x00, 0x08, 0x2B, 0x5D, 0x04, 0x07, 0x29, 0x01, 0x82, 0x00, 0x08, + 0x2B, 0x29, 0x00, 0x00, 0x01, 0x00, 0x31, 0x06, 0x05, 0x3D, 0xA7, 0x39, + 0x04, 0x78, 0x2A, 0x06, 0x04, 0x01, 0x01, 0x8F, 0x42, 0x00, 0x00, 0x01, + 0x1F, 0x13, 0x01, 0x12, 0x0F, 0x05, 0x02, 0x72, 0x2B, 0x76, 0x2E, 0x2A, + 0xC9, 0x05, 0x02, 0x71, 0x2B, 0xA6, 0x28, 0x00, 0x02, 0x85, 0x2E, 0x05, + 0x02, 0xBA, 0x00, 0xBE, 0xA5, 0xBE, 0xA5, 0x01, 0x7E, 0x03, 0x00, 0x2A, + 0x06, 0x17, 0xC0, 0x2A, 0x03, 0x01, 0x83, 0x47, 0xB4, 0x02, 0x01, 0x4F, + 0x2A, 0x02, 0x00, 0x51, 0x06, 0x04, 0x03, 0x00, 0x04, 0x01, 0x29, 0x04, + 0x66, 0x9B, 0x9B, 0x02, 0x00, 0x5F, 0x8A, 0x40, 0x00, 0x00, 0x31, 0x06, + 0x0B, 0x86, 0x30, 0x01, 0x14, 0x0E, 0x06, 0x02, 0x71, 0x2B, 0x04, 0x11, + 0xCD, 0x01, 0x07, 0x13, 0x2A, 0x01, 0x02, 0x0E, 0x06, 0x06, 0x06, 0x02, + 0x71, 0x2B, 0x04, 0x70, 0x29, 0xC1, 0x01, 0x01, 0x0E, 0x35, 0x39, 0x06, + 0x02, 0x64, 0x2B, 0x2A, 0x01, 0x01, 0xC8, 0x38, 0xB3, 0x00, 0x01, 0xB8, + 0x01, 0x0B, 0x0F, 0x05, 0x02, 0x71, 0x2B, 0x2A, 0x01, 0x03, 0x0F, 0x06, + 0x08, 0xBF, 0x06, 0x02, 0x68, 0x2B, 0x47, 0x29, 0x00, 0x47, 0x5A, 0xBF, + 0xA5, 0x2A, 0x06, 0x23, 0xBF, 0xA5, 0x2A, 0x59, 0x2A, 0x06, 0x18, 0x2A, + 0x01, 0x82, 0x00, 0x10, 0x06, 0x05, 0x01, 0x82, 0x00, 0x04, 0x01, 0x2A, + 0x03, 0x00, 0x83, 0x02, 0x00, 0xB4, 0x02, 0x00, 0x56, 0x04, 0x65, 0x9B, + 0x57, 0x04, 0x5A, 0x9B, 0x9B, 0x58, 0x2A, 0x06, 0x02, 0x37, 0x00, 0x29, + 0x2D, 0x00, 0x02, 0x2A, 0x01, 0x20, 0x13, 0x05, 0x02, 0x72, 0x2B, 0x01, + 0x0F, 0x13, 0x03, 0x00, 0xAE, 0x93, 0x2E, 0x01, 0x86, 0x03, 0x11, 0x06, + 0x23, 0xBE, 0x2A, 0x01, 0x81, 0x7F, 0x13, 0x5F, 0x01, 0x01, 0x12, 0x02, + 0x00, 0x0F, 0x05, 0x02, 0x6A, 0x2B, 0x01, 0x08, 0x12, 0x2A, 0x01, 0x02, + 0x0B, 0x3A, 0x01, 0x06, 0x10, 0x39, 0x06, 0x02, 0x6C, 0x2B, 0x04, 0x0D, + 0x02, 0x00, 0x01, 0x01, 0x0F, 0x06, 0x04, 0x01, 0x00, 0x04, 0x02, 0x01, + 0x02, 0x20, 0x05, 0x02, 0x6C, 0x2B, 0xBE, 0x2A, 0x03, 0x01, 0x2A, 0x01, + 0x84, 0x00, 0x10, 0x06, 0x02, 0x6D, 0x2B, 0x83, 0x47, 0xB4, 0x02, 0x01, + 0x53, 0x2A, 0x06, 0x01, 0x2B, 0x29, 0x9B, 0x00, 0x00, 0x1D, 0xB8, 0x01, + 0x0F, 0x0F, 0x05, 0x02, 0x71, 0x2B, 0x00, 0x0A, 0xB8, 0x01, 0x01, 0x0F, + 0x05, 0x02, 0x71, 0x2B, 0xBE, 0x2A, 0x03, 0x00, 0x77, 0x40, 0x78, 0x01, + 0x20, 0xB4, 0xC0, 0x2A, 0x01, 0x20, 0x10, 0x06, 0x02, 0x70, 0x2B, 0x2A, + 0x8E, 0x42, 0x8D, 0x47, 0xB4, 0x1A, 0x03, 0x01, 0xBE, 0xA5, 0x01, 0x00, + 0x03, 0x02, 0x01, 0x00, 0x03, 0x03, 0x81, 0xA0, 0x17, 0x3A, 0x08, 0x03, + 0x04, 0x03, 0x05, 0x2A, 0x06, 0x80, 0x6D, 0xBE, 0x2A, 0x03, 0x06, 0x02, + 0x01, 0x06, 0x0A, 0x2A, 0x76, 0x2E, 0x0F, 0x06, 0x04, 0x01, 0x7F, 0x03, + 0x03, 0x2A, 0x01, 0x81, 0x7F, 0x0F, 0x06, 0x0A, 0x88, 0x30, 0x06, 0x02, + 0x69, 0x2B, 0x01, 0x7F, 0x03, 0x02, 0x2A, 0x01, 0x81, 0xAC, 0x00, 0x0F, + 0x06, 0x11, 0x02, 0x00, 0x96, 0x2E, 0x11, 0x02, 0x00, 0x95, 0x2E, 0x0B, + 0x13, 0x06, 0x04, 0x01, 0x7F, 0x03, 0x00, 0xC2, 0x2A, 0x5B, 0x06, 0x03, + 0x29, 0x04, 0x26, 0x01, 0x00, 0xA2, 0x06, 0x0B, 0x01, 0x02, 0x0C, 0x79, + 0x08, 0x02, 0x06, 0x47, 0x40, 0x04, 0x16, 0x29, 0x02, 0x05, 0x02, 0x04, + 0x11, 0x06, 0x02, 0x67, 0x2B, 0x02, 0x06, 0x02, 0x05, 0x40, 0x02, 0x05, + 0x01, 0x04, 0x08, 0x03, 0x05, 0x04, 0xFF, 0x0F, 0x29, 0x01, 0x00, 0x03, + 0x07, 0xC0, 0xA5, 0x2A, 0x06, 0x09, 0xC0, 0x05, 0x04, 0x01, 0x7F, 0x03, + 0x07, 0x04, 0x74, 0x9B, 0x01, 0x00, 0x8B, 0x42, 0x01, 0x88, 0x04, 0x80, + 0x41, 0x01, 0x84, 0x80, 0x80, 0x00, 0x7C, 0x41, 0x2A, 0x06, 0x80, 0x4E, + 0xBE, 0xA5, 0x2A, 0x06, 0x80, 0x47, 0xBE, 0x01, 0x00, 0x3A, 0x0F, 0x06, + 0x04, 0x29, 0xB7, 0x04, 0x39, 0x01, 0x01, 0x3A, 0x0F, 0x06, 0x04, 0x29, + 0xB5, 0x04, 0x2F, 0x01, 0x83, 0xFE, 0x01, 0x3A, 0x0F, 0x06, 0x04, 0x29, + 0xB6, 0x04, 0x23, 0x01, 0x0D, 0x3A, 0x0F, 0x06, 0x04, 0x29, 0xBC, 0x04, + 0x19, 0x01, 0x0A, 0x3A, 0x0F, 0x06, 0x04, 0x29, 0xBD, 0x04, 0x0F, 0x01, + 0x10, 0x3A, 0x0F, 0x06, 0x04, 0x29, 0xAA, 0x04, 0x05, 0x29, 0xBA, 0x01, + 0x00, 0x29, 0x04, 0xFF, 0x35, 0x9B, 0x9B, 0x02, 0x01, 0x02, 0x03, 0x13, + 0x03, 0x01, 0x02, 0x00, 0x5B, 0x06, 0x08, 0x77, 0x2E, 0x97, 0x40, 0x01, + 0x80, 0x56, 0xA1, 0x95, 0x2E, 0x2A, 0x02, 0x00, 0x10, 0x06, 0x03, 0x29, + 0x02, 0x00, 0x2A, 0x01, 0x86, 0x00, 0x0B, 0x06, 0x02, 0x6B, 0x2B, 0x02, + 0x00, 0x96, 0x2E, 0x0B, 0x06, 0x04, 0x01, 0x80, 0x46, 0xA1, 0x02, 0x01, + 0x06, 0x10, 0x93, 0x2E, 0x02, 0x00, 0x0D, 0x06, 0x05, 0x29, 0x93, 0x2E, + 0x04, 0x04, 0x01, 0x00, 0x03, 0x01, 0x2A, 0x93, 0x40, 0x2A, 0x94, 0x40, + 0x2A, 0x97, 0x40, 0x01, 0x86, 0x03, 0x11, 0x03, 0x08, 0x02, 0x02, 0x06, + 0x04, 0x01, 0x02, 0x88, 0x42, 0x88, 0x30, 0x05, 0x04, 0x01, 0x01, 0x88, + 0x42, 0x02, 0x07, 0x05, 0x03, 0x01, 0x28, 0xA1, 0x44, 0x29, 0x01, 0x82, + 0x01, 0x07, 0x01, 0xFC, 0x80, 0x00, 0x39, 0x80, 0x2F, 0x13, 0x2A, 0x80, + 0x41, 0x2A, 0x01, 0x81, 0x7F, 0x13, 0x5C, 0x37, 0x47, 0x01, 0x08, 0x12, + 0x5C, 0x01, 0x02, 0x13, 0x39, 0x01, 0x0C, 0x0C, 0x03, 0x09, 0x7C, 0x2F, + 0x43, 0x13, 0x2A, 0x7C, 0x41, 0x05, 0x04, 0x01, 0x00, 0x03, 0x09, 0x02, + 0x01, 0x06, 0x03, 0x01, 0x7F, 0x00, 0x8D, 0x01, 0x20, 0x34, 0x01, 0x20, + 0x8E, 0x42, 0x79, 0x2A, 0x03, 0x05, 0x2A, 0x02, 0x04, 0x0B, 0x06, 0x80, + 0x49, 0x2A, 0x2E, 0x2A, 0x9A, 0x2A, 0x01, 0x0C, 0x12, 0x2A, 0x01, 0x01, + 0x0F, 0x47, 0x01, 0x02, 0x0F, 0x39, 0x06, 0x0A, 0x2A, 0x02, 0x09, 0x13, + 0x05, 0x04, 0x63, 0x01, 0x00, 0x2A, 0x02, 0x08, 0x05, 0x0E, 0x2A, 0x01, + 0x81, 0x70, 0x13, 0x01, 0x20, 0x0E, 0x06, 0x04, 0x63, 0x01, 0x00, 0x2A, + 0x2A, 0x06, 0x10, 0x02, 0x05, 0x61, 0x40, 0x02, 0x05, 0x40, 0x02, 0x05, + 0x01, 0x04, 0x08, 0x03, 0x05, 0x04, 0x01, 0x63, 0x01, 0x04, 0x08, 0x04, + 0xFF, 0x30, 0x29, 0x02, 0x05, 0x79, 0x09, 0x01, 0x02, 0x12, 0x2A, 0x05, + 0x03, 0x01, 0x28, 0xA1, 0x7A, 0x42, 0x8A, 0x2E, 0x01, 0x83, 0xFF, 0x7F, + 0x0F, 0x06, 0x0D, 0x01, 0x03, 0xA2, 0x06, 0x04, 0x01, 0x80, 0x78, 0xA1, + 0x01, 0x00, 0x8A, 0x40, 0x18, 0x05, 0x03, 0x01, 0x28, 0xA1, 0x01, 0x00, + 0x00, 0x00, 0xB2, 0xB1, 0x00, 0x04, 0x76, 0x2E, 0xCC, 0x06, 0x16, 0xBE, + 0x2A, 0x01, 0x84, 0x00, 0x10, 0x06, 0x02, 0x6D, 0x2B, 0x2A, 0x03, 0x00, + 0x83, 0x47, 0xB4, 0x02, 0x00, 0x76, 0x2E, 0xA6, 0x27, 0x76, 0x2E, 0x2A, + 0xCA, 0x47, 0xC9, 0x03, 0x01, 0x03, 0x02, 0x02, 0x01, 0x02, 0x02, 0x39, + 0x06, 0x14, 0xC0, 0x2A, 0x03, 0x03, 0x83, 0x47, 0xB4, 0x02, 0x03, 0x76, + 0x2E, 0xA6, 0x02, 0x02, 0x06, 0x03, 0x26, 0x04, 0x01, 0x24, 0x9B, 0x00, + 0x00, 0xB8, 0x01, 0x10, 0x0F, 0x05, 0x02, 0x71, 0x2B, 0x00, 0x00, 0x9C, + 0xB8, 0x01, 0x14, 0x0E, 0x06, 0x02, 0x71, 0x2B, 0x83, 0x01, 0x0C, 0x08, + 0x01, 0x0C, 0xB4, 0x9B, 0x83, 0x2A, 0x01, 0x0C, 0x08, 0x01, 0x0C, 0x32, + 0x05, 0x02, 0x65, 0x2B, 0x00, 0x02, 0x03, 0x00, 0x03, 0x01, 0x02, 0x00, + 0x98, 0x02, 0x01, 0x02, 0x00, 0x3C, 0x2A, 0x01, 0x00, 0x0F, 0x06, 0x02, + 0x63, 0x00, 0xCF, 0x04, 0x74, 0x00, 0xBE, 0x01, 0x01, 0x0E, 0x06, 0x02, + 0x66, 0x2B, 0xC0, 0x2A, 0x2A, 0x5D, 0x47, 0x01, 0x05, 0x11, 0x39, 0x06, + 0x02, 0x66, 0x2B, 0x01, 0x08, 0x08, 0x2A, 0x82, 0x30, 0x0B, 0x06, 0x0D, + 0x2A, 0x01, 0x01, 0x47, 0x0C, 0x3F, 0x2A, 0x82, 0x42, 0x84, 0x42, 0x04, + 0x01, 0x29, 0x00, 0x00, 0xBE, 0x88, 0x30, 0x01, 0x00, 0x3A, 0x0F, 0x06, + 0x13, 0x29, 0x01, 0x01, 0x0F, 0x05, 0x02, 0x69, 0x2B, 0xC0, 0x06, 0x02, + 0x69, 0x2B, 0x01, 0x02, 0x88, 0x42, 0x04, 0x28, 0x01, 0x02, 0x3A, 0x0F, + 0x06, 0x1F, 0x29, 0x01, 0x0D, 0x0F, 0x05, 0x02, 0x69, 0x2B, 0xC0, 0x01, + 0x0C, 0x0F, 0x05, 0x02, 0x69, 0x2B, 0x83, 0x01, 0x0C, 0xB4, 0x89, 0x83, + 0x01, 0x0C, 0x32, 0x05, 0x02, 0x69, 0x2B, 0x04, 0x03, 0x69, 0x2B, 0x29, + 0x00, 0x00, 0xBE, 0xA5, 0xBE, 0xA5, 0x2A, 0x06, 0x1D, 0xC0, 0x06, 0x03, + 0xBA, 0x04, 0x15, 0xBE, 0x2A, 0x01, 0x81, 0x7F, 0x0D, 0x06, 0x0C, 0x2A, + 0x8B, 0x08, 0x01, 0x00, 0x47, 0x42, 0x8B, 0x47, 0xB4, 0x04, 0x01, 0xC7, + 0x04, 0x60, 0x9B, 0x9B, 0x00, 0x00, 0xB9, 0x2A, 0x5D, 0x06, 0x07, 0x29, + 0x06, 0x02, 0x67, 0x2B, 0x04, 0x74, 0x00, 0x00, 0xC1, 0x01, 0x03, 0xBF, + 0x47, 0x29, 0x47, 0x00, 0x00, 0xBE, 0xC7, 0x00, 0x03, 0x01, 0x00, 0x03, + 0x00, 0xBE, 0xA5, 0x2A, 0x06, 0x80, 0x50, 0xC0, 0x03, 0x01, 0xC0, 0x03, + 0x02, 0x02, 0x01, 0x01, 0x08, 0x0F, 0x06, 0x16, 0x02, 0x02, 0x01, 0x0F, + 0x0D, 0x06, 0x0D, 0x01, 0x01, 0x02, 0x02, 0x01, 0x10, 0x08, 0x0C, 0x02, + 0x00, 0x39, 0x03, 0x00, 0x04, 0x2A, 0x02, 0x01, 0x01, 0x02, 0x11, 0x02, + 0x01, 0x01, 0x06, 0x0D, 0x13, 0x02, 0x02, 0x01, 0x01, 0x0F, 0x02, 0x02, + 0x01, 0x03, 0x0F, 0x39, 0x13, 0x06, 0x11, 0x02, 0x00, 0x01, 0x01, 0x02, + 0x02, 0x60, 0x01, 0x02, 0x0C, 0x02, 0x01, 0x08, 0x0C, 0x39, 0x03, 0x00, + 0x04, 0xFF, 0x2C, 0x9B, 0x02, 0x00, 0x00, 0x00, 0xBE, 0xA5, 0xBB, 0x80, + 0x41, 0x9B, 0x00, 0x00, 0xBE, 0xA5, 0xBE, 0xA5, 0x01, 0x00, 0x7C, 0x41, + 0x2A, 0x06, 0x15, 0xBE, 0x2A, 0x01, 0x20, 0x0B, 0x06, 0x0B, 0x01, 0x01, + 0x47, 0x0C, 0x7C, 0x2F, 0x39, 0x7C, 0x41, 0x04, 0x01, 0x29, 0x04, 0x68, + 0x9B, 0x9B, 0x00, 0x00, 0x01, 0x02, 0x98, 0xC1, 0x01, 0x08, 0x0C, 0xC1, + 0x08, 0x00, 0x00, 0x01, 0x03, 0x98, 0xC1, 0x01, 0x08, 0x0C, 0xC1, 0x08, + 0x01, 0x08, 0x0C, 0xC1, 0x08, 0x00, 0x00, 0x01, 0x01, 0x98, 0xC1, 0x00, + 0x00, 0x3D, 0x2A, 0x5B, 0x05, 0x01, 0x00, 0x29, 0xCF, 0x04, 0x76, 0x02, + 0x03, 0x00, 0x92, 0x30, 0x03, 0x01, 0x01, 0x00, 0x2A, 0x02, 0x01, 0x0B, + 0x06, 0x10, 0x2A, 0x01, 0x01, 0x0C, 0x91, 0x08, 0x2E, 0x02, 0x00, 0x0F, + 0x06, 0x01, 0x00, 0x5F, 0x04, 0x6A, 0x29, 0x01, 0x7F, 0x00, 0x00, 0x2C, + 0x19, 0x38, 0x06, 0x04, 0xCD, 0x29, 0x04, 0x78, 0x01, 0x16, 0x87, 0x42, + 0x01, 0x00, 0xE0, 0x01, 0x00, 0xDF, 0x2C, 0x01, 0x17, 0x87, 0x42, 0x00, + 0x00, 0x01, 0x15, 0x87, 0x42, 0x47, 0x55, 0x29, 0x55, 0x29, 0x2C, 0x00, + 0x00, 0x01, 0x01, 0x47, 0xC4, 0x00, 0x00, 0xB9, 0x01, 0x01, 0x0F, 0x05, + 0x02, 0x71, 0x2B, 0x2A, 0xC7, 0x29, 0x00, 0x00, 0x47, 0x3A, 0x98, 0x47, + 0x2A, 0x06, 0x05, 0xC1, 0x29, 0x60, 0x04, 0x78, 0x29, 0x00, 0x02, 0x03, + 0x00, 0x76, 0x2E, 0x9A, 0x03, 0x01, 0x02, 0x01, 0x01, 0x0F, 0x13, 0x02, + 0x01, 0x01, 0x04, 0x12, 0x01, 0x0F, 0x13, 0x02, 0x01, 0x01, 0x08, 0x12, + 0x01, 0x0F, 0x13, 0x01, 0x00, 0x3A, 0x0F, 0x06, 0x10, 0x29, 0x01, 0x00, + 0x01, 0x18, 0x02, 0x00, 0x06, 0x03, 0x4A, 0x04, 0x01, 0x4B, 0x04, 0x80, + 0x68, 0x01, 0x01, 0x3A, 0x0F, 0x06, 0x10, 0x29, 0x01, 0x01, 0x01, 0x10, + 0x02, 0x00, 0x06, 0x03, 0x4A, 0x04, 0x01, 0x4B, 0x04, 0x80, 0x52, 0x01, + 0x02, 0x3A, 0x0F, 0x06, 0x0F, 0x29, 0x01, 0x01, 0x01, 0x20, 0x02, 0x00, + 0x06, 0x03, 0x4A, 0x04, 0x01, 0x4B, 0x04, 0x3D, 0x01, 0x03, 0x3A, 0x0F, + 0x06, 0x0E, 0x29, 0x29, 0x01, 0x10, 0x02, 0x00, 0x06, 0x03, 0x48, 0x04, + 0x01, 0x49, 0x04, 0x29, 0x01, 0x04, 0x3A, 0x0F, 0x06, 0x0E, 0x29, 0x29, + 0x01, 0x20, 0x02, 0x00, 0x06, 0x03, 0x48, 0x04, 0x01, 0x49, 0x04, 0x15, + 0x01, 0x05, 0x3A, 0x0F, 0x06, 0x0C, 0x29, 0x29, 0x02, 0x00, 0x06, 0x03, + 0x4C, 0x04, 0x01, 0x4D, 0x04, 0x03, 0x68, 0x2B, 0x29, 0x00, 0x00, 0x9A, + 0x01, 0x0C, 0x12, 0x01, 0x02, 0x10, 0x00, 0x00, 0x9A, 0x01, 0x0C, 0x12, + 0x2A, 0x5E, 0x47, 0x01, 0x03, 0x0B, 0x13, 0x00, 0x00, 0x9A, 0x01, 0x0C, + 0x12, 0x01, 0x01, 0x0F, 0x00, 0x00, 0x9A, 0x01, 0x0C, 0x12, 0x5D, 0x00, + 0x00, 0x1B, 0x01, 0x00, 0x73, 0x30, 0x2A, 0x06, 0x22, 0x01, 0x01, 0x3A, + 0x0F, 0x06, 0x06, 0x29, 0x01, 0x00, 0x9E, 0x04, 0x14, 0x01, 0x02, 0x3A, + 0x0F, 0x06, 0x0D, 0x29, 0x75, 0x30, 0x01, 0x01, 0x0F, 0x06, 0x03, 0x01, + 0x10, 0x39, 0x04, 0x01, 0x29, 0x04, 0x01, 0x29, 0x7B, 0x30, 0x05, 0x33, + 0x31, 0x06, 0x30, 0x86, 0x30, 0x01, 0x14, 0x3A, 0x0F, 0x06, 0x06, 0x29, + 0x01, 0x02, 0x39, 0x04, 0x22, 0x01, 0x15, 0x3A, 0x0F, 0x06, 0x09, 0x29, + 0xA8, 0x06, 0x03, 0x01, 0x7F, 0x9E, 0x04, 0x13, 0x01, 0x16, 0x3A, 0x0F, + 0x06, 0x06, 0x29, 0x01, 0x01, 0x39, 0x04, 0x07, 0x29, 0x01, 0x04, 0x39, + 0x01, 0x00, 0x29, 0x19, 0x06, 0x03, 0x01, 0x08, 0x39, 0x00, 0x00, 0x1B, + 0x2A, 0x05, 0x13, 0x31, 0x06, 0x10, 0x86, 0x30, 0x01, 0x15, 0x0F, 0x06, + 0x08, 0x29, 0xA8, 0x01, 0x00, 0x75, 0x42, 0x04, 0x01, 0x23, 0x00, 0x00, + 0xCD, 0x01, 0x07, 0x13, 0x01, 0x01, 0x10, 0x06, 0x02, 0x71, 0x2B, 0x00, + 0x01, 0x03, 0x00, 0x2C, 0x19, 0x06, 0x05, 0x02, 0x00, 0x87, 0x42, 0x00, + 0xCD, 0x29, 0x04, 0x74, 0x00, 0x01, 0x14, 0xD0, 0x01, 0x01, 0xE0, 0x2C, + 0x2A, 0x01, 0x00, 0xC8, 0x01, 0x16, 0xD0, 0xD4, 0x2C, 0x00, 0x00, 0x01, + 0x0B, 0xE0, 0x50, 0x2A, 0x2A, 0x01, 0x03, 0x08, 0xDF, 0xDF, 0x14, 0x2A, + 0x5B, 0x06, 0x02, 0x29, 0x00, 0xDF, 0x1E, 0x2A, 0x06, 0x05, 0x83, 0x47, + 0xD8, 0x04, 0x77, 0x29, 0x04, 0x6C, 0x00, 0x01, 0x00, 0xDA, 0x93, 0x2E, + 0x01, 0x86, 0x03, 0x11, 0x06, 0x05, 0x61, 0x01, 0x00, 0xDB, 0x08, 0x4E, + 0x08, 0x01, 0x03, 0x08, 0x01, 0x0D, 0xE0, 0xDF, 0x01, 0x00, 0xDA, 0xE0, + 0x01, 0x01, 0xDA, 0x29, 0x93, 0x2E, 0x01, 0x86, 0x03, 0x11, 0x06, 0x08, + 0x01, 0x00, 0xDB, 0xDE, 0x01, 0x01, 0xDB, 0x29, 0x4E, 0xDE, 0x16, 0x15, + 0x2A, 0x5B, 0x06, 0x02, 0x29, 0x00, 0xDE, 0x1F, 0x2A, 0x06, 0x05, 0x83, + 0x47, 0xD8, 0x04, 0x77, 0x29, 0x04, 0x6C, 0x00, 0x9C, 0x01, 0x14, 0xE0, + 0x01, 0x0C, 0xDF, 0x83, 0x01, 0x0C, 0xD8, 0x00, 0x04, 0x03, 0x00, 0x01, + 0x02, 0xE0, 0x01, 0x80, 0x46, 0x88, 0x30, 0x01, 0x02, 0x0F, 0x06, 0x0C, + 0x02, 0x00, 0x06, 0x04, 0x01, 0x05, 0x04, 0x02, 0x01, 0x1D, 0x04, 0x02, + 0x01, 0x00, 0x03, 0x01, 0x84, 0x30, 0x06, 0x04, 0x01, 0x05, 0x04, 0x02, + 0x01, 0x00, 0x03, 0x02, 0x8A, 0x2E, 0x2A, 0x06, 0x05, 0x60, 0x21, 0x01, + 0x07, 0x08, 0x03, 0x03, 0x02, 0x01, 0x02, 0x02, 0x08, 0x02, 0x03, 0x08, + 0x2A, 0x06, 0x03, 0x01, 0x02, 0x08, 0x08, 0xDF, 0x93, 0x2E, 0xDE, 0x8C, + 0x01, 0x04, 0x17, 0x8C, 0x01, 0x04, 0x08, 0x01, 0x1C, 0x34, 0x8C, 0x01, + 0x20, 0xD8, 0x01, 0x20, 0xE0, 0x8D, 0x01, 0x20, 0xD8, 0x76, 0x2E, 0xDE, + 0x01, 0x00, 0xE0, 0x02, 0x01, 0x02, 0x02, 0x08, 0x02, 0x03, 0x08, 0x2A, + 0x06, 0x80, 0x40, 0xDE, 0x02, 0x01, 0x2A, 0x06, 0x10, 0x01, 0x83, 0xFE, + 0x01, 0xDE, 0x01, 0x04, 0x09, 0x2A, 0xDE, 0x60, 0x89, 0x47, 0xD9, 0x04, + 0x01, 0x29, 0x02, 0x02, 0x06, 0x0C, 0x01, 0x01, 0xDE, 0x01, 0x01, 0xDE, + 0x84, 0x30, 0x01, 0x08, 0x09, 0xE0, 0x02, 0x03, 0x2A, 0x06, 0x11, 0x01, + 0x10, 0xDE, 0x01, 0x04, 0x09, 0x2A, 0xDE, 0x62, 0x2A, 0xDE, 0x60, 0x83, + 0x47, 0xD9, 0x04, 0x01, 0x29, 0x04, 0x01, 0x29, 0x00, 0x00, 0x01, 0x0E, + 0xE0, 0x01, 0x00, 0xDF, 0x00, 0x03, 0x76, 0x2E, 0xCA, 0x05, 0x01, 0x00, + 0x7C, 0x2F, 0x2A, 0x01, 0x82, 0x80, 0x80, 0x80, 0x00, 0x13, 0x06, 0x05, + 0x29, 0x01, 0x1D, 0x04, 0x0E, 0x2A, 0x01, 0x83, 0xC0, 0x80, 0x80, 0x00, + 0x13, 0x2A, 0x06, 0x01, 0x47, 0x29, 0xA3, 0x03, 0x00, 0x02, 0x00, 0x25, + 0x2A, 0x5B, 0x06, 0x02, 0x37, 0x2B, 0x03, 0x01, 0x93, 0x2E, 0x01, 0x86, + 0x03, 0x11, 0x03, 0x02, 0x01, 0x0C, 0xE0, 0x02, 0x01, 0x7E, 0x30, 0x08, + 0x02, 0x02, 0x01, 0x02, 0x13, 0x08, 0x01, 0x06, 0x08, 0xDF, 0x01, 0x03, + 0xE0, 0x02, 0x00, 0xDE, 0x7D, 0x7E, 0x30, 0xD9, 0x02, 0x02, 0x06, 0x1C, + 0x90, 0x2E, 0x2A, 0x01, 0x83, 0xFE, 0x00, 0x0B, 0x06, 0x03, 0xDE, 0x04, + 0x0F, 0x01, 0x81, 0x7F, 0x13, 0xE0, 0x76, 0x2E, 0xCB, 0x01, 0x01, 0x0C, + 0x01, 0x03, 0x08, 0xE0, 0x02, 0x01, 0xDE, 0x83, 0x02, 0x01, 0xD8, 0x00, + 0x00, 0x54, 0x2A, 0x01, 0x00, 0x0F, 0x06, 0x02, 0x63, 0x00, 0xCD, 0x29, + 0x04, 0x73, 0x00, 0x2A, 0xE0, 0xD8, 0x00, 0x00, 0x01, 0x00, 0x76, 0x2E, + 0xC9, 0x06, 0x0C, 0x61, 0x3A, 0x06, 0x08, 0x01, 0x80, 0x41, 0xE0, 0x01, + 0x80, 0x42, 0xE0, 0x46, 0x06, 0x07, 0x5F, 0x3A, 0x06, 0x03, 0x01, 0x01, + 0xE0, 0x45, 0x06, 0x08, 0x5F, 0x3A, 0x06, 0x04, 0x01, 0x80, 0x40, 0xE0, + 0x47, 0x29, 0x00, 0x01, 0x01, 0x00, 0x03, 0x00, 0x46, 0x45, 0x39, 0x05, + 0x14, 0x01, 0x01, 0x01, 0x80, 0x7C, 0xDC, 0x03, 0x00, 0x01, 0x03, 0x01, + 0x80, 0x7C, 0xDC, 0x02, 0x00, 0x08, 0x47, 0x29, 0x00, 0x46, 0x06, 0x07, + 0x01, 0x01, 0x44, 0x29, 0xDC, 0x03, 0x00, 0x45, 0x06, 0x0A, 0x01, 0x03, + 0x44, 0x29, 0xDC, 0x02, 0x00, 0x08, 0x03, 0x00, 0x29, 0x02, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x01, 0x04, 0xDD, 0x01, 0x05, 0xDD, 0x01, 0x06, 0xDD, + 0x01, 0x03, 0xDD, 0x01, 0x02, 0xDD, 0x0A, 0x63, 0x00, 0x01, 0x03, 0x00, + 0x3A, 0x01, 0x01, 0x02, 0x00, 0x0C, 0x13, 0x05, 0x01, 0x00, 0x61, 0x01, + 0x03, 0x3B, 0x06, 0x07, 0x02, 0x00, 0xE0, 0x01, 0x02, 0x3B, 0xE0, 0x00, + 0x00, 0x2A, 0x01, 0x08, 0x52, 0xE0, 0xE0, 0x00, 0x00, 0x2A, 0x01, 0x10, + 0x52, 0xE0, 0xDE, 0x00, 0x00, 0x2A, 0x55, 0x06, 0x02, 0x29, 0x00, 0xCD, + 0x29, 0x04, 0x76 }; static const uint16_t t0_caddr[] = { @@ -856,65 +859,66 @@ static const uint16_t t0_caddr[] = { 553, 563, 587, - 655, 669, - 675, - 734, - 753, - 775, - 824, - 873, - 949, - 1051, - 1062, - 1656, - 1660, - 1727, - 1737, - 1768, - 1792, - 1838, - 1908, - 1948, + 683, + 689, + 748, + 767, + 789, + 838, + 887, + 963, + 1065, + 1076, + 1670, + 1674, + 1741, + 1751, + 1782, + 1806, + 1852, + 1922, 1962, - 1971, - 1975, - 2070, - 2078, - 2114, - 2125, - 2141, - 2147, - 2158, - 2193, - 2219, - 2231, - 2237, - 2252, - 2408, - 2417, - 2430, - 2439, - 2446, - 2552, - 2577, - 2590, - 2606, - 2624, - 2656, - 2729, - 2742, - 2923, - 2931, - 3058, - 3072, - 3077, - 3121, - 3178, - 3199, + 1976, + 1985, + 1989, + 2084, + 2092, + 2128, + 2139, + 2155, + 2161, + 2172, + 2207, + 2233, + 2245, + 2251, + 2264, + 2279, + 2435, + 2444, + 2457, + 2466, + 2473, + 2579, + 2604, + 2617, + 2633, + 2651, + 2683, + 2756, + 2769, + 2950, + 2958, + 3085, + 3099, + 3104, + 3148, + 3205, 3226, - 3234, - 3242 + 3253, + 3261, + 3269 }; #define T0_INTERPRETED 91 diff --git a/src/ssl/ssl_hs_server.t0 b/src/ssl/ssl_hs_server.t0 index bb3bc3d..58d5c94 100644 --- a/src/ssl/ssl_hs_server.t0 +++ b/src/ssl/ssl_hs_server.t0 @@ -611,6 +611,13 @@ cc: save-session ( -- ) { } } +\ Read and drop ClientHello. This is used when a client-triggered +\ renegotiation attempt is rejected. +: skip-ClientHello ( -- ) + read-handshake-header-core + 1 = ifnot ERR_UNEXPECTED fail then + dup skip-blob drop ; + \ Read ClientHello. If the session is resumed, then -1 is returned. : read-ClientHello ( -- resume ) \ Get header, and check message type. @@ -1473,6 +1480,7 @@ cc: verify-CV-sig ( sig-len -- err ) { \ The best we can do is ask for a \ renegotiation, then wait for it \ to happen. + 0 addr-application_data set8 send-HelloRequest then endof @@ -1482,11 +1490,16 @@ cc: verify-CV-sig ( sig-len -- err ) { \ "no renegotiation" flag is set. drop addr-reneg get8 1 = 1 flag? or if + skip-ClientHello flush-record begin can-output? not while wait-co drop repeat 100 send-warning + \ Put back connection in "application + \ data" state: it's not dead yet. + 1 addr-application_data set8 + 23 addr-record_type_out set8 else 0 do-handshake then -- 2.17.1