From 868f55d92393dcd3c42ac329ac4ffd5e8d59abf7 Mon Sep 17 00:00:00 2001 From: Smitesh Sutaria Date: Thu, 24 Jul 2025 12:12:32 +0530 Subject: [PATCH 01/46] adding dv iso image json and automated scripts Signed-off-by: Smitesh Sutaria --- emt-dv-iso/build_idv_iso.sh | 33 +++++++++++++++++++++++++++ emt-dv-iso/idv.json | 45 +++++++++++++++++++++++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 emt-dv-iso/build_idv_iso.sh create mode 100644 emt-dv-iso/idv.json diff --git a/emt-dv-iso/build_idv_iso.sh b/emt-dv-iso/build_idv_iso.sh new file mode 100644 index 00000000..8ae78721 --- /dev/null +++ b/emt-dv-iso/build_idv_iso.sh @@ -0,0 +1,33 @@ +#!/bin/bash + +GIT_REPO=https://github.com/open-edge-platform/edge-microvisor-toolkit.git +DEFAULT_TAG=3.0.20250718 +IDV_JSON= + +TAG=${1:-$DEFAULT_TAG} + +git clone $GIT_REPO + +cd edge-microvisor-toolkit +git checkout $TAG +# pre-requisites +sudo ./toolkit/docs/building/prerequisites-ubuntu.sh +sudo ln -vsf /usr/lib/go-1.21/bin/go /usr/bin/go +sudo ln -vsf /usr/lib/go-1.21/bin/gofmt /usr/bin/gofmt +curl -fsSL https://get.docker.com -o get-docker.sh +sudo sh get-docker.sh +sudo usermod -aG docker $USER + +# build the toolkit +cd toolkit +wget +cp idv.json ./imageconfigs + +sudo make toolchain REBUILD_TOOLS=y VALIDATE_TOOLCHAIN_GPG=n +sudo make iso -j8 REBUILD_TOOLS=y REBUILD_PACKAGES=n VALIDATE_TOOLCHAIN_GPG=n CONFIG_FILE=./imageconfigs/idv.json + +cp ../out/images/idv/*.iso ../../. + +cd ../../ + +sudo rm -rf edge-microvisor-toolkit diff --git a/emt-dv-iso/idv.json b/emt-dv-iso/idv.json new file mode 100644 index 00000000..944fcc00 --- /dev/null +++ b/emt-dv-iso/idv.json @@ -0,0 +1,45 @@ +{ + "SystemConfigs": [ + { + "Name": "EMT-Desktop-Virtualization", + "PackageLists": [ + "packagelists/grub2-mkconfig.json", + "packagelists/developer-packages.json", + "packagelists/virtualization-host-full-packages.json", + "packagelists/core-packages-image.json", + "packagelists/core-tools-packages.json", + "packagelists/ssh-server.json", + "packagelists/qemu-guest-packages.json", + "packagelists/xorg-x11-packages.json", + "packagelists/selinux-full.json", + "packagelists/intel-gpu-base.json", + "packagelists/drtm.json", + "packagelists/virt-guest-packages.json", + "packagelists/intel-wireless.json" + ], + "Packages": [ + "lsb-release", + "nbd", + "ntfs-3g", + "ntfs-3g-system-compression", + "ntfs-3g-libs", + "igt-gpu-tools" + ], + "KernelCommandLine": { + "ExtraCommandLine": "udmabuf.list_limit=8192 i915.enable_guc=3 i915.max_vfs=7 intel_iommu=on iommu=pt i915.force_probe=*", + "SELinux": "permissive" + }, + "KernelOptions": { + "default": "kernel" + }, + "AdditionalFiles": { + "additionalconfigs/99-dhcp-en.network": "/etc/systemd/network/99-dhcp-en.network" + }, + "PostInstallScripts": [ + { + "Path": "additionalconfigs/configure-systemd-networkd-client-identifier.sh" + } + ] + } + ] +} From 2b90aa0a623a17eb87edbda2944c7a7da07788f7 Mon Sep 17 00:00:00 2001 From: Smitesh Sutaria Date: Thu, 24 Jul 2025 12:32:25 +0530 Subject: [PATCH 02/46] adding readme Signed-off-by: Smitesh Sutaria --- emt-dv-iso/README.md | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 emt-dv-iso/README.md diff --git a/emt-dv-iso/README.md b/emt-dv-iso/README.md new file mode 100644 index 00000000..9d4e05a8 --- /dev/null +++ b/emt-dv-iso/README.md @@ -0,0 +1,38 @@ +# Building EMT ISO with Desktop Virtualization (graphics SR-IOV) + +The image configuration is part of this repo [here](./idv.json) + +## Pre-requisite + +[Build Requirements](https://github.com/open-edge-platform/edge-microvisor-toolkit/blob/3.0/toolkit/docs/building/prerequisites-ubuntu.md#build-requirements-on-ubuntu) + +## External + +> It is recommended to built against a stable/release tag. + +### Step 1: clone the EMT repo +```sh +git clone https://github.com/open-edge-platform/edge-microvisor-toolkit +``` +### Step 2: Checkout the tag +```sh +git checkout tags/ +``` +### Step 3: Copy the idv.json to edge-microvisor-toolkit/toolkit/imageconfigs/ +```sh +cp idv.json edge-microvisor-toolkit/toolkit/imageconfigs/ +``` +### Step 4: Build the tools +```sh +cd edge-microvisor-toolkit/toolkit +sudo make toolchain REBUILD_TOOLS=y +``` +### Step 5: Build the ISO for UCC IDV +```sh +sudo make iso -j8 REBUILD_TOOLS=y REBUILD_PACKAGES=n CONFIG_FILE=./imageconfigs/idv.json +``` +> For re-building with any other tags, its recommended to start clean and repeat above Steps 1 to 5. +> ```sh +> cd edge-microvisor-toolkit +> sudo make -C toolkit clean +> ``` From f4f44dd2273d3a695de4162be66f151c5d11cfa3 Mon Sep 17 00:00:00 2001 From: Smitesh Sutaria Date: Thu, 24 Jul 2025 12:39:31 +0530 Subject: [PATCH 03/46] refactor readme Signed-off-by: Smitesh Sutaria --- emt-dv-iso/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/emt-dv-iso/README.md b/emt-dv-iso/README.md index 9d4e05a8..9a75edd1 100644 --- a/emt-dv-iso/README.md +++ b/emt-dv-iso/README.md @@ -27,7 +27,7 @@ cp idv.json edge-microvisor-toolkit/toolkit/imageconfigs/ cd edge-microvisor-toolkit/toolkit sudo make toolchain REBUILD_TOOLS=y ``` -### Step 5: Build the ISO for UCC IDV +### Step 5: Build the ISO for desktop virtualization (IDV) ```sh sudo make iso -j8 REBUILD_TOOLS=y REBUILD_PACKAGES=n CONFIG_FILE=./imageconfigs/idv.json ``` From 277aac666453d148b98065f91047f1bce6be4669 Mon Sep 17 00:00:00 2001 From: Smitesh Sutaria Date: Thu, 24 Jul 2025 12:44:17 +0530 Subject: [PATCH 04/46] adding the wget of the idv json - This will make the script independent Signed-off-by: Smitesh Sutaria --- emt-dv-iso/build_idv_iso.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/emt-dv-iso/build_idv_iso.sh b/emt-dv-iso/build_idv_iso.sh index 8ae78721..ad6d2b97 100644 --- a/emt-dv-iso/build_idv_iso.sh +++ b/emt-dv-iso/build_idv_iso.sh @@ -20,7 +20,7 @@ sudo usermod -aG docker $USER # build the toolkit cd toolkit -wget +wget https://raw.githubusercontent.com/open-edge-platform/edge-desktop-virtualization/refs/heads/emt-dv-iso/emt-dv-iso/idv.json cp idv.json ./imageconfigs sudo make toolchain REBUILD_TOOLS=y VALIDATE_TOOLCHAIN_GPG=n From 3f0f0a3bf548ab452de3ad6e6c9f79fab68444d3 Mon Sep 17 00:00:00 2001 From: Smitesh Sutaria Date: Thu, 24 Jul 2025 18:10:08 +0530 Subject: [PATCH 05/46] adding copyright info and notes on proxy usage - taking care of review comments Signed-off-by: Smitesh Sutaria --- emt-dv-iso/README.md | 15 +++++++++++++++ emt-dv-iso/build_idv_iso.sh | 3 +++ 2 files changed, 18 insertions(+) diff --git a/emt-dv-iso/README.md b/emt-dv-iso/README.md index 9a75edd1..63e1c097 100644 --- a/emt-dv-iso/README.md +++ b/emt-dv-iso/README.md @@ -1,3 +1,4 @@ + # Building EMT ISO with Desktop Virtualization (graphics SR-IOV) The image configuration is part of this repo [here](./idv.json) @@ -31,8 +32,22 @@ sudo make toolchain REBUILD_TOOLS=y ```sh sudo make iso -j8 REBUILD_TOOLS=y REBUILD_PACKAGES=n CONFIG_FILE=./imageconfigs/idv.json ``` + +### Troubleshoot + +#### Clean build + > For re-building with any other tags, its recommended to start clean and repeat above Steps 1 to 5. > ```sh > cd edge-microvisor-toolkit > sudo make -C toolkit clean > ``` + +#### Working with Proxies + +> If you are behind proxies and have them set, use -E option with all make commands +> For ex : +> ``` +> sudo -E make toolchain REBUILD_TOOLS=y +> sudo -E make iso -j8 REBUILD_TOOLS=y REBUILD_PACKAGES=n CONFIG_FILE=./imageconfigs/idv.json +> ``` diff --git a/emt-dv-iso/build_idv_iso.sh b/emt-dv-iso/build_idv_iso.sh index ad6d2b97..d63fc99d 100644 --- a/emt-dv-iso/build_idv_iso.sh +++ b/emt-dv-iso/build_idv_iso.sh @@ -1,5 +1,8 @@ #!/bin/bash +# Copyright (C) 2025 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + GIT_REPO=https://github.com/open-edge-platform/edge-microvisor-toolkit.git DEFAULT_TAG=3.0.20250718 IDV_JSON= From 52f7ed34515002eb0de0405f316badd5c2f22c5e Mon Sep 17 00:00:00 2001 From: Smitesh Sutaria Date: Fri, 25 Jul 2025 02:20:00 +0530 Subject: [PATCH 06/46] adding the standalone automation script readme Signed-off-by: Smitesh Sutaria --- emt-dv-iso/README.md | 38 +++++++++++++++++++++------- emt-dv-iso/docs/emt-idv-iso-out.png | Bin 0 -> 154539 bytes 2 files changed, 29 insertions(+), 9 deletions(-) create mode 100644 emt-dv-iso/docs/emt-idv-iso-out.png diff --git a/emt-dv-iso/README.md b/emt-dv-iso/README.md index 63e1c097..c60af08a 100644 --- a/emt-dv-iso/README.md +++ b/emt-dv-iso/README.md @@ -1,41 +1,61 @@ # Building EMT ISO with Desktop Virtualization (graphics SR-IOV) +## Using Standalone Build Script (Automated) + +> The pre-reuisite : Ubuntu 22.04 or Ubuntu 24.04 + +### Run the script as sudo +```sh +sudo ./build_idv_iso.sh +``` +### ISO file will be generated in the same path + +

+ +

+

+ +

+ +### Refer the demo below + + +## Manual Steps + The image configuration is part of this repo [here](./idv.json) -## Pre-requisite +### Pre-requisite [Build Requirements](https://github.com/open-edge-platform/edge-microvisor-toolkit/blob/3.0/toolkit/docs/building/prerequisites-ubuntu.md#build-requirements-on-ubuntu) -## External - > It is recommended to built against a stable/release tag. -### Step 1: clone the EMT repo +#### Step 1: clone the EMT repo ```sh git clone https://github.com/open-edge-platform/edge-microvisor-toolkit ``` -### Step 2: Checkout the tag +#### Step 2: Checkout the tag ```sh git checkout tags/ ``` -### Step 3: Copy the idv.json to edge-microvisor-toolkit/toolkit/imageconfigs/ +#### Step 3: Copy the idv.json to edge-microvisor-toolkit/toolkit/imageconfigs/ ```sh cp idv.json edge-microvisor-toolkit/toolkit/imageconfigs/ ``` -### Step 4: Build the tools +#### Step 4: Build the tools ```sh cd edge-microvisor-toolkit/toolkit sudo make toolchain REBUILD_TOOLS=y ``` -### Step 5: Build the ISO for desktop virtualization (IDV) +#### Step 5: Build the ISO for desktop virtualization (IDV) ```sh sudo make iso -j8 REBUILD_TOOLS=y REBUILD_PACKAGES=n CONFIG_FILE=./imageconfigs/idv.json ``` ### Troubleshoot -#### Clean build +### Clean build > For re-building with any other tags, its recommended to start clean and repeat above Steps 1 to 5. > ```sh diff --git a/emt-dv-iso/docs/emt-idv-iso-out.png b/emt-dv-iso/docs/emt-idv-iso-out.png new file mode 100644 index 0000000000000000000000000000000000000000..a1bd79a3a84c96cdd3f1092b5920b6ed870abf68 GIT binary patch literal 154539 zcmYg$Ra9KjvMnJ<(>TF{yE{RGd*d#RTd)AZ-DwE!8rXdQAYcvr=Xo>YTw#TP@KOqrk<|7!`TOM6 zWi8+XPw1tu?YI#OnC443j`f585Wpx~GyD9u40WE9dQ8Q2j6P#MaW~nNDqKQJ3XLvA zu-%=$m|f7){+7^Kgic<8r%V$VJFp#v6*)TrA!GzP<&{pk-q43YBa zW_ayeNaX+>c5*n2T>8l+Va>^jr1PYYT(ltH!7J`2L{}{{+4wYODqLR#b9&9oM0_&> zDlSAeGh_sSgg(wN4Z>fGOx%AfG!hEo$kv#6F%5(b#MFw6jR2XurWi{cVuTu;OqL+? zMrg+)`{=w*vwkp7plnQY=s5wIEXPZ-@MnX3YnD>yJ08yvELsBHQAjg{$?|<%-;WL^ zn3rmLWycMxHnUz(hFQq8SVFRQ%peUnw3~U{H`%s?A5b%)r+vrzS1RgS@s=6dqO|z0 ztoOP48eSb#MM_xLjZpG*cG0GNhbECuKDl@-g;6a@Y?YONERPp*+_se6L{Y7GZ&*+T zkv90Wrsp9GJ^%#xGv%vY?bV z>o-NQN+VaIQMlH35D%9cllkEoyRjxgj@}{X0yguYwA8$(TB{)`LhD`=((-#&!h6fR zPVt5!`7Jysn|}pjNCTe3M88F$owC75-EaD;s>AMv9727?;)a-(PCC`QHQ>!tC#-Js zzOgIs{!C`?MK%n_qA*q*TiZwPO1tp>>7wL>F(mMw=w8ayAiu_6{N&oFsX3!<0+>gU zR}+|zAr8L};8a3|l=fG8J(~>o!m7IMk_4X$zIu5-s$rYPnMRf-JLaGCe*x?7RVB?;=6w4R{MS z6z)z{otG|15@e798}M);l0AIqTGZ|#SZHxiHr{pk%ujNn!x@k3iD4*oo8GRiMiBN7 zN|a@A)9R;p%^mPmF=~=sYn*diSQBWV@s;3{d68G3j^N(MI==WU&!~^XZ6%)z&xq{H zALA^?xs{~SXS?+O%IcYKL!yN$*DW?L_l&vs3Euya3iKcLdb9M@CLyVFGjV8)BH1EX z1%{7EFJc!|Jye-g=V{FAa=V~=$eNbw2I`1cJXQso-E4C{9Kq%BQ-`*q`;D2LSM;jf z2SZIs9L%ZJ_ZmgS-z>GTLeu(7wXRtm(*0QqxeWH&pG>2Y9$79q6jWINp^!SvOV{97QU9Uwe-ZIlMT+=4944$*W2b*XWqo zc`5om#!x{Z!V91#G(vVb3H9Rro?0#gpxs0V5PANWV4ABssuuY&-@}G4&Vqyxg z>^iXovY4(d5~(%v{HUu`C2{i5U3GR#m3i5H=Vw);VDx&rh&?(7q7_4dIlXNHt;SI~ z@Gjz8b(OD9Jg{$QFumtRKXgrjLA7-+uj*g1;R;aiiZWJ=8q1szlmNzqqYAAVDtXa^c8ScP0ykr8~R z+)(=6#5w)X?uVvgG(mu-dS`4_S;=rqZgK8V4a4M7`3ykE`;Eje7Q*BKwXx0s%Y=3X{* zDxk(s?2aT3aciIhB_e9c>+-eyolP-xC!b+8i5Wz~qvEP#o)_yNjm>J!U0v}U9&;0W}hp) zC^dVIMqHO8S<)b&TIZ+6hDEl|`BpRCThD9^t+)S*nyVCh@7Kg3og!>fmmq;!eU>}? zvh{zQ1C>9?#=j6|waAjPfHQVmQ)$e{{f)aIiWTdwsr7moazV|{!e4q>#yVo=;FjaE z6EwxYf377=?HIth!{??um(se$Ix&t*5{DK20R{bbw`ooSwF) z4bpiwCkCp6l#UDSf6D5mMcYeuHdJsBZ7vBptRtvj%_yGtsBd;_rzv(Q_WYQ6U^Z{` zyyp0(Q z{&7OyOHz74~`!b&P( z)?k-nk~F8T8M;hn*l>Dh$)QxaLm&*61-Do4l!c6IxY_pdx^&U!ly&m*&8q! zTI+7`0Bpfo*o&(8iF99nXWdAI?EFt4CaKzn)kti*{kp2c3;tIrdL{oz4Y2pSoThdgq>;CWCzw#=UVu$v%vv2KrefHr@3PG0u~Om9N(AffZI`+s9#1{EE{ zo8SJSM=gDy4wNvwh4Au_8#J8%41by0I;HYSN+J>hWhd{GXogI$3vvcYj_vLulI!dLMKu-#gMD`8NTMN=!Q%jp&$zM7EBm zI1+pVa(bAZ3D0mlPG+uheUR#Xfx3545!4VD%O1j@C3-F>I>03#T^7m-dO!4qKgl=O zh0z*3EA-f=VtVil{PfrbO}3I*c?SYb&Gy6_3-W&s$z_va^r;-yqt*M?-1lw+>GQv3 z$H#|cTM`e{;C8|pZZDjKSu^Kwi-7cJ9m#6h@gCrFvxd&#CO(IG*0qioI>wjMPxIy3 zq52151eWcYzOee}BvUiMjc1Izwth|jknKcX#-Q7QT3i*JL-%Ihy-{hiViSx3FaKP5 z%;#>U+RJdIJbyW_NA= zNFLjAD=AT{A+4ZfQevw`g|DzjjLM7*nlIjPS~zr18n^sn`*q`;-|a}yqdZ5@9l_%t z=SN(DAh>Q>*^OWefEqN9_=*q>G%2L`NEJjgmf znWN)Dhkof)7~?Fm-(MAH)7`}J{F7RJYQEuic&f|a^Zp&4QHjQ;iKTSGs#PU*4edFq zhdCRlu=|;$iZt~x=ysgMq+aoEi^qTeq4si7+)K+-=hmJKFE)N)+VieJB18=$&5Ga8 z+bmo-71Y5a{a0EJ>t4F-nJf!w6AOnkmej{R!QEAkl<-Ej&7S!>DME)Qd8>vJkLwUh zlH2bCylK$7E%}`+#lC#Soc}mNoa8I50NJP7Bz@L?iKI_CKKF-@6Y}EFww^N&v6rkF zF46YLr2aR5rrzGo>NB#q%7#=Jy#lP&H1JXSiAJrMs#ZSz_D z2mGVy-f{jN--X|*ReRwnauk8psx%WCL%*KWFd6aZ+0Qf7rGo>-%SwQ*V8J>Kd}Q$Z zjNTU8g?jNd=b?U;I>5-ff&#pklQ9B_${hXeB;)(qZ&1=Jmud-U9 zX)xDr7_!_tg!9PYBf~0$Z3faUmHx*NBF=sCpy+}|h~n86hpmL__&re~XoaO$Z0D~y zN_s{O|Ki4Jv=&1To>7I3N zaj#U>AzmF&V3C>6^jK-mJu~Ej(wMV?L0t`*&cMAfV>SKj-ztpQ&HA)h}_InKuV&E*90A)S4x z6=whF0r9@+7wS$g_;&rv{l>cgg37wj1Nr*-z_+_qz25QNT{_t$T1X1Mp46veOj(T| z+C-mX&%L$ity$jICfXK`&mx-h;v)l3AB8m>Gl{w{>5VQ99e!9|Nc%rLf4tpxY&);d ze-!vY-Wqjvyo4wBrrRXLq+UL~6kk@7IKm0<#0@K6A;hwSe8;#F^~X6nQd4smO|4c? zAe;q#x@uITfr zEbQCUhiOjSPC9-8hKB)!mVsn#snAk=3NN2nS^L0b{XEN{yYZ$4y=#akvU!>tI$Zln zBHjF-eeRI&UuSW>c=|)m+kfx(mOH|i%Hj9KAY#4M2!uYQ=!(0_N?8j z=d!@ma>4DvcRmyFM=WfyOB`qaMOL4Ghc*{WuqR`&vnaI&$F&`0HMO}D&r|=QK8Y|Y z0GHgtiRZ**Rb^Q+jo8^`>woj#e;CStQsE;TbuQXRFQtOPLmVTo4G-nNn*)Agr#D@D zUa;|~^1SiB1E$&%r8@Ej$C}|HTqq5a0(0U-P4tVx=sZ|%j8^adm&w-m?O@EG#~xzW zoRmB1hJgyzi@P1~>-N!2A8A0zRHYKkQQX-@qZ5zSwfDdWGicD|zZqa2;&rLo56TU6ya;o2{@%;Eu30$n?3`4YDY(cf zVmcMUp1HvR#JaRuJ~NRsu+v}7>Ew7lw<|jZrA}e5%g?JaH}`uZvg3E-pBHU)xvA|( zvzkOOingBo>fgP@kCS_Ah|fg5F_pcVxGy9%s(Ifd0vBWGdOSWbq;N)7BM`3&@BwcB ze^b?%IoC|)_Zq1?pvb}I>KU0K1#5>}J`|=8!^?NGke)Jzuk8YNncNz%n|5}4zd)yNvg0HwvA?q)8s1$vTl-@VImSt6++ zr8I6>E%XTCCZ%Q}NL9o%r#u1>Htb#fLk!o{XXchFcoRks^7YOuT0TCl^LnB$&-G++ z_C0X`UE~Bk&PM*Y{cZEz=?R>gtnV<}QNZLHoP1YD{5L>IHxvGUefnrby>a+BJ|Bwg z01!#wQ+Y-B=1zeWj_jcHMzt2FF}D!_Jms!za)iyqkUboM zn#eI#zkI^De)*soY=&Wu^JRj)?R4bj;zXp$hnF$e9q;YiIL#YFDkS39WAGj8{%IE2 zF}|zc$}%&(-(1pW^o%JL+rRFHoeDrUajbFV_h___P|rPbAq`#iW`jbf%bAaDg{`d`N~LNzyS zo!df9Ilk^JIX6q8m$(p}4Z6hbi@w}-9ktZ&ZAlCC2h(M#{dnl{yS?^+{r;B!LZ3`#-PN z7kZ4+6N!J*>pemy^IO;85dk^PQVX+!-~vu! zT^PG5u7(j#Oo$5U;P=(NQ1pQ3KhCfT%Wss049L64k~lQsbRbO;PO4Ms^DY=LTHnl< z)wU4FCCsyY%&Y>}CnA}f1&{@AIfG`J=$XajG*T;-^M|E!n`oC?@+pF}^Jsu^a8!lL z(I&)@!3+P`JB_l_oZe#iNWM(I;8S^o={4Hp*bzLVJ1}t5yX@p*;`#Z%f%FPa)R6x% zOh$_m;0$qti3ZIFf1LtO?tE6iyCF%``pnLH-C-lm_s^ zu{$oIZd@HS-FH)y#b3M+{CbZaPMX%ZGPq&CY@lBC1%o{$8xP6R|65-F2i?P%bkxUL zw;RJxNrNIutf)?o+nC~$I1dU=C!hD)=@9I zi$a_JZ%H*psL+wNgmWRfGb1OYMXIjpO}P=6f&(BsQ$1gBEb%NaH|dKV__`%UY5 zCl{vbDK4<c{7Md%v;uqXFKLbDD$-7I9Y;;XjrLfqM@j8E6i9o z{L2xaTrkdboezOu(vZMjC!RTdQ*(e5qz}+AKjd!5@yEGjEvkVYw+U}OW~jNgA+t%0 z^*;6s{OSQsBF)ZFW5}g2&&5uw)lYmd`CRv|lgj~o=270kA@4dC)(+#BcSS`r zrPOo!Y+$C?RQ;M5%Z;{!RavuemR_Q`zSO5Ljb-UjVPQgrYI~jFH2pVVI~+o5{Bgk! z1RT7u!BpMo)I|j&BOHBvsw8VsTY~`Bc#bGpFrgFQYZnAXBQSDaFG=CGW=Ed61ECLK6T0|a2zc_FJ)R4_%2)2|d4S=3*@id7 z$aaV4lj#fdNUZe}j6=7v8rt)cQG8@gsI!zH2k?5zD&UhgoNJ$<8}EEy<9?|Shf8Q@ z?6=aysTVL=H10B!HV`LX_o#Efn0c@X^IJE(C9UGN+?A2T7FenLO)s{2$%x&}FZ=S1fLlgxT>WebcXV2RFIdx-l_1?;U!1cQOtzHdtM zN(Ep=WdsA}aT4ADe3YmUh%?w@(K%8MsTijs`A(aKSs$1iWUhp3O@3$km==@{=|i+} zp%-JblZ#K z02*0uj|j4{O|K(LfKTR|)0;DX`*7P; zCGw!8S;}No5L(pIbK(Itft=D0!`u;IYV9Az}$aat`rc8PrwhC@7(DGB0aJG8)XxHLY{HCKaJ1%Fw6 zd;mW}5P&9vU5nlULXDF{rqBhROVP?m;PW*AR$Hazy}s6{Wh!eGH zKyi-IfVFe7ScoNz%J>5JodNMaf^2bmDkz6yLbX9*9Vx{K!=RCP7 zMtEsBiz_VJQvieWbbJ^G8Hju^cr^rFu%e;oq0gQRp=7Az_$A7@*0VAj7-LXtxnPcC(A*DOjtFXAr z(19+H3MFo%omL0zrD?xv=mxh;-hfLOWLFVqY(;3*X(YV4y{UBpHOvJEG|?Q;GWr2> zi_hw=7f#zv{@j0iq}xsn^^Np$#DVI>o!W8E?S4GOmeOv>mGb|DpSuGqw?MFGRoW5pNcGny499NNzzA5|K)M~Jed9UF=w~`x1B8@fo~#{ zmm~|xuI~@21N-<*g9$S)Gt!cNs*Q#sRqP;sIvC$P8qxUjG?D3D0j~-*P==1%L$vm zl=s{nv&2XzY^6)YGNh8Vgw!Pr6Mj^E7ydO#R(9JAb3LHVIR<7uUn<~;S@G;DH><9G zEc-fmKoL4C?aM5iR~Um3rIy5~pi^qAu}l0W3&lF-ii9{OodTIEAcPwk zU+8Vi8xbALz#dRB1-1VHJ~L!i0cLg)%hibFilAW_2MCz=M=W)9t;L-`Sp`)d(2?{| z;@pY#lpC$E<1>{sWNxw@FV~l*5tcxxXWU8>RgJNZ&$XdvHu|Y7>o>s(9DVlv65S#A z|5PEveSj&|$abfcAB42P6HkVTF3dV{rR|dM<~W+W$V>Y6F0uP}B?gM=HuxxA1tFLC z2Ex)?hRG&GYTkUmaigKh*32&5e|mJ7E0<9-^Yblxgp}~Zf9|{y24!fM%3P5qRTZO$ zow8}*7o?^C2m(o`2; z(~LhJic>=h9=g25FgYj|0qs8Up^#28lE?Cg1ENLbQN(&E3xF|W=rti+@n;UWia?p9 z!V9u6312Zeh2}YYkkl^g@7a+H`t~_1$j~Z|nvcX-BD#PH+xX#z7lg?xWA9pbPsVTWAuZ2L%lomLZI;Ewc150?Vq!%Ol!%zUV%fd~ zgldkgi?Zd%1pAFHIVBw7qW2+zq`q*(f=5k?p)re^lScq6y$Jy8Xly(UxAewk3N8wk zm~-@=M2_&ZMLXh_zTKVrkk!1aXi*|hMb90f06@ewL(E5;D}G1(nTaWuAzuxbP+6rY zZMY0MBvFB${H-Hf51bZ}5)oT~{wwlfqh;5I1V^yQ33ZG4Ec(|pH4Y4NYr93HcFwcr zlt)r#COSGi_kx^NbrV6mMD5)?Dk4H1Vi|L;RZt$f<)}xT7sY)ZuXI|a4&s0nZ? z0aLi4NGhIdy%CeGT0sElNRoja;*pXjwS_K8=1oN}N`I)Rl0lKhE`c5%!8bD&FyU`B zd&L%lfhGd^DP&h3cix5k=Os!*#beP8w%Oba2-gCAQThgXVGpett>j0U0~h*_M%%?s zbG4WJ5l~DcmR8MRQ=5gz0wDX4iiQZxBU?L3&k6y2P+Mdw1+Arn-IUjvC@B5v;HpC( z-Nk4mMGXAjD=N(+#kG#@I2Kn?-Byng4-*i3ny8PMQryt|E-Z;+{$f^hYZ-OaBU)arevP3@V0JjSrD2$3 zJ@6Y5vI!2C=tr%pa8O%}MJ|MnnNFjkK{j#}y)Od4M_$j`T_s}QC%i|ke0jLIKn_Lj z9VXVoV!E=A`}~Ki2C7&B^MFi~`hr)Ddlwbsr*v{xWUTZbVfIwYEf8fj`;sD$W#f2( zow;m8E3nePNMV}@m>@J-I}Q zy$Jw}K#2f^k@{Uv;w_VoO5hGt*E)UcVp2#>{Evb62ZMl+^Jw+IXf?%qL5=yQlQhyGoudwZYV< zlFZ-Fm(}~v?m>7yBJUo%E?(?*$~St{BJyP^#MML=&P6wF7OS?CycAd~_Ne0MG3npW zh-F>b`tN2(qID@RH?^U2hq;y&2wuf@77`c2S zQkL?;^@Us2=NUrgy^ibN={RWhj#I$a)FLespJJZaDyiUmY!R3HY{gaaXW;#EOGM}miI}CPLf-GTcFSo zQYnytGt-;G{nn8dNgGJYeY&Qz^}WX!GFYMzsonjE1|=pL&s0GqC(k{pJbsKwb^cgM zx&l85h$|UfiAv_a+E^og!DL@85Bk$V=ca;~vhY=k$AN3!!*xac;Bv-Ksq6<&*FA^K zP;j-YSHI&sL+S~TuryOX9slD1Dr|=GIRR#ML5tnw_kf>wMa|E|+#nf3&7L_pG+l|FvqP5<`E@-B5x8w-D^M3 zKo^Z!Sh#Y;0$4d_I+-^RcQIMHI$<%hx2PkcuoiHUnhFgYj?d#IFEP!WNFYl}ErNX}1Idfl2&?)szC(wneLjAMM8O1c!j zbd7>9SIYB;L)hSnYoV%1yn@1^%xq9a<#gIKH5MduQD`*9_&X|p;cl#92EHPI>BFuZ zO(f}MG*I+q}z6=V@L(vFIcqZ9p^kuE95n_6_#hjk~whGGoCR zZ+i)3Bo(Sx=q7l63(~||gyZkZzN*v71P%6!T(Wa?DqwxbLl4b}$YF9f7IV+Q^zBCT zaibix)tbmlBq?HFyHLVtZ~*a4!rba_14(=o@3(KD;6z^z>|OdQ@Eo0Q|-O>Li3PO);mg@(taL!oaRKEk;!%K&J$gT!_IoW z$6`z;rM+PCohvkpt63%NwQeNTW3DRrKVLgJha}BxqmI!-I12f4`Xg2-%%WBYNFuK= z#V$hCEq3|~k!Yu{0n5{;kT<5n$ehD2&wE&#@3zJmPRl1gi!OSr5j-8Tmlx-^2EGKA zoiVD+xIQ*71Toy&&0a4kT*zT1J z+&vWSd3jQ{eejsSB&*YJgc~L_B++O@(4;my4u9S()uD6ukhAAsN*VPX{6+nq_*W4B zoWcNzb|JQb>68m8L6!N=Sy zHd-~U5=Jyq?j{P09Rv+@r6>9Fd)o0a`3!p$T?qk|(b|6RP}_?B+y3{zzWii}zy`}x zFh}SnXx1-BmB?orK5D;X$QBG!@U|LH_C>MA4B^(V1$n3nsM!*s@oq3o)hNyUu{BSW z4aq0CUEKoB&L=aMqZ^X5@r7zSZ;-q444a|H*?hqeL$qcewv9z(Mt&>DldUw&BT37j z$!2N7IEkg;i;AT|))f7(>TA4SVm7`5dIK`y&iTPdH295%IsD?Hx~d!c)$ug5C>qfje!1DKml3ZtI@=Sj>N*K}=8mLr5tMB2&Oe57PnoNi?GZcU zFgcvY_4A^b7k+!Mx$U;KEq|JK)0==w(UFhZDl%x=b!<%LxtpYl$jL9&F)+SL+9shT z25B{;&s8OIU~d6qIs$z`32(7Pg7v!pc=$hcP`a*38~!+%>%2SYeSXL3|D07r(&~MP zUv)4$g$@p{`FMoCdDWlbHu9A4<)%2{H1Fktk<4o_@TWZ&AD&h{zt!$lhSn0sg>(WVXhUGWxU{T+vh(U@Vy>Cimjg7gbSjer+qTl!ROnaLLqUL^@_9k z>bl*O{Cf;9N59}sPtj>?N}oi(Hu2H!kCeN0Qwd)Nu3)=AEE6nzeUqQCe)S!1-pbXz z)W7%MN@8E{zVm!OE2i9q?i)c5e%;IJFeLp(CaEm}@q*5v8hIW|kjK+>_<7z$1B()e{prB9fm+6)W*Uh!uw0GUhlSt z|8LWm+;8xn{NvsW^5=8Wm&h~zx3+86?*2I|x{=E7V;eEB_ypnWZr;a+L6Hu<{_L>Z zKLXwZ?_qt<@2>}Tg^EOAjkhWt@SkW@5=@fd-AVraLprp#(qUw-qjDb{*9Q+y0n%^7 zh-=5@k!G}kd(MkyUFonP8jKgO%nH@i29LZ#87Pak&L? zZpgvLV)Ln%>g}R!f)qNFHabNwH;p;{CeMEV=>ltok&;mOMA}es^qDnUV%mSZE*7QW zmQt?`@ZItINgdC)3oRn z`_rr|{@mt~){pR!51le{cqCDy9zGJ<$-pp*(=idRQQq&_QX!c5JXin+ZrQwI5y&Y4 zq?r!i)*SFQfhqnlo6HbQ^hIuW&S!2atW{mrI&{X#>rV$bjh&DE1stIfy+q|t3(nH zJ!xxZsrXvJwU=74akUnUw=4{047c|JJ<}u4clj$F9v^4?Hr<5wep=ox1qH;kXNC8n z;}kJDrn3Dr6D*S}Vq?MpduN7l7j2twKIFX&oT|s&1Z@SZKZe2GmR9y%$1BUf%xtvH zInG$dr63+bfBR8OF~xFVKiJ2?{oGd_!L=Wbm+E$smGUNzOG@CUeSU_?y(>rW-_pscsq;I|fRLbvUn47`q7#SZ`O{+~loPcA0r`%Gl+q};Rovrq zj5&Qtk(84Un-9y63$U)&ZvU3}dHu_yhEvxw3Pl%O%yrw`-Vy@?`^*b|_YUP)Ea=AT zWsqIGE0>o;FyWn=NXUazcUH+lSz3wmS72Yc*jc{OLp|m8OW--|Zr`Ejb%5ai2ebH(Sj=+0dywrZ`?S0-aMhL1gOJ{p@Q) zG=UFpQ9}PVbQPg`nXC_0>{Kj5PPB~C^ECH;kVLYTm8=Oxo%^JKH4G~Zp_sqh=~aj? z0%KO<8)$6Z;p%mr+dn^0K2k*HdGZMao+z!mEpJRtwS*v8B0<<2fHmPiG;B8RpS)jS zLBSz91Cz=pf0UL3L%O&oCrin^M++ZUou5c&I(LQs27dlX`8yJ)-35C4>lY{9V?SD-8V;iNTJFgRFE-CssDXIl3 zOn{H{s!7$-JN&^6sw_M+7KdpTW8{tmtwzB06nQ^X)!4OKk)j8N)tN_xQD;{tSsCc%{Nk!|Af`{eO{$p6SyV1B-H zELdIVf& z^=TT?_I+acnb5UVucLRleKboLJl5}8oqfKJP{0&z>{04h=;gN2Ad#rLiM|ncZ=@X% zd<(6_8t96ttFbnMKYLHAsieSjMlSGAvaPF@ODL8Bh?K=hXxS!gb8(5v2Er#;9{z|s z2h2WSM!19nBc0L{(WFf-Mk8s;x^qU>wEkwU5APVZ;m{GTsD5=N>mJVCo{^FzW&Puk zQCFUoP-vV%SNH|b(XzonvL-jszwnj9*P17I0u0jU?Az4Mzv83{!1R3OKSXFtYF;p*yk(g8Sr#oUT;lnUNw zTZPXdY16UUI8GMTN1r5%HW;Tksy|2Vj&Z}L>2iaSHPVyf-(c?$&!8vKSUtp#j9%C= zFnT6?@JYu}H#Nr)p%9BRv{4v1F*OhW!j}$F7qeU4yQ=RF{pi#k*Xa}#O!e6;K$a7p zXyq6!!U#m|WBKzZ8(J#3pn6&);(n-{Z(vR|32a>@uOT3&&CJc+DU782v$W>4 zSJw%*8ksg;_nkP2#lSxQ8#D7e;<&z?H{TMyV%Z-&C4>lLEsbq53K!(f#gnEM1+)Cw z)9X!+nf{pO)%Aqkepm)SuRX4_v8bD{&M=)Gyq@~I*$Qzge-#tt!cu#9d2QKzvhn1p zli=@A#59PL_l2-UP7z*Qrh>jqs0g^thk~h{F0w{#`Y(3x@poiG{Rot8gr{R8sNK1qOYv6^GXa>+TC1{yQD;Mu*m^Jx)KNi;t8x_BU8%``MRGp;3nh z42%q!xmi~BpW;0~`D|b0j|^j0-^IK z7NVFQdf(ACud$2JZ$Ruj3f5EvuPztvE?zD;riJ(Yd)!a#) zDNo$E!!q(*uGQndDC-HTdzH1ik8d4mOb4F1{W!V_OhY#b5~@}e!Eip|D#Mi$H5+J* zJgb?=A34l0h4wR2fR0EamJ{5rWAX-uoV%jmP7C2WPvJaJwnSZ+oRXP5cU1eV=;*nu z5a_vX($AO=l!f8uLBZv%1q+C#(j^3qXSi9`JsX7?`>&&>ngxh9(_9x4*x`ebHP#Er zE5CVO%fIb z`U=y^yY*>Ax?byW{uXi$M1GFop3g3F)ZCRAG`Gnc{9fOY>XsM8jY{4#hO5~cNkC{_ z^HJYG(lodd>q*aBphYxUMlX!UqCDN~LJ^zq^KMq4OOrSAACyQiH=P_sT8xjKU_FQuMd?;Gk zawYW_dMT}zP}Xlq@p6*%cSBPL=+x8vC@8nfYLD;RU_rFlCtV5eoqMt-I67l>s&%=S zbB5~g`1~AKH$wSR$iDRTKd#pIWU0NPjs1|we>?pTPOl*0QY|(vJ~Yu=a`NcudWUs6 zAQyHw0NV==ySA}%&*W1A&ByMG-QbCxZzr5jdp(n&k~O>(`S2beRD*joODl(PTexU| zG>j{)p(0ab7i4d0C`_kl6GTE07#Oc{P{e%F=j}g4y`{9fI7eXkVfjU@%pL3<8=v6z zh&IB*+maIbuQ#k&U}p9d2i9}b zd&?3!Yh(Wj=)fLG{N+aU=KOUYn1IvwET;XM)%4TIbS~dFmB&5To<$6nh|KQ5Qlg}IN1l!DIj5h5%@ts+4521g% zDYh6G3r;tJ$LqZ92d@G~OMMW8Gw=+(S=cf0wK1fEgB%``z#rdUJKSN9Ys_8(ffS9R z4Fn6u-^Ic1*#p0gn z7khK+X-&ZG~jOhT&E=}^;O+UJBQO8)*AwoHpP8z)E8nWs8v3U}PgOL)FDNl>~^ z?N<3)62f@2MMNMP@^nuX;;>v~6sp5y7KN`$SlEns)@s?+B}zaC?(P6JFJ}LTjUofO zK^K|wwX##T?hcD3)`Qjc!%@WpvtP78;V^DTWRNab1;^~il+HLQ!tGN*10N>ZLNGX#yxu)B?mk-Ke`VNm*0zx)wHVQ>ZoFYGdw zCZvLt;)BPLO>_H58)~gtNUhx9j=#P~r&i&tbBOPlE#5~)PfqGJuDNkju9vkz3Qsh{ z+S+tgu{=Bsxmb)%SQPsCSi}R(3^pw7-~1E;W%T4wi&*&g)-r;gGa!xxB~lZ+|JU1< zeB-uRQ%esIu^9tdX!Jt~SBCZ<>A(AWUPx}KK;P;ni85nSEhyp=VWJ@f6@em|Bd1Xg z*>4|-zV{Nj{-w2aR=_x6Au=LHXq%6o*p8a)t)U@1Xpp|kVz)?w|H9&6E5{9Iy=S|c z^qU!P&Fl9`^P6G#+ODEuPB?@B8_{)qJQX>gPD-6rJZappnsn9aON@*M8ZsKE_)e6r0(wg17irXOz31&>Cco-4bd=THC6IqQA#2*RzCXa6)U^Krw6% z)lUKz?@G;Nc0hs(1J@6Rj4sEUFY78qlSnw@ zfc+MO8;O{d*nD;<_Nf{6&tBv)18_$KFCUTk?cp-T58tVQKswN6J84zz-0^>)89Bqo zg|7l$foGjN$oI5cbIEagk%e*8$#0Xd4K%BDW9x8aqbAXtQQiRY@P)t6I+k~}j4%ey z(58YEIQr-oub^e$^0F`UYR zL1ytHNMKvVDN76<=?k0+LvH2N5_6q!P%xJqF&T-)&*{zaSrw~;omK0J$)r0xxV`-A z;M&?RCo951jnOOwpfLI>nIdm-Vk}&Q5GEt1!!0skvOxYVu(_+Dycdce2fe1Vw9Evm zz{&5JYp*V1#r}K@RNEQeQQrDRB$^vFad#P}5*Wusn#aBwLF39<#RMF*hP zp*y%Yee6AGV}7m>aiXetKwNS@Yuo5`zZH>TH#vKHn;?(3XeY~{))m2#$?j(JuM3(e zLpf5MW-tWv-#kxG&(527*gk-Z9uM*5@>D>00n@Ns(9lPAp~$98`Xdfi#}>gi6^IPX74^gB z6+^_QisZJj+?fST_ZJbOj@#(DPh6{>XL;*3fb@uF_;aOoITCNwzmMEJ^R<*qT3W7XE0iiJ;k%2gGdp1`t|h`W))`CXcT0VS(H zt?%YotGmmYTMJ^=o;H$^Hd4n zI|6%7fyRz>&L9~7?bn~Jhn>K#hwOp~3>wwx77{My|cqxQdJepku4yFp;RbOrpc zn}UMVHq!L;m`8+NK5>pgPsm8 zkm|sH^+H~=U=XM4oNz85%0*ER@s4u6UT00t(bBR!>lUOKS5c%X=RDvx%kSYeAXNs) zWhAYB`h@;~JCY0KK)6k}ekR^}yHoS4x9LcD&1=2+eza6%3=Df=y-^R}7Kml1J*970 zvH#n!pPq~epY@lHNG_n)@|&Mn*cdYBV3#5hDds1Trx>nQ7H(!8@)EYj|P2YcCO~mcujF>)+hhQJL2x zs{5I=?txTj)9<5(X_3QuOwAlGV&HmRGF039j{4BX*B2_GHrEfGndaR)*j5)kjX$M# z>3^>n$j>PFx?O_^kR>HBEp=V3%~1Lis8O_=VLqS9YYK(?c>}!YUIB}FU&PDh`9oh? zcMniN{;e#4qOuhx(#S^(ie8Tw8M=Et_UXDlC2RG4wDiG@|M$zp7T*2yrkQi9CdB$% zb=mH<1Y5taW_FCes@!Xhl7ht zv3}lsV#S%qULchI^m4c#yWaN>VWIEhf_>dELb)`IrINKsN4itf%G`-K$4=2O?|U#` zG~eTR{r$CPSMvFW3n$gXRD6xq9qY@>^SPCaX|Qx>93Gq=-|C|-kt`})Y$Kwk+~?0B z)Qrq5kLTTQv)&Di);Y|xp9jKVS5Yc{!Oz$tp+JM7H%RP{i6XHi)0UdGL_X$FYTL=A zzNk7M<1DFC`8;FQ{76Gdt!-$=J~^u`vLNimq_put2u+ik!Y*?}Pqzl-*LN z8D9DN-`B&7H#>!N9ruW7mk(3^KiC3qvpP;s9S`~rvZ06f)T{5B5=;4kQZC&Th8X+6 zuP=|+XLnEF*Qd*P=ifn(v!@Nj z?|YMd%Y*EiPiTN~j5#`(OX>3I4NZ1vXBxe=S@y5c>d5VcpM=v2ZS->Dm6}jml;AgP z7b9044fAIjAVkPHZa579w&39zs($%XeFe;^sS%Vuk(#ApR05nqjX&e2RqePg;Nusb zxI*A@*#Za0yv`pt#*8|y+4v5>g=C~d5cfFw_!P;dfQm~Tk?h99r09+wtS#=5(l=(x z{}TOa$nljBu!MoWJ+$gb+AI&s2T?^#X8+>2?}}h`v9ghR&z`E;KCxiG>UEeXv(##Z zJ#(EX-}*=ZNA)GMPoG<4a>e~PBPVz7dNClJYU3Y#fY%sy>vfzjP>d1XoQ|NP8)KPp z=;L@tHC3!-0C>+~y@D@`ubXX-emPVA|6HFI&Yvi=n(YsOf|B9c=T^i{^Dl0 zIPW7;8GaJp|Bp{lRjfol!E4V%6foXgR2aXBpVsI2n3YeNTXcPh#YhE{?y$uXCQkB7 zZBjlWL@k?Kvkw?D*f&W+SUpm24sKKnxy&2N`!ZK)`Uwd^JO~8pQou0?L!bB^(}QRzfHSDn?3f+q|Qu4vs%_M?k$@2o$7kF zEV^GAieKQ?jSn|5Db4TVFDNh+(lTlX0))*Q9%N-3JP_EhfcWC0C`Xu* zt7MtKYAg&rq{-=|V3PZ7H0~EOSzm;Sl)N1L5~Ma^I0U(JrHx~?8$2c#q>yiUzke1O z`#sw(P&nhj%aEg#N3hGu`}%~p7ESnJOxGgMkfD|-#6Jj9_HA^AtrR9V0F|nO*}*DX zcF|o9D&jUs?>{tLuk=s(bW((JZWRgn5j_Q~1}FMt)yw@&Z57Lo++G0;`F8+ja*U?LnDO7Qv(u;-B_*(Aw+>uaFF*w|hb9?5y zN9Yopxyt#nn%(`C+g|F&<_bGX+DGNxxQF*R$=;8oi??taFGC^s?Bl4=>&|>UYmX2- zZ$URgbQ45{9PD@}&D#wTlULw}i^zM^%MFdsVQA{5Ttya=>SSJao(H7ebvz0`EmU`8 zcs^em)j6ySh&<(EJ0F(B(yy~RgG?%EP~bko&tON2hm~@znBPRFKzKGE07owlnw*sf zVV31r|F0kJ)_kd?)Kqs#r1fHggm^(K>croFBvGSX!iAlG_%wU$E?b9SpTp7quLp-e zSToW2Z#~i&C0Ed{&?!7a6yNEl-@}x&#Fmw3ZKdH*ps+8_1&hWo<^(n zC*tg}ulMXkr=Ikaa|Ep}LXdXshWKwA@Rw^~x?L`(X&E^VLGEdV4Bq0rM|`9y?FI{* ztm!sfNW*n&2Ei7X*Vor>0u)yB1J^Z#bu90G4Khv9fj`#K_G81>(bA2n3*=w{)Ars; z{p9v$2-dcO(LX$m`W+^XCI?|~TT$9(?*Z|zHVID_#@m<7I?O^Gab++) z%f7V7f}DEZlBK6F^~dsV3?Cc4`WW6`jXi8@b&ak)&)!@0ELN>xr>Os%LiSFI-*w_2|2>+>ne{!_aiHo z(EX=Bjl`(;kcjj4bzU4|jbANa&PEVj{+sjyqG(+A(j7G%R-s}DI${ea#<~Y zbnlIsoSGvuX4bM(&NBZp-CUC5&iQ|YnF=QieR>z99DGvZB^Q@V7&*W(4rH#kZ^-07 zqE*a$spCZ8E)XXfiYF2d}O)S^3wjw&LWWbcqPV{ z(g(erS0bKE!i1-bfx!PV7d^mhBp=ZPR9c%TV^zs7}FL$1hi0R(*FVqv$V7fuaK>!EnUv| zPuNCXvE|KiJA|VKGOnzrh~XJmoV*M<-{^COLI(bD+mYyTkE+Q~DW`gRU-Uj^WMuS{ zjLdmq@|^C#FH#Y#E5B&c59){ zSM$~WKc)iCTs!tE9Zham=Jma%rM$ZOOd|^tEK3!*_@rrsW*RWt6mW<`0fAf4kEEa= zvCyE}Ee^{POYa8)t;=8K)t07r9&kp#ZJI}1BvS2EDFgH+5Z_9p>8|s1R>w8betm>C5C0S)VZL2*^H9w2EYG^!-iN1cg+jykryao?R4*`L`ZCAvwi)MUP2{&v% zTB{?t-00Dkk+He(JLPq~lBJd4&l=@?p@yXF`-)_*haYK|Noo3hi(OZU8;@t6vtKXq*f7AUHrkz7GZMTZ8zP+`~)OimvG(dg@Lq708&1w))! zFg1Og8ELHah-&+KF1@oAY7rm_ns#W8+975}9J2m%D*!o2v>*vvP@I~ak!y>IiEYyh z@imApphl4hkB9&y)R<{qyXsY~`=pesb%@MBX>7}v(iy}d#CM2wsVh;wY;Nt8?qmNA zP+eW?yAS>V;7Tt7*rHE3{Sp%6ic0w5Z%32e+Jz|tE=)wO%ch(b4Ln_6L$EJYs2)&W z-JjhnV1e-Oa$G(Fr_*;*5`HJT*Jfancju&^+m7tj#WX^x;J8Uj(I=}=CuT;m<#_MJ z8~CqF1{6VTModX*360Cq_rEP~-A{g>7AbRO;-ZJOxa&XcC^Kp^b;MGLct*jqK7Y?;mUXV*ke*ji!@= zXH2(N*4UASr;yvL8=~8J_LWR8cEaUJ5r02bTOtqqaRQYywk{QD!rBNZK9I=K|CGX& z5R+u0ultIN-^>Txrxt?kk*DU40?D8_l{4k@E$Ws%j6%paw_`W7R*%~ zHNZG!l^wU7KL-EG1&V)3JOZJuhT9f-bcgX$OUy5 zMm3vJPWAkHUab9h5dzHFIb|d>!koj((vh6q7S6xkjS9@?i3@P*OY^PE+5?WCI>YFb zeXmaPjD1;#5xT*O(Tw-m@*}F`^#T>Wipj#f>l0N|`cUAQYC7MLUpZp$uz^2T5emM1 zUJz$9V-JB39~z!!*R^8({nbGQr-DifWAQfxK_$pVYvNtgCmFOx+XSzE+aWAr96_Av z2@OxR@Pi$)^i}R&I$l_B|Dxd(Ja7m%Z%isKSX}(ZJn`(qtyr$1%-ZLwkeOgA!m(!2 zF-#~W`N)Z&X%a)jNoucD1_Q5uffZYT2zOV$zh^>Eh6S%*iR`zl=rVlcL$R5hC=Bhp zh6ng~>-1vxB667=wRS{72^d%y0;{9W-)?*U!BzJBqbyq(=Q)^eqsF3j`!(H}eGa=Y z;BgR2X|!8(9!QL+b>0y>S!v8crtF9};8Z!nqZ)`XXYNq#IN<_j|AeocQ|FAjAlu{{Q(qw7gxM2*!HWy9O8 z2Wx~*A*-&{{7?AUbGTj9V09lI?0jlYerY)Y?@9gx$e$)g1IVH z@Uf>OGaQv>vo;3zR~`04W64m%SlI0AmU>)zhTxYwt)k107!hbDge<=HlWsh%c8?xe z<&1VeuR^_FVK4UH;XMXjA7Ku&e;S7CDRow)6YvMo{Kh1Jy6kkNZ+g}g>T|*;xe|}_ z{rtyslbtQQkqjBcKDiE8KGWI6lcla?`iWuikA?VMgi!5l$#|HAsU*2ygrqd^PB_a@j+MR3={w>+P< zdyjn4x?D@^Oi}UwtC8)!Z!@g{KVe!7ICf&Z>sTi2_DHH!60Pb3w~+ENhm^{@JP-h#9K5I$lvpIwy6-c;oS~%r$c>d!9(H}8Bo%+7SjTyS|cmK=k9{gLj{xnI|6{gko z7wxYe@1$yB95YKNeJKxL-;SVXGANvj?E=2{@Q`{4Bzq)%#G(M$bq)B|9jC5GZQK)4 zjfjo%*3$I;qo%+iACX)ra!Y=y@GEL6vKdvJHuF(cKM@r->vkTJmN`1f{xsg8b_!ZO z$Km4Gi(kt%SIRMHQYc>>GAHp)r46Olq^w1<)cr{xqN*Mvz59qwi>()8s9~k@ zQRTyF!S`$*9OJqeCM=YpKL`=k{a7$-e45P4-?|iU5P{Qt=yc3LmYHkA~_?cKOvjr)*_0_>E<0nH<2=R0XVe* zq3e|-F*W23m&Tfvq=kz|HMf_QYu>M&LN)H3;AA{ZZUAE&$x>Qx7JO7Gm=FX#9Kr-0 zM?~^em5T5T$W|&JUmCD4(@*AvU8VHGoC5y^G^0@kyt*U!V;H>jb#M1I$y;rW1qwi=-`c`0_ z%cO~4CCQ2jwo^kFZ|pZg%2@g?2jU3Yeh}%@=j<}UuYULe+r)m|ylXw|m@Px(7jUFC z58~W%_^+^|)BIu_Cv+v5VnjFgQCaYk2}_%I6x{rjaMa4!T6=Sqy{0R@Sh3%yz`7s5 z@xrrlQNmke*{|!8H9LW)ZlL<+7+WZkx8o?bVZZb~%k!1N6Xs1Mm&v(qi-!^FHls77 zHBS=df7X49wGewgRni|v*I%0aPU!fikl*W-p{}nmgE8imchaJ|Eyf+Wa&PE- zV|cOaFSpxPQG!k)oqrV72Wd@A{IDQFdabj}BB`OxLmXuCI?;@?X@?2ihos@VmODs0 zKq|*Xb`(G;0+0m|_dikO4JN|8up4;B($XUvCDZ%_kz?Mkn-?LAvyk1!+hKeGcKR>g7CJ0HmC?JNWx# z=QpC9K#l{52NGMy?t|YW8EkW(%yAR^dfNOj(`aPs;X%kCT*p;NxY&BXeQ?p#+!+gd zIfYqzd7;REU|x5y+9I=Q)I&LP*gv^xQ;wA?Llm|&!!UYWS@aqNWGTJg2hPj&MmCd?%VR9mHWOD(Mq!mE-)r`cj@KpJdLQg(aE|k0lVP+&nh0OaD#d1Mb=H8=44*U2yj` zVZcFUcmI$CuSqQ9>EGWv;qM3_F1*h^LGc$tw(yupGU0#{K-q*#Lqp@f3;L;0EY-4M ze|1=#Lv(dNYtaBo^?J1Wu;AG}!U3fkx`a}S&DhS^yJuvl?`2=-PV_ACnb|GS2oK)> zGMN;(2Ay^6@OYeWC^fH2p+y#=&>#p*jj5Gzt=D~1e{%uCimU`cb@zM0E8R_hD7tVb zV+aUsz;;;6RL(ub8)7>cl)gBC^e5&Evg4+r;5#p0z@Thf>7;iTRMhm!*Z4((+-Zpha0p&j zY`6hBOx6HS2}b4&#i+$tcDIxKm~0PFV=URvYAP9~UWiPS$z2hb;y1;Q`zzOTJXK<` z^Ov?9oU0zwt#;@yl396H7Y%Q=stT|hKk3T)4gaXG2UpUAM8x0g^3aWFn5PQXN7B)l zcH_<^9@~(2iOS^o(b_FkTR{usP2l6XOUWnx&BpKdpevi+W0f}J$L~$q_Rdd#_m8-p^v>z^?7QtMe1`4l?BcN zZ!sL#KD}p|)tEJ(y+(m=Wn&IET@XFy8&VNS0VD=N&&q<~^H9pc;c)JI5jRie8DDGc z2YqY`Z!RoD1p!J9URcr6h9rD!;a@t^ug0Zq4IWA+N#tcH>U{cj&>zT|}b75#>37SfOf-WN=I z(2R%2COPOppWJRqj-#7T<$k0X1;*%vO)14>CGR?51+(wxQlOT-H& zIr=?(_q#1OVm!6DH&iTNmSTpTnuAc~RxF)<1_6lS!i!EEJ1#?<8Di3{pJs7eI#xNo z`7)G40mx_2mD^+fyAE{kQ@d(QKlhOT{2z)c4P{d9C02|m5z>5HYX{e`jVnTBkptpr z;dqyGiMtu)Hexo(ommBz_U7~LzIq6d+loeLR`FjQ7T&KnzX%9Y`KG@MsuT~MY1w-`E}+|yi_#E@MU*PA(nIb#Xozuy*gkQc+0JSzoyap7?2F!ciMuD3Exic16qNal;j3GQ1@3LH7q^0e##(oSoWl zboAoRy+4E%CSwK68JqjX*2K47nT z8jj8Oo59u2naQ-9u`8uFh{d7QJy4ubR7(#Y8Iemel&|N9@*iZ&xdw!@`Tf<9G#S|4 z6~Y$n$e@c8h(@0ZXjG#lH4*(AE8Nm7SRz0J&H=RooA$?%DO{7s4J;r$1RCz^)0*U<{U{pvJ^i;c+ zs8dWvmHQya93yrgjfqUrGc7~W8&s|}YtO^KeOS2Ea-`bixGHDZQ$NWczu57Io4m#r zQ{8)Rv2uUrgVBI1#2@W$BLH3WeqU)^vC)PgGY7xj`)H4Cdz^E!fd7Z{Q`EaFy}*lO za=+gKA}`ofyZOH7g~ON-A{+!<{{?#@Y`?Ufi2|;*GB1&Q=8{~T0LoNy2v)$#&2u*d z*d`)l|5Xw8pWj*u#-{tvw)@|bpm`&|Wl$eG*GKV1!d+c_8Ezr4wZr;^KkVu4MiXJL zzO=dj6@4+ks6wipB#v4Sdm}LzJVlh^J z(GQfJ>$Bqy>q^<^e&scUC6vMaJXR z`Bnns_UnUB`@-o*7*Vue667VSFrplfkd)iL7Sm{Da{b;NP14(PNFCz@7Ah%y$KMxp zwzSk)=Q9~cHIG}+X+cZX&KS*7xqPr;rE(Hs#V^d+4er<+YmU23td65>cKB}gB5!#< z9$Ap2B=fj%P3%c;4n`3iwv+>=4)q9uwZ+jxs;2c3VyeDCBYD1%#C!LzZ{kE~N3!u7 z+FVwo9n@gH9<8^Dn8PKRioz{nW$jc9%R+Kr;U$S{&H$n+60#iQfgG=jsm4Sm{GC|` zPw4u3L8Cw3?1XBV6bQ)%;E)KxT-&bvVc(3^ItNfo2l}L_&XQtZ(s4p*Dm@~k%@R5e zYh4ct^{>_rT$X=mU7yrX^>gxj!u+Y$KiApav7WUbXqGT~x;{C-bK3h+y?v$C6{!&~ z8rxb%p?`PlSbMu=U>-GeEj&{s(Y(5qqM=-H*mNInS7mY#XHX=k?AoPJC?X4zGWV9p z@hQ>?K6nI$6%T{G4ROL~Y%-05=Is`odJzwt=RZ{K0_4@n|8y`T(Ams51n+}u1tImzsEj#<1=O#T@?to>2|sOK9dt(l_AB?adXvFEhvbOrXilLtOs zcASisx9m!>Z3YQC?iif=z2n5MFDeuJM}rjA2=s%2Y+yIIInDx8-Xqs7C(&9?d*w!Bds;?=^Ns;@Y#p2A`;3gsPZx#SJBh`Jy!x;9 zaRU2%RRO2v-o4kX`&C)p6R_vkjftB$9?ok6KqCx=IAKhA|Mk}QdU??QS6AM$9j$d8 z&D$BL1)!_-eFndf*H{vWcI*MkLgv>sH_$aeZ;W|z!o$zo5)Nw{C6ky#I{@j0l?RLcWYv9`>k}i3?S-SwVCAc z-g1RZp&Q+ZD|;`<>HD4%0c%WPLe8p(Nu^4qNYD5U#-jgqH{Vf<*+ZkzBe&u6vEyb> zuuSNe4>nkn>2{{DZsw zse5$puaXDR*}K4%dz;z2@2OpU z0qcy%XD?2Q7{x0RQ~d@ytZ!H#VR_$lS+i3}t-9DXGRN!b=S?PO3M7Am#oh*Kdg)Ss zSpEhAxPHfEE{KFtRtWh#pLLBf=6i*?~p=;$T!XPX*mYUh`27gTCP3 zlMA*buB5SV1+EPWhThm`B|e5%9np#-_Vw>(s_NOwZzj{>$)&{MfTF))X@bmWK46z= zrgiiE$l)WBwHx_iwl-V$BwLC=6U*>Bm`MvkcT)!{ITe-C=c=h=x`kVeq-SjavmUBxGQ(&>3gX&^b89@2t9C)ZOI3L`?KyAQ0Ne zL=(WzX%bd{R6#R}2nmBzsLDIgLGwfxn9)sf|0R%^c)wB>jgoydsxP+v1D(|FGDbn; z2PwBM+DF9J24V|&)JB#sq8LHpd}&M{2tPZhPf=G~6MfnysrW|id26HtPHcK*RJ6Jy zTg*{tsWdV%pyJrmyr3mJgHVLdf@MsdBZw-;N4Y?K!4c?-p~We}{n4g0ag7eNsYS9F zefKEGRT#~itXO!2TNq>D-`iC=o=xsK-QTqaok{{jvo;k(zaQTadbZ4oZJ&vN^_MH! z8^0K{i>pPx38LXLpyx*l!bJlMu~0U#l-41_?XV#HxItr?^or?0i(;l|1}2LkLb%9V@rDiqC6-=7H^@pHBU)c4hHL4giiN&W zUdPs4>g_?rQTtyvULpaFlqzgn9R3+yA-Y~4>!-SNYn;ho1)bTmi+pDhU6xb@+|W4*uqgL`k~*9p|3a(PA|+1ZH7IFZ)Vx$?NRX=R(a%+>vDP2FH8 z+9!(nF^>Q#$j%7WczvRVwey!KxXI*)!;hvhr5_efmnrTkL^I#mne4K4sW!xQh-~ya z#>+?Z1>6ih7-j6{tG_NMk2-G5csfM=%KcV@G?hve0{&bwwu;g`r#bWkoMv1sy^LWY zW<&K|hNf81j!xfKey59y4&Bpz9-n*@M)qvqgFgW5oB@D_qbrZ8!b-=eU+TnC{`frh z#iKns)5Pg@PovQ#kcM(L*LrCf4-VdxHQvT%DLj49*25ZkM8PLC=f|n@i^OvHSIG2Ig-bhkVxH%)}52LbE=R$ADg`d=Drb z_0%A*=P6%2gb&ul3EmQj2}Ejt5*rMTMkxNtMC*ZRTk}*fM9DoZnfx=Vb5XlMY>tTs zfqCY*7+rr9Tzc9zngXM$|I2?s$*NC)JNLXcwN`&;Xm7btkzuuQJN~#`Atk7a1NUSd zI}S}N<0j2=%CxtS>?LBc&9lOob$RdlzJ6tbl@1n zF?2sRnEEdlY_cZ0E_@be4qI;$1%3bO^|p}A&2jyw)Q4g9a;1CDI=EPtrIKuv)TU{H zd9^OWt7Z((<_Yu*UDL(^CNUbJ@QYNF-5^z3HAB37+1~@o`LWa=gO>oFFHRbPED?)% z%O<*BWDVc6)^6ZuHuQ%w7GCu5N{%67GvHJI_vH+qMY|`AVC%LHol-0{d3Z2wD=V`< z?Yb4L*VFHv=14}P$S%!uCUxxj$%*>_wfdb*(GLcPN7^#+&m!dfaaA9jY$PdBk#-}) zi$GXby*e_Xc_l)LWO?C9;mfH5l9D%SU6L_|&svN67ec~y0c`c(=*l~4wUG<`v%je$ z)RBL=!p`nTiH}8)Vp&eVyNo3!8p9b~U#5O_qOL53%q9E~9B#Q8U|`x&6VInrvIJ|! z1*4;;V7nwDqTdIjcTJcnaCU$v^3IPg_45vG9Z|cd8hIjoeV%=z z!Fz!U534i4IjNI@j%ErE-PPB;!2Lh%nJPR_rLv#po>6*Q?RB-=2Qm$8tO^h8Ak1i1 zOd}?Brf9PkkHPVLP$JoKK=mq4*QZ|^<9MI9gmGK-f)-Uhd@}q8oGL4x62da}TTbz_ z3Nz@&AnH2-N<77lY@_rq6g!Fqk|IDANKe~)t0zlDH;5w{Rqd81Cc)JEfY`Yo35|R4 zQClx!AUsrB_D0dG45OAV!08Q+Ev05rY;0s=LHa^@96YLt9_6u_O?QXoNKuAA7shyr zXVOQ8@UBOm#GI8T0^PmfJw-7=7OT2`9GJTXEZlQ zJ%QKGSn%F!*CY)1*I%Z62j7b7^|b`H`L0on{QviExO$4GPpkFsyqNUj6H7UI^t5R@ z1Khzx!U-7Hi6hCG1>%AK*)E$9;eFwLT}_~rQyQMrdvL5<0+W&s=m%^Et{kDYd6;V` z7114eQyA1%F1+}LFkS{#jvh3M$dA!TY==3@CoQtp>7FknZz_$R{%a)W z3P8$9`ed(s&g~-Cvo+T9`Sw2};r{6kd}i~~?DmveQ+y3uT~dEJKYoe@hJ0Y_lKN{s zL(F4oJ9ItqqVRd6n^<<-0SG7IF`-tS{QmV z%Ou6qj7B{{!;IDFvk$QA1{FOih{daUkMe6?l9)N_+#d@KsSAj4q@W45M-l zKhn?MgiGzc3V2mH|G3q&CSYWsU28AKnV+B(4fx-;c8K^6{OdM`25nbdSDYnHegEPV zLZe+R!@^S}n5g>;r+;i|`|y}n$LPsE#frqH!jtbHfz~?DK=YF!E!YcNoH+&St$oZb zsI{1jAhD9r@ZWn$1?tV-iM5$yj`s>)HZ|UOU2feBs0?E0*=QpuDn~5dI^XWB%OZ;y zQ*lSp*(vn|Y9Iu+Jlq5lM?C^X7>Oq_jW@{fKhKO>UJB6Jf?f-!HeSfL{C`FiyVFQ& z>p2D1V6jY$?a%!0ymNVgO;SWGrge&YgDla3gTnkFo|dqfK|q~}frIhBnLvCqyPp_; z4fds|ghinPJO89OWzLp6yq_jkIs^bvVES;aD#ZXJVp`rLmPQV*VF9C#MhalS2*^C(-{V#EV(dN$#Qe7;1=7ZXD%IDn>03VV#CrfiVi3mHMzs>P9N!?0K zI9J2rAu-HfGtgDOPc7YhWK$WtGlHBkr{+3(>q2t(Y+Sut%TKcu?s!rUJiS-&QqQ}E z>{0(aM_SvEOmO&<@vUN*x#BGYb51eu zA>9vCK63R`hFDAZ17YzG%6vyse!FH=7Tuk9CUwiSR2VpLNlXZ53F_PSD6(}md2YS4 z@(i<=-+P&)9WkW$$d&T6X{VM440bGwKAJrR5PKT`-}^)bufVk#q<{0zU*0ZqCsMaC z4r-E}-@u@Tr&hfP|F)_^hi+T=9~J~8^)S-vf?3p{q~7F6C(5sp*)3%$ z78-rbo$s0;b6)B@va#MNO!%J zQxAyk)SM+#81o1|&K%MY`N)8vhfD>F=Y`u$vZe_CeF%PX^+nuUK56Z-n#KMf3^t&k zMy3O`$-?sP(Fl5fhM-II?Ic0wLz!3PF;A(1^168Qk6G5%LoN6`R;Z+U*#8$Hh%(Zf zN*?y02XUlUHmyXj->rpUzph5`Z{Hud>|R60swag)u>Cf3b!ttcbt}Vv(lbr+S2Uvc z8Uq_k%HeJEN!!J`#`PNaDDkcjWOCcJTqJ!bAw(>8y@`+r*NIDs=2A*ePw&~WQBm5y zAhv?ylo>1K73tnE%qC;*8a2PDl|Nf~V^V9;xcN~#Lc-eY zozUXC7X@#1XRO}BMszLW!VkrU6-Bcs_&O2mXDA%3!z^F{pgL(ELIph=cLJLMq4KFyc*5B5(#jRT6-jhL(n3OX~t zq6pnPW#jj*Z!N*Sw43mwQvKi1xi>SR4>zRV0;ZpM;k#W?kt8Ph|B2n0Yc#FR1ekWA-I|q`HH*M5Tx@CQoI?X5L%8k4YTQ$<}wQ)?!k=yBYTsO$V z+w_(J0dX0vB)ZA=ZWUtUx(d#dGhds3t2H=PBIY#USd(Y(X@s&2E zh@HWvQyO^Dlr;9+DLQcG-s!s4z4dp*nE>f>^Xv+r5sxPi8mq@Dfx?2tz2*0qiVIT! zF8rTn+qcJfc7OW-lZxpL!9!Ki2RbEr>Pr^ickKT+Za9W=NnNJ@Q3U+tB|Qo3>3@5_ z`%ZMk`ydDUMauwaFB*(!b^rSUScplmBED};rLpvof=55gC(@&C_yW7l9Nzkv>qwJB zcP->>F#3fG8^T$}h_N^;>Vvd*rsW1u*@S|s1D?yXo%czy0|zbiTlVEe9$TmCY;SFo z=zEDJbU-N7>S)=}R7P3V_i_C17fTFf2`fjx6YkeE6G0jv)QzSNUEe?B-bz!@Aa(}C z&zCpT#+kioSZH|1=ryAO8Gk4G%*@(xPs`f&g2vimiJAL+V&y$&MyV9YXKXu&mJmFn zOWAZl>9>EKyOVa1GseKH54{WYBCYnBfL-Kn-@Y1fq-OuWKpa@o2~(?P`_Y-A@eYI!4&QtgYm zxb8&puKTa~%f3y-^-5ZIOtt^B9kE#r>pgyoIQ37sX+El%q`DZ{=E@he^D+`^LWuO% z&$Kun60WVhkh-3A%Wt9ENE70@o-6qsA2$mJX?|Q-bl>&#MvMTXJmM z>7^8da#Q}4AzKOmHJXH;wy>cB3WgwzdK$aMsy#Ab!=GxAOZttQXf5aUFIukSF!I4m zs7M4w^E#yWggo(@W;stQJ{x^RAjP$2uGDJ}i38+CFJHz2Q@DYlqqECYBM-GGd{sX0 z7G8g!BKIc zBwH3QO6TCReFUBlQN`3rNe{~+I%hw5GqsOuh+Q-`Luuv6+#V@dJ9gnFMGnYWyZ^jr z?L7Io@o?suzyreeUkY*BDEusmC&dS>Cnv7JaeY5+Bf7mq^{f)$`qx|NFbI1$A3K2k zmaFm#M9#pvuf$Ts@b~hUqQY47ZvVazB*xG+<`UUNu@CycPf8T2sE4jo;?dX!{ODiR zbtNAcIC%}cjUt1bulvh>dkwE!=ti%M@xmwUGnR^?S%WPY1VPsp+ECO_7v;iNP!su( zBs??uZEcz#=2g5sXkqxl8+j2#sXlZiq9?fTP-p8YSlf2xORSLm_Fav(epCm5lRs$E zG|Vap{@SDw+t;G)UL!8 z5FblFbIUCoLU34;03l9zp=Ck6Xd>-!Gp3koh;!LljBh>4`Tn)gJ?wjSO?+9b+|4&b9>o)=xlFz zS`w9}Ov|+c;=71Fo0vz!vGc_%Hx*~CyNCFBk<|0oh?2c~v$R)ir905r)E!j$j{CpA z2W;xfNa%DV+{jk~I|7I=K3(^NY_(8I->XcbZls)|r&(mt;aP|?->PFbCQ3x(_g%qZ z^||05+>sK}LrYRN!@F~6*+j(0){U#Os0*oziVYk?zpc4+>i2aG{{rsTN=N@Rd}Y2w zU|u`$yZmmnYl6KR`{P5YY!b?Qsx2uU>LN*7rBvVoH48!TQIe=qMch$wk%f`353tw0 zKC(rp4FFvgC@Prq-`<9bmAX>Ri|@u=#T04$~&x_JKLmEotl0aa(?AlFob(?Lz;?xDF z1(RqzD++H2UFu;2QNsrM{)rO&2;0Kxj1keQ;G!ISk0_cG%Ff=rjV)LgxNw z*c;LEOn=h=vsTR8$ua|^A_h6U|Ew5>K;a%}uTB+GJriqIZ`kH@rhUvdZD8VLArDnT zz?qi`q9((V-9fR!2nnEKM(8w*H*Ai;NdltL>eZdUs}4K=HBur(&TtF^N0}vcuM=PI zvHxz^Ij&UlbVU<0e+b;oVnOU|MD5$WiDQH z!yZ}d>pACanQbyZatbPRPJaS6wZ1)e+DI@pqHR z3;$Q*sI6JsZWj74_x&$q$%XTz-IP*Gz~oHg8+tU(puj*{bGZhOPfbkQHYK`%BCXu+ znNZ@pzcT=R~r3`jZ=@@{1 zylB5!i!2&9GQvDsAjzym4*kLA60$(bOcVkSzSS^HWmsl6v)tj*()Zx+ewok6_MB{8 zYx_%>%`Hn)vrsqDwEFwl{RrDfQCVqQ7zkgZ?nGp53Q(By)Ko4fsk4Df(EHq7xDI&i z2_O7o+6zjJRHl3!!{1+drUmAVx?xuA#M{6|^3f9s=f5UVQZN7KX50Js8S%TzZ+(T{ zlKgk;_p@U5>xK`?TM|Ddx5Q9JPyzbg%m2sITL;ql$Nm4)M|U?zGcn!WOpPO^n`zTb zJ35Y>?(XiI+Az#vOfw8)y8W)tec#{TfBtj1T<>_jUeD*_i6$>f<4Ey~Y$d)q=YLgi19Qy^{;9#&g2fP_ zFp7O~RYy8VE@|ENS1pGev2gl!&Y$i*C%!9b1*2*Ce#j4!&bYSwzi+R8?kB@PA9wBm zWB_s{w{7U`{xT`e_}sWubojN{r=+0WlE;mt;8ALyTDdB>>1KZWGSbInButVs^K7&- zz3&EcZay*NIf!;#1PS^S?`({#V!FEga;8bTCOd6T62$*Cj(h&_EEq?4I7S(BTSyRU zv9OA!1g!1ZKgA$@j>OSYhljbo=PKeiz_gVuNg^WHHADBUM1oVjp&D0R%Z+3}^Fku- zZgbr0y~I@)E0^F5+mcBHT&Yh`sGyKZh(zZ5k8IUB-;n3~Dj#T`q?k8>iSy}QPXlj# z!Kb~e#>a>Mj+Li+WLry+BHh!3CzUh?Tma3-yftHqsnM#w;eTgc@2dyCuw zsn%7dViNeRgBdJFuQTXH6XeoKuU>qB@sjXyT%`?+YDtls!c>+Nw-HSThw%0~U~#Cn{sq zbOLc5VB00H?6{S>V<{vujKz^?%G%mB&1l6jv%U%E@|Y(pojKDaP^dY)#-vC?e+nk0 zeoO{-m;d(ZSpF1!Rwiv#9eo|5rp?wKN3F%12Qh?!0k1}%$cKREzaN~d9*u_!0-l`N zUW}^?=C1el@7|-2{nzJ9ipTPa+#7$YYAQS5Sh}O!S^v_v7TocpKiGhCV21YL?n$mm z+-!jR@8MNPL_p2}&=*cW1)8C!m|fDzndXijh-F0OtPVepvWn#q$~oCE!{NL-e>P8h z*c;o1NN?9sqX->5yXWEbkj9o>1P@jr#B9?}oi1iCRyjsLj?{`J8NaJ|9fP61Ies78H{U37Mn z@j3pNZYB1vi^Ievdre&K@*M`~xhfnk=TAyNzo~v^!R2ncDcE$`Jyn!1=bI#i!v;2T zg6Tk8_#$h6xbC^%J0pFC)9i$q;dZyglurnuYQA0t!IGKvjeBZBfvc~4TcYbR1 zi?*qZ{9Y%1;=7K{G?@W!g6Zlc|%|D{~T%0dXUyn2Bv}} z&keGlb@8ncF#AhM+a}c(GVo`#71nBl(MQEfKTZ2Jn~KZjmMfR>!nI*cG}WLi9)PBz zlUj-nR88|329X^?GnOBc^OWiFWZ$7jP@&+Z#F2o*nAUoEhqhUrRa{i#J3w`K?8*P|=SV8g4E!T1gUwjw6mtGe#F~Gd z+qEkCwun6RHMu&FThqdtcxaw6(B?}+v3^vy@p)!-;O8GlpaG?)ME3?OPk9%SEy|t# z5qpH|-=N!!%ZmT&YW%ARqr%qrv7sc;`-`r$>)xWjBCULytGJqx>jbs=jGwR;;TdIh z>Wt7Z(T!Hc;6+qYLRQ7E!x53{yEWG|w#BBdV!A7QI;S1+1LNrZ#3J(^BxmEy_;%x6 zGpV*=m(rdYNlNnyO*X*M)XUO%r#KADbV| z@eY2YogJPFhB1P)6<2N21)1h)3^mvTnPjSJ?>=wN2=wwNO!c;QpL)gqcga8~*)&$G zThp0}{J$q8yFr`S_;TKEgDLDIgH6hIWxt_Oc};NMC(SP;GJDVxt;%9rvjk0p39D#n zM|cnQ6~^+POrl5mDO#xFg|Q~efXfN_1rYYrK2GHf~$F%gjojNX;!-2-)9yZpx+8 z|E&aXNS!T#b&FQH;q#)w%aD$ldQj#dgL6`|F}%^sd2re7<^R6cb5telN9;Tq>Ifj5 zqNHbvWMfl@l&UZ_;X6VlyY)_?ZknGNr@o?Jk=;;_QJnqn_4ApEP6;g32`cp%s^DQ52BAPASYBCfRLdV)Boy z^#9;ZBRFDbfLbee;rSHJ#P?#+#QzBU@&1?R@>5Yyv%e*VgG4)zeOXK~=u|?1oO4Gn z|1Dx>Vl`MsALng#w;N*ZnJ{@6sH^%>Q<}|2c}iE6N7kZjls)_%iYW=5EX1#Ow1{MC zTfP#Bh0_%IsE4qqSCKWI2x8+_42GFlmKMVLMeU%2bP&h)W{p3&vt=W?&3^GQLvNUa zNeLv|KW+3Zo4j|apZULHe5XHxGmpt93X2j{cJ=MbbEIdHB}YoyJ{9p#Ju z6!<9yY>E-jmfS9#MV~=0N(_+N^!my5j8QH01L}ZU~NR-~y$60|XkU6I(gvY4&It z95mP9du)*;@2KD+fgAF;BmDHs?0h~`svupLci4{g@Vn}EuF?dkj6nJwSX|2kDin~id z)Fu*f=TxzbWW%OW_+?MGKo)1!zhqJKp@W$til35A2l89ArI5&7$F6>1e=EtKC`tTw zt`ND+AN!Q+Na)v0HE|l&!~6DCe@f9jNp~F<)jwXSaye;fh2pZJ3|!E*(VVb^Hwyrj zpX-;~#dPiafy8eVr8oBbr0Dx$v;SVb1-5g<9p8q3dP6=DELBUwmyIL02jfyRk(p*w zyh>CfDhg5){xTDcCLZfE zaB~6{cuU2RQzz)7K3jZ*ZTfQKx*JaWO!sg+fV&}f70`QqYWj75;MOndCtd@Qq$boz z!|?O}CqYzH1Ne`IXF>W>ZF>|Y(&aJE%46@*<4MwA6VCC>x4fWF+<5$2G?)6{ zJsc=WZ7iyqtUMj!HJS<$a4GC2TIdZ0M~&iia#&;M*nNo|1Rd=$n%Al3*>XW-%-KbGaE7@9^eiD55L&y6DvW{E^)yng|a0E+gMTeP81cO5si1 zUu2;L){Jtal9`44XRrGHYYIsK2{oDipLkP&^t>OKn#l}|JO`Xi!PD5LF7KwZ2X?7n zPU~{d|D@ghs*sv$TQZsU8Sq1WIe%MVH-JPtnTWeW!h(s#q+6r!J`CmF?%b#O`mph0 zstIt0Z%jp-Z(ZeQDertsqHMR?z!iHO=zZTU_18n>#cj^;IB6!mxPI;_rfcL-l-FejrL`gOxQ5> zGyBq5QhvDUiiUV{JmMjzeC;nR$}2=*z-IiRjTlH~r+?$w0vg7B)D-kn|h*l z4S5iQG+CmY2D}6;`xNv6NoPhz`z-}eShEt(!u>BJr{{6B1!JpkMIuY`J%rzejM9q( zRj|jHA!+du;VxMW=f*93-*@D*>Er^gM7&j^zo0>F7u2Bl9{c#^EXc5{8S2AilfM(M zRQS(6o>s*nkZx;uyCx=MD9>ErC&ZGnveq-EY!s8?6B3P>88c@)g~Y^g}x;yIA|stfTcb< zlX6*k5wryFh(-wQ8W!~O*Fw5-5{?Aj?!J&-WQEgAh9>zVlfL)mU7)m0R*n2poPI?a z==Pfd1V5YWGuejP{Qsj7pyPnM8xs+=o1K$m33M&~Ygzg3#}vni{p}1_sTM- z>S!p*OoucG-xiLaFDp?GatEKwtzWlyc>HmY+N`K}2}?7(@PX;LUH+SuE36t9@V{92 z)qdTfKKpHsa@WLjdhwUX0=BwqZ}_UqK&0ltIQ7CCuP70HRhPbU()auob%yKep)k?l`(hDiLp=O=qKSx;zyQH9O-8Ba4KQrV~HTj0Rj9`YNYJ(7xP` zAGfc%Pz7Diz2eW&pt-74`qvnJGA7>>dX`ZuHA0`ufVIS67dO7r?T0X8_z>9TZ?P`=bmmt0BuMW zCd>cZn1KyBaBlaUf2@4@2W}^BYKm>2CXoWf>F{IErN0C)R}-bHPHEN06IvB_i$>e* zd1Dd?pEd0GOR@r>Dh8~gTpD&STW0q{1CECh#UvtTzHwenq}_-u^C?cE>o=G{iR5A} zCB|mIbK5!8<;X8GAK);di9g~=-a)xNu5ymL9>+L@uaq`yG9^A*dhp3W380J#gs}Kz z2H#iirpQZCmZbvleP_1dC&h+o2L8ztd5NS43ll#mqBI)?Fi_vzlV3gDpuxqOQTK9CtG>!O%A|w*o(< z7f#VrOEpUJl0W0v6$Fq}c55^4*`#0b~F7OTHp|F6CRZo?sU zAmrY27y{3nqlNmU8;>-GOvxMwAN-y!$J9|37Y?8YY8nk`#g3c(uT)(Ic0TIY{fhNI z5^OG7pm*eF#rUevVesbQ8{b^DMIBQjVY5Y){P)@=dz-U=S2HDUAtFJ`EROjVA~C7m zA@SeIPr|>uqCNlM_Kzq@o}bcFwMX*ThZA0Qzjx`~677F^((T#|!vq-cYPXBzb{;DZ z6>}#aeSd_a@hrNOz-&D%F(P*pja_$uUrKr!^6~)j+@nD4Lr}>j7)Lj9iojcDKW@K~ ziS@9{;UYn#=33vA!X7IP_`hx9Srq7W_lYMou~|1J0gbCo>O9S8nE|B|Q((S5RctOy zRSZ*Pn|2ef?B{^jzyCTqicCmIxNA7JI|^=j^9EqD%sC4J80~$kH*XgBDX?MZFx!0A zb|6W`B4IdNG*%_T6;H_a&IBBf7^t`MMhr?9-xVlr^mzlXhM_7MG}UXq z(|z?#^KHvU|3kCKB0M)}Xzy2dQ&Ng|;16rd#cQgMw`qQpH3eU0XC4Jf6T)mN|!wnzkzm}jS7LnkNF5?4u-me86V}6EX-M{f|i+E z;=G?Cz@xE&;iBigrE~VYI(hbWDLSuH@||N9SR!ufi39J7gCc<$Aanh2VmnbxfcSS`w0xVH(J6oo35p%7_XtFi#M-vV z^!(gx9GA>!TQYmwA*NJkSW&R|&HLW>2CK0!=!+w@?I3=4HgY@j z@+|anXGSX%8w1wlwf$tS+)_Ug9W*0xBqZ+EgZ6LmsV!i3WzzsykgGzaNcYF z{q)V8bF%%H!VM&3W+8b#1`Ps1mu2O?^-_J;uuLpex!iE0I!!?B;Md=(_nAcJRY)kd z@Be<*16c7Ymt-LtS~Z{3PN{3dOwjn`Q&YZC-Pr4%<55Cf zKcW_&U&Cdj@5jEW7qGg#ij~RNHJh`3>ASH$MLSWi28&5p+v(RrH0=7{W>ZEO*w-~J z$9_QD*z|p$qKom~O2Z*Od!!dzH+`R1UHT(~P5Cw`=ku2_tWcIrJgGTY zSbhR?Dc@@~&D}{Qs>zQW<;$J!j7w%d)K^A%m@@;fdN=2iL}D^~Z<)kzfY1$xq!5Pw ziQ7rs;6b1wdD~!6s287{Gn|1n6))qOUy^@mP4jYDaS_2H8H!CQl=`H&04l~Q6q3H|v1#NC0Ok1h%)K{A66_tvHM^Q9QAvAPAA$_fAdtdfDzGH_ddyR7@)CP4KhR@88|dS)cdAFu8Y! z#7+j$X9FZ>{l3Kco(bY^?n}L(zg$eadR!436z!nmt_0CuZ}@P}h&~0Fbo>Ue0f_sS zwmotmSFei1@BX3v`|LTpmE+`U{(W{%lzyH!ST9!t`EMMpA|~(n+H6qVz%{~Ve#T2a z4N!9WM7uw9zsTwlbOr$YBI=!IucLwu<&<)a zU{;=JF2wpQUJA5tRi@Qi@h+R`S8MaZ1%1@LHq!C|d)Ml&RHHsDdK(69 zclBD`Ky*PL{y*5L;ifjgIS5{7p&N{&;+DRpurXu+$n%TlA3qN6?h>u7s|(L+HD3v? zzWMO`yZ6_?eG=TC@yu>??UqgF} zu}@A7cb$+$pj;?IA=8u%!wOnLq!7`PArq3pIuBM!<9xF`yr6tknlefh*% zsF$8E%B>AwC^*$2VuE87v&yKV2y;diO@AL|ycaQUFiA*H?J~t>3O5y>^-$Gi0LK-d zP9fraY6J}$s+0;$>kr?19|0xb$-&3&(Ueje7WHy2ps+MGiYHH%-&9Lh2-gonq~|Q> zRQ8ewtS`sJm#E~D+TW&UQ&=MzCQPOnfG!lXwk zKLddbx2vj>Hl#JSYVpsjUEp~aWxqvAi@%FzlvlPw3@+Gi2zu37u{TgLp2R!0X7Q{4 zxtX_r!0J~)VS6?IrfG!R$!j4pBoTa-;%rq3=2@QC(1ZU^$o z>EzIQtG?j_vNd~#KC58cDE+!f4mFA^3LA@m3=FZl40RLt7h2bqN*HX&lok6i^C|%P zu6W^aCpIj7I>MHVUi0&Aq?{@gjuF8kMBc@bZO|@Rezhn`nf} zPItZ%+9Bd62xRQ?8-0i(Qs$~W%u-f{MG2=W9}R{j>S*zf`KgN(8hVbZmZ*m}>%|zw zYta~BX~`CQ%TkqnDqW)1%82qWiK31y*`PvbkWA_+e834gK^m0cdXbR$f1h1u!vC)5 zw(iAX7DOtHEfn1=#j_gf#YP1g>*(d;(zz_lkue9V{Hk;g_n8#j`&wsyycxcY(|P;$ z6wQ=UZ;$;$FERe@7+WKjBhpcKSqHUk@R*?zoEC2q&@27WkukMZ&MPjaV2{lz_{>6p zuUjYh^p{g1d&e4Chn{XirME=CVJoz^U@jSb9W#b-8(e3CZ4`lbi565^O%;Pl8yH<8 zuf7q z)!~x3(yOGB(GO)2(0?h$5r+Z1x=pNJhE1O<_K!bgxCpKlIHgW?KKNa|*IGO&SBg04 z$4K3EpEpp#jKD2Q?tR70rTOWsS+quO^A&mhI{+;cFc4S2#!Yopy#vNk@y$C#;0_z` z;youfd%wn5bJWSsRhO->l;~sl%$~&PI~f+@FOzkt$~_{9XtFl|oObQ_3|;FjC8-hPLy9z| zoV-e*$y$1(ot8Mk1ljqQGOB=KjE{gTZ&VaHm`SszOOVX~k_oC!hPb9=751OewT-GJ zW!Ce7IDkd2En@1Qo1kU1nWX>e(~>1n%9+oEI5bUdquAFZYla*6q6@x0Bt`0l z##l#Wpv;hvvBYc>h1a1js$xR$1+)_?Z1ST+*D<$Q%k|%qV@3a<^ycJQrPXpOWlbyU zRZz&W&^9kEg*$J?QJqLkMT@>7Mm01HYuq(dl&A|0-{O&DVUtyzDlXM;SeU;5K_LLU z+`Ypq1*;OY&Q~g@JrJ-^gObkij3YfLwit6?Ws-G2;Rwu0Q-1H4R+)X|VX0sIHxuRq zIt1v0>>+zBi$-zDsl_?p4wbcyIW{b&;{pSCtjzn-)Yo^46 zbwEk~>b-fH)uy?+?` zV5%H(wro*gluBn!rQCBy{@!V@fzuSyS#9CG6ppZF!uwD93^jWVlWH*3 z`N^)ki{5(C5Ib!1Gk-vERvGpsn6Nv)3cRr~T?_|G&+edp1=Pjji6?Wjs@ zJAn`<6!g~^pCV8G+l^px8(juEB&j1xI1yje7D5E8muE}xCWsh^(rBfQYQTQ@8t4<6 z;wv}OYDgnZdNcgmpWtYuVU*DH>*W!)WAlv8$Wdm??Z9$IMbyDBinNB1?K9150K=4&}_SK^*v~&Zfy=d?ejuLCVfy zd?j=n2Rzm7#tG%E$Z=u9dwDi=&1SF%zwY?XzfQ*w3G%3?h9xQ*3f)SC2`B_JF+oWy zKXqhZ085?2@hO|)(=XZ_z<)NHHMqgZxp6+${Ks;7QUw?rq0|zSYPb=z38;PKXT=SWb0q-<6_jMay0xD4` zGA+X9JMF6u_s*yZ+3`ci#U>nX34M&?gHTgTX><}!+8FmAQ&b`%e zF}L1Ir{R#8$7HC`(xeB4Z+*W}c4Wi%ZcS$OfFV)~v8rOuqj79hKBm{XS^raA;J*!7 z%HfbdKf)_cmt&8bkHKqE}yUV7CC~0SmBL0Z^#OVI6AFt^B+ji!I8&t5$ z@aQfEpRQ#*lMa3v8(ZIyUz}Sazsh$NSyQ5{VTQKi(ousC5D^(`fho3JEyy9+J&ilT zLh=V#q%ujRvSkTu_?^D4wgw&gUi5c(6(XM>vO87Uo`|8OJc!Jeyv!#CJSL{5(OLbt zwIX-K8c)xljzuzMmSQd+N=U=VSc>!7u~eGD3vourAPSrTDRa}=>1CKz zgJIQ4i1$T6^=#-#rQak>M#;rz(h*wUg7CHmfFMj8ZpYg#}mH zCcIzVcnS~pTaD9*X0~z_M52lE33}`u>WyZHtqcFK<)T%A*F|7@SFd$iB#z@VH) zW{eTY)H-=hSI0HxUax*H{U9Z3K9%L z;u*_x4`J!Nxp{mNv0y`Zaf&orbL=DJc4LqcL3ny?qrYvP;9sLafDX$bB8jrmgn@bm zh`UI9_rqvR9K-IH_487&z{HAcT69T#$shN?^Blu%)SBHqpaAG_QEyfIxG+7*WXBET zR8#2-A#sX1;W=fyp7n<`MsY;S;42ln9tLHt;e6yUt;3N%H)54~Ml;8h9i`*RV^JsT%kKLlao;CDh3S~?3oO(q%R?Rg3=dsZ3)imk9W=I zn1+V&8ukmKC`VA|(9~1{1&eS4`YNK4dBlv5T)op>R{p3(1k6UdyM~FTvV){6iN=!LM8~{Y-*Q@hy=4CQtVTaiXKjxY1yfAc!AKemJ z3DgCRi4?T2w2S_d9JyLg6Sb~<04!fR9A2f97v{VTOHLMHdz^4GXG6=nFNEtfD zc5?CF2f~W1=sN#dl$;#^rx#Tc?-$u8N=$Z5=urX}d;kyU6r2(tvqQE+$3ZOXpr>OV zq-p3|%=#rYEgeN=zWiqvc#fb~#$Kgi39SKdzQhY>o%c9^ftZoqrxsBEtBWhT=0@mk zm0UoaCU_y7I_Q?vJJ|Az#!^RIOs`>UY(~>0s6a-$Z3$FARs0n2MUZ1*03qaX(ye^o z_X)H`zlNh9()cNbPuW_+hGBSW#YXW&h`JO6#JX|1=g!i0-%E({6>Ah~Wr=o&iR4w} z>+-`0U^byQI9$YS;4h!QO!j@M4$=>zqZ?s={&QC&nb`fCo$H6m;tTh2=i>#L&+t=T z{MyFF&3*(g0$N-5PyY((ZK$^9cQ{5Jg9ppxIieHapJ`?$f>yd&(PcgssO2{67+IV< zop;0)&aSe7@w>mN@?}rNAXr5+AM!~<`cSjjpFtQYs6p0@Q@nj%lHCk@bCE-Z%&disgpY&}4OSB=&q~WjTljtOe(qqWq$oPo3TAsUm#>gdJhNin z!L<%qC&Ez-1XPN%zSwi^63j z!w3DNc~N(;%D4eVX#z8pP#!Uo%f2;dl)a1$65CwZ*R1K_!IRIxonjOQX?1%IxALWl z9IN>DhMTS8VXb(B6*VN&?ABn7NWh`~s9iFV7Ugr4*- zu~c8FaPk5nU(%f*O`Z@Isqh*?r09B}n5S{z<3+R+k3?EZZfX$aDRU-lLuCYtXOjV? zDpJ?+3vwLZpy8?MQCY;MZZ#&QCIT+LKUe7I#kHI#h#=R$VXfdF(MskD2VYx%01K_R z${LDS1yYCPTIH4rh{*h?3*`%h9nAjg@4lz`w^qkoY%uO<$d^^e^?=}_p! z!trf*!5o<70YUn;MnfNs-)_g!uVa?}fW5X?PM;s@7Hxihed1WH;JWF~pe%!!_bO)C zDVRK_1y3f2?tPf_yA`EyLJWBzcoaprD9%%s(_SHnNf&(yH||g|`~zJoXA|p#V={UQ z4=L9kP3Y(YC}QwyY@>d-cB3NKS*6C5*!@hUuIX;a=R@DjpHM6&xG0w17#Rj(ZI)lkPOpLzJH+Ng;YWwm?PCIuR=0HpL{kbv)48J< z#TEqztnjT@RbWHGQf)Q&ax7PN>ns74Dm)!+7>YlbjhMlni-R}p92wJdmsM4%GzTjh z$>b+fqJZI+wy0@iA-5`7h8}&GMFv8?g=FcR<9EllL$82V<`syz=M#-C;fGeX5}t zkeo~@$HJja!K`EdgWz|MTzsf)2{7N3){ivnv}5=&8q0OI4>I{@JB3o4*dY z`ojHk+rTOjx;Rc;DF(i$B;MyPT5bK`t>^2ztj)UyFhsZBcx>zrwiAmNMP$hAxnMPfwU{?uI@Kb7Z=e<6G zqSt=<8C(F>k0Xkn_KfnIq~q37NziZc>$u{MEFmegHdOfwW>Cd%DsB}ipKzNg79e6C zS5-Jf2I7tym|AzT7-ro?<$q6m%B3oT@=zR-9HYEx(^165&3u?QL53?y~J@>mjz-Dc0R7{mCh^M3%2Qn( z_}-C%@@&2b2N0QNN!PQx5-}zbnMM#l4jCvi$&sa8GCfsO`ei_(%(t)#ki1dMuo)Qr zz74}8HG>y|NJy`dsVy5v4G80UKIw$&C6TK z(=!JDANm!QHRiCGB{gFNLq}pO;JBX~#f;V)dcb-YfURMmA8yTBz%n78Y9w3o4xk(? zH@fGX&^98y+$OzDlr6pgGEM2SDU|tsP|ft5K))U`xw{Jn1aZPnhgaQOfuDc1;8z#v zBYSYPqB5x*31|xciwrz;GTTZkxFZTUZl`P$KFI3385NcFt&VIVcDOFFlimcUKeE@p zi`hZ0V&Jo?Y%}Ix(Wn*r%n8G;3vdrzpFd{=kxcU!Z=5y-KcRjM+|=xS2|C>wrmWx0 zIQ-ms7ON)mZgcuv5NlFSRaiMgiH}if>CBwns~-=;1JhbdYO1{ zO<99{5&pW2OL>Qgi%3{4#b)tBDn}BngKX#zS^akoRj(2Rj9TvOoGf`3Ue70lCvjh$ zVa)q*dgZqPHrSSGE>zRkjuGl}qUBx^sW~jMM0MBTg%;0uzdn6wqkLCHA}lN&Q2gcF zH>~x5_O*}3@hxPh->)b<*KkhskzBF-Of73`j;~0VP>fJSluc^1o%pNo&1R8k8j()@ zP6N7b?`t|8MiNZi?wESdBDt-v{w!i%xlUQeT_urX1<0*Tqt6?K2d8MqhLxtL3Np{R zBe96{ksPoxt6CPzTOKDjV-a4=!>}&m=gFGIN00#J9P2zpEVY1h;B4D<2GZ-J%+(|e zDBMGMM$r{o1VZ6qGeD}K3@x>SeHnXQ;P=m~xcCElo5VHXQl<(8l+P)`Qz!*1U9FHM#*TUET_+QZd%ZzZRO^C0C-BacYLf zGx=p3_*H{yGmA9Y-}jOZ$wiN(?8&9_m%}StuHnXaOCe7NiK36>xsUTpo|CSxZFsQa zcGOLIgx(xpsA#0ZW9E@}sAmEIF`2k|1zPhH&gz1TAT$|52#WN? zp$E%Wp==OXe8M4=;1JjEL_vqKVe7DrPHR2e(Ojuh)QPg|V6|+?8XM7VrU!_!1k#xq zS>)1l^KHv7I13sEd^M811mgF8=_c;(X66IR1yk9I1%;ZJTB*|2!_7QKjWD~EX-1wT zh(m7^+0j28%U*hpHxc@Pv-!(Vv_!sHz9$Lo)9ASJk&2r|4tyeN2x9?ywK-Yx!@3?>BB&ge1SX01oWKLqGl6S8WktS*dTldFAVvW2R2jA7zyt`TF| zqB9UA*Ks}+@`R^E{VbIGcrN5Ni9-5DYC}e)PwQo7g=W zM^bQ1L9RQ=z}*SOjQFX^`c=}Y?Tv&_#YD7xiUMfl@{v=g;s=FBl;2pgD{A*4<*P}Q~(un6#J{2SKJKq@5~DrisCa!A-JRN_4j_mNkLH^})$R?C6+u7Vh^ zJEt*O8TrUvfiEoGU?&-3;ogkQE~F!g*x*(?SdFL@aig;5$lW)N} zhLbi<|D+5SaLAkg-6^`eO0}!d=|&5`?hC@!%r50H)&g0$4h9?3m?5B~P73~Jb-SAO z_V**^>^`<@AfxO3>Qb}2e@8J&ulh9;D@e8q(@6+<4y`&8Q(sjE-$wnn6#N(kRRc7o9I1TWRZPw4J7?@A-$i z&5uCOdQMeF-N(wvvocoIh~&#Cq+y6w%KHBp*}QI@k?772u-@Hinu zKPS*WWTl?;YXf6~dlYL1Oz_~eEfEs%mCNMg&$3^)tCTA96lF~?1qA7qb-MRP&-f0@ zrH@6Z3}w8LMLZsXh z+0^r2`6#9Z6KvzsH2v`({&t9+25t0o{#~J*>sCArL(9WgT(U~j|Lf3^L*zGR(0|DU zNPI^`w$W!d$=?Psy9SS}{_NbsVP?tM^~*BH)JHwUGT;xu}v>+AO`{{j|fB@SA8|WnTUwzJhkleVk_6#4aB< z=#sJbymVlPa^p@CjrLsL^lB=zc>%|G?)2My<&u4y!FLV}RKJ;#j~jVbi4sw3H_Lf| z^;t~(EL48(;5ot{GI}5xI#?2c;=563Mp!MVQkam!ApecCDI5_4k^HN%X!*|l@g%4fKv_qlk56j?H>xlzp;+q(7cZ;p;c9=U2Ki(bCp8bdD&YWW_K9lG{InQ@q6F=D;T55_1VDI zJC@uD2eW5(09tH3#b9S^>%Vn3;Q5mye)&p=vroI^qX7FTNR4I&dSySI$6Qc*P(Cm=i%V#+p91`Wvw)@oi(JFTj+#+-RYutNmPcsJr{c$~zMxD5yl z^x0L40Zh;2N9NnV={hNt;XnBBxRK$07@3S|n|3{`r-WaUM^ioQ?FE_1Nk*gxBS(dk z^a`yTS$BfYT23T%)SCH}lyZa_YnHBhM)!|5zG@uUYto6-%ouTbFh9VHNq*UgwGz^DEr;M;{ZF_mu<36t_)qyteAqA z9bXw`%_WJo>P=$?mXbC|F zPt-?)A`w`8P_U-*HcifY@re?ZN zpWb_)wXU_|fQD0|!Lll4?}#(j71olTzWrSq_HDD68=iXEsixz98}u9a@hkWx6N;|G zwv}BNKYvN{$26)SOn~vd{~|^)%qCJhEOo$1=Xh_Avipapvo4-<_a|M@jn~%x{8#1u z?DGd{SNCZp0f13a=PFaRNfV)iB{iLuCQ=%)_$|;RhCiZI@N}g8<;Pohqo#qhHeyi} z;4;$3Yj@iY=z4;E=smhAz1v$s)6-IExlL)*^M!oY11}_3c0f?F{9g0qb5O(Q2-KwM zi1m_C;CwQoKP`%CWR%w+BwlC*!)EFL>MSXJ96&t@1TfBKfNPL8gKynEUz}5Q z8lpJ`!NBs_wKsUR1^_CV_p5H5K=|BifbYYdG8Bj)&)#rd@n86gUO~I&e9($Udrv1u zi@*v#j%1(wxg&||@DjbmiFX}dKnHWJa~oqfvhaR5B>xTHT-Nk^IYn3|TnXfF#oxet`X#dF61L<*?*mEysffQZUqjGT@)2d_?; zl>s`?iHS#R&Hpe&9nmv@D@v!ZHMKs$@)cWDOzTw06E^ENP1@<5$1^6$5ZvoAY0JOX zlRp=;(1)X;*ThgETg_cM8d;12kWuwoF?&k@ZpU7+_p4Lx!I1EyQ0kUD_fln>zY}X$ zRAH=8#$Z1dD|m(Rey>z`f~8FeiyRvu#qpeQaEWIn5WPl~LicODb4mps5dL+pojuPz z2@flSUHMQqZ^$JYgN(F+axY-YXNR->&ga~0X~R_#UNm8G*{pek_i})BNB9j&nFW4C zZFx)~Y_UFV)N?;=BzjvvR85IV?bucKKJo3GSX}$@QOqbyvOgyPXzz&bfWVq?WpEU& z;DZXuRb1%BnOjFH0OX<-xX*7xJ?tEORxd84}rr_Ojq?R;Y@$xY_>cIf3 z7yW-8oQEA$-|l1{y(wZ6O;CkIGo0kzmGq8ZN63U0wQlDT(ViLA>NRqK!_0*Xz=& zOJ#5t6buDWEypySuUiI(>~Mk!_2cnss(WTyXx7N8L`K<^Q%+X`L%g9081yiU8loyG z3hg*$hFXS;)?dOCVekj8L&Q}AI&N1J`*N?o0daRzr9w~m=6q1ofw+R@!`d$;bku;Oj9dD7BGF?eGI#80^Noe2>zbj2=QhkGyMW8Nl~bY0Qp1fCk5Ir^ zw3UmY%t7=5=LFs+pvJM7JD6Kb0GQv>sU7_pM3)wd^nHuoWN*CzrZ#m{HtV0k<S;ye6H}va`xXJ$;MRdw_!$lK? zcMq*v+ll)y#|H(#9qldb8C!LPeo<>oj!;1oK?qm#%va`_{E8;|J@`oKEv#FUv3pv>o9_1d!v6;n<06B9?JdUuOywM_ zCJRx7f`&+Msj^1yuZM(3FQ-5WwEw)&ScQPZsJ98&>-qp2UoTEf01oAO@?%Cd8l)Kh z7iaeagj3$fF{c{D8c)D{@k(8-rlft zj(p6iX$?q{eG8(UwOhR3etL`lPr;w_JS^`10EC#H7-WY-0|@OqVY6v$yC5HB|0>Q( zeN5+*i|3>xR_a%%wrnth{8)E@xOo4a%O#h~XumJ6DdJWyepI1##$s}q!Bey^I0ID58V3=;JTnixXwxjkBGVM$BD`rlEBn?G7ISXwI>F_4% zR;;q`Eob{JEGuL$QNM2>Re!P$Kt^fiJTm~s6Vf0jc-s4arNUDts6HgZuPd;6?mG|d z7stx`N3??BfZv~K^I_60exEwnk*blv-e*mhcR#wc_O?m)Ar#0`{Q7!!et)XSbJc_T z${9-fI)7oF$JVck^>>A}|FdM+cCeY_uc}d9<}hOBXG9ka=h5sHkMC+55sksQW95FQQo3cClozOiT}^`~@njnK~GC z6IOYB2OR1pqyr;BvE}YxhXWxxf_LsG@j9KP1Twypu)I&Yx@0x>0LJV$CfQlEBs0*s z%wPJ`G6d@zPfNwkgc8*>CO(H^QQ3k1@`c|Tm4=WI{$E28aHoGLpZ;~Astx@|H~?PT zSkY1vSXK#tg0T_-#8)5a>KCQ^Ok^yiA@>bl_<83pO@FKS`x@d`u?AIIS!&LPlK`yh zzt3N+))oj*yverXlMIP_LtU^3wJRF{3CEtKC@bS|6|Ee_;|t2%9N~=4oV7B=Z}SC> z3WrI<$PcT_$-dZx zEy@Rf#vgw)b;y$d3rEVDy+Psm zbq)Xtegpjyne|M^cV2j3)oPaTP~e;o4uQ{vMP2jZY1(v@ZrXIwB)OXY4s51HTPG&+ zgx-@D;&vTo%*|V_{F97Lo90j3C+!g_Cz5f9A@q8`M6o50Ks&0jo?KrOzv_9<4Cr}H zaAQfj>wXES31|rpzNe_9E;lv^azbc_g9sMi^>p$2Eoz~I8(>gX)Iwys3kCjXL#q|( z?wgIz|Og; z@~pd0TTfqj^u0cF0#>8_ea-(SK8O%)9>K^|#G;~2OK22eliKRIwCBCZdvTu@cQdK@ zLDEg^wyxyMCf)Ykq;K%1eZT7bU_L&pzknS_pf0~-}_x6t* zb{~Cbkg$6HQ22$NXVXD&?u5r-WdPUdMqLv_5}~qf9=#lZSAQT8NJqfRe#^ZNK!*TWAY@8Nubr)3MrU3vX(O41kj|E6G0fPoQK z-Z~+!gq|-v{dC;v0Xy|So8WG9*9-H~cQ;}i`_^>*Wb97#oA**V&-0~M?U2~R2U?=3SGa#eJg-kS3d;6+cwC`<=lqQ1s?DI{-ruPCY#z1gx=xGz-5U~>z;bP4p+?H@O#n_D64{(^4R*)<< zG28FdSHte>!RSie=9rZSZK9l(l@$?V3PmG1ITIC~!o;Apr5eaO6x`Qxm^G&C`^YJD zRTq2N0N`!^kTjI*bRYlhtK~60t!f6Sa7;g|zc+-~Eb0v;ry3{$Pdc1W0cd|^h-mB# z*aUoicDwFL!+-=X&>bG&Xnhhu9;8ns?O-pJzJ~8PuR@J<7fehzU z-Fo%2y3O-5;KY-yT|eZts_KdNb;1H_41R{m^m;0gT-PEqVT%n7p|GxF@ z3eq{kkG>2t)lu<>IUTu-691$%29SoCHnPUfKF8vPq%?W2r9DW379p1RXa=zVqwZ%l zfG74-ze}YY&S$t}@$}b~3Rj^_F29Cr+f|?1de)8jnWRe{?faP$6IKfEQ6o2L4Q4@p?}0tch=sZib4-%ZxW+q zR`gC^wHc@-biLx-EG@HE#(pZ4o)dh6sxLp2X>? zow7*=dA}&xOE8Ku#~h7M)*BCei_=V^7L!fj`Yo(3x!xbzt?g#;Mq(0DWF?WK-P(a% zhOJsuR{FU~zcE6b#ET4d%U-$jCK?DFWR)TO5#=_&rl^0j+O^-rZwE=W$m(Gu{EywK zmPFmW1?Hb4JE|yV}5h`NKvdRW^79~`2x-@pc_Gy_f5l;MywLhjwd&b!nG(+71m7?&R%!>ZWm-0m)JGw){)syWznplV%NuM1iGAjF zb}?Gg{i;Dp0X>E)Ehy(uwI^p zn$+Apw5IN3vhaj>8dK9Z zM4fqu%D@Blv4}LnoD&p8pQgndjOlPe9t$}-6iCe`eMFT1U?{OLPtVCQV*AIz zBix6rSq-3`pAo0{cii>8Ms4nM-yXhnJp!&RKH|~Y?J8QuuO+~1I_~p-IdtI^#8`qt zmSWJJI4(siMFp}VQ*+lCkYX7R;cp#9f@n`r$=|=l30jBgC$25e5sVM>7D9b9L&SX* z`p{Ud_OD1)w5 z^j}6b)%JKxvppGj^xT-6H#}_|1{%}3rD}&o$J)u%R3$gdPYA@1#p2S#fjAs^9bIj! zxhhF1f~11sNW<8xgwH2mfN?ORh62Zm-F8Hlg!DDP;4GDyt9gns$n>eInc`}?oNHRm zO5;Zd_nP4Ldp)01ZauFTZUqG;;QxS47u+?ZZIRQ1N#YBSS@p#u1@k0~Dkfeom`AYl zO67x5Ts8b;SR6BiR2>`MGn+*+1+MXzR&NT|nxf9cCwBu_JA@*kDW~=%Ekm|( zy2x!=bI3JvHaL|o8i+HrZM5c=qXY1*yG4WR-l6rwE8xr@aqiZR<9S;{T4Mn2Va26+ z0bE7VuFx z+o}G9$lCz3hZ)OxdPUJ3+A55U3kVJ766L>odV`JL9D zxAKdfcft52WbM!GmCdD0&Pyc(h~Qu?97c*7QC&4s7<^u5x{*Sn=VH1HsCQ1luG}JF z#%|(DE1**A2{>mU<`kPfaY@fTH)N8q`g|xZAp=k4V``M0mO&N~@H9XbvHZtKFxuQC z@zEfT^Eu{*)nU1QC}QN(piES>D1GY-3+kpLt^Q3ys>3xWDx|CHQ5$>(;XJy9eHoAY zok4WfFAj8855q&Rfe&W_-|Q`bgFvA6!e-Q9YS}z0kK}UhAI@f%Q6{UD16)HoI<#fn z0Ko&?EMB2)F#Xky@B0BCG0EM%_{sw?GWxGi{r8UvKytdaNoG(f*stRiWUSV*{b7=` zwfb}Lx8fnx_a1KZrrOPMPO+-CtS+IGrE!HRGBbzd*7?tnSxIPNA?!}07RbOo5Ql5Gr!NsZVYWe} zvseR!8{n4g;a^c;8}lDO?;R6N$ZhgToBEoqxKF{v^|+Mh1}~pe19Izkha6WgAXze2 znxoN}x}teAgiaPvvyD&M77?LXE}U4>qirTyz&b&JAL-+%JqZlghD3qZlP_YKZNn&( zn6!VgO~6lzzhLd8!4X1a#hm{ezX8gb^%!`b_=SKB8%PphMv08Tq8lM2oIQ3`d7mvu7hYV_P3NC5Z&KrRSAa<8imGlpm- zWfc20aOMa)$ZtCxv=DmYooxFjHraZh27ZO+LK9Nk(?&)RfGtK69bO@;$W(IjPMM#X z=|C+3!1MM!KNDGH%vy3;HtI+)xU=9Pf6_7mjs~!jEs&~Q$h6c#rq2cqtM+GN!CW=q zg$kM7v?=e$xvaO$tvrc1GVGNCDaVG7!J$&jXyf`dLxyZ3@{&YDAmBA-qJZC9EFb<2 zk(|1idzh|(iyWqrnYn}wTlEe=h6FVJK5?PqzTekatw0G zNv_avx>uFH3ZL>#;bh^>WwdKesW`u9wy0?d=z7ScM0dBAl`G=fkMZ!|$* zw(Ely=d1|pq!^Bs%DvG~V+yVMBC?2HK0k2RR7f;oUnZQzJCVAme2k^k>egZ$U?SaIIZc*DW|CC?TT#-CjjR-p2aKtlSlj~yH$*m zQl12CUL4SNd@Kz4pZi{^@8!419_%>L8o{Ui$pIwb1 zs}5wN$_KCsIk|az{#}1k0=>HHyZ0gh+t$tR)kJs3kx*)Y6hgNzf^z?NNqB1Qb?1B5 zLj@A=-{Hf{UQ8upYlfayk6n-otv&VT@!uZ?E(WRGSJRjwHx<=f{d_^J&4V*`%0URa zjVg>)JYjQuFFSrp79`|(8+M6B+|ERE$K#xw4e=aPRy>667VLn8wD`i*L%&g26V?Gy zDpGR2dUm#?biVRCAlXLbq*jVd?@&p-!H+6JRgFU8$Rwbj9!WJZyOasZvttrC ziJE{gSB&zXpA+0Vm+;RkV2i*1@PUJ#g065>04XdC6q|)reG3cmmbI%|?M_Y%SC#!cZxp=LQg*Sj_Q(ycw8ld`EYuk*6jLjeABs6!g|WDfbLmJ zTMh^nG08@eqYvn=DW-H`ES?uDFqtOhP;hz-G}_?Qw#UiR{gWik^#+RIg^oA;x!Zhl zH-=y$*`TA?i@W?svvMA;S3jvb2>#|O4?VjpYgq| zv`j8KE`uzENq=*@ko3*ztR4Cu>@y~~ez8ah+ARy6w&X60617sa@J5CZ0cVfp!>S*W z&_FgLbI3aYEGQ8`agylV!H?bQ4jx-%4+f$N_oITZIaeW(yq8HP_y$?EHrAi$DXs(x zIq)Hv%tDWKu?|b$?=CX=&v#2 z?vLxfOW)g}+2?y!%3c|6znKs}br8I>Iqh*rV-prWw^!qqK@&p@*$H6U`44zc+PTjR zbV@+a=bfbM>w=_}+akZ4Mu&{cA?0PPjH9qkPnVAZgiQ52D&!n0C@XUkp&UE&ArU$I zI$hl{n;^^du*s*V=g@r1Fwass;C*1Do_!Ai=svzOVN|Cmd0g-(mb3_wLqm>|lF6Pc zO|OQ2PAcE1d0sBy+K(T393EB<9gkOV9cGRX9nKn*4vJYjVu0bjKk-^~V6cddPV~Wt zVHG*%ckp-oeBIJhQBv>nnA#h?RI#um{m}r}HE^euN*gZt3Kj+Ket(FQ1I!g-GUcOr zE+VCK`3rU?mk{cU2z>2qYM?H2tr#f?N0_2!k%Ngl2QsIM$t>3lrM?q$*@9 zHV)#%b9)h#efe13chtQPfJ2Pi8`N4?NXNRz)160;S?bSYZq{8dx3>^V6ye@65}iKp z8fo8YTKErxLqo^Tt1`#jbHx|G^Ym+`=I5~@X$Gyh3AqSAD`>N`v-g0seO*oc_2>>y=x` zhDi=paCZ{6oZR5xpnyZ=l#Op15cPbj6gnWEibgjvJ|4B@@XiR2gI!38GMv6X>auR~ z!{_0}%+8tnx7+8Z4G614KY;^ma#h-Cai!26jQ&me79_0@yu!9W3BS<30`sQw==@cn5a=SWOF2HaDlfnC;av1I_((saV`P*4;tE8_SY(O7 z0UV+!2>Q`&IS-f%6#$oM060j>6O!V!(|EI%b6>QaQo)Fs8c!g?!{q~Y^42u(;Y1@E z9Wfd=0TuI>0hM(yOU*k-g`a=5V)*^JVy90Xusyxyig|uSjYP*GXIlA(tSrzTW0CF5 z@KhrdMI@@R|C{i=?6&+5it8)S-ft3LXyZ{1xdO*49GzF06Qt%U6q0yn2}&#;i5#Z$ zv#!TW8ysIKpZ^{<8*+>}N)wM<4J20j-m@n~&{yUE3=w{X+~uKr-}{grblAUrJuv^I z=e5D8-DC^PprU0o68T=+H$$V~IEtBKj9ACIynsvw!kpB`k&f@(<2e%LHy+|1Ncy`7 z$>Y+pt06K#zO$eQRMKg+JL9wZtc=MvBu#lA%mF*vi-hX1A?Ska-LOs0Nur&w%VO!5 zm>!Pd5Ys+#Ik^D3tLSKtU`Ap_Q~~(jxJtTi-fusU1IsK!$mMaErQnBWg&fhQkuem^ zN2&}BKWm7#VH<@C5{TuQin$rW6EbIE1!t8ex)G z895tEE<)!FW?Sueb9@y4-*KNgQqFzfY1o8Vg*2kz(~XwH*jNUU`(OD@w?x?4$Gol! z^wKA|hRVTbIXDxbd$X8XiU_0zff`$TH>hNko% za`+FU6p%V;l7l<_H%}J6Coz`RZH{UXRDcC^Yb#KtfcEnMd zWOO$COYD#J{w88h_)_>}DMay7Y|3aes7dDib7@!iUFVay{!^&^&iG;Wz_T9iR|1XG z=7{fYuBW1=NEeHwX_AIPWNtY4(x55_jL~wcxB$s2nu5wB*HE&Lw#oHgOB$cFl`Lk| z22)rmt$Bb&ljY17su3|NqM?pFmc=wNE%RxEMNTFoo1Gw=J!=-LnDkBLjQh=cwLj+) zSBpw4G)PrUe~-zaE~=v1o4i7!`hRojx0^0-q)`TD5PNY|SVEk0T)ofO7bU?MJSHAzjLCW&t z;`_9ed$5^lw`>3UJoON24~_)t6#9w?sfrPYw0h@b4x#&e)c+I*nP&2-YRTBDL^}>z zC+fx1?>*GxKARs+DVvyuB|8eneg@UVqvoK#{w|D_kOk@p!VZ1ZGA`9wAfJ|v*}K6^ zknwM8tpUb?ts>!+2JyWDZ%Gp^qvg_$?1TYqF!PS$prjC}xByzmo(R00QS-&|k02V9F zftQb174PnLAn5EuJbkkxv+WG*_c|?~Ne&~U94PZ)LdzmyjI}Kw^t>aK6nviR@h|-5 zU)N9AQXz<`dDG<2xjTDfaJ6#taLZA>yvJpvesAd8bzfx%6kKl9Q!>Ht4#ZWB{+s8T z`}%d<#X=Mh#cR}`$mQM|C}0nAo=8mXTt)DLk``4F{o%26J zX&n54d}KC>QQrZd)%RH5eQ9kAs22tN%9z?*6`{S12L1Cfr~lTQlEGc)`!nT;MG|o2 z$?O1T6|Ga7B}|OrP$V?#Vmz_sF$4GVrp6~;;G8l!Z^gFOcmPr72kQ^>>_gZmRvsIEP)wDMRxm1)pa@Dl{6!pYMl=yqHP_PPDa+a`uzvBn`gI3P8b%)jPDN{Di3Dhn(%Ef`s^e;-^J6U0dQMx~wVvw{k4oK~KZOrl>EYo7f%lzlC6MT4;velN; zX8*)3{LrI(p1b@$B(}l6wIEVF@@&NhBh=CvZkHkU`1!iYmjNP zuaPJD?^*SZ%WTf^*jq?3`Up_-YkV{5z;;=3Hya294WPf@GLDXqPm zAaw4%QYaejusPfYzI5Z@(E;@f7v+?EEe84)YIP3+uZ%uCBd8W?#K{yZ>aNLn9#a_^R_b>cBtp7&atV|H;NzpLP&$d zy#F_~J!lNr^DKl8xpI~-=xol~QlHM-a*6p}F<>(wF#-vJsLQz%%CANOZUL^e)zZeRyVwbgXUbX~_F9 zx3kaf?UEm>EXHEKE3oK~2OsA46~+qmA24SEAaDyJUjex4^;~HZkDx{y(*C5^ zPkaS8wQ-90{@Ts&E}jdUuy9`wzbXl(Z?(O8zFz8X?OE__AuqBE3XU~Z@q;YiKK^+w zK=L^1X{_|xQUG=q zN!~l6NkAq#$$PF>(saJPXs{)P79wzZR0^!*n4Of|w}9g^tJV&WLE1syBOUrGrz}>?k+G@m2Y&9fYk#MEc363y#d3^qw zsN!}jSF`K3Q4f5ouIKzJNz}ge9%w$gjG>sBmfQp|e7$5V?KZTIg+2K|p-zqaeH@zW z`z2c{Fng`3&I&T9lj{@fbWFk*GZh7!?}o=LAIObEj%}tLkNWkX#Ny9(0JP<(oDl?I zJ<~Sp0u5fTG+|VS*_FKrhDbcP-hM(9$0x^Cz5&A!lPrhlOBg=WjY2{|W#RaH)>%hU zA*ar<&yx>=ndJru6Mmj@13zQR1jIjfpr~AHvV_ufy55sgwT6d+q*0?k;j+{bBwy1K z5jn-1D~<{ZyUP!N~<0<72hYWmUH zdz;dnF0cApFwMWuaz%;TVsBB`O7+=A6Zo{bVi>{ejziyp5<8MDEUYi?;ekZ7Vgy~9 zRF?h7X-<*H@y*B0W@z>pkYTT#zHwWkE znfmg{RTOhP@6n0ew>e5&&y43Fx+@(fv{h1KDK{&1HvATXciurZmnUm>(r_W>oCOTf z$Hz(=BBXcgr0UBuBC;$k|J3v!>rejdCNDYcswzWryB-vU-pZ64oYw3_W^Jj*Czb0Q zq2|t67uOa!{qp)R9Qy7P>O|0_zOz&ce$^!m%t~H-Ta);h2`#OmEUylR>;}XXq!D#5Dj}UFnjRK2L54N7i zM5Er*s^-rLMuVOOR!?^MA%0uEH@Zw7JE{{@e4E&(Pd^VW8!?plZ+N3(l`l@#&J4#& znDrY75E?-RzK8LarILJatZHz`5g6!_dLE~d4@U+*QJP(UIh6QzByg(qCh0A5$FOk? zl#YmEg&yIxQ^@0rtPT{N8N@MYvK-dyqGGu{Z2KU#%e5<-1w}?P3B?MhXB5GEEu}gA zXH~lQ2Rxl4^JnxDRVCaqoV!wqxLwzLLRXrkJHf1NNtCf*hDcP9-`r%IAFjSLJq@e- zeSYXjBu14u!&k?ifkUGoBR+TQW9$EzUN+y^v=_({QG?oW?e*rj36+sBKwKF4TpCtU zaafb8e8bT$zyh5Lc^G?Bl*BtfX5_1xu>v zgu)vm(hisNO{qA`8b?R9Ys+#f#3`{6AzL-^kAH^aTK(Z_w>46ZT|pPhJIMRfA}le? znJqFY#C*-E2P!~|2n465&Bmc}4z2lu9Pq-MF92l5ih--<=Rev-M(O zTlo&(?@_fK9H!~Dr+r^@t2h10KENg(O5VaLgAg9la!d~>7{uI}m&xEqpzU_9&~_0# zGo@VTp6EX_$`LcZ6VR*?$;jnK8{7$vF{feib5E-=qD&O{Mv5pxGA?bS_MFBf)8ja@ zX}qth84+v|;hD^yR)b`$;Se<4>#*PUWEdh?5}n$=EAg%$B~+hlykBR`d&!f0`D&PO zWYGq`C5yf@Ii=ZXq5r^q$!+W(7tv0~E|b7UlYKsG*94!K_5emLg%QP5ONN~&>H*pS zM?CW40uF37n{Rk3M)dVq-?3rjFah~Y@v#N3*{Q&>tt1(ddP<%1&jh1pWh{wr#REww z1z{Ak&U5b}(VzTXENx^1{A{Q1qAeHa4aY5>eWX<8y8$rB`<-FANbCeMrC(74yz-?R zMO)dTNHw_bV%pP@g^Qn+dS`gdQA*6D}PA@Rlmt(o%r96uacF<3oT`A^}=; z3}QrVZE#XhV4@h4ue^{WCMjA>iuRBOx%+@K%gT4O|p8;P_JByjnUmM8?hSJv(^I z1q_dOlNFSKL*P%y4fH82-+OMW=#B6&X=6lvGpM4h*-oIX8uPIPQIs%Hr-n+c&ZvhL ze3%sKNZS9pIuW2tsEJk6LKHBQ`!rfXsx423y^5e`)C~&41dfvz-}76TPeX_gJipUq zFpC|cnMq>6U>&2;zoY@fM#2ffx2$P`6CyM9?JV-J58d8b0_*v7Iu$JnVF_W8|v z#PMy~p{FHSgCy`HYf}o!Rrn-6y-)rK5s0Rj|4P9;GkVf>h)-380}a$>FhOue(#7A^ zLW3K?7f&W9c3^&J z$+HGJDTa-#>?V-U`{+Qq8Vgmc<4)HD2{cO5MX4moAkx;#iKCG_`=NdKx+n9sAX}0@ z@E0Oi=Soxg%a>P8$lEFMedqo8P$#s3_4Pa`!#280dAm`q7*pni*KPvjuTvr?C!1lG zX;xYbHzxCi0_CFP((U&P{bAMfrR4l>MY&gZ7T_u%ZoHbU1Xgv*OC%h$=cu z_pK@nYwTo!{955V)r-8=>P(;!mX!?M8W zz-pPy$U!O%^j}Pp_&1@4ZdDzHrJ2z*b6@9v^LOHx%~+E8J+$yr5TjY6HqEsInuuvW zvIvYf7BRz$2oc6zI;llOSTgut_#GlyEO*$CWvXh4#Vu1G)I(g`zT1;Yk(S$uta{Bj zY#Qs>)aa|KFXn!@9z+~;=YW8O?lk`kE%9;9kM`F7u0w}Ms%q2s}0SA^05OIt}j z1x8c`YmjdLy*tJr$cAq812$b0cT(ftclB=yF^X!*orp8mjYl_sAxp3Kl2yHhePLV^ z^zyzFL41bGC+wScl-VD3bv2&j;Td zXW}2?w|*EnBKf&`SmoU&m7X=UHP!iY+sNfdcV&BxG1U>T94P$(FU%wf=D ziK3Ag=h3P4%5bvJ7}=Sx=8{sakQLI&B_W3u(17G~?i_J`N3jHkI7WqOKNw93NnJUBQ55dlx z=!VuR*$Yl>3%2>_D(ZjAsZQ>^3nV=;*@%NSy@wG4$Y9FaJKBRl$lbgO$AryuOn@*W zzsOeznX81sM>#g3$V%>)IFM{Os8axvlG$`!Et7A;EvK1>-@?RCynU@zVJVbN$H~pswf;jb|P4)Vds5|!0I+#J^8!arr zvk#+F80dGLj_;g@Z{Iu;^6@toAc;fMe`SfmD6cOVM@0P<-KQ;$7Zju_ql%+nGUZvN zZxNN6%{gh&*S$4wW8u3SP|fZ^%b- z?*~`swKb?q%{}o_-n(+oe?@2tG0M}K=f=_bE0*_;oa)S~xQpGov!|YYxk?S;SSmOz zsm_TxEa*Y;sTAWKY6|KpNGmy@2!wC7hAiw6g4zUcF4wG+o_~YCy|&|e_`lm_qf$Zq zibG{2LwOlfrk}VX|FgIcOEVc{Gvi;fVCTi{U#|1#!K`n-LKzRjDWxu17;jkh-bMxG zsy(khhAga|x$Q>4OB27SfvW&MoQ$}n$Vv%s;2Tao1+85_@{^#R8GO-Ib+%f5QAn_Y zCgIW|9CWn62O! z@=K2&o!syVG%rgWQ6TMWC!EpF{avf-Fy9j`jEguSC<$(d`~G(I3@w15WLCvJ3xblj*s3lw2Vqo`mP-fL>qXUBlr z+AFh^Igz(%%a_m}o2o&+ct2r?1xvS&KK}up!2i5M=@RwJyLWHbvJ#@-SY&M&K6Q|k zFog%aqlR%r;}GVN23FfV7$P`6s}udn9@zwzhBe$ph7KzpG4Ce~A531kw>X!WVR;0@ z6#8O9Ke*7giaf%E!N$g~`4IXLA|^~4tR{0zjg(!cqGmXnP(N%_*7nY#a!H<*vC<`{ zi5x~u4j>9|ofwrzxQ^A}dgM@MkxhHnVB27E-&Zfe6n`wBB8L|rtuGiwvKOE(_N9|; zh~KsrVJ@OTZeO#~|8_)2HKtZ{u@q6!SXVeKk6L0Si@_t9)`aapn^rHzC|kNAHg66R z#Zyh8e(8A!{+cm4Q4;4c!_k1m<@IddQ=&;XEHCfz~ShLE>c}ve44c^ zoayEh^<|Tg832TZI`rliB|a%r+PylvOk+-{TG6H9%jFc|#=T?(42%(#@7miJb3TpF z9O58_kW~+U^iR+_$wUi|`@>gA8#I+U=x;uK?%%+bspz1hfvw|Z=Z0nJfO0}4sqKyi zY4_ff;TH@SbpQMt&Ph9ig9s(OFsz(Tb~lJD%;(dei=o0|DngX-KtItX`wU=OZ-kX- z4yzEOHZK6MC{lv_5g!Kf+-Pt=OBefhF8)xb_i7A}^Al@y#yDx+;L z1m=HY&9d*t^ux?4M9$eI3xZSWwSrMm7uSi#ll9|9IS~jRC3p@A_+Y~D0e=>rFs+w^ zsOVcVxh#dbc`3Y@cAK``E?dDUU$ zHc`7IEh~u^B%vBLyUOSaVimNCB1irZAd*0qa(inr}X-gldc#JHauRjjVD5<6D zf6V+u9I;>k@RzbljX|z58i-l^drJYkm^GSl|7N)YqY67Q5*OHep-`va8K18z-{r?M z^NoV*MsWn3dgP<1g2dIo)8F{BB&GStGzbmT$cs z68CMCV&0OmIu3osak`C}2H3f~o3d&#?z)h2M|28>1RqzXY~VnQWH-b+dP zXhASpTwYNhL9W#||I(cKl53K8i?dF%+DT3zBl_aYeK*|2ckS0J+JsM^<|nb%=*FL@T zr!l#jjWY>-nhurhe@4;Z$kk5;bkwmKkn28FVv)gaJdjLC_0@0>YH}xCIsK}~R*E5D zJGrdEq#S)bbmlBrIyX@Ss+1pA)WLAM$8nc+jv2h%cEWQ&-As$oWFeEgbA3ArqaG71M0H=K8o*NSFI9!@EZWqI|R4DfCwAzuYl zmcv78H>39Z^QCrvjVAmbS7#X&W&1{Z=>d^$0ZB;(1cafxLz+P(1q75-I;5n#yBnlM zI;Bfc5a}F3a)2QQIQRQM=hOMfS}vSn=6Rm$-q+s0{V|QX=&5a^H0E1a1V1$J?-VDb zHaV9^TV=&HzrAsveg8mc!@Coy&PxFGTJ6Hy{~gdcd#QC!DC9ESj|f6GHs96!kcc_? ze(WPYawx4+ zF&+!y!Bu;uiOjOCEKZnC1?2T(D%hR1Nd!qa;Zxc#e!dIjGlZ9A<>!_rSxIvpgDgX( zEKJChv-tKYS{OzBMuc@?xKx}K2ZX|7bHL~++ta#Y#@fJ-yhR^VwhaeuIHJr8eil{m z4`}q(aqCK zMS}GQIe~(F-2v_7Wkv#@r!gqpr+z!|KQk1hpcX@J2RyHo)QO&P0t&SC+gx;BPZ0^PHOy;ZH5inWW$8 zw&5;x3h#StsATyG!6Z@$^X8ZMMhQnrBV-+ zMmeaWzUj5qYW_g4=jlRR261$^t5gt!%rAIO#`B=2cdU@cvxx%XB3(K2DA~AFay_fC z_1a}6SVVm{OttVQ106n^be`-fcTFW1?kv!nJgds5RN`44jr5vTBdE>A9ASovdE!Ju zdLflugwkX>P(>oe9G)6CiedZSRPjX~`&FFJOWFCge1rDUP`gd;LSIGk@nM@+$BamO*B)Du%hhXSfh zOZsl>L%)4rF?%>}LE3cMHBFMzE?TC$Lo{S>yr^l`VA5$*FI*>~ojYwODzTJ$R<~bp za1o93m5H|QRmJpj?s(?tukPyEr;aRqMjY6;^x6;_=YQUI$7U}eK-RhtD6j7|?8;Fp zg4?KS#pb#N$HcYo%@}5ii`jFs8+R;D!>Q zTI!PJaWy&ABBNMvZ3UU9{hmbi>XJKiPl-H$XBsEJ)GcAbrwJBeQ1w`lZBX&V&w+>YS~`i0(LQ*`XPkK!w?*?Y6^K+L8A;- z##V7R3!-VEUsN{bYE2J%G3cg_ z&Zks7HF%pyVXORV0R+Hx&8Cf3a7x{%P#R4f(>Mf4D%c?uyI)EYM&mq9!nNhrqI#jm zU&jBmP~Q8amhD0HTGMQfrpbMqcFx{9h0Ac4=r(*C_5I&@MoH&9o3dKXO5bmFoxAPz z$lqF2B#Mkc_CY@oLX&}1^&yH2sfz7t-=s7yd;pwjZaiTAnY~t^8b~850VZt|JMQ;yQh=1THHsmjwMp>5PKF?tN@k>GaaGHbj*B zK)4Ly?0V6f5S@%!c?(7DgH}aarvNivHQOdp{D!FdQy(Aujx~~rgi=|;;Nq1$hNQW8 zr{&!`c9%(;n)B>rGDAz;zBDPtv2kRa3MdLrt|mec>;~HXc!|48_4`NI?ITgzo#g~J z)C54USK7j7SGIZi5^LQcKZ|^-Vwp`Ly?W5zq%UX~OF=V>+P}#+e6Wh172Lxs zPco%MBNft=_X)k5Hy2??ug|ZhljH*I#m%B-7A^?|?8Fds4spmw@)$fj-_0K0ABOCz z8{V|Q86c<^AJ0N;wF?g>`V0n_a15GiYy#Dq71{mIb#=}a^>Qkqt|`1xz|~TpqjM*Z zGC&jTCVy)ikw5|$OB=6G(r=6Yl`&1@$jizqO=gkJ%;Q2-pusCVy%tv&?(8qj`;_GM%0;n&(`L?cWOl6XZ zIH^n0xnRm=5TMe`=RgE=x=l;BvN})qHMksnG^#W8e z<-(UoT|M(mfT!z1UaK(`e?N!OkP45DSc9>uYeo3@Q3-m~gGx*VJbd)mIxSLxiICUu zPGre96i@IU)rKom?|+g03shF$bH!%8WA76uhdU7n|L1pw(RD_~uHCobyc@_LQ-3P- zc%N39#Im^P1-bH$<=8-W^=Pvi@Mn@Lus!7U>fWAM@TU0H zXs&Ud))&=d;|6PA0Y7!GK9$dvfoSe-~jNwSbz2hIV>F z)ey%>0x!NV+;3V=wT4oHU7PbYu^i(Bm7G=h`Vh~ZQ9#Na_Pb}E8HoZNw?0~4NM)ct z;L%P5p^S=utmu+Mh9YS#A4#vGA^dq1eg{^3tJYT`#zfOriLlU>INxK2e%2sqTD%|8M%J*#^-KNROrTt0dGAiK93w~VzH>5C* z0TQ+zmY&XGRGk8M!5iis=bim6bew_5f;CIs%ifP0&=Zif*;MRNIWIN4by9IQ?&GHg zx?n6ZyA?Mv2^CS#45sYd)ArqL1ztDx#<1A36z%5e=l)ERUz1eLa=dR#qsoDuI15*)v+8$xCoZBulTIyI#rlRpMwXAnai z`d?P^0Y4l+W<(F5ySK8xs1g*0H`Ho-+}$LieXl{kq}t{Hwy1aHd^?18P_bHl;$WJM z7ho#JCk3}at8~&YjOIlAqN1?`y)-G`#Yx-?#~AYp(-ayG0-Ayr4UI<6rUm5f)NS5p z{pX{$vHc{X`{~mJhH(giY!xEuxzTkdP=d$ zizzQGqFm1<`=HJ#w)OiVBVS7w7rtBRT<%HRri>k_L;{_9ra@uVMWxz_-$_i0u;hM0 zQ*l+D0^t)qku@;LTklS@_B+efEU-pctk`Sk-iP#*^RGgr3+MZ(6_Y7HS(Z5_z5HZZ z2Vs%%x=t2MVK|Pi)zivvRKUawF6QL#a-cp6*VX4x!3marSS~0+wrM3De>IZM2UY$j zv?~(E9wm*9CZiNlFNH(HkvFeY#;J++un)pW9%Mekd%nTS+OPFp>ajrby)o?Yi1;D- z*!6eh-EuAt&-{KaQH}`1T|zJ4F$TgMgC^(_Z}>STcx+&QR~aqJTCu z@Kf2?#(sLGl8>PdODfB7q?JRfpKbaeAjXT=2$F(YFxkTSB6hBbg0peMWYeg~dP8bZB$z2ACjkST8J)ph^Wm`M^F4SUR2EJ&ueJ36EHO={5PM@do==L(W_8JzV znUMW*LL=2Gev`+4ph*PmDunNgbwQMdPl7L;FQ=y5Zg)uPCPF@X%4W@$7uMwK- zzNGIz^IoL19Ew3+8O{0_`QLrYi&rs!23*T=EJ*_kLCjf>s})xR(nL&ptLna-vWxFN zrRzvK&j~c>Z7g2zzB#eT9_Lx^T}QykbUt zj9`Rr{?!#spRP8-dEb?*~y4BAe@9w;I38CgL+ z2PG?rwHC1C^YdYA=k zA(HmPfTE-q##bqOO)O$TN{Mh{qqr34KuW(erf}D+syc}fZV-eEGlTAtS^j#CpyDe5dM18L?J7*A{45vM+l|+8iQzhQUq+Zt^%#vt5 z>pxU|=L0Pu{ z+nRI!r3DUA8EdtgT`NC?gMN_|3pzKfIWlS2zn$04sD3(N1h#zg@iTTWsm{D1tgrG* z*i{{A%;|1TV%yKO^<=!C@06)7;Y~RQJCjS35eYH%3d@Dkl(Qxao_)dKwAp=hy{RW{ zUnOhf6UBgsDxiIrAj||25Fy~5zIv?HpbWD=znEs!#|>n88ey5hE5k56Lc+!1AYgY3 z8|GC9ZB(1`8nEOfJ$XH$M&)Yuie3z9ZVeAa)V&t|3|X<@c*Y8+46);GwU2us*JeEl=nUQywwsYNw-BcG2O4#>-Mi97 zOzMK#x$DZQH#NDKU?(cp6G4YYnwSW(T%%XlD}LGkVJ<=D$_#u`1neUT0+V3dMBXP> zBW-!huBwS)ByW>xot$_hnx2(a#>K!oaaCn$%XL~I_ip$Mg-;sE z#-XlEbT!Z*9C3+)OAI<5c4V@7WwvYuEO>6&o2pmNl)PZRjzT=L6_lW=e#k7f6P){~ z+WO&ZSkak4)zu*Y2g`pUq2`n$O4!Ci1VMEfcB7)Nu;uO9>p$|?$lv!)TxoZNZcI@h z#ZgcLE*_pBKcayO&HNu7Czp=)d_w&TAa;k5IWuG8n$z-+p$0n3UO2ALfZoXxHMJPT z<-nu!v5WQy|ML_MpChR)ZgYM{J3%7z2LS`K)cQIp!uAjhP5asjReSQ^!s(E zF?V>~EC@Xggi4-CAHGI1WO|9VY<0GIjPIK&HY^pecl;}>Zs$xY3*o02D7{l-?xtkR zQI#Bfv91sl{v(p3?q5!}6_8ikwymj5+aXCs?4ub>IEJI3Kd($hgp_n_Y*LG+OCPuR zRY1WEwV>aP7ELw!UEd{)F*}bFe*n!W9>n-wvNVxn-nBj(MK^y|t$q zCoGNrPZtoVF!5)oVVr8(}nalET0^g-Z2lyERPw2HIkK zWgTGV_kzhYf?T@ahZ;O<>yrIwk3eUF4O$WWJ-L_~6N(U_#J`9?_7C>#!u^*GJ`j1& zam#f$FX@OM|8D$g|J!Kw#=`VpBTsUM6A-HWx8m+SKH zo(6I)aBfYr$sL4k-m=w%?2(YgWgBQlw9bgSfG>=6-*R z(HIqyeR}Xx-U@iUgz^bs0(D`%RM)`KML;|qzs&)_0Qd+px-WoyjxP|I!hNxL!q9Cv zdYI1f1^gSlwEYP_Nl7^6qEwx$mr#fFq^ntEud8G+!(ro4Wdfb3I|(*pB55L-mAt#~ z+c<*Z$Sm$j_7U1*a&VIt4&QTWFYOJ>D790Qhh2w=M|2!sLRQ5*MZS9_H2!@yQt@{1 zYxWMWnU70g0VlX63DDr0=f!KAscor0vy1UGNzolx7hL=msFOuLrKvMrz`zBZhF9sR z<)f~6fb(oa{ew$xJQHdUv5Xb}qF>o^47=ELreJu8t_0LGLlqq%H+e?zmaOlC2+X$b zxYCWql()D+%@CVZC?jOWSm>pMbPAk-Ap+P06y{vQwYlErh11~PepCwI+Oszu8#Ot{ z1Im4`u*J`H`6AnhrZ2qsc9c?~uSoJ)J@uyE3GGK~2Fyl;pYXW>YpdejsQ-2X;`!!v z>YK^z=0)&dS(0wBR|D#og!eN#6WoO$C&FpeGq*DyTdh~RU)s5OXKkRVHHJOXm4t7v z{6?uCKPhwp_bjGQ>RLo5U7qhP+EX%v7|t?{^$_R9`enQf4lk)TImnL-_P=gz)p)UH zhdYDUb~60~lpzt`^?v5XLmBInpetL0SN*|F{h*?f@C!@$F0!>9xpcIh@bLNOqq+ZH z+OoVkrwDjy#Y!{3{IRv{b7GxjeJAL=ADD>@K|X~wrL?nym4S5DtJa7zas=SMY;+3R zUyZ>fRc#|%X-N3Qn=;+_dorCful0&4on6rgqRA7?bF}|t$;KLvoBHorR>7K6Ze}G% za(yo+q5r}PfwytZNviVqS_Y-*Xs84V?RnQa2?fuaF$Q&KnJN1H;~zZ!F`52uq|Vc2 z*}Tjt&tBK_wkZ;7JvrLhHR&Q$IbBaR8T^1;9KVgN*_iM?TI*z+t#=qy_@7f%FjH4P z;H&39ZIyN5f+YujNl8%Qt)=^AW>O@P$M?Ll%5&5F<(R`p4$dLG&;JB2wiVV_ zC+x2-I-0j)^|Jssm&GXsE^*}Pv!-gg&SiSbS(@$Kx+3)p@jxLd@#i8kS6W!Q@@H>4 zjhmf12ki@7C@PKFbH369bT^dVkL;FaN06W!=m~Fd7~s(R5Y2U9-!5UNXUR{hvo$%jm(XLIfTYVMc%r1CTi<3~|UW)jnlxF|Z;!=sS8oPaEdA?zvtr zQc6rt9(E)P?$06iZ;ounzkXP}mc`|cOQBZray zg=j;J7Bf6@%{I^Aj!%^fcMn#$f+8#(7oL;bWS`Ksw!K8`1lgzUpZk9MT2{8FR$2B* zH?dzef%-Ku8}0=3i>*o?#)ueO6jS}kj1oA3-#VnWTv3CCFHDbb?&#-k)K7<|au-M9 z_n5)TaxZuCo8&^!MDU!oUs3DWkab{K8&-bCpJ6=Ez$x|x^|ryCJpvF0T}-X8uaE51 zKpEqZ<4dnM0Cu271&r-gb;8eVqoecfvK^|M;5-Hhz zj9A_tYvyEYM2&+3PTIV4**5#L)u_E$Qy0XzP@UTW22hbSp?J(i1aTsH^-~9K$~24< zUUyB^QT{bX&+_Ui*rYM>*w&H(FcydYBLmCQn`O2GBtNe4Q4eqIgt=dY=pJL%ff|c-S#Gn4AWT& zMlKhBgyz&_2_CO4bNl?_{IaeVSu+zNLFcg&y&za86<-`|6!b~A7{<$T3bzvAL8gUm z+G-Ga1aXlEe;lCT8+x(s)(xAKj6~j@+z@Hk``yZ-wkH;-#|V3*_+xGrbUlff;#SEB zqDd>h1&8Jl$2BrZ+zrR_wRi;HqfGDkoA1^QvYfA7p;twTFywL2zrQV!0u8jE&a`OV zd)MACv?O~U!ep%gU!{6I+R;axO>*DEFb$CWGM9(cUUXGD~@lC{&~K7X(DjVi9hM4f+V5 zq0SJ`g>zM(cV#W{&!BFbJBL#x@8wHMNvAFUnFy1V=?vP9%^8iY ziprYJR)Y@o%;H5G6a(TH@TOmlwJMVU9HJBVz-zR zes|RG=NrSLV;#@&Wa|e0L@>N3`N7xM7~1q(W(9}+Ezz$fjF{gzPkQfejwb)M9c|1! zx##LUX{tG%??SP!T<;mQ+~3`RoX$t0dY>PD0I=bV+APVu9GJUL@jh%1+K82mfs5aJ zs;M7Xg9|4qM3dlOI<+_b9n?V7=vuIao=(p9p7vZTx*NH(=HBSH96L>Ovo7f-2F<+w zf8t3v)&q$G>bJH4^4IyQiX}))QJ(lfKGE1?d4BAJch)&!P4U7LrjKEjAJU0Ut~u!l z+J7pJk5=>1ia^@e6_WBAEgb$ZM=_J3+tQ6vJY(g->jmbr?Tt_HZRZfiD5h3VmC6|z z^Rf|(0Aw}#N-#${P$Jeyl9H$jBihRkW zjUuGRF1tUBy-u!Bw=4e9fJ++$?pWjh{&Z%yv_PF=+$y&+h4#l5a$alt&Je8z=Sk8| zA0V|U&2YKN53{K@IP{FXm-ftabab)HnKf&MuHPL%D|!O)6tY!GN$3W_u^?Y|+!LOwm>`GR zWRnB{!i?}bz9iC*@HSz_unhGqvYkIObt4rFkmS^Z_ktXe==OAgm*dLs$};{mBq7W9 z&h!2J8D^{)ifG>K^E1_o_Plg~lLP$D`1g&Pv@NEA470@O(rI$KvwZwQatdggl2?W% z$Gw!tt9|>__}6OcAJ&8b2{oNYto@_OiCp^ixzF}vN{`2+jCH;F7T-}7s?ggi`0+Bb zBh(aiY5+cy$z9}&ukGuc^uBMO>FCTDk~;0^5Ul0Nrqr+1DSCJ;Dd<;=ggxYGj~nIb zN<-cbFMPl6yeW%_lTxJOKhsE)@z#s*$HIo1#Sz2@SjX9@O-|N*fD>$Ai$6`_-fk() z9a!o@k@JJlh__v{yX}XU_Q}NidJ)@jY62YYH}#m+ES@P|_rbgcLbSk-kKpMH8>D|T zX}K>HN2n7aASm){31JW_L&3>xBZgI(wlaxDBU6vJo0kFZ#p1R#^iPwkXr_>4&%odlW_(%4 zm~F_aEq?zmQ|A1(tW>Dm$=~P z``CTSmGCkBLid-!m%M`FKPvRN0GiSI=D!$t%gjt&f1-ipeMjHg-any-TtPTX%*<^o z=&QX~NfEW@M=dKfbN`Wim}g+Egw|P9si{G0ohZd4ZsL9U3WFTVhW{0=<3quVT_~U zeBDgUMR6@7a@<`}Cxez%mJV_C_vVVHd;9*elYXa`sCBj#oAH$M#Ww3l&5Q0lbDfv0 z!gPo|q0Vss%TUMTe>xf$Dn!);#r2!@1yE?umOr6^iM5>Nogg3qWjV}3Wkk1tLckXh1u502a8*MDU zK=Ct}@9~|_g=_Bm!I1~f;1hrJiV}x@=U}3^64_I+KBGzIM}ZHDKaLAMpLhK2_dgwH ztGfBPKet>Hixoa*Dl3o({Sb|1hy|TK0Y1zeuwmr1-Izr8$dV`&!k`X7P?Eb$vVcDA)h)x zvR5 zW|u}0JpS~hVmB;)o=4eY?Y^ST%g6^uUPs>0e?!b1*%oQ!+_1W|N|TS!-0QKG+KaW& z%W-k!X|&@l#vrXb5S&2Ub#2k__u6DoaE2eiqap}>`*84yPO{ar*d4UoYX08BvF5VJ z!wD?;b6|U+7$Pf|;5y+=PnqjY@H*EckmvqZ=+6uB@k=?<*95~~u!N7$RvYt3@VJtM zkompgcw9cL{dhkjeup~!IvH&6MNrVUBIzT1h7z_^TMmTW5yxK!K{%LnH;R?YAdp0O zH(EpgU-OexV=vq}z`q6!B#Ku*c>EOnr;52B)^nH6@4fo{3-@Sy_i@a=4aJ0G>AVbc zJVAzXB8xJ6MS^sSwmExc68Dp-cRbtVHJv$K*ZZ+9KSOM0)X?h%tSpA{Vnk11C-sGlY?l{K1GZ*mqQ^gJ})Su-0 z$lFZOt*Xct$z}yj3maKlLRiy}CT47#f2zEoI^&x~)(HHiyY?KA4yErU^!H(2xm|XL zUhgo67d!}fJykndPZp5M{464nT?0}$WKf!gIP3y6GsbG`J}$2xd@t~a?P%8eH!*`g zb{{Uag;~}}A0ji)Id@7Gvv29g)5Kk^H8q1k2KCPkRO{aKelU<%cnvOYAvbuM<#I2| zjQ5A0b9y=Ue~hQ2nEQ8+8F#b#jMPI|C^J4F$Ok2F)FhC_T}--fmakh4PG*HVlS5~} z%HrV8dhCjm%WsOj-Hjh~87rS;_DT|uc9oNO)L?2tA- zHLCjKNDMO{Rt=57^yO!O)g|dd*Z(jeo-aL{L0#qEVI8n;7$XM^>d(59!(N@vHs8?) zMs?lp85lNfOBZQOjmy(Ijd5fhXEi`hpXXjrwY8kim;O(shL64EW2<9ilL{gs;|d#l0p8XcbFN-+24isbH^G}p=uKVNUB zmslZZf|(BBqHdnJ5QWk@v*%v-n<8#_e4vit4vM&pv3>4ywPk!U5^4B?xSmC~sLlEk zwc-=cKhc@7;OHOb?Qq4x<9}yse3!-Fvb{cf6&dRnr7l{^Zaj9HTTd1pO}px){i%b{Q&(RDu%ZRCKnm zaOhhzf^zCJH2v2%jQxLnYDaz{Jf0f(kmdISYJ9RsS-Ud*asz$LICt`P91cDAG;mq? zKGnoOgPbF!aRbFzj!* zmeJ0{B#|J~3;T4Q7Z?6}ceI}t^SK@SQL9hx;%}b#;?KP2-O-F!QdJ6Kr(&*l(d93A zjg=(8F!{4YbMbjyfY8FUbY!`4?P*-${AIV-Q>%V{P2reQdRLa0c=LQhK@qgdq*b&G z=t20T1Y(!v?T6PwF3VW()4AMB)y@-lQ|YyXwT53ae%O6@Z)LEkKyo6gtd=T^A7URr zp!LzaUxNgO>#5AAg!^eV^Wht1TW>0>-OS+fd@1=r1|_~-TFYvRwl>yuyXj}4m~{*f z&;^po%f8EJJof5f)S@D_jduD{LA7qIJRMb5Ru)`L5>qjoJ`gC7S5+t~q}n#q4}C3U z462&xXOkM&!{j(7L=oKdup0(Z_kRprT!9l*uKG^>;EcU%Ba!KUJ-c$!f6X?84OQk& z&t5uQa(_*_+Bo@Z1V4C14EOQegDGta4!!gOW@&%FFK-^t&a6nt`kN${(pY&lu4ic* zw!-B3?MO+da}R!oWfsZHOOD2?IIYiUb|=St$o$49)DX#nOI<{s{P3Md)X6W)SnJhvX{`po{W@1FKoBHl7p>bFPsjL5WrhwP zHvt=m-i0^yjVCno+j|QK2W(4~8dXR84n>|FT@0rh)}zNwl~}A#I6BJXU9ls3AhP;a zR0fQ8+5UUWc&y|`$}0RtE*SV6ptdid0gEJv%~?r$p_ZIoJo2n0ai~S_d?O} z5~#$!m52V#Imn~y4&M|1mv@EP7%)(>d7;YQyNy}n+4tDay%n6ydX@WFn~Z-1yhz~rh`6K!bh^JefQ@50t$1X`Ge(t$++4KZwHHo6Ky~bgwGW`eqEzCZd!pqG-Nb2} z901OUeGo@?Dd6~Osd9wL5dSR zziYmy^btq~^8orCu$XDd5UYedxK4VXGe7(n2+7|73#9t>OT-_`*pvQ^$LZNQC%NPy zuFH>psxZ77k}7EIHh20agBLnYLmvFz!-CZR@>?_F-;5?aFp_5-2y1IQg}EaucLxUZ z-+V=_fM=>-b?WyQDZQ=7FDmQ7u!I)4W)`NOAsk!D0L7(&dY4WAq z2Q8pqfmVGBvvzm1xd962_E+z;gNq#-s0`2@=E<|%1{$tTqE|L1C64|4jzO#5sOeoq z7ive*0~P+r*k@Q?;I-vjTRl}xuS8%vah`SUZ0PyyRwha5aLwk6!C6I6e;65JptN zU3bhYuZGnnS4nd(?H$@r6hM{1!c{kp|7MO2s5 zGKc%-ab^jJa$(PAf&8ZJKt%DV@cCw<=Y=xcN#PTp+(VR@Em+eRBqXGEUh9dS9n&0M zj~@X0C5>|8$R=h!3!bHQ3H(Car)KZpKND)FwRZv}QG%QDAO)s`XKbQHfmcpa#Lf}% zoRc6<>tFQWz%=Vh^^7f+=%?~}E)y-2@I}PLcBl8@##d2)**vU1^W5<8AHw;M#Ntmlx2{25XD)1-$E*h>@{jYhuTF)u`ybxWWVXHIY z_TsfNjM^(m0#qOzA%UAw$oO8t&v%dxwMr?uehg?!qANE9k}bOmz&Ki7;i8G{#dA8$ z{^;;nSCLVH^TMpEatnu5=IZ=4`+*fM9Ti-x#C_FHmVvQ7vxMwima~S^Bo@^x8Y3{E zs37@}JpO;v>^)_{gmW}~t=*O%_v_ZANBcsr$co_$MtudtxUC4+qQ0nt<5OGD9LuO? zUV0ckVJL^Z7APC&=%eE07njYU}Q)zs%U^A#BB!=eAO za-ZUpjX)2(kkX)^Wb$NBs3S+H>xd53C+U-Dx`=YED8Ot-!1R)q#Rk2iSFf&~!%}o+ z|IRWOX6^1$*SDMfoVF4e81&d4W^-O^ncUdvBedGB2hUyQX3n(HYi`q4Oe;F~WjCQG zcZjadJ%jdONuS9lC*zK{%*e%0JZ zFl?B5FO(3hBZ&OYj#uUUaQ1Wp`t<2jP=V-pkB~%c3w5Pe)^uh}`X0IhwokyKQ{SVk z|2kvrsP4Tkp-h;D@NroMnk|#wuQGU!-9L|z!(Z;26s`vfCNPy5af9M2xII2DG5`D1 znr%J(_N3qkAc_jmL`6q4Vu5%9kwO!`Wlz18YIq^UhAxqm^k4G|9zCo%=Cwmh$oxF4 zfL+FZd|N&9PpzMLC80=|Mw@!W{96l)KnBRWmzhPfM{dG=d~4_MVwUk2H39g7OgD3B z8GdTf)$9?yT$7v74u@1Jj*Mt*E7%JveD?aquIZtQWoXhFYElYE*Q)1>;vB!Ipe&hO z)F+=HM>0>rM;r{Qz8Leo>Hy2is@jghMDVwo0tfK?K$(X_+rdkqGCA|e!t~xRv?edL zxz)LJ-9mysv#O@lzWd2kwq#Mrd**i7o0%P~b;d&3EnfCfPLe*PEI_2YK|>_GFjgcY zI#zN5tQ}-vWWX?u86(CsC9PDmqKK2h0HG{Hmw`BfhAgW6EzW2@s@HXvH!l}O}69Jso zy{#v6qQ}>dnl2Pf^WAgbHyL$mVgZyrgmw5dtD@rFOGQq(E_+l*-!KFzc94*5yf z2Foj54WT)HSnMP9DTky@?@KCgc+r6cPbZ?+NG{J=g*TVrkD%y}+Ob+ZY};JW6Po>B zZ99PJVf!8T9RV!If6Q<#GQJ%oH34>1lPC};Pe3VN9B5gUv>8o#hAG|6d#+ugeHDF% z^gH(budMU5e&1wdVfoJO&=m2Y#`D1b3Y2ROgMNzs{{CS2Ck!nzuwn6y=6ddrCe(gM zn4X&pYU4dHC`~*VD-CKc#+UAcz}bX=NTeSxnwW-7rV7HV5fnwyDI{}qA5%2*D~U6t>ljEj|u?P}FfL@NR(R z^pHv}UwTIFQ`@Kik=OA(*`gtV9SDWvgWM*+fL=3rT7+$Fyu*nDPV54b@-_ zo#+LpuV+YlLFYVIahwrjQPm?3vCGH}OdaZq3MPE?mlAiFLicCZes>MI&iA)S#L|&p zYA)DOfILc!RG}q0pLf4-_~p-Lil1jP@0HnZqTv% z2P~9-wr#^!olE)EB}*m;zV@z>$RxOXIn6Q@OJSjLLbOEwt5Naumui@2QMM4tCZII^ zh?{$Ry;8URQxVp1Ax*z{2C;v#GBj^s{9|*I33T4h?f=|AXOBpbuF-7x*=;mBHijQ$ z-a6$WC?wR3bBUtBoNti-AV5;j-3L++?ph%BUI{LoT1f^7dgE-c`A+q>{pbj(ykM3| zm!qL{mVRj|X1iBKSe{yeM7qfaGrY+w@2JAmGMNWIDUY3(e1z1fuw zkpg*m=#;k02uEpN@p_8sQZFFSwVUe`C0yVHn+GSEMDVC9`eMiEH%RLxlj(&J$P}=D zEtjOwN#=gj2naTbiIHiUneYm(nswGWJ%iZD6KtTSC=_MO+B2d5 zls3<+QInqE25-i}pQ{lh0V6a@L1hQGDrLszW=RhrJw^W1F27Bc*K*wC_wN|- zD!h=Sx-Ve27aEEa)+if^*oYO6Xf)w| zw>KAbN{k&6Zt>pA())8m;t~)33En7TY?*&25T{ebL7SaBiVHyB9XgHTbpW_ju%G`T zukq`B?Yk@Os#BjvxY*6xDz}7-lRW-cst&EYPnYlSkcb%f_Ml?bRF@ts%Dg0txx+V2 zGe<<#EdP<>?k}qyPe5m4GMH?fu5C+Qf&0~R%yIwYk)Zq@ks0l@m$#>;!3>#9e8J9Z zr4Wl97AOf9MiD{040BYseqb;5+viW+`C1-v7=M|R7{nj*h`=)C3j7$G(-Wb2z(Vw+ZM*=C5P~tlMv;woV?Hmhp zItLz=;A+qpLch>_VD{fv@)p%#*mbAXiQLHL>wL?~Ccf{14y*k%qd$VK!kBK@iOKb1 z8S%B5ugy2-_5GHH3G#~&==MZw3V{Y2#RoIeL{^G@rY?cbUTycEjczI0gnmYsZ4 zvp%i*eDkN`tn-GZBctuJ_4!F?JZoeo7%qZ7zOwk(y;)zJr@DN1A^CP;L-g`Tbo0sI zIn&8CfHa&A>+lNE#x(!z63EF#@nRiab5US+LGLk~6|cIcax2g z38|;WJbvlpna!UOu+s{5!+H-sbE4x;WM^vmQdc)%>dISvzrZ zjIIcA&i&u!QGET*W50emY{PAoLoxhZHZ;GlHPygRT_@pKsm8sCTu%|6_EnkZqKKCE zz2qA6(UkG1=udl9^^={7(qV$wRR*IRBY1T01_lO^wD!L3zl!g*boJ!P6fli+HlZb_ zWCT@~a}(JQ;btFEu#_ux+w2yhKzHnsSpbdpPLQOv1C2tt zZE0XOnSOskNTKaXW<_U($RENQI^HVMrL|?hAb{1r-WGCGRK~t#QJ7A`rovH zDv~)wZ>5P`$`;7vV8&U=4u~AA*uAT4AnYD`hg)A^HuulrW7$t5;t({_Y=Uui87kG3 zWW)XQ+hQ`1m=oYi%RORDE{N~P9B~|~9BKQ9$I3q1+t!DtT!!&}>rotdXi2LSX=CQE z7~diXOgYpO1i%A+Y|s5~P z|B8e5uYNykcAjii{C*(Re42v1C$=&5ee?tsdEa}pjAW}a>F}y?U$EbYwm!fFRlIjj z-Mp$D7_~$U(#oOJflK@i{nZ5QAyX0N>HOR-^)KLQma%J-cmHnRFSVyn`d;vheKQwV z;h5&`Lj%2r_1t9l30!n}C*V zIh??XDJ|7D(<6NJR7_k@z6fJrZ~(OBC;()zZPQ`H9U&S@&eN8AdhS28dW z6_%$OWxu zVi^GASIhB+OEa=+mDQD4++IJT{q#$V)@O>7-l**hSd_tq(PP9fASr6!{&d=M>EYVi z4!s}tUPii6Xnwrhko0=ufBluvENbJ&+?&w^*2waT1oM}2yPvI-h~{3de=SKiwCrfh zZ`xsCf%satiAqjhRKJFK-_snn-)hi*zefYdg7|6sNUm}S#$>E7Qgm6m?dK-p3W{R+ zD#m?{w*5k|#&W)X>y?gEAj4&~!@ZU@I|SW{Ku1qtJs1G(4qNx1$B1qlvLtMcrjYK% zNrnFFvhy!WGMO(ZVL&yf=Zb6T<@gaR$&&?BS*B&DGanEdiq(aY-yDR-B~+A!1x{5q zKKSYeqt(--(b}n`d>0%Kq5G^|zaCyM0&#tTEtEjiQnzmX6 zg|Ct$r^Q@5jRPL*C(&Y^YkVc8CEt&7yyw4t!ilZ&#1y6Y3 zlw(?OcMAE0Va7N`wRPkx!xsm%Z>#&_ulaW7PD76V!2fcJA@*SXNB$ceIJ;;QTVBJma=|(CIO(t)fFLL=qup z<7SspnByW`P=D4c%ZZ_v&M(RzT~3QrEs+EqY#9(Xb2~p&-xI{-{h8+brT+tO zL6E+(g?_)!?CcDS7fqs+WbK*9E#2^M-Lm zTIB41!2Z1HO~22MZCm)*NB@%b>mT(S$tCKpX2fIuty-7aJ87VmufJ9x+2 z-@)=_E09w8%32&_YKP#es_6Inbh}-$EMsPRnu&=C#>dBfwFcNRwG*WjNfNVU(ISR} zKIve{$`$*ua=-n^vy2@(b}}5Muooq1bj+g@A%R2&L{1@{z&QarAQ>NLY{d!|A9x_m zrAtxmHb!d->!>OV#-S?+q-K2C3dU9*Kxf5D;>k&5lHhcJlfqXQ>v#76+@YOCTSs6W z`d`_U?TdY}FaG0(n&^zZPoNOOBAg_Y2|KrK;k>h-!};f(OS3UaQNfANd=}3-@dUQ6 zU&p$257QfF6i#x$!H049A*&hg+QM&seLKc^=`$^*7ufs1*!$0T%Z}>68~#`AeA0~_ z)#_HaIw-ahN+=+qh=ejo0tq1y!C;~dHaK9gu{{IMY3wmzlEHwa@EyW^U7DefvPn`<5|Do%}#*;1ybW|^C5vw#0y)~q><>#u(~FFNM}id-=~Jj{`6R&&yc$C1W4Nl(%1 zbTKBQ(Q1$unlsKggA((C0kH2>ZQwOKW3r#`6 zhU3<T(*jI#PxlxpqBAu3f|Q)C{|K?q&b} zy&SQ68P~u3<(zTa*^CU25(GX+ZCKB#FF29e={DWD)TWph1&;3$)|;Gg!U=3R@<@Ew zVa2j#tXjE}D2kYCcTk!^@}YSrG|HI9Af=#C1{{}}xmo5qvmDs9o2lJ8VS!qo|l4qQ8){A)8ul_2>oqam}g9mx?neBACF)9b7Lp$y(*`H*kg}o-@bj^d-r{)Tr)d6 z!`3ZN@#6E(<+x*y=i!GQr{7EPe3vXu${5WhX5|=D#ymFyMn*??&FgRDv@=daIu45# zjq|eWuH&`0-pa%G-_H+j{~mFo=)}-&&vC@6aV~oC`K(>Do;WL5wsJMc9CI`qk2{iw z@BbNFAK!vfnp7*KYm*$Eb;g+-fArDlJY(_L7#r5Fr_pS(Z~p;=bpPG{cY}aJYmg2{ z9dit4pM4IUcANWu_A^k5k>M6cu3634=ooWzb0kTO>w2`?9cHGc*|p;tibB!t#2j<% zQ7lRUMJgpJ&J z=TCXyXZK^YAxra8)Lvi@E&vP;5a1w%q!5B!2=IJ@RtvAuv^f`)vOYLzila0h;3|cy z6x#7{mmY>}HE~>rqR7b7J~~fvbdH0wvYhXJ?c2;w_c-dPjr`_szn4#c<|Ewx-G3qJ2y~&Do7v0Z%a(BU(fk5 zPm>jzwHuD&s3TW1vu_7?-FYY7R3lxVFbL_VIhg^+kp!;coHNhlJKy>ik3PDI9lQ1t z20n{No6Jp2@~?ONE4_BYx^>6$?qB~^{^<)J=l1V@5Aul6^*OkIJ4?n!x%|>A*}7#b zd-m+1o%C6K^m^8>Ig;+)gFLxuGu^}{>~YFOEO}w=NF8D0)q1`U#vruDs4`xxkVwa7 zPCS0&iM;Dw@8VOR`Xt}{`qxR5KCTcQ}zPm%jKVwr<&0 z+DKZ5rTGXTC6u(k9@$vAN(#~}$9Fwcq3HCxpfuNCaTRBrcOK_ocmXrh)7*2{-K1I0 z8E2o(`gQBL|E_yDxbFZ;LsSbm`@FNMMFCGf{1{I@{uJ7{6bA4G+qXYOBk;KT%B#5i zmYccg+!rGZ+VsA@8_ru$8p2;H*(c2*K_%m*RW)$#XWc3OMAAD zR+?JPr`PXeq|3y?2{s;k3|C!o1?OG%5=Lt^_U_%o)@@H)F}o7XO8qEeUihws5rtA{ zM^Y4a3|-eH$x{yO-N&o1zmYRu{9?|(@B(J1r@8m;dq~oZ(_Z*O)~-2{hwizLi31a4 zSwU;4!3igyz^cPnu=#;U*!<|@DD9AGgDLTEhCbI`bq$xl`c+(X&iTZ>K0mwfXVhv< z;<(41cUs5Xt6dxUUKnESUNV!oj<*c&YX2PH6|x73X(#zf8TyiJpMSY zzVZq#xaumF4iB+?`*xmsYAcjkIjNG7n1PET2nhTDAtV~`0uM0cam@1ZMNG}iF?QGr zPTY7LChhRZ0}qiU(wbn233RrPLY{H&kABF; zWc>D<*dE_dd*}k1kk8Ca@0M(eBnqX@B zAUE9b3ij=p;?YMo;rkAGmRWxdQ*AEGu`Y#gBftxM5Q1y3yOvvC^(wA?^-Y|5+(!Q8 zyWi!HKlEYJe!_u+(?pF?vOMMBzU_<-w>ay}v$_0LH*w|5FXxowPhr=Nt$hDqZfDo_ zUF3N|)M_v@*Cx+32lnpg)RRx*WiPvq3opBjn&+@>+tcjde_)W5>gV^r03mJmO(8h{ z{1+LX~%Nu)t7O@D{kV(*WJoBS6|D^ZhbXJEMCHW_ubFz>?}bL62}RnqeFDs zU5pl-cixMLLWlc*c0UL9Ptxo3a2#h|07u$HNkZ6|;20a)v?$0`!T9(%x4rr`eDL@G zfSYc;mNQ>;GL7+Z&bj1LZhr0SN#|lVKe~xL&pH2s7jxcu=W@|i7jxD1*YS#*Z{hk^ zzLJ;Sb{l7(coNU-*v0NW`v}5_B(IOB{nIp>^ndHpZFk*i;I z4KIG-xpdldeD)td%~!tkW%lpiPu!1@!uo?8O8csFL8BEKLm>sZu~Cy8&qEkNk!F}I zr|9)DX@X}Az7$BKFe)Pzf-H#8fXFkl?i^WX4v{A~rl892S?S*gQBb5rNt-G5dHDYg z94c@h`u%x$9{%3|v1a)SBaCa~jw%l)4{b65r(0(H3eeavRF2UEIzynzg+u1JWYR|( zMWg8AX@w#J9E33_;gC4K&2UGIL?MjTEEufwrxBLmI7Z_r7q_Tm1Y};H+=0T>kwy^e z7*FR2EQ3-)l1rCddPt+F=?;$86e1k7R|%I?`WRtwO^RcRQmZQh0Xd| z;a|?SvJdPtN=O?gTqvZ`1WKWWr00ehp$JVIPXW4V9oA%umWEseNFz!*qR1r}9E9;v zIAjh;6tyD5F{)fo4jOA8?O-FBV60}=h}5PAH-0%^mBn48Hnf|H5XM1>!mc+h5XK5K zRaiGIY;*}N%2RA_Z zD}38_RnLf0z?TC;YZI$jQQEdwlqUeLw(Y9~TLVZmp4K=<4BBdhumXq#M+eI9Cl#{EPV`2fzsGh4rsM%xl1@BNM2pH63?=PIrhn82KYR`Wk zJXn1i+!=fm#tx2+%wgXWSX`y461H366RZGQF%*HoDcfgRtkoci!H5Y&sd3Y?ux3%^ z)77{wZ0$hU1cb5WFT}&%v-3}gO0#I|v+q{vqO0Tzwk1^y2h}ZjwkrGI#@`C-zliuF z>5u3;pfm`rnk}_;dSTU=w4NcdP$x4^=%` z&WFLuFUwvSXSzhz;yORa2KNThHtc+{RK#uq2KMviTB!Je5u&8&MY&1yY^>{Q-j=vl zLiczQLX?>=%j8xF`@DTF$J05kQP%XN%7{$GHw9WQ z(0)rx+nqt5KM&8t|Np^%IstrmsQG@d!lSDNo{~7ml5a}{EMs%aL?jCdU_}n?KD`od z?ekOutgytoyk&*%1@AlB3MKXh%b@I=Hl?}|R(SPH$qGv07c7@tNKh>sDp`@GS74p= zOX6G#3nd{ISQVJPZ#M@Z2by_A*)IdZvcy;jw5+ts7AH@a47y|tTH3Z&WZkJW)Mdw8 z22+v$^6r8@9b6@Yp%mgP1~}M+ED!>1H_yLczDC*PlEqcOm;YD&Fu1#*;|>9P$8K~g zQT|z_nd*E1%d{;5^Ng|-K1IbS1@=Tih%zm+Kx)t4mwBn#wHqXda`X4BJ}Q|lR;#%X z@3Kb*&)UwZSURQfRK8!KTnT!WFk2R8h4*R>SLOU$_*XUjV&YGUmu2>q5K=+4{;FAG zUon_csI@{pgY`SOUE*Tz*;QD+j2sBWwk`7;09#M{g0lo|Szigi!O8Z3B|FRTtZF{ORZBL7`T-%naUAFvc{!r3^0fQTir~O{- zTkIx;dCFz%I~HfF%`e5o0d29RSfSWz`>Wb3%DrITE!cR73g5xZs>&*Vt;}>pHRt9} z73W)C)-D#(`uWXIh0T0>s;l~?dccO`u`|fd2glgcPgy!mT0Us!gf-bIg=%32{UtFt zRb+5sPe7`5Jixl#C|C1fP+!Sw4r$r*@I3sdfhw59zjgg*18GHziWrrqAjXu8z%4Zm zr2uQ@g%7LU!tVC9eZJCm&v%ot$BpHCqS9^~(857ulkPai;Al&53TY^$Jw~+YzfCEi zmq*4`OG}1eomLD62Q94jd!DG;`knGf)-nKlSy9O{af_Q}QZ@y*#t7>S<7tCqqxQ|) z;F-!O!D_!9tGKYte*uB4+BwfYEbbD^xDEwjuneT^Ys*lof)_HXl2Bvo8+;aJ1Inu! zQ+ri}zGRwMVPL+jL$3*vPePo&K0)ctZdOO#ulZ`>;3)*RC>LI;V36)h3EM#`ojq#a$g?H_=ov&+NGi;x-Yq_EyvaF#JzQur!RI?IO%|mLMDcf(y$oAF$ zdjD4@5LP)+nq*WIp_&`ddaJw^Y_h8j)chPO+jmIagFY0N7TVhF9DQyV8KkkMNLA*{ zO7mUK*J|8FIo`G%mDpTu*~-4fj@tbA&f_vD^U%NLCCfQJ`2O>rUHHy?sU;?MzC8P~ zgC&fm_ijn^=bzLVX-&qoEHJVdoEQi!|FG{E1O-MEXsOUbm!?nFfXMcN1IDJEceKFM z;46c#44$(6@jN^a&%=KXuz^QQ0xL~vs!=lbfj&=EyL&Sb2pDK&D~4*Hw_u62C2ge; zS$?kwVj&y~=|H7DC<$^Q1-WA|(h_u63#7KDD1`u3X%qnljMtR9hf1unWYLywZ6YmB zluW{I02H=<%lNH^sE~rpF=%PE7p@k#rnIHDy=6-l4DhM!98Dz#l}=t2yR2Zq5C+Vt zBK-3VV7?^VZ?=@GoU-q$_Xd9}Qa@SitBQ;8mF}iGiJ@6;z}(XIfx)?UWlk%cv{!0^7s3v<15!Q%>Un(-ozrRg~?u z&sOcJ1eOX+_2VJ!Uf4HQa69z5{|oV7*tWq8sYZ3d?+Y$l%|HyXm@L@L+Hx%3)dpUa zwz`!dQnj_B7gcRm7^`rbj{regW`*&gbFlh5&^it_B(~h@>3K{oVwLbcz`7Ld2V-el zW#6gB)Jn+D#=Ww&E`Jk)`&E0YjfGvacB3@^-2Y1d+b>q5DwyAV*sH|SRHY0`JLIzM znD4`d!uKI9DW9w6k16fuDeRGPkPs zSp4Q&Tj4vvuIjV0o{AeR>~H(r!nrgLhEl7u5XwRg25AJolK6$Re8~uF5ASGF_t{tB z*yK5~JX!V&iKp$%wn`>JE(N(G$)!V4X4TYKUk_<2;Tyuj`j!MrJ#YX0JUkEoiNLC{ zOTs(P1WU$0h!#Mp*{OtSD}Y-X-Rzfe^m19+>AyB~%~nxY=GS`Qf3>dNvGx zd^W)!lvlQ`y0?JO4jvkOU+{T;{L3C32rBb62~)D<^5n#75X&;2#Z0YsY+m>+tF{#^ z5Fo0`t2t9vR6!|B4B(L8pS!X7zZCxx(dzx@;yHM#LZSS-0MP|7nDK+TIKLsU+HHR- z@m$dE>h1Y|)e5dQ^v_;TWv?x0gDFpS=8y2JXY3>M@0O3-KMQ5)>WP8CH?IXB;Pk9@ zR=r^sIPuxm&6ibadl{TURAW59*(gie8{h>c{G`{t7lRkEO%&Fet&;zM7w}^TPMDv0eZR`)Hx?UEUwyUG;0Z zP6nSBy#6foo&)nwRvTe+C|y95C%=`SQ}vuRSybgU$YNQ(W7n^P&{nXvn{HA1AK8;w zo3h@sZluDooJ)uW=0|1!J`c~s^YEVr7M_N}v&c|IAQ%2_o-EqV*PB!QVHf3Dspa*X|0yX zAjpM_k^(7g{l)|oM5InxzsT$BG@GX|2Jv=&w)c3 z^q}mjkO31NU|2nU2vjwf<5O`gfKmwmd2jvC!lAWR-=Br=f_{SeAFL@+)d0(|4W<2V zRaSYtZW*3sTF>5IEqIpaj>B_XSlzAW>;E1cTKfML_#0c>p)=A{)9R4N53TFjV9Thc zRkhNqRatE+20cbOPj9Nb5^Xi;3zk=@$1Sm|TC+d^|KIF?QTEZoldSorJ>TAic!NzE zBd97`SoY7Wg+t!AP_?ttg3oKi4TehS6a(k{!8^|?#G2y_Oq2$KZ1v8eZU6Z&zMB}QNlT>x*I4IayZHjDSt=xjbTGofR}Nt= z33CU(aB!82qdYKH`&|f^T-vBfnFFZ{iEBtbMdnzOmFMAk_|FQ5+I$~+{bvJbwAFmS zB_0w-+shzP!a+-eks1eur!@jm?#?T-l#&URM26DFb6yKlF&s;j0c%qz6`*m9gVa6- zhr+R11cAae0#Dg+afz3qg}^HUq;X5z6t?CyFscrqz7z#H>3xO~JLc3)&3CbGgDY~#|!vZE%-M7b~_Qy(lZ+|SiWPzj6 zbC^LXgjDQ&pj#62CK2gR8VmdQ%-z)StcxOs5DU> zXP0#dQ)K?pqvvzgD6THU#~>dnq$~w-HN$eMkj>9!6pc?CLATAh-XEM znD0YT)>ZZs!n!_52PLeNtwV-HmHk@^1C-h+QH@j8p_SP}S%a|az}8*%T7^G0VTlxzz0H5E@EdfepiD}m%JH>+C-XvArKPOgk?p0V zHDOaipoKw}{XdATQ)yL8?Qn&6wZ;w1I}TR!rVN*99li}_(1-(o`n}!unASqQO`mV+(bxUjXyv3t@X!Nl0Bo>S{7qQ%K8WD>`fh`}UqH*^rH(ws1Z^tN8;M%;P~B ziJ_jgSSZt7y8z^m{p8=%dvv{q7{SU=&?6NmB>ki%8=Hp%p4i(JIGrB*thQ z1it4}6bh{k+NSiw^8%#f5obAG;E`lAxIQT5<50sE|)2&Jaf9Bk)TBTuV@%Lm}tmx>k(4 zI<^-^GuN3zxDx4kw7XpbKO%4gRGd@uLb5DHItC#PMi)2&94Ro`rh3;}Qz#9>0qLR; z2DNIgb3WN*Nb11aU&ev=-$ohReA?%!V95j+dfeGqlZb(~7GGC%qhoMlD z#XUSPAXfrIm4wLH*y)neR7wvvrG<2uOKnmO;rp1P0Hu(DM9G4@h|v_tnnx#(F@TGM zE}$ON@eK&2FriQCK_+56Y4B19KXb`-M(S!hIwX~Ka217~L(3e$9unsXna&ZeL^zVP zC_qSpAV2_l91}PWD$9@pG?HGXaOzERKVV7~sK^7=rzQ*Xv`Z9*6iT49TW*$0Q!r^G z5eaRD63dkArd$ilxRunX1wvU?XryCfT^Cu76h4KPXzAdDA-yEV^<5AJUMNXTO5rMc zSxne$Vtk)YoFZ|oP+M+(w9xpWPa5}W)M{j=Ad?Q6tTUHdIa7(8$@UykvxUxcM4m8I zcR(i~9bB)5V?12rB5`fZX~#i166IJyHqTQq3SkP+ib7=swSWwTb_|+~IPIc6LE#9} zyufz@A~zy*LfY*f!g29^pEOO#(gZ*9iKQm5`Anz`9eHRIG2+k&*O!;Dq4U>E#&;P2hX@!oets zD?Ln};CqTf#>BcuPzzB;k{Us~pWrwlo*$7>AVZfd%keyqZra1Gc_c+jfkt{B{UpTz zVHgfhRtBa`RRDofv`VrV?Lto|`Vq_qF-er8$Z2^Y*<6RnlnJFmkG?WEZivVg^~k3~ zNcq9ci_OJ<#fi7=(#G~j5Y%1g)ZQmA$e zxdXYQt!X9&dC@1$dUikKI>b6B_B8z=!CaUyTg>7`4!Kqc=^>0uEoj)e=tvY+0M0__ zg_zys{|n~y7U>a%Erp9cbwg4?K7Z)-iw4f3dh7j;DK!SArqYyKIa!)-Sgm%s+e0IzP1xW%E>cRA232U% zEG4SdFhCGSIF8HA>J!0${2jvz;%4mv`-iYgnmS?-@~||RmMmZ;y4an z?NG0eqLKpNl@zMaP^*sTc~;Oi*dtE^S(;L>M<}JJ*BeObFg-Ivz0pKUNu0;vDx11p z`MAO(%VKKv2q8V2wbBDqWQ@2Df#)-uYFeX9Nct(h@1c#2`&;xAyuc?59Q-gqqy)OOTju1p)ovFzgydbnY zbXjW11*HR-O*#=oA<}iojUn^{gwmXS&RP7{2j9mnx4w!kk8h^aY17YBr0e4261V|H z0a=#QsD;F7pSe873j-Qagj5DkIS2#^Dav*6>*KV0eWd8pYPfW}eX=|!tVbkiN)Uwj zK}fgP!)T4~xpdoYTFnMpD~cj7@o*R!U(6r<*`M=Y{`_}&`+MHRo8R=yIQk znwq4WCDa-XYF-3d(2FzjEJtVs($LizxmNg&gD)IvA|wn#Vw0d;m$0#jUXtR79z#u! zem|km8prc-To-KwMWNB9g31^hkt6UtvMj~(T#_thXk-+}5Bbag_IG^X4?e)Vf9I{d z>6hMwnVn+CmM7?>F|J>uP#&QdfwBo#s-telSWT`?T2)Tm60C;EeztQNj4}j4fYt`- zTH#A0=q52)kQ3}$uAj=Jlmo6vCGAnTB2})-OsYv4WhnVCi#LDU$c-R|K_8$Z0#qM1SCt%h%S zXoya`4M3yWBr9^1giIGWt|0Ox{eBxK42fzDicFF9Q&g6rR6*3Nqk!F0yI8sWaHJ5V zMb6)S;ve|KKm8!T^6PKom)`g$`cwPZ{={bDevIP;WZJ`#9#U7K>`G0StTgFW=sb<< zg=D!)oEG3|6a{IX;rl*9K(k&a&l92`BIy@od5-4`v{9saPShA;+rHhj>UA1nL8m=K zy)lk90&Vh==38E%q}8ZZ&ZR2PsMTsXZa}BoLmPotkBEh)$a9(q0>>(9;w(jLaHNkA zK91{A=$u-!Myhf;-5DI25x5dZxdg6{HaR2X&6<+`)@{a9kWGBF=IeLpA2Qv()M}3Z*Ct#qjVjS}BUG zSRiT-NOJkt{$C3Mlq={*E=!L;l2xa!XYs0~=(u3+;0#T#j^lgGnFQ@RND~lw0Xpqr zC=ih(Epqa>Kp60Sfh#oVl)T7sqdGlD;~zfCsTZHa(JwfTEXzBn=-3yxvM%4IaAOM7CPEYY}r4H4Qb$q|A$?%@yBnNB)rUvTv4C$izJ zlkuVer{!e|N!u5^gB zL?~r7;N^50lwWGjrGZARjw2*SmnUiENvsjz2tnuwgy&L35z98N=djb(GroKYUMFYn zz!XY=LQ&`h3QeQ~eCc5vMXvI}sqOzM_(j)X|Dv_8JRtd>hbW2=QV^#p?S4X{U7WB^ z;5&FiF+DSh<9qbt9&_CewV@I41KQm=8jU)wkwx^AoPK`}&oQ{3&uphdC!R%%3_lFW z3PY|1g|?X&`@K1o$ViGl&1Rk1*;%HhXUL7fcoCTvXqD2c`%F(y;rTxOevi3Mo7&I_ z#`Wm*+BEAC^{7Qr7`pvAv|HddYD{-K%(W+QWkJo4$WlYBpsy4-f^KgXL_r*POAVkP zh(Zdbh~t=Uzeir=w%#}UL2FG#mTo*?Qt4$SpfeA=?+=alDc7=Nn9I(4@ zqj7u(=}B^xVT7jB?UJVHU^l0f8W0_Tq9}->h#&~avWzUt24g3svSgn5l$*r`r-KM!W^xL&)y(zN1iv1!X2W{cZdgxqXozOL zi7Oyf1yzw-9CamA%C z=MArWFPk6VLXso|VMwiBqucGGwWi>P8hI!)!`g> z(n%~{yo7oX;Tnlbb0!Z?5GOHyJ)$<$9GD5{OcVMMwPur4rOb7vnVFfyaUAkOGu>`; z>utC4rZ>F~t*rLWaXpMNc%F~z1Q;XjM#NFY+I-L$hQII6b0RNu{gVX2*-%B}h06`Ft=Q%Bc9JAzWMq_9t2J1oMNvGvGYTG>bo(7%cJ+09`ZJ&6umARM zcd72sWO?&d zD$mHIg3v_@L*O_BwTR}TQ5s9e(9M9ZqwIT*4U6b#@C!kd3+lO`kqK(Kpf@!~8mDAh zk+_0ntcJ60IpMJ@3D+!TWZ7bBVL;9I@LWkM3VJ%F5Cw74Ba#x=XtWEp!$zsETSkA_ zWm5I%sgxk}pvaMhB2XHy8&gje4e8*i0#D`mMNZ8a>IS?*;VP?)(puxX4n`?tUJxOu z19c3eQ9!FzBUnC6uxb&((h)>0uo~&2pr0hnw%g2>^N^yzGX_@`P^1`{BYcB!49X~S zp>cedM&L8#`3yN8E!U&wdo-hv;V>jLAhN=qcnYiOu4RI#kd{`vg2aQY3?3&8Bypc2 z&ydF88-t(ac>RQ+pW+vaBukjidQ8iVVk9J3Hj1~XfioQ9L=I8t(h7W9u1h39XpPni zZ7PG)=iwI#obg8M{R8W!(m`hMy?jWNj7nf9s{mXtK>8tt^eL3a)iI9L)LO$R><%!h z*N6*9v&=d?>Vml>Wo&#gf#cF?w{iUd$9D*QfieZ!4{=fLTGA)* zeQJ#si8AyG2*Lp0q-6aL&EZjUtq}r(s77BIa-}eNj6^d%JIAu6%W)h@H}2zvA&%$b zQQ)}}C0!iXBaOSbzE7$_X+z-K`laKL#)&;T@*IlLMM#O8YeLUQ2Ayj5a&E_cmeuB~koqms*UXRN!y@+QvJ-}0&A7iGMkrfa| zb)p~yl_Rj}=7qKRL|{rE20=Zl*-e1&B3&1yH4{^l-0_ni@{O;3m51-Smpo1Jf&kC+ zFomJf976a$bDcK6CkO%`jU+1+{kVrC1!IjCzUPslDWpSfco8qV{u+*0-sFM%?xNSt zFvh|2JZ5LxB#G_6pyr~{D5Xi$6fpRqOQ$zOYp6w|F-o3m;-tsq%oNkTK9^s5F*`Or z#MUP^)6Fu{T;m4~LO%kPmH1n`(<;J`E^P`2o3oNQRQkf|e&G4^dOgB0Bu)~%Fu?IV zPB`Txe*L}gVXo8WPyg)C`1~h7#nPqAxaz8_2!fEU+qTi^c5pqHRY$C3^_nC2>es%? zXFvHVp4z;L)6Y1aGtNAd$2M(ZcBW0co3rZ3wcPT$TR8316S?z_@9~#^^e24jJ9qHH zv(DhvH(bRJ@3@`0PQqL}rZqf7Kknl?4gyNs@%i1QG!~1Y<`9!plWcqD8NT~3-{T{H z`}ch5OJC;6ty@{Y`Uvj%*Y7hoJ%c7fX-OKlQALVT8sRv^xu(%-qEw9UIiNuq*n4n- zq$rr{^myq@E@9Jscd~Qa7P{R&%1DG8;krIT7v&kGwH3B@#G>3J2%3!+oo*j(1Q%U$ z0hhh>Vh$WUz?Z-H4ZiTHFLLnU1Q)#cJg&U*5`OyAA2TsIgCB(CO4I3e32GsSuUg4X zuYL_DpR|#{$$0ePhk5wXr|^RsT4w_dxDnFYunI8t^| z<#pWriW?b^;9q}mJCAR98f_eWKO~CkEMLBy^&2*D_q})XiBEi-haY^1b?cAhl#@47 zq&Ww6PY}lmLFgkrpSUmx$D!Wv@m+z=GSW0bgdT-b_)dV3K7|&fnPOyYoO3QbpWEL4 z7KTP@?0)iR-1&p=k@N(@YfzM$>)-ppZ}G<0--Z;D&wcK5eEc6i&QE{x6OuR~3L|u- zdHgvb08cu^j-lOfX|7$4SQ0XubeP(6knU^;&v6l+M7xH-^Ko)PmZju@CL^aFcnBlt zp;!PF$RW(^|p+cU$Ws72E4fRJ>voNc>yv1QkG zQc<89k~EFUCTHpFpQaJC?8H+B&yi?RkUN^TN=Q5q!x8nBi%}yHv)wkubcdpwmJZ)m z4v?m_EHvO&M{Tae_#P&Thy#aqV2EpiS>0uJ;vh4RZ9}v(jIxfu_zrI1VnjizQ;aX^ zxCQN|ps{8d;nESNrY7m{n?&RqV6BaIKjpg`y}j;v%D$#pEb*qcB?8Evz-cw`L~B;Fdbi!m%3m zYIRpO`d;9nJxLKra$gWTij)E^4bm0Jz$1}@tmZSib_MQ|I^C?t?13qIai5vEjnWw& ziW)Ay_E5@@I11xdw7MkT{|Dd~O~ZUB{Gzq*KO}&IK}st=<{C2NP&g5;=Mb4b6e-=T zzzZYNq)%ED7%xH_!*Ii+$P@giNxR)AO%kN*AOn|9XNE>#odXYcQ^IBw$0Qh4pfiW1 zOO`R4&ycA;o`x*Rkba1EeNq`%4RhYcrJ$E-yr4#&CB#{V3F;UjXhsrKWCTHjcBe-_ zjd5!MsZsQLZAL>E#|ZY%#e~fU!pSIffhs%}Em}f9nycewP5 zEBX32zs_jQXJ&eWO^-ax+{_%kUV`Iz2r(~!4>W_=Fj^A9%=9E);8}kFRUjRQq{!Gm zeUM!{cVK#bOH3RGM>@0`L(F!%^i_cpnkaAxg8;_~=qCyNtdH+XLLzD;l%6W^LJwDH;(ia;4QUPylbf78jR`bhG;?u` zTW^vIhik9Bg3(&Rx4v58Z|nw4x-^<&D5II4JBV-%^+pSWAP7C$?P-RFYbd3dJlMwf zBeJZIAB8l>7IEQ=&*Q+>$Jw!M3$ap2Hzdymd6wgqW)51~Icf!P>pWz?S2SV%zlv5! zu$!(@>y1-pjdUfq+Jj za^G$qxc45O*z_1XcI@J@r?wIshjY%mfcx*hlc|X*Owi!eGhfJQr)=czJAcIA{`bFO z+m4;=*)zq%4?e)lUw$dG?P+#zKS*b`Po@i+!!2uHDeQ<2Ho+wp(g>7N_^*pp{gV@jz~`b1&f~7{f0y0Q>}IBI@cbI}hJz6Hq{$B>{921nuSb&3k!O8eQJ!2l z4r!rSynF>0U2r~6Z+eiuJGPUiIet(lDFkVn;W^c&&zgT(0laFjpx5bBueWf0pKZ@< z<=fx=8sEMBb{=|gGrM-~-$6J& z2M+Ef?M?Fd=EvBv1B7&m;{=swj4T>qXyrIT z;8GlzC7tR(YRJ0@tsp|6Y3ChO(<5yKOnU|Wx}dgd33|NA)bupz-f46@!PU~5AC>dY zl%^7ew2q%{EufvJbc7*s1nsoX!HInw-17_vpMHk0mlJA9Q5dqUAPfSsJS7)7-dLSU zzo0$hGB@fX7q^J&5$SXrbzp|1pRhOU;f=Ql8a1>hAe406oPDCtY@o=RE>lT|UK*3B zg0#rNagc#E%`22bdM-vnDil2mvYJaa;?r>pwmtSB)4TVRZr_iW6x4zm#z0yW^m=_9 z*CjIreW{3jL)?(`Yl2xXqpcELX%#QIV@Qe&r3*yON40#ihKn3)&?6_!tun;*J)|Qk zFyv^AwA9km5Gb1o+;SRgci%5kW=J^TWlS}oGvW~sxhNM>lj8*ey*wkQ6ZL?9(}EE@gH@E`vX4?OxP_doCeTc-E&_?9i)aKjA%c%DZT zMHo}Yh^2Jw8$`>nnl6K6?fMP8@BJU(%U}B%YuB$s3&Xz2{VYFxIbZnF7kJ5c%FyjI3!6znx@q2b(+m4Pe1)MfB9E`#l@Fg%=hm29@}?3 z!|d!Vp63xK35`aBAP88X+=NOvsZ0+HtXR5?q}RjqTz>0)zs-;C{0R?kdWffXKgE~7 z`V~$+^;CviL+HGqJv&F5rZk6ITz<`!eC!`T!R7Sq;#=SNHoyF~x3FyG zGG=BE;`elF(}^ z_x|4x^L5r;>&7`}KYRZ+duvMP-N1^|PP^FFgh;FB?jG!JAmD|Oz4Od_#`cR;{ciIf==LTfR6mV2jvVZgQUs>$X6R(dxW-CCS^JfB}^UHdKzNg*|1C!UOhzc!J z&uz=?@tM*;LAzsLHnmbuk^P8!;i%gEN#pS_=)v=Xy))6gP<9s?9LS*mG2gOL=(gkN z01N>RmP|-j-sOjXq;^(?0U#zmj59}-tQ_rJxE^BBpBZK*Baz+5Sm-Dmp+^Mnki(I6 z_0~7IXqla~oW9#(_X}cx`eyq*+{}B^U0?35Y^fo@&N%w*uUnU}a-R+@JV(kax3rh< z4uGKT33rDjv7P3*FwD&t1QX;Ff=J7UIMNy5<$~I$@kJ zir$;f0A$0bd2R6X?FNuu{Y4%Pa%QsHL1hxK=-dtauMz3c)0>R)VYg)Wl1qBE=3&*K zpdTj&mR4(i^Z^+E`gU9$IXJ_}JselNUIWUiu8lRX4Z?-knkm4mbw(y$F>{s&ZWwr??dZGX&aSx9R{B4DZMxnj`{FVss5>Gk6({SJsgdU*GZasZ zO$Hcaa{Df$Q<~(NK1yWv8SxOyG)5ZV;V6xPQ)??avt#T#An?kj$g@K2UU^IbJ-Hbv z&up*Ut4|vlm(W5hqiJBww?aK1{{!^?&=%Q|IW5$mfE)@Dphm@Zyi9yXZ(c6 zy1xhhjrxQTLl&D|m#Sspk807eUYzYTQVepMoEXSNo>a${3YXQ*K1;f2+MGEMIG17I z-YZsymr#-{(h@nX9XPBeX?JE9jtXY1^`@;hT6-EBso>QH7ZGhx;m!*#Zt3Rhb+6NE zp9aT_ZLJ?vZl*SNWN0rsidba((QhcFQRyLvNyta^?{Zk};#BDMoWtWyHk1te1o-tv z|1|226!Yu<@zT~4FZ_gz8m0a-Rn4UrZ3Y_fp~S$4b7$H0Jxu?O=Ch&W2Prb`&tdiD@| z-po%pnhnM*X=q1;)&;R)ZMMmn*!K$qFC_M+Z3IZmsjF6k}OrA0cBy0nTs?O?&oYw)o-RY{q^Jz$D??{?qe?5^ww~e6-^U71&!d?+cyu*TQ zzDsK57l=$J9xZ0D|1j3jr+VGg(pZMcG=__!WO7+m6UxOyUXt)WZX+jbo1V02dVzD&qkgunfs{)ajJ-8#`r2J6=b zpcf>Dh+WoZF$&7esbeV`3z5v&7&3EQopig#a!QknG|5N?R<{6A)Co|0u##-4Pb|pt1MT_}xbG#8R`pBT? z^JM3H;&XGpE8=nfqqJgmQcG>81-)|Bgz^E%8869cbVa`_^*lN-=(Th3WbN_rI&pZS zZ|pdyr#Gj+9Vij)`Bjn|yE8|-GVYR|1*Jie?D+|qd|S-ZaiZlgh1wffFfcUIFPuSY zE2{W|pov0~%>88kPwvZ>q2t}Ow)0Y4<>txD1CY2i5uPoaJz6)S#WmHDEm<(L-TO8} z?m`f7Gx0K-<=~HW;xpu9Io1GFK{#yGFtZo(>Xi`QDN|&xjy+$pH?95PKYyZpj#ar? z8TxAI&dM%w!D8S(_}%w$gG zQcb$ryWW&NXFu zpG!4LWe8;YcXx3Za(!upJdVD3n?vYWda%o|kx-CYxZ5YOoXjU{nvhret-!GL1ef@% zQrD2FOLDyEwGCZZdlDC4y50bA*d9h245>+$;tA_2U<>rQLLhjWEPf}F_H(uCgr=m1 z9Aj>ei-K?O`m~Z~cLv#64gmh!QYsRWsVrdvrLCDMW$e+rdUINIoYG~gL^${z91zGz zluk?jnp|tSoF*YB7a>^N3ETi9LX_U54WJY;pXu^i$AqJ%#XC_Aycf_f^lQ!+!4tmumE_8^3HJ zM=Okq3HDC~D270xC?0v!?szzlTM^Z{A8CE0q~(;n{L}DN-KYp*eOXj(QMv5PzE7eewf~SSIi@1y%^0*@j#WpA zWkc!D!pQX}=(e)qwCRtE@Hh%m<)!IUA23)l6P&uV znY3=MO`%~v><6o5Ud#OaEa&!ktJr!|LZS)hAB*us?g(aw2md@%wU2bB=_qX(Z zahlX%(eF(1X6`%dB1f}?VCT1T+VjiNlURYc)2?z7{#-a2F8~&T^(}%Ha_9O13759PAs`dRFV?>e z+i~;GnlAuY-?R3U8ovj) z?Q&ZNj8Eh*z!e5wUIA{U{CD-{Ayu4xHukM?{GDsl*#IvJRBbLIVH5i6n8yd}(A3v5 zGIz-fJK%XI0Okb%GT+S_{<&(@gE_&-{{%dgcACF*JZ=82iiIZ@S^e#f3bFNnbn?Hf zeEBPdE!GD>sijjeRo==;@((5rf;BG+om3t6 zQ%0I-8i3cNki@|ys7M@c+Dx8hAu(4L7EIW+UhM>8(on2+nPt1C6z;kvA9GxJ!sg%; z9o^j}MmUI5-TSib$!0*zA;RCQcG3|ebkdgmACk@YvXFA4JA&fdpWpAwzEpz>(Th^( z6#mYXGy-LlQkj=?trkQN*r3fphTLz!6@n!-WA?M%t_A*c#`(TPc$|`TUS<8is~P~u zuC;gGksU6zhol*t;pxp*x0k((^OjCElh(l8`|@x^Hv-rwW>PuEuyFnVc7`~TxWCD? zATcp9AyBNg8MBAZHHVC-2?uR7-}(ni$!3Yi(%=)oRGRI$ z=Y8Ide@>U{O(Ep&{bz3-Gtj<~TxvufL*Z}q_<5rER zy^%zQj<_&8VMwL_Q|aR|azGk;z)|Vq%j%oQ>j(cVJ2i)`a54kP#M_mdJvTu_s8XtV zQ$>6VpCp8{U+^~;$UUHA^#=5XDwMrR1_$wavv?v;JzBOqJZa;!}<1P z$#=H~T~gS>eQBM~X5szeo+}Pde7Uy~@fXmQTb2LLG3S5>!RK(PHmgW@zEO2zKY(gg zcf>wbhhdTmMMJmn^=z$~sg)#g_^rKoDxs;DVkSe8OfX@%z1R<4u5U=x+UtUN+KSOU zg@i!UG|j1$b-kdmWlr(K({mTm=1yZNLhraEemVO66Jk)ri42{SWYRS;#jlHki_!Hm zm(k6vl}Eyb1`(<9Wl1ZgJqPb;=D8X>bdM!JqOi|10^n2NzDn0eE+a5(=Ayqvbaw$9 zqR<@#zMA9%#2IaA;?O$kH4u!IpA@y<^08~9VYU-O`E(2O-5$!_9B{L_n~3-C`vK#d zIJnt!6>@j^1g)|6w#CnVx-7Zd7JI@Md)iYg8uPxqdcX0c;%WYuSrjeZj+{oa7P-j$u!l_xfjWiN)CWgm8+1hVx@jVUTH z@MhDRz=*jr)v*uwp^p4~Tb%y%Cye7W0uSww$LofiI6Lkhj@ z!u4Z_p2npnGYfjuBq{7h9Oaybftf2wn3~u|)6j>Q+kOuTA6Y;CRVEh;G%7Cng&TDck(Ry;2n`JDPM!aN=eS8_*Yz(@znOM~DExRGw zDS{@IqBc|5dDpEqosJ=iLP{f~>x^kKn?`F_l9p-2@;jC58`q@TtqIuOF>r+z&(9`@ zP~k4u35F}gFb3R7YDYgwm=y8PI83;1Ge+&tZmEZcv#`p5pfUePhr53kqNAOUtL`;C zviXT|31^t4ku#M2@H0BG`@#6z#}cs-wU;ZoVS4iaE?dz1o%4Wwa1jBqo!Sav<|P4S z+IOMe>?c2IEUSJfDB9C?mayaWDqy>o^2O)*4Di;-iQS6UWQSCQ54fEPr_E(B@h$nW zuK+u3&(&ieO9uV6-u_c8N*K?ZP=+&dqVNAAt;c%Vv4rJbo!peeyc!qYqab9CY*YP~ zB@QRH+jaMO-;2|?h3kS7j%Y022>&r>nN&i8CxOQR0y_puTBWjyVc5|DZJb!Z7@LBO z-`>b}4^4SIFY7%D+C4rpiL-CVU46hB`|~wz+ctUSMqKCp+m6fTv06Vk;SX%(H7`-8 z>@OCBGyqHKalB-rjGLc-=u|z1MS-aXBqw;d+#aFK)St@IUC!^>O;Y0W#GB?cJpYM@ z%mlF>7td<9RJ0cVL1&71U1+5#B>uU#r1>h%VT-l%+WdKsJ9lkRMQz;5gQGv;2j8~{ zP3u)xLK$35-TXxgW+lB@a!cL)E5TP42Uz#;i#Ch7_ah@Czi@vhr|( zVgeasDIPN&S%8WEnEfwfI*b!wwg*@9?Lv3*>nT!LLyg?cQyG67$5wly2c;nFMRJuD zU{Xio0$;Is;9p`nV`F1+!t+JKXRL7&`-lNu4){k}_c|dkM5=W9+tvQGva)j3UNsEZ z$eOwO#)jbIn|h5dd8~{~$Wf{kPB1>Kgu{kvCixbea3wVfuKUCV5yo8XWW}`f(a##~ zfCBr1stFNBa$`3p4tXZP1eZTynbe0`u~QIN&6iKSf8{-A__iDaADJN|D~nbE4`@D! z#wm!E{+5&DMzSz-QI-cne9g_x9cnDzZeVdVUk^0!Cac8T6)f3lIm~3FXBwH?11-H` z{QxBSOM`7j+$|pBZHHPSbF?0A7;k98rT0_!7eUApmFQRbr+AG+)sm2t2S8ROkO|RB z2X@6@eb>+pSNq8vHZ8E1|46Bc4)b^3sn~lS+5DQeK3r-|qe21p?k7h2k4r00u^fNm;^(#%DL*w>^@D8XWkJ`LpAKUE_o$PZ?@b z${SV-Ao9YG?fz!b-Xmes`j`H!%)78++AZ%SNZfv+dGk`25$~2U0kwXFKi&eIai!M{ zI7sxS>1uf*$BNr9*KKMn;#!v29vFMlZFpepQ`46jz2s)nzVCgWFKMt#UA_tzbJqV zs6PIlnD(LNlT52sy)NMS03KIielD)ylqA&>DdKS7>)PC{nc22*kB+@rK%ri(2O2t% zhztgH|1ko(v+&r2Zn7Ck>&@ZX6Xorz&ZmwWP63gylxt}wh)FDGHc-<5pu96-6h5(X zlzs%oQ(Y;hrlz6xjp*-}%4c?nI&WqEtEpLj+~&XdrREnM!`_h&RIikmeQmTC&wXLV zc{}Msye;h<6$OQXhZos&J$9K62g*XKi@9@9F7{WbL01EY3A7J?ia$Rt5QwcU`T zLbzXA9EZ8hK$e@+^I?HyL_gel(9>C8lk9x`KiGQ?K?qNa)xegz7On|1qGwQi-;zdK z*M&`EN=(y}U=K~UG(u9fXRD=a$E=6Q#L8Ap)@x5Z!yg|5h zTHJLTY&pWRmLVlwm-veY{p#8i*^24@zCv?)MC8o_6K`+Xh=m%ANp@EQkUxmNIOvaU zXNqf9cqOWfT_WEg#lt>Zf=faCRya)8GrJysS}=()P}dIPek2U+w1tGmZD7rC8z7R!c?_c{1t)j=uU8CC!>Pae1kB zTuv??>Cy>F`LwxaEKT{ABdkK&!n&Pp9E2H)=5XL9rHQ?icCK|lP_C}2+|*jQi`|Ia z(akPjd;5xY-H2qeGT$~VkXsv*&t9cx&=tekt^ zze+UQjP?H5%P7@u&)eCoDG!s7w?a*xF|`W*%L{QuE$D)VGscaNA6yNdBZS0VEtk!b z*kjTb4Q)in99|bG&pXR8pdoi zfh&M9Q6do%cdebSRIev=Y&f?5#jwVd$;$u-<`>*0hIkX^=Y%p$iN?|vb}&!JLo8K^ zaRL_P>gf(azN-~`#;<5!Cmj{Lpi$LpO+;sFOQ`gFb~&7HjQBOjgqBmgUR6A-qBdDJ z9Vw(w5#Y*g__)J<1_3%cShU;D-|=$_^TZ}No)r_h9HWl`ZH>2_l(+3GTa_;hE2j&< zfvxSizS89A{%XM1+>GgTuA6jO<08sz7XUxX4|IQh;xleTeO;B->c$54g%zoC!Ip}Pj zoMMk_HyKc9!zJ7a_3;%GsFg`&^0mkw-(1P!%Ljd5vA!FYCt%t4 zUqRcv@_s{2=LD*CJ0P@wIri`bIFp04@xnbwM0#Bc3^~#u*qdU>_qNCqfkd~%BlQZC zp;fqnQ)Pm-0_?usdzsc1O8jrlSWYb-*z4ZDhPCv)e9oXCxwDl23>>tR~b>zBoZta!7!L$ z+_p~mL6h{P9K*~k4T`TMyEp@hLaWUM6_|o8iL+9*-O+IpA(6S%R~!x(2n+q(4jDiX zdKWNutm#0zjt(-c`KSY!j8LuSav0q!kf23oh zUa@QREr}{X3q!kbvF3twel#2x5K7;gNd4UEotmw9MU|B$Y>jM?Q9pYU+s$MFSdbu}3(dU8zq>0IcimoqJ=V)FF^B6Mtb z97QlrpveO}-p)ViOeV%_LWkYxVW#A^|K>Q@C^Q*3o6M=ppBNEEztSq5;PXo*pV@SH zd6crf-z&8BvP5?9yjTE#>-7e{M4=Mmt9PFtei8hxGJesU6|DYPfjB}x*PTAkb;`=?7PKINCSJ^9Z-XqY;Zks-v&|M4i76&I5h6nxArLnQBLX9Sfb)d7^IebQnj#8rSv^Pemr(~#A0vV z)~)awoYr%lZ*IFRt8Ko|zPPRT=u9hVba=0Nk1`940qGR1rbu}XRJ@mfKvOIM-q_Wl zh8I)TC&>i2r1DK(DP2=y3|XeoNyMIRjqtLxgiHL;1WW2u8(jZ#+0UEAx8; zzYKF@Zx1hJZ_P|=J4L7vyb(6=f0lW?cIeE_5%S23t-%!xj+~oos1L!W1yu_sa zdS>;oyxjS0M5|>v`FKWK+$J}`&3wh!b)!h;eAxe$j0`@1CF0#q5ht5$UMSN^nM^lR zR6O}C`hZw)xP}y+rP`?Uu{57YS!Dz$?6Wp-yC?+%VA)Wh;;<21Y^=1(>RllBG`0B)g+ zeo+F8ev2#4#4q^Xy3cDbgK_9VmFbygD6_h~tfuRiNz(N&SWZuz_F@-I>`8#a-x=9M z%$HKEKad%q+^-SXni<_2>QoqnK{@;~8tV`C#E`Fj91 zM&L$XabFXbKf#>(Z)151Z_^Gb9NDRyg#4cO`;6HgG{f)fF&35aXAWHB3d*^qX$wSo zLY?%zW%1GF&k;UZh7vZ(PM+I@La-sysBwiDiLQwiQjG)YOq#B&R6nN=7t7`7DyU{M zxjJcO@)_@e0hbz{*YI189m|iq8f4ZQrPEFrbW2cP2S*Ty+A*vP838dLH&nK!X{O-# zi(w&nY#?PR5Jhf%R`MrO5rm5S+H`yZ0Zl4tXV{#nVA^PY6U2h&DpJ796MPcBDM`~F zc;=YyThJSnSTl;J_81jLZn|DMNle`{iG$IRSR`Zt`s}18du#(eze={`X<{kDuNi z-W_j>Q+f=yb)g9XL@L`9pf@NYGa-7}_j-zAcYZkqz4o=VjAV=kB8I|`r@glGby2{c zApO7J;GhB^yecGd@pH$FBlWsb63MU+%A-l8{vfbYBrLgHAeTMhB{lAX=s$dEw&vZ* zy^(Z3S{zO5^hZW6`8Eo^^W>vwj{da-ziiFS;K?uaZo6rBFk?)4oCXT<{13Fnx}HPe zK)7MH*8WKY(0Ru+TaHLR&UYu1c786IAuT49!I&lk%bPQla9H)+p5nOVh{{oVfOfLo zJ^<=&H-ExqEJjlhzhiOe?^rUr3_e&_Z$;ihIPErTD(?r zsFTZbu{&om0fN>OYq+IuW43&Xa(^c$te=4yhQ4(mH`L3VAztkHzb-!FEIyI`>!XE? ztekvC=OT_k*)4(2=VK4rFd#~P`_T5F9S|4tz;Ij4-xf7p3hBBKE=nm*9So;V(bO!R z2J~e>EW)tuVb&tn%1l5BjZ=dzYziqdG2-75o8UyCd_+fLqZR-D`9KoofGL;RHItTi zs*tpN1}BX3vNqN~HOZ8zV`q&@U1xNC;yvJwmxaf)y6()Y6L)pH`SC5xc#Ba#YyTC#JIwQK!74DhTgs;KzVhvGGKG#)#2XI@zeJhHEOT@4byY51l z8w9hpq>IhXd@+Qq-+XOB)Y4XDnB|`@1e(6CIpm8siSw}V)1%j~K{m!Mc}_**i(*fM zs&$TQ=#0+_IOn;O%S6{5?c1KcttAHH18z;+ZCBz5UT?&tatiRuWt&QCNY`pu{M50q z{n-ul5~TdfME_{4)&SbuXnC!Hv);-klZZdPk7y8=@k^kH00@z!ym`RJxqaOe>Fn@{ zuPs*66fxw`19}2KSb$>|5_lz59Y;?0Em1syYvq6rhZ z|C>ICr+puoH+!OG8OBFyVg#I0b<4vKTIdwGa5R|%!n}wtFIQbYR??Cajos+9+Ox8E zK5v!jH78a2-!c21Z{&(I54k?Hv&Fz*dp9k@)n45Eo#*CkLI;2Joc6Z#d3HPu-|<);Ll(Pzn6h@u z@*AH(`StJqpULBBWqaBXyDw@baA<3LoF{AAoV4+rW_8$VU3nJ82KF(F-d98a?l;Y& zh1UT28}x${H4l*q$2P zxKf}oq;}(EScyszyT~{~Z%OW(Dr|VSo)EZXGY-~vf`3_D zPof-@&3m#GP~i4wdM=1&{w+Lyi|8Mi7>p2?M9K)D;?*83a}vqI+`G<13Y@h*a#I+f z(ZdOXVkm41h_KgK$h#@+z6nPW-Ln{U#P%0x{HRSw=66_!0h8S0W`S(k2Mi3r_AJ@BF)&q$$3TBVsmOPeI2XzZBn>vc6({w7D z90;=)PLjF0rGw#xd{y3C&h+jltAH{>b!v^mij&EOyJt^~zO~4SPObh1%6XY9niH@CRz1A7&q6?pLcQH{Z}iTS zVwmm)ggg!lUS)Ufq;JG;{j8U(3V^{McOjJOMWkB9O2a)U{3sa*bygU>O^?NCXPes* zccYD+z3|o&@Zl*fcrAUJAV=VNi@A}T7a#D`S2Uk}uy5P{3cMj8y6Pz{hz|=PM4{FB{u=BX-r?HN37@h4HP%JWY1z8x6X*IJK|s*0}B zb=;JnQ~}jD(yO>LQmO)X(y6hKi_2|RU_u?EOi-i?-y;Hf^(j_#UUT`vWSHYGMn!VX z3n7}(Z}5{3g{pG#)#eB4fv#YnFGE@++7YQt$eEWR*A)S%gGhSMhn~LC;+hnk;oluI z>Q8Nv+Z2?q8%b6VevIV3HJ10WcbA|cjj6;zL%eRS%3nt-SO5H2MM`1!rOuR-A;%E` zR-rG4;|U~Qf{P!2cAsn9 z1K=t3j@mx$O+BkgGn81mNu*g1vw*6U>cEJ5JD!mDE?Yr9ixYs;_fxj>BvTzJCe6x5 zdg07PaI%`Yw>5-@8w`!0eB0MdnXX$x&ur2 zrw{kmr3UwCqc+`267Jm$#RN|Vl+<)1`Kk3Mmm&}W`!~$9EC8X!ne4>#AS*%fEUNQ? z5&QA-we%YN#5#0gbDqrb56KQx&c>Hujd)b}NP79^;AFE(rq}n8meLIVgCRZRxW@I) z86tK>H&ZT@#5qI<_uiXaQNz<_(UDfy}z1QwD^1m84{@<_E&4^n*;Km;j1<9tYAtp~j z3GR&L+b3wOdBDC$q-^cCzBD;CenX#A95qOPlvr5uMgX}Rc=P$+(qFvRWna9&3{Y1Z z2Y>j%T$Mks$MY_1@gezvu_l;DZ9=jjYz#;w^)2{sv4U!i$&mqn=Pqi}QZ0c~xTBHjv}O&hEQzSon+Txsth_fhm^txCw0l`#YSd~!BYr%%f@Pfb z<;D1Dp3ris3BeqsxVSvDcB$?$Cp zx=nGB(5QkE64XDJx-?F))(b`?d+0XrKWW$;)wbeZBOQC*kZrUJ^b1;?)X!9K*vypa z)SBnHuObkVds8Vvz`;^bCj@jXk%SU@ckbC36mm+j=>+;F%(V9r6ygVwAzxem-7X+zK$j!P_{pscaI%eXgl?G;?*xb8(51s}Oz?Ay1|aIf}mL zF>v@FIm&Q2%AWFY)m37BdI>$rh(1DjIvjPh7OPvtm6}&9k6)yBu>w_EtT;T5{g{=+ zWG`bZ&;2YjsL$Z89?$7zP$_RTF84OpV`lK6k!;aj5Ej4#0neyfVNh3 zcTmP6cMPA5uf}YLuZCtLvJh+MR0{js*eJQJ?;~mv;Xsf0YZ+s8sFGNeWo(?&jLYcy z%vb-O8ndB)%_iYRWYtxlq)aoBDfI@g2d#9GSvI98ADNHu_u`wbVEl>iUUTPAsM&iZ z6~+rjqeERpvnW;u4*Te=pf0=Ba!$8v5%4+g!QbzgBWtJ3YwEms4&Sp%l{y;mZgBn$dK0{JHnm-H zJCfruVcP({%NScfmBQMXc%ZDF|M63$@YBvPT-8FuCYxbKbTs-Mv%Fc*sW7OdzlGPv zQNip+#$dT%VoBxS^2RIS*N=D}04*s=xG0Rc-BUbvrvzpf3v|R?9cU*S6 zBdQJ)w*bRHmhi0n>>tKlJtWtKT2OP*AbN!-)0od6UXb6Z@gX#Q72wI>%v1a#%YPdz z_a21=Q6}T{N0ayJvy8Db(pG)P`a)i3=muRbhVCR|e$O(t%MIUKPwp{Cypt_N9tf~R zSB+*W^@gA#K0sw^Ock#4-@!3cW0zP~GU&J7@VGiS#pI1s`&;HT_L2%T1Gf?0w$&|d zm+M+p>S*sW-TG+%sgk9m)6-sTZV`bIKtt=Bp4ICeGI;m^^_X!18+AVET%S5O*e;v% z+KN+ywv)0)4>1@h{i)L0wyoJ(Hj$=6NQFF9CZRdBF%NvW@r-i*l&{;`M2fP?nZuCT-)m{cZX}8B3Sfo-eo%%gLap#(B)qF=`9n=ibd@a%b z=eFRFp4aq{7q9~NG8?=A7cwDZyHEv<_urIa@$nQ`UA^O-aroEu<7ffA_Rpkw`@8np z-^R{3?Y4ci0)tT^v1d;Ii&7yJQk5U(7EUP(wo_-&zRr4p*Zo3Co!}Tywz@~<) zg+kqzFIzJkt{91o@o6M*+Q-=ye`hxdjBr_rELcvOp(=aY~<{Wm-F6?h9YLS z9m!E5)2c@|k8iu8-eStH(s~- zTY&TB8%CcK!aN5TS2$;MA(mKd$PJ}MuStBh`w@L`UO3yNbEZ;OxT0cR)u31C`0ix) z#}CM`i{|~`+UJ$IFT$1n@FDQ^Pm{TmNLuhs82k2L=87&C(C2bJ8G_<$*LCjZ!(#TW zPuiVHY5E>WJGpLbI`ca~?hf1kzL2uoY~yp1zohzwLJeq-A4k!7dvAI^dzfKYM zfrH>yBCzzGH{1I;5xEw-XiMwVrj=q5?wA8lc>-u+q=BTz17bUa$J*iHsvG*g0cIf( z4VL{%%c4`2pv!KuuoRzglx-}{$AR)~495rOSN2Cj%i_WB^f!4W&i8Dl6+KOOVRU`P zpV2e+ht*N!WBU`a{LKgGcjVnwIC(jPtZs{V(<&^wTu{Pd;A0Ans+{eQ3I#BC8gr92 z1i;o0UlOokRtqX6a5Zr+TN*f?R^z(4a_fak1-9 zh2U?I6Y@%KLUjtjW)*}~k8fE^Bqk5EF39g)xLHU@Oj>5mgF^w+y5u_?55dj9*0V(o za!WOOi(0S4-ZGK98i?;99SP#SMP^aNrP{ZOAw)irMj;3Q6FJIun*Dv9W8n zsVANP0#ny8?_oiUONi!CvU3gpj}?_gIHIP@rSw7j-0cBsl-EbU7>FHa)Dh)Pdf7$*mozC^@k0Eb z4Clya^s!H_LbXkQ6G~9yya9fOl8tFf8Ap?U+)^#>kB-11?h(`toG}%SIsQ;u^g&EU zjEcc7VrQ!(iQ++V6g0g$9KIi=HpvPK1o>5Kd-pWGSLCLt6Y)MjKM(x71rOS$HD~Y{ zsP}4#>M&6MMBYuMQ}jX9#Un=c7N|H$2p8~~*Y76;No3OZ<&^XIBCAbLWOTcc3+C_v zKs&|}OAl|BFHOLqpnsHn;V1G;5&h|#0!HdGeh$Xa^Yq=zU#ubt`d|5+OjT%;u&QZM zGfgf{#;qi%&=HZE>#7excKDT>f5XQ}8vy7vk3oi;ytuXFN0K-R8`*xCxI)2VIQ_wh ziWa&^RqEwt7`+mDsH@XbU{@u459nSD+hOv4;)8Hak%q>fZ5$krotV$FMvhZYA!rwYRVJ^~Xo^8dk;4 z-A~q6!)58o#n-2GmDAeBIhp zmM7vUU}sp#W{0JN1fTf0%HV@~1;X!9c%liuZ`WC~Zg1ZMf*AcoQij`Pl_^kyMq;dcGGP zY(G)5!ZVN=69vdKg6G#NiYxr!W@8C8_2k#w^d*!{u5V=a=iL+t1pF&dT`aA`w85r{ z#?nYr8^Qhokf!g+ymYl*vD!9CuwbfBu|Kfrl@t!d^VGq83f8>;Itti%Ra0DyR?HF? zigJnSE>a)^@_Hc)mnb$A$wH0Qb)u@{;ltuS%DDV={std zrd)dpI;489Iio=Qow~hjjG`pY+WWTWeY~bAHA>E_D4HQO z3Nz-v=I)hqS={V(|n`j$ zO}7{rYUzjl>~`9I@wz=xO?VE_f3-p+ww_*$tPAk;?SIuZicbfkb4GcKJ4y}Bbi1B>7mb!!_f!F!_^ssKS-LIBI9Rz%l0 z?u;r=2u^=$Z5n1~;9@1YjkH$-etw$Pn6&}w!@8;CMuRN+!WyF(L>%t!qcPuBS zkbaK7-c!}3FV8b;;wur-oT0G)SH=^|YIpqD)v~~L5@C$#Q;?ZwA>LXB=ZwGvCZ{g# z->wJ6Ku%ISH0K<+W&OW;3+xy|cIr5-*l-?ItC{^vZ++ph{JEO7w?a8sz*iUM1Tg8S zi!kfcwr0xy>`F9A&z|jGJ`lqSKV!=m>geU?GjcS`u2P4F5KhvgCN)nxklN~f+L$xh z$&||O50oZB{UysJvxYWFQ+(_rZKZrXFU|5{cB+lEAH~%kB_|L_DI!QUu9#0@J2?ma z)#pKKrVKfOTQLid!FEZkJ7|v0Jt6T2%>-tVUEsmfMVu9EzjEB$#Qw}Y0x&W4sW2HH=NRu_ zc?2tddR&2wQOod#fW$$Lz^}x@d-*9!c*Rrgg3W__gD5IN+9<;1r;bd@5G>w|1nKIS zLJ(*UMt~|9=KY0XNGr6igi)u$N&i4N;|FJ)cVywAtgX2>M7B^NshG}66^AdXp6!^eR)G&zYZ#97q?Pk{hgpVFYB7{x4QaA zGI2_M25WS7=8mT6jOdpS3Ki(FDNPkhnVa%@r1kVU%~*c{dUNQ(htMfgD`oC7TJm_+ z>|}!ea5VxXuK0=h1eDxy>?jKc%P>*s!DI{`X<^K++XGl8s7pPCslkmY@N1mdEi{5N z)1XAE(13PGD@C)*8LM>6=)tcCjCp{;trxMk7rI>rRcsn8#Xi?wC z&q8RNC^(g~R8y%@r}GpaoB5A4g{y7Dd+vU`09v0qO4UP627@?(XjH5?B^k zx?3cdF6r)+?nY^lu5aG&$Nt;BW_D(-GtYVAzWuqt^caKrfaiSlM-eX>MvLRbo5xjeo72xs>CLZ4To#FQ!9uhQ6b)Q_qeIpa z^hAWX`qKHR)rXijg7?)l@tB!sbh62xc*ISsWG|fif~hjXD9osS&SV|4i!`MhHcJpp zvDZ0=udm|+yP!g-7~`669K{$C;6r%)-UcAuwGhm0z>Cf@SH+-Pl>^BSS6ub?9zuS( zW(<7W%|I6{VPed{c+rB)_g}~h(8GZ|ioG#h5^;PL_(L2oV`?$Y!Jz1>fb`%-Y zUk}c+j!U!aRj+6BT5dW(T3|Jj7nre3yu{EEH~MNlbO5BuKXQGb5W&5=MB`DWS+1eWoWjTUwpGk@oFQq0*=+(gjdG%84qs51k?oKLwfzqQ>LN|N zZ605YHwj)}&R@^|$U)CO-e@l+xqP!Jk4Yh9`aWyFs0|-xATMS-e&I(3HgLU2fM0{J zP5Z$iTNYDM$Dm`ut08Klf;vxIfbDgdq1t+Q`2@3Js1cHBOaU%Mtagmsl-BuFL4l6@Y$*; zp~eZ3!nc!ftm(OG#GrF%q>@rUUz%m?O`U~7v)GRl*$kdk*Sai9BLOJ?@N z69!2%%xZ4E*)YcK54hAi&7R0km_ZoURETjH(Ip*)kv+ibTCv1$T&i2qL6R~Fr%HPVS1p?;RTNR@KrfbxHR2dA=f9epY>9mP z;QZzgH1?f-=}lA5UfJT!qKukHTS$vm8fU0?wvY{5wdfO~n$+)4^HM*Fv~1Rm_w&zF zSx$d>t})Tnys%=aDaYkCjQ4Wm_gZJ=Y9q4YAT;q_f2%IusWa+p&}bqReD#b>`EB)8 z2SS_%**OU^v42@f7Pl5F(RDJ~^^tX+uOv zL$?c6f~kH~8C{8n-IlvRxLkpMo@1^!#unelAGq7Lf=;LweC*`*dZ4d`a+yqY#pEhH zYX<37GL$kA@fZY3ckI0h!|#}}dzYxEjq43o;HaccA_4%RgWJe#N{J|?{ehvKQ~sC> z^hhn0kQ0q!h-`WV4pw#V11FCOY;_YM=o=26yX-a2{QO$}KSIWE`iENLF56rrvj?og zoomldL^J1x_f%#7*p`y`#8f6ZLm2Gue~W)Usw4eup*Cr?%1THxKMO9IFW-b0gAm%@ zz)PkU%!Oy#aZ1n2bAr2Y?^TjaJ= zQ9M{q2c^|Z6ZU=Wttha?ml~y)e2PK)e_$%UsjYxZa3b|}u7L)x&jdLKbVHK9A^}NB zA0}o#4c-~`tCZ$^C1ALk76U9XE1+ATgE?$7db!pFOG&sk`WB4zHvq9%LOimRXzh3I zT0eN7*U;n(9%ig&_Lcb(;;|J(KGv_R#_s2S?R@0Y)zDu9N+5iwy-0Y`@!v5y2^!yq zy%9+KO~q}(`+2<>yZ3Wj8pq2LO;eRO$h=U(z~@LP1T#n~`8ce^9rZJ5-L;a9vPBrG zC#AlOAdKc3_lJ$|HLelAJu5*fo;g^z#3d>FY7~-`GLpfc@?}PEW+Vaequ6&MEm}U^ ztv&7rWhzCfYGe={us*DbQP73gmiq9?m|eKXa1ewQCWL;~Avv~=nC%_q?oD8bV_77# zK?OHmPa79`FZ($7v~m4l!n&H>9B*`WX|>czqGIzF7@~)*+xsA8iQStZk074|Uj{cS z1EL$wM#S*eAqJ6om^}$sQDT@Yl2Rfk*KU8V3U+j9W7Q^61zXZnYB)u!!jGdIBSMqo zCgGG(BChTFUdpC61&a3C)C|TXsTn@rUKZ=8gBdC5ANI$7LTYsQ~2)*0ybt8dCR;z!f!T&c^d zXF-gQ6%A#cNowFAo&8{uu{&lgMkmysxyETk;bL;SAxBoRx!a)5pn3SOz+-!*3p2gGLRP#&7(^hsQ(t3^fH>CCuk%`oj z#Y+dbf~%L~GO`;xSO=N9FjVMK1uRw>R+vWlZ65}n?2CttbAhHNw!4gxq zli}9-sF<=JeF!(*zN`J@9g>wp`gZhPAN$|?smn52_#tgE#!s2r)^$up^!jVPv$6Pe z??!L&oRvLyS&&`HWl|KXKkXr54u{9J@BICZyfsRHSYbefIzKq+sLn(Ka-b~SYu%?A zHs<|I-J$(z6$E63tKJ1q%c$i?P<qp9nC%ttXe*IotU6j;;(#ZVQIXn6NU5IZ|_Fg5W05`4`xiGfj)Cy0n0t%^^g#SSd&kue=Yb^+J!X40?b z*{(NLRj?VoH1ib|-)vhY2aH6}c%a%?@9N`56jX2u6o|DUFDqOsw>W+=Xt`g9T|e8! zPs==~9G#=Cz^KVmRMWIRW_?&;!=-y6m$NA<&WQG$-pdT zkS4p}M3-LW!JbXvTL99yakHB5w4_Wy#dM!FQtH0q`{9$RVV0w*wUSSkkf~_CLyuXz zg7yynT;wQ8i2NpSgsG=$c33n%vc`fJo!9hEcIWn8bRJI+B1dy^S`KU3)&S zk|-+9+$L?X-3Lc}aREe_Vhr~c;uxV1W)jJ%^>)e;IZmDpVyPkcrelomeXqE(^v%d@ z9|vJImr{l032D4_-?ta$zB&BFVfI4{;FyP9c@mDrh=uQYHl-P(JT3=qZ>}n$#t?L0 zH2jPqZr3z)q3e{=6>x-uAgCts#4GX+g<*g=JZdn<2&Vo@O5@Becgkp2s&-)H}5kwfW8| zx?dExm}iksMv9LR!^0pWq~F)#cS0X;C7bXC=*#5ZMB%RQ-_A|Wy+C*y{o3$GNOGR2 z727$aIx3F-Rb;lUktFHebZn!JBnY&en!ikyFJ6oaFK10lSdE^80++f;7;lRp@Qc?@k#Krej+GEdK zsogUM>aHQ`3+Z1n)OB9eYka*H=Dtp49awcY_rQ*Nw+0B>DNTF7|GbpRfs2!%jxgOh zTBCF_A=y{_<%v$S1}Vhvg(B;USzL_=))P`;Gc&aXSAn>ry6_(8iy!CpE6lmOrtI=QDIjAbf=e|TkdmQU$ zA75pM!^B=RRGOSL%04`w-uRq*9Ryjd>UU^e)+4`ZSg>Df@;F_!t68RS5kS(b3` z4zy7BJcAcf1@P7bE)2Hw35ds>9R$bN8J>(XikIL@@zM#jpVjxZ4!$H4s7B)uP{z(u z4cg{5q>FYoH%>L%w0J!A3P~}atYeL7ADS2v!bj4{P9tUlluKQ-MGprCcj*HC_+GqO zroPLQfJKi_hz(7FXrI;R4!l-v{7i6NL%0ZRxLTF>#C83QD|uGP#<1}Gnv7J!nO(j_ zEV&rxC`tAyZ*NWtig~yTcNNqrPas4-aJsSb*$#eZ73l(`xT6OsSc7U1LS2J~q&;l-LzMMgO0w7EDJ!uZmgw<;`A+VjXVA5Ngt zKdI(yX{QezpQA<(Y&;*D5HLDPcZm2vb}W^7SvXF=J~;O=c#e46$%>kPlgK{hKP7J z+$wSqYNXs_Wo*fe;hMkp5yX18`N{7;!ZQ=w?oOkZ+d(~FKJMfiz9Y3X6k4BxpKY&+ zB`-9WP6?P~Q(2AFTq$~}P8NhUi&s6V(dc6J6TnNqI(tWNk)dr`0e(RU=kT_BoqO(I z$})H{S!}=U*(e*$9ZEFDd(%LPJkEQ&jWW{M4njtCXSn_*sqP5|`bCH*MyD&Yf;8j) ziBvrbzeGKVm3y|&tCw>XeFj$$*Ho3((dM#xwGg}r{$NE#lG+ai2_pv(oLzRIh1!~` z&u!jrzBZ@f&6;YRp9_Z0Ke34xL&F8K#&HoeIal<)+P@$(_xWK|)vhk&-$>T(cL%%E+}9 zr^)8#zsLTpcbMr2jT%MT+x~$flg$Oij3&IWo*J|1B6&?bin?*B~yT0%1 zPpj9Rk;JMw8zx6kvK$TNqE$b_$R;jVCaCH>Q^|tVSw=50+yNyC3u-x|W83Dwm# z#Gj7)^n&`?ZcThkF5;L@-=r~ifu=R{IQ64PYb~T?){*4;sn?%05VtaP&?fwT0zOb# z0#P#6Vox?E2BlYAJiDkN|9}s+I@aBw;W$44cUSO(K$Wx5mesygSMPQEwDob5U6cXk zX=RO%Fx_HVOf`HL*8G#k@u{Drjgf;{;~t(#<4!~a@&|x_jiqZ6PN4-CG0JWcOWibb z?QSze1N!WJc-nlLDI)Y{uji1(;Hf{O`Os^a$4pZ0qiO13&72ve+2Qb@N>17wCKwNU-gTBD_hw(rXXpLzcG`ob&x3qy~-AC7~)k4~oc zHMUup?9xs-zj~^~@{CEO>PE#zcAk@lheS-oRmVdHKe`fQFuL)V;J&+)VI(Hb21Vg( zn1A`(VK+^tMAR?{1Wt^2%arCea3!uiIZ@?360uhF&*MrE*H3ugK;>}2=*dATMPf(n zOIWon-{|`qhjiK><*(ZW6+OJBhI;oyeR)@U_JW`#za{y&nP-bl!UjLqx-yzAA+agW zd|UCC*H`o-TzJ$n3QNYyKbXy!Y8-2ryJ4Fe%!J9D#@-f$jFAHF8spQ+uOEVtmljZW zONs7Gl8`vv(e8qNW|wyq+Plt2#jt-A-9&-!4bnJx7H1!yE+1GGq36|>n0nK$p;jON zc@ot4PUD3Ezr#T(f^ii`P-vmHX7(|CR&govtl@?Js~CBu@TrjYN;)e#S2?y6^IHu} zdriB!3>j3HbxDs=WxFHPR)|48L-l@P7CAe#(EWE~OS9V#x*Q_7Tv7<3%oRxd5CjJ8 z@Ua+TOe>kr3e}hG#ln!o0`D`B0uHA1f=LHKqfch8Q*7CZ&)9;dLNg8RJ`o{CqJxD; zsOea}k^O4Lt=9QR4bAmt%6fG2RB-)=P6PtGK3ndKl%nVM5%mbDt(ozkroyCA7vIi+ zFkcfy%4_AD-douOc}a2$ei2XN+Ixnl)+xR>N1JQ)y7M^*0~?I~BKZUd2%|wtYK$$f zipU_s2Ux&&px21Kx z)nc@dMZx~abywb9NBM;@FRLb&eu`Gc=Sz8&Bh9>SLMCm^)DS>4pRVg7hR%&52Yx4hI+CbxXU z%-a5Ny9=lLE`l6h1S1&~=E2@D$>te+NGRBDj4TJ++n!n+v&S|K6sa&Q0mx;sPC!i` zf4}p|-%i}WWzrM0OzBzTXd6sLY^s6?li#NX0 zE!KDm?YM+ST^gm*$~imS&VT#${wJQU2aM{x z=8fyCOdCO#C|bF!((+rmSXk$I{qT76&&;Lk7QAF$cPPco_Fct!*c}3@^ZD!X-vBc^ z`pqxuAauVsCAifE)g*OrQb|~W%g>8Rf9de|B~{TXG;n1fGU_tX%jk2$Pc8!skX=*I z`R8@FJ6vlE)y7Oov`(+qF?2@Nh)a=U6KEiJ zFTbnsEGW0O@U~Qst!tcT-6XmA6uZhmuQ>2hVYrl7c4kdJ9BxMGh7?D|8iBUDP=0!= z#$BgjqmgmjiZ`BzT<&%H=G!3!U8IgNdz2mB8)vdn*;<5wFcr?Ax)4Xt5aieqM#!X+ z&wmR6&?6;)i7DgMU8ljFUH(?@E3>mp3HNTsBHk(@>t|wBa2ywEoQ8+0GWhac(7dnu z&G;l9JuxAs=ITZHtcHwqC?y-1Y$o&D7aHm^$k*O!+)NUFq)a|p*(Z9Nt6chH@?m(PW+=iSS-0NmoAsZy`M2NY`=+0 zV24sn&=Nxa|4CNxd#zf=B;8l5b%pMW5A7duOs(pv_5q*DKM?F?-eO){M~0IT8mla z?JnQ6|JLonixpnoqxkDmaDI8TBlJNexGv|Ds3B!U5!34GyyLeRly*@Ub8Jx3D zq(r6AYZXsb@6+>h8MxlfW~^?L5iR>m^2U?y_-b)X-9z6$PN9$U6Yp(43O5gxTjulq zgf-HuCP5@@h2Qq|{N^6Qf(*3#l8HQwC|wOdrr0mPV51A&lb!p$J@FrPe~_I^4undt z#V1&Nhl+JvD-f(za9yTg{Ss3_95OXX7yAk;8^VzSKPq6a`LC8YLK_Q1o>wUhv0Sab z11Tuq{U@990S3mN<~vrUEC#fe0abnkx$Pd~lT7kTHtUMA1SlId^V0j;-`r4z%u)|K ziDT98t{;r+Iv)9jrXrzrO$9#e&*mhkCGf<<*Qn(A+#HeWEI_ZrzVLYv>D$8u^xBK` z1+hw#c*^Yy00|*WR4s@jA5$~OH=vMn0}DO!RR^8lwD0CP?I&C1f+p4Ep`osqP2zD5 z5TIW2`y@z^@udE5Py{r<&vtRgwRVFrB{SZ$&^pL_Ieb)!Onj$51 z{1bLHl|8rf^Sii0HcbBrR0Curl~h!&tq<>Oh=K@5C$EAZbnLTeBfqcj_;#|+-)oDg z4UWTK^(NRz6u?F>PJ<~ve>qCx5B;{JPd(^CR}7eqA>)r$OKR!cH-$U;^X*vaqv{ql z(Tt0qzAgJQ1}`_IWS(@a2u{7(8WuCw~Nrfn>;-nB9BoJB-3 zT)(WT*(^aA28@IK4y+lfPhwhA?BLmt2>AjBsiAJKqknBO(%W>Bc(B%#vh^@#T;PiD zbJ)ccvXsa>>pH#$fIRiI^O@!VYVkQUk-945N&76Kkm)5$($)n@M2&X~*MR z-~)%L$1pV)0Pp*TL(BJJr9^d9Vz>lT9`p_L$4YF2s5p96r@hQ2Yh!wyZCcAG@89%v ziYqBYUQRnLM zo>JJIKp3YC0lZbScvZ0+1i@cr0Lm*ZFFY^eku*E_*c9|*8cxRqkx*flYtV)2g=#=1 z0t3D*pLFPVmcmuxm)01*7-hM{V)hiwojohj*ox{vYN+qcd}=ZkAGkNUDSaM~zdDZj zrSuE-z(P}f_HSJ_yr3Z!o?PheQaFq5t{;g{ViFGAsK?0YQc<<5jG75Z|icy{xE2N03t%eZj!SYer zdf*uyBt?feL$%3-Sir&t(y>f(e`aeprF z1@-Rb*6{4s?+pw@vMG+8z`P2>z|ZlOMpIYJ$2t%FfJ4P#YP5>bd*hm=*9F_g zaO;tLaPl1$Pmw7k#q5+0kbsm&FzrHL4~?#3#;Uh8v<$|QlpG2-&sWW!#MMy5{ipiq za~=|STq6@S@jmTGV0^U+-4)=Q-C`IRU~K~dKjhWvJRx6j(CH%vu0@pSEjyU+gbW7G zr+_|Oyo>|Y*wW?@AMhS1@UD;JcHW-@2xNSVd*(4e&G_`#{_1tYS-Id9UK~HiutUNe=b8+N1AY`w+@V>(cQ}eP@mTzHf{uYCr8* zyuLPif$Udk)|yTb1U~PQx~%*u#fW?#CzVq;Y~$6&q+b`VWe|YI$XjhSFgT>$dE-K| z-j-;g$KyKiIj!D%#IzXbIWw7oNVadsK@WfEIhs8D7wm3QxpWK5s43i^XA~q%*+|0=dHKkn?$z~Xuy&Ir zsNG>h$w;CzQ7Zamlj}0dc`_2gevJ=}C0e{5PD=0lC>*ZUbtcdmw5xRA-}Q{u37u{o z)Bx@QGS|wAsGT1YP~zs{33r81Eqs-gUF$x4NHgrs0klWdY3;#@i8zIOpE4F?7A5(R zaAB2 zCZ0m4i$R@o%Q*HJZWz21t`pj>bj$7QdOj}o*_(-Kz2@yYI4S~DUA(B$G+mV)>n{IJ zK7}qUks*HH!K>odwZmaG{8m4|vxTK(Z0-&lH+ZcNcq^o^jXPb{LCfgsvPSfUVg$vQ{*vzC8&Q?unDSAV1hbx=1XvRq(!-$rYOD_ zrCSz-U}G9+_x&@3BH$4%!kO4d_5c=keu9W&eq#ztD_VSfqhQkCGP|IR4F1p>F>RDT z?xo6dWENktsbE9GNMWg5z^WhRY_2HCWnBs4;Kh*{!}&gT7@||c<{r=F9B=uuh|9XF zDJS>x;sKN4C{jZ*yXh2DiK@EWddNFWaOBD*&Zvnq`@TcsR?o=?RuFWQ8)|y+9Vf%7IYb~Up3lWISeeH!#^jURW{}+S0g8*o>c9lI zGj?Frpnj=*m8OJ@n2CKGaQ&1ZKlTdA5dG<3TiIolFeL+0SvKMon-RcYs%7(Z* z#GHwD4*-u;eV!YRni`f+qYWi+&^_7ELmxh{e0K3yn-~U4#gh`rrw;`rx?<#tSR86w z_bjTi4fJ$ZASrDL7`OU*Sh3*UHsG7PPsKjqW4hu7f#14#kP`Y+N8IfdG-%;BWNJ9s z%$iL|$@t{N_9IEJwfGRVJZ7jb8YS#H-Oh4pZtnwbb`%8SVW&Bhn?o+IDlXdXA_Qoz zz-q;+LAq~n)K-s?Y{*Bh+2QOYrr{b!WP?FU?=Zl|Cp zy<}9tBev@S{S~Rz{=C2TysLM=9LMW&+~MVVF@xYX17|hs{2}$t5{^44Ja=KQT8szz z^)={)nAH2+XeQ(A!YS{GX!GUlZmG=;SJKdUHk&e@KT~Z|G$|r>aQS90N$7TIciP^0 zqEXB3*+shUp%zW3-S>kEg!~Fti676Qk@Clh616r`Wp5!)_`CnC2U!4YxAQgydU<;8 zA7v3=y;ocWKIjy5w6b)K{OK%HmrZfL!w^E3%-yMs%!_(-XNhOmq}(d87M~uwdXkxu z&m++LFvXvSHl}sCXGZuvsbA`cGgTYcDn!De9?51jgO1F8A!DhYP^(Wv%Wy#6D3JRX zP3ir1eCOC=*P}-6N@FapfiFF7P9Q^9=P3^+GaGm;_Yb}9Zqc64AQEkMcV5@|2SC18 zfZaAki7q;Pps+d&fzh#@OZ5EI=dH;};|d!&-F(f)nV!d$AnU_3|*i8TcKLv!xn(#YB;`=h5=mQ?sH@ z%n)=0eywOtXJQ<_BDrZ(!W`lQ$6_dEe5JH-wGEX-!M%LO?F>(A|Lf8In29?>M?und z$3n8&ki*COyO$uxGs;1)`Qkcnef+M|?}O;`Eqcr4)8=7n-ZLKUmlu2>#B$}AfA@jv0sfP#}kCjvWtQYd#b=MCT+%c*QAB8S3z{0Pvjt>J<4-1Q3BW*W!d=Gm` z-UlPJwE;t(P3KFFaBvlblHX&rg1htOM)>D5eeFPstOe{Mqk0=pmMj66)Rp?3nb4q{ zWBcXC9L_1BIC&O~h zy$%fsqvaJI;Xlmn)3M5%kU$p+pXB0HbHF)m4j1)X1h6)etj4FAL-)1)F0F_MFXF!Vi(w2tsV=vd6>u}eGd zmn#7Dh`~o@Yml3<|XE)HDI^f4Q z@eX@NqL((aOuLo!N{7Ga6fFm?_Qxj%-35ggs`N%CM4vxxKCCp~FHbohtZuf4io+y{oxJ0|2SSr6bi5tKqGK|ol0sPE zgF<6BxrZF3TO>w<<`j6i>iu+cZaniow)J>WPrKQ+QNgklt(tWD>~6Sb^p|82b9KNA zVau7p`2b=c7>%*zeDc?K-x$6{CK2=Zq|d{fuH&DEE=#7~2%F!oaI?L4qO*O@TJ1O5 zB60+q3s4ly%(K_<{x&8AJ(k8_g6}%xC-ic6VvQbQHlNPCmfLL@I~1YnGTQj%bX<}q z5jLV1KzWd=Rztu?L<}Q8+4P5SUn+6d!w7okP{7@Ww4W!~uv8i&(%M0}1giLJlX?yg z$fxxJ?v+7o*b;FC`iNcMVx601+q+*KB-Q8JPa@*MhxD^tlDLt&RbYD8S+4i|Oj;qj zOX;}XaG|;w5G(u+M|20&+`}Ed7^!+O$e_8TF8r03%NoWuETWBbb~>5*zxvSSR+a)% z40vu=%A=tGA){Rc67dMWTxpZhmNG@+5UL5mmd-*P9@)9vK4lzE z;lG9n4-+g>V`Xrm4%F-_lq#kQE82Cq@dsOeME{LHXtD<{i>(wpnDG?C9ywE6>q?8A zxX+&pK&KR{3`-YJw`CS1Q!vShDykT!@v1I~vcMu|H!9-W0@cFlsmR-Huwu$2pLI^1 zR93d5Rd?a032X`)e~{jc)PcxQ0pLsx&TRZ+NzJPt>`zs~EDQY3^EsfbJeRCk+GkUm zGx+wnG{nDK>E^xFgW!VF2MoGtH=T&l+?_P7h>?#K-2gMiPg<1WWMgvmFw`Ss_Wt4; zin@^$W6Cng>S4sby4J_;rQ8t<=01@Lg91hPzvgcJB{7G76Hxa1ND+Ct=u1NOu(i+k zKgerszk8<_FZ)$Yonk7Xt>%%>;&e(i$88!o>@+#Tr$-X6*T;`U5rmP&K9TI2 zAAr5S7{(GB2phzu_peCg#xjg=3ShbcwEWDHy|$X|u~}>#Y&!ZL6~Nr>Obo1Fd>=)x zoa?v_s*N^7FsCaQM`l5Eia&WXy-j2?E$I03vJcSV--9crb*HVtZkN=!Zbymo5BtQ; zm;2CX+N@@Kv-!UoLX8iyh8{PcfwdqcF5Y3lLx{&we++<_NoYc~r#jGu$LnYpYppDC zrAa$U8RqPDTT|A59V%DR1SDQ;2R$?9KCPj6-{o~gO}$=QEp?g+>NPo7xcU+l^>_*8 z20YR;iMS(8Sju?0W~NkV)gMiV`7H0V_9#7mQ~c((7!aR;%cB9N=Mtxr@7m9F8pU!7 zNvXZ!D$%U?G{BBEr}oWj<=gng)`A2}5a35VPR&YR5+2cKzyODxAEXOOSg{FormORh zd#-}GgatS`j{?OiX2j=-FkNkniiGZZW0x9iiS_c90J{!09;j|;xsNAx{uAfEJr~T1 zN?M|3>?hW}k+`gu%fqg{g;giBf%2$j_Sz)c=5wlON)|xgvvz%KRPV5e{Zg6VY7F|b zYy)V}yY)7%G+|jd>($1`9j(^e=1(^GBhD9w>t{b1n&Yt3)O?3zeC}_clI7$mGqT;%RyV~Mto0TvRLv^(!a5D{?`+g`WK|W^=@i-cLdPZJPiN<4rMZxnGny$yp z&1~HKHoIPWwsaA_J}U?k!l=%~d3+JNX5nkrKdfldvo|KI4fJXs#6E*-@KqZ_#I04a z=Hd?UNQp}p$I=}Liw~XuW(>`uQVTAK_EfK{oyel7ZzYW@V(`WAHQJ1ING0(_BPEkX z`+A$i^=cPQ@W~EeXS4lNnWb5ceiRm(Dw!v+aBS+UHt=h?1L&#GWeSzr9Wgh@iyYjw zvB3W`zhW}k-Hpe(p`6CFzy_<(Q93tFaQsc3@l?l~RdC~|;=5j}=Rfzcx*RS-zigcf z43SQQ8sB8jo6F|KPKsu6S1exa4HC;>ccRFJkPxw`+ih%Ul`ifsdc9^6cD@CW`0kPO zIBfLSNv8n_xR#R$R?`PzbhcItUP<$o`@&ehyEQfMy;r}7*~8B9w)tZnz^dh5O5^k7 z0o~r-+?ZOMWGT$6eGKty-Mw9HeMjp-9#~Bk8`p(W^i_i_r*hS|N1a zXV;S!eUWJP%k5dZRUsJoe*Xb*{?yr-LKO6xue05zb}HxcdJMYS7} z&Ge%kXJ3cb`&^D0j!VCtnXTQ%u4@1C{S0_24o*;5zS0fsO*(v2P=qk%g?;1)b-j*> z9^UVQcOUOM;-~yy-Rzg^qKQ|Vm&1d7Lew??=-Twe&QcUE9s_<##1M642QJQfP8sTv z7*N%(raH65kA;qTiBebwctraN`*2do0xEflaAyAiN&!m(49sRJCvPn25>^MDV&bSo zE6eE_Q{WLfaT?cHGz4$T>(gv59(-WV&rMoZRmQPD?>R$!2*Z5X_CH+@AJG9s+OPka zkpX8(^P)uSf+7tfOiV8uM^i$Yp$m21^PZ^76Ev`=94)@q#1;X)N@rpo+8L=^G;qB6 zkEZjo%IN}Rl^dQ2@q|XXQ#)>L!+BJ9oT2$YR2c1KyG@49!djXa58U75sSqW8#+SvM z`{RD(`K#fuG9v;PmMCD&<#~B^W3(%1d$aWhx7qcrPFlOwj}Tq>7H`qu?s4{{ux6z< zFutAc3vzK0h8*NGze}d}w#=8(MGITYOy7F3qIoJtS1$OW`Z7?8x_QPt$S<&)9Z0wd zLW6LDlEm9y^WAIe6NyiH3f8KR_qsr}-?|5|{q12&kq`xsToc93ub@y5dnjfP7Pn65 zFUIve+Ee8P}A;>KHB+;ZN-XAiYE2rl&yzc8}K{vIKQn131y` z1GA%2Sr5y#+C!!4BS>NUbq1qp^TxXZU+aY~ro$@N8WN#_H;nCjql`K=?)0*2(y~4F zP$d@Xsem&{|C=!*%l)>-O8qV{E8yMD_AM9It&Vu_LgaGGZ{@bD6x2H;`h;Y7afRzT za9q9p+GyuzJka`AP3kub)rsk?cyW3x07EnjuBlh-Q{#)a`@(#i2% z}IIIJe)<4nUk!-DHTp1b(+CCZ?_s#jbcGC}nsrHoOwO zB@L|#SlZ5>T(P5vAF#{7;bu>zbzPhbHQAzt;7%*46;ceL2iTeJ`GJ`64ljom>H=0R zZv~IYzyfD{V9_&cNXyU%V0#o`jtvr%4LSC;cDS8=)2i!k?|BcHFMpq_`3%TYe*%lQ zeC#Mz(ngV;gQX-g^c(=Bv3YM9i$GEnWpHSz&4cmOG4DUBk7MVJ<;K6k#rn;i0ryq6 z@rem>3#bmwh6_=}MB|U25>-D>kjAF^rfs?3e=q!gyGE3=%sMmi zzXCEILVy5i^?obrEf;}QM~dJsaSzl$z^6KMewQe2><-vM0pBUkkjt`D*GtP$VeC?? z8|{C}D&U1f4zBph=gAcLr}yfkSSHo@+8w4u zrv*R$woM&8Trs#3-(3`E@ji?2|3@k^T0UQ~EYuj9<(*sO|B&rn~S0>nu9CKs5(_!%H+n(dV@U7hrw57{t?oqjxx%y(CRji*G3|fy;aN z^sg{5<47h18|YncZRLmEqK}$J2gERDcomDwk9$eqPL>@$+qsPXwTR~s=I#N|KJx3= zNZ}F-=bVjJyr-U7QuPB%OL%H(N#B%|I5yo(`kA{$LEayfkizwZH z5nl=Q-3aL~0^ZknQ~Mq~!d&lcg)Cm6JT`agI#$)3@R|NF+v{T>284<}Nlh))iH5!- zu>X@ZQ4e54=`BxTY(1|2b>zNMEGwQ`%w?)WAd^TBbwsp3dx9udzzb+}5e$@Rr= zV*-VxH9T*_A1eZApUh)YxCkIM|3i1eH-6J5bhzf`J*i{m`sC1jc}nPLT)oIhnZIW) z8%e)4E6-}O3U*-9t0nr=!YAi)Xy8>BU>Z7rK=P$Sv+r7nz|1T=U^{}yZJgczLEdQZ zQbDP(H`uc|?9iu#J~QlCJC{1V`&z#k=+QD|{uG0{=r&T9+&;{I)?)TBZuOed_$$}= zMJ-GFsUJ%}aR0Np#$K-YZVSmu_wYR)T%;Y;k9hNS!%Mr-5e;3qHT5PdZ%?%Imh{A{ z`;{vbO-R(ZdVM=QNpY(P5MiG^PB>}T|3M=0z5iqwaN5YE-yY1RRJoOh%cZ9f)5{PW zwe1Caf!t7ws$-{6g__09!(-|7+1k?baQG^8Zjvu{%+QyAG{yg*{;gL-s~v=!>qic4 z-Ej@PsW7T_yK`(hUmGEhA_ggk8j70QZ;Q`T6cOIoFID#f`PQ7kAxxse%C1;3y*U(z zV<(<0z)g%jfVcIJb8>4(p0$8f+JBFdbbDUQU|=lI?LE|IME-vNw0XCUWz+?MhDuyl zp&7$8Az<e}OQe0pHD50-NHJ_qXn5_V+4)m!wqE8ldx}+ZgL% z4+3fbr9RD%AAEl@Xs_en{<#d|G6SH%M{LrT*L5JIj5vOK4rqUQ^s03S+^l66gxtA4 zk7dtew4xEmeC=;QE#UF4D=l$GMdVV6^bo|UNP8h1+IxR1QnMCcTOzI?Ya-L*o6j-573B9;O zTBcZ?Iy2e{3z7hxGr5FdP$SFttL%d#M2;zM*FLjv9)d)ES0hA0<1<1{mfU)tXN9fC za+cAAWAZnsDi??4e*LAE zPsIrLXjA!y0srqw_=>7P2dV~*@YGH5u(d~ZK2|eTnr6t0+rB+Pi{z3&k`}JhSA%lf zM3Q5}=?a8X7BT5I1jn)n#T#HH_3J2>3P+u{ezob1rWFkXLO|-x=Y?kPzhx6Z5Kv|5 zPxac`|2cyu2_jn+> zP$cgO2jYIP?wdJc2lBa*K>>@q@UuwCoto=-llsQPd0z4uK`_CVP`?Kyuv}0m-MLVx zyf7arU2#iteaPqwIQ*f1cIL1J)Or7fy!SIh3RmNW?Zt=-9R@YlchUMw@zbh0Y3 z5`lDkV~pUYAv7D6Z6~Hd79Y|tQl=MW<+6$1s*Z95va=h;IdRJ6?zi3s zj7@C;h9DQo-jV|myWUrKLd~~Hd?oxma!vCVjp8Gl!2KBo6^a55aLQc~`_;zO@E9T< z9uc{UwQ5pgN~9^k=*nlT%t%)JtmS&nsM=@5Q-7U)$TZVr@Cd^CzLLdN>KCswW=W1G znMTvVIHl+Z%_*3CbJ6Rw_DiVQV`IgNa~~Gr>vlaXRjI@hM8kJ!OJfclx}Y5Dk@G)b zZpJur+5-cIeB3up62FNV)R+uBgy2-PP4 zd}qW6$XDXj7nTcPC_xd2hl;@9)YC89r9Z>}Dkvbu3@jc&4L^u%e{?wA`LceGUFAQ^ zcE8dU04|6ZMt8t8sZc9fCS{S0FbO31D4ki%m!(?EPG13Zh}nyax?4g_Y&>G?C6m@4 z$^@PDb2B`%0O!*0)K3SI<+@#9W{7WeB(+c2YMU2en^Wy)8WK3ejEaCQar9xlZ9{tP z8Up*r)XJZ;2i_85!`F-!(g&CK1r`l8b1A*_(7IR2Hcg_0;T{)k=&B{l7Plv><+^QY zey45m|57b;L_MqR_SG8g7kgLqmruTn!BVu!=2`2X44UQ(Cdk67Ety?L_1jc&BSI-V z_8&uYD!3ySGe}bs>h(DOjxkB2TUuKA*!OL(_^k&3p_gDvizlGKE?Pa=NZDfs?`t~o zvBVZHp91L7(H19?ZsK%2z2%G=@8Eb>N?#3X4OyN$5Dlgb&{rI~i|~sDQo6JKD>{pr-2j;4*<||hj6qV9+osQ0tFi^xF&1j)9 z!A|cAW_xiEimj|ZxA?xfh2J!Zb($coI;PJ8;IBy^a=ieB^G0y{!_xeQH)qh}CU6Lm zcMeoEt@M_>>>AzusR|sLWTqIncr=P@6%oFp0DMB+?D<{2KvRhc+M>e$g>~vPjv6-S9W9Jhkk>J$$*#KNCf}Vt4Zm z+x;RmXuNFw%-8lh(<6kBY`0}bJd#6QqQ|{!00Y#Oy&W$Sf@L>9p@^UDi?Hs2lG*n5 z^}rcXA^tbE?+}O_F_Mi>`MT{Q0R{OZssB1C=c}7Y2WlKGs(%=+XEMdo*!a#4Vud9o z;PImy!RhcH8`3+&&zq*k$dT`~8@b*b6(ChL_Qgf0zQ>nElO^0_3rDxTiz5Ox-?dP< z&1}LS(>r^Y1_UQc!|x!{X5M{S>!TN`Y|W1+>$uElF4@MzVT97}%s>y-Yfm4R^wN?v zTX32jh#G?-`@tVn)Sw>-g>}<5e5q{GXp88g>Ez_(eI7;Eds;nUcYi9nXuxJ<*CJ1W z@ljFY2)mK4<=Zv;DCM6UqN)A2vsUhssoj=APFB8_WCoU)9;uxHD z?;*e62aJFW=IPG@#Go=tS^u%3N~?)JVgAeQ1yhOw$QOx&z2r@Ax7Z0AmUq?iA3`#n z7JzHiW`V@?5C z>nj0*$y$C1y&~RZi1F-3<5H0ni1=h2uLHt?D{^!yIVVH!G8ba5*T z7wAW(IMb(KJak_oaUj5FrM2ftmcA?o(s&*N{Uq1B4j;3f;pZ#&z|i0*F)|}FlR?p} zO_;slnD901`_I_8MNqY8wOo=F65vc60o$bYK9MCpZ>S2$!Fjnx5#ITVa40L@PXwN( zAT_C+?q{+4rJLveeKe9bnhsld2e(#Cp4{)k|NIZJTTeLgMGkodurotk4PJ4Z+s;%P*GN0gPf5n5K?3f-|e%2!q4Fu~@iNJ3M*b1bsh7>&~k%_w##x1}Tfw*)mOvGvUd*Jyn_iklhVt}&N5|T_*s{`|LX*Md7xE2FRf6JOnG1a_C!40 z7T>Gx^8kHl-#G=)V<4B#!ose}d`xl}tSl{~ro)OJK}B22Yt#%YS`$?dVB@@+L581h`Mb9-rIYB~O}R|K3{E2YgoGCOI;` z|Mkf|Ut)mL4>Ru+fW@#S|0m^NL>41g+UGBu0~M| z%;%`-a`gr_@n)LXO0D1TJjF5Je8-=m~ZG0-Tkuy@J{FBiP`1e*v{@r z&~+w1P>o&stOAC~75279N6Xsf9%`GZ9Ej!RcKoEG>3iG_g(!p%A~;VHrI6SZ)}2&M z0bkWL-L7ald4(SRwm5eRGJ5*CDjLhxgVA%R9gR}jnsxyrZ6odw3TY;J%pC5a!4{t?K zb1tXS4aQ%gP>(isJyC`wAjn2+m-76Lij!#YI_|s6eBq20@8Ipn1z`3(v_7&p%b5H@ zR(CK=7?pKsIQ#-&w2j_{Ao<_6t#iO?Cy7#$6l@L!6t!@HcZ{o4Yj^7?0pG*{NW7PV zN00@xF^_6J{w5XbRhVvMxo?4D!Q^i@gUqbA%$3{dv_$|$-Ee=OQhz&rtEpdJa0k`bo?A$$NR657^ou%C0ip5Me*`Nev5Z07*f zJ&={Tf68Py#vr3PIzCd3*+JW-&K3#ztcjY1x!CCW19o9c|$qh zXu*JbcE8f#rd|xwJ|T)BZ~YVxQ3B8e%#-T_cZB98B~|mj;L)0d6hyf`iI8vxA=e>G zVER{F@^2u)n?}2Hdazb<;psJzNkkF+BWcBqJw-7EFK} zB3GbRL1bJnhaT>#zmzlHdC-`ZmnQ{Wt3XR&hdpJz;f)Q<$tw7-^(c2)%0}G@2XejX zP^jE-yIQxgfoisUMW0*}RZ4+;mkm6m3G>=zX_Gr%Xh}9`^Qtp@#AYff*65UH1|N9& z&GeB;)dlO6ao1SkNVac2w*Q^2+Iyp8G&a_>){7zuHyM|BWY1J3|NL6%@stjv-c%UJ zp0+IZpYg;J!${!CvQ9W8c$rH(f41FfbFgqxec2S_m)pzvY`dYj)k(!LtG zfrL-ve!GqGk*@uoFjAdVt{u)&f5ggMdAB`PYja;kNS@V9|Xt;PB+ zRMv;n29j*SN+MIByNUWLWm(^XNWRY$&(_lW!U`= zkVlJipJP!3D>s9&%I+7tp0 zPN%$Up{QSfwE~~c@;*4fhI>9KIkwyr{hP9~>sL?su9LSJaa;gNETWLCKu>~Or_X&) zkf>o5d@>gDtr*9@yhdSzpTt|nv_JNyK% zeODcmrZ9J#M^)5;A<0mF(IegrEEdc+R2QaJC0{WqO)LzQ`IcpW2mlqyTxpH>5M3`< z;rxkaAre^QKt(HM$>tC>r34opGm}r1dx=Ygrxo<{(vwigI;I^nrx3&Pclz|&dgd=s zYSDZJb_}p(EB9%`eo*UL4WFO8EK%AG6vxdngVk0`Ej|;j-~HA3++fNPxPYkhW5{{%9IxEqnMCrTXY6Q!w?}3q{rr~t zUNjB#r5}ScP{QP3JCaj5jh*hJL|fC*7C84MsmuE`_i~#0CFK*_e2DuwJfZtKL606u zn;vAp0~;o)5^*evwJR$sB$pNHl96tz=EnJ#_WYI;5G#e_onZHuw zU>L{eB2}#FQ*aAY6O{JFZb%f7LkRET#y6?%!H_M|Yxy zW)uhF$SFNsWFi6VCgd{LO+d%+20!p}#OOR6`jRy(ryQkIwHZze^*fPWxrT{mKr&2B zZC?+h3qkTHLOhvkU-Qdm#7H5e);WT^MT|oLDHnq>%f;(;47^Hpy`3vRUKRC|eC}G3 zd1}Te%@nR35sRKJr1rn5RU2tpj+UkXyt6WZW3boi&|VETD%1K#vHP_^Y{ED?h2ezu zzj+tdS_)cBNXcMyn9vBjmnP?wi?h3QkYlDw^TzD49E&cE#r__idRUR~mvums|Q3E)-Jojmm6`IM$ zgzemiDGOUy@ToscR3At{`6oo6g<=rJf=oPH$F8mz03}RHV(t$Xf-A@T!RH-j|7YIZ67lJtMDzl;q-Oa{rg}Nz$r$v`yP~SIB;u~` z(7?TEm6Ju)4MalSU{^$wf`~NE9G2aXOXwy&^+V9-4qIXBmpe%wesP($X|tCil!?eU$bZS~LY`Tjnq)FT6KxcO>OO)g)d0#WBx9%i>k1O34 z&>c=WqS&+cnA`y^bq5pA#*yFl!~-~7x?v@lQLn1_qtPiXMYQTg1Ejlx$1&FKBIezI zWSH}fP#hl3D*6l4jgQ$kepgFw05V6v{xTWwvvrPDuG4|~w)EEE7iB)j4OKuUYJ?#( zZ5&1z+q6;X~d)r@3_Uq{}hiAP`KWqiS1`k`&>vt z&HQ^_s|jBshC~?q7RROV1EUs_u^kBO+D)3**&JKtW}J?}SVNT$W!sGk*KAHvE;FjU zCdO-XlR;m+LSaKvk3!rz8(DAgtQ=XW9VWrD*M-i@HmLce2(%vu@?mspKEZ--L{Lv; zz$Qxhol}*&mgV;|Z|t+0+V45qucPPB_RVFSU@Q}-t8=;bi0lUa_oc?<+pfoe_DzebjS8Li2(Qj3gO#i4tV557nGlg)g@@I_ z26rGM{Z_!y%8V0C9pg=4x}Es*=UqzqgMcY;EIeO3Dn8(e43)M?jQx=F zvIJWKxcRD_QWUHe!0%PmRDn!G{H?%v$EHx7DtZc(_z;A2cJqN9z8nA{+f%)>?oGt= z^^r<@A3O6pC5c_!ILNZqO+`gr(>#-LTlt5Rvuk*Xf!Jn(Ik&Jd8d^uYyrZU=4jxMr zVc@g(s~Kah*a2N>Ly=H+3Zr+B!rvVd_&uXDd<7MFKs7}s%BnE+o#ljAWQq>_fXb>6 z-bgiXk~8TWnh}`Zi>G4099%|AVUwg33ZgW3JYFF>?FuuP_WSM#{VIU?wtE)4^XBY4 z0lD=FyO(&!QSB{${pe5(AxiMux`}5Us>)hCgFzIKG&dlPGET%T^U0`6 z)KGFy7oTwcuHaxqe=WjP@Xd58L)f-6?rOqb z`8B8YEQti+ijNvzL{QYD*fuQ?XU<3`0} zC^dAykZ_1XYJnl0R#cSI79;D!l}k)YeU_PXlzETJiWK_Lw{?b`V=XrsO}?MZ2QeWk zr2guYsBoSqZ|*?`m~~eBU_XYIu^1E69xg=2p}pteRgCxam-TMDs`l9B&Rc`dtBfG# zC_v-Q%!&ShnnvZ13Kf3B1i<**^Q^X0%kAG<>_#uBPA|FhZj-4xml;m}x$6EG$rNr! zcnTTx;c}+ipV=~KEKL8n&>k`w6f(Ow58}&g-U;#NYI9gkS`UJwzQ2#(*xJg&tK3VV z$Jwct!Px>m-*l{8b~^ziAfyp0qw&X=&Cu*?xbl4@C?NF~e%~f^mcV$`#?6GHvojNb zkim3pCE#C%kh8{+nIetObC};DBCVvyWBF1;Cb~?j70&+#l~Q$sEOvab;l~oRA21|bPi;p^84^N#4m-`%ypz=U>U8;d}gO%P7w~^d| zp(_f*Q8w)==N>*S*e7Rl}PUV;rbsBXj@@~Dcq-mzZA&IM%3MA_qc0R`5{ zT4~}JJzsq*WQ}Bu(D5~rvM}EVyW4AYOX!fO^R z*2!v~r0Dd~&wTQRq6(jLVxlJeZ5UVhg)WDT_t*O-Y0maNy626amu^4}*Gv3z5#t`Ou60RQTrAqG(VfqT zA$)yR1W?j$&yJ~|>7j9y+dmON=W$ifSYB(c1WjF+1!5QKU3)A1R>6NaQZg6HlFc(e zDj{RLe~OqA4mSHn863Jb_?sl0?YtNDCxam;YMinqpCjAe;2mv#F%-^t`Pt{hcI_Vg zc=zDdHI(d!bFuSGeE$e~!SY&d3>RI$rR}^|mo!;y8R0S+sx$z(EltgSXD=aYNnr`; zwo+^h|Lg9(yFsfoK+EE);+3h18e*C3%GC{egCA)oKR{wLd+5b%!)M$0apR6~O16c{ z8(VRyh`kk2EsE7Qj4DMpnqFUT46nG@7g0)uaQ(4bpH5!)au!Y-$IQ7lFh?*z) zdr&SMQ^%kt__p)*2@|CETc`6Ji?eeFpTg$AGk*G1ZNjnfyQJ4E>Y~&xD|w2$;s{TEoHGfGn6(U7W#CpBbJi9 zK*KIysgFi60o?EQMs|%^6@!aY1oShUwqlRHE`V%4kwRQ#DEf_+>(C$K3%Hx;{eCW- zm!yv|z1+gPaA@2rw~s}UFzi5+Tb%pP2&jFOS6y=CBnNsvyrv`Mc|@YY(XYUsr?T8l zQ!iz0w!2uWpq9GzwSzNZX~Vj2E&b*K4%uJ4T%o$@sEyw?8&E`!N+nj}&F7M48=Ki7 z1a)2UK##m5R@*#v2B_)3$;8&DeyAYqC2`ltAD+^lDBC9QLEHULL-$;y|7=*hKAkQ8MXV#*P%AR4;K0Tx zat?n__CXhnNMS9wfd;=OX9CJ z%WD=R>2-gvcwJ&Q7VcaCL5iY?xM6?|NJrm?5rde6?#iEq@N$2AI|Ku?(`|>sn!5Jq%Y zh2C(Z+q(R=AT}7xa%_z%p$bYm9I}~me~kZ2I}t*bo^l zGX9%Srov=clXpVs%*g*7U#bWfYXwXCpdSb)c)D( zK@XCb059|7U!-DbW+j*<^IK_pe98KL&9|U)3hKj$onPpzr$|f4?-}HJmuvhuI)k3eYF)yW55P z#O}J8?{}D~%qM$g8HT=cT>&W*^-|kEERYmOQNFY1%|SxXVU1V@=H8XzWhuiG$Je@k z&pzIrBV~_97QVg_hED&<;mh(Dy7w#$cXe+q2f6jVO#uIi)+>R&o(}~eriDqDr3xQ* zz2fF9p zLc>Bd;tz^)O_J|y;+(s0Da=3FXNh`M9$V8TK-8;pCu|#{dcU!&W{C1cqDVZWQQiG! z{@iT*YKVqb5r1ziH#C6}D%lltLbG|rt5f4Xg#S^u*832@Qm=_h9T7fa)|Ee7K7Bln z+f3D=mOD47zxJ{je-Tygvxho_z0ichOQ+-^KntJQq4g<3m4CXIfm^=4AShROs8EYzTDwK0!~Of&%!~@I~#a%nKCMI>QnZO?@+<9 zR9p1a&oo(8onSl8^=^K0LD%cnvU?orXRdh38@K1fFF5BXxBg#=4VPpH+kRm6D(r#u zM^PjnxStPt)Lrje+0b6c^C)ZRMib%++F9#f2l16kfoDRb?H+uFYj>5;#fIGcJkR}3 zeTlOKR(i+C8(pTa1?vu@RpGh0&kT~!oAmy>PF=sd9yjE@efPC?{(Kd0GXz4c-{@Cc zVzmxx=(z#YbKa_1Q&abp?c`(?Rp{B&Ne+egp)6<1k!FZcG3meoAH6z{c9lpLeIyQ^ zyk}^RxiD{sgp~e%M3xhPh&+)v1uO@!>j}lvQ5z3aeA-b!lp`-@Dj_A!lxZ?ENvVWs z+RZ4`A|9eXba2Xy6?2qcBYz;H*u0pKS>F#vk^J-ficiO&0b3sRW5)R~8>q&1_pMxn z9PT?vF=oS;71!ypauJw);6*|1mM~aWijeWI(YdpW9N8Gk5gh}rfPML{FMYLJok+pbK5bPU|+f zGH!1VECRop`e^h?G8{YP7N@b>3^Zx8=p zwmU-uFZ0g%UE-E5U<-@4d}T{?Mdst}KA6y)J|8>i_JuNM9=j{kKz#DmLuo!knLdW_ zVY}+JPg>Z{qjsihK_Yl3wr>7I3G5X`7kA1Wbby#-X2EI!Rb>(b5qmzK=;nexg zDn0+L3+lP_g8)n-sSh%&%dPs2?yTg3hN`&D^_d=O;@2PLBILhkX466mA>^O3zAa+? zIpsmrg>0jwUE+qlDuW7V6)C4V9}VJpo_HhYu`ep3qa3!f&| zX@-r9w(M-h0Bl#$^`HY4 zAaQ#Z`k!PhD?g&f=&w&~E$0y&@HK$SBf5Sq5O{Ug2Or9Xqiqi`yR4!@J7-G;?C^h^) ztDHcxm$R`htC!%XdU?6#oqS~lCeb6m`!`^9RSj#|k1=?a=H6@i0*(vaRe=w@#mvkZ z2P)h0J&LYDRg&ofJPWss08PVh?UIVK3$7_PZ}ALo(Qk60KYe++J^#JEd{4dpM5UOd z4Yr$`v0VKG`&{k(N>-!#VzlnF-gtaz%)~dq1bkP)gvJbFto8mYgc3Lt%{g;tL z{S6+S@Ro6^rkE1Ym%LFZ)NZKtf(7j><@Sgjgg4+C}m=jNCw6N z65Xltd2i1F-XlLBYTcyiQ>H?jp0hIw0AodeUX_;|{e>}iu~lhBN=;n{I2T%Pnuf_# zteKBzx3C*EhBerYo2a$*O!ieJG9uL1x@O3lIIn!w>*(>wsxo_q`@jzpy1MC0R5NWl1qvjNUEp@}=Cb5YGZVtp*iHPFo!2Gb$X{nhxetQA;rGqmwMEK!nmhvB;O!Ro zR?1p-3wQSv_6Ba7HDD=y7tF1pm-pF0k^G%P#(GrDGo5+;Mc}*#C*a%VeC6igvks}a z_t!u`6PZg>80j3Kgz%5)0Lt&Z~QDs>q1Ga zqeQ{Vp)04*-i>T*hsLSfa-pJTP!j?WaTd>Kv_5_BH*JagQ%FWzDww6;VL~Z+x8}9j zvQ1iCTs$1&sPu`Pm@w3Sd`-Z$yDUA)`2s(mYwwKQAo4ec30`&bvHSw z0a>i+)2oN<90@;4_)P{HJLsy{|M#nKj)Yugq*g5PXq>6P4#ZlRI;+`uv7s=u2(WhD z4>jd*s7>a_b4oQk0!NirH{SEGbz_t>&@I@dq^`DWMvFm%=og=l=ett<5oT=4QLrWH@oEXOv|S>^jZ!Ok84&UY~M@c}gm6|5U*{*|7D;-@Nq98?~VVi^>Q)}ZJ7F*y)6fL%Z0tLP6O8;KL?HR9|ie< za-U~H#h!Kuc61|P5nq)xSb%woqR2bczT>8j3=Y6eJeG&Z?j1~k>&jLrfKRGj;n5{Am-fZXC3lDMLA}61w@FhTmE=B@Y6%=uj4{M+w+3FW)8b7U z=@L~Z%L4}oEEYCz{49<33U`)i&iv!YM=`VQMrwbhwRaK3hMm8e3V1B^Wo48UuH}Qtc&-2uBeN6}T3AgATDbu+4zW!d-=i$^W!5Rmc!27gI_$4TL7d=e5X??$OxoPTn zwE8KE`8y;#fAG?_5B{KcM&2YhJDL5|M);ccT`P8Yt(^ z!+yJ}j{chx2qLYJ_W|y5u6Kx5dc{VxV0&;=`;&x#p%*0`^xjDFDYyL!9>buhR>`-@ z*Aq{N-Rb$&!KpQMs6hUH%Sv(t7%7D}IE(*Sb2o1o3_ z_9V8wCIj3S#G3pB8}#DrDqA8PfXzTUqH|Ve^o;RuPfJfx(}Wjlluc(G;`Z|=Y1Vlj z>s_4i#Y@1spvOybFmFUDtj*>-mqGq{!@dU&n9nwrpv$fJt;=J;tur*>_Hys>bYtaB z$$0_5_i6ud^}q@}S@{ERaceOdv2^U%RvmQ`xZCVo--o^2&I`LAa7~>@Z87N>xl!s= zwtXwBS{*bv^%reg_mXUK>IiLHfAq6&ze2}8lI&jV@U!6~V>k3ipEn2sgp+PKU)BSe z(~X?*0B(yqpz)D>JXb#$cQ0=pQHkt}#3@MK`vL6Kb86HM8==#0D5qrv_wpN z{Q*X7x+M19wBPw)T+`}EZ41UiQ;=jb(EF;yPFsJ*x~yeksm{-GVfEI`^!;yU>J7<&2Q&Llpl#vUOB&(aAG_^J zjo=0#;*x3d1Z-DRNjex-LVp4=nhZS$uq~2J6V9%x8ntfR{<|4q_gOH? z!uj1cDgu}~aWDE%jkt(kSxt9TVP#{!3oZ<--RzT5OihtO-B-PRs5lPgkcZ%>s#;SZ z647^ra^+#J?XwslP!siZ-sqP4dyQO@>%t_s=1$c@r=v3GWB^h73k zcOt_Oide)CYQLj<#Gx>@_WnM?*_I7#3WsdJxwll0M)Bu=y6)-xAj>iZYwyq%A-h6T zKZk>=_FcBhkz(TbdPUM~P*8A`j#TsF7(t4^(#SDg!-*q)yO?8{U&L0|4#|CKY}xn5 zOu{Ubar6Ejn8~wvj2AAEH&ZG`A8U&KNlzv>pFzDgnhUA;7af@ymuATJN3g1PxQqz4 z)Iq@~DP1C=RDtSkp&Lt49}Rv_TD*Sbxv5eDG@(za_lW%sy=qWx{!u60Kjerln$3_% zYHt>cjAjy5-JLYb939O-=6uhFgij7T`J)d1RfRm+cV|=P|7wRqrjJfXA*WrbVbESx zih(?qa?2Vcyw}NMeQ~cZ^1E-vhs7Ar#KPu`Qz}lr>6%d7lgFJcGW-~=C>5(TcD2N( z2mE+VhVg%52D`J=Wq0EYrAng(qrUc)9j76k0Moy>IMn-iAti;I{ekZLs*s9`%7pdj z=|uJsc14wRZ%th~@VVj?e%P$fJPR(P6iY@X6+JqDa55_^6`r4Ge;4}2J?Q&p=*WvS zguO`))A2yV8c;VQmPT8XD@4+bo$2Q?KsBT{`nf}+Q>jJpwKfN=PAii4=|*^#js@i7 zsel&potRcY03r95#q(jX;g!UTM;YY8y{Q~Y&~#+jY^VPlz%A4 zYsHI4=NAsX8M7p>pjAD35tWd5C5=B%S4aqKz%Qt(8+6>IbORU&DfD>g*?~PD3S?=2 zq!**kOSL7vf1_abefy93)2mgnp7;tmc4O{Yq74(H{y8yi~l<$Gfz8aaEeNb=3GDc{f8YSIc4cCxvumrKiVfL>Ve?W zy=j=bMvROpsBm6+Fg7$zLJju|QZc(lPqx6@ZvZaq9iY##xd8}au)Co||2l|wAaLlSA6bWuPcmHS9`5(EPkF*_z z!~@|%H;30HQQP0yKUq7Zj#EI3rVov)Zv!)nNz6)R6UQhq4>UJLur+XbW?`FrUjS3O zabG^^TuYMaoI_p({)QVay0e2q%KFhL>G)^&$V}pG7;YYx>>_iyY)Wq)A+~NFAiXg3 zB2xzx^bCg{)&k_C?hj!u7?O@Wt92(ME|8M!G3*^Ftn>SB#xXkbD`1!Gru>N!mJpC52}=RM$j|&q`fpP53Kt!@ zU3P@{L3Ex76A5gpzX*9QDokU?T__cUd?P$LiuZi3L=4D|1>MukdJscjNSM&6uVMrCF=EIg2&ww;@-WpLv`&!J1rKasy%qF3fux@$Ih zr+vfK`|Bt??-T4IfLvLW`Mf{2ruGLg@$!bqXIj0lR37nQxlE!UW)z3(CF`?N$a5X2 z@;a6F%$#eyhW5CLUEn9Y3U{55*0ck-b!v$v&EOyGu3)mwtk8T!7%Zc z{e=T@?L6DmT<4lgAi-a$PjL{{=+cl(Eh)|H;U7IDsD0mRSq763gL_gvy$VwKd00Mu zdL^020;O7}T6eMU-Tj!5ylCc^${H_>X3OITPlm$Q$?DK3>wLOv>$}IQ)lV)iI8m4wnUP+Fr~;p8h-w5t^Fa!Hl>J8RjXI1 z_(L=e5Hf>eq~xwahu1unH&`Ag+MiHD8ho03g~A8J`lzdEF06sO6s`dq{wxjfzm+Ul zFur`^T?n(`I+%29vYxTsu?gOf_^m-%@y^D8RUBR^^Vux4mPYaTHkY`?!Gs(*+3bza z1Airn$Jp_sTPV6nqtdM-IIs=rvBnCN*48^HA;kIS7&a*v7!FvgrWJn@9ImNmrh#H~ z%d#d+(Sq$*Dh_V_-2Hg#mpSrj-n}7Pj{#iqYOB%3)9jzxuwFHTQ&mSWEOONc8b06B zHA$(X`_Bhfx$Tb@uw#YuG*>za!a9FjtLoa4#SvK;^6;+qT#6xwh6#ZWJw*9n9<2bq zFaMh_M}KMvyJ}R(w|o|slwQ2oMtX-`(yRd4J)>c_Qns|6=J=|cBvXbXy0#S3zbH97 zt(&MN%P8|5^8x4#_eExGxjXmImnK6I)xPfQ*(kCy+GJ`FF*Xc~*>N4{tjc74M3(w` z+R706O3nsj=&e$$fVoXHr}7q8J=BooUp0RE_#wk|RKhL$BNB11L{MuIu6xegJrhA# zXke~(oviL>?=KYnSAI_f7y256bm85}oY%h|zgr2*rfs7x?>@$T_t>g?N-44V^c9sg zwg1u|pm2aw%tL$7wrTCu3RzuY-$>tc+ayie@*R4$-a%s65G@Q7tVj>LnO1*IcsqV2 zOwy~6!+p@6n{Z=wi%IvOz>$odK&F`YWk)p|On%jyGLxU+tB=4?REy3sb*@lH7@EI) z2v8UXr(@}wl(fMqGj@%wBZ@<}M>9J3aHBzxiH9c2H#$v2J6@hiSySmM>Ary50B zmt!m~8~blsWuA|^OIC`g!(t_)7_TJ@C+#PddFsEG58BMwxtEl7RKhIPRw!zNodTb$0IO*Vde z7AEF$d@YCZzW_xCy7;7Ex;umCyPy^QZkGjf<{`CYdSZ&9W(&`=)&3;Sh~k=cbT)=& zJ;rkcu7Du$$&!ply@}E=K0ZaWIb`z~qwIR8q1_y!EEIW`Q;T9coeqw42*ZFpvvPi= zDhT|b;+r{?sU;+9ZK1ZV>k-6k%UpiOt*s{coca?IvB8U-aJr>nTbi7%?7=GAJ?-SBiC_IMM)#Bp^B10uaC+K z7R_IPR)(@D5YkEzce-7K>yqR-QV3$-M=C|0Ce-2@?e-ALfHs1xC>a|&&fGa8G-?s1 zEbtr&N+I;Db-Tfp9w^Ol+nP@e23?TY-z_z!(4_qoS9&xWEyl->gRps;BWn_!w~*TDj0d z;kW^wAEC4$@B@0?4gyVCSYr2}KOhVvMCA;tw4vE(((QIB3tQMIa?5QK8VglXiZsno zT9IZphRn)7w;D~WKxYh5V5Of2eY-9+n=J}8+u^jsnOko@AgOTDmB7AH28`8PwLC_R zG1fRjDNEFJ9h($7jzkEnh+&l7we-5(DrifjYlBds3mhrw&UA?*%UqX^i>?w|*YgnA zfNXTNvzNB=qp=Q>voMXo_wiik#KPmbE}r93WSKqZ+3Tqm+Y>{8#wtq8R=H;@ujV8O z%Iv?*Cdjit)5^-+#ZhDvLSqdq94RX&CY#)u+2vhuQX+1L)!ls^J2+eEo;~&~1O{GD zpiln&e=8ABl7vR1L6&9odc6~xo@ts=mNpQVd5+NxP~beQpgj@rF5OjO$~a$34H%VA~P{QPQ6}- zs`6W})zHc=oO4EoNt29H8H};PMM_DQXT*`!y)E*BEX^njg_JHv3kLnl3D13f)AhTI zBG0V>h%50uYj+z3A)aFs1fh*hVvMo+r?Ydftjv=xOI#rce4j?GZi8r9o|q3;I*g7V zp&2zSpTQVw)9ZS6(}_U}haik8OM6d9DKVHz|JbeOU*kv@$MHy$oFZ35l{vxhIs}}+ zGfLO$n=56zKN1K$m$cufQL8aC(;>?WTsNRB6ppkDzALLPP^C|jBpG24(Wo~W^!xap zM;HW@WsXuMp6k%-b_jf*BDWnK&-3xU0HZXnusjng4cIUW5mM0Wc8P)ziNFs725E}# z`zM}ln^nywn6HoN>1jrWhsd%N$FZA*G)b60G7qB-d1mh|DJAVz3s*Yydwo=CyGOIh zH{HqDLeb5D9 zlmY{uAAk{Lne{<1WqCrPQkR7#z}9N`VTjhoVzKiA$JjaYUCE%|$8%h(e;-7k1yZ^U z1__>LjdLa@#!*^Pug5m|RT{0q^CPseRoyI2L2K%9h%^dab^fRfm{jG2>iHfRO`fL2 zQB-k_Y+Mr9WO_Ev&CdCWM7#>;D!1#HHU`)8$cqB6s-!n-^~&_dR)mwPQtEnMRrs(Q zY+)>s*^?4ST7sC-hP)^#wZZW`hT3grrlx2&YB(6C$0w=P8zgyY38*Kn9kc6$(S{(f zMI5a)tyYUTj;&yUF<=b7Yu8yJ3}s=9A7K#Uxju1N10zWW_E~YHVEp(PS}U5(I$CMU zLJ|13n4n5qNYO^y&qC1a^oYXAUaU9p?D{&1WBvX@uMp!=+Bcv@{YK^R*Q$}fuQjuo`2uZWq zLP`f!7W6was3OM!TVTv`9LK|v9O_^l~Z9qtb<70%xsZ0(fHcxHD5ss7? z19@)63JeZqY1c_t3ev%Vk)a`qJf~EOMx#l8FtD9%&nHO}pyJw8LL0Rxs$`B8S(Xuo z5w*BR5LmhCS;+SE^fa}&M(BqmNn-gAu4~W37=GJ|;{O2w7Wf Date: Fri, 25 Jul 2025 02:28:55 +0530 Subject: [PATCH 07/46] Adding the demo video --- emt-dv-iso/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/emt-dv-iso/README.md b/emt-dv-iso/README.md index c60af08a..1cd59467 100644 --- a/emt-dv-iso/README.md +++ b/emt-dv-iso/README.md @@ -20,6 +20,7 @@ sudo ./build_idv_iso.sh ### Refer the demo below +https://github.com/user-attachments/assets/8e3f609b-9632-4ea6-807d-1560856a20db ## Manual Steps From ac67c5283db2e649d76dfc79d7627f92a071e49e Mon Sep 17 00:00:00 2001 From: Smitesh Sutaria Date: Fri, 25 Jul 2025 08:33:53 +0530 Subject: [PATCH 08/46] adding the table of contents and other formatting refactor Signed-off-by: Smitesh Sutaria --- emt-dv-iso/README.md | 30 +++++++++++++++++++++++------- emt-dv-iso/idv.json | 10 +++++----- 2 files changed, 28 insertions(+), 12 deletions(-) diff --git a/emt-dv-iso/README.md b/emt-dv-iso/README.md index 1cd59467..d9224e15 100644 --- a/emt-dv-iso/README.md +++ b/emt-dv-iso/README.md @@ -1,9 +1,25 @@ # Building EMT ISO with Desktop Virtualization (graphics SR-IOV) +- [Building EMT ISO with Desktop Virtualization (graphics SR-IOV)](#building-emt-iso-with-desktop-virtualization-graphics-sr-iov) + - [Using Standalone Build Script (Automated)](#using-standalone-build-script-automated) + - [Run the script as sudo](#run-the-script-as-sudo) + - [ISO file will be generated in the same path](#iso-file-will-be-generated-in-the-same-path) + - [Refer the demo below](#refer-the-demo-below) + - [Manual Steps](#manual-steps) + - [Pre-requisite](#pre-requisite) + - [Step 1: clone the EMT repo](#step-1-clone-the-emt-repo) + - [Step 2: Checkout the tag](#step-2-checkout-the-tag) + - [Step 3: Copy the idv.json to edge-microvisor-toolkit/toolkit/imageconfigs/](#step-3-copy-the-idvjson-to-edge-microvisor-toolkittoolkitimageconfigs) + - [Step 4: Build the tools](#step-4-build-the-tools) + - [Step 5: Build the ISO for desktop virtualization (IDV)](#step-5-build-the-iso-for-desktop-virtualization-idv) + - [Troubleshoot](#troubleshoot) + - [Clean build](#clean-build) + - [Working with Proxies](#working-with-proxies) + ## Using Standalone Build Script (Automated) -> The pre-reuisite : Ubuntu 22.04 or Ubuntu 24.04 +> Prerequisite : Ubuntu 22.04 or Ubuntu 24.04 ### Run the script as sudo ```sh @@ -32,31 +48,31 @@ The image configuration is part of this repo [here](./idv.json) > It is recommended to built against a stable/release tag. -#### Step 1: clone the EMT repo +### Step 1: clone the EMT repo ```sh git clone https://github.com/open-edge-platform/edge-microvisor-toolkit ``` -#### Step 2: Checkout the tag +### Step 2: Checkout the tag ```sh git checkout tags/ ``` -#### Step 3: Copy the idv.json to edge-microvisor-toolkit/toolkit/imageconfigs/ +### Step 3: Copy the idv.json to edge-microvisor-toolkit/toolkit/imageconfigs/ ```sh cp idv.json edge-microvisor-toolkit/toolkit/imageconfigs/ ``` -#### Step 4: Build the tools +### Step 4: Build the tools ```sh cd edge-microvisor-toolkit/toolkit sudo make toolchain REBUILD_TOOLS=y ``` -#### Step 5: Build the ISO for desktop virtualization (IDV) +### Step 5: Build the ISO for desktop virtualization (IDV) ```sh sudo make iso -j8 REBUILD_TOOLS=y REBUILD_PACKAGES=n CONFIG_FILE=./imageconfigs/idv.json ``` ### Troubleshoot -### Clean build +#### Clean build > For re-building with any other tags, its recommended to start clean and repeat above Steps 1 to 5. > ```sh diff --git a/emt-dv-iso/idv.json b/emt-dv-iso/idv.json index 944fcc00..ce27db2c 100644 --- a/emt-dv-iso/idv.json +++ b/emt-dv-iso/idv.json @@ -18,11 +18,11 @@ "packagelists/intel-wireless.json" ], "Packages": [ - "lsb-release", - "nbd", - "ntfs-3g", - "ntfs-3g-system-compression", - "ntfs-3g-libs", + "lsb-release", + "nbd", + "ntfs-3g", + "ntfs-3g-system-compression", + "ntfs-3g-libs", "igt-gpu-tools" ], "KernelCommandLine": { From 7f352846def5b2c89839290ae771eec412d2728c Mon Sep 17 00:00:00 2001 From: Smitesh Sutaria Date: Fri, 25 Jul 2025 09:26:28 +0530 Subject: [PATCH 09/46] adding idv-services to the image Signed-off-by: Smitesh Sutaria --- emt-dv-iso/idv.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/emt-dv-iso/idv.json b/emt-dv-iso/idv.json index ce27db2c..d3b22be5 100644 --- a/emt-dv-iso/idv.json +++ b/emt-dv-iso/idv.json @@ -15,7 +15,8 @@ "packagelists/intel-gpu-base.json", "packagelists/drtm.json", "packagelists/virt-guest-packages.json", - "packagelists/intel-wireless.json" + "packagelists/intel-wireless.json", + "packagelists/intel-idv-services.json" ], "Packages": [ "lsb-release", From 4b81a47eaec8360d64761d30dbe632f6349c2566 Mon Sep 17 00:00:00 2001 From: Smitesh Sutaria Date: Fri, 25 Jul 2025 13:32:58 +0530 Subject: [PATCH 10/46] few enhancements in build script Signed-off-by: Smitesh Sutaria --- emt-dv-iso/build_idv_iso.sh | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/emt-dv-iso/build_idv_iso.sh b/emt-dv-iso/build_idv_iso.sh index d63fc99d..9185f7fa 100644 --- a/emt-dv-iso/build_idv_iso.sh +++ b/emt-dv-iso/build_idv_iso.sh @@ -5,14 +5,16 @@ GIT_REPO=https://github.com/open-edge-platform/edge-microvisor-toolkit.git DEFAULT_TAG=3.0.20250718 -IDV_JSON= +IDV_JSON_PATH=idv.json TAG=${1:-$DEFAULT_TAG} +# clone the emt repo git clone $GIT_REPO - cd edge-microvisor-toolkit +# checkout the required TAG git checkout $TAG + # pre-requisites sudo ./toolkit/docs/building/prerequisites-ubuntu.sh sudo ln -vsf /usr/lib/go-1.21/bin/go /usr/bin/go @@ -23,14 +25,20 @@ sudo usermod -aG docker $USER # build the toolkit cd toolkit -wget https://raw.githubusercontent.com/open-edge-platform/edge-desktop-virtualization/refs/heads/emt-dv-iso/emt-dv-iso/idv.json -cp idv.json ./imageconfigs +if [[ -z "$IDV_JSON_PATH" ]]; then + wget https://raw.githubusercontent.com/open-edge-platform/edge-desktop-virtualization/refs/heads/emt-dv-iso/emt-dv-iso/idv.json + cp idv.json ./imageconfigs +else + cp $IDV_JSON_PATH ./imageconfigs/idv.json sudo make toolchain REBUILD_TOOLS=y VALIDATE_TOOLCHAIN_GPG=n + +# build the iso image sudo make iso -j8 REBUILD_TOOLS=y REBUILD_PACKAGES=n VALIDATE_TOOLCHAIN_GPG=n CONFIG_FILE=./imageconfigs/idv.json +# copy the generated iso to same parent folder cp ../out/images/idv/*.iso ../../. +# cleanup cd ../../ - sudo rm -rf edge-microvisor-toolkit From 2d772475fe569908d35a2c54f602f9589211da5e Mon Sep 17 00:00:00 2001 From: Smitesh Sutaria Date: Fri, 25 Jul 2025 13:56:07 +0530 Subject: [PATCH 11/46] creating build function, to modularize operations Signed-off-by: Smitesh Sutaria --- emt-dv-iso/build_idv_iso.sh | 72 +++++++++++++++++++------------------ 1 file changed, 38 insertions(+), 34 deletions(-) diff --git a/emt-dv-iso/build_idv_iso.sh b/emt-dv-iso/build_idv_iso.sh index 9185f7fa..4a29abf9 100644 --- a/emt-dv-iso/build_idv_iso.sh +++ b/emt-dv-iso/build_idv_iso.sh @@ -5,40 +5,44 @@ GIT_REPO=https://github.com/open-edge-platform/edge-microvisor-toolkit.git DEFAULT_TAG=3.0.20250718 -IDV_JSON_PATH=idv.json +IDV_JSON_PATH="" TAG=${1:-$DEFAULT_TAG} -# clone the emt repo -git clone $GIT_REPO -cd edge-microvisor-toolkit -# checkout the required TAG -git checkout $TAG - -# pre-requisites -sudo ./toolkit/docs/building/prerequisites-ubuntu.sh -sudo ln -vsf /usr/lib/go-1.21/bin/go /usr/bin/go -sudo ln -vsf /usr/lib/go-1.21/bin/gofmt /usr/bin/gofmt -curl -fsSL https://get.docker.com -o get-docker.sh -sudo sh get-docker.sh -sudo usermod -aG docker $USER - -# build the toolkit -cd toolkit -if [[ -z "$IDV_JSON_PATH" ]]; then - wget https://raw.githubusercontent.com/open-edge-platform/edge-desktop-virtualization/refs/heads/emt-dv-iso/emt-dv-iso/idv.json - cp idv.json ./imageconfigs -else - cp $IDV_JSON_PATH ./imageconfigs/idv.json - -sudo make toolchain REBUILD_TOOLS=y VALIDATE_TOOLCHAIN_GPG=n - -# build the iso image -sudo make iso -j8 REBUILD_TOOLS=y REBUILD_PACKAGES=n VALIDATE_TOOLCHAIN_GPG=n CONFIG_FILE=./imageconfigs/idv.json - -# copy the generated iso to same parent folder -cp ../out/images/idv/*.iso ../../. - -# cleanup -cd ../../ -sudo rm -rf edge-microvisor-toolkit +function launch_build() { + # clone the emt repo + git clone $GIT_REPO + cd edge-microvisor-toolkit + # checkout the required TAG + git checkout $TAG + + # pre-requisites + sudo ./toolkit/docs/building/prerequisites-ubuntu.sh + sudo ln -vsf /usr/lib/go-1.21/bin/go /usr/bin/go + sudo ln -vsf /usr/lib/go-1.21/bin/gofmt /usr/bin/gofmt + curl -fsSL https://get.docker.com -o get-docker.sh + sudo sh get-docker.sh + sudo usermod -aG docker $USER + + # build the toolkit + cd toolkit + if [[ -z "$IDV_JSON_PATH" ]]; then + wget https://raw.githubusercontent.com/open-edge-platform/edge-desktop-virtualization/refs/heads/emt-dv-iso/emt-dv-iso/idv.json + cp idv.json ./imageconfigs + else + cp $IDV_JSON_PATH ./imageconfigs/idv.json + + sudo make toolchain REBUILD_TOOLS=y VALIDATE_TOOLCHAIN_GPG=n + + # build the iso image + sudo make iso -j8 REBUILD_TOOLS=y REBUILD_PACKAGES=n VALIDATE_TOOLCHAIN_GPG=n CONFIG_FILE=./imageconfigs/idv.json + + # copy the generated iso to same parent folder + cp ../out/images/idv/*.iso ../../. + + # cleanup + cd ../../ + sudo rm -rf edge-microvisor-toolkit +} + +launch_build From a602a87cabe83258ed6df16a4241d7c31766ffe3 Mon Sep 17 00:00:00 2001 From: Smitesh Sutaria Date: Fri, 25 Jul 2025 13:58:50 +0530 Subject: [PATCH 12/46] making the script executable Signed-off-by: Smitesh Sutaria --- emt-dv-iso/build_idv_iso.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 emt-dv-iso/build_idv_iso.sh diff --git a/emt-dv-iso/build_idv_iso.sh b/emt-dv-iso/build_idv_iso.sh old mode 100644 new mode 100755 From c3480db194fd9b955f626b25f2e1807811f1e631 Mon Sep 17 00:00:00 2001 From: Smitesh Sutaria Date: Fri, 25 Jul 2025 14:08:49 +0530 Subject: [PATCH 13/46] fix the errors Signed-off-by: Smitesh Sutaria --- emt-dv-iso/build_idv_iso.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/emt-dv-iso/build_idv_iso.sh b/emt-dv-iso/build_idv_iso.sh index 4a29abf9..bfab69d4 100755 --- a/emt-dv-iso/build_idv_iso.sh +++ b/emt-dv-iso/build_idv_iso.sh @@ -3,6 +3,8 @@ # Copyright (C) 2025 Intel Corporation # SPDX-License-Identifier: Apache-2.0 +set -eE + GIT_REPO=https://github.com/open-edge-platform/edge-microvisor-toolkit.git DEFAULT_TAG=3.0.20250718 IDV_JSON_PATH="" @@ -31,7 +33,7 @@ function launch_build() { cp idv.json ./imageconfigs else cp $IDV_JSON_PATH ./imageconfigs/idv.json - + fi sudo make toolchain REBUILD_TOOLS=y VALIDATE_TOOLCHAIN_GPG=n # build the iso image @@ -43,6 +45,9 @@ function launch_build() { # cleanup cd ../../ sudo rm -rf edge-microvisor-toolkit + } +#---------------------- main ------------------------# + launch_build From 04a4987d4e3af1127fbbd37ad58bdd6c425191da Mon Sep 17 00:00:00 2001 From: Smitesh Sutaria Date: Fri, 25 Jul 2025 17:57:40 +0530 Subject: [PATCH 14/46] adding few enhancements Signed-off-by: Smitesh Sutaria --- emt-dv-iso/build_idv_iso.sh | 37 +++++++++++++++++++++++++++++++++---- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/emt-dv-iso/build_idv_iso.sh b/emt-dv-iso/build_idv_iso.sh index bfab69d4..9db60aa9 100755 --- a/emt-dv-iso/build_idv_iso.sh +++ b/emt-dv-iso/build_idv_iso.sh @@ -5,20 +5,42 @@ set -eE +# Define color variables for readability +RED='\e[31m' +GREEN='\e[32m' +BLUE='\e[34m' +ENDCOLOR='\e[0m' # Reset to default color + +# ------------------- Global Variables ---------------------------- + +# Git repo to build against. This can be any forked repo of EMT as well. GIT_REPO=https://github.com/open-edge-platform/edge-microvisor-toolkit.git + +# Default tag. This will be the latest EMT release tag. DEFAULT_TAG=3.0.20250718 + +# Full path of the image config JSON. If this is NULL, default will be fetched. IDV_JSON_PATH="" +# Register the current directory +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +# optional argument 1. To build against a specific tag. TAG=${1:-$DEFAULT_TAG} function launch_build() { + echo -e ${BLUE}"Current working directory is: " ${GREEN}$DIR ${ENDCOLOR} # clone the emt repo + echo -e "${BLUE}Cloning the EMT repo @${GREEN}${GIT_REPO}${ENDCOLOR}" git clone $GIT_REPO cd edge-microvisor-toolkit + # checkout the required TAG + echo -e "${BLUE}Checkout tag : ${GREEN}${TAG}${ENDCOLOR}" git checkout $TAG # pre-requisites + echo -e "${BLUE}Installing all the pre-requisites${ENDCOLOR}" sudo ./toolkit/docs/building/prerequisites-ubuntu.sh sudo ln -vsf /usr/lib/go-1.21/bin/go /usr/bin/go sudo ln -vsf /usr/lib/go-1.21/bin/gofmt /usr/bin/gofmt @@ -29,9 +51,11 @@ function launch_build() { # build the toolkit cd toolkit if [[ -z "$IDV_JSON_PATH" ]]; then + echo -e "${BLUE}JSON input not provided. Hence download the default one.${ENDCOLOR}" wget https://raw.githubusercontent.com/open-edge-platform/edge-desktop-virtualization/refs/heads/emt-dv-iso/emt-dv-iso/idv.json cp idv.json ./imageconfigs else + echo -e "${BLUE}JSON input provided is : ${GREEN}.${ENDCOLOR}" cp $IDV_JSON_PATH ./imageconfigs/idv.json fi sudo make toolchain REBUILD_TOOLS=y VALIDATE_TOOLCHAIN_GPG=n @@ -41,13 +65,18 @@ function launch_build() { # copy the generated iso to same parent folder cp ../out/images/idv/*.iso ../../. +} - # cleanup - cd ../../ +function cleanup() { + echo -e "${GREEN}Performing cleanup ${ENDCOLOR}" + cd $DIR sudo rm -rf edge-microvisor-toolkit - } -#---------------------- main ------------------------# +trap cleanup EXIT +trap cleanup ERR + +#---------------------- main ------------------------ launch_build +cleanup From 6e97f3fc089aed5169a9f84330668e447b71cb18 Mon Sep 17 00:00:00 2001 From: Smitesh Sutaria Date: Fri, 25 Jul 2025 23:52:10 +0530 Subject: [PATCH 15/46] enhancements done. Signed-off-by: Smitesh Sutaria --- emt-dv-iso/build_idv_iso.sh | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/emt-dv-iso/build_idv_iso.sh b/emt-dv-iso/build_idv_iso.sh index 9db60aa9..a2ff3f87 100755 --- a/emt-dv-iso/build_idv_iso.sh +++ b/emt-dv-iso/build_idv_iso.sh @@ -4,7 +4,7 @@ # SPDX-License-Identifier: Apache-2.0 set -eE - +start_time=$(date +%s) # Define color variables for readability RED='\e[31m' GREEN='\e[32m' @@ -29,7 +29,9 @@ DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" TAG=${1:-$DEFAULT_TAG} function launch_build() { - echo -e ${BLUE}"Current working directory is: " ${GREEN}$DIR ${ENDCOLOR} + echo -e "${BLUE}Current working directory is: ${GREEN}$DIR ${ENDCOLOR}" + echo -e "${BLUE}Number of CPUs on this system : ${GREEN}$(nproc)${ENDCOLOR}" + # clone the emt repo echo -e "${BLUE}Cloning the EMT repo @${GREEN}${GIT_REPO}${ENDCOLOR}" git clone $GIT_REPO @@ -58,19 +60,26 @@ function launch_build() { echo -e "${BLUE}JSON input provided is : ${GREEN}.${ENDCOLOR}" cp $IDV_JSON_PATH ./imageconfigs/idv.json fi - sudo make toolchain REBUILD_TOOLS=y VALIDATE_TOOLCHAIN_GPG=n + sudo make -j$(nproc) toolchain REBUILD_TOOLS=y VALIDATE_TOOLCHAIN_GPG=n # build the iso image - sudo make iso -j8 REBUILD_TOOLS=y REBUILD_PACKAGES=n VALIDATE_TOOLCHAIN_GPG=n CONFIG_FILE=./imageconfigs/idv.json + sudo make iso -j$(nproc) REBUILD_TOOLS=y REBUILD_PACKAGES=n VALIDATE_TOOLCHAIN_GPG=n CONFIG_FILE=./imageconfigs/idv.json # copy the generated iso to same parent folder cp ../out/images/idv/*.iso ../../. + + echo -e ${GREEN}"Build Successful!" + echo -e "${BLUE}Generated ISO available at : ${GREEN}$DIR${ENDCOLOR}" + echo -e ${BLUE}"Available ISO Files : " ${GREEN} $DIR/*.iso ${ENDCOLOR} } function cleanup() { echo -e "${GREEN}Performing cleanup ${ENDCOLOR}" cd $DIR sudo rm -rf edge-microvisor-toolkit + end_time=$(date +%s) + runtime=$((end_time - start_time)) + echo -e ${BLUE}"Total Build runtime: ${GREEN}$runtime seconds"${ENDCOLOR} } trap cleanup EXIT @@ -79,4 +88,4 @@ trap cleanup ERR #---------------------- main ------------------------ launch_build -cleanup +#cleanup From 0bbf8c5141b245ce87ca278ed8bb87b7556226bc Mon Sep 17 00:00:00 2001 From: Smitesh Sutaria Date: Sat, 26 Jul 2025 00:39:16 +0530 Subject: [PATCH 16/46] adding command line argument option - for providing tag - for providing image config json file Signed-off-by: Smitesh Sutaria --- emt-dv-iso/build_idv_iso.sh | 37 ++++++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/emt-dv-iso/build_idv_iso.sh b/emt-dv-iso/build_idv_iso.sh index a2ff3f87..33c077b7 100755 --- a/emt-dv-iso/build_idv_iso.sh +++ b/emt-dv-iso/build_idv_iso.sh @@ -25,8 +25,8 @@ IDV_JSON_PATH="" # Register the current directory DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -# optional argument 1. To build against a specific tag. -TAG=${1:-$DEFAULT_TAG} +# If no TAG is provided by user, lets use the default tag +TAG=$DEFAULT_TAG function launch_build() { echo -e "${BLUE}Current working directory is: ${GREEN}$DIR ${ENDCOLOR}" @@ -82,10 +82,41 @@ function cleanup() { echo -e ${BLUE}"Total Build runtime: ${GREEN}$runtime seconds"${ENDCOLOR} } +while getopts ':t:f:h' opt; do + case "$opt" in + t) + tag_arg="$OPTARG" + TAG=$tag_arg + echo "Processing option 't' with '${TAG}' argument" + ;; + + f) + file_arg="$OPTARG" + IDV_JSON_PATH=$(realpath "$file_arg") + echo "Processing option 'f' with '${IDV_JSON_PATH}' argument" + ;; + + h) + echo "Usage: $(basename $0) [-t tag-name] [-f image-config-json-file]" + exit 0 + ;; + + :) + echo -e "option requires an argument.\nUsage: $(basename $0) [-t tag-name] [-f image-config-json-file]" + exit 1 + ;; + + ?) + echo -e "Invalid command option.\nUsage: $(basename $0) [-t tag-name] [-f image-config-json-file]" + exit 1 + ;; + esac +done +shift "$(($OPTIND -1))" + trap cleanup EXIT trap cleanup ERR #---------------------- main ------------------------ launch_build -#cleanup From 6a9a6483ff5dd6f649061308629125c8ba5a4443 Mon Sep 17 00:00:00 2001 From: Smitesh Sutaria Date: Sat, 26 Jul 2025 01:31:39 +0530 Subject: [PATCH 17/46] readme additions to include the optional command line arguments. - also few enhancements in script Signed-off-by: Smitesh Sutaria --- emt-dv-iso/README.md | 20 ++++++++++++++++++-- emt-dv-iso/build_idv_iso.sh | 26 +++++++++++++++++--------- 2 files changed, 35 insertions(+), 11 deletions(-) diff --git a/emt-dv-iso/README.md b/emt-dv-iso/README.md index d9224e15..ca06d650 100644 --- a/emt-dv-iso/README.md +++ b/emt-dv-iso/README.md @@ -3,7 +3,8 @@ - [Building EMT ISO with Desktop Virtualization (graphics SR-IOV)](#building-emt-iso-with-desktop-virtualization-graphics-sr-iov) - [Using Standalone Build Script (Automated)](#using-standalone-build-script-automated) - - [Run the script as sudo](#run-the-script-as-sudo) + - [Run the script with default parameters](#run-the-script-with-default-parameters) + - [Run the scripts with custom parameters](#run-the-scripts-with-custom-parameters) - [ISO file will be generated in the same path](#iso-file-will-be-generated-in-the-same-path) - [Refer the demo below](#refer-the-demo-below) - [Manual Steps](#manual-steps) @@ -21,10 +22,25 @@ > Prerequisite : Ubuntu 22.04 or Ubuntu 24.04 -### Run the script as sudo +### Run the script with default parameters ```sh sudo ./build_idv_iso.sh ``` +Command line arguments are optional. Below default values will be used : +- Latest emt release tag +- idv.json from this repo + +### Run the scripts with custom parameters + +Build script supports 2 custom parameters (optional): +1. [-t tag-name] : This is the git release tag-name against which build should run. +2. [-f image-config-json-file] : This is the emt image config .json file. One can generate the custom images using this config file. + +For ex: +```sh +sudo ./build_idv_iso.sh -t 3.0.20250718 -f ./idv.json +``` + ### ISO file will be generated in the same path

diff --git a/emt-dv-iso/build_idv_iso.sh b/emt-dv-iso/build_idv_iso.sh index 33c077b7..e6718d88 100755 --- a/emt-dv-iso/build_idv_iso.sh +++ b/emt-dv-iso/build_idv_iso.sh @@ -11,26 +11,34 @@ GREEN='\e[32m' BLUE='\e[34m' ENDCOLOR='\e[0m' # Reset to default color +# ------------------- Default Values ------------------------------ + +# Default tag. This will be the latest EMT release tag. +DEFAULT_TAG=3.0.20250718 + +# Default image config .json file. If this is NULL, default will be fetched from the repo. +DEFAULT_IDV_JSON_PATH="" +# This will be used only if above is NULL +DEFAULT_IDV_JSON_GIT_FETCH="https://raw.githubusercontent.com/open-edge-platform/edge-desktop-virtualization/refs/heads/emt-dv-iso/emt-dv-iso/idv.json" + # ------------------- Global Variables ---------------------------- # Git repo to build against. This can be any forked repo of EMT as well. GIT_REPO=https://github.com/open-edge-platform/edge-microvisor-toolkit.git -# Default tag. This will be the latest EMT release tag. -DEFAULT_TAG=3.0.20250718 +# Full path of the image config JSON. +IDV_JSON_PATH=$DEFAULT_IDV_JSON_PATH -# Full path of the image config JSON. If this is NULL, default will be fetched. -IDV_JSON_PATH="" +# If no TAG is provided by user, lets use the default tag +TAG=$DEFAULT_TAG # Register the current directory DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -# If no TAG is provided by user, lets use the default tag -TAG=$DEFAULT_TAG - function launch_build() { echo -e "${BLUE}Current working directory is: ${GREEN}$DIR ${ENDCOLOR}" echo -e "${BLUE}Number of CPUs on this system : ${GREEN}$(nproc)${ENDCOLOR}" + echo -e ${BLUE}"Available ISO Files : " ${GREEN} $DIR/*.iso ${ENDCOLOR} # clone the emt repo echo -e "${BLUE}Cloning the EMT repo @${GREEN}${GIT_REPO}${ENDCOLOR}" @@ -54,10 +62,10 @@ function launch_build() { cd toolkit if [[ -z "$IDV_JSON_PATH" ]]; then echo -e "${BLUE}JSON input not provided. Hence download the default one.${ENDCOLOR}" - wget https://raw.githubusercontent.com/open-edge-platform/edge-desktop-virtualization/refs/heads/emt-dv-iso/emt-dv-iso/idv.json + wget $DEFAULT_IDV_JSON_GIT_FETCH cp idv.json ./imageconfigs else - echo -e "${BLUE}JSON input provided is : ${GREEN}.${ENDCOLOR}" + echo -e "${BLUE}JSON input provided is : ${GREEN}$IDV_JSON_PATH${ENDCOLOR}" cp $IDV_JSON_PATH ./imageconfigs/idv.json fi sudo make -j$(nproc) toolchain REBUILD_TOOLS=y VALIDATE_TOOLCHAIN_GPG=n From 97ede63ae9267687f54639818b20e7ae3b7116a6 Mon Sep 17 00:00:00 2001 From: Smitesh Sutaria Date: Sat, 26 Jul 2025 01:50:39 +0530 Subject: [PATCH 18/46] adding build details Signed-off-by: Smitesh Sutaria --- emt-dv-iso/build_idv_iso.sh | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/emt-dv-iso/build_idv_iso.sh b/emt-dv-iso/build_idv_iso.sh index e6718d88..2c6b147c 100755 --- a/emt-dv-iso/build_idv_iso.sh +++ b/emt-dv-iso/build_idv_iso.sh @@ -36,9 +36,15 @@ TAG=$DEFAULT_TAG DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" function launch_build() { - echo -e "${BLUE}Current working directory is: ${GREEN}$DIR ${ENDCOLOR}" - echo -e "${BLUE}Number of CPUs on this system : ${GREEN}$(nproc)${ENDCOLOR}" - echo -e ${BLUE}"Available ISO Files : " ${GREEN} $DIR/*.iso ${ENDCOLOR} + echo -e "${RED}------------------------- Build Details -----------------------------------${ENDCOLOR}" + echo -e "${BLUE}Current working directory : ${GREEN}$DIR ${ENDCOLOR}" + echo -e "${BLUE}No. of CPUs on the system : ${GREEN}$(nproc)${ENDCOLOR}" + #echo -e ${BLUE}"Available ISO Files : " ${GREEN} $DIR/*.iso ${ENDCOLOR} + echo -e "${BLUE}git repo to be used : ${GREEN}$GIT_REPO ${ENDCOLOR}" + echo -e "${BLUE}tag (a release tag) : ${GREEN}$TAG ${ENDCOLOR}" + echo -e "${BLUE}image config Json Path : ${GREEN}$IDV_JSON_PATH ${ENDCOLOR}" + echo -e "${BLUE}Json git fetch path (if above Json Path is NULL) : ${GREEN}$DEFAULT_IDV_JSON_GIT_FETCH ${ENDCOLOR}" + echo -e "${RED}--------------------------------------------------------------------------${ENDCOLOR}" # clone the emt repo echo -e "${BLUE}Cloning the EMT repo @${GREEN}${GIT_REPO}${ENDCOLOR}" From c83e2be7f51b9f577b8cef06c0d217f3e920957f Mon Sep 17 00:00:00 2001 From: Smitesh Sutaria Date: Sat, 26 Jul 2025 13:40:12 +0530 Subject: [PATCH 19/46] Create idv-iso-builder --- .github/workflows/idv-iso-builder | 69 +++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 .github/workflows/idv-iso-builder diff --git a/.github/workflows/idv-iso-builder b/.github/workflows/idv-iso-builder new file mode 100644 index 00000000..520a6bc1 --- /dev/null +++ b/.github/workflows/idv-iso-builder @@ -0,0 +1,69 @@ +# This is a workflow that is triggered to build EMT desktop virtualization (IDV) ISO + +name: EMT IDV ISO Build + +# Controls when the action will run. Workflow runs when manually triggered using the UI +# or API. +on: + push: + branches: + - emt-dv-iso + - main + workflow_dispatch: + # Inputs the workflow accepts. + inputs: + tag: + # description to be shown in the UI + description: 'commit id to build against' + # Default value if no value is explicitly provided + default: '3.0.20250718' + # Input has to be provided for the workflow to run + required: true + # The data type of the input + type: string + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + # A workflow run is made up of one or more jobs that can run sequentially or in parallel + build-idv-iso: + # The type of runner that the job will run on + runs-on: ubuntu-24.04 + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + # Runs a single command using the runners shell + - name: Build EMT + run: | + #sudo apt-get update && sudo apt-get install genisoimage + + #git init + #git clone https://github.com/open-edge-platform/edge-microvisor-toolkit.git --branch=3.0 + #ls -lah + #cd edge-microvisor-toolkit + #sudo ./toolkit/docs/building/prerequisites-ubuntu.sh + #sudo ln -vsf /usr/lib/go-1.21/bin/go /usr/bin/go + #sudo ln -vsf /usr/lib/go-1.21/bin/gofmt /usr/bin/gofmt + #curl -fsSL https://get.docker.com -o get-docker.sh + #sudo sh get-docker.sh + #sudo usermod -aG docker $USER + + #git checkout ${{inputs.tag}} + #cd toolkit + #wget https://raw.githubusercontent.com/smitesh-sutaria/edge-microvisor-toolkit/refs/heads/3.0/toolkit/imageconfigs/idv.json + #wget https://raw.githubusercontent.com/smitesh-sutaria/edge-microvisor-toolkit/refs/heads/3.0/toolkit/imageconfigs/idv-m.json + mv idv.json ./imageconfigs/ + # mv ./imageconfigs/idv.json ./imageconfigs/full.json + # mv ./imageconfigs/full.json ./imageconfigs/idv.json + #sudo make toolchain REBUILD_TOOLS=y VALIDATE_TOOLCHAIN_GPG=n + #sudo make iso -j8 REBUILD_TOOLS=y REBUILD_PACKAGES=n VALIDATE_TOOLCHAIN_GPG=n CONFIG_FILE=./imageconfigs/idv.json + # ----------------------------- invoke via script --------------------------------- + wget https://raw.githubusercontent.com/open-edge-platform/edge-desktop-virtualization/refs/heads/emt-dv-iso/emt-dv-iso/build_idv_iso.sh + + sudo ./build_idv_iso.sh + - name: Upload a Build Artifact + uses: actions/upload-artifact@v4.6.2 + with: + # Artifact name + name: iso + # A file, directory or wildcard pattern that describes what to upload + path: idv*.iso From c1b27e9de4da49d2c67c0434adf603f3daa1a6c9 Mon Sep 17 00:00:00 2001 From: Smitesh Sutaria Date: Sat, 26 Jul 2025 13:41:41 +0530 Subject: [PATCH 20/46] Rename idv-iso-builder to idv-iso-builder.yaml --- .github/workflows/{idv-iso-builder => idv-iso-builder.yaml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .github/workflows/{idv-iso-builder => idv-iso-builder.yaml} (100%) diff --git a/.github/workflows/idv-iso-builder b/.github/workflows/idv-iso-builder.yaml similarity index 100% rename from .github/workflows/idv-iso-builder rename to .github/workflows/idv-iso-builder.yaml From 6c66df17051537f10b60f5dd602d563ae0d11ab1 Mon Sep 17 00:00:00 2001 From: Smitesh Sutaria Date: Sat, 26 Jul 2025 13:46:31 +0530 Subject: [PATCH 21/46] Update idv-iso-builder.yaml --- .github/workflows/idv-iso-builder.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/idv-iso-builder.yaml b/.github/workflows/idv-iso-builder.yaml index 520a6bc1..7b699b2d 100644 --- a/.github/workflows/idv-iso-builder.yaml +++ b/.github/workflows/idv-iso-builder.yaml @@ -51,7 +51,7 @@ jobs: #cd toolkit #wget https://raw.githubusercontent.com/smitesh-sutaria/edge-microvisor-toolkit/refs/heads/3.0/toolkit/imageconfigs/idv.json #wget https://raw.githubusercontent.com/smitesh-sutaria/edge-microvisor-toolkit/refs/heads/3.0/toolkit/imageconfigs/idv-m.json - mv idv.json ./imageconfigs/ + #mv idv.json ./imageconfigs/ # mv ./imageconfigs/idv.json ./imageconfigs/full.json # mv ./imageconfigs/full.json ./imageconfigs/idv.json #sudo make toolchain REBUILD_TOOLS=y VALIDATE_TOOLCHAIN_GPG=n From d3dd9704317b429592fb8a7df98847acd6ef4a28 Mon Sep 17 00:00:00 2001 From: Smitesh Sutaria Date: Sat, 26 Jul 2025 13:48:15 +0530 Subject: [PATCH 22/46] Update idv-iso-builder.yaml --- .github/workflows/idv-iso-builder.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/idv-iso-builder.yaml b/.github/workflows/idv-iso-builder.yaml index 7b699b2d..5977b643 100644 --- a/.github/workflows/idv-iso-builder.yaml +++ b/.github/workflows/idv-iso-builder.yaml @@ -59,7 +59,8 @@ jobs: # ----------------------------- invoke via script --------------------------------- wget https://raw.githubusercontent.com/open-edge-platform/edge-desktop-virtualization/refs/heads/emt-dv-iso/emt-dv-iso/build_idv_iso.sh - sudo ./build_idv_iso.sh + chmod a+x build_idv_iso.sh + ./build_idv_iso.sh - name: Upload a Build Artifact uses: actions/upload-artifact@v4.6.2 with: From d9aea3864f0650b3bf949da82768ccede54919b4 Mon Sep 17 00:00:00 2001 From: Smitesh Sutaria Date: Sat, 26 Jul 2025 15:16:09 +0530 Subject: [PATCH 23/46] Update idv-iso-builder.yaml --- .github/workflows/idv-iso-builder.yaml | 28 +++----------------------- 1 file changed, 3 insertions(+), 25 deletions(-) diff --git a/.github/workflows/idv-iso-builder.yaml b/.github/workflows/idv-iso-builder.yaml index 5977b643..8b557ff6 100644 --- a/.github/workflows/idv-iso-builder.yaml +++ b/.github/workflows/idv-iso-builder.yaml @@ -34,37 +34,15 @@ jobs: # Runs a single command using the runners shell - name: Build EMT run: | - #sudo apt-get update && sudo apt-get install genisoimage - - #git init - #git clone https://github.com/open-edge-platform/edge-microvisor-toolkit.git --branch=3.0 - #ls -lah - #cd edge-microvisor-toolkit - #sudo ./toolkit/docs/building/prerequisites-ubuntu.sh - #sudo ln -vsf /usr/lib/go-1.21/bin/go /usr/bin/go - #sudo ln -vsf /usr/lib/go-1.21/bin/gofmt /usr/bin/gofmt - #curl -fsSL https://get.docker.com -o get-docker.sh - #sudo sh get-docker.sh - #sudo usermod -aG docker $USER - - #git checkout ${{inputs.tag}} - #cd toolkit - #wget https://raw.githubusercontent.com/smitesh-sutaria/edge-microvisor-toolkit/refs/heads/3.0/toolkit/imageconfigs/idv.json - #wget https://raw.githubusercontent.com/smitesh-sutaria/edge-microvisor-toolkit/refs/heads/3.0/toolkit/imageconfigs/idv-m.json - #mv idv.json ./imageconfigs/ - # mv ./imageconfigs/idv.json ./imageconfigs/full.json - # mv ./imageconfigs/full.json ./imageconfigs/idv.json - #sudo make toolchain REBUILD_TOOLS=y VALIDATE_TOOLCHAIN_GPG=n - #sudo make iso -j8 REBUILD_TOOLS=y REBUILD_PACKAGES=n VALIDATE_TOOLCHAIN_GPG=n CONFIG_FILE=./imageconfigs/idv.json # ----------------------------- invoke via script --------------------------------- wget https://raw.githubusercontent.com/open-edge-platform/edge-desktop-virtualization/refs/heads/emt-dv-iso/emt-dv-iso/build_idv_iso.sh - - chmod a+x build_idv_iso.sh + #chmod a+x build_idv_iso.sh ./build_idv_iso.sh + ls -lrt - name: Upload a Build Artifact uses: actions/upload-artifact@v4.6.2 with: # Artifact name - name: iso + name: emt-idv-iso # A file, directory or wildcard pattern that describes what to upload path: idv*.iso From 23f098df0cc9831ab57dc770841379ff47cee5a4 Mon Sep 17 00:00:00 2001 From: Smitesh Sutaria Date: Sat, 26 Jul 2025 15:17:13 +0530 Subject: [PATCH 24/46] Update idv-iso-builder.yaml --- .github/workflows/idv-iso-builder.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/idv-iso-builder.yaml b/.github/workflows/idv-iso-builder.yaml index 8b557ff6..835512bf 100644 --- a/.github/workflows/idv-iso-builder.yaml +++ b/.github/workflows/idv-iso-builder.yaml @@ -36,7 +36,7 @@ jobs: run: | # ----------------------------- invoke via script --------------------------------- wget https://raw.githubusercontent.com/open-edge-platform/edge-desktop-virtualization/refs/heads/emt-dv-iso/emt-dv-iso/build_idv_iso.sh - #chmod a+x build_idv_iso.sh + chmod a+x build_idv_iso.sh ./build_idv_iso.sh ls -lrt - name: Upload a Build Artifact From 91bcdfef5de78276c9c3684a0c1e37c032df565c Mon Sep 17 00:00:00 2001 From: Smitesh Sutaria Date: Sat, 26 Jul 2025 15:43:13 +0530 Subject: [PATCH 25/46] Update idv-iso-builder.yaml --- .github/workflows/idv-iso-builder.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/idv-iso-builder.yaml b/.github/workflows/idv-iso-builder.yaml index 835512bf..ec0be487 100644 --- a/.github/workflows/idv-iso-builder.yaml +++ b/.github/workflows/idv-iso-builder.yaml @@ -1,6 +1,6 @@ # This is a workflow that is triggered to build EMT desktop virtualization (IDV) ISO -name: EMT IDV ISO Build +name: EMT IDV ISO Builder # Controls when the action will run. Workflow runs when manually triggered using the UI # or API. From b79a61c983384e4217d34428918ee73881da48c7 Mon Sep 17 00:00:00 2001 From: Smitesh Sutaria Date: Sat, 26 Jul 2025 16:00:40 +0530 Subject: [PATCH 26/46] Update idv-iso-builder.yaml --- .github/workflows/idv-iso-builder.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/idv-iso-builder.yaml b/.github/workflows/idv-iso-builder.yaml index ec0be487..7553bd52 100644 --- a/.github/workflows/idv-iso-builder.yaml +++ b/.github/workflows/idv-iso-builder.yaml @@ -14,7 +14,7 @@ on: inputs: tag: # description to be shown in the UI - description: 'commit id to build against' + description: 'release tag to be build' # Default value if no value is explicitly provided default: '3.0.20250718' # Input has to be provided for the workflow to run @@ -37,7 +37,7 @@ jobs: # ----------------------------- invoke via script --------------------------------- wget https://raw.githubusercontent.com/open-edge-platform/edge-desktop-virtualization/refs/heads/emt-dv-iso/emt-dv-iso/build_idv_iso.sh chmod a+x build_idv_iso.sh - ./build_idv_iso.sh + ./build_idv_iso.sh -t ${{inputs.tag}} ls -lrt - name: Upload a Build Artifact uses: actions/upload-artifact@v4.6.2 From 91f03f6b6f39b1f766a79d6d1430f0bad4d7080a Mon Sep 17 00:00:00 2001 From: Smitesh Sutaria Date: Sat, 26 Jul 2025 16:04:41 +0530 Subject: [PATCH 27/46] Update idv-iso-builder.yaml --- .github/workflows/idv-iso-builder.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/idv-iso-builder.yaml b/.github/workflows/idv-iso-builder.yaml index 7553bd52..bef553b0 100644 --- a/.github/workflows/idv-iso-builder.yaml +++ b/.github/workflows/idv-iso-builder.yaml @@ -37,7 +37,9 @@ jobs: # ----------------------------- invoke via script --------------------------------- wget https://raw.githubusercontent.com/open-edge-platform/edge-desktop-virtualization/refs/heads/emt-dv-iso/emt-dv-iso/build_idv_iso.sh chmod a+x build_idv_iso.sh - ./build_idv_iso.sh -t ${{inputs.tag}} + tag_name = ${{inputs.tag}} + echo $tag_name + ./build_idv_iso.sh -t tag_name ls -lrt - name: Upload a Build Artifact uses: actions/upload-artifact@v4.6.2 From 49f8ee446a56c221c841b325294fad1aaf352d70 Mon Sep 17 00:00:00 2001 From: Smitesh Sutaria Date: Sat, 26 Jul 2025 16:18:52 +0530 Subject: [PATCH 28/46] Update idv-iso-builder.yaml --- .github/workflows/idv-iso-builder.yaml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/idv-iso-builder.yaml b/.github/workflows/idv-iso-builder.yaml index bef553b0..eedf8258 100644 --- a/.github/workflows/idv-iso-builder.yaml +++ b/.github/workflows/idv-iso-builder.yaml @@ -37,9 +37,10 @@ jobs: # ----------------------------- invoke via script --------------------------------- wget https://raw.githubusercontent.com/open-edge-platform/edge-desktop-virtualization/refs/heads/emt-dv-iso/emt-dv-iso/build_idv_iso.sh chmod a+x build_idv_iso.sh - tag_name = ${{inputs.tag}} - echo $tag_name - ./build_idv_iso.sh -t tag_name + if: ${{ !inputs.myInput }} + run: ./build_idv_iso.sh + if: ${{ inputs.myInput }} + run: ./build_idv_iso.sh -t ${{ inputs.myInput }} ls -lrt - name: Upload a Build Artifact uses: actions/upload-artifact@v4.6.2 From 6b223bdd954edceb033a9456c9fdd72c0e3df885 Mon Sep 17 00:00:00 2001 From: Smitesh Sutaria Date: Sat, 26 Jul 2025 16:22:56 +0530 Subject: [PATCH 29/46] Update idv-iso-builder.yaml --- .github/workflows/idv-iso-builder.yaml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/idv-iso-builder.yaml b/.github/workflows/idv-iso-builder.yaml index eedf8258..b5c98bd6 100644 --- a/.github/workflows/idv-iso-builder.yaml +++ b/.github/workflows/idv-iso-builder.yaml @@ -37,10 +37,11 @@ jobs: # ----------------------------- invoke via script --------------------------------- wget https://raw.githubusercontent.com/open-edge-platform/edge-desktop-virtualization/refs/heads/emt-dv-iso/emt-dv-iso/build_idv_iso.sh chmod a+x build_idv_iso.sh - if: ${{ !inputs.myInput }} - run: ./build_idv_iso.sh - if: ${{ inputs.myInput }} - run: ./build_idv_iso.sh -t ${{ inputs.myInput }} + if [${{ !inputs.myInput }}]; then + ./build_idv_iso.sh + else + ./build_idv_iso.sh -t ${{ inputs.myInput }} + fi ls -lrt - name: Upload a Build Artifact uses: actions/upload-artifact@v4.6.2 From 805ce5f6f7f5d2a1dc63a4f441a5c8a060f0f6d8 Mon Sep 17 00:00:00 2001 From: Smitesh Sutaria Date: Sat, 26 Jul 2025 16:26:25 +0530 Subject: [PATCH 30/46] Update idv-iso-builder.yaml --- .github/workflows/idv-iso-builder.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/idv-iso-builder.yaml b/.github/workflows/idv-iso-builder.yaml index b5c98bd6..0fca5bba 100644 --- a/.github/workflows/idv-iso-builder.yaml +++ b/.github/workflows/idv-iso-builder.yaml @@ -37,10 +37,10 @@ jobs: # ----------------------------- invoke via script --------------------------------- wget https://raw.githubusercontent.com/open-edge-platform/edge-desktop-virtualization/refs/heads/emt-dv-iso/emt-dv-iso/build_idv_iso.sh chmod a+x build_idv_iso.sh - if [${{ !inputs.myInput }}]; then + if [[ -z "${{ !inputs.myInput }}" ]]; then ./build_idv_iso.sh else - ./build_idv_iso.sh -t ${{ inputs.myInput }} + ./build_idv_iso.sh -t "${{ inputs.myInput }}" fi ls -lrt - name: Upload a Build Artifact From bf6c11e7ec100fb321367d7fe0f087a331c445b9 Mon Sep 17 00:00:00 2001 From: Smitesh Sutaria Date: Sat, 26 Jul 2025 16:29:32 +0530 Subject: [PATCH 31/46] Update idv-iso-builder.yaml --- .github/workflows/idv-iso-builder.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/idv-iso-builder.yaml b/.github/workflows/idv-iso-builder.yaml index 0fca5bba..58de8b67 100644 --- a/.github/workflows/idv-iso-builder.yaml +++ b/.github/workflows/idv-iso-builder.yaml @@ -34,7 +34,6 @@ jobs: # Runs a single command using the runners shell - name: Build EMT run: | - # ----------------------------- invoke via script --------------------------------- wget https://raw.githubusercontent.com/open-edge-platform/edge-desktop-virtualization/refs/heads/emt-dv-iso/emt-dv-iso/build_idv_iso.sh chmod a+x build_idv_iso.sh if [[ -z "${{ !inputs.myInput }}" ]]; then From 4962b6222d49b02b822743a58844486ac7d9ad2f Mon Sep 17 00:00:00 2001 From: Smitesh Sutaria Date: Sat, 26 Jul 2025 16:46:49 +0530 Subject: [PATCH 32/46] Update idv-iso-builder.yaml --- .github/workflows/idv-iso-builder.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/idv-iso-builder.yaml b/.github/workflows/idv-iso-builder.yaml index 58de8b67..826ba7d9 100644 --- a/.github/workflows/idv-iso-builder.yaml +++ b/.github/workflows/idv-iso-builder.yaml @@ -36,7 +36,7 @@ jobs: run: | wget https://raw.githubusercontent.com/open-edge-platform/edge-desktop-virtualization/refs/heads/emt-dv-iso/emt-dv-iso/build_idv_iso.sh chmod a+x build_idv_iso.sh - if [[ -z "${{ !inputs.myInput }}" ]]; then + if [[ -z "${{ inputs.myInput }}" ]]; then ./build_idv_iso.sh else ./build_idv_iso.sh -t "${{ inputs.myInput }}" From bd26d53fa7a4530de9f0ac6f99071ff308eb3047 Mon Sep 17 00:00:00 2001 From: Smitesh Sutaria Date: Sat, 26 Jul 2025 17:07:47 +0530 Subject: [PATCH 33/46] few enchancements Signed-off-by: Smitesh Sutaria --- .github/workflows/idv-iso-builder.yaml | 3 ++- emt-dv-iso/build_idv_iso.sh | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/idv-iso-builder.yaml b/.github/workflows/idv-iso-builder.yaml index 826ba7d9..50f7c2a4 100644 --- a/.github/workflows/idv-iso-builder.yaml +++ b/.github/workflows/idv-iso-builder.yaml @@ -1,7 +1,8 @@ # This is a workflow that is triggered to build EMT desktop virtualization (IDV) ISO name: EMT IDV ISO Builder - +permissions: + contents: read # Controls when the action will run. Workflow runs when manually triggered using the UI # or API. on: diff --git a/emt-dv-iso/build_idv_iso.sh b/emt-dv-iso/build_idv_iso.sh index 2c6b147c..e148f2f7 100755 --- a/emt-dv-iso/build_idv_iso.sh +++ b/emt-dv-iso/build_idv_iso.sh @@ -39,7 +39,6 @@ function launch_build() { echo -e "${RED}------------------------- Build Details -----------------------------------${ENDCOLOR}" echo -e "${BLUE}Current working directory : ${GREEN}$DIR ${ENDCOLOR}" echo -e "${BLUE}No. of CPUs on the system : ${GREEN}$(nproc)${ENDCOLOR}" - #echo -e ${BLUE}"Available ISO Files : " ${GREEN} $DIR/*.iso ${ENDCOLOR} echo -e "${BLUE}git repo to be used : ${GREEN}$GIT_REPO ${ENDCOLOR}" echo -e "${BLUE}tag (a release tag) : ${GREEN}$TAG ${ENDCOLOR}" echo -e "${BLUE}image config Json Path : ${GREEN}$IDV_JSON_PATH ${ENDCOLOR}" From 104104242cdeb03af4d7ab8e473f83b534014013 Mon Sep 17 00:00:00 2001 From: Smitesh Sutaria Date: Sat, 26 Jul 2025 19:18:54 +0530 Subject: [PATCH 34/46] upating the links in readme Signed-off-by: Smitesh Sutaria --- emt-dv-iso/README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/emt-dv-iso/README.md b/emt-dv-iso/README.md index ca06d650..df047582 100644 --- a/emt-dv-iso/README.md +++ b/emt-dv-iso/README.md @@ -27,14 +27,14 @@ sudo ./build_idv_iso.sh ``` Command line arguments are optional. Below default values will be used : -- Latest emt release tag -- idv.json from this repo +- Latest emt release tag : [3.0.20250718](https://github.com/open-edge-platform/edge-microvisor-toolkit/releases/tag/3.0.20250718) +- [idv.json](https://github.com/open-edge-platform/edge-desktop-virtualization/blob/main/emt-dv-iso/idv.json) ### Run the scripts with custom parameters Build script supports 2 custom parameters (optional): -1. [-t tag-name] : This is the git release tag-name against which build should run. -2. [-f image-config-json-file] : This is the emt image config .json file. One can generate the custom images using this config file. +1. [-t *tag-name*] : This is the git release tag-name against which build should run. +2. [-f *image-config-json-file*] : This is the emt image config .json file. One can generate the custom images using this config file. For ex: ```sh From 5f412898bef127c271439cfab39ccad50a762d59 Mon Sep 17 00:00:00 2001 From: Smitesh Sutaria Date: Sat, 26 Jul 2025 23:31:22 +0530 Subject: [PATCH 35/46] review comments taken care Signed-off-by: Smitesh Sutaria --- .github/workflows/idv-iso-builder.yaml | 5 ++++- emt-dv-iso/README.md | 11 +++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/.github/workflows/idv-iso-builder.yaml b/.github/workflows/idv-iso-builder.yaml index 50f7c2a4..0f1eec21 100644 --- a/.github/workflows/idv-iso-builder.yaml +++ b/.github/workflows/idv-iso-builder.yaml @@ -1,5 +1,8 @@ -# This is a workflow that is triggered to build EMT desktop virtualization (IDV) ISO +--- +# SPDX-FileCopyrightText: (C) 2025 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 +# This is a workflow that is triggered to build EMT desktop virtualization (IDV) ISO name: EMT IDV ISO Builder permissions: contents: read diff --git a/emt-dv-iso/README.md b/emt-dv-iso/README.md index df047582..c286cbbd 100644 --- a/emt-dv-iso/README.md +++ b/emt-dv-iso/README.md @@ -62,29 +62,36 @@ The image configuration is part of this repo [here](./idv.json) [Build Requirements](https://github.com/open-edge-platform/edge-microvisor-toolkit/blob/3.0/toolkit/docs/building/prerequisites-ubuntu.md#build-requirements-on-ubuntu) +> The steps and build requirements are common across ubuntu-24.04 and ubuntu-22.04 > It is recommended to built against a stable/release tag. + ### Step 1: clone the EMT repo ```sh git clone https://github.com/open-edge-platform/edge-microvisor-toolkit ``` ### Step 2: Checkout the tag ```sh +cd edge-microvisor-toolkit git checkout tags/ ``` ### Step 3: Copy the idv.json to edge-microvisor-toolkit/toolkit/imageconfigs/ ```sh -cp idv.json edge-microvisor-toolkit/toolkit/imageconfigs/ +wget https://github.com/open-edge-platform/edge-desktop-virtualization/blob/main/emt-dv-iso/idv.json +cp idv.json toolkit/imageconfigs/ ``` +> One can copy any custom idv.json file as per the requirement. + ### Step 4: Build the tools ```sh -cd edge-microvisor-toolkit/toolkit +cd toolkit sudo make toolchain REBUILD_TOOLS=y ``` ### Step 5: Build the ISO for desktop virtualization (IDV) ```sh sudo make iso -j8 REBUILD_TOOLS=y REBUILD_PACKAGES=n CONFIG_FILE=./imageconfigs/idv.json ``` +> ISO file will be generated @ 'edge-microvisor-toolkit/out/images' ### Troubleshoot From 9b6dc29dd2cb034e22c24ac623d8c725463b148d Mon Sep 17 00:00:00 2001 From: Smitesh Sutaria Date: Sat, 26 Jul 2025 23:36:34 +0530 Subject: [PATCH 36/46] adding link for available release tags Signed-off-by: Smitesh Sutaria --- emt-dv-iso/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/emt-dv-iso/README.md b/emt-dv-iso/README.md index c286cbbd..32aa91b5 100644 --- a/emt-dv-iso/README.md +++ b/emt-dv-iso/README.md @@ -75,6 +75,8 @@ git clone https://github.com/open-edge-platform/edge-microvisor-toolkit cd edge-microvisor-toolkit git checkout tags/ ``` +> The release tags can be found [here](https://github.com/open-edge-platform/edge-microvisor-toolkit/releases) + ### Step 3: Copy the idv.json to edge-microvisor-toolkit/toolkit/imageconfigs/ ```sh wget https://github.com/open-edge-platform/edge-desktop-virtualization/blob/main/emt-dv-iso/idv.json From 089d40baf5d94e2e77418b5ac6927e0cbc96d6d4 Mon Sep 17 00:00:00 2001 From: Smitesh Sutaria Date: Sun, 27 Jul 2025 00:00:35 +0530 Subject: [PATCH 37/46] refactor readme Signed-off-by: Smitesh Sutaria --- emt-dv-iso/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/emt-dv-iso/README.md b/emt-dv-iso/README.md index 32aa91b5..2b827901 100644 --- a/emt-dv-iso/README.md +++ b/emt-dv-iso/README.md @@ -2,7 +2,7 @@ # Building EMT ISO with Desktop Virtualization (graphics SR-IOV) - [Building EMT ISO with Desktop Virtualization (graphics SR-IOV)](#building-emt-iso-with-desktop-virtualization-graphics-sr-iov) - - [Using Standalone Build Script (Automated)](#using-standalone-build-script-automated) + - [Using Standalone (One-click) Build Script](#using-standalone-one-click-build-script) - [Run the script with default parameters](#run-the-script-with-default-parameters) - [Run the scripts with custom parameters](#run-the-scripts-with-custom-parameters) - [ISO file will be generated in the same path](#iso-file-will-be-generated-in-the-same-path) @@ -18,7 +18,7 @@ - [Clean build](#clean-build) - [Working with Proxies](#working-with-proxies) -## Using Standalone Build Script (Automated) +## Using Standalone (One-click) Build Script > Prerequisite : Ubuntu 22.04 or Ubuntu 24.04 From 2217f3218f0ffc14e257b63d694ee10fcb5439e5 Mon Sep 17 00:00:00 2001 From: Smitesh Sutaria Date: Sun, 27 Jul 2025 00:40:52 +0530 Subject: [PATCH 38/46] editing name of the build Signed-off-by: Smitesh Sutaria --- .github/workflows/idv-iso-builder.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/idv-iso-builder.yaml b/.github/workflows/idv-iso-builder.yaml index 0f1eec21..0d2f01c1 100644 --- a/.github/workflows/idv-iso-builder.yaml +++ b/.github/workflows/idv-iso-builder.yaml @@ -36,7 +36,7 @@ jobs: # Steps represent a sequence of tasks that will be executed as part of the job steps: # Runs a single command using the runners shell - - name: Build EMT + - name: Build EMT IDV ISO run: | wget https://raw.githubusercontent.com/open-edge-platform/edge-desktop-virtualization/refs/heads/emt-dv-iso/emt-dv-iso/build_idv_iso.sh chmod a+x build_idv_iso.sh From 76443bc58118ee72d44afd7966a889fe787bdb18 Mon Sep 17 00:00:00 2001 From: Smitesh Sutaria Date: Sun, 27 Jul 2025 01:37:12 +0530 Subject: [PATCH 39/46] refactor readme Signed-off-by: Smitesh Sutaria --- emt-dv-iso/README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/emt-dv-iso/README.md b/emt-dv-iso/README.md index 2b827901..b2b9bea7 100644 --- a/emt-dv-iso/README.md +++ b/emt-dv-iso/README.md @@ -2,12 +2,12 @@ # Building EMT ISO with Desktop Virtualization (graphics SR-IOV) - [Building EMT ISO with Desktop Virtualization (graphics SR-IOV)](#building-emt-iso-with-desktop-virtualization-graphics-sr-iov) - - [Using Standalone (One-click) Build Script](#using-standalone-one-click-build-script) + - [Option-1 : Standalone (One-click) Build Script](#option-1--standalone-one-click-build-script) - [Run the script with default parameters](#run-the-script-with-default-parameters) - [Run the scripts with custom parameters](#run-the-scripts-with-custom-parameters) - [ISO file will be generated in the same path](#iso-file-will-be-generated-in-the-same-path) - [Refer the demo below](#refer-the-demo-below) - - [Manual Steps](#manual-steps) + - [Option-2 : Manual Steps](#option-2--manual-steps) - [Pre-requisite](#pre-requisite) - [Step 1: clone the EMT repo](#step-1-clone-the-emt-repo) - [Step 2: Checkout the tag](#step-2-checkout-the-tag) @@ -18,9 +18,9 @@ - [Clean build](#clean-build) - [Working with Proxies](#working-with-proxies) -## Using Standalone (One-click) Build Script +## Option-1 : Standalone (One-click) Build Script -> Prerequisite : Ubuntu 22.04 or Ubuntu 24.04 +> **Prerequisite** : Ubuntu 22.04 or Ubuntu 24.04 ### Run the script with default parameters ```sh @@ -54,7 +54,7 @@ sudo ./build_idv_iso.sh -t 3.0.20250718 -f ./idv.json https://github.com/user-attachments/assets/8e3f609b-9632-4ea6-807d-1560856a20db -## Manual Steps +## Option-2 : Manual Steps The image configuration is part of this repo [here](./idv.json) From 570b0ae2852ecd7561e3644a208c59421de4f006 Mon Sep 17 00:00:00 2001 From: Smitesh Sutaria Date: Sun, 27 Jul 2025 11:28:23 +0530 Subject: [PATCH 40/46] adding workflow option Signed-off-by: Smitesh Sutaria --- emt-dv-iso/README.md | 39 ++++++++++++++++++++++++++------------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/emt-dv-iso/README.md b/emt-dv-iso/README.md index b2b9bea7..d1cb6189 100644 --- a/emt-dv-iso/README.md +++ b/emt-dv-iso/README.md @@ -6,7 +6,7 @@ - [Run the script with default parameters](#run-the-script-with-default-parameters) - [Run the scripts with custom parameters](#run-the-scripts-with-custom-parameters) - [ISO file will be generated in the same path](#iso-file-will-be-generated-in-the-same-path) - - [Refer the demo below](#refer-the-demo-below) + - [Demo : One-click EMT IDV ISO build script](#demo--one-click-emt-idv-iso-build-script) - [Option-2 : Manual Steps](#option-2--manual-steps) - [Pre-requisite](#pre-requisite) - [Step 1: clone the EMT repo](#step-1-clone-the-emt-repo) @@ -17,6 +17,8 @@ - [Troubleshoot](#troubleshoot) - [Clean build](#clean-build) - [Working with Proxies](#working-with-proxies) + - [Option-3 : Github Actions](#option-3--github-actions) + - [Demo : EMT IDV ISO generation as part of github actions/workflow](#demo--emt-idv-iso-generation-as-part-of-github-actionsworkflow) ## Option-1 : Standalone (One-click) Build Script @@ -50,7 +52,7 @@ sudo ./build_idv_iso.sh -t 3.0.20250718 -f ./idv.json

-### Refer the demo below +### Demo : One-click EMT IDV ISO build script https://github.com/user-attachments/assets/8e3f609b-9632-4ea6-807d-1560856a20db @@ -99,17 +101,28 @@ sudo make iso -j8 REBUILD_TOOLS=y REBUILD_PACKAGES=n CONFIG_FILE=./imageconfigs/ #### Clean build -> For re-building with any other tags, its recommended to start clean and repeat above Steps 1 to 5. -> ```sh -> cd edge-microvisor-toolkit -> sudo make -C toolkit clean -> ``` +For re-building with any other tags, its recommended to start clean and repeat above Steps 1 to 5. + ```sh +cd edge-microvisor-toolkit +sudo make -C toolkit clean +``` #### Working with Proxies -> If you are behind proxies and have them set, use -E option with all make commands -> For ex : -> ``` -> sudo -E make toolchain REBUILD_TOOLS=y -> sudo -E make iso -j8 REBUILD_TOOLS=y REBUILD_PACKAGES=n CONFIG_FILE=./imageconfigs/idv.json -> ``` +If you are behind proxies and have them set, use -E option with all make commands +For ex : +``` +sudo -E make toolchain REBUILD_TOOLS=y +sudo -E make iso -j8 REBUILD_TOOLS=y REBUILD_PACKAGES=n CONFIG_FILE=./imageconfigs/idv.json +``` + +## Option-3 : Github Actions + +Generation of EMT IDV ISO can be part of github actions/workflow. + +[Reference workflow file](https://raw.githubusercontent.com/open-edge-platform/edge-desktop-virtualization/refs/heads/main/.github/workflows/idv-iso-builder.yaml) + +### Demo : EMT IDV ISO generation as part of github actions/workflow + + + From a29c49a1e9cf82c10121cad46482992ed72d1aa4 Mon Sep 17 00:00:00 2001 From: Smitesh Sutaria Date: Sun, 27 Jul 2025 12:33:13 +0530 Subject: [PATCH 41/46] Update README.md --- emt-dv-iso/README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/emt-dv-iso/README.md b/emt-dv-iso/README.md index d1cb6189..e57e91da 100644 --- a/emt-dv-iso/README.md +++ b/emt-dv-iso/README.md @@ -124,5 +124,4 @@ Generation of EMT IDV ISO can be part of github actions/workflow. ### Demo : EMT IDV ISO generation as part of github actions/workflow - - +https://github.com/user-attachments/assets/66f508a0-c9c8-4f4e-9be7-f60a42a995fb From c615e905a1196227e482b4ac5331b9792e0b8756 Mon Sep 17 00:00:00 2001 From: Smitesh Sutaria Date: Sun, 27 Jul 2025 13:30:40 +0530 Subject: [PATCH 42/46] adding emt-dv-iso branch link - will enable branch protection on this. Signed-off-by: Smitesh Sutaria --- emt-dv-iso/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/emt-dv-iso/README.md b/emt-dv-iso/README.md index e57e91da..ed6d68fe 100644 --- a/emt-dv-iso/README.md +++ b/emt-dv-iso/README.md @@ -30,7 +30,7 @@ sudo ./build_idv_iso.sh ``` Command line arguments are optional. Below default values will be used : - Latest emt release tag : [3.0.20250718](https://github.com/open-edge-platform/edge-microvisor-toolkit/releases/tag/3.0.20250718) -- [idv.json](https://github.com/open-edge-platform/edge-desktop-virtualization/blob/main/emt-dv-iso/idv.json) +- [idv.json](https://github.com/open-edge-platform/edge-desktop-virtualization/blob/emt-dv-iso/emt-dv-iso/idv.json) ### Run the scripts with custom parameters From e4de24f0acf63f14fc468b0f642877652e4fd1c2 Mon Sep 17 00:00:00 2001 From: Smitesh Sutaria Date: Sun, 27 Jul 2025 16:19:40 +0530 Subject: [PATCH 43/46] Update README.md --- emt-dv-iso/README.md | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/emt-dv-iso/README.md b/emt-dv-iso/README.md index ed6d68fe..9cea24f8 100644 --- a/emt-dv-iso/README.md +++ b/emt-dv-iso/README.md @@ -45,12 +45,7 @@ sudo ./build_idv_iso.sh -t 3.0.20250718 -f ./idv.json ### ISO file will be generated in the same path -

- -

-

- -

+emt-idv-iso-out ### Demo : One-click EMT IDV ISO build script From e8ec91ab7cb6e2d641987cfe8f2e3a1bd874c249 Mon Sep 17 00:00:00 2001 From: Smitesh Sutaria Date: Thu, 31 Jul 2025 15:37:12 +0530 Subject: [PATCH 44/46] Emt dv iso test (#66) * Update idv.json * Update build_idv_iso.sh * Update build_idv_iso.sh reverting the test changes --- emt-dv-iso/idv.json | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/emt-dv-iso/idv.json b/emt-dv-iso/idv.json index d3b22be5..e92dc316 100644 --- a/emt-dv-iso/idv.json +++ b/emt-dv-iso/idv.json @@ -15,8 +15,7 @@ "packagelists/intel-gpu-base.json", "packagelists/drtm.json", "packagelists/virt-guest-packages.json", - "packagelists/intel-wireless.json", - "packagelists/intel-idv-services.json" + "packagelists/intel-wireless.json" ], "Packages": [ "lsb-release", @@ -27,7 +26,7 @@ "igt-gpu-tools" ], "KernelCommandLine": { - "ExtraCommandLine": "udmabuf.list_limit=8192 i915.enable_guc=3 i915.max_vfs=7 intel_iommu=on iommu=pt i915.force_probe=*", + "ExtraCommandLine": "udmabuf.list_limit=8192 i915.enable_guc=3 i915.max_vfs=7 intel_iommu=on i915.force_probe=*", "SELinux": "permissive" }, "KernelOptions": { From af7395e2376a04f870a4c9c049eb9254cfd38bec Mon Sep 17 00:00:00 2001 From: Smitesh Sutaria Date: Thu, 31 Jul 2025 23:31:33 +0530 Subject: [PATCH 45/46] adding wifi related package: wpa_supplicant (#67) * readme changes Signed-off-by: Smitesh Sutaria * adding wifi related package - wpa_supplicant Signed-off-by: Smitesh Sutaria --------- Signed-off-by: Smitesh Sutaria --- emt-dv-iso/README.md | 4 ++-- emt-dv-iso/idv.json | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/emt-dv-iso/README.md b/emt-dv-iso/README.md index 9cea24f8..cb3f8989 100644 --- a/emt-dv-iso/README.md +++ b/emt-dv-iso/README.md @@ -76,7 +76,7 @@ git checkout tags/ ### Step 3: Copy the idv.json to edge-microvisor-toolkit/toolkit/imageconfigs/ ```sh -wget https://github.com/open-edge-platform/edge-desktop-virtualization/blob/main/emt-dv-iso/idv.json +wget https://raw.githubusercontent.com/open-edge-platform/edge-desktop-virtualization/refs/heads/emt-dv-iso/emt-dv-iso/idv.json cp idv.json toolkit/imageconfigs/ ``` > One can copy any custom idv.json file as per the requirement. @@ -115,7 +115,7 @@ sudo -E make iso -j8 REBUILD_TOOLS=y REBUILD_PACKAGES=n CONFIG_FILE=./imageconfi Generation of EMT IDV ISO can be part of github actions/workflow. -[Reference workflow file](https://raw.githubusercontent.com/open-edge-platform/edge-desktop-virtualization/refs/heads/main/.github/workflows/idv-iso-builder.yaml) +[Reference workflow file](https://raw.githubusercontent.com/open-edge-platform/edge-desktop-virtualization/refs/heads/emt-dv-iso/.github/workflows/idv-iso-builder.yaml) ### Demo : EMT IDV ISO generation as part of github actions/workflow diff --git a/emt-dv-iso/idv.json b/emt-dv-iso/idv.json index e92dc316..475aa4d7 100644 --- a/emt-dv-iso/idv.json +++ b/emt-dv-iso/idv.json @@ -23,6 +23,7 @@ "ntfs-3g", "ntfs-3g-system-compression", "ntfs-3g-libs", + "wpa_supplicant", "igt-gpu-tools" ], "KernelCommandLine": { From c90c11949854c9b2b3937039f20f25f9d1329374 Mon Sep 17 00:00:00 2001 From: Smitesh Sutaria Date: Thu, 7 Aug 2025 16:44:05 +0530 Subject: [PATCH 46/46] Emt idv iso update build tag (#69) * Update idv-iso-builder.yaml update the default build tag * Update build_idv_iso.sh update the build tag * Update idv-iso-builder.yaml update the branch name * Update idv-iso-builder.yaml --- .github/workflows/idv-iso-builder.yaml | 2 +- emt-dv-iso/build_idv_iso.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/idv-iso-builder.yaml b/.github/workflows/idv-iso-builder.yaml index 0d2f01c1..117c01ca 100644 --- a/.github/workflows/idv-iso-builder.yaml +++ b/.github/workflows/idv-iso-builder.yaml @@ -20,7 +20,7 @@ on: # description to be shown in the UI description: 'release tag to be build' # Default value if no value is explicitly provided - default: '3.0.20250718' + default: '3.0.20250806' # Input has to be provided for the workflow to run required: true # The data type of the input diff --git a/emt-dv-iso/build_idv_iso.sh b/emt-dv-iso/build_idv_iso.sh index e148f2f7..e50741df 100755 --- a/emt-dv-iso/build_idv_iso.sh +++ b/emt-dv-iso/build_idv_iso.sh @@ -14,7 +14,7 @@ ENDCOLOR='\e[0m' # Reset to default color # ------------------- Default Values ------------------------------ # Default tag. This will be the latest EMT release tag. -DEFAULT_TAG=3.0.20250718 +DEFAULT_TAG=3.0.20250806 # Default image config .json file. If this is NULL, default will be fetched from the repo. DEFAULT_IDV_JSON_PATH=""