From f8d51a7d7aaa07a3355509c9af880d1838867a4d Mon Sep 17 00:00:00 2001 From: Tony Laidig Date: Tue, 21 Feb 2017 16:40:25 -0500 Subject: [PATCH] Fix for #30 --- .../CalendarDateVerificationService.java | 9 +- .../gtfs/service/GtfsValidationService.java | 101 ++++++++++-------- .../ValidateTripsWasFailingBlocksTest.java | 57 ++++++++++ .../src/test/resources/GTFS_MTABC_A7_SCS.zip | Bin 0 -> 65665 bytes 4 files changed, 120 insertions(+), 47 deletions(-) create mode 100644 gtfs-validation-lib/src/test/java/com/conveyal/gtfs/ValidateTripsWasFailingBlocksTest.java create mode 100644 gtfs-validation-lib/src/test/resources/GTFS_MTABC_A7_SCS.zip diff --git a/gtfs-validation-lib/src/main/java/com/conveyal/gtfs/service/CalendarDateVerificationService.java b/gtfs-validation-lib/src/main/java/com/conveyal/gtfs/service/CalendarDateVerificationService.java index 86e0748..78de424 100644 --- a/gtfs-validation-lib/src/main/java/com/conveyal/gtfs/service/CalendarDateVerificationService.java +++ b/gtfs-validation-lib/src/main/java/com/conveyal/gtfs/service/CalendarDateVerificationService.java @@ -6,12 +6,15 @@ import java.util.Calendar; import java.util.Collection; import java.util.Collections; +import java.util.HashSet; import java.util.Map; import java.util.Set; import java.util.TimeZone; import java.util.TreeMap; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicInteger; +import java.util.stream.Collectors; + import org.onebusaway.gtfs.impl.GtfsRelationalDaoImpl; import org.onebusaway.gtfs.impl.calendar.CalendarServiceDataFactoryImpl; import org.onebusaway.gtfs.model.Agency; @@ -155,6 +158,10 @@ public TreeMap> getServiceIdsForDates(){ return serviceIdsForDates; } + + public HashSet getActiveServiceIdsOnly(){ + return getServiceIdsForDates().values().stream().collect(HashSet::new, HashSet::addAll, HashSet::addAll); + } public ArrayList getDatesWithNoTrips(){ ArrayList datesWithNoTrips = new ArrayList(); @@ -198,7 +205,7 @@ public String getTripDataForEveryDay(){ ServiceIdHelper helper = new ServiceIdHelper(); SimpleDateFormat df = new SimpleDateFormat("E, yyyy-MM-dd"); Calendar yesterday = Calendar.getInstance(); - yesterday.add(Calendar.DAY_OF_MONTH, -1);; + yesterday.add(Calendar.DAY_OF_MONTH, -1); TreeMap tc = getTripCountForDates(); for(Calendar d: tc.keySet()){ diff --git a/gtfs-validation-lib/src/main/java/com/conveyal/gtfs/service/GtfsValidationService.java b/gtfs-validation-lib/src/main/java/com/conveyal/gtfs/service/GtfsValidationService.java index 7411cd7..e03b40d 100644 --- a/gtfs-validation-lib/src/main/java/com/conveyal/gtfs/service/GtfsValidationService.java +++ b/gtfs-validation-lib/src/main/java/com/conveyal/gtfs/service/GtfsValidationService.java @@ -21,6 +21,7 @@ import org.onebusaway.gtfs.model.StopTime; import org.onebusaway.gtfs.model.Trip; +import com.conveyal.gtfs.GtfsStatisticsServiceCalendarDatesTest; import com.conveyal.gtfs.model.BlockInterval; import com.conveyal.gtfs.model.DuplicateStops; import com.conveyal.gtfs.model.InputOutOfRange; @@ -42,6 +43,7 @@ public class GtfsValidationService { private GtfsRelationalDaoImpl gtfsDao = null; private GtfsStatisticsService statsService = null; + private CalendarDateVerificationService cdvs = null; public GtfsValidationService(GtfsRelationalDaoImpl dao) { @@ -109,7 +111,6 @@ public ValidationResult validateTrips() { ValidationResult result = new ValidationResult(); - // map stop time sequences to trip id HashMap> tripStopTimes = new HashMap>(statsService.getStopTimesCount() *2); @@ -117,6 +118,10 @@ public ValidationResult validateTrips() { HashSet usedStopIds = new HashSet(statsService.getStopCount() *2); String tripId; + + cdvs = new CalendarDateVerificationService(gtfsDao); + HashSet activeServiceIds = cdvs.getActiveServiceIdsOnly(); + for(StopTime stopTime : gtfsDao.getAllStopTimes()) { @@ -133,12 +138,12 @@ public ValidationResult validateTrips() { } - // create service calendar date map - - +// // create service calendar date map +// +// @SuppressWarnings("deprecation") int reasonableNumberOfDates = statsService.getNumberOfDays() *2; - + HashMap> serviceCalendarDates = new HashMap>(reasonableNumberOfDates); //TODO: factor out. for(ServiceCalendar calendar : gtfsDao.getAllCalendars()) { @@ -273,10 +278,11 @@ else if (exceptionType == 1) { blockId = ""; - if(trip.getBlockId() != null) + if(trip.getBlockId() != null){ blockId = trip.getBlockId(); + } - if(!blockId.isEmpty()) { + if(!blockId.isEmpty() && activeServiceIds.contains(trip.getServiceId())) { BlockInterval blockInterval = new BlockInterval(); blockInterval.setTrip(trip); @@ -313,64 +319,67 @@ else if (exceptionType == 1) { } else duplicateTripHash.put(tripKey, tripId); - - } + // check for overlapping trips within block + for(Entry> blockIdset : blockIntervals.entrySet()) { - for(Entry> blockIdset : blockIntervals.entrySet()) { - - blockId = blockIdset.getKey(); - ArrayList intervals = blockIntervals.get(blockId); + blockId = blockIdset.getKey(); + ArrayList intervals = blockIntervals.get(blockId); - Collections.sort(intervals, new BlockIntervalComparator()); + Collections.sort(intervals, new BlockIntervalComparator()); - int iOffset = 0; - for(BlockInterval i1 : intervals) { - for(BlockInterval i2 : intervals.subList(iOffset, intervals.size() - 1)) { + int iOffset = 0; + for(BlockInterval i1 : intervals) { + for(BlockInterval i2 : intervals.subList(iOffset, intervals.size() - 1)) { - String tripId1 = i1.getTrip().getId().toString(); - String tripId2 = i2.getTrip().getId().toString(); + String tripId1 = i1.getTrip().getId().toString(); + String tripId2 = i2.getTrip().getId().toString(); - if(!tripId1.equals(tripId2)) { - // if trips don't overlap, skip - if(i1.getLastStop().getDepartureTime() <= i2.getFirstStop().getArrivalTime() - || i2.getLastStop().getDepartureTime() <= i1.getFirstStop().getArrivalTime()) - continue; - - // if trips have same service id they overlap - if(i1.getTrip().getServiceId().getId().equals(i2.getTrip().getServiceId().getId())) { - // but if they are already in the result set, ignore - if (!result.containsBoth(tripId1, tripId2, "trip")){ - InvalidValue iv = - new InvalidValue("trip", "block_id", blockId, "OverlappingTripsInBlock", "Trip Ids " + tripId1 + " & " + tripId2 + " overlap and share block Id " + blockId , null, Priority.HIGH); - // not strictly correct; they could be on different routes - iv.route = i1.getTrip().getRoute(); - result.add(iv); - } - } - - else { - // if trips don't share service id check to see if service dates fall on the same days/day of week - - for(Date d1 : serviceCalendarDates.get(i1.getTrip().getServiceId().getId())) { + if(!tripId1.equals(tripId2)) { + // if trips don't overlap, skip + if(i1.getLastStop().getDepartureTime() <= i2.getFirstStop().getArrivalTime() + || i2.getLastStop().getDepartureTime() <= i1.getFirstStop().getArrivalTime()) + continue; - if(serviceCalendarDates.get(i2.getTrip().getServiceId().getId()).contains(d1)) { - InvalidValue iv = new InvalidValue("trip", "block_id", blockId, "OverlappingTripsInBlock", "Trip Ids " + tripId1 + " & " + tripId2 + " overlap and share block Id " + blockId , null, Priority.HIGH); + // if trips have same service id they overlap + if(i1.getTrip().getServiceId().getId().equals(i2.getTrip().getServiceId().getId())) { + // but if they are already in the result set, ignore + if (!result.containsBoth(tripId1, tripId2, "trip")){ + InvalidValue iv = + new InvalidValue("trip", "block_id", blockId, "OverlappingTripsInBlock", "Trip Ids " + tripId1 + " & " + tripId2 + " overlap and share block Id " + blockId , null, Priority.HIGH); + // not strictly correct; they could be on different routes iv.route = i1.getTrip().getRoute(); result.add(iv); - break; + } + } + + else { + // if trips don't share service id check to see if service dates fall on the same days/day of week + +// try { + + for(Date d1 : serviceCalendarDates.get(i1.getTrip().getServiceId().getId())) { + + if(serviceCalendarDates.get(i2.getTrip().getServiceId().getId()).contains(d1)) { + InvalidValue iv = new InvalidValue("trip", "block_id", blockId, "OverlappingTripsInBlock", "Trip Ids " + tripId1 + " & " + tripId2 + " overlap and share block Id " + blockId , null, Priority.HIGH); + iv.route = i1.getTrip().getRoute(); + result.add(iv); + break; + } +// } + //} catch (Exception e) { + //System.out.println("Could not find :"+ i1.getTrip().getServiceId().getId().toString()); } } } } } } - } - + // check for reversed trip shapes and add to result list result.append(this.listReversedTripShapes()); diff --git a/gtfs-validation-lib/src/test/java/com/conveyal/gtfs/ValidateTripsWasFailingBlocksTest.java b/gtfs-validation-lib/src/test/java/com/conveyal/gtfs/ValidateTripsWasFailingBlocksTest.java new file mode 100644 index 0000000..670b6b0 --- /dev/null +++ b/gtfs-validation-lib/src/test/java/com/conveyal/gtfs/ValidateTripsWasFailingBlocksTest.java @@ -0,0 +1,57 @@ +package com.conveyal.gtfs; + +import java.io.File; +import java.util.HashSet; + +import org.junit.BeforeClass; +import org.junit.Test; +import org.onebusaway.csv_entities.exceptions.MissingRequiredFieldException; +import org.onebusaway.gtfs.impl.GtfsRelationalDaoImpl; +import org.onebusaway.gtfs.model.AgencyAndId; +import org.onebusaway.gtfs.serialization.GtfsReader; + +import com.conveyal.gtfs.model.ValidationResult; +import com.conveyal.gtfs.service.CalendarDateVerificationService; +import com.conveyal.gtfs.service.GtfsValidationService; + +import junit.framework.Assert; + +public class ValidateTripsWasFailingBlocksTest extends UnitTestBaseUtil { + static GtfsValidationService gtfsValidation1 = null; + static GtfsRelationalDaoImpl gtfsMDao = null; + static MissingRequiredFieldException mrf = null; + static CalendarDateVerificationService cdvs = null; + + @BeforeClass + public static void setUpClass() { + gtfsMDao = new GtfsRelationalDaoImpl(); + GtfsReader gtfsReader1 = new GtfsReader(); + + try { + + File gtfsFile1 = new File("src/test/resources/GTFS_MTABC_A7_SCS.zip"); + gtfsReader1.setInputLocation(gtfsFile1); + gtfsReader1.setEntityStore(gtfsMDao); + gtfsReader1.run(); + + gtfsValidation1 = new GtfsValidationService(gtfsMDao); + cdvs = new CalendarDateVerificationService(gtfsMDao); + + + } catch (Exception e) { + e.printStackTrace(); + } + } + @Test + public void validateTrips() { + ValidationResult result = gtfsValidation1.validateTrips(); + Assert.assertEquals(0,result.invalidValues.size()); + } + + @Test + public void testListOfActiveServiceIds(){ + Assert.assertTrue(cdvs.getActiveServiceIdsOnly().size() == 1); + } + + +} diff --git a/gtfs-validation-lib/src/test/resources/GTFS_MTABC_A7_SCS.zip b/gtfs-validation-lib/src/test/resources/GTFS_MTABC_A7_SCS.zip new file mode 100644 index 0000000000000000000000000000000000000000..f451cbea96be161e51d98d5241d193c611ad3084 GIT binary patch literal 65665 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

