From 843fa55f765cbff6d1ac57f70e3a50f2b56dadc1 Mon Sep 17 00:00:00 2001 From: sso9594 Date: Thu, 10 Oct 2024 18:09:51 +0900 Subject: [PATCH] week4: CAS and concurrent collection summary --- seungyong/11-CAS.md | 210 ++++++++++++++++++++++++++ seungyong/12-concurrent-collection.md | 119 +++++++++++++++ seungyong/resources/proxy.png | Bin 0 -> 58272 bytes 3 files changed, 329 insertions(+) create mode 100644 seungyong/11-CAS.md create mode 100644 seungyong/12-concurrent-collection.md create mode 100644 seungyong/resources/proxy.png diff --git a/seungyong/11-CAS.md b/seungyong/11-CAS.md new file mode 100644 index 0000000..8a7c4aa --- /dev/null +++ b/seungyong/11-CAS.md @@ -0,0 +1,210 @@ +# 섹션 11. CAS - 동기화와 원자적 연산 + +## 원자적 연산 + +### 원자적 연산 + +해당 연산이 더 이상 나눌 수 없는 단위로 수행된다는 것을 의미 → 실행 or 실행 되지 않음 + +> 즉, 멀티스레드 상황에서 다른 스레드의 간섭 없이 안전하게 처리되는 연산 +> + +원자적 연산이 아니지만 멀티스레드 상황에서 문제가 발생할 것 같은 경우, 앞서 배운 `synchronized` 블럭 or `Lock` 등을 사용해 임계 영역 설정 + +### Volatile + +volatile는 여러 CPU 사이에 발생하는 캐시 메모리와 메인 메모리의 동기화 문제를 해결한다. + +- 원자적 연산이 아니여서 발생하는 문제를 해결해주지 않음 + +### Synchronized + +synchronized를 사용하면 안전하게 임계영역을 설정하여 블록 안의 연산을 원자적 연산으로 처리한다. + +### AtomicInteger + +`Synchronized` 블럭 안에서 증가, 감소 연산을 하듯이 AtomicInteger를 사용하면 원자적인 Integer를 사용할 수 있다. + +> AtomicInteger, AtomicLong, AtomicBoolean과 같이 다양한 AtomicXxx 클래스 존재 +> + +### 성능 비교 + +**일반적인 Integer를 사용한 증가연산** + +- 가장 빠르다 +- CPU 캐시 적극 활용 +- 안전한 임계영역이 없고, volatile도 사용하지 않으므로 멀티스레드에서는 사용 불가 + +**Volatile를 사용한 증가연산** + +- CPU 캐시를 사용하지 않고 메인 메모리 사용 +- 임계 영역 사용 X → 멀티 스레드 환경에서 사용 불가 +- 단일 스레드에선 일반 Integer보다 느림 + +**synchronized를 사용한 증가연산** + +- `Synchronized` 를 사용하므로 멀티스레드 환경에서도 안전 +- 조금 느리다 + +**AtomicInteger** + +- 멀티스레드 상황에서 안전하게 사용 가능 +- synchronized, Lock 사용 보다 성능이 빠름 + +> 왜? +> + +AtomicInteger는 synchronized와 Lock을 사용하지 않고 원자적 연산을 수행 + +## CAS 연산 + +### Lock 기반 방식의 문제점 + +락은 특정 자원을 보호하기 위해 스레드가 해당 자원에 대한 접근 제한 + +- 락 획득과 반납의 과정 반복 → 오버헤드 + +### CAS(Compare-And-Swap, Compare-And-Set) + +- 락을 사용하지 않기 때문에 lock-free +- 락을 완전히 대체 X, 작은 단위의 일부 영역에 적용 + + + +위 메서드는 두가지 과정으로 나눌 수 있는데 + +- x001의 값 확인 +- 읽은 값이 0 이면 1로 변경 + +이 두 과정을 CPU가 원자적인 명령으로 만들기 위해 다른 스레드가 x001의 값을 변경하지 못하게 막음 + +## CAS 연산2 + +```java +private static int incrementAndGet(AtomicInteger atomicInteger) { + int getValue; + boolean result; + do { + getValue = atomicInteger.get(); + log("getValue: " + getValue); + result = atomicInteger.compareAndSet(getValue, getValue + 1); + log("result: " + result); + } while (!result); + return getValue + 1; + } +``` + +- 위 코드처럼 value값을 읽고, 읽은 value값이 메모리 value값과 같은지 확인을 한 후 값을 증가 +- 증가하는 로직인 CAS 연산이므로 멀티스레드 환경에서도 안전 + - CAS 성공 시 true 반환 후 do-while 탈출 + - CAS 실패 시 false 반환 후 do-while 재시작 + +## CAS 연산3 + +2개의 스레드로 CAS 연산2의 코드를 실행하면 + +```java + start value = 0 + 18:13:37.623 [ Thread-1] getValue: 0 + 18:13:37.623 [ Thread-0] getValue: 0 + 18:13:37.625 [ Thread-1] result: true + 18:13:37.625 [ Thread-0] result: false + 18:13:37.731 [ Thread-0] getValue: 1 + 18:13:37.731 [ Thread-0] result: true + AtomicInteger resultValue: 2 +``` + +- Thread-0의 첫번 째 시도는 실패를 하여 getValue의 값이 증가하지 않은 것을 볼 수 있다. + - Thread-1이 먼저 값을 올려 value의 값이 변경되었기 때문 + - false 반환 후 재시도 +- Thread-0의 두번 째 시도는 성공하여 getValue의 값이 증가 + +### CAS 문제점 + +충돌이 빈번하게 발생하는 환경에서는 성능에 문제가 발생 + +- 여러 스레드가 자주 동시에 동일한 변수의 값을 변경하려 하는 경우 + +### CAS와 Lock 방식 비교 + +| Lock | CAS | +| --- | --- | +| 비관적 접근법 | 낙관적 접근법 | +| 데이터에 접근하기 전 항상 락 획득 | 락 사용X 바로 데이터 접근 | +| 다른 스레드의 접근 제한 | 충돌 발생 시 재시도 | +| 다른 스레드가 방해할 것이다 가정 | 대부분은 충돌이 없을것이다 가정 | + +> 언제 CAS를 사용하는게 좋을 까? +> + +간단한 CPU 연산같이 빠르게 처리되면 충돌이 자주 발생하지 않으므로 빠른 처리가 가능한 연산 + +## CAS 락 구현 + +```java +public class SpinLock { + private final AtomicBoolean lock = new AtomicBoolean(false); + public void lock() { + log("락 획득 시도"); + while (!lock.compareAndSet(false, true)) { + // 락을 획득할 때 까지 스핀 대기(바쁜 대기) 한다. + log("락 획득 실패 - 스핀 대기"); + } + log("락 획득 완료"); + } + public void unlock() { + lock.set(false); + log("락 반납 완료"); + } +} +``` + +- CAS를 사용하지 않은 스핀락과 비교했을 때, 다음 두가지 연산이 원자적으로 묶여 임계영역이 뚫리는 일이 발생하지 않는다 + - 락 사용 여부 확인 + - 락의 값 변경 + +이런 방식의 락은 CPU가 `BLOCKED` 나 `WAITING` 으로 전이되지 않기 때문에 CPU 자원을 계속해서 사용하지만 그만큼 빠르게 락을 획득하고 실행할 수 있다. + +- 임계 영역을 필요로 하지만 연산이 매우 짧을 경우 사용 + +## 정리 + +**CAS** + +장점 + +- 낙관적 동기화: 락을 걸지 않고 안전하게 업데이트 + - 충돌이 자주 발생하지 않을 것을 가정, 충돌이 적은 환경에서 높은 성능 +- 락 프리(Lock-Free): 락 사용 X → 락 획득 대기시간이 적음, 스레드 블로킹 X → 병렬 처리 효율적 + +단점 + +- 충돌이 빈번한 경우: 계속해서 재시도 해야하며, CPU 자원 지속적 소모 → 오버헤드 발생 +- 스핀락과 유사한 오버헤드: 많은 충돌 시 많은 재시도 → 성능 저하 + +**동기화 락** + +장점 + +- 충돌 관리: 락 사용을 통해 하나의 스레드만 리소스 접근 → 충돌 X +- 안정성: 복잡한 상황에서도 락을 통해 일관성 있게 동작 +- 스레드 대기: 락을 대기하는 스레드는 CPU 사용 X + +단점 + +- 락 획득 대기시간: 스레드가 락 획득을 위해 대기 → 소모 시간 발생 +- 컨텍스트 스위칭 오버헤드: 락 획득 대기와 획득 시점에서 스레드의 상태가 변경 → 컨텍스트 스위칭 발생 + - 컨텍스트 스위칭으로 인한 오버헤드가 발생 \ No newline at end of file diff --git a/seungyong/12-concurrent-collection.md b/seungyong/12-concurrent-collection.md new file mode 100644 index 0000000..71c4d48 --- /dev/null +++ b/seungyong/12-concurrent-collection.md @@ -0,0 +1,119 @@ +# 섹션12. 동시성 컬렉션 + +## 동시성 컬렉션이 필요한 이유 + +스레드 세이프(Thread Safe): 여러 스레드가 동시에 접근해도 괜찮은 경우 + +java.util 패키지에 있는 컬렉션 프레임 워크는 스레드 세이프 할까? + +### java.util 패키지는 스레드 세이프 하지 않다. + +```java +public void add(Object e) { + elementData[size] = e; + sleep(100); // 멀티스레드 문제를 쉽게 확인하는 코드 + size++; +} +``` + +이 메서드는 원자적이지 않다. + +- 내부 배열에 데이터 추가 +- size도 함께 하나 증가 + - size 값 불러오기 + - +1 하기 + +따라서 원자적이지 않은 연산을 멀티스레드 환경에서 사용하려면 `synchronized` 혹은 `Lock` 을 통해 동기화 해야함 + +## 프록시 도입 + +### 프록시(Proxy): 대리자, 대신 처리해주는 자 + +![image.png](resources/proxy.png) + +- 프록시인 SyncProxyList는 원본인 BasicList와 똑같은 SimpleList 구현 + - 클라이언트는 원본 구현체든 proxy 구현체는 상관 X +- 클라이언트 입장에서는 프록시든 원본이든 똑같은 SimpleList 구현체 +- 프록시는 내부에 원본을 가지고 있음 + - 필요한 일을 처리 한 후, 원본을 호출하는 구조로 구현 가능 + - 여기서는 Synchronized 블럭을 감싸는 일을 함 +- 프록시가 동기화 적용 됐으므로, 원본 코드도 동기화 적용됨 + +### 프록시 패턴 + +객체지향 디자인 패턴 중 하나 + +> 어떤 객체에 대한 접근을 제어하기 위해 그 객체의 대리인 또는 인터페이스 역할을 하는 객체 제공 +> +- 접근 제어: 실제 객체에 대한 접근 제어 및 통제 +- 성능 향상: 실제 객체의 생성을 지연 or 캐싱하여 성능 최적화 +- 부가 기능 제공: 실제 객체에 추가적인 기능(로깅, 인증, 동기화 등)을 투명하게 제공 + +Ex) Spring AOP + +## 자바 동시성 컬렉션 - synchronized + +모든 자료구조에 `synchronized` 를 사용해 동기화 해두면 어떨까 싶지만 + +- 모든 동기화 방식은 성능과 트레이드 오프가 있다 + +결국 개발자가 정확히 필요성을 판단하고 필요한 경우에만 적용해야 한다. + +### Collections.synchronizedList(new ArrayList<>()); + +```java + public static List synchronizedList(List list) { + return new SynchronizedRandomAccessList<>(list); +} +``` + +SynchronizedRandomAccessList는 synchronized를 추가하는 프록시 역할 수행 + +- 클라이언트 → ArrayList +- 클라이언트 → SynchronizedRandomAccessList(프록시) → ArrayList + +### 단점 + +- 동기화 오버헤드 발생 + - 락을 사용하기 때문에 성능 저하가 발생할 수 밖에 없음 +- 전체 컬렉션에 대해 동기화 + - 잠금 경합이 증가하여 병렬 처리의 효율성 저하 + - 특정 스레드가 컬렉션을 사용하면 다른 스레드는 대기해야함 +- 정교한 동기화 불가능 + - 컬렉션 전체에 synchronized를 걸기 때문에 동기화에 대한 최적화 불가능 + +## 자바 동시성 컬렉션 - 동시성 컬렉션 + +동시성 컬렉션: thread-safe한 컬렉션, 매우 정교한 매커니즘으로 효율적으로 처리 + +### 동시성 컬렉션의 종류 + +- List + - CopyOnWriteArrayList → ArrayList의 대안 +- Set + - CopyOnWriteArraySet → HashSet의 대안 + - ConcurrentSkipListSet → TreeSet의 대안(정렬된 순서 유지, Comparator 사용 가능) +- Map + - ConcurrentHashMap → HashMap의 대안 + - ConcurrentSkipListMap → TreeMap의 대안(정렬된 순서 유지, Comparator 사용 가능) +- Queue + - ConcurrentLinkedQueue → 동시성 큐, 비 차단(non-blocking)큐 +- Deque + - ConcurrentLinkedDeque → 동시성 데크, 비 차단(non-blocking)큐 + +### 스레드를 차단하는 블로킹 큐 + +- BlockingQueue + - ArrayBlockingQueue + - 크기가 고정된 블로킹 큐 + - 공정(fair)모드 사용 가능, 사용 시 성능 저하 + - LinkedBlockingQueue + - 크기가 무한하거나 고정된 블로킹 큐 + - PriorityBlockingQueue + - 우선순위가 높은 요소를 먼저 처리하는 블로킹 큐 + - SynchronousQueue + - 데이터를 저장하지 않는 블로킹 큐, 생산자가 데이터 추가 시 소비할 때 까지 대기 + - 생산자 - 소비자 직접거래 + - DelayQueue + - 지연된 요소를 처리하는 블로킹 큐 + - 각 요소는 지정된 시간이 지난 후 소비 가능 \ No newline at end of file diff --git a/seungyong/resources/proxy.png b/seungyong/resources/proxy.png new file mode 100644 index 0000000000000000000000000000000000000000..226eea2a23e3e1846605aafd255ea428c4996c7a GIT binary patch literal 58272 zcmd3uWkXy^)39*{cXxMpcX#*T?(XjHF2OB8a81zQu7ThhJOm36An(cEyU%9-!TVtt zIHza2s;j!Xy3bX_sw&GM!Q;b&fq@~($x5n&fkBpnfkCi5ZLm3F}b3``VEPEt(M2mHLyyPs03?Y950Kq7;2o)I)xUU zs-;-g3J!vtZ#0rhM$dwZ8Bed2+_Z1|vg^l2X?InXb)|J>)z@5+t&Z;QJ&k28l|p_` zyZ+<(vR`k5#6>|Ma57S;h!9j%2=QWlP=ZGNX*KtMFPk7jly;rM{^uf=q$p=cSYj<41(eb_UtfI%k26~5+%NA0~(`w=oLP_+uM>mbt5iu!@_$AL zjD#2(!zJavXAn52gY|?e58)}sA>GlWz%yCszA@{#9!AwR@?V>% z5<`*dkA%2h#lu^9ywiDbLYXrpO`!xwl7U2r)b*TIt~Re1HZ;8$ zQXR>Rv}6D9mtr_5#cN!7-^nTONm+M_u=pMA^Y+-JYT7@nYl8t%6VTx>fp}QjMK*xd zOS-B8vzkn$W&`ZJe9F$bjZ%EklRx?q1+}7t#++wK)~yHT5uh8+ z!QvRex4x&!X#S79yP%B3bFbVZ@XCEj`C>yM*(I7B zG?+pr!M_1Bq5Pjor3B(#v&`-_;78mn>1wDp`8rh|wO&bFY4PWGF+mlacqtUGLFb*t z!Ee^Oci?;x!~ zuCPe>OGcfUJ^vYyQPgAj#fy{$2zI-N9=HYp>0N;pw+Y!lwIwA0S7go^tR+#JMBaW{ zS0)s558Ti(4s5$aXMq00=Rl#vQea&)0?(MekWnLFn5R9H)|t|6g}%UPI{eX069wGs zE)j!#G4i^-E$kxmh~M;cZcBT6DLT%-aY7V@Y{w75ar4xfWxCKZOHb60up_#=FpmD; zm=lUjYBBt=khYO-YV2Sq6y0%HkbucX$VhER| zF<^9I9S7Hj{V|$fBESsikIe)$apJO%)a4^)P3Docx2R(>>;7mIA*zGw66&<859XM9 z6qc$dc?PdLq50={7yoY1FfNC{=ryol80&`MKtM(HuTG&sqQy!On_(4Q(nC}e7tzEu z{C|2CDirE5zCWXOu|YYfPU(iYzW#rvBMKVrhO$oT@9+KDC{sJ}hmN#Rp@Y!fk#g=- z6HMiynK6F|{e&HA2Hh&qg^-%Rd|f6uN@OO3=NEv;W!8Zg|d+A=<|2?4ktok0?kA z1wU^<8+9aaF1D%mpRw|Uf?qPA4FT?y++l0M|Dg^l1gUEAmN+=)=R8S#gwwqL+>#=j z>;8RD2OmL-t7-x5Utb78rImLs(aK{;guavdkCYH-|GQ(al{O+Cs`Re>KLYB@6l>)P zcpR(3v$^c_uf&)BSN;ev5N?Nqnox&Up8beF)wEVJ=70Kx4;AmUe8<^QJwZ$KXRqL7 zCLr8t$M4LoSvC!lU8nK?QR70Q7^{*YZ@t$`?N3XhLMV~{)=z=6V_cmf?+-%)B9DcJ z=n0IWu~Nw@aOzlLtD|OS|Jguv60}N%rmk;;Crd^8rxjJ1p!Cy@v=QK!rT=3AMo_Dh zLy2!50|$cT2{e85A754*BO0%$!`Ts6DDH{=ueze!6mx>p7yidk|1LW~SE9Z^D!}Bt zUTyIo9hE3Z^VT^%;%NUAW=rX9`KX>I=;v`{B9po8U2)J;2%!~cW> zRh-ZxTc^!(tbg*4za{WM0FoLfviAXh_%$h1GwN~P=0=_PN#P$#0Yi994>7Ia?unqU zL!g|C0RBhU7Gzh2b=iJ2f6H1d1PXXO%q9tbX0uh{UbEPKOrkEkFRs&!6b+^*POa!$ zH*N!>UU4#-&(}h4r>?`SVQd438NRRQf`~b1YXLXY<3D03k{*`d2WfSHl}RW1oz-^; zKkS76*be?>{OjrS!+x^JH0PqC(B0DgkDl!pr%g;uK(){y2_To-);GMv`aSH=C=jqD z0ax`MTN6WAI)>nD7ud|dUVrp)G`}8~B|G)K+}k&F9rgaaoCLLxQ|CK$pHzxGj;pW_ z9%llIzeI)DIQ6x4p8hqGxZ(Xg+X3c;I6Ps?mA04S2u!zce?8OCR7Mkdtx6L(W^k|$ z6a_tm2z8mcr%P+yyTa8OTz82S}Ybm72NxHWZ?YqE=%98M$fvC zOYNU?*@iL4p$;hkzv?3cJjj`;;pwk9IYP>6 z_6YrOq9=PMNCYer`0&hP5m$*00mgddWFpZA~6-fx@5GYKXTdZOV9`ElaULgfcsk5?QT z;xI!WlL2|Ke|3}Q(i^Fe#Ls=NckdOS$3CiZ7WnMN2H&^5t?xdqMPT{h@?Kl+@G=nU zP2io@dnlUjjm>HbIa;zgY4^{1)^&1H=YZa+4?f4zJQ{&k`f-2M7= zW{~F$xC+}S;mtVB+v19wA(B^CYw1n+5i8|-iRyLWCO9nNTzwc;+It%(GFEytvXrEL zkzbFqLO(Xr6PJ#;gn##S`tE(u?YxY=Hy6Yx$#&omBd^k2zH7w>;&+tDD;)1XTu+<> zelstLky$RQ##ZEeg!jW%_ItnivYX(K4flI^sJzN9NEpOMNmAWvw9ge?P+qyWKsKWF z&f#T0IRrb?e(Ak&@QY^_C-C!5(LDIK0NDmkU9z0WV|Zido%=~+W7$StdcC6wCikZi z7|NZO-Df+WW<`DlZ1xwT^kWYIJ|x=<%*P_8xYH~$3iv4b_DwGX1=FKkYp=XXS2@xC zUo!&Vo+pi8)jK624@o>W>`(AZw)QJ(4Fn)80t|0U1?e*Q5^S7u4P-3O9HB1zeg%!> z9p5VIQblMv_dZgGn~cz6M1AA=0VwMK#kR`Gb6IN&?_*nPT>G)UeZ7=F+YQ+m%UAg$ zz@@KHfNd2K*Wg}Vmsd_oX@{Mwy0R#No zd*+^Vvl_?F-6;Qywrq1;c$ua=?{&wHY1Sdc*LF`>P98d;?-ppNodU_`AHI)B6wHd# z;`yY>QOo(=XC>P>Ik#oYuXBJ%#hR2vS=eyg-KmMlCfYu~IZGFkSl)iU=P8pUR!>3& zzlU1mDD>X)m6%QI*$e|m`UuQh_xra(8_k)I71?jD$(8s|$}gSfcMC#1bW2%(xc>~V zc&rk6sUd4(oBN&lGGelPyjA~XHCCOaXO+8Vm7fSz@?mO1)ozKYDBxPoD^bZuTKYWG zxqZ!wX{EHP?B=73$1L{hIZZJ?`+fpPbJmfDne8+_BCMMXs=cgMcNN?B!JqhynajS7 zbE)`|T;c8;Ko~Rq_3{Iy%w+X4LqmBj@W!uns^SfBGy>ncO`_ z^6Oz#f1cwxci7LKwvxHD3lFJQN4(e=w8?V!%i52qeFCYBEHJa;ebQKJNu6?}kuB zZaWHm-5_?0O2VaO648;tnZilRz7DYr2&QK?icg4}#0Cn2#Tyn-}L#3PZhL%>cs|rw-@(8ve{>w-&V^h7~HH zhaYDasrD16Rl7`C6Z6NsFi;pce^%4Z45_i4#4d(U6v(&i0*l%!DiBczAztx}LKvUPq# z5*-8^?mqF6?UhSsqsfG8sYBoAcY1^~u_M4tgX36&qEA9?WEPvmi1 zVL~72_fsP_vdq-tJ;T6;v4XMOEv?DadBbvn}hEv$2Xg6Et?Xd@H> zhk3||+jbo#8s${MZFf4cbus48l(8KgD9`8I+?gz)MrY)PhdrIw6(#Z-#?rAk?4P;z z|MqcIO$4#v@eLmz`OS!=J`9p$g{B9jo6I+CGmk|j9@9=%`NY8-8^Ybvc(TXRGLvx` zVfDUxipQ0}l-}&DBR7k|$y^N*A-u>Jo~Z^s{&Rhwu$rVyZGAW;z5R*fs@&A*rIfWI zSRxPAR>*WBVZZ$Ep^LYKXr^~k(PY>!*jlPPG8VUf{&HuuZzP+81<%q9r5(RLGDLEQB<|s z5}7LPg#T2dK?&Jm#hDW9%3?CpSDO^)WIbiRa(!z0UPVDc?y z{eI-F^FW|F(KxL`jGnA)@TO!)p|JDON8Z%&&+`Q~r2KP=;Htc)v?hc{nA8-k_VntN zf&oWsu&3lds;#?{n;(}A)K-mMSLZX!=GF;a!C#IOMM?;R= zuThdhd+*a$Aly{)6L45V5bLj*vy3}c$ZiclJZlD)^VOiW3NT|g~0B&)>4K^ zx<@3%Wsmrb8&VkEMeiRGRo&8d$J3CZ#`sWQHOU0W4#`|e)2vqz1E-KkkH<;n4-^9* zu;Gy8x;zpgM4eD$qT~_eLXC68+X-j~OQ~lCOFj&sANNC|v?@nd&(2nTmd~|}D#MQ) z&!VQ5(zcPeU_h5V>3A5k8^A#XjUOkrqd5!;st`iqqkr`ORDi5K!&u#kozwtLv3+MX58oHvTk5Xax9e%u}GgG!FiZ%_N2~B%*i{J$dd8J}JjpEDK2Wp89y4I_;=3!WtDhf3> z;WvG0DW?(dZdniAx`D8^#!Ro3i5BwJRAb71RhZ!ISOP`TBq;KEnTzNnVhKgY8%n9J zh}Mrx@q?$^OI?bT{Rc$0-_{;t#ui(4Xki9Lf)fZ?6(m*9kM_Uybnn_E(Q_1x*UJn% z4oZmRTwX(^#x`%lI1D7)W!l5sxs7$}TU1h4J zoeBIDnN#rNwmeL*HCHX}mQ8Yy3(FzD(%EWsujMc$7&w`(6Lk@(7WYiigS-&Huj|tq z9oC%qaceB2=^ob`MJ(b4Ka!8rZi%>0Se{%l@|~m76WB8?Y%nx*4z|nGMZ`Gk#hK?4 zXz5d8CMZ9&)QOLWQZzQ69@xyLj0NFnW_C`20*YKV%Hd((X+)XHPx=b9kICk;r85&D zi6Lv+5|wsUIO1c~HG@bIT~3fWsXSHsQYP|0a391_8hHEN2$-abQg$4yR(f|)Ou^)W zLn!CZ>?SGh3d8zfrM&V_A7WRe?7KbSNI@?J&pU>c>S0z|>_?iar6!VXSQ6665KJ(! zmiwMmWOEOrY_Zqni%|7FoxU^53C(~&!~f}eT!0or9Wwc( zQEkQ(hdUW>{8)}D7#D_`oy>6k>5|nM-G&p-iA7=C4UR8^UaTh#P8{??=z_yt|F`6yWjKiaG z-qe`HS?_iMW6-1|zXC1aXw};ekwLf@>S{rO?6OR`r zWw7aqeJicv^RP#nX z61myD)?`NEO|g8~{EMQ6wRIOGbl$R5WAQ=c_gl1sXruU3Fs}NL5WG9HI*3Ses`4*N zvprYm4%5yo=t(L2*RnKnA5pT97Fo3qqQKpCQ%=)z@PHfeJiMJBt*vRK=U zlT!Asm=Y9D*?AOgBT;Nxl^p^!Hv@5yHRD_XGqlVPl1O43@Q5~^dE<|^;fiuFhAwn_56SXZgR9r)YYr7@=+89vB= z*hUN4HB}5T#rHyxGs7ub{_stk;v!tF4Xf<&>sykBkvCo6uG5KNa#qExB;w>g(}1zS zkW0Jw%!Krn!c!v+!>X~haHUtfGrko=dyjwNj)zi8VdF%rBiegLn7u?=6GMX+)|Evk zD36lZep?bAlTol=n$q9uD7!aqq&KHZS*ERNCdE1bu3s^B55KE(9!|1e&hyQYnq8cT z2DIxuHfdms`EZ#|Zs=A!bZWDxi|_E1oo{L?-^M8M3(Kd%$0!Qd%kXf&P{@gzk**i4 z30!2BBH5^FQl&_w`bdTh-6$`rhHICA|p`{cI0o!|BCEisS$C)F+gpI?O z@c>f?!d>z4Og`f7{mi=*7x`PpdDh)JExF1!{J1IlU%$KUfq5;tJ`m_X| zqiSy#z-cIWmNA%d;xN6hv}M+ar78*pO=Zntr;+iu2{QRLQ`)daCQ0E;U*IlHRQI8Z zI`mhnx6>2UDo=SGCr4Sq!$-#^x>dp-upJ!UFdKq1$pzVLn_u_|#+D?Ho^9+V0 zkB=R4heGev&@;%OzHh@(%0(VU=9(U+5PyL+Rb-5rfXNGEUDR6}iYlo<$8K4OF;bBz zu8i7iH@0~@m5r8a*Ze`wZZHCRpGjne3AA(K#+rP!V}jdk?u3sPD?pTXEitVJU9w6< zzg}!D9&M_nTF05^iENC0DufwAVoWQ-jqSh?5=o^VKpAg?dDYI0&zLgEj34>qbdFDL zBxdW0g2dnbO999Xuh39x0^^eytQFq)jDIsWs&+2~ftMh><3KHL_c;N(P5k4!bQvjg z8;33@vm(x&whH}F=%<0LC(;76&J~98BW}!MzsV@9@Hgy~8Yl`L2Tvc&6k~3^z@ky; z@g@UwVOERdnDs^`7S$UvW!Ik1ylCO` zo-o|w;DKPucUJA73i*a>c1_JEq6a^3%u;0y#nJBvIgnz#x<@Yvt++iBR)(`(Vam zOsgb9Xk$J zP%dcI#M?hNeSlHDCFy3!r{v_1lv!WJHo4`ofm-L(+t}yHyymyk>4~TUoE}jkFvTvHQRy1flQAvSF%W1z0!-5 zMyIj2IrO}~`!d%TOgH3tS_$WT$+uCqmECJwmV**T;DM?z-UKypu>@;~!FbGt-D2}| zy_SSB=&`LZ^hdVMb3E$AM25xiWFM~zTkMi zg?n*RiSVTU$wYRxSKlFEPE;#w15P$&6*}?IAHDB-!bF>OwJM33^<9=tb&ZC z_2AvY6L6~2ZmZcyEKQ0T+V495YEh1SHZ)+6wMl)-5zKkIx<;83Z-6RpazFeDWo~py zgVZ#yZ38h9@rNvFO8u9s2~);<#jX`_jTmLGU2DPv8SN~rfZW1Zs=H;A*rr2by|ijrP5 zM%CwZo#v5P+Kpty+7Y#2k{D#sA0x}j8O5fDrW47CC2T&GFefYLQrHa|p0$5ORmbm> z@v%}<%$YW{uUZr&!iO%wM^|O9uq_Di2XpT%pVlT_LTI00fj>$PdO{+>#|)(%1>enR zeJ?Q~nCL`1N&h9=MA6nGww$}YYRwl`%F(%#4KZ zOC)Ms&xJueezSu(2B%__!t&4c~8q)%6tFgC5bk`1h+uWEG6h~>dX(5L*1ow-{T zOdds8o=LMP*(-x;DbtMbRe$2(MB%G9C_*pQPSx`@Ro(0w=iZ($*LH7 z{QMBgzQmy6Zrf4CG(Hw-g%s;A-MarR3bN4(NQwa@j4J<@!$aZMlkaO$`rwG=^SiP+ zt%1mZr35;uhf;%c5^y&@?+nX&lA<+!-{|dJVto|SL#GgJD)S7O!A_lY(oJt^(#YON zFS?Abruv#3HD=u29Emy2WDs91s3i*4u4&I0{)so%g49Y=eBs2v&BcuSJcM*FAR(E# z)&Y|=c?_8jokf}l3b#@8k~d_D{70C&f1Z~Mc!~K4oY_N1w6$!TFX%+vF4Jgiz*oSG zjfeMLyJU`YiWWxU3)d>{wNW{R5BUzFC!8wLJqKZt0CJf#lCeEp+fK zvbP|3%$Tezka}!7CX9KE+c6mvNT%xuD!RZJksr4nBlp&i(oPi_)6>$jzv1s%rAGwD z%GQmQ*|(#PjPj3St9Xq+haYN)-@vK_QI9&3$4OZSnA}X`Y$co`I^h{%x;9IB7&-c% zuNWWUYq#?S*F0wmgn%HBQIG5;LH@=;R`#}!<`W^G55%KGyyS)V5txCZ>D@%ZI9o> zA`sP~&Sj9o>kqnEW_y2$L^B;5Q^L#nx?1=3y}~pTVs09y;(TYZ?*e&7z!YC^MHc*v zkX{4>CwWZCn0-;X$tj8SXH>R@xv{q<2gD5P;5gCe%{}nn+frhty&l$ zGpzf{A}zA1;D5drFNvw3rol+bjLMf%HF(IaALm<$riV6Qu5(k87B!TtqPDYiB&j_Z zv6}vM;;NS9LcVRf;bf3b_2S&n$`}^zc9%; z%B~a8fY7&mM$&;O!u)!$V<9OSA-BnKWSc+`f)bG3Eaq<7P;LFNu@7g(%X@`v+AN-? zvq)cSe)@Qkw~!z$+>k`z7600e zz_{yGX}2NiI~H~ahK482?q%gxIi(C8ua2#(do+Ppk!j+f7g5eF5AP@cOXjhN$={fs zqRcV@LcK*v0rTnyfgK}sOd*|;>Cixu=b-TXi5+L0bFW@=$rg_Atq`UZVu0lE>S9PL z#s~yO<5(A&`R=2F5<-*XlpXhnTo8D~{Dx}R8i$f+a`ww za(|w0C#(}kd?*$k9`10@0dFt&+FsWW>&rz*TmKfh6aqW&IR4XEJoxmTgy5wfw+wNf zy(KrBNDEN}@mi+6@(s2xpPP*?bYRpQ{E2tn>f4&`r~zh-p1NXW$5PywS#Pl=_iW-< zWp6>tLzSNHZO68G2m%L!5+0Obg#D+@lg#cP-L4~7z;E0~ zE_5via@M%)XyFOi)qG?*;wE45$PXqcfkrx&Li#uO16Ng?%}sCZ|{m= zn@9S@o#U(RVqxTPwmuW2-6 z#7A-AdE;#y1u4s}_!y_?hk~P!${s-$KWOKhQ<;U^?l>Mb^_pZ^3?n^3F42S7ofO9( zV~fP51T~bxT&zW^LK++Iv5K=q-Z)L&Beo0Uc@HOheV ztK)-`T%6ffHJMrnL?H|^@7HqN7+rz~w1a1~9$fW>4d$@-b&;aZr2UkpZjy`~q%0?i z;ySGvv^vGFlUW@IO?9QHVjk$I)`PC`=)ZI@2k*7x>rp>hDsNULX)$E>Sa zTO&{j=ERI3Fyh_3wo>DF*W2LsaCXdpX{Kj8-tPzajiA<+F6R2f#t@Mz?1H8SMwo4TK?ONqsajjn^87aed(c{($>ZQtdO*^iP7PqCeCo1*eP`uUYlGw_LL)(ecprTG+Kut_YfNp6af^ebz(>p#2Gmbovgbv{ukH_5yT$?E zhXMRf`1N6*<-^sWfn(b;3IGmRz`=E$ROasm??&QmxlJ<73f@fJ0>lnLg*pOQ%3dsu za#VIQ>ahgCh5c-t*ZLcUr6q#EG4ep0$}|hS8i19ELTtJg0tg2jLze*nNb5byvzMk4 zemX9j{yHy1!Zm9D{^R|e1d376i`f|1C9rPCH{W4ttQL*79etfzl`rYczr&++^@Z>(}egO$}tSITVm=-a1Ns-QN_lXbqYV zpg>8L_NRC6d!MXDe&%*LckaUQGF)OP^X>xABd_>TM>aOJe-n?&!jA`nK{wMpqlE5= z9(XlZz;pjtc&MT>ndB|^Ss^9m^Z7$mh`_Lr@~*&zx!TJA`EdqL=x>Y;^Kw+=^?TDO z@fjh`+hqU&>)7-f`rgs^f)x8+3yj}?Sxaa44Zu{+2>*20?-WepnBm3I;S&TKk>f_C3=F2%kNR0Y5N;U z#J+?Tc?k9W4Zj`rH$WgG=S~a%JRiSmnPQLk9V}9_?Y|lXi2bp!MThbJYcz;uY0-rZ zyN>sEG*GXw;Ozn`g5N(mc5HIfkS9jX=GKM50hH$sFks(X%*MO>9*^=}Ruou1X6Voo zxa2V6!DvClG_9*?kx-`UuS%A5)evODGH;=>#b*hzXUOK+UgwPTPI-+l@ zJSB&+Bkv!`07fdc^H(*oV;aDOpXS*n6flM* zbm_lecm8HmY>4pV1pop~(6u!hj7&nI1x1hhv2%p*gNGf$Y#Ak~hXf}8+QR(uThNc5 z%SXVa_q<@v0RS}Aj)K(Iscl`S4Fkd)_2K9CFDF8r9{{-WGvBHE1mFevE?O70bxk8D znR^&x)yj5?G&c0{1=M>oJO7ckhFx=+4wYw*(N; zBte~8kJ$iliJ>AGYQ&mA;}V59D;5s3>G|1+k$25#cOHpO*XQRX8@mJDPSpNyI+eHg z`C7r>@?dr26-SNvv)t7f`HGNhj;t;x&nL;tAW>0ygqOLAk7_ar0&dEsf|f4;{W*PP zqFEG6omc(UX}%mgsBGa4Fi+1Kdh{!ZeRjYF76a$RU^fA5_|2m95JsxR9>Ak?RE0po ztpE^&_cYh%4X<^_n$sv#ldee7NVHX#A*7O`MuXEB)X#SC)D}m})u{Qr5;~AxE?98?gfdAe*H8Fu{ z)8oiJPi^?kV9KLUCHJu^xgC8`Xgf$#DDqg46D%#=@jCH!;1tY`=N~n)t;o#za6+uO zP6@qsxJNas21KB@pmQMKETJ=u60Y0gAB9c_ysN11vypeOCz>< z@u<{0*hL;h6_q9N$LW^u(8T=uo*XP1i(4#{fE#-3+B{DEF4I9dSh1{1AFDsF`{H<6 zDSF!5s*HA3kz*S3G2_?#)Qmfh%|ZZmQNf_qt9fqd`ssp=Px&A=8nTkzkrhu?EcUX* zkrCP(?+%*=2{M_tq@;NUr%_g(Gu0iy@>%JY(SS*0`|j{;l++H30uS9$XGs)p z)@63?8zByfv={d|D`adKei{mOh<>}Loh8mANAPOBcxv$d{?0%++4h?0V2A3~s>26bFjI zh3Up`lISG<(WJP)jd755)9o*OI#*X&bego4FyfW%I5L2UsUMCyhqSE#zyP^lg&&0g z_Ygcnake!JD>BXzo;K}7BIISg%{BntqCot-=y>aDID#iFBJdiyf{oLb6W|R1OrD&$ zF%O6UufE-lB0&!OdCuB}#JjPZ8X88?BVaRq_WmGU1z9WTB{P4r5Saddrx<{qt(kne z@oL}Ev1ewU)ma--r|p1=gyBTZ(gQ#z5m6VAhgKdhNjX)Yd zd>Q0h%#$vZ1yqal@u{iVWo!=UC%sxEUax90 zEmN(&bnkw@T1o-(1T1MVe|DSc(s(SVc8kwAMvn<-?0DImX$1t-2`JBLbYn6gO#)y| zWp8IW7y@ap!ADE3-0#rpc5Y@dTC-Euc0h%zb?va?A&^*n1c~r=LxqM{AHF4?WAo$y z(So}_lU!TF5R!(Cag`Wm;9;01+|48RWJc8g0#L$Fr8y`~In}B}Vyg0CvT`-h^+U;E zt5asds4wsu&TX`X&++0nK$!#7T7?=a&i9rLwdtv8c#_R8$#FAba?(1|B|?9jHDs z7+GNpCG^6UAmFs5wV^$jtn3<3@iL~$Hn(&b(j($i8~ARzK^VRFU{r=hA{@Y*ro#h; z&=i#{-d8;Htm?3{qNHd%08JrfaLmOWIEFk7R|ji?06~Jn0TAirC7*7efLfWcU3$(c z)7de#0#a`M8S%jurExy{^x$;T%*cl*ezFzCTUwJ{H}=^KNV|<-t7HR*rpTW>_(d^5 zVoK=F2l6Ms6m3ZN2;YbGchUiGb3Vk9%o{{cO>Xmubyf;~H%^s$3srB#G zF&X7$)NG`m|M_14{}j^ww$fJ7PS|Xe&l~ALr;m5q4~ePhC?jxzeG&^ot}fsxP-EQR zeI@(hlw6yPeGGZ5Wm_8L)vJlj)ySq8PNG_Kg&1w@C1mc1-lbB=NOOL66RVuObLgb7 zglwg=!&B}9);|!6lmb=*1&Ndlw_arXQ!&QiqoDF9J?2&VJ!(pic(wbGlLZ&Bn7J=o zrA19Zk{5S36aqqW*_f3Ryc=@g|S$f*04|tX+enbZZ8YS4G z!T;>SJ-~nnfE==6fz3QUoTQa52Q|;@aDda~<^pfm$m-;c({U z%msE@!e(mwdkk+plc{-fogF)514SMSGcw`quWuJoUIjqEelRaeEk867^#MGs23@&q^GJ1E3U9>$nMwF5sk~~B6L@wTU*3^vDz~RNg zsBBE==MIR{^V@%_4~vz6HMbpZ6(Y?u>T7MO63v7j^M20!?*;KaUD!7Bu!en zd#Byt=QL9js~B-Ui>!diC-8ES>*)PGNTYas2)C1}&QjWopaSzGK1KwOH;MaSD7^R! zouVv7b8{#{Oa`@x#_CVN)~Ffr;Z-UIL*(py#j4Zod!we~ynmzRo;;MmNp;V#Cg??q0y8fO? z@krpz!`~%&6Oxx{G^AVz-WiUY6K0#x?vQuhT~Wrc;tJ{9)DSFWpdJ-^zqu@Jc*YtwhT8x&xvZ6>IDWy!+$KwTNRrUO%IH<{6AYyq$_y+qei?1W5)DI!ThVz>sQha`^_ zqI>0bRP0eyhtJdV6<<6h=>ILBonrz{lX@ZpUIJdCptntBexyQ5r)ZLwh2||ng}SRU z(mw-K|3F?&E;1=v1|F~02wQ+;%c`k~M!x%Z<^icTu(#Q7{9?;~Xm1#KZ)P$KNCO)i zHzw<@l)${;%@iBS&IxL*5Vm|W=pM(=GFvMr#25JUY}b(S%d{O_!%rbhJqN}~*}p5N z;+x(f=+zs1XQa)4|Cv0moBd@pV-kjyJoCBUf< zRj^y*!kir)Oi`oM4vvING8jzNR2Z&&)A5m+Xn%cjDnbH=-U(2aDVSdWll2p`IH<|(L0 z@a`sB5JE`G6FkZer=+AlUiJ>yGe|td z(Y>bJ{Xd?rIxNcV>jDlqG(&fHgLDqvN;gP1NFyi;C>_!%NH<7#cS<)XASERzASmE> z=HC1J{=AR(;XU)7^X|RRT5GSp*XuN2s--MBbA;_0?k_*VY>|m%=NSHLlW<@CZHCpp}YT2PmFW<6|EdvhDM zsY!J!-cPJ|ZnXIL9JI2@N9JGsxyBY6)c&X#-T%!9kpeX#D2kRh(Paa?l3Htcu~Dtr zmpGIn)8%3BUg%fWjUF~AdjV$pt*#W60uuI8qPuDNq)N-YGlN)E1phzy^DPg`&{Mv_ z2&Ko|YtoQ|*D~d+e@pZ3W~lTn$yX!3lYVNy-qw@L%LPgvVn|`)|JwaE@lf!{OI_ui zmDiTBUYpg}lSS+Y`WlKHp{^82`9_-TrYD&|JNxhQ6EBAo?8 z@w+UkLT&Y5oJI+H@9ps1Rg()<@5?j1iAroC*VFXA&Rl&@$JV!Fnby5+q{uj7ff zz8Gxe4vwuVQ)`>IX`+r)JGezt$<2TUa=M;)t>~rI_lJ+1Sr5IY?olf88-2KmFpkTd zMPvdN90QUV%5g=QQN@m5To5DMyux26j&P@89)!}o8t;7Udn3j;dD8Dz$&ML3gjchY zEFzV+Z6~|?@x(o&y;h#6Eebj z3ejX0{FyG%TQ~)bH{|Ge(N5}xqymNh)f?35$IE>XX%4uj*8e1I;{ zQerC@SkO&lplqeB$=Nh3WQsrLh-a%tAo+4ViV%Vh8JT6Q-S7gJU0weG5@crOYX9b{ zCr8inROP-eR%|dmWV$k!nUGTVSoeKUeZc@Z@Kk?zwHuZ!jGD@@2him_ci0|DiZxS{O?Sw}xn4wIU|%DpJBf-YaFJ>@f-S#P>x1qnm!Eu3{= zL1L9|I%U#OQkuo}j)BIhVOK7WgU+qsfbHcLbQ=9n__wG%;?J*>bMX!YP!jMAemay; z+F#Ins_~V`zA}O*^foQl$WSeQ#$^hXLs6ZrA zJu^nTrumxT=CdSpJr3h*f2TX6s-}~h)eH1FqREq+oN|ndM<|){e_Aiq4E>0WnHN*k zmyCxmJqA70md*4ETk%q0KJ6KC>``^#F& zPu#^+n@+QghS})7;yik3I?VvcfQQ-_`8yN%2NBD*!03?IdD|_4YYzj8w!O7+EW>28CBv0X`8 zmYw)0X7W8G$*0Q1LqbOMe|4u=)xS$QJ!fcoSa z$EdGx^_02U3f76+M#_ut^l(1~skbpnxHU`Ny=_&~KCO+|I70fo4Vf>i-D&|*PKt8X zIP1k;uZTaX_r;9|<~_^NddXP}t362HEaQx3zH&V%^enWvPuiKD5DCGA;xMWG6) z9HJ;!dFOny!4;Ejv}udP8)gxS;&PN~n7m5C!NX&ksfm7<7=%;Z`eIL>O}=aFA(^ZS zjk%>z>=9vleZ+74_xZ#Yzd_xF0k-|$6R18Z2l}%Pm%S#XcQVDhEL}ox_|1I$(0ryr z&&LfcXrr(B`t+LUGIoC|JATJ`%j3ERuV~Y9{Y!MFnBt8I?z1?4ch#|>jqys3mzbqk zMNvVs)}kCr;IeG1QW6qPb-C5hLOArrv|)NGKB+w{|NO=EX+C%# z|JTQRM@56ZJY=~XQvO{cL(J}rFBenLw2N1uq`TX1oQ~EVpElf0QfJnwW&Pw@Kvxoy zg43ru84E14rP#EIuIct(zf@gFs*=#a1${<`v;MHNn}Wq1%b4lmz!wu)0S5hAf*+Ih z9&yI0JSlrj;%q~o(Uxyo(3f0arA`k~a-)kUK+dXwnsQxD_5XbR!R4dp3}2CVtn=DZy@V}XlKc4LKZb&+s09_hZnRr+n=E{Hf_R+zMIE5 zIq96=I(Zq~6=C~TM2@jhgKF;NfjhAwnPzF_q*JxyzFxtYkdm*V6)2{(Jy*xcqkX@* z(@`;rzJ;@+R83_sHXq@r?wo!o$JQy^b=;U6#-O~_Cb&rSK7Uc@LQbY_qLfnxowhW# zOf7R1I$5!@l=sR~?8=0FdvZ(be;e!MP#=oB;+idyU)lcWz{?4rpx~M+z4M0yr-&-y zGPEtd+L~U83~v+D$@{e7-KXwe8!i`G_I|51DQ(DO?%$J!EIKY6{&k8cKW9d!rCch~ z>VEBi@|%ZFFb~D@qEg9V&KxNDU2*dJvQjg29|tIXw*ooZ2^ERkFXkrrgnsC>C6r1`HpZ7L*_^`^1xcq1H6Nd}!ZpxAgZs$7*~z?CX5&`fmpf{mLh^r<$y?^Z@|z}dt_ZJ1ao zUH3>Q4bwJDyv4e*FSF&rBL_o2K-AzPOX2-yyuYwtFPm>7d014uln;khC7nA4t}D~i z+&I`oAkA36gvghS+YgGP3QbxW{YnL`lT`{_+4CL`45K#4F~%zs=;Y;2 z8Br#=J|})_IAF+JqYu)H&XI8q9H=zTRx|xDUsge<6^m|WJTG>36C*Xf9?~*ETH#=; zL~E^C_bk}W=t|5c_2ZzUh-%h+-vgxkraX^+Yg=&vew(jz`_C{l0*!}j2EVJ#t}kZg z{$aD3pwDmGc$QPkR8z)*e;#mTqyDo>EfNcvf^A}h-jN%16OriV4d z@RSTW+hheHjFv_0o5f}wjxP`MPdaY26$GzRBdQqS^v9){XJJMfKaGy!*+ZeoN7Wa6 z-xr82)R+E#ne==4oTBPizW2oebh*ajb%DnlB_*P8CC7OgQyMbP=zOSm0h88s9i7D; z`|tPT`Xg<-2?EXB@=O@;XZ4n>hrSmIuR1Fh_30zTO$a|U_qoV*t;G!rWRQ>I&0$-n zwL3zzhnW-^@eAK&FsOEvN=C7+xJmjNhSr|8%uwQxlV$c-_0?WCXv}_zn)N@rHsm8! z$z1yjn{@3&U(J#|B$Q1R5S7+iyUPDkHt)DwC`3)zD*>w}{l!%-BK2V=G?PLkiam1n zn-=7tHu-&=4bDeY$+6$;IKR}zRP%qPaTr~blx$4{MzxuvY>!DcCe*eBk0ZDt3^6yVt=~Gb}>uTIe zgLpM=az**~kx%3*M;zR?j+(1;u?edtdP9>l_zSC(R5~J`tQillHbfqT&MQYILy(WK zfaZE;n}vB}J@KN5Z!U~$(&Mcyf1a|Ojxwp)X^vb_Qxku?O(=KoyJ3`@>Z%wn%%kU- zQvuZ#-o-r^lKlBe>HUw2FpZuz@{Qg76p1)6WqTp+3FJUk(~v-eE}VPAqth2M-xne`NQYy!~%< zmQ?>cGALf}<3=5KBfoKLPH>Y|9lx;{A4LlSEBl7BRw6Ndbx)#zc)nNDo?ITxtia!SmNBT zR=DtSSsFTKO;e$2#A21v8hlQYg5%nk>C88O@gD&9*(g!DuzmaNux{^y&nIwmDp9eZ zAdSZ$M@Fkp#y)s0rcDqS8FA|(^_A!J_~zpSK|SJZ`5?y$JO2BCuEm4{ER74+Cyf0v zb=LKPr5fMtZ8n~LbdWEfcuFHY(fjm;-qDK^$MwZ@#jsaLLMdgy1V|}sR*~R*H7>+_ za3b+1aidGZcU8KNQIbp*k89L_t1G*rW7pSyX1dAO77OXYs$-3~R(DQ+otj=I>qtQyT7Wqy zL6ggT>W`Y=hu;X+Z;W$?WkX*IuM=8jAIo9r&5lf4pR5iKQkA?rsxHS2?t%x6M$(`d zlj2Gry7ZZO<1fE#$lxS`S{XgJ6Ok4b)Mr6euy$bYB{`puQBTk6tuVh9#Roy{Q2Z{K>kSG8CQ$Q~t5Rr=3~rnOW=Y zH*raD|0q;~~-=y&E%BKQ#s3vlFuVox6t5IXL6+8OwfRYYEz8G_~Kn4i1LO zee@ry5$181%$h*J_X{@C?UgJ`LXMq&)bZ-yfc zw0NM+5(5aS*)!nz2u+3tyL64u5a_&``5Tq zK+rusb6qyK86nZDy3%$Gg@@yfY_?0m==JgitlFrY@NF3&L!XB#V+nmAbn!IER5Ii5 zQe-iLU&$kNjq}t^ZNhuJZJj4(;^m+KL4RuROUq+R2MM4;R`Gh#iK_RCZkiOO(N{v} zE@@vk-Krp7qR%^lS5O}(^nW&%({>=ltYOt8lAsLIA?59m6s6hZ6VsCMN0lo5j|~Ef zB7x@BlZsV6U^n>KaB1~i{c=e(Mb(EEKoJNlHhZw^S4M9t+B##9)CE)&2jxv1XG?Md zoPgYIoU3^qIL#$VBMhAOQ%&5ATxtjR-g|wTHw4bLjBMRktIi0+F<^*BW0DT^3kSde zClI&^;EEmO0(BCPV7|n^fL1OXEcIU<9oVM0!?u9bYs$qu8l_Pv!53nKT0pFNJxNUd81ASRq{q&cYKVv;i`;?+) zfX5b)?YSLN0*kFBgltE0rK}`pbwhJY{IsQ?2I$cK5jy$;RlypLZVEz+CK-ezu%veL zVcoO- z2Q?DLft<4y&n^S@DBwXb;^mo7-wOB*M8K$z#(BEEg=bfQzULD)f;$&nGM#(c`W5K@ zF4qJQHh{oFW%B7L-T(j4OcRkpRZXDI`V8MhDEdO;$OXqXR&dA4S&rjkAh2ow+c!!>uTo}3kofcraJF}i2uPX+A^#v))JL&tDv}N>) zKl7g8|9*6j5n0*#z5TmX8aB#Z+0k0<9kzucYr0b|0~PqsoZx!s%p(~W9!f{$r% zyKEj|oQMq(;U;!kvBR4yl>(y4kUu>}lYu~Ll3`txqK}XlNy5vmfp9MyZ0X4YFc!40 zPZioOcD;kNt4e{A&BT0~EX=0CHM@|6~v8L8wD(m=z7> zKIr<{$V?oEdN5?7g40%{W6dN9J2PDT zN24I%OvuGhX#StT)(e;@PVTZZFtfO{dVRYEibA{h9z%dbhd7^%JWuQfJ9!Nd>TEzH zL0eayDm>s6#xdx5dvF6z@I%_-;L3(G0_mP(Y(ELv_&+)e-~E;mK#P)yG)xEN8^ZXI z{}(t!AEfhT|I;`=hWt+6^Bf5{+w5HfB0=B?=?xq*_8{XSKy#%5v~#@qU+O=JjZdNr zCWoK^77BP;J7Csid;VJfqVq&@;Xo`&@C1BAzcj0a7%PEjG{DK<@E1PE?L@yJ2s)I1 zB;*^qMZodQnfG?`cWanYygCHla+ug6^B6p@|F;*xnL|_*szuEx|F{)`Plg+qZ5t2f zczqHr$*?2;q}d-PT9PPsx9mM$875@@+%>RDU>9h6;a<=l&KtWYfNY8{Oq>T2+E;+p zrYD$GPURxu^v(7dB73aY>Xvqi&=}FEdKmz97As8Z3~0f|E|WERm)+V=h=E9#mpF&m z8R&Z%B-|QY$oM?VZ}49gXV`7ilB<&oH<1GZmYWhJ9K>?rKr%=&sX*)92YlPWmaFKT zK^*{X_7q3;4JX78&>i*+KfrsSk8+jo0=|p#FE@i9PW!rFd;|hE;C`86u)ZZa%9zyB zjrha}LqG{)_^rmWKe4P==GU?{u2iRS1O7I z3(U%Tf6E;7Q{zadHd047182yVP|FLE?;SrU0)cG#6!;QauDkr2dUf@vp!J=^4`pBF z&VMD@!HO_&|HEwD0NUYjEHZqnx78=W_0b)OTElb7-0T=0=bdAe;Wy8=BhxDL&fkFe zEDlsc_8GRR^DRI_A`1+`<73=_iC~1XB=;(+GF+7V3g{+L7ec%5PM!f5Mv3==m!9Du zgz|2;q~f6e@G}0k-*e0*CqLjJ>8IbCr`Uy=DE9yp=yQH&I#*{r<&HM4G2;p*53^@P z#8e-c1%wocFxupfyB4vJkxBJM*P2er#9Ai*0Kcmti7NyzwS9$gPW(c((g#?6 zKK&USzO~COigG9G1-q>=8V!B_nL5HZMIr5Of|AZyc?S1&l-TiMQ3l zo3q-#SIym2BJP_JFotvzqfB6En&pOy)oD0S7jujsWJdMG9%wq`F=t8XcI2VRh6hYgTGkH@Kit<-jxYYPJ27*;<= z*g>@KHcmiXz*|ZZXLO+8-v$c371rU#Fq@N+w4i0X&dbH0#er8V_9~0r7{AiwK(b-R zgBOm)Si$JZj@v|r6--EKqe}c|Rakl>?`9}pHFzTgr3cYSVVJb(3!4SvCk+H48N3od zQzgTQad|uIK=_hLc>N>k0~WbJ#L;9tc6%JpmK=u#o|Ujl*j*~f)57Y~@7h~yS)Yty zFhI(~k!JOE7We;6;2}`k*su81o|J>K55`2f*Erwv|3adR?E=!qIPp`F*Gx*Iuu`c> z1sAUYm{R)YF!_T?(YEg&UtLxZui1fYXusP8#Azhw5hB(&&BP=R!p|7ts`uD2NRPBV65dl&Km+xP>@ z`8Qx-9c&DJ>*p4J^~5Pu`0xMM z4LD(;nA|NrFLNJap;C%oA{}4RF8>$?-(uE6rSzDV9fbX{*9@x#3(P3)1BLaK)nHgq zNxc5n@i<^SNy@K)UiA*@DT~@A%dbr@oBI(DsLMLEZLcnFEc)9J%8B@q>4(B!Xu}uQ z2{s;h{VXcb`+hG1ym}oM^Yd`s!k|eH+vDU5QP06Qk}m@rv>I!ev)+5xHw&!yw=Lu0 zAADCG?+wSduqa|9j4gK%vGZ+^iA=Aw^yFniu;J5JH$^3*ed%}fFHC_G8=03#^VesS zy>WQr5~nK9_lZu~l+a9>)tW(;O*)ecbQtTXEeO-S&LN1IEqtK;z zDX_~*hoV>9s{WXjMP$R&bCfCLgJ%w=V`&-fbj|*BpTtcjXL+7Cp&_WOgHP0iLl6>CEEIF< zRna@5YrN&ekjUzqJ`BR1kOWkTHQUZ*gUBW+(DGnH+-Z*Ho1|~-$i!LO@=kpE!JcWh zq?M#!f&%fm0m5N9J{HL@As{Herp>6pN-KlxabwJBvDz0PZ|E* z9oyH)51?pb`T9+Qd=YEKLg}EK#uY#2O{2?e{5o8{mRyiX1cZP=m?WkvNRez8gmh74 zpX-dhAa8$KzQ^3UdiW?YNV<>cQxqLK4iQqz4DBTQnwL~ciiht+-f?XvJFX3 z!-4`l)wY3X@^p?4vUJQ_V+f&Qzqjc> zzwx6AW}h>CUh*~ixerJ}=fl1tyfB*2mBiWlj!JQ=I#6BG;4^o7U5(_B_c{5go8b%4 zuw^2gv5Pm8YVT09yk#R`AHZbd}2HlEgSHEiHWZSK-pPz0A5op|>~@pus{Y z#>&mRXnGa*?xb3tFe0y`^sEg7Vp-$j@Ln7XwBq2QG~)HNJ-ue{M&giY*{iL2Z&6kY zSFj=~et&2;Jao4*<a0Hp*Zh^ab@*2tpIO?D*% z2;Dv$CHl1TwWj_YD1-ihFc+arht|EBS#0avTSFBlB6Pv``jo3*BIN0;bIzF-!L}8v zJ1C?s+9!{>UW*P7iIF+CF5VElW{e3aP}LBmwud#^#R3y3`5%II z7A`~b@vVM8q*~8<)|HVF6G)-o1cCFBgg#`fJ5!5U&41fNcF0Qq?pU|Zc~m#N7}94f z1+l#UASm_|yc&f-}yxHem;oAR8Mt3J^P$vN?d88eHJJK)pd_6M z3Sn_HVd7&FLkr}r1(C}>4K?LJvD9{ce3S*bpjMWti$}n#x)mAnfbLy!cBl>4;nGj~ zIy3)c9^AxriT6}4AXV=33k@L)$+dFE(lAq5dvsR@ks2Xq zfO_oZ{h#k9HDS+D)ZEa}+f@>ZS{&RUK4sJuWeq`C3$YIQ%DmvV=8feofZ7^7UDw}2 zDlF>5>5Lcv0!N1h2^TQeu6vFft;7oy*wV$B^rdPi1fT}T*W`O7C*>*b`J5C#m5xaL zV)`Zzd}Lnk_(3Pd=E2pt<3<{pHXx|vC4vQj}3s=Eq}l37_h4o`8)F>g+8i1d(( z{=2cr=1M?$sS2__?Y4pI8q3h7x&Lm8@@v}mQr2#(LLuD>Y;1NM5%~qGT%1Mj94dd#%RK3YjRPL z4%TkPn`LHnjFh=9ki3`poG^{U;LK*~t)cv|SYsJ1toD}D>G_)pphKZ#N;!8})gY#I z)Z=ByH}@e8#+Y3PcVai-!5hXfthA12Hyp1pIyLEwKpPOVd4}us75{%NK}ZspBMk4} z+J^1@th9)*YrSIXsH9`(tz&oK>kuLw_H@Lwt7$!+M(0@6)%3#s>ZwP-jI!|@<>TfG zkm=*l+q?@cq0sfnAj~mjZwTDv?Zs-Y$0R)UIe&(xxe=%*ld1OC*O}p1X=i?wt%huf z=JiWy+)peRC)~Uq|33^QcLxer^jond5mtgb!nWxr2MYzl^8MutEP#_~Y2%s-xD$ji z9YL-4hO;BC*k?Ux_-&M{e)0lz0x69-AVf;Zt7D=0C87e{2qnyr#I7m&)gY`TezA=)@YHs8__GsF#ozosOg9+w?qvClxQ5io4DYf zgG9fjtFw~RB`T|c>ah-e|3gAw(=j;5zWGt|L)#Sje^2UL_y^jaSaf}zV?_iUMQ1B- z5X@jjhXaBBV|btZa3cH##B9$=igy#>94w$4;-q=4z&=WSNu>HA!<@3+aiU$Hd-`!< z(qqqhbjFc|b^jfmJT&)0sV$@N86OC{ve(RTwnYefTU;ek(08Tg+>}BtfR)lBKm`Y3 zl!y$|U8Ifm>0B1yf%p_f)Xj3){l*U2Up**2;(R8AXo{`G*&Co1oQX}$uXp|k8UZ$V zv5f22JE(qdz5){_HoH#IT{mwtq*r5c-Ref~7{UqMq@#&Zr>)8GN@*tt+d{s$YkbGm z*!4m47#O|f?gG5`_$AAY+O4Jb=1HI^(RCrhu}JL75_?v zbN(fh1lkB_tAxR_^L;D=Pv&Id3&|B|}^)o^} zErRTql!YR?Etc9AN%yrvdh&XaY;K4E$qVyWmo!oP!1&xV9A-Ziird4V4VsP`KOOPj z|8I^`TWHS!!INY0Yk<8?fgxRQTk}8&c8+99?QtzK1}!$Af%XQZ(lu&WC8B*0w5>WB z?)?D`Vjvn1_mN1eM|xntt+!uhR~i%A@Ycb6-HS@{HZuxxfBSRF-{*VhFGOMHmYc@l zu(MtF`RA0hbXyV1#?!9nV;5)FO|Eh zrun9C5?c=j>)z~fgFX|gabvRojbJg;=3g2jF7;2e?-57vg;Y*CG=3 zn6AnSCX3%e1s3bcd;0q-$Q-StC)?r3W*=dQg6lDNLI?f^ld7RwIyh&oq*kEQ_LsFi zo@sr54QQ{+oP0Qz)Uk+MfCt8LTy?k~1N@BcSLcs04n#kZ(@s=tjXm>k-l%_Hby~Eq z8C9y<2zh5|+vVPtoviSB^kJYsVW`Q+Ozr=Tcmt*8#MCd{g8256rZoT&*oV)iQzmq@ z9RMs-|#(bzCx0O54rSKcU~Fe zevbpqtz>f8_YnxhQ}9oh{EmLKW>R|JcK|AY4#x2?II1Hzp7qJfC{q?@wd^$V1>IuT z$k$sk=P?|ca?XEGB7pEA$QQ(JT{m`1DmB`*wTR9(%TK;NLCEHxfVDg2P3gGz`Th>s z_Htn$_wj2F{t2FMjf8lOnRsbjrl&dX6qY$sWqCZc0AGAW)y`69=(79cfTH_;jFQxe zmZ!Nhh-FT!Lsa+kAOU9k^;`R6Knfe8LD(IHNeqotLCbJiv9A|EG;4$V9?RQrDiST@ zy3iZ!F&wLRjVb&uT&Um$b@OA&8DY>?shi;U6kiz_k!A~gY~3RlIRKbj*xPH+0r}No6(BhyGhU@a`!ib4ct<@*F@+5t zgMSx#8+m)@0icGj_!w@DyiS;EIWBdhtmw?-&^K;;0t}<&l5Lc`GP#)oX;XG!h(fRtd#Psf=J}zgJW?<-*DlJ{77ao&{`;Zfc6XkIA&qjRt=V6WOk)YXpfl@ zG|ky-tJ`XlqGc5Kh*^RTa1lRQFZ$Ck)%$yaV1G!~4^fN$r*^&|MmaEsw`efNz|)jG z);~M-j?J3-a+ublF-%pit*5$X8AIPNbN-l~Y`jQd^^$7P@MkmnH#GjYau*1@npc^S zfmyw^)#ZLEvoJ=}yKj9S0FRcPTcuO-o;?XUcDcCJ|8IBx4QLur-3*|Y7$o$~oUM@? zW$qYiGlT=c?6FH+OQ_TFp@MJ=VOF;Gzjg?Sas{k+L@{?vfP~6d{i0Rq_n+_G-2j%f z+GV6jVE*jMoXkkQ_OYu z5NdL1?V6g5vQ#ADZ(A~dLFc=RAI|!6V;GcZ5bd<)~~_P90GmVwCggEJUeeFDnC!AY|%Xf zSU8oaCu8wg->aTjXGR=r9LZfks^#Lsf)e*SI?D{*e<(Yx46+O96fq+kV3Vkr z+}&aC=%Yi^J+&^CXaaX0&PY-HVZiDTV(e|i+fiQwJ(I6M#hmo`pO!?#+DZ9spbY)s zT;VTJ(ae!4@3w1M{5OpfegxHBpOxhbDhAb-TeRWxtx#vw(j#d=a8UcqYqfo9=GMdj z>?j`cL8X_GO>K(?J?7o+upKN}SZ{kR+^}rypOszFO+TGAaMEi zH<+g20)l@uXC0Ir2a~G-&vziRW_el_8EAi@pq&nBPJs?t((Hg!TD~JW^?^O}Zs@V` z7CPDkA$-%l!%~-j{Epq$e!%{{01$LDJ#}?T=q-Zj(}K``1c|(y&+NX>;pE{_>@_#t)&Mus>CEr) z<$oShM>owQ;8#0HOab8Hv6eFInu}RA8jk^3b#RZ20C&J9k4yRk`%jT7TcFU7sm5eR zI_$VjZw8<~dEbFsgl_yU8^VFWU_lVQnvJ)|Ij`fB-|)x_nt%wT=OKyLZm)fb7L37f z?t_(zOx}Ugqb4b+ktb#&Y*|BKMjk*^Cx9kX-rqTZuVxV#gQV;LJW254 z>N-IILTOgdO7rdxTzkADd=l1aaX%@megtRmfCduNkzc*3zI2GQBG~18PYr+B{Q7s8 z6PS+(H-VM@fC;#Th=6%H!hlkZ|4Q#}2HKixsD!KrBEZy0cIjd4tY8Ahb#569UgMZ# zkKD;GvM*;=LJfZ|N+Nj9+$mVlx6A-;!c=6)iYpZQ?56e=fS&VBLyVMLc)EFO))6ld z080eHAodPaBOu+SL=Q0bV>4oTjN{`=z*Tx2@dya8z*l;G0hbDP@&Yh&hW6P$HRH~~ zTGpG?o8ZLUgBI7RxN5{T7&Ht+-RSCWi^g283lo>(zZ;Lle^=aTd7Z1H@z1?ul1@`2 z6EiLJtEY9wn~-X*fnR`++j9D%!je6IXX2Op7in1X?qY6c1^ZbU$^1Gy_C0&2LAXe8b&#?xj^4eGWk?$U-i|DtHP5=;aIqj!zm!XCr@y};1GUJ z%^`*IHZZA45L;soHi{Tvrx*|DABwC=vvlD~k`#18ipQ$SJ%Gc zMy34P4O#$d&mJxeQP4Dv#EeQwF^m!hZd$l<#Z ziAyd3m9sXL2;M@K%`a&O>^3fi5Y}MWaRd-}{l*KHVr=<5rf8UD(Uux=UCqFzWPmrq z+-T02wE1Hxpz;r>GghPE3J%=bYXGiYN@xRqKyBk5RiKlub!Wrx%L)EEqEii!AoZBc z9i<5Mic;Dw zeH{LL0iFYSa860T zUwrpEk$%2G?0Os(y7*#T)pdi6oe| z?v~47QBgcEeXsGP>S!goV?zMp8M0T+y|4}{jz4`QU7FHaUoD750p)-gmWCJk1ka18 ze^!lWgA$!967du(gPlPe^j|-cji4{ayy<8Jsny;k-%zxPIYD0aGjyrNwrFE;6g|q( z6}GLdYkEX<7?R8|?Up${Oe?FPN~aY^?L95CTa>-M25#s?f#`k*^!sB8PuO4W@0pJt?Y;)x&-r zXj)0!ldU|5=fF3qkkSrZb)eJaMAWMF<`0{>2SjA+fW6BAa2aV?wu)ZJ3e|apq9NA< z@jD<7_MdkyH(^!D`Hs)28>oLyOuuL|)m2Em^=3)2GrWD2sm?{wLLOqQ?)60cM1UwK z$$s*CHINICFCF9nq>xSs!;F(m7a|@5AI7s7!nS4H&40mPCDffHRD%%`=g`P2gB|;D;j~fCqHdOE>Zx+) zQfv+Gbb}HG0>6OdNO02CPQ$1i2IK9eg7v6hB!63UF3%cOmR9f|^z$cjyGOI%=6RRD z%;yFP8T`?lb|VADyR_04KRtB+?JAR7CGaZ>Od|oH`vY67CCy|{AA^3G{pxi+eIrz@ zo5zrR&m@Etp&j^<2%5S?+e6A3EJ94EDuQME#Ob&-)$ypq%iMS@2mH`!$D*+$V5r(e zF=NJ`%}H_gX`nxwdCHjXN|`^3g}qs=ZHtA^m09v!fH~aDpmJvZ3@)jAM<2UieT0Zn2F~tVeeT zK=Bww`qF=-_84AcFrM#!RB@$~x)MNL$@JI8EqEXgtRr;;8ExScy2jRyos1@ ziEGG;2HP|87RJdHe~9EOsa zOQr!+RRogS`-_{mYv6_-8Re($FKWcVs}D&p*Ki+>a<|-On+s*v_?4KEJQ&s1+m|3Q z;zmeU>Exxn`%~V@pah6iiWlKbD+Uef4UKT-i{n3R?kAatChcq!IOB zr?AnuWIs$9jtp!A^$@}_&4jT-K@dfKpRL!nDQwO=sJNlpuJ`5r?ae%@1b!Eo!!<_# ze8sN#e_jB@=g;9pz1M2>Gt`o&XOZ2|cW-*wPNG|`g}2ay6BsGA@b0kCbryWCOQ9M0 zgC>6kQ4}rsp$&<9Rw>c`Zb%mqN)lH5$_we^+G<>l;J1DTe05=2$b5QN5yp~7SDgMk+co!Q4OJ_vHiw=UvvhH4h7 zjt`!sk}qj$?#`LBwJpR*jK!~PqnJZmJX>RD_}#rhux`Yj$~a8epTEA5P_ z?+w80J_nI99iUOTOw+f>>6VK6MTKV74NN*zafG6tN`U;3{c(GbgtxQ=>Y%tO+cd6FG{vdZlC~3$cP4N`i`g1DL=?I;NH+&%?~E`)`ID}=Yap;N;#fmsg22;3gh~-0aVIgdNoazvt34KJ6LsTpKbE$HsJpXZwbWz2 zc!N`F&9_s;$tCu8zsVkAhY{Q~yPi?bNU{ix!3A&Y-0~|2*%}yCBEY31Q?1yf2{Xo1e_H+XujFBn>u_2g5;# zoi}WOld8JAebb@Y86O>97S}~3U(t6P@b^hkk>}R6roGmC@hq4(w<^)Xg|2{0VK2S- zg#$F`rBgoAz3boH9*5^5SIMvl9;pL4ES=P$6$)gAX)TDlm$-3lEF1ALhLLv2;1nNO zmQe9DHa=s&n+&zD^DTw09PuC&%tV{kg^1Nqf{5?*)v49Ax0+RcdYx6HhGVWW%13-# zL4mo2$itVH!2!i^d;>FHU<$|rL9#Kw}c8dzfX0+tY~ zfdj>_g@lCRB@}}h?rQG7u?j)Vu`aI97C_u~wU{L0%zULjGDByd__ zHH;TAs~c0{>i5eDwd~g3E`rxe4zp-{(p|wP!(t05js~yZ``qs|Ns+dNu(f!ABg`jj z?Qt9befHCw%{K1)*x0|qB*ETTj@8L2Oa*h3S;8N!L(5GA9txnuD)y|dD;iAAhhh?k zl4ih6$7G#(h76Q~UD0kvxDORRLPxD7e_tQ=u`NZz1qxf z2bd_3Xh)N=Zb05?%M@xFZw}3bdN$=@!8Lr&pkC{a3-Uz=t`uW7WU=riya*iSFUQ8c zra3E$w3*&(`y_MgD{g~-xdR*alBEZ;9KL*h_*eL`&YutV&APD*%{mph_7dbM8`Jnj zq|-Ft3ME|kA&z;+Ikpgo3Bv9NCo2MesafZ5ilLe&v=L}jhVu17jjpoe5fxs1f0B6T z<0=##mS?mfVvpX~o&92Kz@oihF^7oFsc3kutwF<+JK|Rp_0LM&u`(J87T&_=wPN@a z3Y|-s9kM4bV9FF%7e!?%D8wJ6LiGt!9}hw2BZC~>vK@qks?rTGT=7Y>Vd4TUu_><= zAsjZ%T7F=vf?aDTpflsw;tTPRV&{--kC*hhjW3$WZZDP>O$uL`-ncnyV3Fn(LH z!L3q3!z*ib%qcONubHECH6|FmQ`(&XC?~*JU z!Cx0Plnt;NBAI<#E!A&rGC0PoZJfSb(6{W(sfEQk5ss(x6&4*RJ+XUJAD$$|4rcI2 z2aAZLrt5#sJKKU5+v2|uF4}&wxjU+9vK_+yglD&H|5MbNm>~yVggM@17ZHj93BQ;p zA)eo51dbzwJTz!ow$zNAX$`M0eGdoO_)q?{p}%&Wxcw)}sD#>Uo1mdb-dtKEAa7mU zyi!cRuCUx-6bVHgc#cuV)muuql{%!lkt41naO@_I;{7mcS}%}Al01}~!PU;e^+lD@ zJ(+y&qipX_2-%)@FFax9-Q|0!9pBHeV67guPH;_H$M?b$8{Crb=aZ_O#> zzQ~>z@N468a%z?eV)_$WOCJoK(tndS;9x zlW#sQRJo9H*J#J++1R_E9t@7TWRlQ_wybiJ3R->o(9R)@ZRoAMV?pbSUsdQt&xo`LoO=1O zV&SEpD{<+eKIEAwidw3NCuw;UF$|A^%VM5}&Mpc{gH7_}1S)e(LA|pGO3b*XNgVpa zM%$XWbK`;Ltsj1d9qBxB3iDf5Z4TM;v}kyWDMp(u^Rxx5OhwHBJI6LJPR;Z3^U#nF z48MUCqo3DE#PY<~=+J+p8v9EgK1T6)n{VlIoDHP-4boS%3fmuX8+qTLeCMVGHH4IP z;^!0Dc`#BW+Sx? z8!Y53=SGNjAnK;WJicyq{v-4q+e~rfc#{vIqi$a1yt?v2W)6>I4HG>fR+!K}5{+gF z_un`FY{xhR=#5l=Ry(f#5Rtd6f>`ChcLdbDek<#)H3_u+SVA zV=IxT4AUgYu3=Z$D_cn3hN=%U+`~`YxtePoj6;3XziRVzX;#L@*0b?Ha{qHxTc#V9 zELXde9)bh3XhszcLafj4rG+8gjHN%xm?1*M|&iVYx>9qGfqk*k4YNf*-uL?(_X{;_D;a z;XMOgkaSGNCV4J@uI{A-nVzAMrv+QZ7Qjm5{MEuGaU&v+nq&U)OHGJFyk#}spUXFj z-)*jwzXkZLjEQ!$>ck3V2QlQ&*ya25W9Bekp`~iaU>SJcXYO1pi@(Pc)OwI=%{b zd5dS)#t^h$DhNisX65zwDt*uxt!}modoxpuCL1)!@(zp0;q3#3XFe7*GR{7if@aS} zxbLD^AVe(AZR@T{xbFpx$ak6+%$0Uh@??)c`4#GZ{Tq$+lLsRFDtEw@ zp*NNuOR~l=>*y1&BIH0TuQ?*H4dGH9lQHQ&+ed~q+v){orp>T~!_{R4Bho1rz5GG3#zi zj6-c3sfpX;W$5h(-AJ`0FB+PBjR6cgrj}D+ihICH+aodFukhg(8-9@J`aL}vwT@an zFv3`9k_tsYi4T+-a2sJo;YaTjm-L-Oqgz=9o_(`(n5!|E!tOoj7CGoX?bE0zD;|}z z-x;l6bCA|Z^40Wb&2&7?%?01Zfe6aCm!p)TU|^NAuekYc5<9gHPE~Yw0$o+bNn5@O zoq^zoO^z~8VXMqbeFb;4z8U5GY)ySi$H?|2CbnEhH{(HHP&1x&Lkn$4KK>t5ZygY2 z)NXy#-Q6i&L#K3icMKgOEsb<{cXuf%p&;EIN~yGfh_rx+-=60=?|06>z%X;iT=(AB z^;>J@G0*yak&KZGn;b*(6FG`WMBb1`@+}F*(7kAj)A%+eb<^=a8LjFjrN&S}`R_14 zdtW1_=G2RV#*MCFu=?Ue;5Dh4DksB!PVJC>`HKpHx4h;whpwaOjb@!FT*0o40@C8( z;4)Dw=Xe$#-dm=BbE*3R{>xizf&z{&kW8cD?3kF|(+Ac0le3CT8NO?HQ^V}4&H7a1 z`(zg>lOIiEq{WzP#r~{(v{#@|H81FJKGU8M&A`u7 zL3%igs@Y>hb5_o_Ww!pIT+UCWELF`mlf}<&@uGaj?4JMvScoT4hT}V*4Uch^E(;?l zmg%4&*`ueENshQjT$~G2C1ZY9uR#YZb6)r#cFEG1cwysJ z`pjrbyfuI6Ft{|88ae z`{xj6u-a!y?!Myx-`9g}CLCC-6T+>V{P!RJ=k)_<>J;FUt1zBD{%33Q|K1LK2In&* zX;@N2lAKms9^gp8-0Bwgo!9pbb9`9Iatd=uh=p zAt%5Y>0ef@ggszH^4g5&zM>@&g17dp_|fs7trK`B0U*|Tx+?v4HzxdS8o;1C9&g*G z*g2Y75JpJHLA&9hisiZUT#+b-LoB|NAUK-lHwl_pLv3W z*n?@y+csd9zJA$ZtB$q>W@(t5(5pq>@;}fv6u+cxF=ucbG1A*$PWop6Rk8(ijYEH! zeWPILtz1cgul&F<)y1P&laaA`0^$X z{9}MYq|&sZ=aICJJGi0UKrKh+_JPxG zL+h(^TvDPkv!cWvfM;?N?*TXf@yX!q&%D6$9rQ8VPDIWJ5D%P{)bQ`-V`-v30tC+x zOjxLR0v8i4ZyJnR-#spuJ|X>l4}cZ@4wxA^Pw4%$)O9)TOE6}L10x;B(U`}y}?gWJ^cWES;D-aJg}w%uK~2|8uRmrJ}aEJJQqVUok?NbCp0*~;NR zpCfIS!p~vuycI;Qq*bHk)#Y2&JJi6W?9wsv;QhD1Z(eJD^?W$4oi7$AUA;8>_F&jL z+&i+pViBMVW-;q0pydW;J$={JJkc(>sBfNbL90A*fRn3X+-pJxR0V1x-dJITW|?hp zcsApqmB~Uj-|{sk_0M2_^79}d;V{`fcn|mv=Jpr#{^4>Dz)aXA;C+2JOj}`X3dV<$ zz=9nGlM{XG#HjZao!a-CH#-=d{7JNW+{G5&!qbGL=mzo8pf)V4>Yd&KBeVHwY1>UO zFP2TGb%*H_rNG^GpO$$c3MfnlMz@3kH~(vOfN{*h8n8>pYTm;!2?O%$pm(OAr9>nb zTr86`H`+^mg^nWpi3~_jB@5l_(v)U~7G(w$G2KuU%U+;8f*bB(eg5^>VgeAGu~-TD zb8Tp!VeJyz3DZJPBO2wg>S-vs})zPjkSz>x{6Pm`&!CYbiHu@X1Xrpe>uBezy#h>-m&lp zeyYEGfNp*B-0%M1&v7PF+-h;gk+lx~BsogRxrvfhGu2A`BqIV9PX^!HpK-wn>Gl1z z73dznVWYyKp8|>;sbW=6?`XBE*lA$v zz+RbgQX?5Ru8j90d?`Ru^3r&Xtq%)RpnXvN&p(ITHEmo&7?%*#;!m;A%7UhwM zxIaZ7Va+|6On9(EYU#fNXwk^4jlraRIw0LLS2vupJ@{tx<`GZ;_HmlGyX zaY{`f8D|E!w+}DA7tfYv=(f0iGK;I(5)@nGF5~%kT`N`HY5Na5|Mek%>12VBMV03{ z<_ma|b5_0MKd|%7ijWqq$p+omV`4ii@ITipcylQ#-O)hp0kpSRvztc^?N zgy()~SN_)rbkv}~XvoAvG}FYbP47Ldo_&s^mm>Y5rti|`t{FU(!==ZTaQ-00eEt+Z zTz`@VCaoaD;rzqnQI+sl|2=G>wQcHO{z`b_L=syLQtn?rs6)|c>z`l5Yn{Fq%#Rnj zDV;f@M|8YwSn!*Q>$}@1YEDxxY9P;8MewfTRP=61$Y(KOu5Pu zRxSe>*jEhiwqWwYU$zCCk78|6icmNtOOSd}`C-Id*Hdw#KEx$ zPVd@7IwGII#&pQo7ibhml*8`T2gxpAqEuHo^7WlhNymXqN~860Dn>CcSRK0Gmh^Z7 z07ve{&^x+$koghh4>3DY6{Rw!iH*!JBu~K}5rE5Wz4Fk4{ASWo48f07$&H5p6YpBc zE+IyY7is0SrchEJd5%i$vjCDpdceS``l-I~n3hm_jf;?eh2FCKz3NZuVM6$|w9#b! zsu`sQX+G%z$E?2TaMn@qtS_Cy&8?;pOtdYZKqhsDd%u|&rr+-4(i~oYA$y|oP3zYu zgZg8qU^{r(A`|Mx5J(8yRxCYt$oU@azit9_)IF5h66$y*sfR_pvlH4XX!mx5jC1j_ z9V4kwu&!1h6P9>zcR6Q>U>fCSyzqw|?11jIu!_$Rp$g8jT1-c68{1?i?l0uckg6Q~ zBp!C9n!Xkace$?!N zzM0aWO6Ll%G2+DC&p~vdbi+u|%)O_{!IRW}dFn>&r9Cd46=8taRqYi($Zpm#m#3`j zamI%E^E0ar7W=#5RLXE!%WU^Iaf9#+vIOY!l?Szna+B)6t?!lQ*+1m()K#YFDpPsv z!qz7p_bcrSvln`OmiBSpzMpum zTN&%Hy#dznCjWlxPVLVBJ#cQTZ*JE_s)0X!0~QakKet*uweUyS@&wWP==W4l?M^?JLb;& ziA^8PApr#6ysux8MOZ&9v*D?Re@%=#)t9ARzV?i?RwjNLm~IG@Tfflz5v$%bRJvvY z%gvC_9O+tS7%0n%*whVJ8Yw-GVi}odm3^2xyJgT0S(Np2u*l^#*iB>jBemg;iduk8 z(yA@|E_E$#VE+*CSNoL&x{eqe54OD+2M}}m?}m3C=k<`=N{{xg%EIT}3}Oe}V9UX@ zDN?6H{<}jWhP+n5NKMt3h0i4GQ6815v>6_I3`y3;DhplfSEDZ8sA??Hr`!HKt%;Q% z#${jkiweM#V^#)^Q9sL@)Z7Ceqes6h;gW#TPy-QdX1x-x5Rp8fT@9_`y0~gs$%;5; zkzA~B&Nm%r!)hn3G@;v#I>cqFHa~$#(m-~ap9)WvnPtwrQqf*$R46xy37GOjJ>|GZ0#c9hZXdg%7Z-#IckgbZYgE0xec!{vt->p^{a@S ziG0zHNNbMY1d0Gn3oe`rLGb=JtIZeHB1E9~S(R0C1lYr}9*MrecY;T7oskLIt}pUh zSV-MEm+~dHl|MvM$*MZfxqKUZz`@Q!M0ipoL!O+{zXx}fNswO8n^J|vOYB*j-DW#Y za}@?+w!)hgo4nGI%n&5+;x|B+xJRgVVTO7&o+J}74i@EFK$Mb=N>M)oIY>w7f~dLS zZnJZ*u>>fPIqU*ux6;l!|L6m`g4bPHO7!v2AzS~-*RrTV#FknXTV<2@33@e|;GsK% zQeIoZ45Jt}o3G{f24px&Y)e_4GDS<#0%2cX%G3Q65B56;6}EQXCKjd^U;eUC=)$IU ztZm(9IHF3gstVT})U$%?%khehJ@g?RZs(0jr%FIYihc4F@U)}il;JgvK23OD>+ade z=!9NdGG|7z$@!5udceGDmIAju;aVD@aSLtOA;r$Hi6GVxIY|~H2A=oDc2*lA5hA8t zu12<{kuhsvLXz@_uNyj~VE_G!{@BMwG0Y7&XuF=t0*hhYei>q+R`63bDp`V+4U4DP zVr@h2x3r8MWXi9Z?;v99=tse+vJK6^d2?X;Mh08LFzfMRm$nBEIMqX(cGCJdxgS6Z znbI!=Y>jMMa{A@cC3Jh&yCp~-R?YX`ghXtndZiEg@^+TFbCk5oaKBd) zFw)o(mw2j7#iBInp8SaaBA$N&g9)30Inj6O{(X&FEoR$WUjgxuDLKRrx%$^F6 z2Qh0}JHIcaMkfycg;UX9+wAobz7X9<*jL#Y1Ew-)Yb~#hrI&04TZnlD^O@J$-`J_C z_}-ywJt&N^JRYNQ8k!I;9r7>k#MLE~f2o&pyAeFrG;uA}skOIUsnPy*rMi zJwIi9Xt#S9nt_IC^mx2?V*Xe)%olZO(V-tHU7sF1D}eP(wZESpoA=mGgtyY|kWnNc z{ZtPh6xsx7(X}f4Z91F+1sXO?OeQENG*j%#iAtYH=8dtCUK#(HMmY9H3gX%deQL9dvoE5O&PpdmWIh^vw|wqZ8}k9| zs$(BLAz|9VXTO%6a{4=i=s+(FHDWqERw*o6JoQXYgV2Va(tTO$1H1HVuT>5zW2N$| zX^CUzAPVDQo0D~NVN+oT%y-AuG)n`-IXH;g)F08jkv;ipiu9e8`i`Pd_g)#dJ2%9Q zY14dW0*4cC+mXH^XdEV zT2u<$N)%nh`ZE`GTB{ppt^7v z$XtA^0?ukM(#oklN?I;CPVA)K-7QST9^5su1mpNfwc0k{S~u0VR%cNBd92 z1C2>;b}WJwjo|uZnQIDe(RlL-Q(ws`;a_xl60ss$Yy})YEUQ6x9Yq6!Me;bXw~sP3 zA=M!_$lZ9kW`{AMfv!?~`&xD+ThxU4O{k#~SUiat7GtC1hm%|@n z#`}rBiCi{BjqF5W8~T@Igtwi-x;p*xqk)lyUrCvg_gQ;PiiwB*DC(e{e82va{4wb3__ z5bE9KC4c)0*aL}k_N?9|8E$DgF}Jq$)J+oMp};Nh10RoXpgkG;>NNrP7=}x!Rw*=Q zj=~rd8b>`YH@ee;R#97J8rm_m^=1@}kqaf50xQxmsSt2vZxiy)zi-cBQ&u^^_K)S#CC~&QvQyoM;GE*t;aW7XpcdJgO0DMu>>6>7HjRDO@+ z&6U|DG+rCa5hwUYd3>J;9bf$w(`@{Vx2dXc(en=_H+({cqA{bzV!cH6hN4KbBmP!& zXqe+qJtnZ(nPL`MWXf8|({|!*2l@ROla(PyS z024Ovx{S!Rp+ic;1(D@@$~d?V zK9^)6Ioq<3m`_%yB>a4OUwka7N2;c^|1_ad^)xt!-Cmeo|GT4-tN zXu8SH>IwPqf)k0ekG91vv+ZV~x-Wa(dRm5NaMGZ@ivJYyQ`@tou%pI_@c*G7L@alzslAZ zuamAJ<$#SQX5)xa9oI)yB)0uR{M^|>KJS)~+@2ntP0r4Gtx1UYuVZ>xj4?c!u6EE5 zLZNhOIeQVf*f=67YVsxco?QRiUjPSkvx*a=g!@T^+O98g=-1JgH2`7 zrpBew80GFx=14*)Ix>3I{R536pRj@%upA$EyWZ}O=Wy=pjT8DS9o z?&!3=&BaJ@*{(JUDWIwN{Cxv6^CXYuy>pt;DV{cE8QO>}oL!4DqV;uW(a!b)iX6+I zz@$0P&)Im;AZq*htsd`nhLM(}WUnk=J`FjxinJ=kO}YBXlqv~5RI^v++hKzorg)F2 z1qpE+W(dWZYJ@y~a__5`J~8$8RV+aB1n=!AxKzCjkQ7n8#>03VM5@!!W0(#2xvk-% zB4P&_q~hPi;UT-3*+xrSQkh3$Lpa8_=ARY2MS?)P0!SoQthQJmRRR9a`qtO5HC1mB z)$*hT4DUpja(jAhxo^ZvDa?#vCccU$#yX|~WdhFmzmzyPD6i9ZkO`ShDQeJ;`{13Y z1PI139+0QG&bZL$RR2|^SF(;e31S!d4RfxJZLhoHExxeh(ey{*o{0!JDok^Ks@XR~ zw`q$mtPeNf_>I)A7ZpO}jjBpW0@s8KA4{M9(Wz5s#7jpVt0ayhgenwcNHdY7?^#?m zd`P}Vxx}R5ryc1ZO_~ixWQ?uf5tVXraqa{fQ&vV8LSFnXLz_`?ccWzW;=EW+e1@8E zHlQaTw)gcohfwWhAhZF6GS;Ux=?h@K5llU z{eJK3pS<`buOt!#b}#>`D0Ed)!LK~?)MNg=alLeTs~Y|aP3ttg#(Jujft8|H*MW`G zWHJk#FWGEy7F`sl(&J5f_X`yQF{lER8G- zLwUFXVQROHCP;7~6CNA#7YTy|5W1WsZ}U&dT=w3-jTR8bP9nf>PdE=BsoH!#Gn?dg zoR(aZjM>ZB;_QZDODv2i+>pEWWzV5BE0RqH+$*?@+^tHpxX@k5G z*CDoLg?RI0tbMX*-2uwA1exqnSL}PJ9CQnFFFfIJppq`EBs;cK@3n=PY8&FH z{ebo07+i`WnF_=``W8D&Rt}*OJ?3~x9J+cMm6U2GT=jtv&sM(RMP)SlicWi*v;})g zBA){vl@VUkhs&vep(t)u_)DC-#<^7fM+LYJ{6Wt};g;&rZ)9cGGsdhHMGoEjZDTD{ zx&{7xa^qT@ChLOB9O8UvW#;Mej*6MN=%QO%9btLh)rM}v)%-igMH%t9E=hTBxqbE| z?DqO z4T6P*PCkYjh29jJ-u(L*4gSOtn%3_6XCt=)Tdqw%ph%KUB|F$_7UizCN_m)hBT0R|fhbviT5)Qz*>DEm7+oxV7gQlIphtm??VDA# zwDM$W7v08gtf`Duxb6#Z6S#%O`NGAUm->X7_(bBQ@fR%YMYv0PITlx%t8&);mQlk+ zr7Z}S-o{9WrACj1ycE#M=f+A;sr>KsURo5?)q^{q6D}0)UTwT=mK@(>YHq4ES@-dt z($)-74~U&w9`3UC2A;%ldeu1J2YUWlT?h)||U3$87efqcaJ##bs;88&|YU=FgR zB_2p$#-TGP`h4;;$A`bDveJK3C^eUeH>Bf5TK>x+Tq}TW0FV3^^t2M)m7I=*@tq7X z#zCT)88;oPJ(gEu6)bO~8G;wx_F>0x#)#H5r5%c|($4VY3VpD?pl{1NV0}383Z8Y! zDX;5075IE?%DH06z~TfO-#c+4U37rNWqYU~{1cUwmD3L*YpzY$8^{_60Pe) zLcerg2LZmZw%cH`N5kgvl03J^!Z{ql*KA%K?EaSmSA+w5PRBZOkKtfb(=+tkb*A@^WN>9u3VYLtOtV&hvd5^0s7Y_U z#TorF2#ZUHO_(l4Z-#LBqLuSVzuW)#v-mkUEC0s&pp5HA=PbI|1a2C0ZuT*6LMhMF zeA%$%{Wl6265@aj`UB(*7uUm@`KeLi2q$L!zLC+~Zf~sWiVsm1$QH-^<{(_kA2Uq* zC{%6AOAq_exYwgQ^^9?m=7g{_v;YH8 z_A2K$Wp&f#dnHVT1g{PbeEtVx5%7!IfI~{x`g6$}&3ct+d0o+WyOG%bHCW{_OHXrW z&G7Ey4z|0oL%zMP`Ps*RPnnux=ngYV8WzgK+|nCb_Hx}#qaksFGgGl3pR5o$Cq@Q&KEKt*1lkd16a4^GsmCQI5@xf z6)zyBu@UM059p(aciz{-ueSmQr;$FnR%2j9sZu8k|{!Fc9R=VIKOx z%Wm@0yB?qydwxHu#T~pl&EKa|W<>S}U~B&oCO{CVrNLc>m@N{|POuKGz?2UD9hmBlt!@A*{{om%irbiii!l#N zy(TaLsn<036G|z01(o1nAk%2Zh2qnlzuI6T4nZW~czVK^Dv_aunDQR_@5buiE1=M~ z@)$%;UmQfG{Q$(KuE4%fZvQ_PwN=XJz#f}POiCreF;4tl?8FxxaJ`NopeFiudszs; zY6wnvB#zh-i`4xjfQJy_Lv{&EMa=IPr@sP`=Y6+U;8N!G=tycX@K*K*b6gNR{^LLn zXP-ax=@Ay(&I*)uPhvls__fVp54!=hEWovyA*5K5!>+?d)Bs3%LmkJC*ZF~?;SEd& zhKAhVK3?X244$#2(Zf#%Cg6K--k+UN-g%}5nSX=eK$wy04q$3MFjWot^21WNhO;K` z6gI?^RKAX4ktnagV%p)Y>H&UbPr!Qnl71dWiKWw7oKk+fLpe%ztJBjNLi7FE`MLjC z!+mJh#TTeoS(9Lrxi3JpmTwd+KqS4dLKgM?JF4V4ykXwuue@P_E?eT0UD(s&JsRX+ z{kgVf59%w<7U|aKW<39fu3P0qfFm}BRdoqW82PY#wumoH{tq_N2UfX*Blp1YGCHbt zdmWsxD>b4zO7ri4e2|e`25F7Qs8V->0GRm)46q^pgl_Inj6U{`(*$i_f$MKb1i^+7 z3vc2F*OWBD*em3G4${hJkKm~XWVL_7T$lybeVzc|wJ--WQl4m(NVIgXXJk+83jQSN zo|FQ$>ziOmjC%`mslQlfN67^96#QvT4LOB%#+j9lP8%(6*aO(V!GOBU(-Lr$L9b2- z1o7cN{RK7l-{0TgVCM3b{WkqOFw=QZ+B8vAiP){~r;N18T!9!H)WF)?=t5(H=@lr_ z+TUCs0WNS}27hF!u{kJeg zrD1*=NjdZ@Fq(L5YBTNy{zXf1*q$%$uK`B!7Gw4&G5B!*9${9i(Hr0}z&9YbF^rRj ztnYp@BMd$mKyOQp;Z$(l;ERrbaJQHG4Y-W(dw%=#_4jK4dxd^#FS!}zdChy(u+P$t zrNuk|61T4h18#J5h!=xj2bpmJs zQd5k&P)AjP`v_RRvR;jh-nBO!DrU1i$QdtVy&nhy_Yz={0`K`%z)Ab{o#oF582ESa z4)AdP`B zV3i`UL*S<(4aGu{{IfnEWAFofOHkRb1>XkD5+#NL&te*{33_7WyVbX^4S4M~Bl8d6 z^`UTuV&V-%sOn1oyPtP_Q2JpgBK+YZ+1(s?I1u~SQ1Md2ic*~1Zw>B0qoh_zGBgBF zyQCk(TCx2SKZ#)E2{kA^KhcSF7}V@y{*%#7ylR_IWK0<~51yoH0jraxM}{A-ihm7A zw8YGKo47u=P9u7RF`+9rnBxlH#Tirb$Ip6E)>G#KBE+7#`G_x7$FyMB)FSHt8$&Heq z9lk$^;neK*G>pKu#yT$os3{DI&^r z{vAdIQ;Pn+v#dP?HWbACHuG1j20M{IU6Yx`U~nenjK!X)3pjy0H7qDRyQQrNC@Y+q z03n%(*|~kE_Dt~p$muQ=vj^I5?JRBLnfA{PCSt#4V=Q6=bV658?%BBt(_QL?wxMOf!G(j6{z+wvu0L66{)G9v^OagjkWHhxd$7$WA!eF?>P?b`sC{ymv+6kq z&@q|!KlRX)<#u9VJyP64@jyN@|AF-`9$v@LtX3a^d$ z0bsN$-=SlHiqc2SSR&6qRZ`W}bfi$S5qrMD&aDs=YzI zDxZeLuYM5D@C`tf)?dib_-gD>2gfTJ5xz*XTlD#?zsaceX~!Z@#ltFRmt2JE*Hd~W87l3oQX1Z779k}4$Y@TT*cM^eFl<}K z0A*DU6OG4OD=o4YfVhVus+Rzs%>02V-^Oo3hpTlmIon?@v~9yPr(5;b!&@iVHSHqd z>Vr06N8X^``nKe59HWi@0g=V)T#{Q~K$Sb3O7^@hVV%KCPj|3-hske3`ZV$`{DW>X zBja7Nl^H2Dv*yx$YyC=`<0)$BlN%*8=UcLdC1qi15U-@Sg1OpY#=toPL z)`hNZD)deU65lRT{E$@hsQCjTac`zO%bc>$m8L1j?-|(&w9S)JW7_tc2(l}hb}o$Q zL@MFn7!FnBW%LDJOP)0TdWbN#;;ufz_N%+_#y8kuLA+Zr+$^PdU)Q>4yI2;97 zPD-9b8|gd%g|Wx6-0Q3YgZj=u7Ihky^Xd!(K<|MHl3?$DU56az_mQBPL z3;h)e%iqJYP}UZgXal-Q${twtm~V3&ZRm!qbw4*L9k%Dy#5A+6a`=SLShsdaX%Y#1K$!3*~hZ!)@AbKFOnmHndimNn$B{XbIr{QPdJ ze!CA2K8N%W^Qh-P)E}H(j<{^3h&Tl5i1$Ujk;z5}xgp(rdZ&$6e^0W$wYud(rkWFRQE}@ee{0rJ1!?N0Ty6R_T~LBt6Yf&=BM;pjzZQBI8^In0n!1H568|m)2SYcBp#f*dZYl$X5dziOISxO%d06diD8? z4SqgRV*bK-F$dd_i6*dXJ+S6;w{|}e=<;|grC$gs=l%JDKQD|j(FKL1K!DjG=~;9P zEj!M01TXSNr(Senp(XFm{mOPn_3s=px#d#RK@$~i9G)$8iUbHP1Y{|PZB_G)rt4Ph zu$mbyHm2_*pviFft?g-&XP{2IBzW8HF7ME{lExz8kO3}KRf&6zY?*QeKzlQ<{cqj*?;BmGc8_hMU0?Glx8H`B*(WC4Zwvvpg6fl%YFV zqSK!4uPLfmwh#cbATC|nPn5dRF;Z4{SyQFRC=TA`DzfY}L)sW*5>e=1gmMrY*qksV z!Z^|7tQ*aXvQ%}Ca$N6Mpw7`cL;MHc&JY*!{EP5@L~0g`vYyANOTPMAAF1S3UEw~t z3_TYbRSj~J$(GAW0hSHj>^%+DmJyk6<-Ap9B+3y1AwImH!hIB7a$dqeU3#!5zItUH zp|3qTC1Hx(Yi)s>s}|Z_bRFVfLvgnsE-^H4kT2 zRjh+xwqiXEjU1nEP~5ajjtu9=!E9zqw{=FH_J=p}lE(44kpx;QVeD_o=-1P%mCIW; zepOI=xrN(HkEu7RM!duYp!6+8$D@W)7{9K$)4;QFS5$19l=KnE7tkA$y#1Y@wjlGV zZXsIS>k^Bdhvoi3-+e4JGdJwU&$7n@Qy{ z4Ri2w#L~#Nsw$&Vi9cEA!xirT7&i{s<#8xoGSBLa(yINLhMhxYs%0TF`gwoUlM#!M zKu#2Qtc{g!IP>E^w;qP1Z$csG!l;e?pxJf3e9u9S8N&xo&U^H}!;A#97(+7wVcCiR z45dS!nV4l$XECI0b2OJ@pQ&d`KCSqqSc9OM%1$L|M*O62pQcP?5gf=RVZs7En+cHV z=21g7#Hkm`eYw0dC*FoeFPJnK)Q=+%YftCZ7YNtPMLJix|F>?5#=3kOv^JU)Gk}rHyYzle|#4=XbJvkm_g{m zf{#O(eo-RZLq3>)8Y%6;q?as^dpbe%6YYvt&nV5p!90%i5xs3Xoo~Gq-fbsgFqQyKJaPMwb=b#e&n#s>%o zbk1YFy0kMs1+?i5sAe26UCYMs_NnUp>X+i^vLv6REhzlf@@W$o4V(T8=2jl95FW!e zy#(vTF$bfLmlW0m6KIN<>U&EjOUNwmd9Rg7VvWjHdWOe@QI$Y7%BRO1D}@3lCNS(l zJ17tkRrd@Tf228RB{C)?yis z+3LiZ^0kWHm=&sGb?7FOBfA(!Ex7P53U;gT+S2^&!4X z$EQ1Tdyeaw{ms)FHLQ#Hkt~_aFPUec`&wMn)HqdBt}=EAD^G-lNbf$YkVG??{p@I+ zh!}0o!2mljP5)Xi7S(IgoCSerPnYb9^b{o#yuOQnoPr`_Sda?>lPIs1a^7Rf+;cZ2 z4TbNxk2#i==9!k~ZJT1hw76F6 z4lY4$ouG7!loZ}^=)%~ua!jA~S$RZKRQL6#Wnw(4ZETwad&>fG45{nTok#@1cR#h$ zcPrybGLpG!P6?Neyb|4}P_aFoK8So7buJNkA1T8xV5Fq3ds!8?qkZ;W9cZ+3K6Omz07|pxLzO(-1_2L0eT;r26AF4>4JTa-a$LM7_2?wki*d|c1&@IYb z)iCy^GTCiq4_La(H)iPIzC~!ZPA0yK-+a4-n4((#Gv&jjmahynPbPnOGXpwiKf7GHI$c%lB5gat0Qd?;BtN2QqSgEnb-g#C}wfX0O;{)|xy znSdRrp_&QBCDN?DjiOfm*ReEU9D{W|*mE(GB*?GO`Z0d787DZ5U)obxwrb!SPEENM zX-CUM)~~TIh&|o-uC{hoIeg^GXrh`xb#&PKF+=L(EG8U?Xo@-m#llieU^9 zq8IL&e$NLD>~Oq113&p4X)+4}VWix2yM^;~G)#Xnw%NSW(=-ne+}qOiyo9vJJ|Hbd z^hMzaNEsfyBNP^Oa4|HbDjSDR!)1T|lqy#eQ`;jwe9-Q%SoRZ5`ZL+M4!Sf2pP4CZ ztDUb3@17<{HmR*)mP^tc)+af4#-V2|i}D=xKm8}T2@%a~Pp_k&^2*6GP^*_;SxkiK z(jRo+9odXt(+SD54}a-wohX}sM*jvS{IH0pDwaMkpRv7E?SYSRc=jHQVaBL&X&2+j zbNkdF@yAg{(KW63$b)NJxWalwD50#cx1(Kc_-ZTeh{mf^(vs6ubJECP7KwD-UR2K} zJM&a#JgYa}^ytA2)Yi1&l^K#@t3m5q*<6yM=l3S#@9@C9zn^Zb<4Kr*fTyOUaPu^; zs+J9pd-(|tBPVU~JxBcs&b4%&HtzVVxad)9o)j~Sn7OEx4RtOSJpo^Kh<15bLZ&?e z)&pVxDB)}kg!_fm9K|Ppf;W&{0w2z=g``PyP) zrasoa{O`0DqeamvVyH$MXe{}>j|^?`W!ub^zBhDvwKTBUJ*wxv$Iz~f6nrL!q!rlB zpivsxoYd9pKp&Fb%WG5_d%5z0xx`@+sjIU`qYim`!5*m!-!3kyaqx|Z&*&B|X4G}v zK4(Aw%pqv_uWV|o9XY;IauxFy2uE#5cBbRR7^O!gS~FDqM+%>JLKj*TYLl}%_)mb; z_gvx6fLJfm@EU+h# zW6Iy(uI#oIOM;^hWo~($A((I?f}uDO423vm*=a8<>4E)cHMS)q$@(P2Q* zW#ftc9w9bzKw@W3T{JHgdelVWsFrnaW`#UmRavV3b;b5kJ=rroiejWH)kxdXm25Y{ zY^p@czjoy`4}w62o@RBG^SxBf5QTN#4eRK6 zMTrsouPB^H$j01lSSdj-FRbP5r4ruE>I&Jk9?xImPQ%Y>w|$hMmFIu%KfRB01(P@Jk9D=QKAV>rpHxRtUMXdxM+OOzZ$x|U+)RPB~h~^B(c`p((3+F73 znRy7xm1gN9aACo1iz^xO>T3R+kK8nuwQIRIe~^)+cL$L7pF zx3Z(H)(fe4B555Y&W_mkj`|2%siS9#NtXx>TsMs(uHuiOI750CiCeiV(v?l#7;O=c z;y8G0oy#YMG2xK1S5Yr3NWYXj+^(14`~QkN_jsn;K8~{{OHM0h8ZmT-SW7Hgd4`%q zl0y#V4zVUIIaO}m43o;K1C~Woj1)N*I!O&Tn?`6(mD_0)DIIR|)N{?Dwtt`3^Ljn| zbJzU7$KQ2bUcdMC`K@JduFwVl%RcAc^K>q(?$-SCx|&}F?3*gzZPp)!Shg*&bq5xP zQF2nt{4+WEk3zFCCwRi9Al?)>xL72UKyw~VZq|HvAFD!QoR{2YilLTC$Eg;yP2^y} zGgo_+=+RfFp$;zP>yopz&e$6(5zDT8(ZnRt^{nAqWF!7F9T@{`Xz&j2*{#UvfvTi7 z#|;RgcMgwgIGHt!M&eHgrkvpfR~u_pGzky$&*o7|qF>riKQOFajm+lEPw|u?* z>#pI1y$%iaEIb)8MK9%FP;O-ERcdW}c$OyjP$DBk#nfbQ?AFWY*3bW89^$;#W30Gw zE%3cpL93;`c?h$f<2ER8dG)0B!tyI$H-60>FWcb7OS`!|z$^*T&Ty;dptPZp*0SoK zw23P&0(GhG}W zIUN~l+q*n|uHE&RUx&^$OX>4LrG`pw;!wqlly5kZSzym<9`)x3j~K0cb-1(M(pPOyNGOWktI0N@Rj*bLhnM>L%rtr^>30XH#G<;%p3Fw#?%TM5`v#1GMzwC8fNYsP6@x<>##<7qEuI#P z#WS|+M%*G_7sw;mx@S2ae>Yz0=BJ1{o}KVzYv>eaBcb6;YGqke^U3m8O}(f6>hu1E z7SIxm{potO{%0zQ<0q+Y{C>XRA$+qd>bc7}{3b*fA0=&cI$uxZp+u#>mP?M76tySejL zL0q`g@}vCRR*s9Ebaue2o&ujfgp^f)ME5XRGI4;UK@ynQusV#tSv+PoJc-#h^6pFN z<_wz$L+kYfA(I!qUPJ$&+pTW~TO!jDU^Ph7?xsa{=J z$3NFOb9cp%z+j$+$+l*4Fs0M96OusIMnID|WPRRs@X@mJOo=Z*PG|v36GGA25P^Wm zjDrR5!j$+8>wZwQF2E-yF2N;+!UM~+bkc?7Iy#&;`o#3L$4UJt&J6z465wJYL@kyj z+SkLvWF;w1sjJ4E2!DT~^3ftHV>!12XZh*iDE$$nf@@@y`hZ#t6CP@WNA1)25@wx ziwN6%9}}4tu=q}bo1!c_!+%ndX?9MOXCk~1f?APs?&eGVD7+FCt%%GSY0buG&S3!U zgANH-5*-GJ&3-7@ZXZ@|ISY6u5p0UO52%Q!OKopl=!wNKqzc5_L=geC8Uhbrq2v@F zQSgcvCcM=5Z987P?fNKEM6U$6&<89TGY`(q-*CWE9Uo5r_^{?X|2;o|uPRn!*_67e zp1$12yEav)rHBh@9e^bjHcQ>;56;VdTGU}jA zy--;L=n<6}{GVpHUW|g8j z2lkLIi~tt?W>$z$qI)R_x-yjLIvm?kXnbOSU4+?^n%4aAZ#057c@i9s(7Uto0Npts zuOXK9-LRx0ZdIG*I=Xt(&+CCZfoTM>Ru5P59(26Ze4$)2;6}}({RS(Gqs6KQ^44ap zu_uq0FTeKN4>mG=q)Y4BkJXJBQ4^Bd4$|E0>AGbKNr^gYU^ZF1n3Lc&CU zM^&}`e>z_1UHh5 zS6rj@rY-B$sWdeLN1TJX?FXOaOLMBI3g%(C4?I3QlnIZ3&Qy4a)+OI z(65_d&H!4b)SE1SIpdjV^_XZ_;$VtZx~*zsK6jnJeJ*-CPF4_xie<5v)|>fS zl3|dt8HL7vpd{9SZm+JaX*%~T_+a)f)R|BAi;(f+6qXDt9ZlsA4p!@!6SHi`a~o-6 z*SmraOSzFmd_z)u;4!N83T)Xb5K*4TcmSE0K00-nBPoQHw>Uc^)Gca?#+ zA4k%apN5@QEA}krwTrX~^LOa8=!8xT@UJ*g5MuX zBZNPRQ!qaX`A0Zq9^{SW0Ps9?gk!EkE(@$Rpc$drzZlpA9)9=8J8>cwuXJXjM_B?3Qr z|7m;FaLyX;PKYN9Wj*m*@SXT`L1)A!F}fn*>@9}xdjBMbUh7k%$LnV{^NZ=`?u;?} zRnen>B*sMTX#gneIHMs z8$K+WaT1hz+0cd}-`=;aykn2EvV2aI#J8oDWZu2Y+KLbE zdg}LHTooQaGGeP+&M0w){q`eDN%UvTURYjlPxk8%lLp+02vqpk&y)-2+h({MbFOOP zn8MEiDozWCUN(4Ca75Y*3pou|{)uI2hs64+QmB1^>&o(*r;3-{6U2dCq(;nKkJzM< z3^u8E%eo9Ieil`jT@65Cf0Gz`DP}83xamu-B3%)im}iAzoYI<)#cYwa!R|Qdwn yiwHvKbqmPo77JGa_;p(1V}QtAfCQ8Iu_?O!1QJ~lh;ca&Iq#r_8zSrW?t literal 0 HcmV?d00001