From d43eb44110dd836cad0da96d1f027260c2581d89 Mon Sep 17 00:00:00 2001
From: Andreas Gohr <andi@splitbrain.org>
Date: Sun, 11 Mar 2012 10:48:29 +0100
Subject: [PATCH] Another go at building the pagetool sprite with a script

This time PHP and libGD is used so it should work on Windows as well.
The image quality is much better this time and the active highlight
color is read directly from the template's style.ini
---
 lib/tpl/dokuwiki/images/pagetools-build.php  | 121 +++++++++++++++++++
 lib/tpl/dokuwiki/images/pagetools-build.sh   |  56 ---------
 lib/tpl/dokuwiki/images/pagetools-sprite.png | Bin 10389 -> 8178 bytes
 lib/tpl/dokuwiki/images/pagetools.xcf        | Bin 14393 -> 0 bytes
 4 files changed, 121 insertions(+), 56 deletions(-)
 create mode 100644 lib/tpl/dokuwiki/images/pagetools-build.php
 delete mode 100755 lib/tpl/dokuwiki/images/pagetools-build.sh
 delete mode 100644 lib/tpl/dokuwiki/images/pagetools.xcf

diff --git a/lib/tpl/dokuwiki/images/pagetools-build.php b/lib/tpl/dokuwiki/images/pagetools-build.php
new file mode 100644
index 000000000..1b7262ad5
--- /dev/null
+++ b/lib/tpl/dokuwiki/images/pagetools-build.php
@@ -0,0 +1,121 @@
+<?php
+/**
+ * This script generates a sprite from the unprocessed pagetool icons by combining them
+ * and overlaying a color layer for the active state.
+ *
+ * This script requires a current libGD to be available.
+ *
+ * The color for the active state is read from the style.ini's __link__ replacement
+ *
+ * The final sprite is optimized with optipng if available.
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ * @todo   Maybe add some more error checking
+ */
+$GAMMA = 0.8;
+$OPTIPNG = '/usr/bin/optipng';
+
+// load input images
+$input = glob('pagetools/*.png');
+sort($input);
+$cnt   = count($input);
+if(!$cnt){
+    die("No input images found. This script needs to be called from within the image directory!\n");
+}
+
+// create destination image
+$DST = imagecreatetruecolor(30,$cnt*45*2);
+imagesavealpha($DST, true);
+$C_trans = imagecolorallocatealpha($DST, 0, 0, 0, 127);
+imagefill($DST, 0, 0, $C_trans);
+
+// load highlight color from style.ini
+$ini = parse_ini_file('../style.ini',true);
+$COLOR = hex2rgb($ini['replacements']['__link__']);
+$C_active = imagecolorallocate($DST, $COLOR['r'],$COLOR['g'],$COLOR['b']);
+
+// add all the icons to the sprite image
+for($i=0; $i<$cnt; $i++){
+    $base = $i*90;
+
+    $IN = imagecreatefrompng($input[$i]);
+    imagesavealpha($IN, true);
+    imagecolorscale($IN,$GAMMA);
+    imagecopy($DST,$IN, 0,$base, 0,0, 30,30);
+    imagedestroy($IN);
+
+    $IN = imagecreatefrompng($input[$i]);
+    imagesavealpha($IN, true);
+    imagecolorscale($IN,$GAMMA);
+    imagecopy($DST,$IN, 0,$base+45, 0,0, 30,30);
+    imagedestroy($IN);
+
+    imagelayereffect($DST, IMG_EFFECT_OVERLAY);
+    imagefilledrectangle($DST, 0,$base+45, 30,$base+45+30, $C_active);
+    imagelayereffect($DST, IMG_EFFECT_NORMAL);
+}
+
+// output sprite
+imagepng($DST,'pagetools-sprite.png');
+imagedestroy($DST);
+
+// optimize if possible
+if(is_executable($OPTIPNG)){
+    system("$OPTIPNG -o5 'pagetools-sprite.png'");
+}
+
+/**
+ * Convert a hex color code to an rgb array
+ */
+function hex2rgb($hex) {
+    // strip hash
+    $hex = str_replace('#', '', $hex);
+
+    // normalize short codes
+    if(strlen($hex) == 3){
+        $hex = substr($hex,0,1).
+               substr($hex,0,1).
+               substr($hex,1,1).
+               substr($hex,1,1).
+               substr($hex,2,1).
+               substr($hex,2,1);
+    }
+
+    // calc rgb
+    return array(
+       'r' => hexdec(substr($hex, 0, 2)),
+       'g' => hexdec(substr($hex, 2, 2)),
+       'b' => hexdec(substr($hex, 4, 2))
+    );
+}
+
+/**
+ * Scale (darken/lighten) a given image
+ *
+ * @param ressource $img    The truetype GD image to work on
+ * @param float     $scale  Scale the colors by this value ( <1 darkens, >1 lightens)
+ */
+function imagecolorscale(&$img, $scale){
+    $w = imagesx($img);
+    $h = imagesy($img);
+
+    imagealphablending($img, false);
+    for($x = 0; $x < $w; $x++){
+        for($y = 0; $y < $h; $y++){
+            $rgba   = imagecolorat($img, $x, $y);
+            $a = ($rgba >> 24) & 0xFF;
+            $r = ($rgba >> 16) & 0xFF;
+            $g = ($rgba >> 8) & 0xFF;
+            $b = $rgba & 0xFF;
+
+            $r = max(min(round($r*$scale),255),0);
+            $g = max(min(round($g*$scale),255),0);
+            $b = max(min(round($b*$scale),255),0);
+
+            $color = imagecolorallocatealpha($img, $r, $g, $b, $a);
+            imagesetpixel($img, $x, $y, $color);
+        }
+    }
+    imagealphablending($img, true);
+}
+
diff --git a/lib/tpl/dokuwiki/images/pagetools-build.sh b/lib/tpl/dokuwiki/images/pagetools-build.sh
deleted file mode 100755
index 202e222e9..000000000
--- a/lib/tpl/dokuwiki/images/pagetools-build.sh
+++ /dev/null
@@ -1,56 +0,0 @@
-#!/bin/sh
-#
-# This script generates a sprite from the unprocessed toolbar icons by combining them
-# and overlaying a color layer for the active state
-#
-# The final sprite is optimized with optipng
-#
-# The script currently expects a Linux system with current versions of the imagemagick
-# and optipng binaries in the path
-#
-# @author Andreas Gohr <andi@splitbrain.org>
-
-OUT=`dirname $0`
-IN="$OUT/pagetools"
-
-if [ ! -d "$IN" ]; then
-    echo "Input folder $IN not found"
-    exit 1
-fi
-
-if [ -z "$TEMP" ]; then
-    TEMP="/tmp"
-fi
-
-if [ ! -d "$TEMP" ]; then
-    echo "No temp directory available"
-    exit 1
-fi
-
-# add up all images twice
-montage `for X in $IN/*.png; do echo -n "$X $X "; done`  -background transparent -tile 1x -geometry 30x45 -gravity north $TEMP/icons.png
-
-# darken the image
-convert $TEMP/icons.png \( +clone -fill '#cccccc' -colorize 100% \) -compose multiply -composite $TEMP/darkicons.png
-
-# create the mask to highlight an active icon
-convert -size 30x30 xc:'#2b73b7' -gamma 0.7 $TEMP/active.png
-
-# create the full mask
-montage `for X in $IN/*.png; do echo -n "$TEMP/active.png "; done` -background transparent -tile 1x -geometry 30x60+0+15 -gravity south $TEMP/activemask.png
-
-# apply mask
-convert $TEMP/darkicons.png $TEMP/activemask.png  \
-\( -clone 0 -alpha extract \) \
-\( -clone 0 -clone 1 -compose overlay -composite \) \
--delete 0,1 +swap -alpha off -compose copy_opacity -composite $OUT/pagetools-sprite.png
-
-# optimize final sprite
-optipng -o5 $OUT/pagetools-sprite.png
-
-# remove temporary images
-rm -f $TEMP/icons.png
-rm -f $TEMP/darkicons.png
-rm -f $TEMP/active.png
-rm -f $TEMP/activemask.png
-
diff --git a/lib/tpl/dokuwiki/images/pagetools-sprite.png b/lib/tpl/dokuwiki/images/pagetools-sprite.png
index 0e8b4a9bf8e2a39c1d460af5ad37b6e8eefa7b37..bbd7fd361b260c082e7f9c46cc3a3a3b3e7f90ef 100644
GIT binary patch
literal 8178
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

