Reviewed-by: [email protected] > -----Original Message----- > From: Mudusuru, Giri P > Sent: Saturday, August 6, 2016 3:48 AM > To: [email protected] > Cc: Yao, Jiewen <[email protected]>; Ma, Maurice > <[email protected]>; Yarlagadda, Satya P > <[email protected]> > Subject: [edk2] [PATCH] IntelFsp2Pkg: Converted GenCfgOptUserManual > from .docx to .md format > > Converted the the word format of the documentation into markdown > format > for GenCfgOpt.py > > Cc: Jiewen Yao <[email protected]> > Cc: Maurice Ma <[email protected]> > Cc: Satya Yarlagadda <[email protected]> > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Giri P Mudusuru <[email protected]> > --- > .../Tools/UserManuals/GenCfgOptUserManual.docx | Bin 28336 -> 0 > bytes > .../Tools/UserManuals/GenCfgOptUserManual.md | 353 > +++++++++++++++++++++ > 2 files changed, 353 insertions(+) > delete mode 100644 > IntelFsp2Pkg/Tools/UserManuals/GenCfgOptUserManual.docx > create mode 100644 > IntelFsp2Pkg/Tools/UserManuals/GenCfgOptUserManual.md > > diff --git a/IntelFsp2Pkg/Tools/UserManuals/GenCfgOptUserManual.docx > b/IntelFsp2Pkg/Tools/UserManuals/GenCfgOptUserManual.docx > deleted file mode 100644 > index > c8766d5775158a3a6d17d9a0ffda598c8ea516ca..0000000000000000000000 > 000000000000000000 > GIT binary patch > literal 0 > HcmV?d00001 > > literal 28336 > zcmeFYQ?qD6vn9H0+qP})W!tuGuf1&Bwr$(CZJWKn)6sGJM)yBBT@U$E`7o<uj > 5#W^ > zYRF3ggP;I_0YCr%01yID4&a$&0RjLZfdK#@13&<23E9~?o7g(*DSOzPIO)*2+g > KA6 > zfB;eC0Ra8W|9|7Z@eVX8kK1lCAatXj@k4Z>AzkA|6x3x2UEnAIyUgoiS{frCgUz > ^q > ze#RJ!*&`1-8Xgh(WAy~bW~FakWlgii&4K7eI4~k%y5mwErWU_7w@vm&z(~A > HuJ7fe > zcnLT#f4><ttcmqS&ErYc6GiM633mgP)<Gchs9nTm5$To`M@jywNX6xf71Aq$ > %k5E? > zh6qWM@8+voNv&It_QJ~|siUl48yFR;K%o}0Y9ewcW9#uMjK@NO5^wUhF(L > BT!xDO- > zW=u>1iEY8hkflR4v`aeI;%vrk#!+d2cDs6q9Pr4*&dRTf3WeIO8A4$pa5|Yq)*K| > = > z$NqeJpRp?1`(-7E^i3;;arA7+if!Bp5&`Rk_~32O#J!;1S)Q9o;JD9<*c1J3&RMFi > z=DqjB?uHL`^`n7@BVW~FA>51T5Iy)|9|@tyik%2TYq`I@+tSI7fk!WG<v>5{?*| > O& > zVTy|Jng_U__*?g`^8cosWRbX;ZCdaQE?~!ea};4Y&)E10M!H1s{MO81W<Y8QE > *H{n > zhVy-c0|5N~0t3kZ|45A&kJbA452>>MI1Bxc)OwC4)=u<v|B3&P%>RuU{J$+dD > q&L+ > zSP&-U7IfEO%!hpwifCbdM?Bw+=n^<6{R+?xZmMXbr@N4#Lw-~D<mq%$ZY4 > 7?bBVi@ > z2dvgWV>xdvQ(tV?%H5_l5?o$mOe-V63|4HW&cfDig`OuqDW4~bv9jQxF+`Ar > kI0m{ > zu24I8tVg*c4o3n~DK>rz`#Gwzqi6I<4LBpcWJ3ei!t7R{c~qTEZv{?=9m^NW^mc > 7B > z9CZxbz;2z+kjh$O#4*~E@|gz9nqihSJKnGgifzxLVEI}2S1&Rqm<BQ*GJN*Y+a(K > F > zQy1QOy})C%mK&c?g9gpV>r*JOk=~r|pS=B_96@-C17!I(BL)HhfCB&l=w|0=O > #eTL > zVr*yRV)IV}|090?i!^}$6!2g6fA3M1*e^TC@DDWNT|&v+GVJ<7=G%1sP1Gp;t > Ww!* > z1ril&z%MVtl`GAgXXRqQs=j_Lhr<`E%Jb~*OEV?bNaQp?)H*db@eQw6$0vV9# > 0O3a > z9MKe8fQ>7UpO+6%sRZ{CQ#wW{+SH{rB$W9bV;Vq+8C+S{;uL1E1qq)(YlFX#K > <_LP > zrrK^j>r7^uHBTuYFTYYm)@$IB<+`F%cJh@_q|DlsBqzHsyKX1qT~YT!OCB^R<A > VC- > z-he1f%*r|Xn0(WXe&9!g@vzg#$y>o_bj*{L(%^9fUkr$4LoiB=m{_*)2{YWwzK > o|H > z93zjW%rM+LV>wQ$Cs_Yt;*3~JV;$3&7%I7>EJz9wx8oxpfV0^NpvcxfN^l<_jBT > e8 > zxQjZ-!$EYp{Y>)zgUbJjy4#s@{CQ>o0PPt-0K|V8|Ao5$9dB1YpSGLgDX+iyb+>& > l > z0FgI%qw~Wl*3-h=4Rqmd$lUf@-OLy;SWUv~S>gpLMF;K;z)##){GENTfS;>;V|< > eQ > z<FDK<`4y5P;T@c4T8n9GrtvPEE;px3<-5O&r~7^HN5S#<QM$M&u~6VK>=$6X > e$KBK > zd!d;#k&D3O5!(v0xFE#0%l(DuxL-=&_&>9^_?F#y+?bw)Yl7&7WiJdjJzQ<EhYr`r > zlVx7Fu-j+mXKsT8P#^aS>=->TA3nX8-QExbJClm}>iWIWgL#)Ch$B`Vg>tse1RdBj > zFKAKSh$9!^`*YESg#=w*oX&%>iTBV?e6B{nEBJ5s#2<9Z#_au-ff5`Q;gH?pWW > u>i > zZ$U%w?;;$HP?K$6lPUfH*!L!9uneL4DBGWh=S-^Cuu@&AN*^qCh`Axa?>mES > ?mW!8 > z4M#Lyb5Psh*27JM={GceXZNuoz;NIjyXQ3-ylBvmXvD5T9pWc(CQu(~j$}fs_@v > ua > zU|6Vad0{ShpDq~EBje5^Kc3w>QG8@Rhz4|wjemj_aypvK%i&DLUkAInU*NI~ > T3sF3 > zq5izO`eX8<#NrN&1#+bg+st_t<r<ylgPAUN`nt$dG|fa-KQ;otmmNQEj}zqBc*w; > { > zE<2WP=x0aohE~<W-yil3uI6t2TQGZ$ly;^2UBl03Dn?lEpl;M<>djnXDWlb(kf+hS > z_f8-x4d?jdp=5r!%mV&1!{Fc5(T<AZ02kNVZiPlaH`bWgk=Pk}{@+k1r(4d$(KkK} > zP6hU-(R$?F&U&ZQ=&rfw?y>iMpUH6kQQ2MmJ$ifLu075nuzLa?=Nmv6dX@ > ~oA+f!q > ztHZfYVpW$hJn2uD>_>vIY<OK9;FS19LAROKQ+%#ni@8C(2^nGpR9UEH!(ba3Z > L!qA > zzwc~+Gaw^0SzJ2>VjRvybl=9g%ecQ8FbuI|JD=%ihJzpRw3F1k79ZX=80AhkS3* > zR > ztU1LrS2bE3BF&%o9Z;f(`87RdahgF|#N}sl&uA<WDe9%(wysC<2&oNLg{A`>*B > Auh > zv-MHLo+Or@`vWriNuK^vrtSdG@B0{`O!Hj_@RrdxDA=y|&hOr#7WRU)u8S){ > 1yMkJ > zT*o1h`QjK|7S^+4c!zB>oGi-7O8`UB9)+JuUl9_D*hux$R8^YCdd}Lx771vK!O$F > @ > z#InnlxbUuS$9LtUx`Z>EXim~yE0lopu1<62z6I)@Dow&O(;B6|9M7h!K54U`oH > %*2 > zhP!3zU-&uvd=(sbIgRIiMYiB-I0MKu2_P||I@8-pcqlzZba&}!&Pu3R?KWXozdY;i > zywtEBd~$i}M93E1$Fq>$wl_R?clngC4Go*~gzsJ*UpxNbioikcPA{(4%M-q+Ual > ^K > zC~`bqzL0jwc~N$x7HHWk#t)K@Dmu3|XO{IoidsR*X-&kT8o)<RS9ry)#>P|pxW > YPB > zy|}c?b8w4UyRRgzXstDIWhY8DPaOdNX_{@TiQMwBcF~pd8Ry9`0=GJ7FD8h< > =d_hP > zE5eTY_}K<=K!KtGF+yu#1(iNXB!hl0Qs$t}4!;8vp=P-Q078O#axC^<;IVp0y+(G~ > z^4PTsj6Ug3Hz=|uM0JYe?9V7{_qSB83`WNLmV|uK9-8UKCR9iD%vsEh>VWw > W3u6ve > z@IHI12Nv_P3y1=^%7w9?#%)xlN{Ym3RU9$SXC@dTdGMUME<~fu+<ZPbuB# > ~=N3ekS > z*<~<;8c;B&dsrJdd8x5!;y2tSnivkyK8Y!VXmM8+3)=;p^n%G*T+3l46K^a|BNzq~ > zk-mf27vpE?m5qflJPDI=MeOf<W+BjvGPJt`!u}Y)1$;XF8H2^oE)n%(7i19dulIP& > zMh0(sf1-Q&p>rO6^<Bl4kIg?UtgMS2BaC!`+m7eYk#7Ml(2I{!fx^&KD*{}am;;G > T > zh&$nf&Q8^#h7<aJE<JQa!Cc|U4uiLXW>HUoXk>1vk-P85j|oI5=VgkRYMF=SJx > #<1 > zzA*whBO*WJj)g$vYCYO2{mwVWbz<0Q#7k#AnY%*CBrkPZC!&=BDTg2q{)O3 > u---~> > z9+W^qj(Cm>3(5^c^ola~eSha)zxo$@DS+UP&c0(<AvOhH_F%S0kG%A&xPj>Jq > Pqa3 > zz34s*C0+vi3G!GlB~IfHeemGptOr7lr(|NVFliPeywCsa1ehI|WSlI7Be;ea5hk^_ > zClHCZQ3{Q^^r&rIt_(LrEz6c$D4{-?@Y5nfN*_M#o`>K~R@$F7TuBzI(<BEGA$S > q} > z4tU%hdP#cfcgFg%#$h-U_%ni!#`&QWlf*8;kO=*4-%o`Y0Hr|~fNsa<F##rg4L3 > Vj > zVZxK%kac0Q66=|UyDkGGJbV$C|3mOeoHHTji6I3<c;D_>Hk~E#?bC|hj3-9Nw > C9WS > z8sm%c8kG&m-B?661x7ZVb1n55X$(HZVnKQKQ!5YBmr5ii>55dN`+#mBbBBN! > NqQeT > z6;`wBmxMhF!hFp;dw0Ke!z&acmItOt7!D{i;#~xQnZ)xM4;I>FtclX?a2i8w-~HDA > zD2mh!lhOojzW53bJb<A|M*^gUTF5<@sg1VLw{p8Jr%lHoaq5Ok06_3IIs41Lc( > d8{ > zee$#Fhw-=j)n6W;BJ-R{X*6=a;^*J&tVi1`!75$7iQ5lEIM<LC6b$kgVjBwSR=^cx > zcu*CvTN`%!J&2wHUfQ0OukxZPDW{V+w|>{DYv1GFyVevDH=%Z~S|Poo=Dc > @3LI6Bn > z+^lTncx7rQch6j%oVNgUI`t52-TWuEOKiKqJz^~N4Eg=G{+)}&5kK6$Mj{^;`(eGs > z5mSaV7)nZwmPzodWQDsEoCG{Aq3Oasv7c1w-@&c~&;>{HdAGN4zPk=>csb > Oe&WB_U > z;Y${Ng+y(38eI8$lS4XS6E&D69f0y1&IZkRi)lV63d96J<0E(u3Q95ilYJY6QSn&j > zUD)qVuSXMWhpHIFZKV@J>_YClt+>4<STMkpec1#5ACd}BmpRILzbE!Et209Tz > oD(R > zuZOrys$#rgzeS+sIlLqe`#yj?_1?VoO2AnV08oM8gHyu0&8td0m{WqWcI+8_U} > @Fo > zZ)#I*)iZJ4$>BLA@vc~(EzDW6jn0lU<{{TWtxh@ih_36D>#8Ne>*`O5wS_(7+D* > 0a > zzqmkOAv`a7_$QT>9dfbP*b{_afAZ+3FpM4=W)Se%_`io;3Oy2}?*Xz^W3-B?Bx > DSW > zprh4p>ipRTlS$(1v!}0ZT9p>o^U|;=v9MDl6m=6=G-CmoXemT6#O2_V;LH%5g > G+O; > zRTknT;duM*2WFxB!UD=cS<^fM^*^f&PV9lausCX_W>5YioHT>++N#bKYTbnR > _@{{N > z)KP@sSC7&{-N5|4wUe>9W3kstC#ChzoTL#obtD}VOF;#sPa7J$CdBr#K&V$xQ > {6wA > zO25^K#m{M&(#ad(hdbEq=lD85xwyENtMzL$|31|D>LiY+hv+q#h2O7+*ef{og > ~$z+ > zO3^J-zH`eC;m{6Ea*)0_N3mCuYg&C3^G^WKAIR{hIZ(h73DyG^=keHBoAtP{9fi > GJ > zL)_I6Gim^Mh*pl3i_yZpL2qt+VtcPa(zj2WnBnATSIS1j^Z*^#3rw`94V`<@DfIAp > zUNkw>$+Uk#<^8C?e*u3%_a+0&4UNj+-5@V13)Fe#uiVG|ey*k2Y8~Ok!CAc > V4Jz`# > zM7&qel~R8wBh6QfSm^+E+)%s%p%cELyk&eDGZtsS;u)y?3}BasP<s+Oy7Qk6< > &fDS > zHyv=s^Zc6=;oESf^TB4r#x>wAzXQRCRr|Wr{Ww#96?>JWC27oAKT3JrS416dD > NLZb > z6$IYWw0cdURnrnXTO3esP`c89z@56ldU_v-EiQnV!hAq>FO-+diTV{=ZivDFEF > Wv% > zf-)mb3j<pY3O7;qLw-<SJtA{hdiio0St%7_z)wh5&3n~;FCArC?>R+D5iuyi&Q_TE > zQd>Hc7@Uym!L)3m@DkqAZGnfC2{t=dtjuE@rf<=W9KCNY3J^GOzCVVGvu$? > a-2nuP > zoLqBVl`$$C-|r6-KwCYO#xK_Xv2Z!j#=HhAi4UOjnl`T=Qxj;GA)`p{53ie6JByhd > zl8@^+l4y@3Kb4V24CI<7NOOSjr}cs>H;(zwjH}`jVvBxYJ;HM!{x-7I&zXl29(v#k > zBr-CdpKxCwq4t<IE20+&d5v2eY*1s3_q&baK6O`Y79M;x@LK(Xc5aEEc{kja7JN > RD > z`DGZg%-<+pb#{;<Sf}V42VWmzL4s-{D4_a1c<8(Ox7p)Lpj`*AF|oR%B%`x|%6u > ^4 > z7sTAAu-G-ozYU*Z@WTO2BHqq@I#zI!;{Yh9=|5bn`tJGx>VZ|;_0j+SK!GAu=(oE > y > z0BgpLEmRq2A>CFKi35R_1-sA0d~$q;C^xj~N&R=Z%txz_wvtJHba%UieYIC`KD > G?I > z#dk9yF*G;Y?qaDz717%_NphMJS>E~4-P?C?tEsC-5>>G%FVgQVQjHLN<;mkN > H{J-t > z=k*VAtxB&{lA=Bjff6K(S8bA69H?qpzZ+?CV4n`n&Z<;1PW}(blo7XqT0Th$FhblV > zTLvc^`f!N3xe^jc4V3FqvUJkbnESefYPi?g>D~AiHxOvDiG}hgf$Mn;O8lO&${evY > zg}>S$d?ZKkHeB%y-r0ba4CQ`{KZl={mzgwyYu{)EtxtrC44vPjnJ>>Khu3naYHI9u > zwPhrOa`?72e&#!0&T#CB=^dr%$s14<omm3B&{Ui3=Z{Hw_9s(Q0EssKoJ)&6* > 7L@H > ziHzwUy!+WCy$f=1NP{M{<!uQP59tJfF_DE!_VxeVApJF^Nkn>|=S8h<aJP-tQG) > R| > z&EMkV<U_F69MfgL7{Kw|_R1m%53!uN=1EhN8U{n!;TRMmLCu495EV%%Jd > 7C~s|_sl > z_Q4NiTO#v;u^e^PBpeM~vj@gle|A0qyAXf&W%)TrPN-eI*QmhVD6Kglb<m^{ > df?b+ > zLeypJQF2UA;4>a*f!V_>gXNZ6V6LuR=H%n&L|?NntXnjuIO*9h?`*s>1WSA5sA > OAV > zx6@qByAsJ1`d&{j+sMR?3!M_07)D90T^yui^q|H)Y{I^WuebF`S@6$^vbp+}Cw > gpi > zcl4fM_H7P2TKp5v3)Tfd<@Lw0*<p*498{^Xqjb%`PhZzpp~!ZTp=C+O2SSB-MG > Iq+ > zuM$O5#COf5zkjE^Q^fsKsZihAFlu>Yu@W<@r6I$zQ?cfbsYI$~L{^%=4^ZYJ#ok > w( > z>95sqPS<;ixPSJy<(62wu{OS(EjY)1URkmjnA_f5%j~T3yV7XApD*Kq7;yjGS(=n% > znTZ39A>QcX3iz;F_A>&S&6db3i^X#|cwAZ!AaEr}`tjS=YtTSfG|}wznuGjWy}Z2I > z^`uJaqZ_ciQ#?K+JJF0qnMl?~f?4aibPCKcqh~Y5IOMRsI(o%2vcs6msDaM!2-t* > < > z-VzPvu`4h-;^Z+^QvgN>ot}8b<C4XgCDK;b0a6*069GRLv>T3jQof+SGF44GhS& > gG > zQ6oxh<?+GzUrUxqF_sHaXS4>hHzwrf9bZw@W0f@vl`{M(2ayR<X1o&D`}jxlJ9 > #RY > zem$R{X&yNB1Q3lKx?g!<a#aJ~#7fT`jG#-Nbn?YfrTH=bW6_w`b=(+myxgLM& > >_`9 > zuTtjZKctiTqXzMwI!=5W6L6wGob8T9lVpP=3(C}Vc`UIjntbi+KZ+bPIP9s*fb2TY > zKz5r~FscsK_4`*!r@l=nR;t`21&hU&%;&UIrW-87Eu46(ip?Hy6eepr=!Zo}&}1r~ > z4>xi={Bg|Hw=VS~?aXNr7rpbZN8xUf97Id9?w=kfg?v5-Z0YJ7H2m6$(=_y}a)6_ > Y > zBmym{dO>_a9ZH^)9X(+$osTWL%|_6MI=K(5r4yE=Yv$@!g=e*ms1agA4Goi?; > qM#n > zS>p*+W>Rv9&sRmz4NeYO2I9l66dOZD#KIimc9hF5;hf1Ii5RaA3dcxG8~L8P&R > O2l > zJ*pRBvP<SfX(Hvusb^UcpABKqPv8_eSHMhbN7N%_SnKNNx}j&T?D~hk;8kJuH > k#?; > zk&?UXC>|*?@(@WRDC5C-`WU*O1^eLsZSvF7ptm(bBIumWZn3mSOMd$8_ > ww#m__kP) > zz|GRD*%!<0!75-b2bAlQWEZu+w|?{=v+bRbe4fOr-6zjOX3g;tzn{A^z1+dG9My > _@ > zy(q)GSm)j@D;+WzNhJ&jk$yQ0YaCW!@~f!yk@j$T%LtIf7uJP~6fIg^38yuU>Zb > YD > zqIX9SRL~&sS2n<cSAV!<u8trSCnIr5n?=#ZH|ub&K8_z?`g(dRY$}}~L|CIQ(GXqR > z(SFRk<v;~3Gz`qwoHO=GR|~CEe?B5MpRJ1?8q>$3+!b2fW(0S+9Bb^stGnHEP > DB^R > zuRQ13E^BMsrXSIg9Yx>6%M%6w>}_nK5U#66mPl3%NvK7TNC>Sq`9{;P&cM! > O<0P_% > z6WrgwUuRIMm8q@4Z7v@hXKs7_(ifAz?HxRvI?`nB*m1H%=zr)+;}{&;(-vKB9 > MV0+ > zAyTD!(X{EV9W=;fuNrDva2i)$ylG3>C%$97u$yWf1zl&VmcF=Q#I|SerPVsHGtz > aw > zb3r@bjSImBc1r5)0-2Q>&Lc<cU4e%iFgSa^zW6zH(#s#v96M&Vl|8PV&6qmZd > tniW > z^wucklnY0&CW<UDEp)wxY0+16%d4_3T{qEw<+X=4UvW(}hITbjm5cx6+O+m > PQi5mr > z5};@Ksz+FsqC4~0rAh@KX-b@ss#uaoOr_SV_FlkRDjjGycD)JpG&1xCX1P4#^h- > F5 > zlFobOAm33a=~)5<J*(pLn||0!8a<L3I427mP-^G_vPHnxccwP4Rug>}Df98RlGU > Hn > zT5~6VDxs0oS396nn6!j%?h5BidIV)Z%r&7>Hpu|U+o@F@o>)9?d-%)T)D<|wB > y~%B > z*dDOaPh1JVaMP&>8Ymn&SF-;}Hxl1vnl5!z<>5UvLsG)|LT9ucGExC?xWg17vb > WO{ > zKK;_j!HM7@DNXovPLG^2D=k&V(tkN))(`cp=|8%`bI}R4jT-1qa!o~n)K{V0J4kim > zR@iEejVNyumCwqO`~Z22y0QRXI|jSS=H%Psko6*q6~9o!3eVnJZAC7XEGZ3a1 > |GT! > zDFJ22f((O(napU)bbU?q+?3C{#g2CFgM?3@a3eWaiC_D;jJijqCeMbVzo25~5Ft > AK > z5iNAEz7y~gu%p@~8S{9%hMbgLXLY2sW~%;!daGxHYqhg;zkHGn^q;C?0<_T)* > lEEE > zg#F9Xsv=kHyHX<Rqr^1$uZ|I~pYOcm+cccte3^gch4Ek7rqQTr`J=R*2Km2wrBF > Lv > zgC7*E{kBoXk$LdxTotse)2Dfknl;8XU6+qfzUEtPhA73o<xlcw-<u%l<xf$Nma3| > S > zid7TbmzTYTkBsv^4E^65ZLy)w*K^o=GsN0PT&@ZX_+~aGt*-*5s=6nsuW3Tl> > 6Q7h > zTGO05ZVGZb=d{rE2Ehe7E~;fy`6`lH0yuri&FSv_U=EBIP~e7~c;11CD^$hGeAF)X > zgcmsSi}jRKx9}r3YwM8_<q70SnaZJrDaqxH8mty2mFvw;50z$AA44{l3X0I5N8y > #c > zD;sb|7Fhi#6TvSYDi{%sPPu<AJRxaN^C&xpWN$Kg4IK2GtiCg}vM(Htn`oWD8# > 1P( > zmbVr{5k`vd<q;=5p^XLun31_P&s3n>*UM9|$T{_SRVYFVd}(t9TM6*f7lW7~f9 > RqE > zSf2x_37=~14aPbXQmLZyYrR_gmJFAzN0rxDaixo@9Qdjn_;s#qL4ltM(Z;^6#!B{ > 3 > zQ#)_5Yd7&10P8S$Eb_!9O9?4eb)sSfr4(b@F*@J$se^W%VdNgKX_IM8SJnQg > gSAZ! > zzlwJEA4aYXHhXpTF$#qbnQ(=;r6t!oOMq+2X=z#2Lw4KU^jwqEWSLqoXEDV3A > TzHl > zr5(p`L(<CYWTO~{?%Q5Zey$E<Mf5MAn#&^g;&9#Sr6!P*@{HT_mFrNjZb+0% > CPU0( > zkxxGc@n9lGq%w!m8<`z`B#+2M0SsCctD`+r9(tB_OW@YuE4yr_vAoh@!J`UR > wbHaF > zXe+2oT2m#*padJ5Ntk*}(!p2iZbKX|CE@2-pyOULD%g__>xf<CP2@P!UWcRh > H!nd3 > z+RP%3xgh;PlcgnS%nEsvpR96jOXSF_n6k#PEjAzh?x|4paDtybn1em9QGEk%&L > ~b& > zu@7Z(ZP=)*aEUPFbbhDWGS_BB^=+o<DDF9~fLYZ_Q7-aZPLNx0+G*QY4m5 > @`27^UJ > zQL#j`G0hMWLZSC_fo1er@PsA~ze@a3NfgFgD(GfXH_EBRRQuYJROp2=VW8$ > ;GP!Ww > z&Wzwo(I9XsR0E&Z2f|l9)Aoe_qk&|*-?oDRBhERm%wETe?J#>wDN>sfo<#F2 > 56N}k > z$M7n^O*etkfp|mlcLX>T`=A^!I7Z<zJE=&>jOmZepAw<yF;FqAco-H-Wb!u%ow > (nz > zR;?B%gQcDMmENqG?k*r7)qqUVUg(N>t{avaI8}sK*Q<O`$5NWQ0A+JWH$v_ > 8dokW2 > zWKuXB&asl@R{dyjTQ^Veln}hW80q(8hwRnmz*&mL*Tpf~YM$ZpfG2<MAVlL > 6y6T{W > zXb~vD(x{|PSPH`QonjCZW-WBU7okxxReN|mEBN+ap7cOL>hV!jMm;7G^+3~ > bfSR^@ > z;TJ0!b!Ow_>*!0dlg!5z-@%5Ub1pY#3!u&8*gXw)uf(rt!@Y|(S7AV<JdhZ<8-LL_ > zwLfoe#O$ID!g#oHd4lhFC-zQc{NZF}#Xo0RTy1_d&Yfcz{W3S2;8{2Rx))V0je4w > u > zIsT4{I_{1kTXBfY`ODDZb&bBfCs5=efc-u`&$IY+y67%eqT<ag4^wsd$BBx>_x@ > Jc > zT$k8t_O62Fsc~Y$4wz`RE9|<m*-bkG*??ar86ydaEr}*nXeWUCFD-*qEkeE=F}T > Os > z9yH>Mv*L%IwjbrTQ#9uUSq8?ZcC{J5hWnLGjt+-VhwfIzseM|B32b?-;;V4oU5s > F2 > zp0HZQ$|9^bDq5bd$B#G>2WN&$@H60ouSO-Z4HkJ1F*N!3^~#`C{!#Q_xi>*i > V0hem > zs)Ob1TfEru16&y}cIOAm6nXZV&@M7^LF#h2npU~4S`Lg7BQr{h!(}y7kQ^t1Ele > gc > zh$|bUdrlz9lOvt3*M0gB(m_`p4?ni+i3=XX-rT?hE!c+_(FSm@d?v%hS<?(^nX59j > z_&8krEwxtQ!G#BZZJQGO^*184x!;8(rxOnkNm@PP2`8QlQI&JvL(0-Xo--*WsQ > -if > z#l@tV*ANP2CLDKc?>0BDol4*>^VvsSB=nyh1f5}o=~&&k0m0XcL_u<|XNx7`9l > %5h > zN#q;Q8D7e(<x(EIk3Y{6Z<%MKPEKvOYO=Bu5{M-(xVA(4EXC=Sv4-DDwOT2M+ > St+q > zJQj=N7FrW&ChrIHP#+aKa7fZw+&GgZSc(y!5w=Xq^t`6y8DTI)I2Uz+e88_Og+;) > | > zgmr5T+<0ELXLT?jh%q-{g&Z(oNyQ#JUE>F!i|ADqH=fXgL05TeUj1J?tmvjtbFSO > e > z16}&kR__mm*dI67eNIrAS3<mqN+L|%!G!7VO+ektwM<#l^I}_T+NOv*3E52`( > 3g2d > zm^9R9B6)tccHLZUBHQd8-_A=$Q`8pqnubG`%M3Ny*tE{a2|ju@$+I&VG?Mj~ > 6kT05 > zR4R*EfQH+^9Pb8Jt^@X}drr%)#oFa0o}j0{BSObpxjPL-K`LWfhGlGc%#|SDlN0u > 6 > zDM7YHyCZO+k$j5+EVOXDG`l`NEmffgFOcq4b1p<_E4d}OP)S>6FSPx#QTtV%is > cU+ > zHRFV8fFGg}JykrVtkgqQJT<saQ3y77dVq36`J}q%&M13^_BBG0I3lhh?l^oC7bQ > uj > z5Y<@=IM2os8X{q+@kr_YN$Ou?tdAD6kM<>wiWOO{)ru~pS%|1H>L@zcsp`X > xGk;pr > zu&hu*+uj#HPtBb#B9&3)x=ma-1wi5xWWuVTLiZAig8S;SgvF&^yv^eYQNNxK$ > FQFu > zck%C{7=27D$iTnj7N>d+)=RH0&&?=k+5S*MB|R1w^b?T40ymy!G<o@Yb21)A > ys(^G > zOOW~O3Q4du)YL2L!X3)>3*%UL8^fQQ!bvV%?}Ir>e2&RL#u+ftPKdsfEeV~)$j > <@T > z5x1}2&i5kgS_NV`L=aqEU*FVPHQ4itb9h)Q4n%kK)aL&A%g}2VRj^))rutQ6iX)zp > z8&2||!~ISoCZG|mBwkGG#^HF@W$}AI_ug{%@BWF#`^LFvaxcxIIkFVg$_2G > Mc%0-u > z48n38!<}q2im!kQ|2c*A)KHB{X`8@9AAj<b=b`Sx1sCVtAlWs^>|;+ikK`uyLpLvO > zhOS%iIT=Lq1Cu#2zOf{lJjxBFn;06094tQn6y}T%F;#3@`7ziMKUV*N;WDTyZ*y > <h > z=1zm3WenCNjJ=#R&Ppt|jVkpih4i`wWP#hGFPfkj1pNf%pq@Eb*@K#J_L&)Qp > C_zv > zNJJxZWG2E7UAj%;Eloy`8igx7P~)CdNK8?)C`LH8rL2~cxWc)9McefJz)DLWtftg > m > zU6GLseynqqKyCbN3jVc$*@0QOg@v1&n=*C7v}?+}?2e;5_@3k5+ygI_Q1Wrf > 7LPm5 > zZq0*(LwEa#iVb9eE)Y@Y_vGIr7kX)?ep>4yFrS2UOd`Cx1mYLW0JCZ=j9Gi$muo > g4 > z8Hf`cu2y7U_FV|>7$}xEXf+>wx9$1D!HUZWrzB-npfDz9{sylv6y>)gF+S2u0vQ+ > & > zgDx>B#qcIZ_!^tHN1@6?tb^P3m4qgWJ?c#qC*`$|%$LnqEKCO>L4lCL(4Xmqk > ukml > zdP~!hL=9Pe#HJh)q@e&dfi!UDdilFpFFS@4$S@S4du{C_^CC=5fyNlvWFKfVmt > mcU > zD`X@}Hf3#esv<DiE~6BP0xgN9NL}%_Vv1r`W|&lC?KqQ78a3==i*E#5$M8^(In > Ca2 > zpm7TXg^ZkDusQi=@&lk|`fJ2uhn}l<M5$Bn&9<Z?UVnix{Y2N8$?1vkX|iRlw4R > jg > z7PB&9DaTU20?Wh;T5Gz4`G*c8sQPQ#zQ5xs(#=+>Ys_gESmE*>MkSORmS}L > 5M8QY( > z9>DNQh|iOaiX^X9UE{bks&SNml1uPunx8OHt5#7Tn~T>zGyk=5qpigkNY6ctM > Hzx^ > zrACDF6|1vI#GY5Rqq8adjP|wbO~}~5E>OYX;~&GisME5xA?dPkdiFxVyPYDDD* > Mg2 > z5I}`c-0=F_qPw|^iu?E4Uil_*sJ$!nd`RdJnlh>ZDva5R=FTrwS%JGvs1YQVVUA!p > zp%IwJgD+&D$ixCRQvX~REb}=>G>>GS4CgCV=&;jiVzNm2n4w*z19gF}Q+id#! > |gJW > z8IkWfS2Fs!S2!GyinIhca@U?!97Vu1X!d)!`JNG^SE*B{9^Dpe9%J;H5o{maOFU > a& > zXv$~3{X18;{u6}|^^zebAK~QaGg_;eVOgp2Dt>rv-}gFwThN{MesK)HZI_z52a$P > ? > zL}b?uU9JB4_t_j~STJQ-%k99~qqcP?vVO0<!3`&}vQ7_F9?GoowZ~w_qOO2aI_ > o)_ > zJMqV<WAW+VKczw`E7zyor&O>wK77gdxz$@_<?#6v65S>;r!w76^S+x4@+Qz > doIVp; > zT2a}Iadt7)Ob*j74ywqn*!725_H~e@SzsW+J_*#<Pj78ooMs-y4!9Z;x~VmVrO5 > Gg > z!El8DqeKqRQnMbrL(dGzN6<r$9ah<@733=OxW@$YNXR}^^mBsdNG1t*@3 > >s?p-g)> > zeFmjm#New1N}|wC7$H8|O@X@wYffG)xJTlgfdHcl>+@GI<vWHZ37Ax>l{*7 > >(tv^X > z9P`_`_#<h;mC<ze3@CF4&(|fisiso5wRa)9pKh=Bpjo*eX4ozG{!>+Ae=OtO2~sC > e > zT}>oT=C&a=nS|SC^ZB6$*qxOZC_XL3+LS-pAIGdlV2%qUsEs+-V7?v5rCL`zY`Z= > g > zUb=Lr+tP!Ty7vWbT`HoDtg^K148{oYDCwdpp{yY}(XQee&e>K618N~XHGuB8C > ~8=n > z61Z#Pl7BuPL$kC4T56X2+DY2iz}5*&Xzb{1JpNqf>|_p3uz|CE;yD6#0)@^8M^# > {+ > z(Nb4%W>xO*a-L^JH(I_IHLIA&;{VYp-f1|XGBGdob=kJmvx*1>1AqhjaLcZe@tJ > @| > zBi1FG&_F0)N^_AMK!k2upju4gOr=DZ&PS3&A*$dVQlU�*=l<NS1{zjV4+hzY > >>~ > z%vcAer7@{MfqOEt3yZwSdK6n=+8+0>^z;_3iW-rQP1sG?D4!{xi7=sK^gYSBt}H > &+ > z602M+D5HV0g&w~4om0pc63Pa1pL$(fF~px2yv|Qmb`OKSyH@GN_h7bs!tv+ > c<t|Q~ > zaJwRt%s&91%M$8c9pn^WvN`wI29$*o;5H3P$V1>Kf_#I^k7z8(cpO%rjN<;gJ > yUt| > zUYEYS>z=#Y?gu+S{1N;#BK<9WZND?QTMxmt4@u#svjrnjR!S7zgxoW|<n=+r> > |-l? > z<0bIk>gWN$K2NgAv<Z_QPYPEmDu}_2&ua}*GcZgyS3#1@5uoXkXkvl2tdQc > wFI29R > z=x3u-z8zPk`c_UdSgN+q6x)?AQp#jx3WmAX6YY+gM>i#o0nfakE_fR3RnHl=WJ > ZN& > z?R9+Q$W4cX8bLPH3&gk77<9v3d{F)z<)C0?@R9B=9Q9G2MF35s61-%gI{C@ > SwBF7| > zfws~9aXE|cn6BW|Z(7ulr`#H6Gs`Ca?Z*(tkV$4lG!I7JH0fFcIBCPY&<(MUirA2( > z+Wr+!P&0m@HykhMw+)wulQ0z-CCcle)ja!*Hj<DmE-d<)H9Is{J}V1VZRr>s!d0 > >} > zFoF_`0*FNzAOO}cG<|(&`Kks!oDfFzMkBy*_i<ktNaZJvEI*5|5j_q!<r5z-gSm2X > zKYJDjhaCB3y;cL!yl2NGdKO0xM2<MD3S<W1w2glV!HBvRKIZT2#hYQe5XS`Y3t > -Bx > zA^K%>>$HkJDj^}8Rva648l*6_;gAo?URbym96l5ge=ziEciz^?kw8^45<~9=+<_ > bz > z!*;j>EuBR5VHiE79c5^%33?UnaQ5#~2XYzup`j>BE#r8>B7v&*rf{br+NWwU#U > po{ > zP+%qkhT9)Z8+HvL`qI}0Bx|{D1tmsK)5SoNk2%8MV?xyt)wc48j9h=G-mL+d)f% > |5 > z9#=HyL)a0j2&MFd<<~B`D#DDAwd&KNV~nlphmSH?h_>u=-ch{^6#J-r)p`{e=X > RHj > zkLNm$2qF2yVYr)Qea?m(T7s%pI-yvNM$EzkR0Qgs6#Ss-fhf>UmYqO3S=nwq > NU~$~ > z%2ns)`kB2xF!G5#(86Xg{&@*X;JfvtfTWhRHH<<3vGS~lmd|WOOIysD^0Rzuap > Hb_ > zynX7X9nFCKJ3k@2wD*U`1gc3@^pG0+!7y4Y4}_DoK>*E+FRoK?ZC+JIdly>e;g > Z%m > zHA#fl-k5KRMs~PM{73ul{+L)bVg58`^;)h$L4dn<Gt-b6GvRC1O6OLtp&ZGjIng>~ > zRs}tK6SYFhoI*=pG-vB;?NeJp?mf{>UT@>{BT2k{^@*+<ydkvb1sB<vgr@fV_^( > 1$ > zCO~qgxOGONWi0?BHyq_qRY@LR^T)Di(Iq96d<emSZeLKp@e(!CuGq=k+~r$ff > 2db$ > z=;CyCf@g(CMdP&&<Q>*&=<-eE0mHJvt>js&kYm{#D_1R?FDa#-m&8N`?c|# > NHqUk% > zxUQXB$+s#$Vw#cJfu=+KHq>9<aw{=Q;ip95FjXThxk%M*3s2}s1s5&~Y!yEJ>^ > qp3 > zWTf3{<awvh=J2c}s#6KsS2A)S!-D1^mkFoROfz^9&ojc#!^gN~wpFHEhYU<NcS > 4_R > z#T6YCZuZ*xYj9;Y9XvQuxUYs1f?R~+zXTq9lcSC4T}iZgLCA|y%EpyOzLQ=IMPP< > - > zjU&_8%sSIG*|$mAVhib4;5a)a8;^BxcnYz2X1EEs5nc7z9iB)%17a3;4;tl4)eKWH > zmk(3GvSe>UAoP45ZTr*L?X7$>8ax-^UDs_>UWxvS?ui&;P1Z=M)ySOuv}iM>sj > O7U > z^I9!@@r{bb9wP~?gJZYlOFEY5Skpx&iOBIwHlvtv-eFp$_kMw63HrGEBF9x*72 > ;iI > z;K+?w1KL&2;2h8_jz;(pPkVd^6{7%QK^^849xK^FgvC#a?*LmR3`3Z?V=)>BVJN; > ~ > z1>~)54X22up2FMzJ{<UhHA48V!NmPmZ~p1-V($tBBU-P$VC(aWjQ*~|#64J+L > }S+- > z8wCFtAovi>D-!p$9qta3d2pQ)<il!X4F)W6U)&-UevP_tZ<;fOk`Duv|DiWxz*7xf > ze3DSqJv8?$u(nj4GWUVhJhsy8ixC1qXN>-NQhcTYL3?rGglA%>98aypEZ7}!=<x > 7@ > z^9wQxa`W~{zmdT})F?88CBu1|p+*w=Uym0}vy^=Jg)wt(pa~%#cef|&Vqyq&N > P~GQ > zeLknfU9;?%IU&4lH=|Cm5N^hJ&GOVg?0T#gP?(nfBIGAclCmT)Ja2eCXhh?wyX > T~H > zfi4N_nwdyqqoPzmLWJauSrh3KMc61!;Wzp*^wod?=hD#a6QYQwOq-T1B1#R > BWj$aB > z%OV1L%)(R<)+e@JB%wfDo&vY@Tq}elEuI_4R$D;e?-GOM`~2B}fq9cN&?6jB > *bPz0 > z(Y+YG;Vm=&=sDRcT%?q_LKXN1axc5{-j1iUI5KFkdNp3YO!S#i7^CNGn}V_){I2= > n > z+8m=b;HeTphkhjz8k(#94{B?{it8iKA&&`B^IJef5c%n_>3I|+bpMhY5|MtIYxXre > zR}7}GgLYYtYTMPn*7j^rGOKE0u1<{;<o*{$EkC`v^z4Mt&;{uR^_8xjM#A=KWG > F*u > zh?i7KB}d#04*J5IzV;6wC{WiM-<bj-&r)yT=76ogIaW2CadPk_EzH+}0+<Ci^iOT} > zw!wrSx0s~KWYdYx>7SHFaY*8WkBYV_Uhv3fJ9;Oml^*GLr4ae=lq4KveCFh?jR > kE} > z1uwa3a2fYd?<I@kD;D)Vxr+mGuW$H_tDqB`6rVb@uPqn6W?QO_oWSXkAeb > 5hCz-MU > zJwG3t{@%itOl5J-riyDxjkjnSsKz?UJJ);Fh<&GdGqhI0{V84Tn$HhwVJgJ)qY-(Q > z7E<n(Pp>+LOh*QMu(TsTiPE-3=)F!1&@#8-L(W#b3!Fg*{sZ=)u?IzpZs~daiXI$K > zw*y<`1t%^13<_mZDkg;{I6PR69fh8Vch;mFk$fumBO6bK7ja4*Q9j=GLlE}uWo > H}W > z^lJCVC<jz4aXSO$^zBrhLhG*+cB~r(uWVjKS;r0IbHLb6B7piNeD&Pg2|cXSV_9Z > M > z!}{c~REs6hp8WJ=77E|WVH08L5W^PeG9gSh)7DWd0mL>u<c|zkG;IR{DFtp3V > ezdi > z;MkP&P~<kxTiB5;J@5j19`x523|&qeBJWL@(k!?gP=9oKGXU>_1=j^olY(fU+z0 > FL > zb+xZdXLOuXk7>td1>2*3Pz}3SiiQs)m+kY?#})_5aI3vwHpF`JD&RX#i0!NMb)IKa > z>YNJazXh!{l=2V5s}}*m7KT9X)*CUV8P_=b&1YmEI1XWU4gNN4{M2q)2?^>H > GBqzI > ze6v$~yo(k}%cB1(^YWFX)ATO0k1(ywNS%cfjn=i#ilAzSL9_H&x?h~Zm<Lm5H!! > Xe > zlmu0k8w@I=60iL~vcVrvOrTr7F}0#{K0aJ}(Tp_*mGfFFkIPfkaIpB>L`4l?kOv>J > zbaW8Dmtvl5sUix>m>6#CVbgnBe|{raR+77fxr&tIt6CW_BE&GWP)j`ZPvx9+#K > 82^ > zHxso5PXGbt``|@OeOM0pGYaj<a}*s2`-~X!VXEnBDBwcqJ$3Pif6ueEv>nmCO > N1Gc > zHt;))I*9u^h5Dd!3cYTb6Z*lBn+_KF4%7>G_Toz;KxujzNjWtpVdq-)jWQGIBPU}t > zJyu?>sAb(q;`w<;+qIcBqmz#_=2LYdBI1{HCG;Vx-A7k#N8L*A-cd&H?|T~_Z)Nx > A > zDDk*Rzg*`B${YWyR&?5KGq*tc3oSob-A1jAmS~1uKBlUpr#AE$;-(D;D=fVZV|L > =l > zp$sRu2IGmxb{sLu^HoyxcFB%(^|Zrd;TRDBARWD~>v)hNKB(=FTdFA17W2$W > H75A} > zckxr%GAa?(Dl0YFa%h@~<15E}mWlIUq?0;;N1P79JW5>PF9)97%x*8v@Db4-I > PJ2n > z&2C9OO^D-k(pEo6tAHCK=io7qs%)!!LObzQm|399ENUz%yx73q_Q)Xne#)W3 > C8%H) > zUTZOY#3+-Um2!^o_{^zDU%Xkbns3{=dA~n4ZiA5zW=$;#c=fTHlcGxsqB3~Ou > 7fy% > zm!C0NWj@lK`pb7~!FqPvLZGV@JN*~W@N~vY4J8P+vLr=MZAtqiAvds4N{UY > ebux8# > zS@uGSeru|GtKG!z&hT5Z4j-MGF!+<dZX8!9lVE%_iMpJTnk(3wMK682Cf`O|tnb > Ke > zJe~`FRdZPK+?^T}iX?79r^n*)V4PTQ9<$mbXVFvw;*(^qayB9^yCjF)#RaiQxSiCH > zU2Dn~txexR*ArTfEInZxNXq+g>asFmw+7hQc`3Jvdf1W?og6c*@aIJCc9XTy_ > Qvp0 > z&k(~bkrQab5-)ly;1B_G%a6yoCm2qJg9P+~o7eqOzEeb|FCW|2SZx{@&R20_7 > PkQD > zRjxMBsr55H*C+LsD4EqGF|{~zdC)ne*mL3^r8L%I=zA6-+36^kX`IGukTaY#5*U > yB > zSTqQMl0sE#wQ>mfzgA)%s%9Q^sm9-KDtuq`s+A9<aek@#nLaLE8H{c&i&Iq?3 > tJf& > z8>b~tix)2>8YRR?%`6G6XswA3Oj@vPHKLj?dhO)Xu*g?U5Ouac+%Mg_6^g_LI > EJFK > zn2aQ~SDEpseh|BZryrl1mMof2MeCrnS?jcQrJWY0N=zAiVZJ***WOz`vz4e&CL > ga3 > z9yFTg_KiwGGj-+3Q5%s1EVcQa>Ea-H1#Z+h;N;11hKXacz%08OF@-7M`)WY1)( > 2(d > zSEF~W>Zx$KR<Rh?`F4EXu-S4iC{iUyt5_a*efc?uZ>#L*-fnOuCygxoF=k`msjZn7 > z`RxKR&bJqP!FBm_eq7+I?gol_ocJN+?+M-?ZIK%JhwZoZ1z4HOllYf7s350J=b<~ > 4 > zr7>xNjpKS>59v%bYU)(2G4$A}fgG@(@Yd<yjG2TTqCbAo|F8ZZhHW9rvVT_VB > 5VKv > z)c@uGaW*%xF`@sj$oL=6*_DQz-6k7KFZ`MtfwP?vxhod9OT=1zCanzikZmZQ > MR>}Z > ze1X7%gb(({p+DeYhe0UnnoX#I)?c)>;!l=!E^FMm+Bz}Cgkg2v1h%z^YCaOA_ru > R$ > zJpA&?)tgZmTqHtDxeeWK$7vywdk=xcy6bJc7y4=sajGnkwELi@Zp!$b=IGbm& > WKeN > zVZ#7@AEH%<&B!Fl)zp+C_(65u6G{nv+bNMK)UF77N`yCvvk_~Hc2zB%2u2y6q > &<wW > z9jw@LxjFg7CpO0eUa;Em1kXM*!#oLOv*3O(aF^&frF9b^T*H+Yf4RQckfWXlg > h9oA > z;mykQ+}0)s7sy(($TZEmmZlmz-}Me_LHjyu_XvAshU!=BYHBS|A7Fh;yw%I+j&4 > uE > zS%A9Rz!KFIrfE^X>YZ_m6oD6q9M{&BDpqap@SlmSscPBMMQf7=^#U+sd~Bz > ;<_$|D > zr}cj9xMB9wyXYCy*3OGP*s%k()4Ol#>gA9~_Pnt9BYn7P+>KkaCFrrV#%swptiD > xC > zOz)5YbBY3~MvO;c+K6V1-NOQS09a%7d604o$&s~Cikky>5{ea=JFfm>Ozxw}c > EV|B > z3B5Vx=5BZ;7)-{(*NgYp+8ln7QTQBO{<rhD{lP<Ue$78K6*gHx$13!_-&eDv_=W > sA > zzK;*{=*#XJBflSm<o_Ovc(5WYn32sy(&v7?T#ZN8@_m1IilN@g{1r2KiyILx$UK6 > $ > ze#AgwR&^jHCwAyT9fVkXh?pix;^@zi0{za3z<HXcG);HI;p7@>-ophvE`)OTahye > T > zM+gruK+SS1SOdIqoZ-?|)-(`%q)PYTkQlH$F;pD6Hu6><?u<kp?d_I;a$$y-61%q* > z#$kNLkVS!$_=B?G^yME1b$z3FvF4Kc5g^5<dPXOLD@`rKR76akVH(+D0ppvldJ > gmB > zYTf7s?!r;I;2DY2AwC8*MHPgPbdq+@l|zA}7LRj~mJI6)Tv;YL*020#qAf>t=PZsP > z*6lB@(R`8u;3Flw+b>^FwcRsWQXh#Dfu}s*^_P>Lxb;nteZWC87<Z0@%7{M> > 9H9W? > z+Cc?$_t-Y%%<T?X7OmqGjx?rIt`@A-;w+2>8iAJ?5w)jFwhg&AkP_R-P!bl!rBrp4 > z<-K!YnnKxja{mB|J!t}6kH04F(}s3Ev(8K9c<LqmPd9{H1CLuf#M!1^cIzF<I&mDr > zqt;UA!B-83*YEp57ey|856Nr=1B&@}<eKPa)As#9jh8egb{Qoxdyz#K=@qXaKG > -vt > z(*emaB~A36f*BKoy?uV4DJ+t<kFW|$m_3w?*Y=|DpY(V*Qpxt9!2-;hqU!s(H) > ^jX > z>kFZ<Y8<3W9lW)DRNkyyRwyRXia8u}CsFE*K8^Hh?eVYx+uFgZnqV&G)(*sJ6p > >J^ > z{06pq&ZNL`=w<!7Ix-ek2u;Ge2db=hRx6GxeNiAAx68sU+7W2<b0W-re`CG{&) > Ls1 > z+pMI~i7X;bcx;%DJ@<%Z$t}%{D{Oo2$i#^&Ea<i49WP}1V?>@uBzf-i7#d1)a;Z > 6m > zO)J*aOuPq&jh7L7*^p5V&|0Z&F+;Qglf>E}*iWUzb>sJ`%xY~$cE}6+XM=0L(m > Ew@ > zMZ#sYlz3QJ=Hy@iDHd|-Uq|FAPX#Dt<-$gZ`UbH6yIKiAS7#lm5u=03hDIsk4c8 > Y| > z>SFJLFbv^-M6CMowb4Ca+=@Io0a9(Zw1_;tJzH6=P3iVwPN|NE=(PTIhp7b!vt! > j# > z^PF)sTPQ`sKo9D0@D7y;+a&H@DzamG@nlDg-&y7PPslC4Dv%9eK5ba&DCd > $UUOMHW > ze5hi?=T9Ika3yX6%{^cA62h{*fQ>KoBl+J}PBV+NrVyc`jZ#7+low)D$UiT6H0fvD > z!Rox5oiq|Dh)jqoNNOdjSBRV>)@4?E6+4@}D1v2~mI=v#f!vsWH(n`%h4Sp2$K > Fm< > z8uhOmIB%ug_?c6ANm`*YLW!Hb2=(Uhrkxc!b}6S`b{dGhj8=_U9;yJ13#xMy3q > PzP > z9H**Q)GJvdlhfK9cL!Y~4C*Yxlv{*^-{3F&RNkh&u4k|=W3TxwL~ri-;eu-d%6bja > z;0vG&a4~rf4S{TFER<FoRW1vvlkAt!H_p&K<Wbe6+>yPr7FPwFPV1cQ?(ritG* > @dI > zF|;hK?k~m>19KewV;G}pv&P5t8s5(EINhMTFl5pa$kKP&lKN-);AHRw@3dl#& > WH5> > zS81cd?qIF}{b!~|0{H)|txhJ+&K9<2PXCd$CUvdYMNt&r+NEEF<94YNK38G1_l* > Gc > zGORbiM0d9OI^LDF^}4SQyiG=fVU3`OkEHu{?^D~^@kzDZOUrwGAGHqC#v= > MLM}y36 > z>WPy&4d1W0U64tU)yxuxWUDLFck|BU%FSIrFArU}mRrFpEdb%g>dS9akE>7 > DZcUfZ > z!fKh<f#w##lkUgn^Zj{z)#m$L+3V?@<?8cE9gXDg!wAHJ6m*PMjU4aB9)Yc;<D > Jf# > z?bpDGjqTl3FR%A>*00&MY!;<f{^gc)u}Eq=>bri{?Rx7@%<7+7bA$s2FpoC{1b7 > $L > z$!yB^_#@J-#>Zi`=v)UodGqeg&6+@<<z*CGn~4)@7}Q-rADL%p@n_41Zmc|k > ?1X#g > z=dQ}0MX?HAm3y1^#}PS`5HO6cve(Pi&=HTu%DnO!Wg5Hu!X6Ga`kBj>4_*|=j > rfFP > zOML-`8{f^$9iUFD|IyxAM^&+QkN?nhXgGv)i=a{>NJ>eAbV(jkx=R|Qq(e&L&< > H3E > zlG4bbyFt1Hr0aX|USE}afA3nq|KC}Qb!OJg-m_=VJo9|^Je&Pks)S$GloY|09-Pg~ > zVy0GT$i*t=mL9JtA5wm?nyLf&QvgqjCXnpBIA^!qH>=)HAZRWo&DNR6-<y6i# > @L@t > z5&f8l?Qm-z>M$vHiA@@wPaP8Mw!Z#EZM?ZG=0T(Ma9J<~f%pSzN<&~ZHOj > $8Ps>x& > zxS6AfxZdVd%hNV-*}awFLwcF6@rlOy<_NOVUcFO(nd6|2(UsBfjL(Lyjb0XszKG > k_ > zS+74RNrrb@QVV~-LW8yJpP)O?8|0O;xyp`1Q={xEuxx-+XNStDQKa~WE{Qodt > 2~;d > zdqA@ru%rN05?6c^$s1<#W<@!ZjNU$As*41({}~BwiXAYVjhTiZ+$_yvm>U#H^ > >j(! > zCtlKbQWAn=I;$?8>95b568TWvb4f;~Bpi)PrO*i2Nh#I@5dTs1i;>1*B?p8-! > @ > z*vU{ao+t`>xCAQs>SGDXt^pT+W9r!_G)hsT19Y_17$3r<+Wm+t4lZIl6B+u_!6D > |H > zSs^`iqT5Ve%3;RJccn;3BhbxoG7lB0<q4s|kU`VkJpVGlAwXOpbM3-Zoc5Dl(xyzS > zda+N8eYr?^Bu(2k(^JkjAiEYib4ENKiNg0v6pJeTZx>x=9pti5-)jp6VBOc9%_XNq > zZMGlY6jGG4<)nvrh)Y0#p7&7TdX&oTs1Za=Ve0&WJz7kX1&VV|yEFowRPs=pG > E7O& > zFg<tuqht(HVnP+NxWXTU(RekQqIg0;n4de@=4jprw>m!U1&3_3^2zs;iRO3Ga- > y)o > z#&QmW18C4Tgju-c`^`Jx=-D=eQ*6ciC*)B3=q6Fn#&9M0pV=kN&uz!9rDTvtK > W{@! > z^5ay{%-n;p$r@@iX8EV@`f+B#H9OkjE*-?QsA;9^#NmR#Oq%f`chbvJG18a_Sj > V0& > z><;i{YJ@l$q&*~Aa<WT&r--uSm@uVXPXYSac)8uP&Z!+mbm&koCsTirtuc*x?~ > Zo) > z<{{K8q{nz=m!+uaNDF#Yp8S@Z8$YX1R%N+V<V)B<g_};SPV(eAZe=aUl}%gyGn > ZKO > z^X}vl_0Ly^m+xj%C%YymlAUVLpeuPeM4vvc&&40g?8?<`7mYMc9%60|6YNr6 > 0IF+q > zRzL0NYf-AbuFB#0!mT|u?J<p|=4MeVupw2Z@rq}bZWr0InosT36PD8>XgTXkd > 8(=> > z{k<QVu{+YR%=!5UOSdAh>k#U`jd%Lx`fv**UgEGk)5Y>@azM=QS&&-d2-h_$? > Uu7! > zl#1byePL#v)BFx|^$=H;2;2QD<9Of7l2D_w$}+U_#Dc*pel9A9&Ou^Glj*S3xaD > eo > zly>2xvr}kL#U)U>h_##IO2n)u^U*u~T>6(D4|E{+4%Xx@@h9NSaID@b5CyDfA > UhPz > z;)C-TSlZ-0c}g(q9%P7AMI7$bjx;2am2?-+O@cu4v#zMF(>&M2Q6*lR(^nY(R<j^ > Z > zQ4>QF4FF&h1pr8Y#w_*@t}ns%YGw|mV#dZ`Lx&%4_$_T&`>97b_0BohKA-E > d9!N;> > zsqhAqbEnx3a(<lR5Pb?VkJdZY@3=hFVR`nNM$DF)y(-Pfx3xiMYmt@Z;50$EG0 > 5kj > zHAcD9bY1R6xK5Bn+IO+<r4GBh#eK8Ya!DULO?<*m20a(@&o}Gdd7Ukv()7N7 > Pvh02 > zl6sJ4XuWP##?n9>{@l7pB)$PXAfZ#)>Z4j3P{OVZmx7YNr<GE+BZlpYfN^li4Ba$ > = > z#myjJD-k1k)aVOs(_|-|k;a)619ny<eT1tA@~B~aa0RO95qxFG!C;tntt*}m0ahw > W > z&~Plqw!)qw^ckrlS<?td2_zwiuN%iU_8Y(>Qn8kB?|zuld*RnpgW0);!h8Y3r_=U) > zJl6AXBk%H5OO10t3`|P(cbW`N+@2G!IVzmafGezQ*#$r{QMlli6CqoD%ChftMl > |fk > za#~3ni!HC#l;#@g*(1WAd{{HtW^m)I9Ih<?_L8q7RSlE1g1vvdwvaWnX48MR4 > Hn7a > zS7J3~t#;L9F%Np8C@)CwhFGgp80FW>G%&P*Z38IB*t?&vp895|;W!IX>(LYFe > H%Jw > zBD_Dnz|uRL>r4KrMn#_d(^9rZ+a$^YhBE|b$g6n;A0vLpLGz6^GxkwCJcvKmkd > L=c > zSA}1r*4Px&DdD~}RCPD*18$(kE7g|pW8a{A4)n$pTYOFW$zcd+aG`fogz~oJh? > -2# > z7PX2&3CnL;g!%#AD!naW%Ql~6?|jvy4-5C_rloeH&I^H7EIO^e&F9G_!I5bFYlE > KW > zs`@SSAwi2V-#m*+McJGvEd%<lC->I`manWXA}k=QEt!l5ObExT7)8ERhk~z;U5 > ZTc > zWF%z3C!t9IGUWBV`E-$*an~#q^Ss9=@@PB*JbbS|F3VJKqFf51`zx;2`{XcZngd > M7 > zy2muU@K-NoKkZn<hgQvLvYffYp}cJ%8K_XqmvVc~vA(`oSp0cwJ1Sa*gH&ahC > rgnt > zm4lRP5VnE`TOsV{$%^_0B?-T9f|^1O)_@Vzwj+h6frY}8<IXe~>GDnwXCRCtgz > wu= > zyYY@9OI<ee+BKcei8YG%9mVYl*S|Y_)CLDDcl5p?^w}w@-04cWU<<2aA+%x > Mh2N<8 > z?!2+KbP<pGxWP%Neza}uH5xVpiq`m;x2wlJgm;Wk^6O#_bGGYH2i3FKfpzV^^ > 4X9e > z%ax{lg^FppQrDi$suKT7uY1q6{jz2}X7QvFY@cJTvN}#!U2q(WQN&A&JP!ZD^-c > >? > zgY0vkLO0VsE^}pPBkU=?H=eH*(GhjJr|)%b&G?iWPtHk+)<EzP+SO*eW2R?O#L > {Vn > zanijL%{FSwl7Pe6`dA;CN3IGxK5}mA>brUf!WhkN_;=3fqG4O}{AUic?i3d*;`vIO > z+FLHe@NK;0q)6O%_(7YHVN+`Z+$cw1b9E(*qF34$a7MDVb0;why6{tv5RA<1 > N4KV- > zW$}dGAW>eC>!_Zhb0ELv0v~g?ETV1#WI7|GSJR1t@O>WR%r1-Fbjh9u;BeC$ > By_2n > zfutbqS^mydMjqn#-TDnkeYE^#Epa^g+qXocUtW4|X*LOY#@Jk$Pt<Q$^lv325 > ^N%J > zoio6-@jj_|VSL5_XHnW9*<`*>y3JEyS0Jk}>RE<vBnR*RI*{5LzW?D@SpaF^Cp > 4kU > zuDUx$kM|k$H0=ErhM8UQy}#im>mFh%#KCrsPNz>4pFs1r+)bBH9#kPja>LXM > %kDFz > ztDEG8e?n6~c`ZvnTnZe)E&WsLXV{UZ#QO|@L&jaJ$c4^iZ*VVWpi&|1tRHhw5 > R~by > z;c)~EK4YSE-EqFeX0(P6ar904Dl7B>Di^NMOC9G8PE99`hZzbIFi-*_fk0KV3NW4 > 2 > znfjf{08Svx%A4~kc<t{Xle~f1F*>dHxI$_ck;=mDp^ysfyc+hOh4<TgPd;}gdmE&t > zGq~a_6qPB_Du1>|WZ6U<DTS#hEq&n@!wrW@$wS!5aHAM!;J<jKXuTPr(v=J > _>b)`g > zxbwErm@tJ!_{yKzl_i>fI95He9(K5YL<+#au9HFbKh_Vw`&1_!NNWur&&5qF_d > c2% > zt}}@O_|x69WdX-xT_w44njzk2X~L(f2qZR>(R9puxbxf%3ut-huE$f<{BS*}tT<ZT > zex!>icPYsyLubn3;i*M}9jWLV1}}ZB*OmQI%i3`1n`d?tpp2~EW?w!>PkJ374~wY > O > z;B?2t+Mr&1d0`N_)w-O#+)aw=A6r})3CLjhj*KWAP$VI%%1h~jBc{^!@M@+~s > O_Dw > z*G58LSch87>36aU+<A<oEt{4mkiMLPwKCEynm3MhuTbUpy64nf(;@RS8zM_ > oZEh?b > z(uqB+(%)NljmVcd0xGlkyVnhz>V@7D7gQ;~j!5ay1yFh_6IG>OOYJdpp?}~)!DN9 > f > zTwq@972<@2S5UI|#TsuN-DSFLx}!;zLnY)MM2Rxuw6#lX{>1UXFr!K7?HvB}cJ > DOW > z&hR%mo2pR@uYB75;llLngtF7k&8q5i#lj#mATPJasVz4wl>s%%t9rCq716`GJ1 > WE* > zyMxLOSW_R(_l)L1$k7>+f}t4T+J{L`Xii?pHJbUUDLwg6k?En+s>9{<tb5bL;T`9k > zVPpvpajupD&$W44x8)=(UjUBI#y*azKKWXKFQpYtMbtYCq;v-0^^>8T`73&C-#( > zl > z!x-E1EV#KmOVmIHLq70`%zJQrSE=VKUmAZ^gwi4vlkeH+nV$7oeA)+)NY3)XG~ > QIs > zag=hR$FtAThvTe{ElUFH`2w<qKbWM(AHObq(by(yvbg2)UOX1%7*5>rHHFqa> > A7*n > zOJ?#b`R8JDerKbO){pAU9IKs2a4QroT_k!UA97WYEpD6BT3LB2FfM$#1nPtnjS > WeA > z=E_!uu}V5pMP8;Qhkh<t_FOyx6nLEo5)?3TvFVwpUXy0x^j>1H$`7P&`0G)G8)8 > qa > zXDocpG+Tny1U{Eb(!qmD#vqxFd0wGqZn9nW4dqzuaP)Y+Mweccocs53ehz{>Z > Y?nI > zVuBSQqkxqvGjz0fu(njUeEE01GBXFT<&O`?|0`Ao^U}}7zppt2o(+gRUpN0Gb~+ > X6 > zf)lmwq5=98Ts>dmz|PTTrj*2Vb_9~Y$FjwSc6tSw5o{^iNt{sP>{sSu3VY*5DS;rk > zx;p|Q2o0}Ky_@O7$i7v#oXNlNGMi=ZD}G_7=%a_hkkrvF24MU>DdHZZbh4sY > _6S}L > z=L*^lM;&X2D@&nc{Q?ndD#|nD;nTNL``3>!{hUw4c0doiDRC!f)S0wfJif$McRq > ?> > zLjI)ZQk7INjZtfH*x@zvuNXc_@WiMcR<u<}7y!VAUF46_VSi!xk3j=1E$8INIIrgH > zj|6R8<UOUg8FF{hw395Ml0)TkPVc~xhL!+VxYa@3#w^@U;xH1Dvr73#@V(q > wB%ZX4 > z9+cNEm<X$HJAxwzhRHu|)?r2Pt%t7JZU{{4l6%^u(t)G;;7RuK&)e~jBjg*ekM@> > 1 > zCFkJN9>dUEPQ-fS{*Z&?<R<-WbP$UxqZ*%YG6qQyOF+-b2cnNBX7#-LM%4!S > iJ?Le > z>w5i0K_?Clwzd#$7XOY1*;QDsv5OZkz95t`Wf|R7m9*LpFxVDrzhaK3kjF#i1(w > %G > z26rZskf{L!T0+4zMC(sbb8`7N?kYX>?C-GFpXbeRcDp3*O6)~Y|CG@D;T%mBnl > MYR > zTk06eu)*FCTGq3LE?8_7%K+`UE6qo}qc7Pk#MCsJP{xFNgT9h|c+F0;+6B2zvw > P9y > zdfVD3E!%fnVS$*3aq}=a)<G1;a`UKqQ)Y)pn1lp&Stg^>7_hf_XBfOUuq8vXsh@ > ai > zLOngA`pqVwxF`{&3qV%+jE4Ye_;m}Ke?jvC;)a;+g?gbQcvIP!$`sHPV!ZINd{N<^ > z0uP5ylTE?{E68!{r3N~8&V7UC`OmPJ$OtIL>nJZrzyO50Fg2jgt(rF)8DbASKe^bY > zkD$QYv2JhF)!#D#@z=b86(r?rW=6%kJ}B%^D|p%L(5f70J%Y$Y_Dli}g<LZ<oZB > tk > zKg92PB@!X^b1IWGbQsII|GHj?_^_6%UqMV62-wy<<u$intga6}-j>zdtJDgWbb > sJI > zHf1b2CZ55(E-9Ox8(LD0l@-HJUudjckY_8NZAxmQYz~2~(7{%i({07+7s5H1Pc2g > v > zC0A!jC`1;S)do=2{K`M<ijmrIc|Cx`)O@ZpYM$~0RMwIBKK_k)5xD9&YWXF<yjd > |# > zDurBp8E5=};Zlf@v#Qpyp4=5#aXbsIjg-0inSM`pqgpP-YM=T^xWcaEo{B+>Ul$b > Q > zMD#G?0eJpkyk@n8Hw$!Noy{?n8z#Q0nR6)4cVEe*vNe7R^-;0L_p`YEBWqD#i > &AHf > zaEqsA>~h@;)j9V!!@ZUp)Pqh3apY(Xdsjhb_l46#&lA?vv-4`}NV62s(*4t?0z6So > z-_18#-9I`~d2{z_Q`O-I2iuaHQf?Z0y?Xz41@BckFJznR!)zT9d*q%0`B(S!C<=zr > zC*wl>PfKT8+XaH@U|TMs0;wE*e!5n%ycN*4KnYfbqM-~$o3a7J4{}n$N5~*t4 > aPiw > zuJR`HjtY>_DCFEv5aW=WZOYi2#S)qnKIN)h2H)@d%w%oX;_ah%89`hr5@I!P= > KJW; > zoJ~!$l2RqadNw4FpTMeRS$Keiwt3T$6zWt>;gppq4^1eB@Ykufle3WGxmc6$ > 2ZAMx > zSAw}X?oic%`W5HsQX0*jtUXzke-N+mNQ2}JJLV_6g)#3&ku_ead9AqTn~)T9{8- > 01 > z7WlU@0P0LD7&{KbIL*8Eh8^Aat&rFM!;a5j?C8<DlG^~s{Da8ua87}}IJ(a%G$* > c? > zDiLmomoX0pm;{?!!%^ID7?dCK{qf>6c;QvKVNAPmL((%a=FPhUV^2qsS;X|CuQ > R|w > z@*60uX|^$sx`FBMdfp+hgIgqCR_immE)`!d-w?0d4f-*SPTa*U;DO-XFk}n+SJ@ > `m > zQ6bcyTNW$P3Sc@#f7yL=K6ClmUaA?G9X&~RfVrR>ES1GZ&bzq?3#)O-*=iCm > o*UxD > zzX9zKM<*$NbC)+aOpW)0sYj(PU}i4R2EkAKP)zg7etuVOKL?3fL>3FHhbfwL*6 > @*B > z{KV-rFsBvO+!#%9dfRB2FXJ73rPKpAP}Of-fQnJZbrVHIA$Z#mO+fPhWBp`|GsiP > $ > z*rk13LH?XCb_3}{em~tk>|Xh;f$8*cSXdTUVUDA7&YTJX%OYA7=?nZtGZ7zh6r > uI2 > zClGo)iVP$JSyu%SzJ&d*jQVl@g1b2Ev56>87w^qjpTx@vzkZmsrHD7}RcF&+3M > T`m > zh#x*m=1!+z?ha5$gZPWgo19g`cR`uG%Ct2Qd?E)O!FW`$ojQJ0OfiRfT~ezE*q > M3E > zciOL~jPp*&zq-7-l4<nfA;ykSyaU&e-i6Evd<j|s9Eyw0hXYXeR)9v*bFt|8i>ipb > zs=K5pcSn^3(mrdmXcQ5>qTTF#*Hun_sEEawRfuNZrcj^#)ML@Z5#wYntF{{MQ > q5N_ > zSn+i)4-=3YvxD;6JKeW>MJ1P!o62VGR%w3I*q>n6i4I@xeDXobvg2wZt5S(u&; > *?? > z?v%B8X7o$=yd0)AqO*Pd5fLwqd_8)SI}d4NBX9FegeL!2z5beoo`_`q!)xK!7Z*|} > zS~%Z4J0;NJ1<3q5*}k4h?NbGRK^U1yvxABfuJCimD(5+}jH-w4!}}GFO5`++rwkq > 1 > zYwf~)R;ZuLe|~3ck7NYZ{W!xfVlA$a7ZqN}A-_u`J-{`+5WPWL!kpF*hcHwLKk& > M{ > z{BE^Zv)}x^&!jTT1y=*!4~8EhiuehneU!>sVV4D~3kr(kK79|TKAOpK_8dvEadv<= > z<$ze(-+lB#wO~jxz*ETGXNfCYNN3$`uF`y5i?NiG>4;@$A7mT1$z8V&Ou;OPdu > _KW > z(3IyiU}y<mzcU5Vg?zr2WZraFn5*6CHRgVgbzIDwsak-!Yf6HblM^fQN#|wj$b0 > M! > zx|EvKjGn8n<}Mk#!|U<3V})3VALk71KWJ5ak|kSBr$^CfV3v{vj=zl)<;U;6^pDT2 > zO#2DGYkz@nIt+ZVl2Y-Z!heA;Ql<slWy$9s;M*9AZoeq`|EObq%Ez-c4?`Ul82Az > c > zm;k@P_Xc?t?5u6<e{e5VCLMq&oeFm3e_v7}o6Y?n;sovnG>9a+KQb5Tz27c& > ujPd_ > zM!m7&u(u>#aCY|hnLF!d?ptOj#)+q|a(KNGk?QYJmY0$3iy%MKSVy*G#43UP> > !kNn > z0w<i%vJgK<o8sNw0_qfGT(Q^CLTP2>>_EB0LEDoJN+yfC%qIF?k{r*edBfS*>c > =aw > z@$~NI>gSkD`Ifx+kH4@LGd}fAiNjr(R|OB*ILy9I?3Zs1&x$Xwx8vv*e{M8E8>K > av > z%v~l_zj`|JO4YEsjem0G(2G^gQ>Q%nllrPWm7~~Io>POX*d@ZheYfR&!!Zhmc` > g)I > z1soR^Ho(fv{&3j?Lu)(m4Kl)Nf&Z_pG3<%)h*p&Mdq@y4CwqYn>GK06+EX`0_i > hR6 > z7%YZ`TFbhVgeyGL>Nq(DjoXB_ci2HM-Jq;{i|QaKTr4O~CUO_|tG5v$k=?uWs_n > ^C > zT8TT%Jgm%UXy(FMVs7sEWxNJ)zC<b`>0y9v_2^;TLj2e}N)p5t@gkBHCgg)58rf > 3j > zTZ-GZvJ;Fm2w13Z7w~|~!wS=IGj4R5_|av!8eaLCC^mr^-guCK@nesRC9ZU-% > T=Kg > z?Z?vklao%oZS_X>k6ve;=e3!>Olr4i5eV$vU7A@rtti<*pV$t8lQM+T<aj4ZW%m > >; > z<FDd=lo7tOgpoaEAY3sq9$*50@=;cer!)9KG@!@s9JP-4`pCf$9V^ql{QFgLRhW > sp > zy{<zwMYUm;gvdbIK1DG_r9~`qE4I$N>Sl+{zAQ5w-2H*&x}@C#AZ52w_jNEw > g1^<8 > zbE~&DexG-_yvOA^WDe%wf7U_H@6;{`gYB7w{o((kW&eLQ>W`8i(V-7mrQ}# > uQRR9i > zW$#PMqTSE`B3YplVhgkx4n;jud=9`kp<jVV@-dJ?C#>OdZBv!3lp>+0M^ZgIYwI > G( > zuL*8*J4MQO6{;z}$eeD)qpD)k5fo%)<=`2i7p&pr<|+}L>uhS05xmQBmytuTp6L > Ts > z7M?k=O4!G;fgtzxHwmzS?O!hP6nPm_7S{L%U<qHaLGiyLHe=ZQ8p`?xFMqVaq > F6<% > zDJrt|ImT@)&~A9M?GRmolF9_lb~d(!GhlHZvDX{vu@$tmW5$qs+_KVr3w!*{B > xe!_ > zYdp&;f<UwUT*vlI8B-SjP~g3{)a)%x2JC8g?pKkV?U&akWp=7FbC)YegV&mXwO > XIN > zoTt8E(7zAXtLL<jGBGu=<ccti*-cD0hA=bemnvu~V0axq0x5gFFD%p!4$*8_p|1 > *h > z-0b43d56DMj1Z}B0wr$DS8{W#BPnh^4>GaW?O@f5QzgDGo2>#3^Wg|(KSA > pTTZ;_h > z(>B|`4`bd!#ljCFZ-b)8<8L*J2Gd0K30h_kI_SXH1wu>*d_$9JAn>j9tf!jxf(nZH > zK-!0ux!^z>U$qm`*&WHf@p{EAvVHQAz=>BhSa!ll53p0sNv&jv^QwEDQyX%V > >M#SS > zKUY0eNalj}OZc+Msoo<Xh|VDJKL?l4mF9m-uCQ;fhwt(Uccl~z`0@#xX@019|2 > #~@ > zLGBr!ZL`exrlhqpJmoa%=y|lrYGjHxUruOfCePh`MS`2!W6rNGY@+FzxQAlPR~u > hH > z`$i&XB#9*ImqxvSiir276FhOkjh8#oWY)Lxtc4K{?~t-=ud~gNoJLss9MHQycyZo > Q > zr7PH2#U{9p?NhFoE>g=V<1zAXov!o2xrjxf=A8banTUYEDC1i>H91dm5IlF<gBc > #t > zVrKyZB7d=wB#v!#2Zo2-00U%UNe{=t&;r`wK(kZiH@<>pvi-W+^funyp+f^a?cg > Sr > z{jtSz=Maqx*gO88EsQ+zbSen8M-$dJ5d3`joMFYwf6K^-Rg#s5XTzyaKB0V6FG3 > `O > z!_7kHuP5`3He|ML=00a-Y7T2%ONsM1lIR{F7dqyi`gROUTvt;p+vbI@q+~96%rj > !F > z8qUzzPkp)X1%f^F7);Q^o^@%uu#>*f#Vml}O(dhj-ShNkX=hBzH6rnqWjge@% > Xwf~ > z+M@RnkgFjy#+qlmV-MCMD+dc3Kkq8d;kKQoeM0Jtg+UPT)d1cjI{=L<jW;6_H > %wP* > z^Z4Zm&r8DUY2Nu3_Y{f3KzR-`EY8#&w5a%LpCFoYTjEIv(JE!s-PVe1!eCB$3J@ > |` > z4}n$bhC>(5SVGU>E;LWdC@uQM^-l3zsCBXj@~In*^p`l93{HQmLR(i3MSo9D0 > a4v$ > zgHw4ItfO)#Ahq`ue#fi!nyFdbR}YcJ7}eLf?>6W91cJ$e@+`5?74B7{_m^k9;jII{ > zz1&!1FM5)8fyeY-EHB9F%R)Mjg-#Q4{<64Cb2z#3i)u}PhvBBl!QSIS{u~132lB^j > zRNvPmfQ|op;}FLl%^bn@9K&uL&hOo}zKzZQdTrQ~{P&Wg)C`-B23U_hE=b(K{ > jto! > z3|>qu%3#gg5)-G2zmPo@HHKc;z|UA$u-i%-HkFD%ln3JJ#Yt<4u2u{=mFV^s^8 > -e) > zG#{1XQKzbI%7O<(YOWx~Nlj7{{WwbMm9fPolm;}Yh!7@Q7Ve|sef~^ccF+igC > J7^= > z)>Bd<&EVKTa(me<!fD>aL0_>)tRa2C7q~Am4+AKXS1wzZ;jW!cx0M%(C=0U~T > YS~} > z-Dq)JBSbr7%!61>MB>!2vhy7<GPSki{ee7lo#diyt3}u+F&K^n%N~k0qa7ag3Bt^ > D > zgkl;p7#rj&C*jB9_ktm%C&el@16+wS&YDJM@Fq(jxwDtT^@!mT!cW@oUgx > kz)zp41 > zig>LPSx0p#5VD@zYWwU|RT9A>T9|WCbbhP8X;&x*-x|UIz3}cqU~-@iJtHD_ > O)}|Y > ze~M=vM`_eQNE4hmc?Jm$k02J!9_WABa`p+M!*WTz4>4G}o*;!g$Dq&0+ums > =&}FW_ > zaY3*%-tZ%NP};_8C=;2}1)Jlx=7ViTj|x-<t-5)gH97Gr55MRW!6m<vX-m7o<h<3 > k > zD8e+(ovIhiwQ3soSIR!z6(^pHc1_Q@_l}`~=!9H{DzQ8s2zFL@=XQl0-Ai%q%+fs > p > zNiR7V$rqm`rbs-&{P~iDgJ*@k(Efe?s-Mrs&)<KU%}PP~PX&L@mGe{Z=63|v0D > qe~ > z=eFRV6NvmScna(9|J!sTw>90K6yldIYgpRFKc<MdEq*(v{5Ns_zr}B7nBP`$J9qD > w > z3Mp99$6sHXf9p4Hi{H)=`6W&(^;7)c@<ndz`E#J-mljyQyb|EI=<lz)^5?L}ZC$rN > zm;cgMpz?=JH}BNj!hZ&yzeE9m)EB=S@@E)&Tg#sT*za1VbOC^Wgk!hG|77If# > hndq > z8}WmfZ!5UXpTAUS8~*KrKWOx}{B4BzB|icFTmBYM+}7}CU-nBL0EjmE%>#e;Y > zopy > Uu$FT(x`7RthBdwh^P8>z1HD}In*aa+ > > diff --git a/IntelFsp2Pkg/Tools/UserManuals/GenCfgOptUserManual.md > b/IntelFsp2Pkg/Tools/UserManuals/GenCfgOptUserManual.md > new file mode 100644 > index 0000000..6291899 > --- /dev/null > +++ b/IntelFsp2Pkg/Tools/UserManuals/GenCfgOptUserManual.md > @@ -0,0 +1,353 @@ > +#Name > +**GenCfgOpt.py** The python script that generates UPD text (**.txt**) > files for > +the compiler, header files for the UPD regions, and generates a Boot > Settings > +File (**BSF**), all from an EDK II Platform Description (**DSC**) file. > + > +#Synopsis > +``` > +GenCfgOpt UPDTXT PlatformDscFile BuildFvDir [TxtOutFile] [-D Macros] > +GenCfgOpt HEADER PlatformDscFile BuildFvDir [InputHFile] [-D Macros] > +GenCfgOpt GENBSF PlatformDscFile BuildFvDir BsfOutFile [-D Macros] > +``` > + > +#Description > +**GenCfgOpt.py** is a script that generates configuration options from an > +**EDK II Platform Description (DSC)** file. It has three functions. > + > + 1. It produces a **.txt** file that is used by the compiler that summarizes > + the UPD section in the DSC file. > + 2. It generates header files for the UPD regions. > + 3. It generates a **Boot Settings File (BSF)** that can be used by the > + **Binary Configuration Tool (BCT)** to provide a graphical user > + interface for manipulating settings in the UPD regions. > + > +The **GenCfgOpt.py** script generates important files that are vital parts > of > +your build process. The **UPDTXT** and **HEADER** use cases must be > done before > +the **'build'** command; the **GENBSF** use case may be done at any > time. > + > +The following sections explain the three use cases. > + > +## 1. GenCfgOpt.py UPDTXT > +The **UPDTXT** option creates a text file with all the UPD entries, offsets, > +size in bytes, and values. **GenCfgOpt** reads this information from the > +**[PcdsDynamicVpd.Upd]** section of the project's DSC file. The DSC file > allows > +you to specify offsets and sizes for each entry, opening up the possibility > of > +introducing gaps between entries. **GenCfgOpt** fills in these gaps with > UPD > +entries that have the generic names **UnusedUpdSpaceN** where N > begins with 0 > +and increments. The command signature for **UPDTXT** is: > + > +``` > +GenCfgOpt UPDTXT PlatformDscFile BuildFvDir [TxtOutFile] [-D Macros] > +``` > + > +**PlatformDscFile** must be the location of the DSC file for the platform > you're > +building. **BuildFvDir** is the location where the binary will be stored. The > +optional **TxtOutFile** is a name and location for the output of > **GenCfgOpt**. > +The default name and location is the ```<UPD_TOOL_GUID>.txt``` in the > directory > +specified by **BuildFvDir**. The macro ```UPD_TOOL_GUID``` must be > defined in > +the DSC file or in the optional Macros arguments. Each optional macro > argument > +must follow the form ```–D <MACRO_NAME>=<VALUE>```. > + > +**GenCfgOpt** checks to see if the UPD txt file has already been created > and > +will only re-create it if the DSC was modified after it was created. > + > +## 2. GenCfgOpt.py HEADER > +The **HEADER** option creates header files in the build folder. Both > header > +files define the ```_UPD_DATA_REGION``` data structures in FspUpd.h, > FsptUpd.h, > +FspmUpd.h and FspsUpd.h. In these header files any undefined elements of > +structures will be added as **ReservedUpdSpaceN** beginning with N=0. > The > +command signature for **HEADER** is > + > +```GenCfgOpt HEADER PlatformDscFile BuildFvDir [InputHFile] [-D Macros]``` > + > +**PlatformDscFile** and **BuildFvDir** are described in the previous > section. > +The optional **InputHFile** is a header file that may contain data > definitions > +that are used by variables in the UPD regions. This header file must contain > +the special keywords ```!EXPORT > EXTERNAL_BOOTLOADER_STRUCT_BEGIN``` and > +```!EXPORT EXTERNAL_BOOTLOADER_STRUCT_END``` in comments. > Everything between > +these two keywords will be included in the generated header file. > +The mechanism to specify whether a variable appears as > **ReservedUpdSpaceN** in > +the FspUpd.h header file is in special commands that appear in the > comments of > +the DSC file. The special commands begin with ```!HDR```, for header. The > +following table summarizes the two command options. > + > +### HEADER > +Use the **HEADER** command to hide specific variables in the public > header file. > +In your project DSC file, use ```!HDR HEADER:{OFF}``` at the beginning of the > +section you wish to hide and ```!HDR HEADER:{ON}``` at the end. > + > +### STRUCT > +The **STRUCT** command allows you to specify a specific data type for a > +variable. You can specify a pointer to a data struct, for example. You define > +the data structure in the **InputHFile** between > +```!EXPORT EXTERNAL_BOOTLOADER_STRUCT_BEGIN``` and > +```!EXPORT EXTERNAL_BOOTLOADER_STRUCT_END```. > + > +#####Example: > +```!HDR STRUCT:{MY_DATA_STRUCT*}``` > + > +You then define ```MY_DATA_STRUCT``` in **InputHFile**. > + > +### EMBED > +The **EMBED** command allows you to put one or more UPD data into a > specify data > +structure. You can utilize it as a group of UPD for example. You must specify > a > +start and an end for the specify data structure. > + > +#####Example: > +``` > + !HDR EMBED:{MY_DATA_STRUCT:MyDataStructure:START} > + gTokenSpaceGuid.Upd1 | 0x0020 | 0x01 | 0x00 > + gTokenSpaceGuid.Upd2 | 0x0021 | 0x01 | 0x00 > + !HDR EMBED:{MY_DATA_STRUCT:MyDataStructure:END} > + gTokenSpaceGuid.UpdN | 0x0022 | 0x01 | 0x00 > +``` > + > +#####Result: > +``` > + typedef struct { > + /** Offset 0x0020 > + **/ > + UINT8 Upd1; > + /** Offset 0x0021 > + **/ > + UINT8 Upd2; > + /** Offset 0x0022 > + **/ > + UINT8 UpdN; > + } MY_DATA_STRUCT; > + > + typedef struct _UPD_DATA_REGION { > + ... > + /** Offset 0x0020 > + **/ > + MY_DATA_STRUCT MyDataStruct; > + ... > + } UPD_DATA_REGION; > +``` > + > +## 3. GenCfgOpt .py GENBSF > +The **GENBSF** option generates a BSF from the UPD entries in a > package's DSC > +file. It does this by parsing special commands found in the comments of the > DSC > +file. They roughly match the keywords that define the different sections of > the > +BSF. > + > +The command signature for **GENBSF** is > + > +```GenCfgOpt GENBSF PlatformDscFile BuildFvDir BsfOutFile [-D Macros]``` > + > +In this case, the **BsfOutFile** parameter is required; it should be the > +relative path to where the BSF should be stored. > + > +Every BSF command in the DSC file begins with **!BSF** or **@Bsf**. The > +following table summarizes the options that come after **!BSF** or > **@Bsf**: > + > +# BSF Commands Description > +###PAGES > +**PAGES** maps abbreviations to friendly-text descriptions of the pages in > a BSF. > + > +#####Example: > +```!BSF PAGES:{PG1:”Page 1”, PG2:”Page 2”}``` or > + > +```@Bsf PAGES:{PG1:”Page 1”, PG2:”Page 2”}``` > + > +###PAGE > +This marks the beginning of a page. Use the abbreviation specified in > **PAGES** > +command. > + > +#####Example: > +```!BSF PAGE:{PG1}``` or > + > +```@Bsf PAGE:{PG1}``` > + > +All the entries that come after this command are assumed to be on that > page, > +until the next **PAGE** command > + > +###FIND > +FIND maps to the BSF **Find** command. It will be placed in the > **StructDef** > +region of the BSF and should come at the beginning of the UPD sections of > the > +DSC, immediately before the signatures that mark the beginning of these > +sections. The content should be the plain-text equivalent of the signature. > The > +signature is usually 8 characters. > + > +#####Example: > +```!BSF FIND:{PROJSIG1}``` or > + > +```@Bsf FIND:{PROJSIG1}``` > + > +###BLOCK > +The BLOCK command maps to the **BeginInfoBlock** section of the BSF. > There are > +two elements: a version number and a plain-text description. > + > +#####Example: > +```!BSF BLOCK:{NAME:"My platform name", VER:"0.1"}``` or > + > +```@Bsf BLOCK:{NAME:"My platform name", VER:"0.1"}``` > + > +###NAME > +**NAME** gives a plain-text for a variable. This is the text label that will > +appear next to the control in **BCT**. > + > +#####Example: > +```!BSF NAME:{Variable 0}``` or > + > +```@Bsf NAME:{Variable 0}``` > + > +If the **!BSF NAME** or **@Bsf NAME** command does not appear > before an entry > +in the UPD region of the DSC file, then that entry will not appear in the > BSF. > + > +###TYPE > +The **TYPE** command is used either by itself or with the **NAME** > command. It > +is usually used by itself when defining an **EditNum** field for the BSF. You > +specify the type of data in the second parameter and the range of valid > values > +in the third. > + > +#####Example: > +```!BSF TYPE:{EditNum, HEX, (0x00,0xFF)}``` or > + > +```@Bsf TYPE:{EditNum, HEX, (0x00,0xFF)}``` > + > +**TYPE** appears on the same line as the **NAME** command when > using a combo-box. > + > +#####Example: > +```!BSF NAME:{Variable 1} TYPE:{Combo}``` or > +```@Bsf NAME:{Variable 1} TYPE:{Combo}``` > + > +There is a special **None** type that puts the variable in the > **StructDef** > +region of the BSF, but doesn’t put it in any **Page** section. This makes > the > +variable visible to BCT, but not to the end user. > + > +###HELP > +The **HELP** command defines what will appear in the help text for each > control > +in BCT. > + > +#####Example: > +```!BSF HELP:{Enable/disable LAN controller.}``` or > + > +```@Bsf HELP:{Enable/disable LAN controller.}``` > + > +###OPTION > +The **OPTION** command allows you to custom-define combo boxes and > map integer > +or hex values to friendly-text options. > + > +#####Example: > +```!BSF OPTION:{0:IDE, 1:AHCI, 2:RAID}``` > + > +```!BSF OPTION:{0x00:0 MB, 0x01:32 MB, 0x02:64 MB}``` > + > +or > + > +```@Bsf OPTION:{0:IDE, 1:AHCI, 2:RAID}``` > + > +```@Bsf OPTION:{0x00:0 MB, 0x01:32 MB, 0x02:64 MB}``` > + > +###FIELD > +The **FIELD** command can be used to define a section of a consolidated > PCD > +such that the PCD will be displayed in several fields via BCT interface > instead > +of one long entry. > + > +#####Example: > +```!BSF FIELD:{PcdDRAMSpeed:1}``` or > + > +```@Bsf FIELD:{PcdDRAMSpeed:1}``` > + > +###ORDER > +The **ORDER** command can be used to adjust the display order for the > BSF items. > +By default the order value for a BSF item is assigned to be the UPD item > +```(Offset * 256)```. It can be overridden by declaring **ORDER** command > using > +format ORDER: ```{HexMajor.HexMinor}```. In this case the order value will > be > +```(HexMajor*256+HexMinor)```. The item order value will be used as the > sort key > +during the BSF item display. > + > +#####Example: > +```!BSF ORDER:{0x0040.01}``` or > + > +```@Bsf ORDER:{0x0040.01}``` > + > +For **OPTION** and **HELP** commands, it allows to split the contents > into > +multiple lines by adding multiple **OPTION** and **HELP** command > lines. The > +lines except for the very first line need to start with **+** in the content > to > +tell the tool to append this string to the previous one. > + > +For example, the statement > + > +```!BSF OPTION:{0x00:0 MB, 0x01:32 MB, 0x02:64 MB}``` > + > +is equivalent to: > + > +```!BSF OPTION:{0x00:0 MB, 0x01:32 MB,}``` > + > +```!BSF OPTION:{+ 0x02:64 MB}``` > + > +or > + > +```@Bsf OPTION:{0x00:0 MB, 0x01:32 MB, 0x02:64 MB}``` > + > +is equivalent to: > + > +```@Bsf OPTION:{0x00:0 MB, 0x01:32 MB,}``` > + > +```@Bsf OPTION:{+ 0x02:64 MB}``` > + > +The **NAME**, **OPTION**, **TYPE**, and **HELP** commands can all > appear on the > +same line following the **!BSF** or **@Bsf** keyword or they may > appear on > +separate lines to improve readability. > + > +There are four alternative ways to replace current BSF commands. > +### 1. ```# @Prompt``` > +An alternative way replacing **NAME** gives a plain-text for a > +variable. This is the text label that will appear next to the control in BCT. > + > +#####Example: > +```# @Prompt Variable 0``` > + > +The above example can replace the two methods as below. > + > +```!BSF NAME:{Variable 0}``` or > + > +```@Bsf NAME:{Variable 0}``` > + > +If the ```# @Prompt``` command does not appear before an entry in the > UPD region > +of the DSC file, then that entry will not appear in the BSF. > + > +### 2. ```##``` > +An alternative way replacing **HELP** command defines what will appear > in the > +help text for each control in BCT. > + > +#####Example: > +```## Enable/disable LAN controller.``` > + > +The above example can replace the two methods as below. > + > +```!BSF HELP:{Enable/disable LAN controller.}``` or > + > +```@Bsf HELP:{Enable/disable LAN controller.}``` > + > +### 3. ```# @ValidList``` > +An alternative way replacing **OPTION** command allows you to > custom-define > +combo boxes and map integer or hex values to friendly-text options. > + > +#####Example: > +``` # @ValidList 0x80000003 | 0, 1, 2 | IDE, AHCI, RAID > + Error Code | Options | Descriptions > +``` > + > +The above example can replace the two methods as below. > + > +```!BSF OPTION:{0:IDE, 1:AHCI, 2:RAID}``` or > + > +```@Bsf OPTION:{0:IDE, 1:AHCI, 2:RAID}``` > + > +### 4. ```# @ValidRange``` > +An alternative way replace **EditNum** field for the BSF. > + > +#####Example: > +```# @ValidRange 0x80000001 | 0x0 – 0xFF > + Error Code | Range > +``` > + > +The above example can replace the two methods as below. > + > +```!BSF TYPE:{EditNum, HEX, (0x00,0xFF)}``` or > + > +```@Bsf TYPE:{EditNum, HEX, (0x00,0xFF)}``` > + > -- > 2.9.0.windows.1
_______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

