From 1ba6a7aea8696b7a706fc54e59c870b0acd4718a Mon Sep 17 00:00:00 2001 From: wangjiexun Date: Thu, 5 Sep 2024 17:16:08 +0800 Subject: [PATCH] add article 20240905-linux-rtla-2.md --- articles/20240905-linux-rtla-2.md | 220 ++++++++++++++++++ .../20240904-linux-rtla-2/cyclictest.png | Bin 0 -> 28035 bytes .../images/20240904-linux-rtla-2/flow.png | Bin 0 -> 27305 bytes .../20240904-linux-rtla-2/rtla-timerlat.png | Bin 0 -> 40614 bytes 4 files changed, 220 insertions(+) create mode 100644 articles/20240905-linux-rtla-2.md create mode 100755 articles/images/20240904-linux-rtla-2/cyclictest.png create mode 100755 articles/images/20240904-linux-rtla-2/flow.png create mode 100755 articles/images/20240904-linux-rtla-2/rtla-timerlat.png diff --git a/articles/20240905-linux-rtla-2.md b/articles/20240905-linux-rtla-2.md new file mode 100644 index 0000000..3e082eb --- /dev/null +++ b/articles/20240905-linux-rtla-2.md @@ -0,0 +1,220 @@ +> Corrector: [TinyCorrect](https://gitee.com/tinylab/tinycorrect) v0.2-rc2 - [tounix spaces header]
+> Author: 王杰迅
+> Date: 2024/09/05
+> Revisor: falcon
+> Project: [RISC-V Linux 内核剖析](https://gitee.com/tinylab/riscv-linux)
+> Sponsor: PLCT Lab, ISCAS + +# rtla timerlat 介绍(二):延迟测试原理 + +## 前言 + +上一篇文章中介绍了 rtla timerlat 的基本功能、编译过程和使用方法,本篇将介绍 rtla timerlat 测试延迟的原理和延迟分析结果中各数值的具体含义。 + +## cyclictest 原理 + +前文说过,传统的 Linux 调度延迟测试工具 cyclictest 只能测试出整体延迟,无法提供更详细的延迟分析,因为其通过黑盒方法来测量延迟。如图所示,cyclictest 创建一个或多个高优先级的循环任务,每当循环开始时,它会设置一个定时器,然后进入睡眠状态等待定时器。当定时器触发时,线程被唤醒并读取当前时间。当前时间与预定唤醒时间的差值就是一份调度延迟样本。 + +![cyclictest](images/20240904-linux-rtla-2/cyclictest.png) + +通过收集这些周期时间数据,cyclictest 可以统计出最小、最大以及平均延迟时间,帮助分析系统的响应时间和稳定性。 + +## rtla timerlat 原理 + +不同于仅仅运行在用户态的 cyclictest,rtla timerlat 由内核态和用户态的两个部分组成。运行在内核态的为 timerlat tracer,负责进行延迟数据的测试和收集。运行在用户态的为 rtla 应用程序,负责数据的统计与展示。 + +启用 timerlat tracer 时,会创建一个统计延迟的测试线程,其主要工作与 cyclictest 基本一致:循环地设置定时器、进入睡眠状态等待唤醒、唤醒后计算延迟。然而由于其运行在内核态而非用户态,因此可以获得更详细的延迟数据,如进入中断处理程序的延迟(如下图的 IRQ Latency)、唤醒测试线程的最终延迟(Thread Latency)。 + +![rtla-timerlat](images/20240904-linux-rtla-2/rtla-timerlat.png) + +## timerlat tracer + +开启 timerlat tracer 的命令如下: + +``` +# mount -t tracefs none /sys/kernel/tracing +# echo timerlat > /sys/kernel/tracing/current_tracer +# echo 1 > /sys/kernel/tracing/tracing_on +``` + +开启 timerlat tracer 后,内核会执行 /kernel/trace/trace_osnoise.c 中的 timerlat_main 函数,其主要工作为设置定时器定期唤醒自己、自己进入休眠、在被唤醒后计算调度延迟。在设置定时器时使用了高分辨率时钟,以提高精度: + +```C +// /kernel/trace/trace_osnoise.c:1891 +hrtimer_init(&tlat->timer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS_PINNED_HARD); +tlat->timer.function = timerlat_irq; +tlat->kthread = current; +... +wait_next_period(tlat); +``` + +启动定时器并进入休眠的代码位于 wait_next_period 函数中,next_abs_period 变量记录了定时器到时的时间: + +```C +// /kernel/trace/trace_osnoise.c:1830 +static int wait_next_period(struct timerlat_variables *tlat) +{ + ktime_t next_abs_period, now; + u64 rel_period = osnoise_data.timerlat_period * 1000; + + now = hrtimer_cb_get_time(&tlat->timer); + next_abs_period = ns_to_ktime(tlat->abs_period + rel_period); + ... + set_current_state(TASK_INTERRUPTIBLE); + + hrtimer_start(&tlat->timer, next_abs_period, HRTIMER_MODE_ABS_PINNED_HARD); + schedule(); + return 1; +} +``` + +每次被唤醒后,会计算当前时间与预定唤醒时间的差值,作为一个延迟样本,即 diff 变量的值。 + +```C +// /kernel/trace/trace_osnoise.c:1906 +now = ktime_to_ns(hrtimer_cb_get_time(&tlat->timer)); +diff = now - tlat->abs_period; + +s.seqnum = tlat->count; +s.timer_latency = diff; +s.context = THREAD_CONTEXT; + +trace_timerlat_sample(&s); +``` + +在这里计算出的 diff 值也就是使用 rtla timerlat 测试时显示的 **Thread Latency**。 + +定时器到期后,执行的函数为 timerlat_irq,该函数运行在中断处理程序中,主要工作为:计算此时的延迟,并唤醒上面介绍的 timerlat_main 线程。在这里计算延迟的代码和上面计算 Thread Latency 的代码基本一致,只是需要将 `s.context = THREAD_CONTEXT;` 改为 `s.context = IRQ_CONTEXT;`,标志当前上下文为中断上下文,而非线程上下文。 + +此处测试得到的延迟也就是使用 rtla timerlat 测试时显示的 **IRQ latency**。 + +代码运行的流程图的如下所示: + +![flow](images/20240904-linux-rtla-2/flow.png) + +## rtla 应用程序 + +内核收集测试数据后,rtla 应用程序是如何获取的呢?其实是通过 libtraceevent 库实现的,当内核收集测试数据时,会触发特定的 trace event,进而调用 rtla 中注册好的回调函数,进行测试数据的进一步处理。 + +rtla 应用程序初始化时会给各种 trace event 注册对应的处理函数: + +```C +// /tools/tracing/rtla/src/timerlat_aa.c:937 +static int timerlat_aa_register_events(struct osnoise_tool *tool, int dump_tasks) +{ + int retval; + + tep_register_event_handler(tool->trace.tep, -1, "ftrace", "timerlat", + timerlat_aa_handler, tool); +... +``` + +如上述代码则注册了针对 ftrace timerlat 这个 trace event 的回调函数 timerlat_aa_handler。当 ftrace timerlat 事件发生时,也就是在 timerlat tracer 中测试了一次 Thread Latency 或 IRQ Latency 时,timerlat_aa_handler 函数则会被调用: + +```C +// /tools/tracing/rtla/src/timerlat_aa.c:241 +static int timerlat_aa_handler(struct trace_seq *s, struct tep_record *record, + struct tep_event *event, void *context) +{ + ... + tep_get_field_val(s, event, "context", record, &thread, 1); + if (!thread) + return timerlat_aa_irq_latency(taa_data, s, record, event); + else + return timerlat_aa_thread_latency(taa_data, s, record, event); +} +``` + +上述代码中的 tep_get_field_val 函数是获取内核测试数据的关键函数,在这里获取的变量为 "context",即我们在测试数据时记录的上下文信息(线程上下文或中断上下文),随后根据该信息进行进一步的处理。更多 tep_get_field_val 的使用如下所示: + +```C +// /tools/tracing/rtla/src/timerlat_aa.c:216 +static int timerlat_aa_thread_latency(struct timerlat_aa_data *taa_data, + struct trace_seq *s, struct tep_record *record, + struct tep_event *event) +{ + ... + tep_get_field_val(s, event, "timer_latency", record, &taa_data->tlat_thread_latency, 1); + tep_get_field_val(s, event, "seqnum", record, &taa_data->tlat_thread_seqnum, 1); +``` + +上述代码获取的变量 "timer_latency" 和 "seqnum" 与我们测试数据时记录的变量名一一对应。这样 rtla 应用程序就获得了从内核态收集到的延迟数据,可以进一步进行数据统计和结果展示。 + +## 延迟分析 + +一个典型的 rtla timerlat 延迟测试分析结果如下所示: + +``` +# rtla timerlat top -T 500 -s 500 -t -k -P f:95 + 0 00:00:01 | IRQ Timer Latency (us) | Thread Timer Latency (us) +CPU COUNT | cur min avg max | cur min avg max + 0 #1015 | 236 37 42 236 | 594 213 227 594 +---------------|----------------------------------------|--------------------------------------- +ALL #1015 e0 | 37 42 236 | 213 227 594 +rtla timerlat hit stop tracing +## CPU 0 hit stop tracing, analyzing it ## + IRQ handler delay: 157.68 us (26.52 %) + IRQ latency: 236.24 us + Timerlat IRQ duration: 242.08 us (40.72 %) + Blocking thread: 101.84 us (17.13 %) + rtla:145 101.84 us + Blocking thread stack trace + -> stack_trace_save + -> timerlat_save_stack.constprop.0 + -> timerlat_irq + -> trace_event_buffer_commit + -> __hrtimer_run_queues.constprop.0 + -> hrtimer_interrupt + -> riscv_timer_interrupt + -> handle_percpu_devid_irq + -> ring_buffer_map + -> handle_irq_desc + -> riscv_intc_irq + -> handle_riscv_irq +------------------------------------------------------------------------ + Thread latency: 594.48 us (100%) +``` + +该结果提供了多个延迟数据,如 IRQ handler delay、IRQ latency、Timerlat IRQ、Blocking thread、Thread latency。其中 IRQ latency 和 Thread latency 的具体含义已经在上文介绍过,想要弄清楚其他延迟的具体含义,只需要找到其对应的 trace event。 + +* IRQ handler delay + +该延迟由 struct timerlat_aa_data 结构体中的 timer_irq_start_delay 变量存储,修改该变量的函数为 timerlat_aa_irq_handler,于是顺藤摸瓜发现其对应的 trace event 为 irq_handler_exit,其代码位置如下所示: + +```C +// linux/kernel/irq/chip.c:924 +void handle_percpu_devid_irq(struct irq_desc *desc) +{ +... + trace_irq_handler_entry(irq, action); + res = action->handler(irq, raw_cpu_ptr(action->percpu_dev_id)); + trace_irq_handler_exit(irq, action, res); +``` + +由上可知,**IRQ handler delay** 测试的是刚刚进入中断处理程序的延迟,而此时还没有进入定时器中断处理程序。因此,**IRQ latency** 在数值上应包含 **IRQ handler delay**。 + +下面两个数值将直接给出结论,感兴趣的同学可以根据上述思路逐步分析。 + +* Timerlat IRQ duration + +该数值为:上面代码中 trace_irq_handler_entry 和 trace_irq_handler_exit 之间的耗时,也就是整个中断处理程序的总耗时。 + +* Blocking thread + +在中断处理程序结束后,如果没有直接调度 timerlat_main 函数,而是仍在运行其他线程,则该线程称为阻塞线程(Blocking thread)。延迟分析中的 **Blocking thread** 数值指的则是阻塞线程从“被调度进来”到“被调度出去”的间隔时间,这是通过 sched_switch 这个 trace event 获取的。该数值的下面一行列出了阻塞线程的线程名与线程号。 + +## 总结 + +本文通过与 cyclictest 进行比较介绍了 rtla timerlat 测试延迟的原理,通过简要的分析总结了 rtla 的输出结果中各数值的具体含义。更深刻地理解测试工具有助于更准确地分析系统延迟问题并进行优化。 + +## 参考资料 + +- [Linux scheduling latency debug and analysis][1] +- [libtraceevent(3) — Linux manual page][2] +- [timerlat tracer 源代码][3] +- [rtla 源代码][4] + +[1]: https://bristot.me/linux-scheduling-latency-debug-and-analysis/ +[2]: https://man7.org/linux/man-pages/man3/libtraceevent.3.html +[3]: https://github.com/torvalds/linux/blob/c763c43396883456ef57e5e78b64d3c259c4babc/tools/tracing/rtla/src/timerlat_aa.c +[4]: https://github.com/torvalds/linux/tree/c763c43396883456ef57e5e78b64d3c259c4babc/tools/tracing/rtla/src diff --git a/articles/images/20240904-linux-rtla-2/cyclictest.png b/articles/images/20240904-linux-rtla-2/cyclictest.png new file mode 100755 index 0000000000000000000000000000000000000000..3e51db74e4a89421a5cda97e92809c0ff9c3050e GIT binary patch literal 28035 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 literal 0 HcmV?d00001 diff --git a/articles/images/20240904-linux-rtla-2/flow.png b/articles/images/20240904-linux-rtla-2/flow.png new file mode 100755 index 0000000000000000000000000000000000000000..fee387dcb6d24dd045e439fc8a8097c09a4f5fd5 GIT binary patch literal 27305 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 literal 0 HcmV?d00001 diff --git a/articles/images/20240904-linux-rtla-2/rtla-timerlat.png b/articles/images/20240904-linux-rtla-2/rtla-timerlat.png new file mode 100755 index 0000000000000000000000000000000000000000..69635a99cca44bf2bcb5fe9dd90005c9623e33b8 GIT binary patch literal 40614 zcmeEtRa{iv7wD)60wO5VAPv$D(g+F+-JMd>5<`a)qJYFu($W$`cMJm3U4wvtgmg17 zFw{Nh_x*4F?!6E9@t&6hv)5j0?X~yHz0OB96*)W{avTr{ga?*?p#cJ6N`XMP)$U;e zzaSF6ase+4H)*ieJ>c=XXZZmHq5*+lJlFC{+n)3GGxGG`yGEhXrmOp*jI&Tj?}a68 z`tBhWok}S^X$=|&l9>?V!yKvet(}(Nw@CuxIi*;Xaa;06TxTEA5Znuql71WV-NV8A z`mBZ9+5Gln^2a>;|Z!c^~@I zTJtmtTVpL5<_I2y?e%+zgWguW17ZBdkdqIGUonAEHdh8r8+Q)8nwcUPZ-Kh*-6r@u z9vSX^v>N(}Co@JXU}(IK%wj$smI4A9pipXkm~;>D{HZ+ zUz-qQwoMDV^#{YZ51Z@jpE)<;NM?o%&J+689)Qdu>Hah5O1b6+Weuy?z&k!Z#*g~5 zyk5(uzubXVqOJN9IXo%XenH7@ZNN5;B}??Q*03T`+os`K?V5v z2NIFDz*$oj=l8+X;oZxN4>%Z*i@%=X!0Q4N zOx-ZCtY?4ihS7HmB=zWD8FRMvC9vf{pCoDt+zv|}9~s$)KYaG!zfShL9NR!TLZ46; zF6-M%);LU8ex!$pfxi8C`R^u74H}$#();!3M=ksLg+yb6NQ3W5{iVF$I59PK4bRoj zd9#kSbZ{z=^Tr7DjdaQSUlAI4m%`DTtoA#tU>xvfVm#@uQ4SUk7WQ6C4`oHWqzQo@ z32g8(!`bBI<}2fKfR2_cB4HKfw`F9A@g*oM17*JsbC_XM|TQoXxA=OJdwz^sE} zb+ThNj8s#>nlV88=>JG78)n*i6_QIxGQ;^KT8_bcO>A=M*-%%F{glZY zQxJ&rE|17x0ha=3~Jee>azp8DjR|vvDqE=cnAU+$;ytAkyRNioVpvpPWc4%@%ynJs4nyXQY|9GyPbq3Zpe|y} zKtM@jGk0#3@NGYPf95-`y*@(_NdCVO4*tKQ20;GT!U2JLME{!!|7U6b{|Wy$XYT(? z>3<_7m8Un3i<@B~t|aiJtP8KV&$5CBIK{wYgneVQ8v4;i!VtaRj?9*y=$CzGL~Uyu zBl;NatBk4sK!IFI0p+H#A+smia?lz5=wGQK&osy3c`@OT1Yic9w`?GBDG*4wU!k(A zN2Ii5S>Zv0_@5Eb`!LWyP5}g3q59WJfj}{y|Jq9sNNWCH*96S*{(nEg^+(N=2}Pd= z9c)`)m4(;mie>vbVbqDk< zA?Tl_(1ej$Jc1T6`VWvEIfy;E9(S0+0EXZGXIS69W#C!>nh!>Ad5OVufQTTfu~DSU z128%m*Rg-)(PQ5A83|Gy=IOe4b#Z#23V8ZdVh)4H@a@oBpqSf~;&TD5BC3f~*RQyfF5n8FkYmLE%0ivlpc=!0` zC~&`OU);yA7&!M^C<9!%W7lULd&i_)PVii^WD`R#X&iLL(0&{`2KBR08Z%(CP-;IC zvq$40M55yQ92VBF5C#h_X}QbD%Z$u5??W-JWHPDUs%V}rwx>_!4eZN4KQy<9+}Yk{ z_eyUvoPy9tE!UUXm@c5G>>b@l@JbSLzoL!T+{i52ajc)-_qqo*#}n6Cw2b2UAsksF z$oqX5mivQXuK_~I{0c_3N#2kwf+g0P`)P-nK}}*1=q%!|@z}-haj0|6C|`YjLmTgXUnkQZhKJ|+Ahpot>)Y=N z;VDU}*tQSBd9w4eOQUE0|D}#Y21C z2E~y4bL!~34D9*%MA2>xMAlD0oI(~1!mMI$^0tz&%Y)UM}t0S z<=gZH%vtpzg>*WVIvEs**j^W^bbir$689tlrT*tAa=!|~rdj<7%2ga2e#}m$Rr*CP zgzsC&SCprgu0NLVAZYlQ)S)-aEqZFfth*7ae^)WsxDQSuN}d7#Zt-Ak?GA@A;+j&X zVdRmG%%mA3BX9IOQZU%cXXbvna}p+87TeyjZpgHYqj2ExjsF8nAO=b^gw=T7*XRx< zt80N}Bbs&inx2xe#cr!55rN)bJpUWPkn%(=e-6OQA71AyvMpWbK^Xxa+4BT3)k@UxyL zKVSj6P;M@xx_so;Y8+^XWWy*GLl~?<_!SqJH|%#0K3&6ix=`^&#h2;q-giNy_Wy2L z7pVm=ZI6DI+J~~VJ4xS2-75N1{bj}$gaieh5*Q#gy3t+590o4 zB8B}_%?!D4Rk1Ozmo&sYpr)#mQ75)12X$3{D1qSLdb%?8mtwu@XCJ#qL1nYl?aR78nHUsaf?U2!bn)E2NtE-D|x)dAm2Dkot1GDdz z?fBMjLG(S4xf&=rqSUyFb{2>U-!RgG+SaQCy?W%M8h)*Mch*5mEYskQG(b%IRxBa; zR(pY|83qg>38}RQ0kU}k3L3S7X%WO_KkP;2C7x6e29eSykYELRxGS(k6Wq83?_n28 z3z!u)JMgz96}5s}Y|R-TxLGt$Zci`kPT-*g3_W6)S6k|!>+XFDcY-|~&5wp_ib|Y( zk*GCGi9g}2rvPTY$*V$;A75@pXTl7Cf4OUU?l4U0*~+qKU-njuE#O<@uQX=-hGDW! zqO^6izJ4V7t&lIyA}$+%s?ZpKXc?On1-+5)9F<=cxe3qD21&;QG4Cy40HLpx4)+~~ zBnA!io{-SG>wTq1RYXzbYBbDsF!8LT9I z-C8w^H@3GVJ&U|3S^IHWhZlxCu9-z1>!K7sTJ9gYZ9Vh6UNpMSy6@qCKIKIlFfvZR z_haWEl^dOSTS6KDdKHOdESH|a zl_$os@|BlTBa3IVTBkrGBmRV83J){T-_(_gD8xuxG)e?E`O$q?PzD*f&v*V_rpSY; zGjjCSaFWKxueDuJv4?j+xoMBKOOJZ!a*u+@=aV1;7xtWeEw7U9`6_r#3>I6BKe8>9t>UDCiYG za3&q>GnR{*6`iHu7J+W{xfq8sFrHI&7~I_ps|gPcKBu#VrTC=eh%$L0r@`Uxjq*xX z3dWxA&@y{Tic9_&7HC0f4sYQ$72(~TT6{A@eIZdU_(KjVO{@K$l87uPzD8v8OoNvy z&H3vW#vMg--DR0loJjSs8j+p6iG&lhoE9MIZ+hSE-;`KZLKg4R6jskSxmHNHo(s%W z?!|a)OO|-^<+Dn-h4W zgh0fatt=!oJ1a(|#-9x8+G#O1O-84%$p zDV|&j=M|0`%^K%G&#k7TC(({RC+meYM#6jkNcXv1oH@^9I*t_Mf{o?wUIh`vOzDEd zPfq6aF{-Hv``J-K^umI#LDNhV=95#D|70X}0oU9)<{+#vF;k_us6;RD_*=T&mP(%s zCBz-FRqA{tZ?`AXl)5G2gTm9@s6CbD_*$&4>|H1l$KohHk*l5RxnA)})cp(JG)0ge zTd1_pQU|IZVk~}k$d+QH@pVJfo*!PVr)*{VU36amM&aPG1`^Y z*|8f+4L6>t95q6=9!-}rD^ecgNsUdj-dK2x+5OuD!&4K7uV9}g^pA?z9yh^FM&)1h zYAI0l#xo@l+a9c7H~LQdDQ7-2;j=G-%(V-%vazd)r0dvwN>389LbP`<<{IDBT2Gda z(l7YSvWA}scQ+Tgilco!H)rlvJ&p*OoKKHgJ1KfWzh$?-od&_@r*a*0QH@K^;u5C|ghK zqou~2t!iAqVzp%-2BfPD8at7^iUKn5w-t1caR%d%`U|LQ*|ANBsW`?9{+T<+dQ+^kMdu_>U!BhG`` zL8I?TOUS&r)L2Y6qF{2xlgaWNrjoyb{PM5>$r-nM4O1zB%0*J4_rlA)t%SfD^} zKA6n&QivrPekoJ6vc1Rci@#yMO+scTy`IE8aftW-Wa3)n}$cQ9Wh zrLuP#w-|2z3XUs6X3dsqjwkDgR|Q0f7#RG17S#wX{1OdbozZ6_l5MYqW;pq2hXM3o zD>kv>S{OX@O-US1&#Egm%GdVA-x^&LLJpNyXw0Cj7_^B)8bkVF5CT4%r^)VnM+W!GS?ciWWIpBMC5 z!etH8==__vp){x4)SxV%zI!4=$=1&$D_LF34}vJpP*L>HPn?9@*q2txXAaR zRgml&nd`M=lH)=flLwe1M99w5eRu~tqHZo<~Imvi;RtB zg|!}h&X^4pdsdLJB7*KIy+ogi?oJFG{O<66Xt%SCD9A8oo>U$S+pT}T^DzY8>{BJ^ zRrBpI79ipOqebFAQrufcV*cb&!{RU3YZ_V4c;=#BG*k_6pB#GR?`*ab-FDnqat7__ zhpXM)ai41{q4mUXrRk8%^5N z5Aqe|S_GrJQ&Ah|TXp>|R5dl8o0$kFe9RDwmf4cI0I4n16AiiqggCAZ_~XFZuc45u ztNBz*|Kjv>{0&XjW&-}F(ILUl-MiPfh6U{|cP|z4HPGu6OUanaQ6A~fa)u?QzA~HG zL;bkEvXG~#+8ESWOiAR4n^rOD*s7>&9r`P?vZ|T0>$Tc-lwP(qWG~KNMk1G|QjpZX zQIW4tX~}j(y=52tZF6cVg~^PPUO%l*%qV*|mAV;tFK5B==MxOYQMEUbdN0D?BXb~z zH9I}n%BAe%7atSaeg)2qcO2#0^_JMW8tVq01s5Fu+#T2oe;G7I;c>j)KYKi|`RR^O z1aG`Hbl}bD>sdh)(%{R&E zvnI25?LuK>Bb4QGwn*8>Zp*&SiZv4RmYlA15lq8RC!KCF29Dge6Nh{FzOj+x-7DPN zh|V-FJ{Co>P`W~f`|>nA6>u8RyHR)07q}G1$hPI@pEU@uPa;C|PE^E4>$P1e6A~X6 z=QlsA-vgoopGnFDBBIU0PqWC;0$nU~jbTarit-6WVc^+@Go-Rb@qxb-u)kdx_B)cS zdKkJ;N{fM3o2m@1pX4*wwvm; z&J$Oycq1Qv_gzR48-G=!G}Xu4fO@M;Et6b%a4cPCXj@LMd=cw7e(kQNCvRSmyjF?{ z;kLaJw;LTFq10UA7fHEi3<*TV;|l2?a}{v1S?@JKd1j`6mLj6ePQGL9!NK^PC2`?6 zK^auN?%c)g5VW8&H7&xL6W!1a@40ojFEzD5ny%n&XJ;E{xgwkM{IhvpXIwEq#IM0b z++E4ua~B_TU3tO(H|g0%^?Rarqwo<>O_Zg%;PtQc8y-K|@eN8=yWAt1imlKAM^9e?(zbXGl#?By zP8%rXPoVmYvdYO|x4^u)s&;MfllZ3>V5{r!k$B*W*M3JevvAbBL|~&+ zhM@Z7vH}t3Q#A(i(U8hlFM*7CW5Am#r$$cIb~4d8MN<=&x;8x04Bi_H_Iq`TUEyqz%WFXrS_RuJEFTmuYiQpp&dcv1H zW2}3}AMEh$(9iU!E2;P?aqO}9<>|ZG#~#C(HOuEZacup+z2QZQ5x#rRfowQePpg$W z6GjwQtZiaY^5(gc)6?8SZKAdTIxEh?1SVox0e`=Ss2a%nuVln?K6(pTah02T$%7Bw z%Z$(~k1v_PMe-bQ(cBN&LI@bIR#p~Xcbmb9fRq5J3^af&f1p3%7#61leT~e0(=&Q} zWc_;GeEAF5v#6lgiGrI<-OdTOQ5mFNY%e^jPQft9a>n~iMVb*3pyllS)q zI`63Fl}NldY4Mf9-~g}atI!SujUSP6-iH{kCXw$`(kWZ6*VvJjt^{ZsQuiwOngQqx0ngNHke zd*k891FQlCDyT1BYDM^<01g9Ua)bK?db?e?}O z(l&ACs$PN1t2OYu<&Ci~d&i5bT{}ElT!yrilMRZA-12SPa#@whb&HY(CQ}RzVYBcv zLYCxaO5IoPdcCONTYgh6@zHLN8pkul?5!e4GXu_D5;|W6J3BB8*Jf z+id{zF=_SHjrE^Du-(dH5~%a|THIt{p-5PO(EU`aYX00=65;Iev@;-C(YIsI_#hGoPRb*<6r-3fS;Ru#|SM^^xoXvhB7D@u}}ScttSdC zeC`^cvo#di2G_Qo>&xVM_d$)p&uWEuSSec9_}7dz z)u?$%W3d1BP=e2|88qOh)D1l~IE?2~^mIzdes@0SB2RDKMi6-k0F}Wv56Q{NjTTUW zrep264kB{~=V1q4er^^P7Tv$Ua`dA^o_CS{De+pqJZXjRJ{z-_gEY2ihK_!iuW@%8 ziJyT4NuEolDV>_b_$#CdyApa`jQv+Wt|3#8MH!~eQsnbLo}G1!;hY>_%v-N5eyOOf z(MiRpn(~!ImH9Yz+p|W!6tH-e@EFhM9ls|;5vug`F~9zvWc!Zcv=RAD>gN1K8{>U$X!i+~rsYV}DVB56qhlO< zE>C-xek+3u!o+VQZN>fBF|S9sMVN`?`w&^k5C$cSYG__3PLs;sdUFjqNyO`o6+4#4 z(8jprBTK*Tu1KYw{wAN0FMp(BgN2<)rj zY4=Ud?7MK32i3Fu7P)A)^b_P_D!Kbsvq&M|XzIEi#YDVP~0?}FE5#pZIXG0M^@B8v<5O9;GIz*#GYJ$MKTmK(-eF(tpuHzhjmsJ6tNSx zuqOfX110Io$jH14ny3EV@srUZ^2|#{rlVe+olW;o%LxthiY(|6-d0&)gRJ2L>hbS~ zy#9yELK_jz4eI2&tThm<#r9Jd^x^FM7izzC$3_d4^p$gkjAuC~L!4(B1#-E6%>di}SOUOau0n(MO^> z@)e&a#uyp>2a`p>3w~=mK1=w!Xcs+@@FYxknF21 z{DmS6rWmiuwKJ|mCAEHb~X_UB~8ac^c`7P_w!5i{L%Y?mLwU} zO*vjRq~^o~?A*{ZS6YRD`|@x0@*r=z#-vn8J@8{P^85y3l&c4YuSF+_*QksR$I%PX z;(5a@=YuJH6$;b=%f~(_$Z@5K0dyrqnw5i9%T_&WzSXrNpur>caqQLNl>Ko{qrqT? zR$iIdskQ$BeD{lRBgI(#*ejxLx%Rf#$s!Xj3r?-b`G)v>Pa^gy9Pfd(`o z?TtKPpCXZKS_H0hWUK~@c!g8M{7ktTiqkYV7}xry@-0IP6ZX+qxEw@(DOzN|E6^jj zx*d%vEZZ|#=1DbneL9@EF&g${B)buuB6g*7xwtchu^7tZ+F|~QjYZ3xJwMc~V1wB= z>h<7aoIwpF8t{rEm1LUk`>~#Vs#vI03Y@~q>K7IAPw#~e!8lend;OJD_9u?eKlkPe z^#vx;rhD}=fvzaL=aK~7+F+NgE+V2H)Wt78;<9XPH}TYb;U~2ksMBwtnm8 zW+IKd8N@J7EraN*yCN8u4RRD)cp&!6p1~gGC+USG(~1f~ws4#yH>a*-Oue=^8X=49 z$|X;6YkTkaF>BcRFAH&PbwpoEv*Ms#{p<&ccO3S{qMtOH5_N`ZxGYY~crZbIT*n`D z7N}_OKN1!-{1w-#m!};TwY6xd!z$qjRd{7(vlW*>X@T4>Zi1|N2C(jFxe>gTZ`+RD zyOPFAH9Ur=CKeY}pKdp3*s4l8{VZw^`rwoyDt_+~I{!&qO@&UdN<@zlwSMc~6|{tR z>exZb&yl~dzsWf$ zo7UfVPH@NhEMMaCWEQeBzycJ6&wm1KqN2wMnXO;An#-SuW7b{KOP;|}8Xuv*8wtg;W=~XD#;aRYcRt3iD6%CEA^O1Dhb3h--75BjxT(jey%yu>=F3k$ z0o@Y*r2&A zd7YE%xs@qd9010}V4c`^zFh0sy19<@dv?ZT+SA#B#nWApJci@q%tCBUhxW|=5 zY>Xw$#19f}^0RttTM3`&J!3KrcljnBUnKU)$H$6@@uRZsi6im04;DesPs5jvhR3U% z)wL>h%65O2>0V~|Qx-PMZ*JmXZVm(0GmI>?@!kO+m7#BZmXw6|_ieB9?YU8?1I5X+|PjW~B_)Rl{Gil|g zvacyvNVz?vHBRX^ahuwfn=|o7x8^>Zd31I1=6l+fTn*zR(VVLg{CKg?<`2H$*S4RF({P-u+R1Gpj+K!42$s-b(Tz`Jo;OuRll9wx>rN)a9wsJ&xQlhjSH&SfhhTZBkDdn z{??wH!ds!B*&RJDwBT6=zbb74YCoF59i~g@U7Ro(J5`3`2!T{27lkLjSkqmAcha1a z8czkEt$Wlb*4-|Co-iZhhoKCmo9d#jZkb z=#IjTG}2y0COg39Xf`@&1&t$GVGNQ-iXXQy2A6SfnyWx>ud+wi?G{iAPLUPCjz?pP zTzM4a}G<5vwZmA3cS+cvP{{ol;{R%Si zJLp{D7TS><*;9P}jJJ~Lce6yR!zo-9bhAk%W{)WWFc3HN^WV7P-=-X}f531q)=g2U zG8A-^?flOm4}p&c;{Hyfd`{>NfEe-HJ2vDt;9!dQg9V$2%fsvQwot07@hHq~jn$&-C8U+-!~xs!b}99F&|2KSwjCWx z7bS}Bo`Vnb-ofa(b%A^HS;9?Mw(I9!F&}*k%z5|v60W@QvC%vCyFf`jq(^x6JLKSK z#gx*k>u+=<42*M`J9J&)rL`RaCAq*BXwGp25cl^I&(0xo^?JWosWQx{GF0gS)^yV; z=~ZW}L!#NapVBY-JD^{O_rU0A2a;Q$Z=e!-3Y>yQ3d=P8Ho{UIjgM<0pM=@%x!}ot2u>GLM{;6|T($KjE**w^Wc2kho3q~Wge2Qz4rtOQB71AT;-W0@Gzp)%@$r*{ zS8ktT$5@0_15wUpfoCKOT2D1{-LqwcnvV&Et_B0om)$FUPffoaUHoeEM7&e9j?7uf zxD@rgo{qb|s&8LZ#z`z~PGdZ+a4(wC+p{KnSrRF|@jbSD52iu^IZ>1av`+m(4igkp zrSq5#no_l`ZjrXI=RKtAIR`f%N7$I|@dQ?n&aa;Pbk&t;-Hv>`pm5jRcK(H}b;8Oc zw$+eCPTR@(U#dZci;CwNCzPU3w`L>Ij=e52Ge?KRlc#gTY(_>fcipPh)&m&>uUX#} z-;GhWXWe?k5E?pFs9ulOdG~+QdnpTx-7lFwYI! zb>_ZiHe8G5YOxFbxjxLu$LZB2@ta{*vfkrp$YQz(_$)!N9D^8WY|bkf;?G}Lk8{aR z;*U&H>HqP|(E0x8ZTjy#Km~ioPtR^QezQP<7S(=kj?5LaMY*&`M_5J1D=;1xnqJEj zWiYSNB^p;p<&4RQYLT%4O)^oB?RMafKC8OX{ihbMCtunN?Cw8Ecp1D!@G)_-VTS@4 zhj>6H+RT-nslSYIyf0cKig^aF)}C>kwMaC zY9^U;WX;is(S6uGCTc#^>d@7TLDz9Vh|=au1@M6w=vQ{d1s3p@jkn0HW`<2OJ4ym6 znaX)^TKUEsf*|gI$dZHeLF6xMz=%jC{>l5zzLU{=!>fOPt-g9Yk6S4&vdZX+?EN^{1ScXo26%uz0PmD8t`1`BDAc4}Y-3}Ou9pJE;~!^U1uBQS51c7A!;u?Ar8Gn+?A(wZ2o>yuKfN|)Iz0(}45KM&MfW5{2 z3#P)u#5WQs>*EyW{vJ+alWvP|9XO(MLl49m3A*t^!rf0lFOFoyWX!NqiE(%b)E4)Z zS{lr_KhwM2&wYMV(*SXP_zT(3^E?=tbfS=ouQ*repc^lKuA(4k$e5(Me*?wMeu2I@ zWNFrq2fTiG8`=Hjs&Th!%I+_N8T$M#f4npv9DB0y#;umE z(XS-;6IL+eH@&l)>M`hjGzjBb(icU=G^M|AdF^j)-Q=^^S;_9HP2zArAM^faDVmrt zu^15eUTci2I719U1_J{Djkx6P2MnZ|ujKEOmh=3`uQ$_A)PZss?m|oE`xOivlZDsL zmgj49nySVUr^Q7@_og5)n6TTBKU~yca42o~CrTH}Q0QPu_uB3qRwnM?H?}snbF(r< zQ!tbPtkHTVr~tgJ7zsleD+G7n3K;&@m?%oK%nJ5WyV<01rdq1=(A90Qx%{gPQ4G#r%$o zUNyr6kC%D69~L*n%{PjBx~Ols=70T%Yx0UmUs^y_%-_bQx#3TEbNDHLxZSU%ZYy28 z0n(!T3lzH)#aNa&^iI(x&v1N!hI%#dDzk;wu^8Aq~D-`3AS=Tc?31=hvUNl5zZJSpeuoD9F+Kvm`bk z)(S|1?_4WE2VqlI-rV%x?U}eQ1%UH2i1_+j^1k_fyWY%ahA3~Zu%*19w`+}vLq+-# zLRTGQdL0>=)w7}maJR{JhX5duU}Uq;V{x+$7WU(%PyM?M%{m@@Js|S>&HCL)!Wr}0 z_bjxU1ZVB1c-+TlZ?-Y6_j{~M$u;{^2n)W{3=-U|bCZ4{0Kin3d&m=67R)$qcJFP)s!5*qqmobB!A6&3B)6YtcU0bp}6vk$p}GC$px>N(x&0_`Ti9LO)}T&)8o4)I53F34^v`}D8%oz>8tC3l8h(FQ6OgOrj0PuaEB>QSiqu40o)D9`~s zqNX{xv=MjfwVmzn+A!+hQCNrrw0)x6GEowb|4&ko2bJxTB1+)cdN8{&jS1{%>N zwBJxI5k*efL*`e^~wRg5tB`uqRfkiWD!%oC4PD&pzpz_M;s|dw;tcN!W;B zMF|}xoFfjIJevL|7^@e5Rkigyxc-Zz&24s|&u4QSSc=HZ{ZtRpBbnf-jN$Q_ z85Miq^N87*nWOKaxBFL>me&h)1owU@Lm38A_}`)6ene%4KD1R#QNMpx5IW4maX;ws zyRqI>?3Id2m+%AjLEo{fHjB@~JmFDOu;vhY<`nOxP~(+KvQ_2u?{f2pYl?+Aa(t+1%~L+5e_-{=Rq`5)z+unEQJnraUnH^+g712vPs zy#PZDU;FZnM|*0#x%lhONNv|Gvp+b7MID-YO7_&%Z7*3$thV$MAGMkKuxNHojGhh% z!kc{P>zwCg459nUQznCkrN(UnNom7H5Y=+0S(AB}9SxI~3px)fvG%Dw!~Ucv{)zfE z+81pQHm^CNq@&^~*itt|#!4y4$sO~cZlH_p>>x$%Y?shbPuSuS)`KVShy#Dz*wn*6 z#%?3+k+fvQQ9(On)%Niy$(rgrdgethTubBIiZZl>6#?BQ5+{<9VZG+b#nECdah|4i z;T0CVKU>a(CA_CPvRr&5RwGa)t3>^r*68mpC24~1AkogtgIxNUJQse;aTgmxfwvp( z8!mmuLQyS}XfnADc1GyeTGD!o*DE$oA~WY z`?<%OHvHN2Oc#8a`7>{R#(}`(h{ms!mq)K{?Jbrjz<#U#&U8t=ApvXH{1a2pq2*pf z1AK|~c22fb4G!;XR3-2Q;E;F#*V%z~319(C;u#jRH?mpEEkz>BRGYF#X$jk) z$!h7r%1v1fRF&^(6f_?Lf^Lcy992tLUW=CKl!FI2uak_ifTdsQn&M4rZ%hJ4i~%oZ zhZHy=7*e$FXISg)Zn0G5|&zS$EGtO}Jiq*dS@`~Av*iK~`Q)8N~2t=LpzOdv?-Y0q))9<>LD1I>rll;};?2Q*upt|U`=QAF0o@wX! zTWuWMZgY!P_(lHmMQ2K}BCra+AUrq*M~+GAUn7H?OU(8 zeo(g1S@BXji?prU)a?(H`V)8>Qg9@hcf)1GPLRa4R8B!DYi!b@&-(_M@Xp3ZSQ#xKMM?Hx2i$Ijv?e0|CB&+lJI}QOJxU(L6xV^Tq<+3*x3jD`Hy?ERPC)_{f z)Dy(F^GkTTnNIh% z@*oWH)XiJwr@MC+sqGz)H!ipAz19XjrQkV*s*rBU)u*pI4y@-d&Ss@8jv7-&*6w@} z>8|p9aJZYgcYkomzUbF?78+~|PYm|V(=$v7m#LH}m*Rn&u#11`450(?$mO#rUyo?; zgHH*DjkmLmsNrqZb&L}CpnvHmI$(B9p#lQ6IsG8o;}5kSYcBNjmp%=8KQnLt`YU$J z5bhblcX!=%QL3*u5uw$$#0cPZTLtUMFy&iiQB96KI%Nv1DUSEx>8k4ex;Tb8AAmiE!n8l}Y++c6(dWCBmufQ! zTKP%rK@m0~lkZ>2+=N(Qa)Q6Em*7??>66*JzR`Kc%D+F-)xRcY&!q4PCJnmbO5^%3 zp07`X;vCD(u_%R;Jp>Y%3EP@`-yF9S1U~4pe9cfB?<>Y-#9!Dh3xSrb7uhPwetT8i0k2E@REIPXv8jVey)+) zT?)-RWd^sScklDLJ!)Tw?o*;&72sn&SlbK0^^FodIQ9)_qcZde+ouK7BrUIAL+%_| zE79)O?&_y8P>Q%f*F1KAPs2pd5VbAUHPz|j^-sUY4DQ#SY1VHqb+U^FO1Lq9vQSdS z3scQlN^Zf@YdsSd{4dPCcT|&0^fsD=7NjaFT||%~NCyFFf~cX0f>NZ5fOL@F6Gf1& z^o}4!K%^I`5d@T8q_+S9(j-W4;hO}{z3W@+u65V_=l5L~XOTnRyfd?B_OqY;?0F}) zqd$BPBLhvc1v5fG&%~MtAvJIM%KK{+1yzc^RBFu0ZpyKI@vpO;GcuSY)?fR4wHY+$ zMkE*-H+Nj@FqO*k91Ho-o7mBO;*+0>_q>(JHUVk3pR&|V;#pwkybEMmvdu->>I3h7t`5$>cD1@tcSh7fP=wi>p-~F-#QBT-r zuKL1_#v>vI{hO4L0r+{9K20u*)rh+ai=D^}N@!b$vkf24hakU1D>}qg2%>{8j^7BA zPNbanp7q4xhH9IC7Tn(!uX}cId&+(Ch2Q?w4m~HF4{j^aW^bHL2I4wsn$BseX(!I+ zHLzW`m8o2Q{;7Ta;VsouL2y?XxV_f!pI5U#_oNi}~Woh#DKkzLA$jfzRMVsZfrD+V0ZP z71QlMuj)>Qyge3P8=gPo>9<&Op?7MY?0rS*u7R(VgMpuL;p+s!X;-$!{X%a~pXr&m zG2%Z1il3=nPqCfZjI>?YKG|SRn`lTL%jfs^oZA+1R#^|nGq$X=|8kqSU=s(rPm`dq zYNhkRsRG;I;`mi8z9}F6@ce=A`7=I;eU{Jd?JNy^SvylGophx`cVPZ6=J@X2tIpkU z!eJwVnrQ9{Fz3*?#s&kBZm18^b?snfv6cSu%gL;Itu_9ZzFheF12E)&xE6a`fT%Vi zaK3o<*TkXC^T+0R03%aM?7SgsaBiOjCX%WWU{JFVp@BW;{ zo5Nn7oScw2?y46jTKXTm=c|2ip9ToN@`#k+#g9ZD>y5mil~~`&JiOQIa^`-;_7Sr2 zPM%Mva&%jC*RwZK#1W~KWlB#r>m25l-*SqHvo5YgI*^~}9zIpO?ojJ3e*3KJw(HT3 zXPKcsVEzd6W&)^RjqPaCIs^%bm5%1o-*@kQ_0c(UA7S0i)kLH${iWHqlcYdX>*FC91_u zAL4p4Dz8l#>okvyF^y4>q{(@3ipj34N2M@E+*a_uc{4(y#PP3(MVOrYyLw34U32Wh<2bD~>?*GJEjZ+>=CM&!HTtCC;DvTqy0SzxJJkAx)PhDL zT3M7UI#figs$!!Dq!~388chL#w9mr|gLtk)&{3yI4j!&XN}}>v%Bz%eI%w`oG^6Ia z_>-jHE$15~T)@YJSSX=ws$ia%oPn)t8T6awPF6aPq;_t6P2*~g?Bj}{6G#;gS6%Fs zsTW4PnM;ri9`*gj1Du8lx7=1>>T|s0JGS{&;kn&M z{6xP8E^Yl{l)h)4lAuyhoVJ%3f$R7*N;+%|!K)R|w`{C}y1e^8D=M)k|G;9)#zz`0 z*%BidnFj{zPtO)j|JUdQe+T9w^nU+Y+SbNuv2{MQ+T@R#K$7SyL|sueshIz=(wF`hBAMc7Oq4L4T8&h$Q-(T0#YB4_gb#_+LwEJi9gv+Gn_club zb3C#Bo6RQojjZuNcI+?7lw-^M#QwO$JloXKnKQ3tylGgTZZFU`mEyI~f9X(vG2kEL z>>e-NdnAaNQtI0P&^_~cZS46%&#%;+hDIJI#(lp6n`5r(vH!QFcj%p%g-G$@<;Uz`nFL1$gK8vU5+l(XK^;$carqStDkkd;C8lk zl$_f%bw~N#WvZg}{}^_CjqWn2G@(Ahr7?e5x-osbxh}Cc4TQyeB6Y|49o38O{;&Bi zc3q`22Ma@uWdJR^?nk7?#1oKd||I1R0h%rR8oA9E#kV-r2%v3Yn~ zpMBx>CT~)b{__rZ;|~7Wy}XO}#cm9Y4NV;yyPdz~8pmgUz!q_%O33_3x54N5%$w+e z-MiQ&HrdXtNF3jd>0NkNS1u1H`9ld+uJ~7Kft5RMX;WX~cYT*6{Fcg$=X1u_=ZLB% z?%T-q;N$=B?3diOm`Bt{WPFHx-BY>WTI6hbxqBz^kFPPp00xcjS2iuwXMCw^*X3$1 ztfkr9Y;1hJE2FR{%;$*aq3qzg{U^PR`v4xLQo9&~8Bdi(+-O zfqSC+wxz(USWcEve@UOf+C$%#M~f!Ier|3NhPHY6YQ$zM@82$hgx=XQCFPQQGD=un zcIV`0y-jm^L8-t;e6Cb#LP!sODxWQHli2tZnRC%&2RYOB@vM{A&|TrW%o`V7k52Ovgjj&7`hE=Fly;C>MO>hUH(%{A-xwwzQe9el9`!I4Z*z%`>?0@!pq zgRJI2!r^0k6YiaKAkT|mr%~5}9TLH>n2-QR=t+N~koVKE!I;Q6w-Gn^nG!n&@D}Hi zEy1B;LUv#VLR8(!ac)=V%@@x~dWdZ01C<5Tbh=NadI7fP33A6Dwt~NQ+k&-6UI=yK z@FG2DYAT@@fsfe(gSQ=96u&e1ZRx>QB`Jeaj|nvh-=~C;o6>O$Wl(=MBzAplrK4pO zQH9Q#{8y@J_`3$s6ToJaf|59YIvGB4B zGm{n>OF_!pQRwbw$E}#ibo>QW0R%&+2;4U@xXzzSL?sS-nHG`y@_G=Q^%s5|h~t04 zy$aF*s8pyQW?;r-TF7l>8RF0(DW~QlIyG06byxG>FG9|WW3e$sIa=6Gzwdk2hWN3N zc2+$Czpo`qqRh)?>Ucp{r!I}1!>#|K!MDLAN$6)R=v>ne#~-WZe7p`fBhfR_|JB7r z@G^h@`xf#}CYt!JjizIh@&(h)OL&p>bfEI5164^uf0M4ZmB816)IG<&AQ7n|cqJ+- zOOv3y^&_v6KQcFI@nJAdcN3pq8{zesxd#WcaE;x}6`|R3+76OafzrTRPK_}dTyy=t z$v6~Wy$THItKrOhdYaEqpKEGE#CHWQ;TP}`t29)fMrr7D-c(u%i|;rd9c5Mg?9SNh zm_|v|A`Lpv?G0f`aOOQD{QfEUns`Cu;BIcF3;^>S?=D7E&7h1SgU(`Zg^qKG8U3Z`6-1g8q{MfT<#$)ca_Rc z7ns%eQ?d9{6tO@mImovSfBbgZBVLtJyr+m?JP4&G!bt1e+d#!LMV>X~;{&FB1|vzz zHvNBoq;y&{Q*I&0OMzXelp-e81&ou&ALPF#KJIJdWgyw}PZOj`1(K;iX{mrwc8mi1 zYpVED!hR58kzOYZHOQ?GFZh}8&&71-i{Z$1CA{_ywQw1PU zHJs?y)VJcNRXI~rygzeZHh3@it=LDPGwH3H_=le8+L=eS|2k4l7;A7qZ}ig^16?uk zHS0U+A968?#}d&5XPx<_kLM1zV4*o^&p@`T^xW79x#u0@dj_EUQGwB?>R?A3z9=h0 zkzWdWaIos|aKA`dnT#(oQY-2Z_ zSRqOw1{E(La>Q_rEV6lrnAw^Y8WUH>AYhbyx^e>FHbMoic9+@<@qa70u;-l+LJ>(y7rNPW20q_f@u1lNFt z_J1}jZ@1XXT@eh!iL6Qgbl5%`GB&u)rA79u*0$#@XTAH6;7rBG4R-7gb2uJ^eY{rg z@cK7z)2h<;V+nod!viuo|3kJ(5AU&Tyj)aA@TbS`IT1Mco)WsHD6sVw#$iA}k*L2j z9=Cj5N1)O635)q6j9ek^*>uu&IZC8LaW> z|A>HTny(R2zpkUXkq6~Aj4e2^kj$a-&|dU~%zWnHJvc3q(%rPN|rGvvQbLF#`T^ zZO?z#_vWj2-G?{Z3T9mtG`p5evh&RvKaWfI41cK?eU|s9^!l=7r46mtq}``K<1YeS z-_!(3H=EwT4)TQDr<{`_AbULl67wOfsv_dli&D{?!SIaRmc@OHY0sn^N?FG<1$N!1 zt3-X4C`D>64ZD8o9wXY-g<-4RZ^_EIfedxS_`{W&FrD!d z2j4bNe_|P-gf@Id`u~!6&OJPTH2`^;^e=DxKtaTN()(mWj$WjchLy_7xD=Ps-A8S^ z_yici1SP=ZqrRGei>apJczal#FGgkKUl87RJ%v&H>;8{s1ji=4b%&LJ6NJ}d%LIQW zyv};qM!+e;$HPwrC&Fv1p9F#I^tK-&2%+$QYa%a~a}CTKh?DmP{=G=Qz^DBP8ja*x zdvYhA6Y&J;1RmA}S6Dd`dX;tNoN^xwQ$$X`mpcF8_IYIz6Q?m({L*4#A@nY23$mDfO66z=Uww{>t0zrexZ?GffS%&zn16jD! zE?*mef+<4!N-7=M?&KOG|F?I9O~7M|a}DJbgl!9&f9Z@sOPb~#kkRr`JpIYi6eTo@ z9~k2QaoA%2t==%(mxRqLmQF1fbofK&JR}}ScGwq!1;1PaM*W3P=d%I%&$Rh!FweO;1HjhU*<(l&rBB3e`E@31Eq%2)~H37I0UBYxv0#RXeN?ZOCQN;8-M z0*L-mS*Q$YT}FDF`g?sI&2P&*Aw$$3@x>{Gr8y13VA7%BOuHO4uFV_hujgncDShfn zN=kmtsr26)sOQ!^r~J+rT&&d1h}UhRT&NS(EbLg?PM|*J0nL8bqknu7nDK}b`=tHZ zKu=Y-ecg6!Ns9TiG$INC24V{>t!GW(M5J*3*q~yTNGT)(1h1X|2vJ$ix@8vXrt|Hw z#za$agC{T9tF9vc#)9LfCE`u^5h`F05Zwo!15Tm1v@#i^391B`n9Hae=y*Em{XXyX zEHIKkJHa$usnN)N+0v#sV@!?}@-WGcdDAA+$ge1OWG&bX%hV;vm_ zQd~uPknflL{Pxzxs5{v_A%2vUUV-{ioNNxZwlYR9!7%^3^OJfnS4tnck)Lf!m5`G! z7F|h4y^pUVmh`IZCxtN=O-?Qc>Jj;T5W9egB4kON2%>&)N+T!sgvic!aVQNt&S>A>7`h*;IR);Kpeh#0UHT?FE=AP>Jd`B15H%5xHS?_tB~fCMo|h4|Z~Afy3)hrdD!CDV4{2n#9>`2=-_sn+ zNu*2&xiAZ_e-aBx5 z=dm7GxXTk4mHQe$>sS3561s%359kZE32(7%dXN9ILEF9l=YwF$)jVwp=}~^T#bn|pSSwp; zKUs5fsk;Wq6D?PZ@pzO+49=wVrrf)!IJenjKT+*u+q7MM@QZ?hqqhEiLH}{W}ngL16YpN!W z@r|H+PLB5d7@n}w%g1&@9I zKl=%Hdq}ACfqq#%%7^8nO3>#_?Ay`{kaK8L%tOrOUg~lv;##aq)SavU1?1Rv1`|1~ z2<9=m0v+beGH~V-so&JbHfOQ__iKPc;YTROGl-UKYC-46*u2ZikRbJ-z^0?`H>pLS zd@dl_AZ(Y3d4V+(M8UL!y?DH^ZVm&PB6@Wd8d*c^~kG;*e_jZ#q4QtD?e=-Un8jxG`{uJ!1*5Q#P(1L z=s3CR8x{@&ANe0k;=}IH9+*5SjyNIuPRR#!3tFD8DeM@{+kL#WFc;8vVv5l~A)1XU zIAgnwVRsq#!Xll0Q(=F|m;#p$@zEDdDEurm6y*<1Vw_OUIYctU%PzXO4a4NKUFi23 zDEV22))k^i7iGGSWkz7DkOmST1`ke2nUd$_(u{AS$t*54n zY3LxQk9fknmTRX&uCp>NuX6SY5 zr#=Wxk`i*@)=`g)EMWfBb?Ie-k1N6*H-0lVDIZ=`6#Zjua>fx_9OKAdu*^Sq1l!}o zq}>`a?9NB^z}AUcw@Nicv34d@?7t-y;EGSk*K3!N8|Y^yjE=r-Iu7Yir!;g07HqD5 zG>%d+XEBY#v?%{MB*|d=u0h`D(9LxvfYGunp;!0V{rA52GS7_E{>?=Of}{c}MNhe~ zMBQ@U7-qEK*|>9zG{3wU3oa$xs%AK`450W^AO3~aW95O5lKE`y7H))v2$$q2TwLXt zRr`ik(NO*Oao_mJU2^&pPOGfy@Yx=nX)c+f)DFs~&gwSQjcwBt>n7XCDU0#&HRJu$ zMa2|saW3xRHMg@o8r3`%CT|z_I25BtpDsR!`q{mmi~ms6=iL}l1Q}3uj2K1Nl%*`v zs5nw1m_D7TCXDtSdoJrAGt4>Euv9T6^tR0zJ^ocko?%SbLW+oL*A<_+qEQkm9|>*j z4-&Rs8h@Q5g&yXeD#&E4&PcC_FQCNkp7-x`Cu*Ds5?)5e!{VKG=G&!@NgT7j?J?afv2nPPJ(~V-s?R! zNc`5!-V%Bdp5A|a6+FCK9MS7P>+#O{(&f%OjB8WM8$wTs9M##{_B`5zy;01EPE&@; z-G`LLS&?S{jG!9RORkuTCb-me7AWmL&Y33|axxM*H>J3NU5fAv zV@G7a5NH3scHrZZfW4X7NJ@u;((I)8`~Em`dby2Zo|D2SWVXZTSW~`jY;=Cl|EiDImmAnh{I!w^Uo zX?1d1Pox8ri8|QAVtd)D9yF4bQS~ydt4jmwuc{kjRec`mf2C7;Y54_4C#WQ1=I`Q` z!PH7_z@=-=Ys~@Zf`U!tZtjE7toHKry1jP#9K~Mn?pStWJ~mSARP#n{MU8?u`*CB{ z6Q)wUDip=ZOL7+5cHY5D&J8k0WkGr`*L}eG$2+nmPt#8+^E?f!KVK8EI24O2T;>-a zs!zL#%7+dCv2a6h%ZHjtZEtd%@-5thEY~}H^)hioeIjgiNqd;oWcIRkG(a4Jz8-Za z%?UkTYiGm7AME0@*8#=2nW$F*M2pXP(DA_Y?mIhqXd2TW#hTQUclP4~u+M547eN_A zcRFKSRno72YMwwou_Tpp zE>Xt2)YgZJ`qNMjAuz6Je~4(U?TK(k$^Phs{i*QiMcuPoi#QvVQ`E~G`U3!=g zMTSg_nRFu8hTA^UE>Lyn%!(<0|_p31n073FU+jFhg8%ou)%X@8-(^b96v|yu_+@zvzSNNbJ%t&0v&OK+dwEV85$_%hV)S zlh>Z%^@S}>;V7~5A+l|@yfb?gsPUSK`|!q<5MTKFgr_~J1El&foK`NUiOQWc^GW-3 z2z9LEkwsI@A7e}>*TOEX#jBJqS>?*>yy|*+(lj5JD%T#q&%QlZbuKAy`VL%BT9*9i zk5t5@`g6*OLA5(~v7A=Fu1VAu#rS@#={|TvUPdW@dpdr^TDmPEiu2!uJ+P}9XI7DP zu4r6!Qn2o6414{H28xVRM}{Z|2EG9aQG$19CP}E6*|YoMeIr(236&wtghbSJh7C z+qhfW+yC5Z4P|9uHa4Hwtg^W!;B?u`m5vX`m*@8nk7V2xrdQ2>XAx|;syn&l!Z;z zxI1K>0i)YuJt~R@sPZ93)dW8Z4%L$3-%1r(Z8XT;-d!wF6Mw*;Qsv6n;`)lE%sXLQ(zLRR0-)9v zOHz^C-`*cg5KJH2kR7!XX}1!Db@*A9LJv_@&}bCf**IpFk2>_Dm9DgNpy1AKNyu3_ zIvTEwU!;7|`G-EikF+iwCB849-GPIKiT1B%FGlISTC;mm-jU9BRV;B`wR!XDf?KUG zgQOI&L0-|H>!oXjuNVZ`kEm>5+m4(;Q=*ps`UIkZ(Wf7O91r2LD+jvy7ZCa9^)Q0J_gS`NNpC3G z3&|-YEcI2SrT01KDV*LZTtV=|VoT1UW+9Kqjf@Su;hF~c&m6r+vTzV{ zSmlw}=UOUYyU*KPt3YfW;m-9NS}zv{OmP~ncp`i0Z$||xQDLRL(Ba))mqT)i;g#B1!az1 z&s0!W6fEugra`6>6tA=KX?9TC`U&u|o&*(7Jlb8%PN!`C;$Q#Wldfr<>$FF)iPjin zo`#=oSDSV32F|LFrb7gnTcrb4uRHR!G)~W?ti4cw$8-+!s#*6Hr|Yh`7tNIgny>q< zF#o9zDH<4+lH>hR6e^V)gOLu)Ui{q)QN`Tx>iy z^5oZ1a?s2~l#7HJ@=gfZIc8+lS=f=LE{V@8?9JT6FVqkRo<7h2_=9}LUQ4yxWWP`%!Tcza8&&$3G|-UHfn`t0-xS0ESh zm$M`N9a1MA@NRAdQAHSSAiZ~k3ep#C7jRj2AX50`ozQrpE;b!<7v)a$Ft~wGyNKe< z=2z_r{GDnXd5$S3zWp}N*xUUQm(F8upCfPk$Clg*3NPWAm&YMXE~(1_^N;n2oybEX z8m=AWf5?nrmY(}4x?J5IR#epSyDlQ6qhL-XBm^$-;r->8Z$Il#2E!?@g|6zmmAVeg zuCrA!CEa)DW?vFp!uh4;rY(D~e_6zJ+og%Q`nz@)eUcT?%or!Gd&X_FQerRA+x&gk zl**C1w}kHV05s)ByX(1mqOYkHSz(-O{F^8?p@T-lS4C9l*cgBPZm1D)3Q64=4>rfM z=CYB6+s>knv!5A&Ac%KTw?ZW(Gvj_nuLZ^|rlpTyu!mOco-j6{A}FZlZ3Edco%U8iq8x1Gc6W3AfHd z*q$wp>0>)LN$o=`NhJB4`Cz4s;TW3M_^`eOki}8lfL1~LbB;*uZtYWz`J$9~En`_)N5p0Sz;L9J=`Zv?r;~&{_=M>PHvQcaa)vjz6QyS30x!{cr~DjStD> z+x?!PX;2irbeG-##QZ)rVY&WD=!?lMyM0o-(7zc+Av-qW#ZJsUYb4au%4TD%YPmke zRTYWMH~$`p&lBB7j2U(jr%~3i?2*o|ek(j4-@S}AMo+`U+Z&xvQ8TG2BAcJTwv4T5 zn&?RUW-fa7+4e(|t2fuvrXh6@%O%yM6bmQ?uVr9eN-5-k0vV00-o1 zP?RXD@%^Xu4Uan-7N4Mhi0nyl3R2O(ns)r`(!)xt_k+>z&_31X$SFl z>2~7pHNh14Esp=ke#$#u2UFwA&i#A(rO$pepn1`&JD?t|?~6!s zQ6n%4{DoPFw*Rp=#Kfz0`i2f|I|FJicq??M44R(c(Mk}K_TfLGr&e{Pb!c%Xf1y&WcG$H zI3?N4u*j%LULd=i*n`^foRDC)NL7^P6EXujvm%uHVxZ@^oKriwCC=jX5wPYT^` z7ix!YdmX>uXdvK0o5X2W5qaHe{|`t3HbA&%2(_8(q}@@B{KX3y8x*Cz+DT7P2@BhO#(U$$PAdwj`V69ITYb1OlCgXX^S?krn)yfZmkXb(Xry)Fe`YT za7aM^A8ttOJL+GaemdS4iFvcZqcJ1izc(1>4w1Pq8`^fJtq zA(vu)WUl;`Y4jVBaz=foZK6Y3@n&zc2Tb2!3ZJHlyxN)or9d_-!KI2NvR%Z4*b+!= zNpU}|E8@V{Fc-4f7^J4AmgNsx(>p@U3uCF!zIt)j*O!*Q2)0(gd2z8LU#3TpwV;S$ zE)VbwJI^%mKlsQ0#0F2T&y^l@CMP#0okx8V4Io)p!A4p;ixJM=qhF z0`RY@s>*#a@Tl1B>8vLh6C?Tx2J7~hs6COVi(#%23cgFj2V34qEGLqcJirrLP1c^c z&IZFdVNG;&bm*~unCh5*+^a(^6<^`jbql?n{j{{SSfw5J0NQToRDxy=@o%y#kp|W) zLn_&S%NXXkH)R@~VoH=ThG?f4M8vIKdSxf|unpLIW)E>k9e4NL4Ov-P_wb*?naZI% zHWg2dVQCN_1|cY3kEAjsz-p4u4oMpPt!9nociaaa%X^=emX`MC+;$R)svw)C{5Odh zs)*r^=dc$p;p$${IMNBx>B3oPSSTha4EpWME_px_C|n@SsK+tnZyC`wU%So1LQ#Uy zwsQC54BtO}YdHGz$|ciHuPLU7hli`E-}8h#%6mi_&+6U!R`=v*#JU2;1hb8v0}ha! z+_k`Qj$XJm8rky@cM0+*lmAg8jUxj##f|MmQ4fhjXYv>k`&eWpKRVw+!5hs(lM~Z$ zQcS1wzqtJD{f2G?$CnGza9cDeONq|%#vop5 z5b-}Lf6j(U=Z$8o3Z%VwLD`AYv45<>W|y4ZC+@Fv|Cd4Q?ascZYP_jBd5_XkG^I%; zuV%YEhtH_5H48$z8O9n43T%W*oX$I1!e?SoC=_>Y%zan{6+6p2&4WwW0-2sh@~sB~ zliL#vb6YdR@*Cgi3V5>@E5;3`Y$Z;-SKRU2){>s25GHWVLJ{t*eJz&5ENsPdPgPx1 zQ-xxjq?d+x2*TE}>7#y_l88=QOJDbhi8t!=^FR6!>9-PhUB42S6@5R+Z`3^A4xFwM zwlRSAL_fTH$@AAIX8USW-?YW!wYgWp87P?^IxMC)TEB2e6_s1zZv?)R+kL%vE{N4_ zM1K*S5=P;n{_wm59>1+5k_!S`uw@oyp50jV)3Eg1Pjr6|Xqz_8!WI`j8>oS+=s-fp zhh-~^iX2*s2ONlv#Hzu7fn8kQN57CN3JsFLe+jy%B0P1i%b#h6z?ZesP6^0lk2CLz ztN{f-nI8>51-nnU$i5SYqrJ+K&MR(8O3Ft(@qw8kifS5;{>)MOZh zSQ~^#9YHQgw8+qo()>=|H352RWLd@rUej6-xy;8pN3& zQaUsjXSKhV=?SH68eHpA;-M%Wn4FYNFI^x*pRls;m%O$p+qY>C81O?Q0P1G+*bf`~ z%d!XL5*-rlE_nKF^Gp)BK+=DGhtP0yC>}2A#cT^|6FGEm9?>gl@Ps^d&ej}-&?=62 zXWfsKJNOMrAvrQsS(-)(Qrn2+9ydf8ekv$fLGyP|XR^$}+BX#Srp=O{=~c=LB?##m z77eF^$Nh#rk;q)lE{BZ(n!(vF&88Hd^bEmEHN=!CHS(FqwtEsBm2>Gj;`XgaA^YW_ zJw(&fLmnu95;=HEil)~Y^QWO@J#vS=v`s(OB+@4%aQHyL+d|;7<%eI0_jt@_IRa=U zvSVsc{<&(DEYwF&N2Hi}qQM^{81e>|26EjWTx2k2P~5v6R`PxGNEM>tJvPwvibk$l zAz7LbJB9cb78E(a(pKMoD+q16H)Hdc?@t zDQ#B(!i+1y7l{OkjLw@Koi%?s|9XvUx~FutZ^#*6eC3k0AtVR2>HGmg{qc!LgMRCj z>~%BW=rmYxCx;!#n-BnYqa3a&i~Fp4arNi+1Qb-3YK2>eA-P0%AzQn<#?^C542Ff; z`U#o`0_K0`YG|A8D#E!f^&|v)HWl<3jsoxYZQp61#Rkx(B`$i71P*84lunE3&-t2N zq6put9P)eM;IK}L(O>Io{G?q#_VD6+f4$mihwZH`TZT0sJYMFD5)efFoM+lJjZaPe zzWfdQ36G=RIS{h0Vca3?0q!oqP0Wcw_$Vml_vWAxEZX`(+f>UNpH|}ozPecd`fNR( zQS{Jp@h2NR;1^<7R&q4xq06dRUF$m;T{YzKk+!J< zeE~v5L?rkj<@g;`2R8iYmn2>zK%A~Uv0%V|s3y+HKs^ira4RV{93C7D5g9`dP*38_ z*+PUPbZ^(?=32G@=4yjle>l`E3FkrXMr_hTBCHy3By}xJaEPF7mClDqGL{p{5dOm zp_516o3X$sXUi1+%E+_rd3kSAp)KhJ4ECzu9XzSD9evg8X3idPb|uL66+j_7!_QWZ zfj>-h)4Y~122)}vG3bZg^|{A#vk96i@)>HhUHRGt#^6hqQ{*&jz3Opw409#p4C@I@ z;jPjbotW3ZBSVB6oMUVRJ`GxHu(2-~!~99p?&)E0J8u4Xn$>D@)&)O*QRM6fZ#BKx zu|H{>=#d;jmwGmjDgYk6-Fcx_RQTwcWebC#3hyz4?pehVG7ly!41?UUN=5>1ssZ>= zMVG~9-CEd^6NpyeOmSaXj?QjKX-vO57$_e)9!ZD1TA*E6Q*Bgqa<^cxCR;Pl<)ZS2 zwaErUd<~_?B}cEY4OQOk>DRPrGzO`Q``*ClgTk#nL?^^`)qp7vSyyaci*0|b{P2?l z{TqKhl_gG0nW3TK`s&)+WVx&vE284baVwa=#I+IJ)m9G~ED5HYwh6_XeIqNTo09#g z4m4cS_gv=DMBS(@PP%pEZXyI)?FP<&jbD3?-`&~&Y>`kqSSm4R>irrgE&!wPN9DDD zM-W4RCDTzoTHTV8S6cU4&yJ03$qx&m7SxeuA9Ut*?bi0ndUE^?Q*skmX@k{;1*}z2)Mpn zKygCpTTiAJ#+RZN_j7qyQaVYE28_&(82>k2c?= zV)sceeRIf#k$0%uXf3=B#jD8bo~O0UOB|Xi$7p3V3ueKz?F`tcU6$?M?e8w_WNUm{Djj^W?fzR^TLv_}lat3enLPOl z?(msbJC>m}bkDeNL^kY5F1!4q$bXn?m zZN90_yQY-LQu{$O@5nK11+On#GjHpg;a$V6elFtXXCjm4K&nFXjyTy_eH`%mSiLff z$03=|4V}Bh&A1dG_oe1zY{6!#*i0V9yLa2r7jz7Smp`GN6iSG8l(uEZSOn5a1knBg z9C-BUQZD%Za9_ZGUV@QyygOk0Tu{K*nIQauBj9c2kQ=y5-l#2g80|2WH#>s1i3k9o z9Fp$7WJZ)`{wL$c2LI7gbB-O~-x)y`qL$sCjJ($>lG|$R0je1(KU|I1Y}ZuT-QC%l zl2@r!sd!Qdke@#Mj+sf8#I~2L3-|}fO%?!DT;FHU*y3(F$yzGYXV?vBCM5cV!3PnwbOenkYKtMpT#urfwpy~Iv`fd>cY7f?0{{O1 z^pD$Xp;JME$-l>IsO%bhKq9-$*4fJ!luKrE<&Uj|-#LNUT{WN~kGFj%u?UhD#vY(f zZ|L&yggA%`kp#=9V?}~~XKm;dYDbbzDeptBL2QsTFn6_Q22oi*><+e;4k3%MASlUO zB-pMbjlW?I=|82+5rQpcAGcA0r+)?WW98EYje}4GuG-)=uX2iK|88ygbWc+!`R)ie zqQ5&1In!ZS!F7ce=xqOU0vKUh{@>KMET9P{<2A$nUvcK6T<;TpO9J^z%k@-E6=Syu zqMh^G7bX|EJT8QEe(AOFE&_Ni<}YBH-D+0^ne{X#5 zRGIksljaxt$_cz$#r+5(~q7t-zK|)NUDqD*DJmFT-}8wDl6|t-XAdf{+}1Pq#;0b zjGviiM)VU46Z%V7u3W6AOB%m;t@{7Jzww`tm=&y5Ft`JafDS<#Z6uP3=vev%z+Y-m z)R-KQLhTY%pRCl5Q%7FQc^c+@Uil$O{|8Cgm9;fPC<~k79`#$I9y0CKP6oCPMYu8X z4#^aSkDY#Zu<(5i-Y!b^w~PDvPE`1F6>fg}cbf*eG;=-rUZ$B56HU&r7k@6HOVE@i z7mKGE?6?b#dD~=dZgzVb!DkFiI2_xnZ{sOhYSVw8y+}mijyXE>pxj@e)mjp9VQqM) z^Svj`QAWr-?hM!^JZ6|kP>yo~ZAaW<^LFh{e*Bh2`&>$_yN6Cg2O&Mtxu|U0{e1`N z`OdQ^H%H`N?bi6~7yx$adp*F>1rBT--Wu=TBA)H^fU#2c$N}_x?zD9=@lT`&JZ#b= z?b0;NTw+(&ie-BICHiqd#gkQnub*M>B=SpJ+}CLP-Aer3Oc!n{?08#c>1}X?vR8}* z(Xf`>E2b1D*Pa0I@Jy1(scx^O05_Gw_OsVM0R(6#IOOgeUw}|*5FIls9b>552u6)A zexl!=H`~QH&fK4-Gpl~WpkNTcfX1%=y8$}VZ|egYiWw|m*#$e&H^P4sHN9X8WutYd zhs&?(eq9xu*%^08mlG1|b=n@(DPo@R$9^T#aj4%OddN1C?lxxi=}ErRch~>)vfc`*rHW*?M{(m7WncjDzkq5y>>x`1AL|d1fMmPC^t8^ z?w(TH6RUxoN$)Q4;R*5Tlj^yMWF^m{!=i?RrClK`2_(C$xHW#`IEy}(GlOM2J zEq>XX4JAYB(T9^*& z1}s=2;DH8jDoN**`?T-yYg&Ql6;JR4(hkb6Tm1e>q4snY*wlRkGN1&9j~rssD0k-uioB|RhHNQKdxvtV`5;~ z6LB1BkL8oUVDoL@4(*h9YJw8Bi5? z8a7SMenhLQmbl9BeAkH+`@@ZequYKoae4coql{mlPH|820rNRk*rj+)FIPaj>f6}- zk5brkAM>u;FjUHx9pifGndq-S5#wm}@Ksr&L(i-^lOko2qDt@%a1Y~f+Oa7#KZXtI zP89UuV!9H=3hM7Y)8sM>J`du1raV>a0P8-oKej#V=7@6=A!G!2QI$6~6x97v&g z=l$t4iXL6djdV+Y8rG9@RR0;ld+b*3223^Heu{8bz1P4~1_hcbxkRc+8ZCkF3Z4M$ zP&19Z&)zF+26+G}7K*7@+nge$HIos_-r{Z7W2l1pgV9J})iA8+7bbU9mQIFNwmHad zQm`Lo_^$CGX##1DfB;D1aS6+7BJTLC-pGF#Znn>WjdDvaf(lZxrzB~5d8#ahqCcuC zt=aNs%Rh|ZpkenpCwVh_ixMM+mWR1RMQ_-RZS8+`1{nXL?!@1I{Xov~BK8XADkx>Z zSX_TT)O&b-I!kSNg5-z-d*pWFPjz(hyQWHduyCts#s#G*f1)ELl_e6OSi|aI)gOIV zC)oq$g3^H1ni!dH*dNKwuWwDo^aEK&5W$;zrjB6`j=hN)2l-(T+73MdQWlDf{0xNx zUCHC?_22__)~mJP$*6Ky0Tf}W!F0*$WP3JGZrGk&5N?$MWya{m&O~P($2s_-G02@L zyuG||GEF6mFm5OfaI5j>VgigWY^}mJ=oRQBuVrtEV2&Xm>ugfV?w_`<5LjASsddmz zk8fdEgchms)<>~-TphHo_<(XohNE*qM86v+U^r&Y_J_!i!L07$o+M3AF@uILx^28S$Y#0A(!&Ep>vipR-Kzv$^ z>~EuLj$(s=%y0r~Fg10=_Uf>o3g^1gaqJUA5JWE*xf+$;Dh$V=5fJ97KLUDP3K#(mG z2=AcIyub2CW-^mI_nz}TpYJ*M*4y~t534hZ4topq)(5(iqxCq0uX+2)k(oh#-QCs! zol_QYXff|%e&msucH$EZWY%2O{!a4Z$L8i{t=xyBP>{JiXzZ@Iu446X)Ar+c?V;i- zDCZggvD3U=##NE^bc#7hMR612>*x21vgLP6KEtHW-cPg1<^po}#oUH|4-s+Qgw04~z_+#Im zGjrr}+to(svWGa@3(;*_N!0%GY{40rh<%Ftn)Wp z)|v5p)f=G%-pH9b?_rsrh9e&nL{*0G{us9uHecuZ;Hjvf$hgj=&FU)B1!@7u%iLg6 z_lcN6sKBIP3$&f&kbX_R!k_0>&&8EqKFU_8=b= z{`ZzErplZtb4$}1ZsVn*6zKaHKh!G~&0<8vB#iR%iJg1#n`l%lql4vk?dRT+P?j5N z5T$`5qEggNaTAer>QNBBTau87V5W zPuGg9Rm*+<=_Z9Ag1)O#xhmLiee2Nf#>F0^Q#Np2O))gYeD>t|-4TKX?IctSpyHO^ z>^Mj2jYT zolHW?4cfxG*f7=<7V-G&Nt)e$YKwku*jDIfVSFZj9$od}+<-9%bCP`F_~@vZEi8Pt z-#l)1e7CStKW{Ot)H15=?%=X=-b|V>-myG|+}+J6vru02y_|f^?#`0(EL0X#|9RsU z$Y90cp51pX1M;idx0>K2FWsDdQnGZ#YBgGxIldFPn<@4W?hZ$ML67p29c)MC&2{Ym zbA|9eIQs`k%xQ6c41h-ArV_xk2|)4oz_DXL(eT8*yV$jKP4_V4Ea5Ru?8vTu&rWKl z7q5d533e31b>d5$u>)?qdLy_R4CJ)|nZq47nAdrj3cUxqdlUl>_@|(tl$~f0CEhH` z1hVxJSiS~w|D@?wpcAYsVn`10r%p|5dt6va_7IjX0!Iu>NeI}v8JTuhO*d%ZA!1~s>wB;Pe>t$639ISvVb;L#*PvIv?wwZ6w zAiTo}F~Qz9Y)`v!(ltIYGDT&vgT>foLLe8QPUro@z zBXMdUzK$}-f}^A^tJWDVN4Wb$8H71iFHdq)Q@>CfD{#j9p|jGD@pVE}`&Q}a(;jZD zuj&j7(x)#HWdfwDfzC=&adap5=Q8|@_7OLOx&R&*$IBqTJ)NOIGd_myrH)Kf_?jqt zGDn>kOk#RTFG2ys*BKt0-klmNd)hQVpm+u|#f>+tRM4_^({^Q&Q7h!>8N!#s)n=#q z3%Mq}E>SKQ`QmlTTgrotgwqY7tV!%q^j*{~PjbJmQ+-Xc@)5Gl&Yf&;^CO8fqayu9 z5I_u3C-u4PjFYw@H9J(J@2&U656zM}7Aiv2z}iODdTXZ4R(j#dKZ9cXM3-0N^CQRw zR_BXySo3U(gEeO+hQzc^y94giaTVWUL}S(5rbvCnRVq|fqUEWGYxlecDM-}QGaCZE z4VxfGNdn46&Ahm@`I?-Sw^5|-mZ0Y!%l zm-6CC%pBgjG$U@luQR^eI5h?pbh2$LnJ?cUy@s^DOzjD?sVlh*<6&KMUoO4#$UEYM zcf}6{A4;Z%5BuiD6qnVUFu3#bDHK(_eqKMBQ)q3tMi4;QWSkXx>3iX{gS3alY{4o~ z`ly%bdR5-|AwOOS2WfVAQ&5^#v!A-rCnd#R?H6~z%inQke4yc-U1S{KT=^=@<~TOk z6M{*MbZSpA^k;zdJBBaZSZ~CvO8F2tgV(H^Y;EFE549Rs=J4_eP9kt43d?e)wh0tV z#dG!Zn8dXC+Q~NiCliy>;LLvZN8keq1=4|UY8drLOx!>D<8&tdz!PM|egvTj}HEN=*I?B`A zTj;JS7#SVS+w62bmnL>>hZmejCJ2wkz?Ib@JX(AURMfEw94E8UGvG)u{Qnq-)60er zu&8?HAzNH-+r00c;`Yp{ZEvfzP!{t2@Ne8~q*;(!z znF2P*Plg#H0KoK~9KYaC=Le&c9+c_w7PQtpkD&}ed(!3-a8UBKoUTih$uF=I5N_hB z;hx~dosYKuUWp!T#H_Ci~E8jcCVE;RyLn{q{ew1($UI literal 0 HcmV?d00001 -- Gitee