literal 10389
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

diff --git a/lib/tpl/dokuwiki/images/pagetools.xcf b/lib/tpl/dokuwiki/images/pagetools.xcf
deleted file mode 100644
index 034b39a42dd5a378969a4a4b59aa8ed100d6ef1f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 14393
zcmdU$O>AUYR-oTs{MczboOb@WYHHdEo9Y%6(cKcgp@q>5u%I;Z2qCdRR46MeD=}T2
zZe><OH$sGv8r23cvtffq2Bcb!ykXR%nT1DUfsha(AvP>3Bb|0Q9KSFA<Hh?seCI{H
zOgpQJABj?`pM2w<bKZUTo^$TI=bU@)^Mk!_f9KBk?!ABK{k;$F8(d#n6os!-Op~8Y
zO8&q6iD78rx<PTcw?utw4jbC;CbT!G*B{XBTYKNW`{4dt4<7Bk2TAXn#+M&|`27#=
z-+8?M!QOjcS^o0-5AN-Mu>a`Jmy_zPM-Se;d*`b^_0{D14B%^vTVLVPcR%CN^!}aC
z2lUbJJ^s$!dwUNb-1%BM7R2v=7I8s)>$?y4KD@K{@ZN9Sf2_~%zyJQ@`yW1MP@n!Z
zX->KNsOn*Hng7o)tp8;g_770yuNlVDuNX$*cTnwL8piFvF^o5E8^)bqFpM|fG>o78
zWy2_<+pqnFVf^&pr9Dumlcl<U{qDUF_kQdCoiFb_{P6z6$9wO8|Bh<)yN|x24_Nxc
zm8CFqhEVbgn99(ZRJvZvloY;p30}DbuU>)+z}i=O<pA{g3?+S2?DQtAe18F_+|$<j
zqpLLQe=1(KfAABO$CMvZl;`vrl{hz-SX=&k#L`FqgT%Tlw*B9g5w4U)#IoO;lTw=f
zq2m9VSnu6^^sW03wdH4trR;wZv!ye%m@VVdY&pDt$#qFA=Vz|coVOK6tiQWdUY@PY
z{rC0~@jpu_eg2COO8ZTPdR>wE<%A31l2DoTtF+7=#mmMYNiZ3->vCIWp*LuspU5ql
zMG8HYo8m>`Gy!kOH1bB1zBbs9NxgP9a+|$Y9c0?PsGXiPYfoiUChg|M`RPgZ<cZ#J
zJISpldZX`lT6Nm#jmc=RxTT0<JXSkZ#GB6VohuT|rX!wfUMLcUU_95Nw`m;Cl1>sh
z(slz^;m{i;h{C=%>^8i~NN&h%3V2pkfyN4*d;;hXx{dQw1P{Bd3;B*Dy6{H5w(269
zjZ`|-g+k|ZUCcpr5&IKbCgM-pt;S^F4&63fPP?5}qwaD8k$W)PsMqRedSd|A1k)QM
z5S{{=i{DS4QUrFjVXL8tpJIxHDW*uAVk+kX=>wbbEV(mOdgRX^QaJD@gDyR&E@ptu
zM4;&y2=>s$XwYR)bb*FbUHIO3kmw=+a8(zvLS5BG9L+)1MKIHrt}-_0_n8=G1BBmx
z&t(E(U@}gSE}e5@fpzqTm)_FHXDOzLpJIxHDW*uYz=n#%DW-C!2r#-x?o5@=E0Q1z
zhrw(zqzBc7g8f7wlr!XAQ(Y+3Q(a6(!?`Yupd@l=+&1EpSP~x+6~q;><)#trmI@VU
zH;rl0RZvRChA}C*#ROGk%CiYdoG~ehyQ|pl{D!;36D~J=ZUCDS>m&aW*rpM<vj4nG
zs~Ee=dx^oOhsuw#3cQ_icf*JeU?6gf1Ug=U`)+v~&@TfN5I#KKFBsoZvys}B#7*6M
zbpP&$NpSV5Oy7T2p61umbOEF+;-;3>9qP59E&nG)epF0fPMEm-W&7tyi20LcUHS_%
zm=U0%Ea?hZSi>yu@37C4FN~tYI!a#n)<sR6OBOQ2($j?i{TVk>bD6_9FQ`@C_UE>9
zSwih0o0`xS3H3onR7<)hVeMH}e*H(rprYZSYWRg!MZ=Nr%{83Z-M*k<wVz9uY%KDs
zdqKm`O)VPc!Aat^RKw5hE*ehh7pmcf5k|v{))(ih;nX6dVcdmkcy5@{u)0A;RQrsE
zakHt0e+0}l8lEN^er~H(!=ayOctKMQt5r@koY1B!uRqf#Ul?%JuoAJ&ebw-DYmSCf
zdQUaHFzsk~(Yn`F4KoXgokzpk0~(&2do-+8pApsSqv1a7lXv(>!}#Zn*d$)R>^U66
zl53Z}KnB8+@xl{i6a0lYaE!cUE_sAZf<N~PIZ)??XISRxT<RTG5+v~uYk==uGPlXr
zIs4wDyYGK)eEdZP{mMleA2$@4U+cPw*Xxp#SpVvrl+xCJPVutwhhm0iWQMoI^k+dR
zLEvj};l(q&X*BbAr`95K5=}!O-f~-319KFPCDi+)F@%+wIq-*r;b5Tdbuff<%`<zW
zey=aQa?<PfAuUhhu4}pG#B>Acy7~?;jhv22iMuS0+#nvd>=w`S8@G8=bA6`~_4*CF
z5jQ0#S=XtXu0>gvOvmfiYI5G`)XbXIfzUEf18KF|r{<~M0&n`yPEMN56Z6DrE=%?z
zQ_Wl~OYYqIBz|(9Ifqnp&a$;-**K+~P^y$CW#jj;>whSj2!#Y@7)TfdD8%w@6y&Hb
zyl567Ppqn04XtS;5vnk!j$HHOV4N9)j6r7Ra5Nf@gykkcsshg$Os5`t8lWZQpUky1
zne=)nYk(H=W5?xbH`b+^9mb=M)tPjMqfV#GpK4*?w9SD<LCC&0Xf~zQ?>Eh+)ra7k
zjX+$t*DxEls;TQ=)a%`D-K;xZMDE1rHLDh%cN|ofYguP;t(8Gr8>ncbL8(*F&Bobt
zJ;b-fj$(<-=mrXjlUYYAycMzOM?tKb@KqC$No+n>#mteFFzcZQ4?P6-bmGZ$Diqb(
zvTsi&Q{SIVaKBSk!^|0*lz5^F@SG8kjpDH?U>bWvdl*giHy)|@6K4=jrUP?ePLOZx
zO?bHm<4ND_TVo}dy;#QP*y`Dej{KhMjz+HOIwRyCX1bXnk`L@o7X59YvW*@ERc)Z3
zjm|=BV^%yCsg{Ti33~|+cU+AnLt<W1G0{$yE%vJTCGa9(Ec~p<OmU;2EecAxCQ~Q}
zRjC%S5mEUV+OqVOM!WKnVGu?`TS{rg-QDAariN<KuDDxtcT1IR(lNQqv{I>3Ai<Em
zLMuSa85tRr;Tqm}wp1*zHHTC{oSiwv6-bWsE5)i&IY=524JWjbTadzm3PJ#F$}&$*
zb`C4MrG#K5glVNvK0e|xolH3JtNS}U2h82Fv2mrKO*Jy96;dmhdHfsuzpcbq6-%dS
z0$8~DUzHKAltE(Yo4-0IrL>z56fYZpCWUxaR^}^Vh1WZl&<p|mSbWRBh7pWqX3v&o
z#f!yryd_zg#xixL024>d$&zf2C_~DC(q9s*w@Lx-0(XErz-{0ba0|Ezd;xp`T&J8<
zYVTm5{!CU_iE%72@M)G<lz|n%lJaKzu%x^>GdOv{n<J5@k;f(sZYpzQ3Jh9923#;{
z^?_k@6DBPe*ad!x+0BH}mzjdK*o-f8r)*jgOsVGV5T=w(CxEHv0QS}N83Im|f)bTI
zYs%0IHmwQpf?aC_tU7&(?YVy6k>6!aM%4pjl{zfSuCW3T7~*b|KujR1Bv5SV#`J*9
z>52fei`-=~EZ~Ud`8k5At0b^vL`4DGB;2@MELlxL4yFBD;Q6zk3MO)o$@|`WrCZMJ
z#WJAU`ppG=X_;*O-c{PxA1huq{*Tykj>5!*OdJa&@B^ZXyaf1BjfX>THls3U_)jVf
zd_u%MfQ?rv*Tm!<G>6oKxUYBnc+6#%%C)4}SZb@gB9<<dHY2qN53&-p+O3v=HmnPi
zHA4__0lHkb8fLv9cs{2Vo=fAxyfAB95}ux)5i8u5%(GZ?f|;jrl`8w>wm6@>Ce|nV
zN?#HuVz7uo)dl7y4g-@FrVC$75-!2$%$o}Z`%|dAtLB6jqeVd^i(=z;tUi6|vQiu1
z5&$89i?4#?Ob7Nmwi|bp{kGLL+XXROcGGNm(rI_vxO|c~jaCyce_P^<x>LU`*>g$_
z=FedM>~ok8<4Bp0FkP^c78QhI`mn3Q%&2G3yhTA2i(=z&tqE*nDJ*8n9_1t$jfrgF
zc?i!#d&EX_mEGnbKd^@80Id)DPJcQOjSg|tuuU-7Gkfsr!n)gax>Vhctuf#&aXK*H
zc}MP&R65cG&5>q{qGAR0M0nAH(J#4D-RJGxE>$(bvugPGp~C_v7JlJSq{t!<E9A2B
zMtGPk?_gJ|1<;^SrTwy!_q8g?kycgN)@oa-R3_`!WKWUSFYdb9=*pAxewVa|5?18J
zpjB81iUJQ=BS=_UHQbVh6P&aZlx-KEyoy*=#F|wrf&j)E93iqPJ~G2921yfg&LSIE
z(l{&0%e@2@HCI=fH{VjJ4vk;ewU{o}B!%_p{%_rX^trneZT<yk@6Gf8i=p25zd9gS
z$|7#}jlZ9hQra6&6fYY;5G&piC%P?5;dOQ%YqHK;8vC=g*_vd$NM>Hf<2Cc9*3_2F
zbe%WUk<4TrJCYG+v?cLqXboQzdqC;uSZ`}$_b^eoGux%ckT~5OZ{9UZPBIvkOq*?D
z6Bz#+HycjFk*sb(z#1287jZ+b>8e|)Ck7_2pD&-sby=4@k+u9hX5-JriQzbc;}DJm
zI1c<ZAC70C_&%-}mS>*jF{d-n_SUhA7(g&@Y9oU=h4(3PPhfgXVWn9^7$3s$0LBN@
z7!U`69IT>)KpBilrU&B)mBCMEyN=|rl-D~eQfRM9+-@!FwrXACRx{g-TbDVF;WVO6
z6t0D<vJTUkAY$i}2@2u_C^kT`c;}1{b3V+?U~UFuo)(y!!rT<5uz2=FYnY>UFy_t}
zhA<hKG0Y)I25-%zI776mG5wNUAL43<gB3P_SdZ1gb;<YR0sK8M;<E7?VRuDX3Q<AR
zx70gT-EWnn-ECt%q2?v3s40jFE>ja77g&MO_OZeQ#L)LOH5?el(y==C3X4r|n?mTm
zuaq*DCEO(}hM;RHatlzR!XaiQKGMatugUSELPy4y<{YpWTSly%<Z$(CFTi+*(aE0c
zjo?_#z%?V@)+diK2#g1$CMPZ{bf7f7tDNR_2-w*sh>s7Ih$vYMg{w`~rm2LGt2=NS
z7Rm_%uS-cA3uAInE+46|n&rNhP?r-JB_J`1IxL{HaOY4Pg_VPC<L7myrAtw*#WL1n
z@A2OL!^e8(RmJIdbny9gr?mi5E-@H)^n6mU1?|W56x(=Lmg9By=&RzWt7Ab$#G1G+
zKMvzu%qp~qFYVb%XwUSmjXa+aG!h?g&JKT?#eBrx%$%8?Nd|g`Ki4ubCmCFxIblC4
z)66uUj4gKf*3e?lI=08`IGu4g8IOl1Z?!eZ4`UhThSq?1wzt%erJwJcJrFk*H#h$Y
z*`~vw*(Dj$RX=FD?AF~bn3CJEv~z8<MU`*UXKSSyOVe&zEs%y9A>tSd%Vb?(fL71L
z`gt7+Y}VJ$EVWGBs>NrgtEYAiQO`6T^7QG6ePTW}PhvSU&+_7*ot{2>R$Z!^&#Y5c
z<+Bs(B$6keSf7|rVgZSt5qHHWPYI4he@@i9SD!3BiK}v5%qI>Fe^KUI&qP+7LGw20
zBt(r8y$5lmdJox;pm%>IvVE+>EUO{EW)t`UBh<+0UM1^W9uiFRx=qP?HYpWrlAmv*
z)Iu^3<P%ig%c$QRE{$Rt<wvS?LPZ&nLeig*^or`RA4tEi0f;%s^!)+JD9uA@g1}vJ
zBk8%0YcVU9yV8xNYj-Udq`T5V`Q47$v9O?42fMl23frwV6nJZ|H|;hxG3Ui9F(#^Q
z;0vzRV<8$NwrX53Bj>dozCfXd##<M4W<<_1XR#=Bp-Qcjgo;If>L_)kwjps%Th!zi
z<o8IfpvcIKasP2-vu(1_YCbk24Xf=i6G3)RG0F_G^Sx*i)q!ECbE@7fZ#0a~@~YXK
zZ;_PA%<!D{d^4Cp2<YV%&&@1SHRg0lHJ|e=G*4(Q)7<<g)btIio5V7?J_*U&D5ev!
zq(3CBq@Z(=9ns@xV`ynT+#m>qgTZ>=QqvBpU+5)HxWCFGAZ0_owYS`La9w1)q?73|
zHMWa)b-Njz6Mi%zUg>T~zQc<~oVI_=(23zn473`?>alrDJM7}&Hn!K>bu~mR?3g>A
zv5k#%cQLo^l1O=*^Fpb(QYqm}2;1_;Y==5=C?iezxRoO9cCmUF1y@SIxC}9>BHI<W
zxG&h+j1e5j(GJ78$7Sx}38>udBP_iJp&~?Y8Qn)_#6RBVNo+M|q=zLrfHTayfdt-B
zp;|m5615HQNOq4!4xr9&RjP7O63rHcRVk44g3R{dxX4MWO>7F9&~g$odP4FIIo#0`
z+pvI{#}ORvC}%I4`_)}zSN&#Cg+u5;MT%8k&e8F<fsRz7D&*;*lnzCXT}GT7XlJD|
zfigFC1z`@itBgH$OWQ6|mJm3o3b`MWU)BARs>jhY;L3Idwd}&rq=Iq|X<J68&11l0
z**_3HxOEHep>a%%o=bA>hlPEe!_f}9sP57X50=;To8aws501^_X?fQuRh7PMbZLO%
zceah~or5Y2Z>yi@Zcd_ViBI3cV)^LUI*!UkgU_&@`-vo3zx3|id*AwC@8P%f#;bC0
zuj%0P>&^6|uuBf^&8Lf-3)-7K#Y-#{_D<cK#B&%VpQLbGzss;OQPOT%tqrj>w&Nvf
zHLd1#+yf>=ZPL2fb-)W!!GwUC24=@L3eU-+gV)Z;1q<#gY@eNB+O1Rb86lZDh+6vD
zO5z#fe$VQe*w1xwp2j^K8BuKYiS;D0mYFW0;S<K~w5@jXvnft1S}<icX3a)Jq}i|<
z{~}YIo6T8r&TPCEL!Umgo)M`%+f**HCpRVglr5u<TN2bUL>>K`#PkV!n*{Y?57TbB
zXhN+A9JyVq%b*>^?~+bO6L?fuG}}nhLJd=^bzK}BEQ#aLWqW;nVaLZKa};&;W0koL
z*S!Q97^1QIxpj_)a%^&)8r$4lANkQ~!p4FZC-E}M3hw=L_^@FjnJXl3F*KMe3E>-z
zsxyc17YKh*&(@jt`nkhS->D_SPZ55C@EV3#V}#d(nehk{3}~_cL2R6(1H(4KNHU`g
zFz8!-#GZw^Cr1ZFD8xMB7z{o1Y%d!1RAyCUvb92Hwk3%o<LQJg))c9`OS;V>S)rNx
zWO$B)RACDaEF3d8{{<cpIpqL(`>2Wc%kFJT-bK=Ra=_^#so}G-kGAJq-Fa|(L+y-I
zFnZX74P&$mLeQR|*VQV4nV92*u&!2f2P?L~3r29H4KRZ=I40H~Y~vMle_k#Wu#fA;
z5W@qZoY*q#$tb~TUD@7ey#8~Phl<<u(1U_`qk-ljj*DzEdc|WA{b(k!hwuqY1=AQO
zjrf^!zR%FGu;6?shs8<-MqV(ke7<1(_$uR?{zxPV=X@`4%Lw7(Ip2l>b^za#q&dhT
z2Zy?`z#nN^!B<ufjd#?@q*f@|3_SksyN~ZZ+I#nvW+N|U4}Q{97P(R`*$lj;pSJ3?
zpuLrxf0m7bY!QlXg%mcg1U}wuRev-V+9Jf+B5uj@md*<}Yh;UvaEm~23v<CqTWgu(
zU@x|s6pZN>R&=XYHhzdlqkkf_r2l}LF}8@JlAZ}vwf8MnU(#!zT6-m?)SkDJ9<TJ0
za;iP0y(ynB_o%%RUcKmf-pfB4Y{`vK{`7=39G?8?-1kQx{WTFp@Yf$DKA)BI@khi{
z(MKO+7afCe;ji|3?7+j`-e2)1IHa4xe|Y;JaH2_NL*c81lea%6mI*(8`-B+I;lL;C
zz5P9nHNN+Dj~jYe<-PSytnN48;z?~VqQOUB`uIy9r7bvr(q81_g8nQz(!suYWw1{(
z^fJo?c~?ZbD)1JQ^219nLgMY65BHOgx?Yu||MBG2On!?0djVg1d5eF0l~(*G#mmND
zCP}1hbW?J{P07zTIX=G5SyDmPIQK9ID<oL2B}bUV&#v7oNWObR@@-0!(xB8SHOd*~
z8RaRZO8G>~d+6%Y7$IZ$j4@*jk1@#PtdqUj;Mmj|E)DD<{r7pUN6~RQl*?mXfS*&+
z@y@jWW68$wj|};cz61IuKwcxkyiRg?!{f*mPm-VT+?X<=3@HOjI+hEpB^|S){r-Vw
zYl<Xb7S`@oni#<nV%D&o#L{ZvNZt^NA7c38L*7l&IO_%}81}j)>~mbwOrEBU)e@2|
zqR(X#CA#N`s+v}b4~QYz!Bq%9$<?g!s^9o`l=pNh)45i2y83NCqrUs!?mpySD<0|1
zSM*Yv86A9nef^gfK*}f<_3Q6krF}j5p8b7JbA|+jTb$+$ThFNdVA$fj<6Gi+!(pq{
zt@6=n<TbG+VFa>~Agpsm))NHlp~zZ-<P~|!F2srWnsq(O$n7A*;R7F_%&4c-q(V(1
z8%^h$Luz)EW}muG?NYnc9cnh`W{bK--Jotz*Qx8&HR>AmDfKBev84Hov7S<%{H!2W
zFeb`VvBupC6^puAQ?dNXxa;<7Dwf|(!~#Jq5ETmqu|QNT5X1sevHIsKRvi2BGJEyd
zju|UtY}S}&P(LN(1o{N}h<ZdlpdL`aENd5f7kZnTM8xOGeEXd7&Jx-9X1u4e@qN3i
zvQhI%FtP<RZ#0^8RkmQHvc(|C27+vgAR7p>DS~Vu$figlTM)0SSWKJA@-|hxfLf>U
zWidVI<aRzarKz~-)V?e>!JygWxy4l9M)cbq#4>_1`*|#YEu>)!aL+pCYmGwXh&YC$
zBEHrrkQ62kDuS^eR162H7|CA6vU6;8j&WdAtZuXA<VY|nrfd>6W+-25Js<C9b-|@8
zP)$WfH>pZ|RVG5mU0mPz_5w&5#6*1K_pj2v@jnzV8=r7w!>K?>IO5-C((TzTi6_%_
zJ;3KE;N~zZxB3*9!odssuuaZe*a9UVAzfUPOr1w-baDE+gk&w{b%~y80^wuIym$R%
zjYa{g^Kaot^g98%9@FKBGRW#4=LV-EY{WJ>6k#th|Go!v-{$i&j)io4%oq*E;1ekw
zqkev63|mJC86jYV<f{ZmAXj<IqmU`S#reif&NOb|AvZYH%?xPYr^_B)>PaqLlFps8
z{r`=qaHK~WxF$V6AoY?QY2bE}BaM;<;>khYI-d^UtFCi;!1)8qk^DaoZBldEa6?fZ
q-b`*+xUFXb+MEN01J)~N4SGPhWkkE$^=k~}GSp(^*Aq5i$@pi{PEFVV

-- 
GitLab