From 4f03019856667f9eea2a020c9c75c3f43d218aa5 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Wed, 18 Jul 2018 15:02:22 +0200 Subject: [PATCH 01/20] update basic_add wasm --- polkadot/parachain/tests/res/basic_add.wasm | Bin 11348 -> 29197 bytes 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 polkadot/parachain/tests/res/basic_add.wasm diff --git a/polkadot/parachain/tests/res/basic_add.wasm b/polkadot/parachain/tests/res/basic_add.wasm old mode 100755 new mode 100644 index c32910f0adf97f30e8742c098fbd7fc7068939d9..dbe4486385f8b8c30a579afd24feda61b6a17a0a GIT binary patch literal 29197 zcmeHw3z%F-b!Oe$kGYzjN9+BTZnwtrj3teyd#0y*21izpG`1&_Eun`62DaUg+tR$c z$J0G}5MvF74j#;B$OmCf;M?W3U$lt=Q$!39kJYpc(c(br1zF@>eQ)Ir_Q}S64}bEA%rjztL`-}8JF%gFEJGYCBcHY z*LR7jA1Sf`Gh(pTxMX%4KBsgpIP1)o=P#OKwQuVdpWpBY0zu*To2JhU8lugI#I!8S zA28+&%L;DxT{6;(i{l1M-GYERyFTOgFloOQBunOwHw_>A^UrjV^>Gft`CGgr?q zRH~Vrb7r!XSty;KEER;XWL>#DD-7#gc4iXTjxbks8X|3k+SaUHx4x@8-2T&Bw)ip2 zkW7BEag}+=cz|C_`GK}ez6bo5c8T<&IUO~7gl*c!u-So344am1ravd9kXln=pLxJM zV4J<>v8Zpn6Nr80$%wxR!}h;B5+IuQKh-5z@6u+QVI@+GLZG0!TM#WTG;6K|I)3!+OJiIl$X-l1^F%=Ej zf@Ip$JMZi?&|poaH%&z`Gfs)1(dPpnmwz~i8(b!2707I`*EdyRr1kbXw~E9bHEc~u2fjYblP31unehmFPF+wb*UKkMm^20x>&*u zX>jU~V(Q22jdD4-7#r+%-DSNkyfS)9$*8kFosRkx&2;ZnedcC5HPsj*eHkKZtjLon zxh$FXDr$&a&0|SlSV81xz;48)!93*v&6Me<=ym_9uOmpx)ea5yBwfiyh6ba?f+4cd_mT zVeDyJ$PH|F4V#Y|ET(-^Y4cqA(iDdOnQ<6HinLixKlLD_5mm_PFQ71NN(~mhCO|pp zqu|?2V^E}zV|{=4^2;I|#8fcWQ!qZF!w8`XJ-+bZf#rQ9&GhR)I2=sZy8w}0$hVQU z!<#z;inblJtuW!H>5pBq{r2knqpR)Jw*TbTtII<2Nm)Q%QWo~AG2{M-pE6J)0n0yq zh9Y?s#B3!J?(3gQSxBkN4egc4u@-?e^=Op`IyA(A&7>p&+tVksxx+x%RJuOgTyMMe zn;P|t?t*!VJXEjrPt=vX#03)2u8Ql=4pW{ zSlEpb+J#PTC-kmwCPQu}9Kwyw1S$}jcQYB++)NOm-b@%08`8jWE(Ev}hdaAEd?B#X zs1<27k;9#x9cD-}j4@Y%(FP8B;u!7dcosXem4gsY6}uyBiBS5@aD>uZ!mC8c4vcrg zH?Vzjc>)cQDEk5f(GUrCUa&3_sW*+y1e1a$wVAMao6HM0Q~ENDM|zDMQsSw-Al-we zEh4v$bPbxSEs{rdV?$A&Eoip%>e5>!WjY0FztJU75FG-&2i-0qPoHqR2!%r;1Wyek zxaN<$y*{NY?sm_lT&-npcPSGUmTK0uT&7syCYeHOylSRoO7YSvA%!>#?IB)LQ$~ybOQgPjB@VW3$(T=t({gsavZlT7?EB4gNV}X`iQM>KkQ8<;&Oj5k{ zeyuzzV=8-sOLmn+v4PQhO`y2*P`^ZpEu#b?I5nf46Vq#W1gzTP+VgwF`l*$-=9 zpXVYy;trgfuqjda6uqWD>QDP^d|}7}bSVrRmx1Xh=I96PvjbDn05(#SqWRN4>2~y* z9q4}P2%L96t)Cy(uWh{3Z@1wr_VWv>uyz6k-?Yqv%HM3W1GbOD1p) zF&x+oL*U(^v=M1biwKOEVUrKoO8*pB033lk|LwHRwx8SzyNw8NkfvB6X!$fXaA(@! z45pPxJkK!)*QZftn564I4NM|=P(BS8Pg!A#55r3tO1q%d4!Z`j;OH*j0NhRO>C~!o z=)`T|b_;KCO#-JM`tPRErkBvy)3gSd0WCS#5i`e>2?eHYlZO?Yps6T?IswD!=V8V5 zz}?F|tWeA4;%35yi)WUUO`DAZmddZrtSyl5Dhk#kD!)9jAoqr-K+0$P>Y_p$$WqgM z6qS$a=A#MKqJkzUQFZuXM!+amUoz6h3du{SDb1qKBf&bYWfD}hqzhDEevE2iDY*F1 z1gZ-3F#x5vO=_G^YZk5V>x0HB%J*}==_mw@woOxXy9tHskmW+M3EGG`q-|cK{>FgG*O=G{9A#(F|Up0a`=N0Thv&NplduBshA| z4)HF>(J?@1%H^U>@(~STr($S1%O`QP$i3=I{}7<8drHOuu%4HF(NOxo;F1BY>NP*< z1M3P6po(op!G&nWAZv&qZNoTH>^7Yq5D8Ae z*9mHwx3A`P++eI(hLi1k?sAZij-VC( z^!-y&)QI%`_eD)ct%K0P-&AKkid7Agh+0pKcG#Q6-KjbrHbPWftp{%vKHPTN2yXHCEo}sQj zX+vos>c*7=%aC@_HX#!Qrs?e%4I}Jf#$$z7M}5+cA%4dNfni(3kW3G6O}}ap zmkob9eC`0(>(Xs?%y3n!2Tcmx;`{HzVJxL@^8APTavtETWdh!z;TELjg!L(^r{D_( z1pRB3`UQM!fY=s4vV5Bn2wnF8BSDvqh{60(1F}Ot7lEeq`R;(GA+uo&kUef-TO)rR z+z{qxVW^QEfRRSF3APE@2Mt(RfnihR*Phz9u! zB5RlpMAkC1BI}sF)riO_)rH6g7LP?XGV6_OVkRP+)0ZEJY=N!qvb$?`XU*=Y*`Zo= z>zJ`*Z?ZSn?2R>hL(N`ai*Bn$x7%xLksVn7Rd##LwrX};%?{S0JMC>iCq~4^ehAcT zU(Ggawo!{lNM|eP*{f<}$)#x2-pQJ^_PUzAre?3M+2LAr6-jj0#`Z5oca2@Dy~5s( z+A(t}+Ear(qjrQL6VUGlCu4m}(Fjy*TW##drRWVruR#i1!N*u?DZ1Oq!$V{4WW_S|WA)y9HL(LLZ} zT@52g_o`u_j~v%pitfXJR&8waQnX)E+Eat*{cK#f6y1i#_S)FCrD(fs+zEk>{l-$X zs|G!2x4UHJcFcWj-%@mY4eQifX_7>?r@ffhT0auM% zi)^-c+kN&;l2~*n^mw}(n5(!Q8XU2A**&Ut8x;8_d$*)}Bi0!Dyw_eYi~DNP-O%eE zJ0goW)S^95=ze>>y-)RxK%x8W8|_|Iyb&6FgB_K~yK2!Wbhh8#Ba3@$(Opp5EwD_{ zEj);Xy_xQmU_^D3f_P`!r9i}U>Nf7yThW?0@J7 ze#5%t9^ED`9Xv*rD~WR{!Vs%5O*;qnpbxOya7JNm0$5EM0}b?=7W^B7XCLaZLA>sO zjb=ZZdA>_Sk5iQ+gjmxdFVq+T$GtkIw?>-UaRS1-QztnhYuY8?i3}s9Z#txnlNqeT zfsmwl`r_c`IB1gxh(?aI!!hCwq+K840mV)0A#O;|g2xXI3LZStKag{_>CxjLQnRK$ zqk`k>0i*E2rx65{%;5NtPV{Pn0%Xhx#@Cv*+u+IE3HK3>Gz167!en;~*J=Sz8ANf2 zsgsu8he2P<;93KA$3cT0G}=LFBE*Q8ni3XVZY?Z&IUvs)a#YqT*>GO)LM6+P6|hj2 zUYAhIC!26g!;4a~P&aX$%u1}D{;D$-0vzKSk$#zUkm@3ou>!CF(UTia$C?U34c}+h zeIq|ETFMcNk|*irP%CY03;0R4IRjr|5kXxfhw)@24PM~@se}Kq2QP~-93Tn+ILJ}J8%F^q?{QHqmxcnj z!)0f8*enxzFLhVyFT+Nm&?BKX7#zfTLt7_H@+q}Fmz{S?RU41G3wE(QKbx)g3mFOy zZE;a@Gv)lW&BxyjjK@jjvSA4Id2mtXuU7e@;D16aKCH?DcoKTKu3x3<7heq|ejZYp zK>Z@Yc8!nzvivYBQMa_Ha-YskovTbNwrfE5Uv$S?)Oao*mZG~T3MYh7f%8Mu2 zS$~oR>mH=0l|`z#d;}o+R*(tn98$x&AE{~mHc}oRnDa#>ZT`UPnHhm78rn=TgOXn4 zRRD!rZLe-BBB3vwA>F!wHG!ulu+X#K}dAv)Z?-CaW5 zfv@ooJj!mtw^gampqAq`#%ZTm8&Ybgl=vZLYyTQ*uc?$@28qDuk+k_6+7{xK)e@s*_TA8sCPXf?s3tn@GC8gCqwEM)fmTmF_=5V)?^AL+zJP>ldrv zi5jwG`d9yf3kJh~2=EMQ4J-V39TeTi0jK=oAOuUIei4TIEdH9HCA#;b)$b3lM%Dk7 ztw>PwHY8`zwB{24*4_)MqC*KjNYw7{AwjqG$hM#nMBfQ;kfQ@NxScpTg>wV4(-H>_ z??YkTA0h!>%fdis3=%0#X-{w{C-mAmTkIhj_aNxS{!=2;Jf5Ut!E0NAzL*ulC1De8pSy&{Q>OM-^- zs*`_4>LKzg%zvY7MB2Wh0W(Ce83z*svNRj+KaJdq`pK3t(JGoW92+SsgXHyVl7KE63 z#JB_Oww@m2z*0KlS)Q+;cXxXLCet7OpMVP_CBi=j_;!E>?or*}LBaBGrU9ks{bCEr z3={OLGvC!#9;nJF%2VST=okoqI2??F=#3&fc{sggMNUataq6D{_!=m)VtGAib+@Ak zZV9WyGyDU9PXZByyWas=xAIntxjcfJCseBlZb6~DsBmm#Hu?Z(4B*Ek&gz!{T!4?j zsRwUIVclUQ!dUmH%6=rXty|lKD50~_72E?5sF+>wB><%xQ2_uq!eNs&%>n?qkyp01 zqWc!m#nBl>MvnA+uVFM5CZSX`GPVu7o3$2h^!(lhB=twsw2I zCr6Ox?OWiQ`%}3+KSmGmuN0P>Ab12ENHh8(vf|g8eG&ywT){t*$250ahr1~Ez-N9v z{pJs0)XrPc>kR<>UqSzeG2HeyqGkuBzk{Bo@P8P|BpUp@$m}H$zy!VlV5dY=d%<1h zrX~NERuDl*gsX#;ve9b)G03CU&M&i`zl$YO>MkAHX%yX+y~3U3Ic)$6m~*Qnp3;&~ z6J6#wd;hyvNIuBc9c30jgyc_H-1%`9e}?2wS+rNd zqqmPBp{HU*PP6zHBwu5(=iPw#kr(&~FWO;$^z*3ji(PFj-D`_o0|X8n5WDUoVBd?4 z&bxTnzxvzgZlDtOfeyzS&eSg*4hbrULxLTmn>Y9C=p(v$xxW&k=%!*dwSs$|ta7X0 z*g+1gO~`~5K?>xnonag3*sOgI5=5BY+fbv<6dnY>x6tM-ba@L~)h_=h(3G}(6@;Q) zgZE&VpFm`RN64OXbX`2D!aq+zd>TYs^~}Z%uVu$Q_r2}bODMf?q>`MDK+p<)1L>$6*ax(9Si_I(uxS;Z~-{FqE0gE=lh5L$6wDZ_%*4JO6UjC{`<8#DhhT=n9dQ~5Y&j;|13$C|wY-}KDnnbIsCJ&X6FcD$0$&N-(_llgMNIZ@?rr{4{v zgXIMv&=xJE#I3;V?Gw`|9V=HRtCQuDyyNdiCBq?##v!MeU6`pV8m~q5(K(69Q+{DE zE@Q9K=t%@6684O_t6~RGoSGaOGSzo11Y2!#~HJ3Mheu5HvuhG9) zka#cHKu=h;1wfxb%~<(@Q@9IKx}~>ouie|XU&f5@DwpnY=F7L-lrNVmRXad;l2`$NJv4 z;5-|WjCnuXxrw)dpNSF{xRjmoPTITPUjokc4zMCE^w*2O0IP9;MSPSxe59r3|9EOP z0M8VRr5ps*i|@hmd8BUd3uw7Xmff1Sqvn9FVT&pL1~uFRRIlRjkXlUw%k&9H46r|e z0M&m3w5;*Pvhg*z^WF||QzDbtC_ImMbLW%*=qOEGM@O-Xiyd`zke3sYW$h znWjmFA-PZ;9X+UkK6~GOtvd=~4mNjm^cYeY=>4LIVZG)Qht+<;z>)4R7&|&r&Sz)H z$Gl)DP-}5dS}Eyo~EQYJC6Z01vS>) z?$FHy8TOO&9>3t^7pmoX8FADi5pP5%&Q1m#TO`&e_$&;{f5OSm=g&Ix6SH$O;#=sW zHNL^2U=Zz^@)dOLJqO||Q8dLL!>+cYyJyeOX6GS4NZxaHsf9b6t(+YltxV2gyHC!= zhmOOkC{*^#O?Lg*%WTg>l8;ZpwL1&tVx)xUui))p3q5}}3wD;f7!0l)EjfZgmy>64 zBIC^fKGM8#i>V4fwjk8@G0Scnn?4A>r$qSX;s>`qql=Ykgh# zA(H{E^LL90lyH0R0mlAND1-~ih{2jRzriMrX!W9f8+xo-Mtrrg25vz62%2$iMW1lJ zPe;FCYpKiEH5z(e;MUErGQdkGh6E0r5XIE3o6#5|Yu#%xupSS;k9LZSVr-T=ffgoP~Fs6^kavYl4EAzIp z01ETjGv$)Y?=Md^u19*{ut^U0Tw8iV%w-YRm`0GnodcxDGr_lq!o!bEAQDvZc<|k7 z1UlP&`1@x*RQ^13RSMU4HF*nBma!2JTZ~)zzKoX@T{|KEW=Fd|%%C~>860T#kt28C zY4`H)-R13b&U^(i5Ifc%AL$?1SDHL?wmNgs?j0%)=9Af>WZaGq#8UePlKW!GzCKYm z4*)pq&F~TP)8&Qg&6WAQ>)aro!?1(RY)c-g4(`UImL7 zS~@x{7!J~R<>G8rzymoK6L;a_Akx)F^olGh#>GKI!r=a&DovNl=S!aG*hGaMOmSB3PCFsf!gh6DWQxtZM7J`^VrE3 zW{w{{dNOm@(L>`!{^FFZD$$*dfgy57mJ z7>H7fl$k7C5Hn6mOgk4V0zdVsw1(s|_uQ3`B8kO3>XVQPFhm82C6;MGEO|CxOr(;r z>_}lS8PDfag>i&w5FR*>z$7!M<VrnM_QEp)#3xOUMZm7~%kfAehtyQ!c@TBp8c(DT4pPNOq`LObic> zBt~GK;^Qi~m0OscDZrMA+(J>f@g`3^s$9yHobzU; z!Z66+=PeJwsbG+3#DtWx;<#ksDN`&7276=y2T-qi~);{yYQ)bNlq$Rl7lF)}Vro<4g0bW$!hNEMUWcx)h7NahFf$pX(4 zN$2EII8xWc(?}hi#2hC-oF5t*&L;{f98q;*h-*C)VuNw+(Abj`K2Hc6pQ)F%^kxONhiF|IjP#i1_)#=3( z*C)3+J#?VtibI1Vv7tl^R%qB6%#VxXr%s&g8Nch)ojr#pP8@fme)PFpqng~dlO;Ia zWAjdS8u4s5jLE>_ZYJpy2PY;nM~5cwU?q zhw!-S$OUmqoVtKVTPsB|y*dz&DfX8U!?5vK!pRS2lf#2W=s_I%tu6bZ$upBxQTNeL zmEe9zZ@npmsy8<_<+5NaEIHhJeOjET&eO!7ESK-hmM-!(Q&|=`y$dea!SWoA1BOFg ztF8l@x_C+kJiQ|}HRz~P<2uU)R1RcPx5biqefP+e_2mO1$mN~EWUe@n8W~RFHVBui z1*@(L3F%112V{mHMHZY388}dxVs>&yF5*zCh%<9I9?Qp51*qvth;?cs^{aP6LS$wb z8#YTy-4c&%Q`P5LX=nM_UviZSeOm|~zz3Z^LPR9nF3v+li zK=SMq&^hLeBw*Z}L~I~C;Bd1xVc>Tm8$2&el(Mr<rTi zWE`8%mvFU2R6^aC`9wgmA?^jJqwJ5dnRi@%{uREBcNt!YQtNV@M6J8tyNSWO_#Ob7 zb_}4rI>_e-p4$WJ5wpj)@e)KFC2+hC897cO2gf^*NvgX5XsW#c^)vy=9*s9A7^spR z4g=5~NW}9X;R7f_Xg>9}#Pb_M>j$Xsg9liP9RO5$$9*2kWb50gkmScv0si7-BsG$u{Jms60w={5GVZ$x&zc(!(0HMNYor9pdVN_0B-EoC_w9z2^nqAv zYVI2k*O;0|LLAI9HLiE#HHlBLu_`VjqlEqxIV8m2DN7aj5&$h|s+88SKL^-C(S4QT zBW$dS4C@jnC56#osI)JsNB0Q69NHHxNi-@o7lVD{xNyEPJL?_O`! z@~UXDcnt|v<w=ZY)Nq_=+(!i5KD9cw6H^lrRF{eBuav z2@oUj;h~)00RZ(Y^dl&=s{iXz>zOQhY`na|*F=`xk;KtX79KyJJ;@K~eqLjYGiX=skM zW%&bicJEhwb07TvYh>j2^JtRStlK3HZ0Xz3f*J4+kGQsl547voqW7bqX2i9Xce>{T z@Z9@u1_lif1zhQ*wGn_X5N$s0o|} z9sx8-oeb##`I3+p>D>T5BK;PMrf?sWzY#<0##3l;UE1L$ZLTz0;A+2`U8?dyEt$Bd zF^{^*cr8#MOn1ldq;PK-(umggOb&=rE2z%y;BdgX7i3XNQ#a6)UPK2yMQ$Q}V|ph* zd7Kv9ekYH@$K^-a8TVQIFTyG)1L!`$f7V7>G3Gw?rxAis--L`peFt&~@D0f1exfSt zY0I6itipRy>si^iqS$ydz!m-{iBy%ZDw6W2Q3U1sQjz}^JbiITy?&VsExw2r%}c6| z)a2ZYFxOx4_&K0>cw9oU@oK@-jYb-3*M;T}P^1$my}56qrS3M0FR)8h{2ZHI-ge-QqV3~DDL1^zzLFl_mC*F4QJUT>0ea}Y3`JA8??sS0>3smX+%>Nt zc2zupj4VHd94yyu8r4S+K~v${HHxFz-#y=0uh*i{!+>~2*iZl0_(}H`(fZFU8TEf< z$*lh)OTIIio+BrFq>Itt&&S^VcRP7jEu?yGKiSi>5FhBtR%BLL$SGTp;d{ow)Y&12 z0I^3$Q4bj5mc(!zL5>jw(TXD@*+Riz{P_nux=_U*gi-^Y=ZlUE>%>yUlv6C`;<2Gr zDmD`6!(IAfX4=W;vv}i7}Y1r7IKN?ATHCxd0ZxQPSKK2 z0Pud7dZBZrLz+y+o9~UQu=0$lDRmtkZPHKRFTb(1?^F17!!SBpw-`WQeme{eX?FD; z3hxarzZav|@_TW|jVmmC5r_^RRwNVI_)xr-JX89`%)D~8yf9P9%sLQb zCR>=o6Xz1{`V;~A!JGDHlX&`_8csR`iFh$Jm>XREn{_TmN2O+Dij(vBC*+Eg6xq;F zZXg>UL`0(vfw#fGG9nSM5%${fkJlOJD(H$F4ryC+$`ddh!z!w6JoWb<&z{$Z=E)wt=xMp$a7)TcCPB~`Qh{oXDE>pB}%L67A=yNM9mE6myiwhY`hjBJG;p$aS$Y+=cmWy z@K@wWva+(sBz%saR48D+~Xd72!cg`AigEvd(}N0 z%JRa8h@u_y1nKS2Loyza@nbvOM;td2nzb-ZTylpb zeK+O_h0z&Ts+f|u(0bx#MiLMPWW9pD0-zjBdom|o;}z^RXtlENk3G55XO*d96$9^{ z+4GEh-a*f`y#JB6G6sf>zV}fY1FzuC^q!L_9%1S zz&epO?Fengu!XR(2-Faak)7U0w)ZRS121~tleDeC7XYv%lthoV=6bUtYv)X1|E(#l zP-ey~q~l2l!2#b&FvsA-HNlA^FeE+e7K!1AEpd!3pbFUn>6$G91PK|$ml5)1yC$F* z{7$pEj3*pZ8Q4MN^M>W}Te>2WSY{HBUk2hpBo?hE`2ZI2q|B_1ZX_Aw2ze+P+qE(R z*dSQ%;T@onp4s;f4`t7dL6zppjQ2N(7GAvEy&D3YAAD!HKG%0ml8H%5#-4|FpyEA3 z4qcGaL!zP8XNZoFJC;pm#w0&UM>JbZGm|gve=($Sz=j6H5fwoKe!J&F=#Y;0=nh86 z9_gR3%o~#v3DOi^E$<<8Ma#e$tdlVbup;lEPy1oim}2{ro^gkalJo>)y`zW|Ha9p6 zt&*=~ERFQx9f(U}yAvZbWIzT>k8uznh~TOa8W96YVxEXMVJs4mli*PUp;4)bGh*A3 zuxm&Y1Xx;>gvWx7f*q4VgrtYB%%^dOF|);J71(xCc<-fi31R9!x$`V!?bW z9UxmU-adj2D z1Cjpe6#93*0dR zkqsIz58R85gW#{#d5kuUfjb*Op00A#7{kwklE%Wob)c_vL1S*_z?0`dYGY>Lz8F9@S@766F>t2>a6#4tOpZN=de;^4V*LT zl3GwNGAQ=~toXb}OFBFc`*qYsHLGXO!Hi#2ml*0CGz@FLqNe!uYT#aiRnIDiUtb8^ zS(x*pno?KwUI*s9pyt%Pew~B;zMx!Qd@*ocSnQ&@%&%7h_aaR8EP}avHiP3ts54a% zExh@jn%2F~L{DAR-7nBRrMn-F;=E^_hWQtb$7a_Qo8pPOUHEgb9681?t54|qr0l7&gEGCZiT6p00P0Avrwj9myP zG4J2xcQc5q%Aj;42G_ARZe=V))EI?Rq%l2&x){(T9UB{LWh1Do6dwD_=-3{h*(ya% zO2sJ&h(rH2Kw&4HsH&HU> zT-iN0#n^$s?nP82m=4!|l~FU7pFjf%eGY$tE|2|EayB+^JT+b0`&VROd@lXM1nH(n z%K$#)5NFpXCbO6#rflyM2#SP%Y?*f`c?}PPPt*Gaa-#&;ba1LWDNi|ZtrYWyr&MZ# z^ruoJ8St`_p~Mo60s13Fgcz7oLI$XDMG#$k18RV*Ap%dmPC`VRi=&OH_(~=T@e`0S zXj21;6A%H5!}~M^kt#HXRG8j#NAK`E$}XdMWrjTyR?9gdkj5AfNr5|1mqr{8cpuwz z%!UoP3D*rf@eo2hnn{G6n8=+Fwtnsj;|AqINQ#k-o5L)Ok}D(1!jRPIEG*Z@l7sKe zgb5g2htn-AJ(h>T(hP22XP|dYA=8VIB`%W zHz*kZdGI9*B6P;shmz1I>@_xTB%vBfi3rAVij3xFG;Lv;k}dX1=$^GoBk7Dx8^WV%GnmoqBKX&z-%RAHbT;$#i>0vo1qgd|XNO$Lbp!XF|;-DGX3B!Uo`q!R4^ z6DZM)eh&Z;U6LCrfwb~pD`r5Aa#q{LT}t|>T$crXzn zb<-rx6a|j778asKC@e}j0iOBc>^26LAUzEQV!{HT48_J-HBUh%$Y!+|knI{oAr&&f z#3btddUFhHfmj4T?;W1i+aNvgLuD3d=G>P!N%m|E{i87~wk#AYIw5w6Gn6>m92Go* z>QiIWHN3+dUJr9zje=IxP*h2LVdrd}-vf78{ve(2JMpxHMj#$~bK~9zhZ1oD&s$+t zlhFQTa8(1)sAzPZ05%iHJju`%4Rg;Ql7L#VJ z%(yX%g;bT}Ac_-woS!O&qK=Ixa(kdN5m~t$!{&q6=xn5#9`^w#?{OmGEF(9?sZ5pt zg2*a$p_wJ#5_EZmD%wC9?meC!A1_ed&u?N``ksv3! zGLYew0qK#i3{Z?wxvZ}Y;FsEBFak`+N^8u8^(8ql!WPx}5VNJl%%`Lvf5gBMFIb7H zPG2SrVUAoTJX5ja<{&3*ga}LEq2oDs`SJPmm~kK<(FZp>j}iywBfeqyOm4Vz#Xw=j z_y}a82sEBh3&wEvO+<=;T!0XICD%3<3=7d`xJX$aITs(j%2bw5NlX4q2#CP&Ov;DmI|13%J-pUPi!hO8{Z= z{*-s&b=V4%jsq9r&!8qv=P5EiJ)Y~i8FbN%9~(#JoW(erTr|$aR8c@GI2i`r2?8^& zGSug+IH$7I=VaONkipXaNu50Fci@@Q8MJ-}J*O1If%vF6C7^5IM2~q$ZHea7>QqDp z4*|?6HFazVn5NWZG(^DGs^(2VNaZF%ID|Qi?Hw)-%Z0sX*xt{=NiytAbVC7eBL5iKglrg*YQv4T@lB@i5*!}+ zR%7U#UXr6DUk)0m_)skuMt(%VsN6dW5VhK8{*B!!|E**0BIRSeQA88e>HJ)Yz*e5J~? zP*o-PWQqdc@eRjgAFZaFR4wBS67e(0yftJLOF3i$M?%5H$U_b)VRZW%LTMb}1eti~ zPN)fG-JThdQ0BQ3$~+^XPvzGa5jm|E5rjqcp_UDv6b+6fwDzokjx9efAFS2lAtA%f zNcP&}7DQ<1Gy{jEXh<`tNJeMK7Qz|SCeaKLgqd;7kU>2&18B)`W&|4T0R^dW29;0< z4Gts7Ex`tLpRk7-bfl9BHt-tx!>Hwkb_+Wi(^`R5Bh2VcL>0_XMP?o@#tlDgj3T5U zE5%vMVSryyj!{6@GpN-#5@5za3ah>nu#0Sm{U;lOzBvTVu`>dl90kpxi9u%x^r$5z zJS6drNOFWb*<*%5$_iXQM?j#aY0K^>@73piJjh+!bsq;wmxSo1e^bjzGadKb| zB1gdr4k^5!r@Rx4g%UB^jhJ!d{|GtZ*hsX1Z|ZeNu_X!)!uzk3H^cBKA=6QW(lOnm zWNaj|P&mPrNVJ8nIaEgJ`;(#Shx8v89Gw$sdxU(F&tnSdBO=mz#UUMuNS}`^BGO8z zS3>ca{43;(MZ_v45wTwQ_5stON{2h1LsY0oD&Q3AsK;{j9R5v~_O&UZGxalxB1Q4H zL0^lg;SReZ@tyMx#U(7hK*T)^O2Ml_&}F5hTS~e&MMG|kdp(11426B=dE02u^A`Ue zzEU~69_vP6{E)h-a6R_(`;TZ4V}nE8nqg~% zt!~6&D(r;&42`s+K}s@q)O^gGL{v)^Cb^tb01)b*Ft{$5+Z zT>B%e+rRc!^WL?^c60BooojpeQh&d{_uv}VTzhN1zjn8^*xuQ?TJYQLO0iz=wCaAl zR$RK)U*CRkbpxZ#jjM&l(qfT!Y_7K!_x4w|`4<3ceS7zAU*VSk_&q?Yxw*O1zP8uA zzk1JaV^O=g+ib7*AE=#s{$6);2R|dwyLOv<{&ruj`OS{%?(A(f`-{<33m`TaU^FA} zhf7ZT?WdLy^LY6j?Hg!+h))b3QYD7?W1uy|exzb*XMz}lW6|~ zz-XUBQ#x_Qv}5Tc+{TwD_ltwcXtEtFcmA9|o_x;sy{~NyV zQ6#-Sx8HB}*V`|v=Duq0>|tlP;?>O^1Y2GNxZ&VhyHF^$YJQ=aFSa_JX509)>zC$Q z>ba1cUj`b1>-ZtSAN-)bxwC(F&wu9~(A=!&YxSC6suxS;a;MfZOX0F1yHU7bjlw;4 zRqFM&pKlh5^?aw^>~yR-I#pKnsj|GR+b$O7+m-54t5D0AJFRlT&&L*?v#?mMkn}3` zLcZErYAw~;&2pz0FKOZIZ?3l?BW_mli#7l4Rh);bbUqUOZ2{g4-#DdxDfehJT|s$a<$#{T@b!n1|n>M@@E^}ir1>oi-n zLa|%%yRCfD?^IH|zZLlXwVk`0oz*QL?5{REy=EI{xaNnj?i0pht5qwv>eY6=3c2O& zTdRNi`}Lu43S~B#)$aNpeq7jH?-#0Tt!AarF1OmQc8|gZ;Of#a8A}jxtLUS#57p z(gZrckGF5r%W+*@QFASJiy^_w%g0yzMs2p5Ex%b^>J*n+wRX3&G=BegM8UIqM&j1Z zw@byUpKoLrU-xcp)!vv}Yzfi8#3hh=Q53A1S{!YRMO7+#**KW_U`WF|Y3~^Bh zNSe7l`|a7;yT$yhH~Z@CS^5+Tyc)kTg`SJG)!Dn%7M9=lzD;m1prYNb}oS8Ih@rBax9BMQ{WQkR!0Lf@^i-uLgekQfuj_D+Z9 zD3ml?n=r8NhdsD6W-tqzE0+rOO1D<)R!V-mS}C2l`uvEp+T9{=Z&&iADlEF3ujTWd zPWdFVZi?wUyOhQ+FZ*xr`fa#{PUjIFY87&(YHevLU+H$+lVAQ#?$q!nxu=G|$URLz T`)%(&n5K5$@1NoKt=<0xZl!fm From 6d7a112044e930cc7e1de2c1c82094527a4a006c Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Wed, 18 Jul 2018 17:10:55 +0200 Subject: [PATCH 02/20] wasm feature and collator feature --- .../test-chains/basic_add/Cargo.toml | 13 +- .../parachain/test-chains/basic_add/build.sh | 2 +- .../test-chains/basic_add/src/collator.rs | 27 ++++ .../test-chains/basic_add/src/common.rs | 98 +++++++++++++++ .../test-chains/basic_add/src/lib.rs | 118 +++--------------- .../test-chains/basic_add/src/wasm.rs | 15 +-- 6 files changed, 155 insertions(+), 118 deletions(-) create mode 100644 polkadot/parachain/test-chains/basic_add/src/collator.rs create mode 100644 polkadot/parachain/test-chains/basic_add/src/common.rs diff --git a/polkadot/parachain/test-chains/basic_add/Cargo.toml b/polkadot/parachain/test-chains/basic_add/Cargo.toml index f799cf6b6b8c9..bca75a632b656 100644 --- a/polkadot/parachain/test-chains/basic_add/Cargo.toml +++ b/polkadot/parachain/test-chains/basic_add/Cargo.toml @@ -9,13 +9,15 @@ crate-type = ["cdylib"] [dependencies] polkadot-parachain = { path = "../../", default-features = false } -wee_alloc = "0.4.1" +polkadot-collator = { path = "../../../collator", optional = true } +wee_alloc = { version = "0.4.1", optional = true } tiny-keccak = "1.4" -pwasm-libc = "0.2" +pwasm-libc = { version = "0.2", optional = true } [features] default = ["std"] -std = ["polkadot-parachain/std"] +std = ["polkadot-parachain/std", "polkadot-collator"] +wasm = ["wee_alloc", "pwasm-libc"] [profile.release] panic = "abort" @@ -23,3 +25,8 @@ lto = true [workspace] members = [] + +[[bin]] +name = "collator" +path = "src/collator/main.rs" +required-features = ["std"] diff --git a/polkadot/parachain/test-chains/basic_add/build.sh b/polkadot/parachain/test-chains/basic_add/build.sh index f25f775d43503..e76232453b9d5 100755 --- a/polkadot/parachain/test-chains/basic_add/build.sh +++ b/polkadot/parachain/test-chains/basic_add/build.sh @@ -4,7 +4,7 @@ set -e # Make LLD produce a binary that imports memory from the outside environment. export RUSTFLAGS="-C link-arg=--import-memory" -cargo +nightly build --target=wasm32-unknown-unknown --release --no-default-features +cargo +nightly build --target=wasm32-unknown-unknown --release --no-default-features --features wasm for i in basic_add do diff --git a/polkadot/parachain/test-chains/basic_add/src/collator.rs b/polkadot/parachain/test-chains/basic_add/src/collator.rs new file mode 100644 index 0000000000000..b83340cc63226 --- /dev/null +++ b/polkadot/parachain/test-chains/basic_add/src/collator.rs @@ -0,0 +1,27 @@ +// Copyright 2018 Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . + +//! Collator for polkadot + +extern crate polkadot_parachain as parachain; +extern crate polkadot_collator as collator; +extern crate tiny_keccak; + +mod common; + +fn main() { + println!("Hello!"); +} diff --git a/polkadot/parachain/test-chains/basic_add/src/common.rs b/polkadot/parachain/test-chains/basic_add/src/common.rs new file mode 100644 index 0000000000000..aa97f8ce180a6 --- /dev/null +++ b/polkadot/parachain/test-chains/basic_add/src/common.rs @@ -0,0 +1,98 @@ +// Copyright 2018 Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . + +//! Data definitions for the basic_add parachain. + +use parachain::codec::{Decode, Encode, Input, Output}; + +/// Head data for this parachain. +#[derive(Default, Clone)] +pub struct HeadData { + /// Block number + pub number: u64, + /// parent block keccak256 + pub parent_hash: [u8; 32], + /// hash of post-execution state. + pub post_state: [u8; 32], +} + +impl Encode for HeadData { + fn encode_to(&self, dest: &mut T) { + dest.push(&self.number); + dest.push(&self.parent_hash); + dest.push(&self.post_state); + } +} + +impl Decode for HeadData { + fn decode(input: &mut I) -> Option { + Some(HeadData { + number: Decode::decode(input)?, + parent_hash: Decode::decode(input)?, + post_state: Decode::decode(input)?, + }) + } +} + +/// Block data for this parachain. +#[derive(Default, Clone)] +pub struct BlockData { + /// State to begin from. + pub state: u64, + /// Amount to add (overflowing) + pub add: u64, +} + +impl Encode for BlockData { + fn encode_to(&self, dest: &mut T) { + dest.push(&self.state); + dest.push(&self.add); + } +} + +impl Decode for BlockData { + fn decode(input: &mut I) -> Option { + Some(BlockData { + state: Decode::decode(input)?, + add: Decode::decode(input)?, + }) + } +} + +pub fn hash_state(state: u64) -> [u8; 32] { + ::tiny_keccak::keccak256(state.encode().as_slice()) +} + +/// Start state +pub struct StateMismatch; + +/// Execute a block body on top of given parent head, producing new parent head +/// if valid. +pub fn execute(parent_hash: [u8; 32], parent_head: HeadData, block_data: &BlockData) -> Result { + debug_assert_eq!(parent_hash, ::tiny_keccak::keccak256(&parent_head.encode())); + + if hash_state(block_data.state) != parent_head.post_state { + return Err(StateMismatch); + } + + let new_state = block_data.state.saturating_add(block_data.add); + + Ok(HeadData { + number: parent_head.number + 1, + parent_hash, + post_state: hash_state(new_state), + }) +} diff --git a/polkadot/parachain/test-chains/basic_add/src/lib.rs b/polkadot/parachain/test-chains/basic_add/src/lib.rs index ff9006c8c2173..894ef6e1162e5 100644 --- a/polkadot/parachain/test-chains/basic_add/src/lib.rs +++ b/polkadot/parachain/test-chains/basic_add/src/lib.rs @@ -16,127 +16,37 @@ //! Basic parachain that adds a number as part of its state. -#![cfg_attr(not(feature = "std"), no_std)] +#![cfg_attr(feature = "wasm", no_std)] #![cfg_attr( - not(feature = "std"), + feature = "wasm", feature( alloc, core_intrinsics, lang_items, panic_implementation, core_panic_info, alloc_error_handler ) )] -#[cfg(not(feature = "std"))] +#[cfg(feature = "wasm")] extern crate alloc; -extern crate polkadot_parachain as parachain; +#[cfg(feature = "wasm")] extern crate wee_alloc; -extern crate tiny_keccak; + +#[cfg(feature = "wasm")] extern crate pwasm_libc; -use parachain::codec::{Decode, Encode, Input, Output}; +extern crate polkadot_parachain as parachain; +extern crate tiny_keccak; + +mod common; +pub use common::{execute, HeadData, BlockData}; -#[cfg(not(feature = "std"))] +#[cfg(feature = "wasm")] mod wasm; -#[cfg(not(feature = "std"))] +#[cfg(feature = "wasm")] pub use wasm::*; // Define global allocator. -#[cfg(not(feature = "std"))] +#[cfg(feature = "wasm")] #[global_allocator] static ALLOC: wee_alloc::WeeAlloc = wee_alloc::WeeAlloc::INIT; - -// Head data for this parachain. -#[derive(Default, Clone)] -struct HeadData { - // Block number - number: u64, - // parent block keccak256 - parent_hash: [u8; 32], - // hash of post-execution state. - post_state: [u8; 32], -} - -impl Encode for HeadData { - fn encode_to(&self, dest: &mut T) { - dest.push(&self.number); - dest.push(&self.parent_hash); - dest.push(&self.post_state); - } -} - -impl Decode for HeadData { - fn decode(input: &mut I) -> Option { - Some(HeadData { - number: Decode::decode(input)?, - parent_hash: Decode::decode(input)?, - post_state: Decode::decode(input)?, - }) - } -} - -// Block data for this parachain. -#[derive(Default, Clone)] -struct BlockData { - // State to begin from. - state: u64, - // Amount to add (overflowing) - add: u64, -} - -impl Encode for BlockData { - fn encode_to(&self, dest: &mut T) { - dest.push(&self.state); - dest.push(&self.add); - } -} - -impl Decode for BlockData { - fn decode(input: &mut I) -> Option { - Some(BlockData { - state: Decode::decode(input)?, - add: Decode::decode(input)?, - }) - } -} - -#[cfg(test)] -mod tests { - use super::*; - use parachain::ValidationParams; - - const TEST_CODE: &[u8] = include_bytes!("../wasm/test.wasm"); - - fn hash_state(state: u64) -> [u8; 32] { - ::tiny_keccak::keccak256(state.encode().as_slice()) - } - - fn hash_head(head: &HeadData) -> [u8; 32] { - ::tiny_keccak::keccak256(head.encode().as_slice()) - } - - #[test] - fn execute_good_on_parent() { - let parent_head = HeadData { - number: 0, - parent_hash: [0; 32], - post_state: hash_state(0), - }; - - let block_data = BlockData { - state: 0, - add: 512, - }; - - let ret = parachain::wasm::validate_candidate(TEST_CODE, ValidationParams { - parent_head: parent_head.encode(), - block_data: block_data.encode(), - }).unwrap(); - - let new_head = HeadData::decode(&mut &ret.head_data[..]).unwrap(); - - assert_eq!(new_head.number, 1); - assert_eq!(new_head.parent_hash, hash_head(&parent_head)); - assert_eq!(new_head.post_state, hash_state(512)); - } -} diff --git a/polkadot/parachain/test-chains/basic_add/src/wasm.rs b/polkadot/parachain/test-chains/basic_add/src/wasm.rs index 10071131886fb..618e6caf2311e 100644 --- a/polkadot/parachain/test-chains/basic_add/src/wasm.rs +++ b/polkadot/parachain/test-chains/basic_add/src/wasm.rs @@ -39,8 +39,6 @@ pub fn oom(_: alloc::Layout) -> ! { #[no_mangle] pub extern fn validate(offset: usize, len: usize) -> usize { - let hash_state = |state: u64| ::tiny_keccak::keccak256(state.encode().as_slice()); - let params = unsafe { ::parachain::load_params(offset, len) }; let parent_head = HeadData::decode(&mut ¶ms.parent_head[..]) .expect("invalid parent head format."); @@ -48,14 +46,11 @@ pub extern fn validate(offset: usize, len: usize) -> usize { let block_data = BlockData::decode(&mut ¶ms.block_data[..]) .expect("invalid block data format."); - assert_eq!(hash_state(block_data.state), parent_head.post_state, "wrong post-state proof"); - let new_state = block_data.state.saturating_add(block_data.add); + let parent_hash = ::tiny_keccak::keccak256(¶ms.parent_head[..]); - let new_head = HeadData { - number: parent_head.number + 1, - parent_hash: ::tiny_keccak::keccak256(¶ms.parent_head[..]), - post_state: hash_state(new_state), - }; + match ::common::execute(parent_hash, parent_head, &block_data) { + Ok(new_head) => parachain::write_result(ValidationResult { head_data: new_head.encode() }), + Err(_) => panic!("execution failure"), + } - parachain::write_result(ValidationResult { head_data: new_head.encode() }) } From 7a2b86a6d53bd2f7256cfe3fdb88e3903b465dc3 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Fri, 20 Jul 2018 16:13:13 +0200 Subject: [PATCH 03/20] move test parachains around a little --- Cargo.lock | 56 ++++++++++++++++++- Cargo.toml | 7 +++ .../test-chains/basic_add/Cargo.toml | 32 ----------- .../test-chains/basic_add/src/lib.rs | 52 ----------------- .../.gitignore | 0 polkadot/test-parachains/basic-add/Cargo.toml | 9 +++ .../basic-add}/build.sh | 0 .../basic-add}/src/collator.rs | 6 +- .../basic-add/src/lib.rs} | 9 ++- .../basic-add}/src/src | 0 .../test-parachains/basic-add/wasm/Cargo.toml | 18 ++++++ .../basic-add/wasm/src/lib.rs} | 31 +++++++--- 12 files changed, 125 insertions(+), 95 deletions(-) delete mode 100644 polkadot/parachain/test-chains/basic_add/Cargo.toml delete mode 100644 polkadot/parachain/test-chains/basic_add/src/lib.rs rename polkadot/{parachain/test-chains => test-parachains}/.gitignore (100%) create mode 100644 polkadot/test-parachains/basic-add/Cargo.toml rename polkadot/{parachain/test-chains/basic_add => test-parachains/basic-add}/build.sh (100%) rename polkadot/{parachain/test-chains/basic_add => test-parachains/basic-add}/src/collator.rs (93%) rename polkadot/{parachain/test-chains/basic_add/src/common.rs => test-parachains/basic-add/src/lib.rs} (92%) rename polkadot/{parachain/test-chains/basic_add => test-parachains/basic-add}/src/src (100%) create mode 100644 polkadot/test-parachains/basic-add/wasm/Cargo.toml rename polkadot/{parachain/test-chains/basic_add/src/wasm.rs => test-parachains/basic-add/wasm/src/lib.rs} (69%) diff --git a/Cargo.lock b/Cargo.lock index d325c991fe620..6b624534ece20 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -151,6 +151,25 @@ dependencies = [ "safemem 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "basic-add" +version = "0.1.0" +dependencies = [ + "polkadot-parachain 0.1.0", + "tiny-keccak 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "basic-add-wasm" +version = "0.1.0" +dependencies = [ + "basic-add 0.1.0", + "polkadot-parachain 0.1.0", + "pwasm-libc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tiny-keccak 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "wee_alloc 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "bigint" version = "4.4.0" @@ -1494,6 +1513,11 @@ name = "memory_units" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "memory_units" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "memorydb" version = "0.1.1" @@ -2127,6 +2151,15 @@ dependencies = [ name = "pwasm-libc" version = "0.1.0" +[[package]] +name = "pwasm-libc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rlibc 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "pwasm-utils" version = "0.3.1" @@ -2292,6 +2325,11 @@ dependencies = [ "untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "rlibc" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "rlp" version = "0.2.1" @@ -2703,7 +2741,7 @@ dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3783,6 +3821,18 @@ dependencies = [ "url 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "wee_alloc" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.41 (registry+https://github.com/rust-lang/crates.io-index)", + "memory_units 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "winapi" version = "0.2.8" @@ -4010,6 +4060,7 @@ dependencies = [ "checksum memchr 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "796fba70e76612589ed2ce7f45282f5af869e0fdd7cc6199fa1aa1f1d591ba9d" "checksum memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0f9dc261e2b62d7a622bf416ea3c5245cdd5d9a7fcc428c0d06804dfce1775b3" "checksum memory_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "71d96e3f3c0b6325d8ccd83c33b28acb183edcb6c67938ba104ec546854b0882" +"checksum memory_units 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8452105ba047068f40ff7093dd1d9da90898e63dd61736462e9cdda6a90ad3c3" "checksum memorydb 0.1.1 (git+https://github.com/paritytech/parity.git)" = "" "checksum mime 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ba626b8a6de5da682e1caa06bdb42a335aee5a84db8e5046a3e8ab17ba0a3ae0" "checksum mime 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "0b28683d0b09bbc20be1c9b3f6f24854efb1356ffcffee08ea3f6e65596e85fa" @@ -4051,6 +4102,7 @@ dependencies = [ "checksum protobuf-codegen 2.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "9cbd14b640510ad5a4339d8f78ab913a6da1f7b384400fa113616bf216cbdfe8" "checksum protobuf-codegen-pure 2.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7fcc3085b0644bcad72ea33f174f267c24e558e56a97115e3ef31a4483581a1b" "checksum pulldown-cmark 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8361e81576d2e02643b04950e487ec172b687180da65c731c03cf336784e6c07" +"checksum pwasm-libc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "027307d6d2086ffb7f399227d42593c5341e8869a55ac8dd7c79d7ca04ec00e2" "checksum pwasm-utils 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "efd695333cfae6e9dbe2703a6d040e252b57a6fc3b9a65c712615ac042b2e0c5" "checksum quick-error 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5fb6ccf8db7bbcb9c2eae558db5ab4f3da1c2a87e4e597ed394726bc8ea6ca1d" "checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0" @@ -4070,6 +4122,7 @@ dependencies = [ "checksum remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3488ba1b9a2084d38645c4c08276a1752dcbf2c7130d74f1569681ad5d2799c5" "checksum rhododendron 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9e38401cc1b63e71ec9119115c7e1354fcf54c8006ad59a22409dd8bd93737b2" "checksum ring 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6f7d28b30a72c01b458428e0ae988d4149c20d902346902be881e3edc4bb325c" +"checksum rlibc 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc874b127765f014d792f16763a81245ab80500e2ad921ed4ee9e82481ee08fe" "checksum rlp 0.2.1 (git+https://github.com/paritytech/parity.git)" = "" "checksum rlp 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "89db7f8dfdd5eb7ab3ac3ece7a07fd273a680b4b224cb231181280e8996f9f0b" "checksum rocksdb 0.4.5 (git+https://github.com/paritytech/rust-rocksdb)" = "" @@ -4172,6 +4225,7 @@ dependencies = [ "checksum want 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "a05d9d966753fa4b5c8db73fcab5eed4549cfe0e1e4e66911e5564a0085c35d1" "checksum wasmi 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9b4a6d379e9332b1b1f52c5a87f2481c85c7c931d8ec411963dfb8f26b1ec1e3" "checksum websocket 0.20.2 (registry+https://github.com/rust-lang/crates.io-index)" = "eb277e7f4c23dc49176f74ae200e77651764efb2c25f56ad2d22623b63826369" +"checksum wee_alloc 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "27875be1daf838fa18f3e94fd19fd12638e34615b42f56da2610c8f46be80cc6" "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" "checksum winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "04e3bd221fcbe8a271359c04f21a76db7d0c6028862d1bb5512d85e1e2eb5bb3" "checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" diff --git a/Cargo.toml b/Cargo.toml index 0c3402039e725..fe936c5390d24 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -28,6 +28,9 @@ members = [ "polkadot/transaction-pool", "polkadot/service", + "polkadot/test-parachains/basic-add", + "polkadot/test-parachains/basic-add/wasm", + "substrate/bft", "substrate/client", "substrate/client/db", @@ -79,6 +82,10 @@ exclude = [ "substrate/test-runtime/wasm", ] +[profile.release] +panic = "abort" +lto = true + [badges] travis-ci = { repository = "paritytech/polkadot", branch = "master" } maintenance = { status = "actively-developed" } diff --git a/polkadot/parachain/test-chains/basic_add/Cargo.toml b/polkadot/parachain/test-chains/basic_add/Cargo.toml deleted file mode 100644 index bca75a632b656..0000000000000 --- a/polkadot/parachain/test-chains/basic_add/Cargo.toml +++ /dev/null @@ -1,32 +0,0 @@ -[package] -name = "basic_add" -version = "0.1.0" -authors = ["Parity Technologies "] -description = "Test parachain which adds to a number as its state transition" - -[lib] -crate-type = ["cdylib"] - -[dependencies] -polkadot-parachain = { path = "../../", default-features = false } -polkadot-collator = { path = "../../../collator", optional = true } -wee_alloc = { version = "0.4.1", optional = true } -tiny-keccak = "1.4" -pwasm-libc = { version = "0.2", optional = true } - -[features] -default = ["std"] -std = ["polkadot-parachain/std", "polkadot-collator"] -wasm = ["wee_alloc", "pwasm-libc"] - -[profile.release] -panic = "abort" -lto = true - -[workspace] -members = [] - -[[bin]] -name = "collator" -path = "src/collator/main.rs" -required-features = ["std"] diff --git a/polkadot/parachain/test-chains/basic_add/src/lib.rs b/polkadot/parachain/test-chains/basic_add/src/lib.rs deleted file mode 100644 index 894ef6e1162e5..0000000000000 --- a/polkadot/parachain/test-chains/basic_add/src/lib.rs +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright 2017 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Basic parachain that adds a number as part of its state. - -#![cfg_attr(feature = "wasm", no_std)] -#![cfg_attr( - feature = "wasm", - feature( - alloc, core_intrinsics, lang_items, panic_implementation, core_panic_info, - alloc_error_handler - ) -)] - -#[cfg(feature = "wasm")] -extern crate alloc; - -#[cfg(feature = "wasm")] -extern crate wee_alloc; - -#[cfg(feature = "wasm")] -extern crate pwasm_libc; - -extern crate polkadot_parachain as parachain; -extern crate tiny_keccak; - -mod common; -pub use common::{execute, HeadData, BlockData}; - -#[cfg(feature = "wasm")] -mod wasm; - -#[cfg(feature = "wasm")] -pub use wasm::*; - -// Define global allocator. -#[cfg(feature = "wasm")] -#[global_allocator] -static ALLOC: wee_alloc::WeeAlloc = wee_alloc::WeeAlloc::INIT; diff --git a/polkadot/parachain/test-chains/.gitignore b/polkadot/test-parachains/.gitignore similarity index 100% rename from polkadot/parachain/test-chains/.gitignore rename to polkadot/test-parachains/.gitignore diff --git a/polkadot/test-parachains/basic-add/Cargo.toml b/polkadot/test-parachains/basic-add/Cargo.toml new file mode 100644 index 0000000000000..9f543444261f3 --- /dev/null +++ b/polkadot/test-parachains/basic-add/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "basic-add" +version = "0.1.0" +authors = ["Parity Technologies "] +description = "Test parachain which adds to a number as its state transition" + +[dependencies] +polkadot-parachain = { path = "../../parachain/", default-features = false } +tiny-keccak = "1.4" diff --git a/polkadot/parachain/test-chains/basic_add/build.sh b/polkadot/test-parachains/basic-add/build.sh similarity index 100% rename from polkadot/parachain/test-chains/basic_add/build.sh rename to polkadot/test-parachains/basic-add/build.sh diff --git a/polkadot/parachain/test-chains/basic_add/src/collator.rs b/polkadot/test-parachains/basic-add/src/collator.rs similarity index 93% rename from polkadot/parachain/test-chains/basic_add/src/collator.rs rename to polkadot/test-parachains/basic-add/src/collator.rs index b83340cc63226..41b190e76ab07 100644 --- a/polkadot/parachain/test-chains/basic_add/src/collator.rs +++ b/polkadot/test-parachains/basic-add/src/collator.rs @@ -20,8 +20,12 @@ extern crate polkadot_parachain as parachain; extern crate polkadot_collator as collator; extern crate tiny_keccak; +use collator::ParachainContext; + mod common; fn main() { - println!("Hello!"); + ::collator::run_collator( + + ) } diff --git a/polkadot/parachain/test-chains/basic_add/src/common.rs b/polkadot/test-parachains/basic-add/src/lib.rs similarity index 92% rename from polkadot/parachain/test-chains/basic_add/src/common.rs rename to polkadot/test-parachains/basic-add/src/lib.rs index aa97f8ce180a6..72c9f3b970b68 100644 --- a/polkadot/parachain/test-chains/basic_add/src/common.rs +++ b/polkadot/test-parachains/basic-add/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright 2018 Parity Technologies (UK) Ltd. +// Copyright 2017 Parity Technologies (UK) Ltd. // This file is part of Polkadot. // Polkadot is free software: you can redistribute it and/or modify @@ -14,7 +14,12 @@ // You should have received a copy of the GNU General Public License // along with Polkadot. If not, see . -//! Data definitions for the basic_add parachain. +//! Basic parachain that adds a number as part of its state. + +#![no_std] + +extern crate polkadot_parachain as parachain; +extern crate tiny_keccak; use parachain::codec::{Decode, Encode, Input, Output}; diff --git a/polkadot/parachain/test-chains/basic_add/src/src b/polkadot/test-parachains/basic-add/src/src similarity index 100% rename from polkadot/parachain/test-chains/basic_add/src/src rename to polkadot/test-parachains/basic-add/src/src diff --git a/polkadot/test-parachains/basic-add/wasm/Cargo.toml b/polkadot/test-parachains/basic-add/wasm/Cargo.toml new file mode 100644 index 0000000000000..7f098a9f0cd61 --- /dev/null +++ b/polkadot/test-parachains/basic-add/wasm/Cargo.toml @@ -0,0 +1,18 @@ +[package] +name = "basic-add-wasm" +version = "0.1.0" +authors = ["Parity Technologies "] + +[dependencies] +basic-add = { path = ".." } +polkadot-parachain = { path = "../../../parachain", default-features = false } +wee_alloc = { version = "0.4.1" } +pwasm-libc = { version = "0.2" } +tiny-keccak = "1.4" + +[profile.release] +panic = "abort" +lto = true + +[lib] +crate-type = ["cdylib"] diff --git a/polkadot/parachain/test-chains/basic_add/src/wasm.rs b/polkadot/test-parachains/basic-add/wasm/src/lib.rs similarity index 69% rename from polkadot/parachain/test-chains/basic_add/src/wasm.rs rename to polkadot/test-parachains/basic-add/wasm/src/lib.rs index 618e6caf2311e..9feea07175828 100644 --- a/polkadot/parachain/test-chains/basic_add/src/wasm.rs +++ b/polkadot/test-parachains/basic-add/wasm/src/lib.rs @@ -14,12 +14,30 @@ // You should have received a copy of the GNU General Public License // along with Polkadot. If not, see . -//! Defines WASM module logic. +//! WASM validation for basic-add parachain. -use core::{intrinsics, panic, alloc}; -use parachain::{self, ValidationResult}; +#![no_std] + +#![feature( + alloc, core_intrinsics, lang_items, panic_implementation, core_panic_info, + alloc_error_handler +)] + +extern crate alloc; +extern crate wee_alloc; +extern crate pwasm_libc; +extern crate basic_add; +extern crate polkadot_parachain as parachain; +extern crate tiny_keccak; + +// Define global allocator. +#[global_allocator] +static ALLOC: wee_alloc::WeeAlloc = wee_alloc::WeeAlloc::INIT; + +use core::{intrinsics, panic}; +use parachain::ValidationResult; use parachain::codec::{Encode, Decode}; -use super::{HeadData, BlockData}; +use basic_add::{HeadData, BlockData}; #[panic_implementation] #[no_mangle] @@ -31,7 +49,7 @@ pub fn panic(_info: &panic::PanicInfo) -> ! { #[alloc_error_handler] #[no_mangle] -pub fn oom(_: alloc::Layout) -> ! { +pub fn oom(_: ::core::alloc::Layout) -> ! { unsafe { intrinsics::abort(); } @@ -48,9 +66,8 @@ pub extern fn validate(offset: usize, len: usize) -> usize { let parent_hash = ::tiny_keccak::keccak256(¶ms.parent_head[..]); - match ::common::execute(parent_hash, parent_head, &block_data) { + match ::basic_add::execute(parent_hash, parent_head, &block_data) { Ok(new_head) => parachain::write_result(ValidationResult { head_data: new_head.encode() }), Err(_) => panic!("execution failure"), } - } From 78c02266ab4fe99580968017325d88130cddf7d2 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Fri, 20 Jul 2018 16:27:16 +0200 Subject: [PATCH 04/20] fix wasm build for basic_add --- polkadot/parachain/tests/res/basic_add.wasm | Bin 29197 -> 29903 bytes polkadot/test-parachains/basic-add/build.sh | 12 ------------ .../test-parachains/basic-add/wasm/Cargo.toml | 4 ---- .../test-parachains/basic-add/wasm/build.sh | 10 ++++++++++ 4 files changed, 10 insertions(+), 16 deletions(-) delete mode 100755 polkadot/test-parachains/basic-add/build.sh create mode 100755 polkadot/test-parachains/basic-add/wasm/build.sh diff --git a/polkadot/parachain/tests/res/basic_add.wasm b/polkadot/parachain/tests/res/basic_add.wasm index dbe4486385f8b8c30a579afd24feda61b6a17a0a..f2bdb6fd462c522834af9bd4c7d353af269a7bbb 100644 GIT binary patch delta 7186 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 HH+TLQdWMtZ delta 6557 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 diff --git a/polkadot/test-parachains/basic-add/build.sh b/polkadot/test-parachains/basic-add/build.sh deleted file mode 100755 index e76232453b9d5..0000000000000 --- a/polkadot/test-parachains/basic-add/build.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env bash -set -e - -# Make LLD produce a binary that imports memory from the outside environment. -export RUSTFLAGS="-C link-arg=--import-memory" - -cargo +nightly build --target=wasm32-unknown-unknown --release --no-default-features --features wasm - -for i in basic_add -do - wasm-gc target/wasm32-unknown-unknown/release/$i.wasm target/wasm32-unknown-unknown/release/$i.compact.wasm -done diff --git a/polkadot/test-parachains/basic-add/wasm/Cargo.toml b/polkadot/test-parachains/basic-add/wasm/Cargo.toml index 7f098a9f0cd61..3c7a99cfc8194 100644 --- a/polkadot/test-parachains/basic-add/wasm/Cargo.toml +++ b/polkadot/test-parachains/basic-add/wasm/Cargo.toml @@ -10,9 +10,5 @@ wee_alloc = { version = "0.4.1" } pwasm-libc = { version = "0.2" } tiny-keccak = "1.4" -[profile.release] -panic = "abort" -lto = true - [lib] crate-type = ["cdylib"] diff --git a/polkadot/test-parachains/basic-add/wasm/build.sh b/polkadot/test-parachains/basic-add/wasm/build.sh new file mode 100755 index 0000000000000..d6d1be35380cf --- /dev/null +++ b/polkadot/test-parachains/basic-add/wasm/build.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash +set -e + +# Make LLD produce a binary that imports memory from the outside environment. +export RUSTFLAGS="-C link-arg=--import-memory -C lto=fat -C panic=abort" + +cargo +nightly build --target=wasm32-unknown-unknown --release --no-default-features --target-dir target + +wasm-gc target/wasm32-unknown-unknown/release/basic_add_wasm.wasm target/wasm32-unknown-unknown/release/basic_add.wasm +mv target/wasm32-unknown-unknown/release/basic_add.wasm ../../../parachain/tests/res/ From 18dfc624d777f35be9d552b1708792f118367728 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Fri, 20 Jul 2018 16:39:58 +0200 Subject: [PATCH 05/20] move basic_add to adder, introduce README --- Cargo.lock | 38 +++++++++--------- Cargo.toml | 4 +- .../tests/{basic_add.rs => adder.rs} | 2 +- .../tests/res/{basic_add.wasm => adder.wasm} | Bin 29903 -> 29899 bytes polkadot/test-parachains/README.md | 5 +++ .../{basic-add => adder}/Cargo.toml | 2 +- .../{basic-add => adder}/src/collator.rs | 0 .../{basic-add => adder}/src/lib.rs | 0 .../{basic-add => adder}/src/src | 0 .../{basic-add => adder}/wasm/Cargo.toml | 4 +- .../{basic-add => adder}/wasm/src/lib.rs | 6 +-- .../test-parachains/basic-add/wasm/build.sh | 10 ----- polkadot/test-parachains/build.sh | 15 +++++++ 13 files changed, 48 insertions(+), 38 deletions(-) rename polkadot/parachain/tests/{basic_add.rs => adder.rs} (98%) rename polkadot/parachain/tests/res/{basic_add.wasm => adder.wasm} (90%) create mode 100644 polkadot/test-parachains/README.md rename polkadot/test-parachains/{basic-add => adder}/Cargo.toml (93%) rename polkadot/test-parachains/{basic-add => adder}/src/collator.rs (100%) rename polkadot/test-parachains/{basic-add => adder}/src/lib.rs (100%) rename polkadot/test-parachains/{basic-add => adder}/src/src (100%) rename polkadot/test-parachains/{basic-add => adder}/wasm/Cargo.toml (84%) rename polkadot/test-parachains/{basic-add => adder}/wasm/src/lib.rs (93%) delete mode 100755 polkadot/test-parachains/basic-add/wasm/build.sh create mode 100755 polkadot/test-parachains/build.sh diff --git a/Cargo.lock b/Cargo.lock index 6b624534ece20..22d2fde4d2c3c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,3 +1,22 @@ +[[package]] +name = "adder" +version = "0.1.0" +dependencies = [ + "polkadot-parachain 0.1.0", + "tiny-keccak 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "adder-wasm" +version = "0.1.0" +dependencies = [ + "adder 0.1.0", + "polkadot-parachain 0.1.0", + "pwasm-libc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tiny-keccak 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "wee_alloc 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "aho-corasick" version = "0.6.4" @@ -151,25 +170,6 @@ dependencies = [ "safemem 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "basic-add" -version = "0.1.0" -dependencies = [ - "polkadot-parachain 0.1.0", - "tiny-keccak 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "basic-add-wasm" -version = "0.1.0" -dependencies = [ - "basic-add 0.1.0", - "polkadot-parachain 0.1.0", - "pwasm-libc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tiny-keccak 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "wee_alloc 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "bigint" version = "4.4.0" diff --git a/Cargo.toml b/Cargo.toml index fe936c5390d24..5759fe3407f3e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -28,8 +28,8 @@ members = [ "polkadot/transaction-pool", "polkadot/service", - "polkadot/test-parachains/basic-add", - "polkadot/test-parachains/basic-add/wasm", + "polkadot/test-parachains/adder", + "polkadot/test-parachains/adder/wasm", "substrate/bft", "substrate/client", diff --git a/polkadot/parachain/tests/basic_add.rs b/polkadot/parachain/tests/adder.rs similarity index 98% rename from polkadot/parachain/tests/basic_add.rs rename to polkadot/parachain/tests/adder.rs index 566a6efc3f2ad..d93b2d46a3243 100644 --- a/polkadot/parachain/tests/basic_add.rs +++ b/polkadot/parachain/tests/adder.rs @@ -76,7 +76,7 @@ impl Decode for BlockData { } } -const TEST_CODE: &[u8] = include_bytes!("res/basic_add.wasm"); +const TEST_CODE: &[u8] = include_bytes!("res/adder.wasm"); fn hash_state(state: u64) -> [u8; 32] { ::tiny_keccak::keccak256(state.encode().as_slice()) diff --git a/polkadot/parachain/tests/res/basic_add.wasm b/polkadot/parachain/tests/res/adder.wasm similarity index 90% rename from polkadot/parachain/tests/res/basic_add.wasm rename to polkadot/parachain/tests/res/adder.wasm index f2bdb6fd462c522834af9bd4c7d353af269a7bbb..54a6294c240ba45abc7ba332a750368a77dcd2a3 100644 GIT binary patch delta 534 zcmX^AlJWFQ#tBWF4ZQ~#xa%1l8#Z=xvoWriJe|#k4J77xVDe42n?Qlh?7C2a&Cl59 zFabrHxtw51PII*a1p>LvVFG>JML+>Y9(|aA8Bc@Iip~QJ0&EHl3QQVI31&4hZFQVg!oJ;17U_yyItK=9&P~ z&Beg&IAQZ2AwG}_ZV^YAiXf41AQ4Y7Parv2%v20vp`a2AFVIRyjx5K9$@j!y)=ZWV zH)8xS*;`zlv14Q8y;X$+tn7n_tO`F*3f{%&1tx5~){^pOc-Kl3$`4kNKDQwsZ_`>OD#&v O$u9>+|K_*qk9+_ch_A!| delta 519 zcmX^8lJWdY#tBWF9lZw_xa%1lJ2rN6voWrjJe|#k4J77xWb#e6n?Qlh?7C2a&Cl59 zFabrHxtw51PII*a1p>LvVFG>JML+>Y9(|aA8Bc@In$80Z0&EHl3QQVI31&4hZFQVg!oJ;17U_yyItK=9&W1 z&Beg&IA!x6AwG}_ZV^YAiXf41AQ4Y7Parv2%v20vp`a2AFVIRyjx5KH$@j!y)=ZWV zH)8xU*;`zlal+V`TiWnNhKXCDy1QKPNjeCBH8C|N%zGfA(gn8EQ+2Qb_xFj}$*FbFa* zFn9rJBOvV##JoU!fmMJ(14#dvd`>l7x||K7Dg{Uj14X|wF)*+KX$Hp$lO5DfFkYC< zsjkoXW3r`sBIBjWv(+VKp7a2X7Y16En3I#AtY4H^9$%K447U0E"] description = "Test parachain which adds to a number as its state transition" diff --git a/polkadot/test-parachains/basic-add/src/collator.rs b/polkadot/test-parachains/adder/src/collator.rs similarity index 100% rename from polkadot/test-parachains/basic-add/src/collator.rs rename to polkadot/test-parachains/adder/src/collator.rs diff --git a/polkadot/test-parachains/basic-add/src/lib.rs b/polkadot/test-parachains/adder/src/lib.rs similarity index 100% rename from polkadot/test-parachains/basic-add/src/lib.rs rename to polkadot/test-parachains/adder/src/lib.rs diff --git a/polkadot/test-parachains/basic-add/src/src b/polkadot/test-parachains/adder/src/src similarity index 100% rename from polkadot/test-parachains/basic-add/src/src rename to polkadot/test-parachains/adder/src/src diff --git a/polkadot/test-parachains/basic-add/wasm/Cargo.toml b/polkadot/test-parachains/adder/wasm/Cargo.toml similarity index 84% rename from polkadot/test-parachains/basic-add/wasm/Cargo.toml rename to polkadot/test-parachains/adder/wasm/Cargo.toml index 3c7a99cfc8194..5766c75c00d09 100644 --- a/polkadot/test-parachains/basic-add/wasm/Cargo.toml +++ b/polkadot/test-parachains/adder/wasm/Cargo.toml @@ -1,10 +1,10 @@ [package] -name = "basic-add-wasm" +name = "adder-wasm" version = "0.1.0" authors = ["Parity Technologies "] [dependencies] -basic-add = { path = ".." } +adder = { path = ".." } polkadot-parachain = { path = "../../../parachain", default-features = false } wee_alloc = { version = "0.4.1" } pwasm-libc = { version = "0.2" } diff --git a/polkadot/test-parachains/basic-add/wasm/src/lib.rs b/polkadot/test-parachains/adder/wasm/src/lib.rs similarity index 93% rename from polkadot/test-parachains/basic-add/wasm/src/lib.rs rename to polkadot/test-parachains/adder/wasm/src/lib.rs index 9feea07175828..2f58d11fe69b5 100644 --- a/polkadot/test-parachains/basic-add/wasm/src/lib.rs +++ b/polkadot/test-parachains/adder/wasm/src/lib.rs @@ -26,7 +26,7 @@ extern crate alloc; extern crate wee_alloc; extern crate pwasm_libc; -extern crate basic_add; +extern crate adder; extern crate polkadot_parachain as parachain; extern crate tiny_keccak; @@ -37,7 +37,7 @@ static ALLOC: wee_alloc::WeeAlloc = wee_alloc::WeeAlloc::INIT; use core::{intrinsics, panic}; use parachain::ValidationResult; use parachain::codec::{Encode, Decode}; -use basic_add::{HeadData, BlockData}; +use adder::{HeadData, BlockData}; #[panic_implementation] #[no_mangle] @@ -66,7 +66,7 @@ pub extern fn validate(offset: usize, len: usize) -> usize { let parent_hash = ::tiny_keccak::keccak256(¶ms.parent_head[..]); - match ::basic_add::execute(parent_hash, parent_head, &block_data) { + match ::adder::execute(parent_hash, parent_head, &block_data) { Ok(new_head) => parachain::write_result(ValidationResult { head_data: new_head.encode() }), Err(_) => panic!("execution failure"), } diff --git a/polkadot/test-parachains/basic-add/wasm/build.sh b/polkadot/test-parachains/basic-add/wasm/build.sh deleted file mode 100755 index d6d1be35380cf..0000000000000 --- a/polkadot/test-parachains/basic-add/wasm/build.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env bash -set -e - -# Make LLD produce a binary that imports memory from the outside environment. -export RUSTFLAGS="-C link-arg=--import-memory -C lto=fat -C panic=abort" - -cargo +nightly build --target=wasm32-unknown-unknown --release --no-default-features --target-dir target - -wasm-gc target/wasm32-unknown-unknown/release/basic_add_wasm.wasm target/wasm32-unknown-unknown/release/basic_add.wasm -mv target/wasm32-unknown-unknown/release/basic_add.wasm ../../../parachain/tests/res/ diff --git a/polkadot/test-parachains/build.sh b/polkadot/test-parachains/build.sh new file mode 100755 index 0000000000000..5ffee4159d013 --- /dev/null +++ b/polkadot/test-parachains/build.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash +set -e + +# Make LLD produce a binary that imports memory from the outside environment. +export RUSTFLAGS="-C link-arg=--import-memory -C lto=fat -C panic=abort" + +for i in adder +do + cd $i/wasm + cargo +nightly build --target=wasm32-unknown-unknown --release --no-default-features --target-dir target + wasm-gc target/wasm32-unknown-unknown/release/$i'_'wasm.wasm target/wasm32-unknown-unknown/release/$i.wasm + cp target/wasm32-unknown-unknown/release/$i.wasm ../../../parachain/tests/res/ + rm -rf target + cd ../.. +done From 2bdcaf94a20d165ed6949bcad79756c2e8f5e6d4 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Mon, 23 Jul 2018 12:56:25 +0200 Subject: [PATCH 06/20] minimal basic_add collator --- Cargo.lock | 14 ++ Cargo.toml | 1 + polkadot/collator/src/lib.rs | 37 +++++- .../test-parachains/adder/collator/Cargo.toml | 14 ++ .../adder/collator/src/main.rs | 125 ++++++++++++++++++ .../test-parachains/adder/src/collator.rs | 31 ----- polkadot/test-parachains/adder/src/lib.rs | 11 +- 7 files changed, 193 insertions(+), 40 deletions(-) create mode 100644 polkadot/test-parachains/adder/collator/Cargo.toml create mode 100644 polkadot/test-parachains/adder/collator/src/main.rs delete mode 100644 polkadot/test-parachains/adder/src/collator.rs diff --git a/Cargo.lock b/Cargo.lock index 22d2fde4d2c3c..997fb782e31fc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6,6 +6,20 @@ dependencies = [ "tiny-keccak 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "adder-collator" +version = "0.1.0" +dependencies = [ + "adder 0.1.0", + "ctrlc 1.1.1 (git+https://github.com/paritytech/rust-ctrlc.git)", + "ed25519 0.1.0", + "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "polkadot-collator 0.1.0", + "polkadot-parachain 0.1.0", + "polkadot-primitives 0.1.0", +] + [[package]] name = "adder-wasm" version = "0.1.0" diff --git a/Cargo.toml b/Cargo.toml index 5759fe3407f3e..aa52ba9b9c1e5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -29,6 +29,7 @@ members = [ "polkadot/service", "polkadot/test-parachains/adder", + "polkadot/test-parachains/adder/collator", "polkadot/test-parachains/adder/wasm", "substrate/bft", diff --git a/polkadot/collator/src/lib.rs b/polkadot/collator/src/lib.rs index 7e4b36cc48e3f..67c5c456a3036 100644 --- a/polkadot/collator/src/lib.rs +++ b/polkadot/collator/src/lib.rs @@ -60,6 +60,7 @@ extern crate polkadot_primitives; extern crate log; use std::collections::{BTreeSet, BTreeMap, HashSet}; +use std::fmt; use std::sync::Arc; use std::time::{Duration, Instant}; @@ -74,6 +75,28 @@ use tokio::timer::Deadline; const COLLATION_TIMEOUT: Duration = Duration::from_secs(30); +/// Error to return when the head data was invalid. +#[derive(Clone, Copy, Debug)] +pub struct InvalidHead; + +/// Collation errors. +#[derive(Debug)] +pub enum Error { + /// Error on the relay-chain side of things. + Polkadot(R), + /// Error on the collator side of things. + Collator(InvalidHead), +} + +impl fmt::Display for Error { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + match *self { + Error::Polkadot(ref err) => write!(f, "Polkadot node error: {}", err), + Error::Collator(_) => write!(f, "Collator node error: Invalid head data"), + } + } +} + /// Parachain context needed for collation. /// /// This can be implemented through an externally attached service or a stub. @@ -84,7 +107,7 @@ pub trait ParachainContext: Clone { &self, last_head: HeadData, ingress: I, - ) -> (BlockData, HeadData); + ) -> Result<(BlockData, HeadData), InvalidHead>; } /// Relay chain context needed to collate. @@ -154,18 +177,18 @@ pub fn collate<'a, R, P>( para_context: P, key: Arc, ) - -> impl Future + 'a + -> impl Future> + 'a where R: RelayChainContext + 'a, R::Error: 'a, R::FutureEgress: 'a, P: ParachainContext + 'a, { - collate_ingress(relay_context).map(move |ingress| { + collate_ingress(relay_context).map_err(Error::Polkadot).and_then(move |ingress| { let (block_data, head_data) = para_context.produce_candidate( last_head, ingress.0.iter().flat_map(|&(id, ref msgs)| msgs.iter().cloned().map(move |msg| (id, msg))) - ); + ).map_err(Error::Collator)?; let block_data_hash = block_data.hash(); let signature = key.sign(&block_data_hash.0[..]).into(); @@ -181,10 +204,10 @@ pub fn collate<'a, R, P>( block_data_hash, }; - parachain::Collation { + Ok(parachain::Collation { receipt, block_data, - } + }) }) } @@ -243,7 +266,7 @@ impl Worker for CollationNode where ($e:expr) => { match $e { Ok(x) => x, - Err(e) => return future::Either::A(future::err(e)), + Err(e) => return future::Either::A(future::err(Error::Polkadot(e))), } } } diff --git a/polkadot/test-parachains/adder/collator/Cargo.toml b/polkadot/test-parachains/adder/collator/Cargo.toml new file mode 100644 index 0000000000000..6747386ab84bb --- /dev/null +++ b/polkadot/test-parachains/adder/collator/Cargo.toml @@ -0,0 +1,14 @@ +[package] +name = "adder-collator" +version = "0.1.0" +authors = ["Parity Technologies "] + +[dependencies] +adder = { path = ".." } +polkadot-parachain = { path = "../../../parachain" } +polkadot-collator = { path = "../../../collator" } +polkadot-primitives = { path = "../../../primitives" } +ed25519 = { path = "../../../../substrate/ed25519" } +parking_lot = "0.4" +ctrlc = { git = "https://github.com/paritytech/rust-ctrlc.git" } +futures = "0.1" diff --git a/polkadot/test-parachains/adder/collator/src/main.rs b/polkadot/test-parachains/adder/collator/src/main.rs new file mode 100644 index 0000000000000..bc2287a1f6ae4 --- /dev/null +++ b/polkadot/test-parachains/adder/collator/src/main.rs @@ -0,0 +1,125 @@ +// Copyright 2018 Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . + +//! Collator for polkadot + +extern crate adder; +extern crate polkadot_parachain as parachain; +extern crate polkadot_primitives as primitives; +extern crate polkadot_collator as collator; +extern crate ed25519; +extern crate parking_lot; +extern crate ctrlc; +extern crate futures; + +use std::cell::RefCell; +use std::collections::HashMap; +use std::sync::Arc; + +use adder::{HeadData as AdderHead, BlockData as AdderBody}; +use ed25519::Pair; +use parachain::codec::{Encode, Decode}; +use primitives::parachain::{HeadData, BlockData, Id as ParaId, Message}; +use collator::{InvalidHead, ParachainContext}; +use futures::sync::oneshot; +use futures::Future; +use parking_lot::Mutex; + +const GENESIS: AdderHead = AdderHead { + number: 0, + parent_hash: [0; 32], + post_state: [1, 27, 77, 3, 221, 140, 1, 241, 4, 145, 67, 207, 156, 76, 129, 126, 75, 22, 127, 29, 27, 131, 229, 198, 240, 241, 13, 137, 186, 30, 123, 206], +}; + +const GENESIS_BODY: AdderBody = AdderBody { + state: 0, + add: 0, +}; + +#[derive(Clone)] +struct AdderContext { + db: Arc>>, +} + +/// The parachain context. +impl ParachainContext for AdderContext { + fn produce_candidate>( + &self, + last_head: HeadData, + _ingress: I, + ) -> Result<(BlockData, HeadData), InvalidHead> + { + let adder_head = AdderHead::decode(&mut &last_head.0[..]) + .ok_or(InvalidHead)?; + + let mut db = self.db.lock(); + + let last_body = if adder_head == GENESIS { + GENESIS_BODY + } else { + db.get(&adder_head) + .expect("All past bodies stored since this is the only collator") + .clone() + }; + + let next_body = AdderBody { + state: last_body.state + last_body.add, + add: adder_head.number % 100, + }; + + let next_head = ::adder::execute(adder_head.hash(), adder_head, &next_body) + .expect("good execution params; qed"); + + let encoded_head = HeadData(next_head.encode()); + let encoded_body = BlockData(next_body.encode()); + + db.insert(next_head.clone(), next_body); + Ok((encoded_body, encoded_head)) + } +} + +fn main() { + let key = Arc::new(Pair::from_seed(&[1; 32])); + let id: ParaId = 100.into(); + + // can't use signal directly here because CtrlC takes only `Fn`. + let (exit_send, exit) = oneshot::channel(); + + let exit_send_cell = RefCell::new(Some(exit_send)); + ctrlc::CtrlC::set_handler(move || { + if let Some(exit_send) = exit_send_cell.try_borrow_mut().expect("signal handler not reentrant; qed").take() { + exit_send.send(()).expect("Error sending exit notification"); + } + }); + + let on_exit = exit.map_err(drop); + let context = AdderContext { + db: Arc::new(Mutex::new(HashMap::new())), + }; + + let args: Vec<_> = ::std::env::args().into_iter().map(Into::into).collect(); + let res = ::collator::run_collator( + context, + id, + on_exit, + key, + args, + ); + + if let Err(e) = res { + println!("{}", e); + } +} diff --git a/polkadot/test-parachains/adder/src/collator.rs b/polkadot/test-parachains/adder/src/collator.rs deleted file mode 100644 index 41b190e76ab07..0000000000000 --- a/polkadot/test-parachains/adder/src/collator.rs +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2018 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Collator for polkadot - -extern crate polkadot_parachain as parachain; -extern crate polkadot_collator as collator; -extern crate tiny_keccak; - -use collator::ParachainContext; - -mod common; - -fn main() { - ::collator::run_collator( - - ) -} diff --git a/polkadot/test-parachains/adder/src/lib.rs b/polkadot/test-parachains/adder/src/lib.rs index 72c9f3b970b68..28b59f537224c 100644 --- a/polkadot/test-parachains/adder/src/lib.rs +++ b/polkadot/test-parachains/adder/src/lib.rs @@ -24,7 +24,7 @@ extern crate tiny_keccak; use parachain::codec::{Decode, Encode, Input, Output}; /// Head data for this parachain. -#[derive(Default, Clone)] +#[derive(Default, Clone, Hash, Eq, PartialEq)] pub struct HeadData { /// Block number pub number: u64, @@ -34,6 +34,12 @@ pub struct HeadData { pub post_state: [u8; 32], } +impl HeadData { + pub fn hash(&self) -> [u8; 32] { + ::tiny_keccak::keccak256(&self.encode()) + } +} + impl Encode for HeadData { fn encode_to(&self, dest: &mut T) { dest.push(&self.number); @@ -82,12 +88,13 @@ pub fn hash_state(state: u64) -> [u8; 32] { } /// Start state +#[derive(Debug)] pub struct StateMismatch; /// Execute a block body on top of given parent head, producing new parent head /// if valid. pub fn execute(parent_hash: [u8; 32], parent_head: HeadData, block_data: &BlockData) -> Result { - debug_assert_eq!(parent_hash, ::tiny_keccak::keccak256(&parent_head.encode())); + debug_assert_eq!(parent_hash, parent_head.hash()); if hash_state(block_data.state) != parent_head.post_state { return Err(StateMismatch); From 90838476a2f414f57f9000e96ebb2e06f132d15c Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Mon, 23 Jul 2018 14:15:04 +0200 Subject: [PATCH 07/20] ensure collator messages are sent in the right order --- polkadot/network/src/lib.rs | 101 +++++++++++++++++++++++------------- 1 file changed, 65 insertions(+), 36 deletions(-) diff --git a/polkadot/network/src/lib.rs b/polkadot/network/src/lib.rs index cb3d97bdbbff8..6c81a6b86b9a9 100644 --- a/polkadot/network/src/lib.rs +++ b/polkadot/network/src/lib.rs @@ -111,10 +111,36 @@ struct BlockDataRequest { sender: oneshot::Sender, } +// ensures collator-protocol messages are sent in correct order. +// session key must be sent before collator role. +enum CollatorState { + Fresh, + RolePending(Role), + Primed, +} + +impl CollatorState { + fn send_key(&mut self, key: SessionKey, mut f: F) { + f(Message::SessionKey(key)); + if let CollatorState::RolePending(role) = ::std::mem::replace(self, CollatorState::Primed) { + f(Message::CollatorRole(role)); + } + } + + fn set_role(&mut self, role: Role, mut f: F) { + if let CollatorState::Primed = *self { + f(Message::CollatorRole(role)); + } else { + *self = CollatorState::RolePending(role); + } + } +} + struct PeerInfo { collating_for: Option<(AccountId, ParaId)>, validator_key: Option, claimed_validator: bool, + collator_state: CollatorState, } #[derive(Default)] @@ -309,14 +335,14 @@ impl PolkadotProtocol { let old_data = self.live_consensus.as_ref().map(|c| (c.parent_hash, c.local_session_key)); if Some(&consensus.local_session_key) != old_data.as_ref().map(|&(_, ref key)| key) { - for (id, _) in self.peers.iter() + for (id, peer_data) in self.peers.iter_mut() .filter(|&(_, ref info)| info.claimed_validator || info.collating_for.is_some()) { - send_polkadot_message( + peer_data.collator_state.send_key(consensus.local_session_key, |msg| send_polkadot_message( ctx, *id, - Message::SessionKey(consensus.local_session_key) - ); + msg + )); } } @@ -481,38 +507,41 @@ impl Specialization for PolkadotProtocol { } }; + let validator = status.roles.contains(substrate_network::Roles::AUTHORITY); + let send_key = validator || local_status.collating_for.is_some(); + + let mut peer_info = PeerInfo { + collating_for: local_status.collating_for, + validator_key: None, + claimed_validator: validator, + collator_state: CollatorState::Fresh, + }; + if let Some((ref acc_id, ref para_id)) = local_status.collating_for { - if self.collator_peer_id(acc_id.clone()).is_some() { + if self.collator_peer(acc_id.clone()).is_some() { ctx.disconnect_peer(peer_id); return } let collator_role = self.collators.on_new_collator(acc_id.clone(), para_id.clone()); - send_polkadot_message( + + peer_info.collator_state.set_role(collator_role, |msg| send_polkadot_message( ctx, peer_id, - Message::CollatorRole(collator_role), - ); + msg, + )); } - let validator = status.roles.contains(substrate_network::Roles::AUTHORITY); - let send_key = validator || local_status.collating_for.is_some(); - - self.peers.insert(peer_id, PeerInfo { - collating_for: local_status.collating_for, - validator_key: None, - claimed_validator: validator, - }); - - self.consensus_gossip.new_peer(ctx, peer_id, status.roles); if let (true, &Some(ref consensus)) = (send_key, &self.live_consensus) { - send_polkadot_message( + peer_info.collator_state.send_key(consensus.local_session_key, |msg| send_polkadot_message( ctx, peer_id, - Message::SessionKey(consensus.local_session_key) - ); + msg, + )); } + self.peers.insert(peer_id, peer_info); + self.consensus_gossip.new_peer(ctx, peer_id, status.roles); self.dispatch_pending_requests(ctx); } @@ -520,14 +549,14 @@ impl Specialization for PolkadotProtocol { if let Some(info) = self.peers.remove(&peer_id) { if let Some((acc_id, _)) = info.collating_for { let new_primary = self.collators.on_disconnect(acc_id) - .and_then(|new_primary| self.collator_peer_id(new_primary)); + .and_then(|new_primary| self.collator_peer(new_primary)); - if let Some(new_primary) = new_primary { - send_polkadot_message( + if let Some((new_primary, primary_info)) = new_primary { + primary_info.collator_state.set_role(Role::Primary, |msg| send_polkadot_message( ctx, new_primary, - Message::CollatorRole(Role::Primary), - ) + msg, + )); } } @@ -592,12 +621,12 @@ impl Specialization for PolkadotProtocol { for collator_action in self.collators.maintain_peers() { match collator_action { Action::Disconnect(collator) => self.disconnect_bad_collator(ctx, collator), - Action::NewRole(account_id, role) => if let Some(collator) = self.collator_peer_id(account_id) { - send_polkadot_message( + Action::NewRole(account_id, role) => if let Some((collator, info)) = self.collator_peer(account_id) { + info.collator_state.set_role(role, |msg| send_polkadot_message( ctx, collator, - Message::CollatorRole(role), - ) + msg, + )) }, } } @@ -638,22 +667,22 @@ impl PolkadotProtocol { } // get connected peer with given account ID for collation. - fn collator_peer_id(&self, account_id: AccountId) -> Option { + fn collator_peer(&mut self, account_id: AccountId) -> Option<(PeerId, &mut PeerInfo)> { let check_info = |info: &PeerInfo| info .collating_for .as_ref() .map_or(false, |&(ref acc_id, _)| acc_id == &account_id); self.peers - .iter() - .filter(|&(_, info)| check_info(info)) - .map(|(peer_id, _)| *peer_id) + .iter_mut() + .filter(|&(_, ref info)| check_info(&**info)) + .map(|(peer_id, info)| (*peer_id, info)) .next() } // disconnect a collator by account-id. - fn disconnect_bad_collator(&self, ctx: &mut Context, account_id: AccountId) { - if let Some(peer_id) = self.collator_peer_id(account_id) { + fn disconnect_bad_collator(&mut self, ctx: &mut Context, account_id: AccountId) { + if let Some((peer_id, _)) = self.collator_peer(account_id) { ctx.disable_peer(peer_id, "Consensus layer determined the given collator misbehaved") } } From c157c4c399fd9ad6070daeef3c5917dff9e129dd Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Mon, 23 Jul 2018 14:44:56 +0200 Subject: [PATCH 08/20] more logging --- polkadot/consensus/src/lib.rs | 5 +++++ polkadot/network/src/lib.rs | 21 ++++++++++++++----- .../adder/collator/src/main.rs | 1 + 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/polkadot/consensus/src/lib.rs b/polkadot/consensus/src/lib.rs index 4aee785def5b2..616f821b5b3df 100644 --- a/polkadot/consensus/src/lib.rs +++ b/polkadot/consensus/src/lib.rs @@ -273,8 +273,13 @@ impl bft::Environment for ProposerFactory sign_with.public().into(), )?; + info!("Starting consensus session on top of parent {:?}. Local parachain duty is {:?}", + parent_hash, local_duty.validation); + let active_parachains = self.client.active_parachains(&id)?; + debug!(target: "consensus", "Active parachains: {:?}", active_parachains); + let n_parachains = active_parachains.len(); let table = Arc::new(SharedTable::new(group_info, sign_with.clone(), parent_hash)); let (router, input, output) = self.network.communication_for( diff --git a/polkadot/network/src/lib.rs b/polkadot/network/src/lib.rs index 6c81a6b86b9a9..5c60556204c9b 100644 --- a/polkadot/network/src/lib.rs +++ b/polkadot/network/src/lib.rs @@ -478,12 +478,15 @@ impl PolkadotProtocol { } }; + debug!(target: "p_net", "New collator role {:?} from {}", role, peer_id); + match info.validator_key { None => ctx.disable_peer( peer_id, "Sent collator role without registering first as validator", ), Some(key) => for (relay_parent, collation) in self.local_collations.note_validator_role(key, role) { + debug!(target: "p_net", "Broadcasting collation on relay parent {:?}", relay_parent); send_polkadot_message( ctx, peer_id, @@ -651,6 +654,7 @@ impl PolkadotProtocol { Some((ref acc_id, ref para_id)) => { let structurally_valid = para_id == &collation_para && acc_id == &collated_acc; if structurally_valid && collation.receipt.check_signature().is_ok() { + debug!(target: "p_net", "Received collation for parachain {:?} from peer {}", para_id, from); self.collators.on_collation(acc_id.clone(), relay_parent, collation) } else { ctx.disable_peer(from, "Sent malformed collation") @@ -662,6 +666,7 @@ impl PolkadotProtocol { fn await_collation(&mut self, relay_parent: Hash, para_id: ParaId) -> oneshot::Receiver { let (tx, rx) = oneshot::channel(); + debug!(target: "p_net", "Attempting to get collation for parachain {:?} on relay parent {:?}", para_id, relay_parent); self.collators.await_collation(relay_parent, para_id, tx); rx } @@ -697,13 +702,19 @@ impl PolkadotProtocol { targets: HashSet, collation: Collation, ) { + debug!(target: "p_net", "Importing local collation on relay parent {:?} and parachain {:?}", + relay_parent, collation.receipt.parachain_index); + for (primary, cloned_collation) in self.local_collations.add_collation(relay_parent, targets, collation.clone()) { match self.validators.get(&primary) { - Some(peer_id) => send_polkadot_message( - ctx, - *peer_id, - Message::Collation(relay_parent, cloned_collation), - ), + Some(peer_id) => { + debug!(target: "p_net", "Sending local collation to {:?}", primary); + send_polkadot_message( + ctx, + *peer_id, + Message::Collation(relay_parent, cloned_collation), + ) + }, None => warn!(target: "polkadot_network", "Encountered tracked but disconnected validator {:?}", primary), } diff --git a/polkadot/test-parachains/adder/collator/src/main.rs b/polkadot/test-parachains/adder/collator/src/main.rs index bc2287a1f6ae4..25b44044fbefc 100644 --- a/polkadot/test-parachains/adder/collator/src/main.rs +++ b/polkadot/test-parachains/adder/collator/src/main.rs @@ -86,6 +86,7 @@ impl ParachainContext for AdderContext { let encoded_head = HeadData(next_head.encode()); let encoded_body = BlockData(next_body.encode()); + println!("Created collation."); db.insert(next_head.clone(), next_body); Ok((encoded_body, encoded_head)) } From 6b5f5ff6dcc5676d453d538db4cc4d783a710d66 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Mon, 23 Jul 2018 15:30:31 +0200 Subject: [PATCH 09/20] route consensus statements to all peers --- polkadot/network/src/consensus.rs | 1 + polkadot/network/src/lib.rs | 4 +- polkadot/network/src/router.rs | 47 ++++++----------------- substrate/network/src/consensus_gossip.rs | 3 ++ 4 files changed, 17 insertions(+), 38 deletions(-) diff --git a/polkadot/network/src/consensus.rs b/polkadot/network/src/consensus.rs index 4f29899100350..e3a1c592e787d 100644 --- a/polkadot/network/src/consensus.rs +++ b/polkadot/network/src/consensus.rs @@ -176,6 +176,7 @@ impl MessageProcessTask

