From c7fc280ccb19e6f55dc91270e5b61161310d7646 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Thu, 30 Apr 2020 18:17:53 -0700 Subject: [PATCH] Add binary custom editor example --- custom-editor-sample/README.md | 10 +- .../documentation/example.png | Bin 0 -> 230661 bytes .../exampleFiles/example.pawDraw | Bin 0 -> 10199 bytes custom-editor-sample/media/paw-color.svg | 21 + custom-editor-sample/media/paw-outline.svg | 21 + custom-editor-sample/media/pawDraw.css | 79 + custom-editor-sample/media/pawDraw.js | 231 ++ custom-editor-sample/package.json | 12 +- custom-editor-sample/src/dispose.ts | 37 + custom-editor-sample/src/extension.ts | 7 +- custom-editor-sample/src/pawDrawEditor.ts | 416 ++++ custom-editor-sample/src/vscode.proposed.d.ts | 2097 +++++++++++++++++ 12 files changed, 2926 insertions(+), 5 deletions(-) create mode 100644 custom-editor-sample/documentation/example.png create mode 100644 custom-editor-sample/exampleFiles/example.pawDraw create mode 100644 custom-editor-sample/media/paw-color.svg create mode 100644 custom-editor-sample/media/paw-outline.svg create mode 100644 custom-editor-sample/media/pawDraw.css create mode 100644 custom-editor-sample/media/pawDraw.js create mode 100644 custom-editor-sample/src/dispose.ts create mode 100644 custom-editor-sample/src/pawDrawEditor.ts create mode 100644 custom-editor-sample/src/vscode.proposed.d.ts diff --git a/custom-editor-sample/README.md b/custom-editor-sample/README.md index 012e1b3d..d4652559 100644 --- a/custom-editor-sample/README.md +++ b/custom-editor-sample/README.md @@ -1,8 +1,11 @@ # Cat Customs - Custom Editor API Samples -Demonstrates using VS Code's [custom editor API](https://code.visualstudio.com/api/extension-guides/custom-editors): +![Paw draw editor ](documentation/example.png) -- Cat Scratch — A text based custom editor for `.cscratch` files (which are just json files) +Demonstrates VS Code's [custom editor API](https://code.visualstudio.com/api/extension-guides/custom-editors) using two custom editors: + +- Cat Scratch — Uses the finalized custom text editor api to provide a custom editor for `.cscratch` files (which are just json files) +- Paw Draw - Uses the proposed binary custom editor api to provide a custom editor for `.pawdraw` files (which are just jpeg files with a different file extension). Note that this requires VS Code 1.46+ ## VS Code API @@ -10,10 +13,11 @@ Demonstrates using VS Code's [custom editor API](https://code.visualstudio.com/a - [`window.registerCustomEditorProvider`](https://code.visualstudio.com/api/references/vscode-api#window.registerCustomEditorProvider) - [`CustomTextEditor`](https://code.visualstudio.com/api/references/vscode-api#CustomTextEditor) +- [`CustomEditor`](https://code.visualstudio.com/api/references/vscode-api#CustomEditor) ## Running the example -- Open this example in VS Code 1.44+ +- Open this example in VS Code 1.44+ (note that the custom binary editor requires VS Code 1.45+) - `npm install` - `npm run watch` or `npm run compile` - `F5` to start debugging diff --git a/custom-editor-sample/documentation/example.png b/custom-editor-sample/documentation/example.png new file mode 100644 index 0000000000000000000000000000000000000000..b14743a8f3a4a17b8c0b8d0d5698a0e4d767fec8 GIT binary patch literal 230661 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

