Mercurial > vim
changeset 27617:269f89efb06a v8.2.4335
patch 8.2.4335: no autocommand event triggered before changing directory
Commit: https://github.com/vim/vim/commit/28e8f73ae2d90009fd62cd60f97c2643ba44de68
Author: Bram Moolenaar <Bram@vim.org>
Date: Wed Feb 9 12:58:20 2022 +0000
patch 8.2.4335: no autocommand event triggered before changing directory
Problem: No autocommand event triggered before changing directory. (Ronnie
Magatti)
Solution: Add DirChangedPre. (closes #9721)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Wed, 09 Feb 2022 14:00:05 +0100 |
parents | 431c6a7a1f8b |
children | 5415a1cbfe09 |
files | runtime/doc/autocmd.txt src/autocmd.c src/ex_docmd.c src/misc2.c src/proto/ex_docmd.pro src/testdir/test_autocmd.vim src/version.c src/vim.h |
diffstat | 8 files changed, 53 insertions(+), 17 deletions(-) [+] |
line wrap: on
line diff
--- a/runtime/doc/autocmd.txt +++ b/runtime/doc/autocmd.txt @@ -326,6 +326,7 @@ Name triggered by ~ |FileChangedRO| before making the first change to a read-only file |DiffUpdated| after diffs have been updated +|DirChangedPre| before the working directory will change |DirChanged| after the working directory has changed |ShellCmdPost| after executing a shell command @@ -738,6 +739,11 @@ DiffUpdated After diffs have been upda what kind of diff is being used (internal or external) this can be triggered on every change or when doing |:diffupdate|. + *DirChangedPre* +DirChangedPre The working directory is going to be changed, + as with ||DirChanged|. The pattern is like + with |DirChanged|. The new directory can be + found in v:event.directory. *DirChanged* DirChanged The working directory has changed in response to the |:cd| or |:tcd| or |:lcd| commands, or
--- a/src/autocmd.c +++ b/src/autocmd.c @@ -119,6 +119,7 @@ static struct event_name {"CursorMovedI", EVENT_CURSORMOVEDI}, {"DiffUpdated", EVENT_DIFFUPDATED}, {"DirChanged", EVENT_DIRCHANGED}, + {"DirChangedPre", EVENT_DIRCHANGEDPRE}, {"EncodingChanged", EVENT_ENCODINGCHANGED}, {"ExitPre", EVENT_EXITPRE}, {"FileEncoding", EVENT_ENCODINGCHANGED},
--- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -7343,6 +7343,26 @@ post_chdir(cdscope_T scope) } /* + * Trigger DirChangedPre for "acmd_fname" with directory "new_dir". + */ + void +trigger_DirChangedPre(char_u *acmd_fname, char_u *new_dir) +{ +#ifdef FEAT_EVAL + dict_T *v_event; + save_v_event_T save_v_event; + + v_event = get_v_event(&save_v_event); + (void)dict_add_string(v_event, "directory", new_dir); + dict_set_items_ro(v_event); +#endif + apply_autocmds(EVENT_DIRCHANGEDPRE, acmd_fname, new_dir, FALSE, curbuf); +#ifdef FEAT_EVAL + restore_v_event(v_event, &save_v_event); +#endif +} + +/* * Change directory function used by :cd/:tcd/:lcd Ex commands and the * chdir() function. * scope == CDSCOPE_WINDOW: changes the window-local directory @@ -7358,7 +7378,7 @@ changedir_func( { char_u *pdir = NULL; int dir_differs; - char_u *acmd_fname; + char_u *acmd_fname = NULL; char_u **pp; if (new_dir == NULL || allbuf_locked()) @@ -7411,12 +7431,23 @@ changedir_func( new_dir = NameBuff; } dir_differs = pdir == NULL - || pathcmp((char *)pdir, (char *)new_dir, -1) != 0; - if (dir_differs && vim_chdir(new_dir)) - { - emsg(_(e_command_failed)); - vim_free(pdir); - return FALSE; + || pathcmp((char *)pdir, (char *)new_dir, -1) != 0; + if (dir_differs) + { + if (scope == CDSCOPE_WINDOW) + acmd_fname = (char_u *)"window"; + else if (scope == CDSCOPE_TABPAGE) + acmd_fname = (char_u *)"tabpage"; + else + acmd_fname = (char_u *)"global"; + trigger_DirChangedPre(acmd_fname, new_dir); + + if (vim_chdir(new_dir)) + { + emsg(_(e_command_failed)); + vim_free(pdir); + return FALSE; + } } if (scope == CDSCOPE_WINDOW) @@ -7431,16 +7462,7 @@ changedir_func( post_chdir(scope); if (dir_differs) - { - if (scope == CDSCOPE_WINDOW) - acmd_fname = (char_u *)"window"; - else if (scope == CDSCOPE_TABPAGE) - acmd_fname = (char_u *)"tabpage"; - else - acmd_fname = (char_u *)"global"; - apply_autocmds(EVENT_DIRCHANGED, acmd_fname, new_dir, FALSE, - curbuf); - } + apply_autocmds(EVENT_DIRCHANGED, acmd_fname, new_dir, FALSE, curbuf); return TRUE; }
--- a/src/misc2.c +++ b/src/misc2.c @@ -1914,6 +1914,9 @@ vim_chdirfile(char_u *fname, char *trigg // nothing to do return OK; + if (trigger_autocmd != NULL) + trigger_DirChangedPre((char_u *)trigger_autocmd, new_dir); + if (mch_chdir((char *)new_dir) != 0) return FAIL;
--- a/src/proto/ex_docmd.pro +++ b/src/proto/ex_docmd.pro @@ -48,6 +48,7 @@ void tabpage_new(void); void do_exedit(exarg_T *eap, win_T *old_curwin); void free_cd_dir(void); void post_chdir(cdscope_T scope); +void trigger_DirChangedPre(char_u *acmd_fname, char_u *new_dir); int changedir_func(char_u *new_dir, int forceit, cdscope_T scope); void ex_cd(exarg_T *eap); void do_sleep(long msec, int hide_cursor);
index 1ecb8830797a2586710f361f7bffb7f69dba8a02..3ff4c3cf5bfd678b46ccb00a46f16932ad19a9f1 GIT binary patch literal 87905 zc%1Ehd!O4jlHmPoeG0TDF(q65kh=ZS&)u^gr{nn6v9qxgXV3QPM@f{LV~JEqsvmKD zpZ)3qfFKD{RJWAGbCaEQizHB}DijKZLZQ$UZ@f5(#UzY`yG+7SIG?-0IBqoJa2bs} z5udq{H{Lt<=jzSq%o}|)UnE{MA1o7pMlTzaWiS$Pe>C&lV7V9!my?MX#jUn*hhda7 z1hq8`BH;%ja)YVY>UIQ_3Zj<tmD6rR2_gImzM6&Z*c-Q?a9iBItqOhZw8hRbf}o;8 zc$eO2nRvn(j(3D3_Vgz&82gh3{e?yw_y>@aC?eqlz<4nB#{(|_Dq7g~$eqoE8^>Oh z3?}X@_FCutOsRGQN;SosGd~vbDDoGHxbUG);GKJsh&*?6CXzEx%v~UG7KV!szzm#( z8HbeR01~*N2dwvE5eD8~ifEItB#t4-r^_e~qwm7mm^*7eHb_Z74&+Co=P9=O<1+Z! zpFa=YKv(&JJ5zLCM1JB;{F&E!=RnI&M>xqvNPo^E&vQP&uV3)HgP>+!0(b&4o;ZH| zSR|1@7pE`3Ay&umZMhh`iI@0u@3?zFZ{4Md^PNJYGe7WJ&YshzhQejCSSHxIOYJf2 zTpdOLi~E6}q<AeS;#lPAY&pBH1r-!bMn`=5tb3URHwI>Z^seF-K<J3(vu5`5h3hB$ z>E1zQ#p$%9rhfYtUVIxyPe`^}pLS1_n0dc00o8X-7x@hWG$ukdKicnhyZznnhjumQ z|J*?Pz}8+V61_hX3Hax*6qCaoCa;rlk?nVCQhgqKAR!1rOHB5)0$lhYC0`Fm7`ta~ z+;ULFqu8MqXaJsG`pNSE>G(bzdo6#=T8yAgJdZileE;|~9-R<}G)M`6M(~J+${CJe zpMbR(OjEoB7$OP9JUsVE6L8TzTPxG)vnKS!Wzr=4cz8_vFj}Wm4|F*U6U*Ry4x=+) z@b0nb+6H&;AZ?deF^Cfvu<acjK(}Ri;n+9<;~NTI?wB7lVgNIOfe4pc208pB5j!Ro z7IbgdX7}L2PtFERk&l`=S}s%{kQ)8gbCV@#zki0qO>|6CJPm`1AI+&IwF{HtdH4}v z!rb8jBL}0Q2q*L%8WrQvi*YI$`!OJ*kT81@CZQnN+fKiC4~&inbY!>Fkht)J!yZh` ze-{qSJYs(&ywO?McSK(}_{-_Y$r}HAFFrYvI;SsC39J^Q&!4{}Ng5^5Y;Y-M=MNiz z-SPpLl@gRA5rm15Z3%Y*;x3-P`SHc>FE-hA-#>o3`^!nQn%M_`BD1H1pCr2rZ0%R@ zFz_xac=<_yY?=!Eg*Qn~CSfR5IT}hJ^j6Vq`mHu{ZF=$(mD7BSXP&nZAm#HCHaab6 zp$&pP^%Am>x^2bFaadL-SDcCsFZ_kKb5n-DS|olLy!Mj89OQ{wFz8LN2xz}3@?qw4 zh<Sc61$4S?-LeKD-%O)$xxn@Zi93v8_Lj;4x=t4r@{^@&I;1nC+23lSei6=hux^=w z5Myy~?4YV`wm-KsEh=lZVElqX-Y0$}@$mx@UmV{Pebg*580E<s(!&-iAqVBYmz+>t z3N;mT^pHRA15@Vl6vn&b6uNEV`ZLg9@nVL?X%R3E<ZiEDI@TU^#O)+5`-<YA+Lyvm z#q}L4mkjY?*4$28OO2-zmaGttgNzkK3pLTq8CR(Yf;k6z1XhD2c?!=Y^JzdYB_Xu_ z*)bo)KbDi9sGwShxZ`mv?$3M>6b+==&e!>d2({N?CKT(u1-^k%X|Hs_ADbp6$Z@%l z!Ga($?>;n?asuAYLI8wooHKts_JU)0J7k0#w%&hd5R}0bgc#ws*J_OG{-I6khK7<` z>$RC>w21*KqY|-^eNpn=Sdza!efF~mM>r3mnFi_<v<}F4jN@QWh}M$?D0N}o{$THD z5A^&!0qb`v);45X%8Stwo1gA5@GjZxgx}uSPxu!YigD7&i+?qg`eWiT`)N*utXUM! zUzfhU8+skAv~Z`McHuPA_SQl(+Xpo(!Sf8btx&XhdE98qk^vUOKyw!+8=(KCchP}A zr)clvj~AYM?saGo2lNs~G1qTc6*z(ut{Aey?%uo4DjNl@9&{_hDdk{T&#;oFo#Y@V z9$L4%^To`o>~Cn8kjV5n%T|5{AZlY}RCL5Uwzi4Xk@JBxIJCbb+`Z&dO6h18#@-D^ z%VDoubF{eUp+APnWPmLU4!Xn=o=#nb5Gov$4fYPDPR7;4sK`SwH-u9$aM1DCQjOgO z>j$14rN4HZ;()RU6S7kbhloAN)1$)&eW%WFT0M4@GTlkJBcHjwKcmlj+-HXVPp%f; zaS)Pe_E+z}AdKejY)AOriq3R(U*79(qc5{vSLFS8IiFt*Bo)N&rdUMY!i_wEwr||9 zSi@}WQdO*pNOXygcFoc~UHbnUTTL4BMW*35U{nBl5>^>g;Jw&~rT5%TMrYo5KUd{W zO-sjS+~kcVZKGH9q`i>Yfj707QlW&o3}>*+{semmB5xE%W9DT}YCv76Wj)MYFrk`V zrD}o%@<*p_6n=`6(YU-kf6r7=Q+`Pe`V1?6qXy5Wr8VfYQR9s}ET@4#rU=1vB@Oy} zrb-nJ>T{+-6$$FIV;KV^^E~gfDbKUN`fC^E#;x}TW73W@8Qdup(rA=a(7ZEgTnR=p zFT=?q*fL-l0J;tq`_R!ctrtF7Ay-Tj=wU!bs@|kCbNZ<!Be%n&3QpMAXCvP}oOcQa zr}7nYRhtIUjmoKvwnvjQHz61K!c73bK=`qc>Q%T?*AHU;JmR4QT4)?zII(#CO-H!F zSPaADjG#SssoDv>ee5Fd;Wx~b<o*bSPo8xab;J}P`PiSR*QQ?Ln;K0aa4gRIw2z$Q z!>%U9YO3&twwk9>UduL}Vk1ek^qkD>W@<n#&-6j@IEi{-OL><IAhqQv!qxVB1q5V@ z4FEBV>*rPxN+%c+jJUQm`uS~lmTw}oqmf=!2-{a%^I9lU{C)Iy2fH9yVAT5OUfPjT za}_`zc97RbRD#`&U$;-oS!(h3+Y0v(9eg>e#bUkvktJgF4oTiX%@CED@-tu5*p+>1 zyy5;cUr2pd+#1M^__+UMJbn^9F{}keH&{~ta3kz!HI0EO_oL^IpU#n2>=8cmX0tGF zxR-P_7-%h;&RWW?41>>T#%Y7y^*(5}+ija(^4w^4H5j^))JusLL07<A6hBmI)4=}? zI#UKwpicTk8+M=dYP$}};&-yjekb`EhXIbq2M_3NHJ#n{=(M_>A9Se6ba%ZL%7k$S z;fD|Z7=#}_G!S0ZF}w|S-F_h=Q#s6#`{>ahL++zT*CUq@t0s5HBsDj}ZcIydO#SHL zhWazaNj5GO(res7c=eyACQ`4gi(o1<xNxHY?2b&gy*cyV@@u6*e)i|ea%So%It#Ze zDpd$+w^lQSw|7TDg0-4Sxq8i-81$VViQ^Oa5u5a65aU9njlS(Z>Nhb+CeBNPEU?Q< z;_+@Rq)22qOs)9@)~IJt+Sn_0KYG&48hI)zftQbC0lbQ?3_i)~bvU;kjs~Yx8-#Wc z3favRF1HBdWPwA^UE-Xn_b?PTsUYS1o-iy5;0hunyzBM-I8+n9Dpt|;%6E|OeH@^= zdajQ2NGZ;dKkDc~x9?advs8tB=gk(%(#CklWz69&BNu)NcQo?i7@sGR=ZQJ+Ov*rR zHWqhr`UhpPP<t@x_tgme@8x_$NPHq7pQ*5aDbD=q*$n<)u1PEmLzJ0Whez6Zw+efu zb>z@6Q74o^?}}06#%Ib7IDK?@AA}cutw|J)mm|~E5|@pVtz$h7E~T&dem`B+=aiWN z4=^?d(dDKFr6GN}_|;-~u?PdvC#zM+S9^_I?+!h5J(I)gaL?c_1*Q&o4Hrw^KE+sL z0kp|r;|_+?l5_wFTtx$gF=(*_8$eLFWi5z}d+C%{h*)OD@)lj4f|_NIDXk8}g%_X# zoC8xZ;ujin<;rqT_BRxmhDZu+5%D)P$CERY7d$(&ti-HdBk$Y~mogR@VSN)a>dA#a z@;c;vMLmaw5hE<*?TBBHS^xC3H`>^_apWhG5888GsN%iy;yp|8!}8*Xy0~1ZTr{#i zGSwoxH?rj{Aq<Kh2jz~JnP2P8#RAl>befoWmM)8`V9WI*^@!p!iv&uoE2LwZ1MP%( zKH<KZ;xu^?g<K=@2oeQ`4|&#n^5)Iy%Qw$oy@U=9=L>QrcxI<5kI0VU{>~C-S5hg> z=AKa%*@qUgJyRgk{w~|wsM}Npheu~_Fhvf_0moy=aLF5^#L8&4aFN;Mq?ykKD3QX8 zqA;RSx{qo{JVjl*rx_duvn!_8)iz3|A2M>(%fC3(bBjVV?W5(S0H=gGvS|x*BziPi zW=2T2bOXK$9MkL>P7dwxH+6#TORx0HVX574s?SkKIabyTv&@rI5`{;(GxS@*zk9;D zi#9fU1Nc2fO!1z|OYh=ab{JSlzl(8iSf|}E0+wtAjglldPiAq5A#)l_ae*ouckNIp zT><8oH%i!=Ab|6a@CtWIe0HC!EgwHBYck*Ft3Z7J8r>#1d5H^8o(!R#Lb9e+lN~Wf zYdgkhV<<)fhy@}vR|pgjnmtW5<5B1^#1)3>*eUdhF-fBnhiT?nO3bktWncwpGR)A( z!qY5J{Pbb>h^BPj7=~#-E{k1QP{_q=sQd!d*$<(NTp)r;m>S0J0l5}`(IIyY4m%6N z_`+RCm(lzq%;UHXy`$XfqY$VGlJrE%yQi<dIsK3tO}QAfrH_W0dxZgt2Wj+P5RMkv zrc@9gz5)vhW?m4>rq^tkp>mo1S&5o``&n7|uep$72ij+sp4{4Qro=aK`?)#1*vYmh zH(q3TCYdIur0!%$W^sE~M@i11VR!1qO+0MV{Drlo+z(Z<kQ$GfEunlnlEsZeYqB$N zKNyzz(J0j*@l~97^VTyj0pL$rskd|~u?IRp?CydZ+jV#G<On@1W=ohLVzK*Lu?>%y ziQSPH{i;v?NOgZK{u%l~%Q!E>ABt{Iws0MkVvO<RVl+Te5DW=G5ht01iRqnVVBn+# z;xE~dA#-y0u}`{q{;Vl}qVd+Jz$LOL`$GyIh8BS{S8QG6*9)mxI~)WTN{P5}qe<&? zm?|P~jw*Hxqas30GP~NdjZAEHFvN|%c8yV#i<EjY9-9G7rQuEbH=8mYy&{=};T@qu zwn+L=8^GJ{7Mla^=348O3>fFte{w{Fk{?;_R|Zi>_KCQEz~>e6ujQVW9w_Fvs#&oG z>@ugK6qdUuB>!#8u_p^m{Y?{DJN&1<s_&^NH67=96J=herPX?FNAQyMdEmnHxd)<< zYDFW)O=)&`HJte{{N#Qt!GiJUXAY(sk&Vt*j@lp7asw+nU|dVV(&h2+Dm=G*T|w%A zw4I^t0Bo)eJ_hSu0;sq(REJ;@G9HVi=N9Mz@6x~kULPNe-LClkcY^B9JuG_sfByzX z)&C%T4W4%z;kAk!fuDGMRu@nQXbS|OPXR;QoB8SNn^!MSo93K?U8Cle;@n3}wD#M- zXSwxfIq5=y_2tkV&aP-JA?R2#@5+(iWf}OFdpX^reTvRgur$ta_3MtIZtPD3Fvn3L z7&E0+FWCg)&zW6~T{&20Uk%W^N*#(n#QWciyNsa5WM}EqCoR3{Ou7Of&D?}6KrYf3 zkH3yjI^xxA{IfgDKE1$b#_X$SGw2fi4yHDv((6&U@YI9EgCE}qO^E=A-kb#g7<50n zrd!j#Jb59{Qjm~bE@0B9t?5PN2g#(R5bqF#cLyKjkFNUBQ$G&Xk0bTtp89eBgK7Xq zD6DJ<jY0!1Z~fxA6UJ-+6G!%m!aTFDro<TI9n2NR6UKuYkJ1~E?#9D==E^%odq*OP z^3p6W%JRjm3)xf(uq8VB$*<UoKa(phw4gF808W5V?_iXg&KkK>Pj^ILZNb^ZQm*ft zDq^FlTq@l@Xpe-JuEBCXL~j*UYMQ)4c|m5qbGQs1#8Ll4M;`YE9enZ<=feku=hC{s zeMfOV60F?~M4w6Q_*eIXM7Nis%fY{EA>Czk8GVNUNTm6<!d!w5w?M#QN&s_hZ3-Oz zbCBn|d{8tf=-VLTDBlYx$Y@Z24OU4<T270QBxhxBxc<h;xL4?l>(U`bsxTJpeX<2o z?r(;auKHg=y3$eY`gT{@jnH>DiT^<<{z2&GBuc)~qlI2>i_F(&;c_;nRX5Fpu!O%N zw@nB4uS6f3r*aSa7>wbh=d86NFJXcooVzohLMm_g(_~YH^4M&X*XQWNRBmFlSfLMP zSJD~{T_kn%D;8ccso^=MwPrs;U<=Ck(Vr+B$b_xQ8Z+#V5xGqha{cb?9u!sIXk4M} z$c|ip`W%%Uz`Y6TU8~l{Ri<dUxK9Gj$I?UqPA$E51zlLJ=FoEOJ0~}yrC?bqoK~aU zHSMz1J+TGki&o`Y*so_&qSSAJ2E(Xi2(VBZeT*q;EIEt9<@8MSXQf(B7j~E){r_G# z>#%{)p~aMAmn#H$dl=JZO|C|B^Tgh(K`fv)Tu#n0IJko5<)W@GXu^zfrGi1otx4%I zIwB^s#GF#phJnNloq-qwD)n85fW_V@#5fcJ;U^M`0wEC|!jzdF!Th@5o#wcJrV0&_ z^kOYQ|Msju{74I5%!G1!c<&yE4K#CYvGpYPE=-)Yf2{ynbFORexf^xv{gO2`pvi^` z^Z|~cdTZ<zy{ZUgkeExyxt%T-w?N&4l)8`Jl_bp~L?zTg9s4ZWHGcPu--pKUBjfkI zoL&XM$HSR>mVZ}fO>7jA>+zEr`p{VX#7Sf*@vO}n&c+<%Af?ySXVtB0!J`AjT&eii znS^19Cd3(5gE)qAo0p-7!@l^@i)#>FL7E~V^GDOSim=;TplVc@hObGQro#L^bfZF# z*=Ojq_lDb;sUME>wo)0HP4PsAPs0D)?00@o79xhI$ZupO(mpo4#c7bB^!13Ap`JU& z$|3DiC`nSKjUbqx4C_<0Fp3iQtE7se;1%}4w$~p@WL*s1-<%popV=e7ZJ|fJv`6UZ zVrh?L{T(S<lo^Fz-i(PE7fTjCziT3<W}mlq+6;Q9#+cV|svjoHWj*b--0T9KyW>%r zM&D%?v@lSa0<qeqIzDlyv7I0IrAo8I_l29BRnU(Rj%BgU3*)15<-U@BJE<l~)}O1i zKEm08!hf_v;g^yts_C_=e@Sh(<{V)5aXuP%6Qozq0XOXEZvMCN+^eH+P3n7FpuSq) zR#M*-FT(`to7<T<t)W81pP7jece^t%Wjhk@28VPey0WRL>GTB9L@~bNqfZAYCaUUQ zVKPuW+rm7cLDS<(5g4TMtt(kS{keK>vaXiLQymx=i}3}r%3o6=wk`_*(B#5867iQ3 z1Y&pZpg7;xpXlR-H=E7eGA8KHRa3q<JNM(W&c_)v9R?MQ(9n*vRW?34dIvTuV9i;< zq}@VejW??d1Kq;rt%Ke{sdaDzHdsvqCcCC#kQae15ME{*RMD+8Pue4!U(HpGCDJQ~ zD6O(EQZ{aH2$fkGU!-}FGK_w0eqzZrP+@9h^h#Q|<S89f)jqSd{Z0GKSRA@FR+Svy zUoqJvZnBJJzG)k0^!Mxg4pSIgaUS-%wbqwKPW**N#wyNV%e9$8*urGit-sW@%U~Tr zyQaI-5V&plJA2*QYuzI0dRj|6XAARM)u>&^O_|~3=KYktZtZpRUwZiFCbo?DZFEM< zcgIS-AqS1@Zu#`5scY`^Ue)So)r2*HpZ+umqml_L{a!s`RWKk00Swr@%=fAnLbbGI zhDu3|@$agcA+5fJnW0x>nX^8TH=GiTKHbWc&|AI4DW40B?%4cXP&pvhnF}&3+`?SY zTfMp|Wnr<G@y#YxuK^lf)ESjf%=m*SIDekzVHO`2!>VOK%8GqK;K-SWhxv~mZjz}f z*zWq<fVwiWQEv*Q_x{z;3TgYB-xKH^4ol9a{7dj!GrZRJ%XS$($}5h4IYyUAb*eeG z%i!^v4BjAXSMlg!_Mbn4N6e(76}q)@4=^j3ct6|BJNIVsW+l^r+qJVcEulGD!CJdg zHCow%EFM*B)i03C*HEWhW^uJX{i0dCQb}x?wFOOjT~)D3-quqD^_1+^_{R*qSE^;} zOXWr6F6M4D^@Ghyr2)4@D$^3zSFc7ZTM*EDW$N|IWA8Qe>Xvz1rdPjY-mX*#TjuEs zg<40GZjh<<#(X_Zx;4fz=Zc3?R`}dGhwSU+=uAZ~QA+R8GK#z)nO)H_X38<Nr`mW> zLtEGJ>5RhJa=u}aH{h0td|KlA+S+Jk3)25!wYL6J*n16ay=C66*4AGhZ&xavE%UUt zwyt)TZ-}Y&#(X_(y*0)$=N=X{=`ai_-QNl?7v6&DF5(fC+_1qQVXo=nQZ<WS+k=`q zHKl0t68f;9QU6ugta*J<N4IX3#|6#$FU8{$SvJyOZIicU8g><nH^<x+j5^5vQ#`(s zwSYIyCg#(lRr+)dFIN!iEEgLTO9j);Q6pai^Ra@Vb}eea->?imTA@R~Al6<>b8eBd zD>Ua9$=Q`^V2k{$r!8ywV>iaoI-|Xw{@e=Vh;xSr<@$3S863%sZkybGWsr78j&x?Y zYii9D`esG(@Ss#_ej)t4ma5zyJ4-d?7st+(!+d*8T%{iC>BY@(vBqewrxmxsF6Nh! z{;YHY$vQTu-c!SaDq_RG$_d+*H}$YrN9V5cNkMlkqd1J%SFusaHsF@@mr>#dDmdHD zhGo82Ll1vRJieY<-Y$!4=;kkz#jADCb{Sh=Uzht=H_F+%N}#6Z-WK<meTRL%P%d-B zBwgkOtdlC4sm3cf!{8jC;+61tJxl-%U6}{wb^1Pv0^C9tBAwe%W+wE)*{Y{1|8<J* z7TniQ`AW<NUmf;}fPkPjIBj5>j)g7*TO@pyLqHjOT%Z0O(b`8IW}%oAov{xjipUu) z($_LMkV+VkJ>Qu-SZBs;XF?0JF)-PE-0VJq>EANfYKDQ55qrLb0x#^6*B>-7p_TYL zzJ2b`n;ql<vRGf0LcA`&2!Jkb7<)6kd0<D_^8HudPB0kzlgT^;pzYOdbvfZ;_hDZ= zRTnR&!-KEBllNT<gewp*jtfs-<EfkF&wa|XIqO3w;x&F!!tnZr^k(?<ick=JzCx4K z1itO5ABXD4k@LYWp9dY;5U~py$An|nlHIf<d_OmCJ+$GXQ80dO4;w5RPA02iS^-UU zV#r>H5^Cb$p-W$e7d!duo(s+E*6pd#S2TZMHs7^3U!^NnkAhlKKA`(t*OB!{Ffm}J z)R3=&r5yqp_MmP$EEjy8oD{<&VsAQem$Rf|K=5s|o0ENc(`sLd7#2N!@bF>TjjPz* zShl?d$-fCMv1AY^h}~mi5|08DobpysR<o^aM9`pqO?@jbsl}P?AIr&%E{dwWwpp_F zf-j?Whh!Lpblu!u_L5Wr_7-dhzW9nH8ahn;F7L&}i;cQ`d8={D<WN>bqeEY3U$|y6 zy=YS1k0;@&TWs;6*C^a5Y3YX)84{Ay?$KfSZNJop)6qAM85htpc4b85@oX4(lb6x0 zN1?j<lxy1huFz$4>u|Qq_}(<q1mh6ZK$C7`Y?|Hn1n;@S>j-BvzQGg_K#qT%y>r&Q zN04!#J54VyyL_i0{%Ef(+*5^nH3}c9!iSE!*%q%QGVUu+!aTJNeR(Y)ge}OMvh~ZJ z?PYqWHZ}8BT}rDY|BSChSI=N<<1Oj(GJEXjA3b?F7`7nqN7nMRSl~^1nD#hB-VqOe zC}N-GdU&OJfJv#pDqi)eq!Zbm$|jWOJk~}<sw!_=PUOYOCd$RG)>kNI`qX%9yFZzG zNs12)c)IO*ExA?mS9&G6zQ35SB**)F@y05=JP@ZcROvD4BwFw+A`cfo*al69GTFAe zPPi!X>6OkEvQAnS57#GIq3<+qu~vF7n(rUKafc^q5?L(TGzvJt2MdVmabs_|XEyAB zZQfT~J-+DQ9I4Fs)Y8qJz@i=L8!w?n)eC8N9OF=8{mKKdsh>cel?JEV<Hw=sOK`eK zgV!KUSpCdlHTvxD8vpl?pZ<6v6ZX=80>m%T*h$XJi+D&QKzVr;pM(=~B44(8hCJQv zat+VE7iF@qq+XMZN3uYiy|NK{*b$i$xbVhX?ldcK7-;g@N7BgNXRR0mg1l3oNp6lw z>e~5~PXMZ%L$KbJ?iPDy&SrV}T6{Um@a5V%h~*I1s9FRw543!>sv$p)m!A0By$A3T zBoR$v>K9%WqxN|`+6_;nw<Tp9CxkYyiuDIi-~9Mu@G3KVGGfwK62l}vn1q}xqM@Sm z?jA?Eo(%s6*41e2P2N8~jYlWFGoLyX{@HzXGCtt9%{rBG<t@$=hpM6Z169?Z4{6uI zXgzA{+bx;LlAPN_iX=+YTuaxRW~Ei%v%#eGJzZr_8j5P734>MXa%rxo()x?3kE2S^ zEsLDEv8ee~0|T7lbDBSMORp%?zZvzLRj$q|<?86m5Ue+@mdpg15*f8Djmy;H$ZFn< z$<vgqSKMZO3?_X#gwanW^+H!!ptY<HwunnsOQs3Ki=4>A`$k<DRWou^YNW6`h;Fuz z_dsRY+gD#r9R8;CtEAHcoYx7}plg%n6dEt~OII^dqm>nU8g6O6)sS+YWfftbpR6^@ zEkX<O?5>5ken2C4N_UOmL#wpgW?s<Jb!=B}uVEYN?n(z-I>iyQSTaUr+>xG8$l`ep zys!fY0q!2SViA(Dhk`nRg}_+MVLpwnGHc|i8x7s52NTi^EWkk!UbL*9nEzV($qx}L z0=Xun^g_rmkXs+Gn}xpvV3<FaHZ^fn4lT~xf`mv&;*MmtOJn|6$V*L~$MoVv-VO6q z`)oLY6MJkrLY6Ydq%>mpq|QfV{BaNdv<Sbp*b~mLPT9(pk}64Lpk*kw3=I7AkdS1{ z2c*ivtf%ua$zEHMET75c3f<6`l#{_hGBz?QWWF6Jd?(O<AHA!%)$G%?+rl~XX0y;? zGX^x?Wm2*%Z)VD)#X-RBxHYOVCLbAHEo|$pe3=a(@ARo#B+ObkvmsayW1|{tB2{hX zO_DXJ%v35P`zBPEmccgL76w>|YnUchjJU*L9Gp=iN&VDNQO=oH1@`V=kG=aFVz1q^ zDf!zj@_(Pc)L{I64aV<h7_X<GIz1qb!VL3s-BIRzq>JfMZ<ZR0P!4of=#EXlR?ehT zP+Gb9CDQ^=#|+E*HSe~uuEnK!;IO@?&AfG%^Sp?+fyghuc}l`^_@LK*L*PyNI$dW| zYr;o|A1<$%RJ`^Knab92z_-?mc|6UDf%J@CkUz9{P~i_{^z$}G8Lm8~$oB;trBP(K z);5i+&6tyxhwA*bOq&ux{)w4g5Mw2~WSZ#to@tE@DTX&(bl^%iteP?5qaP0@Gxy^a zjH|9qv`XEv&6TB1k!vbls#igeA7cQ(T)cbw>YG#EAtscW+9$IaP#zPu_#amFC64&t z#Tho@i^uwMy{{ZqR-g~h7dz&?d*b$Od_vIPxaFrs+4h0rVC={d?C6isA^t=^F%EZA zB;YgQ(U1?+dAylm^xGX~lZ`GY_p?7|O@F6^o8N*h2Fh;C%v6?cb~Tn;j|uTB{3{t- zx#%N3VKKl}Gdy8j#fdj>J@XPkR&M>!Zc+<OL|~iPeJOT#gD}~3cR`KM#qMjNAZLe8 z5-q(J;(!qY?r^4?y4e~a*I14UV^qBk=e$OXX>9RO*-c~lRTxZm@X+^x^r;!+XGr%# z9t+1&I*OcL<~r>$H*u1yA*b=?*G;zBVcdG1%m7F9E-!NzJ@S$C;W87m17(nC^f9@M z#f<iCrM|<~#u|q`g=Gv}kS4lCub~@4p;|(#4PnMYxiPs5##%`eW18A8X>1Xv_hqIW zw68o3oa#WTrZNl9WAjKYVCcP78#nKOb<!-875FxI!idGKl@m3f(0re`!%?r9nW>f5 zl=HOo`K4Py&<YQ)C*pv7Ex&&S?9NP+Pj211)#O=_PH52Dh@fNq7L4YSLlSxXl)tWP zdLU?OGmtR%p{R88t7aQ$Bf3ez>DR3kC+R+R$={&%*~<HhsvFqY929ceCTbZkn!t}9 z9>D~DD-)DJWz@~{^;$eq{-pq8A3SjeW4li;y0=W0(W~CATiB`e`|wuUuk_;R7QvR> z{1#}=bm>2Y^DdHwdy#yX>rD6x<7@_)a45pHdi3!66cs)n8K3Xv3BI3y@u0wgtUx^l z7Id5sqi}I0zG~<_grjFqaHc!z+`EwFQnpZ8-mp6&Bk!IPDrnoj#OHx$ZYMk}l_}ZY z4Fsy0^1x{E(dPT0yJjcg?}uj9M`p=%AxXSF7Vkc!y~Z15y4${CvO&?H9*|X1T3InT z?@%+y-yfQC`&gWuFbG3KjK{J=p(820Cbm1G9w~1kl_~4OuVf#7bAvv7wAwvt=<vL@ zvTN|uoCc2<@;z~aZ8{Zkg?o|J?qzH9a-duK(cI_hJqz7<EO&Wui|4KUw^^e0Ppi8d z;}ImEE})#D`+1ROx+Yh3@lm#mJBp5yPCz;wUFco!Lpv9j05s&*Y3Un7AscTjg|zfH zs&*ICpoN^%Gwx$62&g4@8qtD_FWdz!o`P^5!pg(<)X7qOD=o0di^JKu*HSj5bOrSn zO<pTsdZQ(9n5IHU(BjmKNA7|RZ)Ndx#{($>4!$lgNT`7YnOrTrV|T=ABTo!5NK>;O z!kGq0-z(crlfu*SdMIk9YED|*&Z$I5&$EsJQ^WMm9__O6Iw;#|Mrl1Zvc*ld*sQ^j zW3rPAN|H^nM{N87*gd_bVY5!X$_f44O-5&}v__MSf-Wio3{8|gY;iBQ+j>IX5zoR& zxQvu}W*tm+6e%8j86m1DWJHXKGZ9-dCNh+*9F*BEd+jCc!2aHiKE^GY13NgyOSu<r zpXWtfl+K}yc<1OZs2uhC4~}Ww|LjHn<cjSDSSgJXy6-}EZ;X4#&O0(IoDYWVaAeT{ z;SKyiEe~V8-?O7VQ#seF&yf^E`gcVCj#1f8PnL31ogA)#u`bV1-s_0Nc6G;fJK_lX z=be4t{jd^r&V_mBT5Y5l=DlJK^3j~RFgGs)|5Ca%cy1uJ!Kh)6uzGuPlKDVist7=1 zhTc#N7oECLCSl^kn+U7WE;_tZXe#3dTDURkhych9?%<FAxr{M-3^2f7V7<dyl0B2W z0zz+|H1J0rIw<9Wh@9#Y*4RzlEQ%ClSBBwHJq+I%4N((_Fd0LBkO_e72=+SyFJbJD zJfQ>RB&0Y&0v4d{$+r}9Wo9!nVL}_Lx%w7@FwoIT(Y=o7_EwVg_0Gsm3Nq9bPjvfM zay#rnjr^$}fIXB(|D~RcvT^osB~H?4Fr=!J>A_Bxe5!+|amu9}<*&Vtz~Zo|foC1b zI$R%AX`h0WcDpNq^*V>vUbWNt=#S`+jO&q$OJff`#wE&C^_scvy-AM&UksJm%Ui5c z(XLSQsWp3JMX!~#iHe3@lPfE5S%)pxMW<_^vuY@;l3o+cjfTNt>f18uF+|og1XhWw zjlv_z@TPdHV$W$B0#yj>Ha~H)Q&zVoGipdlEoRhEsR#eR@S=t~>t2f&CFXg_MhXFU ztYJ>9`vx-nA@Sx5vVbX;{*)FUxX%Od64RTV4@7w9xOAG8j*e2msPjSlEi_~uc!3WM zd3~FH)?N;t;K3r7u@AN>GG9{e>RD#MS|zyyONx?7Vl~qbJ7)Q|X%_R_1@w|Mj*TD_ zMQ$0vYmvMT(QA>N5?*#X(j?uOI@h0`(-;vcCZ?1~QMbtM8}BmtZ#VdeP%;75Me)RN zw-1IVje>{`kEjVsvqTj_|8(n|AJdgrh8>?icZ4os^<g5&a}Dy-XLe=YFUBVn%kRyv zVCjj%!Dj=HdVOA8qANf&-7EjXiWGI-`%g~fP34|(?DQ2gI_P4Wq7Me%@$d~7UgRcW zgfFffE`UxMd_KqLb3X>S4qjq8ac8mjxx-CNQ_2aYtHDk2f!3<=`FS0De!lv{@xiTf z3pzPp0{RVpKDi=~K}n!WDU$1=*nEH4y^lL4HPB?ix*YizW!Dd`!Mn@6Y>jRrTg~Bk zO>xI-7jq~L^C*q4h0<zOV9W@knZFo@ZZsZTgwaPln@dqGJM?k7^as&02<Ww1+oLOz zeGAIAVT?evVeB$yFu;}hG70By;v*(ksH=Rob#!|Y98l-SxQKSM+73W?b3e%}lJmNg zSlCYItpB*9VhLob6V=u+V#DY)RB#S$QtXK7^xVHlkDZkEV7XvfI`YoCddm>_LSIVS z?yjb7F<Zue2z_@qOJ9Z_d1@y!Z<~_QNFyo;M&(>=gj8Ud+JI`rg);<la)TN74*Va1 z<5Sk%d-qDGLMnY(zw}N?@eJBDeB%B;$d@;uSh}$vu~%4aCm83@({Iv_(x=bOBjwWI z?azE=Tktc~9?*dx4t~E#!;ttJbUs==X}LY&>{E=sqH+EazO{7eY<0Z1xmX>=$yOcS z+j&7gHY+O##^@}Cfvx1%85%jV|LtF)ZT<Bc{4HYrCR=$RQ(>pUZ`D1_TR^#Q;u}Ab zq4sD_t3+-tZ)~@)dpn}JfKMaLp1QZE4K;uP+98at>On69JsS6$H-eDct82EcooL7r zQ~<;&{`_5rGNV%otxo#pL&K)y6r>IfgQ|Ax)TJHH86e{zGUg7VA<Ju^Q7+`GMT_DH zHzrwX_dMVCvo$*34q~m&w>T|6Y=Hgmn2t`WptcV6#{G*7Pn{o}9EE!U*;cFDsYIgZ zLt=M*MT4cbqGqgs@nvmEvq7-R865~7QPdW0*w&LU+9C&GFlIxZ0CCgX3c^rJYC>I0 zl`-+xP-Zfr!br!)?yMnt(xyivOEUI3ZOa)ielX)v<tvpcr_{62(Ra(Iwz?^dIxkQY zkctNGIao?f=_e<XFq|)Nl0M$kKf^_GJokbn9y@JtX#b9hr;L+rA;7lb%TltmcP!jK zer%+n^$lLtXc)X_is4&BPlf*?uQ5G{dEnE>MM~h%Nk?U*DiAtCyHDg=Fmzt(V1*3h zYt(#htNBBnnm-u3|C}`dorT>rAY1WCE;Vv~f$;rfPeu|XYJc4lEA^a@aH`~sHG#jL ztb}`A!069-xf<=~Kimj@?N&C?O#Q|-*V-Cw78|vN0a=v<|1$GBbkndu7^ttldDRzZ zU|+~MOBjYA<zw6pFqA|P`T@4p3FO-N??%3|pB8oW(1B%?Sw^g7C^lpwNy`{itJj^B zJvnVh$v_NJXg%EElxtdLaTiLBJ7D_9l=_ieLOQbP1$=%b4>bD|u~VpHb*?m9m+hvh zK5Y%*l3uUVOWfd!M+1yA9jF#^^G3E0oU{)dy=TgjYS)u$|IH*d9~;$@Nl8>3R8lIv zt=#zp`(c*0QL0C!Xa}tHOvoyLIdFA2L(*C9_>g=WeCtPX^2VQgsR{Y5=O#-G6!M}u zhNY<YFT>>7(x*}KTIT7aG$C9HeRt6^z>{U<-kV*xSCqgv2HY_2h0go!HOh|x5@awa z7Z?CT0jYTQ#hf)|4i!sGqYPl=a(jt9IE*cU7yxv{azJ5vt#^E)?1w0vw%Sl@cXxzi z9`(vDxp?K4myC)<$e$dlAB7j_^g8@p(o4z{+TrG)$2bda3viIy>8<N0I-OUvoOzLG z`RpX+vb4|IrqfiE$mBxa2>Lt_Ps8AcH~&o`LlFlzjllo~YabWV(Dm*pp~P<f=nTJ( zBljW@=&0bBs0)9boQZHk;Hbe-<aq>M`+CD*kz7enE)j_Mej7$lh|boh-IH7d==;Y{ zX0yFJUl}x$lmf*V>(M4wd9&DC6XXhj@_;0;1-Ht{@Iq#!DV=2`n2SBhVk5#4S~Pp< z*g=T^NTdP?e6wF_rWFM4WoQw(_m4->NwZzm1kRD~-^;18|Es%`t5eDyDPt3LF4Hb# zC8Eg##0;A?(U#{yXc&m4p8L}1+1#*N;ZB{82Z4v73&x?vv9Dh0-Enr0VKqMcKpUEG z{oti{A?_3o)2Y}{{%Qeg<f4>5O*+V6We4p7r?rV^GJm2>QmI=e&V+begBx<A>2i+Z z#DRynClZ&Evr`~TLfI;H-8HGhM(^Iu)3+{V8p2<QwsPE8Csei4mJ*41LWZ1w{PfX7 z%XxhZ7+JRhM8%K_gAvcsn9GxM-`%~7FBN>b5{*T2;g3`b3uYD{>8UsH^0n?(bx?Un z^*Sb$JagzoHebBba{k6`%kxdLH#4bAVcsgC6<@ANs!enW_J%0$R#HypcTLh)N+qE! z|EwuaFk9esu!u}^o9v~2`pL}Bkfwa4;ObWQ;NXByTJ4Bm<l;r8V2wPSD-6p#{a|<@ z3av?o^S<Q0gM;am7_DDnlk`reeqHFEzlhJfoY)Gpw4D3i1yN-y*RzysrUI2>+A$C6 zQ65E^;SX~ug3adn#%Z#KifT{71!oU+uVfZjOo1k&`!Lzp3^c4KYpJvGxxV%TW-;Tt zr$Fus60OX;yMpu4rR1njc0)i`p9RZ#z8=1_SAwx@_EV0tC5?0yBJ1PVy*Yj`tDy$~ z&tIgSwg_XN!w=}P5kn}AZD6Y0LX%OTmYtpv1YMPUf0P{b+@1Lpz@H`!ox2}BS^!0! zY?=+LV)OY#X?t0o(t3Xp-aVcYfQt|l#*IULRJ23s7!ppGpQAD);v{|oxwdK`^5}ZN zV{0R0!G1hwJy9)`E*F5qzqo)}@XIRuyv1$Rr#d?<NX9NmhT)&ba9g=%d5tlM<Qbq_ zbJ$0K29dJj$z8-Q{a7zWC*f=sUg!msOfu1ja=V$xemcO-3x9M$ft<&<v`2eO6;%O} zw~*TMqHGajg<D2RTJ~cE<;+cVImv@tx5l1=q_U=Rd0H&f9h?%0G-~r!yd1*ppDYP$ zy-bePAf(7m6MrMbv$QUsD&jCwG%PZtBcj+#>MkK<v4MCP6gicCPIFSEQ#KYO{%5m% zG{uk0fYlG3{-jkf4E~=2|8jTcgC^n(Ix+3lz!HD@o4+8p0eXlqJX$$+utuX8JdNeq z0{b5I+E>s1&+{KRt0$~uch6BRp-LFJOU(QTHWE}){v9rSESgP*@KcP5YztzVNiGHI z?L71`LB}EjcCep>qrj0Pd(+=I3(U~N?obD81z5u9V!}gpsCrwVqQL$gBP(8qFx&cZ zn|EM}&EH|G$pI3kXG!6^qqctH)MsP%TPJ&-28l>tgzAnf=&zhDs$!b8C7J;P|J?yv z;SXh`*r9GH6h!d4pmZ)4qx)^J#O}Db019*p^r4^L`lU_2cSaguPXBT12_<Nrp85a$ zIGYFI;@2onmgg6jSHESF22<(7TbGsp6>A)=1^?dK@b9k$|H0buAFc)e(c1942cn{Z zv^1a9=sc1+h|R&&NG~?fD-IR|Oz7@%8uy%LQq>!o!!Rj8i|6UzlJkX1PG*1YQM+xE zmolxE(=HYrnx3~)YE!<c(3`!y-b`%>#`@0Q2>+y#xi>P^V%jDaMGp$A#dsg++JAZa zcHdH()Tk_-9tVYnPEO3kC^m<Z=`Y@=kYAW_zEjS7x<v@!&?W<Y+h><D!*}Ge9Jm(l zjW{z4+u)SmFD1|B?XBHfE;T-_<_*HIRhc%+*GJjm{bI?vHgf3|W6HasoXiSH*;ZNx zJ>b59o`OetR908c(xxll`%p~qmq98k&*j2aEzagTGDw$L6@q-25oEfZ5x!(@!~|X& zx>p|E*LE^A6M4JpvxGuc>4h7OV`F?M%%mMaaZAb!;MgU!bYvWxH8iRO5^*)6Y$$~s zD-j+TTn&s4Ev*7(0fq1@fEhHdAW#9y^>1#X#6fV1PVM|M=HK((zw~@()rL=2Xv4B$ zzH&x14noQq(LC;`6v<vAcm9+nh5#=O&@0)P@?_?4IkK!dj3)IIx86u>Vz&O~Ueau@ z083*s#_UOn*ueo5?|b{F`!zHWHy}=$wRKe;6ry>(rk%aSvA{Kr0%<~A?*Fnswd#^o ze3T-|%MF_7UzHx$&8d{ra+UH+ambv4O8KSozhaG2m12c|Z*BOcD#Z%_!P@XkRf-k< zqqX6etCU|>n$Z8AG5(ci44bjr&QAkJCDTAoldCwsGKZ6~RI*MBW|Q}99wvRx9<8K| zHeBBxEWo>gIhf5yfxx6no$bHaFLPBLL<Jj-oEGcaXfM_paWB>$aWB>yaWB>$aWB>y zaWB>$aWB>yaWB>$aW8J_llZqn{nu2e8NYu~sopEMtyL}>)0JP?Vaq_bew8kmGVg&U zwjw!;!VApGn7_cK>=2AK6Q@051aUR4FMye0qEl<?6RFs~5z~{o4dxDi7LL3blCzr@ zrlf@K9mDj<strOX8J*E<a`y0U2?uKc8<NPLrvgaiqU%!B$lcbX>8gll0j>icgW)V3 zeN02V`TVf+3;Zk3#H3e{>I^d3+Y#{E4ucPz1{Lb>ml3OSp<){y1&@eO$I$7Gq(wDf z5IL^yM3d^co!9Qfd!4w65wHE@GWgk_KM&rd@!Az3*7#{gc?R`eDA@D2WFS9)r|2p9 zOqaLv5s+KJJl(qH9#x>goy_+qR8L<WM^Afu$Cy>4af_&W3e;oVIi57Ur2=O0S%ztM z4?5zLKNh<uX*StBv}V$DFy!@CdJ76manAip^rCB3<ChB$&$F=Q;AJ9d>5ll@Cyf5? zi~FBtv@Blgf%wLlLwy#86lX0Dnz-UW2hX3qeD&jL$6y(T1eqtsD0oeT5rLbde=nRQ z9FScep-dZ=%yzyeYjxzX6wv>94+fqss``Gr{kcQIRf@E1FPb;vo`)YXNEAfKb1BUS zUR+LWsDm~2+`4Gfl(HJ_^2YO$ObGB9I70|?XrUw^Y7FGwL1j>P|3;N>z?{pZK5t$p z;UX*K7%^VZL*@{v&_hq><F~LD*4K@fX`;-D5~v7zyh01{#KrRwEQh}HaZllQQk=i% zCMp%JI9|@@SA%m(CE>i$x7X5Z<+|b6Cj({BOusJuM1!GwFgY+Vz0@hqj4?^miaWm; zV4PA_qiWPpGtQnWT+lM5GV^QSE^IXf&EQzwqX%jv=DAxgc|DT6mAKrN>C@{X0(OhS zB?#qiPqpx`M1gvIT}E{4>CyawidrKum7I#vcj3l^B?dta=)%|mUl?0F!UaM;`Z)3F zPK`x+(@`KU4Z{yu-~}qVEe9B@LE=x0At6pg4~8KQ9QdQo;Ml^W%YpA`=taBTxU)(A zM67vl&Yne|qoUB{n^RiN^t?&Y^s%N#uagV1Df+qvPBa~z%j>@Bo$g(GuG_S3Mc(w4 z>17FzJK4J>F-!bZ#eVXox*TUr(Zd`fT7o%&(`l#A-PzJhV*!_Orgt=myidtkUUUj+ zA1y@I%3fY8N%3KwJf|7i+E_2Zi12iXT+4x#kvuM!wosLSvQ8plo!Ke{dDuD1rCh!y z`Zxm34wY=mzAUbV*G|sry#cj8h!>u``Vr3-`>{>{(sK5b`9gAz*QL$ZAN>XBsJ@7R z9w-<KEF*NCrpcNn2R?!x6r;$EF(#Vtsxd;JQ8lW2PGr6zLI^eNF~Z&lV|$rQb|3D! zV>2d>AeyGbj`?6jopj92XR1Z<sL<X-pF_g=ZSCq}k{r7M1&CW=C=QEUAyQ~`uOLxc zP|utX<7N018*8<NI}D>FUFQ;0G$IZ2c1h}dT~UdW;*^cUh5R9?$vMhbCIA9`gUxb8 zgL#c8bX_>l#*6;=N-nM<07nNY(04#FuUsc5f4bTLBf)VF$z{4pk4-QA0Z6rr_DuI6 z<7mnNdgIBQ?5PS&J0rzXTb5bQrva7<?}Af=4*1BMk$g^>`tYGVSe6Y?*|A`DW3=UM z@!au$F!J_}dGg`~A7sz!m>1#niMl(7kr>lmP$4X<$C>N0tXT)5`BNkHk$JMck*4AW z^<L(*vzZBk?u?^^yc)ckx=eKCeOQF4nQD*iQ@pzKSlq@3$!`34d?{a)PpJx|9+w6h zvIT;w55n^u*ZFh2#?F)4lfm1CR2qt+8ETXw@~DKmtw_Dh1{3Sv0So-R4?x^#igDtc zCyJlj8O>u#wQS5H)5S{-x!F86*3Bde7`%IT2zo`Chw@brT3%)@hE{dm@$pB`TiD)@ zqtN<(H~(@nImUZwEU(95Y<W9(M+Mx1(J{?w@`GJ&9LLDDDIB9Cm<?5*i6vD9kUf>~ zC977ILAI?bvs+a_vU5cdVC{+$z~)MN70azTX_NxosU^x;y-P`AvO~%`S{E*#h*6f0 zI>b$3gyq9m79T)yb)@8pEu{n>cez7Nsg$bLv#C6>+;MptVM9js0p4rgmFZ8-jhq6} znCn84p>AYb-6mL4?r>zbn;f6}bJ?s+S6%{{%?b62P^oT=_+G0;J>^MCo8na7F6XM# zFB~0eX>F`;q`RYc4J7mj701nGgO^>mH$0^Bhxe<>n?|WR6L|dS(W4WwxZuOY_a7eA zt^dAV==59;TSIEcs4fFOn{8fwW|34ZI*>*4x8Sj_g8L!mS@y#!4rfbCE<aR#$ZLQ+ z$Q(($etzvwe|r66H!EPBG${+GDp3cp@Qf0k3cXZEwe~Eu$NqE~N8Qv~DLJmS4{CY; zqYqZUHZ)|_0qO@M^M=OqPFXp9>RVpI?r7j*Hx^iyVnsmNEqs~7u-bD*2mbR7wLfcv zMPk%QH_fs|tpb!kz&juF^3*&WSiE)-ile<x-rBq}da~pj0gKkM(H4tZb~Vgfmjzvx zKL$YY{kp8pf`&n4$l!rx<jDYdRq8*!E<HYbTUqPH)q4S78}&I_cowVK5p>#Ab;M{H zMW|>CD>b7__;@OmxJjq5Wrj;{y)52*pLEOnB-8R=r*qzdogXd}zfSLP*8c2?T)E^9 z`1GePi2fF5;$UVkv^`)!v<RJS?|wrx<vN#*?%G`}v6tEkfY4SA{Ka*jqx>vR8=caa z*M7*W2`X4%6lEWW<<9_c#l;r<X&C42Cw37?Cx&;<>BDZXpWf(Pc0fhrrKEsXVce=h zU{hVJ4l;+48(rZQie7{koOH7+W4>8IU2I!1&vFgwq_2mx5T+3o1}dQkuZu-;5y}_m z^oZNQ*%EkFYx-spdFOsemk+RZAI|*PxX6a-be9qbN=92aC2K@(7|VWw1pT7IH)MPv zEHJgjjy5|&h3N{NWVq|XyBdW$ZL9N`?F4KxAH9)_J4>6R*d98x4}v1O3(JE{3CTn( zk^iK)S5;f_yjY(+0>qb$H>;ezSwYh_WU<26nIw~@1V&e+PC^#boJ5*}NQ(%PME3hx z)+Yqw1~O?U*mio**yk$9f;c`Fx)(vWbeS^y&R3OzX$lVMjfdSsc@xrVOlx&buaRB{ zUb}bPAt%T?b7OmV$(~w{IK@HQRePm<1wi#p#8o|1Lii1P2%4E-I!pdZruIgAO9CzJ zw{^SC)@vzef2P|}1{$kD<Y7ujBa^?yEBQg48f_F)prrXupYa7woar<$S2>udA%aEf zVit~dYAJ3wqX^AnCBmonXK0_AHe<$u_o?@?HUcah(FKv-Q=lFiN(eaLmGRovd+21l zyi_-*+}9&)M?$FDPbVpkO;w{C?vMo%yztOFdq;TUYb2Pg&8w@cijqT@HedokiuT`` zM_H8ggQ{1BB<?E=7P03>qch&uf)VM8;joTCX2ug@O3ig7=4w;EqwwhHEMxf)fG&mr zl<xm8VzFPY*h&V7naF1O+i$r46E1@>ZJ~)c;me#y;T+bWE+tSRy+wIPFk1+1LfKZ% zyd5!^d$DqF!P*oSm>+}if=t{vlnGSOJf$nwzkj{^mV_W~q<aJ3zgF)Gl*uLx;)Kat z%})6Joj)FX0si_az$4rpZ60?rMlM|!_Tbn3Uq=P*TEsp)QWF1&^8?Y5jveuxy|`x# z5w0NjY@XGjt@2)*;)ufd6b|{?B>P2nn8|F4zgp>SN@o83eb6Lb&fX}?xKpbVQt%aY zo%{1?<SjCbRA!g_qQv08Watf;^cWzKs))4D)po@l5f86b?bk>Ds~{s^XRmk2-OhL} z{_g%=$h_*Ok9zm5hDer_HF}-Wc&9PgsusN=LCQv_8>fCQ=QHuiu-HYql}%As3m0bg zyT_0FCz(R~k11N%c=uVse@fZOzQf$DcMQ-L-@%<s4n>N}M+HX@7@M!_PW#g^NdtP1 z#e)ZpwAFmbN%m5Y=KElGcUL?y5BbB3_d$j^LgDp3K(Ndg{O{BM{6`(;WJ^izm@hv! zt!tO`#t<EBZR;Yrp^-XHQzl!%K6uc{F%88+x%kZYjTPcjF=vpOTXi{!CGEK?TAgd& za_<OY{!XXnANa;K27}-Ou4o;n1M9J>+ee<4T|YATl!UYJ!i!pb2}%32Q1_9LN24!u zxFw(?8kq}9OgF+Hdmll@0x*+Xuf7oExw?fUU$@3JB+t`(NQ#EHk$N9=k>%D9b&mt} zE$!xxLocR-E3xOz>F_<r(Pv09QfP2y#s*&@DFcdRf_BbPADGGO(=3cln=|L-p_A$8 z5}(iWY%#xWA^7TQv0+Nfu|B#!);GQhBNeaWx98b!#vWNtcFS(bc-|;plQHm3S_?N~ dG%=vOFXA(Ql29uA;~v<SG5pKxN?6=A{vXUC&XxcG
--- a/src/version.c +++ b/src/version.c @@ -747,6 +747,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 4335, +/**/ 4334, /**/ 4333,
--- a/src/vim.h +++ b/src/vim.h @@ -1304,6 +1304,7 @@ enum auto_event EVENT_CURSORMOVEDI, // cursor was moved in Insert mode EVENT_DIFFUPDATED, // after diffs were updated EVENT_DIRCHANGED, // after user changed directory + EVENT_DIRCHANGEDPRE, // before directory changes EVENT_ENCODINGCHANGED, // after changing the 'encoding' option EVENT_EXITPRE, // before exiting EVENT_FILEAPPENDCMD, // append to a file using command