{ } } ConsensusMessage::ChainSpecific(msg, _) => { + debug!(target: "consensus", "Processing consensus statement for live consensus"); if let Some(Message::Statement(parent_hash, statement)) = Decode::decode(&mut msg.as_slice()) { if ::polkadot_consensus::check_statement(&statement.statement, &statement.signature, statement.sender, &parent_hash) { self.table_router.import_statement(statement); diff --git a/polkadot/network/src/lib.rs b/polkadot/network/src/lib.rs index 5c60556204c9b..d767dcafef8e1 100644 --- a/polkadot/network/src/lib.rs +++ b/polkadot/network/src/lib.rs @@ -307,8 +307,8 @@ impl PolkadotProtocol { } } - /// Send a statement to a validator. - fn send_statement(&mut self, ctx: &mut Context, _val: SessionKey, parent_hash: Hash, statement: SignedStatement) { + /// Gossip a consensus statement. + fn gossip_statement(&mut self, ctx: &mut Context, parent_hash: Hash, statement: SignedStatement) { // TODO: something more targeted than gossip. let raw = Message::Statement(parent_hash, statement).encode(); self.consensus_gossip.multicast_chain_specific(ctx, raw, parent_hash); diff --git a/polkadot/network/src/router.rs b/polkadot/network/src/router.rs index ff90502a31a24..4d2eafe4ba94b 100644 --- a/polkadot/network/src/router.rs +++ b/polkadot/network/src/router.rs @@ -25,7 +25,7 @@ use polkadot_api::{PolkadotApi, LocalPolkadotApi}; use polkadot_consensus::{SharedTable, TableRouter, SignedStatement, GenericStatement, StatementProducer}; use polkadot_primitives::{Hash, BlockId, SessionKey}; -use polkadot_primitives::parachain::{BlockData, Extrinsic, CandidateReceipt, Id as ParaId}; +use polkadot_primitives::parachain::{BlockData, Extrinsic, CandidateReceipt}; use futures::prelude::*; use tokio::runtime::TaskExecutor; @@ -89,14 +89,16 @@ impl Clone for Router

{ impl Router

{ /// Import a statement whose signature has been checked already. pub(crate) fn import_statement(&self, statement: SignedStatement) { + trace!(target: "p_net", "importing consensus statement {:?}", statement.statement); + // defer any statements for which we haven't imported the candidate yet - let (c_hash, parachain_index) = { + let c_hash = { let candidate_data = match statement.statement { - GenericStatement::Candidate(ref c) => Some((c.hash(), c.parachain_index)), + GenericStatement::Candidate(ref c) => Some(c.hash()), GenericStatement::Valid(ref hash) | GenericStatement::Invalid(ref hash) | GenericStatement::Available(ref hash) - => self.table.with_candidate(hash, |c| c.map(|c| (*hash, c.parachain_index))), + => self.table.with_candidate(hash, |c| c.map(|_| *hash)), }; match candidate_data { Some(x) => x, @@ -128,11 +130,11 @@ impl Router

{ }; self.knowledge.lock().note_statement(statement.sender, &statement.statement); - self.dispatch_work(c_hash, producer, parachain_index); + self.dispatch_work(c_hash, producer); } } - fn dispatch_work(&self, candidate_hash: Hash, producer: StatementProducer, parachain: ParaId) where + fn dispatch_work(&self, candidate_hash: Hash, producer: StatementProducer) where D: Future + Send + 'static, E: Future + Send + 'static, { @@ -161,12 +163,12 @@ impl Router

{ // propagate the statements if let Some(validity) = produced.validity { let signed = table.sign_and_import(validity.clone()); - route_statement(&*network, &*table, parachain, parent_hash, signed); + network.with_spec(|spec, ctx| spec.gossip_statement(ctx, parent_hash, signed)); } if let Some(availability) = produced.availability { let signed = table.sign_and_import(availability); - route_statement(&*network, &*table, parachain, parent_hash, signed); + network.with_spec(|spec, ctx| spec.gossip_statement(ctx, parent_hash, signed)); } }); @@ -182,11 +184,10 @@ impl TableRouter for Router

{ fn local_candidate(&self, receipt: CandidateReceipt, block_data: BlockData, extrinsic: Extrinsic) { // give to network to make available. let hash = receipt.hash(); - let para_id = receipt.parachain_index; let signed = self.table.sign_and_import(GenericStatement::Candidate(receipt)); self.knowledge.lock().note_candidate(hash, Some(block_data), Some(extrinsic)); - route_statement(&*self.network, &*self.table, para_id, self.parent_hash, signed); + self.network.with_spec(|spec, ctx| spec.gossip_statement(ctx, self.parent_hash, signed)); } fn fetch_block_data(&self, candidate: &CandidateReceipt) -> BlockDataReceiver { @@ -217,32 +218,6 @@ impl Future for BlockDataReceiver { } } -// get statement to relevant validators. -fn route_statement(network: &NetworkService, table: &SharedTable, para_id: ParaId, parent_hash: Hash, statement: SignedStatement) { - let broadcast = |i: &mut Iterator| { - let local_key = table.session_key(); - network.with_spec(|spec, ctx| { - for val in i.filter(|&x| x != &local_key) { - spec.send_statement(ctx, *val, parent_hash, statement.clone()); - } - }); - }; - - let g_info = table - .group_info() - .get(¶_id) - .expect("statements only produced about groups which exist"); - - match statement.statement { - GenericStatement::Candidate(_) => - broadcast(&mut g_info.validity_guarantors.iter().chain(g_info.availability_guarantors.iter())), - GenericStatement::Valid(_) | GenericStatement::Invalid(_) => - broadcast(&mut g_info.validity_guarantors.iter()), - GenericStatement::Available(_) => - broadcast(&mut g_info.availability_guarantors.iter()), - } -} - // A unique trace for valid statements issued by a validator. #[derive(Hash, PartialEq, Eq, Clone, Debug)] enum StatementTrace { diff --git a/substrate/network/src/consensus_gossip.rs b/substrate/network/src/consensus_gossip.rs index ed1dbf38d375e..ca8b70ef1466d 100644 --- a/substrate/network/src/consensus_gossip.rs +++ b/substrate/network/src/consensus_gossip.rs @@ -124,7 +124,9 @@ impl ConsensusGossip where B::Header: HeaderT { /// Handles incoming chain-specific message and repropagates pub fn on_chain_specific(&mut self, protocol: &mut Context, peer_id: PeerId, message: Vec, parent_hash: B::Hash) { + debug!(target: "gossip", "received chain-specific gossip message"); if let Some((hash, message)) = self.handle_incoming(protocol, peer_id, ConsensusMessage::ChainSpecific(message, parent_hash)) { + debug!(target: "gossip", "handled incoming chain-specific message"); // propagate to other peers. self.multicast(protocol, message, Some(hash)); } @@ -245,6 +247,7 @@ impl ConsensusGossip where B::Header: HeaderT { peer.known_messages.insert(hash); if let Some((sink, parent_hash)) = self.message_sink.take() { if parent == parent_hash { + debug!(target: "gossip", "Pushing relevant consensus message to sink."); if let Err(e) = sink.unbounded_send(message.clone()) { trace!(target:"gossip", "Error broadcasting message notification: {:?}", e); } From 957f69ef51df460bb5250b84f3918fa2e98f1f47 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Mon, 23 Jul 2018 17:15:41 +0200 Subject: [PATCH 10/20] minor bugfixes for parachains --- polkadot/consensus/src/shared_table/mod.rs | 64 ++++++++++++++++------ polkadot/network/src/router.rs | 25 +++++---- polkadot/service/src/lib.rs | 2 +- 3 files changed, 62 insertions(+), 29 deletions(-) diff --git a/polkadot/consensus/src/shared_table/mod.rs b/polkadot/consensus/src/shared_table/mod.rs index 21919dd4a4869..825c62428265d 100644 --- a/polkadot/consensus/src/shared_table/mod.rs +++ b/polkadot/consensus/src/shared_table/mod.rs @@ -143,6 +143,7 @@ impl SharedTableInner { fetch_block_data, fetch_extrinsic, evaluate: checking_validity, + ensure_available: checking_availability, }) } } @@ -206,6 +207,7 @@ struct Work { fetch_block_data: future::Fuse, fetch_extrinsic: Option>, evaluate: bool, + ensure_available: bool, } /// Primed statement producer. @@ -235,31 +237,35 @@ impl Future for PrimedStatementProducer }); let hash = work.candidate_receipt.hash(); + + debug!(target: "consensus", "Making validity statement about candidate {}: is_good? {:?}", hash, is_good); self.inner.produced_statements.validity = match is_good { Some(true) => Some(GenericStatement::Valid(hash)), Some(false) => Some(GenericStatement::Invalid(hash)), None => None, }; - } - } - if let Some(ref mut fetch_extrinsic) = work.fetch_extrinsic { - if let Async::Ready(extrinsic) = fetch_extrinsic.poll()? { - self.inner.produced_statements.extrinsic = Some(extrinsic); + work.evaluate = false; } } - let done = self.inner.produced_statements.block_data.is_some() && { - if work.evaluate { - true - } else if self.inner.produced_statements.extrinsic.is_some() { + if let Async::Ready(Some(extrinsic)) = work.fetch_extrinsic.poll()? { + if work.ensure_available { + let hash = work.candidate_receipt.hash(); + debug!(target: "consensus", "Claiming candidate {} available.", hash); + + // TODO: actually wait for block data and then ensure availability. + self.inner.produced_statements.extrinsic = Some(extrinsic); self.inner.produced_statements.availability = - Some(GenericStatement::Available(work.candidate_receipt.hash())); + Some(GenericStatement::Available(hash)); - true - } else { - false + work.ensure_available = false; } + } + + let done = match (work.evaluate, work.ensure_available) { + (false, false) => true, + _ => false, }; if done { @@ -356,10 +362,25 @@ impl SharedTable { } /// Sign and import a local statement. - pub fn sign_and_import(&self, statement: table::Statement) -> SignedStatement { - let proposed_digest = match statement { - GenericStatement::Candidate(ref c) => Some(c.hash()), - _ => None, + /// + /// For candidate statements, this may also produce a second signed statement + /// concerning the availability of the candidate data. + pub fn sign_and_import(&self, statement: table::Statement) + -> (SignedStatement, Option) + { + let (proposed_digest, availability) = match statement { + GenericStatement::Candidate(ref c) => { + let mut availability = None; + let hash = c.hash(); + + // TODO: actually store the data in an availability store of some kind. + if self.context.is_availability_guarantor_of(&self.context.local_id(), &c.parachain_index) { + availability = Some(self.context.sign_statement(GenericStatement::Available(hash))); + } + + (Some(hash), availability) + } + _ => (None, None), }; let signed_statement = self.context.sign_statement(statement); @@ -370,7 +391,13 @@ impl SharedTable { } inner.table.import_statement(&*self.context, signed_statement.clone()); - signed_statement + + // ensure the availability statement is imported after the candidate. + if let Some(a) = availability.clone() { + inner.table.import_statement(&*self.context, a); + } + + (signed_statement, availability) } /// Execute a closure using a specific candidate. @@ -543,5 +570,6 @@ mod tests { assert!(producer.work.fetch_extrinsic.is_some(), "should fetch extrinsic when guaranteeing availability"); assert!(!producer.work.evaluate, "should not evaluate validity"); + assert!(producer.work.ensure_available); } } diff --git a/polkadot/network/src/router.rs b/polkadot/network/src/router.rs index 4d2eafe4ba94b..8d6bc18540bea 100644 --- a/polkadot/network/src/router.rs +++ b/polkadot/network/src/router.rs @@ -117,6 +117,7 @@ impl Router

{ }; // prepend the candidate statement. + debug!(target: "consensus", "Importing statements about candidate {:?}", c_hash); statements.insert(0, statement); let producers: Vec<_> = self.table.import_remote_statements( self, @@ -124,13 +125,12 @@ impl Router

{ ); // dispatch future work as necessary. for (producer, statement) in producers.into_iter().zip(statements) { - let producer = match producer { - Some(p) => p, - None => continue, // statement redundant - }; - self.knowledge.lock().note_statement(statement.sender, &statement.statement); - self.dispatch_work(c_hash, producer); + + if let Some(producer) = producer { + trace!(target: "consensus", "driving statement work to completion"); + self.dispatch_work(c_hash, producer); + } } } @@ -162,12 +162,12 @@ impl Router

{ // propagate the statements if let Some(validity) = produced.validity { - let signed = table.sign_and_import(validity.clone()); + let signed = table.sign_and_import(validity.clone()).0; network.with_spec(|spec, ctx| spec.gossip_statement(ctx, parent_hash, signed)); } if let Some(availability) = produced.availability { - let signed = table.sign_and_import(availability); + let signed = table.sign_and_import(availability).0; network.with_spec(|spec, ctx| spec.gossip_statement(ctx, parent_hash, signed)); } }); @@ -184,10 +184,15 @@ impl TableRouter for Router

{ fn local_candidate(&self, receipt: CandidateReceipt, block_data: BlockData, extrinsic: Extrinsic) { // give to network to make available. let hash = receipt.hash(); - let signed = self.table.sign_and_import(GenericStatement::Candidate(receipt)); + let (candidate, availability) = self.table.sign_and_import(GenericStatement::Candidate(receipt)); self.knowledge.lock().note_candidate(hash, Some(block_data), Some(extrinsic)); - self.network.with_spec(|spec, ctx| spec.gossip_statement(ctx, self.parent_hash, signed)); + self.network.with_spec(|spec, ctx| { + spec.gossip_statement(ctx, self.parent_hash, candidate); + if let Some(availability) = availability { + spec.gossip_statement(ctx, self.parent_hash, availability); + } + }); } fn fetch_block_data(&self, candidate: &CandidateReceipt) -> BlockDataReceiver { diff --git a/polkadot/service/src/lib.rs b/polkadot/service/src/lib.rs index 6d2c4aee157b8..4be9e8f1f18d5 100644 --- a/polkadot/service/src/lib.rs +++ b/polkadot/service/src/lib.rs @@ -212,7 +212,7 @@ pub fn new_full(config: Configuration, executor: TaskExecutor) consensus_net, service.extrinsic_pool(), executor, - ::std::time::Duration::from_millis(4000), // TODO: dynamic + ::std::time::Duration::from_secs(4), // TODO: dynamic key, )) } else { From d9e1c770f0e6323165cdaf014e1cb870a0c7255f Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Mon, 23 Jul 2018 17:18:16 +0200 Subject: [PATCH 11/20] genesis builder accounts for parachain heads --- polkadot/runtime/src/parachains.rs | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/polkadot/runtime/src/parachains.rs b/polkadot/runtime/src/parachains.rs index 4ac5f3f2a1089..9f1796767f541 100644 --- a/polkadot/runtime/src/parachains.rs +++ b/polkadot/runtime/src/parachains.rs @@ -194,8 +194,8 @@ impl Executable for Module { #[serde(rename_all = "camelCase")] #[serde(deny_unknown_fields)] pub struct GenesisConfig { - /// The initial parachains, mapped to code. - pub parachains: Vec<(Id, Vec)>, + /// The initial parachains, mapped to code and initial head data + pub parachains: Vec<(Id, Vec, Vec)>, /// Phantom data. #[serde(skip)] pub phantom: PhantomData, @@ -218,18 +218,21 @@ impl runtime_primitives::BuildStorage for GenesisConfig use std::collections::HashMap; use codec::Encode; - self.parachains.sort_unstable_by_key(|&(ref id, _)| id.clone()); - self.parachains.dedup_by_key(|&mut (ref id, _)| id.clone()); + self.parachains.sort_unstable_by_key(|&(ref id, _, _)| id.clone()); + self.parachains.dedup_by_key(|&mut (ref id, _, _)| id.clone()); - let only_ids: Vec<_> = self.parachains.iter().map(|&(ref id, _)| id).cloned().collect(); + let only_ids: Vec<_> = self.parachains.iter().map(|&(ref id, _, _)| id).cloned().collect(); let mut map: HashMap<_, _> = map![ Self::hash(>::key()).to_vec() => only_ids.encode() ]; - for (id, code) in self.parachains { - let key = Self::hash(&>::key_for(&id)).to_vec(); - map.insert(key, code.encode()); + for (id, code, genesis) in self.parachains { + let code_key = Self::hash(&>::key_for(&id)).to_vec(); + let head_key = Self::hash(&>::key_for(&id)).to_vec(); + + map.insert(code_key, code.encode()); + map.insert(head_key, genesis.encode()); } Ok(map.into()) From d628c3d7a926388227d815a2d316e5067a6004dc Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Tue, 24 Jul 2018 18:02:44 +0200 Subject: [PATCH 12/20] fix parachains tests --- polkadot/runtime/src/parachains.rs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/polkadot/runtime/src/parachains.rs b/polkadot/runtime/src/parachains.rs index 9f1796767f541..5629f440b5431 100644 --- a/polkadot/runtime/src/parachains.rs +++ b/polkadot/runtime/src/parachains.rs @@ -283,7 +283,7 @@ mod tests { type Parachains = Module; - fn new_test_ext(parachains: Vec<(Id, Vec)>) -> runtime_io::TestExternalities { + fn new_test_ext(parachains: Vec<(Id, Vec, Vec)>) -> runtime_io::TestExternalities { let mut t = system::GenesisConfig::::default().build_storage().unwrap(); t.extend(consensus::GenesisConfig::{ code: vec![], @@ -304,8 +304,8 @@ mod tests { #[test] fn active_parachains_should_work() { let parachains = vec![ - (5u32.into(), vec![1,2,3]), - (100u32.into(), vec![4,5,6]), + (5u32.into(), vec![1,2,3], vec![1]), + (100u32.into(), vec![4,5,6], vec![2]), ]; with_externalities(&mut new_test_ext(parachains), || { @@ -318,8 +318,8 @@ mod tests { #[test] fn register_deregister() { let parachains = vec![ - (5u32.into(), vec![1,2,3]), - (100u32.into(), vec![4,5,6]), + (5u32.into(), vec![1,2,3], vec![1]), + (100u32.into(), vec![4,5,6], vec![2,]), ]; with_externalities(&mut new_test_ext(parachains), || { @@ -343,8 +343,8 @@ mod tests { #[test] fn duty_roster_works() { let parachains = vec![ - (0u32.into(), vec![]), - (1u32.into(), vec![]), + (0u32.into(), vec![], vec![]), + (1u32.into(), vec![], vec![]), ]; with_externalities(&mut new_test_ext(parachains), || { From 5653984b4824023c54858acf22868bc34faffb6f Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Tue, 24 Jul 2018 18:02:55 +0200 Subject: [PATCH 13/20] targets for txpool --- polkadot/service/src/lib.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/polkadot/service/src/lib.rs b/polkadot/service/src/lib.rs index 4be9e8f1f18d5..10349d94dd8cd 100644 --- a/polkadot/service/src/lib.rs +++ b/polkadot/service/src/lib.rs @@ -302,13 +302,13 @@ impl network::TransactionPool for TransactionPoolAdapter match *e.kind() { transaction_pool::ErrorKind::AlreadyImported(hash) => Some(hash[..].into()), _ => { - debug!("Error adding transaction to the pool: {:?}", e); + debug!(target: "txpool", "Error adding transaction to the pool: {:?}", e); None }, } } } else { - debug!("Error decoding transaction"); + debug!(target: "txpool", "Error decoding transaction"); None } } From 6888a5b41e91eaa9cf7a9e566c0739b9c1765abf Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Wed, 25 Jul 2018 14:47:30 +0200 Subject: [PATCH 14/20] tweak runtime + collator --- common.sh | 2 +- .../release/demo_runtime.compact.wasm | Bin 500702 -> 500672 bytes .../release/demo_runtime.wasm | Bin 500786 -> 500756 bytes polkadot/runtime/src/parachains.rs | 52 ++++++++++++++++++ .../release/polkadot_runtime.compact.wasm | Bin 580014 -> 580186 bytes .../release/polkadot_runtime.wasm | Bin 580098 -> 580273 bytes .../adder/collator/src/main.rs | 17 +++++- .../release/runtime_test.compact.wasm | Bin 54240 -> 54272 bytes .../release/runtime_test.wasm | Bin 54450 -> 54482 bytes .../substrate_test_runtime.compact.wasm | Bin 56064 -> 55732 bytes .../release/substrate_test_runtime.wasm | Bin 56196 -> 55864 bytes 11 files changed, 69 insertions(+), 2 deletions(-) diff --git a/common.sh b/common.sh index 847aa23820439..254a4260e4bd6 100644 --- a/common.sh +++ b/common.sh @@ -8,7 +8,7 @@ SRCS=( "substrate/executor/wasm" "demo/runtime/wasm" "substrate/test-runtime/wasm" - "polkadot/parachain/test-chains/basic_add" + "polkadot/test-parachains/" ) # Make pushd/popd silent. diff --git a/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm b/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm index 8913735a62db18452e137d4b0f1a95e5fbfc1f16..40185066fc3bd628d417f4ae6e5ddf9a43e76e25 100644 GIT binary patch delta 55470 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 S4fq{R5(hI*@`z0Y?*9Y6a#)1` delta 55805 zcmce<31Ae(vj;pq(=)r-%_f_Wkef^bQ&48UMn<6eSw} z$&N7Y2y+ldW-KDY5hjN@@Z$hQ7;gBfqlJYz!lE28F|oKiVq#+*4n6yb)%?o7&rehzVw`u;`;J%wdD3ozAq0ijpf7q-!pgKq>4LA$_gtA3(BQ4 z%v)HDWZs0r@`6!gCY0pgDgD4A^GZu6OdExUmK7G47v@W6nWtcCLH?u)o8}yg7*|*v zTIxp@IT`TSyo!>tQTZj4iYuh^%oRkHOBYyJYt~irF?ULj8F$<{dHN)OC3~G6WQW)r z>`k_lmEAq|^!;JH}pOZ?VtV33i0J-gz+o6SmvSoc^V({TMO2SP83IrjB>C zKeDh|@@7bG->&Udls zWBZnNPv|QjIk0q5LPIuX>Aw;WEuEg&cj@JX8B702%3;|{8zpa9dRrU%XT=~nyv1~stUA`>VTCPUI-yNk`0}T#C0{G=2sB}N)gx^l=*TLUUf7#l)wA@X zhNO2zc2(Y#;T*{=v&GV;4@6ewP4DMml~r42Z?&*h7Z%(q8?+6o?z(S@6UpW)HwS;g zVrkCuSq4E(it;b)^)K}=Z)xP1@J<68`ddR`m%TRc+SseP+hs|Xy-)TDsWD^e$7{L( z{!isY^Fq_!6`@j3s~WQDod}}=rB%ybxQG3%EuroD|1&+U>i8RXYbj5xL|40Y=1VTh zlBFy;JW7%x0cXkaz6Y015b8f-w;~>O~tdl*af6>`>hsRPN`mXNO5-uV6kgXe@Jy>=i6h92tRXTa94d|CSX%)>ov@XGgK8 zLvlL@J{iqabW7liF{~*J&R`h;%Z4@(8wBbWve#@t zASZl7#GRNlY;F2koj}(KW-YdsV#UUZY&u8`#DHS<0MaB%AgqLSrLtY7u(^S^O4(ch zfx%_0K7=LYMDcY6`_@d43N)I`qKN<*RcL15!rknB1)0>Rfs20jI+Zdc{$dt;m2wC$ zgbW;?2WO2kTNkiDs7Bmx6u&QIcOz{mc=2M^Kfvy1{fUWaeg;H;a}l*o`Ls=D_h4>}{$OT$_tyj}eam z(ig*E_~}ov0WH}UQF5GRvnhc`jEMB~#e!%WAEqSGwhPOm@B zTCz{X&R=2Q7eeq&zGp3L{FLumn$2g&_pFtT|Lc2}0Fh>#1^;GeSZf6d>nSYP~sjb;nQ;Inq=Pe3r@9P*5&#EYlSvB_*< zAmvBYV&dk4{=j)OO)XInjSVjkfwx!?Vn^+!787uMTG&G?0lNBY}eVEUhk%wLV0q05=SvK*7Dx!u0s ze`WXC1)unhx!F%*({C)f-cO=h^2K>?(v>W^T1{7bdTt9Jw(&10ZJ||Pjna~9OY*?!x6)STcZ=D=?acV$c;MYn6FBcZFSS_&h0t8tSy=c#tp+fpOGeR3^7+IEykO zk)hZbKP|T~vW+~$k<63J2WpgKn$ua?@%gLI|4)K0!xSA9ng1pHC* z^9sgq+gSO@NcK$Ncmui0iTnLc<%bx1Mx^G*%faaR9Qhpine{DXgl>U1TgW3i1D#PU zU%DRm)ID+oa%DYUlAF_g(#vu$@;+yxp^O>6;1S zhzvG7WcrD z@5uoa6T?4{M|kEv3~ii{jIi)EQT>5j0$IGsH&gEMI7G&2xuN*iX*rhN6IgOu z-okM2az;LjRfZJEJ||yNaL+AoFbu zICW(+lfPOQcrHzu#s)vLHn*)L!C5(r(p5d&=O{`KC%teVFY-w_((`L`J0YL@G=NQ| zU2AhY61lEqD=Sz#g_59O&A_33k*;`?bydu)uiO>+<=Sc~jr&s5!ZF}{F9_B^={ew| zwYlw#+E%b4s!>CYVOEVQ5LCq%Ayu?*hg!@ka>=1GRN+HeRHKQ98YrWwi9a_`_9oOU zUG#7-bIZ9p@9B|zS2l^m4V4r&Gw^*w55O{k=a@Yj3Yq-y4 zG7c?GmgXR%nivzbiDf zei|OtWEBu#wOHImNsJ5ERkPdL7kQUcuaS-F;eowflva!_4gAzq`9p?np7SY5xVgG3 z_l^weG+6EbNT)$5LPseLBx9uh*j+g_GHCoEHT)0VfYHu>s-aY@?V()JgT`o8(QaBtINeEyKqSe)#w zmK(%yJ&5kM-JmgC`9BR;qvMU?3cCB5XxLBrtk!V7 zmS@~58uVBGa<8u@Z;mhg2i^@VJ zo$l)jmG7etZ#De1X@yzR2U`QHij?aO-aCI)>j*YM83mQ*O;9+Kk8cf(pQv>IU^92KXkPX5F6a;(=UJxtpQkuy#Ul0fHQih^% zAgxUKRc?218|aVI4+SNNK|WxE(s`243njt*1d-_xx<_|TPmdhoiS?b@7Pw)O@+OO# zb;znscMkJtzO{!$qbW*{?qNPDTY6@jH3@C3nbsn#i73p_X127;qM;d`Od0AoCbENK z#}s7@^<>OcWjK?ow~3NzN{dJm$A|yCvd`bk;}oyVSL%tkrYQsE1v>-v{-xZ<`UI;D zj&#*$S8H}+?P_x^M~M;Chaxd+ygI~%yUp>MHbeP@NBW-HAzI#}^!z{Je?oqC=W@T2 z>8VEh;iP+dxbNOWqO~7AW;Q)b-0xRBWYLfLl`^zeL{=&d#T-%$RS;E9gbur|4cS6=6F4R=hM*8Nud@_*u$jwnoIwRvNNw(Pg%>g9XI7 z*~-goQ()^HC6*=qg8oGum7b>RN>gb8^RZr@-r;@RKJkV)F;|&N6%U=KoQs;f9UT(~ zn;}DBzLnd>E%TLzR|_9_cD|BhnD;jel+wuHJU0yO-Mw9my;muuBJbR*Bu32JVVPE% z)3<0x;J15~11#JyM>FvFKpeVHNlo1`-wdTOry8rF*QlL{s!5aNSseE(&7)ztV=i9q`|;v}WFAJB?}Cf7J0DP-WRZd0OW+-%z2m>)KCy7Al9_UHKk33~`3~&;w>2gqxvks- zEGxy^OO^Om)$~jN3lrah#nuym6;Pn@++e{xD^Y1bH#lM>M4qhHVar9+hn1G8HIc3_ z!V)6{rHhj%F(sTksW?5p5d3oS^utOfc)a^C_DY@?2bL+F{x*;_#E2NEMvSOl!#~)X z0zv3N)kF)S!~||zuB>IQmn|#z?iH>TN&|K*kh4NrFY`@Im&Kzc%I%`yFx^3Y>!5JJoScJw z%dgS5o?l-Hj7FsSwtyX;Uv7KVgYGn#^l=!65sbA2U zSpxi5IttbZC80)gXDDebSXMo$Ot^YbC9F|88gum*>y$d;j&;glOxSzYDfP+rf$Ijb z($-_b+OS*nT(8(GTQ)`bF3K_D?e&U7-n&~ItCbbELFp}D+$2VCQ0mFQZW5Inl)lX# zH0NpwTBMK^6OB(c)*ef@7;6s(AJqWQ0DKx*l^F1p(mVa)CS$snN%II~VG_1+n5#qZ ze(ot{toVI{aw7x|4A`jL>SD738=p}Qx&seYE9Fc+1`n`L84@UcS$UOdX7D0Lf25>~ zTdS3JV&p#M1}eH`A7)szednvn9Rw%6rrgcYc(Gq;LprG znRmXaq+^0!{HF4v64>-3kmBiM$~dv}ywX<2^6&I{C0CxeS#-XvG!O$XDBbl-W}{Rq zy7+UG;R;N9Zz^5h6xew|k(s<`vv}^J(kLqEBD+gBdQ_|^1LrS7)c=x=i1}GLOcHeu9#%>gr=8SHAd<(arROYfrIR%N!w)3`Z z+p=$YBiX>W5Z5uDN{t=M_;oBgu#xd5(0kxRnSUv>C&Vt5=de}cl*)(U=F@mjAm?km zBX0XNFk2;l*HGjMk>TJYsl9U?$izbA0))<5(*3j~L@(z&nc1Z}|tqLTN<^-(VOwZD>#k zWchuiwr`MiIa~3Pj$|4O@j8WF$+}ESY=v%8I#wpMR>RCh3pIrnYLdCJz+gB=gn(SJ z`U9qk=p)Kk)Jci&DZ|B}ca?*r1^{yuwppzDPL zdxSnN6?xxB0!=;6bS+zvy303tBsca`%>Q&eD&*<1??@o#8)cgzM))aZq|m=p66Non z6`j9R-li4-d1u`}5#S?qNlJ6*uI~ODp+OgI$SgXgyhSu4Pb+2hc0;>zE<*oc@S@B2 zq$7eM)$a=Ya9a7@ZtO^L-4DufDv6el6w}Ts$#FI1!gMx0J&ejp-d$qLS>;Q%JMh3c zETl!N2sJ)A7>K9IzV*+cwkQg(6*T&-=fq=4YKDyayUA)N@kWFiE3bb}d=a7M${#!@ z>PI3lMXk3+s?!KQ8macAp_$@Uv*jnOLbJUnB%TwVWK|cXUNwrliSavLwMoVTS`bh) z?|XtOrj586=`cZExj88vJIBzB@5D1AElN#fuZhl4YDu1ISYJB#CED93w2Qfm!Me$+ zXH^*y5A!WCXGITf!qrTO3(ahELd=#PvcY&G_Ib1l4o}RCQyYpF(dtdqwCyQsBe6YN zy}nLO$UqxOZtU*_L}VQZ77&fM}RFIyFvh!jdcJSDUfWkIz6=b*PUt^wCKe=4)bn zyxI&qG|S`F&VC=1LDSOzP*airV@<&jb(XE{LL{+-VFhL=-K!+)k>chAbu?+<`2=+_ z6x1_OZ2|@9$_!nu^u8eOPE-fUE33$=V#Jm-HQL)yl^T6Btc6V-I_c#7(Uv;lN>7=ySk)KjyDlV(Yck$NO~J;Q-U7`8+PHyZjSd$YVO zqvZ=xbKRgZSIt2uTPwI09aGg(QqGoC^$FD0Usum3?8lU3Xds&WX|x{g^OHp%eMa1z zrgqmh(cVBEQ(78B3UUJPrK$HbjEhnA)joxGuXCN7;$nP62F3ly@e!??M39}D^WPaC z-Uezsix$}p)R#xtwOY0oPP2@`Fx(!Mo?2S6MrF8JtH-LQ3~Mt-z0nKSs1L8Le5*00@`Hn2^@R?0)DkZ~%TUkCpF9_MD^vZFu^nPZ zw%Q)B_&ytE2fIjVr25F$21Yklw=%X}L^M@z&8u+;q05QHzpp$FTO-%o6lg*+}=YSc@@Qr0r5r;b)c4ss=P(Zdtox^)>FMXzP1DhNFEpDi4gwoYOd(tLyZQ% z%RSX`SMfU%5EZ@D>se-CUoW*CXLH3L{nS13(Li8Vf0bs|d7|oib!b{O7P7%+AGemd zJGjho>aadGrX+F05H(I59;_yb#Y5BxQGSEkTfBUOn&5Zoc;d|vdbKYy!%hw**{Li$ zMF?GY;K>5VI>V=X;}Av6=;cAQ<#7X)(&e6>a99Ku%a~re>+P^+=7ztKkllpFdoCtT z-1?;Bu?a@A<_vuFE-ouERd`9dUEc|zFORlA7 z-)h2QXU8;4dy`=YVKGP6#vZA(CP*uxLVG?YwhUHxu(!l*H>)?uAMX-dZ&n93Jby13 z;J?}oDr;93NE@R5Ea&gICT%rg|0dWG!v0OLlY~_;OlaiTCgcl>izl>GhpCg;+v40X zwOJyU(jwdlfhg9-0B$QuK5HLTv>mSInq+Ze@o+T`q5f0D)pQCm-WaYPC2zTA1m+fm zU@^CP>$Ne+Bi`9){*R5*jsCURfF?rz^mf^wflR8pukD^^isz0&= zqS4a^Sj=W)iut2%OX#;YSkbC-=*dm;DJ z@#+Bo3I|jD@CcQTJJWds$yya)FL(e&-ZVy3!s!^zw5F2MHTVYEnk^8^;rS#Dag1%< zctnG6));{1NJj~bbaRkvx@?S1cnl2vB1B=bH^rX_nQ6Gg4VcqD+yJ(vXvAV?4>{xw zAcmQ#WXte7UL%->9IDR`Lj&n~tw@(}^f6mPHX%+Kh?pA0aXjw^H^~!k#A`Po!9gnlE7{@~zfPhlYL7G^oKRbz*1^HI*R4UBMWAD>QFPqEXV! zqAdy1j$~W?s1M z%(CG2s5pFQJUxv!I3h`I)X)nuyx48CGQ36p&>RGUPAkXsyi|nz@^OuvJ@HQeNW`}=6%^mVqtH-oP8?N`tbHKA7R91$>$mEAE4bE zW%4u=`|#8_>@7q>Z|U6HU7!xYhJ;w#hi8baJJbU3Uwnu9C-J|pNc~gH{!*C~=-du+ zppJ*y^TCN=j?mbdF59~k=FWtMMqFvn&xuwk+}Mb~Bhais<9d7rOF0Tv+y9YAXpSHP zxAy5MbU>U;_xc7JnS;qo1<) zJ#l-8(?Kk3tDc3AkH+d(Pn_=EC+27K0-Hrd4U50Bc{Q;xo>acqh>yd*U5Ccp!?Xve zyhrTFfI`cf@J8)y&U&JEAJdaOIFlo#>2x%wCMegvmY)u{?uX|G-fzN3F!XP;X8d;O zeo-_2H9IQGa`;i)`Znh+t!_SIbVN`O4>aeg*jd`%oX4`gf&I<7tOd??;Pxk<| z@hJI|SH$R1JXegI&z%FldC59aWvv1^cD-<%!bQG6%-VB4{gScgY(9f+DxG<$=Jb!X z&!FfiP%WNZ#1q880zM2~k_I0{k0l@67r1LQpU&iWjK<~2yY~ov4DWI?{4pN;W=X5| zTrGi%gKNd#_Oy!RgTgLLXrlS5X=HC_d-x0HxqNcIE!go8*4(;)= zV*EHBFMswDHKGkkvTGdAm$&T|DdV~C|4NuQ$MgPHt4D}3SiAhi9x?9@ejW7_M&Ez# zC%0uOmIClp27aTd^w0g2Qpm?qb#n`ONy2@5jIN1EgFV1(w4R=B;jP`i-(L})BA$^k zbFY!zG%bv=(J5vI=?STfZ)ukyps4z63v6xcI>*sje$q!?O*2CJ$*pKvf*B5Mn zY~BrNk#vB$E=FTqnoDbF55}#>U3?+ca^x;PBoh1bXauMo zm_>DmXkCV&tMYy^@F1@%`<9F1GM+fP#y$VTu8#dMJcKYL>9FRK5Y!619v56kEf=TC z_^p5QnlAWC_$)M%q8;;TqvbX2v#8hfnkY~$cFgB>o4`g5(}Y1SVR&xrf_-^c8{rm3 zRbjNdZ5W$x?knQmay~33It|-wX$jq>w0cUe5uB!ZMVAVm?2j^eL1+gSC<)01h5k^=dGz0;dR2lz?Qv=j`oD2z@$k#yoPA8-rE9p@X2^|s(m~^d&T@R#JOqDB%{r?)Y(8>oF)({oKtv5mqU-!;}P3W)j9H=u*$K?bwx<>zV=@DHWE)FM&_{{kGkBY*C|a7) z%G)B3602tLrsx#S=rrQ4LoImbNlzq!+kBBf1OKUi4Z5);s zU-=P~W(B%b(uyleOrDAO&>;dd`H~x==;5-iC8hI$9tr}X9e7$O)S;^wTCgg&uIsQ1 z+5~W5(t!>!9{WHFkDf9Bw>aHZgvVc0CQ2-u#f27?#>r8)oXvOA9QVy^o;v7nmQHgE zgpVZ4kAUTe*TLcKMb(my%@adx14u9dJqh`blSRkF03`XfFV9Yl|t?)7{@*1H|B_`fi7Vx_`f*n;Lak(4=d2*PZb5Tz#ur$ggeT!Q%O zUY-p(JqxkmjS{|vyiWW{Rui+Ng;T?zc^Qv>CoIH*`Wn$#J&N>nHyIwyuRbRn5ipVWaG3$5;|U& zB=#@Ha`4Q{;>*Q+V%!15#8%V`E?F|XDh>*~92oZif0}blGlI>_J)Vi18S@$p)I?AjdB~pZMgu^f=3ZvjRp_7qhR9W({v`8N& z9&z|#e#{XGe+K!)-Tjp$@z)|AA>LocV>H9WBE{KdyyySTa;srr^K!m`kq>FJg7^1h z)|G211B$@*BIzA_jI`rthLn~P6qDL|N2!lT?r&k{yHijBH;uZq==VuR#?SHpXBq{9C7qX96t*LqSo+aM%y`tls(q+_VVUe12fk0^NeQB()GNv`;;xwiu*-i zJ#UQtzpvI~?P|6yLyUL|4+g;*ZOazjHu5O3_bGnbVj3e#5AkI2@dnh60%teCJfMfT zjXcwkG52YnOEt}U8rlMr9Zy4Mz`)0d>`lD8`#Wl8q}Snl=2bCy6W43B=L_m)It4xO zkrb{fMQL8&ftSS|6lSjku59A5Zp0q3&+}ahTPxmv0h1_PlcAKv7lTU44NQEI|E!Mi zZ8T5JU>_X@lAb_=A(jS10(BKK(-T9c9?5sfBu~%{qQu%$Ph#lQ6WCqN>)}bLRRPX* zPz9lLn^i&R+=h1^Ob7Mfn%g8ieZjj4re89OVnEUyhJ`$skHk7YFl;|xC-*c0v?$$c z251!a*nkoC)U_U{8bGWGAf8o>7)a4$tQg35koOy9PY{TTHo{auR+qS9%sc7$w|x)U zLcMkp6I=}OH(##9(#Vi)wfO!Zo)@FX(htEp_r6R$XINDmnn*Sr;?2lzjveB22}Wj) zIR69J0!!cEyYaf17*cP7x|wHnqV-m%9X}Xvb&8a?_$0F6 zhu`A=R`4e2l6MiuZ57+!<@BAHK-2fIv5XPY>3z(6Uy7OU^LG919=C+>(i?_xB!t&C zDK8z2v0j~nN#VpX{9Uwe5+NOY<5MUf@I?_d{zLYCc0erokS|nZ?^mMnhkWQYGVfL@lrz839{@d3EaImUa*mlg#MALCE^ zT8h8U@~(9B3_!EMo#(K%r)^t@B5tEdRD7tG8THojANjq|z?k!Jp*SZ=<-(la$nd&u z-=Xl$3_)^BkIaXHi#fr+Hf1ht>%@e=<%72$_P1L`{4>Ei>=7-<;Z@3HG6BJm_ z@;@=F;W($^OEJMX#h^dAvFW(vFFry9{^XuQI?RdVt-&*$>DhFY(}+;7m30#~D1003 z!yPrpQ5)gSFlg0y+lwBwnmrq0!7g#+Q66VWV@$YFV!~f|_6&o7G}Gmc3q-_ao|zUr z)>^}{M!Ffk=bsa|T;?sAH7Cy+VCCv-PEqDpf52(+QI%?yihG@T>Zm$6EnfZzs=$5FN;O&mK7W;X zC)IUy@4rrct+V4CmmPk2hIrsJHO}Lk|1>m=9`&aA?h8C~r+OQmZ1)zc3ls3gA@~Lv z%Nlwhh_y92({T8TKvl7NN=7?Z-Ua^9)yccmVfd~$7=Y7wsIw+ao<5BiGa_C zND*HU@Kqk5JZy|mnucLK5^!`!$e&CRuimX@61yMnRukk?Or(uaVnyJU~JN9*pdboDf=XNm_A zEa_H*BZ;?;?v>)R88{hgiSySCb&`nuLN!hRcK<@{&DbdsaYn5hSpB7nA+bfQ_*(64 zzwBUFY`rrfSwX<%P2$SeIHlQ0-2aU_H`T2EJSo7`&I;NbLj5c0UMZS?t0vm@5Be78 zRiN$HzJ+$#=|IXU9QZ*mwmGe81b6;k#kY(aiJ~)Va>^H^@YP|)9AdoOfIyx++v+g9 zaVdOM--3So@2Ra z_oLcW{eqFk3x8CrY>nF=0kAY~e+1y(Eu!;z)p*OpbwRyFruQhu{Dk96TLWu$`he6D5lwo4vBSb~L(5l~owxiwWuIrgbW3ovsIE)MK-YA1LyoplVJhBPX1n4H|} zM~dAZt-U|a?Uf=WNh(t$DGc}LupQh0_aRYUsSfV_WfR}Kp%u{%v2h}$z`X-wKe}aaS zpmvYk0lHkkq%`8O4Lw*N_p9-q7*nxFqrFl$bcj?4BJh$<*D+1O%#ftJEc{ErH$mFQ zKaKPNTyueMAA;Y2bR%510Z$sS={F+X5?3tneM0bukycQ@v<;Gk7WjZNaM>-M3yIMy zQU&g$`khwG?G~N^z8mn}aZ$^g$9km%+y~)KU9lg?rns*GOr}$fduQC|;u=mB*($V+ zy&(#O8vE51oX4P`3cPW(E3gHMPVh=y#3iqmnOKcvhY-?4G=yY1A1^vYX^s4L)kYEE zNhWH8o@ACgpJ-NLm$R!Fj{Gj5>tWH?gH<#}+P042U=j=XBIAvvMc7BREt_(ctmj>Y?D;SE5=D6DhZnW^}z>|6Q!<|O1 zoqv;+zXBEX55bcc3$-en-WI?X?4~rY0C)1~@8JT8q&F}H8jX9XK<7b6uwBo#hJMpWmB3d~ANg>RChV48jn9QsB?jMu zs6OsC{GA0W$S412JKtjT19jO+%NITf=~6=A4KxGc^G88~ZAdo{+!3qA$nLQ@L&^)v z%5%o&O%}c+ZHV|hPIKV3mG9!TzId6ZMZ7k)*H;hYG z^3sC*!f}NKWA!o9^l_7l^N}}m8S)~t^}_Pv%nE%hzU^CFFjm6m>L>A9LgpGH7nyo- zNl0!rp@-I%rFYo)yz*vc<&sZ`;smX({M2&c?V!~aD-*PEe68x~1g#-EDc(uY665L9 zXYR-wO7#4au?2d0L4HMHNwMUcC0L?Xmpv%r6SXFIHM(b_)~qXiAoev75X@Qw-+rwPuM$aw<#Y-1J@^MO%f^}MP{T~4X6vs#!V=h0xdl%ZtSRK z;d5(slC=f6txVQB`@ee(#L=W*YL-5wu;LEAaO_kl`*+F-w{&gQJ9j1FZZ69!oKRRi zzDHg~p5%LwaGoK>1yj*u6$N8^mW-2p^f6VpyKk}ad0~_8X%m$*Q14k*R#MgxRXn>g z7Gx29^2+ZpT32w_q`V1|Z=aZuqGcz2O$DOz^Gfsb3oEASC6n!z;FD%MQnU`*j>kcu ziyL3i>h>Equ_9+;$ylRL=}4y=W8V7bJ4tZ#gu*fTC1nLUp_CUXM>XWZNf`nvWpQIY zZH9QOo;Jt(+bUqRLg~p`=T(4apLi)% zI})>S4f5RGOVH3M7WZZ1NgchrRs?h{lf5cF*R_P^9}-<1NR~GNUv|zZ%bPN4azVb) zh*Ol6Thqlk*FkvkMI)`AxFt=CO{cvIw=2J7a>vqwvceJ=#WRF)7?`pW$@hX-l%{3Y z`G~M#gq>VaQPL6LnO-YiPlI{S6lc@4gx*Wn)s(_`c$7f5L0(dU(Tf7>31xBs3JBWs zFlq8jN+y(yLw~;@u20um;3I0H5_h&(Jd=)AZWAA;YdNt;*Mq*>HJXwv`qjr6S|;-9 zYXjvIPl;#hYt8UR&KLEyZtNwI)zkfnAcKOp&bh_@Qz1pARqG^!HCZH=`E|3xCuI@0&Mp{7d& zIm)M%cPyEJ?x77h6D*!IQ8HdpH^I_7Fp3s!wsR|{mPx*cgJ2nrclw-;Nj$ZpQ1Y!I zuwHli7`P5*V+zXjiFwm>@qJ@0GPasBJ6}`V9h+!%I{q2t1>Yn2W^busjhYq)!Lfzo zF}Mj-CKQ11;Voi*6K!(roUK6hxd#6v(WR-T*F8-6;c!143n1I5@`4I%PHz=E8)`}N z`K{vZhFYq;WLu5avYy$70ufZ8xMU)}SzZCxBKhb&O}CSBBBiFqJB!-Ux!wF`7v_Ja3_*)*-r6irq)n_g8Wzsoh$oh;tZ(qcNkL-~f}#pO`L(I7ZE50alC z(2%^mpu8L&epFe(l)N%@^pAMGI$KMSXH|*L*_y7etg`t`C_urrK@bzMKF2MB2hTv37!p?7!8 z{xqh|y!;BYKk2-;DS25z{)D{3iI99uUIk>?|7^7w(n!msx9ev#f>r(btaz-EmexT$ zXK*ek?>J!snm}8QsE9za-}MAW5tu)ztPFNB3WAkE0_*}l-bPEwc`HbdE|Pp71i|77 zC{C|qn%pp_VFrG##)9S5&l_5a{pfknT)VH9w$);ccNX3Bw+OJy9RR6_b6+HMIH7HWmwfcPquWKe{IUW=Df9(!w>A+zt_+dJQG$3r zW);bIlG0tTVL+*(q@5NmKe0>9Zl|?KI;_SM-UKv$>@8*T6Q=27 zjQN%#!o8I5wexH6?+_kSa8^(1(MGO!Msv92An`Yn4>l6`URouLQd!df|@~Jo<5l-SA-l!E&--n zFrpyKJmH025-ppmj?|s>3o?nc{(s2*7vH8^4w_X z1}SZ!CCfASip4FoR*kmp1zD6CAyIr9lzlH{7@D3^2;t~7ZwsxRjMK;sT57GM=%Y7g zHU_-p+fpqGTWXzU9M0X)Qp=Wc{`5WE^^G|4XOfkdL&w{LU@3vmzao-aX~_w6Fwh-Y zSd8!vzM?{hU!ft2cMt}(g3LJMJ-HQH`rtmXoZub%Owan>J`}swXsstQTWitR(=&Ig z@(R?pJP4MKog^90qs`okGI+IhHM!KWn}c9JSr#5=&ugu9N}z{w?#SMg$|mU(3&s{! zV6LM%xbih~T3r2Fh*LT8n&DLBCHoC=`9QvS^n;WsM?`ujYQYV)Omrxiv za17Sp1;O6(ukEzPb=DmKp{u+sKL?SLF{-zT*6p?Qo`)zyYoHhBO@yyGLXc$L9SDy) zPRK)Bj}h7cODBzi;njfDRy@+%-a%`n(_=i7${1Xa1i>;=0Un;n9kuJ_^RJuDS$)uK z-pPYCZBC+3_n9mZ2uS$c9KgiVvJy<*;;v3w-Hf$_@xb9sDnK`v=*G%sN3c|BDNHwT zNObC?HKH$RjqijI?UzI1-cI;BEItoc)d^1I^*6+sPFl0rAKw74YkQ;-o#BzTy(!8% zYgrE8$u~h*-&kkhRVpn~o_&~Bi|N{`!^prVr&@u!`Y^R4Giu!`=598&V9ccPqY8`1 zmEaR7n>%aCZR(zujitRjN|KBXEmdjHyb?i55ByL<;{1C27UELJ;m0A)`?Y4NWk@;| zS(4@>!Fkv{xJhBN@WUjhOBTK^TJkNFzunAVYUHn={IJLID~D~suR^qv^bMg|m`StW zpgCgD93`5tllbLEDV6FJRb8|!e7zfcZrCBf-@?hjO$y7#uTi&&2fq-!>yCPovu|A7(AhMw!=K#QM>nR@PP#*uUc}8DEu7e5d&7s{kzyB^r6#9I(s*3* zVK;M4LE>cshJ^vhkfgoh-(9t?a$IZCshd{6%c}a|)Bsv4Fxurn(&ffaYr-AJexIwG z4RM3wVFn2v#ZMG^>9KBF1AhRbo+ojCmOT$8K^r`RnsWyv;!@;XV2+2AY9j7Mat2C* z=^GF!I~_^)fo#xmf*tMAdZ*3*!Npu zAVk+(tw}iOY&HBMCg*DTsdItg*y)*tyOT%$;5PSBAyPvbB8f}6T6y1jC`UxpUlx&x zGKmbiB~M8Nc=N~`aQm(+6^I;+q{-7w_6h)lxuJsL%YeAXuH0*i=dS0h>k^988 zHX4W~ra(?~O}dIrOI%>m1~;>7Bt97FC{TF94YEigGs~J};*FkK3SRX))l9-;M znwDFwh#mK6^~K1(a5_=4sOYQJ_k`qsX5`mvoI#`gBsdy|VVI%gYXZN=Pv(#KA**8* zs&Yh}?W@)EkRi%Ea=U`o$s)d=c5_PB{uDfr!6m-}dQNU+JhHR*Bhg6Q+fTdO)3_@T zPDc}RT#ZCjf2~e%v=@c$DNdq6rczE#lmfbDx?XR_tF(}NoJ_4c} zLElQe+h4owf6)S`4ER5@z(&^_7U;kJKUiSZ^;+MIPzyvGIoj$-LgSmZIx9;XfoVKI zl5Q92H)vxT%q4<<9-zk96H6v&aboWcTCXhIQuC=V|C6OQ9cWl;|AB_3mJKv4b=g3z zz8=zvWbf1qrXj^bjwlS``+Z!jgQI~{2Leh#8UlDRt2q9IAsJ4s`N^MUX$`FQQxK1V0kV(v zO&T705d9~~3z2M&WY`5~i>FX!A4)gk$)|uHP3guwbt<^l`$hIkxJx{nC;x)XN@Q{n z&H-{YrH`wRT0uzc+8oKGU`gX)o6%7u#4blS?j?eur@qQYV{is9YBDd zkknnQ6+(d^>`;{kANqkf3GR-M@gudOA$SYun-Kkax&9L&uydi*YB%6Lzsi!6@;Au! z4~D?byQS7&dnBm{mBNinDm{acQaYn8-=YZgAn~R=^}$g1s9%#(&mijzD8S30(4dKP zc8O+OO05FHa!9oa1Yu2hvJ4iNATOnJkd8-1yh1fp*q+j>9EJ*qQQA^rCDKq~>p7^! z2j(aysmo-4>xsx1Xw?pcq2r-|Lv>7WsE%zosN*|85UOJvHgt>%HsT6V@m!FbD)yT? zwh^|DozP*Zj&0c1@nqzOQwwTz{0w-8kp|Z~3>^pIqngwr8O^PR41A3v<#wpI8_F9U z;$Q1XxiJLcUdB>-gu?5bsh2=$7jO?Ev08tG#`XXYYBNz4mNo~hjzbRixzv0MvVZU+-+6;1-H(eM)dQ&dJmnut7DzhLSz%|KMu+Q^ z&QOdFZ;!Oy;e#k`b$BVItqxy-wB6y=sEV44{x$mhFkoZ@_M0940T7`bPH9+<|2M~mIxDDGKen0ZB>hK((LOVPN+Z}$K zv|)94DTs{@xBAme8H+Li`7&4Odt;XD+R=Bz3|S))3*dDbSzD8>s_z9xQqwZw=*t?<9$r;z^}P;3u3%e1%zQ z5G)>{8hKA+0(82@qvQr$JOkVZ)t98DxcEEJhrdpSB<11as*(i{;#?qII=(9c?2`~wPR9DkuRLSy-Z=wL{3RV=>_vN0(bv8xHknCsJYOnMMV z{e`hQhrvDxT=Azph9Ve4g*08}pjp#hX2AF9P;G1d5d5R)b()s7QTTyYj3s27$w_$o zOG_7nrsJVRtsjpVISd*7himRo_Pbp8ioKSkjzm>$#q8nOq`~aIXSkN7Wj_V3jl}oE zwXUqO$R459Q!)Zd`oPA8}0ATeY_TivizDw`v3Z*H~2ie_C>&`wbNsrrJIo zrrH`PHqF5ti&|o&+=vCm{8(V{jbF*J&5!kvYd3xj+!HXh=x!FUjzmC};>!nEpEYfzUdYD@?f) zx7W@h$}r%qTD=!T^21+6uH<vZGS+0zhI4dy(T4A|p_;4ghMeHWd+TYMol4j##bu`v~5fb|d z=mp?#XV^;@0Jmw(r6Vz%fM3C&Bm_u$?n_x>P)o$yN_nbBk)$7hM?)p{FWw?i zLH$QCHkqHN{1t`6PG8B!$pu!)lkbMOr;z9DDW^muuK;-t6jVlqr7S>R5LVr(XVJVM z9ODL6>TvYZZ72c`lCu})uuN2b#6qw~d2(yOlIBO{>v#+5Q(Z&ap(YN)5x{=mQvzL1G>?g=j0Rd=_ca6HF5l=%r*IY8gb#p5O-Y%U_$!Z03GK zSk$S1qBn==>zcE29=V@v4cG25_)qu@bHZidxO`b-nC(V zTuO;U1C}74G{@fODXtLMIop-uUj|j$1kQdgLzOm+ucf0HzAGR}rPPM^d2#^hB}l6Q zXYx9vHzKV$S)Bs zYAS%IEg==v-TIwYA+XV%M%iIh_A+ZlWk37ToZ{``LD(uDgpJ~@e?yUXQG_OGurSz_ z5<9;l8~nl$Tan$^{DQE>F9_H0y8?b>$=E$>MNR7r7SRNUnJjw)MioJpLD*txz_33_ zso{A8%8)gHM*|KmEFc+a(*WH->Rt`lR`(G~Tk56=$yRrBN?Yn4P3d1)Yf{9cm`q16$arNmiZ`R8LJ`oQoy8oKP=6tbEQoXCby`B z3_(d77NWlpl=P4otb~?gRx>|5Lwfk;I@^&cTB$a>2nY;$+OGqpISjrxx z@%Il+JJX!xYy35cL{QPc)MfDIZ9xXER9!O73|yZT^S#l^NDGRB89&?+8r0fn7Lu;`EI1Z_uAn!BPA8}-43Kj_MG zW?&6d1c5)k0bA9Waac3f^4460kZ2amVf6Ilqy$nzAk#S;Ee`WaR9koS#AJX$U#d;NKwn^^}q#{zCF= zbUf-vO2q!nD5!ZWr2POFyP~Av>z2}Z;K{C-lcyd42OFlTEd^({{n92-P$8E8Q6BK1i#%yhT&cjHdJqp7Jb2O8DOFdV>3b&W3rhoFYPC z)z4Eq;;d+p0L~n8z|+Gtq^VR>B2OmSR#3VpPw5Tf`QV;F;*P-N4|q9XDh4N;ax>r+ zR_&NajRpr{!!}d;poObJl4!B;pN95q1SCwo2xc~nIxrjwa|}gvDuOo!43Tz_NWDyv z`kkpQ(s00`BHaoY-6+{21z~gi88YRA#+HdhvSC{!8?F&apoA@wp&9oNmKgm^%_IU2 z6(bpNs2B!ZGykTJfoggqKBpLg^+P+$&{+qmonD??fb>bE(c!7o4dq})7K~0#9)g0G zC=cnOp!1>@$em1`orN?yI=LgtSPrP$J(m|mq8YXzPTNjQR~Q_V1P?euqSf>iE!vf!E17^L?q@D zkbn&u&n##Uii(1wu8=MGrHBzg8EJ0pJ)MEL)bMv9j;jfz97`fAkgEtn#$f4e0F@A9 z7m0!#P{#(<6xmFY?!~3vgC*f7HqebT$DromI0Qduabd79*TS~2zjT-ZL0Fr^I^M)( z6pd?Z0VwLajCL0Kkh2qwaC}h5?vsPiZ%c5)uwt(L-Ay6_B*zI5xpJ<9%g2Q??j)rb z3sIvp>(oVR4K8v21g)WeAQW7U%jrYcjz?YVaXI^f=Vl}>5HJhC=a7IJfp4ob*Fe-} z0FMArdtj>^mva%+{|6Fn(FIN|42?PfzJCz!Z_pX@z+o3I=T87;L$IB=ocbw1FClf2 zpp%R_dIwuL8q9tbgC=T;{*72)dmwXI9zDsH9E<6vW^d8nPINy{ZNB83KtjqoG!hrwebGCX~})FSiw zt6?p*pT82zwHV<4^!zm(ydX-MB3`*$i(wVwx?=5#mO7-tK9o7WY)hAEtk{+=V?bE8 zXjq)6Q=-+srBf1o@8b}SMQEz>8{T4T3`9`74B9n$+C9cXdyJvSq@ea$Q2FBi5-mk- zK1h;o728U*_DLK1?nUv!U0S6K{+-IS+nZnOab!P)GoHct zaq@WDs|%$Ohsv~dt>zL_5Y589md_4-u#e`zDjWmQI(l-rx?H>Ce{pN?#)|)=XSsLa zAi?lS|KTz2qDfaBBoJRt(mD?9^8fU99&lC`_ufBe&+aow+jDm5bwNP7PcKMW)D=+? zP(jq_@>D>9MT#OC))pILjf^dpXks+PuAAIwl$dyLib{&tBqmYc+%#i|B$~un?)#nR z?81V^B%k-*_rRQe&OGx>pMU+$JYV}Eat$4lGQ77DiVq88a|u4HhL`<}Gpx=8k8pFB zO7P`sf}JXX+Rs=RH;=DRb5*;O?%l!=%#`cS0tP>;P)Fne6Qjg0Nbx_F;EJ9qK^ z?(E#f+psZr@j4s#f(De`_U2*A#ynD9yixmkm;YYHe_5_RM{7Ez`9&&rEAz5A=w+^& zhp+Sxmdkbvf6_)>V4;;0kVPx;$( zw0Rt|b;c%bs61|yHmG_%eri2wa8W2W+dyDN_fhutauuFZz00Ih%s@@59h)@s*vTbQ zPP~_7NMl{dguQWifA;>U?fye_|IxSehn#(`c6oP;yW0A+ki7pzi~E)5X}#pP&((U> zj2JHOK2Mu6cy-X6WH*$IS z^L)Kb>f#q0`t+%io_jZI&5A_)ZnHMC?}R1XocJ5Q3g;IlNv~aV1}Z;hXLaDeU4{Qi zUevCQ?&VA)n^qNFD|feRypN?FuLNHcRh|>i*Ua{})y+cRIenSoYQ%dK`W?Yv1jat< zPZRQDlZuDNsQdc>kNyX+NH9wzM`g(Vq$;IHZr;u>*?oLfUf_Vw<>e1}CjZm_H5J*^ zROtVfTzHw*?|;py@J|}#kEmMYXFy&$E%Nzg)gph9S~yjUeC~#DH&-jFgwy=8DxCJER`RNq+F*IjMOx4H8{VsWS?Ztw`EngmGkgR6tKyp|q&Tu> zIR1t`ziY12MlA34yA+dX=);}4w07lUR&!DDc`jBpm#*JkxjdY8Cdjj4LEk`ATc-5G zZ%MXKklXF5?UP3hq}>akxV3hn<&S8XYRUeV+e3~cu6fin`}@Vht=t~N ztyXnA7&S(=UyO5hQ?)}LC(G@sAA9uuBbP_3*xrr9jwU&wZW=QF0bG=8`@YL<#fk75 zsja+<%GUO%uj{&mu81#@q|ZZqeS|DQC6vSlXn_YOl}S|l6j!;p_!y<`6&KYU9P&-R zK&g_VQ(Vj^f`Z{yN3t7QPi{S18}zR+%Q;=>sh23_A|_ca=E}m?s8r!xRW5<=vFf`@ zd(UY4D7G+7j=DrUb#%9Mmw#ls7vvq6u+0s~-HVrK_MoYI^S!4ty^48Lj=EGkzAmqt zoOwQ*0D0r+|D=O-z-9kSQdB?rt;=#m+=$CRMwB}4^8H1rdoI^bne{1}u86~h{QbM) z<&5c*YpVPHk7sETYJO5O)Q;wzoY|=jZ0z*{YlkUVSj!}Tl2BZ?2P;?Zxb6y#V^w}6 zZ`z^_?Y$3-^XV|TtfT;wINNx{}1QcaYTM~PacP-S;#iV zY95~#5bf)axcV*}Q_aLpQa&COMtN)RUsXQ>S_X+fzH$K^XB zi7OPYCSbSX*u|~dwZ)e@p4zGfrQ%KUoom>7QQN1(yH?v?9D6NO{-iv8AvgTi6kaE$ zxijW5O0FqP?C5d5_T`%5Sh?c{c3v+>f1B8upjyav#N3bgs&Ef;R<^OfwJ=zd#cf*u zsS5eAIE|-o@Mjh_a(%qotFSD`p)6P)u3q1^O6?cUZ-eNNue_y=9;!eUbnKZM(mY-j zrOK-*G!K;*Y||#!3?C*R*rp9FzAnGBO>6CGApD#|6|6>CxgNoCzGR!JR1dTm&( zGW5vTZqf#nFzL#xxPOEKDMajL&Cv)G*-zBOSk=J~j%{0==H}~hYVYv0X>1;zHf?bm z`=2i2Zgp6uk6X8X?M&<%a_9Bh$aZK?c^8?{mW zmHWK&(GBZXY)WSqKHImzZdcJywjLtN!)F$h2vnUnO4*&gcG(6s%N83r*5w6XVD+DR zlQyWAQmOO0{Ej1kzo3n)RVFv~Nr++c*_*U-$*s?G9X4pOF*CPSsfy;qG&CQ@`#SpE z%)XeKCZ}V{t=gvA;&W~n~yKZM%S(>v z_O;^q$G5SMr6<*x$aX?@Tjfnwl4CX5@$6AAD4BE5>Ki~A3qls{Ty|>|l&m>>ePO%Y zagP>`Ruas(Q&bkGc3)OXGCh_(Hi$L6LtdLOK}m>n*AdQd2l)u5tvyWeJ^Bf~)*c2%M4fh0keYdoDf-KMqa* zLv22i9fLowz0A2^9dCa@t1q@InC^cOb`jnpbba2%F?1Y&yohiiq3iQ;@q^#4DO^EN zxYDkVio1}Y5U!##zYTlyYtON^T?t+$kt(oTf`9qGg35M(UO{yaA{w@{k9z({?kgbd-%Y0mPZjhJ6Ov8=U{5EkB%Dd; z`j`~%5vCIqrnKvG3fHF+RF8hCTf9PUUWmi(VnX|ke06=g-}rxxpGv+8aH#-|s-XSz z`zDnDGTL7FCll_IP9ZnDXQ+^(zb5>au#3?3iAlGdu!^9-mt7w<>E9;2`WEA_#(WOp zs|1Cg?Vj_$uK=TRCE+SU*Qfh)A9KGwFYugykip-( z{~(pyzhH%N`l$FPIvb)uOTSi3CI3KF-r|RX87cHpzius9%5_RuLpZZreD~HoOZ;<$ z>AP!kWX|3ERS25*2wk6#P2c_x9(bU$fYGE=(4Q+h)4$H&u21&@{?+vD*HeH3ExkqP z`luEu+>wGKse4_YkV01wHW4oDR)H6|{vqKN!mHil@1a+>6FLZACUkvoC|ku3 z2+A7qS%NY<9JNb+`w`9MNTTASnl0~tRMVvQsJ6WC)Iz1$psns(>N~C1A-y^tepFjr zY_Al@_HC>y^(_w^+V{~z5md(27v`2r2%ZPog;L+Sjk5-;)HQ=v6E%Knq3iKkgD))( zZbAy4P%O?>I>@NP+{V$pJYpt|;lW<%DsBeCSkXqPGey>t?AY4vLZ@@+r3G| zs5W_h3a6@e^3(5SQ!#%}BkN}6Ee!Up%q-GOQ>ElJpl*kB%eAiBQPVqngUZg3VTacL z{TuB&}xAO-FjG_w44t@ol1Oo_rg>}i`+^60}F-M z4(;0f%mGoUGCtLE#@5cSYW?LMPiO;-!kYDK)%J5Lu=l7Qeqc_jQG0qz(*XM7GAkBu z$e%q|Jv+SPj4x|f)fO%JwzB7B`7vJz=AGv%@ocwKmiX0qXcV0kuUez3hRmFw#-y&fkMNIr+WDii_9W?i z4E0u3U5N*!FZV6h*3|XrS=zw?q`VXO(9%=wQ&kKRpuOwn^E=Di#uIAqTIt8UlC<2j z$BbH#7`z^EeO(W&$M)LVx?Wo8Yjsm=>*{)!9zJJ@iYPs=sk=?JT3tV_^tpOdLd~jFW47)YX=rJa@fT zx~;utaD|hDvZ*h9yKOp|O|Mqr zD-Hid75<4D)X}Qa&SH~RdT{eK?W%rSX=W4URZ73Fy-+K?xM_)M!2@+o8>rO5rT1%Y z(@H-$`!-TkAFSM(v-GXn>9xJ&SD)5~OsK0HtCjvzqJEd3x1JpPXr+Hwwf)NG?dqbYH&d12 zobwm?!PDA7?MfUhy_gT{4Au8N26T4ilK(GVIbm;K{)5)b=XPkr_cV3)4y|APeodAA zzOG#@&SZ7h7JjXk;UKy6dm69MeNpQzfADqf8^s|VH$J1?T~o99uN^a=)&5$ldGQ_T ze_Q)?&CFdLqrRj4w2s66KG>-Z>6raJt-VgHXPws;mRGZS@JCvM-2I=L0xH$j+#s7@ z(nfJ6UG$Qc75^x|^^$h5?DZq<*POQeryt=Ud``~(vF7!&jLe8)FS46V-SDUA-W0=; zSN>RA)Offu)F|sg;ZP3UTep%U<>bVla8k(zU;gID+NeJJSm!#Lf1*`N^=9b0ablaX z6@^h0$fZBi9^%Lp$4>PqHpAFR6VK}y^>b}wP1&?asOFr}qZALi_^)!k7EOmX?a1C32pkm|LP7Twy zV%PG5$WGx$~FWv~n8he&V@FWTjT5dxjkHD{Wah@r=MQve@yB zH1blt-)qwp=lXWXgXGY zZ>GHW_u9gW=@_={>ALN?e!_^f$UCRgj*+`GqwIxlMxVM?WVn9H_$}R~#r08?rJiXd znPDfk?#S=&(yp&$x^6~(>gZ`4nwd*?tkT5^^4ovVTFQpuFe6Prc6EymOy$To)ielo z-Stu<&Ro;eV|n_U+GFL&H4QUOgD|wb%yUwC@NR8sy>B^|9oo#f#7F{N-nLs?KPdLC z#18a?#zq$PYbm5>VgQ{i?|hH5Dx3eP#bt}!12YI22E%t^Pd@TTE$nCescqB24pk1U z$WafRhh##?I=p)NRL9_wtRWw+gesmEQ>4x-(m_Re(K8S-qx0s9Vbax zHYRhx)9ESc{8HhfbL44&(os_qExBot!08 z^H`4=0$OUBeq=M*D}T|(mo49oecw&&Fk;YrSI+$lbHYk=GmBX-iS1jy7q`g!JTY26 z{uga##ZLpv)$@@tAt?;z)04$;Ir^{Kq|q5OfsCS5O}Ega_g1GI%xI`1-*U5VB99*> zyb7yM_gTE5q1(*xs71E@m8D@ht{u59>moJd(DUVvziJc9u5Vb8>6)Yr`RB`b|Eeu2 zJ5k004IDFdvLH4+x%3_Fkg~5Q79>cw!XOTOI_!(@Xh-%}o$DAz>^Ny)CQi~)h{H8< z_Pdya$Nf!n%6=Nzf#D}1v(wj|M4s_CZBBif(Ct~~`+-S8w%qYI?Gxp|@w_AoT-SFD zKd@ang zOe1wni`?aVT38NZ-SWef?spx})pgn9eXXg?q;e83N`1rEBgY7&uVO7L4g46Y$U^ZT z2XguQ+OV>nSOK%k4Q$4f+RIPBPiI+BzSIlTKo1Sac5M01``WB>YruG9wcLD*jtLmYHa$kzsmSW*CNTMlw~gG|KlA)(hj}T45-k`ETu* za%?8HrL)`vLyt30zhR`<6h=B;= z#0hm6glw%5x0ZFwHDM!8<|m2i_@3;miG$^|k{D37Y$z#h_B=BRC`K+ViSw8h5Tuw{ zY8p;v1c`j3Bn~TES(IgoZRm*^>9(KAS+(NCGDArNeK(9<+k?E^Q_6m2biSOHDg)<-#7~jI!^?Fv=`2IWa3UoKSwZ zhd846ux9?76NFhP~oV5v_NLM}c)Y+;fIre|lqWiY)MJ-Pb;@xzK6!dFullIuB< zZ)PoW_aS0{a^N(}$-Ttz{=UIjXQmT*Of42wOJVJX)$)7&#Xz~Lk2s(aVwQMW=)^%l zSC|&`QeMjmgZ+)f^86H{l`%o6rXoKZ<$w1UqvW*SVni9znpl~YWe{4=bu+oVx7buM zT~-{VCxD%?d>N*t&0?$?rUT@tK4NIuKqi3!Gf52=Xky7@`iP?&tjvLV=wTWsYItEW zxob>5)kmCIv6EEypd@je#F1x0jA^4TPwXp}mt!x4sX~$90a?sY(rXXYr}S^kn)4&* zR+x8tqr9VDoWG@s9u~TU;Pc(s1N!=Pd1l@UCBb%j}uGxb@*Tw!o?|Y zlio%|9WB!6Ee@)fDe^|df5*{dD_}5w-bYLx;%-=d_S$d_ zJstQkYzrD_#4x?Yl)tZtQxI2jsl;d5=&9{`a!G?&Twy>=+jsoHXUN0UX^{`rifLu! zfK-P|I~F35VR-U@MiEppKQm%l>}K?-YrQLHa}v1doHW5aVz=7TPe>L*SwCmHL)@k1wIfta=@ztK-jEQetl zT1tA#=nW&(o?O?T`gsmQhG{}IBF}gIutio575(M+`-`dN zByqDKNK+&iH%_BOmIsI#$Yl-!re}t!$rPu|QwNAyWuG|{SP&zGO=KKbZXX~PvGo1S z^xYt`+zi3em6d_wQ)NAbTo`T$2{froCO~{I5HYI);WlB|w9Q87av1Jwn#Fke%OT>lGLlS!_-Q$gnOTWp$m53! zM50KM)4)?gdgLHr<}?R6*@iqu@LC9qA4zMN7+*oKj7*lC7x`J_#mu~&GZ9Lz93uM2 zZNo%;*>w>T;xyG6Xc$=}9~&l&GMp?l;gTt0iy1?}{ya>~DL9YrS$-+;5u^J2(huzF=Ir93@#tXFi$Y& z%Vc|hX3_{vjO=>Uhl83<4Es0fD94xOkx<=G33-ri7AFJDFm4$sPAUhMnK9Lv+*T6V zUMAlf34bIhG&?q!tPvG4kU1uGt&$2YMC90n zBp|O*7PI_7=db0nDT=r;SYy6E9qWW!iQr85ZUUPed{-@S((aP zMv1Xy58*#UibDoKR7bGbIZ9ZALL}ixhYy%!${KFLS_BHDbz6}Fzg8;_l#51-%0L$~ z#p-8;2FP{>{oH!;vB-k;Z)ua|y`zOu$!sGFp#By@7-FE`BBvfE4w4NAii!2QWdtaR zO!dSLcM!2Tu|s4@4NxV4XA~32nom5!|5K~!1C59=PAgl(PMP{a$4+0Z$2MID1vX36d zSw87(gwBs2I#2g|n=hi3_{9{O~-*n)J2FV&rk^Y(S23 zKAS((v~U4`&oXkjo@#vId~$88La2VrEv&eO)kJmTA0Fp2R+c06xsdw`Bh_)x6mfB} z_)^FAsp70!KvD-Rcy&(-siZL^uW?$&XW2@U%Z%TP} z!42{YJad9N@rsuVaDaTC@ibDbTe%`m3pG3i#)Y>ov}SADIAUJK=4sRkTcmI8>MeC< zS<1P!W)`Hpz!#%x z0G!?JivFjF@yC+3Z=$uTZbfrL4{*sCM?`&WbEjJ#b*I#|%+t z?^Ktg>iL;;QBI@SsVl=>+Q5Ft;;e$fz>wFc%hm#%Wb3tD(OZn4Isig)?z!>GwspKJ z2kN2DkWd|3P^T7fs5vmxXSw3F2+Pt!hkSmf7+K;d8d(`2`ZuWqanvEvaQO}E@JHo^ z6rP}cYRxxPWcg4rprW?@=3`VH?DMhF&ldeloXQ{%86gfDpw3IEDpjp*Yde9D*8)+S zB?h_AQk|SAaMlj1nvvyQ4rxK1YqN5FVLp{t^yd~D3~g3B+4F+rnLWkuOP5s} zq0Xh)Q%I{`P)F``8xwW318G}%XU+07=2Z*%to{?R3))ntt!<%8PLQWHi-QhO-f-0J zLME?j787gU=qvxNS&S$irB=`6e14%9iMG%u$A1*#od{Mq}xY$*kAzyA03u}5d%c)0*^J)M{Za+dS z03iAP5#lrL^K#bG1(O`W2*fD|^w)6FIdRl}fxS~>C^z;@uMJSL5G3U7UGwFUd<0?Y zh233O)w!(ZHQiEBn-Qv%fO)ndUf-`3D`w&TuEa_fD2$O!hl_rb)k%Jx6ya`_zhZ{h zsd1{pi0{qIT+RD;*0T+5>ycv6NzW0*uZ-N(pnhK^HVPZ|E3)tdHR*Dit@b5Ut*C|X zcU3`26@{PiOtfLeO1Q|nf>n~Q`J%CSjBJ=I7Sg-PTrt16xZ}~eqNdpAnn#MYN=hhR z`bhEZj%SV%(~BcIUz5lmE$B3^q*iMLb2U7~dvxzuA zbh>=t7<9tk^F)sZD?vYSJY`eFgc2sh@|%O?%z2{U5ENZIb1~1Q$~$5i!_^xW;x*@t z*qf+-#R?EBbu=XhYm;M++1osBe*Tjq;#AC}*D%ok%D_LKX}gJ#ItMT{&bZxOv4;vlqf1|dL(zL%Q8_*gAKi7cq#R(ET zL^RUUnHGDi)Td&GfsLS?MOYq8%pJ>Ase|OU`2iMC6w%oZGoOjz|td#FB5{H*f%zBvr4GX&)N^K+;E*2}xA?js{<3ZW7P(2d) z++xw*fC85xtJ@Z;9j=t-1i6fF(PFzcZgVu*0C=z7!Jt2gVG(2dwif&?Fq zuj|y)cV__5$e&z->Z5FLF1C2jK}$$oW2Q7(F<-o~SoD^qlf)4fx(G8^YU07cY-Fah zx+S=X1PvahZaUdV9kz5Y&YI7wW?wp49Ns|3g_iQk;QO)dG@IRd^8$6##p9COk#$T| zR^l9*S8Q(wO_1|W6(bu^pl$qRxR4_f8OC9^$QKq;2M{Y97d~DumMH!`V) z&B%82Pjp)*aiW$<1fBPAbh{a5S2sEJ{OT+wiv#3q31)rVfY1uVPjO0NUvN&VlIn*2 zN2j$#zSoL$vn3V%%kaMl2Tg2Zip@~x<%20L#)rz94=qd((4+vrT_&z%(d}l zI#^TF=pNa=41<1gnOHapTOp$vV6TEkLzcScfFC#kRudmny5m8Sd=LWXEfbrV-Ij$d z+b2uBhM1ZTs&2PIa$y}Q9ZzXT4E2Z1C zYQ(yu7QTta)LJ%6E{w%c`K#rkUju9%FBM~B;t$1YynMdgITZU#(+Uh-u$jm-fCoe| zyhIP=DJ#TD6%W@e)WK!_;312G)8(2-tZqnfxZ|1hEF5L9X!DFu$hI~ybA)A%nRCLJ zPGYcpf7gP%^K>zd*ZwW$WdH3m}vGTk|%| zlUI)yj@-NwiD`ce*IC^<4F<8VvG43DQjf&IZL5S<+26RdQ8u?BDC}=XJEvVJT(zOxGQu)k&S+|HZltmdY2W_C9Xp0`kjcY#B^f3>JTcz;`9*9nwgg3D)`JHKN?OzlH5W4yV{7F*Q;u zj#Cpy30`(1aW2~DE=vtMswgr{3fRfT``iubMJ%~cDWFJJWPfVkyWpb?{5jZ=O>C*g zCHve}a335~RtR_j>{4)P_q+XY6ksM~PMb_p03(+bzfz-!dy~B5Y@u~DuNS3aKiy2d zD1_V~@1}^Amw!~E1o;QAi;=iU4nQ-mC_dROCrM6^Nc}8vLO;ZCC?93SEseGqU&J?X8 zGG*%~aRtP~pd)ZLdYH4_FuPjbaj`h24ARH~0OTPn0~HFdk+ZH8SJVT9g0v!3!BIim z$UmH`um-wrx_X$vr*H&#*U8=IBK;tWncyGb#1Kz<^!lQly+~Xjr(P^XL*UyH)Y`W3 zw_vIMbSHhNhYP}}@!E$e{^wYRpA?rjkO{J)Zo(e%O`Gnvy*X)(NsM(LX9;D%(5O=J z!74Gjf3vu}(X%XyN3xC$Gr^>MWASozca*&HGEtW2wu`y=pjj2V6XO)aj90WUQ=LxP<;l}j!V^C~)s9E3dj7|9yw*X{D8 z3&b%Ev*4xf-GISaNCu$yDi?_@ z6;^}}k_4p?!9Py#>fVPjC>|hAka?y%E}FZGORB9}dNDqVI17+in2agj0?<vR&iM#1ORv^ly_H9m|@20TlgC{6Au&Xx~d%XZfdp8^gNLcLh?Dar||A%4@B=6pNEaEjns$K2`CEZ80PR8zV}4r^x@3|)AeUaskZ-;UbIpRQL~UadGHM>) z5|jitvaJV;C#k{)sw8HGdNRVe^-y7BB%_Dqj;n-K32-Zcrbv0x44f!_Sk_%FPOfB@ zgT90=9pK2LX^+S?SBupZgf0(fB7&_8uq^N&m4CQeT#Mk0*WN(S@K|nmsUDNZd{&$+ z7hEO|sNg?#vji0YNe>ntJ+AJ>jYy>U>Cxq3B|a#Cj^bkZ=BFWmEQ$Vd=B1)i0fM8< z4=7fQFQUVjRfFd?GIw1QK>}qAl#Y{q1MO*!21{vwv6HxZh7mzGo+>KQXqzp= zSBPPaS!zL|Oa-Ci6nFQm6Ea9P9o305O6sFKNwf26DYdix#AOh3zDyF6Kh8)TkYNl06+q3LP&&M z&_d(+;wgI+zPiDrRlQ~;XqzC9z(Zgr2ws3pHQxxPQY7_88l51US8pa;Ga3zq4-8SM2UT%DS{Qf4}bUi}jozvhp0|`>eh7+Q5BF VUU-)>msp_tz`0?;24Q3x{}(tt2iO1r diff --git a/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.wasm b/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.wasm index f7b82c511742863979a9decad5fdfe67d11eeb07..8de35a7a583bf1b788effc292c06e01376eb436d 100755 GIT binary patch delta 55649 zcmdqKd3+Q_^FKa4(=(gRW|PeUo%dH}CyJL|OAD`f+ARz%r;OZG}x6UaQxj5)*x*D&l(XRTjE|;cg@}I8j zZXNk3bT2rgrA0pVX0_r8DE_D3T#(482EJmRqKTDb$|_1KONu8bUo&4xDWXN=N+uK! zziC|A$Xk>XET*WueBABB(YlI~(g`Iam2a81cyjT`iIq;C?^*QCC8gn|PO+HV0FNqy zIEIfbn^;<@{J6LN>Fh36!;Z7h*yrpEww=vjciw)- z-E0qggY9N}*~{!r_AYye9cGcwJe2rJRX_b>SBDe#S1Z0IipPI;t{qwFMCLqbV;0Z0 zBlBlEkvUaG-ieX7d)6+h~M{8TP!F~$wzEi%8ON6+KdE5XSJMy(p9|GLXGWN@Mzo2 zs6DHy6@P2rb!f((sy%HV?8FW(IR12MRYm!a2BPa8&#ii3(zP7X5APOLfhpIz*ukm~ z?_TX-(&t{M%6yHgmfkl%0@0$SFNA*AJx+1!w`l3@3trpO3h?o#8!xEYcJ0H92)G!1 zUns-h#q2^3#fxhSulr)cb&8^03)aqYE%@mv|3y5ElyEKKe?z8jP5(Z7Z6gL%&3OJ$ zbf|S#RPA_WDhq+N`TqYG8&stqxYJ-SEx7Bg6!z4DC-D17)hlleWvp^R+&hig#04GS zxdUpo;hndkOI5SqHz;`ENFN5{_0fmTpy^XS?7LvlN3jxaVywIygK2VAe1|^GgGXKL zG?Y=i8O1hPLC@eDUbZ{R0$Pe)$*hRg1RJNYCz<;GF7bLQ%T_JtJF>5dECFJ5U*;BH^kk=i@GoMi z;)h;rsugb{*7RZZ#q*c5%fk?nqET-)pbp}>-mDK0px0VtU%~oaoERs9SFjFN4iT0( zEG!-=I`?H)Sa~E@L#@PA@mfdb2{yly9VDLDEoOc(brg#fr-rczm^Gd4qM~57X)x|?_8KJvXdTpN z!_K43M|0TkR3pNHqVav~PQ;}Mw>-f51Y6wC`cQcXvoI`vP4L8ntS6O~_5JH{<_->j zh#e>4q6$0fV38-lr6e&pK8kxx)sGoz#dMBH&RD;dAkNli62lj>f#3{vW`$Y<>LbEy z5~#@)T(E>~aYN<%KgasEVxNd5M_4YK9Ncq+J;Q(=`w@FTn$-yZH|!D$zGaC*e8aMw z_}kyGR_s#|`yERX>EAl|-VW;7Z&{{QI!PS+7QH94wqkdSnBP$1hVN=iuli1wKKLEf zK_)j4(I;6ihf>)|*1##Y>?CXL#J@i&sb+kS#?2GczppL5<9oIXxn`e2W}EYOPO;nA zyxMgDU5Vxo21og7sF)7iZYBATjqxR>^=p z|C7vL@N;dkJAY=TL*nJ1S-#VP^FLz%e=4r{rM6Ko{K7^975^*ij$p7ANLjx0Yi+^b zes!Auv_tE_Z_LyAS5d9_8~6s9T8>(+XX%CB8>2>gOwC`dkM;jG@rJ0IY7=A6vdIw6 zy=T!jTiW~2vi69p=On7B6`-3Mh+EFF7EZ2p=fJ+*eR03Dkq$=>{_Zf@Ky3S+?PR}- z8UJE!+t(12^?ie)GM&mFUkpqNFs6gqNSG$TWH^{##i@U>yz7oqLNpRmorDm%l)qq- z|AI+!Frg|FLl`mP57v}D9(?i-)|PdiXIE4!%Cx8~C+}YqQ)^peYgUupZ&w z!SeI4&-293=V6fNiRKqrDuOF6K*Q#VsTXA0K^Z)fqW+lu3WFUr&sM7<5Wdn}eVDNwqHn&s z2$Vn1S5J}Idb_0x-!gc%r8=w&(1S|VvzSAIeP2}@k!8Gft6D(e)7#XZ+;wmd)#nq3 zcdGS;zEjp%p-=ysa2H$*J4WgKs^{zV1J9i<(bX1YP>+9nC zcTvG7;)eIsYWB8Be_u^SP<9N+x5cqzY7+!Yn3hLWF1)XLT@Z-(Q}r_V)c?=S0-2M7 zeQQ+iW>dw$Z`2kDrhlV$VN-)!zfoUg2*-Y>o>hazr_|px_4K{s#vj#=>OD`0M}GwQ zPsH}+TE2I(;z?CZmZK*6XDk)TKdD)4nz-aAwI#K#{3le=^mp|&l~o46`$O&Y&zLeV zsAE}h?oaB|276Du_MV#c$ZDgx2WRUw4gAwrHO2} zXqTa7us6hz3~f3!@JNPsz30g)RO0e2VE(P6fh5u#6$pa<#>*y+(ODj5Rf1 zn#si*?X>Ged?T%X%#3HNl}zr>$c)0+^M5EhG|~$Do_nTydl1z@l&ZYzSy`p#U(Ci* zJv!=fhu72Hs-{DG)P!oP8S0_Ts7n|78fhb_oe#{?8i>}Nv;;9ETU*$^c5P)w`ItxT zZt_B};tvTTGae`dD3c@Ej5mG5ko;6Iv$6J;i{%7=YOXETSe3ZHrS{{XC^X)$qtCcoR4Qzf^iXzG%DMhi%5=E4hOun+?*;?sGL0%pR$C5sR zeeQ&W)uPl3mo|bLyIw~DW*X!Mzc*#T-8P^6dTjEHll4iZ4k6)Zab+x ztJ-Pn3#;c+1`>Wf9aw87NnCwplRps(+|T)T-m!}UL@tTdJv4cEQ0 zLvyw2y2i5ZaOMAYxFX;EOk95jHWhb^&VA${y{?b;r~3L#9V#!s|*(!11DyX;@Z(#E3tW`7MJ$nT2S}U zr1OOnGu748ret~j@4XQGW~8<iIzp-$0gdgv5!9=HudBv&paP|f2?+;tRQ=wRsrEH9;b1pu6RDUbiCG8WABTj z<=R5^{*B_oty(=X=T^;Zvc;NBmoRT@wYz`8Ml_S=)&ZD6LV*9VjpER)S_^f7EO`wm z1cz2=zpCvQzkvKJ=|_5!s&6+Nki}E{K9I=t)*`c_O|Ka-B`ao_x1N8~3&DFPY6n>C zjstdWX2ejh;s5-AD4L{QRv*(-t}^2V**L3@a+NtRh!-bm$#I&A*&N~XiSWBC#)h9$%RwAcivSJ42rReZ^ z>2fg;6=;d*IbCa{o<3mpVfVYV_*lP^Y0%jBpH;^CeUQ31zJkY#P1Cho!!s^R zI73#!9P5L!qRq-!%x^!6pYPI!vDu>k4DCEyF8bZAWwWND@@{P{TP?C@YTMYB;1@Hs zdMxGTgVp5!WYLV=T$#iCtf#kE)a4%k2M0yMENwC|3D4zJ?0cjT4WI(lugrh)1u<{7 zmL1lX;CHjNd}k!Yi~PCT4KblPXDFI~-;3h$xmroye4+$bgP64@eK*YyF3b=9_g}QN zCo{r-^u=I{d$m0*N~)pdBkW#uzm}1)X%;OkXtJ=DG`pzjz*q)ypXhqORuK1|l!tW1 z;9ZyzzW2oR`?a?0P;le@S{vs3aqKdXCt z7+Y`-_AHZL{cy;nHx+*dVC1h^p!G{Va<6?n5aDOO#_(BI&an|k=7{YJv?gPgyiNj< z#7-kkP8xo-oq8FlTdOcxCC%1y0Z5|vPp1P3tUdgvAF#YN*hnuS^u6p465`?a=@GsUHvAw~Y7i-H^zJ-~pc&kjiQH+0FdoR@* zcM)(SFp6}`;gF7{|M7$3#wA*3^|u4T$Cqdg7&{}Xp3qjP+g1m!U#c;7gWbE_U#E91 zzb~wJLteCtde>!5*a*Tc*&Lf$tC!{4WAl@i)k$53)y*EUXqo0$SG*)XT&7Ked|gOvS%%lbEtxb5^HpG9{*{$2W=S=fbfgS7^P|hpWVkE3|ZVQI$Bj zLK`LSc}^=N-YMIysTqSF#)-tF`c=7_*ttOrSb<5aV5K&Yc!Gt?3BIsW zYaPjE1&^)Q_IiT1R%<(%@%mOW3*xo&T9&weht@v0Vw*OBsZYY;t=6s<3wCJzP(Jwi z4or<`3@@LtUkbMuXZy5v&$cLlaHaRC6^SEk4m`^u9`K zA4H*!Sgpck!m{5of#eUva?6DvgR@~PEE9(>Xx~sw6Fv`@+R*YY_IaB z8e1bq>ijVlC(i49yPbKuu@>8s{=+ai5_A7%sQ;yEK2{>`Z#V1uj|@`IZz+| zskLTeyo-NAG~qnOiyI^O2=%=eM0EsD$2#L!1V78x2amXUOs(brBa+_?M{cBtcSqLX zau0u0CU*Do%1AJ!`U}Q3Qes3|3U4dwC-F-}K{S8+Z#R)Xf_xQzt67W z^0;;>iw}N&Tx*7LAM|~$eWtRf#7|$sJy|9iex(gXFy$+(A)XRDzS24&`131}TPE6k zjUrEpqOY~CpH^E!AcZizFzRk=`@nQo_$uwyn&6!uQ&*HOP zgD5+EcUEx3Vm^$q{bI|b{6_58CO^i%fS4{k#@|Qq{^Pt=!a=Z`qaIdiD2GIlx`bym zu!nh;%O2=R%^}-x)e^26!N>05`)Lcfcs3uD3?kT5jmVNzXqZ~Y!0^|Iw`cQH!NE`S z`*iAOOgm95I*e!TXJXML{2mG(nZ!FV#zpMy{GhmU3cuRws$t^KDcJPg7j#X9gs@$F z*EEiU$G3!QI)5HbTR)xm1|NS+=ZmoCy5KI}!EV!OX18gjO5J+wE}j94cHu5wj|D}& z8N6}u!b-l~0LATV_)P{oBpPkxEtoC_ZRFPiTD_4^5=U?6<;cV0_6bx+Qm|@Ru5--2TGsVBQ^B7WymY?$$B5DtBCZ=!Zxm2k70GHG0r<*Z1F_$<~ z&6Cvq+Z?>;{3;*ij_Hv$XN9-386#G{idn&`D_6vC<+19Y+eG87ynAoj=%PK$*<0%D z_s-i=XTSHpE%uJ%d}j~SO?$p>%lkr5&BT-Yc_Xpy1b2({oxHzjx{XJwRj&oxZ{t&B zJJF(i_2?_&tJnA?p=!6kQm5M2U#U~=?pOX%wW(rGHJ_m#!U>Nh7SU}xpRDfPB3{|f zGf0|u{Q%z1Z^uT)#nOxt6+3vl|1LkZVklRSZ=nuu|Cf3rMe|)eQJpT6>x&z9fl=@_ zZ5JP@9)4APzKi?++e|&QoA(LlqpN!NX3=*KzqB`YzN8ZTPkX~dO5m}S00ER>(Ftyf zvwOI7Ec?99%aT^VQmtf0`V%tUFjF4dTkjUt#^ZndHSx~tym8}aUX{tsGu?z;yM-V! zAn?@ute4jx)q}7iV=vG3>;);grQ+Kp2JPi5S&aB&FHdAMMZJAI2T<32yg#V{B;HhP z-p8YBlQmlyD&r{vBzSlkex3-Cv`}tCoc<4LcUVQ&H_fSshYmNVw_sfj&mOL&s(&!3eJn zjLl3oeL@_>Y~vFL4)P>-oL}iR7Q41_;`@Us1wZ}4lfK9CbjNF1*)v?~$YP4Nx-IqIp8vXcBo+s=PFCFIB1^(BT&Du8Dgbi9qNh9wUzc7T>4*Ws} zIcfe)wB?ZlIcA~zpuWDR8FU9*EHUt6p*)oMD)X<{Cd6BOXdpIIN0%k_P%_gs95}&+ z&WwR-L+cB@$V=-OT1xkDwWm@_W}H<8+UD{#Ct8$BmC_Q(OT)$YKN-WxUMMHVu1}6# zY7EigCSY;$9iAwbz0K<-_)Ly7YdXWD0FC#VX`_HY?3crHfo?U>n$5d~w?r^q<7 zftl#f8JFb~aqnRcj}x=r8ZWW+%VY3TpB zEY;Nedwtm1g<~}iJpqM4Q#g#(@Ln9k_Bzx=Nq4JG^M=}jS%I^~y zpYXP^K8yx17(wl~(8Ztd=8(Q2dxxl-5DV765QEisv}^1WRiE%VhUC>J{73n)Xn9tO zy>Mxe4vSSs;ZEiRwNJ^t^@%RWcz0;Z)MI>p3m>*ExM`$h@%~=2|Bw!>DFhm4>KG7F zI^=0$1iF3c$ruuyYj}!I$v$yi4Ht$l6BpLv#Mv6Yj;5s-j`NJxe^FPOCBUbP)HfRH z8x?OK(+0=P!7@ z21}(w;73Ejx7^y5woZ)xf@eiNU?uvb6dw74clWK4_4w1_O}IV&rCY?8U+_x?M?xXO zjE1|e(Qwx_8q&0rHN=1;6B%i_Hwda}uEf0tITMK6zU0@0yKiygw=cQZb~u`fmS17f z5+`PV#cz#>E%aia-;9-ZtS{|~W+jcyf-e$syJKyZY_~hsX32KDbqpkM5?jYuCz*i7 zEno9=Gu9e4_WYA6^ABoP%w)0ZYn}^c-uarhE`W)rhRA8mWfk;&fD0gwGm#lZ zi#AAG^{u9}EAhv-=!~)x{JMYZE+OI8Z+HVE#*7-087aD*;00paH~g`1pK4Ic7&9`3 zh@03Qwj8Rk4V-v0YD!i-jyO>5OJvmi%h!oB-}2vy=u}^oIP)EE)zso$#eD-g;K4T{ zJ{qba_I>MFlov~3>0#9Fw9*c`SQE`%;@*=yRh{>$Sb36;@&fSZUCAr9d b9N1_>CaDdg0rt^Pl2+Zt-1XoZC-3^^L+Rd;I~tv*FO{3HKBi-XM>_Y>-t+7&0Ne&U7y?X}AE?|4-3)}Q$t zMi$~uw$=a9d<%1*#9{@aJz^(Y*^DK zILhl`&X~^&D_YB-So0g4H+f}=wj!|4i#5PpaqKr-NeJyXW{S**c+!II9n5t97uB}n zXQ{LeiG5R3ozX+N${X!JR4wj0%bU@5LAkCc2=h8UPP}*4+KK4H_1s|0Ioc4%=3&O~ zJUMdyz17z7)gE!_@4Q{YQHQh{JtZ?5J{~F)^M2=r(TA**B`mW(ZF|=Ij&-s6eswVE zPkz1JB9Qf+KF{OC+CI8lJa?YAq3(Ck@&u*c1wIQaz9koUC$>8H!39iL*!jt9qSq5{ zrgv1os}5eq^wW%H!FHP7#k11k@5o#+RnwbdGjNrr_YbvC)@Pz!7|21iuc1w^rC6rx zv6QV!hs{RfQC)8$`7~U5ccOo}OP9AMZgc4)3I5on5Am$n4$;Q=T>c-cMVAQOY#izU ze@HY_$gA++>Jl7AZEU8`e`1T65ux{BuLO5T==D7C5k8LBH))<{$v?&BqhiL3>hsvq zgiUh9QO_464YfjBP}X5Jgws9PI#K^wAC{x8WF~GD*seWPDJywwR#MoclT>%oNvb>P zVEsmeCz&Q4#edc!lVk!8-j%MW^FZASXwIPuq<3zcKF2$^XEnz=w`Vobq6(yUu8`p& z9Zw=R9Tl2NF7AOy%Y@o3t3*{`RgJTS>#?W~rZ?1|Rdb|+6^j)_=rWoE$opsYarIDM zMibv=>*UzD8tYeh!xoVkB{w$KQ^GC=hA%*CGs5#qpc`z~g*R@-O0v~rZDZV`K&PB& ztaqS^0-aMJmi5zJ;@T#99L*8qo9HcQj(DPpeh3tpe2Z^CUXQ7=!wr#IS$ zUW*NvrF~Dzk)?eR(~+fp5i>SSmf3Qp^Ld^=k#u%gQ~h5W?gkCX*Ks#WOw8Bmb+h14 z`8t*%djxB#7vic~uad`V^te{5c^pC*+%b+;EJ|-PqpTO;KOb8Q7R4=e`~K#qn1wUpnF){-Un_b=u1_YYNVB`Yt~TMBG?knC1Y=jVOQ$y!UW7n`b)3W=b}Y9{q+89mYCm1&v!@o zVxsE9S6VOD_S2ig5=$z=+h1>@Zj>Zji81~4B=xABvaY{=kblCWu(-KWPgIY-XjQv! zfc}8So)tp}>y7+-XWNnvMM4)TR?f7OLRTL`J49i3AjHb@PJVU;X;U#H9Mydl@=!^G5Kx_89k9o2NONP!f1RxV9? z(#`z4q^rDG4OctUM(FNVW*%;Dfr7k|bt3t_6 z7U>VG>WO_~`X~%=AbuOA|4HX50w?QDMA|L-BPdjLi{7)1=%%xPisJ@tnm5o;@z=0h zvRI?A%V-#uA-15z%zt5rSenKgs|W)byo*rNd4l@E4w0CSVDhrz*c`^@ms~|z7qD}c&(_#C+^p*X-&!DD z7{`nxuLfJUN^+GSot%ksqv-cF@_>OkJ78WjO5B*un}{)){3>ectC@UKi?CThx>z2p zj51X;Lv9?!`Sr@oC^I&bWBY>pR*Rx6><1x-h8zSh&*BF{QahH74f5p;dH1kWXw5XH zWNCB?&2b9-M??Ov2r7m60PQ1~Ccfo`WxiM$c@c%}Dxcp1=H|nw1$qaj1QoKHS|M$Ke++=`Uzt7-`rkT}238 z?c}q!Dj7M+-TknL&_7eG&BQ5`qp>J|xj4`io-Bxb(v;^>h{BySp!rlMWY-?cduQ9z zruB!U)k-XEh65YiB7CWtH42~`dBWG6A45Yt`rUQW&Uyai4zq}US0WBL3@(x>1tOciMpma2sHzOR7y zQ14wU4i)eYu;xK`OMX9NN5!I6{PK%bL9$ABXlSbc`>_-Q%H-V(YMc3XqPiByjGvWM=PUN10wx)QBgG`E7U+iS4I0 zeEpCxyMb$N-mtcMrCXD$gzQE%wKbY(dS&e)yWzzqBEA1&+l?qQ+N!8tJN~^oZ)cFV z#|;uzExzsmq0ieXGCNwww1Ye13<{hCMJK+RvDZXl7k=HfwRR=k=S=on*A2r`-?fLh zuLT^?zdtGo%YAZ|IM)Sdt*HOtRa#RL0Iqcxh}oC$#&zy?i&rk;H^u!#%Si0zYIJsu z{__1CY~Gb$rLkXv)BXHFB;NVz+n47x{gjzeW@LYC-KLwFSHeEKvzWhLf3Fec!DYsI z)wDm$q*pvW_*7p$SWS`0`Zlr#IYLJ>i-W%Ye6H%FSH1ljy<3UfN&XLaiB$t}wv;RW z9LTS|DDjhBqSGLrCJtPUixBq=!qul-vF<8<`$gHlli7wL@sUCN`il~O-zC^!-XDnr z2mhtyEWAK47*`~6Mcb?S%@>uNzgxU;HNTSO2G3oMPG)mO%VGRgbei3-O>w<8eS$6}AwzT8<2hmAr4fXu4J<;l)PRX&hXL&s+?2zBut{5c;1Y+8Hmf?H z+!vR)L!CE#87Pa1%fL_(s}G@#?bPdK)1%Pz z5r~0wL3?!+D9>>@1BxVfHb4Uf{YnGIzT!TU+GWX##Dp6@(n>nXa%h1u3@z#)oZR_O zsIa7U3hgJ^f(EWkQcEEv*>zH1(fe{nC8o@PY_Az%4ON==B_~up>6|Q!A7bQfW_Jkf z3{eM=o{&UgBS4el8qRmnm^qxU#aguO2;NV9evi0k1n-|cr*4gQvBh;O z44xaoe^y8Cy$==Qzq)K3A?#n6J3-i5=4`rW39Dg#snd`Uw|Fmjz$o1NJ0$uS;~4ws zDBd7hSFmO2h%G>3^V=`xi0EP**2%ndF>G2fF1X?z;nT(ZeVSqKxEUTARzW9k=ItGd zok#OzWF0b^=X?IZ6mChsM$8}0yTsx}2~JKPeqorrcu(T!Xq*Zj67|RMAJ{Qrl<>Rh z*1hag+`3;-f-{`MVrvQaKRc%x&{Ip=gacr0OwQv2D*NFZ;gI$(lU$|X~HlV3Se$r7!&X@ z;f^&wuAfk`UatRz-h-GQ_Jux_y(+4{&>u*f4u=I>dt|2P$Y=y&Fflj}@Z(*EFZBk- zeBgbPgUcr9yCTHYFZJwHdTFMeiZ2Xc(Q0L_#tcEm+4mi7@YECUe5rS0Cq?vEdNN(k z&HG9(G^?za>cGDAE`!d^eVVMBE3a$_KKPZ6FN0Vd;h@-NXc?w^;^-V!fvEqCEo(!ucr-@Zdwu|XP0GhId!h@pEDLvViuDInC_TJD}$4;Sd*vVjr(>mTB z*%cgcMmGq)=109b>y$@J3wSZibYY6}cwisp#Vxwl;X6W|xXdm0C*`6JE)H4xWo|#N zF>m`xm$#dLN65AX+y1O4F}79o|3!b2#fu+)(XU~NmZ) zeuVkan=^mYtDN49s@t1Uwj^HJAg(#9%ZuFE=ky^e-JPELFYG~X4Q~6FK2`PARwCW~ zJ)+NfeE>Q0Pn^dl9hCIodHuG!etf?RdLwo;IN^fchXv2wqGxFA$6!*KjxYPn3f@zW zzP;oGY^;3A=%0Pt%*reoDDX$TyxDN^1nJIW2}kDC)NtRxUo$WG9yfA%yG__$#nfs| z88%?ud00s)&Kkf5td!I9f^FQ!QJzXGgV5SRR^qZKc|N^CG>jN-5x_4HfDX7C zcoX3aG>8Oq8Zb5F8t_5+9k>r*5|qp5Qw)S&gv3YxMppZ(To%22;Hh1O2)(uGBFbkZ z1#rJaRyGJBRk9d`>0eSqi@A@{NMg#7{$%7E0GI>>{*?3Rt%e9M#$S?P3GvrBpVA-c zC3rweNdlgF-Npx$TkVAJ<9$lA+5}}4;(hVF419+${0hYL@XQ0ATJKb_67g1e3W2{o z41W-Ds`yPX5}yBEiSJe0;+Mf0dO&#=A&GgN-SY1Bd`c4F5eP}VyV30C2%VPS)WD}) zDL#uenk1WvKBZ$=)@0D5tlb-khH*w-z!9P>0{lIA!iD%7%9F5q*!TfSR@LPQ!>ir_ zm^85lA<2m7P#Yck&d|vQ@vxy2P%f^(X~V=6t75oHlA+vGODh~a^*B{<4*3cYI{1M$ zei!g0+>;1N#hmo3?DRa~`(Ox$60Wfm9FCm=4g(HjDwe@lA}@_6l2lDb-LdAtO(PT~ z8tD$bi_7^k(KD!DsiAc>LZ@r00aNcfc&B#{Qvu+YAq>y&Fy_v(7`qI4h_O?En<8|^ z&9y+*qw>J_LwFuffCiX@xPW*#OjKyJJL&8q_yp33Q78SIi{NhohnN5EBKQL`fn)|8 z0!I)JXW(VP;prOzCx+z@A|77BlYq%qI3mATB9Fj=kXgC|VG6?Xh5^g|z70UdQ;h@? ztz$PG*y+pDNY6m}3&>2`?!YerCOs*KsiN{|*3{u1J(?IW^nT|h_`I=WL}!w$oaZmfY#q+#sG171QB^43WRepJs$ zP@_lZUp=9?VnTjJ*-gb2mE!pn<7&|_(Qx5?o*{`wZ){R6OEg9WzFLTHyhaWx8C_ab zIkBSHRQ#t2lVIjdC@&saa&t-XDD$S<&6_8djzrqbN01hiYnDtXZBl8DD#nLgi$~$m zh|qC8k*Bhxtkf*3G)qcH6;DQi<+1?so26x81*!=>3>-#=v3PHi(LeFAMO4GMlADUg z;fu2Qw-t|UQ87XBuM%gHjD~EtsF!SHv(H86WFtABzPsg#=~rfsEE`p9PAHbOEB99@Z0TQQP2XgTPBoe(-TfFbV^Kx{ zhxD??M0I;32Ve7=l4{IBpr;vK0>3?u%yA@ZDaT1Am1E43Q6$H?OOO&}%iXT}5s4dI zQB*Rnq;&LUMU_SP7!l#TSCzrR^nQBhXW z303S`BC6Aj1iTydUYe21eij$fj70h_R#Ljr(Wu6@l*beWU5xsoG~I}brF|+7tfT$U ze_Gs^ZX_klSPHZ*i7Nit1WZ@O_H<*CIGk>{MTZPyhHv&VpbbYw<}DNZGmM;!HH57{ zVO+_`Vq1M6wTj9Kq)v)|w}>?*bB#^oaNc82Bd@1N8F-&$*R`Bb(H82;iIq0CN|>2O zlVR^rVw`!?#7eVrj6)tusrbL7l=zUoRTNDc?&#cEN*Yk7YxB!1%Em&l6Y|T;#@$jh zs;p8xlxeii+WQQ$Mvg4Ity6h%MM)X-;%&mXB&MQF@qZ}30w3|`2h8JqCf%hW+>0d zva)eyH$w$J6whTDE%5~}@gYLI%;;%oG{FW;>xM>t_OHu9p#MK;XsTGy(5R15_F}G2i|G?9A~x5kuWoulh~p?&n+aboIhtqWrmuJji3#>dHZeR#7u&X0 z@mIejO-lA>l;_I-)SE?3jRJGc8f2C1mrg+IH-^C5iopKXHDX;;uzzR`&P9zR^|LkN ztEPt8nT}wsQsat|?e4V>h#5oi-%DUTi9|MWc;%Ri;t6BQ#zB>rtrh-eMz;WcvU7mgkmZ9FKSV@S6V1~x7FjNT(D-9!>QvHKV6Hl>aN5m)BUvBWcOoPX=O#x$V#gp z>6Kbf9F?so9yzY4Wc=`o;+u*p!QS$9)#5@kqe;f=l%*b7^5W96iKEAuH&+xF(>yl{ zqwJG)qOiG>5J%{RfJWCN6Da#C3XcgF~jYtQ3YP1Wv9*C7VOws1l5*?F4G$iji^G2Jv7M zHhsQ^$^3(Fe9mD$k zMiEnB49xz8vj3B=Nfi$jU`X!@id6+hiv}lyDCfltBWD8Zv-SRSL2;@8=Q^u4iN-CB z#wxzI(XXYEPG8t4ZE4gu&uk*z@M-!^rIVp{XG7p^BVoQSY!c75G}@@EUlAX*G?Ke+ zf5pi?j>ZvPKer0sb`x?Rss+ijc|Qaem7{C%4s5GdMl*W*azra5Ref}`m`356&047NJXKhro(rbQZk};ql#6H0mOgK`&5v;s{?+ zTwYdz`NW!e75T2EC$XYfjw$l#tl7H6@*%LDj`wFLwl*@%Y)7t`UK1-On&XQ{l{ihR-fr2Qn(fl=sPlJ7v)ggs4k9|CctWRf42r6yMc=&oSf-lmg#%(9%DQlkBZwB|006;NUSz6KT*8je=uP1 z{KP`CVFU7wc=gn7QJinIOnGzer?2si$8T-?oP@ zGJmhw-Wj8yYOgri*~n54?G?T*MzVT(uguq;P8&Q5CK?J|@TxkED}tsy83M~E-lX92 zr;{o*4cAyd?*PY!?yp*fq`^BL0xL)Xal^1(N8?I$?S6};n*Fku)nx}{ugee4S*78E z;p;^QL~bX;Z2b8F5cNVoCKh9ym6>vpb()Zpz4CHsStlb;#TTI-M;Z0ygJNqZ zBS*!z&%W*i3qAV{k(6#Hl9e_Cgl|MPE%MV*bDz%x%WPm58-H%%NpyrlHz zvY)Yzw&cudMU8d6UrJq3XbVamj-QrzbgcvPDFkU<@Iw)W^FsWV;L&f!k4rI}+!X#B zAV4|C(@zC{B0fWDr5|x)g(5IPLdWliLKe5mp4=QPl zKyl|15IH7YQ8wXWjWxioHuTehemdhvwx=f|sHrOg#eFG$WqX9y6*`JanshZ9MJoF3 zNOf_2fhg^2Bt}6`9ohTE!^n~GuBj*)nP|{K4~xu4_xf~BKVy>+|Y;g@BglN#+Xdd3&kHmoP#>fonedwW=`agoloPw1#F%RlMJGJqH~J6QEXma= zds{8#ze$~PajN2-6^0V0`x*)OD6BEKEsYGOME{A}(lm-H-lZ{$(uUg%NVY;8a*IQ; zzlYH~>U04mCej${63n>NxJ0FHzOm3q$Jbb<78)ser(4V7ZFLC7Zu4`fD1t|40remr zv{|N#9fdHxLGewYk;Qt8sGdd#K!rVxTM-0%8keiD^$D_G1}>5B6#FknrV--%%Z(&2 z7!EP<$8KU!WcQZ}*SEh^xU&96 zLo-a~9ndE4W$ccwv`G-=2-L$hUQC~C zBnDhQ7-iQ6bhYgC7M)M2%F{3%o%<@vc0BAO^KJuWzzzF2btIyRh(?@=$Pa*G0mbup z>UQ8Sr+8DIF%b3N4k`!~EtjXhiL^0D(~$25Am>p0Fe?}WE>;Er@LyTW-T>}Kp$rt_ zOVpO#zyiUM1aDxiT7|*-wQi;5`#>y21`J?@Z(=R?hQWreHQE4pFNhl-;YVrt0O+qn z_GXlQx!Q254F?F}x>srW7!VCkt4aiASfMst5eB>NR9fxy;-n4fr1zXo0F<QaU##h-LZ8Fr_*EyFR0LxinHqM9W?SaRo&sIB?}|2$x-9k3Mfdcff#ULOD= zT*j1v;E;@W0ue4_2X^9EE}4L;a0rG@K^s+>gf z=qnZFJ3Q=tb3Vu%q2v!z%MnF+CE~k?)Q@&_JOth?H1Fz82c!IkJ|(X}4* zDn_wYrlg6YtjFWNR%emnfD*YC=r1T~EPPE@8cKSvffvZRbgtmOqzp0A8_vv8l!RQk zru`#WWF8_Ccm}|01mqz_TtCD}4Lpl#xe_@I46eZwk;_@+HYERqCn6gTti{j?y8seS|9_IBjLt?CZMIK(5~j-Tzd!k+9EQU0AGlU2xQ)ZM|;A>B2S~#bts^{YY-QIqBFb? zLlW@KVj-2Mq-bOA0Vd4Jo(kTW5^|+^(g!SZVV0tNjfeljSo};-eFqO04_*Uj3Y2L! z%ty15BQ59b=rzXbtT23sNNb{%t1w7KuGm_)5HAijUI;HgBvSOh-AK`|2dy?@=C#;+ z!i2o_S|i8Ec@D*L#dp^lU2!ojZ%yg#651aDgp0&z(~ma{7wUT0kOU-Y`RU1#(U{EZj?zw+@R zW7+V3;Lal}iz|pOff4!@508i*PEj%92HL^Fiin%hCxIDEGRTSi6zgnnE0pODJ&Q%8 zkbtW=YiD$V8-s_%8?0R+B6kqb6TnO?#&_XiHyAAP2qLkU0QeOInjqo;DKCGfDhzB- z?WZU=cSVl!0MFsZ{ZLK>7-(T2OzRv|3}>z)i;s;Y&hd!2Cy$lZVySC&zad|$~R+Lr^yz)+Z1Poun*b~=l(@)Jx( z8Tpk|s&p zUY?eO72eCh!#*f%KTpTk%|b9gqNH^|15P3xk_#vd-vw)0i%=r&j!fGK(b*Z4h$|wc zC>n*Im*yX1samx0HUX=ApHs` zzV?e6aI{tO{R3!F=RnhBoo4~d&UCB!Pl1P(wSq|-2Y3tw2aic%_&VLDFgU{HP8)8+ zSw!znSL$I1pqk1*9Fe*c@gs<9R|HtvQ2+rDl8R``(&* zA|M=R>Y0VKaDpM&rWb-OdDGN04MnJxH1(t%g3JB8NQhx|~bbje-hvqZYlfZ6qc#Rth17dae}6YwKZ zOW~XBw}Aj=d)B_-Csmma0vpjnnPsNcCzZgzN!84P=i;I{Hu4wz$SmK3aL4V~y~;#} zF8v`g5MU))Iz|nlO)6KCb_;?KxY|fRi*9w`sGW3eww-agUHEnvYyT;VCZNoNp!fwI z*3p%}6kXnd)S)9}lG5NCRT&O`qQGoxJnVv&)&v7-6!0`;SOm}b8e(!_nzhr~Aj1k| zfaWR8!!v$H27>9@q(V9J{m5|^5KH8#*JAkiPzA;NBA$b|-ks<7L!RywpT^VPi^i4G zZ!N7R_!i`IU|y=GZ3=^R_jVmn4GyojVMiSs~HbSsvknRR&mqE`kr@#rk0_|J?@vfwH`grOr#H$fU zhi6bXl!F+JMRaoNZ76w!(h#4Fe5Vly->KBu5vUOzok|^TB92Z@YYhBqyF7K<45Wo% zbQ{C9;aY^`4mF|K4+39fw~CplMV{3qq_iXx6`c*;`y3Az=-q*tOW1KLmUS~wmeQd~ z4WwaH5(>d`1h3ba0@GCLcSM9M@tNIlZrBa&=i6EQWB}E8I8KnfQ$eH7@z1|K5rT=u zMs`94Y>my-Ly~ypL%@7QSTGgYygd%i@JL`-2du#H@FCcx0K4dao8JnX-+?eNSgKPK zcUjbK1ZE{3KHe&0rK5>=T1Av7+DUiC0%L7TjB1Ka3p^@SU(gIo26V$;fr^gkf7(r< zB$TZ^t#|{46HpF+w1!3AiAXUBNMHv5H`dz{Xo|>k0UL`oRY8#Up`B zTPwhMQMW7q|A2+eN(?X0OBX15c0&M zY1nd^hR7}g@V;B*+lX|7ptL0Hzj$XrdiI`&DFqch3>X>Za%U+Dvj**%yWRpnkzat_ zRN_(tms#kd1WX?i=m0j#i4~+EcRk&a^Xq84zXh~@DrS@gh)AFtXRe3>Q1s$wIUWoa z7TKd6R00nHn4a2VOCFCtnu;EBAQX+u8txlaz^2LK;#UiKnurd*# zxQ-%ISR0-e#kKc72SX*qBjVRL}V2K zGXMxwPc6WU&MeXex)OL4z*bb?x(tYUko|f@P7z?Z(WGghyPjx&iJs^R3gtxQCjgyM zs02@hc>>Tx#GWUp27eZzSEzZ3AoLPmVl|QjBf#)(JnkZFaG|~j=%;qy(Ag^VY@~)N z3J(3SPsJfI9X+Emz6{9oV4ugsCN}jUauAU`bUyEl`gS0a)Ei}z$@fX_gC7Ndfdpd= z3EsOxz-QT^rnC%(y(!qUd2eU)lw>-_^H%rIHXew%T$mm8gV0aUQ_Ci&M$xnNGSICsd(r%V`rkW!hl35q0Xk= zUE7W~~=;T7;~yo2x)!4vC&ba)=Is=|1-^;9B?OfwMHG2h{b>u3&* z-o9uZo%&6mV2t@M?)J5;{J%J3JzQzf8EeOh|Bo})@e?mPwHG@k8lA4`vh7_(Sq6b* z4Zxl-9=6_-f;=Qzq?z3)# zSgFt-ngU3Fp1Q+m)vxJi$dS7WKk&hv>jJenRSC<$!vR+~5N!h@^G;)K77??J#_Oqn zzm0zIPHdxx8J90p#mp&2^Q7+8n7g7dL|HED9*B2yD~)6V zaGXLluE&E8px-bK#)t=}8qW_1!^}#z&(OystF#b3I>GXpFpO+KTt7s6%yi&M|6gtA z0cTfH_WyIYoJrq%_onv*(hH}TkV>*ZAS9s&1eQ}tB*}*CE`(5)rhs&LVL&Am0ex+N zC_x1Q8x~a57ZH?Z14NpjqA2{obMD=+S%FtSpZ9NWqf2lOuNP|fvzF!BS{;{a{Af=wYSj#d9m zMpm4s;^8Tai}(T&^nZr`LGnTJQ|9=Os9FXTM*8BB6TX)g6^{I3QUAz?i+@JEq#`Fz z)<%>dP4%D+?Nm`U;`~p&3_U~t7bp=$7qswix*2L-26b+_?qw(*%Z2Cba3)yCVTk&Tkwoi~e?GQ9*LQ^=! zw&P*reU{G{Q0%Px{JrJs6ieu>`y$dQ?Wy;ga5sYRKh-{$grlDwLQcTF`n8p^rS*_ zb=uhU1!8LQDG!Bw`b(Pgj(n>0qBGCYx*tiIhR73=#utzIr|%_?U8hf#^MJ|i(dV5_@A}FYhNxGj$}>K!mm9$DUG`z!88h#lnl7rp zrDEO~B#q4o6>ol6w-HVDI$vM+e<+qik2mh6j#K|)5YOr=h#`e$t7y7l8f`yjg4r;&PU!XP zJ12icw@NeX0)NwInD6(aB)R>fLIS+zqCx_^@1jBi{Pjipek0zXPKAVBwvhwRn>gg4 z-ATmb`tbQ`3tP^S-Y)HVp1Om=#5;3VfdF3H(YZkZ`ZW}BZ90*^;j`8H$i1)P&ou?q zzgVH&wgtMAmrYMo;@WZ!w;dF1*}@6Ll^m@pfaE84Me)W=TPc5XF^9C@D9L9p)~_ht zwe!?V^stfd`rdgt=UaX=Waq1w>z^yl-vX&0MJ4LTBdhp({IgX3$?wao0URfA;5Qk; zPdCaXH|gVc{{Ex-f1!xV)2`CT%uqV+>{@Q^GX8DQP9o-fBx(h^*l%M8$E>wKHOtB+ z`iOZ7c5+0PEbI;zYX|duXxCPCcv692)~=5>cXe!1XNQaASwh}>8K*mMuGiE>>6JFS}Hq)S{H?eLJ>pin`R$e@nh3At6gnxkf){gn}c~U+V7MusvI> zeRG&5&m1JC%O|hV2UV2rzHI9W-HJetFtr!T(!5;fgx|Fs$yDlmQS*>idGO`>^hRub zG8!Z%mJecl*GB2GG}@x7JW^h9tv+?QvXiNn6_YTon6YzrK6ouhiW>gr?0oj)`u3*5 zH^Y#zrKrmX}-q5Y9(HSnc+@x2=D^YIcCXPjM%vecD)76L{ z$r;>CdqF;Z3CCWCHx&~z?Q2xHe0{XFI8=S0I{u?}wCT$>pQ>%NXx}d@ zpVTKGt@ey}hF?h*hjwtVMZphdCmowRyCxTdqJ-aCwnI6ujsb-s>|JboP{rD4^M+(4 z=QN6=2+O*(pEk>vKA|5!Rmo1%KcLDuws4izM@C7{t2yk0Kqa?ar_Y+9q}Y|6nvw^1 zpK-O5^v<#N6?yE<`jqiX06qL1g> z6&K#ZeFul{yzLhK?S|5howt2jZz=U00o3&KU=QylJVEIFytvKSM2jNWB0B``o>NTKXrcL;-96<9t2uQlP@qew*+h;UPlr?-KHUlpqNT zqT2hri|4xuY6=Iu`cAw8f<8fbityTd#P_^c!oM4TAq6V{r@}|RTSb$JR|wSi$XA6wgS8u%bBoV(MJV$tu(EDrPWkDE1sJtf6`-1+No;QJh zO#<1WP%2Zv7AXkSalj*X{fJlT?-&1j-g%Dj2g0sjpZDG;y{9Pnk^iND_evi^CH*T_ zFtK-wA6;*d!hJ2@)le4ATK-T-Ed}7(vMYh3Ydk+dc!==BKJk5fGZiq>EW$Me1#Z$5 zu!OL#&j`M6euZs$zZVAAD>$=W!SDH3<=^)`D)>+H_qO~=AdVdN^@eJVw!m9+l6160Spis<2fm@cd zIuthbE>M~Z268(qL;))|Q;@=G{Ff>7O{xAr`iDIIPTk`smOJm%9r?nY`Uk6((zIdK=Eh;=QR9YvX`eBb zQmei*`I3G_si#F-S#CtQobG6i!&X+8j9D;v@4*eDHxo5uzP5Q-<1iJmWX$=cF_Q;_ z&M1{uBH_-OqOGh>9qbb`drw{*Ja{pWb4bKYHg|qWRZxGonKwa{|4R!F2gWmh{tpG_!j6sC9#nQf7q-C9~Z7hpGNh<<`;uRH;Rcv?bgvl`#PN*=LlRYooMxeJE(}!rfkImiK;1 z7d?wc6eG5H1R~&)+UsgW)c`Nu)gB60qr0qDfXN8&Q)Dd{^U{92~X{4sq+$Qa` zBEwGOZvE<}k|7_wM?Y(Ty1^1NPf42hqEzti2>I;Yn8SD6tDn%5b*=A6J5?c&fBjA+ z#PB{hEb-T-j#TBKoMh7$^~A6hH-D*T(h=~{LF<2P>DpS)QhyD(8M|47k{B8vE0vnd zg9a>WYG@wJ=ZL$4<^lSE&ou$i(Hp~9H!EEf+|u~{j)fGquvXhwTHmF%p7*b>x+&y{3VU z9~ro=c~;{U+ZK{zNaMGf*XfNvIc31YdSRpAt2Ft{1NsCpuJl zO>g`wU!`fh@boU;AF4M#sG9bbGe4&u8isIUoH@Da71{cLK4XQF-Wne%=4KHM8ZuyH zeT>%qhhucW|J@iBy_#L`6~l3T!@8zY^U%hpy1uJ7e)>!`7`ydR&isacnfMrMtVw&e zwoWennLa@N@*DcYrBORS_f7rghK9#p-Fe7&^fwwCjMwC<@9WPteC+j|?ho`|H7`-D zyzx1$)I4BN7ccH&2lZ%wugGni-i^GshJ{g{5Zzyh-Z z>x+E)F@4IweYhX5b7R!GUYX3sDvN-2I10MD?WnCYiMC`bvOI!w>>T#EUTJJeayRhJ zC`@hNN|Hd%e?q^boQ9E;=dNdmZb*gJ&X=Fiw>6aGAT&HHOr6XMlfX@Pp7ON*`Gyge zVWffQWVR~6bHg_6up`&VSAVU~9v|?ucFmEdVfyQHKe9|CPW{A4{4_{q&u{caWp0*A zyu@+5#7zTQAsiILfI%x{T}qMU~2q31dwgAvR8xBAj@?6`3d`EC+> zX>O;Eyi3LAxnqZ>-{}{W&Dh9XCr)!K3uD&} zeCq{WlzBB^NFC3296w2XdEpEC=_8}SF)V5h?I@)oS(}z~Hg8dccvg|NSf28tesCrAGK03~k)L{rN2}!R zh8Qkid{H;ckr6R$ycgL_OX$e?FX>53=H;>FrbZI_scnSvhL`j!E1r?NX&$()8=DsW z9Ef0>^gbi!bX7TP(w3L@eL5y)X-X8N8x@xoq2k@21Q~ z=I5DV81kR5=*PD>MhXF$wvnc$8>VvOt9n=2GeS3jwBpEh{WQtsE3fKjmuWx}8y2m# zEHelqdG??5Xt)WXIYt~Cbki~OpiRq8k_W%0&ydIcT^~AfQ};$isAiU#c9Nx5W;;y1 zT>6^6Upcg*7_v8GC(2kHft0U7P`P6mk!z66rPG-y_j+CbeZ?`2FiVmY;)&wix7)5Z zv0JYCv%Z8ilv7e-$EKfnW*o?m|5;yGc35bEVX~@%-1pKoxP;Mc&+F#fRNGXOC1m+6eZKtK8~TuPV8w16g>jfUjvc3|eDn={b~$sxG;vZ7 znsHc|wygY3KfLU~XaYr>aHBAbJbCip^u5b@Vmd)&o2=C^iCtel@Hc(`if3kwNgifF zkmV41n;aI1i8A;*Lzb%LZAT_7!cM}NY5%*vUrTByQ5@TT5X6xmyYkV$>&H|e)BsA1 zAl=Zk94Phid19XY@$0%TKmDdYyi7yP#7xPMLx~Bj=}mo8#mV7cS!|hBLX&f|O24!*^oec4f<35SY(s z!K9GAZj&lPSDvO~nI9|8AnPD! zSsICa>}`G32oGM8yS^19ZtPe_(x$Pk$%%j0CtP);ID*CmMhF*7W1D$3!mI8T`?Ur! zE6)hjl69ySPA9JzA*ym#NenHUc^ZY859PawoBO8Rw=&^i&pL>j~^oja0MJ&9u#M?mSMYz>Od{2nz%khADg!6I=++Ss^FKG zipla)U2GU>IeA7eQ+BK@3`|nhz9LW3#e8|jFtM&eU*pV495>2S!}p;0$^tQ3wl5Nc zgtB7aK~PAHDB((*qQ}cVt&dh? zJwUD4^^!DTn|GRKDaJumii%a;R&iUY@>|N zoLO_)IIqWBa3z4$O zY`M8r98oc2c7K|e`GFl4tnr!W5wA=(9_}xUZN>O=R?eg<3!Tl;V6*cR-wu>iD^HpU zEuK|{GuT#WA`v7hgkxuH9M@IFUS-2kqk>=rkad~LTs}Tr%r5(On8O)tn{h|5v*qv+B7@DR2qSss!C-wPYkA=a5mqu} zZOcp@Hs2Hmm9@!9OT-BI+z2thoJX(+Zy{-TF{>a_!?j<9;WJ_up6?^qMzK+wOL_Zf!Bvt;1pk3OIiX2$ru@NZ zff&PhN4Xc}L0~yZ9CGRyv2WQ65GGR7a7+&&%yi|pF~Tn=ELy{ivVa}jO^~!fe+6smf{Z=i!t*0@nWdFZLFwPqL|Ggj;TL0 zGB_`L?mjHVH^++O$~FR@!74;(VC+*vZWt%>auBk8*zAY&1#vK`vmMkA7y+9_Xry5X zk1D;WPZ_znYrUdhMe%M3HCPVJ6d7PVB+KHk5{Lyp4Hc>37%xnCP{t^*V;D$D7KA)x zf;gyb2C)$)tbPO@FGFtMFhNN2`biWzyuhF!JIL}xI5~nwlp>|E*py`L$h8y2w$Zt5 zS3_U-yG8lrBA>7MBlSMefGyN=9s*CHPl>|s-TcT8PsL^uEWU*%%&B136_Yv&v zAj$ID61!)z7+OKVXO}>%blL0?INIb>Q(bx>$2r6>e2NGr_;KPf zQWjI^hmcmAR=c6Ei%UB*x#$huuNWbFY=-z2WLXYFIr5SYqNWJa?Bpc4(!Z!fc(WGk6i=>neHK+vd?1l zk&{po5<4&r`RP5x1Jl{qf*kcW$k-`^#AAcq3{YTmw6VSLh;Qvqx;nPXpYF+)6ek&U znHvZLJ{q|t2Tc=m%E*cAz)C^MlFag4*)~n=!8QXG`GJM>k(dY)a@#a9O@4AZy56zV zLF)Ui<0&p}(oje?l&4P@S6ARXXfUwA9NzADOw#q!xl8Ku8A7kvrp4YF7+x59K?;+W zFDWtfdo#och8C8b__>?qC}s#oFU^2|LehDPaF|-i#X)Gwc{3S@fJZCJ9rh?x9zQMk zN|}jHlEm}_*Wf=mQ^A~{o+-qrfH_NYG+K}TA)gd8{eSvVSVr{C3U5Upz?}Ys53vBC1zJl#jc@SKZ>%Dy`oJnTfst@GFz-{L10k2 zYvizR`k^OJoh=Sp2w#iQf?DIQA@ogZ!9%HT~6 zbHvnfUXUQ(ZI#pFE$3+|LhN#>aeDiuqH%j3DzvV9Ae4rdFe zcYDraxnvHlN4QBS#t%&tUnGMz`OJRw?9w^xlun3vkFbP989^tpd~}XDp@)TrqK3Z1 zK4)a9gDP8mPoO>LTLYj)v>O+;)GyKG5>a(!Y3C`}pK9(8g|V7Ts2P#9<9V#Ty>RBN zxqa|E1(;;9)}^v`X&wAS-?UTt*FV|RIw?E^Gx%B+2YXOt=JME^fYg@=tRHrUP<4YA;-VP$DC{f-0rmjuidU96$eTn=dMQ|@p#TR>(e7VdQ z3-{Q@YlZDzdy$ehcWmCC@#%xjSn+o?RNgT|j6R(Ex-`B@z%BkoVO0t*KKr1lYtv9G zvdw9GzO{pU{?*4IiahFiF!Hzej^V`=k#T8rn$^blU?D5>#iZ6%Dqjt^rmk_TtC3?z zsH;9Yff%*diZ9CCBDV)(iUO})7l^eAy!JBx0$y7hit}54#2XD-FN94UsFmfRV&Z6Z zPPbQL*M8W_@iOS3Q@dNXED%#l+oiccjF|MZ3a}%Xdjv<<)cI$KVrw0t#@SW5s4Na^ zRtKkR%G(L*CKNUF_&+GV&*rE7k(A!KJdru?lh%%%L{oPf)VBY{+SjpA*XMXRuPGu_ zSE>|sD^TAfa_Qb8Y2zl_-r-lMqs7{HRqdO$XzDHn%F-6m2CnQsrKXl>>MDuCim1xC znl`XpH^`?Ki9O_T!$iwWb@5Csy#}WH0)MMIi_ZTLH&!wI+EHqR#=fHwHk?zIw;5u@ zJ`*UvHvjw7-{j+4yHBsWT4qCMJ2VA3)N3IN*F10FGVS&9m4#wbsa=*AiQ!ZJySKRZ zJ~Z|V3aB%rD|fZS9iXm_*(FQPxsxJyt!s7VLw#MVJ0xmjJhxu?$*TLS#;ODLHQH8V z&9VO4>gD9I-0LNMRP|!m24WLjxhp$iD^SZZ6}e@xm^FV2qjK75$;OUOzPSSvQMY}l zc4+E;39gw3hWac`;}+`^GVK@g!Np>dpHWyRu+{eHlxS<#t`=82g%{tqE8@3o?C#Wl z#d1@zPtakt?rk|?i5N9YooO!Ss5ay3Rt?3M+M^^<(nnW&%x4!gF4vF;PZTqbQP*D7 z6tnh@Ubz_jaJNf9Zifj7D5fBJxcV(F70Ugs(94L86Ft> zYWegMG3~IIp)tm^)>n1W$gb+z4Ncvl)MxV4RUPDQ=es!TvxLuP6w7xw1GKiIkfGWb zIZoxvfkVZ#K_-pZ+Pzsjzg0fAkCShCc410rRW}x?jxm8LoQNC9<)BM4)QjBQ zL-|HCt|xEdp-zz9bnzX!Q#T~+BHMFdj1joZ&rw6MmE2EiAv$QECFxy+1nsTf9PP3C zrjdMcKQUmQg0R(i4Wx}^S}>ch_2yLai*_sJDH1aqW$6G>?P-HR>g?wZRlA~y>v^be z*>@E!+RWFLx-@l~;@zZQ?Qt@Z-bqEpzNTI`HFaF1Z)3Elsj9{@)Ul14z1Y&8>TRBq zk~9EX?@aPivenl=MHXL9Qy|MH_ZJ5PvNTqTHGnM7S}7VzLvQ|KsY!`6rH_BH^p~BN z9UvB#CMFv*sDLjAK88@`zE{7{5?nx=QRh zwpdyV7OY2O!b*&N9#c0`ZZM%pA1x;wBno@5_E@rr`%r#aM@`G!{^nX=LZdfCxwf2)= zt(lADN&nEN$T!xAA;{JEcS0L85*nr-g|qr3R`8=am_ck4pIe-S?reGXS~0$i=7biU z7>17opBaukYps~jieV(DGf9@YF17%F?oq0miSqKd^uh9#!9tf$t`%c3TObyPn5Sb8 z6OwJrldl{i7FRKGV{}2CH8BEU(4K!$NxpiBu;s-Ei+S@LFSjsk<{15y^CqKx3UXXYGZmyQ|tKuN2%scp+LC#%w%Nrf1Ne z&M}AuTNp+<+wI)ds%i3%hlavaY9r`#_&|gAj%ew3c(bI}|4daRBdRW%*CuR%JP_N9C`yVOV zT5WU@*H?}#tVLKo7xmND~4_l(?`xw8x5a*S={R3jZ(8ZROg%sRAJ~Twl$9Lrhd(UD3!LQsD!KFoF-fjG zP8`*Wzf&3D@xrij!Yn^%iM;&^$m`+bM70&Vb@6Mt7^bkV#n$S2FFujfhmWpg$S@YB z`@qAxlC0TZzMYD3b1^DfXw>+2FgN2N=p9xQLz8D<9JR3oTkto`vhu6#B5aK_9~Kzk z3BW~-Gw9&sg z@DL0O*k1AO-grF5TimA(c6B%!6B^+kd+B)b{<1Ii5jTPB1D5IFj+& z06GBTfN4jrPQ>Ka{#yPq^(kX;SGT5_6$7fm_i@Mpb-;z0 zq{p3AqiWt9C~r!|ffYsoF9gg1=8qjRY%e%_YyVj}zD?fS&KR%CFfBzG9r9e6y0Z{~ z1xzRt+p3@`Fbm>I&QhXdGrpD!THCQFR&%knRaJsXh!Hli`WQ)at6X*ho}h2!;^5i7 z!_s2ciIru;v8`Sju&|YxE}l&sXhxu%cXIIwVteQsU?SMfaDgXIh7EB>&0K*5#PU)K zsgjwQ=YKIFy?O%k44-wp0H0&T;-c?z@p`eS6$-{xkoef?4I2-``XzGddNEFZdc7E4 zO%$$$9Wua`jt9xxu%>Rwx@Du9c-(OKrSLjpg!Nzm6E=vWDs0EDf%gt%0)*_OCrUFG zo6Ba3>kXGESPHCzc`BPf$TaqMn{4{Pu6?4uX%4%L9aov#;uN!H0waVm$ooGiX0-OV z-*sH8M2yk$h8>uXrk#jg-N%IP#Q~nuh`lzl<&`Ij+0*u@4I4t(f(3<`%8>Q98+OZ< zjbc)zzwz>9xn!f-t^1kzPU$-?t^F;0+vdqvBQa`pQQ`Xjma|iPQyt7J&$+Kp&6rSpU zMfEd8o?SXpC8BVAKn$q%H%OjSvI{;rNj0ml9g&v9O#NBsmR7Xyx#}?a3}h-lJ4XzW z*KHBy*8cXw^Gbzy)rtUvjD)9yttE@X=tI5nKrHa(u(Gjuh+k5{ucDmm2y`(% z_4xdHcC|+!1}l6(%3k4LP>)COz>$%=b_N&$5B!C-_$q(_7=MbX9)B{-{v&+e^_guP zu;1P()>b`in&74|d?ST;QFzgAsYq)v7yq&a#h|B%f_r#p-iU z6CG98P`)sjOd1D%>e^S94v{zh7w`w;90cKqPZP6S@sxoaav(jtty%nE{d3H!08v2h zr2>Em02;ijA1+7-<;oQaR?B{8aC+^jyf_a1fasvxC>^QI>%;B=gUcp8k(oQ5q z?B_w2TvJ3>vk12WQXbCC#0^~M+S2W{UT-~9Tv%1?75BOlA8{u*$;bE}aiP8}y_ha8 z=@Bc-R)!qt8DO-KS95sMH9g|QYM`9d@HzHiJ2b-h6aUh!D)W=DcfriSPTWzmR0?lVfsbER1$V33`5WU$lvFV4`*W$};%xGGuDyUo$UL-mG zY;jPmq3cKL|FH>p86XJk#H22lvs0(T?@QKBh3 z&Jjme5Qb5Ca?4fnP;6&67vrd$lsTdxVkVmvDuL`cm+@2R1#mRVY0Hp1!L6lryZ3R@ z6!n2otT&iza5zAnxF&t%ItO?c^A%;EDhQ2zgGmN8sQg&quY7smd16%+=Mdft8#f9L zQ^O7an>$=4UjfV{{E!$44hS*XGaZ%yJ|_?_?H>{y!;n0@2=|t4qhML`S054|tT;BX zJdjY#ag1lk|D1g0GLaCCz{VnC&oY_Y`1A7Ni-j+nE*6z4-X#McJ3vlQjiwcS0Y>(d zk0KXw0Zfsz0u8HH)FmuQHqH5CqRj_2Bi*hC$`2rfhvvf?K z)*OF{7*(+o_C8Q0N^^Gs=6$K?V=KTABSwOUYk92f{LA%aq>z8WL2xrMqkx|7l6ze( z&H}oDgb6q*MkGafcX!JBuV$eG(^L#mIn{wyM%LXB^E;#Q_cdZrl{tkCh87co=IkV2 zDIHwPa@%EMN(BZI;N*6ZYGStQ^s7bdh6B>F(ol(VmOh*CX0P(V;!2EjY z{9Qr>S1a6zz}R>J0;BS4dO)Te@WDub>3y>O0W#p@~Nf0E=&<5hmX%?Wi#(>?)DG?;~PFg;oYIATmNozUO^g zE|s_+q8!g9s~)91PJkbMM@3&Ut`iqPbb=Zv3*-tiY=TIaCV`PXC@;T8I8}7jFhTGI z5CJgKioe@i<15#Qla*@j04ubi)^{d z?h`r>^JVpd=l2$~RUUV(7*N5W;J5~!Q-t)$OtPOyG}SjW~I1z1PeO+X65}5Z$R4 z1&@?YQOjzs>hMhY3Y#sE6E+G2Z}^=7Gmn2R&$>>WUBxr*o30(Rb_1Z8>7&SL5bYSb zbh{AJ*&+6<;N`Z!z=C)~>p?g8h1{?MLkzMIZfP4^1+HW(N*|L??SLD*US#KNKQ=o( zYdn9P(S>Av*?m1q1akuC#mE8%3TTP(%hE};)Sq3C_m{bMK|wK?keulzzfyc{tn9d4 z%&&rCfya8_>oHLQ^m&5KlrD}|sT0-~pNm&coK9$z_Z3_=J++WWPNo-;*J={qY7i2w@3k#B(Tu)O#; zr4_2uS#r}y#o!8>y)vl)xneb8<@>E#f5YWjSBO#LYaa)t`ov+J(7Iyatq!95@A^{N zV&8L_6}B`^1K9BK-`v|mdA2lIeb~7J_wRKH zhXde?dZjdIS4`)t#r{!stPC**t^hX#UmyO7UHbd00n0r3PrYV|l|Q&aluNJ4i$5u* zR{&2a>=!}+;2Ji)*X1`qDW;&|rWT-drW`iy#DA8re-d*AyNDZLFUIB_bF{(xe>IOT A9{>OV delta 55589 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 delta 75267 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 diff --git a/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.wasm b/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.wasm index 62100fe11a4fdd14957f487801d675b058c240af..2dabf9a5d2ae0a5a9dff597266a1e2311c449929 100755 GIT binary patch delta 75540 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

V=Fr-Dx3kvU(7*OiQ!wd<)yaKuEU;a| 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 diff --git a/polkadot/test-parachains/adder/collator/src/main.rs b/polkadot/test-parachains/adder/collator/src/main.rs index 25b44044fbefc..60b92b1b5cf64 100644 --- a/polkadot/test-parachains/adder/collator/src/main.rs +++ b/polkadot/test-parachains/adder/collator/src/main.rs @@ -86,7 +86,9 @@ impl ParachainContext for AdderContext { let encoded_head = HeadData(next_head.encode()); let encoded_body = BlockData(next_body.encode()); - println!("Created collation."); + println!("Created collation for #{}, post-state={}", + next_head.number, next_body.state + next_body.add); + db.insert(next_head.clone(), next_body); Ok((encoded_body, encoded_head)) } @@ -96,6 +98,19 @@ fn main() { let key = Arc::new(Pair::from_seed(&[1; 32])); let id: ParaId = 100.into(); + println!("Starting adder collator with genesis: "); + + { + let encoded = GENESIS.encode(); + println!("Dec: {:?}", encoded); + print!("Hex: 0x"); + for byte in encoded { + print!("{:02x}", byte); + } + + println!(); + } + // can't use signal directly here because CtrlC takes only `Fn`. let (exit_send, exit) = oneshot::channel(); diff --git a/substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.compact.wasm b/substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.compact.wasm index 85ddc5e7b6a2b9a5fdad29a6983aecd8041c67f8..50752549c7e77379a87f8c685932a723e3f70828 100644 GIT binary patch delta 5423 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 QEE|AniA^XC9EREd1E`$?-2eap diff --git a/substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.wasm b/substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.wasm index f9cad0284aa9ebf5790b0abdd36af7167cb80434..489e6ab1c0f93cb688d04bee03c50e00edd60509 100755 GIT binary patch delta 5411 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 delta 5426 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

Pa`tn%jB8;<_3|vhgiJ} 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 delta 9880 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 diff --git a/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.wasm b/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.wasm index 7241cad551c0dfedac4d61d069e3594224ad6a3a..a2a790a005be8516fc64326ddb290053bfb3c3ba 100755 GIT binary patch delta 9466 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 delta 9614 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 Date: Fri, 27 Jul 2018 14:45:41 +0200 Subject: [PATCH 15/20] fix version in adder-collator --- polkadot/collator/src/lib.rs | 6 ++++-- polkadot/test-parachains/adder/collator/src/main.rs | 13 ++++++------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/polkadot/collator/src/lib.rs b/polkadot/collator/src/lib.rs index e93dfe0c83841..f67dab9ce1650 100644 --- a/polkadot/collator/src/lib.rs +++ b/polkadot/collator/src/lib.rs @@ -343,17 +343,19 @@ fn compute_targets(para_id: ParaId, session_keys: &[SessionKey], roster: DutyRos /// /// Provide a future which resolves when the node should exit. /// This function blocks until done. -pub fn run_collator( +pub fn run_collator( parachain_context: P, para_id: ParaId, exit: E, key: Arc, - args: Vec<::std::ffi::OsString>, + args: I, version: VersionInfo, ) -> polkadot_cli::error::Result<()> where P: ParachainContext + Send + 'static, E: IntoFuture, E::Future: Send + Clone + 'static, + I: IntoIterator, + T: Into + Clone, { let node_logic = CollationNode { parachain_context, exit: exit.into_future(), para_id, key }; polkadot_cli::run(args, node_logic, version) diff --git a/polkadot/test-parachains/adder/collator/src/main.rs b/polkadot/test-parachains/adder/collator/src/main.rs index bd5043c5378d6..e06d127089b07 100644 --- a/polkadot/test-parachains/adder/collator/src/main.rs +++ b/polkadot/test-parachains/adder/collator/src/main.rs @@ -124,19 +124,18 @@ fn main() { db: Arc::new(Mutex::new(HashMap::new())), }; - let args: Vec<_> = ::std::env::args().into_iter().map(Into::into).collect(); let res = ::collator::run_collator( context, id, exit, key, - args, + ::std::env::args(), VersionInfo { - version: "", - commit: "", - executable_name: "", - description: "", - author: "", + version: "", + commit: "", + executable_name: "adder-collator", + description: "collator for adder parachain", + author: "parity technologies", } ); From 5625a814eb72670e0c599034ed286af6fc6c2afe Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Fri, 27 Jul 2018 17:15:21 +0200 Subject: [PATCH 16/20] consistency for overflowing --- polkadot/test-parachains/adder/collator/src/main.rs | 4 ++-- polkadot/test-parachains/adder/src/lib.rs | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/polkadot/test-parachains/adder/collator/src/main.rs b/polkadot/test-parachains/adder/collator/src/main.rs index e06d127089b07..ba575a61dd716 100644 --- a/polkadot/test-parachains/adder/collator/src/main.rs +++ b/polkadot/test-parachains/adder/collator/src/main.rs @@ -75,7 +75,7 @@ impl ParachainContext for AdderContext { }; let next_body = AdderBody { - state: last_body.state + last_body.add, + state: last_body.state.overflowing_add(last_body.add), add: adder_head.number % 100, }; @@ -86,7 +86,7 @@ impl ParachainContext for AdderContext { let encoded_body = BlockData(next_body.encode()); println!("Created collation for #{}, post-state={}", - next_head.number, next_body.state + next_body.add); + next_head.number, next_body.state.overflowing_add(next_body.add)); db.insert(next_head.clone(), next_body); Ok((encoded_body, encoded_head)) diff --git a/polkadot/test-parachains/adder/src/lib.rs b/polkadot/test-parachains/adder/src/lib.rs index 28b59f537224c..3cef001348cb8 100644 --- a/polkadot/test-parachains/adder/src/lib.rs +++ b/polkadot/test-parachains/adder/src/lib.rs @@ -100,7 +100,7 @@ pub fn execute(parent_hash: [u8; 32], parent_head: HeadData, block_data: &BlockD return Err(StateMismatch); } - let new_state = block_data.state.saturating_add(block_data.add); + let new_state = block_data.state.overflowing_add(block_data.add); Ok(HeadData { number: parent_head.number + 1, From 1ebdd1249b33f4fbce86bd5d4dc2f80715173342 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Mon, 30 Jul 2018 13:48:20 +0200 Subject: [PATCH 17/20] adjust comment --- polkadot/test-parachains/adder/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/polkadot/test-parachains/adder/src/lib.rs b/polkadot/test-parachains/adder/src/lib.rs index 886c87b502548..aa23dea7772cf 100644 --- a/polkadot/test-parachains/adder/src/lib.rs +++ b/polkadot/test-parachains/adder/src/lib.rs @@ -87,7 +87,7 @@ pub fn hash_state(state: u64) -> [u8; 32] { ::tiny_keccak::keccak256(state.encode().as_slice()) } -/// Start state +/// Start state mismatched with parent header's state hash. #[derive(Debug)] pub struct StateMismatch; From 65112b372a55ff095a1d0bc42643918566eb2901 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Mon, 30 Jul 2018 15:57:30 +0200 Subject: [PATCH 18/20] fix stable test run --- Cargo.lock | 46 ------------------ Cargo.toml | 2 +- .../release/demo_runtime.compact.wasm | Bin 243547 -> 243551 bytes .../release/demo_runtime.wasm | Bin 243632 -> 243636 bytes polkadot/collator/src/lib.rs | 2 +- polkadot/parachain/tests/res/adder.wasm | Bin 29889 -> 29853 bytes .../release/polkadot_runtime.compact.wasm | Bin 321991 -> 321990 bytes .../release/polkadot_runtime.wasm | Bin 322077 -> 322077 bytes .../adder/collator/src/main.rs | 4 +- .../test-parachains/adder/wasm/Cargo.toml | 6 +++ .../release/runtime_test.compact.wasm | Bin 54272 -> 54272 bytes .../release/runtime_test.wasm | Bin 54482 -> 54482 bytes .../substrate_test_runtime.compact.wasm | Bin 56218 -> 56218 bytes .../release/substrate_test_runtime.wasm | Bin 56350 -> 56350 bytes 14 files changed, 10 insertions(+), 50 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 475a666f88110..8109036743875 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -21,17 +21,6 @@ dependencies = [ "polkadot-primitives 0.1.0", ] -[[package]] -name = "adder-wasm" -version = "0.1.0" -dependencies = [ - "adder 0.1.0", - "polkadot-parachain 0.1.0", - "pwasm-libc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tiny-keccak 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "wee_alloc 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "aho-corasick" version = "0.6.4" @@ -1516,11 +1505,6 @@ name = "memory_units" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "memory_units" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "memorydb" version = "0.1.1" @@ -2123,15 +2107,6 @@ dependencies = [ name = "pwasm-libc" version = "0.1.0" -[[package]] -name = "pwasm-libc" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cfg-if 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rlibc 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "pwasm-utils" version = "0.3.1" @@ -2317,11 +2292,6 @@ dependencies = [ "untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "rlibc" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "rlp" version = "0.2.1" @@ -3863,18 +3833,6 @@ dependencies = [ "url 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "wee_alloc" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cfg-if 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.41 (registry+https://github.com/rust-lang/crates.io-index)", - "memory_units 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "winapi" version = "0.2.8" @@ -4101,7 +4059,6 @@ dependencies = [ "checksum memchr 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "796fba70e76612589ed2ce7f45282f5af869e0fdd7cc6199fa1aa1f1d591ba9d" "checksum memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0f9dc261e2b62d7a622bf416ea3c5245cdd5d9a7fcc428c0d06804dfce1775b3" "checksum memory_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "71d96e3f3c0b6325d8ccd83c33b28acb183edcb6c67938ba104ec546854b0882" -"checksum memory_units 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8452105ba047068f40ff7093dd1d9da90898e63dd61736462e9cdda6a90ad3c3" "checksum memorydb 0.1.1 (git+https://github.com/paritytech/parity.git)" = "" "checksum mime 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ba626b8a6de5da682e1caa06bdb42a335aee5a84db8e5046a3e8ab17ba0a3ae0" "checksum mime 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "0b28683d0b09bbc20be1c9b3f6f24854efb1356ffcffee08ea3f6e65596e85fa" @@ -4140,7 +4097,6 @@ dependencies = [ "checksum proc-macro2 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "1fa93823f53cfd0f5ac117b189aed6cfdfb2cfc0a9d82e956dd7927595ed7d46" "checksum protobuf 2.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7fec4b8f0fa26c52d29c66e93e8624aad859458ec5e5d4f6ddf923954293436a" "checksum pulldown-cmark 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8361e81576d2e02643b04950e487ec172b687180da65c731c03cf336784e6c07" -"checksum pwasm-libc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "027307d6d2086ffb7f399227d42593c5341e8869a55ac8dd7c79d7ca04ec00e2" "checksum pwasm-utils 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "efd695333cfae6e9dbe2703a6d040e252b57a6fc3b9a65c712615ac042b2e0c5" "checksum quick-error 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5fb6ccf8db7bbcb9c2eae558db5ab4f3da1c2a87e4e597ed394726bc8ea6ca1d" "checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0" @@ -4162,7 +4118,6 @@ dependencies = [ "checksum remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3488ba1b9a2084d38645c4c08276a1752dcbf2c7130d74f1569681ad5d2799c5" "checksum rhododendron 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9e38401cc1b63e71ec9119115c7e1354fcf54c8006ad59a22409dd8bd93737b2" "checksum ring 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6f7d28b30a72c01b458428e0ae988d4149c20d902346902be881e3edc4bb325c" -"checksum rlibc 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc874b127765f014d792f16763a81245ab80500e2ad921ed4ee9e82481ee08fe" "checksum rlp 0.2.1 (git+https://github.com/paritytech/parity.git)" = "" "checksum rlp 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "89db7f8dfdd5eb7ab3ac3ece7a07fd273a680b4b224cb231181280e8996f9f0b" "checksum rocksdb 0.4.5 (git+https://github.com/paritytech/rust-rocksdb)" = "" @@ -4266,7 +4221,6 @@ dependencies = [ "checksum want 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "a05d9d966753fa4b5c8db73fcab5eed4549cfe0e1e4e66911e5564a0085c35d1" "checksum wasmi 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9b4a6d379e9332b1b1f52c5a87f2481c85c7c931d8ec411963dfb8f26b1ec1e3" "checksum websocket 0.20.2 (registry+https://github.com/rust-lang/crates.io-index)" = "eb277e7f4c23dc49176f74ae200e77651764efb2c25f56ad2d22623b63826369" -"checksum wee_alloc 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "27875be1daf838fa18f3e94fd19fd12638e34615b42f56da2610c8f46be80cc6" "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" "checksum winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "04e3bd221fcbe8a271359c04f21a76db7d0c6028862d1bb5512d85e1e2eb5bb3" "checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" diff --git a/Cargo.toml b/Cargo.toml index 743431d5a7013..a7630a11ce9a6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -34,7 +34,6 @@ members = [ "polkadot/test-parachains/adder", "polkadot/test-parachains/adder/collator", - "polkadot/test-parachains/adder/wasm", "substrate/bft", "substrate/cli", @@ -81,6 +80,7 @@ members = [ ] exclude = [ "polkadot/runtime/wasm", + "polkadot/test-parachains/adder/wasm", "demo/runtime/wasm", "substrate/executor/wasm", "substrate/pwasm-alloc", diff --git a/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm b/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm index 96f73ff02cb5f99ac100aa79efb1e7ad6f7fca7b..e629f48b8ad2d4bcafe08af0f155f9ffa2cde34a 100644 GIT binary patch delta 11459 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 DKG$E= diff --git a/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.wasm b/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.wasm index 4b2733901183b8b3759a4516e11c42d61bd0ff7e..5a427ed3ee553d5ad1d38eee201f5970e6aca77c 100755 GIT binary patch delta 11558 zcma(%33wDm)?IIM&ygX45JE^MA%uhg;SPsL8UYu%1muz)Qtfh36&1@0~{{Hko(BI!w$5bZ}=-FsA`WyWNjUn_vfItY8#zSoA zoBJyTeSsh#h0j3As+Y+ir6S`DVL=o~$``mn|bRCpT-7Fg4VgmzOgm z!#3URv^!k(EMdCQHrx-6YA=}`I+eQFR(Gy5BP%!G;TGnE_#iH!AXv`? zk?H-rbb2wgn;7!;R{abR^egJJpaQ8(m*)xf>lEDN>Vita94qL>gY&%)rx$u3?r0Ck zJ(G>gL)abZ{Pw62-|%ryT;x8+syyE`_%ec3Nn2a3WaB&?TQeOj+%9!#XE83^UMYxe z&D{z6!tI_3?b?}XT5*q8XwB6g=V>W*qNE>sU0_Q+e|!0kKP*Sj!F~aJ;P{Zb(uw}t z;p`e|&VX;>X`wXYRSSGtBF%htTeoW^>1l#sVd5QOq8KzW-e@s&0Kwu%&!Uhl+*ODD zM6=R;taT%)n<~sJm8=8vX^T?>^NCPT|3Pil4ckcv2B*XM4W37XPpJ?$@AVqmh3V&N ztoWuxS~{#0u9ZkFhc~kP*PSK}pGJqhFx z$?L6PO_6lGUjlFLjtG~Yj!cxIN1EV3iPU^#vTxNOpxJ*NnZz4)+Dja9^O3RA7X#`@ z?op9Yv0hp>s=ac)Wa;NfkUrQqM6{h(dWx8H0~X zq}Ru$!^%>rXlxqwJSWFKV*IFIX8u2pYRG!RchP4z(snV{?9wTl_#o}cKHkAAJA=i< zMdtsk$W*$L1+U2bMNMQL*_P@@bY8K)K%(&^Olk?kpV2O#qD6_!9HS_l4^-h5p1BEE zbFP!|UY+z!sfFv9v}5w?tP1Z0vAR+N$6z?PU2-@$#3-`X(l3rg<1;v<7P;Ti*|@@X zo6<|l%sZy`Jl&>z3N-_sG441b9lz2M+SU1ExoSPkugBOVk73#m;WY8~JL73D&+sK= z8C#@|@5a*K;qSgnBbVPDz)dP`S$_g8TE+*qF6#}8w@7!F)rWVsctV!H%5e|u$C9M^ zE7owej#@e2Kub3kFXFw#jR*DrYQMT23Bke&4gSTE|&CF-l5N`v` zeYy(+jsD`O z74nIliIW#ISsKg6=q#4(g(}NKaC#Pt4Y;AMDb8XqGNW9T#hNo>GH&h7h7#>hdNY3( zpzb4^Z0vK8!oi`&Lm?R^34Foy++L0B&qsp5QtUM=~FJiVyWNh zX>7do+38>Tnz?6`HJ84fO}ve(`Xb1}dKz`&{vxTH3{5es*zwkw?1w17j1VsrNfKDPONBsK%`TvMAHUc=8}T z7IVE$7T#O$IeGsngC|AOHxF*}0CDtTj20kRO@Mg#kkpE^BuZNL^H5IC<)72xa

3 z$VIyqJ?aqe+l?arA8#f7^k~s@`ta7{(M;oj8f+9pdhkmN*4is-=;a%aO{ScH_?cho@_~*hj2;b-7ni3hVsDVDCv) zjgO>7L2_KAs&Zm1cfc%h6mCB)ok zR-93pY0i_ogfdENHf~bRml9{NuoePkp}mYjhG4x2aef9$c@{6ipUiA43&jm}mVl|fOeRN-v7 zaz=v~q6E(K`aa(KR;=djwrY%F9(uPgvoW9YfhSOT4B(0!1Ygr!3ZP{-x z`c%7;d0n=iv-^)Udo5{prKZv%%{Pyg@3v$087C*CLk&6pHGJ*bLD3@atMPOPHj^`M zNE)*$YYuiKrTv#9$X7bDl;>^Ez->;srTh_Pn$6LK+BWxEXZ9W2i>X~0-5cbrE-XtI zq^U98gx3QOaJ8e7rpc5;Xn_i&&i;b7ZU1THtVCQ@Ck*kF7 zzb0C;c%AHvIAXoQ?A(V^n~J~u$a*x~Om11!oBN0#cpogVd(NzQBlo-`Zn8Z-xO-5oYtqvzi*nRb_*)UmnP?*Us5g^1@Kur^61W32dCO`-=HEs!oQ zN1}}~>Q~8eY0u)*LhSgEwWNzPPI$;h&}#XUhm69{1T1>QX0lv4@-g{YHW@$ug{-{_ z^Y%eqx!13(9fNsHp7|SdF?f^V?I-LIGs!!Cr|g&7OHbJ_&Y`Xh#_+=^>R$nHBK)dW zC77$#4c20z4w7Q4ws3_y=ughFf`&T4qd zIIiH6>TC?>I@-byT60qy>jyV=Y_i-x2r_^x)(0Vw$R6X_2dqAZ{>s7&_3$V51bgeD z)gS0|X|STx@+v)~F*ZZ~y8$SATJe+#dTDnN;n^FF;1wm^Xu5_%E5??h!wjp48LSR` z<= zmcHdZH68VXh7iT7@$U^GF~sMD85L+c_7<1#Rb?Iz{2oOW4-356T^M9EiC^zgMh3>~ zdKyg@L3|G;n)9elQkTXXZ|5ybFPP){lsEd{V| zDMDwM&*TFlJmHlx+}{%tpDmT))t>MV!f>Eh4FK6Z542+jB~Yu1QMnL5o`m?kcsvzq<%JgZwW43fEj+dmAp>u9%(k#K(0FzCcr*8R4T{VVUS;dn&qOH2Q6{)WRlF+Xmvs=mN}q1 z73eTEhXzU~gP&YKmvj#(f9jeC?Ky?+JfPg};AUJtg>>{=zOF6anF5WeyvEnH#$Hav z{Apk+8;_@*un~%iYEa@17mOgy^m9Y14i+$MHw_x6AJn|2@8Q^+UXQX^8}hl>ipAa` z-#xQb#%U1f&-qz83tp!K|2hjcS+uAUmqKxcOu%gJL-!Lu9(3Y>v-K~t!LCjoiSy^c zYgCrSZ|6Y2huN%`R773%>`caIWrfA z0k0pmn-A$MQ_i0cv!G5*xkjnpk;0HB&mkhn-A;Qh-|>Ho+$<}T-HRbcaZPb00k9-F%k#&empf#bQn3#$q5SnA&8VJGDOCXlJA6lJ+D=L9k zMC6pE;| zcj@13@CM=DwHi{n{~?w%$G#Fp#pie#&mAR=Mqt0clG8rC28=Z2?`t5N{TWjW$@Bh) z9a`hLLdErK;(3wX!nFu})pIv2Tnj6+pMK+su0&gUgX*xl|o#IST`?1{lN+;~N{`dm@Cg%z8NH5DdV|BJzX_@LUl& zsn2&mt5NCup)=+eLo~&vRmJ4q^5l<;X?m1zX9pc2gb20x8=DzY^x_G8xRG>Ik#Psw zhcGlpc@;5zT?r*7x8;A9KmaH7Oequ>Xx9hI!2-QyBCV}8RAY7Y;)YJFzQfT9O|?L^ z9{&K%G4ebj{WGW2cFI)zxeSI;WE)TpjWvVNE_M_f$soe9upCk&=JSxtFX@U=@cZOp zCa%Ko%Hd;@|N2c3qsczdC;R4GAQ~@jg5kskQkqB{vKjUy9@(MRT`hHZND1`1q0dyK z(H0*?TAT)p7-nyQne0QkdJCappU9oI!IwPU3ElzU2dU|bPCUrd75U*_&@pxpfAPQz zJh&=~-hUs&soUGa7wl9tNpCT}Y$Thu7{!Ztbst3tMOO8>QACk%;Sw9b-o_RCDV#sv ziGSY@uY|5w)`~HtlTVT?Dn!0E$d3Gvtz5tJQ;kl1sa@`YThN`7; z;ahmg=Q}y$FC>1-d}1r1r`Pi+4n9rwV@>dMCD2=sS{^<92)sncTyW&y>YMz(N9d%) z+X0_IQ;oNpP9BvPeFD4LfA&)!9tHz${tRy6-M%b?LK(e>S;#0AI@O=~`x$C%#N0$a z*^4TCxc((JP$jeOfgV)qpiBOYUTh4O{fV#V*R4$f>M{)K!?L_n<+**>cve#ZSn)T? zs}Es|qcE7rpLY~uHS)oy8Wl&0{9WpxH&AGUdyxi{fixQ68)r~!q*hxv z$U9z48}z9KALfN$@e-`f*9fR4JPl}$U^ENy)O<#VZ$Yg}aDgD$LsiC1As}Z=E9!Tm zR$CAS>H>k_96^&HK?tE%+wl4I8eB4)1%BFS`fhm-$hGcdP~9M$gUYS3+5nd7exGZ#Fw;GfLRX zOuIIw1zP`#x8In?xm>$ZTbEh~9fvEcKz%-cCGopatv=@v73Y29@6#h`zaYr}dj=i{ z3=4G4aCOej$>!y3`tC&OI`StA%9~BKn>WEKi2S9c+I3HN3gSIq*Xf|Oyws$QPIub{ zac&_N{RjyG8w&~C7gwH#7Z7ejSn72SQ1{4n2;yB|ceH zynKOTQqek$xd@37hu0AfgUfC0Y@@?wxNL5^g|EZcFG548UWcDQpd5bgdOThYQF!hK zn9|GF(*hG;;K-d!-_f}34x+GvLxVVUnmwnpAoACxdNc25Ic+p2*O4*KX5(*A3oj8> zr`KcTCAz#lSdU#VK@(WL0kbbb0_@#@?_7emJP3Y#2^tmfH)wjJvKf8Plfg+8=-n9s z!#L1s%gV9ZCucZqnN~Mp=dUn{sWf79lB9}!UHURe5I6bOc`46zx-!P)k_`9rk;Ip* z4o9xr;vKYE?Bj6cWrzqk!$;$>_ho3PC)|^4*)0X}Nf8!b21`RMra@zGhw{CU#qP+q zO&7$?92kpFFH`Px=Q0G-8(jSLG9<@b<^y%L*>0#0)I1g>>4D7uP!HWFb7YyxpPU?ip!B*hb9B~%O`zU zo-;Qu*JaJI*j*Mr!A6*PMMlHq62z0dt5-1Ox@}Gu;i#@bN+1Hz+noIC(5jxaNt>IM zo12q6Zk!-)+=Pd&Q&pAT0NuO}iEwQbH@6|72RGAH|IS&t*~HDt&8q2CZ}yo^Xv`Lx z5YU-_zeYPO<~?1Gjf{UOe@wuoXCWbiOo{hGT+Xc29D8OyuztXwA*r_S_Ec#OhRy|rpwQK z#Miavk%b<^F?Xo&a|@T=QSN*@c(Wdl-JyEaLA-Sb+NNII>BBcZkKDAcn`I>)-}7~y zHu6_=J$UslL^OPxvSWQ%rZwB*wB_YGNgXt5H{iUxl*oCo>@HYhKj-rl+Or%)J5Q>; zT~7OVSbZ0o#6IHC2)ox8(6;23$uC)4Iou$YVZuFVm;7hCBa>j4=^tJ1k^g- zmf_6Jb(_MJkTcy*2h|2bO&pe)LqVWTMw|8>uwAZd^_9PjSbb;L;(ItygKg;Vy@+^2hVdHD8rog3q}>1;6mZ4QpZ zm>oJZez;9H0wyd|A?@GOIhY;a*{&ObdE0ft7_ePuW)ppY1~6$T-^{|-c7U8wzD@)# z-Jwf_$qFsXa6L>Z)`f&+rFF_mOUrE2zD=vN_U&4CawznBXLR1Fi-z1nmCC%Gx&kUl z-`S~q9i|LYj}fz57sZ^&KG3~|mAi=+7v}BNl{Rw+P9@h$aX-KI2fI`M<$K*}+k70T zhvPlEnc>r)|A2Q!Wvwak`*f?}jS3a=)jr)i^UP;I@12FS_Uqg&XFvCm@0{nq@hzzJ ziSJyDJD^)hg>HVfSHe2AYLnHeO(p^v z8vWW@JGE_P?U=TZDST>xrCW4$@VDK%p%_)6tIul*94&rRp)>2=Vy|(L)JI}wFrGZ1 GJM(|ilV;@r delta 11454 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 diff --git a/polkadot/collator/src/lib.rs b/polkadot/collator/src/lib.rs index 3e17d379fa17d..60b46d47f0b89 100644 --- a/polkadot/collator/src/lib.rs +++ b/polkadot/collator/src/lib.rs @@ -69,7 +69,7 @@ use client::BlockchainEvents; use polkadot_api::PolkadotApi; use polkadot_primitives::{AccountId, BlockId, SessionKey}; use polkadot_primitives::parachain::{self, BlockData, DutyRoster, HeadData, ConsolidatedIngress, Message, Id as ParaId}; -use polkadot_cli::{ServiceComponents, Service, CustomConfiguration, VersionInfo}; +use polkadot_cli::{ServiceComponents, Service, CustomConfiguration}; use polkadot_cli::{Worker, IntoExit}; use tokio::timer::Deadline; diff --git a/polkadot/parachain/tests/res/adder.wasm b/polkadot/parachain/tests/res/adder.wasm index 954ccc7810321a6f9e7b99588733b3a750f20a10..93f354400f5e85e8be3c700daa76034ea0a023df 100644 GIT binary patch delta 811 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 I=3_Pf4+LA8^Z)<= delta 10032 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 G*Z%-6a}M7C diff --git a/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.wasm b/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.wasm index 42e9db802bf870f0a5f746960dd165924cb8581d..3e3d2d0c8f708c74fd70e6ef46e120b95ec03d83 100755 GIT binary patch delta 10386 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 delta 10278 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 diff --git a/polkadot/test-parachains/adder/collator/src/main.rs b/polkadot/test-parachains/adder/collator/src/main.rs index ba575a61dd716..a20e64b23046c 100644 --- a/polkadot/test-parachains/adder/collator/src/main.rs +++ b/polkadot/test-parachains/adder/collator/src/main.rs @@ -75,7 +75,7 @@ impl ParachainContext for AdderContext { }; let next_body = AdderBody { - state: last_body.state.overflowing_add(last_body.add), + state: last_body.state.overflowing_add(last_body.add).0, add: adder_head.number % 100, }; @@ -86,7 +86,7 @@ impl ParachainContext for AdderContext { let encoded_body = BlockData(next_body.encode()); println!("Created collation for #{}, post-state={}", - next_head.number, next_body.state.overflowing_add(next_body.add)); + next_head.number, next_body.state.overflowing_add(next_body.add).0); db.insert(next_head.clone(), next_body); Ok((encoded_body, encoded_head)) diff --git a/polkadot/test-parachains/adder/wasm/Cargo.toml b/polkadot/test-parachains/adder/wasm/Cargo.toml index 5766c75c00d09..087b937b646d0 100644 --- a/polkadot/test-parachains/adder/wasm/Cargo.toml +++ b/polkadot/test-parachains/adder/wasm/Cargo.toml @@ -12,3 +12,9 @@ tiny-keccak = "1.4" [lib] crate-type = ["cdylib"] + +[target.release] +panic = "abort" +lto = true + +[workspace] diff --git a/substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.compact.wasm b/substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.compact.wasm index 2f820fe81c8d05058c55493dc11d7cd5f8c2f40b..50752549c7e77379a87f8c685932a723e3f70828 100644 GIT binary patch delta 678 zcmZoz!Q8Ndd4o8U2tNxO3l}4s01$A22p|xgtj)AgR7bERwYVfcIVUx-D88U5H7&D( zL3i>)CgBJ@F0f2NVqRu4gT5FM8c3CERmFxn4M}AZ)9r5V8ja+ zDJjpd0P~HJ_=ZLn43i5kiRv<#N`h6T=9T8A7A2OXro@*NWv0d#<>!|$nDKz+iWBov zlJYAU%qRCTTQFN%sct^Wd_ait%H}RHb;iw(Qn8GT>YL|FXD~8qOy-bH-E1Hs$TT@u z_W0zD;`J=73<5%v6Aa{dv=vw!C9)J46_^CHH+LDtGH$k#o59Fvu=%q540c9~$vNs1 z1ho`c9XYZb540a(aO8Gm5zyMqtC7pXs6M$`rkY$mWN}e;6nKG%aR4GC9{Qo@q|oppvjsS)Fw~5;0JVc)cNYk4=xn3Wyh=dgs4moxF9*%>9Q}Iwl|1BX@|(Z zI*`CfNi0c>&&<=sj4nNhP-<>LNo9OdYDsBPo<3648BD%^(aXaSNBkL~M;~%*0b|ny zHS$a+7hV$4Hp3lv<|t8TVKjN-WkunP4k)fVne(#bM8bd{ERmFxn4M}AZ)9r5V8{y= zDJjpd0P~HI_=ZLn493D>`P396Q&U6B__EZZ%(O}d6G@0@UTJP>QDRAIigbKQQD$m< zQGR|2gDDSKvN$m>B`Lpx!EACLvjww-mHOtB%m;)RUu^CYQ)isKRknWfT`57P%^SsI z85uP;^GjwhGOA9lkV>8WPUbiZD}#X0=DqT>7#a09M<~uR^)mYXMO=CUwqOwy}mRNY*sm&rWYN=}AHOM%5vB1?f$fk{AXbCO&v=0N-E=vQcFsU^7N1*Pk*w{C9iq|95HB!9)Za51&mK) z)aWz87JH`Xk%x#oGicOtK;q8aXma3X#mRP;1sN?S2VAyix6F=L@d;6x9DQDLa^Xea I$^DlL0kO05(*OVf diff --git a/substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.wasm b/substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.wasm index 38917f3af8af6c18ff25c7e67305fa0a1205bbee..489e6ab1c0f93cb688d04bee03c50e00edd60509 100755 GIT binary patch delta 597 zcmcb#lKIj~<_-Q#BK$0DEL@Ci0zkk8B7i_}ax&8~5o5uU)Z&u(X8O$cfGfQ|{@PmbtauTysjpB_=%@{0s!6GH)`4wQk6%yaj z$b!LI7%ZQfVq|J+Xc=FYT9lbq$zU`20JF4!Ee}|(I596JDZhfjZt`np3uXsLoy}@2 zPlOn+Y~~hMXWV>9DwdH^Z?l3-1|y^X}%@f`$sLjvQHz2igxXIC49( z2pDee)5v9E)SLWAr2&Lv0lvKtS zrIwTy<(VNxjQQk^m%JD)fUzU)YKa~@$dLhzENj%bvB4HKw!oN?;xw&K?em^M~*DV1MLSG9Jw7?1RORCYvr;q>Q8Ret7X*L{9iAV zdGc;K86HCg7DtIJ1x5uX0mIFY zsG6*E!3k*fiwk~C2Kkd;UND~g{G#pTiI;pFjUb_rl30=$pP2^@dF0qI!Hf)3q_{Af zEO*(9(Hs~d;szGz5rQ24!1%F3jSg#2Y)szIEX{9=5*2on-(5ClvbUT3{<7j^mn*XD Y4%zW4J|QZTbuUOxcE030Iq^y%04}l6Z2$lO diff --git a/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm b/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm index d668a832eeb521532f7be3dc870c67ce1fb972c3..f8dcfd3f385085e7da18092996f9aa990b20adba 100644 GIT binary patch delta 882 zcmY*YT}TvB6ux(MTV2P^@rTtH*~$J)a}71K@h7jPwv?{B2E7=u>8LB~su-YvVwgt~x%8pFoknl;Np^!AF zb`Yk|3~${{3CKah<{;iu+P1Qv6%6+hwzg0EyM2VM@6$omPgq>1hcEj=-D0p$73G1j zFF;sASJUbTRmC3+`P)TVQTi0Z9>(CV$659kr;xXWl=fmQMU{JuMQRMN}y%7j*k5SDQp(U delta 863 zcmY*XT}TvB6ux(MTX!9|#vgWlS$49h&CNB`%*LO*X4+D@?i%z`#H6dPtn1Ith7we+ zt%gCZo(dFv$?J~o=%ELndg&qXCpt5l*~6XheBV9in|tp$W3z^_ zS;Om3)G{?NPxw28O{rgLgOMiH0@H>G!DGG5S)V872{VeE;AAfn>Z1eAoVl+bB@0W! zR(dw=16#&hx(FXL9CQhOWO%W#B-221SMFg}q2M4qGchWpBQD2L%G0GiyF+R)i|1$( zx@>K92EN$p=p4B1m*@h1J?fM_mWrN^oC+gdQm-EIQiRE)&jdOS-jWuqdsFhAPQcUC z4SL)Jby5xTCsIh~`KqVXN9iiuE;~o3VWI3A$~omX(SEeN5aZ?YSI+f#WicTlWyUr} z^2zUbWvNb0Nb|^Db+jTx^@0L8S^1NTCm@$KqcF^h(cuHTrN=G^SJ}1AM3ws2GVOoM zG`3?2SI#ctwVc%(6fZr@j$1^IncJAavbHwFj*h^ux>}kAXM9d7z;)j#=H>))m=Gc$S`odt zI9zK~Ag(>Se@7P#0!EmRsO4?KXWwk9Ns?nqt3=o`yss}hxQ;F6Q=+|5sYhudOdA#6 zvYiqRMhF`MyT7n{Mw9idNUWW(xn0`XDigM_OM8?MVM`j_e_oEZijfXQ40grjFk!3k z&~M|``eD-VDN5q3@z!W}V?O>_3ATH>qlArXqAAi5X$<1=CNyTgA&2E{{u0aqH(i0E zfTVToLA^`VMx8e*!KgxT)-mQgL?LR zhzALz8dU1c>8hMA=Q$E*pDIISn_12G$PRmA?j^hUwa9i&;$0%(_E9niQ@|+QxW@QbP%XAfP7IdWHb;4y2_khn`QeX zDjXXFx^v=AjQD}>p170IAkcmG##?bNtB|E#lTj%cjsyq9fFzAeKwl);SFfdc9Y>Wn zMx+5N{yG{Mvq%x38w#llkB0{Wc)v}>(?9T!`g8sl*66!R4q3m?jzjg`=O!7}*jLpa tpT#%;sv>6>fhH7&tGfa;saV=*AQA=jx$*pjUkXO28gdkqhx*cU{{Tzg7}Ed% delta 984 zcmY*YO-vI(6n?WUrLZko`SsQXjaCpEfuIyiIu!+s2nBD(LxBQqO2Kw(AV#G{eu9_E zcoYsog25OGOArqv97r%Bgm{ySi8oXZCd30jF}~TBA2)gXz4y(VZ|1$3nOxFMF6rie zlC+uO6%d~Rol$qmOFfCJLxuwbLezXu$eA8m0jie;=^TB_U6H$tmgde&b%HTEh*TPl zv!=|mB+7i5pDb%JX9a*PP}xt7{sK`pRR|!Psoqb)2J4Jw)uZ-{EFCG_e2%lrqi3rYL|r6V$lsW=3dCq%M-*}Z42@;&=5uzEf9t|hJHj%)3igzb@303*W zk>?$MsblHJ!upD=J{yyFdF*V#Dw)ZLRK>58B(-J8GZxHAh^SjGx7CEhD z1tZ-+myg5VE)USv{(<-`%;w_8{AHmz2lxf{NyF zsLh5eE8gysP#EY0Ck?@#V4D}WH^n1kt0&+|#P8Vs<|4AmMw;#Xc)vAS3;7cg^@=yF zfcAz&vDXvwDgDI>YJm^e@g4&E-E3jMnlDrwa_&sP*V@(-^4db)a3r8;i^qp?0Dx*J U*kz#OoDr;-fWA^YT9!ut0jUWf4*&oF From 5e50c6a41cb30f4b3bffe2e34fc4fd3b7a673c20 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Mon, 30 Jul 2018 16:32:09 +0200 Subject: [PATCH 19/20] remove dummy registration test --- polkadot/runtime/src/parachains.rs | 52 ------------------------------ 1 file changed, 52 deletions(-) diff --git a/polkadot/runtime/src/parachains.rs b/polkadot/runtime/src/parachains.rs index 838c0d816b574..5629f440b5431 100644 --- a/polkadot/runtime/src/parachains.rs +++ b/polkadot/runtime/src/parachains.rs @@ -376,56 +376,4 @@ mod tests { assert!(duty_roster_1 != duty_roster_2); }); } - - extern crate substrate_keyring; - - #[test] - fn registration_call() { - use self::substrate_keyring::Keyring; - use codec::Encode; - use std::io::Write; - use runtime_primitives::traits::Checkable; - use runtime_primitives::MaybeUnsigned; - - const CODE: &[u8] = include_bytes!("../../parachain/tests/res/adder.wasm"); - const HEAD_DATA: &[u8] = &[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 27, 77, 3, 221, 140, 1, 241, 4, 145, 67, 207, 156, 76, 129, 126, 75, 22, 127, 29, 27, 131, 229, 198, 240, 241, 13, 137, 186, 30, 123, 206]; - - let call = ::Call::Democracy(::democracy::Call::propose( - Box::new(::PrivCall::Parachains( - PrivCall::register_parachain( - 100.into(), - CODE.to_vec(), - HEAD_DATA.to_vec(), - ), - )), - 1_000_000_000 - )); - - let signed = ::AccountId::from(Keyring::Alice.to_raw_public()); - let to_sign_extrinsic = ::generic::Extrinsic { - signed: signed, - index: 0, - function: call, - }; - let signature = MaybeUnsigned(runtime_primitives::Ed25519Signature(Keyring::Alice.sign(&to_sign_extrinsic.encode()))); - - let extrinsic = ::Extrinsic { - signed: signed.into(), - index: 0, - function: to_sign_extrinsic.function, - }; - - let unchecked = ::UncheckedExtrinsic::new( - extrinsic, - signature, - ); - - assert!(unchecked.clone().check_with(|_| Ok(signed.clone())).is_ok()); - - let mut file = ::std::fs::File::create("/Users/robert/Documents/correct_encoded.tx").unwrap(); - write!(file, "0x").unwrap(); - for byte in unchecked.encode() { - write!(file, "{:02x}", byte).unwrap(); - } - } } From b393ae9fafdb06758e9727f6180c7e67483bf7fe Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Tue, 31 Jul 2018 15:26:01 +0200 Subject: [PATCH 20/20] final grumbles --- polkadot/test-parachains/adder/wasm/src/lib.rs | 2 +- polkadot/test-parachains/build.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/polkadot/test-parachains/adder/wasm/src/lib.rs b/polkadot/test-parachains/adder/wasm/src/lib.rs index 2f58d11fe69b5..0e16142647ee4 100644 --- a/polkadot/test-parachains/adder/wasm/src/lib.rs +++ b/polkadot/test-parachains/adder/wasm/src/lib.rs @@ -14,7 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Polkadot. If not, see . -//! WASM validation for basic-add parachain. +//! WASM validation for adder parachain. #![no_std] diff --git a/polkadot/test-parachains/build.sh b/polkadot/test-parachains/build.sh index 5ffee4159d013..d53869f2d4774 100755 --- a/polkadot/test-parachains/build.sh +++ b/polkadot/test-parachains/build.sh @@ -6,7 +6,7 @@ export RUSTFLAGS="-C link-arg=--import-memory -C lto=fat -C panic=abort" for i in adder do - cd $i/wasm + cd $i/wasm cargo +nightly build --target=wasm32-unknown-unknown --release --no-default-features --target-dir target wasm-gc target/wasm32-unknown-unknown/release/$i'_'wasm.wasm target/wasm32-unknown-unknown/release/$i.wasm cp target/wasm32-unknown-unknown/release/$i.wasm ../../../parachain/tests/res/