From 8071d18088ed5611a7b369d5ac6cbc9f820bcfe4 Mon Sep 17 00:00:00 2001 From: suwanghw Date: Fri, 29 Dec 2023 11:44:08 +0800 Subject: [PATCH] add README for tzdriver Signed-off-by: suwanghw --- OAT.xml | 1 + tzdriver/README.md | 78 ++++++++++++++++++++++++ tzdriver/README_zh.md | 78 ++++++++++++++++++++++++ tzdriver/figures/tzdriver.drawio.png | Bin 0 -> 30305 bytes tzdriver/figures/tzdriver.drawio_en.png | Bin 0 -> 29902 bytes 5 files changed, 157 insertions(+) create mode 100644 tzdriver/README.md create mode 100644 tzdriver/README_zh.md create mode 100644 tzdriver/figures/tzdriver.drawio.png create mode 100644 tzdriver/figures/tzdriver.drawio_en.png diff --git a/OAT.xml b/OAT.xml index 26c7e29..ed4c568 100644 --- a/OAT.xml +++ b/OAT.xml @@ -96,6 +96,7 @@ Note:If the text contains special characters, please escape them according to th + diff --git a/tzdriver/README.md b/tzdriver/README.md new file mode 100644 index 0000000..116db16 --- /dev/null +++ b/tzdriver/README.md @@ -0,0 +1,78 @@ +# Tzdriver driver + +## Introduction + +Tzdriver is a kernel driver deployed on the REE side, supporting communication between REE and TEE. Tzdriver processes commands from Tee Client and sends instructions to switch from REE to TEE. Tzdriver supports data sharing between REE and TEE by managing shared memory. + +Tzdriver includes the following main modules: + +smc: Send smc instructions to switch the CPU from the REE side to the TEE side for operation. + +session_manager: Manage communication sessions between REE and TEE. + +mailbox:Data is shared between REE and TEE through the mailbox. + +cmd_monitor:Monitor the operation of SMC instructions and provides a timeout detection mechanism. + +tzdebug:Create debugfs debugging nodes to facilitate developers in debugging TEE functionality + +tlogger:TEE log driver module, supporting TEE log recording and printing. + +Figure 1: Tzdriver architecture diagram + +![](figures/tzdriver.drawio_en.png) + +## Directory + +``` +/kernel/linux/common_modules/tzdriver +├── core +│ ├── cmdmonitor.c # SMC instruction execution monitoring + ├── gp_ops.c # GP TEE specification processing logic + ├── mailbox_mempool.c # REE and TEE shared memory management + ├── session_manager.c # Session management for CA access to TA + ├── smc_smp.c # Send SMC command to switch to TEE + ├── tzdebug.c # Debugging module +├── tlogger # TEE log driver +``` + +## Configuration Option + +If you want to enable the Tzdriver driver, you need to modify the defconfig file of the device in the Linux kernel code repository and add configuration options for Tzdriver: + +``` +# +# TEEOS +# +CONFIG_TZDRIVER=y +CONFIG_CPU_AFF_NR=1 +CONFIG_KERNEL_CLIENT=y +CONFIG_TEELOG=y +CONFIG_PAGES_MEM=y +CONFIG_THIRDPARTY_COMPATIBLE=y +``` + +The meanings of each option are shown in the table below: + +**Table 1** Configuration Options Description + +| Parameters | Description | +| ---------------------------- | ------------------------------------------------------------ | +| CONFIG_TZDRIVER | Tzdriver module switch. | +| CONFIG_CPU_AFF_NR | CA binding core function, non-zero values represent restrictions on CPUID less than CONFIG_ CPU_ AFF_ NR's CPU can enter TEE, where 0 represents unlimited. Currently, Tzdriver only supports running on 0 cores, so the value is 1. | +| CONFIG_KERNEL_CLIENT | Support the kernel CA option. | +| CONFIG_TEELOG | TEE log switch, it is recommended to enable. | +| CONFIG_PAGES_MEM | TEE log memory management, it is recommended to enable. | +| CONFIG_THIRDPARTY_COMPATIBLE | Used for compatibility with third-party optee, such as the RK3568 chip, which requires this option to be enabled. | + +## Compile Command + +Tzdriver is compiled together with the kernel. Taking the rk3568 chip as an example, the "boot_linux.img" can be compiled separately. The compilation command is as follows + +``` +./build.sh --product-name rk3568 --ccache --build-target kernel --gn-args linux_kernel_version=\"linux-5.10\" +``` + +## Related code repository + +[tee_client](https://gitee.com/openharmony/tee_tee_client) diff --git a/tzdriver/README_zh.md b/tzdriver/README_zh.md new file mode 100644 index 0000000..957bd2a --- /dev/null +++ b/tzdriver/README_zh.md @@ -0,0 +1,78 @@ +# Tzdriver驱动 + +## 简介 + +Tzdriver是部署在REE侧的内核驱动,支持REE和TEE之间通信。Tzdriver处理来自于Tee Client的命令,发送指令从REE切换到TEE。Tzdriver通过管理共享内存,支持REE和TEE之间共享数据。 + +Tzdriver驱动包含如下主要模块: + +smc:发送smc指令,将CPU从REE侧切换到TEE侧运行。 + +session_manager:管理REE与TEE之间的通信会话。 + +mailbox:REE和TEE之间通过mailbox共享数据。 + +cmd_monitor:监控smc指令的运行,提供超时检测机制。 + +tzdebug:创建debugfs调试节点,方便开发人员调试TEE功能。 + +tlogger:TEE日志驱动模块,支持TEE日志记录和打印。 + +图1 Tzdriver驱动架构图 + +![](figures/tzdriver.drawio.png) + +## 目录 + +``` +/kernel/linux/common_modules/tzdriver +├── core +│ ├── cmdmonitor.c # smc指令执行监控 + ├── gp_ops.c # GP TEE规范处理逻辑 + ├── mailbox_mempool.c # REE和TEE共享内存管理 + ├── session_manager.c # CA访问TA的session管理 + ├── smc_smp.c # 发送smc指令切换到TEE + ├── tzdebug.c # 调试模块 +├── tlogger # TEE日志驱动 +``` + +## 配置选项 + +如果要使能Tzdriver驱动,需要修改linux内核代码仓中设备的defconfig文件,增加Tzdriver的配置选项: + +``` +# +# TEEOS +# +CONFIG_TZDRIVER=y +CONFIG_CPU_AFF_NR=1 +CONFIG_KERNEL_CLIENT=y +CONFIG_TEELOG=y +CONFIG_PAGES_MEM=y +CONFIG_THIRDPARTY_COMPATIBLE=y +``` + +各选项其含义如下表所示: + +**表 1** 配置选项说明 + +| 参数 | 说明 | +| ---------------------------- | ------------------------------------------------------------ | +| CONFIG_TZDRIVER | Tzdriver模块开关。 | +| CONFIG_CPU_AFF_NR | CA绑核功能,非零值代表限制仅cpuid小于CONFIG_CPU_AFF_NR的CPU可以进入TEE,0代表无限制,当前只支持在0核运行,所以值为1。 | +| CONFIG_KERNEL_CLIENT | 支持内核CA选项。 | +| CONFIG_TEELOG | TEE日志开关,建议开启。 | +| CONFIG_PAGES_MEM | TEE日志内存管理,建议开启。 | +| CONFIG_THIRDPARTY_COMPATIBLE | 兼容第三方opteed的适配,例如适配RK3568芯片需要开启此选项。 | + +## 编译命令 + +Tzdriver驱动跟随kernel一起编译,以rk3568为例,可以单独编译boot_linux.img,编译命令如下 + +``` +./build.sh --product-name rk3568 --ccache --build-target kernel --gn-args linux_kernel_version=\"linux-5.10\" +``` + +## 相关仓 + +[tee_client](https://gitee.com/openharmony/tee_tee_client) diff --git a/tzdriver/figures/tzdriver.drawio.png b/tzdriver/figures/tzdriver.drawio.png new file mode 100644 index 0000000000000000000000000000000000000000..da8614e5d3b9e03811c3ad84e9ca4f0f778e89ee GIT binary patch literal 30305 zcmagF2|SeF+dq!@*tdu%H54J+%-AMdGh?j7U<^i<%wjP1b?j2MP}*!oQG`;K64{a^ zB2u!XD6&+Rq(WK#XXx|%zR&Y}{;%Kbbu%;feeQFgbKTduuJ`r6u9ISAY0S?f$-~0J z!f$F~Xv4z7Mqy!LP38Irobmj6E);yQ2H6;+Snl=i|IEU|8ySpo2=-yPdwNq@WZ~$Y zZ?Z5o55J&bS-7Dr4CdzVuR`&3qXoM81gZE^gTX0q-N%pO>F!CT?6iTY!QjeJs4`s5 zR!vJ5j)XJ+scWe~)ioS<+Pl%HzJEKk@Qd*D_I8tn8EL4ffv)83J$)&DVL{-lr7ide zRRgEtDDVwj&{W^~%Ft9-0B4Z?{@zr3D#_dvjKfF+uB8Ik1gGWAO>8Z&vM@CG?(IpZ zf)8UVneNBD1?>^&=L60dL7`eIpzG~t;@#Zc0zLnu3+9}t!EUsj`Ir)YT7_Z-jd|-HHaJ#Ozng zF4%^yX{wH~QV&L`8QQ^#mbTV3Ll1%toDxb2qy%XBkU~kJ6nBb`ImQqJr;%t3FRuVF zVQ_eunwc_?1V^X?A;6Jt;sLioqm2-7ceph?%-Rq^werD*QGMx{Ff|(sHwG-k&=whJ zZ{!#nLd80SdlUVwu_nPrmMDe^n&=r6ZmEt^2c4SY?Sjl@VJJG;1Lk3GY(eukvtd|y zYMUd?XmoQb24igOhQq1{A{l06`#@VCV~nMR5dvvS4*@sZP)*#;%*?IaLL%rSgbB{f zpKcf7NTHA|7!gRfK%9oRB@sh&z}aAk#^#1r<~Rp`0x2TMG~ApK4o8_qFoHug9iUWW zjD;B-jDd{N#<_=v66n4m9-#M2kGF{Mx3CVk^Ch7|Xu)Rwo?f6`INib#hd{$j(bl#O9u_thK?Dyl zbiV*7+0-3Fwe<6`!TH;f5Qdf*H*z2uZyjhzjX>Gkp()-WP$Nc&QHZ4v5l>Ke3=Rkl zvbOX_A`By-C{IU*pBYLMX&(SX1^auLnyN8O9iZkYOH#OlA&Lwh5azAHFh-lA98iu9 zYNoanl)r_oU8o7vgcxXHNQfXusA~q8d1EyQD2$&w$_VO)x3GnIU@&SlV`G?4DB8-> zCjvt;_YVtX_Qo*uHCH19ku5a*F%AK046AUgl@;8W;06l~anvIDJNj$D?L7S%UXD-_ z#R2POq2Wj~AyGnLrm%1{7DG{IM5y^<@ZK6wH%C7Yq!$nY3TtBGsO@F%9b#>THZ^6~ zk|S_5oJRyQR1J>_!Z55UVZj7SSU_kP3XTk*gdsKkBWwc<{ox2O9)d9~!kegJrh&B# z1V4R1cMz-v<2F06L4ZF(GQu-Q7)~7(Bt(%}9%8O%6u5Q6fy-fXOfl zvGFrSlEXaEo<89uI}dwJVn8^!DV*%B=}$Ja^Y;(M8AH{r{k22X@qvEeiiw+rO(-VV z&B_b!LnBz5Xat8_22kyYh#)$H6zE3w3ZYq9Yul4GBhUznu?Eh~pI~Vg5vFP31`kj} zSeUxw=oG^Ue2ABZzaNnrfW{gH8fq{oRwxVYa0fqMvb(XlhnBfFp5)^j6o|GpWUf1u zDT-)H4>mP(^TL?8n|hjfS>ZI176EiS2P(tN+7#mv=I!S}H-(#_tr6iiRGcZA9uVR0 zX<|wW)Wmw5BMAgM69U1+2Ct4WvSTo(5e5zSquK=!jSznDKs7rc3HLy4dp{!wABLx2 zIL;r9@v{tqInZ&&4xYx)2zyOyn3c7KwT%YV2CAWk3v%@JQL`YK_*!GYt^R7B4tRTv zjim|QHbT=B3J(f1G}3e+;4nCw-2s}p97mcI1;n55SEY3$ez{o!wX%+0qfDxe-svm`6A8Z@J zFtc@33$nyI26_71A)t12U#|%5AoVb$mztZgnWY!q5KjyWz=Pp=qkY2>6ttJ8scB%S zm6?sdMG#&S5$JBCZsCDOdxcwAnORtac0nGtIJzcqJ19p}KVyGWin^bT9T1k09TW|$ zypb8zS_A73^V=d9)a4R*_;GiI)1J2&qmTHfL;pu+H zrpQ2dq&ggd@(R(kAgN)D0^#bw+!@&gn1DOAg1iGLq%eegC@|zOBL^rAhYVo^s!_eH zfS*H=`~sm4a8IV0gi$Eqgcr_@OjQdE)3meELPXeULd|{PSS!t-01`D8G55Iz9etEKqE^plrI_vCZlG7Km{993HHXp2%K#= z8SO<2hY^j8HT`YTC_5xfEf`O-MB{>e@m^j*Zf+J11Z}#9zn2j@+!G!^f>Y7-5QeP} zgDC-mwIPLyH4iek4R9wox;bhvEQxklYg%Zq7uJ^yMfjN#)ZNt8H0-_90-&CbAtu&L zqY9?wPBISgg887`v@MB5hFL(cnx;uG#>C$UV-?IaJN6L>ilaHg-`3Gx!z&c;8RSXz zz?u^2!1)=GO^t~p&rk%?UBkq}Cs@NI#02Gz)Fcr-(CYSKT4uIdh6pmk#xMeoF%B_< zg(1Q)A>O_OFE>gUP*yiLLb#iwb}$wb=1m~sph1XWM+6+{W9#9G#gVX%b|ywhH(waS zJAwd*63xSdOuQHxTD}-6oor=~3G>xZ3#0g%I|SJTB78iNSaXyG7?QQW1;H0*;$fbz@fteX$(I{v;!%^3KJCWg9?C!sfQ7L$)4_hSg!!G zr?wvwAB4~{4#i>v5Fx;wB7N)~&FBbps3p$U78@Ml?`~+W&QLQmMiT6UfQ3YO83t-X z?HvL%ED&TEmFdSA8a@#)2QPPXOA|}*(?Zh*YpP~Lv+%Oha@WR2Sdk31yqN85=t!p8 zF)ad}WaW*v3kBcsS~lU@Bz1d+4_N2{0eHNpnx|Kxw`(KR1m4h6V}dM|2E#@QQHr zK|`(FsXlI|Fj}A;&I=Zf4+6dVIfDO29${hR{G1(hY4Hp=B0Ea0nuY5FLXNfxfg5M=JsaM!=BW{Sbjx8hC9hY)~+R;A@8k zizdv6Xl`o~VC05(^CaPcS1|&JGStm9*aH~=o{puF2qv&_Zw+fNYq$x+&DW3Y;G+o( z3j^0s+DxPIWMMzP zeO!aEAg9ml>*wC-^fXtRtjy*?6(K7*7G!Z6569nz$5U7aGZfrV(m5>b5)-U{Z!VN& zL5eB&VFxlgW)J{LUkvFj{@mPsHJn=iSjLU@J+Y_8K%Wmyg;Y3bX z1odm|yy97I4@#%)z9a}cR-9z@8L3J*w;w?Y_xthUzD*I227NFs z;@6z1^W)(D`;gW!ie6}8s2&OGRX9C(Te?$?>UnQpdNp5sk9JncK6S>ola9?Xdg+oH zXW!QNn7=6_;G0J-Tuc&>Dh&BL*nfswqy&7b`@B^*ju7+H64L2k#wZ!}4Gc(XuuFsz zbH5nwnvaLTUn(fd1%#42(j*=POm>)@*~^=&7y0XDPY%5C_pgQb=7)^W-AWNTVv~0) zME6qY!aLLR`oHC`T)9F}yKvA5+*Yv9ui=8EhS#lE9B&)K;f-t4R|g)_hn&JUNAWnl zsT6Ep>ZspHl`Q{$ZK0g1-5(0iNyP@4XQ>qZ!!K#IJpH2aymsbv-*uc4+lGOp_QJi| ziL*{bmFuc1tBan`vb}U=#0aJ%Cj{bqT*h;}5$ri#V+y1bckIe_m--9PNf-4#aI&Y$ z=f717_IdlD^d0)b!Lq0>lIcL}Q{&D0EosLRy?i^-`16Y&V_ieu5c1G%jVRg z#~LGNs_2_a+_cdHj1R1mTE6?GbQx+{$dMYK6DN@!f}b59di8&7O={g0TAQd=iRa>d zHZa?N^GZqAQ>P^WXD6(z1$F1JoWI+a3HbQXr8F8McN z0uoQP6Pmn-C)!g};QMs-6kz*r=SL`}OX*}z_vV>jtJ}RLhR-gf-pjf#XOYXG*GBx9 zMW%`=D=K!@raRY%hT|_iy%(h?9FKdLg{&TlT&7(Z{=1+6`HK4V={-M z>)c;RoJpq3#n=8CXW(p=u{7hl@x}i0`Pg-Gg49(Z$`U6fW7xX#EN1=GF3#D! zu(7T+7cr+b&9kD8k%RY~>)(kUdo=IbcHKR#wBiFSAi&P&;MBw+V6G32Dh=@=-Ah+O zI3urMhSK+G74JD}_wux$e)fqQ%Eb~0c#E;Ee@9R3{(n+S^rL?>R=%Gzy&~m5!If^V z+W26$n02eS$7bQxluenwxWW0;7qlH^N$s;x+80`}a(|Zykt_VS%`g7zhuUW_d9j;o2xJHE z#?)t{k4Ih5ax~N0g{XR^aStEphl$R!9_ zCqXd0Kp+12bMe)N)4B;IVx(VH-73qQ9rUI)^g!(4MD4aKaQ~zB_kL7SetsQNeVmB( z=8J=vAMifdw;kD6?UEu*b{N3JaF#D=J9$4D2X zT&ik7Rn6Yx#9Lj@q&p>GiSqYlcYnQnX7=}U`=*OJ*Df1OdZ!Ne&$z;6_RIVe81qfb zdsyv=P@QG-hwq~fb3p-TYs=3Kg_l$r+_ud7k|Nvdl@iqc3A2Ve11wu=e(YvAZr$#_ z%lqZqTM&n>b6OYHPP&Rc$MW>bynbGIAYLhN_H{}gL~Q!%ffbxy>Osdf*w;1ooQ6%M z`Mr4RZY>%?$4VuFxeV}`{gYue9X#=OhgI#71uribG0xx6K4EtE=)@mJL_lYTbpDNt z;uplbYr01EitXOKDZUCqM|SEqJcBc zD#}q&e^nMAp9XhJs4`h&mq=BMIWN6sFmA7OLU!wzid^TXpN5+&!+U;TQKC(KFNZE4 zJnMDKUNr6LNkL?>kX(2wBsBiw>w3X!KN%yolJPxqej{W$MFJ+>*>BwId1X+Dl3n$nt5RXK ztRXRNUi53-_i|}6vLh+&tnz$Jz~O^Jr81r0xfK!cXZUO(O2mCjGsIxSO~E#~xLWTP zbcH%GOF~wdT*Mt~{gm2U#^N9C><&t149N(97+gXOkLqzhPfxpP%rev;%_QR_=gZQV#*z-!P=m#rf=P+HLJS-YxMQE?J+P@5Ugf4a&!x$Bbof0=H3dLBvHq z*|X(tM|K(KQy$khp;jv4Y(kVScpoYi82E^~%aBR?;df!<(TC5eUf_`6mCnx<#kZ~d zH8IY@$1fMfwkA4dMcvj)of)zsX>JMeLKI>;l%Se0 zb@#2nb6MOr;Dm**IE>1$=M>#LD%+`jy8Wu^nQxBO?iLF_jW<>PaAd~vkK8i7_oa^(nLdw{qMZwKx5nrq$}g>Fhb^sd#nMM{q&FuDp# zwEs(DL_$W&@;gS}u<4P!PZs9C&xI9Tl&#d+R(WV5I}IfPyJx)LQ%3b2SVUd4zNO&l^|j^3*7&uHL+7S+nqvee|1pXe)F-Lz>wg=$h zjAOyGC!GX8eKuQ@Pe&yNPM=e){N{RDBtC7ZAVs`=Wo`r>ww~DB^yZHJ>of_tM{6Q~ z2Nc=`xkNU;f_H=#dmRLz@Nymig%ZU|^T7d%cIb?vc)h5b-I>bEZO=N=_Z_8lJst9O zrS6 zZj-&#>i7O}$e8b|!SWNA7}v|%eJ$F8+bn-%3#azOH69vq!SH(IN6tc&&_Cz3M_ZoR zd;c#%4MR~R2dWoCJTIl^SY&=k%p4wAbY>e{AGO5YI4A_7;Lt|yIk}+st)Eu}p_xsB zCtG5OI(v!*mDGwFB3pyTWrQN#k2cK z>+Tj|E!H-NcW11d1-8MWxm1OODlal~i6y!455vI-DI6ktC~hx0D%+45JLabUJ8uxK zUHT$p^BBt zzk5IKKxGtlkEaYSRRljxHwt5ex<817(U^gQN_P*&_?rMagM*f&(|kBCNfssT%a&YO z%Y8FO3Rs?F53KC2fJrDSTs~^TB52NT{El6S93Wz}aST8k(0#}g_XZ_)V#hAX*@a0r z2@cGFbs7taZ^>;pm|U@!W+<`jVqool_MFyUi!wUHK@M}Qejd_M^)*r?QUK{*Xg~Le zJH998VDZ>4T_t?jspWql9oNDt2~q>we(rhoXGtI%mDnSW&stw`Ye~N6Zp-dp=(-lL zy-wibQY|`sNU>{D3+oqI4rFpA)N(^QCgjq7hj1Ow`1}$@B(P1f=X|k{=ln}rNF4FM zhT4KsOIf%vO%Mn#OpW!_4R+ht-;rORMMHqt`D(E&^-9ja?vcO}6-5>}ShF!4WR6eB z#qCYKs`dqU31Fk#AN-#C;(LUQ9en>ekeR9Tl5JU-ET+vZX9tN>FlSGI0gixbEAMcI zIi&Od4rvl{L-J8)Mmuu6>X>w=Qc!lmbeX`h#9YB@CGgH9r_8iO(FYSF00%pfmT=vras1eMMc&?bm9{mWYYlvm|sp zQR%=vyEi;Y_bc^j8e)RxWar5=w`3^IDdpTJX%=K+#gogj%zlBE#S32%l?Kyg44bgv zGc_ZWWv^b4Hs@|2znF0QoQ>w66Cm{*zy0LaMRwasF^Q^+^6ymvwbOL|(rm$(8<)-~ zd$d}xB}26~zC_#y4dQ!#npn*qWY1wcEUIAoL0&k|p-Pk|?zlf&nPANa<+0A4qh6i1*X?Pg`MbA0)g5 zpqa?qIxnejYB7mDthA(gHg=*zeC>7a5`kkkIM|RtOX4rKMtknINrQS#}85N== zYCjEx+j2^E*K;r956A5_7uL@ezyk4{>ZdLmaaGN&>7F|Pl$?_=pdfNQP5OY7TpV9c z_ZVUBs!}K8Nh`-+9fMfqJ_#sFmCs_@gel*a!1%dgs0S>}S<1CfJ6T9)X$kYtuB zzgn3Lv@$vUU#$#bny@!sU_~%P6d{U$j#lYC@Nz^y&()mX+kJ1*Vh#`*DK3@ca$K-K z(b*A#-zu>0IePcS?F|}hw+pdi5>~Gi`-;LcTy^r4E!#KS=x&a@i z%ThS2e<0J^%22AE3(_HUP)_)z5T(qWyaQg58Hl-ewU0HUe+NtIMW|cks;B(Jw>KlQ z{KZ{jwa4nWkLqqu*(KFItejrl9ODDhr9SBr3j;2kG$Y}Cj6J8N7y9M_PJivpmw{3= z;JI#z;B+sHh0jQpop_`or5ADe*Wx%Xa%G|DlI5{3+hw;b4xpf7+6t|5fb+u=-L)-) z>jjX-=6q9nY}dH2YWhe<{~Dp?uTF4!6q#M|`1YYiJ^VYxitW@(a9@FNVSM(E`$+5J zRI%elP8ZsX%!=?j#~d|rwi$%Ji)YKJ-|;#2`8E_%Lexj00c#%T6B9M<`M9GZLN-h`-mW zd+tssw16P?b&2)O5}(l;+j2(@b0yqZ4?0Pp|8dCIhFxAK9{J8o^<9|at-O@KBAoiU z@_aRwt4jN``y*d27;jYHNV){v{Utye(rxPN?SidfFt47R+6BL=fS&VU$EIO~Q=v~S z3cUD{nu*CB3fak+4W0}qRW_visiYGCccq*akUHjYvYaS)&!zFLNcBEVZ?*1?fVM zj<6lFmJgWY+6PTe3bM&uqt-2cER@Ty|9GBJE9ZP?+oRvgBL_qZQN*+bPcyWSP`5i$ z@tUaHx0#$ofAtWRA#0(#ZyuRJ{6OQI_;~FyHHNqlSzD4a)trQzu1hbQ}uHROn?x?nHKSriH% zGO}7(c>j3-k1MJqKYR7AE~wNp@7NUA+`GE!4>YkG&*`MSF*U!4!^$gpVQWmPHu;pj zYxJAc3psF_-EdcT(pOFI;f%+j^IkeUeKDK*{?{{AoE@cqU79_aNrrManLcDiW{Q6H zez*&Wqq&uD0+rDvI7%wyjqiz%d#P5L0ilmIgx|}Ig39QhfxM0@w^Hv3BNjx6nkMhC zMkxJ&0tuiW4SU^%R5PXPf4nkp+(p}`<%>OPclR5BN8H5vP-Vam_IArOY;FD-s0*UK zZHkUu@RPaI5%S2R|LLL5#q`UVg9e?(=MT(B*Lc2`yU4+^WkI2@zP}cwOsqPbm7rkf zClr?OQT&$PrG@^kjJ&AtUFsoU2CiKnx=Ta@%zAX@I;v^u5B}F0pkR--T`_{804t>ls*C3@zgPy^b77fXF%kuROMZBYDyyC!(G?U&law1 z!B6c+SB>*Rzdth?Z;Ecr{&dv!&-y(}F-lYbpWkSW@=(+2g_ijsrRqFXM#{l`n+_sB zE1!rIS`I7HMArQNlK9XSvXQTGl>MibUU!6;#hRs|8z(zaRMa}@IzXu$P+{;c4|lem zF1NmE)D~|NGn?|0+E8QS;&&+ZXm383@H4?{QS+9=Z#?%CWD z#ZI2J@XhtLIt@yde^zvFVFD&aXdz*+Y|rzvYdVlWPA=m$fLSkuK3i0#_7mju>!J~f z8}u2&dO_W9apEh5`Xf!K*Y%qR4^%Ox7PD)s_NUgwW>NlZqj2ZIsGjIkkW>kO(KksF zZ3MBO;vy81navM0)(>#f8d`a>`jeiyh@fe!=9rB@!5Pv$I z#=h@vsw}ZiuPcF364-NQBP+2G80F){;E#IgPV7oX-Y=%nd8ExQabJ2LjFPO?e)Dl+ zT6d+x?$nJbPh5Dk1a0r?ZhGgZK(n%wlx30@RXsvN6IhBK94g7+3le`a;!A#vt< zY)oB9@+O~0L4IocukY@{&7H#Y-NuixBTv8LdQBs|#bRBXDBh3rDE1jwuYH^Ra zjZ-MblJ5K1bKC^FXqNlq)2dIBvWglGVds*`I_vdH?ZHLa@fX5MxLC}}p{hLBPDQmkHyDtx$jrY$~}aJ{?UeaiVNYkxCO*N*Bei&(N96wQl*% zdVCt0;2R6_Rb#Qs|Lk_b+j(ad2~h$waSyKeg;kgtv_@s!OywC6&1BjlmF|iPc(4J` z-`)<$fnHPMbk_ z15A<6S4F8Ec?+VLx$KYT zZG{ps$4}b)Aj_i`!PMWiEC5A~zptAQY?K4;hT*OQxy%H>q!(-*1DR&NO ziByUpY^HdGQ=gaIRV;78{@TpU{JhIxh7C^y) zyF~Z|e!MzYV)@U$%1gakES1>;E43%KB`om>zQ62Xe2+A(_|2ZV{pP6+67z2twsaP1 zTf4Q-??=4iyHW9!0V4X2`cAW5(w%pMuM&+$H;-$k7Do>bFT?_DPg3zo-8NRQLo+e+ zAnE-{32*Umo0Z)*JK4Scp}scG)f=a-i5{^Zt$e@L zV4XM=QK<%EAw`gqwv{hPQvpGZGfCd{RNTBErB;1E>*$6cQml82*l>cmBw?wnyDR#H zD6B0XYqo?cHcs)mCLTHovZ9?&*9=m_wqZ{XDUN*(&Q3h;U&|lQ2mQ7aCk=uSpZa35 z>xX!}l0>iNBhsH;Bc3ydUm`{~3?hDblsVN^h0Vf1@qzR+ErM?^p=u7j@s~!WGQPak)D))BX>=bYr&(N(op}-c{Qn(CA2e*PGCD2AhoEE6rQ; z7S3-OfGL}O80?b>G0$qgQ;yE4`!d4*hXa`j@!oZHJ6)}&V7HT$sEl}8{#?5A-FKQ| z<0*(aM?EzCtx6{_4Co`*{MiDE`NX+Ogg_7jQbb^Uy5I$Iop}i)hdT7&F&h``&U?{;YPmnsg-`vrAflm)qP`}_N2YZyzU zTy@Xg>3gB^kHZ!%UtHC)U%27q|MU#^K!sbY)B973Ef#y2QrD4(bXLu8DgAN*mSm!3 z$B7)xl_s;cW<}}u_2%i6#%^t@NB;8m8Yr>mP%qM78GjOg2S9-bq;{VBO#r)F6NwTJ zy+>Y&SfVmsTti#}M5oyEJwlX%Z+jXf;sKFSGvIX-GTIoa_2$0oI9fM!&cSc~pZl_t zU$1YiAIS@!&Z+s3l&1h>W6m1!PcD{_vDTjT;YHy&&aS$knOAr2H|1)fJE(@mmXsOo zKOJo67ANUz-=_v@1IV~JpZAZifY@Pr!@2hf^~tkJ5CkfPwi#)iybAgAtyQp;SnWP= z1G#JBpeHCKC^^yz3=)o6V*rW{7?T)K&5$-NF!}1x4iB7v^)4MjKo(!L=+>f!Z?4Tm zj=+20E&Y%cEYnR66az7f&)DUoxci!(uiCn608iR?G?kC2yTpwY6SP0!_0S>%Is~c& zUg@p8Llf@U6}^2(k1R1*{jlp;;3qDA30T{{qyDFkOYh`*g^ixGvvF5N(K|cNA6!g1 zfC!R3A+4XaB}aSuy7%hxf*%j_>Tz-g3L6d*1d7?c)U`X1_cSH%&Bj6?1E}^UFBhj#5n~0gA|KSj{V+s zBwuJcX)xtTzR6<4vcQ}26GM?V=Es|_GYdA3{P4f8SK$#v!g%CKLaG)0RxYGU!d9U2)ip4)LEMA%zda61jR-8R-k5^!@bEhoi@OVbiZ)3dXsMdh7ho!Xy;=E3uk+d!OtHCZ;PD;QX6i2l+8=@#fGsQhSE(lR|i_2(V-b$YESLq6;z@ z8Ojc_5%m#2y>KPI!xhq^;@`@XRTXQ1xj~6&i31MG9m)7G z*t-vi?GXpj{@Z}tVMJ6$X#y*Ij^u4ybBspvt+y$n`#75!AJG|@ZmqM7^uluvYi30UXjSG02kAaq?Nn zBx}^%aHV?Kg45Zc7S;RaN=J___ws#x`|!>&`Sy#}ZFJF)in?`(&u~S-5N<0neowtf zS@ye_lCw<>2t}1`B${1iE8xsz-aqe2^Aa+>&-uBAFJ|d`5+pU#PjpEVBPB#h*Z}MX ztiIc(I7z|$A(Sm1n~pClDwK2zIo2|IZcX$jU>_V~?QA92gB?a)2HBA{VT&%RsnwzL zj=M*v@7Uj8pjNFq=R_^p{h5AoHF7KS(Whmd!&BNb!;6FESM7a)Gp$qFYhY`1{(!}h zb6DQW$oZHbhi=0uF#`OO>Nna`#Ut;o+PHPUHjn%@*R^!zb^&D}@Wj7mGXOF!|Ca7q zku9qPWqWdBDqEa-=p-dG3Mrn{`1y3KQIljjY3`ESYmc~bicbLG3L%Y_`F`ER@C zK3&2Um*Q_n5P1*WS}UjpD=IK2DQbjgiTB#U%h#@advs^A2C^Rfr7wag!Xfd;kZV`( z*_04hP#|+#Ydosj>6g8jo0584uENOu7&oDZRvDvbWn6BS+{}Pn{R>&Li+VDL2D*sM z`nM}0wMy>{6VnZj23M+$KBQ-9xfs4+>WKvG&BvC{AoLNcasfH$c&?XHhM$rI1+z(U zUk6I@D)1-GDxZ{w7v9%5x*h^p>gYFL&-w#|Wps&YlV-o>{8bnQ|Tae&7GStI^|iB`)rpSao8?l4x<%lIUSq5b;NK z80=-%*r}>)r2br1o;dF)KYX~;LH<2sGClv~Zv2yY&K0!F7f9-RfCZ+U|B+rjTS{Gf zW+8dp=M;MzQatyI;lJCSes@plahv*? zPTke+uIAi2=X9XeZYX^K!FLIybAkVPE)iV#CjnC90r? z>Xsk(rSgF+&QR)cV1nG7k#dIV4wpV&j}XSkt%p@s3~qgWqdKTPDysrb>Wjy2>cpzV z%JC|%os#3N0*v|PKW~)uCrb}C8Dl{QIr~cFcwk$OhoKL9a~yi-&T3Fd%9lFlo{#Tx zSw38>*ZxClFeAFM#Gq3W*8B8N9o&AiK(5Lw9s$flPF0(Vc~Fwdq|#{!yjOM)|EoQe z1Q;czp!lNnG7h&2rz8xXS%rHiuuIThouzg{I(r1I@a#DbT3u}p+G}CN=Q?szA*tWr z8cR2{ozDanTy?rzi$7lD!eXqOhc`O+2Zs^ApRWe2n+R>ZU1c!pD<*+UM28aj^9$y@ z-mmO1L0(F}OXh~q^u7X}OffHW^7GyCN@=aIP*o5Q3k*paww*S;yCj5XYe<}1s9#iB zshC(um9kn3HD2S87-~=b5&kGQmR}-PF0^nh!A=@!=fy9|IO|i!|JhW!lk`+_+rwbrn?HQJ?O^~}{bn*$1LSy5H5dN3Ztco!Q$T(L zbxi@^_~FviTZJb@Fj8er4@#YEod9tu_H$GeqA<#X%&gjFn|t0%$l9~J9ri)|zWx8@ z$bgD{#0}jA)cKQ}|LOBUlJ$(nwm-^#oaObgeZG9@3o)lq=D~pc=^Tw%iioz zk+_?}1l_!ZQ^@&pvG_E|EgVKn?YHf3EI7yFlql~ z0fNs2?0z9AowNak&1Qt_rG57IT`b`4JvRX9aOR8FP9I!VRs|_nQ$fT62*+=9t=db4 z>xBL9cpfeC$uQy9G`C<3RiKLE+Q#`zv3dAff>)M`Gm3+MHS?Lc>?Qu}Ld*V@VWEdUPAvLZT z8U>tM6qnHgpbMWlOqBrJ0&fWbzGZ*9YkkW#(VzDxPTJMR+5`AT(XLsW7d%npy>za( zbAnK0w#RGmuEbL5FE=QW?}O+&tF(2G9;^6}|8{!J=%7vSAQ!-S^#6|Yyu~TZ&?52-J#w#J#s20k00Tx`VoDykpnay)RAow7*^>7B`d~&yVU>r`SlT`*NEqH zF!F5*M5o}u3Kz18b2>2yd2#dccf%IPg8MPz*7sc+2XxXeK4*8@e-Okdibs^b z*zXkSZ}SsQ`~5GGW>7jcyfFQYpBK$l3QqXewR42+9pV&!#>oYneA>f(nz?a<{5a1) z;E6?6iF5g=N~iDR&vL(e!;$vS>8_{{pl*2_NP z6upQakQmpwpF^(K9^(WMe-rI>TLUZy7o+Hd}8-nx3P>9-f4II8ttDpw6`&!IGe zXGeAJU4sPGUjMt_f`!Y_^g}Jz(bJGrq2h8vSA5T){*#3t+$Abb7UMP!LY${?DJ7D^ z(PG9^+yiwNlQVbsm$AQnP7)y=IM^Z7ug!5AouP0%u#t;B=j#E>;#lGV|4Y)|p+{?Y ztHy=(EG~Mat-QQPlyba@m(OY$nwE}xZ&Y8-!<;+up2i7fumPsidtil^D)FVa1 zkCe^}mPIE)%%R6EJOL^e#SQx;eYrsnQ+11$W&>@FQ#=HO_5KlmhJtiY?g}M#?6&c> z<3UaryIxu#WP;T|ygHl@Rs+BA3rJyz+|!UJa%qA^dC7c4PorK?dH}NXDZxU!d}XrJ zecD2izqEzlV+?VU=EJ_NYWkOd9c2IiX(uXd0Vy=tZdawNfAaaOg<*?<2(Bu_0G-ic zYnfyHBVz^RA}%0*O`(2yncw)*a}&$Q*{hT~ZU3C(Bi?u!_!U$NJX+7O^8+(~Fo&*R z+FjwC;UiO6VE6#xg3T${>z+LAH4bq2pP#EZP*p6%ZY^Xb6&MJ8Ih}^0@4PYqs}F8Ckd&NH_^kBYL*&V-6##dX zA_;^mTYOKr_>osgzS@+Nnl-|pp`Fa*gyb5D|L5Fwg?~Z{#nWWHAGvKm*fVTS&P$J- zSXi6qqtw0YUbW?$+3flFIgHE~GeaHq-)V(k*nyBreo0Bdelh}U4zuS}-?Ml?28BC? zMg^5^Oewj@71C2?ue2po?-cxf=iP&0GJbylW8!gr1$U5!%thlOTPR@o;I+}Das>js z`eG$zE-O6t3x8E$%9pJ9%HF zb4H`7VR`bbGMRhS$074s5)%-%L<>=v*>D+N*ygJbJKLSWjxl+Q54Eo_CWJIphQgEJ zMiT^cQLAzG6VwMZ`DUz1x$@+MDqn6y)YZXwX*Dvrk_iytZ5>Jp{ay%e(x5 z4v+u}n)aUQ%?k#FBstzqgc_<-M(J-J{Qud5H903~z_@L3)#!Tkubd-I4!4$CeRgU^ zK51Vydaod&9Xu-pwuhva+26Nhvc}QhS~&9|27n!8l6A}qk?`wRqh92|lZ?*o|J<&; zRdEv95nZ?W`|D@%=GBC*;uAEG^Sap0+#*)z%oX3`v(+)E6O$2;dFtTPi87m_vny&w zp-P%_9k#meJ$rLu)Uz|O(w*V_M39S2zWux%xc+BlVY!eilGooCLZcfEu-#bIF4n_@f;<*J&^aW6JPm?zFTxWCK)DxaED zzwo&G#Oe0e>r$6UoWzu)ZVEd)KDBMnuJ#1_1@N2S88&>_BFa^ zydWt{44#wtbomVSLN%p^`i#ABY4TZQeLNBSJ=eskU!=2^nSq-{KOd2l?z|S_1CyGZ zL!CdM=h0t?anQ-+3%u$0QAuL4=F?3X@8{>ZlQ{(s+`7IoM+*j9wDvU%x5z)E@4W;7 ziy2Sq@14qKrGI7)=tpIj*_BJ8UzF@-?~!>ztO60`>!%64-CR|1G1JSB7II-%78=9!HMCcBy?$=onLS}~ z72mqtge2S{2s#|~-NoFy_=wAC^^N3@S0^}aJ`a3Eb9xSa)%mFL+hDYn6gw?dSaPc*WUuoooGo?_vmoPVw^rlgqoAqE3`snW$eg|IVHUZQ8G`d%U6Kw5wrsYSTk{ho!DNtwj9e2Ej`yHIBzTx#zY2skD zhSxPiPJyV2l)SHg62~9$OZn};Cj98<4fCrm*h9vA_Ei=DaApX7trVASo=fR;(`1E+o>$qcSe1B)j7Wwx7rdGJXTI|a_Q6V zzaSV8@_YMzD9ee@K3~bIiNre+8x-yJFR0X3KsEf{bd>&oRec3iRNebE;0QX@8>F;DDh$#fAp=MVND0WGbSfyIB1lP>f;31-NJ{rGg!IgJM&I}S{lB$lEm)V~ z-gE9f_nhb1&))lN&4}6cq`=Gc-Wj~@vVPG1jcKCYycUZho*pq>-M;&$ylt!CmVKWZ zaXnzL++OItmxxGd*KzHfV5~c{nBzr> z+S%L=#sYXk=5;wtD_;fXs4BMS`Gp%=K{D~bvAgJshb@8EOC3qeUOWnf1LE-C8KCH? zSBAx4Vnlq74ugev>DT*DijOYrHDJu%Bl}Dp562vzsHyiWHY9YpZEDgM2)!~f#X`kt ztyZR1+XV{kn_dsUTaSCa?)5s9Bt=n~d`bH?3EQ;#BVD(&djOfBv2YCcM9Rvjq$egHOkDlvR!6sG-w?Fetqa7TVcF** z=X2?tT{cx=K1wye@0$sq2>Nd)^uAut5r05!{J|=$i^5{IH*4N>Q@(y}RNQ;-@_U0y zvlZ-n6Jf6|2U+iJf;dJg%YFL1ZjWS_h1qOzkDo+&<+cjbu_eMWQJ)=;u4R!b8#ucR%*2 zlMlw;TceFM&w7(m0>kJ9tkw3fh*KEHJ4>O1ycqVYixm`(_MA(-jO!fLD~u@7bz3%>I+qL<{Xa=QvUEO41_U$&p|7q@7+^&Y+z*YNWU1u znl)jFE=$^94{ebVyrMjO}0>Skuk+BD{b_1)6PMm@s^0=b4xKk_*vsRj};Y7G?J z)-k4vDl<;US!BUY&LcvrH%*a(hsfZFjmB~0z~m}zz3kaRcF;F?P5<#lW{s-fZ1i1W z_s1_gWsYv_H@@aPTPYaTZ|@tGgq9IVcOe zT}PMQ0{e7V8q<~=rST&RnK-a_6tnu4p=w~FZe|)OFcG!;ae3hb)SM4tQ}d^J6_`drR_@H~UnMzm6+uhVW)id9EtyU+QCFQ0fv9;AFQ zANn!s)8Cq|K)=xR*g-_#WXfMasuc~?#kIf*CcBJxk8sAocmR% z17eRo`A(=HKXBc?EhwNjcqqFHx%@O`gMr>lwXicdMGO%`-IvGM83x<@yG z9!jF7qUHe3UgtdzrN~fq#SCy9^wq{B7x^2EUUlw9)-7qSN!&{v@!${v%V^MDwfw&{ zWGs=Fzw`pX?DXWml#pTNZi!rdER}sB;D;<+DC@nF%|oKEEz&jg z+=kDP6ehyLixq@0HN|7H>)IF88B!QHbb-b*07jrgk2vVhxN&k2?6Sf2OgcAP>eg_P zpXk)2{U^_TP+~2-BTNh?RceID)1)cm8`otw@=-I#g=0_Y5JzPeqmP>2P8vO6$F_;O z*zkGJkf4|IVOn+_F4Tx!blSqNmB0y7hOeUTIiY(p#CWWyN8RG^xhhHp6&}yg?nKHd zD^1R+=bog>N&h;=u|#!oNH(IyU5`=H)AByRK--skGjDOW_ixkhFqo-vl{wT;J9p(!Pq;71G2q&@uZ!+hEHG(hjx7VhVnWf zp+l72VpMRHRH*rVus9;t*)A5fuRUk19&jAkXv=u&oPOBW6R=a$B$$vy8>&u!!N!t~ zJOvQ0rK{vbqUJ-(FjaIWsPm;$$&csm(W+;TeffaOQaO(0)tYEzLq^3hHRd}+kG5pdJc$!~UU%U3Z^fg4ZTi-ZE#+bO0u}(BA{PLV5 zF!Ezbs=ug7k5~@+s9&S8rN2Q$@s&7KTYy#P62h}+O}G8SzGR~TkW-gx^kP5`1F#0} zGFY)h?8>%Mg|EO1*qa@JxdZaDfOg4Yxw@blB>#KTGP6p(>p}L{nivwqY(NJg*CBB6 zAW={`v`ikT7Nf0H21CG(6-^}ke$vNm>hv;C}Hua{)i zBS#Q($cK_{p6^DwrzvRw55=+1wA)t;|4?J82H#ME1kduYmus=iFuXO%mrkz{h|^0c z1C&bGX{q@9Tp4jEQ^9AP2gli}i=QH3tGCETvUx+bwO^9cEafyN+UnNlK10*M$H6>` z$)7#?Zb6UO8CGa|@cvF_S4sU`<;z^RsYmhDh?Y4jM zyc8NclY8fuH)hx$obhN>ckPh>R*tRoZ`B`&jWVOZI31~Iw-Zu^J!f-r zk=a<+=wTpMLSHp1>fj#P705xn5;kf?{xoA!yqwR=Qj%|8>sX5-AwX0`A9 zvC=m5CQ1=Rz3Q}Gtr~ysZt+;z=jlTA$V!4|jI4B5EC*UbwTonGXTQWW@RlpMH!ZT9 z`%)rvNe;dkyz88F>bzOa+IX{QYJQY2`nYxdgYRbcU6M8)qY?G9T{ic}LUJkVa%ZvS zp1Hc*^xorz!z}8VmoFg#o|Fbp*(5r5oH}z0Fn|!&=)#>u42VfoP`^IRa#AO)Jfv|k za`D!P46Ze{x@YAe^`RpjGG^=qzckH-#CET@$_ac3RJjM-g10 z6@EvBYeb!R+>UqTCab*ft1p6DIJ0)ul6tb;i=)uM=j>{L*vLotOq3eIC(`_E|83R9 z!pj;=H%Zm6%U*5KFTV2UwjWIk@cQ67LyLf}((1SN)%NCZF{|x1?&8!;(gSdjA2mx< z{0&M+qw4$BcFN&C>gID|r7M(aeI#KZp5 zll)7xwJt_$6dbxnYx^k}a&td{>@hfOi{@rE#PQ~0Ht3lOV9Ob_!FlFszSARUxwN<4 zu1Yu=U1Z0(E_Nm1c~y9>m5T!vi>$hxo!xN5W26&cX}fH8&~d6IlRn5}j@I;M{P8X- zHu_my@d_zNhi^Tqzr}zKvE%0&t7Au*=CIyA>dlVJMOyCR+d_qJi$sk!O0gX<`Dj4e zfLDlz(<5Ntes7GciP`sE%NC5<4TZ+M6kMZ+fZ;88DGqt4jol|9zb!n0x zt(P|k%_|<7guh(Uh|p3@3hG&q*&78RMOOKB#odzVxz7tl@g2l=GHMSDdVr#FfpRQY z6`BY&ul442ovbd+WTee?#4Dyx0Ft~@2G5Xk&j&gDkQ};REydD@2@vX|@s=hfJv)ot z?|?zfqNodO50v0H0~-;Ym)3q(@&jE)^<}#+ml$PdiEE3F7Wam9r@opjPM&R=TirUq zI?-jFRJuQ1oB02NPQ4dW4Cb_SNi20UlNt)e&U$)^XJ$sm{`(Lb?gVC(s-4R5RZvhz zmua^ge3oRoi;@6}1-t?R)&&$qFV~yo-*$2o;rZ|1{Q+3ug4b}VYdM*MB9p~!t`v;vj`anmCpuk`WU{xXPry}OJ8ktNTtEl9K1V&-2AB#Mnd(w z6%M$l4YjR-FoKerCFUaba`EpjVs+@aQG*7rM$ND7y5+rlcQ*omuf`eqIGd(R2NG7+ z?vT8mm`%|@9($0ljl1(;oL@amIN-e3lF7R_`!%Dm&#~agB&#A}4?G>$gcArNhq3gz=i) zBo=WubtPHsA??bG2fgn!linx%a5dDp`TT1B@@JR)ekGh#T$*?!v*knmg{2uKcjnC* zTq%aBlSi&^{9C$&UVg?2g-Nj_h|VmNyY}>jQBYf#%=5HN!U?@LDkD|y*35D~F5y$j zL4+ons6|@KyJ`_nbkduu<`kxQHuxx-UpGKG?oDJiAqxb zFMz)+qKCt7y>6@6K(1G&s-hf!ss4((@RT0mLIr$6K;dwbC{SdP$LH4j2OX_P4|W8# zvWpYNJd5?<#|)Rc6-Q;X6ROtTA3yL4XV{IHN@nw*$dv^U0)%w?vIqK#>|lJ5Kg*+y zfCghZ3uDZ-;EyE!AdTR|P0w^(chb+HCJ?e~!{5tNE$&f8^fH%MP(>uoG!=9=qM$<` zNfv>**Cez#gO|Q1OSRticUJJ0N1ma9&{{S;zS!l!c5NK#@G6c5oMWTRTd-?x9pw`N zQ#9-;8dq0Y3O;|~C2g8mg5^9C6L|30bP&V`-(9QX^B!-ps<8#1(tPwgl-g@9VS8N} ze0Py0pk}fEif5#qr^3#M2Zw=PVgAU1tl%k?0G_2pc+5(oS!MJ@H9k~oY4CWd#gCZn z*}GPR$HGJAK=@0|{s#q7nNe5a%78W9J^C8>Sb^|SdzRR0D7nyYtDv3~YD7VfNAkf7 zgkRSSrC{G5B?|g&3^QLmZgLN zD`5*H9@7)t_8sb6aY_L2ar1wCaK$R?NRobAoX5TmWcfjYplt3`j~04#SQl9gkTb>` z1fe~`k%*qFpssu#{@U`zTVSpN{8D5}-D35{Pu%$RW{=iih|rzDY-iZK86e8dcZlMP zf>5kx#{>P~!V@Hd?YjJ1D-CDEZ@suX;8H=tG8D>ofOnW`8}~YJ;kJLN?WM%&;qkY30Dl;(aWiNa?d^qbnHKC;4b_g4FI}-Vf&nXr zp`@dc_itI-Xc(W29u}&dwokYZb} zRyyd<$DQ@g1HNNWRjKg$z&lFHxVJBXnq4(D59$q2x3L1+ajW?LG7S5>CvYdM^jS@+iFP9` z1I63`8*I8#Q4hbt0#YTyqw2J{Ga$0cb1IM|Zs#I0Zhp=(yS(7}Tddl*LA0shTeRhX zB6|JhDaUiy)#3dc=pS0~B}ai)D&O3RrR%UY(c}`~Vw~qgVbXG-hB59DcL<{IHd;7l zluU)*0M$tpZe1@>9KgML^Or6hb+jJyLB}mpV>u_=OigKZEJ<2yWIma&!lqMbr2&c4 zFs(RCK&HY{;5DbF!^l~dM05a1YbnQl67+3pq>$gThB3A4w1GFdz|Bekbn;9V2z+k? z+VM=Rjk(O%M)18Edxt7nnd*@HQ7eso#a5O?ns0aTJXear37e&wGxk$gH*@Kegf^2# zvF5`hjVZaHnewrm^WDgMMHZ2nuWjX$&-#fFrq>-ijuyS;}$G#P@* zZ|i!OLhJVGK02Jy#t%N4a>qPPmtJjRG)YU#VVn32W>lN*?ZtBPP}t!^qJJBwO^x6f zn#n)YbLcvJJ$)1(koGWD5(1YOVK4?VCw4GfywV`I_p?#&d+w1G4jBgsmLEE-2ig3d z8j%@z$r^!S=43Y@v+FoTmtNk)9i|ITUxrd$3eYBuX#x{y3#|_xqMK6>_TVY904q91 zl5%Y-YpdET{~){D-+q)kh)Kr2E6B%C>3GJv2a^wj^OSu@+~+Q{4bL~M(J77*`rIwl zL1uR~kL<7l0?!=RGM3ySpHrHwk~-k<3*LA?(hfZBydB;pwNXJNbo0s0j_8ooh+hHe zNkHVLN?K-P=nXh&tlqaA?T?s-&ZYavB0gCX)x2%)t*3oT0Rh+Ef6Yd!ZJqQbSi z+kW#7U@oh4(lrW2`^HW?c{x#h)r;+vaLQJXp`V<0y*IaCeX8caY>h;al!tH>r1dv5_Hr01<^+7mt0NcFLB@I z)($=d>CDvCvk0V$wM~%T0n8}R_12vWWp73k=&m#`uA0l_9R>^5rzYdjUnZdfkPjRD zezxb_9maNln@`UQ#ux@4uF6v{z}}1rx9ofPB#C9)JYm4na>U{u53Yo?mdsrG?fES> zu!D*PxA$4TS1^AxdL3}~kg`5>>R`60pE8Na1pRz`lac?wuRcz zL1;}U?-nTq6`z4NorZk}7^$_tM+P!Rx-WEdNs9tz(`9INi0*%tmdL(avYH{~#X-p` z6HOl=bJ#W1B>(-H1SiMWyAJ8qiO^j=?&ZhOj&oJ=n=o|=FNWXIj-J>n2lp2anXc)< z{q0EhUa1aE?1Hn`niJyQI&oU11%PuDWL#cZNG=%I+Di7hi{p@lXcPFb zP-FKTNp`(EiSZ2sA8e#1JELC z_mbnHBi-KVFzL6tf`O}X@_CddBF8C0JHWp6TWa5wTfWZvs2`Iv`{8bu8W#}k0NpuE zEjx*t9Cv1zqQ4OfysYGE0XvNv@t}@zB#GmW1HnNP_V%>jTaFGO`1KQ}cbDKnyj(k{ zay5hFBH3?r8SHvT>$z~8wbi7Rlm7&mq?y3_iG3d$dy_2zwH!19K6glarjL*6H#+R`R1o82Ir ziuR>wzkCXSc8xp!NHq{|y=4fDsE8$$ujT|_E(b_+Hp^%fo{}k_Ko<;_Qh-9=O#3Bp z51ayuKLxmwJ)r$$^3w0O(|YLxmmr|iGKRs;semoZs0uKE0wsL~Inb9f-(0>l5II0Q zUPOzBnS&R9>*~K}XqS*Y@^?MneXd|s=~U^<{HbE(Yb2HauKP$H_-X$0+(B;yh|0W_ zy0rGFLt(xE^84q+#h7E=&6Q=TgM#jfQ{il4*vI|&cqP^DV2Mac*VC786&}vGkd|>M zE?Hj!61f5v_bsH-CDF;R{6Z(h0%na7Yf=uW_sLpngW6}ahpTUk)qd`#G^2as7i95& z(3y04y~|jtkeen-w{TuKm*bfk`RB0ll)KV$BYB2bn0-#}tqr~<|I&5`)M>6?HT>WM z%A-Oh`ahh0P(EVsA=A1yn5ts*53b^3oK}ki*ml^@s(KXb)HVk`i7*Q!**&d(pv$E5 zH#E+7#;E_=f#griWM&8YbM7+>XEqM)JnJD7qqhkjKfElEDVFxr!cRsg=Xtg0Q5}(r z$rm{t!6QjZwqPpDhXYmGzd2pVRqml5qYVn!s$ONEMfgXS&++LzX&c)v%K$KiK;eNa zr{>HoKj9Kxff1J<;d_yjFN` zBEIb6?kDk@JDU2_f*?>O9m>K#oXM;cuU#wo8AO4A>|{;e$Lx zM9_P*AxC1|mspS%g)TWdXW<{|E}Xh9cMk(*NX7CduHflSHB=mMDz|>O&Il-k)HOI@ zc?A5JGo{nA{kG1h2lR9Ndm^BF%c!S||M=B?U8OhuFR8)_XcT#W+*JQ79wY%ojmdt+ zli0@bLz~*SI8r>Pg>Flk2ISu6;C&dMd*{1haj@dPij{fk*d8;n`jl4pjuYfRI)x$R zGmsk{m*8rXlRr)?<4G;P40vivsxC;dy{X#lXNpIW1}PUmu1GccMFB!h!6fPrB}UZv zGO#*{3IPJxp((?H!Fr7k&@S=n*F2=D+V`e=qP@U}2eThA6jW4AmaO!MY--*ly6~Perb3>G<$mB*N!hVgvk`pL?z8 zGXsS!4Gwc}ZV#7~U=wbD`R17WLnUyM+m_d}PNux7zASOvbR}iCV8FR#>s6Xqz9F!=JtqN#S;BTqQ4b~EL!sm=NUN3L(ZqM&=!V^Q zEj7#fAJEnsGfqDmTq!4JV0-9H|dgQ7n25ZiW;0QzGIV#27;WDSYrs3Hr@) z6*gQ_9z)tty6!$)hjeF_-1B*F^v>Xu=Fywc`TBAzcYc+wk0_}0 zy9Fjsk5$Gf9GTS)ZR6P}bXs5)>l(XjAWjdh+@x|QnY&(Hd@d&X}C@bM8( zo)%DSr7(5@TXt!Udp)Tl(;g&wH{*TYTd!yb{I$xP_X_g@Uh*=_2HvC)W#xao0qy?L z^@?@@Bq>qaUavCa;GBY5;_K*Qre!(H~wY9)cfw0q{qNcRO%Q@Q9MFn0e?m0BT2R#|W4?U+hk z3;V2ytm{+B|JeK^P|dy^$B9u~h)?JhQPNc9*=rnT>goznE3~u}nnQTUlGQv{fVPPP zsNwBxHrFtM0d)>$RdvH?2gFDS5TyTc%I^SH17#b>tO|NL1orLIoVk4J-cO@+yZw_v zRq^cAQ@qRmDk#fpMar3-C**1#FKtox=AdD@p6dwje*sEUF<@&0lrd4gPi%17Oqwyl ziWKP^b>+V27idLuu7^Rjc$o)afN`}3dTD?pr0C!Yxveg~(!DVj#PR;fF4;wvCa!~r zHuUe)`ui9NNU!NVDYtzb9Tm=~XFPH}7a3i+lk%lV*JKo2@j6?q0}a5zD8MZF;E>P+ z5kp}A&G!t5xgXFZ_$)-|Y#+ zjT6x$D9-)2VFI2MCJU*5c^uCoN34^4F}MP3U4Wtw0hT!WV2)pTF1K~78&W||l*ZkR z_UNf4Zs~3l!$}YjPc!ZLzxmh=L9f(VKEFYLl6dl5COG)*9Kn>-AKWU9 zCWMp|oOckok0-M}uAm_5K%H?DKioLqNCh5m8kaC&ure!UTfd7WhbTh@h(4NEUH2!)r2?jWAV=i0qi^A$qn(1e>YPA2N_ks6iX`AObVXfpHB!3jQ8%cg8}5f zM+iAVN0@#QGyb;^1`5B(!G9|rU;Nhq@E!!bf}E2C_?G_tl!1*HVBOOX9%Y8=$g;5>{50&hV@54ncid04;YHcV=fXK#W zTaSc{tW4ULeXu}}&8*bsJl;5hRt6|Y4GS#P)tnyB zm&QfudBL^^PSg7)SbSq_?{khk#^Ac=Us#x6J$SG|>mREI6L}5gG5bJTItVtXFxDm5 znOR^<31F)_Xg){fixUzJnJfXe!2Z7(K=!Mh17kfBt6|&HfcQg*pwx7P0xDcop+osP zc`4RG<0t3qK@}9u;10O$4dRNpc#^dU$}9fkpMfLZ<3-13 zvw+oL?0GXMW=_7lg(MK=StZDVV-MK4;PE&+CX4Q^uZzR?S1MNe2AZhOP+sdLEA7B8 z=jv8Q36D8-JrrKYx;Gm}Pi%y9E6mj*J41j=Phcxmt}kS$Bm$ zJaMN2la&b3Yd~CSP9eF*O40U{I{V_vSZSV=9W-Cm|6prVhh_U-Cj%~{fb(uDrs0&| zM4Ktfx)5ufp^`5`jep^Okw!TxVYj-7ZfPs+Ak7gk4&?-_!|9t(aDw(NhmpzFC``N} z?(*9v)1CNlKACfqN!jxEG_t*PT zBG*KeyVh?mSVzfA$EcV`35djD@T!Fw92Pm(5&+D?yxZtZjmADM;wqUC%$)pv>Pjk5 zU7{Ui<^;`9;?7TA5v~q7VE{u0xSvuFrK$SjP49!SyE%{R#M@*A8?B3`UWCV|^~&boWxm&ca^Pns|iVma3jI)RG7oPqfBM zeC}%MHo$6=isJ;;F)T}HX`JwU&s{~8Z~NWzs*S6f`Zq{lfeLUkt>#hwt+Q^H>WhBo zRA2LIv41(lEy6>9mX^I^Fb-aEk?1q^EejOp)!|BBynjG(?Hb=tU}?u9{qTuZ@Yy5$ zE+Ww?MyKh5pIOxq)0#TAV{;T^7yg|iQ94A?EnlQ;)ohRXpGj1?nI8W?#D*>nX{kii_OCJQFXiJ}oMjJp3UJ2xA}$`p z8<4;AHok5~m^qxI)08)gpE>?~h-pCh+QB4z{@?RKGr&>~3@-oA6`)`uC6+mt|Gz~7 z@AxZu_T1`!i-bB@B%t=qm;YT7LR>&x+?_u&;Qa3q!Z7?Iu|SauvX8%42i>JcjPJ?$ zQ~rD89yM4b!ZHaB|F=l|yN3R=PZ9xy0xYHvP-6GU{#mi`ymk=o453#f{yp+U1@wW! zlUN(i-v09eJqOG9F-rpo7XBU)jslsHO5YRS|8B+jwL7{fJ6gj3HHU!c2DS8-G-uBf jn*Y89McpUDvF+ARQ(bMmzX0}(CAh7jt6r>nFZBNbAf>gX literal 0 HcmV?d00001 diff --git a/tzdriver/figures/tzdriver.drawio_en.png b/tzdriver/figures/tzdriver.drawio_en.png new file mode 100644 index 0000000000000000000000000000000000000000..8f4329fd4b47b81e4141eb0732a23d34dc7a4373 GIT binary patch literal 29902 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 literal 0 HcmV?d00001