From 89487501b6d05502da0fd57ee6233bb35d07716c Mon Sep 17 00:00:00 2001 From: Richard Gibson Date: Sat, 12 Nov 2022 14:47:08 -0500 Subject: [PATCH] fix: Always draw full arcs and borders for doughnut slices (#10806) * test: Add a failing test for single-slice doughnut with offset * fix: Always draw full arcs and borders for doughnut slices Fixes #10801 * test: Update existing image --- src/elements/element.arc.ts | 78 +++++++----------- .../single-slice-circumference-405.png | Bin 12440 -> 11157 bytes .../single-slice-offset.js | 16 ++++ .../single-slice-offset.png | Bin 0 -> 28982 bytes 4 files changed, 45 insertions(+), 49 deletions(-) create mode 100644 test/fixtures/controller.doughnut/single-slice-offset.js create mode 100644 test/fixtures/controller.doughnut/single-slice-offset.png diff --git a/src/elements/element.arc.ts b/src/elements/element.arc.ts index b9b9474e7..7e19c9115 100644 --- a/src/elements/element.arc.ts +++ b/src/elements/element.arc.ts @@ -67,21 +67,18 @@ function rThetaToXY(r: number, theta: number, x: number, y: number) { /** - * Path the arc, respecting the border radius - * - * 8 points of interest exist around the arc segment. - * These points define the intersection of the arc edges and the corners. + * Path the arc, respecting border radius by separating into left and right halves. * * Start End * - * 1---------2 Outer + * 1--->a--->2 Outer * / \ * 8 3 * | | * | | * 7 4 * \ / - * 6---------5 Inner + * 6<---b<---5 Inner */ function pathArc( ctx: CanvasRenderingContext2D, @@ -129,8 +126,10 @@ function pathArc( ctx.beginPath(); if (circular) { - // The first arc segment from point 1 to point 2 - ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerEndAdjustedAngle); + // The first arc segments from point 1 to point a to point 2 + const outerMidAdjustedAngle = (outerStartAdjustedAngle + outerEndAdjustedAngle) / 2; + ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerMidAdjustedAngle); + ctx.arc(x, y, outerRadius, outerMidAdjustedAngle, outerEndAdjustedAngle); // The corner segment from point 2 to point 3 if (outerEnd > 0) { @@ -148,8 +147,10 @@ function pathArc( ctx.arc(pCenter.x, pCenter.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI); } - // The inner arc from point 5 to point 6 - ctx.arc(x, y, innerRadius, endAngle - (innerEnd / innerRadius), startAngle + (innerStart / innerRadius), true); + // The inner arc from point 5 to point b to point 6 + const innerMidAdjustedAngle = ((endAngle - (innerEnd / innerRadius)) + (startAngle + (innerStart / innerRadius))) / 2; + ctx.arc(x, y, innerRadius, endAngle - (innerEnd / innerRadius), innerMidAdjustedAngle, true); + ctx.arc(x, y, innerRadius, innerMidAdjustedAngle, startAngle + (innerStart / innerRadius), true); // The corner segment from point 6 to point 7 if (innerStart > 0) { @@ -191,17 +192,12 @@ function drawArc( const {fullCircles, startAngle, circumference} = element; let endAngle = element.endAngle; if (fullCircles) { - pathArc(ctx, element, offset, spacing, startAngle + TAU, circular); - + pathArc(ctx, element, offset, spacing, endAngle, circular); for (let i = 0; i < fullCircles; ++i) { ctx.fill(); } - if (!isNaN(circumference)) { - endAngle = startAngle + circumference % TAU; - if (circumference % TAU === 0) { - endAngle += TAU; - } + endAngle = startAngle + (circumference % TAU || TAU); } } pathArc(ctx, element, offset, spacing, endAngle, circular); @@ -209,39 +205,14 @@ function drawArc( return endAngle; } -function drawFullCircleBorders(ctx: CanvasRenderingContext2D, element: ArcElement, inner: boolean) { - const {x, y, startAngle, pixelMargin, fullCircles} = element; - const outerRadius = Math.max(element.outerRadius - pixelMargin, 0); - const innerRadius = element.innerRadius + pixelMargin; - - let i; - - if (inner) { - clipArc(ctx, element, startAngle + TAU); - } - - ctx.beginPath(); - ctx.arc(x, y, innerRadius, startAngle + TAU, startAngle, true); - for (i = 0; i < fullCircles; ++i) { - ctx.stroke(); - } - - ctx.beginPath(); - ctx.arc(x, y, outerRadius, startAngle, startAngle + TAU); - for (i = 0; i < fullCircles; ++i) { - ctx.stroke(); - } -} - function drawBorder( ctx: CanvasRenderingContext2D, element: ArcElement, offset: number, spacing: number, - endAngle: number, circular: boolean, ) { - const {options} = element; + const {fullCircles, startAngle, circumference, options} = element; const {borderWidth, borderJoinStyle} = options; const inner = options.borderAlign === 'inner'; @@ -257,16 +228,25 @@ function drawBorder( ctx.lineJoin = borderJoinStyle || 'bevel'; } - if (element.fullCircles) { - drawFullCircleBorders(ctx, element, inner); + let endAngle = element.endAngle; + if (fullCircles) { + pathArc(ctx, element, offset, spacing, endAngle, circular); + for (let i = 0; i < fullCircles; ++i) { + ctx.stroke(); + } + if (!isNaN(circumference)) { + endAngle = startAngle + (circumference % TAU || TAU); + } } if (inner) { clipArc(ctx, element, endAngle); } - pathArc(ctx, element, offset, spacing, endAngle, circular); - ctx.stroke(); + if (!fullCircles) { + pathArc(ctx, element, offset, spacing, endAngle, circular); + ctx.stroke(); + } } export interface ArcProps extends Point { @@ -385,8 +365,8 @@ export default class ArcElement extends Element { ctx.fillStyle = options.backgroundColor; ctx.strokeStyle = options.borderColor; - const endAngle = drawArc(ctx, this, radiusOffset, spacing, circular); - drawBorder(ctx, this, radiusOffset, spacing, endAngle, circular); + drawArc(ctx, this, radiusOffset, spacing, circular); + drawBorder(ctx, this, radiusOffset, spacing, circular); ctx.restore(); } diff --git a/test/fixtures/controller.doughnut/single-slice-circumference-405.png b/test/fixtures/controller.doughnut/single-slice-circumference-405.png index 0591cca94251e29fa477a4b7e9de1356532aeade..db4e25235095a759549bb08ec0e1945d671644c5 100644 GIT binary patch literal 11157 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 literal 12440 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 TO#6*y;O0?L(3CHevkdw_(gvY` diff --git a/test/fixtures/controller.doughnut/single-slice-offset.js b/test/fixtures/controller.doughnut/single-slice-offset.js new file mode 100644 index 000000000..d2a9ace0c --- /dev/null +++ b/test/fixtures/controller.doughnut/single-slice-offset.js @@ -0,0 +1,16 @@ +module.exports = { + config: { + type: 'doughnut', + data: { + labels: ['A'], + datasets: [{ + data: [385], + backgroundColor: 'rgba(0,0,0,0.3)', + borderColor: 'rgba(0,0,0,0.5)', + }] + }, + options: { + offset: 20 + } + } +}; diff --git a/test/fixtures/controller.doughnut/single-slice-offset.png b/test/fixtures/controller.doughnut/single-slice-offset.png new file mode 100644 index 0000000000000000000000000000000000000000..b38c18b8033d351114897275daffd2e483102f5b GIT binary patch literal 28982 zc-k~uc|25M+deZ6#u77j5o2cTLS)~@Zb*be!c_LMCHppG-&wcLwy6$J5Nwz$1e1iETGXMZ5a3%&;000G!|6mNXkByLl zUD^jEz{*$;c-kvC2LMO_XP|2n;-*xC?}^@e!Ai@}(H3b<+Z!!;-3*l_t?vQ;IaERl%t>dVTzH^m@~c%KVqu zOZgiu6}*^MzLkBgwefu&?X8y;;utO2xkn{!rMVwdkCxrQH0&fzCPo{(?1X^HNO(eU zE$i3(oh8Pe#Fqr~`0*@z`Im0@PWJk~*>$vyw%GTL$Ov+1krQ5#S&dF<3tfp^D}54e zfnnmdpN)*JNn~B!LhG__?|m(?MbOaO70-0+$W2RRpkyHTX)-ita0p}iM)BYb=#bC&)W8})ah?dwykd! z`PX(o0nUWTI_)=(wMpw)wtlPH6CLHnTqXGIJfOLUHHN@MMtbbLFv5p{c0hhod(;`6 zSx1}yuk|A_*}vc0>|6Ycr_QfL&a8N4&$RY7guh;H66<6Z{~o#~WCe(jqnre7H{Qm6 za`{L&Vi2SHTd<1|xJCr-4vaWD_rh`$Y2gUH?vuKp3)mh!C*>{MZ|wLk{&-UC_saTD zZ~{xw=xL2nulv61EiInVez|TzZ<~*0Dc)o>F*xqW!YI|Z3vz}54si-Ld-I^P@aszC zfg0LUla>$d77)6AMrhHi7yU1&wsJfYS4LZx{em`R=4Cd%$MlVZpDTX^rM{)e@r>nI zFW^JO$W17)MW0WKT{m$5-B*}DJ)Af^b?_8+?OeZ1@F!RWk*4X%DXLRNJiu~-`+jE!sF&mKJ4*aVy0Upk4Rg|F^1Yf~zb@8YYZWGAL z$CD%c#EcewHl(W$&As4p<}w>mr|JE;anhZs?UlEtY*V#adW1!_;Bq`UQrF(5@+}Vq zqI6zSQd5LAh$LieO}ysrUY@E@deCx)Q1=wVI(1YX~z* z#yGtD0^^FM*?LCbvE{zZ-|uXtEnB8GiNQQ9JUdd=HKv(8{4YnC$S&7Azp~xqZ!!54 zH-IR8mr6ZnLKD!X?WYK}N8_Pco2xwDg3Td3`%0p<2&hJ@X;{(ldR86fv#P%AqdO)* zSZDqYgo(h4W&3))I+s-h6kNN4p7X*r#%+~V>|AwV!P2Ujpex&D5cKy+M|oz;X$@`E zi2b(z%JUC(JdwR|W7Zr#^ z@M6HTB0xE4dvSy5_Y;>u9Pfu(hsp#sXv7c1xah6LojNh##nDL^C`uQ{8^E+gG^K1O ztg>O5`^9Ls6dyN}oDY{GszQ-<+^L5t&pvd<_na?X-}Cxvapp+-&buctpbyX#uX;#% z2JXFULHU3Rz?teUVC5sLpA9(`4XU8~`Dr~!UD2jJIM>kY6mG%n+SirZB;zn!QNX&< z#pfxx5MWh#?vhf5fbb(DME9;Sy+=7pH@58GC!Cxx69do$l~1-J7d*_e zLf=P-_QdU^Q2X0SPhn@u!&c^>@DmYmc?cgwGy2sf5N6;Y#}gHFv1olA>6$Tia`|GA ztnj^a+5%3bOb^XI>ZiuhUUA zK4%b^2=48w2xN#aC$7*m%-qKR`b5=34YlvNet`n)v=W+n7y7)}vJ|*4rNFex?5BzS z2RK2x>IxBjEVR4ViA~#u^@G0r?)yax)^G2WNkS{0rnk&b>Yh{tT0!7@^S6$O=<(%g z3gt;VizX5ZC#*+kQs>UF(ai23-nzGiy>aT9(8&I4?O$^*Rv#46BEeYPr!!nAppl@d z&61Zb`qL27(c!d-WpH5X1LUJb5@ESbr62wPHm@m13Ui!3LQkF<0$>G%)kcF?#YE zpRU#B)ID!G{^Qx|i|zGs)!`XemFUY;7dJaVbmxBAdSI0={VE5FVC4SmEs!*MK$&83WRcHzfmp%W`V>i=;7VZG4FAE&^_ zdiEjUw)Z3g`6I#q_tvZ%=tir2yiw9VanRdRo5$WdXkXLMZu`Pgz^`vU=MhO)d=(+H ze^mdnR{a4C%KpNzKt^C1R)z6)QL8e9Pkd;!`KJQuUkW2Di_Wcww(aLXutaZlylCvC zsVmf$+*+5x@Ppkd2kj!Z6;Bdu7a>^<8OQVDai{1qdHc zQ_EXpQ{mA47Q1cU%y}0ZDgDxs(>k=k{T2B3N#-(^VuWbZ?*P^y;%b)lY41uunQ{{D z!Mpd46b}VDo(e;RQ~psW-8-Y*#~$+f7BgY(tpTe{tC^Pj7!$Z0F(wPzsCP{3Zd0!t z*Vkd72X^~Rt5a#EU57e%Sj^7kZE*lrs%q$<9$^S`fd5&tuOM#X1*Uj@uwgXtHZ=5}coEO3W(+ za+PKWgvQ0M9GDq~!C!Ss>dar_fessusa_hUv-~k=`(twR!L6BF7ix1J#|pA&UKSIa zw)ciwcHHgb-Pyl*S$Kx9xQ$y1kme*hL9y?|uDtVcMb#S&Y*OtAHKo>=XJ=L~;Qy?@ z1Ci^Hj9hJ-eTlwQlJL7ogDst$wz&qslc2=#xqpm(091#je~GLhOT8}Dqm0CTc;`E~ zUcw~?>}1FhBf*{1!m`mFyAeM*`hv-fFIk~jP1qL@k6l$b+>W_0dt=#d{|WM)yJAC= z-M8a-gmrLj$+kPeR?+<{Ls_e@B7CE!v}z2+fDb6!j;$nKlmiukYcy5YmWs-|8YyzA z0QjxcFR|5n=H;IMmX65WNJw9gm4l+xF<(I4J=$7>mNBPjcWK>cfB%e-$*#yB&Ph1O zpkSaKlvxy&M6S#p%g>B&s5lRXF#*e?FBV!}*WKZUx-i|8o%6@3;C2l|=$|V*H@JQd zc%w6Ku-zsS6Fj*2p*QsI`t?9XsI>@TQPC5BmPX=p?!n0d^%n;io6IP47aYi)DT*Tb zt4AsjlMuh%*^`K7aM!=rLaI;6|HsNku{K$HA5Ckil#ufiA%pveaO%Am#0o}q!>maU z(-z~Elu`wViNB58GN(r4Por%1@&ido_tWwCaJP=$(h&aRsUhwvqKphDcDQ7h3HV)` zWnc~0imnqq1|Vou-0&@-MrZI3^>5qhm;lRw07d8lilC8CdZtNNE#S+JZR^?zK$2VR zj4|5Z)kgLa6MdO|Utp{$zl49NBXTE|f{S-lieMlK(@Og?U*f$T{p;>jzilJk4=tiGt!jO1-~E(y*s!ZFhiJUU!BcD#!%qCBz`@pb`aUBD^mT3th(U7Cf+Cr_yemG4WoHJ#hX%932v#uI=oS7$xKq^t+7pEeRo78sS;s?IJ~i~5nQ z=?fDgcNYqQm#I2FhrtF>IuONZ*qQX8@ag7!0uA$+9u$?Ne^i>7GwAuPfJ0Jn zZ@S^KfDURf0`u*>FRj{-`=S59w`cbrSZqK;j0YDJNz1sZaMz8GAbx+UCB4EC-FEa0 zzU41cx|XRw7rZD6eAdq>9Z4grBCs;BRv@m|hv_TwNl}LXF}Yw=wp$S>_yz8b^0PZK z?xp*(MpU&S>+KC(*PUrbD-IdpV_`85@AlVW9Q)neP2V&!kwc6GT-zEA=g#pQN$XSH zHG{Vt)5wd*lkugBII<~8IsH1p8dF?kHFIkz^_ZENRUGM(Byx2#bOL`qx;yO#4jGi? z1Df-WwuSl=;fzqTIFEi|{d{OEVJ7{208P-@#M8Db~GUiz_*U|ExHm9nyDRQ-?|rr6E3?GO3i z9Y!MnO8$`N29=kOIMj=UeLm$G12Q>@&M}_nyvg9rNpSO<)=Z7jPI79In6t6{dxOEl zIq?7aN3XLW9kecO3TUzUX}Vj|TDAGW2WqMF@QD#w_+1niS#@;AZZmdKIwK7$2f-5N z-)Gm&vhWeZ5ctS)H~MGRKXK~kIPTDodg;*uEry&@xM8f+<|>M?Gt?EH+5VaOtnSh= zf83V1;BvfAA$HT_D4}&_9YALZ9@3SJ00*@QGgv+ z4y`OinD7%%h}Lpo2q?Xe46oB^=}LxC+im?T-^%{o_YF}0K1C%6grZKUjK(vP1wS5Ln%|uKK0z z$QKB>oi#^RW0l=#BFZacWC{MKMWz^*fH}Fji&231xc4NSiUu}yM z{E_wYEoPn(c`B_pWtecx8bFt!eJi5;{;^#lG7=XT&~{zWRrI9`M-B!uh06v%mhIE*VzOn?B3Lb5Njg2 z`+`BzUBVQmSZlsm(KAVm})#!v7))Tp4-o6A87%_dP;@XXufjY$cWm{nRkJ6I?EorZPpy$4`8{^ zTYT@eJFX_r55 zYtvT(4f^H(&8oNuxSXw5Hmtc(;bpxLQvewcw06^{a+4bJUt%k~^r5ShZ#IwR@7=!ZOxY7fY;P4+SUXaFw%uc;^{p;H zOK*w{ti_7bOZt;WAnS{2`J^2lZy43Qn7H_CU3}V?4JU3EHpbZjb2*+I5@Nk_-1G@E zs-&e5zdF)}x6U_nKy0rVo6xl`uH}WmiJOFV=t!WmB%!S!)d>f4XyPXdBJN683=5}w z)#h>>T4yA%dF5yU(YiO;aT=zmZFWabvD89D7dOP_^u2|%oP;aJzk)6vZ@e|$T@YL- zaq-x&dRbBU@=-;k{^Zt1Qi`&y5z?JTV#r#gnw$65J%*Lx$OYF#6BbR%e7+cPjyVN~ z+=!*Jw@3Q?^=*f75y)YryfiNY?8-fWOMX^)t#U?-8$>Ycq044xBIksFD`hJuILLAJ zLT^gpl{9BrcAE_MCd1$}@ilwtq_?6>qMuO?pFqOxHg=;o!ZQc3gV+2-D>wm=;qDls zv+S-OJ`b;si%DX6eaY(C9I=wdf%OM>thG`Gbf9`ptG*v#T*tA|jrF#6*9X!Gqf<@J zH^cDBAW+CoGB{~-XL;*oG}5R{{@5r-+0x5{v%^>5cQq(<*t(nd8gZ&T-jtp18eaYcr*74o za*J4%Ui6RCXUGS@_kWSA-NC-kQ5}BCAC9*ci zi_+vgJ>XyV%i4-|(Nl7tbfe>sDBf>>B&+h3K!RzAWW)!#s6;1}d;4L<`0orH6G-rw zX^i_Uce4K}Q}JF+L*&8n)`L%`qlM1+x_cV77bYX+S(U}2joL!lH*pf$^%fIf6hE1| zv;O;)w^5lhsLJLbt9=vNFXwf5g$Y(8+xlCi*`8w!_$5XE=N#}Stv%WtXJK02m3h2# zEr-TKsrT^ULnFKfuDaa`Jy%F7`GTk^Vj@Grn!3lKq>P-6hzvT9!ZdQ$ao=JpYP$qN ztJ|$mhigLFWs9tRcYv&KO~J2K5yAC?7D3iO8PaK$K~4g87k;6!^V>e8E|LgxwP-}9 zHyf~AzlYMX34dcksckw@uyh8h^q+kdtcX#^7Z@MW9$_ch&B)14zCdnOgX9W8kcm0% zr2)}W`>vgXw+bQ}DldW(ajzmaXi)Y2{^}P_V|)Ovj*WEA60aOTbqfuIn+{#z_5@)sMr zAAlZ@q<&@w8Y+GQ&J>sn5nIVl&i=bKsq!uK!z~d&LN(HWa`L{HTk%n^g}Fe#JXA18 zx4;}Y$uN}P#{e;yR#k3xqS%UReGBZNJ-&wlUoP9tbNQZ_F@^H1IkYnB<1}I+tZNW#RWoqMx1$CS=Q{}JoDB7c|=W&G} z)&AgQ*M>i-&7N2IS)nBLBKK$-sALa7J2zK3W4AYWBte7!wY>_o#E^ zQ*P>S_gD?PV--Zx8@x|3LcxdDXOjqI-yq%mhteS48n-u;)?)dwW{fwfP5g52d-Kr6`R{wa<$0kDmPUKrYcZ-e(d)f!;>tlvnH^7d3xl7| zxPhj|gz@PcXyj^r?j0{{almGG7)ij?zyAWujU!(p@npnD-Y;nvVja9Q#XYrovt@mJ zdruPA_wmVYbZhC8LpMa#8hLX6Rz}FhXxo(loZc$<93n}6L3R(oizhC;K5my|p zX-O&jbqNjUc$f73f(y$%d{p75SGi08G1@nyy4yLCML`W16+v5aLS<@Xw!t^Dh;<>A zh?Vz_r~i0lyr@3(f1f&F7qo4z%oBzx7Jti=5902nnXDEyIa4Cn%2x*exPi9}3FDu} z&Wu}RZR~NKFuw!TH*fore&pT0U*TW{_C+c{(I|5Hr)zzw@uiM?InQFb>oDLuXo1>#@WWCjz)b^0oYW5I0erT;KTr?*S*S+JL>A0+unC`d>vh9cpY zs0Yvn?4NKXs+2yXJ)NKyGXYC^aE-5d&nvM{FgRR|46j**ufDzckrQ6j<=^>b4G7F5 zx|{JL2!LOWxgc52N&%?^1swD?5);LVoSJ7x)3Cg7>XkzJv?eoo!LKVa`-_W`h;C`# z{HSkJXPgZ#)CtD{DBuyQ3!wlIO%)!$@x(_QoJW!OE3;1ZK^35+HLofofQ>bn>78!% zA&qqnAduhP@4&x5x;3fR({_bYd7dZ`x(!2NxcL;w{-%||1eNIyn3&*>*joa^gAXzf z!UgvjaXKE`PLa;qqEPbkTvwD}_WfE*=b3r5U^1k~A;fp32IQGUl+`1Kn0$+j7l zk?8o|N8&?f_F z){ zZTR>C{dTCJbi*~XVG#H#d>0P6Xt45zpXg6ZJ7=^@mH#J^et#>O{i(&o6(u21)n`OB zNocHO0W(TX?+hVtIlAcrOYoG@Y^{y&4S(>3AVKj*><6u_9_3MF$z4Mfq55-&h*A%~ z4l&Xs@bXpJl{u`GczZ_@C(;NoXQZeiglVL7N{{d=KMnXZnyIhva%JmqJ#q*G2xnL& z7sVof)9{hz@H=y=0%ERdr*tN@I`^)G2=70EqgE>Mo z%Y`Sh^@Q0l3gA0j&a!abT4^~_HfpO0C&f1VXs(71qDA)>R9EC!m>h;v0Ux{DLr=B= zWsD2!_PyVsl(W!~(p6|y@hv-$UOBSQ{^>XmWSda&Wr{UpJz53bkAZT{igc~a!GH(d z7~QB^!*ONLnmR3cXqLWI!`kJ`9K_fVx-9QNMW{InfQSlFp}0il&VgIn#( zrCrgbO&Q?>Jx#)252`;RR^ugD-CM;?%ROl1^==X{sauym2v31eNXAI0JCFk^CBdv$ zeLT>T%l#9IHnW+JDMkU$SkT?|#<=~m-w142K0_U>j6 zW5x>=N6{?{a@Q6Y&T`a!Equ@ci~-8hY?q#LUUhz=2auR1DiY}55nx&AmFb0mAY9g7 z=<|SSup%@NMTik@j!M}Yk(>)A^?FEmHk|(uQF{rFCv*KmT0)tj}j2-1}uQ&l`5rIfw^b1uWkS z>b?j?$&xD*v~crSKu)dmZWo=3khqF0)bi7z6)|<)p7wrbXp(!@iaaTn{>mRtP{9o; zv3ibFe&w@z>o*LOw|zuy$gOa|9Go?6Y8aIpABUA`=;i^1r&_FL)KvR(u7M!T%gKoH zNd&L_zVhLb*Ef(5vDlUh^Nx$Y;`!v+{m;Aa>nBYqTVgmJuL6Ge^oQv;pb$*&SG9K< zo0b*KZ^|q=O=hCauT7gU88mI^V6?vHelq6-P$$RX@A+YZG$nNr)S5e?2KC&sKUU0k zr^WopRhcWkb07R=C5L3p-g9!%L5bl$i|9S zs7mf^UfUX(P@@fZjT>hlZ3LU`8jbFXo5KMqS46AH)x6Z*7hg-I_#l6fkZ91nSQt^q zV<{P;=Wv{9+Ow!ro7(#G0T5c2>7+O~a|8@! zXmxc8DzSh1WWnLMKe<}m><=t!0?LGZU-?jDh z?K$CCOl~c=iEq%%A7nhZJ?}g)12-ce z)AJ%WNy0a!jaDe1;P}W|W-#&+n?AKUsE;T1rb+b<`|(uG0BN)r{d zr4&>EHzb$w-ZG-O)&_ZVD-CAJl^%k~y>P+gR1@vRW8BSedbE;_h4Qb+5&GHP?W^w} zV9p)}y!sx*PmDq!SrU+Sj~QBGtM&|^*7QxNO%LYYlzd#CF*1(=DjMMj7M3hcN9U(b zhI%}21_Dmp7k0UCk!BlYG=xOUW1x(tLzm>CsLM874pZF zlH@}BklPM7fylr;x6}iSWy9EM?<+0*uPzMKjaVPtrB#>%rzBIqEl6v z`ken>_myOuYpR`n!V-tTl5pCa`;TJ*%YXT76JxDUYy9h9Dbj|>v!p7Qgt86eP!AO} z9(-twKTKk@J56zwQ^p&WF+w)bs?6Ko;3)fv-f9p?NZBi8J7t}(`mX=ScB-TZ;q6hc z$iMYh5^Q&@jz)OVSqe}IkaXEx6W~@@F>QLWJZy(R78k^Xe;g5EK70GeXf;R}J*6wX zu3meih7-A2_=SJwuxn4~V!nsryis$sQJEXKTC*&cJOr^JJ~2F~{iD5mYY9mxVO|rF zc*J)4p|TWYP+VxE`i)DR~BaG7&HQI$aOwvNgb-1Ig-38O+niZK+jDsw&7^5hidl3Z8ABp+cAZUd2gscb2b2h^bE zBF`W$Jia9@05OnMPKqxriaySfd1FHQ&rXa;eV}>Ed|PVWpeR^fZ+Z?kO=RSmq^-*; zWaez`R2pqQYkP8TK@hRsd1X5f!z=Fzx;YQPTH*kHWk!?B>b+5=XJif0*LXxiI@|2;8mp1mpwD43S88pX_|W+O<~bVkL|S)5QaBWC4W?*!kG zlBX|;K?PZs#OK^_rP&(;NO@L$p!zV;NJ;9Vex(pAMK@a66EvZphEac(u;4OtH1dU^ zxp9X6IWzKxS4X-H2?f&Nq_DC_Ao(f`a6ekyRb3FB?x{To`e|h|q$vE#cbu#HjKe>1 z&?oFlU%X7E|G@n2<&W_3*XKbPv!gC$4Z%yw2xnq*zlmxMZWZspD}v+4%C-~t z6)zv*?{B6cjz#GV#A85CXY8V zbFmD>`{J4tSw+*n)oOxWIvtxy`@d~_6vuf4h!t=$3qchw8rzreV*jrq!To0Oef+?! z3qp782ychVKq?(cIXOAV_djpcCnQ-1@#|#W_VnraC4}zR1(CmB6L3r#m9YoG`Nqb0 ze;n8KSTL%2yyt`-;KaRqG!U*cbYc8Juju=XpJF)__gjZPy2h~N`|8l$3=~0Zf86vM zuZh<`VGXauW-U$V9U;IUS-QOSOA`hmx2}rdQVm2>CYtAcgSa7-!#{a(02lYCku(Cr zgbtFl<8&cwq2}zH-%e@#5a#DvnB*{-;LU&)T^O)T?`5Tf@JWbzy3+SM7U1p*AzS)Q zzW88M(#^>1a1A8s6W**=cvx4bD^fdi7Vc{doP`z|6W^9@HXE_)0jk%_$M#;4d~ObL zIP0i^Ne9Ri8*w3I%uiifn7A^4%B#W5kv#doWqlQ}hnMniKd*59cl{6v5=^X_+ltgp zO0Mb@uey_r35rHs$WMxf>%tJ^aUoLlfWTh%#PckFN9cYgTJ#8RxnV&bHfYF&HvY>8 z9Ds}XkuD{LlyUp%9N`1yAk#V~HznHLbT@SC%QJc-qyyLw4x%cEr@xmh$y<2wE$kHP z7fz33zSv2m4I3YBdAm;7x4a6Elb&mSdT6(QMIIQ%0-@C4%Y4-Wu@?j6 z9x=bpz*OwAm(C5*tYZccKvGv69obD!sr1NVk?~!0k!aLIXaD4g&yAu+WjQe9&_7As z4U^rAuj4d4lQd}KGmBBf*z^THk0F)~eZZ1$x0GZFXueM+lj$haa+dA|-O=Lz3NKMy zua5?!vk*`)HoGA*w&I4u^PY$2GO^q+lgHXb!Z)`V+UmR%QckMT7f*Jq8mvqvz6>@* zkyX0f`+AtNjIO@~(v^>dS{?hD4oScZ-0HWvQG5weFAODzQZz8F_?@4Sgt9$hL;IT+ zINQX%@vk38g{>VdX|eNpavkUfb?h_d+8t6{G^Q*(sh%tioBDtsy48uIMN+l(lcs~* zI?6w>rBjYNJ~)1x1wskNu{3{&w2Yp7jR-gM^f0&|;$ub9h z{Xe&o-*fyv)VNcvPdD@QBoPZ7grl`h#4zlYx zp&A1#QZe1vBd)_|du>I}8Y_2@1cB|G`%}8emFqiq-OL{9mXW}>29*3NeJ?Snr7M7B zhy`mF+Van=B<mz_( z1X~aTmS0h<#=wX~D(^~)dMnZ6U4!UihbV^%(v{8mr^Ju^6`)GW44vl)yuw!4yRMkS zh@a^K2)e3tWob<>?qgmGCn2@&v*vhLBDzizTSeE(iyEatH?4taWwz&1KDlA3*n?041glEl7E(QvSX3a~-eKDQ4HS8%Vb^ zDpuId0Bxb2xQZ;zGp4@#qvw&>6Kh@+ON*i7uZA??ssUXhncE>ui8^ zGS)nwzCNac9aqrzy&~nV%;)$A;WI%ZHOcQT*h0@ zIk!7qs?Qk%kEICm9WPit|G_Mm@1B-kMaqsqxAM$yyvoQv8oUc|-# z;^s$18Nf{e#KZvi+t;eI-HIXRIBDbMqchX@d{fi0|6nb;6d}^n9D|3M4r4IO4~$n; zT=qXP+^sb?2H+V;zc^FBpMTPGYIEXl4LrddSaKL*j)T_4LQEHJb)r2 z-Z0T)2bgAYv2Uu-0HYBN?;eEkP{GlDUw+KYvtXQ89*SUdhJ$GMW#$}-v{->SdftX{Jh6|9cy*cz2UYNOmC_m=c#*5waR_4+%($wpkeyPlCmU9 zcY&~!1o6+cxT<0WVMGB(W|YU)O>E3S9ftD}m(kFSh3LUs%m?o$2nklmzyut;b+v4t zu>^hSbf)ar$Nh&Xkh^A-s%sbgdOZ#~>680+L?az2cXkSIu%u(3!B!o_-=>}=ucsQ` z7yKXsfPbUKVszY}MMyyj%vAC6A|xWtClpGKE*Uwp@4zdBacO9i*5m72l3>6yx6C<%aH!{cQBW9Aavs9a-N?U_Q%u} z{zmtZaCmTYczL@u0sya83!CdAe`fZEm$WGKCd0UPwpz?z1sauwfFXaZPu>;uxB5_h zFp(z*)kqA^pMNSy|C#a-1sEK)nNb3G(z=4(;#>u{EJ0YML_W|P^_rGWA)lI4F{_d! zA!Q+ZG@)EhUL*f$gdj_yFKCLTB5@if&$}EB zAGC&YZS3JHqW(=ou$uTIRbC^(j?>Pd3B-Vr>Vacp?hY>UzK5uWQ?I->rEeLkcS$EF zka$wRjNUXnc=#8vG|IaC{&$K~j*_M_TS5{CHB;<*QbH%Kd>7$Vm1yihQm_<0=z~V8 z?#pfjC3>_hB2wORfd!T3 z+;pqY@QIzKVb8BDK5r}nvc1d4KHP+$emVHkrDL05EgDgKY#Y7dY@c}xv_nGM2IL^y z4mbgm-B%S=>m5}d3wdl7?2;%6$nn?HmJHB~S_Br%=*5IjhL_bcD<%tHEIqWgc=Mu?<`itoRb+}u;$wYc4FYftDWe$CqMIg8;iOU7G zO)2Y!?=K~Ml{S>>PuBg{T|ac`Bm|AEsWFG~l-^CWi# z$CM$`FKzgflD7Pgk(L##-i*1iodAbQf0+MU6LF_P1^32^(za!GyvC7Y(evSnM5+i4 zS_L`hu!j7;*VD1@V2d0md}AVS8D8SKa;sH%`?uJUJsI!EXn>PYGxM=D-NBZFNN7vC zU8YdeaEE3IlI=w)hLf;A1FbBr%Q;&(vS$O5je#8tW|=G2G{#yDOPI|$K4jyHB<~z8 zM1WZbcv~UD4a|XAn-IVVanq4=Qpobc-}t!GMq^8S0S=xZmeA!l2?&CBw<4;q0emyR z=3CEAL#ipjFMjPD6>UR@M!kyg60T0bF!t(HI#w69D6Bxu|9A$g`;gal-qIf6fl6J^ zu+hVEMXI;_hYZL=No;ATGhKvnZ-eKCWgJjFMyk%978J`I^1y`s1(#n#fPP)_^F9g4 zA<|iq)(qsKobZtRiY3f}6Xn22+yRu5#ODHSgL05EzJ4(hJjwq|+0B^*35J)~2cUOr zFWr9YHmq>`6Ghn_rw%UKGs_oPXP?kAfIZP@Us9H_XjA6CpnMLU3iapnhJlXbb0w(+ z>9=`jgn9B_253&TeWgjZ`Td6!B|bNy;3q{f?M*bHf3LOSY>2`?NXOoT!Dn7wO(HZ= z9o`0%N$o^sRQzgbv37;DSWxmvsscf^vk~Hqk|+bZ2b>4@BEGylF0*r3f{icp+fx%^ za`t`ckAG{pmbU$@Vd^VCp3dNJu`rz6hiP1T2O@3Z)M$nRZ*ClAQwIL6^uSdxli)x9=}5CX(`44(<(bX^CIi$UqixWxf^DB zOPl$$@xkgt5?iOzIRvCJ0x@XBaVxus-YKi@Uc+Zvi^k#=alVZBPVY%(10K#R#as@QD{vvSMbcF70c)@h$9k0GsM9VnfC~xlXP{V*Su(t?6wJgzPm}JbDg?Zxw&U3MRga|B2~sKchk5I94m0RB6^xffovq|3pxqhI&>~L_sv}j zO2+KOZCEwg#e5j~YlK(9^_lFx`KG-tFS{{a&nnMKmhA09zw~AGvWUWOSY3RWXVR(*y{YI@T4d?L_C*jyXr#Q&VM;Vhfay|I&))mn? zE1WZ5E+EKZ2&#(T!rP5;Cf;QiVjhUvzBcx7NF8l?7Wy&B8#!l(v*1cMIP9=qfLv$` z5RDACgc9sPdLo>?-p*hwhu#8y5#pO|AO^gG{6EixBpr^&D~#NHvl@EO>jq}xSN!5Z z(BsFM-%dfO>VpoHO_Gm%(JwUi?QANknm^M1KNx8#1eIZcwP=aX75)7z*E^|%&N{NS zZV#f7T1)sf+mPrY5w1k1s|*hgVb?XsMD_ENPTQ}>2Ds1s{uns1sk=JY zqMHfW!N<6FCfrhY`tsYST9VF^>wfz_J$)A1F0y(7HxR1!j)QENb`V4w{2lH7xZL7f zC@^>e#ixszkTfJ;Y{;%iTNKvA9vKByzW(1?03M(B&k@fyjgZ1%{|e+sf{5Wkdwef^9HGmJa#*Z$v;bdZ=g$q;0jz*WA+76kc0 zDwT6hC?^HDdUy_`UMDH1DWYf6{%BpT_hG^n31qA6rtg1w6>n6=2lfa4lFA4Wmg$(k zb;8kv@3 z1|3+t|92|+TV-J1Z^)oXFCq!qGV+>-NZuvo1zs&fbqpEh5y=aB150i=+q|o{)-IuT zU*4^7j^o8!VQJdk*fPi{xu{v;3e(J71}p;E$7EJ~zfDk(@z z5Trv1X-R>xAL!@%+n;-#=REhG`#y1>*SYU2wHT~oBf)&{Ov*9(X4l^G*T<7gAPlMi zrV~>;_W5JQeOK|bA1R{TFi#V;Kels4cnBcrIbM!$#b)Zuzx67k*0O7h|D$k|m{!CL zWJ8uPy%0`6&U#W1FRy_RQCEU;Vzt6=y;~FWh3l>iEYPHG;xiIM56teRWcnSHKmZ13 z7hP59uE)SV1H>DLVdO#oP25$kIop(->OrUxLpnSa)0)(Rd6ayN7uQh^T|u$Fa2bnRi3GhL!O200le45yxUDb->i>0jbodq|I= z*4_aSOoyt%Z||Pzs&q7VKoCXTU21!)kNUg>_M6A zy|tY=5O7%qV5K~Gi`VHU4BXQD_)zyOoUK(%{7;qf$qFKZAoH2qFGs4p8CRb0b}?DF z^R(XRgA*u8tbWT`K%=CT9`8$8kPFxA>sI%5P=OKQtQo~h1I__NC~Go71UD(Q)V49n zMz7`lyolVQ?e;AVlvll@50ua#MSw(gJVkv*6oD3Z8Rs|PcTc!G;#20?h#zodLyVpm zhkpH~Ka=%Q{sO=sjSk8_rVPN99}ojI%UgZ?!G7`_AXGtn?oY&dNT%#YbyYfa5^~? zZ)X9*Y^u-spJQdHcS&nEHK3-<1bMv!Kh+985-+IV77X&HoC5{c@>7IoH+gn}ZXxvp=ahgX zL|1ZD)GEogoI~vG2XD_r9Sm58FUkJ)19Bg0s%{YACYdmIkRQuorwyUv2fB5YS`#s{ zcb{xgBO)}jKgztNeY~YRR$a=E+$_DK@#1G=ssAMDEhQ-Oeb?Zji5RFia6kwMOUwIkI&balpA75K0sNjjG>0HEr4mMacd&<|3_$6zA71!o$7+ zB~p-${vwiBHU85<(_#SxGcjcYrwqT>BEPv%sgAjr4%K*e;W)^QrpLw2-Cz%fEZ&;K zm5l0PO646VxIQTb8*GY3R(;Rjc{?O42C~EPU+D5Coblft9bOay$6xb;XhsyM`Vqka zqtG7_z-Lcty(b;sib3>?*jp>yL1a^ppPU6{m&HKlLIT&|F^Zofkzsdo=HfDwiV%41 zmX#pv9Bk}4BZ6?+()0k$-CciOpPK4zgj8ipi}=MVvC&=Amc5h2?KRPoUUe(y(v^|* zhevfQFvM(jLM+Gh$CWql)U**{5QRj+O9A1ij^|U>d*%F)k!(RgvnjI~f_W8AuK~o% zwNe_SCA>a+u`}x$Uxc1NZQX#hk|2Tv@@0Cbj!DjGp_$=Gu}6`8&a*_k*C4@}b=h^N z+&RJJdHARzO}D8JRAGCad@Iag%l5T7hjnDVoZFf!6|~@>#yxPR_cMX_sf-FZhunf# z8jH#y`!?Kx5<+oT#hrywgIx3N9`^*0({Ky^oGanh#4Gnc+P!{AFoz?k7D!hbnw$GV zJ4W@V+_<4IYVaA&JhCnI(88Hmz-};3$oNU|$1f`gm+S2LwzIRZg z4QfLPHgf6x-CNDUvrq|P=cGMb=nIuQK!)qK(I2naPW6| z#Jd}*L(4bscGR3CqA`l6{hd``+0JcWj8?_MLpg8fji?lEq+#t~1NnC!F;9gyNjGQ{f$h1qAz_1~cZ78nO9&94!qNrZJ` zsPmgLV^ks4R9-P3PJJ@`A_=Bp6J?NJuGr=~`;f&)zEwwG0Uu4om(u+M{Q zzW4?}JRtsU9jm#t^Yv}*D1tcAAQw|m(jL51zJ$)`I?2nW8VK+Z2t_W`@X#($ z2kM9!f`%D^7*U3YCvja?02yTaBb*;3Z)xqT-Kcj6=%}BMK1AbzBPA%HhQXIi?-rlS zc?w??&Th~g5I4yRzkmP4VA<@TysmYe<_~iI?BmZ3PvIpnBz@u+)=~0s3Rs^9GJO+w zY)t%xOG)_ssA#)u>I)s{hrVLB&?T&0#=EVHecw1EZo@~eo^z9ezn@sW^qOt5*Vb)P z_r2qc4#^Ym(&!HZU}2Uyd&HN|D43O0BIo+GAa zO22-L^GpN{)QCFLe&~iUkK#Ece>jFgn1}QB28Ef>*&!&pg#}u`K&WH$7HFkVD6C`o zG=DvXCPHy;oX^<|KO}wjYgpJ*5B~DkcqbuJ0pqjx^-#bkIv)J?>^++NW%lQ5tDG>q zQe*9dwi1Wk^b6x(Yh=LIYCv&|yHMJpp@)16i@ace5+LL~1&jJfA|I7(3~B+3)NK*f zIKLPnla}$*4i<$Lfv}%8s7GnlHJ!e#P~DtE7SX73x*@sT>#G(Q&Vb#@6W(i>{oGJO zyh;b$1eV?oh|{$UUQi0MDI!u6zWhltqU-r;VtEhZs10b<$m`#h;$4As*Pr(Lj94&F z`ZvBXo%!3e6Tdspi5b6H2?}jj{=MN467f^mojp(Bvw6y+&p1iF%Mt;Qk%6WwckO!v zEOy4@LWB+#9MRS)=gETc1YM3F-To(_p-zt}HY%U3PYYR~`;iQ2dRwDvG=Cx?hU3Xd zaVTsvHJlbsX8q&6Ybq|NnvQ-&o$}wNs_FJW{yAzPpB3jCY0@kG$H<3*6 zgTnswP;9n~xou)+E`rYp%GmxmcxQ39)ROc3+=tRGxkR-Yix;zN3(Iey7V;p1O`*kJ z;zZ74_iM6o2C>z|4q&+op4e9H-0!SC_5 zs99)1^*0D;+HD!D>#SH`op+$FD0ouwXan%lVa**RFV;gF!2#)97rpreY|;6G{J`|g zuob3)=c@q5jC9TT+D?-3-KNW(PY{6Lnx|0Oq)%y|zbn`4acNC5R~QZ!&1nm`%X zBzG$*Xu)XgM?NO6yOt$E#)oT?9OZ5ukDy+Dts?P(Vv$9zp4XUxLK{`MxbzWlY#y>6 z_F)`e5ZHg+_zXiEQWw(}>BG0ubs3o=`xr4k{<^*%NIUdZ)X84W^6q7KS-_U2JecfgyDJ7+e1yJKx2!e6;u=MVrM9F8P1&-BWi_i$54 zs+BPwQt?{H`eowhlFCQ5pC=NY<8~9MFW+A64b=0;*AGZH=HgQ(#g|++C(Zjh)PTjK zIE^ohg;+Va9)xWz6jD+ctHiE~dtIn9pRQ%@A$UU#P_+G(hn;INtvy=TEB0N}ae_~O z*M7WBClvP1`Fy(;VAu7d6~|@idLimL==V;#77%b=iNzrc2}zNuGkEaEXL+O$hu!_z znBUU(#O#p#_-lqi9XmG>Lf?%L}}k2U~;(vfv^C``z%3pUN2c_3U%;>W^teplqnTWJ@Z)bFHqF5ic3=r`&n?l8bB z6b-$pPvO%Wx#x}IhpPn?BtW(CX7fnaN-7tH&2wu7NR=n`*dy zejh2<_KD+YiDK%Wknq6xdMuF=j)})z+}9OHu)2u8!YgaLLFrWca<@L6Hx(1Q+&~FY za10LPmL8y1OO1SiCbOKxUFvwQY`G7I8p@cG^@aBD@F`ab zsGE@Ug2I9=!sO5>WqaOUV&hQc3KaXi$5`Pp%9P|<{2m3!WQV#ZLS`rl49kv?Q6%P_ zE$yu|Nn|WAFa>RfK^+IOE^FhPLwtHa`^I*L$Mf2UTB-!{KyLH(Hk**4hK|J4 zqC#i#ROx2AI}0$5AWLS$7CdW)??08k2cgo!K)oI$Y(?u#=V8OH$X|p~HRY*J@q&~2 z(@0NaHaMTsI~1mE?p!bonVVJChvYDm(8YM^8XDa(2r%|1!o(r!vq#5!n%H%Bh=3H8 zF=Kdv1EZ-9MIePPp99=mp96F;sXyFqxWzn>qw4?}oP$(7DWXKcZ|cgD=Gs3ATTec4 z8f{eFYuDP_gnkxa2lh_NP+brxk>GVb?mk;XJGFpG4kw76t;P>#uJ}rw+2V^wJ_DtW z;!33iMQ*P`#$@{B1lepfMHTgdf)G7@&(2Eb$wz6-{T%S|dPpSWX z$SElH;CdL1DVcHg(2^lsMi`7)Ub92hS{qaQoxK%Bv96yQ4b=VU47lj@J?1L=nxjcD z0>bFXLoFMR2prU;-oxp!Jimd&bHtEk}<9}!Ius%I&`GRYnDeq>d{3Z+&fPTYs zl+3K1-+4BHlO*R4Q3w%fN>%_hf*~}wwm9VF&prAOvjklkLYri|)?L6G>*UyhJ^3_$$&DDB=FbHcGE z7Ssr0ZJLdlEg0K|VgwsPZD8lwLmnJT97DD$qUwb^Gb`l4)=0pRt@5ksf#9n2V;B5O zI6$>^4Oh)nbI$4Y$-cxDijC^E;ETrG_e+5W!gJc;AW(FQ0XoQZfu0DlX%zd^UD&6Q z&JhuMI#m9fe;-*vBviKOKIF?cS-2qtsK}_EjkqOhStVG!G}}xc0VG*yQJMEEh!Eas z3CXCr213oJHy9rwP|DvU`%3u&R9h1`IMp&omNars@`xFH`o5PXY8Z8(?gDxx&J0im z?*+o`w7PEnJ>7r>@j{1Q-(EpLm~=!y(HM@OiN4rZ_ddh{-f||Z8=_MCkaaZ-R{Q5f zQaIzgiOU#*jW?@qu<`*v>b)rq08fvnFqQ!=U8gn?zT`gs_z5gK1vb6*Tmk;UgT)pb z^XTl_HMw2U5byB5^}5lSEyjvF&&t@tr1!-iK0h?!0JoN7>wF&KrS*cJmC_CS=botC zHEyKn($t3xUm9(`{tIdvjk)+fsiUxKEt@0Baa~yl+SCeUs7EIKx+?1A?bKn@WZwTe zChsT&%&Ry$?Tgo`oLgwx^E|j_O$lXa2<;Ysag}AF#Tbs& zLJfkn>pcGwAN#-&U+<+WR34j9Tu^*3Fh&W+d>GuDl#fhRpw*RnQu)nzv+W<7@d-w! zgT_R`0&U*7b5<5U)81m6ra!UOaETECV=c!ee5ic(!08VzL?#h2b5E~ z1BsGGw|C6>DE;=#e&lhTPD3dc`SYOV2GJNNwPa4V{pFEG1CY?E_=iHqhNK=TM$Dnx zKhx!E*wvJTsns2PQXW2B^ctoisC%=PzrrWwvh@!+FNXiq76oYi>eOtwMKr6o!j~>X zFlRoU>3J$FDY&%1LFMNtQdjhkhPwX@M69dnHGWLs7rDK6I~12Pj|60rstA%r;B?B! zdKJNmfKwwQpFoYyKE2pd(w_&faB|+Q>a+Q&4#1!X%U<1xb}#?@-9!8T5nCUq*=eBk zW0uLT*33tbKi678f!((POS!mACh_*T!!yR{_W#JW3G`5`d-YqqWl?|Mgd!r71!SjE z!d4!Irxf6wZsVrvy8KTL=?d+E-zM+rD;X1)-tOS%xfZkmF=oGbp{mDs?mJM`{tpS9 z?4a51`7FN-yoNBzd4#Tbw`m*-?E7eMflwuKxx!0%gUA5%e>i1&o{coIt&_)wx7qlC1+8>g$V1VtUvaFiycohQWDqf_4fKMy+0PI6pP?+CX}p2+!4dU1Bv zk*wdRGUszIL^!iC4 zI<~By_+No3M2tI*I394y1{&pw@+#(%dX)s<2ofjp}wXF zUnexdc~@17mom!$$UYe-j#t+U5y^x{{|7K+Gt`a!rhUS`(?b4R;*^1gxe^HABZ9@b zH5~yELJV2=pIkU}qfv(`_IGof)(>>}tzG9d8bUYHU3_T=r%SE))gvcxU4lW z3x~HVx|H>Z#n!R~YsXK3Bg%m$p;g#Ygf5ajNW^pxvbFP9lm<~=j<*(=ST{vACVGkh z=*Qrj!PD)ydH-O$%@zg$4_M$v3^vA{+*H| z)CiK|r#e}d<#&Iv*}-vsV?G-&NSU~co8(xExDUy(XO=k<+LHfkPkZfYHu%?=(Pf6T zwY|mcL+sJ20q~r+uvnXi5Gy+QkX;NaUP!T!>@}Kpd>9O4u{m;=UA=R0!@U<`Sjer2Uu*Dw9Yrp~5t05sCP9Y$RC`=0bl7I1E zw7$S!9u!~q?6*!8na94~)5+5w+)wT|mRrPN>6^8QY$WthzT7`iDtJNT;cx!U!#OXq zd|-o$lsi~vM4?pLnVfwe2E=3jbET>{LM;5vmtOLVwBN%vo=SdBESL|}bj1XDz1!D` z_l)&}H(u{^{R^Ek=fKOFs69(zp0#V=?Yy1<^s#0;&WY5kEJD*hhV?VZ?V7(c5=0PY zTW%S8^L02fK%dhPFqoat9MkkG!fEFM-wOTztL0J&R5)nw^U%W!xa0mK$*qPc8p3`1 zdgn**(nv!o&Q+h|>VJ|w7@%*0O=v=7DGMic`R*rvJFpD5N7K}(E|F_iVfs31;bAz+ z_QSuZErK8fw{0%tu6UqBY;>|kPIEwSbfYcAUld5d zrr)4NQHDFFJ0S{m-OREdAqC$-7P>@b^%qZC5@-;}{xAQ`=BNX#iw_*Dh^Fn`TQF3~ zu%tL;pagzJ>-VxnM3}M&p?AhR@3)A_r4Tn;HM^XhZDCB!N7@({Em3-gH=#r|P2=K*zJS2`sX!V@) zW4pQq%ky@P6w{|w6P6YHW8Vy{D)#dD7I6u+BQw{V4J4zzhBK;cS>Xa=*skO8{e~Ik zv!?^Ut%aEz;1Nz+>*ytmg=lvu^NIj-Z4LEYE)mqxelqkUXTYn;QR^;$4{E_!AL?vB zj!&3v%zuZjxgc-?B<*t1aoTIH7a{$$h}E_e;fFEnC$$V=ABG^J8{)ThrWfLHIrH*Y zkI12-EEsm=dfm@P9Ajerx3YxFOwE@1zcKZsMwLV@>(=WKhj5Hc(#Vu*5zllQ8AlIbvT^Ew*Rm9*+AHnx56C;zW>P=OQ094$%M;*?gs%P<9X*IJsFr!Vy`bZ zXZkmwPX6=;ifDolt{S_I5h5Oi^R81^xAJ*VflfI-d49fvK-9svXa)*gg{?izzKdZG z8cs9$8PK=PhehYk(UJWt_KVinGofG+Ac4L$+M|HGwgLY(3Q`dBB@J_)_PL_XTE+gzuYsl+8A1_1GFYC@BRC6OxQ$R>r4!t(=x+ojA2|B9n?`pnE@@R-Vjk>YGV*|I_&~3roKTbGa zar&t1k6pq24`&2os0;~IaD?v5o~<0!v4+ z-$uKD8!~d=P0aZxbi2WtC@pd8+XT&tH%(N$4!#~doyT7vA&)r=cG3^7I(+^ed@?9z zH9I(JOjo@qy0*wyI9H-eCpCe-UuNQD8dUG)THe*;!vt@7T|k-Xs%!o8a2W~k8~Dv& zKA+~51Mykkt#Xd-J)#-`g2=5XDH7e%s-HfaCXVqzJO=Ml4Mvof-GO{o$5@jyanSv_ zH)M5GhayQKA7ux|_L=YAt~AEe{iYDPw?Tz6Q<9eN`%r!J^gObdamqZ@iL`RCp6-{7 zf9=|wDm{Gh#88q<$f%kZCH>37Z`m)^-q}RQPv=s3F6*DvX#IB}nW=#Sjd2pk96Em{ zMU~ys8?I8GJoCqpA%((*s{-UeJN>yqm-zM1QxCe6#qNr$6PyI^Z6d^uTP$FmSK?SX?(E1%oDpl| zg}V?K)cf=Z(=`ZUv-ZF&vFd8%5e!iNB6Rf&$n~9>2;g3rf86v^sy3vAMjZ@g#S>uC z!^hXrN8_J-V94fxYbe(?^}dgWj!bNap~+^wDx94rESQMtbGx4)uvKAaaa15=9xBq=7GHAvq>uOiwwz{T+xa9Hm+*R9Lz;L74y; z2%`ChA3L92XBH%YltRDX5L|3iBwORI`w!%)P&d-NHUOR=FRi;a3utOq)4-qox(_fD z1_-`EPd%5Dk*}fCVS=gXn<&G!kA`}D#HQLKp6^q?HvE?7MSzL3Wsicp$3F;`yLZyg zu_1<_0$vY=sOg@|-Collh9iz+w@5dGd-px*Cc?9pRu2}d2hl8;OibTmbq_zU0iH>U zrGsKi=NrHzV#d>Rzuf)v2pnTt#$rq|+|Jp&QQpzk*nX8eXrdp2DBE-!I}1)jfFTS% za!9G)Jl-Ox;tQt-S`RcZcdcKeZr>)_!@CTpSI^))me!e%AHlPEPiaT7A}|DXPzdUL zTmj4hLu=m(MM6Wbe~0{Pc03tjvtt`{?NgHW0dMPL!ApaO(BHnY;P)r_+lcE?bH5O@ zJmmXDt87;8NN52c;X2hF{tlYJQO=00cg`Dm@DXZ7$C(AKYbm}0{e22&B1TWlU&3Qz z>%|OFpdFEr>w2kXQw%c+!cH(qU6&U$ItyOhezzfgK4B}2J#72Hc&&l3DO-FkZgb2P zEEC?N-z-=t?7(Q`iizWWOo64KedMKL$KllVu84ljdy7R-gHhGyg4L145q4%v$oi*X z$4B-i4T zgmcd?M#8Loz#V3=sR8WS7=(3Sz3m;$w7o=*Smt!lbd4z;jGh23B| z_HgiB@6EYi9XsoeklUvZvW7cBxtY-AS+moAIO4V zA_$BvqpMq1_iFm+hoT6$?MG}Y&sh-2lw-kQE19`9Yx$Pfe4qf?f>W?NgT4d^xhTb!=s^F*3>wJBj*t9=XqP!(U$W zSGOq}=%zG3cM*x<*MYF{BmBGB=(e87*KUeeSW51~r$NS0}!W4;zTC`c3Ir!lE`=)cSeUeuocEQ(3xpu3u+GS`{Z zvUyZKvZZeOvEgVfxh&*1#Yr-}gjv-0;{`pU9&nC>6--mn5HyhVp!Gngxm+*}2=als z&6)m6hw{)}+orGYTq+iFw~fGmUQy;hy3)Pz{6hGemi|dGUj=FOd@2FXp`1G>5?>x% z5fu$FjRs6MK9|hi3W6f2ZH%7q-O95lS=*7?X9?J=-L=^GK4WHqXuRRyceIiaTI|O&9Ohn)1?fwJJ*{JV-5yKM_qq16m3F#$G5^3nFM zT)YBl18t)%)%l%LCkR5P> zRVtvH@6stzj{uW6A`ipyn5q#bJR8uSlG$fkHi>>$qDB>*pr!?@4}1eGeNZ-OGd86Q zU03gO(rx+?LpuEcee(j(tmLaA_T%c3babM20oADo00UVvr&`siFJS0l`h=+rORkGX z?_YL;DyV8JX%yZ(Xl*p}*!b0SfR-o-t=?${@RJl!Vy>_8rEMs5mT zC@E4pSPUy;4_zttmbUpS`8$+x_=?lkkTPA^PUYn&^lj||wbR?CAj4Ug!LkTKVM1Ji z0OV-m(DPWiVg6Nx%wF?`fWeXH(en`7(11$xyMn#TP<6H!gpi$C*(UP*x{G%i`~D=_ z3~e?g$R63&6!5I<_<>tAT0px%>-6#t$W+Z`aF_rsdUGMdh%&5AigL}C9%zh zS|mNq4fXsKWh6P7QB&}n(_s7yi=PgE&SRU*o>gBA>4IQC6`0JIZ^O#OEv)ejIQgNp Lu4|U6+eQ8#(2K;R literal 0 Hc-jL100001 -- 2.47.2