br^>9bSbZ&|Qa5m9tas9$vW*K9T_Qckn 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 ZIE0eW;?z&zV^`x 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 z zYi?yYBhG>U5rUDwsF=^J!?G=Q5gNS4_R>T{9b|OCDZZ8+h6aKTj3&!}UBqA=#}@sN z|LjxQ)cKWn-r%2J&!0~ zdMxu4OzAyK^Xr}dWAbZn@`u$b!!%*%_|g7I-s%5&PWq6A!Zo^dOTgDlgYFm!>9EqT zg=0rYgzx@}`--o!il~R6?o<;NfoB;$FlM2=(Qs;S$lIx0$7;_LpY1$S42oewrN0qc6dqYJ}xk;pP=rb@IJ?r;_3YxA9 zHBhdAV)-8LdPNmsGS^C)<_Bl@ooh?|`Psac)w%a(iXBbS#HXY&Mn2ovsPHk^WF;AP z-iizv08r+vCiX}M z7VBOGY_xs<1pkCB23QSJOBPTo>%A?n+enk&gS8U@e;|-vZo;fW6kZvnlPqQ!f_PP; z#ioHvMzSkF8M-s7a`s^2R=PBMLl&Xy&Xz{N+d&T*&8FNreFmMjm}t+9<2I9fb3{yb z7~t#M9hqjakYupS4|UW-|98412Vy+~`!TF^L<3PUE0<1okp?=ni?vl&{wFfqxC7~1 zkdt6KJ7N`%vk$>-OQA|RgGp!HQ&Z#r47Ld|7MF~b_hQQv;=e?k!;8{@JX;i{5aB|O z#MbEnDR$-z_3ULVsti}tqVIiin>)wzlwp|te;~fQaQjxu5*I3Yc=_Z2CM3*?p$p3u z4?r6YOg;fAFVNxHL5#=@;)swiIsDxg8VC)@YqHc(aup-h1cojA(fAllgx~cW?c=Zf zq+~(z=oZ+wK(_!r2c#{|K@-W-AgJMA4phN5!*kPr9TOVp)D1V`ub{-8ZIkjza#zf< z*0BLYbeEQFQ~nHyi*=E%yax6?zstvG zd8Y0eX;5Doez*2uaA#DXrK#-N%Ku3hwS2i~6 zRfxHt?+KU)lqT5@-vBc3gwx>qGpL7vKF7wg}F{A4(-^$QqqZ5jq{{OqcztBY-pUS@3XAlRe?q>8UHb{@YI zG3NiFi>CmyBZK|GT|Y!Txp3=2#L7j{L*#ZkmOF}4clcjfkv!CL!I*p5FM5eBnJJ2j zt%(g#6T_to)Yek#?AtVOV;ih#Sipdoyqr&$enuXB&tO$EFgk&1b*pd%cw4{*I?6OD zX%?25sxRLDEw15rYW#Rm9!GKxFDAVaa}6p(TrmC0aHNr&RWH?s zwKQ^Cox&>Q+#o)zW;ay6q7W?(`M9!#d#&mHyA#uM{H6bQEAO#>JTo{2?GXiwJ~3a7 zy3Gm)_ulmykB*9xUfbCG&qY{W51f{TSk5;@iKjA}(SYqG@S;TgrbI-E_ss;Y9hZH9 zoyK7io(^3jI0|!aR~3h{2_`GuA_^b-^FUes~wh*y#v69}+kuR1CymKy;B4!6Mb6SynY)gTjCzL;GC7o&ECX$+W z`>`kii%sU}S3=xR<35B^EA9#&HX$JaVN1H7x6ljo6d4ku%V=Pz9k*%bt1hCNBW5O{ zAxR#GGQ>?S(x*3=um#j(NtAOIe4OuqxW|*(p3cUdu{P}b)3#g2#~rZ~U4>X@L^fRu zPm-lTQv+wBkese%8S}rmSa!&YvWc6%YY)u4tt3+>CP=n5Zzzgszi(e?*S4y{VzBmh z%WCt<^BR?st#!#UF`Otmm@X0F2cP#g;;JF5oq;3CHd@>_Hb;kX_C=wUMyJ^SqEP%d zZb=B$EP%JDp``i$y=kxBpy$KaB3jE3>D+|}Kf)-*C+KjTCgr^WS~i$*V=_(B!I@Z8 zI8x>c;slV^mK9*6@Hx74kfanNls$#8etg{St%RB-9OYvt{2hhaHfme%1z)|(ky(sm z6sVTC_0jv|lKRpfmd|qDXV(1DA+qK1t(H(79bOiVu)l*Pe=-`2-~XXsQV_!}G@9O< zs{04K;ud*#5nzxeQf9I-4xiYqa6E9(MIvU~uDtJkstA>krh)fF02Q)m6wB^V zwz5W18F@RzoN{5zkAX3)sq(`oEJv9_t2u>)+uMKj!`P!URQY90x06T?6$I$H9K)ui zhthfb@2CrbTf7MvWe4U1)j)HrJX&7EDcHx#GtmZ;^ZPpOr-`~ZHj(S#AJ>1k+tU+2 z$zJiV(Rz*)pE~M3$phE4>#iMw+WX34x(~hlsU>*9&%H0uPwt?_SwE88r?_5p*0#! zlxkW}J|!RsxcatD_hW&slA8Ocu(%7#vF#lp8?`V49=g@5)u5hs}YDt$S9@kD_1`8+J=BU#BAm9I8#`oS2CP5+(mATF1+$L3^%Y9z9Z2gno@S^ zAmwd=+|oZR{3tMMV4C4<8M!WL(+ovLBW}tx z3XpH#$})HPXpv+ddyY2BuecS4E|sh>-dSJHkWEZR^_l;+wwdIwDf+{`(hlmHcR=^H4sP z&S_vwfDj7Dhhgf05Qh^&n4c4Yh}%!Z7cvMrhdZ*Wp`BSUO00euIT|%0ZEy*fZOBuN z^)~LOpY9677a8LaDM%DKsZtb??6!$FuW9xU96T3RGfrH z624OnEAOPK#R-$of@B(8^}Ar9YCgd>Zc+2+*-9#(aBaO2Arpi2fe%~5khpRaHmP9Y zlZpD<@GRCFH_WKp15Z+xJ2&2XCK8{qs@>`=S83@A@9pLfa5QGm&5puNlbcKY#EI|j zV#i?aAv8|evF(MR2(fJkLL{h)^`6(OJ4rL4R*C~UIxjO}ab^4#uVzbjwXuSTq* zG4sdeGUu}uf036omg_g;7b61)IKlLZ$;d3<2`o9==)Tii`NN+hTV`$Xd6-gyZ z(?O$Oe+%SvR7~}?vc~AxXY&PNU5EtoKk`0u(Y5RDPa`H}=VORn8Q z`ddk<=?*@m{ZY0JMDVE8z5EE~!;tXt(UY0c!^GTBObt!*6nD@eHaiZXD(7iZU=Mlr0pl@O$i3O=#0%58Pp%=s1g>1iAX*C1caB1yDm!8 z6ws2@P|-P!Dq08MjhS^DnQ5lzq`;o3VZoEtFjS}FY7(g8Blv0aV{9MMAqmBc4xr(d z>9DLoqpF8sL9ZOGYix?*bWAWgcR>Y3Fkb%<;UzIYDl~XD;69tx+*x!3h{|5B9U{zJ z2BWTaDbs(NnXP}OF@;`Z%x=#&tFoak$Y z{XXj6Aud0X@?>5I0)#S2V$YX9oxapV>SZ>i)@jk*onc~9Pke=et$oj9u$r4O(6ZcJ zg}Sgd-#yNRAwo$~*H=U1Xk3_PPN7hPot(Mxh-FwKSDG4^2R4MQV|rlnmt$-}**_M5 zR>Zlb^aH-?KdNAeBC%_HiNrZ$7=&SJ_?errIdmZL7)Yk208G1ARCMT~MGw^kfga}V zjfmmHihNUOR8Y%3!^$F6uPvuU!}v}&yCssc>_*7Q)##u&2mP6xE*OeL zo*neW@&HQub%#V6&;%H)2Wk5@myB%gSO#Fi`MAXDf&;{YoMLifRxcg_-#j#T?(VQx zWanB9nDC)cVJ_A64$x0~t`O2kJw&!AUyq<@%q_mT80y8}2Da`rx|W3A1~WOT+9i9W zEQr8;A#2Q>>%sLHW8_<}V?50q9H<>)y3m%GPp%Y&227^0KoRrmax=!z4v5!H_fWRy zWwUynhS@B`(7%DQ2R2C>mfi4sck)f`1DeBR&XaJ3YfS~IR+|=yJiet=AYvs;J->Z;t#$So~*sP zCkXV5I`r0oWW$-mTMp<0gfUHRaBq5@sAiexEr-Hg1^%7Ewk>M(kNR!52Q5Xx-;ZnK z^+_?)e+nA`M+$9rh>84c>eo4GF0Ok75I;;DT{jZ!;m!o-rf||*nZ(ZoZlfiBPP@e2 zUcK^fz8vI*|I1K6-+C0f{9KjA@QvJjIKeD4{wMRNu08lY(sA$YRTO^v&ZoB`roLvy z>^@$*=ym9;0`ZB;+R50&5q$oM)w|pHTy*##`Xu*JAmaO4<@^t(F4WG~KJd+awdZqq zT>J9LVef-A5PHz(s_V6^-us>#yLGwkRXK>J)#pvOZs2BBCdex$hV1P+WyM&;ZKCC} z=k*7hy}o0o$kvAK`Jl5?%vb)TV7%Q*b$9>PXz=|)_G)KWHdivJXY%oVXr(7~PgU4w z;EeanDBOMZ4zcSD&nmJS{N=^J@+ML-)6X`j_MSHT!bCfZIdGkiX>LPz^Ww`DM|y z6Egwg1P~00X-gq{9RmCq;;csqGKvn*_ULN(0>tZ{vmbwAsFjp!*^%|^;$mV@c+!Xt zRr7MQcb|@!BmX64Rd&ma28Yf(1GP^$Nb8>=YywM7Edbtt-VX>7(+bz#1@jY zX>=Jl&l>ah-Land_`CQ?LE(-R4z-v}`_}y;I638GI6zHXH-r42sRWk%=AHM%;VZ!~ zHkM9^G<6iHrs!CxD5E4x7RHzq!@XjbIW9r2PS}7tuzut*v99@@K41}|K13BKRWn%H zMs=0@%wE4aMAg(iN<_@Yr3s>Tsc(GUL{}dh*CL4?R))cd63Rf~elsO3iqVobeXqVD z6u~41t3YxjLH&)Fb(;%segf!O>L{G2`+(MDPCGg?+y&oK*H`ZnEnGK4Z#8&#@*;#P z=#U2*TvWnY%-XrXGcd5LWlPrVNR8Mlw?4`< z>vc7vdc6y~_0XamYx>8j@6n&vXt_3M`iJSw2<`PgZvf<sLTCtTLU?#I%Iy+4d2(j!nD1%ZiS}x9MS%l_VW1Y z$|QQE``_UBYMyftT4ObQbjrNSG*~c|8cJBp&!RJz5 z!nCqb!cHjj)*EdPF$vATN&rI*eR*dNkQS4uJ zYe{fAzAlEw_q-wt2t-PG(FSgbT3LfWb9bExzky_?`$7ejRa6K+VD9ie>b3?f}A;{z`wgwdpPh8^=6RP-pdcD{5? zz64a>c!@bVG<>_A)TQ}$d7&?CA(DXD1>^ES-Nq%fgkA}x3k5gtuy3?|r9lT}By<05Mw?$}Wb z0m*suKV^POPy{#jShSb$aPwFH1X^2L*HCvOCzpdf_sNp&_znCPyZ5G-{f@ny|^oCScPP zB`ns|FN!;P$(EPWw8~F(jm_F?owa^m1wb{JvX70&$-tNOPdoe@s+m}n?PdG97ei&v_tr)t81Z*vxV&)8Rj{ma8zcatHX}iB zXOA9VO9NXUXXcNMir6Z;wXW0`f0-dlvYNrZk|3Tsi;`d!xVDwFhusD`>bz5rM7RG4 z$(MZlKK{T+POYi#EPxvF1FJ|4Gye~kVkI#p3M*LYw>}lP0GVuOV|@-ysfjHu&3-_k z9CLdTnC(loi)fSd#oS+NQrWsmX!?CD6LOS+hx*8?WSspy`GNeGDrvd>OeZb+MF^v< z>kgg6QOss!RhXDE%=_beIBXi8nl``a^9{f2L~>+oLA?HXC$iG-lfohSL7-Lq$X-`o zVgB!lsD!XCw&HP^zOk$gN2^4=i4nwpmUvPzxyzrxhwPpoxaOCzffe9*k}6s)sI*ZB z&?stH-|G6Da>%}w(wn4q>n3ACb>*Mn=C7j=vwmd}4_IDZ~LJ^15 zR3xE9V0gs#giSQ=&ZnsltZ$Ug8CiVjU??OpEY{-6BHI=opujTMM63YIElxmSh>qaCn zmSM9HG_q}aD8&#RXl4!>W8bxEs%i@Oep7+5DIiKp^vL5ca8F5LiR(`IRNnaeLr_0+7S9KXr=@|y`%oK`OQqzt~D|bU=Lj{WMl9? zGU_Jmh)dk* zY<@!O|MERk=s>WWySk(1|<7A&YAD#vSJ$Ap2 z2>EqAR*Qg&{pM1P_(BtRMdZIoz@Q&$<4I#Z&c?Ce;T!~lA|gXtwtIMh6#qKCn!UTX z2Aa=WB;`M;tAgX`R7ILVNA*l~U2N0vyhJfqJ*Oe(lu4*Y`5+r?dkLfud(012-zRb(Tx_!Bl}NXAgY(si-l z$$XEr!Cn7Y^Lo&lc^dTT3LH_s6*NrkGUMA~PVT@=zbrtAH>He2X(`$k$f>E4hU+f} z?&v*U8f@+CBrra@wTC=roAj1|a5aNGTD7;G>ibVTCJ9Xo*!99AFrddQ|7rI#j6kZw zW1xrw1@1~JB&}pdMUaWJViRz(oKCX9(|cW;xblrGYkt$T=Vl*IP$n^km zP&KK!CmR}YZvMytq}hJj1h6YVq?TynZ(+~ zkKAXfLIwd)zu>QC>lH*P0!$F1?0$&$GL;iG+{{piTl;`9G8igBGmg(9#I`AxMCAp# zC`tVODTaZ1I$&)B(Inc$aJU(H$ca>l!HP_093(Ah{(TT8!?2a_BVrEy$Mcfi*aUoT zwlt}Q%G}ji=E|u#q0f;BTvBXPUBwxl;{*!~DHTl!uvHO;_v_kBE6G^ZUx;3mRs|G8>N_En|wGX~N=B zo5tO4lHnB?1xE+&ZBU+slwP^_QxwSbj;wxo)qi`Ll8}wAAQqQw0TL z5Yc|){VEKuZ}ZB+pQyT#Xwl#;LnLsJz;29I37k_+4PNw@T)% zgA1pnCh}JVpZJ0m*;d|{wlx?PPGhJ!Sq3eFPCqp^fznvwx*!QP=x_|)i;9R5XL^C{mo5^Wij|pmO8|)rGYThP)(j+3xbhKYwvS*yDx23|2!67kZY-5mW zy3-g?;7zR}klfIuw&T-c5cxHeHia|KhzS__iRXBnK{>67qy6CT~P z&ypy$!q$l0qj>E732ga&`m~9m0ittuWFWa7WWwXc#^AfRh2;t|n*{hcYEUo%4wPhH zS#NJLQb6;L_YYL58Lb5_-8+X~r9H+pIcp%;%1ze&3Ypa4C59?+^}?a{*wN4J*Z4Yi z`#SO?4-z-gOgZ}0w|}APRH(kpl|^7)Mhvw3OVg5_1J*B7McqU8`TEdU6XB4(Q^LsRTVcYg$Q;eSE(WE-aOo?V>)!`P1$b!d|qGsIAIfcd`j`5Ua4I_Z{Lu!*omqiL!zrbnlXv>)w-x01>Sem$`e|a}QSt?d&FU+uDpE~HOnA6N zYQ#_8KD16$RMvFQ76@vZqNa$Frs+$j#93!aG%(&ev9+;7fvGn@lhGZ?+kO9DWhXyP z#fxNWp`y*0KTT!OqN)hVf$Em}$u=t+Q$~9Koz}}RLpY3MyfdJJTGS4pI<*e98ck0c zB$pLHCqTJMx{GO=!;N_$Q<&mGGnc18%G-PK_J`1O$wWONREAkh=a`mhcZ$u>05+z0 zT1nIBlBoA^%PW*8O#k2S_NL+YTUnQO1kAktK9AoMdQ8hCc;qyxgD_9Lx%XhNZn0mu z7jpcrx0h4YzV&x7RwyIP@-j*wGyTE=73-ZHZnZm!6og)TSRiZq*Ka}L!JZcuV{=v! ziqO+!RjWxHV9Dzd>isx{Hc}O<4nl|8>#{d;`QadG#IV?pf}CfM_KG}<{-ZZ6JKvz+ zZ`ff2mUX}jW-vh+4c@F(LQM^_p&zI?aSF&zgw+!<+~lT>fS1t$jcq~14Wz{=$ioeU z_U=w)t?~+p6yrDN<)%t6KF*9eobjXx)a55JfmByYABh6N)rT2UOJ*OK@QfGi3MoL9@tslgO61g#-b$8w{fJHZK0A5g-T zx|~btaWM^aLStn|S&{e=!@dX}R$w*Z-4QfVMOm(*p%y;)`|r^l)k|@DxWiVe{f9X< zPC7&pNq9?UPrIUx9(l*{-7mFyr@9ndRsT_ijiH54AcM`gDUJW0^KwZ}wc_w;?!b4) znwUQ;*?FDLpNh6fL1Y+?J?C*rr6;hW;kXr8yc>cJalgCH9J{Zx)Oy-(~@7C#E- zAd!JMvsxOz^~1yIa~OTG_X8To({d3T)vS+FAK$uuy5gniirP-s;MdQCKXm@Mm?QjN z!{s2zJ69`=Rl&v=wPMX^zCnviPvo4pZhu7FcdpM#|G+;iz8JBGozW&&qnA%gUqV&t zv|P{oTu#rfb;e^SC{anVvZZ#&=JVAc;v&TPw?a-&HeEglUovH2IaERo5eC{4+V zef#o9(`V!v4b0PB%+B-2XcOxE-E=nVSlT*LINZ{4rU_w-9b9N*W$rkBEiGCiuc~71 zKCI;AClI5+3#=q9B8CqI2T|IrTluMW46#B+uJ{(Y7wPUOG?S#n6+EHWOkJZ#w5@5O zhS7f@&Z;fkoDY)uD-Ikk{3LZc#R!9X86V07{g(JQz&A8u4jshxJSt(=KT)tgOJe#* zt-u*oFb7#R9Ma@#&Row3B zo*yJ^w}|T)(;_v6|3YHb{0CLmhf3>uo^7aRm20of%apIB)YrRgt~!jlgrBYstUX1` z6w4ja0pd`sm`l4lfs<(jW`5BqR3Z5##6;k%E-@!duSI_h=d2sWHU-v%x=9o11C;}S z8lr3pD}2+hZGP|kG~`nk>%HdAqt1nU$^XDNE*~-1#G*ZQwW1+x_KWL`yIG58BRl@A> z>Ye*K-DxK?lVO*+{vU|shis)^0W8Pj{Ha)8lZ%()Qlq{gxO& z!Sx*1Kd4Wm;%JB*FzofC+hA8`d0X=k^z$nPB-dPWjX=VbDP_&b3ddlok%{fmbdUfX z;SaED%teH8ou$C>)UScGJ8EekP!iN*2q{Rw36F!E2_bOccX2rs@KAe{KVTv5r8ER; zDi;@Tn}MjrsR9$s2cBxd$)FU4o*cppsbKn<29m&3n2rv&7CrFGw}4UNiaJ!@gOotmlOfW(SeXiY&L8DS0l#LL2R=h zQjS{lEpA?c_p@k{O$Af8KsPP%T4JZgx+;70Ztzg~G2p%4@P59g!{&_6Mh=}!MU1*8 z6E>uNmCd%-DAYrLj|tizSUNl?k-H`P=Bq{fo_iwEYA2!fMlgrutxfN+UOsU4g8 zqoz3gDfOW3Cp9fn##7GGtr~l`rE`LcSOv{KE9csNw`SSaHBwEMGW^#nNwwdEhxgZL z=|x7Z)VBQa>Q8UL|Jv2p+9vG%$Na{YZyaxEjA4WstNj@;YX=5~!{{0r_ z*EUjGyvafcFoE(o+IrTah#QUVjW3M-(~oqeCp~CIB84JEQv$t6dWWQC6Q~^mDM!PI zx%fk-m?w0~mM;r1LRAIc4UP6*6C?&_ODVT50Yw7#(zQo_#t& zLW}b9%LO{-`w0AzIyq?#K7CEGc=)3HWe0)HIByYHJULedXQkBN9xkGADEbUa&Lj3t zTg#bko!vMZn>)Q#B(_G&`6_(H4pcPeDZJ(t2c^e~e!P8it9cjRnSM{3?!oc5iqvU- zGo`JJetH_V={P0vf%e;>*?a%Qj0RjeLHZY)lzyRvj@!OH_7`O|gxjjxBTRW0$Y(S~&bax&IWKh(yq_0n90m11)w(as1OA1@zF+%K zki9K^K2%?6+tlFqm*qT76faBh1a2RG9JPZyT$dVTw&O%{D&P00mVH%lN^OWK(fXY5s%&;!`{~q)C!}a7H08;b>Cn z)qxv)uiy0&joLWjTD{u!D5SeTL765*Pibeauo%I;lO4z*u`PPB7t$zxxtjlsTg7;V zjgFiMgmf1vydX%Vi;r+MyXQs4@gnPVd(@>%u%&lfhfT2~>rB7r<<}4r@bJ3$j&~iu z+5LKXyq-;8#R7&dwP*K?YeyH^DlS6hNNUZS{v7{XSILW*&xjP4hln{2KY_y(B{k=6 z=_YUh4|9lta17W?XSVd&3Q&8(fZ9F-ebz^c{6>6Zn z+M83jZr`3Fa{JMLtyhU{nJ$Fd`yBvoSm@~FG^Q-)Yn*7JPLpzqs5fkrHv0$qrRE67Kh;$v@&c^q zE~UIyW~S3OZJm7WO17sF$GWB-Yh4jO;e$@JOc<8umDyT@D`a@)BrEVYRMsA{C*-PD ziL)k$DxyyDC~;*61=kWh znj?1QXyDD9F|(`aEMWp;Bmt`+Zs{A0xUA}=N33T* z>USSifhC0xQ{2u>TmS8laQoNsK?;oP>DY)FmbZBlpsQ{4!-Is24PvApitshjrKqcO z^oL&%uSYVA*NiYfy_m_}$pTww{W+z`vxWcbW)Fl^@^$g&Z8x~Ka&yx-d>iLc+Mmp5 z#!G8c3xlVoOB(NAl)8?$1RLMCGVu1<8oXVSUEqWKQ9G{v{2qAxbS_jJZ3oRPy-3Bz zsH64Qwfk+`@Y>&J?cWapJzf+2&)94O$DKa62It5@IxitG*WY4Qu(`>Dc2rN3nGaM(5zj(QuBlhI zX%ZcXUot9044hW7ykXgwC0{g|>JDNL{~H?A?|TE=z*>WDN9UPN4?mM+y7wlRWO2khVMamtUqTBw!f2t`b?C zC-+jwW(=7aQi9o%Rt>-nu76|r3h*#99K)Z#!7SfB)vQuTyKL93LIpgmhD>ycuY%)$ zldI|_XWmLi5Qez)E#qO#l`p*DdPR0?K5Uhiq;ri$o8|TfU26PxB;s!|SLkKN2>e$N z4Z8F`z=aw9s|;z}>poGqAQNAC(UzUBY1Rm0Li*(X0|+$-Rxk!a7%M_{hcJUdF#;G@ zk-v!Z<%`*KZN?L*nAn&RC--;KC?TQzTO|BKrIkR>p%7-}yFi&lZvNUQFtmU`ZDM6| z87qiO6;p6$)CP|T=$VDSo*n@f`V~9e^*kH?h98mU&BJcay;o&1dVjXEy=X)XN7Wh`^i8&gYWV;%Ex`L zdtBUH-BS4<6NE;*>;Ux;eNZOiiGfPErObS`1`x*qnn_LP4dP)cGxF_ogiS!g82v&E zkxY)$1{)kBCkHcT1at=0frq>LBB~LQEm7r{qNz!8YYj5~Ow>;_@vUs5kOCwD# zmSWG2K#K)$5PP|pC+S%gUdN} zjJ#dGHgT`=y(U@xf)8^tu-wpAN4A#j59wvJJ8YLl)$I&7AT!*~mB|=Wv3vQlR+A*2 zPfdnR&Z~PB7_d9Yh6}h`jqq&4eSwS;HEi4bNk?vu1xD(e9@Z64YFRg`b5~^OFQbz{ z=T_P8w`!P2-!+DUKyPe7A8QE81i)duT zT2rs4sb;D0RSYB2I7X?u;k#G$U&!|V0i;u5$oS8@}+*uyL_*Pft zc>VnVz?zI#X3ac8l=Ga6CfJiHmvh)P#NQ^gcabUl@^) zMOd0hIjsyE*KGpHZ8Djv;pIKqbB(`=RUCo z`(1##6$+jKs8wU9U}&TI7fO*>3Wx4&g>ss&-%6P}tVo>f$I$-o$W$9#5p_4#cTkuX z(oX5u_Ms%J^gx?&vpT$@4C7Ho>iF0U;_}<3Q9jNb$1_6J;S`ub75Fs;-55t)EEgOsl*B_K*$kwizK(>B*fD+$!a%-M16N?F zW(sc^xMFe@dRY)W%HO$}0HZ;tNnCaW{LZ_0i(m98%~07GXeQtTGQFs?2;Kx)K`0Pf zawK9eWD_eDkdzAvT1h$?!5Y@ILT0W>>UfY4BT+wLg|id@^s8VXpauvbn%uM$asCMM za3~=w8V)ijZ!TH>D+vPnZvseDc>Doz>$#$bY@BaQm=f!vAo&b>T6b}L68m)$S$wX) z6_%ti?tB7;&s%AAY#_>-2l)KN)1pm0FYt&{@TEr5) zoN+}DEEk;dwlo=Ol7h1+3UpCpSym4>%z5n+_g?-=B+fJ}so~0>F-BLBD zgMO3!4eGB;@Q$6W&q5{i8RK$0f=jQ^%dKHJ<0iOU2MucXWq2Qs@~a~-m>@*ARitS! ztX`V+KE@N ze`dJ;iJp}6GeVS8$_pHf2N+8MYB<#hDNXqiVQa%8h+HgD-;ry(gKaMUZ0hy#5YRSD zmy%<1=QaTI02#oaMy(TuyxsLTr@Rm*L~Ka)QOhB==2Py*85pe0l|Sd;db5#co#dGn?iO!}%Jio5sf#z!>}qJ?RgO zZ1rI(sGOX2Mm?op@;{r=dSv^pGurw*p-ji&{fiJjY{o6eHLi>8RGh3nWR{C=D1w`s zehq8D3ReoNSlbi7*?;&?U)E(dc-c zW=&X`1?8<&6>f32mM9?9ImL!tg~F0}-_GaHWYuONj4aXyAL>F*Ie#(w3U_O>N0OB7u(XvM|I@2%~Xu%M_?Kz^rLUsMl4h+_j>oP**ix{c)+M zZPM)fpxBBYYluDOlsh+a6u89W}suqL|vPy2rxf`AAIY1)PF{0<2Q0ydLZh z$ARawp8%N8)Q<|+?@(;Sa0|a`fIJRejLG(dFuW>a#V2l4934bMry2C_eaAjS?I_Zj z$$=MFpmwu>g29tL>pb3+a;_Y`t8iZpXOGyCbiNP2qxifQlPS9|-AH7s3bp{YKW{G6 zgZMg(&2CC6sPTuYl=Ajy3xGQesAg>W!jiUWq|mi5x<7RdB|?S2HAed z^Ayo-Crkl7>_L0X^VCSlPgfEO<10dq&2zRjA#!AIOjr@qZ}Q>94rZYT9Gp2I9|`{M z;kO&&@n?t{!My&cDu~bxr{5@kqBxlGprv{39k4jW`DG_iQf&1vbG<}NYh!KB#Z+_H z6atg8R>p9@;cf;NuwK5V?6L=9WHI~CleVfGW>+W#iEFLp$-6Sxg(j(5u*1rWxek75 z`fS;96SE+ZjOY0_&KuW6{ne$NCSRTPqp*;sqqdmwj{=W{eCWBq6X;S zK&iw`Prc~G*jM^i4SoaSwyOu??`Utqi?oukW? z7giR+Pw;Bng94YIHm(SC3iyo;NsZ+al*^8)+c)o<(nYAa0)xO`u;HzTeMQ(7xL9Uq z!j#q%QBh4zjA0!1I?Tg+_UPfP4Nl?=}h?n^*3?14mZU~spV=sdN=i>eHZ#7WmupfMimN3S# zOX*i}rC;OFLQW5F(-_M+SnamZ)V2k1dg!LP0GV{$2aFbrPX5DiEG!%`DuJQdc?-Af z^-b4Nas$b-Qi|Xbb@it0+wnJ1>M84t=MJnX>>*M>}ku< zK~P@omFNhnbm&5mvy=ZPaGQ($ue@hg33Ar>OsgWFSDLUPUpEac^C8O7U3i`XFCti2 zR_$@8##uW^m{tr`SlU4HSVk-E_UVL$whh%L85{Mlb@Csu?F3sbCGo1x#=d>%2)z4k z3dw%4a9y`5Yw%P>Vm*loqjQv%LmXk>dWGF;xy?YMb@lGSK! zyEe-&fosrAFUWe3^c22Sb`?cWX=p%{ju}tv=)H z%!CZK-S>K?(o3>jnW1<6uAOZMF`Nf(Sn7~q)cunHxNwq0hRv3{7FSkjU>wEZp=u(W zb-LXLAaVb>?G3(@52j6+rj90%qpqW6^%Ff6#|%Lghf|vl=VF`|H8f>qDnEp@_dE3w zdGIwBCJfmsU2>vTu0Ueao>NvWbv6{Z%C0IBqQ=4k2BB8!7qf@BBv6^JWvFkF2a26! zpoAE#qS#?>3>$Pe)ujrCwyUg`jkYe07=-Tx84l8;C7M*5+<-ZN4IWH`3Oslb*vxTj z=O9rAYgTKEs`lWB;S?@0Z{H@K=?hVPWSD_9toOI7sWymZ5z=RuB&=udh%gTu&2<{^ z$w8!#%u98j(mu3UYHS zwH04zM;)|O!kU^hrU3Z_qP|q~b?-xg<7EPxQ=7*v~PTW@qtJ zf0aWIov!9Ahk0$HlBTmVSsfl7D*mwf)`Ll1llZ(<(K#7{JE^P*1F(OU-Ax9c~S?sjPK{|!!EdT0`C=?kTnn=`s%i5kvG5{Pe5>hfE(0d}AS+6A_cLfvC78Vzh z5VLT=|KbYhhvhPQ9T>6DiJOH6L*XI(o211@eT4{p^ybr*)VAt0`mPu_CU z=r`XY=aIl}6~Jeo189etJ-j@rpM(@RBDyqv*HJyz=bk5O_TIOrE|>~sCk<3!su^?P z*@uz#bSaSNd(h+X3ek84q!*gJUD1q|YWI5LZUZq$K?BHx2ieo5t6H{Os(-0mgyPDSH z?S6M#G*ATO9gK~QDGA7O!i-$`>`iXDTUJTC5|^>0 z_BsoXsj|wYsC#t&c^}d95uY#dRkYC}1SO%WxvE*pv% zwKlNcOzbE`lc}|;q&)i_6E#-?EJPbJUMaJ0P%(LpQ)x0yw?wxACTFm@n9z*kcOdPJ zhXiwBad3l!QJ4d)FlJ>;hVp=J*jC!+VcIyb2f}1A(Td-=F;gE-`m8Y)fz9i7TkrFP z7E>ylkD20!=YD}SKx$fbHR57;?I_|CZ&D`BWVCTkWgi9#=TFu%NB@+q-KdJ54$7$U z2|furQza>hU+xbb4v;rbt!4FU50RB zz<0)KbWWGxN!KJWtTu!txhE)|>T5G>uNUivjLWqL%p^N@U|20QOEtz7dU6&F?&op$ z!cH*_SXzEINq#B|Rhc&Nl_Y7q>IQ5<>z{YDD5E5j%!+7##$mOeU0Im$wEy>xOkDWe zR9LB}nvYSXW0D;G`|)0!0R0ewNn160KezshnXnkeE3H8ZmX;%O|9-`+ z9IBHxD`e1N9-@w?;>vIO*UC1NSr0x2u>ER7?FW^|Dfj~69pe|laGkAP1Ak2p0;+kz zJ(VEr9&poGY`2^u5fk7U z@81?`jYQ=&9{*gDE1rZ-sAM*+VqnFfHj755LxhG_bBM z#UtHKP)wPUG5uWT%NXyVwA7AM?qVG%n-cpeaNwYG)JDR32#yjLe_?G|8+4;rmJ_>V za0vZCxAF3zZEbsiy^h$*&R6eZuuXtnRFHrm*>nU)`m&%!7dY2nwVrK2P@iy2uJ)WL3G*VMG ziuG2-Rag&t##=(NzP%RpD4q$W<H0AAmR^+s7B-!K#s;T!$Si%SRhmLQZ`VF;s`+JSG_p0zm0P{@1?2W&kAEYzWV;^R9uJ61j!Iakv0-gF zKH&`x_p#=}K7pCLFFBtLse4I~oUJ1ycOwE4l+Emt7@cT{8Wc^V5Nqj69y$r28Rw#| zU4j>`4y*{{Y1{7K-ygowU2kMM`*1^kO!XT8YyTw}k6l~I03QHONPnss`IZ*~yDqhE zpZ5igJRiZRw7Or{1NQTc9a>gVj!b%71oJ0oj>^Y@nNV z;_Jf*+hhe*NttM?&?*Ph{%Y6fIWZj_E8AwU@$)|JD{k04d*`rqZ82{M(^c*YyTA5* zWdt>Dw&>iXdfJ~k)&F~KE>AWYV$*7XY8_U!8%6 z=-Io$#fE6)CTWmcq9UYFd5k67O!yf`K_?hb@?oE*XewCCGxYM|;-8JmGeHK^a?5`+ z`|fO3jsRPi84HOa&mofz${caPk8CLi{S^jgd-&~ z+|kZ!)^(LGbYkBwJ#bZsOyZXrm$7^fnc*93@{>~H>4q^`l8m2!hed86G z>PufPW|DrI5t}rL0yXU>z%=E~5LtPjibXTZfWQ8_Yn^>VH9!FxBofRxNXt+JH zOvu`Z^DG(k?U%ycrTV)~`v=Ma=3FiG9|r66)ydTt z8B2yrwbEmqa;(<}dbm!6py?qSU^Ar;gW8o&&$Emh?H zTSrFPN*??BG=`6ZX+(luRNlJ(su!aHPNgOt7NRw0L(TwJRPFl9_whtnKSo^5a|#=O z4R<{~a#`-UP3F?6PZmrcal&Hh-l;ZIEANK2Gr7tr#xi_EX3ZrYFh9}9v@KI9A5m79 zg#@btJ0j7cc&VVMwIuQqABUGM5W68m9D*!{_6Kl}R(nadb0ioESgRVmNE%raq`4@c z1{n=P4vc6PVPxlQ?C!c7nD7b3&u^Sx!i~WKNEM+vbJ-sV^Fj_I@Dqgxz9sug^@{am zX3(ZS!aiL0{EqdNKu1xS<(vv)TYy74YGKHm z*f}Z4%tUFLD$8h0S`jI9aY^F%c_4dsxyf1}(2rS!!`}7f{wkqq<7s}B#{;IgY8$r< z4O5c7ze4n_u0K=_n}u&hturP8ZD0j!xC0sdsXz< zYdp1!;2xgNq3inZm0F*n#cK%B`$IxjW2*)K4r6-`Yb{^554~}oy$Y0aW^3kIXFKQS z=bXI?z^P>xwPq3>U{wc40mmxs;WO)@GCj1OVwe%b$I|$*>Q*|8utxQ%h4ikLS8427 z$0gXtZe|LA!xYOsk}rL{EGV0m$y&`fG&$oFAhJyfo44H8uI5)APg>RnT`|Iys^$WRrGyS;9>0L)j5e@Sn=fth%<}r4h>|oVgDVX zV8K@%c3BIS`6pMVcnGfG6m=CY2Lcz6TVZ6*^tqER@to2ogZ;9c@>MaRE}u1ur`J^g z(XYflsP<^xE=(^f^VSZxMqtgz!}hD?X&OBcsC_%PY@L#)(7l3mPqp}_{e*n~3X!we zL0N(lz7FD}$xMNY-!h20&P2za@&&QSF2(C5>#}A^ZA^DCW~zkT2r1U4_r10Y2>M-9 zU66Dedic|i39i+e>i=227WO#jvj9ReQ8q`kh~is9{S?Xc1p>E)r`+jG=cadmkx+oA z8cgv`aq$Qfj8B;8u>vkwo-Y=}tcg8lv6bR5A{#gCx81g1w{Yux`TYkxv&qPe zkGzPz1&N=p^L`Il2CVyqEz#{AL+NSHyheRZ`9{8m^SDQ}`}J1I;u4}tkU`g<`xdpU z+vqlg_|yKZs65kF@d|ZlF9A_sfCp~(oa3l~!C7K*+AIQyntVLDU0d5U7m?=wd9tgF z&;wQeT^!yvWK>>lcJ!HIu4to`S`M37^!p^N#4f|fei=M1D{V3p2 zH~Hx0AFTVey)ooAPXF8UeZHrHtqEy@n+0iJeC5Z?jm+=y>Y;s|&m#>3_%&;EVf+8J zPxU%SoW7GEWmUIpWAy*<2^i>+mhfzJm-Tb6a?+B^)OBabaab0C80%ut!OuBEoHkgE zp{DUX@!-<&KFY*^cw(`yJh8y= z`|P7~l5>!=D>6GHjxxd+JJ}BkL3ZWu)u5;5r~bfHD%EdDw(N_$Dr{K9S58Q*^2M(PIiwcI(8bOMm)`b}D>-ZVU zgxr)`g^`UMIo@+xj|U*1he%-`__G7dR?ZA+=;138UaATs_B&0ow05$pxYrL#Mx2o9 z3g=B%EOz)_7v{7>FMH-GE_H3tSXW&)s^IFaXDH5iJ2s}JS%r!=>4~jxI+^6Gt9n(* zCAiNohnx4h;jI8>hN@qWk^4PtVQ!gBbk z^ol^<)3)5&?Xtg`29^G=YI3$V(f;&-=P->YmhiA|G-u*0-_pkE*EVzCEbMr00S8Hz z>UQImoO2PD^9Q<*3_Veyw{hxnti9L#K3-6Eg^frJ8jDyZi%f|fP=gorb#|-1r*Tyb zHG~>uf8EZo&)QD;Cc?{Y9q0Wu>9Uj5K9PXUA0j6Iwo4el}D>n04Ai#JED0 zO(J081pd}{8h2LnYFA%{#>@>om2=F(rnVyW7==rf3TEwXCkDbKAu4sEN}B>(^FdWw z=R;BD>eP5#DEw(9ie_Ot#}t^!&1hH;@dH5kfxNhQ*QCmQ+?5|{At!neT}}0^$*n^)91ni2!FJ+w1XWb zvS!D~AH5YKoqq9hqkxi ziZX87ewkqg>Fy3ex|;z3K{}+nk!~sJk#3M?NTs{GyM~f(kdO}P@a5h2{XA=bfW1G$ zwbr@**BQU#I53b6jolLHf--AvUT_OkQ|zHOpfEFPP7hd9>e*az{fln{_ud`JZ-?5iBOo&af75 zgL>_3d?kdliAkTQyxWC95K72RM?M;g5z%m2nes5_1&6bJC-fS)xUpDD8pA7nuUW#A z&}vx2?dk1l_$(V@*4(p|A=GME=kYf1*UdJgs=JQdqv2rTU0q$KgNtFAv3(`WfKB`^055TJ>7kYYE{c-{Yao>q`t!c)h4>yp$)bm zUgO+QI~YMd6_HOI63H7Ye#5vA74!K^Pkjt*m%1w@#{lXDMeaT~`poiC?=_Z_^!Ch= z8?%g9luig~x_>SUIfA62wFQG;d~!%4$5ua4jgV^R+S3d$+5+{rUqh2+Xw1u(H2EQj zoz$FFS|ft&LO-q&@_Lvo6~}tNwiYlNgrl!${Xq_9?;5!VO55ZEAGMpa97YHWAu4Hb znen1`kN__knURA~Q4de7@gTpe-ANa(Cm{P@3xOy!)`;J&TfO6vg7{O&Cc~IFz57kS z$5l;<5R)Um2}*&#kh*xBCYCV^ePHJ^p)l+E!CZfKbMPSg@QnD-hPdawy=Wed9})R1 zj@2XC7IgFSt3;+T-Yk|4y4yNDZmTS)LPs*u7ABx!dHRUhiD684!-4+D#=&7>Y;2?~ znEkQe)al$#?z{nhS!?mYI{{iI6vlul^N9KSN_2Jgy`18NJqmdFUJhrL=lb!c>i2M4ky=_iI?@<>%V(e$b-wEQhT64Lkn&bYq>A&*+XvAP5 z^katKi z`&F7)_R2Ennyi{X*~9kn$9J@{%Ie#+K_S4}c(MG_@;!I^p1Ka%kH?6?tU*>x68#`dKf#d0U3sU7M z;z_@xg=W(#jN>>8jeyYS^Xy1;AcI^~t<+hQY08u6$zol;{bRE-ApCZ}W~=Oz=QTP? zBZ-T(GOR}*d?E}SL99De@vV4{!`bvJ;d`*(F+$+gDU-+UmJZ#L~ThTp($@Rv49EGM3vfPY(vZkfihRw++H*^^#k6g6!Do6l{qk=R<^Uw5J=V&*Wb zc^h^&Bsh}Ut>YzXmpyl4AKDn@_T4Ge=Cf+SKSHBUM47 zbm;srG$L=Myu={Mb`vx%WGS`x?p^p#v`i|X0*Xsk%aGx3$a0Rdre~o6QdiHGkW7nc*nck_D|56JrUhMN0mtx!A{@6J(REm=PtJcDPp~~>&VSi(izcA zY(s)S>R@30HAY5|{zOB+jxB-~_(?`bRb2mwYSC=$f?&!v>yp6nlL1fiHBy7t{OD7< zd5B=Sy-(>PSWKa9DQ+l$tzX!>!IQRDa;Wu6{2yBk^rAVcAbZ-FOv5(= zN2?o}j$Do211EQL#-@5GCR?_C#r&Z&47jxg<4gGwj??A;j*O9T#RC3YmVfxkTPutW zKbP6A!+$shU41r2?3e!I@P5J04kJyArJ0d$pPR0P_5)KP-xrHEcASlMyq)C8#)p;KgcgBBBjR3i6Q6GNZHoPnVFDuB7Je;y&L z%yc`$tDQ(96$3w8MFv=#g%I{kae8_xsDi#*ar<39bP^@;v-p!`lG+$ANhk+)?Is#I zz6~W;jLi5x-c=<1JILyZv**9S=B}aBEd}m@zAZ{g91fMxxvsB4`)s=3U25(hSaAbOMXNeyfU>GP!M zizAVru)@wms4~`7#7`j~oian+?jV$%P{A^E>Q+VjiQMYny`zs9>kofI`M_XR7wCD&jBfc}YSl>~Gcom@IQy#YYZEve)yl0#m_i zGISpPmbG+mt)JT_QsJ~(byg&6 zwR`oKVGJy6EcWTU^BY*n7OrImW-UfKEz@fa7%bv#Dcd(JCTl;dGh32fdA0Dqjdgm6 z{z5rwo`BSk{98Tw&&FNr3&z)`ilukmj^>d~@-r22UzHL2(}$cUX>{N*e4)fg>S-%~ zhKmUzR@ZMS#(Go%8799p5s(r4E820CYCc{zbnuSWHTMF3xtCaGL7Nz@YVASYY{7y^ zD~{##x;z?e)>|!@&SqnpPx4@pcC4ZSFcMLoRyN{Wtx{>4QMR*i47OA^iiC;Nc=2vM zJ7F)|z@d=#j+mEIUQO}wJ)|$<5*9N48Hj+YjnNT;;~6GEOxe}{vc=}x)tA57j)y-) znI9{u5Lp^}3>Hhu&==-v(vo7<#{`PAiR*C(Y4BGME+LUJ;%q%tYu4_P$W1bCqcF_f z5*vgG5x|V#=Lx&T#l$DylI2J}5I4S+R{M?+O_VUPf4D~%@;IZ@K-0AoXEr~a!Vn1+ z&KXR|^%Ty!`0Lugb202cAoRN&)V=TW+gBV-cSZv>XL^Mr;0853;Cb19;OmG2j<{I` zANjCg8D8eAv>$t4oJFtLo^2Rms3ab>26e-35wd4Llsc}a_`3L~<01QC(#Z*7m()d| z!@fI4OE-?^i<{O~)$j3A;4xVdr=~VL{`Y4WY$KPP>`op)^dp9zZJ13s=)MO)@?ny6 z5PycWp4u8X8l8l{{tko{t80KX0TvgHj6^Zk)Vv90!X;0Pu>XV3GwF`Q8)I$L+*c7< zZ+|KAyEcNs{XTO2rSx~AW1NkdzPr)xArASE(Y=S9oARe}K1XW5+hxfWszNwnPDnr1mYehrIUGy=+UNfr zdu?&A)-vXgqdV3$4b9AZpZ~soHWEDc61H_^fvId-tW`5r-}cocT@X(uD%1Z_hjHgqzNZYD&;GZZxTv1%JLD6=RN}nHh~ni4OU0cAprT zfp*NMt>gQ)yPABWbpl1I{JjOXh34ki{7nNl8;E-KfHf|u&y^7$Mkvk=5|JXRA&UD6 zO)YxodwcN*_%agCY>gCYWlfly5~TLZNFz^~Cq7g(h8O_NY zV`33gcJ`ibq3w0ZA1HaDCy!hOP0>RATquz_2e>R2d`uuLqzIbOEf^{<)0H90a4HIq zUw(5!Z~okY-P~;U?n@Frl$S~|F_9e zPmy+S%ZRRrrK+h7(R^8inzE~dFbeU)rSxUqU)er+lze9t%EwMYEgML-05|RAag+ju zEr{|?I=Vx~=e_pHE99k4b7|1RKQ{j*uOFz^78yOf(&C|oVW`$1d5|1OH47#A#yjdt11)=@GRRv8& zL&3e6a=z(y6+xIKE$t|g!VLJ2D^7B~sVbHe5Gf9sa{X33OjAn&ZEJ*|zs6A z^BHX{$KUhFB66cAM;!}e`t3`nS>nk7}stz)Eeu z-MH*`B*z-0ezHcd3fd0CN$s?)Xw*cvHKeN>HVF3cPgtHs6RpRqcRjMin`v?9ABV{C zk%-*j&?MG!BB#_Dck!QGj%HiMjWJS{8nHyy-#5M3n2NWS0jNL@Oo)75cOsF7M{8|1 zJMow%fConGLju814&g2^g&Mk}*rad0?Uw1m_EZ%RU&Gw+fA)dFt-fSMeA-RKP67X6 z$H6aZk0&|x_<->q+^#YI>1gs4HuB(qbuIF=w((5aGscp6k4E0<)ql!qvbbh?drr{0 zhDZ$<5b9s2311YXvFI}-LJ>#9-RDIrQ})|df=B<2aBN;NI*_xcB zI={RG%-*LXpxSWnaliTd9LSCo+V{v#`vm|eNO5r8r)vlGn})634qc0cz9G_1pYo=; z^Hg(FiQ+-fR}A^;@1D;6&>6oLoxL?i_>hH{Q-^>}m0N2P5D>QUv}>GL@w|82H6)m= z`%wIw2sj@0=rh){JA{UH_uAfc-CY}Rzno}eZ@9I&S=5e5A4BxloyT4TY++Hi(ArjIp03-JbG5W0IqnqFB+VtWil107G*vS2*%(8c|vuXyOM%k zAQF6ZUSv_rT~S|s;b1v5`N{wVJ#547$_;Z8B6wJ_nxdW160}tNa^lrKAzYMF zs^v6AI-`&7&T$0b*t6;Xuv1lZYD8)4#Efi_7Bg1$tqbj1cI`7}ac(ztB5RRLt(cnE z>b|$F*s2grt$eu6T(w%B!|i;KEA-+MT+6*|tnki+RjUPhyk_OP=~p#MU%Jx!>Q$C$ z=o_K^jtD!@=F{8#cqy7e+l2J%yPbBE8nWFB=}gYK0>{WY)iGC+E`asf zCqPumBdQ6Xr9@It{-Bm50u?l*Lw=KZ0KrrJhJTJlpUu{u8O9_+=A%UTl(&NOBoS0p z6sNP7u&qDF{eucA^zE2nes^DT`0vlf0)zHAK}1{EjFAm*p=`yQ&bNWjYnaAd{kIsQ zZHQ)FVR1giM+piO?~)ZN_6T3tILE-=>0G>Dw=$p4`xJ?YT*ZY=(zQ9%?t{kEMKXX>WV&=m@>*_dM+tJC&jUIOj0Nv6@;xSe} zbfGL2S!tAG1k=T<3&HI#kS$L11K|K1@j8g6PKV827tfdM(J`8jp|E|Jq7F0ttI^$u z1|3E&^3Xm^r*;2`Apv8PCZ9koEk`+ePN~Pg7j*cWexAu}p`}bPL|Iz$GT>hF1)*lA z%7+E>_s2#nnD0<+=#!F!koF-D#7leQugPngn>pmVkj7I)TZdgktGOH*ZW*#Q$}HVf-dlvXP_;AZiV;u=XJf1N!t-YR zd*W3Yrs9PCMA#y*!XQ}0j}Y8w^ro((r=8RUJXNteQ-qth5VETE<*W9BzV(fj!+)?N z9yS(}_Rj%ixei0dXgQzjDtN}{+k-5(YdjQfs9PzF^%}lQ21+&#cUQP2?=mBmGwS^w z{#%&TEV@vwzyEXBN^(;bV2H=v8Z0{&_vvu&qA-Isw+8E-jG*JljOw z#yi|}zM{oo@^$&_xz&)*8JP6y4$=E?*VM$$p(zZASbt#WQH@DxU7`+B?1xREtHitYe)8&{Ay?(4H@CkjCgp?x zocub68~D@^hTfH{Td+JIX^rm-y9p*{$y?y|CV}Buylai{pqM$4==w3mIwkpOD3pdh z+%ae`c+;>#6b8`VG&$2k6ZvT9$#3LnEskpzitP2l*5@E-y1SQ-9GEwIIv;9rA-O@VS&Ws+%P z4DnyB4O_HGftn5d8!auwl1FTN zo`G0yF$g>}$;YLtfMBgm=k(8=dY|E^Cmv&=kK38Dg;M(*6z# z)qDT9);u?LVYpv(iUp$G_kB}FlL(pGL%&UwlnISd^ts_dmi84*a?}`*^;1H|lquT1 z%!|K!!$V9k8Z2IW7DRFI$6OJ(d2|A$SvgP-O?f8)YC7O88x9(H_6=+66Ad-Q@}j>o zU_Kwuh%O<*>k*E7=j;1|3_unX3Qa^|*nq6=oSv#G5NL`Ezk|A;iNg02uA`)b^UZby zX$HkjqD(%a6yVQ)&)x@tR8qRAl8(Rqa{lwcJ}u-KVLG!~xve^N$P%|Ryg%5!WeJFM zeHEpB!?(y)Zjr)c+!$_SF=1DQ_Mps3E%_mMi~`AG6(jPw49id=9-QwHE2YsreE#y# zbQ+!G;6BijGt|)a$vn7W3rTvSE|izTD#5{jSa|VXIB>6%ZK8=gfl5F7M&{#*?_loT zXC$2_se_qw^S*$EQ2__(deYprVtuFC-)?P~y@!hpX{kXcM}k_~i&xByAKN%PDvaa$ zJXr4SbTODK9U1DMSC;!(HjlMkwpRlh{(0=^7!K{!HU2MMz81+NaPF%qTlR}kA3fp) zcz_G_82KY6Je^t{Ih&?iL9h6(j43^hP=a!75qrEKA5?!O_^JBH3qleeaDDX}H-~oW z=@TqSO<*z-74reIB(m#wwf<-IR08{ykNP8DsMtF+D@;n)Y`H*dX2ufi@rhX}B%IQ5 z(-<1sdjyLxR!TFF`~(Nb9zC8jgPe0(!W@lh=mTaanIP8sQeWc1)QL}RT2I^9Q;1k^ zOScc>4my#jTWc7x_sQ&7_|8T8?fKK+;IJW|P_L-&^%|S}DZ=jkK2>w*=Q7Pz>Ljjp zP)$Vl%&Xs_hc3X2yV~zK`k@8#4o=YoPGG((9M)^vm+Fo+Q+)8^c80xXM1{UuQVeWW zhk5q;D61FZHWsUCwtmlc!_b!gA=#Ql4q3Uy4>DfF#ajLUs!kfAmtKz-%xLOquYo?T}J$Q5-zV9)T zg|;Y3B91xqwrT#WQF_Yx_8+KB$xp8e*^$7v6^ScrsKM|4P1<(jnquaU^7je?s^}=y zFdfJ7z+H=sNJsEMI3@G?r4`MvGzxh?qOvawmpY*4`^{JyYb7^mF)*?g%UrskrWZs= zk1%6PX~)hu3?eWjV*H8UzJFnRU$&|uXyoRa#S@5cXl0VNup@@%sf4o5Bz$J-HF+u7 zb14(Fxt1z^^D9i;Lsfx>dcHna(A%B3Sr0c6$f>Fb-u2EN{;GH2Mq_M;>;<*;9d} z)<9#$W*w+Qb71pOb5M!JWF=47Hrt`V)^6K9Q-@Wb>hVz;epSs%-=M$xK>V98!KZ_)`#Kl4(BYv zT@{+US}vO|?pN33{c|nkcGpOi@BimsQZiGOYM9t+Fy6GAw(R1dj|Z>yBNJD2Iv!8q z3T)(6n^cNWEYPv$cviFGV;R~punh3RC)3~IYdKS^{Fv-NLKHf+ z66e6qlEqq>^lPol0^MV{i0Wp&$o)Qru{-sCPAz=V?&Wd>kUXNlnbQaDUr z5nvL86E4q?a;}ROgd60=HC^MKfx*kNqz!G{-?!Rh>>{}-A6VI-h~GN*CFNp6$$OuR zg+p@#@;L;lp$|uVAN6RvF;FPnH#l5W1+)h-0uDd{J#|m&>nC|*l!>gz{NafgSs;sl z_p2tfraj(hd8a;KS2wmMQr{1yRsl`pjGxK-)(}a?1;3!9#Bn*B&|5+wd#)lqYWOY! zJpb+{h)BMn$zJuk1t+{A+3>ri5c9w5cK+S=hzNBfR*`{j=bdFD5vaO(i&(Q|Cb{;oT?%Qc$7S$N zp814a0^D7Sp*q&MZt%#_eO=m{5Br9czfi~$V$EhR<`D8?HN86qN(+wnP1{~ybz%J$Zei2e1ACtl15w; z1t(SWQvn8C6W6PSwjGCEZ%)4cD~+67`0p9nvJbxsRIi25j7*Ab6ya{Dvo+ILAVBi|PWeeY84$u)g zZ(UDH@unQo{$N;OVQo3R$@0B?o*7WB!?r`rT+Hd%nI_j&eQ-a0ceA{)lpWV?vPq_$S6P>E@&J_YtY zQ&3WFh__<8X}v{$couEl3Y@|?2RUv5BMbISw7XThe-_lHjP>gEmb`_YS*F)0Zanrs z!$czKNxpNSIIGk^9 z6#jZ*o%>B*km7Oh&r2d$P2zH1TZ9^(sn*hp2O3OaAOe$XV!Z$D9aVk0gL`Rs#2<~* zdt4g^CW@YX+ac%Th0INvpVh3KxCD5H4GB0Mcw%9J{+3wCg8Mq>En=rNT0UTy5>|h7 zQTI@$G~Bd)Ri?#lmiSMs?(STKP>DzdZ!N7qW<+(oQ^>ZhtSL1bPLW|_ zOK%B1^q_Bq-!U`S&NpP zY5yiKVbfKWx16Rk%{+btNorF!52s(?{s@nqC-_WoZq(Gc#;#;t7NTqSxlT-3TI*8! zbSSa=RocgEAHKM#+h|#!Op$pvU-&c8ZfyAPk?E9mu=P=nKSjV{q{#$XVGG+)QTlep zZ@$Xk2xxu;VjZL=h;?>Cryh{ypOuSSnz84HWkCW}^SwoA09P_k$HeOZ<^S#h3!9P0 zGq|rK2^=vU5So2~ia)rzFapP@PMn6Ejn_U;*AJsfR0UC@SUk-LN*IdEqSRp9FX^aB zrU2dLRn-anFtFbQY1=^SrjWceIgV>&&Ht3z)&+h4iioKO4nO27g*7pYYXY1(H}Qag zXif-!Z>F<`3TJ;Oy;r4Z7FjM5 z$7<|og2YXJ{C#!`n1e%xJI^!Br_tE&n&;_>s7p%V*aZ@&1IK%Eq^=`r3*rm>a2&ns zUI~9g&HtXrqwROEyA{HHZ{>vd-ZN*C7fh#?sVKxPO`$jOv*N5Q=fBI#;MXA6lt1A~ zpL02lVS!v~mfkYb2d^BTX+Zb$RuF>QzgAYbxg3~=$o!yf>(T`P;8^cY zV`*Th-egC*GZBIZQF7K&*4JEx^#Rtx!f($y`?yuo%5=2yduvr4gx@vXvPvCedV2Xj zhO+t!ps&6>JwXL0y}TY%qTR@mpbNsDgTSae{!us)sp&aeTXbYH_)6xi=U!T@d64!Rma_2c4{Wa2MI$$bk zlRSm95%j&mTq}5muVS_t!?dk0(A0j?Sqap3d}N06sl?58$?1kJ85e8))i8`ch$cU6MSblHwj)2nXV8e|u21B_7Y@8`JRM!~X2 zQuc;!;=R>>k0S)U>JQA5UTm?+(~VWOSo4z9?QCJk?p{$>D034kEE$V6;*>Z{&|N2_By_sme6{n3)NrO ztj-eD>j}Gb!#FbMP|KjOZ*iD3e=TAS4>mt+*8Z9@3qhbKEAFbcI9}2@wW*E3!n8~$ z+4h5Eou4ci^NbS}P*38?!-Q&f?t}Md6LP&?MJwLvOyvZ=L!3wKn5q|deN>%;-pYdQ z-cf6PbPrpY7uDvDHRdC^-4{aUV`L!JH7NG}FuSB}1cjh_UP=Nr`vi{^53F1K8A4M0 zo&u#lkmf40j6RaL`}WOJ8m zxnWD>O`-Av6%=>QRLUNvpj!yN!r## zj|k7O-jLrs5(*n`q+>&1I~~pxq^wnXM68t>^LpbfZ$bEdoX(JIbBwsze57M@>S~5S zziSr=mu=v<&!6eM4_|t3NoWVD7qBF3O_KbCe5f$Of1H0y62D`G3ch885lUH2lZGz5m3YEr zN4JPlpVs@zcmaKK!CGLnN*JYPMwJJTPJH3Beqn*c?rRE&OCnWZ%;Wz6aBZ3$XJ<5P z?gQsM>6|K|qNv(ncD#BC4l_;cHyMQ4bhLlHh3Ou|r8g4sf@&qtw{~P80lvN1h?stF z!l1K%!s8}YbX*Hnz9(ZGnmO%oP)(me zF8QTbNPUVo;b6fF0+3}A@0Hm9J#(CUiMfg@od5Z3 zZx^DvTH!1@Xgxa3q=~c~e4t?!n|hU!D9Qs|zu7{FL=(TIMXGk|MBtm~?NmofQ5(}t z9d9{lFL+}yfjs;w|C2YXY#s&Ok!%yn$_4&ZSmtP(lMjq=3W?`k0_8@KGDe>CnPn1O zLu`8W4|8b)GX7C7Hw4`2T&y@aFTgvv1_a!+&$Wxw*c@zuPOsLd0uO5XPYVct3GWU` z100j9_1lC3Rs!z1=+nQ1G_TE(s$&Qi5x5;|4^_Pxu`4e=BgE{mtnhPhiXn62{p$Yz zf&iB#f9kKa2Q3l4D7JaD2M&TejAn_i{}R%62)|2UJK0?Q7G#W~6gUbN+~^6RxQ!r- z=fjPD`-o%Qh|Y26biQz&Ah|20@1i$_NzR)t#We`^fjbCi>L{kE9c5(j{{K0ts&EJL`PJ{CDH@ z4|5tVWi4>CyZX0HM#7w{iA-6Y9kp7}Rr4mtzX!nk$EC^hGUI2`TVwx_*kj8#R?5!5 z(#8kz?fi04ZSE^oyH5*J{>s^F9zlG9@;S-x2~0X4L_!r+W=Vu5_r{QeE<5w&#ZS#O zl|p+jyqS34!Qy28KE9Ft^jm1_?g^U8l@}Z<^h-3P(aiERXnQRrq(adSEw!UK2+^!N zejjTmn41VSMQLaJUYj_xb=(Anl?_FjE_bQBMX=vsQWw{3qYHk)VYGjjdUrqRAF{TU zJq;+;8v@i@aS(;cS`Hv$uXrrz6|*pw`o8fcIK-9Jgk`f*Eol_|L8bqO@y?#3A?I7j z#R6CLHJp|;k=a%L3!Ckk;13Z<&i93ARYEVue1xE@nr?765p@zU4s?LdhNnS@U*jS) z6uL0|ekOx2euXi2W>MSPGQ1@(MD82oir(|AWkBSMAeX7`zou{IU)}@aQYXoXH_Ep- z8tdzUB`@+{s`!f>MtS(in@oMl7&?rY1uF)BFYI)nrs#Lw^_>4v;cVZ<%bl-?wfjDw z(nlb7T-}PqFYB*Rq;KqCY=1jD7%{o{-Lrx+8Ps+3dp4GQJ9Ncd5pHpdJd{r4ugLTJ)baFt}Bm$@BGyZifl zd%g&^?$pN$9QMMWL=2cvLS;jW;vr#EeSA=MC9|na3d-R$R>xeLW=*w`i!68wh60Ox zYvGREBaWl059A3VJnC~hrZi;IFwY*kvdctZ7DWu}Lwwohcp;^F582sxndoA`+gBZK zXCLVvgegTUj35%vk~{|8R~kP*S$SOz==VQU9tshg3;#$yOF;dVrGzIzJX~vs*n3Tf zSaJHsj+2ZSvqvHqJ%O?aFMZ*vOl2Q$27;p_{OKk&b=viF#5Y`8?tYn2t$njiRyMqT z6@&#M)*-r&qUH$*8)wyR0f8FgRVO=0ZxJIR=Rr+KAMHk%YN}1ix&-?xWj4;zszjC0 zKFkfd@T%HxogsxsEvF&qYdNon0nur4&wRN19-jfvoYYcKHN;X?uPyG5l6118qpbZ! z_QT1SM~}RsB=&tU)iA;eA3C{*A7Z$W{+jK6Fkh7BamygKP^TmDCUUXMh#b72d(JwF z7U}}KYnLBYt*yzPWIBKv;YteiB?qs&Js?|nWWb_>`yv>!|ISR!tC^&wtm^QBlN^^`Gn?Ftg$+Anj+?n zWk?&}dw{Tt>AXU*`Fdk#vhP1-S14AIS*tM7@U>@Di}f;+K+Ea~r~@x2 z+kDQB=G;7y;fGN3{nP>ea-ZTv0QDjvQ%h3UFvb%~v!ewS-HMDSZjGT6CFQa|xZ->n zWgbp19Yf-^gEPRK*CKeQjQYxG*ot(>Ol)@TxRIq8(sdq+jzrL_D5G6=+|4v4JwShP zdc`OnCqfxeG<+5i<59Z@7|?C2v#wI_C349;$Y&qpRM0;t?~sh~*2Z-`m30laIdu+t zeI4Y^VJwt7KUK;TA=(vq@H|++d!ABn#j%yKlQ7e%%`6 z44`4>?x1li6O@w9BgRC6j&4oU;@Lm4gcQ!8Z_kdKBHDl$Z|wfOA?HOJN*}Q<82(Ou z?oaR`GG$BydxSZY9=p&bEy^+z9kPcA&=fvUKkjTe)b6NK9f5`nZ%D!o9COrtRc5+qcSKH;@(L(nP7*moPLb|UTMuD|Uw7PkMAwYrn;ks@#LJps@-=qJz3qPz z3AtxDCS^WSGX}fo`e?_GhQ}+P{{d&yr*U%=dX1lR<1I$QRjW^3%N&fne9mWR3(6!K ze(@q#@^hA3|D8L8gv`6&zkAMQRBK)>K7v+6+)p@e%}$K9B3;M_>&{zdXl)8tJ2YB4 zlcjvY*qQ#~UT(LtEL2v%?h4j8iUSPPvQ^p#dd$)AGtcQa9Pn>?h<1THSJKYr0^10z zodnuXyF|;+y#s1m|D$%(#BKxE=`*BvPGC5ucss5PA5DRwfWxnwbB3NWE;+O~%o^Vd z`@qPM^!#mFR6qtjRcU>qtT2?~WBsZx1FOgFeVlVE?WyT2dxm{PZmO95m^qo||m)~N4$ z8HvqldDl3bGmYx>-7Dhu#psm-fnsg=Ma5N#QL2E}OQGH)g&$dgVJ6}eLU{LIuhA`) z&jdDn5vjgfP+bgEf1pyNmM2KTW0O~_BHXQL$jLOz`1Wf*kd!;?lWWBV?9jK+w6Z!y&cN{7rH&!kLBW=se)8OG5CXQAQ)UVR94&MD<+dtU%?kFRpd z&RdF5F={meh`Ngq2io8)NzoOGjT}13X|b76UsQ77sAOYD?iuhmb=sNL>c;!{-4N!g z21TTKav^UKW7z}kga&Qxz)6#ABC(-oN0sZt#amxO!}rupSZoNS;+3Beb!utzLNElx z573A0J}QTtWtRTB)Ge2@M`&Rj0$Gh$r=ahL1nQm`wNPM_h2iZ{iJ&@q$Nu{wrfz|* z6_uHQszQ|$AGPhjf%qwYjKtAD)HoaGFZcr~j^XED&?GRF#Q8glg$|6(g+a_qul%as3M?Ee5m-)m%7O(swuu4?M^-?Ygb`xLJ#ibb+a%bNuch zSE$1&1TTt2PYWs2DOKAlYlXjOo|0>oc4d$q9Pr|*idBwKYs|B(+L=b%HL0#x4%e#0 z-P;mQ8tNk)`1FH3ZmxtT81v%vMlWn5Q&{<7Y;Wg<68MfZOmAiJbahhPJIMS`fB(oeA1Z_w4$DYGXt$=4Zni=vrp~Q5lS_01r9k<$9JrB zHBRFha47T$epcM)5oO~UI<&^Fr^s;_&DK6VXXmj>dWUhl>{3V1Y4mf`-;N)8+ zxk}2*^t*<(w|2G;TWsq%2FYW1rw~+kI0lxB+qTU$vfF(;%xRQN9KKmR5!-3>U;KNe z%+#4~M9{N5&&a>oKIfOAy)Qf9X5(INe{RLorI-4#({aX*Onfiif=v_~ zuq+7nH8$I#I~k?J%-%?`Ao<|zsFiuI2Df*ge8Kqz*%)@oN+t2Uy}dhM^Aya2d;Qy@ z%QlV`q)?f%lw6SOKtg6{SQHf(M@qOt2+N1kBi=e0Gg2qB=x0Q7wFMzi@@7{x8tcE< z72FHvfcmd^X^NuF7C5nulFShpp@ZhiMMSVknUoVI`itdA;RUcbqWm#lEdqIt=}A(M zP|rHuhBTPY z$t;AFIVhzaPUS8AKOhs_9Trq_e#o9xTj{qOWG*cLx4$V_px>+79gQTdYybU)$vB0% zj=iNjqC3h&v1DG9(BCVN*(iJ66w;A<5R8onGv0KUkhA*v1gv@of&pL%LK2^t)A-cy zU8qxr7`5*E91NRZ;=UPCzrX3Oh$s)dd`(Z95R2*J_CpJGAHx=SYHH0cS97>R+VFdw zCgYq67o^+#)0o(gNHtiHbhTv-m;DbSOHY@%x>0NPk^Gxl`pY8ns^*&_RwthJv;U`} z+A6sXtJ%hWS{5MGGLQA2SP0Q+2nUu|w|s9^`U)k%KzwbD6};W0#1WIk7yJD*`X9cV z4;cfS&P5;!Fj%#J$@ zPy^`k7m`{dD56y@NG`I>?&H&%nW=8ae>Y)A`dx3Gd23m?I1f<){YW482yHa+^NB6k zt<>JNjh%D02vRe#<0ce9et`c#^Vld#efN6@r3KoNL=@X}1u$GR564+wsoC)gEd;Nv z1<{?yLT&!G2YHXq@A-4G(bn^u-U39Mf&~C&G#Ke90wa# zO2y@RN@C_Yalg*LE0T=5kbh`rS=9R9_eGY%FooR(V*}wl1CzDN;b}pa&krQDber!G zIErxyF;P3Qfo$ew4Q8^hipAc>MfV5$KQkTS;X}J|8NC7`yW?8T{R8; zIl@6Lud>{RT2zO(ALB)TQ4AwTNuectc60_0&$y9EzF`BTQ^O_dQ09?`YjKCO3tt!Q z;^4+}97;@SNbOrhEY#ZJ^#fYkeMQw|8fC^tDQuecZbDQwU3Q?JkQJ1C|0hrqxDgee zz>HjuLX9g?5kiFM%%`m_f=b4v(h^015TA!%k~hcqmJr0!Aocw-kTj)_hA}d{2D`i7 zhDeYTKXYuG?v!eM^Y7(&?T4^F(W>j~rVU!j>LbM19a-wM8AWY2&?-{oK;;?vib$TmnO1Yn&tNR9tWDn8x@pV^kD#I_Tw*^s05_*ETVhe8}oFIhGq~Ys;GXAtoWTtzV=*=UA**U(LkN4NlvEFL*cUp`$ zZGg5l!0n@m*ijO0;Z<ACKQ++LLrEQDu$eO*a6mLDk19;lXyg)SN!*b_?@1w(D$N^MUV_IZtj{z` z<2GkmeQTy+n4ZKraK`;OK@}Bef2lAWBf>G9Aq)B>EiaYQNB7wCNE?Sn(})F;m6l5t zB4G@GRDeBY?Yca{|A)SRPJaF`|GguXQU5IIL#3WUsA@E~MqS~+1{xK zG_ccpn?~ZnpACJKj#z5{r-ec$m47TS?RJUd=a!ijNk?s>6u%8l*I_M)`-H76IMm zGxD{;hacdn0u*+k4fY{V4l7LBhwclPSjqlWV}J1b)t)FB>@c_|xqCJds}+m-FNLsG zmcpxO6tq255Fl&{&49hVsoU2n2&;F0Xv%*iyoeH+5+xE0e#MH1{zTAfD<@O)OrUAP zHeOE={?*INVp6sJZCl;9HhP5SOuo&?`6ZuapTD_bM-dK38ti3!z#0Ry`=YoAQ=;5} zO=2%!=5k^=1hbT}1y?uLwze)Xn)dVgy^Bqn3z3V9Ylf;bCcQ}$cyhV0eTyt6?MYu% z#J;^>B3Ya8A=N9_7Q4n`{!;sBt;E>67<*2=(DLAEgNi?(H0WxpGr)=`Cg=UXD zY=)dyu(+D_QZ1!hp7HZ~a!}0)CVs!^D+!pA@5%YTW*^m+!bhk-N6XH#P4GTYs87B_ z&mZ`*IvQN>aM|Y`Sw&>PzmgwNLaEKYLjFs>Lby`g8L`U4$e<)_B<_H!B49Yu(BrQB zf7D)jr}}m+?ZDo3QZ{Rb1cX#J59ckw;Y}b9fX#iwC+=8MGvfw(K zd_*wLD%AP&1wz#pHM|*aFI2&RJW#_#5TfhEcay4DSMj+x_ot*dJ;D+sl;DSfcq1BU zitpciZ`gojOpDPT_|=!WL9gUElL1ypgzsk(Ydxu^2=8^xBlr14Z+#R-sSJWo>;FkZ z#V7xrcvWVBf=6;CwQKbzIneB&y7mG3iaOJHiDkKD%K%|8w=5#4Sq2-UJbOF8k6ZTb zzqXBln1Bnar=hz`tFG?XvEUHm$~AX*a2@w2Q0>41PBsNp3NF9ujd$z#ZSVuRwey|1 zKZMf7{~zDzm`JIVfm!Ka1t=DlbI2$=K3vuBq2E?;V1lIt~wZG+zVu30Pwu zF0}LF9F|8`P3F;VrboE`;hf^b)Xvn^+MhOfAVk5|+h|^>;d=AF6E>7^Y~$>U6~jdY zXG))4GmTSA+7w9ZCXUmu?Ip-p!yf^4FcGm{p<7R^G^o0>%j}PsOg`yInW$`LrS?B& z!Wq0YQ__#5gJ!SL;QO!oN)?Uxm+i3})5VibDKB=zbZzB}8o^jXz^6lZ^+5=iQO?O^J#|Ej*!L?VYFmnZj06pudcTSQ;P2$>G#rmY~G0mT_?E=&Holx1EcAIgwZC6(H ze*1%i`%3>|=Cu3=YO7GbXk`6vgrcBfxgy^ut0K@JbOV$Y9M!1`u_SJtY9j-=Lu{dOmQ44RPMS%BkHD#nf z6|h&m!h`9H6%Tl<&a}E>k&~oy9h|iOG-$dtnaidBrUHjqSixKkCUT?8J1yIArNa<( zP6%bgX5=$~{YWArDEbKULGn*1mJpZl;LNn%Y%-W#Dk<9v=CC`@Gs=P(XkK!lsBVar z8Fa>D@%Zi`Oz-1*c#rt?28Z-)=OUAzd0+fY*_2qoCaUKf;=`h7Tl83cG@y+i+bp~{ zW9S%&&67w34aSa5fN5{)!gsas)!V)t_}qVy%Xh4C`zf5HpqJrvtzPBr=AL+c9%x4L z-7cwN5r*g-9Cn-FITE{29Cm9S68*escK$KONt+Puw}wre^4w+EwV)-bn%kGES0f2V ztq&~&9*n`DH}{g#N{oWR1vXQ<7r^QIMW~j#^afwxrx`c?T4SrwnqGEYok9``kV7*p zZG;Kyk!3@(_T;gCbJlUAX4#SeZVVtQG(pYFKPnhn>2XCYsT`APJ$-%qVpKnQ6I{|aT%k_OQFAH}Dtcas^EE1cNZ*u> zU%xm0N13~nLE*x-5X$?lDOtg%ra4tH82YCn)Pi+im>n$&iCDLgQ@SGy?OW^{cM9#F zx_~HN?6vRSr+1xPB^6|rRxuT&thMdbB}MBryzdr_^-R>DI2#>WxYY?3Ci;7<5C+i5 zM1T5j5}I_fIpr`e{QfO83B@OqCT3Qi!=&ha?t2=)?;E(0=1w=KYQb_J(IQeEiRge@ zy12{LOCqFm{3T3l6&}`*hf+E>$c}XzBMo3 zvXX{7n!E*BNjSwmedTE~$o6-~R3AYT9epFDJ-46At-^G2=0C8}5}d;b)0C8qj*foR zZThQ3euJF&Pc;ATr&&JUur91H6G$u;VJ6sv+%}hdGbY}iHseDSNnN$tPV$wW~hl$;f2T%RyCu%=LcY z|4GXGH(FNJR}|T${blc;&K-Wi!Fu(>g7-7k1WSn}rkw8Yx6QfD|I%l43@SBdn}03k zyD(N->tp6)xGlSM9d_3bfJ03F+smo1%)g^G{4|Ik1M&q$DSQQPZUN(7yH1&7wByW1 zcjwF%CoNDbdhwqcj2md}qxQ}_aqQ%{Q1ofGl}nC9^GUb-aYEPi*Q&L+2?IOI?ovCk zq>@iie~kXZO@RE^(+q1JA}ss;OYAcsUxS(hMo0^h@T^_K$Kl%%K!S)?1w0D@6K;i!wkZ-yS8qAgtu4Ia zdfBSI=zf`g#qYYmz-`B&mTJK+Ge$0n*Iv3o*aym%zHGeK zXo0nm0YYtL;vkhxqZw8L8l7xPZ?xk{4LjEKYO=Xn3ym_9 znnYZ4i4>xT21z$YWd;m_i@ z%ilaPSwe=TA1b!$$smEQVI-}WcWzMpVLY>x6bhdUA%FsO?;)ix;&+;D*f9F*p@HBZ zqd&YYPjpva>CT!n84?U-EBRbkvyy^VWV}I$L+{#&XgVz7r7dG8o1_elOlnd~4SSAs z`leeFCG0UnTtazt79Kxr&RP@38_#=1>*C|-AQ~dtS3w;0exB5S3O)K?jig0C`I}$bLmCdTtdZFsiI#7YNN;bG?tEScyL(>mL!JWeTwmK? zv3w+6@fglEQ5KI_%&b!2Y}s zxTih=aW;`SDSZ3YiGwrQ4(7fe$A)T(h!9r~=wX3oK|_%V9g$j<^?gboA{M{KQve=<%}n@fL#@o-?PpIb zcrfw>`oQCzxs<|^Y?VFw+GlZxGx4JisyebXInQCVlkzQ|GR)}fnDo}894WEZztoBB z{FV@8b&YdgTP|$wWk%`F9`OO&^Y?1JDaU5_Ht!5KyZs_ZnSV6WYWz$b{sm=uQiN2# zS*d7pH^41vHBNe5Aq@N7?3}A$TQ&3)?iFW^-{1M^G((&D`k^vZ-_nUJ%h}{jMf8u{ z!rgS{Ow&)}%`ZP|y9iq5=mWd{TjQ32TXWv&ZR~p$lyQ`0jggv{IG4?lEIf+=*~}4!j_#z)2N(1mfA}(*1RoG(ONfMIWL)CV1q)WAslo&MQTQr zZt#7PvAc|$OTZIXAH8?A`xY%Bb*eh4TR#;9w$v4bPsg}G6UERcbUZwagD=I2_(MeXC;`F>t zY--WH-Y?&N>#|rcsv&`)#i(mqh#*-!1zxgc#u&*+ZRLu9G}<;a7x!?j^{s0kYCv{v zsDv$_$tFh}t;S`UsG~0YPy0g=NQX#{1^ZAX4lceb|D{~&IVY;pUr$hEE*7&4r7q*1 zGdn;A`YAD7kcX@Y*_mV|%jly5iB0%&{I&ZrX)=$d= zk*K~>mShfDbNgxuosRhu4R%aR1FTwJrp$!zWbk`u=iurlWzD)ddzife=jPV4OH%YZ zSJR}{=(ri_h2CgNFo18I2X$Cc9RpA$0i0qW4qIj5KvFgQv>A`r26Q9bjI3ee){(WI ztR6_Yb5eBSXBTgQo}j%&fY#r$OyTTeUK{Hc-;wSck_^sB9c909d!OTR@sBRiHz0pJ z_0z6T=y|R`c6EYR353LnUHpQCDpY-N!{}fJoA2!Wd`31Yh^lZLw1YZ+58mJA<0Xn% z>mQ8}r3l>xhbx0tB!M6OqYlD)-Xba)MXdmT7Nr7jS@ zwRyL^)uz+EXrvoAt9Phi{noL(bs^hYf1knil8M8lH@ZQ!-Z(FwitY!)ajr>av~$+x zvENV|n)6Wl;)M%CMkL!{x;4M~YRPLgo|oNt2+@D5-mEi8;g>cYb+#0U-YP=i`O9My z&{9I(*?%hRI+f>BJWpjSb^n~G5jG(XGck}xo}0u1p~@(Emp`rtae6P|84VUT5+>Pd+a#PStQ?LGPeK}gXc?7MaKeU2n~zqj$KgvgGF5S}e&PajkJ#ZDEmU>m0$1)X(L<-5u&d{`pgSd#FMjjr1Qd z2L&cj4hW+gIWU&!Y&Cz~)P(m*)0;J~Z|?3UfXqEZ?;cXZTaWmKsdHm;-ZkYru{Z?R zUU#8daX4(QjZ3AU&-x9#op$Tc?M$1$qDlT~jast`krQT{wyg0h;G0f4qMbsh@r|Gs zg%h5teh?j`a;uJYl?a!9AeY(^vGZ!;$ec&bR^Cx=z zx6?3Fa}ZF(jI9MLcy~B-;kX#O0KHSA|G{weS%TZ7dkEfsQM?|q8u=SHGV_1Aa=7z& zp?_K4f^`0o$ScW(Z98-Ra2>Aeq!d?i9S;WEEYRxddCga;$aTFL>rhF&sU#acg{iRR zuIwE@2L!JD_i^Dv4DL3yi3SJ0KqNU*bZ^BrZj-s)$YzQZ2C~rli`6t~lS%eT$rf^Mao!#<@ zR((w}2>KA?(%hW-4g?wM5b}*vnVglPcHPY-P$j=sIKL_3{WO*n#|CQR(U2*RYJRgA zS{TPf7=cFF$>Rs&CtQ7_bbS2Wf)t}Y*OLu=Z%{)Y7p}!%wl4vWFU>X?vhENpp8g(kql*{;!D2(j8rinDds1o7P79P<=IVQ*!iCdwEQv`^nNIHnQW znDjkVyDk#E_>XTl@5`YR#3VXPFW`-?IWEn9@I{r)H9Z^3{{!?QSBAyxIjK zmu21E?7wI)Y?X@AKb%KA8=V@X2x>h-bXx}(_XroZn@zEQDI%cj9!od! zqzR-Xb68Iisd&cQJe$7qCSSm9ssCr1P@X~HsRJ@K)izNKV1fp=kQKPw^y zKF}!6Cspl;<{iZLsnY%8?TzJeSJXa9ELy}0qfRs#2hcFFji;3%RS&sUG$7StQ+ROf zTifJTWNDosA<7vfeA2#nYCVf4X+aYg=qfk0BlL0%gd&ODOJ zw{8HfA-jk-eL?HKAMfsaeBJA|$>P#37)7u_Y-Pa}6>5kjRU0NwAidi)ec}`C3bOP# zqCg|q=9Q}Q=8Noo%SBEsI~qto^ZQ$)&iAiup@v;M!(qcBXvXOzDKPnbTk?W}i_3nI zz}r(QH~)JS4n9TUuRE=4nVVwv|LW{l=I0$p{34P>{`Ld4_Z zO+M__GjO2rT!jyEp9sE#!p~k{(u%MKs7L$GfKGUyNEFxdv+ywYc_HYy+9)$p(zHnu z*z3kZz`fm2QFnGFYM3^Z%6HBY1&LZD+r{c%w0I_xt|+!rw%;7a*!9bxpYcOJ6mD5X zkhuMg+XIsM;LDNRfkRD9N~597t-{;uHn^sa%>0Hrs^%!{MS;4UoOM|udsIy)?B#Gc z-bnsX_OkW=cg|eNojG5|4c5^OvkN4Jat4}8!5bmeZ>hmMxD9j9w}F*pQ`5jB73T5y zd4LGx?Km4HRtT9i<4X{y1gpgGpN1f(9KPPnieG~$s$tUA{FeM&7`Y~U_?hA3kPobn z@YI~OwN_nXK?H04WKE=6^s<8LhT_(+}5-c8P0Z3yN{xtBd^Dwg%c2(=sZ z7AG%RPg)@gX&){{_ncB2mRa5PbdA=z7Z4-=zSbNaQ5tfgLUm~)5%h^}7lD(DUKn0J zzaB^oc0cI81|TX~&4904%v#QwSN^^{i?sOmO@|0=)V>_mUR>;jZZqfbl=j`5y{Zq0 z*ERl`3e#dueb3mi`)PCU8DB6!tuAX;8Nl>`+lS;4aJ@>oU8xpLQ4*9SN+yzf*YTp4 zvKZiz^2ZpdL5y|)g;OvV#l7d{ECs5^Kuf$S$RG#zKwG@Jsnyqg30rlehN?WxqzKK4 z``;l1w~PiNkIS|i3DP*blQF9#{1Ko=i7B*;f#*v7YQ9rE4FA2yVX zs4FFwk@5GWnI>2E924s@qyYS^C2Whl)8aBy)!*yv+hW@5YKsY2{Y0SS!`t}c;u7Cq zexyS@$TP742E0*IACpQCmFE}1rr-hpuJ-M>+kdaZE_$v6>vsXgjV>8(wq&~()1sGJliYrzCV5}nExa8sSGH?MooEX{ck<2iYz5^+|5C&T<*Q6P~t2H5nMW@(^T|= zV)2;SwR6DU=E#TvRtMz8Q_i04ORr7`kp zA#X&NDrUffp2>KjvUNCF*37&_4J~0)j@C`Q$&6(>MeO^2HQ{u3ND#;yIshni&dIXr zp=}&P5UxNwr%fWRf1LSsbSJE4>pL~M70w~0(>$*WFSl$jQ?T0ODj|zQCMC?|CTsOI=0IP&%CG;U7_m?f^wQd zlHG+_r#Q_one0N#)xtBO2yR2I=gmmqBvp*ov*I#ZbvbE>&Q6$Wg1xy*K_&ddK^q-g-D%K6|ky|r7VC|@yW% zb@j-6{h)W~{2B*ONwI+}bd<~0LOz1H``K$3mjY#@6>B!8JtJjQoF=_IOhg1~+)f%% z?0)>CBKnick7L3!X#I6hw)B2zgZ4+zg2jNnxwfIA&gguw*X-rkj>-8e-~SD%c?_+f z=QPx_9Ou7L2U%`!sKcUZfxmbPTFT_zq9sBk$8 z*p|ln*vZMHJ}tIT@D7UxXwAb@N;?!+`t~b3U-l!fnqbf!bpN*Yw0)! zgH7MeEvNrPyai=a?I|f|!KPAFWznx0Qn(--gDIOKi=Mz2xOSLCSe%>t-qC>MUsBEG zc+kh7?Ihd4f3qXHuRlLr7BJy->GzvDw{F%F3a-^Pe_HuAt^+@zZ3H&XU+BP;be|u+ z&aQQ)kD`@$4;!&n$h6j)_+3Ba>!8ilG=4I7Ii71$FsX@98}~|gICccjZ`;0>`u|7b z=@{3|(cL1q{>M8yhP^AuHeG>L&G^TkfkBy^)Oq$rr$)7Ql6o@Xuoi3bB8LgL1%2iN zxSDNfDwe0xqP5C{m(VcUqD@L2F;^@928lpW4$VmWX6$Ry5c63yf-(8j`^|3`zNnC& zsMai5R|=4mj`Zo2#eOi5Ju$COM!Q=m|C2tOLE%l3nN1E;7$sm>)ogYUvgg%J<|cTe z?~}csF;VAe909HPJ#&;LVhP&Z_zf43_oI*9 zG~JMRRD02Ua(x|tg^E()3MXw1ARK9MVX&cwtW0>3bl%jQg=}@ z?nzQ54c^~4_|rKhq*EeM(h_14_@Y?-i5P9yFJIJyZ~si!ngA|qgYT7|Cc9s{-Bd@l zGCZ({MU8e_(Jr3e{SV3PlrHKSi&K4IGC$<2vY)6H$FyGcie_TA*%I=!5WlCB$?uO- z#sF%ExYdcEX7bxh_zy)NSfh)I8{TkRJm+jZ21XWYd3l8rOEv|RQx!s|0;2S$gOKyY zlz56SL3v3BvYXcl)L;g+WZut&SSBi5g@PcUAM#HOl$=oqFK}EaVVQP~OQ<8_B+kA3 z$g6YD6V;^FYeIUtYY7`WF)N#q4rsrj&&@jhi=ocuZ0zyErEP1JgzkO@k$y+4DA9wr z=t6(#JCxw~m0V|hm?jy5lwoc7(wdnGW-@}mw#%Vr?98u4YcttWAFs|xn~<0PjN8o@ z_Pq6&g=NqLyr180pz%2Ck}wuECaRQ8lD0Oh!HzUtCPTSGN67o1;3O?l^)#or)-HK* z0!tH3TIw>I5d~0jm_o^sD|-e}nsGFA zB2bSC_(;U9mTf*a0tBGENZJ@dt^O78b6MS;hDU9^xFpTG^fV;+zMhe>m%48JO%P2I z=>9X%s0_*t=Fx3tTZp*t_rW&Z+Ke~dn1t`ILqf1)MGB7#RqN<85WZi@lQ#pBAcYI~ z)Jdh;o3jQd;qMo`L|ud5$E;$^u_7UxuS4CQFDJ>K9u~TLa~E#z4-sL4;~b`F5(s|2 zdrYr$$1hx6Pe8caj5e{*D;vMRS$2h?phGMDQcDvPjfkBAfH3?`_B7AS$xKc1ZXyz) zm6|ISx+b-&N%%)`f{@Z;AeaP$-jPsh)+zgcV0`%Ksa)04} z8qo+@J}k-m;2mCR&zj9y@CP%YJJ8^~eC4uZ%@w{3mS<$_a+gH)Ovck_&ExEKmPANl z;CGIfUq~`Mu8RvCFKl)hx-3oB;E%hkFOJK<6!V0QS^DY8cn+$&=7jk|P*j3B8VLY?vlGeC9)m%z^=GDr^i9_A1VzD6e@D_HhjWJTfRH=@gkd zjEWJDjd0U}HbV@(Rsw+9(P$wB_kOzzet_uB!TWZLkxAtHQdaOeRsXMhgac;w4K5bx zdwfN2t?%9dD{OR0B^tMb_QZ{lH}Y5qn>5KnYnX@t4+G^b7;$J{sxF8_FGiWC( zvP@~T#($q=YJ~^8(a2$hu>vj0O$fioHVUx-Wgr~IhWUz@u2hQgy5M=xmAeZ#bNDxm z({tiICXd;Bu+Jl6@a2utiVvcRcp&5#Q^R&5&ES%_fx_N(>|`;E-^p%t!PI`oazTgVkw7UR?NGldMqZROEuX)ME3@uE`24E@hQb_X#+zI7%g zRrf%q#4G<<_Y=dnbHH>ahJM<$nB!1tsOX#RKf^U>ngAN%5iRZ{+e(jB?1Sjg4O8lp zCXTR{iJ0%t0@XBAuw0xzN6s5A6Vh$dZK{`-b*YV!x5%Y}CrIQE09mN%%Y&}(;~;S$ z@{l_%HDhjWDqw5uk1E}vpT<%0Kf*!Y!2~>g)N2Q4=9+p7r3%{yBj+0 z)eQP5<#9$?jPlTZfcB0xEjPc#LhytLu^w5|P9j2P4_Y17Axm!n4bG`B{wA6#=Y76a z20FF6Z&WH8!02ywRk}L2gQOeOH~C&$Z^S+YlB|Zn31;B}aqNFaHS~H6*s*3@R0n7T`-i#qfgXMljBUPr~7&#6X?Y=c&kr@**lxyU22^=r;&o@_8m=R347^Au4YT1#u|6ew4O zW2s_(B*~@t8QUP06vc@oA0MqR!HRqlAP+?OsXs`bij^uSKpd3c-XvJq1W9koPB`xF zt|F)b?IOsB1ieUDC6M5&J*X8z0l18DqlnZH%#COi zIyG}nflh!=-5R<~#Dj(H$dy~0sT1~b9UEP}{AGLL#@X_b$-G!1q~y+~rm>oSR{LpA zLD?8L-)XsZQkQ-|%5D{}4%4?*Q8cnTi?8}eFx(oFp|WpicA~2wT1~QA9IAJ~__jT} zs_DH)8fO0rV^Qd?z~*Yj>muWe$A8(2`ovY*{L={Puuu!%u#GK{EL!0Ek)u$JjZ|sh ze?}lh?>e&uWKRpoJBOi<{(Vm$tzM3Bgi)5>A&zzWB#RqGRA{hd4Mq3~<5Oo?_nuV4 zG{Jw;$vsKJqD!fh&GM%Yq~*=X)$7zE zT>J*?jaoh_{#@(t_MLd7Py|TMrt%hI#rCk7#UN_Os14gb1?P`SiHmmh!eyf~UMG$u z-UQ+nSVwPZ)Szg}c_h#s8N#DJKakYP%x$P8Hp{kWzMFU+N(*QMwxcCUoF+7}dkN@% zI#PNXtPRG>%m1Lb_fM^q4qp6v`k$fKhos%lkKKd0Tp>}9Me9M-X2aXwnK+`UarVfx&;jIE$AgazO}@rDHV3}0s}Zu9s)ZP}V`o^AuW zpWmUsg)Sscfqr~x_OdFBhmH)|hXGLquuHFFW}o;!lH*c_#8QjlV8dS9i-wnVd;D+j zh}MH2v8W32X9g1sjkGrP*O)iXUti8Im)Bns89qxTkk|5@qNDYU0QdHTy9?O;!NEMy%2~bC+bf>OQ|@6mbYl64y8lv0hgc=57xW0)quMVR42;?96 zbCSFs;a}SN58J~@ce&m7hKZ4__qB<28=}@H*c3@#TQkv6zO=?JkxaK3w0%Z}H}C}x zRTXEwrNRx638Pd%Aa`sH-7}roWqxs+7HWh)_v^Sv@26A1lNxe5ZL@~*tBg0iRk(5@ zd-=k9@{PAMbWLT^>)2G_jrOT%s|FWoL5-$UNhPm>HR1QwDd*!q zS!QOk?|uGXA$*Yte6o-9)sf@seRwe5$)xEBe-|&)Kn0DXLXw}?D=-@0*k6UeI-`>lwhzJnIk>l! z(LqU@Zb>`B12v_8u2+Mxzk%Tbi8pHJ5)gDfw5oG|yHU`y{d>U`v5n138KkG@V|OS* zJmCBbbyl8I9Yo;Y?z4~Y!9)!m|S>Lzqo09y&jKcNY1dA zVjMp`rRxutR~Ib?`!(PkJwHSEFIv#EN?dkBUcjV^fO@#y0q^|73Z+^p zSlX>e)KWZ;<{Bk|D#fHrF0)J8jcRioeXD~y3g|A+8WX@W!Qq`+l#22sTf-u4Y8wSM z{LDtSL-qco8y%A)=o7MQLF-yL1I~yefEYy?HWd{u*;0n2nyiA8s6|$=Ybiig0|F4h zJ6$VOMMPAgm5qXs#F%ZlaYw>cyJei5IwQ@ZHx0x`y7I9Yaz^35%oc?+MxurI>?(Dda|;B2dvu zJu7IG;4|;1Pc>*$P=`$z`*wszYJL57%!>R(kQ&m%{e6s(H7t?t?2K~83y~Zc7O%iO zqqPAL)Lx^5;h3pfo3HKrKE+U@pWOmVb(zMO<-^ipiFze5sb|#IMHLql4O$e!Q?Ani z6w`d-!M;QH_u1F}2LU(88S!JDc977k{-_(Ve$QDLNlrD3CQaKomXJzT3BC+5xqp`< zQrO&zwoOO5G8se%kO~|O^^lcxBd$jmdk9Wq06d#VKRyNoJE5%ApZlrmP1(ly+9?X? z(pb3j;XqeihPhAN$vHw@38? zn5OEI{;izMMccA`dgxd>eqojx6Jh^>h@&bv%Z=?o96Wge6iE-!SfkT(O*%oH129h&n%u3;y`S<>P+MMg|zdQ3`=IRbtJFm|q{(G4)l@yZ& z5bDLn(Y1DbA6N!%E0<(vt7AG2vO~H*M9~gmmD4ujPcLw*uDoHHf1GBny|ejMM`K}W zyOfbG?B%p&n479t!$CJ&8!h=2_e*uigV$3zTNuA<7Cdke9$?d)y3mq}$o^OR?ymzB zbE0OqW%<(XbDKr9u25fPEz(+t0eS%^A$7aAGeqX%{?C8ztLzU$J9gmVihSx1sMIR0 zI-4j{^gx`=`eFi2m^Z2RefGjJOPx0B_ned;kimX=^+FbVxsUiDR7v!Ro@sRrDXBP8 z6s%s-WmeTq>2iKYNv{=7)(1GhCMI>WzULUDxAJj-EcH$PG3??`-Jcrms!Cx=cOHg4 z<`Fb2!Z3@B+_5m_VlyArS&u^ z#M5!_8_3gm zhQaQ@ijTZFMi2~&{owca0p3}Zc}zVjve{I*!?DEVLDY-ur#A%L@iZIC+Iy6e?B_TA zkJvG$f$s&nsQmB3W6gJysH$$x?;|)-^sjH%1H<H%3i8S?>o1TpsyVVt< z+Wjf13pE$Ro-S6s3W;Zf0(ip<_kQINX&Fwl@l^gWwH%`2_8`kPJVQSSHj`JHj>Q%V@UzuI+ zGY{PtR&^Ny+-Hn3kQ}~K!kdfO&)3F@a;5|>`G&4>7<01M>jjd}txv}G zF&vjPeG@3krxx&MeS1`FyEkAjlsKa-=b%e4@a_&CL3Inez1$_`@tx{j-GsvVtc&Zb zbTXPqK1U<>-{3SM;NQMhy{XuuHBJ#`A)4xcO<>d%^TW#kY(%6CG5np4l#~=r3q64= zsVH#~b?%d=znH4$AxW;Uo30m|*dc{zUJ1BC;&jSPFsW!K{)TL_4rSZGzz2vx+X-*R zsAVwTPUbpo$Q_>R+3m%0kF@7#jRr$b z1C4M)=jZ+jm8kIzIwQ1cpw6=O;IsYiT%AX%t#oGVSzbIyH`7@d0(KvDtEBlEv3ywe zD`@r&kU{Hn$=dZkSPEl-Gcfedn7&GB>Rh53x-ULOQL0S7*|=5~cW%jH z)Y=JUVUJ%BzO8*t{<(8w^fOaYlCzJ;J?RV3R&o>r|D72OueUriX7F}otFQ(VX0eYK zm>s&Sd?QF>=1u7#VP+-n-e>VeK0~*vgfWQ3pOyAJDj(rs`!CRx_v)=hky%Dv*ZIf5 zAyj<0px_-3iqg5=L-2aQUtUBW$(4beo)J3f;yL27+k?>>M@;?Nquw^|3BUYA45}L% zDVglg$I&7L5@zgRbfD3G`4M~9Jd1a}vbQSVbkUe^ev!2l1Sv~i-24FDI|(2{ub?el zo8C-Kh%;@acE8BOk)cTriO zEX;QvySBeysovpAlL%1<)@+L!s`AgZo+p=qf}#+Jjyil}$Tr@Z9=MO9i#l{Ve(1{G zitwlciW772eFgFIX3WYfPp_Lj-66MJ2i#p!{Jo1PCkPY_{*+l85WGV&9DDzJ+jl@z z|F8reu1Cln5PSbCN6F!lvfwulj%dzwGyy$3-%GKJ13t-BL^vp0k*BJ zv{O8#J!63eO(#`9=9^wY>i77cjK{F!z1)`z&<4?7&xb_UCyaYdi!7Rcl%sYGCK;_C zC^=u6BF-3YR60JjYWKOE?maob?hdC}{UY4*)^$|o-+<{%)SFUtQ_|Pgf9Wz5{F~8u zGq)<>((&_P?q|mT0$gQVEtQg)Hd07>k&O8V^{T?6k=&0V9!DE zy?(DgB(EtVXV!B45jez&kaJ3@z0tv>>AU#v?rxJ}s+2hD-&q@$^@62vSI?occin+9 zPV`&Eaoh&xn|=UISRs7k^9>%l+jKlx0Z}pTT!A)X*#9kHEiK>*clUopBe6ifB+7u5 zVqFU@8qxHQV`<=>n}|~LKop~t&~T^Fk}x^@MUv|!@{)*nlHuFX^UJGAR~k6e7`t0q zJSe`m!2NdUt2{3btdiK#1F7wS&v}aDo3Jho_h?BM|0LhkFr7!(zPn^iaj(`%o=6^J z#@HDD0{kK#7%04TN^E-RmpGf?_dcuJbw8rL9r0Hxt~W*KcDs-1cCKsp5WEbYr|k2o z-UggRjXdV4aru%1B|V$h&DW86>xQ@a1{XHi*gEtuEh3P4|Lz|qY~O(v09$7p;j%hC z3~PZ?@(J*LN-3T6VX4rvJoN9;QQ;A;QS^*Z1N_>VlBlL99vpu46wt9cncSZs*v&oN zqD-1az>G>``*&gzSTlU9i7JrRBAI>)CK_p%e=h`C{>TJb2`Yo(UwaLIIiXH@3)D(12Gn04homkU zEQ__tJ7efZPK;`bT~tAB;as4b>r0Aj)y+?#1tokQ>C!qaY5KXoW9YT+FL#u<@}5C7 zO8L@KRG~D0(xs;k1kGScVZ_fq(C+95e0}3yjA&d{?Bur_fx?K_xW@a?UK;--(L547 z4&dK*fQb*1i4yiZaXJ}EX1L0-EG;URx^-#(0( zjdfxftlop?pv)aUC0zamZ1n){1Ba$KeDzK0U^aL3%(JBMyPR*}06h3K8bgJNeH(x8 z63Y$Em|QYIF}pbV!5kSCYxo)-cI#wa7{+rPdF~GUJr@0GJ9fk18&1#J4Yu1FfNM#%`#) zN}}?w0*<^cKMX&7mAvKfez5TiMKi?wS%-nv9c-Om^|U{xe)Y&1&+k zZ)`Zyl^7)O*x%b}I$5fbE^H>wMDn#)LhMdXpUE&H4L1$K9ARtnRS9*q?yG*KgtHz` z{!dmdeIe-^%U@TBj>qvFN>Y6MJrl*Kab{uKpdU!wp%fdeBs$pDP*U;5bS23T3>#W1 z)Dr|G>QjB!ZN_ODv{LUBfXGdC71`xb=jOz=Y~f22o$sBcgCQZ478nbqjLlJ$wh z#fW%Vg{U=)PA{okri`pE4Qm)x&^9_RH}r2}iR z)Y3ZY5wT&0as2#l5sPlJI>BC19?*Q>?^!_biJP#vIc3s?iTWOCfW+3BDvk!SN&r3P z2*S{P!nF}f!Z3rGavV$0Fl^_W*hhcKoC3GtHN%4+x4y#p^#ONyMdUw=u?dO{GH|yK zL6D+HiWPIUi#OQF2ZyA5c#8TnpQi7YxIbg6n0)wxm}+~_{%$4qs+zmN0~-cN9UlcLdk7|4k7(*3%(zHxbp zTZ87LG8+LSnh&E?QzJ>@y7&S+KL9@_L$kPBB0dUBXQo&udK2Ura&yo%s9LS=TSjZa z*U#>vOl6=GtfZJ{3hnO_fp@`G_-AK$Lqc?%@S3kp&Aof$H$^g>fP*K)1Yra{+F4Zv zWfvXB91`MCbw47*)?cw)UZC$*!@_gj7r8Ewqe=YpnQ9>H**!0t9F!CQw`UQ&_#Y^#)H#Jf#CbR9TLYcn&R@m+z>)0-AOeN*$JIC?!rzW4HQ9+pKnosEV#mX-zPA`$mO5XCsx7IHo9$Ty7DF|TR z54igaZmW?N3W-nJ$NzhV5G|z+%S2`Hh3x@c7A(aj=s4(%E=2dll^5SP`JIyg{s$F2 z(daS8WoNK>kGns(DVWiAMq>hypxH;YXMt(H<8s?4y>8~qACfTZrYc)IDS?Yn4;N|j zZYG$hO#OHKz7=N7g2Tss@$o>m^tTDWRG3}rJGO<_Rh-5pEBib%B?~_D3<8Skf~Y6xi*#&ubb=Q+xMG*TOS`B+_mtGhvMg1wwLs{W~H0nV=!>JJ%ww7ghFmZxiyQXG6I1^(lp`5wl{XNv2AQ@+qRu2w(V@Pv2AW_ZEV~2dEW1w>(sCLF;~y@RCQN% zP1Su5c3y8OWxllu?w$@vSSle5^f9+pNY|)B)tV4e!G$3D#qZ>FFDLEZp`IS%O)B(C zaQnrAN^D%iLs>+fGh>8+aQz~mOiRA-;!s8GJJNOBmH^w_fotkw;`HOhPe@OOUEoGX z1INgs5;FG$yRb||(Ykmu8kpMOTy~W>^&OMw6y{$j5c|eUug?K;|5Nk$9+$ zz5S{ORtgl;(#%C(a)5bSY1*l1aMcFbYVFRr_5JAyxAKc=1rXKYFS3B(z`y zOX>wT@_)m5nn`ug^+Ajb&env?pY)J_~-b(rXxKT`5rTXh1J&`RN&2F$IIWILRHLe#@Zd z38}^H78MbY`>XAw-c%S2lrU5FS^?*HkZ<|Kdto*$bkFd3LAJzq7`}w-@3p(*D=Z5? zNhfv`U3(G=!H!IzY+%&^u)AV1qCc@=6b(;jFM(xGJA> z9Ln;aG8D~eE2A2h`5J+VXU9^imkpy{K|^X-8Lb`jcxv##WoNoHn;c5?;5*2OC^mkw ze8ImaLCIudzXY!L;EoZ`=!pn~=0Yx5gTM+vn3K!IFJygfq$zt2k8O#Bo_?Hu&`LDj|AOPudc9UqTil=k*3oyBMw)TcJ%h-^3=JI0Ge z&4msJzYY)Led`ZA{Lw4IG4$jWY*Yvf*vtg_v=&NOE6xO=$Frb>|9ime3n8#;K*0Bz zH|UEhY-mPPJ|6gofpIq{A(4I`*35g@`R(Q`v`}{o{+#TZX9VTQ&y_B>==d7t-iPZu zs9(+#pU+*G*b!nN2-u{`-rX<7w96N@WkzQ<*n>AJ;8QATB}T)FR6k4ufAS|rUHr84*G92%FS;RERknm4>ku9lufJ3Dgs*(`V;+NA52hgQW_I4nP|0C z_wuE5nFy=@*p73dl2mgYcL*w{wL{_l48Poyp*k)V@yqr|<9vQ}SM^s=Lo9@V3 zZGz%8r$}Xm2Lt7>DiR@$M^Rb#J;V${?(Goai*+m6PPq9KEqkT$_j@I%|bFT{7!lZV^$8da3|<++D=<9e6e zgz?9-$9UI^9=7Ak=B_==ibv2iE&k9y9{ds1cO3n9!0^H?xIX2O7pkmTpB3)SdGCiu zeOILCorLf67k}LL7e5);_$~722qV*f-G#594uso=I6RZUGg!#>_Z892*Qdwm{a>$* zYY2~ELu|}&21mMQy?)VrAgdlJU!V_m*}c7sOxZR`SZ?!CSZPT?2c<;LI-s0e_#`(I~mHF2Uap}wd^W6op zv{LY_N(>t8rva2A`?H2l{J*?m@<5B+2?pg*!`^D`I6gKo8LSNxv-an*J?g?QEY;XM(Kn%?2Eq0zA5#vT+wO}% z6;)Pcl=5<2pTu+vm7lBCKk0Ao2VR&d!xTNXJfmR{t!75SYDN`x~=l%pbR0; zTH7DY6bl}(y$=(rJ0HXgD8Hwy!w_v~vK#f}tV2YvbEgFO^)RXb! z_kYZmMe~hTr%INeYeJcQCe$Lkk`9+}eQCdNk_|HZp^4sxG20k)QRW%1i=>&x*-YuW z*Z8=%qeo9G&Qt=UpBau9EP>4*x?b4otL;FXFN7wp6g9HmHSlnD49Nwo!apcoHJU~R zyj=YV_6c*m=E01=0W&!T}SHbNRO~F5xFn z5d};mt(m76}F3zYcr>UDMnJV2W&Xc0BQJHL^AmRrc$5fp0xlcu780024geT zLfi`zZ_c>sKZ55s)>{U14*A`H&#^PE8I zIJ@JK_3J(ZoxWtMD@}*=a#|}tn34xtuP}K?9hUul-wPz+cxV_XzdTY?b|%bGi$%`x zP!Ca3pywTolJGT>F@gbKlVjS5={PNCz-g=-{B_rCd$QdrS={}A}Oi2U)qx9O{g%;dxz)T^Jf^Ji2a}5*z(Z5c73GJdY#@$Nx*^yYxl{?6p&)yYlzkS&Boz|-s z(IqBGNv7=ei+cGMOoZh`C#F?cydZ@e!I&Q7sDx(fnKFv_c})=FQ?9A^-Kp#GSU2=P-&NBLE98buKQU?g=285jK`J<25@D*sFG*-=y(Sn+At-U zEbwWVU<7p{rqSNnBaPZI(O(u6S)bBY3g>M#lFX@^EbePQE_HTB?s|6ZIwZ5~6^}}B zI%z*fezsiX`?){8POkhX0rj#B@FVLcRx7$oL6Cg!X;f^3&k-T;|X${Sok5%?FC?b>uQ`HwTqfzR84vfVd9K~G5{#9!z>ai$?Sd$znxXN1>uur94W#RC z{}p+f^!EzTVAHlo_@L^W^>fFgb>qh0&16xv$AHo*$3%xr1ZIBzS;@$?)o2o{?7>8n zy&Hd!9T$dI|HQ`Q#BkF(EU*7h<_^@nD_l-iBa7;KT?U1lx9ohxS3 z^41EgNS(|#{YpZ9Fu!kI@yX7iNtT4Qi>0TB-MR0{p~%tnIRi7Oh>jBdv^lb^YmmT< z{2tIoOdM#w`YV(7$`+(z=I*odwtc8GD11z86T`8#^d|`Qfe=(SCJv&9(Z0RqAmGyT z`jDU@a8}%5In)z#CWr{4{4*VCpi|^av!A}~Qp|(H-fJhk$Ml@2M9aJup}XGp<*I;? za-JSuL{9EO+eyLeZTCR|sZ3#fILuJTJer;>J^9nsERx9j^c?xH?Ca|-hl4hM^ao@? zj~$FfjrLt}jI^tb%mtk(SoS7l@qZJlBeC-m20bOX{)dU3o-qsBSNEYoxm^~ZS=8_U zmEh_n5Cs<%0%X4RUpS%#%D>jRYG3*N6(Fmz2A6?P34%ax%z%u@4@a1FUI3+8&nF$y zQkYv>9{hY&s{qn1=={_-+0O#_CHzY|klxYfGGO!{x$Y`Kv)D^QPtutW%CrmYO7K$$ z^~AKSyalUYQz98q_l?GbwT~qJ_1CtFxBgo`i2slkD=zpGo76Yu%izH3f7%0Wmtv*x z%1yME%z9vfmQrFDxoohcilD&MLzAqKmNBjht788ra3FxWD{@%Gr<%nEw;?)n;C00K zggleTCFHCOL0pk0%`E|6u|Rf$b=ut??yBCf5%dsA8OV0y1w9~!i63o+qHKhlgVQLT z(gRmCcc5p_eWAhJM7~c$^W#GXsfL93Z(?|_W70XkP8GA_-z;1J9vn^(TkVi%W?}HZ z;#A?3pkRKE@K*=1|uB^qw~3{*1)v0vgE@%-G~_FxC~5?=YcP- zYcPCyNm0FD)Gw6ApLtaqVspOoOLD}hs<3rM*Id;dzkK}YKMqy!XiGX-gmm`Q9k4!>vFhxQ~^&RYmZ zwm2MZ`=p5)t_Gz^XkGb*+aIE4lm^BtB<@*%#j^j@M^mWjugLQ&_h(yrT&)-WQj;y+ zz6cHGv8xeJ=qJ``8{*Nve+;+{6*4TV)8$MY zIQN*{_~+BV+us?y6X#G6pg* zQhZ4j$eE-t;H?ccp(%<0{)khIcwd8a~-L6bYJ8N%sAwgOdJdZx4S9qKI{#mf1)(vVIGmYogFPm#Bh&d%lX{*uw=M? zQWi3Q+5f8m6kiIqfC1J460?BYbYJ;@W z^9P29ZAoE~2Zn00gRRVj<5=pX zi_Y-^{)}FXkI7BX^OXoX)1rGDb*juCt>4oQ{kQn=$YOypOV3yeic$nGELDQfABC!f z5FE)uXjKVZLau&xSLQ{c$@teD2Yo`E{;Y&|!pE43*iRwVdv6>ma&HcqWLt@=dEbnX z790iP7@8)h&;$rbMKtiwO5wh;>C7maG54gl9Pj(r=_sDXfr6C*`QgwGSLo z&d_iFg0R72@2*vrNHgC{=rnqliDHlqy^im;1>EC2zh_399arAw+$QZI_q%$@ z6X%D2?E!OGdvbqN&xr!U`?2u+akF?0MU2=0e2Bm4=%34I%X z>#BT8_PEBgXC-b?s`AJ{-@M>FaS>j~v9r*HQrV<`1yI2T`Kh4MyJ#hvEzMx7umF?gs_1 zssHb&ma9^4lQJvWjP56lg|j-L>g1WhzD`3@y>SMSkoi(@Q;(8rhJF{@m@WJ(lKN*} zk%3cGo~jb#sTWD7XcKr2Q4y`WAMNfgJl@Db#zi|Oij@=)G$b8JGREu!uIN34F=$&h zHEdtTf(PqL6#wHWF}raF!W>|yxSm56Ji$MLLe8aL4Ji!0!ch%1?#Bn7VEmIQg1wiu zgEjI-_Qo=3rg<_zcdY@}QZ7-?v0GL#BC(@kgNp**z~X7*!AwbvWg5k@t2dz;d`E%l z?OyrMHp}vzgs6BO!JZRy>b~)4&JS)N2J0D_Z?5CS@X{h7+!|yj=}XsjJ}zGBGBbdA zjFC*fkq}b8@VH)|dZNsK4E-BngVKN0yNs0ayawE^Kt3xL+nlg3G@qH`>8CUM9|gw- z7yqyd-QzE_GeDe}-_1L#$$v5c(jGQH$o2UH7R^|M${Bv=PT}wooMS40NYpO*)JC?> z_awAQn`6rCaRaU&9Mw!p`c`A)9tXjU+-%FHpz^^=dAPVrO_f`8MuldRyx^5L?(KPP z)wIMRsK3_Yw*^6gdn|nZ(h4JsY$1N45L6jXaO#mwh>HbgoYXyM8t(iQ?zI+Fp|MWb z=^^yglL>2Mrgp(HON-txRNp!Xrq?vdj1z=zGJ74GQlp>W?P8n;kW*98M?4}?l8}Mt)vs;pH;X_JF^{S9)}O9_l#NrI665jn=Q2n!d;A@&^~Lqt@qAX>+QXTM z*zgx3xhg9Tx!)#$1}QDyWeR#9_`;1jX#nL$3L zAwMS(!1iT|9K(i`VLTnR4)T^{_YFbPpPrjy!m}o+fc+;&BkiK#OnJaj5B&3;^EJ-$ zQHOv(sOaB9{;#76pInzNO@}Kj_3$9*YC+k-BcFa-^;p_T+c(azT5T0xh&Dz5-MiqG zLv({>i)ZWK@7)Fi2B zMrH;yT9vD~PbC;T*de*hjyfMq5t#$apYUXS>6efK^FJsMxX!ZC@49UY;*hyW zUBisg`()!_F%6l2mPrRY2G>I!ZBV~{MdIqc9(PBT=@0kVb;P+jgpN#O%?9%6L$8TY z{1yLs720)&n*{8l%0D*8bCOsxTBn{~s+N6I$9nGgKK|b{hu2CyZ=Z7mZUeuPJPQ@; zXa;mt7Q??pRRX;aIg%TwZ7m&5*MDQlmz%Z4x9C>6f3J z2~ltsUqF9hUFDcw8PN>)X&mDBn#g$z3bWlPc2}IJYk=u~=sMXGgdhoZdve>Wo9Uss z%Y5&7hcVS<-$K5`z$q9q$Af_TR~x?YNWT_;bZAdyU^;(%gX0|-e8_*Pjoub*DQ`R= zhMMe=2HfY^cp^=k6@RPy{Fpv0quxN)f%6R-ObtXt^! z?(;eV_)PBlUIvT;zTSHmdjxh>I^%k}?BR>Q)HZGAO~fhvL69qZs#Gxbb)Wl8T=xpxlVrLx$k8d)Y7%}A!%>h0Stfr$j$PtOWMUn=ooJ8pd4!Y z%v;n+38ao>I!~LnZaSHUl?&{YOlW5!-`>#4d?D_uE{Z+-p4i%K`gLn&1S05HIsc2q z2?GMviG<4#UtDqacUxpa^I+faMjVX((CC-HbgHgYF#W`5RR~-%!b}i@$izV?kV+V0 z;t&Q{K?yI{D8$mGssaj{+*?3v3%UESE+)8sHg;A2I6Z}3ER6@ zo8RMtPgjfgy)7R)(|P=~wFbRuT@R0sV_QS#?H<>8lasPC`VnP)Hu_nkV6+?}v{L>d zAK@w)PM6eyLeZ5vBMIOG|F{Hvm$Y7*>-4Bbh7kDQAq5;S#oRxT+iIhe}kR90h1fAklhxqq1BUVakd z0AUpJK>NCFjOb5a<}UICSU;HREO5|v+v;o<%<2u7NHV3+BuX7s;bSZmc6SK zN8K&Xan%+k2Uj~;M162LV5k$Wt~fb(EiukQkfG&ztztZ!c4ZGiz_QD5ADMLGNp)XlW_xX_d;c5Wk>t^0v;Y7B*CujC`n0!RtNRU z)kht!~q^GCtqA5KYgM8v3OZZK`27fL?PBtf4nSlBSx3momwba2!R{~Zc zwKIke+X^4y*`WbO6#P>#>*E*tzboy%)xX(<_p&rQn8$_f?{5y1pl zB^`g_3mK{cyO`Gg#fB0>kFWEU^3Q`A@K*jT0y9biVXEsvV~Y_5?-<8PzW**SYdT{z zK>iYPsuqs}7?XRm#!HOr7h0bq72$LbldjGSaT)EUR zA|(1pp2ujp4C2uQ4!d%&s&W!BqsKc3BW!L zKs^u~%lU3NR@lhqvM*GL(IH$VPWX$S(4_{0jXrS9_fGQUg)`$&-}A3xM&3z2B7%CN z$!gQs>To=@!Ry|9wcaG0F#7mS8_BkI-z+*J;_R>%|IT3PG3O8bEAMc5%N>c@zrWzdK!G`*GuKLZwa15t(U+Gtd_GS_ z>vq6*k8ZoO_*O6Adp-EJ;g^`0Qu3>fut9C^_nzt(yh<%M?=mxuVSN|UH2g${Q);xi3ao8@*8eNSyT^gI5#kz04x&n>ZXW;m_$Ve%Bt+ji(zMeMQ{d~akuqM#KYyJwMknB|GtGSo_WblDjozf=yZaZi z-0X6#`R?P@#p~fDQMcP$?df{kfdAp6KN$M%=~9Q=`@u3y9;jfYkpsahA{{@xS|w`t z8zb5IP@b{Q$~TzPt=+qoS-6qx-|Gf|NHS8=wGOvRpofv7ozCGV!{e~+6QY~R<4=~$ z=8)pA)Tm9v)rsA3yUX!GUm!UBWvebt>VuP) zdt78hndn{qQn-^b4((sXm_fLIx;t>szIQjIM!t;f1Ug3R8~Q4V1c>LIC1(~wVq#5B z`@gzJo`Id}EId3FGk{d!l?)a*IQabLX0B_bnWLkkw$uI5lzOR>%}ARn&FTK#%5Gpp z#N9N&u7XJTlc!(~YM2yBXMu^a3&cnAHErIed8674Y36Y+yNZZYt=A3s;c=OgeSCq0 zFNe4LBhIJu#bNL^6cQ*9Yf5&`@RWLPJe6vd>Zkipm+OrXfSjOB&t~QAG_`W82g1%CEbUxre6nln!wlotE5pgn>Or<<=x!!uX+3CR|D3~8&Jhss4 zux*;CuYlF*ah;YA^w#V-HpKF7ecw314H@t?p>I&t1I&10EPL4pi+FGjtMw&4Aa3eH zXY)mW!tlc>()PWz5UDLZ`c*OJhDD5ugv!S*`uuVkG5mPFw^(hoh~H>;k)TP9YMPjw zj4>@W!r@(~zmDI4>R4PD91I}`9;i&)Uv)6XLQkz;HOk2WSW!`lve#K@^V>3a&;^#w zAq(G$We*BgF}R1dzV`VEqW|FouYHLm~Sr4qQ>RPOyd=9fGtku7z9JU{nZ zG5y3jmkB2&eG~Mt06YBUb@=|Rp_bIK7`+ZZjDrv|h4Z1AZurD6q{%V>n;g(Dgp(8# zh=RrhksR9RlQ05Lg8pQNwuJD`k^p-?2oV8p&Wz)z2{znsx8LIJKwn%j(tWI&f4xE0 ztV&T{eD&pj>?@(HR^F3jpWgB1#yM_bXJu93tAbSTh7au)a_nGlpQlLJSDNQ-t%-8o z{k%o@QGwu-tx>HVN(~G@e%IC_LtsKg|Mj`<4!5p%+!aA_m3`g@2vXuc`+adwpPlw& z>gj2&tw!cHYW+ja`@ZNAz&cMgdijW$nQPQR?m)T_ITrLF{L z^Q0Z^xx+tZC+S-<1N5^8;`qKZ1`L^SGy|05O1`o}n7!i8Nu;H6?mw!lt4~f&`owk* z(+!3jX9OllhQZk%zVw`iFeCmJr|U-rELLhX;vi0BJM=`-^oO=i^FMDyo=}*B^5~o& z@{wf^ndIgkaMwgr>uoFy+#4iF@5Y}m^($tAOxY&Q86-1N&N%Ul{hXS(FFh)*yTUP9 zmxd_IU)A#Yq-e`kNH}gIEKE5*d{q$)>bz27LyN8cE}Sut#%MfSGJp@v!S*YuBK1Jt zFhr`4MRVFovjjIA8(-LicNU!#q-4fH2oob!lFd;*&z(akFKL&IIS0!f5i@+fJ5*(g zaxu3V8$cGE)Za#_^LTyk{qDYU8cx;FkF4wZd|EG~eBSb5v~NGel4Xk{z!d>qarsD} zo>oFE7cesf`CeQ21OEWmwG>uB55JbiKaxx38fPxaJ|%vC29_(~iLf<0M-Ac==aM@U zZ!Ou(c_Wvlfqg=^hKJw~b0P>-#zz+b2EV*UJe5JMsJ?+hcP%brF|D}n63id~4catv zd=A9`A;^t1kO!K$W~hR9EnUzkgU1bS{I4OCV(}*P?$5NBo|(KhTMn7vJ8iE_Ww;i* z`#)w{i&%q&db1%kg{rX|Mh&p7GHX_)xsJ2K(Dfs)q1gJw$ZQ(1ND!A-J{N&zwLMW% z$&>{U_|tx)1>tw^rl@t%3>{?`SPG@N?%HYsf2t%ey$AtUk%OS8t|a?F_EmhwRSxx{ zM#YxcCgo;63oR6btwqSOqR}mDQSW3na`h#Vk6^9~dA!pa1iIz0)Y@V@Env2wg}AVF zZKw1(7($&;|HH`hN%_F}x=%V;ZlSq}7JkonITeM?7^e9TX2m!xbR}3qVw`%nbQ7IF z#nyF{pVa2b$)4tkLNTmyxu9Nw2`pqJ#t@`S1bc{eYlx#-;hBakr6#<%!g;D|el+9X zMTEZf2va*5->^POW+K*xN)MB0%{Px}OI?fG@ zJz#bzd#^h1lAG1Tssyz%eb)C*hufG94>Gd;gua7U!1Sv=h@f~ zlVl?NhTT29<)Rsx{jg@;bKn@b3bog1E9w;V0>t#O}->jy|Z-)Q* zcVi>EQJr1(w>%|UtE<~C`pm#gvebi*zGzOPPYEm6&+EMdS6rRh*i34i72fklZ%GEZ zzY}a>b_=X5qciS_dC9}(z0t-xqCMxFqh6Ie6t!Yoc$P4oq@BD~8Xs;6 zYp0P^c{pH>G|~Ef3tcVkLO3=PC(H^HVzed1%Nka-Ufnkkv?Lv7yY!c7@eleHVrGRyGIqamy$;7paKc?%-f4m>7*wP=Ol=R zPD}HVgw_7Gcx-uDbY%ADTdX#iX|_8T`#b&GOVv?0-Lf5<0erdKS%>%3FL-9SEE(F` zFuBK4M?r(;ltdchY7qv2B`ghAQMKHMMm(_#U%;WBFQ8l_wzP`jv{ar>=aeXzwKc`q zs*^<-qvp}6wb7*`7L014MBkVzs3Ron8|^B^E!ZTg;G+kv%s~~fF*@n`AoG7;Vi&fp zM(jb27%~-V9w9b{H)vBApAd0G7wIx!ACPL0ZF_coJ}$kH$$VVZzp}KlxS|%dM;D+1MnVT+uZ~{uW0!sjYJVQ3 zeURH5;Yp=Rx`{GQPp)?SVXF(Jdx&qaOKvyExV$gAcMda1-8;lg*He~U`n|z1{RqoL zEZHmqS!`f&3w=SXg^?y(P7?tt_*H`bS;vezhZ9A8e_jPY_1gcrGvaS8;L`@*?Vl2k zoV>uRDc0bj$+=;xd8`}#QCU#wFF!e$Y zGxq9(C?tV6qivR7z-wNJvOAYx= z$^4tekF1+Oi?IDN%xTDUY`bsrpFve~7(HkZJQ!Gh{;WT+S+&)AAXFFjZOcQia-gk{ zIu5oAozQ_@?qEE|zH-{q2zlj4fvTbLzG?^ZHr6zC!-TKvd7l<*wmFhKtvd+v7X>qn zw&eny42aP<+` z$X>cz&bsKULyI8~!@_?Kt6zS$*zE_wGwira0V7Cm zQjxt3v1WuRN}tcmOfaQI6aiQcG~?rZXX;xBSF#Kevso%?Lr;0){gyAMVFS zT)f*lZYPgCE4~fh$`=FM2{(QAZ};l%ugbu$6!8vXcphjjvIi=4akQjEZvhx)*bw;j zIiyLfnfpC(NYOFmVghhefXVF;wVh=~rzz)_Cs`9LqM~KL1fKYNCOjM7hMcY5^gHcgWxsUMT z8ZH;&0UsuDt~$BK+7C!aRL|+JyFjeov$95)5)`$6yJ@k{P!W)S5LmJiCA<@ ziBG|2Km1v9(tB~vN0RJf_3Szc5 zX$?46ejQ=TeExh#!kz=9&6d^Btx?bz9Lsn`eeNg?2KYD|JN;&PTF1V=A9^>Fvh5UN zEZ22AO3xq#=iG1vhk}L{^@<5LrUM>#2wn34U#~l0NuufJQUCw|MSjX_SbXQ^GMcdm z*f`#PoL7bpCAtFmM;;=zGrJ$*hse2ViY}YW(;ULIYj^4q&{EnzlRRchF1+7yB{uW( z$afp)?Vy#~E*d6;6d$I>Q)#tOG_s3j($BmmFp>y{JLR~i3TT|NU9d8Yv|irB5a}YK zola&^^slx8?pZUFj<*Ba z@e)@5G}%Fybe^nNBbTGAu)TO~S0Nax8S02a2=futBND*~)8X*o$}cN(Wx7bOVZP=D z^Z89GUj#nYi{t@jeUN0q)G<4vw3)S z1uU;&Q8XVyJ2%@A=i!B5pT3>fmMWS&Rp`4+u~UPFo1p=7v&s=?kada*OSJ~^t=sR7s#_(NtW)GPGd8d#&2sRIry`2qS zvCGm2;d9Qn#3tChF_XhB>=fw-#ajKX^8xt`2*+=j4i#Fz9*)ve3#>EM2%%hu zEcE#_JkeJ1w9_lNhoNAzB5}HiGHHlboe1+h@RB*eIG;EWz8M9!;*I60CeY|_=s6ah z>$Oc>R!lQ8L*&7XGm_Q*S`A9hV7I}7(Nlyv+zsuwJjpQ*7WQ@{7=g`JChi_@LcZge@RL#+%{%&O5Q9QuoufRr@^5S6b=4w& zH$fChI8)KU1Wu-8TdIOs@BGQD>-+ny_8S-L%Vw#nKaTf`OSy-smKV5>i*9RXoLrU~`I^eAyzAOfjYc|Ikb;tS`oDvXyHf>!m0lUhc!4Sv_~?-`E5yE9CfI!^5V%fEFF>9-#64m zDs-H0i>KORc$&cm3rrUjD6>I9L7h0s`p~2(r^1*p*fuY!>m+Kpixqf1%t^RN!{26a ze}p+4#X|93)PYa)Uh|;@GLWh1GV@b0a;V)?bpqSd_6-YNl+HKM?aauN!3Bpu3YR|9@(Y2P?fS0{^)QBw!nN&?!wuXgWw#c|5`nf@-h%&?%WsCKKs){EMC> zLgo~#b&2w!j3w^5?s*@7+(_a~jeepouCtsY9rrW2ZJ+yv7x>!`6&OMooI)I4`oAsY z-?e?*O`Pr}9eckXrlW#weFI4(`1$-F{ty*l=;`UTeSf`6Tr_$CLrTPW2fuS2CL9`= zMv6o!K&2~qS=tu!8bB4!4FXA6&>t~Zmlzt`sa8i zU!k{~t*n$Olrb6PXnY=`xIyu}XwLL@ZwQ0E=y+3Unu!3LzO>iITVDU74qG3QKBCo8 z&$q#wT|lcDj?=^K_FUV^d=QJK^Vr$4rOJr$R-a_1fOn$+)@!=MjzOJKGgj@p15OXx z9e88n`p+yo7oCIO#!GeSE8j`+Ol=ZHR5^Bj9xey!fQXF>g@o%j4}U#c<8}u!ICpyk zP4$JkbgnBR9Q&<;Y`pE7;>UD7v2QJr@73mcfU|$Spya2PD#pZ_ZUbY=3rLG+ZxVlD z)3YXIMZ9p^6ajNDp0j_%s~6!ZeF*AcO6@Qy2gHR^_g)k&^#~J8Z;7H{kIdt&C~`dx z65nv|%MjzsT#H>tSs@TI2=F>#;Ed$V4MEka9K~=FEPRi(q26FRhL-tW67HTnLXVU4 z=Lc$VplEWca^Q<8=uiI2h8+ne-Q{AJGTj-xSm{9@$C$)HBR;}-?TvW*vbp2b5z)OI z!V%yKYR1mTh*ph3+!>|+7_bGNJAxi^& z9eDq(u|UMb!%fTM8sEV>ZEJN`=4_)6vLFZP*X$f{{H;DGM?oLZ*MEoXJQj9h!w#SY z&b(xFX`Gm8YgNXbGwLyO#Lv%cZI*6ymf&Ax^DrO#Wenz#^eM<*9S0$ zCV>yOYgr8wsc27C0ks4St@#5{)(%@zH=fpPYExZ|Fqks7!i9Sc8I)7UOfB)yaNIC{ z(A`kG5m&SwKHr9lH;w1}n$Rao&iYGcBro&6)NpnDvHxeV;)MLlBdl-JvHKJ7hxSv) z#!~6SoDOO%($9~JIJrM^p=1|)yLOzLcTqyzHfzGfZ}M+?H(g=fry^Em(rrafV<`f{ zjH+rmO6)lw1_J)8d$C%;T!orS2S)5(BxvE&lqWJx9M2CI+!i3Bu;Ra46 z#P#_p@TUs&2j8RaSPLCYA9%FdYmAr7PeTP>%$jc_wTlWS$kd%<3m}l($0T8dm^%lG zjvi*GH~6+#&$%?pRv#xyb~_$Tamd&BJqVu?#42_W5932VMtK}%#=Y`(YJuS46R3ZG zp&sruO#Ma!bSlLalw^D@1rm#=gD#9AM3f$oCG}H#FM5|mA6vR8EJF|!{OdIT3%0iB zjmC?*LU}EZwleK0&QX8UbHwlsfL++ynjRW<>=nC|MA|@IlY-Eit%PsA)hB7ByU+nn zmG8?EPQ9FrF3%;rrCIgjP@JfxOs>7hDZT4(%GQAB%<5-13C3)?E)>Fa;pLB{K%#%k z-MMIpoBr%hCRE^LrLD5kawZr0u*UY`YqG+@Y#Cg4&*2Q?paTel_suC=Y3a5T#o?=i zj*YYSMhzV;!`m(04!^dTLs_xWN~PvSJV432&=>@D2<8nvC4jVG-kHtT1K8f+O?66vc1)1FO@nzXf|U z6oBPnA9>i2uUdzU>Gs7K0NVDrq@#th3=!P_@VzudrAAaj4Tm-uOKN?pIat3$mXe`D z_hRo3awy8qba7itfvxKZdWL{K-#}NX9povCv7%kBW;&yZ^<;P5_c&&%2I<5}v%Z|5 zOq}-4QCP?Pf2jHjn7D#2+?GP2xVyVck>c(YEw07g-HW@s6nED}iWJx4zQx^L7kRh; z|G$^KWD^pydoy?Lxo6INa;Bp17pV7o<2(6Rp` z(RzgFib<>amC5VObNkxkGY?~U%jv=QO$}S!cR}F_apyq~bv&`O9o3i>19YcJzcsPX zY%E16lAgJNZ_=zzi}coV#aMcw#UTD@LLpyE62_eK3bC4g9dbhj5Z$qL{6&!Z)rg_U ziQCC|Z|%y1L&DHgxF`qg`Z)~78=UgR9A6psYY}^orl%&;eE~H`*K5*sqq(NH_=w{{E#3N!B&+x-udd~ zt#;n+TZVP^$3)9MCV(Q zie`Hm0>e$#SH+mhC^KG0V)i!N+=q9pbqsSNgWN6Kq|-qXf4>CYa%Obj0pJcsgb3Lz z=LE?f|4W^7y!2ue?KFgLy=`rp+66I&F|v50GGu9cts6;n$4yC=4!uv6KPER0D^&{{ z+1_5NeekjG9t4s^&HL?dak{9xK7@rz6N4CHY%gGWmuVR=%}~NYFYaM_G9!BiqS66J~OYihg!mS1e$!<~~V#=IZRl#@V(JjJmPPxn$B%iV4Y`anYyh|z({TX6Y`bl}yN ziI7jY{SR4Uo@a9UI=%JliZLs0bZIO8OKh9O5>PR+Iq!WPPiOm(L@iIwQp{{Y$Dc(! zb~jw3)fn26Mr^)*-xtiMp>r|&+%Z}IL!|$`c^Cvav(m=eVo&!L78wlHVKwXpTlZO(PvQJrj=Y^~cs z!>-)g8olG%H~L%y7Ida~1QQgxWgSf}sXOtIgYRvHZIwi5$ER@3_ORe^Tg(367lku_ zcVh3zFnah`uDEgk^7y|#?*M2}l%wR05$ngGfR1)Gl%F;4u9_UXZN?fRJ=N&`a-%jh z5q&blo*G!HGyKpTTyT$x!NJ&-qC(XBjjZF+*i1L+RishrquMJ6(i{eRsc|h&F?YO@rQAUK}!D zPG+XbwI*Xry9{}79O?-KfwXfPw^u-C93lDsXF$)NB~XM0hJ|N7jNf+}DZ}q+ekLfi zcHn;JPn07V$B(qqSs^(v<%ykfKe3QkUNyggV|9M$%Mh`n4WH&Y~y47f>3&NI_zz|p73N%rn^TSm;+bMR7Q1V zPndEdHkL{G;aLO)B8^PJpE-I?4nEDa<6^%=ZD*3k!a(U@%(?rJMP^0Q)}Z~%xT-Qd zPNo*cn77x|Y$^&_A-|6qCSUScY~opT&xl;%J*n6f&RJ-o0NI3M{^HYRqIrBAPsZ1e zYZfb^{mx4r#+hk%?5Xe-^+Xi|0AL^U>#W^+JlqIxUWw$$f5MOR=O9r~5beOa5gXyu z0<{1rUD9?$7bVNIQFD1NSOh_H5}a)2Y`Piu;=9D1#bkn;jUBgLzh?%mDZ4qcd zxs|7jEWXmfe>|6@dtP!f0msG@>u6fhZzu-ku42+(et9Q$@m%wH;DNFKi8vtl1)Z|) zYM6`ZN1BHUpFRS;H)_>*hJ%w-;6)X4>xAuvjvp+Ewd8D#3TEm1Y{ZXR@_FrK<8Yq(&ip{HQ%QyfvL9nGZ3RIYx2>Y^RrNEaHyi;am6shpqe-s=1(J2?XLoC(ma_ zrsWGL1|L_tETf0%`7wFRpdrxQ!jLrW4L)vfm|;iyhiKywpzz0cdu zBQ$UD{NSAoJUHT{kvdZ5w6}HSSuhmIJ5bs;qC? zuV2#~f%5)%QJYr_3w8S^txdLOS%?T*P7$3XV#nL_Ew*OcgwHY87epkZYQwdT@w)cM zP=w(OH;f0Ni+eGea8ANpd3}#Ulq?2N^Ps}x?z+)To~29 zTj0y~C;VQH&An>>`>Lb>H)AQ~LdTyi(=DaoK~=tWuW8e=AU)64ca!LjW4fx}+Q9o1 z{_+U^{aB7sf<{%7l+=wZHGjGDfD>6{$QHKDm?-VFgTy2)c0&lgk0sd>n`3-z6={j> zBxH7N+k%8^0`dVpQ!~~Y-2VX<5yiY@+Lp@)TV8cyJ&L-I{x1F}t>g33T4D4$5 zf=(;EWc+U{4K`W)9}$keE*t)prE543<~N^=JE(p-6(*6)Vu$^xiJI0Ir-wuEn16LV z^wSpBJ<1F`zWIV{`*9B$2s+q%QXKsm6l1WXsRpM5bHVrf)nH}w@9%+-vT$Mv>uus) zY7Ty_Xnu{V5lTs4PrVlFpq-o3j5swZX2I)by0?u27#jQ0*;MdKhsr59Vc(t=V4Khe zWa*fbvEHMb6#CK#oz#bpe!1nhXO!HVDqC1bZ5FGr#=Ye`?+5~5@WQ`YP#9O)uF1Wg zXcQcvKl?n%o*Zo)CdF$QAD{Ys!nQ|2qbkyqz^I?8J&{d`<(<4k8c#R4KHS#XzMNJN zavvg~!tixtgnf>quK!CO+;c9}h3sal3P7c=Dh26kEgq+z+?!b74Mi&4JD<{)BqLr` zdw3PcYXcYmtKhK0k%lGlsUuu6&-Ddf>}XnMrHu*|ds7~8JU5kyoaa~%T%^hLlap9! zA3Rx(u}>dYRjTlgPn(|mD%Sm9XOyF!-VlVgTvx|v+MKLgrBC1ZNs7~VK0r{~9^Cwe zY6x&~iNjD#>orPz42d-0BjR(NMFfQm{o`Q2j25C_$rsxmQ~4lHj28Hp`XLhXvhs&^ zCHHJl+b#EMFGqIv8xBv7C`$jLw@0Qo{wzC-ynFWHCilJfMp|FrC=t{cxYNe4T9q*M z3ssSW5T5IA0*WWa2^2P=a}p@24vquxFW40ob9jQIC=f=wN{?%(Gv5G z3tUwd7zRzPnLR^R$ofcc7id*jovD@_!+O4d@1c!ip4ZoO$S*WX$&tB8L@nuO zu=K4QQzQ0{zgBw)pSmNxe@WB!RBWAX7e|V@gQ`0WknRw)ta&li{5sj>#`mN40qnd!y^0W_DGq1!~@Fmy_xfz#BJ{=Z-7L*-v` zA=!c*4K-S4mC=@g)37<=6Tv9zZ*gct#1d=X_~Cg@E)$QRrk;d>ufyBI$&G_y9;aI> z3vbaUunxGA0ZE7!ha5^N_PP5&SCO3ye3PA1aJn19fuhENrl<(Hno|OykpV#}XuKdl zLMfa@CXQ(gK_VB&{R2Nw_rr#M#G|sqD}LQ!N!F-RuP~~!V+K$wg-A^eitiy!0F~;u zlCM1$>;O$Fc=iMov&kxD!FdPam<9hBsh7ccO$ME8#Vjr)9lJKFT_had8gycDW2vW_ z$^(I2);)k2LkS~vg0t&-+)EJ6p~K1e_|hGrYWrku0Kq5rKB;%Q{&V1b1#=``^nsav zv)KeHk;vJzN}>1y6=ADkgMZV&wDI6?-TP8xM29gd85E!3-|@qR=$VV0BA>bcNF0r0 z{;h2U(!t$3^X|lf&~w}0zhghZ_{XW0=z;Row$B(eQNFv7h&r&a82>M zFVZ##!T8(}I?OWs-8jYp?Z@4t`}YISej}nfMoXeDE97T76=&Ze*-Iq0W6%&(fkI%e z&U~5Kx(ys&k9u*ky-%BQ!X)hh^~-ZmF~WMY_2Sm7qENBOi@>ex3ELV#VDc1s0pb@T zSHlhf-rWA{JXu}I%7u%Vg3}o=6xPRC6_v-o8Qrokz&VP7Mv{l?)=bPK)@rv8%IVwbl~#n%x<_c zf{-tzFQK0CtLA4edXeH=9O20hViSea4=ZR`*h8!4ZhdK9d?=*Zenu!a;^G5d^s4@= zQ2}iXeVU&x=;3;9 z%cdTkHuyEk@OMM&A4DLub@p8s6bb^js(wrY=TEv}#9n1xEM3BLJX_%u9*+P`TzUQt z`K}@@pa*r{T3tpKCX5$WRFWqA7ap6jp)?=B?iL!9|hloN8cQB>&0(KbQ*Ll|&c-yp{3OBlAIcx;Jgy7C>Rz$G-k3thIZ${nae9eruhnV6u>`-K>f=yTvc>Wz zJXxiGD|7~%ox_Gl-w>7x2JcRW#)4hYdN+7m=6hl)$cb<1c6~W{!OAIQ_ zW78P95)sxKSxY$d`fGYWhUHVQ_Zfb6j|Qf9{ssFHB+hb->1jtV)Q+P;$)> zzJ5C@9>>534IpyxTn$g!nM1ae!`&$jI{+PlQOl|u1INKuR4|~f1wab8c2tCge`|io z1Rzvk?dS%U{xMPu5}3O`>pum%ZKMh(2cUGoIKC4bL#hT71uYNeTLi?-ec#2|!i2)G z2d`QN90}W}2lYqk#YD4$>zSRzu=wx@39GuNK6h?uvHD+)&`_3GLX-0ztv~f+4`A1E zZF%D~HwWc`q^yB?6~FbYZ_&XS^r&lwF>I}+!vkj5yg;)j67W3i4sfB)-IYQ3=)O~^ z{_OeY?P3_6dao0JI6C;4#}jQk6h}L_p3ovFiP>={CqnyGjK3M4%_hhSh7UP;|h>S6# zpZwuf8@nH%=`_Rh)wx&Y0+p=pzV1_>YnP-w#9hqE&IQyLywWuV-T`#k|b}@wc&BtVn?Y+QC;W-pTBSEgBZL0^}*RK7%paq{C(PJUnHz)F{rLYiUzUn1DG@_?{Az`q>kVQoWXPC)!iLM>yaCxOrQd zcbznMh;PJTU-;7&m*`}c@#B>oc%X_f)tEGh`3fdXdx;A7WUXVJ*rE;5mBMPpJq{X{BiXZ0K0pqrct#dRq&_0_|E`_Yq4rpI_(h$>*X6 z7T0ts%K7DXF{y5!a7CNc86gPuXgf|w-+cTS}}ph4R_*H(Rw1OP3Dz2orzbIXds<|7S5GVN3Q>C8*}U-&r8m9yOKm( zvI-?A+JTVWXePU{meR(C-Se})vXyxLV{?i6b9X8>s=JH3F|}kEUQXD+%L^%#VTYC! zY*&)>!B%=sBaZiMEbUkIm3iA_wE_UD4B@g^dK?%hRF z)q5tw&jR>MYiW5;EYN6h+qy$GCg|ozTj{yx7*X-ZOUOAwN;tnlrwv@E{LyaA4+RHM zVU1>;(HfDaS>U%6-iZ&?w_>xOjpe9{?vCyKVMB8!?x3MwBOt6~>i6aBsHBXhLrkym zQNbmP*eD~5n0pOoAx~q{86@826>b|(#`qK16&i0I(cP%kXqMofZAX7$t`A5VLSk`_ zAmup21=%vl%dx!(EFHo;6O2xiz^(?Z8v)O4bsp%{n6F#^8;Z@VOUOH#X{;d2^rmc| z_!=%Ri%%qZg!ayGKTA^tx#=8olL?!jTwuDbBc9pqSgjPrWB%pcgRB(n%6r0vFX42< zLBq5mX^GXqj@-e`o+TD{_w9P$w6V3T80&ZwB}`>K?dz5x>xs-=pz+nqKTH5rjSt03 zeD)*v-P0G6cj&}$DH_r)AkvZ)wDZ+soY%WTYw(Gn7G+wCDALn+ev*;<#NXcElZ!WC zL%LB{K-&v7UAcklmz*Y3AN>!$Kb)DM%9`eBr#Zb|vUaXZ_6lJa%J6%WHB`6!zWxQ| znF+j!EizPDEdY3nj%#05v*5|^hB6%WSOMX^lMPn-wetC}NG-F(rFqIq19Qe{;5n5` zN`F1<0#%HWfiY6zjaCjg4)3^AxXB8mO+wacUt*p`QD@SEUa-WM+rYaPgTo5@nnoBi zqg%EhNgO?dc?O0Y%edhAJFkdoI%|Z!_QaauvfP{_Aw4|SO?Z{Y8d21Q^8^oUZRZ_6 zvEPH?94>mZF7)v~@fQgQP}|3K6&B==qX<6a`H4ZLIQ-#U+-MkMra0HGM{pl)+#~0B zuPSca#DlTQXgU8IW)2x0RKlWR)L)GSzfj>(#wMcBv(QAV_swNkum z4De$F=nk@u(TU|xhB_(lSJvzUVo$`fg^C10MA?gRspbeIS?6jdU`Klm5?|qKWAZjt z3L#ke$G0FaAh6$SPe{F&M*R}3C&A$uEy2nnrr_cFVc(Q%Dk+ngl2O?rDs*Ns;@L=J zTv6;u5znc*s0J%@fkn+ij_X_Mnz0T6YL1bjN8~kmMw`+WCxU*x0d_B-v$K6YFdYVi z!E6B0ddEQw=uWwx4hj!@S;PM8?2U~wmGiQd z*^S|nlpj7reL|&%4~n3EVCP!;!L|t*79tE{Tk8KFC_|n}SwM;U{WDa+y8tNkL~JTb zb?xHS`Ow2N2;kZgywBkkD4e#CWdBvMpDifBzUo`)EnEGwrP2-y9xBw|&ur%yC==I-q>APE5)*t_6?uF*K9n#_fdi@i2mMWj)nM-pcOC zy0(*=0i#m&`@F2gdXZDCL;Mp1OnMbpwYVlL&4TcRl)CXhF>Nf}JreYl8%94MrvJ-T z>`@Yg+N&#BY{+QFb;F@4xBTMP@?;cluug<~! zf}R()u=mz;o#>C$nGfrMch+6E2FNGC3DuG1%Ad)WWmQI3xJ0*^GiXlYU&;?a(S**q zm}ikAr~O@GvR1PQPBFfy9TSqpX3oq+RJ76Co;l0<5|TltMHv(Ci^_X@{%&XEOlEL9 z7TAy#d&8R#XY)9#Hl<$OE*fOzZUZ2^n%wWLfhflzB6m{Z5{@ydjibt1N%-VE6bY~# zPwH{Il>$3al3@dF=)s2!j^oL)F5GHav`FX2a9iu04bI6ef10~Zk zRrv^V#F=cce$xWSLQej+O~G3kb@A2`)&7pKG1@OxOm7{9+=Z#63z^nsltUSqiY+7^ z?ByXctl>HH<)++iA0I4VOwlre`RF}W4Gq|N;}#d-sMEGRK$uP$m~NOZD*vqjYxx>k zAZ;9`5WlaXD)#w2uTR&2pLlZP9AmxFI1^u)mT+M%dB8i>H|wAiFGO_g2mb>o=m{$Z zQuuv|zw7(Uir)=MbL~*6L`xZMNqGFoH1^@C2`qv#xL5O_=m@$EHQs6_(*dGSeb=b` zcdx84wzt)B+XO{Vi(gK{^^b+UynGDc@-EN?{E%r_CG&)aBQwQvmOc2(1=4>)h=lw) z2>HyNBP{!~4AcKg!ZD4FjSF4h&o^jVnXI8?m9vV|(%5G(PQS2iWe{$kD8mpp8!}9ffKmN()YkJG zY5taMO6y&+*@V@ z!+lL@`bw!P(ietE{G-dim5xeusY|p3(pT*X@smNDO=Qzms*JVuf99=EjyPL?alA|SP6f|+xEhjbH?d{_E4G?Xx1)g4#CDp^*8fe@LpZ! zG&u1av~H`6YmF!1;ey`FYMs=7bN(_sMvMEm0_x7X^;K5v?NR)VEai19;kBqULV`EJ zXnn~nLF6P}B;rclW5)z~S#jT$0Frb`u44(@N(kz*v_PtJkebOCT6zh{{!KFQL@LBL~pygGbK;_cP8Nu$mro^x#W_fFbGF zH1HMJFV`mQo-8)OEgE=E`DYv{W-Z;%Mqon7Hf^J5-56ZR8wbgpy_f);C_3B89O3Te z>#6x6$Xcu|(g(3}Oa9C5X>hF4@2N5z&bkpv6 zyRk#tF~n=Xs~s}>&+8%mZaNOWucf|t`HBgm7EawHZZ9f=>fIRsqW$p1((D_xqDU2K zX=y_=x}c;uJ!yNDsgC$z1mzwP%r(L`8T&G>d>s~sMDQ_!vBXr|)lKw+*&`=+WcOgd^F-wBB4sM*3^G* zMb0KTzkP^0UnUqGtFL?a{Ay2=xC`VRomVZMs+7n3YW6Q#U8day&m_{CjS2RD4=7-c z7v0L<%6#)rk1tj3=&1R=QQ1-{uPL`tALVelgQW3nK7Znc+%;ZMC>8U|eMH11rRb*T z_4)lCwroKzL7LJ+joe=0+gDgLsJ2w5bdz06EKXuJqu@wX1Tt2jw7L~9>+50Fb&+FQ z7KRI0Sy}O!U`YkdV(t-A?VSgmYZ<^r*H($k5tDem;YMvXdMKy9#WdK5uuMG`%P!qM zUfWhNhdvxtJ*B?T`-G2DY=V#DS*kRVP$30B{>^XP3QdAB*u%CsN$`{=1I{+dn9=xq z+)e;2Q?1TBO5SY1<-dN@~6r;aL6Q&lA{Jmsx9Ap(e8 za?ra3yzlw}D@>$vp(KpuoF>QykCz&;uYdcp>SfbOPeZ+BQs)@d-p=cZ{QMzH!ZGtg z089$~i!Lt?WkESKHvNFV34l`eDJ}bR&NM zW|1*uEF9!ZCN;ygn=N|#ZeH(x8HvSE#9eajV>#M5ZlN57N{)fXT)8{;);%MjuTK*t zj6DF|Wp0kmgR7;S-+$@9b(u^zi4Yk%2L+xeTe+zPpYZQ=QzSl+abCj&IaUp+yQW|c6YH05T??kx>z z?j(e@T5bPb)wgA>#au5Ss%*R*Zv>=cTUbHMI|va69S%%oNx^L*_#AvzMA3yU;6d-^ zxCC}$vX@FDFBQGY>J|NqW8ud5ys?yjZ-e-|tVEsgfaZd4QR04KL5a=R-I0yD zxtc)tOWZvpWTAoS!BJTJJq!7U2bU4jW)~Ln)ZbzlKYN@r1!nC^ZLtBD%P#};YGB)m zEMSsSkq}bqs*HsD4Yinlbkfh&3S*M9L8%|(im$ShYQu&`T6RD9J=D`AI1m6c2H4gR zO1@^yAa1DAPFbl&y7_CIE7cbF6)+<)ZIiroVxJkCw5{XE)SFpR6X%(0-@ z60uc=Inbs6=6=5D>sv{qRc2h?6ld$Jqb;EgSe}_tu@D`8-maKw2tm!jzD+EsAo^oy zto)UZg+*$!@7~5=k#q||I<-F=`Clce!}oY$`(Ea9P#X4<34&EXLP{vjxDUD8(V&l1 z{1R;4tLeiOiS;Mc?IzF{aoQ%~zSrX%{qhL?{V^W6Q+Oj0exaHY{p8zEIYABBj3req zjJ{Z|vXs_(#pK{&UoSN6rqBt)*u=?#e!t*w``o2C=mKrXv9% za13_2{?l&K)6>U)0>n{#eh~0_#exdH zT8xhGYm~t=RN^NL>azPDrx_WVax3ur1}pbE+k>h6yyvU5ZdEX~LUuUoM-<}de`M#P zt}_yI`$54JoNujurvtD<-i~Cb`3+!m(G;=VqHnP1PO(6%hKhFPMvH%3D09mQ{T9$U zdbg@^;$MBcyF;$ud^4(TRX{0b*6bmt zxXykVNLqK+^e-tmFKJz`P2s*_ODHjz2*55!M(;3V&)&L;>>8TmiM)v^vEUSMXsTIa zpDS#65yB2oEVQoxqeW}z1BfH+Z2L8DP1cO#1m<{YFDU-G2Iuxy+g zNz;W=+e^lA0{{lfl3^#^GE3Ze1ZfBSSYJ1pywza$Yv3EOcoAnWE3-e>94EF}A+9$f zLQ)O8?NVNy-!(y9^gbaaO%gRWqtE+`_iIm0C0oXe>M^7BWB=h$Q1;DK-=QOm zmdIya+{`L&1I;Yd6XJlzSmg(`BY;R?w+~89Mi(wWwsc>3;5125kWR;OY0G?@6ggT(2|Wq4bU+O~+>jAlbG6d3j^fvO%ub4|)GZS=wVSiEMc(8D4#t91pVTwQKVwh6lTgTUpAQT7S-wfV8l)j_?*&}Dx8TR)_N zQ9324C!l>t@Aae*N<=jI*m08E4!MM*Lu`+E!%M2oG}ePK{9Ouz#ulJ4Rs#t=?qINf zm3k1f)xzfe_>7wJ`$Ax>&K~d1ni5!(#UR-A_5q?2j)^?|qAZ4;#WynXNztO)Xc8nd z_S|z_l`W-BaXWW(x-!=QZJScSgkeYsr%NZitGnz%K2~unH&wY@HO>^Qv@LDY-VmKx zQZ`lLB@RnB132LLYPz1RI9VP6=3*d|(^|DjlN_dD`j=XS!W+Ey1K zE-K|SYXbCr5;6H!j65rI>bZ}!EnE?*xtKiN9F{|OF(y)d z%T>!~ipXa8iOg<3(f<$b*_W+!q-S8*4SL79Fq}Y9-}l>PuJryW=LFZ`l79W3M|=F9 zF~D~W$j}W2VmBIowVZ=d3hweU#DC}W5>1KH5G>Iz~iAu0$=lMrULr-$2d-*o;_*D{GNjJb1f)Hs_&Se zX?N&BtGS<#2dSG-f48CQaX~yn%`=q-O5#M&8nY_SGi++m1Ynn#}a% z{Pt`7fRsT%HXGK+_3Uq355K{3;HXV)QH6Tt;~2iDLdAg^>mb_@VPi1~=qR(M<4QKg z%Mb7b7ZJU0-$|5HRrLTw5h*CJbGloApF=k4f#?(S%IxOrcfQ!!OL7dx$azn8pGn!J z79c|~{HLZJyL(}ZFk;~*YtW0AZXiIk$<9kM`P`gU;M1ZwC)j*$(&LA&i7EtG2=U$y z$}21TfZ>HXsLD~%am^F%ss6Jf_rytl&EjG*9c|g>mPG|Lf6Z6;JK09xlq!cES!o{n zF%(tFZvbODpBvCXLfT}r7Io(yHGGx{3zE2)Y{$odpOT7Zwv3@A8MWIN_&b&NoCsdB z7~)PD85ucMzfo3+8dx~sGYR^()Pe}%#A#xG*+)~h3HcLKQjortbm6oV0MbA9`(~1* zSP@W;z&eQTRZTIo+@feG!f(C6NC(Xx;WD+Q+(0zVB_Y1%v5kbsma3MS60ZitBsLrH!E z#8?H-T&n2^{9;3QgAWr-y%kZjaZkTdJ@PdsA8}l%!lBWMZ4?DIFzkl^tT#n0?9i94W<#XAPa3HH#G0#<{ty2n+AnPx{0E94L-$ z|LcgO3m-@H5P^%;Pu~lURTgz0jwf?^t<_DOpuuA^5}$f4i+`q^)RUar&EDaE(KJ&% zu6jm5=27hG6lzl!;#cVn)Rf1t%q=^l%{Cjmx8V!)9jh~N{!u~3VLF5R|uW^0!0L_q2kwJr8>5Alc)EPJ} z)F3NVrz$VS9Oxgagx|K(LR*6nXvqIkZ}H1A3vyG-#$svf&PE!K_eWruD(cT0vZ zS$PrTs}s&TUp~L-8^t8{tzFWpSq|Q^t-s55>0%hSCw;Cojm`~2(L8fY|fm=C1c`hcy+f0M|b$eXE{e`I{GP8TRw8xw4z zUrTDVOcVKYf(A6aWvRp4FJCaptbDJ4eIizkKp1Ms-8tr%?dCqg_mPo41l7v$A&1G~ zKkvZ3$2)QCn_RIQgNYj&x)q7r(ll921mn|$r1#2;*yZ@xY}c(Lj!^iyOZ7=Rr8JSE*6i28Q^5y_5ilP9|Bk0Oa)*WAc4hr}#gDDX zh*lEmI;83)6f?)cSSAjJxUNV9pB^*C3j|i(HH|@m~xmitR^SW)s(wePKv9whgM1mO+|Llo~aTG5kQqF6W z4|joHzmkZ-+f1w4WVR#mh0un23a4*SezZZKL5{7D$h$4OC?>n5yffa3lD0E2@PY0U z{s_$C|30Z9l!r5J!-R%m2SRNRhetvU0-%^D46?wLg>7r{P57TV**U861&!n;Bw29Z zaC1EeLwLoj`NZei%}iD>XLkZcMs4{99R+O=GJgNRt7@uFWfsg(s1@mv3x4ojz*p&` zFQE7(na@-qRQ`QIvxuZY{)Q&{RPc|B0v;Xp2d$lVS;)dPOaz0z4c(-QaKiUA+Y-`R zb}NmzCb~|SR`u-Bm;k!@zsvX1v@@vsx0xIO5^p%saw% zKU>EldgA@$YR6-?{{i(J=#LW<9zxYk5WMn-x#qbFdGTZwrj&RJi6nu`(I}t5`HHqA;Jc8DkYo!jwy9b z)Fcb(qA7pkX@9swC(Px*S4_HFb1R4_Si`z#wp0^!JMaXfq@ysjpk-K-^rb92zE_u- z5^q^UT;}jJJ8Em&4KIk`UI_co?Q#7ou2LikzTWf8?R+}BIfkU7P6&cqtuXTUkEup` zk75^x!Ni*C=UbOBNUhFyl8EKuhL4snmk;GH0V=TIkk%NPFt?%0zR_uKaUM7R|2~m) zgY!i!R~$sK+$-8O{pny0YkbEw=AZRD9r-*6D@w{Tw;E;#Qo(Pn>k-;&N zI24tUKgbah*}buhT?@nBY5rdOrM{6G;p@;l`KzE$ZM`PE?0A&(MKalVe&mJq@()S< zOMBa;?9Rrz`l&Plu5;CyTft*VbcDovc4s?JNhuxk~4nnW*Re**W1!Al2xxVDAR|KeC6%)M7=$VFoQCCYImih=bpiMN^X zS{ljkeqDR+C#TX2^B>+`*qD=&DgRH#za(yQNuicx%Y|;Otr>1h6>n&m{$lA{M2SXP zPuFpsKJH8+PT5n>^!2F;ELo86v0w3_kQ-_bhf){ElTpaP{BaBBaU#9-$ znZ<7bk0-w!&LC$BM<7=_G-Vxdj#87DznSxtFk1fJmbzQp@>s(vbXe?}=eD!JO9g$} z#`DJyY@&yg5{;59NqcwCb2 z$A2Ta{znFex8dRlL%<5Q(kq{}z}b`2hqK%%c36<@3=X%d|FqRK2R_5hod0mbE2hcw z+~KTDaw`#f=3RuxoeYZMimujy#61(&dQwu$Y}0vIc3feuipfNsAH@%kPhY8{S7;Oi zHJx9t863|1t=a0xBO`UN-!WvOIy|oFv0g3jwwBsL(xt2~D)UY02fnPItQNwF@eaka zbw*tt7|y5r*|78z5k$y^Zl8UqOh7mjD#QOWsSE3~UKVU@BhB-3F^0Ksl=N{sSq*o+ z8(K`#RrIsf1mU{~*M0YJJ$4*--+DC2UF7zXZ)H5PKVKOi@v9j{9S95cckQ}%jMSi7 z<+XGetinN%9ThTlS3CSA7la~5H?$!=Ce8H8ee-`Q$Aux#q|g0Uda#+KTKU_l)B6Zi zYqrV(GiYIQsV5fam-0m}9%=yVCE=<~D|61$?I5`l|4joSU&{4iLq=;MyPM~&hXL@0 zb@DrQGn@PO>7G}+C9IOUTkuuO9iJ@h#04|jL0HyV{CU$s5iHQC&G`;C;wr_8_bei( zDHM)detPvcZ<61yT?;Sv&SA@kcYf_7s-OGYfc>7*?Re3Bl{oiaO=&Z0z%s;z6$V*o z(=4z2szfbSwpms2ObK+q%unY&rNWq=*MEbEu(cxQW`BW3T8!;YlndJqyj(@Q7`2BT zRW-&#(g54z>P0vvX~?pb4r+mSj2FXFcPIrQO$ocLmV?@~?frFI{erl};rig-ZJN72 zF^FrBQDd0DUl(%PiEaYNC|@3VB&?bJJ3pI%oj@Foyk)Fb=AWaRYHZn!Ixx(>`%>SP z@M7)w%r2k3s%#t_|K{k$Bh$pu4gm*jcHGDiQ6lWw_U>0|J3RbG#}xeUN;E#{jcvSF zVOC_~D@p}b@Qw2La8}&klM+2!_KmKy#q~*X(@e&nm#kN}Xu6c!1-aIk)^(j*ByJqx zZWxC5Ml?p^)IORh|1QS0U;5{r%(DFu_aMdorp;LP7ObE*QPSQY)(|%0Y)&G3A0eFc z>>GdKCb*D6&-0p|Q4Gk|ps|2Lo?EeNRFdI5JZeYC|L; zUL;rzP223+hUB&P5B8U)l5bR#WY%lkbN4P)`_oazG1;)@>V6*yRlkwh7OL_mnIZZz zQg$negM&;zkm9W->U42K;<&hE*Yo#El~(8v>03lsqY-;SEKI*GCf9!-&{xZT(IlEW zDtrv6@MRvET8(4N4(?*---s znS2&eTkuZ8FS0v|rnltsqlnf}VlZMHf(^pG4=+~SB%~j6@Bs|VvhfEBYw(*{O&=D? z{N~Q4Dfd~-eCy6`icZ%c%a^T#FzdRpQ-u2RfiTne0&ka0)PmYU28vopBME(@Y}KGo zG>UpL$}Par4vH*dix3tOS)UNQNBxfX^&Y-zSmjxVoz@~7d6SvVWRVW}JW_g04M?eF{_ z9gz6n-~2k%xkSC44OFwPgH=?N}f4;-!6KJX3! z^Xq{g;z;zoJgd@t6(7#Bv`noLAzu;Vmrer&cq{zNkqWbH3W|mD1O1|B9&=lSuU*=O zYZMEmn3g^NTi>+P+9Z!Dvx;aaB3>Kw@}CqfWvkyBN`zA2kXvdae&o4R2TdOtdXX~l zOX*bWy+|Cg#l(9j>oYc!EO9Qd^>vvtl5(XG!P&68`|?UiN~N%_K@JH5_WsD?%B@*r z48jUJvrnx=cPJSdJG`kNGDZkDn75GYaReo0A}3-j(?4gP_3`^kka_T8uVBi2y_ zq~-KZb!H+TUK^K(ioQLSKaQtJAkTqXkvKdwyG8~`+$w*g1= zY6zx@(aC#6F5tCAaZ%OQ6(ICn$|30@9j2$#3s}zgx?vQD*V< zdqO!+BLcm61s1I;ai30DL@x?fBH=?)Vj0pTj`ToO*xhealDYB%eZyy~C#$NLT#?rE zS>BXEBFPI+9#5mC!_xa|CSrJk|5mDI780181Q<)`a$l%^M5b3rByk3lGG(}oe*UBc zKhr$Sd3O!PB-0Qm0;WrFlV@JWp>ze)i2kKnnIm7BCqp|eI-KpQ2Mzl*&ESNyVSrmL zzI3c7gG~Jl#kr$UA*47KA#sYcrR@6?8M8_|;*K{Pxn#od+m@W`-_zE_;!#4?2J4=B zH$6OTI28!=Yf=Y;Y-Nj71Ue-c8)}I`QNP$}{je6Q5v!!R zfao!hG80y;poZiXjOP51%|cFHZf5eZ_ryS*PcVXqPF9-0Vo$Xnob<-ZVv2G&P3UAT zQ6%(!_GY{DG2~eo=9%`DLuKuv56!5|LK_Ua@_I+OOo5yvXo@z+36UPn`y73y9~@>@ zCGmS4xa>CMj~SKI*Vh_ijbeIk_4A5z$I=S&^pge7|I^iXKsD8DZKHG}y@OPxs1zf; zn5ckCm)?tjf&wA}(o*QXic%CQqJs2JKqP>KNDb19v>;tdfJlIppZDJT-Tz|NS!d2# zCv#?I@7ZOZ*)v0j>XGSbJ& z(tch?cQu)F|7N6JqW0`Cs3Tk-G8S&LNT>82Wbu;R+4^{nvr|h%@}7!4!1+dWgB(o* z-*kH|IyWZ80v2Pr3_G8WgcHPCKW9g5_7^(~l)T@0Wv;R_i&EM9{P0QB#-`0Y`q3{c zt}qAV?f1myppt-XHaSWtRi~FZ=X$fUh06|@yRFp+G^Tir7+byUX+1T)w{9cCcihIF z_|+RYvb%4R2wkGj*B0?E^FU#l%2gh3U%B^za3lEHng&K)8;#E` zz_Dw!Nesi4yr^^RD3|S~b}!fUn;^(E)pGj{Bfjy_H(UAwSJO)#Fgi=K{}~A_gFcx% z@0*TU^I`kediVGAhYnt+hj&>ky`HoQ7u_g}?pMydFhwmaJSUJaF1a&^cp`qMk$&Ti z#=exl8EUN>T&h)GW+pgT$cqgxAl!tFec?T3lDQi+(y`t}b7`A2qO{)1aa0mik=b8t z`eV6rI(af^#jqyjB#`7oFk$)aJ4fp%cuFN*bJwflnZ;b~M}GW{&{{T^sm>PHj$Hfs zi8fouvb$2{pj^k3C`V{KZoDw~v$H(_BSh29dq^cha|r$ZYJVK$$dX{!H?i+n{!6l3#E^7bUPdB|rsL*aarPPt@drT&MV`c1hKkvgAR87WdRT0{v1fzQAaAMCPAy zoa$`Y*(V4gNWFO7S8rQPhV!}2c-nvMDy7Z(-GSTfx4#)w{aFcbU`}DV`t9>Y^@61` zGV9sEubci!a$Xs&KiiPu zJ~^m$>Ak={4fmycd});@OVFDBr0)wfyj%r8@N7(~_7p?h>WXI<^oZHljfPcLH{5qk zIQM|x;EztTd@PQE4|9@-9q2G^v&z0yd62Na$Z3qX;n|PpT~P?y*RroI&xw*Kqg%4j!==%5J$)iNw7h{-uY(w+d8UO>|O%wYWVRF z6Bgm@j1T@`Y1i#*;AGX02K(gW)F&qk3x&q}XG34tg!_(kiJpib<om$4vCWom+AD9vZ;CH^p-an=SuhiYMnp^Xfqm@D+< zxlMuNZz`ahtOW+goWs!14hGqFoFhKg^AAVk<-gt`9y-YG(1^J%$otS%bpbB}%LPp58m2X>rHMucUY2oN` zX{sRal^sfrty@m3>B+wElkP8Qmq+TcQ<(7wTj9atJB^b6L4$nTw%+095l_q!{*+9M z<+{N2)mc;)zDP8Q%J6z*Io04%I&TA2UFtpWaL)SY-BTC0m(K3-?oM5-uQxQ4tW7SE&D zZ)0YAAxRYa?}nb-v#_yA%c{ec)CA_xd*w*?BC&FczP-*+kv2Q&@xu!6s8}&njiT~e zs$oBQinYmUN?_syo4+M%#rt{C;U$2zPP!48EG&@`fw@OkkzoUsK3%@xcjd}0ZDU}= zf17jO)Y!Gqbh_rxaHbcP~(vL&F!LJ zy0cxFj{ZLu@<#he=U+N&_F84tgg@$l809-Y()W(ushY3t!%@O2c%1cv$dMdd1!aFC zI(I*oT&Lsz_||WFG~t7nT+%b!2Qt}G7J=z5GKt;Q%&Ne8xzDnjZ^Pf7vvQU%p>5<| z|Dc%e@|)wLv)Y8v@frz4^#6a47^vks_7f`H zmO-Eby-acM{j(;dBJ!T${X}))g{a{lH?CfcuF^SF7LF(`G2g3Mc7V5Cs@-LGyyGfu z1y8nJ_bH5OkXKbNNaMn{KFUS=z&^nmKTYr35-B8)nLJb4VB2B!-o(`#V(ms>U%J~9 zbCAU3K40}kPcF?o+F&C6CN8o$D>oj zd}-v|D|cPen(|9;CU;Er_4gfO8ay8(=w*IPAuA1ixZkbw(#S_{)214Z!k;R~&O0Qy zc!@{4#4v32*a(8x>^ytS1mS#aa3MB07aN?74gLw(IUqI=m4(3`vUBf>E(oQMe{-JY zA-2S@0KOhBpR6|j?+x~|8$(MmV#A$W0c<#LHw|1W`ssxp1wj%K8a2Ha1f}`;p2f%6 z=_;-SmK9`E-MfC3ZEHG9i=Y2#gyi$zfU7>n!*LSsv^QO_qj?S%npM7H16IzNSX&Mr z)`@#c)r&X-$e zCZV6!neU?Kv|A9I+^(;KhVaChXO20?HO>(%XAIIXo|8=DH+P)#D8+T|6YM@?Z_v%T zmf@MiqsZ3pnD@x?U;j(Z*2CKQQqfkfvo9iEE8y(tkFu*eB|7&97MAm*}kdI zU%%m(q6O@f=lf;Utotqgr;mn6SxU*v9~~%uOEtGb{_dz3=|=G2IE%U7RSW~F1B7XcZ8_% zq?5&}i9e2izs*2whbwYVR^EI>y2Ihvjot#~0 zt>KFe7;fNh9(lH6fga^as(XiN9c=c{13F5h1S4@UX4kv=&m(MoiWs_r&TWS#DA;E< z?!C!#1ttsP&~K%`)Lhq8@SyxMw$ikdT=)K(GcB0Fx0pG~E9dQG$i571h+|>kVSEh1 zJAv)ou>m`abja8L6_$UA4ZMu-nt?`A>Jp!%v}k#jJp+YK6dDz!B9dX0CbuDLS5jnG zQuxkdDgSLfp~^(Q!fJ8U0&@c>lne)FUrWwVd-9y@Px8|9nSaD->~Q7aS9sfas+4qn z()+3_gXeix4RO|QP(et3J&-ona6+|0a>34F9;DhP7V@~}oD11R-@Z4X9mUef0Bpb8 z5=Kyy105kx^Lbg>s+1+L_$9{ep^GD9=8`3zqmuROWuOe;`Y{byQ^ue4oXCVR3j4Bf zkqRwb^(f$p+|N7!wX-e4K$CO4{1)%lXn5GYGMUcceEVaz{mCM!u0w!*9+2)$KQ;G^ zEX;2wzEWkBAa1oF+YdT>W;Q0bh!f4>k9hyajbW?w502%H@TE@ArA$8DV*h`I`CnoU z6Z?@tz#6-GVtd6(LFiuy?m)hkHtx!oGVE!0$baD!jHxt?L$`s(mHjiKg|Wwr$CNA?^*M6YYvib zlJeIyYTIZX2=hQ#Q|Q~ z_KsbO9D zXqMq+f@H$fw*MrD`RNQ#lj5P<&xz^lqA7lN#fN-$) zj$8L>f*pwG9sIyvu5L;Y)FfTM^M`19wv0)3kpua*Q-<9~M}ehZ+wS3vO!=hd*fxPr zw2*cDSwXa<46i_EV^?L9?%2)f1+KG4J_nD_xiyQ`-rseNeyHJD`ZKRxSK0)3`KIEI zh$f&|V;n&4bk?86h|OiKMmoaL3BuU6vlxXn;@NMZ!S&7s9uL|{i*51}UH;MpYYn3l zjQ@W{H9N9#nPo?kKq&7tJ=iJ5MfhH`9*cK$iy7n1ho7A)9(s)(362S_vJ~de7p319 zDBCeQ2_NkHxS_Cdht@v-^0Oe}qd9+jyK}G+?Iu*rhA(|>{F)bn$HHeOVMS+OzJ%qB zozql|M`%|UNjfhgs)f%sU!wI7OO9NY(a!(c*g0YZgn!&gyn@ijZ9tZyc_^lYzzSnc zC&nN@8+nm5a)BdvnT|F%n-uI!ta_aQP$_88mzmaB7V~B*fYh+RpnAwHJ_+&3A)lGT z_TQ{u%j8-LxOV{d1^z_88{BT0t0{n=SNOG>lGkRV-T3DX6Hg)rQKr2k7^~>%y%aa+ znZ>wWOKj|%4`g=!?q7^VGr_3A?M7?VH#lk)F7oj<73`YgN`j0ne(wbqE?t;xxXK0+ zS*@JUg?2CT=X@d;S}uK706$BsSnOmO0M{)CUNzPa)1w?mvI-@tj^zniL2^xVfG$v< zxjuyc;1zo`9^9SL1 zM!3^tv)++BO!SWq^Sbv7*SE=Pb z{+muNuVj}+vzIA>vs*A;9+OwFg!>hs1#YCT!$Ymz)*XAZibk`8<=V&5=>h@lKDo!Dm?2f{7gyp zQE4qrCFA;}>{1hb%on3tshW9e=Z5vS)&&BQ6=eg@s-thtUJK(H6M6K)xc`^NrXj!^-fnPPnmGH-Fx10 zMZ!5rQzPD(vFG-LgOA38w2HFkyIdFTtlr%f&j2PzETZ=ApQrCJ5mcyoUP@|AxV-iH zp%vN+X|-bXBTzg13T>mjHCI%@OGp3nWeEbA_X~MpszK`PK3)iuuN^KDntU4~ zXnHlxnzkY$q&;D}^X@$UO{KP^u^_?`&^mCWRG(CQz3jmm+P&Up_XLh*TMs+N|Z8FmA91>T1R`J-0|2*?L-MVr3W`qtT?;$8HP3^I$JBwDd$; zq<~d3ojwhSKKhbNG47+#c<%_-RE7(0cbrz|ZtX@p0$cqZTo9+;H{X)1i$(AE^3IC^ z{BLuf#IdIZpdhr`-o-y?A)0-PT`WIX3Z;*{y)&S1s#`U+`0;m0Agvl0NziQ;{ z143u2Q>*S>dVbk?RBn45loglRr~kx{iy<)yM-y?tQ^CdPNFK)u8tnQTz3w)I{PtZ~ zawg87CQwx}^P?15!WkI0x%4PaYy zkIkNXZ-^fj&*uF$&37Ds{s#y3Z{ABDO!P7p6Hmmt2P3$MP)bz($bA%DmodK3OIn?o0)SPcFFe~(vel;M;Y(2ohvn>WH;O(?ZOC;=>&3OuClWIt4^ znCHqyc$6v;_%pLOE6;G3|ISItr?pCqVuejXo4J3ydy4ta++dku$Y8WzbPKD|828K8 z#tQ4bFE@@K6&nN4l*Y>s0`cAKdV&dey-2TP0Dc+Oj97Fyn1|Rfzw-9~#@GL;3tp#{ zEOk?I(H~_7ebCIi82sc-)1WZ*qESwfIl_gAHC8SWr_qR#ZL}7U72o~5EyU53Qm5wg zx{dvV;Ia8Mp`K>)Q&9y6$JlJ7_KUlBp4b$r_bSH;S7R3|FN$U$_Cv;1CV7whj$;Ns zKe*s`V=yOS?nGQxly_|ZviH-vP{8@q@i=SLT+kcoG(zHwbOs~ zZ0Lp_nK=U6NdVF}(@k5nP#|)~7tA(U-%wqISpev5<22$&d#;!JvX*mht*>YwUzxk) z(BBEt1#&%nGt!wcVU#RzR;`+W{kYCOpbx$zmih*cXMs@^PMe9jwiO%|a@3*7&$xni zM@-)T!Mqfp7O)WcoxZw&UKBqyspOgLcPh!4{Bb=$OBJ zvg&#HN10elh)wEaV=i^%W8#xRu-YfshlTwRzT0mY>L1Fimf?$XONT<7zdGvUqHh_L z;9p}@B)lWupnIh}=+ZGZ-{_BSwKa1aak*B4aHCpD0FU{JdV-09@kB5-`$}VEgb!U7 zI!s~B6!P`$KOKX}dYTA%a~CBc2NzrJ;!4Z0KDmLfnT{9OS6O!jbypEJB!$xo2bbOA}TLIvkQj(}S% zu-QkYN{J>kM(bdokKoG{qv&H4=iV%5Ro&`!LiW~xUmi2V^e?FNTdnk#fvb;rWhc({ zbP?LeBljA~ot5Z3$kv{>^iZs~^z;5>?mcknA$=uwrRXmnIP6dZ+uS(vgvtl)>$-%T zF4?!N$vQOa)P6`;3G+!PnrlD*lNa3C+|_;@ zQBPjZ^6?Z25jcx7&WHot{@E4cFC>?UZ*=c+8*D%~iRP{D8<< z%?x9^hdc!~wH{9GQYefvX1MIYcuaN`Rlxq4()xz^+BqGPagyVOMC6reGr+HQt?u(W zs9OJZWRHnmX8`(3g0s!DwWo=D)Dc?~md})*@X9^0>Ze7@v~I=Tq7aT|X*h0M$uU9o z;~yZX?tc(|IE7aPqXvP^E~%BRnM5iM#&+)i9kcW+BaM}3zPaV#A}Exigcs6X;NmQH)n8N_r=SXQ;I*)u&-o`>;hvNRLLZp2Pt z?Rz2sH@!6cF}Pi_bg#+BE4&ED;~S^lYDp$1)>bU%wa_A=S59lnJOG&n83yhQTVTE& zEb1V+p*UQ1x1D7Jm>49UcigfyNC4*I32qvbe*#-@v^`V03wk^>%&D}suMIZCX@_w5 zd>bvx*x{ry?XM4;oHnxS7@X3&a5ozo20)1WDzF{;^*3pipiv0|FPOZAP1xi7t9TaN z<1-KG9^=yS>HgqtW5Sh}4+ZBXr7K55Jz4`f-m9hU#Vu~nd#!qx?HAFI7Ryn4UM>a> zbRmlupeX;chT>goj&z?N39cq`jDEmQw0!rI7OZ^l8}3mFaxl>;*;({~!w7=6eTC=? ziBmm-olGD8kAn!a-JvEjgU-XI?v~a3sef4UDL?=21>707T*$0=-kWJ9n zn9CsA94ID!EV-&ton%6JEZubP{piL@U~B!snr6g;>*#HZh)z&t|M~$|+}|cO!HJ+L zcI*S1xIl@<@jyFd3Ybk+UW6laDbqv(=V?_7-d@-U=r-I}MWq z?8TJ3%M^JT)b9l3idd{&*pO8!>+6X0PgHwZtZiYi%3x+!!{HYzdTn}wylAbqz*j&z zY=AUYi+Bd$pqzL}1rN>pwJ|FW2B(}Rsj26QYE`VAH`=+Z%My*iwu&-cB$wE6>|0Ck z^Yq^F0+7sCk!s6UNbtBxpGDEP<@ZkZa)!|oX&f^<$~<@^C#4k1?Z1W3WY``3ZYhi> zR3qaolfl=>oJjoyL)h&6f!tq!hfDW(hO-Hz{(7y#_NeOPD&02I#WWVdd!RiXAL3r? zq1!P;&*!G6iPoPQcR%~vpBDh%Do8_7*`#Y*jX#FUpgZ_4JdV;f^$gtAXAEp1m%~O8 zSt(4!@Grk45Ag*5xi6=k8sfzfcSgZM;d#A5ZXzQrH0AiaV~XQ+6#4xh4!2Ot$dj{` zNipS90axM+Yv?Q$gMG^67tDV+hEp$;k6`C7mgdyhMg%=GPM|JGh+-noBhp|{)b@Ps zAYt@U(uU{Gm{?J2Q!)WEJi?V3UEu165w(9 zQN+Cuyard`%qHokMSIIUzrsuH#mI5WC-7hpBCpO36|0=R40SC5KVFz4z74w5Gr4o!Zp5QX!9z5 za5mJbj9aYxlO=A%5Cn-d6puJ(eOUG+Uxcmeo%HP+c672kdMlZ6YPIzeb{&Xi`B(?g z!Sg+#`NrK|CbUs&a(W(Sca*~Ox8r~2M3>es-whX5M$2W8rJ~1=yekNU&)zA%LcWxG z_E@@J3)IS6erU&lO{PV{sliB^ z(`3TXANoWHUj-e_wZU!RkA)#NXhqnQBEtH6m1`3{@x9W+aXKH3g5-$5<+OvnvlsE~ zAwO2AgcJCQwcwqD_{tDejQW|wpa|i)HgCtjK!Qf)Wy!;W7Z}0`1}pr_4aGx!w4;16 ze)JPvzsPU*QM_N+BaP=vD-|1x*}r^;+Kp(EBOF`57m!}&i91e<2q#p|^^W5m|H5-k zDZi+RN#oLZ%kuF{t^P)#7&XkVy*Eu`aQ1=3B=TmgGgIvQ^vjK^3r+Vr6@9!l;pR6X zPG?fVqVCm!=T2s*60OJlf2}aV#$WWW@WOphO9c1?N+eX^$61AsN~>)4cn=X0+oSM_ zE^hoz_Bsj4f5%|2Ty{(#%K1hee!#yL%2G>S_324!RMk zc3E>LT#oKY%`XQxmNp+?pAcysunx9A@F_>H)ERTtcV)5}oa@IuSI^@7tQO5>DlT(>1o;cr2J-YI#IL`uoAi#kRUje(u)&3kItihOamwH&P5dQ?!K zL8L+QQ|_-7EfEBcn@lPFgvc>0hX9hdjEH`$*i|dPMgh^5Yolel#E-^X$oMgQWs8L*|L%-o8%Ea~NaKpJlp{ctIj}dY^ z;-Q$zJJaEL>*~yOrG<0dm0|!;`B=Iv0L*{7>s8`eZkS&s+rX>MHf`X*1t8*Cf`sE{ z3oux+ zy36*m=fk%{k-7I-5`hF%t)f*xsZCp%OW7xwz;IH6-nhrEiwmS`D?t+zbIg}odEC9- z$B)Ks1YQ73oUUNzH8LwnJ`JqXcYGLEu8q?bSzMAoG#@8pRFF0`aMQHkeSjPc-kqLhI3PrnQ^o^Rq>`_2KN zL*ksJx=RrGzxTpYXfdTGAN~ex^^l(dGRN$cz0}Z+8KQ;!D7>kjS~GJteaGMv4SXVb^EV zcD<4a{_|e71E0`u~{=2FSF2UT>8*3!FUwS^&oTskn ztEH9hbf3I8ci6Tv#)u3f{cPA?%L~`s-JR*dBbHaPuO7g*_6{MSJj}{TLcX|{=R6Rz z>?p_Y5iiya*KgTIt|Yq!2b{Zpy`e49d-_vq!%QsIx`*YzAyX5C(0F{sU({r`U; z9x(l&)11rqc&+`rP*%(POXt$;Z`JN&o_{y(UtbYs6lJEHv!M5&bNSNPS~_@1ZWG#w zIQ~xw|0M8wYI+(fDk_HXBV@B^$JEK=U%yc5bCowajA)Co|Gd!AHq@%P?G*n10M^!C A2LJ#7 literal 0 HcmV?d00001 diff --git a/custom-editor-sample/exampleFiles/example.pawDraw b/custom-editor-sample/exampleFiles/example.pawDraw new file mode 100644 index 0000000000000000000000000000000000000000..941ea9c56fe57dcc14c1c451952245c12ef84458 GIT binary patch literal 10199 zcmb7qbx<6^*X=G2S=?=LcXtgIAcRE|B)Bc^?gUwa2Y0vNt^oop9%Km`+zA#W5bW`N zzxTaY@6UIpYO1TId#dluJ-6?<-Or298vs02r8i0dAP@jhdAR`3D}V?9Dl!TR3Nq@; z4HXp?4IPAm{sP=ruP{OQxC8|FxcK;lBvhn?L=?pM_+)fs6x7r-G&F>y^o;aiMk+83 z82B;_9St1^0|N(4gii$i|HktG03QP|0^~#n(gTq2fyns4=Rp7!002P$ubKW|0FjVU zUS^2#ybQqj&lA_Bcj6na^X=tCEuv7ZiJwq3A_Z9#QW4*UT#sJ{KU-?l-W%G`BA`H7 ze0+SCd=;%*_3i z@D{P%evHb~b+#qfLYVeR79pTUlNy!FdtUCjir)Ao2Lf-}j;d@R;(u}sLc`#qrCFtR zzb|v<%Ji;`5o2p4+4tA4NZlmgS((wnNj5Vi)HK49^Ty= z?f6RBM!kPq*bloaEN1nuNP93ToFSXG3l8Z=QgajjMBIk>ecbYgihJz4Nu&Hy)t)#g zKeyJC81WCMv?f1Nl>xqFS3P=20?mMKXF843kamPNwiSOrxG;);^6bJyeC(N8N06~bPDTF!?Bv4j z;s%{MC!q2T@EvEyuamNF@4t?E-Rop?hZb#hBhU3XWskK>U(YP;g5fJ!Q)C0P?~?1G z{5wj==Q%C)?T1}Be7nvr4i%EQslR)ajkiq{oY{d}b`kqJvJ)M!#%Zp!$DVbk-lFqo zKr2tBWS~Gdv}Nt}mGN$^#GBMXHJ^z-fnsPDioNARb*U}$`DDHG7 zT#wuyClb8S@seb@aAjHDsZoAVJp;f=TxvzfL~+Gdksq~z1Vyh(mb)k~&(!}~yOxbt z>gY-MR7fa`Xem#va{1kf67Q@Z*z4y(7fjQRi?%K(IM)yAT9n;c-lxYKCYl?w7!#HS z5MCN{M!@$!&~b5C_m&`>%&*RuCkx~IQu|&d@|74<0@VIv6B07;|267``ABH!|7{cU zf7$d8SzcwA_BE1MC}XA7Sudlh7p6zYM|bAIv_}TA0T~|W&aNOm9KD57Q{I~GB9>q9 z@EBn!EY!uufVqV1^QHvlibPe;&qo>(*Bq`t%ZoJKq5U*zY5PQi?#C5nbCdb6KYnz( z;2cHKJA6ycy?fOu#d>TBInK0ou%hDb!C9Bf+_&5!E03BslNFQ7EhDZ@)`I;qmVCqU ztIfAQGzMf!EiCY22@@Uwh=PRt@<;y19AqF83O)c84Ud43mWY@aokaG3M>8N2aCqC5 zPeNT?Bc*xpU-=WIy249)?kJZ9k$~yn)mz7XdV0dw!z@Br@+6Wjtza$1Q{C0o)qA=U zv*Q2K@wB>Sk}5NUu()=9ELcC#_}8-e3jzrby<%6sOe9e8d6|YXbABVltx@kiJIKh$ zE#npe5B_8MSi2aRh5T?iUZYZP2v)GPHaS;N*GO{uo-|I6tWbO&j%UE$(R9tf_q+Ia zhf;OIK^{#IZo0R3;2Mis%xXX)tK!e?0tsUdtQmeSd^Oa13_2(V_;u^{YU;&s@}JZD zZ(GqLoAkqBJn!sGN4?=q3ib+%I5Q4^&^D5UU~CO0bnBziF>`Kgo8t}M@B}b zZtAtVld_!D>>cB5ijM8kW^pMwDElFIr?>{qpdSDFn+CTbF{qla*$a^QK3Lc|i z_FdDYrv4@;xOqKw;WEPX$MH9&%Ef@zpktOjx|HlK{nT^*Y=~e-gyDu zQ_ldY;Etg^<**>WM$41$Rx)7<6eGUMMB1f4a)w?8{rXjvfJs+kyL>^cT;V}F^y7vs z$vp}X)5yc-qpg;8t3_V_5osT9BaUji3`b5W=EVcOih}5abbRNcz(#h&P#1GQ99+#UqlHPbws)W#ARi3Y}qmt!WUf?c+Fczo(YR02rG& zUA(qp`{yY%aHVfB(;d9*Xp~aWwaeAVflZ$bZx>F%cG5VCa-0Ujb+^bmgf&NSb4|w*` z{}63@H4?nq=gN6+&NN>`vvfF%q{we7=~0>zWsWr@e+eOiS5ofgl*w=gyWD?E52Ya$ zf5|q?!yR}>UlwzW3@aUsv+f{KVb2`Lht|lVCuDd+|!GeC}MCc`G7qMv`YgUOF4sXeMm^IKANv zOhEKw|6PMrmyW7Zi`X^g>>KXVFZVm{uPa>P&JDgH+v~HXD;mT<>IQ=ApzXF1B1s1f z8;Q=aBT_~^LzmAmNPZvhcH8eR9yO3lc8-w+);Y9Bvi^%*MCVgUAecy510z%|(MJ7M5BA`?t zM~_KjfB%M!%nB_?mlF$RY&Wp#ji$$6?L+nGS5%37mtR{*$;v;pZ1+B0)4EjQXe^cD zhxexLCFoa{1KY}+*uD^!pBK*a_j|Ixc{(||+aq-`YEKIOb5loPg7(O=CE{n^LjK*Y ze63r0`#XW5e?&%7Ys!W0r^os0_0PtX_Kih6{JRvK0Zjg|^L3mwg-=l zd16m{KZ{nB6&0`7e}izN z+~r~nv+57!FXJSPK^CC|d!!9g}8#d`;F( z4=S=U6TT%!(Z!DEwyc+|ENiJI2H5D!wXj2_eG6@sIO>5k^d66sI+zB(*?#?ZXU*5Yfuzjy%_Co@3rb4L-@V1 zm{=WE!VpvIxi&r?ekBg__$lTJQn!*1W7?7JDiX0v`#R;>T8qO9#qt+T6JmYr=I{hR zJY~duxUo99wZwT*@sC93V}-VFeq_JAh$@Jr1>`KJmhBaMksW0|sVpFW5VzFC_)A=Y z+u-XCQ(56kxh#Xdbu9~Q()S(!GD@*-xv15-L0_4G^x|b1x5uZTG!-6_TBDZjO22lD zo&g2~{8#6A0kjUNcIx3heCj&q1G9xw61qdX!yP_Th#uY`9t+hcvx*t8&I)4Y2VBmo zj|zrjhaTP{ndI1eEBM2nHaND-E=#%$_ofm8V9>mqHoL)AYA%J|&FG=F(Tt&fFkbxO z>`swUW`rm6SmF3!t$$%S%1wYqqpx`qe!9L~v!7k{TlOT3RZisA>w&c~&M}J$CQk0g z%0O7HGKmqbQd?r8U9RiNi!{!>oVjWT2&g=jztZ6hXli?`V2mx;sF>u80<|wU-c#To zQQAQfSlV(PGm(f)T9{{MB6fO$!OB5AUz!X1ESdPMD$?V+U*sEdGoycmebt7Fm{f#D zqrX~pD|J0vig2x<-p)cW)MvozTG0ib;Na+`*yHeBO$8`_IA#is$X%HtJA65@R$SJ9 z?r@rHd*2}b0c;x%b1-ifQQwztuA@Jm`{uP)7==IJSe7!)z4f^>&&Y-fhgDEP7-`=* zvFzV6-!nj9487n?3r>^^vIM;S*m>4Yg*a|*u=JvxPUKad-EQU3j~01vXCBb!nh#NA z{#lo(OdK~gPyJ1Yc^7?OUxX8nZ*G09mKzW1{%2CsaoDyP6LTu?xCWi((_4wdXy>y@ zHQUbJ;b5b#5Drz>D-iOx5lzK@biest4u_w()4)qjov|}5%s(R@c@#~w1I^|2b)=Da zz?Qaz#^?)J*82OzOx%H9BP{-+Udib43yJCU!5Yj(55tS)^kR0fA+5G>d9({)NWt{+ zt7AzHHOsfZ71P_d4fTB%BR3_Fbo^%*em~1NS`jxchp#F5DC2Y`8yiWvQhKoks6s2F zcGaBsd|Cn~<+pECVS!Cq>6@;Vfk(tC%ygO#<7DUuqL0Q0sPm&W)o3yOL*AEsHC%fI z+fXN0Ia21-ctkAtMP#)in)fQ<~VL|;sODvslO)a4;JhF#hLdpH+w~S z^QnFOG$DtRwkaApZDVOn?`h+f9!YAsvyI0OO?HVLV(ZruU5c8)9J0g-KQ)&mW_)x~ zXQeoxe|~QB?XUhUge9_ZbW{@f%xh@2ZK@~B2Uccz&NCZI#OC}X5(?CT?C zIMb02FOnfeX1#w1jdof*ll_sC(`KPIb9fKI@65fr*OKA*n&%RH43Wa`@!NT=lHpl@Vr0R;(egXM=ay{(pO;I|ejGCH=y?eL(fV)MmoFnV|*NnB%(VTdi#Gix$=h=bgWX? z!ZlcLeqaC+}j2VA{7yqGfg*fo14I;Dlti^5eHsMZLSqQ zQHQg4u9+pkum`c)gdx2@HgP862_IJxDxPhAGn8avM3;pytA66c`>%QIqTR*$s&Cwo zHvS=gDd{m#H$YYzk0fTyDTIHtym9$946jg~KE|6*2(sPB5++)_q_C4@rYvy~bhAJ| z!#z{_pewhUr523Rrt*X>xu50qy7Qspt0f77x%t-lLOmd$U{CLzIaF zZ9M0L#l6|>n4Nh}vu8UY`6ke3fZ+ZI2N2?-f#0{@x6*LhU$2KB6lSYH!q3~=T#Zu2 zs2gyZ^>1kTnhB_#0!g|TT=W*)29a`T-ol?=GVZ|4Ildelkf;#f1!HIv`H@}F;<{h- zYvPvnC4DHfY}SHn%UkL%%k;{0uT1|Ix{4(+%;eq(&W;e7`lp1dwvLzcv&UV_PuU#0g()4NE|T!+IjUO9IY~_&7NP}d+CzjC z*VMe-^-#E&#Yk;L9J!dDLqIiGo{R^ZNqRQ(KeJBIwwf%-S}j>aXJiq!Zp7R=wL?8gW^R>fZCo!I z`L$UdCEMb%P^hT{MT}ivY^yo0t*kXsI1dLZ>Y&BAxIyJzZ8$FX^)UAhI&}{=>fx0O zm8F0U`gz6N5O{Cr$Ss?2IVo+Gpo-BwA+bVlj}~q&BFJ?@rm)1*82V8R)YwfRmo7HG z*BvC$+McZDXnE@0Umdej>9v{v*sUiMz^Yj&-&4KZ`l$X0_){=nEnMsj4)mChbiY<< zdIpr$%x#3dEDjVc*|&)d!Ky7lw6wus^qdpTF=8ui+K)n12o>I>il_Xe{1>glg7;EL zdI9qPsV@Nm_;h@75HnZ2(4+?1!v2}fbKd_cUdZ5K2naq!tP-kh=7(%i-eJGqkS5*3 z3;!c89?LCu`z^AKcMmt?f{G3W123u%1|oN{O^EqYj#AkC{Vk%qKO8s7#rKw{{|+Pr zZ0FPJeYK%K7(q2aiUy+L4c!yW=(1@X^Vl;!&;eX~_O2$6z)~VfOvj~Vby!acPiVq+ z$Da~0@Z>=^Fl;#(h>X`S+{K+&USU~tt~=_VH>Ei0%0P}Jf8hZ#l~-Ue!BlQ~1y0g^ z+HD+AO}4yXg6NxUsNb)AOMYoiqo$2nnc21J0Bp7J=t49QZ&V){|45kXeeRW*qWd3j z5U-f*Rlr?jxZ+~H#A+=-KQ1!%(q!;sUG<5{xsjk^b5E&DP(S;!tI%H4z|B8nzu&pn=l>P8{7q>w)nSTkng-ZBwAl%3Hf)2P(y6j`P6{{PymFQ-2}hU-5=ZWK4Q%bGR}P+mrR9(G@7K$gEP zBh892U@MwUA>rSPS1#C{@_mfw-*^gni2dB55`bof8eqLa!j*$vOZKT4?Wfb2<<*ve z`d^@LE%P5MA*lb6#mwi_L4)Qx-c_L8`ON<9m$YU!-6I@vw%|TlHra;1SX(n&cvkk^ zl6e-brv$yx_5~27a+GkCcdZSQ*$EPxFIE2C3bHD1AkFmn8{<6`u6S z^b86lDn4a6TL8?*2`ljGBs_R^KM_IH6PH>*me7%)JzS1Lqxj>s7BriK!mi z(+CLuF$`Lc>D3;+@(t&@Z8hr1hru?+2g$no1dt<}GrEnk8J-t!)2(i?3y4H5%*`v$$WeD12p zK1K{vS?8KKlUWva{6+R(f)rMMKQs5V4{4X|mUaS(yFHJZ;-o~ zP8K#`^04by8B*qkT~I;U(U8*l4?|*qkc>_8;1L~yl@?vl zWE7s`hRDW{QG^qbyQ;|x4$4Klb5lAqRM_kOX4)aSjqK7X!=i8dt{czilI7Jh?r(O- zYez5YK0n>{lL^CwcaL^sYxhe?3@0Lr5n+(b7K(x#>Yjx~pUFd{7=N#eGMH%9 z%@*xAS+}D(IN_RNh)eexT}t&aGJmnzgNBS`vued3wjI?ccivnV*B`+&M51EexXZ17 z;FlTpk#`SWZ*Qe4ojCTJt9m_-QhU`-9B3B%jM@0qWYgAE99b(IY)myS=Ttu-Q0mrh zEIk`RFy?IK8-Z+1IrMg#hjnfv2cjRIXNnp&zs0Wjsq+~y(Xwvp;7OutX+f&FUE-+z zM7Map11`XVi762y#x(;6fPtz(XgpEPdSfoHS1CUK%kUC=PmmJ2!_$LLKl`BESi$1* z^)t}RW-XrVqb!P|7caH_$KBm=cL$lR?QL!B-#ISB0_}p9grf0dB)v#Jb@0c}!$WpR zPbO=+bF6I}!D%QdBIl|Tj``SzL;z(L1i=`IKBxh*=IoO;KbvlTyl_DRJPlk^%-DL|`~aVO}bI~FtXi5U`=(hF`zh2c~Bsr(!n+iZs5<8m(`q_iV8Tf=Fvh>)wofy`C9_Z&IOW#Pu>V1adW&P3 zy=xALsb?UZ0+L4G=+(3l-o@KBG|Mq+A@ucUK2~$hD50gI>R;|wkXR2g=hDvpgddTL z`jOs%!E_-aS`LR8eVuOrDe9rM_dWI0tBkH^z#20)|3Y)$13kwG_~*L;V|-J0{ih;& z?0lcqUZSGDKO6}U%nDRnkNKOhLeFuD-^ZEhkkqm~8iG9sI*Q+d&j7xRssov%qCZ3n zv3o+SNO?avyIhQ z4K@)*6z_4ixS@P}<{Jhr$QVB11H!2D*W^|+=!j03NT7hS_uvRF{(3Eh1XkK57VAQ^ zg0p>ZB*etKQ&Bk+No7q9_g4bxQqQaZw%P+{$`;qx9X^@GibCC<0iY_|X1fgD!?yEN z9JI*{;*~8Pp%ARzpJ*+X8-F?0wy7NgRmCNaG^;c}iRIau2>bxAe)suaoNU)m;;D zjYS5kp_LXF=7}?_>vu&wP-4V0AR@>TIBx0 zZ*d40pv~ST#^M=S!j>~p!xN=40;iUM!64tPWGN=S{0PCX4p z?k9d&LJN1GIMlnss~nGTeXu6Cf>E+iMIFXl}t;d9+Njz}nE!=PC_f1>Yv}QR_xoWP-S%`N0 z5LuWY^IAV2V)co)2*%wB^Gi}v?5tGELqsjZA6vKAnj)v}HknN$}$(rp}-sr1)tSuEo3z9lyke zB`z?~Xdb7L60>dLDHim~b4#IkCaow=6xB|<^o=_%4)vW{=&Bb`P+&00tWY~$Qwa?U z>2`)>Ky~wK3yILVLZ7%9k#NppeO3Wgm}KIEZK_P+wa%oT#IPgRU>Sy91bZJJZrGFC?w3z&uAJP-^WVNxUvi zkBCbQR^lV^Vs8|@ezItGtEg#erg3@au#GdRNoM1Z{lWE}mpGalX0ljU)qjeW zY5KOx4{rzg?hv=LT3UK~e)8{VVi@t>h|&-a`8v%3pf@BXSc> zFx2y@hbIueG_y5g>@+NI%*UHs3=_w5`dbda00^8=?Mm7%Fi&6JdoVFaGeHPxoBs-# z@VJgNwz`e!sn!mW3Z2*wwkqfFhW>;|s2_To1VU`chh1}QXz&DtsScP(>kBg454lo>B_tkC_G=YW)gMuTlzm|ib` z_*x@Q@VFWulD6t#4&TG57S7UXRdTKTZ! zSjC2Bt*(sy8foJ%7kicZ>KTcVx{SQh^)ZD&*fUf*IcmUS9bmrzEcZ3}7w~?#LGMkjbq0 zbuCh;>{RRx8XO#yrpKj;R=^vIqyed`tG|2kX4e0B^ULo4i-P`dym&MI%PEGJy*@lb zT6$gxksJfR*?;@-%i#bSz%5OT4AxbpR%sBIJ+bQJBy-(j5Kd4T2NI_rRWvSve=569 zr3sRKdo9^}>5^zaQW0!J2^SiK7t6#@<>+S*o6E}%nHPU`LEotS5~vQZ3KRfK%Rs!7 zg3WNw<2K&yN{H}Vhz02L*DXf#!NNugvFnr^sdr?eG*2s3Czf9E2?2UHoR~oaRd$!3 zJA>H$@#FZ~H)D-8BtabOfs=*r=%FU14{f{;TsFlomUS_2x-o$nm0*fv7xdh@O z7Ja^5(N*3|Z<-3sJ<`!HH|Dm#x+f&e^G0Jo(_av53b>5OYesYSJ@`eA)SGwh2nlEk zf`)y~!`ZZPG!+n{+nRjLf?EbvwpW;Oj$OR8j~cY95fhoI0h!fP9jF)#J(#g9p8Sb0 zm7JIi?FV-@(;aokF-xhTLiWkGb??+B3&5%DFY~i^z2vhO0L!>sQ-8p9T|}TnqFLz| zV8BWe>A5%&JssP8BFlWIo94>e7}loD=` + + + + + + + + + + + + + + + + + diff --git a/custom-editor-sample/media/paw-outline.svg b/custom-editor-sample/media/paw-outline.svg new file mode 100644 index 00000000..0227ff54 --- /dev/null +++ b/custom-editor-sample/media/paw-outline.svg @@ -0,0 +1,21 @@ + + + + + + + + diff --git a/custom-editor-sample/media/pawDraw.css b/custom-editor-sample/media/pawDraw.css new file mode 100644 index 00000000..faedcd24 --- /dev/null +++ b/custom-editor-sample/media/pawDraw.css @@ -0,0 +1,79 @@ +html, body { + height: 100%; +} + +.drawing-canvas { + width: 100%; + height: 100%; + flex: 1; + display: flex; + justify-content: center; + align-items: center; + background-repeat: repeat; + flex-direction: column; +} + +.drawing-controls { + position: fixed; + bottom: 0; + left: 0; + width: 100%; + display: flex; + justify-content: center; +} + +.drawing-controls button { + position: relative; + width: 100px; + height: 100px; + background: none; + border: none; + transform: translateY(30%); + transition: transform 0.1s linear; + outline: none; +} + +.drawing-controls button.active, +.drawing-controls button:hover { + transform: translateY(10%); +} + +.drawing-controls button:before, +.drawing-controls button:after { + display: block; + content: ''; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +.drawing-controls button:before { + -webkit-mask: url("./paw-color.svg") no-repeat 50% 50%; +} + +.drawing-controls button:after { + background-color: #111; + -webkit-mask: url("./paw-outline.svg") no-repeat 50% 50%; +} + +.drawing-controls button.black:before { + background-color: #333; +} + +.drawing-controls button.white:before { + background-color: white; +} + +.drawing-controls button.red:before { + background-color: red; +} + +.drawing-controls button.green:before { + background-color: green; +} + +.drawing-controls button.blue:before { + background-color: blue; +} \ No newline at end of file diff --git a/custom-editor-sample/media/pawDraw.js b/custom-editor-sample/media/pawDraw.js new file mode 100644 index 00000000..bfece22f --- /dev/null +++ b/custom-editor-sample/media/pawDraw.js @@ -0,0 +1,231 @@ +// @ts-check + +// This script is run within the webview itself +(function () { + // @ts-ignore + const vscode = acquireVsCodeApi(); + + /** + * A drawn line. + */ + class Stroke { + constructor(/** @type {string} */ color, /** @type {Array<[number, number]> | undefined} */ stroke) { + this.color = color; + /** @type {Array<[number, number]>} */ + this.stroke = stroke || []; + } + + addPoint(/** @type {number} */ x, /** @type {number} */ y) { + this.stroke.push([x, y]) + } + } + + /** + * @param {Uint8Array} initialContent + * @return {Promise} + */ + async function loadImageFromData(initialContent) { + const blob = new Blob([initialContent], { 'type': 'image/png' }); + const url = URL.createObjectURL(blob); + try { + const img = document.createElement('img'); + img.crossOrigin = 'anonymous'; + img.src = url; + await new Promise((resolve, reject) => { + img.onload = resolve; + img.onerror = reject; + }); + return img; + } finally { + URL.revokeObjectURL(url); + } + } + + class PawDrawEditor { + constructor( /** @type {HTMLElement} */ parent) { + this.ready = false; + + this.drawingColor = 'black'; + + /** @type {Array} */ + this.strokes = []; + + /** @type {Stroke | undefined} */ + this.currentStroke = undefined; + + this._initElements(parent); + } + + addPoint(/** @type {number} */ x, /** @type {number} */ y) { + if (this.currentStroke) { + this.currentStroke.addPoint(x, y) + } + } + + beginStoke(/** @type {string} */ color) { + this.currentStroke = new Stroke(color); + this.strokes.push(this.currentStroke); + } + + endStroke() { + const previous = this.currentStroke; + this.currentStroke = undefined; + return previous; + } + + _initElements(/** @type {HTMLElement} */ parent) { + const colorButtons = /** @type {NodeListOf} */ (document.querySelectorAll('.drawing-controls button')); + for (const colorButton of colorButtons) { + colorButton.addEventListener('click', e => { + e.stopPropagation(); + colorButtons.forEach(button => button.classList.remove('active')); + colorButton.classList.add('active'); + this.drawingColor = colorButton.dataset['color']; + }); + } + + this.wrapper = document.createElement('div'); + this.wrapper.style.position = 'relative'; + parent.append(this.wrapper); + + this.initialCanvas = document.createElement('canvas'); + this.initialCtx = this.initialCanvas.getContext('2d'); + this.wrapper.append(this.initialCanvas); + + this.drawingCanvas = document.createElement('canvas'); + this.drawingCanvas.style.position = 'absolute'; + this.drawingCanvas.style.top = '0'; + this.drawingCanvas.style.left = '0'; + this.drawingCtx = this.drawingCanvas.getContext('2d'); + this.wrapper.append(this.drawingCanvas); + + let isDrawing = false + + parent.addEventListener('mousedown', () => { + if (!this.ready) { + return; + } + + this.beginStoke(this.drawingColor); + this.drawingCtx.strokeStyle = this.drawingColor; + + isDrawing = true; + document.body.classList.add('isDrawing'); + this.drawingCtx.beginPath(); + }); + + document.body.addEventListener('mouseup', async () => { + if (!isDrawing || !this.ready) { + return; + } + + isDrawing = false; + document.body.classList.remove('isDrawing'); + this.drawingCtx.closePath(); + + const edit = this.endStroke(); + + if (edit.stroke.length) { + vscode.postMessage({ + type: 'stroke', + color: edit.color, + stroke: edit.stroke, + }); + } + }); + + parent.addEventListener('mousemove', e => { + if (!isDrawing || !this.ready) { + return; + } + const rect = this.wrapper.getBoundingClientRect(); + const x = e.clientX - rect.left; + const y = e.clientY - rect.top; + this.drawingCtx.lineTo(x, y); + this.drawingCtx.stroke(); + this.addPoint(x, y); + }); + } + + _redraw() { + this.drawingCtx.clearRect(0, 0, this.drawingCanvas.width, this.drawingCanvas.height); + for (const stroke of this.strokes) { + this.drawingCtx.strokeStyle = stroke.color; + this.drawingCtx.beginPath(); + for (const [x, y] of stroke.stroke) { + this.drawingCtx.lineTo(x, y); + } + this.drawingCtx.stroke(); + this.drawingCtx.closePath(); + } + } + + /** + * @param {Uint8Array | undefined} data + * @param {Array | undefined} strokes + */ + async reset(data, strokes = []) { + if (data) { + const img = await loadImageFromData(data); + this.initialCanvas.width = this.drawingCanvas.width = img.naturalWidth; + this.initialCanvas.height = this.drawingCanvas.height = img.naturalHeight; + this.initialCtx.drawImage(img, 0, 0); + this.ready = true; + } + + this.strokes = strokes; + this._redraw(); + } + + /** @return {Promise} */ + async getImageData() { + const outCanvas = document.createElement('canvas'); + outCanvas.width = this.drawingCanvas.width; + outCanvas.height = this.drawingCanvas.height; + + const outCtx = outCanvas.getContext('2d'); + outCtx.drawImage(this.initialCanvas, 0, 0); + outCtx.drawImage(this.drawingCanvas, 0, 0); + + const blob = await new Promise(resolve => { + outCanvas.toBlob(resolve, 'image/jpeg') + }); + + return new Uint8Array(await blob.arrayBuffer()); + } + } + + const editor = new PawDrawEditor(document.querySelector('.drawing-canvas')); + + // Handle messages from the extension + window.addEventListener('message', async e => { + const { type, body, requestId } = e.data; + switch (type) { + case 'init': + { + // Load the initial image into the canvas. + const data = new Uint8Array(body.value.data); + await editor.reset(data); + return; + } + case 'update': + { + const data = body.content ? new Uint8Array(body.content.data) : undefined;; + const strokes = body.edits.map(edit => new Stroke(edit.color, edit.stroke)); + await editor.reset(data, strokes) + return; + } + case 'getFileData': + { + // Get the image data for the canvas and post it back to the extension. + editor.getImageData().then(data => { + vscode.postMessage({ type: 'response', requestId, body: data }); + }); + return; + } + } + }); + + // Signal to VS Code that the webview is initialized. + vscode.postMessage({ type: 'ready' }); +}()); diff --git a/custom-editor-sample/package.json b/custom-editor-sample/package.json index 804aa8a0..7a97a4ce 100644 --- a/custom-editor-sample/package.json +++ b/custom-editor-sample/package.json @@ -12,7 +12,8 @@ "Other" ], "activationEvents": [ - "onCustomEditor:catCustoms.catScratch" + "onCustomEditor:catCustoms.catScratch", + "onCustomEditor:catCustoms.pawDraw" ], "repository": { "type": "git", @@ -29,6 +30,15 @@ "filenamePattern": "*.cscratch" } ] + }, + { + "viewType": "catCustoms.pawDraw", + "displayName": "Paw Draw", + "selector": [ + { + "filenamePattern": "*.pawdraw" + } + ] } ] }, diff --git a/custom-editor-sample/src/dispose.ts b/custom-editor-sample/src/dispose.ts new file mode 100644 index 00000000..5bf917ae --- /dev/null +++ b/custom-editor-sample/src/dispose.ts @@ -0,0 +1,37 @@ +import * as vscode from 'vscode'; + +export function disposeAll(disposables: vscode.Disposable[]) { + while (disposables.length) { + const item = disposables.pop(); + if (item) { + item.dispose(); + } + } +} + +export abstract class Disposable { + private _isDisposed = false; + + protected _disposables: vscode.Disposable[] = []; + + public dispose(): any { + if (this._isDisposed) { + return; + } + this._isDisposed = true; + disposeAll(this._disposables); + } + + protected _register(value: T): T { + if (this._isDisposed) { + value.dispose(); + } else { + this._disposables.push(value); + } + return value; + } + + protected get isDisposed() { + return this._isDisposed; + } +} \ No newline at end of file diff --git a/custom-editor-sample/src/extension.ts b/custom-editor-sample/src/extension.ts index d4f5e158..fcd7d831 100644 --- a/custom-editor-sample/src/extension.ts +++ b/custom-editor-sample/src/extension.ts @@ -1,7 +1,12 @@ import * as vscode from 'vscode'; import { CatScratchEditorProvider } from './catScratchEditor'; +import { PawDrawEditorProvider } from './pawDrawEditor'; export function activate(context: vscode.ExtensionContext) { - // Register our custom editor provider + // Register our custom editor providers context.subscriptions.push(CatScratchEditorProvider.register(context)); + + if (+vscode.version.match(/1\.(\d+)/)![1] >= 45) { + context.subscriptions.push(PawDrawEditorProvider.register(context)); + } } diff --git a/custom-editor-sample/src/pawDrawEditor.ts b/custom-editor-sample/src/pawDrawEditor.ts new file mode 100644 index 00000000..dcd1b52a --- /dev/null +++ b/custom-editor-sample/src/pawDrawEditor.ts @@ -0,0 +1,416 @@ +import * as path from 'path'; +import * as vscode from 'vscode'; +import { getNonce } from './util'; +import { Disposable, disposeAll } from './dispose'; + +/** + * Define the type of edits used in paw draw files. + */ +interface PawDrawEdit { + readonly color: string; + readonly stroke: ReadonlyArray<[number, number]>; +} + +interface PawDrawDocumentDelegate { + getFileData(): Promise; +} + +/** + * Define the document (the data model) used for paw draw files. + */ +class PawDrawDocument extends Disposable implements vscode.CustomDocument { + + static async create( + uri: vscode.Uri, + backupId: string | undefined, + delegate: PawDrawDocumentDelegate, + ): Promise> { + // If we have a backup, read that. Otherwise read the resource from the workspace + const dataFile = typeof backupId === 'string' ? vscode.Uri.parse(backupId) : uri; + const fileData = await vscode.workspace.fs.readFile(dataFile); + return new PawDrawDocument(uri, fileData, delegate); + } + + private readonly _uri: vscode.Uri; + + private _documentData: Uint8Array; + private _edits: Array = []; + private _savedEdits: Array = []; + + private readonly _delegate: PawDrawDocumentDelegate; + + private constructor( + uri: vscode.Uri, + initialContent: Uint8Array, + delegate: PawDrawDocumentDelegate + ) { + super(); + this._uri = uri; + this._documentData = initialContent; + this._delegate = delegate; + } + + public get uri() { return this._uri; } + + public get documentData(): Uint8Array { return this._documentData; } + + private readonly _onDidDispose = this._register(new vscode.EventEmitter()); + /** + * Fired when the document is disposed of. + */ + public readonly onDidDispose = this._onDidDispose.event; + + private readonly _onDidChangeDocument = this._register(new vscode.EventEmitter<{ + readonly content?: Uint8Array; + readonly edits: readonly PawDrawEdit[]; + }>()); + /** + * Fired to notify webviews that the document has changed. + */ + public readonly onDidChangeContent = this._onDidChangeDocument.event; + + private readonly _onDidChange = this._register(new vscode.EventEmitter<{ + readonly label: string, + undo(): void, + redo(): void, + }>()); + /** + * Fired to tell VS Code that an edit has occured in the document. + * + * This updates the document's dirty indicator. + */ + public readonly onDidChange = this._onDidChange.event; + + /** + * Called by VS Code when there are no more references to the document. + * + * This happens when all editors for it have been closed. + */ + dispose(): void { + this._onDidDispose.fire(); + super.dispose(); + } + + /** + * Called when the user edits the document in a webview. + * + * This fires an event to notify VS Code that the document has been edited. + */ + makeEdit(edit: PawDrawEdit) { + this._edits.push(edit); + + this._onDidChange.fire({ + label: 'Stroke', + undo: async () => { + this._edits.pop(); + this._onDidChangeDocument.fire({ + edits: this._edits, + }); + }, + redo: async () => { + this._edits.push(edit); + this._onDidChangeDocument.fire({ + edits: this._edits, + }); + } + }); + } + + /** + * Called by VS Code when the user saves the document. + */ + async save(cancellation: vscode.CancellationToken): Promise { + await this.saveAs(this.uri, cancellation); + this._savedEdits = Array.from(this._edits); + } + + /** + * Called by VS Code when the user saves the document to a new location. + */ + async saveAs(targetResource: vscode.Uri, cancellation: vscode.CancellationToken): Promise { + const fileData = await this._delegate.getFileData(); + if (cancellation.isCancellationRequested) { + return; + } + await vscode.workspace.fs.writeFile(targetResource, fileData); + } + + /** + * Called by VS Code when the user calls `revert` on a document. + */ + async revert(_cancellation: vscode.CancellationToken): Promise { + const diskContent = await vscode.workspace.fs.readFile(this.uri); + this._documentData = diskContent; + this._edits = this._savedEdits; + this._onDidChangeDocument.fire({ + content: diskContent, + edits: this._edits, + }); + } + + /** + * Called by VS Code to backup the edited document. + * + * These backups are used to implement hot exit. + */ + async backup(destination: vscode.Uri, cancellation: vscode.CancellationToken): Promise { + await this.saveAs(destination, cancellation); + + return { + id: destination.toString(), + delete: async () => { + try { + await vscode.workspace.fs.delete(destination); + } catch { + // noop + } + } + }; + } +} + +/** + * Provider for paw draw editors. + * + * Paw draw editors are used for `.pawDraw` files, which are just `.png` files with a different file extension. + * + * This provider demonstrates: + * + * - How to implement a custom editor for binary files. + * - Setting up the initial webview for a custom editor. + * - Loading scripts and styles in a custom editor. + * - Communication between VS Code and the custom editor. + * - Using CustomDocuments to store information that is shared between multiple custom editors. + * - Implementing save, undo, redo, and revert. + * - Backing up a custom editor. + */ +export class PawDrawEditorProvider implements vscode.CustomEditorProvider { + + public static register(context: vscode.ExtensionContext): vscode.Disposable { + return vscode.window.registerCustomEditorProvider2( + PawDrawEditorProvider.viewType, + new PawDrawEditorProvider(context), + { + // For this demo extension, we enable `retainContextWhenHidden` which keeps the + // webview alive even when it is not visible. You should avoid using this setting + // unless is absolutely required as it does have memory overhead. + webviewOptions: { + retainContextWhenHidden: true, + }, + supportsMultipleEditorsPerDocument: false, + }); + } + + private static readonly viewType = 'catCustoms.pawDraw'; + + /** + * Tracks all known webviews + */ + private readonly webviews = new WebviewCollection(); + + constructor( + private readonly _context: vscode.ExtensionContext + ) { } + + //#region CustomEditorProvider + + async openCustomDocument( + uri: vscode.Uri, + openContext: { backupId?: string }, + _token: vscode.CancellationToken + ): Promise { + const document = await PawDrawDocument.create(uri, openContext.backupId, { + getFileData: async () => { + const webviewsForDocument: any = Array.from(this.webviews.get(document.uri)); + if (!webviewsForDocument.length) { + throw new Error('Could not find webview to save for'); + } + const panel = webviewsForDocument[0]; + const response = await this.postMessageWithResponse<{ data: number[] }>(panel, 'getFileData', {}); + return new Uint8Array(response.data); + } + }); + + const listeners: vscode.Disposable[] = []; + + listeners.push(document.onDidChange(e => { + // Tell VS Code that the document has been edited by the use. + this._onDidChangeCustomDocument.fire({ + document, + ...e, + }); + })); + + listeners.push(document.onDidChangeContent(e => { + // Update all webviews when the document changes + for (const webviewPanel of this.webviews.get(document.uri)) { + this.postMessage(webviewPanel, 'update', { + edits: e.edits, + content: e.content, + }); + } + })); + + document.onDidDispose(() => disposeAll(listeners)); + + return document; + } + + async resolveCustomEditor( + document: PawDrawDocument, + webviewPanel: vscode.WebviewPanel, + _token: vscode.CancellationToken + ): Promise { + // Add the webview to our internal set of active webviews + this.webviews.add(document.uri, webviewPanel); + + // Setup initial content for the webview + webviewPanel.webview.options = { + enableScripts: true, + }; + webviewPanel.webview.html = this.getHtmlForWebview(webviewPanel.webview); + + webviewPanel.webview.onDidReceiveMessage(e => this.onMessage(document, e)); + + // Wait for the webview to be properly ready before we init + webviewPanel.webview.onDidReceiveMessage(e => { + if (e.type === 'ready') { + this.postMessage(webviewPanel, 'init', { + value: document.documentData + }); + } + }); + } + + private readonly _onDidChangeCustomDocument = new vscode.EventEmitter>(); + public readonly onDidChangeCustomDocument = this._onDidChangeCustomDocument.event; + + public saveCustomDocument(document: PawDrawDocument, cancellation: vscode.CancellationToken): Thenable { + return document.save(cancellation); + } + + public saveCustomDocumentAs(document: PawDrawDocument, destination: vscode.Uri, cancellation: vscode.CancellationToken): Thenable { + return document.saveAs(destination, cancellation); + } + + public revertCustomDocument(document: PawDrawDocument, cancellation: vscode.CancellationToken): Thenable { + return document.revert(cancellation); + } + + public backupCustomDocument(document: PawDrawDocument, context: vscode.CustomDocumentBackupContext, cancellation: vscode.CancellationToken): Thenable { + return document.backup(context.destination, cancellation); + } + + //#endregion + + /** + * Get the static HTML used for in our editor's webviews. + */ + private getHtmlForWebview(webview: vscode.Webview): string { + // Local path to script and css for the webview + const scriptUri = webview.asWebviewUri(vscode.Uri.file( + path.join(this._context.extensionPath, 'media', 'pawDraw.js') + )); + const styleUri = webview.asWebviewUri(vscode.Uri.file( + path.join(this._context.extensionPath, 'media', 'pawDraw.css') + )); + + // Use a nonce to whitelist which scripts can be run + const nonce = getNonce(); + + return /* html */` + + + + + + + + + + + + + Paw Draw + + +

+ +
+ + + + + +
+ + + + `; + } + + private _requestId = 1; + private readonly _callbacks = new Map void>(); + + private postMessageWithResponse(panel: vscode.WebviewPanel, type: string, body: any): Promise { + const requestId = this._requestId++; + const p = new Promise(resolve => this._callbacks.set(requestId, resolve)); + panel.webview.postMessage({ type, requestId, body }); + return p; + } + + private postMessage(panel: vscode.WebviewPanel, type: string, body: any): void { + panel.webview.postMessage({ type, body }); + } + + private onMessage(document: PawDrawDocument, message: any) { + switch (message.type) { + case 'stroke': + document.makeEdit(message as PawDrawEdit); + return; + + case 'response': + const callback = this._callbacks.get(message.requestId); + callback?.(message.body); + return; + } + } +} + +/** + * Tracks all webviews. + */ +class WebviewCollection { + + private readonly _webviews = new Set<{ + readonly resource: string; + readonly webviewPanel: vscode.WebviewPanel; + }>(); + + /** + * Get all known webviews for a given uri. + */ + public *get(uri: vscode.Uri): Iterable { + const key = uri.toString(); + for (const entry of this._webviews) { + if (entry.resource === key) { + yield entry.webviewPanel; + } + } + } + + /** + * Add a new webview to the collection. + */ + public add(uri: vscode.Uri, webviewPanel: vscode.WebviewPanel) { + const entry = { resource: uri.toString(), webviewPanel }; + this._webviews.add(entry); + + webviewPanel.onDidDispose(() => { + this._webviews.delete(entry); + }); + } +} \ No newline at end of file diff --git a/custom-editor-sample/src/vscode.proposed.d.ts b/custom-editor-sample/src/vscode.proposed.d.ts new file mode 100644 index 00000000..2c74b800 --- /dev/null +++ b/custom-editor-sample/src/vscode.proposed.d.ts @@ -0,0 +1,2097 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +/** + * This is the place for API experiments and proposals. + * These API are NOT stable and subject to change. They are only available in the Insiders + * distribution and CANNOT be used in published extensions. + * + * To test these API in local environment: + * - Use Insiders release of VS Code. + * - Add `"enableProposedApi": true` to your package.json. + * - Copy this file to your project. + */ + +declare module 'vscode' { + + // #region auth provider: https://github.com/microsoft/vscode/issues/88309 + + export interface AuthenticationSession { + id: string; + getAccessToken(): Thenable; + account: { + displayName: string; + id: string; + }; + scopes: string[] + } + + /** + * An [event](#Event) which fires when an [AuthenticationProvider](#AuthenticationProvider) is added or removed. + */ + export interface AuthenticationProvidersChangeEvent { + /** + * The ids of the [authenticationProvider](#AuthenticationProvider)s that have been added. + */ + readonly added: string[]; + + /** + * The ids of the [authenticationProvider](#AuthenticationProvider)s that have been removed. + */ + readonly removed: string[]; + } + + /** + * An [event](#Event) which fires when an [AuthenticationSession](#AuthenticationSession) is added, removed, or changed. + */ + export interface AuthenticationSessionsChangeEvent { + /** + * The ids of the [AuthenticationSession](#AuthenticationSession)s that have been added. + */ + readonly added: string[]; + + /** + * The ids of the [AuthenticationSession](#AuthenticationSession)s that have been removed. + */ + readonly removed: string[]; + + /** + * The ids of the [AuthenticationSession](#AuthenticationSession)s that have been changed. + */ + readonly changed: string[]; + } + + /** + * **WARNING** When writing an AuthenticationProvider, `id` should be treated as part of your extension's + * API, changing it is a breaking change for all extensions relying on the provider. The id is + * treated case-sensitively. + */ + export interface AuthenticationProvider { + /** + * Used as an identifier for extensions trying to work with a particular + * provider: 'microsoft', 'github', etc. id must be unique, registering + * another provider with the same id will fail. + */ + readonly id: string; + readonly displayName: string; + + /** + * An [event](#Event) which fires when the array of sessions has changed, or data + * within a session has changed. + */ + readonly onDidChangeSessions: Event; + + /** + * Returns an array of current sessions. + */ + getSessions(): Thenable>; + + /** + * Prompts a user to login. + */ + login(scopes: string[]): Thenable; + logout(sessionId: string): Thenable; + } + + export namespace authentication { + export function registerAuthenticationProvider(provider: AuthenticationProvider): Disposable; + + /** + * Fires with the provider id that was registered or unregistered. + */ + export const onDidChangeAuthenticationProviders: Event; + + /** + * An array of the ids of authentication providers that are currently registered. + */ + export const providerIds: string[]; + + /** + * Get existing authentication sessions. Rejects if a provider with providerId is not + * registered, or if the user does not consent to sharing authentication information with + * the extension. + * @param providerId The id of the provider to use + * @param scopes A list of scopes representing the permissions requested. These are dependent on the authentication + * provider + */ + export function getSessions(providerId: string, scopes: string[]): Thenable; + + /** + * Prompt a user to login to create a new authenticaiton session. Rejects if a provider with + * providerId is not registered, or if the user does not consent to sharing authentication + * information with the extension. + * @param providerId The id of the provider to use + * @param scopes A list of scopes representing the permissions requested. These are dependent on the authentication + * provider + */ + export function login(providerId: string, scopes: string[]): Thenable; + + /** + * Logout of a specific session. + * @param providerId The id of the provider to use + * @param sessionId The session id to remove + * provider + */ + export function logout(providerId: string, sessionId: string): Thenable; + + /** + * An [event](#Event) which fires when the array of sessions has changed, or data + * within a session has changed for a provider. Fires with the ids of the providers + * that have had session data change. + */ + export const onDidChangeSessions: Event<{ [providerId: string]: AuthenticationSessionsChangeEvent }>; + } + + //#endregion + + //#region Alex - resolvers + + export interface RemoteAuthorityResolverContext { + resolveAttempt: number; + } + + export class ResolvedAuthority { + readonly host: string; + readonly port: number; + + constructor(host: string, port: number); + } + + export interface ResolvedOptions { + extensionHostEnv?: { [key: string]: string | null }; + } + + export interface TunnelOptions { + remoteAddress: { port: number, host: string }; + // The desired local port. If this port can't be used, then another will be chosen. + localAddressPort?: number; + label?: string; + } + + export interface TunnelDescription { + remoteAddress: { port: number, host: string }; + //The complete local address(ex. localhost:1234) + localAddress: { port: number, host: string } | string; + } + + export interface Tunnel extends TunnelDescription { + // Implementers of Tunnel should fire onDidDispose when dispose is called. + onDidDispose: Event; + dispose(): void; + } + + /** + * Used as part of the ResolverResult if the extension has any candidate, + * published, or forwarded ports. + */ + export interface TunnelInformation { + /** + * Tunnels that are detected by the extension. The remotePort is used for display purposes. + * The localAddress should be the complete local address (ex. localhost:1234) for connecting to the port. Tunnels provided through + * detected are read-only from the forwarded ports UI. + */ + environmentTunnels?: TunnelDescription[]; + + } + + export type ResolverResult = ResolvedAuthority & ResolvedOptions & TunnelInformation; + + export class RemoteAuthorityResolverError extends Error { + static NotAvailable(message?: string, handled?: boolean): RemoteAuthorityResolverError; + static TemporarilyNotAvailable(message?: string): RemoteAuthorityResolverError; + + constructor(message?: string); + } + + export interface RemoteAuthorityResolver { + resolve(authority: string, context: RemoteAuthorityResolverContext): ResolverResult | Thenable; + /** + * Can be optionally implemented if the extension can forward ports better than the core. + * When not implemented, the core will use its default forwarding logic. + * When implemented, the core will use this to forward ports. + */ + tunnelFactory?: (tunnelOptions: TunnelOptions) => Thenable | undefined; + + /** + * Provides filtering for candidate ports. + */ + showCandidatePort?: (host: string, port: number, detail: string) => Thenable; + } + + export namespace workspace { + /** + * Forwards a port. If the current resolver implements RemoteAuthorityResolver:forwardPort then that will be used to make the tunnel. + * By default, openTunnel only support localhost; however, RemoteAuthorityResolver:tunnelFactory can be used to support other ips. + * @param tunnelOptions The `localPort` is a suggestion only. If that port is not available another will be chosen. + */ + export function openTunnel(tunnelOptions: TunnelOptions): Thenable; + + /** + * Gets an array of the currently available tunnels. This does not include environment tunnels, only tunnels that have been created by the user. + * Note that these are of type TunnelDescription and cannot be disposed. + */ + export let tunnels: Thenable; + + /** + * Fired when the list of tunnels has changed. + */ + export const onDidChangeTunnels: Event; + } + + export interface ResourceLabelFormatter { + scheme: string; + authority?: string; + formatting: ResourceLabelFormatting; + } + + export interface ResourceLabelFormatting { + label: string; // myLabel:/${path} + // TODO@isi + // eslint-disable-next-line vscode-dts-literal-or-types + separator: '/' | '\\' | ''; + tildify?: boolean; + normalizeDriveLetter?: boolean; + workspaceSuffix?: string; + authorityPrefix?: string; + } + + export namespace workspace { + export function registerRemoteAuthorityResolver(authorityPrefix: string, resolver: RemoteAuthorityResolver): Disposable; + export function registerResourceLabelFormatter(formatter: ResourceLabelFormatter): Disposable; + } + + //#endregion + + //#region editor insets: https://github.com/microsoft/vscode/issues/85682 + + export interface WebviewEditorInset { + readonly editor: TextEditor; + readonly line: number; + readonly height: number; + readonly webview: Webview; + readonly onDidDispose: Event; + dispose(): void; + } + + export namespace window { + export function createWebviewTextEditorInset(editor: TextEditor, line: number, height: number, options?: WebviewOptions): WebviewEditorInset; + } + + //#endregion + + //#region read/write in chunks: https://github.com/microsoft/vscode/issues/84515 + + export interface FileSystemProvider { + open?(resource: Uri, options: { create: boolean }): number | Thenable; + close?(fd: number): void | Thenable; + read?(fd: number, pos: number, data: Uint8Array, offset: number, length: number): number | Thenable; + write?(fd: number, pos: number, data: Uint8Array, offset: number, length: number): number | Thenable; + } + + //#endregion + + //#region TextSearchProvider: https://github.com/microsoft/vscode/issues/59921 + + /** + * The parameters of a query for text search. + */ + export interface TextSearchQuery { + /** + * The text pattern to search for. + */ + pattern: string; + + /** + * Whether or not `pattern` should match multiple lines of text. + */ + isMultiline?: boolean; + + /** + * Whether or not `pattern` should be interpreted as a regular expression. + */ + isRegExp?: boolean; + + /** + * Whether or not the search should be case-sensitive. + */ + isCaseSensitive?: boolean; + + /** + * Whether or not to search for whole word matches only. + */ + isWordMatch?: boolean; + } + + /** + * A file glob pattern to match file paths against. + * TODO@roblou - merge this with the GlobPattern docs/definition in vscode.d.ts. + * @see [GlobPattern](#GlobPattern) + */ + export type GlobString = string; + + /** + * Options common to file and text search + */ + export interface SearchOptions { + /** + * The root folder to search within. + */ + folder: Uri; + + /** + * Files that match an `includes` glob pattern should be included in the search. + */ + includes: GlobString[]; + + /** + * Files that match an `excludes` glob pattern should be excluded from the search. + */ + excludes: GlobString[]; + + /** + * Whether external files that exclude files, like .gitignore, should be respected. + * See the vscode setting `"search.useIgnoreFiles"`. + */ + useIgnoreFiles: boolean; + + /** + * Whether symlinks should be followed while searching. + * See the vscode setting `"search.followSymlinks"`. + */ + followSymlinks: boolean; + + /** + * Whether global files that exclude files, like .gitignore, should be respected. + * See the vscode setting `"search.useGlobalIgnoreFiles"`. + */ + useGlobalIgnoreFiles: boolean; + } + + /** + * Options to specify the size of the result text preview. + * These options don't affect the size of the match itself, just the amount of preview text. + */ + export interface TextSearchPreviewOptions { + /** + * The maximum number of lines in the preview. + * Only search providers that support multiline search will ever return more than one line in the match. + */ + matchLines: number; + + /** + * The maximum number of characters included per line. + */ + charsPerLine: number; + } + + /** + * Options that apply to text search. + */ + export interface TextSearchOptions extends SearchOptions { + /** + * The maximum number of results to be returned. + */ + maxResults: number; + + /** + * Options to specify the size of the result text preview. + */ + previewOptions?: TextSearchPreviewOptions; + + /** + * Exclude files larger than `maxFileSize` in bytes. + */ + maxFileSize?: number; + + /** + * Interpret files using this encoding. + * See the vscode setting `"files.encoding"` + */ + encoding?: string; + + /** + * Number of lines of context to include before each match. + */ + beforeContext?: number; + + /** + * Number of lines of context to include after each match. + */ + afterContext?: number; + } + + /** + * Information collected when text search is complete. + */ + export interface TextSearchComplete { + /** + * Whether the search hit the limit on the maximum number of search results. + * `maxResults` on [`TextSearchOptions`](#TextSearchOptions) specifies the max number of results. + * - If exactly that number of matches exist, this should be false. + * - If `maxResults` matches are returned and more exist, this should be true. + * - If search hits an internal limit which is less than `maxResults`, this should be true. + */ + limitHit?: boolean; + } + + /** + * A preview of the text result. + */ + export interface TextSearchMatchPreview { + /** + * The matching lines of text, or a portion of the matching line that contains the match. + */ + text: string; + + /** + * The Range within `text` corresponding to the text of the match. + * The number of matches must match the TextSearchMatch's range property. + */ + matches: Range | Range[]; + } + + /** + * A match from a text search + */ + export interface TextSearchMatch { + /** + * The uri for the matching document. + */ + uri: Uri; + + /** + * The range of the match within the document, or multiple ranges for multiple matches. + */ + ranges: Range | Range[]; + + /** + * A preview of the text match. + */ + preview: TextSearchMatchPreview; + } + + /** + * A line of context surrounding a TextSearchMatch. + */ + export interface TextSearchContext { + /** + * The uri for the matching document. + */ + uri: Uri; + + /** + * One line of text. + * previewOptions.charsPerLine applies to this + */ + text: string; + + /** + * The line number of this line of context. + */ + lineNumber: number; + } + + export type TextSearchResult = TextSearchMatch | TextSearchContext; + + /** + * A TextSearchProvider provides search results for text results inside files in the workspace. + */ + export interface TextSearchProvider { + /** + * Provide results that match the given text pattern. + * @param query The parameters for this query. + * @param options A set of options to consider while searching. + * @param progress A progress callback that must be invoked for all results. + * @param token A cancellation token. + */ + provideTextSearchResults(query: TextSearchQuery, options: TextSearchOptions, progress: Progress, token: CancellationToken): ProviderResult; + } + + //#endregion + + //#region FileSearchProvider: https://github.com/microsoft/vscode/issues/73524 + + /** + * The parameters of a query for file search. + */ + export interface FileSearchQuery { + /** + * The search pattern to match against file paths. + */ + pattern: string; + } + + /** + * Options that apply to file search. + */ + export interface FileSearchOptions extends SearchOptions { + /** + * The maximum number of results to be returned. + */ + maxResults?: number; + + /** + * A CancellationToken that represents the session for this search query. If the provider chooses to, this object can be used as the key for a cache, + * and searches with the same session object can search the same cache. When the token is cancelled, the session is complete and the cache can be cleared. + */ + session?: CancellationToken; + } + + /** + * A FileSearchProvider provides search results for files in the given folder that match a query string. It can be invoked by quickopen or other extensions. + * + * A FileSearchProvider is the more powerful of two ways to implement file search in VS Code. Use a FileSearchProvider if you wish to search within a folder for + * all files that match the user's query. + * + * The FileSearchProvider will be invoked on every keypress in quickopen. When `workspace.findFiles` is called, it will be invoked with an empty query string, + * and in that case, every file in the folder should be returned. + */ + export interface FileSearchProvider { + /** + * Provide the set of files that match a certain file path pattern. + * @param query The parameters for this query. + * @param options A set of options to consider while searching files. + * @param token A cancellation token. + */ + provideFileSearchResults(query: FileSearchQuery, options: FileSearchOptions, token: CancellationToken): ProviderResult; + } + + export namespace workspace { + /** + * Register a search provider. + * + * Only one provider can be registered per scheme. + * + * @param scheme The provider will be invoked for workspace folders that have this file scheme. + * @param provider The provider. + * @return A [disposable](#Disposable) that unregisters this provider when being disposed. + */ + export function registerFileSearchProvider(scheme: string, provider: FileSearchProvider): Disposable; + + /** + * Register a text search provider. + * + * Only one provider can be registered per scheme. + * + * @param scheme The provider will be invoked for workspace folders that have this file scheme. + * @param provider The provider. + * @return A [disposable](#Disposable) that unregisters this provider when being disposed. + */ + export function registerTextSearchProvider(scheme: string, provider: TextSearchProvider): Disposable; + } + + //#endregion + + //#region findTextInFiles: https://github.com/microsoft/vscode/issues/59924 + + /** + * Options that can be set on a findTextInFiles search. + */ + export interface FindTextInFilesOptions { + /** + * A [glob pattern](#GlobPattern) that defines the files to search for. The glob pattern + * will be matched against the file paths of files relative to their workspace. Use a [relative pattern](#RelativePattern) + * to restrict the search results to a [workspace folder](#WorkspaceFolder). + */ + include?: GlobPattern; + + /** + * A [glob pattern](#GlobPattern) that defines files and folders to exclude. The glob pattern + * will be matched against the file paths of resulting matches relative to their workspace. When `undefined`, default excludes will + * apply. + */ + exclude?: GlobPattern; + + /** + * Whether to use the default and user-configured excludes. Defaults to true. + */ + useDefaultExcludes?: boolean; + + /** + * The maximum number of results to search for + */ + maxResults?: number; + + /** + * Whether external files that exclude files, like .gitignore, should be respected. + * See the vscode setting `"search.useIgnoreFiles"`. + */ + useIgnoreFiles?: boolean; + + /** + * Whether global files that exclude files, like .gitignore, should be respected. + * See the vscode setting `"search.useGlobalIgnoreFiles"`. + */ + useGlobalIgnoreFiles?: boolean; + + /** + * Whether symlinks should be followed while searching. + * See the vscode setting `"search.followSymlinks"`. + */ + followSymlinks?: boolean; + + /** + * Interpret files using this encoding. + * See the vscode setting `"files.encoding"` + */ + encoding?: string; + + /** + * Options to specify the size of the result text preview. + */ + previewOptions?: TextSearchPreviewOptions; + + /** + * Number of lines of context to include before each match. + */ + beforeContext?: number; + + /** + * Number of lines of context to include after each match. + */ + afterContext?: number; + } + + export namespace workspace { + /** + * Search text in files across all [workspace folders](#workspace.workspaceFolders) in the workspace. + * @param query The query parameters for the search - the search string, whether it's case-sensitive, or a regex, or matches whole words. + * @param callback A callback, called for each result + * @param token A token that can be used to signal cancellation to the underlying search engine. + * @return A thenable that resolves when the search is complete. + */ + export function findTextInFiles(query: TextSearchQuery, callback: (result: TextSearchResult) => void, token?: CancellationToken): Thenable; + + /** + * Search text in files across all [workspace folders](#workspace.workspaceFolders) in the workspace. + * @param query The query parameters for the search - the search string, whether it's case-sensitive, or a regex, or matches whole words. + * @param options An optional set of query options. Include and exclude patterns, maxResults, etc. + * @param callback A callback, called for each result + * @param token A token that can be used to signal cancellation to the underlying search engine. + * @return A thenable that resolves when the search is complete. + */ + export function findTextInFiles(query: TextSearchQuery, options: FindTextInFilesOptions, callback: (result: TextSearchResult) => void, token?: CancellationToken): Thenable; + } + + //#endregion + + //#region diff command: https://github.com/microsoft/vscode/issues/84899 + + /** + * The contiguous set of modified lines in a diff. + */ + export interface LineChange { + readonly originalStartLineNumber: number; + readonly originalEndLineNumber: number; + readonly modifiedStartLineNumber: number; + readonly modifiedEndLineNumber: number; + } + + export namespace commands { + + /** + * Registers a diff information command that can be invoked via a keyboard shortcut, + * a menu item, an action, or directly. + * + * Diff information commands are different from ordinary [commands](#commands.registerCommand) as + * they only execute when there is an active diff editor when the command is called, and the diff + * information has been computed. Also, the command handler of an editor command has access to + * the diff information. + * + * @param command A unique identifier for the command. + * @param callback A command handler function with access to the [diff information](#LineChange). + * @param thisArg The `this` context used when invoking the handler function. + * @return Disposable which unregisters this command on disposal. + */ + export function registerDiffInformationCommand(command: string, callback: (diff: LineChange[], ...args: any[]) => any, thisArg?: any): Disposable; + } + + //#endregion + + //#region file-decorations: https://github.com/microsoft/vscode/issues/54938 + + export class Decoration { + letter?: string; + title?: string; + color?: ThemeColor; + priority?: number; + bubble?: boolean; + } + + export interface DecorationProvider { + onDidChangeDecorations: Event; + provideDecoration(uri: Uri, token: CancellationToken): ProviderResult; + } + + export namespace window { + export function registerDecorationProvider(provider: DecorationProvider): Disposable; + } + + //#endregion + + //#region debug: https://github.com/microsoft/vscode/issues/88230 + + /** + * A DebugConfigurationProviderTriggerKind specifies when the `provideDebugConfigurations` method of a `DebugConfigurationProvider` is triggered. + * Currently there are two situations: to provide the initial debug configurations for a newly created launch.json or + * to provide dynamically generated debug configurations when the user asks for them through the UI (e.g. via the "Select and Start Debugging" command). + * A trigger kind is used when registering a `DebugConfigurationProvider` with #debug.registerDebugConfigurationProvider. + */ + export enum DebugConfigurationProviderTriggerKind { + /** + * `DebugConfigurationProvider.provideDebugConfigurations` is called to provide the initial debug configurations for a newly created launch.json. + */ + Initial = 1, + /** + * `DebugConfigurationProvider.provideDebugConfigurations` is called to provide dynamically generated debug configurations when the user asks for them through the UI (e.g. via the "Select and Start Debugging" command). + */ + Dynamic = 2 + } + + export namespace debug { + /** + * Register a [debug configuration provider](#DebugConfigurationProvider) for a specific debug type. + * The optional [triggerKind](#DebugConfigurationProviderTriggerKind) can be used to specify when the `provideDebugConfigurations` method of the provider is triggered. + * Currently two trigger kinds are possible: with the value `Initial` (or if no trigger kind argument is given) the `provideDebugConfigurations` method is used to provide the initial debug configurations to be copied into a newly created launch.json. + * With the trigger kind `Dynamic` the `provideDebugConfigurations` method is used to dynamically determine debug configurations to be presented to the user (in addition to the static configurations from the launch.json). + * Please note that the `triggerKind` argument only applies to the `provideDebugConfigurations` method: so the `resolveDebugConfiguration` methods are not affected at all. + * Registering a single provider with resolve methods for different trigger kinds, results in the same resolve methods called multiple times. + * More than one provider can be registered for the same type. + * + * @param type The debug type for which the provider is registered. + * @param provider The [debug configuration provider](#DebugConfigurationProvider) to register. + * @param triggerKind The [trigger](#DebugConfigurationProviderTrigger) for which the 'provideDebugConfiguration' method of the provider is registered. + * @return A [disposable](#Disposable) that unregisters this provider when being disposed. + */ + export function registerDebugConfigurationProvider(debugType: string, provider: DebugConfigurationProvider, triggerKind?: DebugConfigurationProviderTriggerKind): Disposable; + } + + // deprecated debug API + + export interface DebugConfigurationProvider { + /** + * Deprecated, use DebugAdapterDescriptorFactory.provideDebugAdapter instead. + * @deprecated Use DebugAdapterDescriptorFactory.createDebugAdapterDescriptor instead + */ + debugAdapterExecutable?(folder: WorkspaceFolder | undefined, token?: CancellationToken): ProviderResult; + } + + //#endregion + + //#region LogLevel: https://github.com/microsoft/vscode/issues/85992 + + /** + * @deprecated DO NOT USE, will be removed + */ + export enum LogLevel { + Trace = 1, + Debug = 2, + Info = 3, + Warning = 4, + Error = 5, + Critical = 6, + Off = 7 + } + + export namespace env { + /** + * @deprecated DO NOT USE, will be removed + */ + export const logLevel: LogLevel; + + /** + * @deprecated DO NOT USE, will be removed + */ + export const onDidChangeLogLevel: Event; + } + + //#endregion + + //#region Joao: SCM validation + + /** + * Represents the validation type of the Source Control input. + */ + export enum SourceControlInputBoxValidationType { + + /** + * Something not allowed by the rules of a language or other means. + */ + Error = 0, + + /** + * Something suspicious but allowed. + */ + Warning = 1, + + /** + * Something to inform about but not a problem. + */ + Information = 2 + } + + export interface SourceControlInputBoxValidation { + + /** + * The validation message to display. + */ + readonly message: string; + + /** + * The validation type. + */ + readonly type: SourceControlInputBoxValidationType; + } + + /** + * Represents the input box in the Source Control viewlet. + */ + export interface SourceControlInputBox { + + /** + * A validation function for the input box. It's possible to change + * the validation provider simply by setting this property to a different function. + */ + validateInput?(value: string, cursorPosition: number): ProviderResult; + } + + //#endregion + + //#region Joao: SCM selected provider + + export interface SourceControl { + + /** + * Whether the source control is selected. + */ + readonly selected: boolean; + + /** + * An event signaling when the selection state changes. + */ + readonly onDidChangeSelection: Event; + } + + //#endregion + + //#region Terminal data write event https://github.com/microsoft/vscode/issues/78502 + + export interface TerminalDataWriteEvent { + /** + * The [terminal](#Terminal) for which the data was written. + */ + readonly terminal: Terminal; + /** + * The data being written. + */ + readonly data: string; + } + + namespace window { + /** + * An event which fires when the terminal's pty slave pseudo-device is written to. In other + * words, this provides access to the raw data stream from the process running within the + * terminal, including VT sequences. + */ + export const onDidWriteTerminalData: Event; + } + + //#endregion + + //#region Terminal dimensions property and change event https://github.com/microsoft/vscode/issues/55718 + + /** + * An [event](#Event) which fires when a [Terminal](#Terminal)'s dimensions change. + */ + export interface TerminalDimensionsChangeEvent { + /** + * The [terminal](#Terminal) for which the dimensions have changed. + */ + readonly terminal: Terminal; + /** + * The new value for the [terminal's dimensions](#Terminal.dimensions). + */ + readonly dimensions: TerminalDimensions; + } + + export namespace window { + /** + * An event which fires when the [dimensions](#Terminal.dimensions) of the terminal change. + */ + export const onDidChangeTerminalDimensions: Event; + } + + export interface Terminal { + /** + * The current dimensions of the terminal. This will be `undefined` immediately after the + * terminal is created as the dimensions are not known until shortly after the terminal is + * created. + */ + readonly dimensions: TerminalDimensions | undefined; + } + + //#endregion + + + + //#region Terminal link handlers https://github.com/microsoft/vscode/issues/91606 + + export namespace window { + /** + * Register a [TerminalLinkHandler](#TerminalLinkHandler) that can be used to intercept and + * handle links that are activated within terminals. + * @param handler The link handler being registered. + * @return A disposable that unregisters the link handler. + */ + export function registerTerminalLinkHandler(handler: TerminalLinkHandler): Disposable; + } + + /** + * Describes how to handle terminal links. + */ + export interface TerminalLinkHandler { + /** + * Handles a link that is activated within the terminal. + * + * @param terminal The terminal the link was activated on. + * @param link The text of the link activated. + * @return Whether the link was handled, if the link was handled this link will not be + * considered by any other extension or by the default built-in link handler. + */ + handleLink(terminal: Terminal, link: string): ProviderResult; + } + + //#endregion + + //#region Contribute to terminal environment https://github.com/microsoft/vscode/issues/46696 + + export enum EnvironmentVariableMutatorType { + /** + * Replace the variable's existing value. + */ + Replace = 1, + /** + * Append to the end of the variable's existing value. + */ + Append = 2, + /** + * Prepend to the start of the variable's existing value. + */ + Prepend = 3 + } + + export interface EnvironmentVariableMutator { + /** + * The type of mutation that will occur to the variable. + */ + readonly type: EnvironmentVariableMutatorType; + + /** + * The value to use for the variable. + */ + readonly value: string; + } + + /** + * A collection of mutations that an extension can apply to a process environment. + */ + export interface EnvironmentVariableCollection { + /** + * Whether the collection should be cached for the workspace and applied to the terminal + * across window reloads. When true the collection will be active immediately such when the + * window reloads. Additionally, this API will return the cached version if it exists. The + * collection will be invalidated when the extension is uninstalled or when the collection + * is cleared. Defaults to true. + */ + persistent: boolean; + + /** + * Replace an environment variable with a value. + * + * Note that an extension can only make a single change to any one variable, so this will + * overwrite any previous calls to replace, append or prepend. + */ + replace(variable: string, value: string): void; + + /** + * Append a value to an environment variable. + * + * Note that an extension can only make a single change to any one variable, so this will + * overwrite any previous calls to replace, append or prepend. + */ + append(variable: string, value: string): void; + + /** + * Prepend a value to an environment variable. + * + * Note that an extension can only make a single change to any one variable, so this will + * overwrite any previous calls to replace, append or prepend. + */ + prepend(variable: string, value: string): void; + + /** + * Gets the mutator that this collection applies to a variable, if any. + */ + get(variable: string): EnvironmentVariableMutator | undefined; + + /** + * Iterate over each mutator in this collection. + */ + forEach(callback: (variable: string, mutator: EnvironmentVariableMutator, collection: EnvironmentVariableCollection) => any, thisArg?: any): void; + + /** + * Deletes this collection's mutator for a variable. + */ + delete(variable: string): void; + + /** + * Clears all mutators from this collection. + */ + clear(): void; + } + + export interface ExtensionContext { + /** + * Gets the extension's environment variable collection for this workspace, enabling changes + * to be applied to terminal environment variables. + */ + readonly environmentVariableCollection: EnvironmentVariableCollection; + } + + //#endregion + + //#region Joh -> exclusive document filters + + export interface DocumentFilter { + exclusive?: boolean; + } + + //#endregion + + //#region Alex - OnEnter enhancement + export interface OnEnterRule { + /** + * This rule will only execute if the text above the this line matches this regular expression. + */ + oneLineAboveText?: RegExp; + } + //#endregion + + //#region Tree View: https://github.com/microsoft/vscode/issues/61313 + /** + * Label describing the [Tree item](#TreeItem) + */ + export interface TreeItemLabel { + + /** + * A human-readable string describing the [Tree item](#TreeItem). + */ + label: string; + + /** + * Ranges in the label to highlight. A range is defined as a tuple of two number where the + * first is the inclusive start index and the second the exclusive end index + */ + highlights?: [number, number][]; + + } + + export class TreeItem2 extends TreeItem { + /** + * Label describing this item. When `falsy`, it is derived from [resourceUri](#TreeItem.resourceUri). + */ + label?: string | TreeItemLabel | /* for compilation */ any; + + /** + * @param label Label describing this item + * @param collapsibleState [TreeItemCollapsibleState](#TreeItemCollapsibleState) of the tree item. Default is [TreeItemCollapsibleState.None](#TreeItemCollapsibleState.None) + */ + constructor(label: TreeItemLabel, collapsibleState?: TreeItemCollapsibleState); + } + //#endregion + + //#region CustomExecution: https://github.com/microsoft/vscode/issues/81007 + /** + * A task to execute + */ + export class Task2 extends Task { + detail?: string; + } + + export class CustomExecution2 extends CustomExecution { + /** + * Constructs a CustomExecution task object. The callback will be executed the task is run, at which point the + * extension should return the Pseudoterminal it will "run in". The task should wait to do further execution until + * [Pseudoterminal.open](#Pseudoterminal.open) is called. Task cancellation should be handled using + * [Pseudoterminal.close](#Pseudoterminal.close). When the task is complete fire + * [Pseudoterminal.onDidClose](#Pseudoterminal.onDidClose). + * @param callback The callback that will be called when the task is started by a user. + */ + constructor(callback: (resolvedDefinition?: TaskDefinition) => Thenable); + } + //#endregion + + //#region Task presentation group: https://github.com/microsoft/vscode/issues/47265 + export interface TaskPresentationOptions { + /** + * Controls whether the task is executed in a specific terminal group using split panes. + */ + group?: string; + } + //#endregion + + //#region Status bar item with ID and Name: https://github.com/microsoft/vscode/issues/74972 + + export namespace window { + + /** + * Options to configure the status bar item. + */ + export interface StatusBarItemOptions { + + /** + * A unique identifier of the status bar item. The identifier + * is for example used to allow a user to show or hide the + * status bar item in the UI. + */ + id: string; + + /** + * A human readable name of the status bar item. The name is + * for example used as a label in the UI to show or hide the + * status bar item. + */ + name: string; + + /** + * The alignment of the status bar item. + */ + alignment?: StatusBarAlignment; + + /** + * The priority of the status bar item. Higher value means the item should + * be shown more to the left. + */ + priority?: number; + } + + /** + * Creates a status bar [item](#StatusBarItem). + * + * @param options The options of the item. If not provided, some default values + * will be assumed. For example, the `StatusBarItemOptions.id` will be the id + * of the extension and the `StatusBarItemOptions.name` will be the extension name. + * @return A new status bar item. + */ + export function createStatusBarItem(options?: StatusBarItemOptions): StatusBarItem; + } + + //#endregion + + //#region OnTypeRename: https://github.com/microsoft/vscode/issues/88424 + + /** + * The rename provider interface defines the contract between extensions and + * the live-rename feature. + */ + export interface OnTypeRenameProvider { + /** + * Provide a list of ranges that can be live renamed together. + * + * @param document The document in which the command was invoked. + * @param position The position at which the command was invoked. + * @param token A cancellation token. + * @return A list of ranges that can be live-renamed togehter. The ranges must have + * identical length and contain identical text content. The ranges cannot overlap. + */ + provideOnTypeRenameRanges(document: TextDocument, position: Position, token: CancellationToken): ProviderResult; + } + + namespace languages { + /** + * Register a rename provider that works on type. + * + * Multiple providers can be registered for a language. In that case providers are sorted + * by their [score](#languages.match) and the best-matching provider is used. Failure + * of the selected provider will cause a failure of the whole operation. + * + * @param selector A selector that defines the documents this provider is applicable to. + * @param provider An on type rename provider. + * @param stopPattern Stop on type renaming when input text matches the regular expression. Defaults to `^\s`. + * @return A [disposable](#Disposable) that unregisters this provider when being disposed. + */ + export function registerOnTypeRenameProvider(selector: DocumentSelector, provider: OnTypeRenameProvider, stopPattern?: RegExp): Disposable; + } + + //#endregion + + //#region Custom editor https://github.com/microsoft/vscode/issues/77131 + + /** + * Represents a custom document used by a [`CustomEditorProvider`](#CustomEditorProvider). + * + * Custom documents are only used within a given `CustomEditorProvider`. The lifecycle of a `CustomDocument` is + * managed by VS Code. When no more references remain to a `CustomDocument`, it is disposed of. + */ + interface CustomDocument { + /** + * The associated uri for this document. + */ + readonly uri: Uri; + + /** + * Dispose of the custom document. + * + * This is invoked by VS Code when there are no more references to a given `CustomDocument` (for example when + * all editors associated with the document have been closed.) + */ + dispose(): void; + } + + /** + * Event triggered by extensions to signal to VS Code that an edit has occurred on an [`CustomDocument`](#CustomDocument). + * + * @see [`CustomDocumentProvider.onDidChangeCustomDocument`](#CustomDocumentProvider.onDidChangeCustomDocument). + */ + interface CustomDocumentEditEvent { + + /** + * The document that the edit is for. + */ + readonly document: T; + + /** + * Undo the edit operation. + * + * This is invoked by VS Code when the user undoes this edit. To implement `undo`, your + * extension should restore the document and editor to the state they were in just before this + * edit was added to VS Code's internal edit stack by `onDidChangeCustomDocument`. + */ + undo(): Thenable | void; + + /** + * Redo the edit operation. + * + * This is invoked by VS Code when the user redoes this edit. To implement `redo`, your + * extension should restore the document and editor to the state they were in just after this + * edit was added to VS Code's internal edit stack by `onDidChangeCustomDocument`. + */ + redo(): Thenable | void; + + /** + * Display name describing the edit. + * + * This is shown in the UI to users. + */ + readonly label?: string; + } + + /** + * Event triggered by extensions to signal to VS Code that the content of a [`CustomDocument`](#CustomDocument) + * has changed. + * + * @see [`CustomDocumentProvider.onDidChangeCustomDocument`](#CustomDocumentProvider.onDidChangeCustomDocument). + */ + interface CustomDocumentContentChangeEvent { + /** + * The document that the change is for. + */ + readonly document: T; + } + + /** + * A backup for an [`CustomDocument`](#CustomDocument). + */ + interface CustomDocumentBackup { + /** + * Unique identifier for the backup. + * + * This id is passed back to your extension in `openCustomDocument` when opening a custom editor from a backup. + */ + readonly id: string; + + /** + * Delete the current backup. + * + * This is called by VS Code when it is clear the current backup is no longer needed, such as when a new backup + * is made or when the file is saved. + */ + delete(): void; + } + + /** + * Additional information used to implement [`CustomEditableDocument.backup`](#CustomEditableDocument.backup). + */ + interface CustomDocumentBackupContext { + /** + * Suggested file location to write the new backup. + * + * Note that your extension is free to ignore this and use its own strategy for backup. + * + * For editors for workspace resource, this destination will be in the workspace storage. The path may not + */ + readonly destination: Uri; + } + + /** + * Additional information about the opening custom document. + */ + interface CustomDocumentOpenContext { + /** + * The id of the backup to restore the document from or `undefined` if there is no backup. + * + * If this is provided, your extension should restore the editor from the backup instead of reading the file + * the user's workspace. + */ + readonly backupId?: string; + } + + /** + * Provider for readonly custom editors that use a custom document model. + * + * Custom editors use [`CustomDocument`](#CustomDocument) as their document model instead of a [`TextDocument`](#TextDocument). + * + * You should use this type of custom editor when dealing with binary files or more complex scenarios. For simple + * text based documents, use [`CustomTextEditorProvider`](#CustomTextEditorProvider) instead. + * + * @param T Type of the custom document returned by this provider. + */ + export interface CustomReadonlyEditorProvider { + + /** + * Create a new document for a given resource. + * + * `openCustomDocument` is called when the first editor for a given resource is opened, and the resolve document + * is passed to `resolveCustomEditor`. The resolved `CustomDocument` is re-used for subsequent editor opens. + * If all editors for a given resource are closed, the `CustomDocument` is disposed of. Opening an editor at + * this point will trigger another call to `openCustomDocument`. + * + * @param uri Uri of the document to open. + * @param openContext Additional information about the opening custom document. + * @param token A cancellation token that indicates the result is no longer needed. + * + * @return The custom document. + */ + openCustomDocument(uri: Uri, openContext: CustomDocumentOpenContext, token: CancellationToken): Thenable | T; + + /** + * Resolve a custom editor for a given resource. + * + * This is called whenever the user opens a new editor for this `CustomEditorProvider`. + * + * To resolve a custom editor, the provider must fill in its initial html content and hook up all + * the event listeners it is interested it. The provider can also hold onto the `WebviewPanel` to use later, + * for example in a command. See [`WebviewPanel`](#WebviewPanel) for additional details. + * + * @param document Document for the resource being resolved. + * @param webviewPanel Webview to resolve. + * @param token A cancellation token that indicates the result is no longer needed. + * + * @return Optional thenable indicating that the custom editor has been resolved. + */ + resolveCustomEditor(document: T, webviewPanel: WebviewPanel, token: CancellationToken): Thenable | void; + } + + /** + * Provider for editiable custom editors that use a custom document model. + * + * Custom editors use [`CustomDocument`](#CustomDocument) as their document model instead of a [`TextDocument`](#TextDocument). + * This gives extensions full control over actions such as edit, save, and backup. + * + * You should use this type of custom editor when dealing with binary files or more complex scenarios. For simple + * text based documents, use [`CustomTextEditorProvider`](#CustomTextEditorProvider) instead. + * + * @param T Type of the custom document returned by this provider. + */ + export interface CustomEditorProvider extends CustomReadonlyEditorProvider { + /** + * Signal that an edit has occurred inside a custom editor. + * + * This event must be fired by your extension whenever an edit happens in a custom editor. An edit can be + * anything from changing some text, to cropping an image, to reordering a list. Your extension is free to + * define what an edit is and what data is stored on each edit. + * + * Firing `onDidChange` causes VS Code to mark the editors as being dirty. This is cleared when the user either + * saves or reverts the file. + * + * Editors that support undo/redo must fire a `CustomDocumentEditEvent` whenever an edit happens. This allows + * users to undo and redo the edit using VS Code's standard VS Code keyboard shortcuts. VS Code will also mark + * the editor as no longer being dirty if the user undoes all edits to the last saved state. + * + * Editors that support editing but cannot use VS Code's standard undo/redo mechanism must fire a `CustomDocumentContentChangeEvent`. + * The only way for a user to clear the dirty state of an editor that does not support undo/redo is to either + * `save` or `revert` the file. + * + * An editor should only ever fire `CustomDocumentEditEvent` events, or only ever fire `CustomDocumentContentChangeEvent` events. + */ + readonly onDidChangeCustomDocument: Event> | Event>; + + /** + * Save a custom document. + * + * This method is invoked by VS Code when the user saves a custom editor. This can happen when the user + * triggers save while the custom editor is active, by commands such as `save all`, or by auto save if enabled. + * + * To implement `save`, the implementer must persist the custom editor. This usually means writing the + * file data for the custom document to disk. After `save` completes, any associated editor instances will + * no longer be marked as dirty. + * + * @param document Document to save. + * @param cancellation Token that signals the save is no longer required (for example, if another save was triggered). + * + * @return Thenable signaling that saving has completed. + */ + saveCustomDocument(document: T, cancellation: CancellationToken): Thenable; + + /** + * Save a custom document to a different location. + * + * This method is invoked by VS Code when the user triggers 'save as' on a custom editor. The implementer must + * persist the custom editor to `destination`. + * + * When the user accepts save as, the current editor is be replaced by an non-dirty editor for the newly saved file. + * + * @param document Document to save. + * @param destination Location to save to. + * @param cancellation Token that signals the save is no longer required. + * + * @return Thenable signaling that saving has completed. + */ + saveCustomDocumentAs(document: T, destination: Uri, cancellation: CancellationToken): Thenable; + + /** + * Revert a custom document to its last saved state. + * + * This method is invoked by VS Code when the user triggers `File: Revert File` in a custom editor. (Note that + * this is only used using VS Code's `File: Revert File` command and not on a `git revert` of the file). + * + * To implement `revert`, the implementer must make sure all editor instances (webviews) for `document` + * are displaying the document in the same state is saved in. This usually means reloading the file from the + * workspace. + * + * @param document Document to revert. + * @param cancellation Token that signals the revert is no longer required. + * + * @return Thenable signaling that the change has completed. + */ + revertCustomDocument(document: T, cancellation: CancellationToken): Thenable; + + /** + * Back up a dirty custom document. + * + * Backups are used for hot exit and to prevent data loss. Your `backup` method should persist the resource in + * its current state, i.e. with the edits applied. Most commonly this means saving the resource to disk in + * the `ExtensionContext.storagePath`. When VS Code reloads and your custom editor is opened for a resource, + * your extension should first check to see if any backups exist for the resource. If there is a backup, your + * extension should load the file contents from there instead of from the resource in the workspace. + * + * `backup` is triggered whenever an edit it made. Calls to `backup` are debounced so that if multiple edits are + * made in quick succession, `backup` is only triggered after the last one. `backup` is not invoked when + * `auto save` is enabled (since auto save already persists resource ). + * + * @param document Document to backup. + * @param context Information that can be used to backup the document. + * @param cancellation Token that signals the current backup since a new backup is coming in. It is up to your + * extension to decided how to respond to cancellation. If for example your extension is backing up a large file + * in an operation that takes time to complete, your extension may decide to finish the ongoing backup rather + * than cancelling it to ensure that VS Code has some valid backup. + */ + backupCustomDocument(document: T, context: CustomDocumentBackupContext, cancellation: CancellationToken): Thenable; + } + + namespace window { + /** + * Temporary overload for `registerCustomEditorProvider` that takes a `CustomEditorProvider`. + */ + export function registerCustomEditorProvider2( + viewType: string, + provider: CustomReadonlyEditorProvider | CustomEditorProvider, + options?: { + readonly webviewOptions?: WebviewPanelOptions; + + /** + * Only applies to `CustomReadonlyEditorProvider | CustomEditorProvider`. + * + * Indicates that the provider allows multiple editor instances to be open at the same time for + * the same resource. + * + * If not set, VS Code only allows one editor instance to be open at a time for each resource. If the + * user tries to open a second editor instance for the resource, the first one is instead moved to where + * the second one was to be opened. + * + * When set, users can split and create copies of the custom editor. The custom editor must make sure it + * can properly synchronize the states of all editor instances for a resource so that they are consistent. + */ + readonly supportsMultipleEditorsPerDocument?: boolean; + } + ): Disposable; + } + + // #endregion + + //#region Custom editor move https://github.com/microsoft/vscode/issues/86146 + + // TODO: Also for custom editor + + export interface CustomTextEditorProvider { + + + /** + * Handle when the underlying resource for a custom editor is renamed. + * + * This allows the webview for the editor be preserved throughout the rename. If this method is not implemented, + * VS Code will destory the previous custom editor and create a replacement one. + * + * @param newDocument New text document to use for the custom editor. + * @param existingWebviewPanel Webview panel for the custom editor. + * @param token A cancellation token that indicates the result is no longer needed. + * + * @return Thenable indicating that the webview editor has been moved. + */ + moveCustomTextEditor?(newDocument: TextDocument, existingWebviewPanel: WebviewPanel, token: CancellationToken): Thenable; + } + + //#endregion + + + //#region allow QuickPicks to skip sorting: https://github.com/microsoft/vscode/issues/73904 + + export interface QuickPick extends QuickInput { + /** + * An optional flag to sort the final results by index of first query match in label. Defaults to true. + */ + sortByLabel: boolean; + } + + //#endregion + + //#region Allow theme icons in hovers: https://github.com/microsoft/vscode/issues/84695 + + export interface MarkdownString { + + /** + * Indicates that this markdown string can contain [ThemeIcons](#ThemeIcon), e.g. `$(zap)`. + */ + readonly supportThemeIcons?: boolean; + } + + //#endregion + + //#region Peng: Notebook + + export enum CellKind { + Markdown = 1, + Code = 2 + } + + export enum CellOutputKind { + Text = 1, + Error = 2, + Rich = 3 + } + + export interface CellStreamOutput { + outputKind: CellOutputKind.Text; + text: string; + } + + export interface CellErrorOutput { + outputKind: CellOutputKind.Error; + /** + * Exception Name + */ + ename: string; + /** + * Exception Value + */ + evalue: string; + /** + * Exception call stack + */ + traceback: string[]; + } + + export interface CellDisplayOutput { + outputKind: CellOutputKind.Rich; + /** + * { mime_type: value } + * + * Example: + * ```json + * { + * "outputKind": vscode.CellOutputKind.Rich, + * "data": { + * "text/html": [ + * "

Hello

" + * ], + * "text/plain": [ + * "" + * ] + * } + * } + */ + data: { [key: string]: any }; + } + + export type CellOutput = CellStreamOutput | CellErrorOutput | CellDisplayOutput; + + export enum NotebookCellRunState { + Running = 1, + Idle = 2, + Success = 3, + Error = 4 + } + + export interface NotebookCellMetadata { + /** + * Controls if the content of a cell is editable or not. + */ + editable?: boolean; + + /** + * Controls if the cell is executable. + * This metadata is ignored for markdown cell. + */ + runnable?: boolean; + + /** + * The order in which this cell was executed. + */ + executionOrder?: number; + + /** + * A status message to be shown in the cell's status bar + */ + statusMessage?: string; + + /** + * The cell's current run state + */ + runState?: NotebookCellRunState; + } + + export interface NotebookCell { + readonly uri: Uri; + readonly cellKind: CellKind; + readonly document: TextDocument; + // API remove `source` or doc it as shorthand for document.getText() + readonly source: string; + language: string; + outputs: CellOutput[]; + metadata: NotebookCellMetadata; + } + + export interface NotebookDocumentMetadata { + /** + * Controls if users can add or delete cells + * Defaults to true + */ + editable?: boolean; + + /** + * Controls whether the full notebook can be run at once. + * Defaults to true + */ + runnable?: boolean; + + /** + * Default value for [cell editable metadata](#NotebookCellMetadata.editable). + * Defaults to true. + */ + cellEditable?: boolean; + + /** + * Default value for [cell runnable metadata](#NotebookCellMetadata.runnable). + * Defaults to true. + */ + cellRunnable?: boolean; + + /** + * Whether the [execution order](#NotebookCellMetadata.executionOrder) indicator will be displayed. + * Defaults to true. + */ + hasExecutionOrder?: boolean; + } + + export interface NotebookDocument { + readonly uri: Uri; + readonly fileName: string; + readonly isDirty: boolean; + readonly cells: NotebookCell[]; + languages: string[]; + displayOrder?: GlobPattern[]; + metadata: NotebookDocumentMetadata; + } + + export interface NotebookConcatTextDocument { + isClosed: boolean; + dispose(): void; + onDidChange: Event; + version: number; + getText(): string; + getText(range: Range): string; + offsetAt(position: Position): number; + positionAt(offset: number): Position; + locationAt(positionOrRange: Position | Range): Location; + positionAt(location: Location): Position; + } + + export interface NotebookEditorCellEdit { + insert(index: number, content: string | string[], language: string, type: CellKind, outputs: CellOutput[], metadata: NotebookCellMetadata | undefined): void; + delete(index: number): void; + } + + export interface NotebookEditor { + /** + * The document associated with this notebook editor. + */ + readonly document: NotebookDocument; + + /** + * The primary selected cell on this notebook editor. + */ + readonly selection?: NotebookCell; + viewColumn?: ViewColumn; + /** + * Fired when the output hosting webview posts a message. + */ + readonly onDidReceiveMessage: Event; + /** + * Post a message to the output hosting webview. + * + * Messages are only delivered if the editor is live. + * + * @param message Body of the message. This must be a string or other json serilizable object. + */ + postMessage(message: any): Thenable; + + edit(callback: (editBuilder: NotebookEditorCellEdit) => void): Thenable; + } + + export interface NotebookProvider { + resolveNotebook(editor: NotebookEditor): Promise; + executeCell(document: NotebookDocument, cell: NotebookCell | undefined, token: CancellationToken): Promise; + save(document: NotebookDocument): Promise; + } + + export interface NotebookOutputSelector { + type: string; + subTypes?: string[]; + } + + export interface NotebookOutputRenderer { + /** + * + * @returns HTML fragment. We can probably return `CellOutput` instead of string ? + * + */ + render(document: NotebookDocument, output: CellDisplayOutput, mimeType: string): string; + preloads?: Uri[]; + } + + export interface NotebookDocumentChangeEvent { + + /** + * The affected document. + */ + readonly document: NotebookDocument; + + /** + * An array of content changes. + */ + // readonly contentChanges: ReadonlyArray; + } + + export namespace notebook { + export function registerNotebookProvider( + notebookType: string, + provider: NotebookProvider + ): Disposable; + + export function registerNotebookOutputRenderer(type: string, outputSelector: NotebookOutputSelector, renderer: NotebookOutputRenderer): Disposable; + + // remove activeNotebookDocument, now that there is activeNotebookEditor.document + export let activeNotebookDocument: NotebookDocument | undefined; + + export let activeNotebookEditor: NotebookEditor | undefined; + + export const onDidChangeNotebookDocument: Event; + + /** + * Create a document that is the concatenation of all notebook cells. By default all code-cells are included + * but a selector can be provided to narrow to down the set of cells. + * + * @param notebook + * @param selector + */ + export function createConcatTextDocument(notebook: NotebookDocument, selector?: DocumentSelector): NotebookConcatTextDocument; + } + + //#endregion + + //#region https://github.com/microsoft/vscode/issues/39441 + + export interface CompletionItem { + /** + * Will be merged into CompletionItem#label + */ + label2?: CompletionItemLabel; + } + + export interface CompletionItemLabel { + /** + * The function or variable. Rendered leftmost. + */ + name: string; + + /** + * The parameters without the return type. Render after `name`. + */ + parameters?: string; + + /** + * The fully qualified name, like package name or file path. Rendered after `signature`. + */ + qualifier?: string; + + /** + * The return-type of a function or type of a property/variable. Rendered rightmost. + */ + type?: string; + } + + //#endregion + + + //#region eamodio - timeline: https://github.com/microsoft/vscode/issues/84297 + + export class TimelineItem { + /** + * A timestamp (in milliseconds since 1 January 1970 00:00:00) for when the timeline item occurred. + */ + timestamp: number; + + /** + * A human-readable string describing the timeline item. + */ + label: string; + + /** + * Optional id for the timeline item. It must be unique across all the timeline items provided by this source. + * + * If not provided, an id is generated using the timeline item's timestamp. + */ + id?: string; + + /** + * The icon path or [ThemeIcon](#ThemeIcon) for the timeline item. + */ + iconPath?: Uri | { light: Uri; dark: Uri } | ThemeIcon; + + /** + * A human readable string describing less prominent details of the timeline item. + */ + description?: string; + + /** + * The tooltip text when you hover over the timeline item. + */ + detail?: string; + + /** + * The [command](#Command) that should be executed when the timeline item is selected. + */ + command?: Command; + + /** + * Context value of the timeline item. This can be used to contribute specific actions to the item. + * For example, a timeline item is given a context value as `commit`. When contributing actions to `timeline/item/context` + * using `menus` extension point, you can specify context value for key `timelineItem` in `when` expression like `timelineItem == commit`. + * ``` + * "contributes": { + * "menus": { + * "timeline/item/context": [ + * { + * "command": "extension.copyCommitId", + * "when": "timelineItem == commit" + * } + * ] + * } + * } + * ``` + * This will show the `extension.copyCommitId` action only for items where `contextValue` is `commit`. + */ + contextValue?: string; + + /** + * @param label A human-readable string describing the timeline item + * @param timestamp A timestamp (in milliseconds since 1 January 1970 00:00:00) for when the timeline item occurred + */ + constructor(label: string, timestamp: number); + } + + export interface TimelineChangeEvent { + /** + * The [uri](#Uri) of the resource for which the timeline changed. + */ + uri: Uri; + + /** + * A flag which indicates whether the entire timeline should be reset. + */ + reset?: boolean; + } + + export interface Timeline { + readonly paging?: { + /** + * A provider-defined cursor specifying the starting point of timeline items which are after the ones returned. + * Use `undefined` to signal that there are no more items to be returned. + */ + readonly cursor: string | undefined; + } + + /** + * An array of [timeline items](#TimelineItem). + */ + readonly items: readonly TimelineItem[]; + } + + export interface TimelineOptions { + /** + * A provider-defined cursor specifying the starting point of the timeline items that should be returned. + */ + cursor?: string; + + /** + * An optional maximum number timeline items or the all timeline items newer (inclusive) than the timestamp or id that should be returned. + * If `undefined` all timeline items should be returned. + */ + limit?: number | { timestamp: number; id?: string }; + } + + export interface TimelineProvider { + /** + * An optional event to signal that the timeline for a source has changed. + * To signal that the timeline for all resources (uris) has changed, do not pass any argument or pass `undefined`. + */ + onDidChange?: Event; + + /** + * An identifier of the source of the timeline items. This can be used to filter sources. + */ + readonly id: string; + + /** + * A human-readable string describing the source of the timeline items. This can be used as the display label when filtering sources. + */ + readonly label: string; + + /** + * Provide [timeline items](#TimelineItem) for a [Uri](#Uri). + * + * @param uri The [uri](#Uri) of the file to provide the timeline for. + * @param options A set of options to determine how results should be returned. + * @param token A cancellation token. + * @return The [timeline result](#TimelineResult) or a thenable that resolves to such. The lack of a result + * can be signaled by returning `undefined`, `null`, or an empty array. + */ + provideTimeline(uri: Uri, options: TimelineOptions, token: CancellationToken): ProviderResult; + } + + export namespace workspace { + /** + * Register a timeline provider. + * + * Multiple providers can be registered. In that case, providers are asked in + * parallel and the results are merged. A failing provider (rejected promise or exception) will + * not cause a failure of the whole operation. + * + * @param scheme A scheme or schemes that defines which documents this provider is applicable to. Can be `*` to target all documents. + * @param provider A timeline provider. + * @return A [disposable](#Disposable) that unregisters this provider when being disposed. + */ + export function registerTimelineProvider(scheme: string | string[], provider: TimelineProvider): Disposable; + } + + //#endregion + + //#region https://github.com/microsoft/vscode/issues/86788 + + export interface CodeActionProviderMetadata { + /** + * Static documentation for a class of code actions. + * + * The documentation is shown in the code actions menu if either: + * + * - Code actions of `kind` are requested by VS Code. In this case, VS Code will show the documentation that + * most closely matches the requested code action kind. For example, if a provider has documentation for + * both `Refactor` and `RefactorExtract`, when the user requests code actions for `RefactorExtract`, + * VS Code will use the documentation for `RefactorExtract` intead of the documentation for `Refactor`. + * + * - Any code actions of `kind` are returned by the provider. + */ + readonly documentation?: ReadonlyArray<{ readonly kind: CodeActionKind, readonly command: Command }>; + } + + //#endregion + + //#region Dialog title: https://github.com/microsoft/vscode/issues/82871 + + /** + * Options to configure the behaviour of a file open dialog. + * + * * Note 1: A dialog can select files, folders, or both. This is not true for Windows + * which enforces to open either files or folder, but *not both*. + * * Note 2: Explicitly setting `canSelectFiles` and `canSelectFolders` to `false` is futile + * and the editor then silently adjusts the options to select files. + */ + export interface OpenDialogOptions { + /** + * Dialog title. + * + * Depending on the underlying operating system this parameter might be ignored, since some + * systems do not present title on open dialogs. + */ + title?: string; + } + + /** + * Options to configure the behaviour of a file save dialog. + */ + export interface SaveDialogOptions { + /** + * Dialog title. + * + * Depending on the underlying operating system this parameter might be ignored, since some + * systems do not present title on save dialogs. + */ + title?: string; + } + + //#endregion + + //#region Comment + export interface CommentOptions { + /** + * An optional string to show on the comment input box when it's collapsed. + */ + prompt?: string; + + /** + * An optional string to show as placeholder in the comment input box when it's focused. + */ + placeHolder?: string; + } + + export interface CommentController { + /** + * Comment controller options + */ + options?: CommentOptions; + } + + //#endregion +}