From 7931ce5a64555a5da67808859b1bfa6f79f94a7a Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Tue, 21 Feb 2017 16:41:29 +0100 Subject: [PATCH] fix on excel cell indexes processing --- .../parse/XlsxCalendarProcessor.java | 28 ++++++++++++------ .../testFiles/calendarExample.xlsx | Bin 30585 -> 30611 bytes 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/appointment-import/src/main/java/smash/appointment/parse/XlsxCalendarProcessor.java b/appointment-import/src/main/java/smash/appointment/parse/XlsxCalendarProcessor.java index 32ea800d..8e447a9c 100644 --- a/appointment-import/src/main/java/smash/appointment/parse/XlsxCalendarProcessor.java +++ b/appointment-import/src/main/java/smash/appointment/parse/XlsxCalendarProcessor.java @@ -50,7 +50,7 @@ public class XlsxCalendarProcessor { int[] dayColumns = new int[] { 3, 4, 5, 6, 7 }; - int[] weekStartRows = new int[] { 5, 23, 41, 60, 78, 96 }; + int[] weekStartRows = new int[] { 5, 23, 41, 59, 77, 95 }; int hourColum = 0; int dayOfMonthRowOffset = 0; @@ -67,7 +67,12 @@ public class XlsxCalendarProcessor { Row weekRow = sheet.getRow(weekOffset + dayOfMonthRowOffset); for (int dayColumnOffset : dayColumns) { Cell dayCell = weekRow.getCell(dayColumnOffset); - String dayOfMonth = ((int) dayCell.getNumericCellValue()) + ""; + String dayOfMonth = "0"; + if (dayCell.getCellTypeEnum().equals(CellType.NUMERIC)) { + dayOfMonth = ((int) dayCell.getNumericCellValue()) + ""; + } else { + dayOfMonth = dayCell.getStringCellValue(); + } if (dayOfMonth.length() == 1) { dayOfMonth = "0" + dayOfMonth; } @@ -91,13 +96,18 @@ public class XlsxCalendarProcessor { Cell queryCell = hourRow.getCell(dayColumnOffset); if (queryCell != null) { - String query = queryCell.getStringCellValue(); - - if (query != null && !query.isEmpty()) { - AppointmentEntry entry = parser.parseAppointment(query, hour); - entry.setDay(day); - - result.add(entry); + if (queryCell.getCellTypeEnum().equals(CellType.STRING)) { + String query = queryCell.getStringCellValue(); + + if (query != null && !query.isEmpty()) { + AppointmentEntry entry = parser.parseAppointment(query, hour); + entry.setDay(day); + + result.add(entry); + } + } else if (!queryCell.getCellTypeEnum().equals(CellType.BLANK)) { + logger + .warn("Skipping cell: " + queryCell.getAddress() + ", " + queryCell.getSheet().getSheetName() + ", type: " + queryCell.getCellTypeEnum()); } } } diff --git a/appointment-import/testFiles/calendarExample.xlsx b/appointment-import/testFiles/calendarExample.xlsx index 516d8e548c74f5a7b2e1050b80918e0acfe80fc8..e6ef090b5834afa3e0a9a414c96c3a37c8ae253f 100644 GIT binary patch delta 8456 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�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 I`=5vY4`^l?egFUf delta 8450 zcmZu%1yCGKx5X_GoZwDyhah2rMVEyjiv@xOCunfr;I`=EE(-(+9^4b$-624LU?F($ zNAmshUe%kr)iX8I)ph&KsdG>F4EzZB>L+rQ87_4D2da1!CKA$DB_t#~BqStHJ6;!8 zFFOkt9#4C_X@lL^3{jGY_Q`wv@FNNtA_2GtXhv*YXHO?dobymu24sq-h^8vC`|jb= zuU>3;9Z8IQ9K=mP*Kv940NcrVTETQz7esKC%~R$ft5*XUGG=fr7=pG@1YzpoRPTOL z>4RR{8A>kZ-P#=AIGz&F(cJXS)>os+dgk#s@~;9oz}EKmbGS#hS%+P`wo*>7a2vW5 zuss6oD`X}I+!808M70fwy#%P%CqD1tZlrhJ_={BedRUp($vy2>6i?=An%zu^-of0S zME;2BW~zTYe^$iT8dctje<$1?v`zwTQ-CHL%86-O;=t-sEB)}p61I*2<wFI8uvbN% zzL&R9iJ)5yYFIk=_B!uw@op!vwho!gkjJfbcPFK^LXKyVZ7tbYQBX26<H&4LR3?*; z1S3A1NP#;K%3{B42+~_8vQritmTX%U@n!D{liF#EFMN_~9k^lkD&eh3epR~75>W2( z9Td(H310R-K|4+}J%K$gHQC)<*MMMK{vw#k{;JcrQ0r3(Pr-)vHzq(r`(c#0?{YH4 z2skx<`crVr&POSqY5@VG-npgda>({C94*aG4*po2bmxoyh7ZN6@7RGFI-J<LM~=cL zbtZaaCN?bzFTEN`1y3k%?TnP2XW%AJg`jqA*uw?llY1Umewd%IB1Z(HIZTgU3Ve%w z`h|gMLWYLq3P`Nj+4@Bwozty#T7qpZGXmR=N{}Df!R&eTVzZ8Qe(4m>E3N*;)QI$r z=foO%m`R4$T{sEpqB@wyWKwU2X?&s?R<Xw|mGArRpWYi@lgr{%rB=o@9RsEq-oAiR zu`ChSFo1krDI6KzM{Hh$P>=9V6oundh(<JOF?(d!rw@=i&6b6I_!y}stlL=SEQ4Mb zX3D(3fn0wb87d)es8oK_dQ!+W6z?hd-37gbELO8=pU<dBk2=Mc`@F|DL!d#c(BDf$ zC(rk4Te~#HaZO9q#gctH-?nmmm74=<E_X(;XUGVq>+SMaPx&1=g@IU4Fu&6nIp0Q9 zz4X?sjy$whb-}pM>`52AL1BsNW(cp~T6*sv$M@sNjmR{*i;HG9p}_<188l#!S}Q>* zO`tuPnz`9rgR}*?iPQ~}2lZkdSU$|$Y-nq#Lk&t!*|j@kSL&T?VWq?<y3B#n)EygS zBswC~9{vLSs<wZte_zC&kA<J;V<zF0MuaS?_N_#)p!*d5KE><+pd^~%q9b0;si%?* z>fC4)DTpozBx%eu8kq;JQk$5^3pAh`eAaWjt|CLFE!OO|7?g*o#3I$QD*>{!1`A#` zmmeFpmLInftj^+(^OA=nF*85|4A8g;jYo<Y86MaV;LQhvrenFBIEKQq9ueW-7{@kv zjY!fo+~hL}*SBrA3gm*y?s@iC;i~-Z9Gy5s-NB56K|irWuwL@DHOvFu#bfV`a$!}p zB7Dr}2h>_;L%y_Cr@{9Yck>|_mDPZ4gHD^&;p!Llozci$H{0{97Dy^A`#9NwUe~ru zf&D=<XEuSKF;aK+gJ6~x)q=Kul$LL7N3e}C2>PW}!}ePqmc(Com7+343%9xxxJ0Pt zV9es6sRt&C)Q(ozMY|TlUlCG6Jy&#w2<v$x<jottAZ;_n*a^HKd=YNQX>QNmLZbaN zvd%Zx+BscrwyADfqvtlJ^BL)vYvdd=|D^98EaRINVP&@#8ztHOPj#L5nS3>7KCv$E z>^b?Z-;=^KpFHV9VJ3J$u%p|JAG}L83^+xdJmAVlwBsZUv;j)AzuRz6L%-qp5dgEm zER`Ar?=tPm43HbA&^cENA`E2s0b{@FHoMgMi}xA5<E8dRu4O_!HfZMMc?sU0dR8)d zRkUYCU|v_>=35uFZ9QXgzWbKb|Es=FO5^#$lc}*J^-{((m!N>z4ay{@=VsW~>%sEg z^Y~|sfP*kn!mGIKXSMo*fl#4OTuZ;F@iB1LFJ-*tua*@ZmI<_OY9x!oEW9C95kspK zrX0+LK#P0;l>J2Xut$}#WvOAlB+SA@qiXsId~P44W?soT{S);f%3?4GyEW$E*`@)m zRsSG^Y|v=3nW6#8LdM*@YZ&05WJl7l-?uT&t}~@y38xvCwdS=CCNw7Hcwk+~)mVJt zv_tW!0_}nh9Zeb`6qC^H2355oAjpN;|A==ETR_rzRH0%@<ODtFOWT)k-c|OiO8A`} z;)ooBabte5gHV51ygJ%OZOz>FYM0|cY;&g3gOU^zYGA(3+JqY26oac++da5FHe~OG zbUprWTdbVg?uSW9X=wB9(f-uk!PX2p9&M-^e$c@DEQa9Wu0`&v>>MK_*n*Rg?|tk` zpPfLs#}91aFJOSU7cPxx4r_RLbms#oXIH@E%eSddJ4hLQl2ot4a)jMP`FdsD_|nqx zgTi)SQ<0~Od#9;p8wty9R@v^n)eVa*t=Wvm@;oGDnsbkPR!O4WDs!v(nz<1G3?`}! zPN40m`%MQwHYKU$B6)(1Ua?D&CkB_GVS&DJS?YK0ThmNB>ii;}RI~5NozTpgpt`_} zJgnnB_c;ZjT6iL@8TVCySDblES<;VETBNAup^9x$ROzBi`EFb==%>x_nNVovP=~+K z@JqVWbIW>tBe$DMpB2^i%nAp~p_a0rbRDcxnQkvL4$Zv;(<+m%v@ez0ckj=ya~`0( zCsXh4-n!)MEIpm6S~hSyYFG-33JMxIlQdR&QK^f6l~A!<F&j0Id~dKuV@ErC^}UFz zE|m_~yA2-HV_tutBWzHfquIB2;r?Pov21sf(b%C3JbUF^Q+TtsJVyHhvb2+7HRDm6 z?aOGm<v-0GQ_AV)cgNJ&(PP(aWUm8lSel!f*~o1co<6z#w)~?hRZ?-H$NX;ncpbC! zcR-?#RK{4nG1#potLKbynOk>%;707cf9HO}y!5AY;EdFRWJ%HfPzJ?9y;Jz8ct_h_ z`>t`Y|3jURlb_zjO2^oV8r6AIZC2|8ch1g~y}vBa^dU*bvH$05bu0`SK&cB<6Nki2 zwP<Of&o^~!M|Wi+*Qv52WrQTBBqFF8?@n(~8SLTR@N@Zl1HA9*Vs56GD`#cJv1Hv$ zK;~^!R0eN>uOQ21Zjmv5%sv&}t9tnU(D|Nbm_g7_ms37=>IUfh)k7`eR>?we{blWL zSVLL<U@s-UQkIQIPey)>Or!&}1<esa?#*{%asb=_?g6)f>fb(0m$^|3{qQ`|*ShsP zS1<kT>lbwmYp2EKlzvD!f3YO2w|8+J>v7cE(N1pJaeK1#yGN}oM`!5pZY(xRcZH61 zsBhp}`BGbCV6F0MQw@H8mOY*kc5bKo@L&VMy8YcaJoGRU)v+qE3UGkdpRG6CzRloW z-LbvC9dd0cmAq@cW^+nZD~shdHlkfNGWKu1KOPx_wqBh(reM+ybQCSWXKFf<F&*E} zSsXH}wAujb2XqTd8eQ7&4nM&}SAo(<9>OQzju`Q%>S>vZ4+Q05GU4~qGSebx&1uol zVF`*Kzpv{Zr~W+tM(PG7rvZ@be7NVPu0BZ0-gl0V3-kC75}j<X76HPG5|vg_VA$;A z{MAz-b?)t=rOc{{UpueF!PNQ@Xe=@1a*;%RKhvZmh&c&4A~fBKk4uE=Su9%ZF|`hM zixF(*cDr3wC|0l3&OpYe7gKYsTW7+Kf_@`!l#NfJ?vr!vrVKTq_2W~??7@}ILM*eA zu9iOA_AC=eGpDO@N}1S-(!J6|^z3oCpz*K2frMb+Bbd=N(4mX?^}^+jst=hMY*A3G zbO5WL9E8G*o`8&<PJUSOC3~$e#EF8RbV~c^Jnv=<kJ3@^mbr8ofr~RVZuJ!bTL%kZ zBp^YR0?efY9fm%t(9X-?>T1c<i|T3^gkTJI4HZ>1qi(GSVz_nj=c8#vvdNODMCsT+ zYnHqdy)66Yq#p8odal^P$%~U{0vZ-Ltg^wXP8jLHuaJl}iF(x;{k8-v-eay{v=c9z zLPvEdq2?6BVn>fjxTn4EruUNiqs`hkkj4!ZgXxe8R_BNWj(i(x;7Cvik)z0`|7bT+ zdMMLR)2`8D{n?TFTx}TY|6{+l^@2oULXIhZ(!UEr$in3Y8q+^;e&$gONjiQa^4=0c zd?iypAm$a9PAO5yK!132$WHy?omxp8g*>^9+FJwwU40TWk#Ud!9f+5`Au~yn4UvbM zO=!l94QH-f!A$v$8tc<p(9`&P!iu?E$+?A+ofkbCFTx@5k*8{*=s~#{yw>52mzO9{ z89zTmqP*ZV-zHL6e1gORQICB_pOmM?$Gv#m9TK{hj8P&}vnXZ~SW-EpZwuN*OiG<q zbp>RltLm{SP++ILoPKV?zH$o7hoV8Ja)p6Z@6B>H1y)W!gmPJUXBQ^UlIF3%UUSAf z>)R$j;$C7xS*L$Q$_sJ*8tX#JN86It{c6Us!1v&Nh0LWW6F>tAjNrMe(uIV*cO7^Q z#-j$}Y<y8QJGsP+v0!=OBqwB!XfcTMo+o4p|AVfHe%)?o8;WA{R{j`1G`93$z*b~~ zuDR*jKC$v9QzPkRMKX5av^cUxAe($515S~AnJ*PGL&!V->JQfa{bynr!HlFU^uWJB zPUUO+D5@Uoc{xxnDC_cRHVpZ+k}`Y-lOW6<+Nn4dG(L`gWdIWth6~7b(c7knb~<`& zSa-%78StP`2#A#@C_;Js1Zs2*VSsww8;6Oc#vvYm@QTHpVp_{VGh^cr|9HLo5~nj4 zQOnB{C9Zs8aG(}q_y?aVy_p;~nTiI-BQ|j}4bkIHo$tSCrm@6p0Bh-!-pB|kB+`Qk zEy4qVvrp~6M)siAtL-U$KmXXR{qZ{-w5u0V$Ou;Fuy7?wfu2%;(G~D)LQn3tE}zp3 zfeo0u*0aEZRf%cZ^jOqUiP_rH92O-7zdbDiO}psbgwfP_yl;yvP}8Q+l2X%%u#+4K z5ZxdJ#p7y<s6>6iNUd^C3q*8h1BoGLD#pmEI)bPD<+_26=}mULDm5153qt`Dsk{J$ z--!`@W)N8e`dma~%mx@-wO?{UR_CrXU>H$cqXA}RQzSr81Jw`O_?aNZMk*0n)Z`Gk zH2TlMLfral)=c#X;ZL#L6clQm<^>>|$Ce5F2V<am5N93Xn@Pq|7>eRc0cDMLBTKBw zicZ3^L8fXgW^6c<Ff&M-Bdrru$@MB|mUs~aeLk7+L;`s{uJFv49^`}axOC!>PvjTp zXc$YhZJ>wXWq*_Dc1*{AY8W$79KUfse`+9i=^LUIYCViT(uf6NSElJ<m4uU>)91da zGh9<h^$e$wlao~_+Aj;V6h}$~8J=6Gg0(qfzy1Kd3S^uaKea~-36l(HWNIVXDquB% z%ETAC^614y#;9|UA|{n#F&m8p-=9<3O)4nFlg093nJB~;!dOkz*&zD%xHyk*oCHny zW1B8Ge)hdjVM@O5fy<p`Bbc|EWDBrwj`Ao}gFnJcVZ8CngMcs20UBQ>Kg^P>(Xk~Z z&Ho~ph>O2K0lwpq{x>@;$)N~g`6usOejX15Yc3G6u+2=W$0><6U4}4`iO)LH-Z<1y z^ri20@+T7~=4*wrk()=)5QzR%1y0Z#KgHumM>p>eZr~L=RJbVhp^~cCHOv;N)?Hyr zSS;gdN=hq3O<BUZc&B2o2R}Ry%^(YDsZry~uT=}2c78IE8V?4sghL@*sSG$6dVWjc zZ0ujT0ox@9@cxenaQY;_|I6awRFaXONq$6LfUhR~?2vbpz(hXCI%x36YYTd`5+U4z zBKD%_I5>(Coi*R&zABJok_=Hy?rRebVb90a;N#ZUwPxBz{Bl>kP-51a1jf~)v?6G0 z6QTMx0uz;=3OPPck|0nVAJs^P3i!OIcKkBc%e-U|xlA-F-pC<55l4W6rjLO|z65vw zk0Q8JrS&lmmbn*eRn~eG=ExcOptO%#vbU{DC-RBwC}9HMmt?)|q8AAW@E{!U^<b<i z|EiD<JL97V0gwWx`983{MHnI%K8gag&e|X#bcAgBBCVfh_mTQ7)k<;o*nO28cV8iW z94y@EGou&^?_{L&9!2oE4HKakECTe%FK=}M1R$?ex!6ekk*|MM%AG0#<orsI?f02x zs}Zj>`fhgRI}LwHOZKVL%xo<iujEMpzS!`eVXT={5WoR7%<xbcRAp?FM<H2UXDO9@ z7Ynop*=3dMs<WPPVB(Oti0FGviH#0`Tp$w<(a56*V3;r_6rTMo3fFS)=B@~wUgZPU z5wa#c1iF0NR!9~Y4alI92lwFoTV_Wm6f!|iTXnNJ1{HTYmzkA!B}kdhImG{HC;7xL zHf{_BD4ufY=8Nv$8lq>MCJqUOu*VjHsQY_8y%di71Y;`SE#$F-nW~;-S`rb%XLAzs z8VJv>K%|V@c0&9stt(gDWaYnF*ZZ0k@A$i5yGEZeB0{gEhW3u7g@Jgl_#~>{!Dq7H z(0vKs`?F?fpXFywMu(=y!h)1b3N$M%sD*mUXx7>1uu7sNUoOk}!uYcpVOAy)B0)2} z7v}1W^QR`0;VKO7Eh)5mbsukQ4zR~-46p+^#6qlLZ2uI3pmLf;ENQh;&)D{YU#*T? z5v`Oq<hu;I2rcq%&?|E6e3B=YuxS!fm8jY0_HqbT@_2#CG6;|Z`t%uMmNA@2?q4kZ zyc7;nGmwjXQy?c($c$#g>C`URj%UV@6aglm@Kx`ai!0S~2IKU;WlhESM7W40s>b)t z-26JbK>3q!$8VjR4~X1I0rH7X+L=(0uo?U3>?e?Cy$h`NXqgr)7NP52kEzdPe?Vqc zo=`Umdj`{jrYA(GY6?uYFsgI(1B6l$(VnMhQ;9GbtJC~P0P^N59*~*WovGR$r0l&M z1ydV72thgRz_coHY%@sHRKjM=3qZ5Ua3U!KAgeQ?Zwe*~<XaSJ<?v6M1&&6g^RL%M zb6My`7<$oD3QSJrg5)osF>GP|!;i<J-VhH(NVqA1bJ8Q{_G6wQ#Ixh~Jf3?CNGF1| z-w6;PUMQqte8OJDB2wdLk9aJ;t`c@3)U}D;UhyEHFdF@%lX)z_EzzmJrde4$5JmaE zXJ{2NJ}5t9z6b8DtCH`!(l8|<<nrh*KNM`(P%*sKi=aYr@?chetQ*XQpk00>1Qe3^ zca-zs7c$)&DFYW*;zo(F*&md^$&lLh)OegH!5?X+U}u-la}7);<3hyknIyS5-^YBw zR!SE5)5cH6AVJu{kG0ljLR^OGc%7Y<IcHcVB2J$QM?jD5VMU0nhMo0+^z&;?8X4iF z(;FWMR|-D_84dot*anLQ>QP*%D&`KeVW*dUo|)vl7c)E~+hAj3SJ`~D$#Op99gWP4 zN+eYMv~G@UXo`c(hoj>w<90))r*7dOZ*}7R9!<X7UL?BaA72wUaakUnT3v2F7c2h$ z1oBWy%yd_)`k@!%mG~bE64rJSX{Fux`#>(CzpP6}9ZG$o2-BLihCv=Fs_{qQlN_1+ zCBFQQk2jLRiJa=hnjrs|5yH^>e7X3;a~nl|m^>nQkQghHM#>bC05pq-I6718juU7+ zdPJLv(j^5u&(K{Ng`yOOuT<5EV2tR(Tpa9wd7!fTD7>6|ifqA@XUm`8D}9H$<+zYG zk1;6sZ=KcSm4I2$$Te^pRk6Yo^~ovC-5i;4B))JlFimX{3`fg7qD-OT-0;-yAI*DA zXek_JZ26+c&^RON<lI?0?gFhsIG-QP0&`6#_#?0Mw(u8|!B(ly|Cm63H~X(3KV{cH zbJfBrMdt^j2SLjheR^E1c<6piNgsP3nDOM_q;9sPVsARX>tPix$+G$D+zR%*sPYUR zd3?g~$YTJ^dKhFC@Sh|uBbP`0@*NeMSqJ9;JfL&Y{C_VPaBBt|2%ECZzK8yCj$YbT zzb{_hCGos&f7|rWiUJo}6FSeC{Bq}P*#+vwKB&n1&0~PW--^9$E1a;cuWaXK;y*r4 z=jsJxiwo?40FQ!#x3ioM{4XyX_elTpH8HEZY?X`fIQ<Un$${*EhiZAUd~>xsRX)bg z6XW(%N>v7wOJ%aaKX{afsylf&>|~mCq%I)~m_s3Uc$!v3!QXp2qM`o4wB(cr=Z3qv zRZf(%zL_5*YeuluTcb?PUk$!B{-m*-zm*@fkG6(%SAKFP+$eYa{;G%**LzHl>`>vU zNS(ncwW>CI^{PP}V&>}aObDLP^OC?=d%9xRN^`xb*C6X`+?I7by0nleBF*7D{f>F< zH4pTz*LguCxy;UU=B~L3D7Ej-Ljv_acQcajQ`?$)Ew?j;b}aNY%=9B|$6k_AQY-oW zN#9t<RLH}@!(7IQrF#QcOyk1s?${S8I^%JvpiSM8imTFJRPLD$TnkNJ!w+(pX0BTY zPxe113G`(6`115i8T&ujlYTz%dSh0vb7~Kbf7#&lMxNVeRp;cp{lwH{_dgGJ;SKWm zW=|Tlr)zfXE!0-Y0Q=m_IvPXS4W!wv+>~Jb#!valJ8Q`_QH!rpa!!eUm$W4^7C5g2 zYE@(q+P{zJ0%|wOVE;9xkD!OWs2|NdWxQ<iVV5@wQ`aV~>ygLhGi5g;h9*O#1jGLE zDE;$@HCwZDgPDynacl8|4`~p?!FMZE<XIl-N!re?-;nvlkCDh}ymHe7rKxVLuK^A1 z4x+d~IjzAu9?Js_ZHq%>*uj4yFRfOQN_pQOe{Qzh^`g$Q7fD;s7Rki?zcG@Dya=5) znmTHld;U^QIu4~5;1m|EW%o&QVE4Ed7*mewY))fhPBW6}w)ooR(x>qUndM5*+<Y&9 z!x9e(wv0+nf%G?|1+6~3&{@07hOX7@&j-EERqdHhBHz~{eY20m^xv@FE}!bnNb$!v zZWF4?<7-1#OcjPoYv=e$euzi@Cxl!utT$;?I(Ce@JG(G7q?=G3Mw27Ug*^j`7^5)6 zYB2iag+Ig#3%Sf%Go2k={yJAiW%B6sTkI}J=3BOlV?zBv{U@it37L-ik9FiMxPfK3 za+hTtb1VGqWI5_*yE^~()S%^Vi(*z$_;mu9_6!9D#gu_+k4W|ZC@%^9Mof{#JVW41 zxs5vx{xuM$4Y-jG@#i8~`I70`^RsJMznFnUUQFDx?D3?4Y3~Oh;Z`fS{#oF9rNX&S zOOT!5^UL1>kRecuVT~oP5raEU5Xs1d>igJjEcx0W_1BvmR?R!8pV$GITg$e{pTICx zSV{JF;5==MQo!4kazpLQGV$idn4#75`&<g*D?iDm$ZWE$TO&JW(>-OpaBG8K=p}0a zMjAlAk#4_D<6Li+WR3*s5j<vP)8nOrYzJwWQ1FUaI7pUPp3+<HPjGw}as_TwNCv0y z`$>8XUgSMvg5m-4UC;oGc>f7fXUd;R_q?Oh9vv-g{qKJCfMjF;cMN`6*rzHJDp%F0 zd@5o5eZS?T_577pvp1Kj{Lz#M%vQfGo|4vZe7&cKDv-_J?~1Q!Xjl4Y%YyS%+D^k( zz~1z2v-tbA%XCS{D9x|CP~xVEn;G{O{eI)itMAW?H79rb2OM_XKQ9i_P4|y@pV-v5 z?w9jgis-JmHL~YKdHIW^`BPlkZeehXpWcsTmcCZ4zlu{OC>CML8jHGecBxJ^`hWIN zc~+CddZu#rTORjJ|Lkps?Y=waTNqs(gKpOzrUU_Fld;SrcYA*M3ukO+8J~7Yjn0bs zjRj`5iEd}<>sM~OUf(|0++>a1eP_To=NJr+%d@SGw@87@`_FJ2>A3s*q;jXYl6m{B z9nEHC+`6BLuHC=5aZJenXm!$P*p~4sDjOlSy|i{Zc9y2>zA6R5=P~vOy@YQWLRIet z(sqWZO0ShQ9_$v<wokpnRJ}UdGr5W{%iOGhR-YdF?0lpUPqqREv+#s1u(FUljJPX! zrPj)Mi^{Hq@5+OGNiK#C56`dG*C+T7D|T$rIe4F8E>30aqoi0ZorZ0AKeV#4{DA0f z<i4|Qi9DP*k`t=;kjOn>r2T{!W2CB<+mxRdG)UHC`)$y8_0#6gMg-AAsicq8{lj+y zA+6a_c}?Rj1F3kO%LmYrej;ADPjtsvn{`9?L#dBnPgas+!jx2B#>4x27JsG9c?T<r z-*x)X`Q@Ffi)$zv{Ff<dZK+U*2)b7zBobIFWcM5yYOMT)kECY}y+d}uC!+|pIPXx} zLhUIUYosGX(|+IxU4nIkqvN7OtvH>p%4kzZri)V3e94O|w4K5UQbxTPqVZ*{k_;R` zWy-EF*w;kAYS#MWIIV>KbjmZ9hD0jN*wNQcz(6%dC7(h2ka~vKk<~kI)Q7Dm@(LRH zRjUbNp%q=p#~!mtJSVp}oLDMVolf{FhY{gVL0xK~oApIxdeKlak{{pr2e9rhFq{S- z#Q4~Vixb{Dnib0~v%mSJA<^VvlnpbSvskeUCp;y-ZT9x0EG>duwrqUZgE$S+RGApq z7h?0+zTScH9LxPknHQkbdA~-5z2W{a<Wr&e^QF33a1h9pPkdICgSWQj=A39oUUl2X z2!XB#r(i*6xq9<(8+#@B!!z$G!@XK-p1C9gEwWq0n55zz`rj`Yr4Ef~IRE`=0B+}^ zjPis8E>6M%Uv=R?p(ll_k+Q&fT{%!7WbgnoQn-^V0oC6x9?y`FXhV^Z$RB?)`0qgm z&v2DT4uP+`0#Qm{z?WZ8!X@1}kiWrg+(0Nj7VuZr&*1o$=<u<}n~m^mH+>XJ>&Kha z@OoDQc%VBaGC4fUor&u23r0plvOz&YBK+^@k5@SGC3i{WKscob0NEM-+Cvya%=u4; F{{i7L_LTqt -- GitLab