From 153ca9f8d60a64403694bab5dce8a72aa64b1230 Mon Sep 17 00:00:00 2001
From: "marcimat@rezo.net" <>
Date: Fri, 7 Apr 2017 12:24:22 +0000
Subject: [PATCH] =?UTF-8?q?Plugin=20=C2=ABDate=20de=20modification=20manue?=
=?UTF-8?q?lle=C2=BB.=20Il=20ajoute=20un=20champ=20'date=5Fmodif=5Fmanuell?=
=?UTF-8?q?e'=20sur=20la=20table=20des=20articles.=20Ce=20champ=20est=20?=
=?UTF-8?q?=C3=A9ditable=20au=20m=C3=AAme=20endroit=20que=20la=20date=20ha?=
=?UTF-8?q?bituelle.=20Cette=20date=20de=20modification=20n'est=20pas=20mo?=
=?UTF-8?q?difi=C3=A9e=20automatiquement=20par=20l'=C3=A9dition=20ou=20des?=
=?UTF-8?q?=20changements=20dans=20l'objet=20=C3=A9ditorial=20articles=20(?=
=?UTF-8?q?contrairement=20=C3=A0=20date=5Fmodif).?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
On peut utiliser par exemple en critère `{!par GREATEST(date,date_modif_manuelle)}`.
Le code est *presque* générique pour gérer plusieurs objets éditoriaux, mais ce n'est pas fait.
---
.gitattributes | 12 ++
base/date_modif_manuelle.php | 34 +++
date_modif_manuelle_administrations.php | 49 +++++
date_modif_manuelle_autorisations.php | 21 ++
date_modif_manuelle_pipelines.php | 196 ++++++++++++++++++
lang/date_modif_manuelle_fr.php | 18 ++
lang/paquet-date_modif_manuelle_fr.php | 16 ++
paquet.xml | 26 +++
.../formulaires/inc-dater-modif_manuelle.html | 18 ++
.../spip/images/date_modif_manuelle-128.png | Bin 0 -> 26754 bytes
.../spip/images/date_modif_manuelle-32.png | Bin 0 -> 2783 bytes
.../spip/images/date_modif_manuelle-64.png | Bin 0 -> 8602 bytes
12 files changed, 390 insertions(+)
create mode 100644 .gitattributes
create mode 100644 base/date_modif_manuelle.php
create mode 100644 date_modif_manuelle_administrations.php
create mode 100644 date_modif_manuelle_autorisations.php
create mode 100644 date_modif_manuelle_pipelines.php
create mode 100644 lang/date_modif_manuelle_fr.php
create mode 100644 lang/paquet-date_modif_manuelle_fr.php
create mode 100644 paquet.xml
create mode 100644 prive/formulaires/inc-dater-modif_manuelle.html
create mode 100644 prive/themes/spip/images/date_modif_manuelle-128.png
create mode 100644 prive/themes/spip/images/date_modif_manuelle-32.png
create mode 100644 prive/themes/spip/images/date_modif_manuelle-64.png
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..3c1d479
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,12 @@
+* text=auto !eol
+base/date_modif_manuelle.php -text
+/date_modif_manuelle_administrations.php -text
+/date_modif_manuelle_autorisations.php -text
+/date_modif_manuelle_pipelines.php -text
+lang/date_modif_manuelle_fr.php -text
+lang/paquet-date_modif_manuelle_fr.php -text
+/paquet.xml -text
+prive/formulaires/inc-dater-modif_manuelle.html -text
+prive/themes/spip/images/date_modif_manuelle-128.png -text
+prive/themes/spip/images/date_modif_manuelle-32.png -text
+prive/themes/spip/images/date_modif_manuelle-64.png -text
diff --git a/base/date_modif_manuelle.php b/base/date_modif_manuelle.php
new file mode 100644
index 0000000..8f46270
--- /dev/null
+++ b/base/date_modif_manuelle.php
@@ -0,0 +1,34 @@
+ "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
+ );
+ }
+
+ return $tables;
+}
diff --git a/date_modif_manuelle_administrations.php b/date_modif_manuelle_administrations.php
new file mode 100644
index 0000000..3a3cf88
--- /dev/null
+++ b/date_modif_manuelle_administrations.php
@@ -0,0 +1,49 @@
+ _L('erreur')); #impossible en principe
+
+ $set = array();
+
+ if (!_request('date_modif_manuelle_jour')) {
+ $set['date_modif_manuelle'] = sql_format_date(0,0,0,0,0,0);
+ } else {
+ if (!$d = dater_recuperer_date_saisie(_request('date_modif_manuelle_jour'))) {
+ $d = array(date('Y'),date('m'),date('d'));
+ }
+ if (!$h = dater_recuperer_heure_saisie(_request('date_modif_manuelle_heure'))) {
+ $h = array(0,0);
+ }
+ $set['date_modif_manuelle'] = sql_format_date($d[0], $d[1], $d[2], $h[0], $h[1]);
+ }
+
+ include_spip('action/editer_objet');
+ objet_modifier($objet, $id_objet, $set);
+ }
+
+ set_request('date_modif_manuelle_jour');
+ set_request('date_modif_manuelle_heure');
+
+ return $flux;
+}
+
+
+
+
+/**
+ * Ajouter la gestion de notre date au formulaire dater (vue)
+ *
+ * @param array $flux
+ * @return array $flux
+ **/
+function date_modif_manuelle_formulaire_fond($flux){
+ if ($flux['args']['form'] != 'dater') {
+ return $flux;
+ }
+
+ $env = $flux['args']['contexte'];
+
+ if (!in_array($env['objet'], date_modif_manuelle_objets_valides())) {
+ return $flux;
+ }
+
+ if (!$id_objet = $env['id_objet']) {
+ return $flux;
+ }
+
+ // insertion des saisies HTML
+ if (($p = strpos($flux['data'], "")) !== false){
+ $input = recuperer_fond('prive/formulaires/inc-dater-modif_manuelle', $env);
+ $flux['data'] = substr_replace($flux['data'], $input, $p, 0);
+ }
+
+ return $flux;
+}
diff --git a/lang/date_modif_manuelle_fr.php b/lang/date_modif_manuelle_fr.php
new file mode 100644
index 0000000..7182b73
--- /dev/null
+++ b/lang/date_modif_manuelle_fr.php
@@ -0,0 +1,18 @@
+ 'Aucune',
+
+ // D
+ 'date_modif_manuelle_titre' => 'Date de modification manuelle',
+
+ // L
+ 'label_date_modif_manuelle' => 'Date de modification manuelle :',
+);
diff --git a/lang/paquet-date_modif_manuelle_fr.php b/lang/paquet-date_modif_manuelle_fr.php
new file mode 100644
index 0000000..c44b7a5
--- /dev/null
+++ b/lang/paquet-date_modif_manuelle_fr.php
@@ -0,0 +1,16 @@
+ 'Par défaut la date de modification (champ date_modif) d\'un article est calculée automatiquement à chaque modification faite sur un contenu de l\'article. Ce plugin ajoute un champ date_modif_manuelle, et permet aux utilisateurs de saisir manuellement une date de modification de l\'article, qui ne change pas à chaque édition.
+
+Une écriture sympa dans un squelette peut être de faire des tris {!par GREATEST(date,date_modif_manuelle)}
qui trient en fonction soit de la date de publication, soit de modification manuelle, du plus récent au plus ancien.',
+ 'date_modif_manuelle_nom' => 'Date de modification manuelle',
+ 'date_modif_manuelle_slogan' => 'Ajoute une date de modification sur les articles à saisir',
+);
diff --git a/paquet.xml b/paquet.xml
new file mode 100644
index 0000000..f87bb4f
--- /dev/null
+++ b/paquet.xml
@@ -0,0 +1,26 @@
+
YXG*Wy)1oB+0|p zImm>54`bvUO;S&_K=?E48nm3LlI{#y6VKkB>y?}_4l5!|;&<7yEr5PPpu9ZguHp8iMBh+#NKCTsKY`JYw zv~sRChaMMSTf(QhtMcLFuo~dvdc?uFckpe(D(UX)`d#-aE^L0oU2%_7Wgnm8G~)8I zmkv5QwK_WP@H7T66#naem;Giib|+4{ nbTm}b+bC+>T^j1hN~ >d!$F=i 4WvjS)VTs%w78hq;m&bux6CVv!H9s3%#*)s<=v@f zqHppI9dvmI?(xp~NNnqql{&ikx;1AYjI_KJEB@sk%A~f;H?{#ya NE-d>)Wy0u^(|80wz_dfx} zq|g!PD-Q*BWTsN%9lzJR5ACrCOI&%?Q^O&Ory6xbJ3hezKIM5W`rnZ2spJq2!V*#> zUXDKRtv9Ea#aQI!MciD2CC^IR3R`MZssxf*#YI~)`ckcwQ{W_qsWGtgG)4qV;T0=i z#w1VXC zrcur0!dvEyQUWv$m#*U7*K;SE=9o)P2$? z kNNX zHt|CcTT@WV`~W6j&!+{7Q{*a7QI+IbtfkznJHK-GxPEJk?`>Va>E*s^lUmT4@5fK-b{~k_wO7L4hv`Vy7 z<)oRoP{G53*QTbXtRao}>>T+v71%mLXzwb&79jix>vFL8?pKT3q?x)B#T*He5Cu;@ z$DEY``U-rDDt%r=n!K!hm@;*G>zJmLV!TeBx|t7gfmiFpBg$?Zh_YgByS^Qym#eF* z4UC5=R~sEmOYElVuHs|p n?*XLPhwW`iT5MbMWxDg1wdO?<>y=4y4zeNj12p^Q{pC>kD8$_ zO=54km=?oghtJiyak9wSic9P+3#&3YLBCg~&FuoWgc?mRW<&+ng26@I9s-Hc42AV> zKR;ZM E=}--o5XB=X~Ee_r4M=*^j>Y^^UdqiQdr7t^9>=^NAa-w~F~?aZM!at(ddIluoUP zyx~PJ=L 9)4E{(}b(dH~|X7gqKDawK!?es*!wxUZxwpg9Iln2^*!3Q!6JmEQoC084@d zgn)7czJg{Q@)691;D%6CP>d??6cwa&5#83}r+(+h@BQ}Id$$3gzjHV9!xqo&>9OI3 z1n5Ac4j~oL5n;?VM1GwmlvF}QLMh2(W@wdb1k6SvYS5Hy(7;obXZZ+95lEpVZvMBt zV}H92xCJ0R&zCEWhuH}Mvmt~ErUE$M{leb6%De{ftH8f(qZqj(D|deFXQcnjkzmV8 z5;~wSF*PUjlCh?H{J}f=m`|h`5Ge>07y?XD38YbnZ+`OgD{<}D!9KL*c*#E)zVOQq zEi`;U6O|weOA>_&BGaB*+|lR4KUD%~F~qv^5>*iu%@X=UN>lp(4IDrLTVlRby;l{t zBxFPIsj&F$v(H8k=Ezd0bWc?%GDJm+k^(=fFcL2L ?&-$+3t@RrOjITtqOzDKD%2IChtG2%xKSn8v{qrL5LIaQqKa(3 zsxT2O1?VhQjU&O76?u2<+7(m-2o?Rgh&@&WqaKWV;QCOn>!doma2nFYEel8LQNpri zn=U9RC?`|csYYt_7)GKNyaFok;)fnzWG3+^M=_OR@a`=pvkS~Mw^Oe|l2Li?!i7_E z`}XY-fWFd{^v^)s>NV6q{oK^ z!Z4& Gz%lu`&Ga2y9A#8>J;(=;5%K`BKL1e8i8q?8y^($?IBt!qqAPct<c+1k zdXPPUZr9e~)}?VYK{A=7xw#o3CGs)PWHR`^kL$XuSh3>Kg7kgn=jX}i^E5X%<2Vjs z7*@xZFJF$PY1GuzFgZCnb^7#axqJ8S2tej?IV+t`qw6}$mMtR|i(#53j^kii7KUNa z-`~$O&pgA6FTPl1U}|cLS6+FAo}M1s+uK>QW(|iAALgTvK0*kAVHl5iDwU$PwiesA zM;?F!=!Ri ?u~;?w!NEcH@88en&6}B@pXc7ad$hH+A%x)M$&)<) z{PP?-bcpAkdye+@_G(=`E}v v-dhH|Xo@qphv&E8wo{qLd;GLo`ieZfY89 z(QkP3`~SSG8h~k &obnVFeE*L7^$#`pay*aN^^ zE{AEF0GvB_j*AyBR& MfVc)n0FHZDnX^sM0>V&TFr|#_a4YVHgsIA+cDD zk3asHL?XeRPyU`K(m!TuZj{>-0YCWmI7hGk2OkdHqL`WG=Iz@|Q~C!zolf8LJde@Q zQR?dIstYNl@H`J)uN+*qZPU}!!@70r0NA!|8%<43^!4?zVZ#Q3AmD=!KA^9!j};9U zd7}0wjL(jeUkKRJ0W%8$f3@#ApWhtd2mL0+pz&Ydzkc)I#oKScz3kn0-<{aGb0<4? z?4VpOQ&UqzeSJMb2yEM~$}m1YPHSr`P}%>p*(^71+@Me>u&}Ve+O=y@#s6e;<4I;0 zGJG-N@? q(_jn5N0l&=9(=6Gc(=EO^{BO{?yhrDC4RJAXk} z@)u njeBUPwL!v06P*~*7)jy}b=6z=K(~M #knCN {PwVzSWqy91k&%(}FTM2A< pl2YzTs2Wo>P()7sifQ&STyEiD8=Ks+ADG)?01 zIMWkD_)@3IDbd{lUI9M73oC$Ici`lw&GWg2%~QAE`=1-OZGXCU?b=hly}j-O2E?UH zmjL9#!b0-1&pumOEEd z`t;q;Zey8!h}LM9Ys1h2+`I|zT&*3OjBh_>*CfUhiNyV ;O@DM$YPy?Fr>D~CbjC1@!ip6uW_In`RV~7= zeqRAsu3SMWB_C++x~`GUX5+5wTDq Z(R^($DvGJs!aXV0G1l~PD4IdS4d&)G9)uKd}z zU&`ISKb&z({sq&idFRO|*AJMcIcFF~(9qCOP)f<#+FCCbiv_x_M}}cUN-4H(-OB&t ze^14B?%WvwoH=twYMK_+*3}(;>u0BEY;2rcy?XUbDwPUc*G1DbN7J+*m&?gSBH;=l lA}J+82 R5QPK9wMcQdVg-s6C~gIUyHmWlQ``y^D^R?+TX1(TF2OChyA=0#-;X3~ zWv$$M&YYROznR={WkqRBG!irr2!tssBdH2}ivIsXK?2?(R!*xR5EV#PQcT?=y)Vr( zfo#_IOvJ6UrNt{FGt-wl&zyTu9OW+r5sBK2gKA5#t*_sSBHAfT!r9P7{P>Tc3l@}p z0qdgoA`&kt;3Od2sfyaxf-6l77vA`7+yrOb7p}ZX+je&?Ee)*|FMoCSJoCSsbbHU^ zCDS~Okkj_gGl%w0Z|M!+2|4z5I#+|_t;bN9^e5rYy1Y1rj&@UNhl{RN#Jzl4ui3Eo zwZXX!%2D?%VMzs*N^{w^i(8>Ankrg8J&7iTuKh~}?LBytlPm30PM?v~RPIaTrUZRY5Br^?O=Pa(SK87 zN?%OoYe}NZr5ulvx0(Yfg^*yg&uAHOWvXKY90i9;P@l1K;53cVW0hoRJSLxhP#dxo zDk63qGk*KJaDjM#5Duw+wnj)3i1LqH4$``W44i~$e@OIi8l}?%GOLTSJN1Ipvhd&Z zxz%lIE|^7{)7Rsx8JC)szK*XOOw Oj215Uka0nX)1*7~SMCd9O zjU=fH2?z_Qf=B(}Aq^tQX6_bf2reTGm@4nq!709jGxEf?SO)P8V6U=xWiu)Nqhf}) zP(+i^`H{nnyGAJVaph?q%>7z&)bYLlTgBtURXWM}gamf|t^ecUKm+-3nNK^KgI+h? zXKroM(D*A+PBr^34@rbK4G=M8YI@7d!%-VF6hv#`rk9I16tMgm*o@cLRCwItLH8N8 znZTMuJL_i&F_4T7QYV)^M@$gUKB|~%my3B*8*ej<+hcrDdb?MY;CEr&oz{8(o9K b#o4WSq^2>%?~6A`c)+I^UYThEd?`Vrfl0Wh<{6O z7cDJ0D&Ja0?;va8;fwtClSf>`-X+1I^5x^l0F!4oez EnA)B}FRvWP<390x<>^ z%I|TH31YPLWkDfF@#>admB2Uzx1EP@|A%2pc1p;v*G%5fvDb!t7LLQC_$+PrRW*<} z`nwZac~K228vG?-|8OmJRGX4VR34&fXlfTX8?~Jm{tcr%(H7vZimg#tLF3}qMo5uv zMDE#I=v`JCL5kEU2Bo>beXfvW-U$&Y2L-k_fAQ2(J)FMni!JBJu9*2J=g{)_h%C&z zP~T}jKeCc#ADAx4`Ta4FfiW8rn7zp?KMN1%#r;`v(;hNpmMR1rDcX7T8unW!D`q>x3=E&+RipXc*spkF-Y3)V z!D=gn&~PI9M7kD-Q{~%lFS;;D;4{AYZw1epEWB*kpcY27Y(#?l=)UCkL!jpUwYS)c zChCj^t&B;Xm-m*=m <0mN8Bllcw|rq4;1@62XYu%GOiVr&5xb z2CESE<62`5vf>thGZH;$k2nH)LfF6P?c)alOym+=(A$!MgD-@b*Z5$^HDa_s=SNVI z{zXvZW}rlNY!X5V!fuN48wDPOVm~UXdF+ScxoKmStgJ!=3##X?luG?(+}(4yRBiu0 z>^zZ{XY~4?jaP5_(cEf_@5NMcO5H8OsPO8J7Bvfmt2CfPFm=9tgtcUIs+2fFI!0=G zZPTk@_%G7wAY0U{L$OzW!rdb`H_g?d<1(*9y^=~cauHCoR?w#ppw8H?gX? c*y(@+@pq7z*H`Nid5oFin zL!~p1p%*9^NH-$djW`WI7DV6DrOeZlDIs;% ;?}0VsYAOB2DuK<{G%i9KV&J^;T2s-s)GIOWeDck zSL>?m{>edfVx_CdpK@^j218nJg)B7*+?XT4a1bWO6Xz&Stq{Xtnx4;8H%wBqTSc`9 zX3XreJd%`i&*{U{whj}YwGi_rf!#U SRYQu>WQ&2>iQl`fAf{iJLp-+vPN zQdb&k{XMBMYYl}fer8x_sX)obCN&BAb*O8b2>s@`i_!ef^R|nNeZ{R)n45c>3^{-X ze-VPnOiI{&crc5Wzx>;6DHpL-_@;Wqa;^2zwUJ)&A6{1f2?f>Mw6vV|o;sXyjwL7} zm#QFtw*>`p<(9haNOB9+M+#LiZ7&B6QDIs+!M)A=s~n9ZZz38slr{%dhNv46g<4rj zXLvxQEn0UhN1J&|E}UK6`D;m)!!}i)Nw{)-Fh&R}6B %*Y9o hh5#m1>rM9>%fO7y;Xn^Vw{@YaU%f@4Q0X4(XKe z^GWEjW#}+- $o 9vLPlgJjpw zQAaIw@v^~hWtecpfw-jJ2q#PCCoH?o8(?5!<}jjR3*S*C8+<1wCnrA}&QFN*5r%g7 zKJFhMn?W;$EK|Q|X%WgLvq@=as9&%6qP&&-l|oE5(CtJP(MOY)mlyhE>Z6GlU{Y;~ zA1Sp}Ry!^Z4u?QcsLuss?l1SYTI|)PCM~ZFGz5}Ioci8rIi9bJsg~eJ60+|u*;LXS zy6a++5EC2w_@s}e@m~JLQ~C|vBc`PMW^EmDbMqZsfQwGZwmqY!WZwG|GhxJBvrJoz zkIYXAB%bqDNJyxuV&v~%gjkv25OhNOubqC+%feK+;Y|?8E@^aO_ja4-W$~=_*!hj& zs220Pmt*M5FT$@ru|UNB-5b4{7#Rh~&^gbvs;Q~@Ttt4&udIxzuKwt1@IDb73oalc zCC#g?jR&qgwX_tGP!rqV!9K-}$wUuiSJaoG9p@SAdVUG2fL+f_(EoP=HY^oM0JrXG z_*T&;3pm2U434yX%~GeWC|+l%&~3IA$+t{T24L04u*R6yvyQY%-xC{Yt3U{3+nFCX z9KpcA;CQJ%(u{KmqEUMHFyA>oG4b|tcdVB~*h7Jb3`?y 7`fo10C~Ri`(d^O7CUCk`$H b^25E-U$Ng8R)3CFlhLRQJMmLs-~$Ca~O2y;+Skl=aO8+GP)KSM)5Vwfrp z>^usKqp)>8Id@!UoB{X#xfXFR&k%Gpp0UdkAzq-`UBjwbX=rD+$oWkHAG3>lY{a>l z%-7d jX5V)41q9?yjNm_%mI@ajk>sc8aKkx1 zI{EOls57gu67Zk3T{0$uw=X?`62I_BZ)o_08~(R7m8@%Y6eC
FH^oeF@6X_Wwe$$i=6*DSWR~ z{2r#WYP@glH!t|aQKk;Ki!#2GuxM47oh;R}YFDlEaaer&7Cx{gonrARtw5h`dSzv7 zKM=>yZNN93;;dUaPLj|STj#Sx< W2 #p~g3nje(!P3(_+el2#s)VZg}rZ2 zrNFYEGj{8v(mYQoPj{{?c@3K*Dy&DN$!Vxvg}qJ@-+a5mdipna)Oj&mh-Ah|47ZKh zYw7jW?@+EO0S>o=1@{``OIiI;E!VtX-V+{ZaXZp(^Kf$cA&z2FP1NdshJ{odT0qOy zbO{y7VySG4WB0!w0iw$#ARt$wo?Bo4F53!?cg=@O6-?oCE(T;!)ShQC1k6o>_~V#8 zeyGZ*8@{lxu<4Y&!t^RCWBLC6C?zx9Hk#N4u{ICy4wBtj8Vb(2%ILh?Om_FZJ%v%s z2}1G8%gY!0C550i6~kl$V)JgmVHH|^LZ0J};<1^_KKcv<@kIsK+R7@Yu`yYmLE>{p zp)w;`U)$LuAj^Pv$5i{=J5z iX@FTeI5?yh*uj7@ zUxL9>GBS3m{aa(BNWXrgBI*8+Djj9DZ){B;KYGp>8?E`UB)~t`VE;PQF5; Joz(7>zn042Ohj}#2Qo09G@bOa69$2*s9O1tYjAu5U?2?A9ubx zH`bpQ8t%qNLzL$dtt%)fAf6*(y3|jQp&Q)0JY#WpkWrhi+kM3B;!)Tt{rb#2Yn?c6 z=#4p2Q> I!q>RwC-BxRJqnQk!D0f`sL$qdzmtp?^~Lj|k5IN~8n6~%F@UH)Jv6_L z?bw9k?5r@p@a AxbW2Ni9F=>17_$KJm-O4 zW0-ymr{hxnkDe1R{!bsS#+bi6=vPckQOzQ2p_NH01K`T}(^de80pWJ!lLxq_;(|6- zrdF7PkSA$uWn~4Be= Vn?%F_Q9WLHg%L+-#hPHrF^53+ocfE+}7$vL(Q#nIrG{ zIZ~~->UM&$w_f}rokiF=tyoS *oJAP{jwbP&j=UX{FU zbw>PXcq0>&ACffParANvfHpV{O%w@VGXdh&xbmG; BpD1G(5u0sMK>C4_&TBBgBOg1B$!1v?z+(@>b zTVH@ifQSYL!m*B6S6~D9lUj%qE*b6evs(KXfRzjk3{5W&M@;x=`Kl$mmyzrpe*n@5 zeyi_&QZINtqlSTnRbxHN44Gv%H8uTz-QH*Igi r^#iKH lw==Dyi^KMTd zyMrKXVC#0kq#6?d8qj{r_~@v7e9FzujYY@m+L}_eHXTI_FH7Tq*JFWPvU4{gVU@>) z$y}L^i#~HHgjwWi1H1VUQc6TZvbhmTX>l-Bu og_%zWN|U zWN&kJ%W_8rpFK#vY1yT+R~j06`so}!06qdMrjz1W&+md$*3&xmLg(( fT(dO#Os!S;Ui<9h~fJ9vAZV( zJ*_X!bjv4buJS81ROHDxZfMKBP(#D~{@>2B|LgOz@9m1d+pLD|VogZAl5ooZXYl?# z|4~`(-S&GC*&Jmfm_rBj%+CzXVxX&19D~AtX_HoBA``wG0Y$mz{QQdyBS#%cq5BW> z9tW%+bp|bZeI5@p8lC=Tfl{@0dh^`njKS+;yldOPxW=>f*?5JjArOFvtF`k>OCviv zIxNtZ2G@6UF-bqAbJ(U9h6BA}mPnR^?~xuLh@Wg10^a@rfX6EJ|8KPn7v-HEUjMZc zLVIS|y5QRT*}pPRCkD?k63qs9e(f4@K>S8BP8_iKY?Qpdv% _waP`<=)Hp?O6`$OiMMp}pJA&4qLlId3!f zc*srh7TtBmml^ +KGw9ji0LuEwVq~kSPmk|50nOS;;0|m56V(2L zaZ{BK6P-|Y2YUPSTe^3A&FKHQlrux-*M8~~4C^L)pPFY0J a21~gq4f-&HNo|2+WFimW>W@$BmHb8g9zx9g?NUFs} z9iT%}S$!4(tAba3POP}k98!`YxW+_+s9q`3hK&cZq7F7yeW%_50YOp=zM#1bghd<< z^eS_f (~&8?sZ>IBtjoxds?Bbs`ub&&3X3f#>IE*YDps zg@vQH`05%Oa3lNpRN9{#js0FTwZb$UcJdWtBrQcEY{ZI3^YrX=16PS$LynM-xcT&d zR5NM&b8dgh)(@Uv3kc#`ug@5j^1t)N{b1+n>U!)2P}|<<@?QyTA?{9f=GY;#RJrA! zpU;+?@us J5HI3$_ugpDm1A#jybjg?p* z6(8M-9$?kw;d8^O+Yh9a3^d^XGu#u0HAsmt|AV}BJ<6Do 5od|YoE@iEf6!tNKwAO=+xkMLoFi;_>Iun(VoJyK6Y|G zbV>b6;K8 3-llaXP*}B5bJ2KKkIbh3BCXNhxCFbitfOFLbSDGAsIThj00k>+Xr3;}YzsX=M#h z;fWaLKIOZbwdrBa<+1|s$d0q8QoU}uzSlv)QY}>2d!G*uwCr_MzA}=`&Mpw$3zVys zco-K~%4qS~ z0;cPJ`^(skn(CdGCw5BuZNcv3O3$d)({ks@65)2C?jdd+)YT7%=j#%V_XS4wZw64) zSCh!AN*BcHA304voX9IFUC!w_OioYtKHXoQ=`}fS(DE)j_9`jm!=WL(;_vV&PC1d; z`S=Lxuq6{hAj4NzuI|nH_G|Sv^E%=v#AqSuK>ZoQ8n%Fmheqja2n1q1X_??5xXPM& zb9>9%TXNJgb}dQkAX7A5S62sEd3-1~UJVyMSW5A*Ieb-fA1u~_m`}X$oB%K44XWtC z<*W=S?O9bBRO-%a-CRuBAI6cgv}YxN)te2)?Rj~50W%RFQ(N27&pvnO4_r{eOG2QV z@AD9}C-*keg >er_Wk(d@qFK7`YDnjo$qxrt2G9$P-o-B3T)i{~5vT2gzhR*}5^ 7HmI@99F6Q6~ zpEdXVge72VH9o#~dFj%uzXy~SwAu~^G}l9_B?+qdi1ThdBQ EPuEZ*prGT4TA^vjj`cS0#gy6$$YR^A$!JG57^MTIWGe%kt z^WKrl-o8>Q0Sq4W{(hrdq9<$jrsLak@9akZN#T(i6TqiJrw^_arBrIdCE=l$l7bY3 zsfGMQX3pFhipfXFLd&%E>juzj+od|$GM(Blt3cJYLm)tV8DD7CfKJWb%RwdzW?GSF zpap~~?x!)Gw6t{cH_nuX-cW386za_s`9heRfdZJxre0SaWdi~^B>EZKXeZ$Iz$CZ3 zcHN$a33EEvPmUnB*ur}aiphFK>Rd!Bx)%3?ukqwd4~&)dFc(Z!O8*xQiz~VMWv Mq=S8W2=mycXvb@c<8o-K#29I%Ox(SGFG zVOpo9_PiSx8CKeL-=8f{L(jz;^LSvw+*GYS>P99_N<#8^Lu}~QH?G8(;rhf9Zt!6d z9$zZ9;wZwT`VSl6cCZHE=r=R>4pIvbI?e>@brmdX7u9KEIbbkYBn?$#Qr6wA++2nL zpU*m#hcJb(7h|xw4n~YQV*=z?^f8^l%cqiwtA>!h*Mr%jaz0aSaLHrGS{d_Ei{URx z8iMPqmxV3IS7XpBGT%(SBzIE(HA&X#V}~-nlxFE{{ubZQ1Xacenns7U4%fADUW&HU zm{(C=mUm`C-mAQv;11=#Wtt_k`nlB$j(XmE{g!%X^SI%`2ag@x7`;3gy($_Se!ubP z2Buoi#5$Eeo4^m0ETOZv1th56btuu{4$aww0nW8QI2d-hz|}eD(-nIH0>Nqg|13b` z+0uxJ-y^9!S*FF>pcwNz7Khokv3u2>1H?B$N@X36&lSKF6huQ2lO`b{@oM#&b@RHD zCHl#3i4O20@6OxyGXt;vi5!89)RDt!r6FmP>I;c@uIWU`&fl#ITSol2Nz1xF;DY{# zhliVit&6sbBOQ>2MurTXNuS9_F5Gaw9cTVjc?JcA>3n0N!nfjHneTz(N-b=LKw3b+ z=-Zs;m5JnBY^a8Hg?r4ECYG ``i7PcrIdQ|~(+Zj5hw=dpQO8GwUgp0Q2Q!5vOey2{ zY2ZsiAP+A+>;CjYuTPg=zBH*@eE4V~#SjQ5KH5;f7{-88ojx03BdgqZH@A1Bc$Gyn qfR5IZ*u?3U7Xr?58}tzLifq4`h4Ic$^$d9C0wgP?C|MzH^y5Frh7vIV literal 0 HcmV?d00001