5Xf*6x`b&q$#E<*7W=+ z_;`{MqsPghy(@WVw`C`qM9_>}SngYr2bkoLg}<_;OWDB%e56oJ5oqRtlfL^`@=Q}Bcmcj1_zUM(GXxJmXls{LS~{Dhbb@!E z^Fn9vYU8l)GV?x%C79j6Zv|-d;oWT8%<8V%3eCsFeB{#XfkDd52Z=6~VXuP0G&>Nz zicW^y!L?pVuBG{Ft~Ah%qpwZ0CeD+hs#p4R(^W`$Fv{AU=EVChn4;o22|w&>138iP zSSPOZVv%m7+skXLZ`>1U%5W63!oH_)(a)y<`*Q;wHFaZ1xj?I#mNTa6{hY)#OjT)4 zBmq;^l2)9?b1`2m7>FM+mt<;jcT%T^-|Mjx~DY6XOo^ktx~eqa;^?7p0)|tFUf(#)ejNlaZP_cY>TQQlnc?sws%n@O6>#kI~ZvkGlw~8;(161b`RA54K$h zZ2N)z0DKV;0#J>B7=RsM+Yd^CZFfLG7C-?4iU2m=0B{odHGAOiBq&}fEc>(_9;P(A zpL#3l0sN(8k71dE@(N-G!ZNSqyNq&OzbXG5(tZ7zJhR9sr=1{nY&F_N<_9^yNYubl zW>6ky=5|KuKs2LPyrNQIMd^{v@-J?JmX!%FCRTk5q51hm?qzyd=heA(a~@Xc#2=k% z=F>d_UVwt`FLM);^Mi$U)5tD-%W~V**F$K3MXwB9`oUVDbFbfA`?s&3Elp+eJUIcc zNGxr6Wd2guU^PyM3cG+~3m7{_ao7$BYyqIR6~GPvGYISx=VA|M17mjxfHXURqX3!_ zI03+e1AqnqPEG&@;$RTd!hh!Q*EbyR8S=2 zmniOH+@YPvtq>U`{jSM9Yp;{3S?!0irUBl(Z2y#ix~74z(uT+A1+>M8*tWM-&EYIv zWV`3^(lWz5x;8zaoHf3^$skfe`oZd9pU>n-N$Cd*4U)PY_pQ~L_j%5BhUS(~Uj>vi zlbuvZLoS52_t}PuT)Nq?q=T=+!KL$X8&U8)j7vou7Wf@F*f^}gmDwXE&ZR4L;IrkU zZ_w#{%r@egM=;bgUa+w5!dbVE0lb@iCt;YjqLxDQp$Sp1$v=8F!xH=?bM4rdnVL}6 zFH>Q;vfL~iwd=#e`^^JbgtW!Ntd+hU1CK8ub#9r=>>1z9ouWWTtFtcb$8Agss%si+ zSkZFMFRN-AxjZ{tlKh@A@O5WG_B0(f{RI15yE5foru3s}eGu17SHI{Z`{1raq#LEJ zKr+6dOl+rk#F21(kka7i#PFdrJNMzK!CjuS%Q9A9YZFZKK7BgK z6cw!mNAy2*=EFv)lpmZ~!=|lGwB}o7B1&?&G~o zVztSJwX<@k2~XsIw&vexQHHR07ioP!E)UH8*U;6*Ilkrf+fH{*=5s2jUbVs^|GzcF z8+>Y+;VDuQa9i@S(0rkoug8O-NWO{7d@6w+g~~lcKAF?mf!NgR<6ACrxCekaPHzn{yAixLU6x#HHu(SIRkOXiOZF&U& z`_ZOX15km04ghOTs|@W9Fw$P+nC|rAAt?pX2;73()f^c2yyh4-`}*}fdeLV0%v$98 zE?L2jQ4IRx`J40^#s>u@*UQ%Ro9=XvcW&)msbWF~U)x{|#@uFIIOvAk=qB|By+h%! z8aUs*?G=kH=e{d1efqVX9Qzt*pLm7b#)#{W?bJc>lv_H1Q@~#(5dk&7{ZU+!4N7~i5xg%2ZnHG2pGa7=*01t;eVRO1n2EyaH#0pg`=>D zYq|ZdT+65|(;Igwsk0)E$g{wCnK?}liy$`Vkm9GRYp8#1TvZ>VoF-qtN9JGLALZ3i z*cW+K4y(U-j9P-g7N&Y|gQqv@YLe~Q%|GQ9c`vtqRh8*3Uy-|riK7f=1rpp$BYx9= zM@}^>TiVuB2aS>xOW*Ir{61%^jNsxGMmA|29PWRs0}x|+GmodUZt{}QybO6{guh8F zq5tYiN62><6!eQMzk`*~W#nNn1dcAQZo2JOjLSQUyPpmvg9Rdf7h-b<^D*r_$MHWN zK%cKux5wlIE_hXqEj0;75pG~V?GM%ZTrX$sKG%PSr{s%ruYk+8LMh%)=Z?TDD4t@L z{)_GNjE_4C$ASN+Dov9SnS~%{j^|PBUJ&#P4XTQ-FzkE#UkbYAvY2AX+v#0JNTrkn)RH$@3n}KzyQSXrOkaV z(`ssEuc63&0Oogqmz7l11v^95twNyfLse6a<^SUMl2l&S>T|;=y@!mXnmFi(Si@}n zh3DMi^iR=3b}&wX^4wk|^{}ASgZDjd!qG|3x}6`q8iEkFi3Q@=HDwUlZUrC+potxT z4w7&I@IjJoa5g>zpvMEC3c&ZB=(I!v63`voj;CKk*`7k4K9gLAHV)sH{cWOH?H`dG{B|FW1WfhT< z_OmWol}L%t&=>_a&nTBzspu|H($&?MS7;?PpT$#1J>m&UJhdaq@%LYM);kYOlj=Z8 zd)x)QoGd6Qyj$bK4oYn2T^7g4NJ)!m=|Ak`*E>5=YC7Q5$9O#x^c2r(#ZH3PZ#$p4 zi23-VM~;+U5kW&K>yHcq|2-?Fl`4^rhC+_UT>N@xV@gdXQi4c5eWXOE*5x@I0k-q6 z7BLThbWW;t4E*_ouBiSzNlZy2^~g)4L@63`@avsbD5T)V@a4ac(Yph0d3-a4gxvdf zO$&U~33#-6E8hD&9EhUh1@|6@SNxnC@slwmxn7()iyPUkftmTaywo+TaW!*^l@sI= z@bMuSu$MXNQ&4O-Kd-=Xh7bJk7Yb!3^>=U*b27&I;PeJU&t|p>*0qn#=x41+EFICSxUtuJC3$c_Ewnf{UM^efDryNPSx4%Bkbg_MO z%bEYboIEi5FQUMr-;e~e|6hVTF=wY5Y~Cv_I{Dm%{%w}t3GVrd*`x?(7c;> zMnz!rPK;@s#^(K+l1VoT?8KZ^YX1It7aQMPgUx$|riBlh_tN)#B4SFg&$;sg`>YvY zpZ6YmS9AgPxp^mDMC2OS=S08K>1jMH$!jD-vs~EcV&e?1!C+zd|@n6HFDp1m_c>x!5 z6qFPYQe0@C^~MeJoM)Z>$v_T0g`=r?O9Xlf#NWX_Xl8c8ZAbH65Sb<>2K(GFFJsmk z`E$c8xh1@4zPpNAB7I7(p*AepBv^S z&pK%%C3V>)acI7~9=GHPVoDm8=8z}nA#6f6c>K1r^>5{EJZz1~br7_tW5gYLw3SP^ zMP>A8h_{3JHuMUZ?OTf;4bgUJzPpy2Bj?dnVXPf`v`Rzs`!L_>7-@&53TK8}mPbku zX9x3b=;bv#HV*TRQFbuj-ZE$-;;`k;011(f^?9l#Uo-QTxs#BjB^u zQ^xodzO!DPoRO`xPB>JHUCgl%rkRXd(6NSOB}~jzg)YL-NdazJ-c5bFF zLC*z+?P2Ck+GoMVAB+lYrdsJ<;?Kyk#m_|A5N;gBLbsKd&9ienr@zmDpJLAh&d7DR zhI@@}=pF+YLN|1;00^Rsxgr4eo52V92KRAq&<))$0K@2pZUKN0T+AhIwgC5p2(!>% z_pUhB;xD!i1ChhoMsJ#6n)`9bMCXRw;l2BWYZ3L2Axf<~vB{FCh5B<3W*a@lx^>Bl zdJbUSoV18JvRJn#O=ck&GK*+3vqp$qEMQBR{RRC9^TDwz`VY}}yGYmO4CRnMFR{<< z<`qY=j_kGsk6x_fG3a<3>lkx&&XE0g$Fg?w{l7cXYzVVt_X1aQ4hZC>7=WkmUuPyz5*|6YZnJ+N;yN1s?1 z{;8R4qd6(&%khepdv>l4GwpzVPsqeL92kYUfjJ*5eF)rM$19DHWgE(1_bh97CmFh7 zD?(P2Jd8PVvgraY5Z+p6R0E4Ont9QEDn_gf(RX1s6i5E4pvcjoW_#_O*iG&HkOoi| zGsD#Pzkb?kmTlDlQ$RaA(iD2^&w_|sox9DsBkpfD1FMQzbz_XIwy@nNesa`~t$};{ zxizon2dT!X5cLc$4O4{rk}UPwQ!iSAe%I?PQ8A9wtV$m@FR^XJxnack;o zj>V7NqUfAYi&P4%7uFLoSpFT&^^dPNtr9 z$9r$r$6g?{B(R_>dz;>9g2MLG)P*R*^2>I(;p?P!wWM(pR^BHDyzS(!_&){nD5SH2 zkdCbmLb_oT(w%^iZU}{R;tjkn>X{m0%{(I)UYJm=Ca-KwP8XcV+Lo4(C4vK9703%szaqJ6dU-wIbd^*YEketHzWR&H3vR#< zpgay=YsJ}Ug2r};+UG_yRvJe~8es{fYjnM`{u9zSzr2o!+zRKy#T9KVkn_A3`?0_N zcv3%1|3Ag#%5f6YjB1s8hwL*(Ke_NjSjLsMm?9&U4Iivzj@Fbx5|52lC0n~Emaehv z`i{{v+PQx=(z?GH$Xvp}`}%`>P&jwQxTW$JW&~~(x;|LQsPSy@!Ec1EKK@xPDfEZM z#nT&hfrBt%6=0+OJD%rjiaG`-Lt14^^7W&qM@OUhcAAzY@p)iDUB_+Vygc&p#3V6b zF+9PPZG8YNh7h82)gf>l1e?d919WcU|LqDF7~MiKb@$1uw=kYuw)B}GxOHmU)iXgD zpKBfC#H$ytcw2lv!Gn9}Meqfba+@{i2miGU;#=jH*yrH}Uy<+Pl=cfCG3%o)Hs5C1 z)%X!kM2y#gcpi7~FxUHsQ511)K+N=_8pzo;FcH~#(v4g)w0m%C^1W17j>N+5r<1RGGg{6>!H zW^!vqrr2$+2yZm5V^hBuf|JGV|6ul0ycE-vVi$vt7aB*LA7vgdp zSmMZij|Y}V$yUW8ABb+3wk9{{_1eFe0V$9fBRSgY5^7r(c-WIqGE$4n7SN@=O6RJsn-R7gAV}1N097B$KO`ne8TFBq6NWY5Z=>f zihr=6(?IJ0<-9wL}#@t0((`j7Fn}& zs{h9VcpGk`R=M*EYAC+{pCvHxg}=q>4i`9$3E2@q<5mf)N?Hw|B&E^UG0AS|Mklm( zG&ZQ5)jX=;VQrNxusI?f`5cGUP=udgWv}mhy&N(6P1+k>AG}@!dgGt*2JA-ibt-tD z#f(NYr~8v4N)~gi=%esHq=$<5z2n$5SA>(Q%sI$vtIJ{SI{tIWVE5w|E_Zr4?YtxV z$)_BDJRQoNlJCoz>O4L$l+ejt-83 zUJs)bCL!Jp^KmYrF6O2+U=wGq82WUyzICOCIM}1Tvg4dHTy@y`RWXf*hm}z(AzSM^Z^?xzDZE?M+*y!u-yXGSO=Qs{?xgC_)MwI0cy;s2- z48#`;ke=eV_rSS#vZ2!G>$5wTMfx8+mf&(b?Yf;PyRR0yJ-Q0rfc6x>z3&-xYivN; z?4cWnG<3_{L6luJHf3)%G>zrEZ@H)iw;tM(u^*@76e|Z*6u8!u`lNE%XO4)bPA z$C+`Z$RF>mtlP1#wM=Mv%gk^CMzl8gcD!%s^Rb9cQs2A_Ji6j)=yrhT zlqZj|^u$n@ z^sQAe>4MfU>A%q0h(>Fp2dxcXv^Gvaw-?W$8(S0V<^bI;!`h%`<#N4wvUf3Q?kY!( zm+y3DAs%ua)0XN<5g*rxkl`})icE2UdXv*$+%R?@rZ|CH_izm2s=P5usR&8Y1-lZf zR4sBxSA@~UdSw_NYCHy4VWDx-r|;_@1ePd4Zu!eShJzS|G!pW4c{oH0yAf3~w0;5o z;9g|wS|=GeKz($69b`yBUR2l4hZST<{fsVwC2yw&J7e8G*cn1>urmbj!p?{QA@@JMs$wZ#Hbm7x5iGFt5KRJP##& z1~+}}%6a!-PEIL(>D3aLlHa!^FK_l`kr$T}({`o2bDfi;8Rh6E4U39IuhhwaJ$-j` zHj}(K@FrFL&)T@%{YInK90pr120LZrHrOfK@4-&t`V2c|iRyP3_WRZ4{aEmP^TdiW)^951C#U~4V^NDD zx>OV=)ZgYGw#X>pz5fq|~1{?u@B3DN(V?!_*0p6O(_dd+gFs_gh_6-rz4xozpK< zscWF_p+A#P@TwDh^^wai?S_Iee;6Ph2B`A^+09E}H?t4Jq6tJt3`Ekr!LR^WRQS*l z^9Wwo`D(BaRmhA;NrD;qh|I_=G9x#T8Bs$=OcLt$9d!dUvS90^aK~tLM)L^^x=znA z@d-@91Z=Lq{jQcI-l9>+R$^|oqf9GK#Ww27}Q~fm+kFx`R?2d5*eyS3~FE^)5~|0 zFcG&(#Go1yEs)F;IThOeuU9HDunx{>!8&jkfOXJ|3<*Op7?RBuB^`v8L|6z0w1rYG z4R`nxzNS_egd31CQ3<&gbqZEQikH-9PPVw=lr*#YZQN?ecXX!vS#U?I!m_s5`~q9U zYopZsF=EQ@W1K{3FaK-1PbFJs^xI72FeakIDPi7Z^&9F^;g{wQo@h&FS233Yre)M@ zWGDL4ynFgfmbl=GXi|Qw&~2nQuG2B#BvNx=JSX=VA+(}jEP#@mH=lWHRe_5~N-oFQ zFWqkN|K~dRf4Nn)6xTP{&9(e0ZD8JLG&0vAAlFdo+oA%Oq``>H7x`ihgE>RiTXWQ1 z#O*2ZGLSUC4Oh^*3CpSo8DYRyz|w3g_fhX9apR`9W=|>Zh5h5&ibgFIKM|YM#)Rtw zB$d$US*9NYb&3){7qXY=s6SpV&J5dVs<5Dp8nHT=524*NbI(-;##lepbd*od)D6G{(=E+RMlE-703R{s?a{{w+=kbwbuvgZRg}N z=C*PDz+!Nw9|GyyL^YMX)?gVGg4!h4H7Ei%4qaeg=vnq~4Kf&&VPT@qh?>N8kFBLH za2AgB&yzot;`$3c&OWyx{SLrks;K;s0=30bT!(Qt7kdr@TL9>91+W9aECTy>bLob& zLFYpNq}c%+1<;JZ2>>1(05kynTPoEll&|%EPh!sgK@@_AzKwWVpJ8ZGu53;TZeHlOf~A?YAo9YcE8sT zbm1zNJ^g!M-!KH?J z|GdPiop!#aI=Qaq-~YCo)UDymKU3dXO_|p{c-5J({8m7;RAaYJzLHTt6QzcgEqpo1 z+Td_$DnBM#OQ~VNM2v?^H-pF}b&ifI7daMPJJ%OEwpVDLsfO1aFRPg7N_YpkG|$^X z6k-t1KSf>q+Sy(#x(mLN9l>`!p~zB-;MQYeXd9J~W4^kSVW>i5MaxH({d9mwdJ#Pjn??`7?(|(lKMgVk9-}1(Zy? z`orih#jTd8Wr2t%Od3S;Sz@^JA&eWMrir;m7IZz5dSMH}mz!}Q~} z%hCK^#@_N41iCHlHBK{2YR39{4wyI;U!~&XrL8~u+L$fHfGsHnjmq>_Ee;k@po1s z%6*&8O@#5j`rB$F_6W^a4sliXmV&njrz&kw2Bpj4-_^|p`vb!sC%q1FD%P3P)S7O{ zm0iBver=S+Gu}D%8siWY#yA^A9}B%Sf#_uC#n|y?lqq>BEy(iFyD2KJ!2y^M%7A9* z&E%mq3uVHd?N$t5=qFJ{91ly5!kT(9;*pubwbW5gKm4q%zxl=Md?l7*%Z@Se*Ao8NSAC-JhCqr=V8a{TXf9; zARi-E|82tO?X7mA^Sry2>C*?TCZ{`Uw`Z_Kxv8BxrwSlurbM4L(eB2A!gc|RHQ3#X zSzsxhlGo6MYy-aQeDceak=6%yQlUDsRF1$}hwb&Bl_de(mr#DxiyX=tlp6(yzwx< zLI&k8e=Iv`pxwJI8F$K;L=P@b<>LP3^_0(LI}yuFY_4V&(w1pC`ePKbN+yEBo8%il zmO(-^u|NO(!dfQHdXi<1Cq@a>d<)+MWU7|I#ROZrPLb}n#5S$T(+4c9`ctdjrFUk}eXA}*oCGP{XPpkz`P z!rdBLCecL$h248T=lIy#*zq25t;7XrqSy99vl%s9sNqMA5Nf1QqllW*&?KHm%>~rh zpyn!Sd{J`)HTO~T1T~4hL;Z=V(C}qTJCzUh7xIY?|NGrz;!-ouLHXiC5f^U(UqWnX zTJnZ_xGpm(S}MUd5Xy!Z=UOvVh8UT&6Wrvv?k6Go-S+KL>uW5BScvuaeZyZ>BT_Nu zkU?2=S$ksP%q$~HAERD#=z-UOibgu-{#-*>Zk+h}rF?7+6c6JQCrc!9HbK$Iq`RA@ z9BPiEMg=wMsL@7^9%_tHV}=?lXmspQD0?`6t7L1lvB_&h;!?Knqhfkr&Z2DC>)e9Ual`7?wor@NS+9jj(lnMAD0ewr${c} ze3ty(1#5%+5W%ixU^d}bZ8uj!nO8x{#NnsPEvU}pe$V3tPxRZ1I(W($Pi5sAx zdltBNaQivK05^~$89DY#a5J-TD~xB;ss4Z>7L-rysi6&X^3!lMw~$Pz-1$pzYew7A zy0(Fd%`KuCD5vxvxp+X;!j&fS{=aJpZYzoKuWBV&S)9Ek2FaBdMV4LH*W4;?BsR=T zYg<%IdKGjnU)bv(fEAMe@rQE5%eV)j#3D;{V+m#{n_)Mgtc1D|T{}o6wdIRCAJGOy zlRx(R`SvgUzJ(?z&7%uS-;s>j{rrqr#c*hbQLExwMpzEcDxq6D+ej|_I!!1Y<8M17 zg-}Sk{j!_^v>9e~nGq8N}@Dt^hxXW8c#7_|o?-*TaG=ai! z2!Cqt#i6{}jAZBdI#e^Ra3ss^cM|DrbM#d#pE&9+Tu4j_dy={)l$P?4ns9>IesxV_onWOyrEo)N%yZ=FP5d15D}NAZN<73QTnGIyH% z2S_yBN@V`DlC|sPCa!e&GcW#Z{|?2FKeLb5p!K3dVHZif^w6K}U;9(Hc_&p_hHET# z;~?7o{Z0c;U8Moo#gp6Ux2(k)3yQbH6{!CDXR63hg>O^Z*kWcb)bqxTJJd&}K=tmZ z`$@kNta>=vubt9o4JE#EU7zE{c%a0%ZHQ&gU$zbEfVE`O2e9&C&jJ?(^Ab#z=*VJb zDyGVyKF<_W_1w1vs~=AG`%W3t!BoY^yZAwoaobScjK5qHrt0MYRzU1oz^6dQyJJr^ zxR{$L$MZL4lP3lRSB%nyZ30SEd8XO9WW|nXyNpjxuFAB+<$0%0c=^VQ$TfHo1(xve zLmHW%{PVn@On5CR8hhTK;HsZm(V8GO@48MH$h?>p*IiiA-uX3e7;x9N3vfe6WE8SF9>n8l;RfJ%pIOWHGvNF)B;6V%1;t#<+10mL2PU1<>3vEmAvS7&vb;+vW4SS8!qHnYJ5QO9^$UQI-Mgu*((=)Qg?U=ibs$Bn z_~)7(Ozz-vAhR4q!5}&VH&6~sNOT%RuO0&@SiOI)IXD`w6d<=8MDZX}2c|gq7?6XI zTn?gFsF%=OGrqA!i}z=CT1O<$BuY-|k-^H#d>2yq?Cj*O-D|r1hZBJl0W#GR<`pAE z^PsX+A%Unr&%+BD_)`Zh&tQ2eKAf&%uv0RP=FVLGKp9IM3B~z|d_Xlus`Y+2I;^g= zS?|{mf~q5*H?X%nZo5eX2YN6MOQ zP^`>C@Q})m!UA8}bz(6nN`^bNz>r!9_KkKpvK&!i0wK<-c?EM4i~JpfOQhN1E$Smu z9HGyd+9%voKm}iRpSHOw5~(`QLOcoSieJN%A{CIT3tVH=9~zPvO`y_L^BDd%*>23A z4pkQ0cs*UTR+0R>L#Qc9M>Fc+X6$d)F4}EGz-VOMtwAOX*)X_e2coAIaSMj~9HrbJflkF&hk62rT7K!)8uyMC8@2WLB@P{7r_p_;KFBZZ6zhxT5 z&i8Eahf42Vgbqx#sTc4*1?YXJA+iLrQH&T5mBwDcJ}WZCN4~R^Yu}r`Zb|HPY020N79B!&w(Ow z%NPpX&{PwT*pikwzBr6N>4$2A#~}I5iVqlMzo&S+3o9{&-Cu)#Qv!G_Tm3qB z|GvHjh?dLVjNk}S3NUKBz71^kdA2rnZ;Sr0qi`|6Q%k+z!y|{ii|X*aWW=JjK$hDl z!z5=BdPB%k#+W7NKBrz#meFcwI!~K+LA+Z2cyTI^X@2@Y@@kwWV}`4F(}~p1)^%G!q>n^9 zkVp+gr`Uw&RbGNf=Mad#YovB^-(&~TEE1hSA{`J_aDYgq0z?KGuC%aR38*)&Z;2x} zpc&kCCzR2U^lVYgDkhf{ZU2|XX$T@poao^}SKc7y`_)PqqAN!A@Q>(E`R=FXF znn=a^-I`5!J*5`IBRdKjI%(37Sjc%mBpAz#3(Q3PXJQG42 zc{X8oo3GL0ab)$es`KE6I-iJW6evb%7q>sOfCv$)&O35T4ncm_LiP8Mh=?~lC`Zl2 zY$L?gh$tYE2^(s5un2LPS_J)L1&5!FMiX*?=}z$UjJsdbWABQ*0PKbo7w=JepW71= z1*ubgKb|(uSh~x})&afjIpJv+`#V4JmX8M{EBmCb*r-*&&y8R=WtFuec0%>^l7o%Cl+B2@A!b7kMmjyn`Vr8c!3ncQLYkL$&KY-OQWY<4<+RcCM(}00H zH9oI9R=_s3qG0s_-C6?nrg<^v=iKR zP=0(auJFd8f31Le$G2`S-{6uo0gleuyQvn0E$Fy}h*A1&06+2x{#pjLxZ{XKgZf?gQOxL3lwEmFZ>P{GfECQc2ZC3jn}6Ky&RSvU)~MRGIn93(a#7zI6|nwd1=co z*Ya4AXJB7zPUOM;W7lU-({8@%q%D5UZp3mLAx)w`RwF+kUZ9jpo zjoOW{to4{64=icD<#0Ouz8oA4+W)FSe{L;`*m#Fh^z(8gl^7k52MhUUDLvMdSASN) zmH%CWekJMq@6uygne0{`tnxVC&9Cck|AD!KI)sm@xKp;NM-e+>y^*7XxwL6OD%HHP z-ss9g9N0Z~0rwsFmodMLh&>P$B+NTA+~RJtFW3;`!EJV(@KeJoHFpvtNFrx{o%HDO z@--G&-nY&B;Mv608{7Q?mVo~9N)kvDRS*ZWCn>l+#;cLJk?%nL!oc~hr~qBA+LL-e zM*%`1eDGKVess$q!}}hJ`bQ_~+~omYvE!QNRCd*d`wIg1_V7<>Z&Oj}O*jnMhDsJ3 z3U>(~4<@qFZs{43Ob%~f{u`HsARFP3p$?eWoK=Q;5fJ|NwjK9 z%X55VqQ>{<&Ssn67w=eGIvv&!O%ZPeN>Cst-Ry(t+*&-4UzzG3L=6DdQ@$JW{NN(d z!J9cVoU;BZQRVty$z>PfTZ@Kixkj}4I7PlLhgFg#g$(JJ#uH0^;j1`g2;tHgykagb zm-IKK>D1o8ZjFgA@(jz!UL^`}`=4i+NA_ARu}f2c%LVJ<&qC8Avk*LaQB^K-?PrP7 z3AjT~DRJ?eT?ogXxhJn!h^lTgqN6hP$yZNvO~x+$Fy&OW=IkvaI?~GJAmT(KRS?Z= z1<^wg=?H@8@!3>0PHA@dVh<82AkjGxd2oP8yaGfzNTi>tw(=tF<}nSwG=0r$4Z~i( zCL(g1WKs=Rv=Wj7IyN?M!VW~O56mfgrHx~grlyg;SP3@i*!+=H%@y^$y)I7D!wj$u z>cw+zz5?15Gl#6N{hqNjbyH6-F)U$$5nUTkb}p8y9nzsXkgG6cO8cK;f{~B0sx( zso`RMf0*vk#))rW;@Sr=@sKgb!5R^WgSMkEaWMrZKH3fw4=_cz{BGub7$v_S<*F@? z2Z=1r=4?JtV~LbK9W7o-=y6W%aSQkVd~Mfs^>7Pn^hvmD0E_Y-}3RO)9f& zW=p;Y3WuENc?(DlFk~enb9xN^aD;=ei=71}^ZQ;!-88mdH?`oIZIXWk1xiZ}5lUO9 z?`@WNQ38p>z{<*IR#+ZA5lD%NyTLx%rj;z0O=BnWr$s$E?9-~Z)Wy8~5}9HgASm>U zwn?TR&(#!`wgjXQPI*f}G~v8&33xy_g)IRAg!85)z>9E@o=rGeEdlm~lhzVoPB@7z z0s80!2_KlYjP`;cW0XxuKLv+|nKf0O^4$wl;(ceEnyHAYZ7Ks?yH9+%`Ud3D3 zy&Wjp(o=AG`RFo3M*G0msEZZl7Tj&_jFV*Lh7zl z;*XrupFlFOdj46LWiRm09CIf6UGUG+oEiG#pc7ZvJ=$N`*R@;Bzpkk{t(pdxEHk^% zoRS6yq6XK|8j1h<2-JMyzbJ*~diY;9h$S&2K0_j>tCsi-0F$H>pOH2pZ9#m7DX{bL zGtBDxX&GI=E_;e#zeexWte7rT`$L{~4ax=z)bwvoM%h4usEzuAW_pE%Z-h{P5SiKl zF^qX`FD^OYfck?-)g}()pOPikfd@JQTw?`_Q0$;E@3~?P~sdUP$xXj*i0vsd}6JgNVgV!xa(q3!?GAHgI`D8f_)72S}!ZNhCZ-N&0}o< za6uZ#Vk~MKVTu>{37iCc#hBi{NR3Uw>FaQ-cWq{h~S1t(-Kz8{=XCj(OB(;;?{ zU=}I#@pYZN`~pZUH4coqLaPcO?K5`u!H;F;`#$D_w>LI*GeRBODUOp#!iV^ut|aI&KlAU}))47%InI<6PV#?!%!IFvP@f#F1RK%l(#T6;tDJf)wkq0u;KdfTkc?{z&u##j6UOCtsnGij~C*Yv*@XjCK^M*0yrC)1smlF(k-qu0VqP@>$54ufm-9To`h=3PVvi zB!-!FE*Ro>g9Q0|7>bg{ocRLCnP=e8=vhGTY*$a0e7jJ!+x0^@6o1_*&n>bx3NRN< z39)_h&Q#xu61yv}%IJ)4)grqqZ_DU^Xo@!BYH`W=>$mx;>>YHN_&WMlt@%yFcA=R6 zcg&f~CRKA=_=w*|SiK*oUDUx8K0ggPKz|lj}nYa z%p+F`d^O->a07zOpi6bPQ#xjJ|_aE^?GR))tHXmmZgLYYjC^b@XP1<5%dLlGNskiA_c_3?25ydMI6Gm= z;B&X$_<sMZ52$R?7$M~4U-~%BO;PvJtSAb;UXMv;7e6k)43Sb=uC&u1rayDq$ z`GksFuP<_~Fn?JF->6Em$YsxFh=wHg1^PP5Hos#IDKIVo)ExV?3i&e{T)C%W@rzJ$ z;_b7fT~h9?aj{4NOdgn3Zs=V{?`B-N?$wP{RnNH}epmC{FotH;GBu>;fU!gqh~^cV zb~KCm!N{S}MdLB1DIW26J2|CF*|_6qEN?W`B~=;(Y*REl1N4Pm*r0d8P{*Xh5ZnB& z;#gjJr(5|~v~B3Bp4K{brKNAWKN=_KIG*Q{|E+UNUB#t|M3W=#SKK1U@33eUpF{RV z#T*mbe0*1QXkNN(W*w>OIms_Kz6MDBwblDtDhp$|j9xw@jv`>t(859Nv?C>}wz)~w zJyADFPBKFVSGsWBhyI6%K}qAO^O#mrzsgg`C`SS`n9Eu4<2Uweim%&WKu)%qBd(sGJd2!kZtJlg1(lk(cXQ;Uj-} zfmuq`=ji2)EfhB`@e1cFyJ|`(1=qT|u-)jmK{|u)5--62<~Th9j{Gr-)p}(P)mTslYxRsv;5>eF|A^Y zH&&`tp!#JhGve<&1O&pjOmymy06Z>GG2#3n836J1esFRqP&M7g%s~hZu*gyb&h4fA~h z3s_l~S{Ab48=LTosTD1jxZVvi1z%fnFvyxu>;i31C{bj-sGhf&U#n45)pZ z(iT!$fC?U1(p00Yt62pn8MYiu3sA(tu=^|Pw2PDRGcIUfa=iZmSqp*H@4K4!5fi6| z_led(0#@ax;}{XCAfv|%z_0+_A|ZrSG9kHboVin}Dt4c>?<}y8hQVT8< zV*3f{gvcNeSBeZG&$|g`Ga5}aSJ6C0^8w8mnpL-8@22McMI z@ykZ!anN3?Wowgar2i9jF?zF>RJWz^eUH4DJ)c-nA6dV9qkHxdap1T;>o{>QH#GvM zrL7&7?KH$`{nSpQ1wr>UBXkp-Bn$#`mGJ*#Ob%^7SoP}TW*$$!o|$y*UUX;2u%%qEPu4atbhMjVw@JFM%%Poqv9t09dj7 zL?1uz;bipmV;VJYsYa>CbQf}~o?cfv57eObG+ug$uF-s;n@|(L74v*sI1iBfjF!E) z(Xk2#{rw$efZqo*Q?i1O=aw&w1!SaX2XKN{?gn9evyLeqgc3cMhh~;U6NC=^q`po+L`)^ z3tWfJ8WQjoCf_T_>xd+>e*o&?c0`gBnL^}ym4ln(;IGf#H$U>v$c8cp3*Qhe*pygUttYx z1gt@$d8@g6&Lr{BTxZKL{nex|Q`wq{#D9O)i@sg;qHk9ngfy8~{r`t&d8|B3*``{e zX2Qrt0B|i0hGl_N#f{9D1!QWmeEeU6S+-=d75ySGiwhIXa{5j9S1^mqS1?PRVA$q?|3=f?yx{cE0|yuYixy&Rs1VQWUB z6`ZxOp`r3#OH1_b+k$i|5W*rGQ=vP`%tdehe{s?K|C@_0PF(cJ#s#TaOa#+8?23a| zPoJ8S#iaV_D>4i<@B!gBH4F8!4S!^P0kXaDE9V6OhvGt!DhDoP6A9JS?bzqgqXqk499=BTtNyvn~{`NotDjc|ymZ%iK0hQ{siH^AA znUHv()1NacD_I3f8u*H+xxD)o8q6F<+zntcpc^nbZd!@N=BAF0=nFvUJ?!ja6tR!1 zH%YCN5u!ZooC1Zq+=6l=q<&F1^;?IAW8{a3?PaSfz75t?uMeJo# zPUDq)@vTA~63`jvtzQkIi^>{9SpLRHG_a{@?J|?#w zR^RRPQ-IAxk^G}Cf8>5u7X9|v4U-L?16*=tpfMQN)Z>$^40XAdeIl_T+%M)s|Fd?# zYkXlpT_C-Zk>52uD?q9izM#eDV&#`hvD-;d&b}7NK6l5gyi920`$cjAMhg(k;}a)k z@v?gx9bMkrQycGWy8L0nRLFu#jcpRw&;H)nG4II|Ew1hpp%MROMf8z*{tYg$9&@qrBagsh$OPJWxcgGS8QY(f@4fvuHgG(CuX#6W&vNw1rM@YJHy zUpPlW6n}bTwH6QnvyIaxZ>5=whKZJpTlvJe{4k*C(Xw&FVxEAn}ruDl94Cz}RQO6?S51swO-TPG8}hjqXd2ljsFW>Xq*#Z#vrW&Eg~_oE>G&uD!X3t0)c=sK4n zF_4%i!~ql*Wm^#)b6sF{Kz=dk7OMYP=Zn>40w`&qUU3~#SW+YOp7Bso3f;VOK*o>A zGj}SN3gC4Y(|Vl%FZEOxy)`c<;mRjH7RcG6l>uXRsm7~gyY``SgD<75Q66g5saD$L zt-L_=3^4kVbRVtzyR&efGe!wAkeEgoUG56qnXV4~3MKLDl`&CP>g)*k}%HyXpk zr^P`u4a^fX2abYiLvxD+X2UTs1z?6tG(SRi=P@JvHE-}a$p7)^Ts((r_)Z%ddy&{^ z3#hCpg*r9CRLn6uKRMfm<)(xhp8|gbDN+?KPRh$ay8$}-9aZc6Y9L#tq?})#L*=cq z1CYhAVCwcphD}+da+Z`jD(e=ncmxX^dwnIUe}$SCTc{3i(V!uSH@tOn5uauj;i{>W zgrv^7qisolfm9SjU^E-MmI>k_UXAwk~JgiJn{&pRyNMMM#Q^()m#{4+taY(B4zEHSFK%i3+c-;2q62B@gE**=`OB}GO-G@$p+eG~J)-cEqC;K1x9q_Ah?6--ws1ALn+{fqh zlNu^F=4e8*j7wUUcExKKVV8vQ{ujfuP*YE){jLz;bqC5$I42Bzw+3)k%KDs+)ma0_ zD|?k4T!F=4BJjQ{saEK+up*6ROGdd5m07zDL&}Z8=beN&oer2Df?|O%g~6U*>O8)JIb#iqL#UGlXWY7Z^b_o6zh*qXA}GLkqMtw^BxVrFUAx-jmAt^t$3P)SxkU zH9j|fA`-M`tUexR!Ozi61{e!_$sIN^}fqqrYb zfV81f(dW0Rj(-zx3H`!&L4YncWScnNSiU7xNh42Ld#wqd+>;}B^K9q&#h++>B(1{R zu;%2ebq{=Nc567f9-BMvcGP%@eqZd4wPy2iqW<&-ND~1Ay2(KC1{>)VjRgNKTj6fb zLPSOH1PSheu37whyy$GbNO&{ij0B!IsqXio+wfEcyiRfi%$+bvBNcT_!J@FIzBOqx z$A7&(fb08{fxPM*k&zoBaZ6hDz8m{AqZ*N&muX3ajQS! z7kIwF*)e3w=KW9Zx}ZGqTWXW_?=(CG12RpVOej}*;5k7QV+u)~PP1Hw-;@O=_gUM+H*=EivNux=) zOtVko7o7fJQu6$l;hVoUROuEt=Zigsn$YzPk=Lm!A-J?BKrpG9OFKyd1*_JRuhrq~`nH*GWCdMQg zZE>j-oLApdrn5(x_}iMu961-_c+n)+^6};PxjQLS#>2AsUCt;?o@&PyHFadCvFH+d z7yvZ7UV!TOLXaQlc?mk?i@{L@X9*8D`Z&S|ju$vf`9XH|zY$_>$UYUB({7EQKYry2 z3b8^v?Ua-$g8Jqc;bnCUWw>n|_VR&rw@==qvNPMNK&CmoU0955LOxCV<3=BBDdp2W zp<({=7HahOXdid^76=peW#X|0uxkQYNpW0G!`&Ns^{z$Fyglor{A(i`}(YHEi<73}I-f`e_gYgNynzFTATmbTQ*;C4Nz>P|&Wq z@50#PPBuxd#$L*yF%xs`>2fg%$W5+?I^ zzXI+*WDbI-sFat?5)(WIKozQeSkDKPQ~p7H{4i+6_i10r$9$ReZJ!LFr<^1t3Hb=x zTa>=@R=Uqs&NpDK-9m>?UD(mMueAN zIRLqOC*OVwE4urc6{JJ<$h-HRVUom2Er4foJv72$dTN9A<1@vJi*^sZzW^Kzi5rnX~4Nm~hGv=Uc{ZUAp&{#b*K7;A46wtQEKc2D+=`g{aWyRsP?*!UN!F6?IH=9CW&v%*DWCG&Jrt7 zsM^t7mF){tBOxIomu32mSM&0R@%9q*ivW2(W2Hf&UazP4s*6i&JXQwaV^_E-eUcpr z5A<+CItr4A(KU3|i7(4?RiX(fA@Lhn5|mjG^V;#S|dH;k4gj137R0Gi8CUh3ki`#Oy#mcHsjp_KNCdFjKpV+tExLcd%@5h)Offc!$_ zJrOb?DWp)VsO5VT(hCBjB?B)Yt#mq+TOoil)N>ewQnH#$msXhplub^Ghb$>o>@W$z7&KgA>Ed^#f%l=h73aj-S%h?q>x76I#nkYNtH>w zAW^&~G>NRz+pNwzu1p~*YWM^1KVP-PUDIr(Ccv-i%Y`4$+6X_M1GbzI*Wt%6*$wCD z$tpNUj~2l>8oLSS=r2HXfOHQ0cnO#mbswfJ#qIV}5jaO{m%=%c^MIpm%7ba)I8D_e z1^TQX0r;-77K7amVE;=Jua<9bXd5W*NY&2P6@70@Xr)A{&l&X7zHN49J7ixdBie;y zXHUkkj2%o{`K)5r7rYUiqWz|~A?)9NM8xOGIFl6e@fc$u#GKDr>}A}8F1o04h$m4! zf@D($kzTC-l2+bs#S*G)o~iMmg#Ekfk(p@C1os2pF((II=&krO`Y%GWx#^fa_iyIa zXg;=gqb<9zikEB^)QcKQWeV~(^7KU}uri=@w&m88u6QbO2+k*6~k-s#xY%fhlRN2Npz*@gJaHfsxJuTaFH39{nPv zb|W$YTD^!rniRJp6puw3s|1qy( zmh)rU!hlpN+dS!6&XFa3;;K_ve@C@YAxBp#LfRm=0Odo9a)cFEua!(%;k#L1<^uJD zd%EUSy*8~dhXi=G({T=PPTI4&7D?X~S;2q|v+0=}7G%atGk22EWAo>AZh{uWfdg7m zm5jGCC#oh$>p_y9@tJeP{t}3ZL$=Xrq*VWT1782v<58Px&EdHZn$yj&M;KT>sFD-hNz98*7cNW3x4^(>uav(ap%m&oy6@s&!o-?TkN*QKmDRdZ#|Oh_ z6y;(&dR`*agXVmtoc$-`7lCq-I^L(w_dMh?5Gyi!hOpbNnd8dAjobE+Q`e;vX z0#7S+98gs>N7{2n$%$6hv7?j`s_|uSb+$pjue#7mbUVN4^bkrY zH~o|w0ApnBZ1g&n66ZAjcZ>_A>C_;+07xZIoxRoaOGXN$Tx?yUMi|9uwA7uHrt;2# z>*g+ly%I35y$qNh9okK04bDoO{|Ss460ZMIr}c2S;C0ip+j|^Bz;m9uFaa9^d-+k9 ziLO)Fb6253QG@ghnlyFoAw^PJS%GHbl~ho1Wdsxjl}dJ$4BK169pAC1tI~l`Ns<|M zd?WzWXQhPBuQxn_9g(STf;fdWvlm?804zyW>=e zp_Rv6d025M^YU0U7c@BP(PsOovvoV}-#NmjjAucPFEe0zP>sQjDT0y690yn2(H~Ks zJj2L^3;|>VdQye)=s6@;zDeBUM>~&YHo0SdpuMbNNNFY&U^Wa*>N9N_gSJmfpdWIP zep5Mpms&UZr|4inr}cf}a=8C>eWj!`BqxGUL1B$FObKykT6j~`I&5I^2OI_?0s0$l z<|BXf0LVo{N#)|m`Tt@|sOQy(a9oiN^&ZE07kbWb91$U8V-Yq20-@i4Wgrs_+rhYZ zk=^bga=0JVk|xTDH+fpZLYkeUHQ28>A4<*4B3EIl@d+dYe5x! zkg+Inz?3P3)I68qySq0yZL7z>At}Efb_y|ZgxX~!McESm36?a>B6HcjmbUf#pO;04MT-XO0n24I}2j@3D+ zrZLp4<^6fKfbPMBdNTEN81Pz0EL<4=H+nMh>CfbMDv(GG5l8ViD`@Edo(;;G&Y=c5 zu{rnn?Dlh^{%!v(?o&u!H~o0F;Rh=Pz(h z9Ry|cba2WKgYy|jNZ`!94kIeyYy#)hNpLi-t9L$31t>^Pa+bKuf(k+tSV{PDWJyBr z&SavtoFcK>P6N?Zr>!mHQ48nnktPSAFvN*SD|R5&m%fdZ>3~Ured|I0!c8A_Z%)BR zNH3r(oI8hMNN5MgGQ5OPO*pyjpd_hmHup)(yAWF1Bvo9B@3qIXD-bP;flvfs+W%TP|?kY!{1|H~+Qn(;9FN zE&!(+91m`ASa*m;yj}QOS2*P+Q2QTO^LB$i8VZCP)-le-&PLo9JUp(I*%!zb>H1VgI>xsWKqer=TK#+`KkgS31-v)hXCzAd@Y0E1dY%Mp&%j~=z+pq$3gP{Zf@j{lcsxXx@ zI2%zWYF|+%sVPQhE(a+$w4PAouts7VY~%B|VYfdIcl*m=w+}M9kQ7)5MdJvM=eLgg z?ycSZq;0iX_{ZIgWmG&4-U?a|496pPK}C1nL6vPVEh-eI-91*jdqewrv+$*POJSOa z2Taq*J93wjJQSvzaLUt(1sRUlVm|M%r0>YnB@aD=_hg4|b-=FNrlw-h8myt3nB@8r zuBMLg?HlfILO3D(sqe_S1C2-F#b5Nbcb`#6LDuID7VvNfd=m2|VY3GII_W_V#uNhK zwej*$ez=!p36_~}o73xHF$~C)Y;V`hSp_nHCG8l?U33xty5R=2?Nh#9)==!`lLrlD z09m{ON{T13qh^=1=JcrMtQFL%gzRyZTNj5S-@N{PIZs~eeR@B?TnK;N_s)kx$o0exwI12i@qPBZM>|u^GPpMa zy!Ql27r!L*LF71Q5&@-ePR-PmFI4tiZp`GVqenz`vHa9sAthzKIV?n!TnFleUW9zM zb=eHcxz{fUUR81@Pe!%j(%_4+j`@Y_WtDR>vZG3NUU#dUGj{Uk1%qb*IDw&I_Ol8N~g@YkF!54(7@q9Nw z2^85(cUlN6d`Y2ydgi6Pua;$ZFR;bkf^u7guPXbz9O_cCXyAS+6WBE<+vqQR)jaLY z#FRx^i2+qBE!Q*9`*|sSHM9o$RjoVWtb7)L%GD2>LqY;%rd^C;to^}@mdkfgMnX-7 z9{td+@#xpL0I27_AK%678}gaOVs?W>jrTRkgMfPO0ULgJ0-!u%=Zfce=}tln3h~ zgf9_AqAjMu#Fj9rOezD#@#2TuB$jsqElFjF8!<<4)pIK3A>S!f$4IKbxaj7S2uG)+iLLnnZ%H`n0k zv+|+xPoSR{E50NRaHTB`dy9K#W3ygU{onFW)xGZB^nart!IIzrHtH3GhJ|Y)fNrrA z8ui|Z`Kp0Msv}=CXf3csbg(U@L?AH~Hh8Fg#T3UaZ=*xrFZ4-?;R9J{A(K4>iKh(A18uf` z*xeBgRm3sgu0MKg0CbvGH#z0lODH0SD7hNM|H9@W6?^k^qj{s;T~=I$xBY2xRklUI zVvgpCa#vk(6?CAe%i|Ze%Ga56wzIZB;JO(GxxePK2^=u=uETg%`vaDnVI_K9YK)R) zZ(Zk%DX`iPO$9#~aSsc~cwrqz{Cf5r`ZnpZdNm@;QYiXSzRWz%l--ii*4yW zFYm+lkZ!_WBh17PF$+Plt+Fwb4&x(+QuB$qm zSo4W831)f004IJa`ZWhAMKp*y?ChZd*Z{cUgD~NXYM3#)gM=C`=6{e_*6lJ~ngdA} zy4YIaZ~wxstk|R7bu6`?3ssOASwIuA5^L{{qdt59i6Ig4nK!esF_dtJn=zC=983E= zUqe$k*!;_i8ZTcCl7AL7m(KCOw?jUB^~c)8)Uz7gNVt+s0*NQ7hc*2f3|#3SO=3VU zL?J1%$R!}-1-{%(d5yIJQ784dDf!C)RQ{}#L z)#E^7j$6~p#jpbR=;Y9hOHAzwy#d2aqIt}lSGlmvr*f+v%^f)dss5SH+@Y1hkvlT* zrit{>4rY8-ek_mhUk-!r<(| zj$j*Lax*$o;9SR!V2a?Z#g1V6@HptGfTPc&o8VIe!nHmJTTJ`NRde zPJUA{`RjclWCh%spXw1;zdvazZnzI*s2-O5OthPG|ug&)tBI)eFNH_1NN&nUcyIN?JVUk}lihX9Y+xBsaa|<|J zc|E@&G2BhHf|kSUpi;(}a4$-5q311DR&Z8|{&0_f#63 zJLt%R(}>P?a5m3Qs1gxBxVzcqD4A=7-OS(~aDR4)7U!odzJ5nI4J9d@Fl&{mOD4N)&QTN&Sqqs zyO4h|CMP0Gbks}#{AEIik76PBI<)JH@wOx0VZb^+w1>QHzjs(bf!sv-=ig-E!A}-j z`|R`R^BzL<^4SgFra5C-Bi4qe=exggj-*>9yitwhFZNvBnt#4p#bWDno_+7T0t+4b z?G7&AA?bN)jE#8mcLn=H!7t$JJAZgE&{Wy77j$f(0+8=~_!clqtgMHpW_5N}Z}vJs zvxX8~8u+{N;=r$|0A@qvZ75I-@Io|j^$&78Cq zqWX6oYKgsH`#09fq+j49z@h{Sm9fo~lDnaL$t5PmtWwGKqzzy~oGvw;PUeKY-^5^y zVm;q?w1a`q;!RG75<6paKLXbN5E91L&gFomhcfU5hcDP%sfC z$oZQspvRQKRP0c5123S6Q_Z>t8J?p2t-!wj8QlZ1yYM|g3?BaoZ_h-26z+f^a2-iW zb5uAY0e48I@S3!Iw=atU96r9x(ota-b5J-fzp05BEU<7?kYx_?r{(Wr4%)+@By*4_ zE&pL7&UCz!0IIm)earvQ2P63aQ(ojQ!}_NPtO*4@rD3;)Yr?LqAWVtSO-q)K&maXm z#~%AMt#22a~5>TmkbHz|Td@AJnc*rxK1m)GWe4bPA1 z-qoMIE2}TU6GC}n3xLVR@BzZjM36J5UY6H(e@RSjYVfX9=td< z8#Mu4my=TKV98*0)8n5pi2>xD8su<#0&5sFvWZTz zUH4`(12Mj@fQkm-;R;!(8KXRQ!apGeG9#>~iBw=$uc^<1UkV*nd}5Z+PP>t7WZCv8 zBk!piTlum1myXxzmTO%xHe{E>|GmC_>r&Q`lWFQh5@GxqmybTxim{)6jBD$5k#g~h zES9M29AUogykvln?_`u5u=d>AGimf-gbs%bRGWegh!q^Jh~}bcGA;{;YuTeL&N~?l zha2#w@XEUohs!2;4k;0btB%aOKp_s-UZx8rW7F_jCyhbgai^nHt;40>AdEj}em3!F8xTVYcbO z6_~bW7xJ%+RqCUT+>PdZp1nY?P$1>j=2LXNq@y^dw_`g(h3vaJ&d7&ytFQb^#&}6{ z)omg>>}={1+sq+PN(*^z-L(`e1=Y4islZFDv*{KhyZ#BmK;u2%GfSNahU#ZwAP|}6 zZu@Nh4#Dq+DFp zsgY}#t$DY#Cr=#5M)mo3aV(oBN>}vQQH+e8VIJ4F%c?-!WM1BA!-5k}#j!k9XJbxe ziPB|bPVA?6G%FJm>Fa_Q2f$%?Z5l)%i)8-1gkUX(Q`+|^Z(Tb11rO0P`s6{AhzLep zHi>IU3IDJt$XU~HxZoCsTzlEhC#0iLdCR&JeqD(YJPKhTk72L^!a(IOh?e~aAX)}7 zTEa0}^f6kpFk19547R|u<3SKD(0Cm6Ng!GpFq1pM2-95xLlc8-;P$(H@ z)z>-%ji-ULcI+AXoaKV9ZL;u{l7>D58efq%;j6||%x*``j!F3h14^`h-`H7z#2u|R zqnOmmFbPUa(j<-#@X4qgYy`7$-tS;GqtQfj70pvLAJB}US+xu%A4Fq`CJ@alH0@{> z^MjE?ql?A^O(K}7q*PucTOGN_K7PgW0dTRHvBH&dE74B$*h|&0({OL)ab20m%i6rt zG+eBn{bW4XdOrLc{;;cCx2GQqTJI?{i^pWv+w1MTqS{j@;wMD-;Og7;kY3hPPDhy~ z#E&aM`Pn(wxf{T?bv3q~%wXC1Em&~6LpEvtkW%_F2*)62V+a;FTC{fiiCs@f5*V$@ z*Nj^S3a&Toeqy)}mfdsqgNZ`3AC}ioTG8A*2xk2u2%ax%A$a&PDjwi7qz0cMmJmFT zo?7y+CtiJno&X&|sKf(+^J; zmsFYvV?h+qoZ%_5ra>Vz+&bDxY~3v#{JCer{Ef!&9GE$}V4~3M*8|gv=H_|WSZvS- zQ-H?k0+_i5V4k2kUygk{SljLNqk`DX%>_^<}TM z=k<`0Ta?TcKANY?!S!PWUJyR@eJ6J2lg!|P_c>4&w>w)t%*gYQ8Nd6!(^mkVURfU_ zuN|ilM@dxKNg+l2H|(VU(UZdrh4Mn+5oOk{8C6+;EY5(08%1*VNZEWWH~)}zKlVBv zzr;V>_63=mYHeF$J`}(nR(M?1J@X<|AC)wI1g3#_ea&)^ACB|Y*AZZDK#2Z4uqCZ_ z4-JO%N1CZY1o|~%k#(h<^LdV4%Ot;BYXDizO5->#J#YJ~vcPj=Dy!>m#bo5MtG)o< z>0XAdICLPGUrR#rl@+!Rf4zjFt0qDY7H$HpKBQ`o@Pjjm&Kf9K_@M-v1UOqEL8r0} zoN{z_f@8fDoWtOJ*RdXcABBEQkp(&%&vb1}C=RtGx^T>(4=9n>&TNOSJv~;Zj5A*z z#S(-y0YY7FAUX|gc?dFsl3ou9Bd1VluI$OF^RT7$+4FGt@n5@W#BgjmGZCF+Od*QS z4I#qq&Ja`$`87w!If@@ti-5?+3@IVjaO8C(>rd7&La5x(Q^2A^{<$H0S?Latzw6wq zNR*z&CZaQjX9^Gwa+ACHs(`!er!VyzQF|JgsXf*BcS#Yu&Rm5^CKj<9XeOR)Kav#XCl^Ax270sEGn*STJFrZ7!P0!+ z(F9YOzdueu9{pdmX3~YE>?v$_?1eI42u0bC+se1Ft+ZSQNm(hVJIytKr0fvnYVSgJ zcDG<2fY?ufvj?2Jr*7vd5eaGUYZi{*@W)E|t4uq}PZ+YpDqrNgnj=&p;2Y&HeivK! zL&r|ve{c_k2`FM&fF>lHQP||2q!;9&pjB%h`53b^pQ6-VKG3;1;&K$4XhTA>-ln+B zQ~RGP5HhdLxqs?*Q#d)wI{gV{baSNC(=6z2k{^KW2b~4&JI-wXYyu&Y~{fD|J(-Kg=%hM(E7o@Q!BrGkJ9K<#KXZ4yAPX*vq1pc z4PnO>fT&Ph2%`EzbN1}f<-WFRZ35@cQs2sRHCLmu7L@VcT|2yeeg9&Z=XFbQA!zCg z%{gES^VZ11ybmE&Y%6b-bb#Xi6>SjY-#jRHcw9JTy$V--lSH{_?bO?}=FozX!Zq(w za>~kT1`H30FWFnu&{l0LUja(u+7(Lqd-7L|%RB4PZudinrAV5@FZ^ABQI zS{;L)2nh2!679_Rqn+B5Av1;b@fz=Bp;@_+CCX#o@~{1zIbKORIwyk z^kdDurMhjX9bK_9e&t_N#mZBTjt>B4PaQ9?5fAutmn)q@E;)`n>+bBgkH_{>{!|Kh zEole;B<$3d{sHDZnq)MyH^C`*`a7HgquX$*l-|IpTBFB(?a^I01$PSJ6c}CTyz=KY zsp0MW+Zl3)wf=e!r_aNix}Z$;^%fZP;CEcHM#D>S;dD&w{q`&BJU06j7)|nujD!{< z6s&m}so1m?<%1V`kBuHobEb9N^;sR--xs3P<1E-~@tRGE`oT19SdP|o)4PU(NFkp4+c^5~R#tv?Qhy8G!_Yj9)WI#%ZMX6NAi=EJDBeU~rQcZz~5 z?_g(lQ7WI2Df`BkWjs$gR|TXfo4^j+q{H$VmG3Esh+34;P3x0=^X;g0!`&k}oYSf> z&{=qMK1ez>UbQ_i0cHU*X?%@dZ9ODzpt82klbxZ8N$;6)X03U5o+uOp@!88%yAMQK(xj0%hh-69XIB z%78Zjzya;xfD1v1#3n+o($w_vKgha9j~!OLu@@d^i%+5p#Jd`$vN!@8r#rh+G~qd* z@!$u*R-5esY_+c(JBd+o9HT-Jqaq5ULIa;5k~r-i{7%?vU-|PRM#UYBiaLynQH+W! z_yF0Jz}ZMiiBd^WuYK$wp9_qWNXmVSH&RkSO{m$HK0JLGLPA?>ovGtZQ2g>V_pdbr zMo!nt$;q-LOuEce>Qc$6)@%#pNF`*SyImfeAUmIKp)Wt_tn5}z-Yq6=gmKYBCZDPo z`UgV$PGu@)rdwkbD}yamrW1l|Shud2;U2XDW&dpFBHLi0N1X|H=cx zGGU`5+RgF8VkZXpkdXsuv!x4Ry~6D?dstTaz>1nCHRlWgcLp|ARa2ekB8tsd~L|) zcc}YF33b3@Bn}80A$_}HFi{;L+esnSt6yvbNJ8e9EkVFld6_g>mFL}+NxV6_A|G=C zpV{VIz+`^JSr(gNC$`}^qM?@ssE$3>ee*bV`to|=`-Tg`m0t8G1Vj`D#3Kv{2Mh=m z42VPw2yJ{!Y=UWv10f)uU_h)9fnT420nvv6!I}rZ{)R61Yh`lj4u}Chw$Qj6FXEgA zNaf9|@3KKlCYcA_WQpIFhAK@zeU_hi74@KmJyq5`uLDTllZE2qY=+;WA=p01Kj6e> zVukcDD<0{}1FNgDT+e?a?}ON%sYVu2rfOA3*Klo&@#!ie)CS_g55GMVxj(L4ULiu{5?`w&Y}> z_HCuS7UXAn`Xfyhbl-+vx5pduZL=HOq+uF!D|Gry~e(<52 zzx#ZEaNjW3DBY2CVu|1y1ba(OHFlG{8EX#-D4bz*` zuKvb}T_+09KNim9V#BiSDfjR3`X-eMKBw?E54R4V8)Q~(^Bo#=yky}(?+lw+gq~Wu z_~dbzRy08?y6-wqBrT<5)pj!_12QPkq|U&n=;=i$?4lNM3_G0_T2}4}V&4WpeozGK zY8(+hbn)ma-b31szV(wbBFmrvjrHrxP^8{G2b}BRTt&wNoDb;ufU{~Y6shk*k=hcS z`{2AnCls8;^T2rsjxIV;(Bdf(&;F<&SJ>;D&+?dguVSQ*q@m5LRB9jeS@@p~UK;6ZJrTys^J7)lElS1 z;6JYo0JfoA>>#tu@}hh${zAyVvz$=JANJHrVmTqPN~|seLH*%cgJ=n*9kUSJR!Zye7bTpho~b z%*%~B0gFHAp*WOYFaz7DNwxynzcCaZv z!-}m07>hIu9}5O6WQ$c~c+Op{Y$GeKDG!}0)02GO#T}4NfW`?gwR%RWk6xoj!LsS# zy|f*`)EM3)rLq-T)`GNe;^zHh&(`^IH4)qMf4F{AFQ@M6~~L~BTSs@3!Q08-^^tC9N&qUL%~j^Pfp&*&e% zgwPI60Oz=yZ%c1H`YbDCIU+MIG`^+1hWe0O#pKjOWat>=r|3Zi!-o~NInWM7m zM8j&PIK?WFucFS?w_85x-_givp4~Kl=g#sjW`F9#*l5UDXUmfE z?bBq{h(a=FAP_OE9IEOFV~i6$o)>@Wi~F zC%ut3x|@}J@d{26c)|bMS)5WI$I(*>Q_{Q0FNe26Znb+<^P&?>2@J~SEz*W5ElP2F zD8!UJa%m$mrCaloElv^0EQzB$=RI;7r%c7}nXbSO zvL=^iY*qT#DKL25N8#(<2;Su3J_u6W3}yD?kPo?22>Fme%!h1)e8>~bhs*^W?xTnB zx_^zY`*568{yR2>07zs}+9N{vkw5S1g3TmJU+d9mVM9Ym!4>f5`4YMuJyy3-;;hH{ z8Vlw@DUPZfvEf7oLt^CGKS zwi}lH0L9(Hu7pB8k�~R3;Cj2jg|{hp%wR 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 WyTm0t@bEFb@J|8mRCyl#?|%RZWmEhB literal 0 HcmV?d00001