From 6a40f221548a1e6d8882fa94583c1a0dd0936121 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filip=20Lewi=C5=84ski?= Date: Tue, 10 Sep 2024 11:19:43 +0200 Subject: [PATCH 1/2] docs/variants/protectli_v1000-series/releases.md: add v1210 v0.9.3 relnotes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Filip Lewiński --- .codespellrc | 2 +- .codespellx | 4 ++ .../protectli_v1000-series/releases.md | 71 +++++++++++++++++++ 3 files changed, 76 insertions(+), 1 deletion(-) diff --git a/.codespellrc b/.codespellrc index d1dbf2ac1c..e79b317270 100644 --- a/.codespellrc +++ b/.codespellrc @@ -1,3 +1,3 @@ [codespell] exclude-file = .codespellx -ignore-words-list = "FPT,FTP,fpt,ftp,Compex,compex,dout,doubt" +ignore-words-list = "FPT,FTP,fpt,ftp,Compex,compex,dout,doubt,HDA,HAD,hda,had" diff --git a/.codespellx b/.codespellx index 445af9814d..8dc9b264b8 100644 --- a/.codespellx +++ b/.codespellx @@ -2,3 +2,7 @@ linux /boot/vmlinuz-4.15.0-115-generic ro quiet iomem=relaxed dout doubt +HDA +HAD +hda +had diff --git a/docs/variants/protectli_v1000-series/releases.md b/docs/variants/protectli_v1000-series/releases.md index f6ecf0ca04..9e27090e77 100644 --- a/docs/variants/protectli_v1000-series/releases.md +++ b/docs/variants/protectli_v1000-series/releases.md @@ -18,3 +18,74 @@ Test results for this platform can be found [![empty-pixel](../../images/empty_pixel.png)](../../unified/protectli/overview.md) + +## Protectli V1210 Dasharo Release Notes + +Following Release Notes describe status of open-source firmware development for +Protectli V1210 + +For details about our release process please read +[Dasharo Standard Release Process](../../dev-proc/standard-release-process.md). + +
+ +[Subscribe to Protectli V1210 Dasharo Release Newsletter] +[newsletter]{ .md-button .md-button--primary .center } + +
+ +### v0.9.3 - 2024-09-09 + +Test results for this release can be found +[here](https://docs.google.com/spreadsheets/d/1wSE6xA3K3nXewwLn5lV39_2wZL1kg5AkGb4mvmG3bwE/edit?gid=1207991922#gid=1207991922). + +#### Added + +- Intel-specific HDA verbs, for proper audio functionality + +#### Changed + +- Disabled DSP +- Disabled SATA due to lack of HW support +- Disabled SSID programming to prevent Windows default drives from not probing + successfully +- Removed differences in SMBIOS fields compared to proprietary FW +- Disabled WiFi L0 to prevent errors from showing up in dmesg + +#### Known Issues + +- There is no PC speaker populated on the platform, so it does not give sound + signals on errors and boot +- The chassis is getting very hot + +#### Binaries + +[protectli_v1210_v0.9.3.rom][protectli_v1210_v0.9.3.rom_file]{.md-button} +[sha256][protectli_v1210_v0.9.3.rom_hash]{.md-button} +[sha256.sig][protectli_v1210_v0.9.3.rom_sig]{.md-button} + +To verify binary integrity with hash and signature please follow the +instructions in [Dasharo release signature verification](/guides/signature-verification) +using [this key](https://raw.githubusercontent.com/3mdeb/3mdeb-secpack/master/dasharo/dasharo-open-source-firmware-engineering-release-signing-key.asc) + +#### SBOM (Software Bill of Materials) + +- [coreboot based on 4.21 revision ee437086](https://github.com/Dasharo/coreboot/tree/ee437086) + + [License](https://github.com/Dasharo/coreboot/blob/ee437086/COPYING) +- [Dasharo EDKII fork based on f06673308f revision f0667330](https://github.com/Dasharo/edk2/tree/f0667330) + + [License](https://github.com/Dasharo/edk2/blob/f0667330/License.txt) +- [Dasharo iPXE fork based on 838611b34e revision 838611b3](https://github.com/Dasharo/ipxe/tree/838611b3) + + [License](https://github.com/Dasharo/ipxe/blob/838611b3/COPYING.GPLv2) +- [Intel Management Engine based on v13.50.27.1987 revision 9712e97a](https://github.com/Dasharo/dasharo-blobs/blob/9712e97a/protectli/vault_jsl/) + + [License](https://github.com/Dasharo/dasharo-blobs/blob/main/licenses/pv%20intel%20obl%20software%20license%20agreement%2011.2.2017.pdf) +- [Intel Flash Descriptor based on v1.0 revision 9712e97a](https://github.com/Dasharo/dasharo-blobs/blob/9712e97a/protectli/vault_jsl/) + + [License](https://github.com/Dasharo/dasharo-blobs/blob/main/licenses/pv%20intel%20obl%20software%20license%20agreement%2011.2.2017.pdf) +- [Intel Firmware Support Package based on JSL 2021/08/23 v2115 revision 9712e97a](https://github.com/Dasharo/dasharo-blobs/blob/9712e97a/protectli/vault_jsl/JasperLakeFspBinPkg) + + [License](https://github.com/intel/FSP/blob/9712e97a/FSP_License.pdf) +- [Intel microcode based on JSL A0 0x24000026 revision microcode-20240312](https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/tree/microcode-20240312/intel-ucode/06-9c-00) + + [License](https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/blob/microcode-20240312/license) + +[newsletter]: https://newsletter.3mdeb.com/subscription/n2EpSxtqL +[protectli_v1210_v0.9.3.rom_file]: https://dl.3mdeb.com/open-source-firmware/Dasharo/protectli_vault_jsl/v0.9.3/protectli_v1210_v0.9.3.rom +[protectli_v1210_v0.9.3.rom_hash]: https://dl.3mdeb.com/open-source-firmware/Dasharo/protectli_vault_jsl/v0.9.3/protectli_v1210_v0.9.3.rom.sha256 +[protectli_v1210_v0.9.3.rom_sig]: https://dl.3mdeb.com/open-source-firmware/Dasharo/protectli_vault_jsl/v0.9.3/protectli_v1210_v0.9.3.rom.sha256.sig From 6573617402f8207b4ba4f47b029708ca963b4e00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20=C5=BBygowski?= Date: Mon, 16 Sep 2024 15:18:15 +0200 Subject: [PATCH 2/2] protectli_v1000-series: Add V1410 and V1210 complete release v0.9.3 content MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Michał Żygowski --- .../protectli_v1000-series/openness-score.md | 94 ++++++++++++++++++ ...tectli_v1210_v0.9.3.rom_openness_chart.png | Bin 0 -> 25755 bytes ...0_v0.9.3.rom_openness_chart_full_image.png | Bin 0 -> 31883 bytes .../protectli_v1000-series/releases.md | 89 +++++++++-------- mkdocs.yml | 2 +- 5 files changed, 142 insertions(+), 43 deletions(-) create mode 100644 docs/variants/protectli_v1000-series/openness-score.md create mode 100644 docs/variants/protectli_v1000-series/protectli_v1210_v0.9.3.rom_openness_chart.png create mode 100644 docs/variants/protectli_v1000-series/protectli_v1210_v0.9.3.rom_openness_chart_full_image.png diff --git a/docs/variants/protectli_v1000-series/openness-score.md b/docs/variants/protectli_v1000-series/openness-score.md new file mode 100644 index 0000000000..71ac650d61 --- /dev/null +++ b/docs/variants/protectli_v1000-series/openness-score.md @@ -0,0 +1,94 @@ +# Dasharo Openness Score + +This page contains the [Dasharo Openness +Score](../../glossary.md#dasharo-openness-score) for Protectli V1000 series +Dasharo releases. The content of the page is generated with [Dasharo Openness +Score utility](https://github.com/Dasharo/Openness-Score). + +## v0.9.3 + +> V1410 is very similar to V1210, thus the Openness Score for V1410 is not +> generated, as is considered to be either identical or contain neglectable +> differences compared to V1210. + +Openness Score for protectli_v1210_v0.9.3.rom + +Open-source code percentage: **20.2%** +Closed-source code percentage: **79.8%** + +* Image size: 16777216 (0x1000000) +* Number of regions: 10 +* Number of CBFSes: 2 +* Total open-source code size: 2321346 (0x236bc2) +* Total closed-source code size: 9190838 (0x8c3db6) +* Total data size: 475996 (0x7435c) +* Total empty size: 4789036 (0x49132c) + +![](protectli_v1210_v0.9.3.rom_openness_chart.png) + +![](protectli_v1210_v0.9.3.rom_openness_chart_full_image.png) + +> Numbers given above already include the calculations from CBFS regions +> presented below + +### FMAP regions + +| FMAP region | Offset | Size | Category | +| ----------- | ------ | ---- | -------- | +| SI_ME | 0x1000 | 0x7ff000 | closed-source | +| SI_DESC | 0x0 | 0x1000 | data | +| SMMSTORE | 0x800000 | 0x40000 | data | +| RW_MRC_CACHE | 0x840000 | 0x10000 | data | +| CONSOLE | 0x850000 | 0x20000 | data | +| FMAP | 0x970000 | 0x1000 | data | + +### CBFS BOOTSPLASH + +* CBFS size: 1048576 +* Number of files: 1 +* Open-source files size: 0 (0x0) +* Closed-source files size: 0 (0x0) +* Data size: 28 (0x1c) +* Empty size: 1048548 (0xfffe4) + +> Numbers given above are already normalized (i.e. they already include size +> of metadata and possible closed-source LAN drivers included in the payload +> which are not visible in the table below) + +| CBFS filename | CBFS filetype | Size | Compression | Category | +| ------------- | ------------- | ---- | ----------- | -------- | +| (empty) | null | 1048548 | none | empty | + +### CBFS COREBOOT + +* CBFS size: 6877184 +* Number of files: 18 +* Open-source files size: 2321346 (0x236bc2) +* Closed-source files size: 806326 (0xc4db6) +* Data size: 9024 (0x2340) +* Empty size: 3740488 (0x391348) + +> Numbers given above are already normalized (i.e. they already include size +> of metadata and possible closed-source LAN drivers included in the payload +> which are not visible in the table below) + +| CBFS filename | CBFS filetype | Size | Compression | Category | +| ------------- | ------------- | ---- | ----------- | -------- | +| fallback/payload | simple elf | 2059016 | none | open-source | +| fallback/romstage | stage | 68056 | none | open-source | +| fallback/ramstage | stage | 124851 | LZMA | open-source | +| fallback/dsdt.aml | raw | 8619 | none | open-source | +| fallback/postcar | stage | 30852 | none | open-source | +| bootblock | bootblock | 29952 | none | open-source | +| cpu_microcode_blob.bin | microcode | 20480 | none | closed-source | +| fspm.bin | fsp | 557056 | none | closed-source | +| fsps.bin | fsp | 228790 | LZ4 | closed-source | +| cbfs_master_header | cbfs header | 28 | none | data | +| intel_fit | intel_fit | 80 | none | data | +| config | raw | 4364 | LZMA | data | +| revision | raw | 859 | none | data | +| build_info | raw | 102 | none | data | +| spd.bin | spd | 1024 | none | data | +| vbt.bin | raw | 1209 | LZMA | data | +| (empty) | null | 1188 | none | empty | +| (empty) | null | 3739300 | none | empty | diff --git a/docs/variants/protectli_v1000-series/protectli_v1210_v0.9.3.rom_openness_chart.png b/docs/variants/protectli_v1000-series/protectli_v1210_v0.9.3.rom_openness_chart.png new file mode 100644 index 0000000000000000000000000000000000000000..a4c0b6fe6dbbeb02014aee1ee1e457ba08dd912c GIT binary patch literal 25755 zcmeFZWmwf)^e(yp>F#cjkQAj$QV`SE(k|H~gKpYF_eX>n786W2Z@G&MDK-<+iVVBM$U>+2iFBzOHfnWm;D zr8j|nz81HT|C!eZX0dD6@COU-^=wWx+_ekXU)AHLz~eJ%{M2s$!6QTRnL>ePMxH=O zB=768AgCnD3Ywa6+HYw^tlmBO_G){3J1{yL z|IH2CVCH}`QU#n`k6X8Htqc|r|1LEQ>5ipWEYqj=F4fGC3@ga=#@pQ7)G8UqAtvrg z;=H5bEw|?_(|odeEi@uRF?XQ##}C4?hqdh|`)je|-!r7B!J3sHKdPqi>Iu28XiYXg zAG9$=>>h$exIJPTkbU>9D4f1El9U~VvbD7hKfIf-(>621Ony~E-pa}<`c##EcY`FjYc#GX+LM%=5bN}E#)K})8 zAY)`q4BtP$YYsSGCwqUvZNy#XuVnfi7=Eg+Z|~^9aBAGas(Hx&GeatZNyfW%Y>XBT z{#wejd_eZYhY!NGzc}Dj^qCX&&+JPdeJpR?xqtt@u+02Y($nGX$;~#IusJ$nDWeUch z{4L1pFVtr5I9vf2ixsi{NmKi!MR#HE?_gwPWMFPCdt+0RFu1YhlP8pger>^+;fHNg zQ;Zl`1g)@c?D$duv68B4uHWea*iin*o0~g3Jq2%f6A}Uka#h*ENe&JUwhsBdKkZ?E_*&W?7_18GF8Vn`Gs*Vi48{h-OmFi7Yyh&#(8 ze~cQvs(KGMzNTD54}4H#lW0CsV>@^SrTy`#@lG2ybEM-$UDU^E?{C}FVWFXsf-Pq{ z4ij~E37BP#P$Vsv7Y%dAMMXty*RSiGf!QpUe`X-d&i@dbp%4`nwfK_68SWvOp;==; zqFFd>hd5kxVIjBh<8A`&1`kIxd5yQCKl%^Ah1-XR^=>$fY9Yo}QdW*qdwCU?o}OM9 zLghmy^YK<+Zz6ja#BA5$On~6o`FU7HMa9Z!Rc^Mi?a$P9-@O4dzORVPGrEHl=Q~l9)2eGoQZt`nczxvABT1vl@J>l`?JAzFd>+9>C zd1@~^U-3Wcgfp@!C@6$N>iy)l9G7j}6UP`@F;sN`KJ@i5NzBIhJ;ByQei4KKK;S^-rVdgi_ZP~(bChfAx=~zB#eq)QR|=S zq$tEFv31On?zd4STg|8C=8wQ~n5e49Jw&;6PCS>N^d@Fu|5JTu9KiZu&g>Y~%CYm~kjr z_$UiVVd0L?pFc-D9tvhl?_-;MjOxpmFUm|U(tYvC$rRc8C0&qT9fzLIH2a|kYNPmm z9RDjs-Wae^sxWDasWWZyHy)jsh`tqqMO(KNkR^L|&L2v`?0=MvVgV3vEtF)wH3%cj z-`HvL6YCASSg*CRj|3C{TCka9W+2aT)q8F|J(89~$v#}JXu04;MM71^*>xNA~YHn_>->x=1 z9#EBHwid3;&%rtx zO8RipO{I?!lET39*w`3&Cw8X)iLJP}I8D^4%PefXZLJd zNbGp6?I2cAP>{-mx=*w8I=u7AbIT;i8yy|JKmSfD`tr3v^qYiqH+olU9Y-tC@WRjq zn~!p|Wty9tZJ;0odHeeL;io%=`E6mezPu-E_>K{!IB|Y@$Sxs4+YwGEB3Wlrp&HL5 zL&C`DNJHf`kb_AjXcA-i!D@>A6WjOiaAD zHbM-rLr5|_Bm`r~u697w$H&Lg+L~VW5`MG4?2#C%wLJ{K%4tRxkitUK;WP%5#y_vu zSy`q*BT320x+@1~Bd_4^#nXg@1XR8buBqt^+r*+=OW|Yb`pfq5uCA^*K(Lh`K8Tz+ zdw7JCphrbTschhva0NWN*num4@;rbkH6kKnV3{|ixPSLnz7A~$vHkDTHn%<*?0|p( zzDIQg*hCES?(R2KVra~V1bBFG>+0$-<91g<-{<9VK!E%14;x@kpPDpzqsa#yUYIXE z_g}nxG&v$_YTK9EQ^b`8o**qFgI~tg;%H>V5K6MWv%{k`*cO6~KeW4Yu|4b4QYlBp z>}c=gL@d46#7s?%jiM1UlMi~_mnMR(fWyJXg@FQK9cJDUJ{Q64FAs(V4-U#!jF<=P zhe8<`7(gP%hS$6RZECmp`{|ZFq#S&I_ZkUR6fe3p+RH_#1UMO*)(qh5<7O7XHLLHhg8)>s2nhV_ryu?3WSTDHQ>Xh3Fe{mdhX?#th_*Of zo@4d~C7yDSV`gS%WNa*d<@v$J1PUc6Siu&*wXs2%p&0>jLveynPJABxA~sgJ)@~S& zVPW8$T0b{6mHGx9p+6u;h4`Hn*?$4%ly&?qO!rMa4X2si9@RO}+6@&30p6o+ijUW1 z__wzgs$Zh)>RPRhtsq*k{ zVf#;mGW}?{oLrWJmCt{cmM|g505+H)>1Wa(t^1c`x@BPMr?*(Tdp5hZv=nx{yZrd# z?D&)ax#aH((|9lo{m#zLX!R3()H|>_6h6*S5(IlAQIRHMt&lrFbH2`AjI)l$p=R9T z&*;>AeAUR(;(w5S(Ihj_G5| zWc7UW2>{{SkaONPLQcb3pZq*XV)KvRxSoQDh^R|IFG-H$7=bQhR|CX7$Eu&GOyuU~ zy8QW03*zDcAy9bF7Zs>k&;hJZt3;n)u~%sSnW~Z! z%hjt`s!)mgHM6ze0jig0l@Zi|B&JoQt1`C*u7qiY=D9vf>eaunTd8WTE+sCGd`#SX zkGs9S9nWtIf357RLFTe*iGJBT{gNu*W7k}d)59%6p&Jj!cbCk|9(@c446D@#9Dy*E zP@|JJ3u9krAt2h>ik0kIPS&8sT0C_ z)$_>$&UPZq{}NMEQ@gM9qh-;(RN|RpE1FO6 z0C}v8ec&oLX?nqP|2+#Z7IH34zN&6q@~g7|C{+P%2)WEFg@%RQsu)=SIvV-nMLPh( z{^}=p6nz8*1>OJt!o2@pBM8Elitj-npcy($2H=&D?5f=V>g>TufRHHxZ-dZ}#KfmE z1I{0A&zq5vK}tgt`E2bsD;pa+6BARoTbt3p)MHvH4?Zjcnm~H7r$9wy1GBQS1~{=~ zy!YgRLm^Z$FF!xqcJRHp^DOF>fH5Abvg&wiYaQwg`o?&z;_1PLFkmAf_N+28jMRcA zoml}FhU+&IAQ^sYXjlLz?kqL@AY?bhEq%KF;gib(*86)|CT2LFYL>rsfEx%s`AX4v zy4gS@>CTNs#1IM5i-;6YbiiAK(u(Y&%_k8!yXiI<`K+v#E8J`^BE3F|U zqTYKpzyTNllBj^~W>;1sM@Jv5Pc=}(t#!T@e$2FHZ$ie!#f2nm8c_$Dq?a#+&00~q zMLL+cxVYl}XX0dJWZSUKSxAs8lb=NpA4o_b5tou;mz1Ofx4CtBaUO&{a$Vp-CF=ZS zUlG6_YiKL*w1hWrUI66KzkRNxl9w5#@LMo|%K0J!TvD%Cmy}V;gM!&_FEKJcUT{18 zt(emb>&)jWU=w_6Yin>aVwcq+9=H;2@GmQyL%{RVa5P*`Pfv3vCqcX4r94+P)49pW z$q60d6IU4+8Sxp|1759kKo;dfSW!o_RbM8*|JjZzn!M3x*RKC4B;0>P|A^1OMYRFQ z;|OWf${2XQ;u6ZZZ@=hP0UPj8YNtM~ie>=#Bzki+osX zhbtu|MM_4-_Daz7VzlBEP@+ZuyIbvpgZD?r#-i$d#nUo$@Ku*K^;pkMg^oD zJ#b*;T)XQBy1&<7a_#TOTBE1?2uFMOjs-D?f}&y<-~oIYC%C_^?YWLH2x<@yNWcpy zv4Qcp>#wC;Gw1|8CbXrc1FH6+!<>fO8m-*0@p`w@lHa9?hQ3M{Z z0{%!bx_nRWoa14g0}tFym`W}w)H^c82qH@GMbR3bRUb2`oNPiu{oBtk_+}$gMah)Y z4HR&ytoxV-8a$n#YO?}PM79gM#K*Z~K!)=v1}3ED=H~5PUCKa6kXsgZ9KVs6md4W= zlK&FogB#EmCqQ|GQSv{mApyuLuyfAAON_U(vUi7#jrW78|1o9=HgPv#>;Ct5>5INq zc_k($9s&1HNK9mX#-mi-%4)`zbNykJ1tw&_FmSH+?rtnFVkcLYZ!i&~q|g~@qOt{w zgN>IRTopk9AFO^TSXo^?J3AwxrHz6_r)Eq?s+|qU|36XG2rC?fpW9Y6s3^Y4jfsy4 zS7wm%(5PO}$dYYp&G`k&+4a&N`qPLq3FRBfC&1+*6tY_(?c>)-1zbo^`|jSo;W$q5 z^yyO&_K@VWGvU-iY2&l|=dQ+UAvEwpNaXaO4nZ+CvLr+(D<9V)RPo;4Ui6O`d`{O4 z%9Xsl#6hkq)-QVj3H7x!51Xhc6`a0MCm#=9hhm1n@;7^vNVWqNO9f(iZe;}rfYgnr zlQcjiZ`M3?q&1}^HDtq*XT$eAJ#d6<)WL^Vd85a$(hLn!t`=+U`e+pftgi|(XLN=V zDJ5kXc=0?UngXjrs^d_(F@2xxDIWxt?a;w|SM-BsUkUKJx!?B6V;`)Ey${xLnVFeE zoFf9A1`{-vI4~f(CpwSdw^YF%!1)7>&)pEp1WB+1exGoyn{pXK+h(Mk(PMoy2ml45 z_SpQ&!&Ql;3xl;vJD07ktiW-Q>d*#-qsnzj9n=mYs5-nR&zDkMy~C6&wew6O!f(e_ zS66F1rDtR`UU_J_RQ73sqVB+0+1u-GD}-iVt7ObEu3c<=I&#me9wzgXU&8h4A zlBNei_=xu2UyW*PlgLWB1;ZJ z4z1OOP?|M#<#*XzXLolB9v+@}y%7M~Tn>(ovD2#emnu9}m0m^31S-Yz1U%RSHECt0 zMb5~`Xm)k=1!N*pNY&wpx*Oi0j$9N}2NA39D5goqB?#2uh6X9*b~`$%EWeO-xWS%d zVV@YNaAIbnFa8^je4f84({({O{ktK-JAm?ew$LcG+U!$Gu;_ zUa$A8DLQS0r{(143S0J)jE-M?)KYjW>Im$W@eI=0)eUSE$N@0`oT*342mj7)Z8@z> zNqKFvSUi3#?0e*#>w&lp5NCDiKM=sP3kxBDKtLq{Rr|V#2;pHSKR*3?5X}Hb1m(Qg zOM12yaM@vB(G<@AsBRYVe(*{p<)q8{(LomCL}YmI6;=Sj0G2ROH*9}h0d9_tYP`HS zMeqa>gLojM12h!qs9_*xvE95$IpcrI|GVr_#P+tc^yS&E%E(9Xb9?}nfaK1C#HPJ4 zpp9q&SIdy$-+OcsBi2?$zHX=y3?+zogDRJ4w0!DbvOsRmbx-%y`tH#TB<^@@{E zJ|h|e3ZNCG7at$r_w7$S;2?1T#ObCaiHO6?oo1RHaeS2-2Y>z~0{x$pNd&NG|0AkD zPEt?-)b{aM-woR(CM5*}Pcesn&g&btN!la=nt%^T85m+9l`Vjw!bs2oC3F;I`M+RQ z3^xO1!fPQ`tP(sEpj&>c^U2Oa4{}3h2qXSrMF>@Rpd}yx^hZJ{KNzwnE9`ux%?#kg zh&sp7WN3zq019W0{E2F-`_vnypNP!1*{}R3P5~ujc0?z+598H zHIO^+DuK(!)bT&4lt+H)Gu@`UFFS+Tvw>pepRaFJ%W*Qb~n)A*p`HB$?l#Y&0<yY43sqJTy#U6?EHS@GzZcS&+zHdcac6Czh=`ID|!f`xdrCSwN#<`6p=FtqlasQ( z3DI|YqRA0;!VC0EbHD_9!XE1nQ1TWQY$z61R@Ab=c* zZ*+PfUiWnB#l`t)uKh?kRKe#(!Q&kuiUhGuUoI|MLIWb%E`VJnrWH73rQ?L?Ecmpm zt80vcwqZOi9o-A)m0*mN8!LjoGz+yJ+L~t5jn7eL6vZzV*47ZjoDEKObhHpJ?Dj{) z_k4c@SZkqLU%;NPrn)+!#X;jHw(c4Q-qFbkl~+@IvnJ5Z^#f=@yj*3=2?ogWbp;r( zN|t@?LohR~e^G8E6T`iG_d2_~sYd+)0L->siI`uMyMUNwk(8|OkB8JW+tzg^<}~g5 z-Qa;g$YVQ0_wSiQboc*tNA4er5kR#E@6Q2WQ6iK9d~@e?tA!rDeW7SErOp>;&pSIiXQ4?F z?p6s{Grw5E6jEv+_8R}2`GMWZ!9nteWxs87D42}wy`Tp|*5|@jEDlZUCp8FZ?+ZBJ zH?XN4C$sKVQBpF44}`a-I>E+~J{*wyzzBiGfW6>DKo`sg&%4dtoQVeGo}`QD(jo14%2xw5iyHVD%QQi1IIXvH$}7gQlt z*d_8g!2KNu5R3B=%U8?39SY^^L?LMsxa1L7$mM9;JcdTNz3?t1xVhzJ12gkgs0f6> zJgzd|2lWDW1(hodG!B3TL4Xu{hyssOg|A>^%l+PEXJbR5;1@;4FW_11A|iv^;-qO= zw)Yz%3vYwA7Xy;9N z3M>?KG{_+lApCTDvtcU-h|}%6ce~)Ox4Y?`SU5QHMi-I`z*n-Ng3|yW-<e`VWA zK>-~)kQmZK*Xo|{T6sZWO-#@O4!*)PDVzr;-rnEug7*3&GtxCEvuz-G0@Gkr5HM{f zkba=h1D#$Jl6VvwAZp%0_<0?SStEhl+0(NCbU+1Sipl0%Qc^?}0j1t<^kTK7BIkaA zCZv!~Fy0P`zW*iWL*bcU`FDgZI&seS2Jay>e|y#_COR6tml44~;$l<+Mv>4>{cZC+ z4MaAJKi|_pA&;0_(@KWwjo9_I^z-Y#e*NmNb9|I8?t%`OSP`xU5LSXtORAEtCPKb- z4VU_S&p<*^hHgpN%a<=f^`!#sjl#vnCENov^c<+DVVet!UtZ=wp+~xW0QLq7wR07$ z-e>QVsv76SzGJRk{m7sKvTPYzR$5x_rO#qmjN_>;XV1LgYkqYirlwO(jTx z$cL?U?X`P&DhykXr~M9%(d4gOxkAI=pY8++EPSjm-e21H`&s>qlhIoH)B*o!`_n?` zKn@h^U4u?f7)a4zo5BGfy@!tDHBjsz^+!AGLbo}xvQh|YEV2WyjoJ|Gg$MZC^GG|zwVM0Vz1w6ajQ3G zJb02jY!~e}+1=f}xPKTK`8`&#RY}(hs3EV=*sM7${>gj4*wDV%hO82D+lTaUf8KzoQDM3H6OZMlQLR4>36?VdZ+|w%v54ofOgh#75|UD)hf0m|td>{}N+L9IRxsa<;ID)Qk_7%z zLCcRtuRFfvrR*Q&ncI99T<{W)Dek~|aI~#kg?0Z9JKJ?yxGuxk(S}2330Cq{vg^** zmY9-6+!B*gBH*DMayZ_eTT8bJsF%Er=rL#iybF$4I4AClxY&2ER((c{eZ{~<;ie}c z1s;|%TT-S1j&`#gZd4?%mPaO$0ohhW<5{IA@?7%k327xS>l-a>*OLqXZbZ)VYT_Jt zC^#~6ArE+0z`mZ`$QBX#JpwHul25-}KmO%Mot?fEiZdU6TI;R61&>vkWH;>0#r0%7 z-9u;j4c?zP`);>(={9Y2rWoy{@`v(C6H^f3BswuOBO;(8pXJ2vdQQdr*`rw9MVoz{ zR8HKKUs&eDMguwF*bj%cZ4qC0Fk>Y;ET-egTd=M`77y7cA{M(cT(Yx|i)oQ9kMVuba-cW-_4 zmbEb)Bv%)>qo~wnhT_O^Ef~RPXiN%?<+7;S-(%#kT2wbqD)o{q?#~SpJP|E^L3NAC zC^sPz@4pX|yGapV%dL1k_(kgW_uj;M2K3nli+B^l^KIQva_tzCc>)oUd{^L-Q`F#2 z=Ii&4ER?6m65Pm;4^QN1g)zLVgR6U^{#S{<5gYeRM@P-xi~o8z8#O+1(A}>e zv_hs6HiAd?1qWH0Tb7?5`Bd=={im0&_@7DWqMc3MpqVU|G_f&ZWQsE~P3Rp5IINvG z|Es#nY(%*RIZWfpSc;= zeYAKf1=rgrM%;QN(6;TOeaD!HG(`k-r0chD_qBcW5imc_w(tGX-`Zrd{BPp`o2I489+i$zCxw#`!##Ec(WZpI3F?!se}f*^w+WElC zIUcLgN*rBOe0$(MOBceN*7;?cihUf*TsPv4v-X4Rfl!2@AjowY8d+9EzkeT7YHkrzw4y>eRTxo zX!l&r7>_gs9fKuN13X|h_pWv2pI-i=JFM4+1RHs$x9$_0fJm*NOAFR8lxQ+BgA*QE zu1VxQar>0Y8y7uJb-6|w+{RzLTh69L1vlIKg0Ug-1&{r`xy7;uom7SEzqnfonGfs( zu`bHtM1i62&v~T{hG3${~sfjrtymmQa{<``gcsPfM!Xhha*{WHiMGXdJ47=+B}Xz*7AzdQ=i_zaSZtp zd6XlxwXtyb$a_Q?_LB5{jkH#{%AT?48%s6fRa94{?nS79VY^>e!PRnnE}%bs{8PkS zYi#_#Rm@=(76>3O+rKU1{_J|NIX;zW7GhtqJRWNt@)UMt374C~IiJvCz0RPstqAiTFgP^(_iq$erWblzT3UDy!Z=}? z1?J%Z{F;G|t8)6^_ys7V@Y)Ug-vlrm!e4a(+#wq7UyE42nLi6^+c>#>K_GzG+W|G6Mo^^ShK5NHO$f`$6jJaC3EYLxc-t zU=}`RGgi$BV?oCAYdq1RdkjhfFRYH(i&=30O3>77vusZOcm?sK-lo5bUTCw`xJ!ia z1sG;yK>Cjk4t$`{JbE_;`awU;3Ih(d06r`3bHHcf{g)Gt0UKik*#<`PSpNLXhz4Db z?(g5f2-!?*!8(Gb64GHogaez&Pr}f(eUWP7jSIU%nuQ>_4iwyDMtZJ5D?6aWv<-@J z>Vr!}Q+@k3y5-^oA3h3GF+spM)NZDB!_1-(2;ROI$IDv0DKG=besZ`Kj|{WQU7m@+ zxvO9hO!0KCBVqx11;~T}(yTyK4rsZyetF3S(}){7j1v@xuFq&{Io^04u@sxR*h3VxhB7>R8){(uUkYR3wb%Ph$4SB$A;^5%4!b}b!xFj?* zC!77~0p%n7mXw|z9|k2rm0=eWB0=?6nk#nf${o#Oe19v}*MCPpSA`H!8Gu`Mz@#41 z@CMqBus1{|fa`RDo(y!s-j9wrpPxLF-u*5T{&=|5aB%UBql3m)I@1js5@crP$al6i z$ZIZ)S_q~rJL*7@Mnef0*N4Jz_bfWxRJ9(9Pgu=V2b?sXG z{LznwrFv5~ULy?$I+I5(6!;OMA+fOvkp20nA_Dn`fGZ}vd>I1c6EDX>WTM0C3XoeL zuXBusK{OcHCWiq61tp~`bfOLjyQIRW7En@G$NNvP5_>w?3S*pepg9K{XzX+an)C9u7SXWU%P!h!Gt$k3>$+fU7DuJAn)z zM1uZobx7E|31+^88>j#6&Ak_id=Yi+@SIG0z#~1j2b=ye%Y z2U{~v6tCdl#2^A5ou0zbiyks20Qbuv<4wVvf(OGG*zlzWAolUl$zm55A6)^n(uJQh z%lR`LZk~G*PQd(AtQ`&k!3}A_%hxDST>}kFo?{}TS1{*L={%?K(jM}cii1Px+)ho+ z4WrLGuJ7<*M)04XJw&LxB;)+T0)C?j41AFtIu>VGF9C0^tc0g`^W0y68sar`_c~L{C5@KiSiDk=eGJ9$1M}|%yNX%eI$e;=+g@_u1j#?cm3V|a$Ug^(9ItReXgI88;zNd-w*o3uD%V=KAybr3MWK-+WlB)A2krS=z9ybx%qe_@KX@!YJ5NW!gOAGQ^1Xw;_UJA5f zhw&QR%hQ=lWUe1XS+m97M6b*9LkL&_fg>2y6$-fUg$5Wa=m@Szb#i2K`VGVOG6Oq)+<3!?|Pz5%_BdG<4?X z=Yv5>nuRGSu_7z!*O-3C|DM1AHgbJHdFOCp$d6@eikFzDq~vd}B9Jk18zolCFokE=kfcf)xflov#gb)r zRsrorB;QaKebMXcgXEznB!&c7@;R=R2P^!gN6X>xg0`^!r4PA%T=LU29yWXUu8^(@ z^@7OuCNoz)d`U+`=*b4pw8(1&z&TX!y3>3-!{PEH(IZRyeAr_BVfRSp&cAN>9V`*C z&RHXd)YmM<8b7DimL)Sdd;oF8+phhUI$G*~2EZz(r*b}PZPfcD4pvnQM@v`{?ksq+ zurYJ*b$?PM->?(_Hd&cR5CR-+@I-Y5oW`9smpn_#MnPdxJ*F>dpO0qjE?8Cnbt3OV z><2edlOucl+LpPC`=I)=7@nKP2w0V8QsYZIpgWz^TS`kS0Q{Xfh3~_2zrTP}P`odb ziuEy)4el)lUi-Q}&J&mQIpDeL1F!B^jk<`Mzy}M_&-_?P1DIO)pV2B=!55}1gJT%@ z-&ZWxn=AcZ4)eG*vMB)&>UE3^liBmy0+uT+%U|jNky9=# zhm1I%UG>3;TwGk)*DZ}{W`(U#A_u^6u^l^dUy}fnvf+LobEN{yz)5w@0qwuo9(XTu zyKg`pzR#q_a`PJT2eFLAdV(B0ID>AaNR{n_zME~4mKz`0#az}^5QFLAz-|=a5X2@J znjB6Ff#2E_h5@8{cY@CVH`N4l^rD|VlSR8Ux$_Dhu|`q3?=OLIXML%_N@ z5e)U|p)Ge9HvH_mV~nMpCX7m2=a+ESTP1@x z3>)L+ME?8Em|;U&Qdoxd@rX2O+GYhl?x)OTPFUbcJL-0I-TLgamA%Hlf~0AhIA*~2 z5d&YXgKyMvq%f2bwJ;&qk?*?umb5>ga=pskZjwH8s#`uaEjW29I?->Rdv7eQlDLpK zp35X0)Rd~zyU`{Qdyn6~yK^Tnwi}b^*+hHOf)KZZ9x5!hHf#jnd-dXsMh}b4Y%tkx5Zy!#!2^$A$iH1DXfv=@!)|8FDy&9#{8G3edEF)2{gej=x&-FUo}Jp>TF!8m?lsBG$(@ND8NAP z9`xSoKF8BH#LMsf-Zjxj9L>m~_8xw!W4zLn;9=!M9GQ2p8)W}lghc~R=K+s#$MijThJ0iS@daFT;!vvC)rJhtZ(5Y(pLusF)$@TsYXhBJmt|WOiVma`M9eM&ro^vAU{f zr+^>EY9N-DWWC;Y30F12TKr6RLzCiMan(yiLV%1qW_Z4JchPSDYE6yNc*9O_vj@ZU zy%zhLscA79y@&uzKh3M5n)u)@7OBl>DNY+~hbbqA*Tsjo(3e%F&``WvEGxUN35`qk zpX#17;f3v_uqnKaSS)m!9kV8@;i)3=W*i!(M+Z}%C6fCP5w-DOTYN@t_y*LcvxBX> zF%AZbz^2v1Mj-r4r92+3l6~b{SQO=EG$I`NEAzE`np7RzV3Bi1VKXDzxzO01h5Wfh zpn`eLhW`rrA+@xR(&|Nu)`$b1&y1P;3R=@Y} zxoKfC)H~d#K{YG2T6#sedc*bo?>pJ{x1RK0`N&s!IT>o-D|t$N#@2$48uix2pb)(+ z$Ap>xQtDsQQ-vi1cPIA5oAo4FL2jPEv`0n|*+2uzaCP-Gp7&*S1yhIsKboewF~0Qs zZ?{#x{$zglO(X2r7e>wfhSu5*d=Zul&u2sFm0d^FMB&;a1MohL z_ar$9!c1(}hK~oQJ|(^8flO-o#Lip7V)-rdZQowYMyv$Og`u(rkSugr1-Pu{_Z-V{ zZ>L~muzcxOx%S{BERt^|ocxSd@qb?WJ?NPy5ENNT6VR>oUrKfsmSs#O7eBkBM7iv$ zaP>ch2rE&I2Bk(-ml^l6{t8=CkfZRKp<)V16kpn3-Dh~in)8C1vLoxJu7nUOX*l}M zx9%^G(lb<*D7Qvqbvp~Jk?IfyqQxp>V>-t(TqO>21yn=d)!YA%m-&#F*(1ugt%(d} zvE-}0BjD1NtSJ0a&=UBVF<1<1kM&+fkG`#wrmx2xG&{&!20xBu*mDp^Xv=;kZHqotY_ zD&<3*B&4*H8lSn~p8k8N+Ed?g8kCfy3&}nU2AOb;Koa zQT_L14<_oMt8Cvolv*jrqNC5_}*${ zsVZ%52(8k{iW01QqQ$&$9ZE}aimjGz!InytfU`>Rd{9Nw8xpC3M*J1i zTx@IqS?DwWJys#5_@1np^mMqD|kdWq-m(zR9hbmR~zQWtd`CG*{B9=bp4vZ6vr zjM_sYOYsrAh+(G;aVDgwfuNYUR)n~yZaE?wev+ufPWZ}fjX|DRJ0}S@GkIejE$<&S zC3%FWcNo>o?FtP4NR;cZA9_@VB9~V3ms@$|!KF0FBM(qI%8+rQ@Lm2EZY&tNv(t0V zQsH!#-n6#0EHgUGFApqbhzR^rECip6dLe8s>U^8oEm^_UtmA^V_yOVt;<%x_U-j>o zW0VdOR?acA>Jm95>ln!EgXUlQLJDjUoZk418kia7%hQ4lP{3e+OcO1#Gm1ukzvjFgN4H|G&#Ucf)zj z`#Vl#r~j|=PVCuR^q>BJc%w>VF(LwsEZ{`LJ1*KCUouNp?sutu{oXZK@})}*T6*;| zKlI29$-@ZWxun+PRlCC0Q=kWic%V_TnkVL*kdO>ktdv=YX`gPDS9qdc@t3q#-8PMS zexq2Tz@`$3udMd%YnQzQND6Xc!_li*`(h|g{#M_YJ)cplq2#kVn|<5=d4G6OiR5}n zS;5^j!pRAS{Dhl3g*?wNIWUk#6?`+GYFoDEH3ScB;&E^M&?Yj(-;#ujz7D+<{UQ%a zu1|#$d@RW(`&JOSA*&b=5QHb*tRHgEp)o5iNC=)D2N4Xl#FEH{`F) zAlpAThV*S|cC7*uH>Sn^xFMmZK<1|+=fVL#5*Sd^>~d;A#u!gRCA%hasc zORBG1v1E{XrqJ$jYyO+h>N#J#MQAGT-+^;MU(~RP>ZTVXi(cbUsq~o}=jX-nb8Sw&;s!`{5#c8j2AYfm%yNu=FZ5H8j>gz|3*GV ztEl9E-pAc`mY;ZN0=e^g<(3ZFb+?)>G1n5JBhed>IieJ@lIzivcz_ILwDFffDfuD~ z!vIsuWa>|Q$6EjCZ}Gr7X|T@N--mtJdg&XWpjZZeYtyQlEXKIF3t80?Lzws6oa>dnpG z7t|?^d!xg;GONBRK{X88aTWS(0>goJKaiuuz)_-K-s)wj>*~A}NrrxB|94=>(s#`n zx4Y3UKlH@Kf00gvi_4c_*YkfKLu#GwPb3CAqxRG=)|CIx&a#@*j>RZL@0gQaCfSYR?%&jmRf}FsqM3an(gEMQ zeU6TBeLjsox^?JhW9odDHwp0E7yadWz1gkzpvzRdLVEw3 zl`KEu?U!&5^cqAd-z#!CFK=zBI`ml!C3zjdO}$n7QT0+w>PBHsXOcgi-CD> zbAhd`z^Wg5IEQ*{op++b{D%AS&3aN!zbzSQk~-HK%pPNT*lboPEz_xYa!e9Ow4{Fz zQ7@8*2Z=P{Q^tGQC~SAG2Kb~6`=-<=2{X3nH7T#c!e z*b1NGZ>RZc9bc#mr`1<^Z~uV+{GI8t-4=i2HKimbnp(I|9?M27+ z403K!a-wE6yU$G|n7J0V7@1YW=7jGzHp$Rm{KS*i-t|v#AK|Xd%feC|nO2Mrqoo<| zC7KFx+_BOXHF3;tPtld33rG#Z!oR-#NMk@ImMXrZ#S+cou8pE)ZSkkVfs$^r056PDaw5IL<;VV;G5PPzqluqQMDo*9KK7hln)aIz1)*y&| zO>@cIGmm|!?owv$ua=bbdB4!sX34|!n31_P6T2$`X+e~IHnVGa^3lxK2UxYDc;iwk znR9LPhA2q@G^`8@v>B0w^QPN=2;#S=IU2ruSb5P%)etU`^X6MXi-2#&=H;bk_)cj2 z5g!_JK~g}OZ@nBg^La){A!{7Yt~S+}fa*0NkH@0TYq@P*mNGTo?;a=cuX^)n_Y7i1 zs0&Xz2p4~BZaH92>;x+x*qw^!8Ys#E_`OE`Y&>)gwdRiPkjMO*RKe`*z0U(T{pbuu zMy-yiBLihZF-+eKicyc_79Ymt)hh=^!#Q_rb1)cDzSV-*%x5Vf{DPA242S0@{I?B= zys;*7qO!;&W!?>6Qj71p2bNzi#~SoahC`wOaX4&Z(tg_%sGA)(qoHi{&|@d|##6{~ zZYjEXE^n)=)|Ht2|5gNjI6q%I*|c175!~{h*Wspk-LDfCfAO=8+4`R|uSrC2?cuCh zLF>ElOTrnV^982qv5Oh|Ot^uqt*>qO?%9znT0I_hQhD0O;VEenp;u7*dhGbZkzTRU z!7Nv6wuk-msFy6UHTk}ci9%qFxTb9S`5h|76SYX)_l z57B(&p_h0#3%+vHpj#~)bF~ANpThT8F(p$W`I7=qqO?)u9o56*fLncAIK?a*_C9mV ziTu${?uS&{&;3x+q-8H+`Gw{8)IrC{t)KXV2#6|o8k~FTzsSMjjNLx5yqnk z(FL^HXjqC80Ecd5@l(2(t#(%NVw#D*PDRsS-ipI-W=zFF+Ka{Rw~IkO_n-bPSX&YG za5@eOpguRuH>j2uP|V!U{?y`*qi5o1ioKqZUmlFGT_xqp`{QQaFB@&8^kNEW?pt9T z-c;q$C1of<@v8uM(N07Z^MUd@YVQaaLmJ)y?e|954{|Zg`qp}Q^ADU*yx3545elx2 z`+lz+TU8S$+tuSH5B~CI9`#JGKIRoU^YWy^#!p8WKU9!|R>AYsXV;3m?f+LhXZ{b> z_s8)uW6xfaZOBp?l9YW(vJR2GvPATW(1=7R6a(`(V5B-Kg_h7=Yed<+(qT*+i3mk?g#oRl^TzGUmO>P=o5F*@zHZ5SCGOs8ub7)RQHjyoxvky|7GvGgyp@vR6 z@R#aWl)7|HMR4gH9w5Z%g;t5jjawc3p0yb@DcRVeP_7 zr+7YF#YYlyE}*>qlMBUgMlmrZr*UiD>X)@Fp)5dpP+qzi z<#KNxQu8b{^SbDl9HUJcQB@x&AAEB1h7-Y2p7fqQ)T?}9PL>pRa<)X++nLgd`r`dypHu(k_;jqh;930Yq zFf#nD#y=Wi8nWljS(cea^6k8W3!*w|o~5P=AYjD5ZY`h!;jkHvA_I{CNl9gZxtzYy z%?PF@*n!OewnVMJ4BWksL^SY4(bLe-AS^o)59F%~aeyGoa{@9#16YB1shuF$UH4vk z=jP2=xJG&RBY-joeeU^z$F%f(K1CRg;M5( z*b(=4|M*B!LO1h3_pgXhtX$* zx?qS`K?y@*BrrrlAj85zUiz)wa2u(sC7(RM^5JMY#QV{2f*f%Y(iXtXW&t)H_!f0U zz=Q)LLIkKws37=+5VExnfs7%DBm;WC?@9{~DC^Hng`NTRugRDnDI6DHzMxvO*>pIy z@=~LqkluP7?;x!j|8MRQ=RRHXbERqAhu=N(K7lhP+%_B_?`qWM+t1W18_@5?ro$w)WhA<1`Y*O zc&0a(qaYTboG^k#m?~-pPgh?b5BR`j$7Hq`Bs;UA&aww>lf>Q$y6XIJ3GpGfD)BPTx0|)0*&J$iV&I0kT&jzJki_7u+>!TZ?HT&&wrWC)c?)qfrQ zPQdV2elObhceN)|APR|Y0mLs8@}k1rAz;TDa+e@|!Lfhcqkje5cMx7#V|IblK`sQi zz$`+LTNrLv+6otnqmytfUG zmtdhGMq|aGBE|oe3&VqLOzuC8K*?`@x~Y~ctGN+dwu_f|=;57fTKequ>G=se%%MuI zGRb4}mpw06?Vwze$fWHwP6Fh^D1Cv3>|r3S!uVr`fH~ER1n5q4=Wm+WJzjEJM=g z*fJrY{+hr4mPop8OgNNqxo&w~aQH=fN}8XLg5^o((r`ypL&pbkg`$oR!q>8HG0^Yc z33N&GJRl&zLd0J?J(!%B7~T}lE_(WOciAGSH(|Rka&ksNGiGFBqS-T-Aq_$Y__tto z_`Ing#2bcvr={O{E1m!Lt%8WC=u42>I@8aL$lS^Sflu+yLegigc<5*i&}sw=Q&o_c z@1<6PxR!7B0$(H!IWzzv9b1J5b*^D}7z?>}C#aV(XtbeUv6C`D5lnX#3(B^0pYBa_ zOxrYX$$QY54PZ`eqkZWTw@L&B1(D#DJqH{3IY`q9LBK_DSAjpu$s7VI2+6yH#2jWA z1F1iLXhQTJ3WX4WVD2K<6&VMR=ugNBSOItIX?_K?3`rHJ1nt!*T|EjM#6z01a52D7 zI_cIggM1gziH(J&b%@$bZf#}QLzs{>90*ishGYXoFU!fxd+IyrGkli;G#x}|GfGtq z24rd+Myj)*jHafgtxP{7AlV@oU%~DN5P>kpjqmxbP9NfAYwd6_Bh$NTXS9CtWED4` z#e|=uIYk~y%Pejf#RS4KQT5o;iB*CAyvArMNc9tldJYOPB}ae1O^q)n_@JTH)zv1? zfPEAMP*ockQHXZ}(HB+D4bxVqZJgS z*|n!zVE<%arisMLV&wUgHSWOiJqi8lm(oO@D*0s)7j{M@A0~L0IQaSL^45xD^6$+x zW(=~fW%;r$|+cvRj5V=-ChvJTJkJ_D;zDW!4=zwjLat*tvf#plqz?PK{Rti(qBK-;V{{SE6hRY3@gLTEvB#qK5vu zm3AiUD#G4tLdEjpA3XnKXX}u2jk0lt|2XztG7AgdO34=JaQe=uTF>HaR^dOzbx8%F z9z6bPzX|Sj_BVt~yB39lUbIKi)snbQW0*nyQR6sC zm&&AV?gv-SvcUMF#X?dyXNa}s_hntl{prs`MElGl2~Lif?nPMlb#{E_KeT?7GIKXy z@^C>p+>)ZC$N@GX^&yV>7?%)^E7!qV@jSro*q%kPtQ0VeiY9jiVtTCcwoE3uP#P7( zoG++$Y${x&-uc8~#PyQvo6$25LHn-gpmzL&`Y1t)_Ys-ff}`U{z2*MP{2TV;+^P81 z%MmI4G`5;Wn*%b*m8nS&BUffy6kfeycp%zoVcN1%#QJ!Et^8hE-xeovKMcjm$hjNG zcD?kxEqQw1ZSZw)A;o#CXv_7lYr?`5!s_uC>sVD!||q8nodO6ND%W%o40I8pZGTR ztl>O|4J>XwNe7Gut0Gl=Uc;*C4&9A%C`e3Y>oC}N-Up|F88%V10L_{CN?|wIuWUd3 zI*MboLEBprb2!NTNEdyHm=B%F0LHiz6;_0?DZtyZ##&5p$n0&8I$Er<2E6%+9{=JA zYSyFA(*657bckhQ_{&n%OUF?Ac5Vp`a?dC+P>aO9#UU{Wj-=iG@gIl9&(;@fc5xqv zB^=&M=rxAqUiVf6=_}c!6Wb z-)tAFm-(#&c8dbIB}mGzrDhB78tDm;VO#sZdQc z_pXhuDIi)?96?Y@UFnKEA4y2?z;4!0L#fyIjYyDPx<_TAo+fm-)r+3x%5JKhk>XpW z2tRI`DC!!G6W>Yu!aWza^y7!Om+(r>yLMb#E+1t=G-KH8OOJ*Y3UR~2v-`}b00Q-U z{$_jS=?%YVaE8q_EaF1?IKO*3+rpng8}UD_maOG`nA^VlE+{4KZfcqD{pK_Ocgk)m z`@`2-Z;qAzeAw1An=7p^|D13zND0&Uh;aL-3^jz8zV*_M34vM$^LvtQI^jV66 z=?WP%`PTYt){_^a z1^$X;OPA?t&uJ%=mn*s|HSSwgUuAuQ!2}PD?g=k*-M#%jEz5I^!JDfBVmaT1p{SIl#3L7A(=A@Xt%(4tm+mT0 zx~x&=*4lcQCugDb-GCKZ*x1>1b9Wp4Ej;?p*)5aQ*>Eh!xB)dYvby6w&}cWB!zLox z3iAaKrFK2kbWg3&@3{?(W;*R4I;Z4OL?>d5>XpdGqjZhoJt)EiFE>Q1ew_T`IsDBT z+YMv&p63mp`#1XQ|NnFXD&_xIV=o8pf7=nFoL#IO?D@GwxCA&DEL~k4T|~LL z?f%aLTn^3_-1Ik?-Cz)0N5v;DC=`(~@&~OzD&Go)@;SaIcSp-Jbz{=Q^T7x`*0!*i z)ll=TT(hByujv)x3?jt$rSou};p=5ykZW9JW!ntGVR~Ttb&3^UHj~v|&I{fYy4@we#*RjdkBErq{>XzO zB_ScXO^qduJb>MfQk0XETQH(VMZ(Kh2{0Jo)r4SU)OF+X<}4- z$-VnIBi6H9TXB79V)KdWl6PceWJ2u&j<;tA)($8d2z_oOe%b!6%q_9KVQyw-{PpFn zpXE>Q7LMNbJ?0U0U&j#^7Vb9X>rK5~sWQGkTu3JBwrVP*dNUDu@<^|?s)yu>^Xl*| zm1Mq4N!*4tIw@(QZZg4GgvCGT2G2E>^ilU5`ciKfJSwBx-P=ouj}O#ubT|I9zw(Cn zDb{O_C(rCB8}8{djYSj}bEu?=Qq-M<7YiuFUXASSRpBsbqNbyx!@siyjs1K4FGF4@gYzth9z(K342 zIJT6O)IA%Hxb=10WmnO{p1SuioyhIm_w*G)MV#g^(*rKN_E$&Nf*cy%)_xHArpRfM z$uO|6bp38UQq*a}RH1zMUYpR+cjuD*L|sruz{Qxrd0P;M=kH_-Vp3A{G_~;fcw&O9 zBE*kM^>}rq*xB(Nns%^?9+h1#(Z*L-R~K-Yx*AQ%$yQUcx745Gu{8y@$HBwkU@^Zs-~#*i^*Mn=Zvp?sp(+=j6?Ro_a#A9>sN zI8DR}Jx=0~T3lQ_bHtj2jxKgO;BT{5SG%Ra+_*!lyr-v#tLU|f$;rV6H=AOE=3lnS z{gS5y2dg8&3OPY#W!zzxuSLCiLtR-D#f5gh*Dqx`Uc;H1n#$w6poo(8_HJ0ID;%-L z#KJN;JKpK;?X7w|+AsC@IapgdXOMw|gCLrUo2y2}>PU=@4G%`<@b&Y{8nh&)p^4&d zIYw8=AwfBw?3x`PAHVUZm#@7{KrcCAVkciqO-@ce(?uU3z)6I9kf*|X-kR%H?Dl1& zPq|Hg!(qIJ5M~i?YHFHUU5(0;4QJx#Cv$RgqUJF|!Cpv+i35eFJTXpAPR#9IA2z>9 zNr@gc47hf2apCCfEE9hDn&bA&osf_aaxrt{UHs+*;4XO8Ix(vw@1L#?7qY^y5q~bd zI%2zDRY3-2;Ra=Q!BSvoyP95y*7LB>F|;X?aq8kbm}(i4b~P%4c2^P-5|+m*SyI!| zkm=Q>&dE_9Jhlv~9H!~|`uYkUQk>@jEgX);}Q2pwCCURqfnKbWMD(V_hyifOb*w_O!j_%L;lRQ6G@Sarj`D5{`m1D z69a?vaKU|9#6TvehZ`n;FV30x_%!S4>LT6>+C+Kn{f?}*8I20Uz{W$FKyEn_*Om<< zAmK|^c}^p!RIF32RBYI4;JZI~cMc*>h?C!Y-x5u_Y5%*jNqZRK92kXEQc{wMm9=~Q zr|bI9`<~w3QDE(zjoRs`jq%#(G%=4T$VU)pTusf*ok@oNw`y$1m|8CW*v$U^eY3%J zh3UCMP9Y%*hENO%4ULqKri>hU|0p_~-v2R*SUHJHkn_>6b2UXp;-H|QPhDMi&-RDZ z|IMA7WI&4QfRr0bECXj3K}aivgPN;fN+?BFSJv{ECA?O?->94)fy1a=L`8f_WSQPOa$j)n zBqb$5&sOs5ljHfgODJB)8R>HO4IN&GDe?Q@xrhb((j{zkHV^w3AfP#g9HuxR zm>5wJwbTB(km>LCrc3DBPSoAsUm3cKBF4UamDSxh_}R0L?gZven5q+ejtNqbyoN@+ z;=Oyf9;teqrt?q}%*}?=Q$m=UK=A)_Dj1yt4uFY+L&en0EcrFz<;zH7r!Y1)HkoSj zGMWDzGgp|O4hI5}7g~36!CAC(y45P&96&}&s&uBmzdrT=l3IkJ|B3wi&vMyfy?V{2 zzZa(_J9C|RW>76zA$iGd{HpGROmQ9A2c#4hR0L$_$tpc->mq7N-#RdYR7Z{7ct;o^ zZ3nGG6XSw&{h0II?^AIe9t{EOVMPwTIt|8pPQ?u2t~p! z^t%_GdCk7Q^l7Q>ZsA3Ve(<>@%^0%1w?~$hm35U1t2m~z$q{T0e z=RGDbJ{Y%SqIQ-t0^X`_O*YmR=+@dtu3aI(O329ImOP%pm|a{nqkImB8!D4UY|)p> ztGkqJkxoJrqaY_QpRBqy@;(VtEoot4;SKvOsDdP@j>fGP-8sH|^$bc>N1fArZ{F5; ztvZT$t7$LRN~bIK+9g!E+nRQznbgSw8DmmU^tmKBBsZFLv2Jaj0Ab+3iYpTrSD!#h zW~TJ;`$y`-MGxQio=RAKzm6uoK3>~zTVMXP3olv4Tr@p0GBWqFVeRN2@Yc7giJ~ZQ ztRC|o3D_EX;PGw`_qV+8@bGAG?$u1%r=p}31qvMAG>uU2ZaWOGnB;oKr{ro16Q@=qAMLb^Xz`b)k zrB*f?y))l6?UtO~|2Hk8`ojmF!AgsM(ouFeUnqnB(uC?;0p1jBX~ap^M$1xEx5g^- z3v{ZB6qS|vQ!W75;g)FY+Il&20E+Q&TQVzwtgezOLQ-u#@=UWZ1b#yqG&j#1%T0OB zscUln=irTi6{-9B&maIx(HlLceES>YqqaIZ3Ncaono~7)v<+@+Sbz#y$?*!b*bw(u zR8!;np<55Z{I4J$G`epf>9caBJ)G#Swl*c?^#^mjk6ZmEP&1uWh8#}GkW^ECHR|`g z<|F~kP@-G=R`qCmTRMqLzc;VsNhKB`jes;%Fg!dw6)6dy!w{95>_7HuY(`7XkIdP~ z@x;&fheQG{npP@Ytd4xfYwU3F@nvDKXik=pHV7@HiKDLt>KT&eWwNreXs9^xUB&X1 zqdkL(dKVUyQClFI`P$*uG`&*pNy(_qkK#K^eQEb|l_)BweFh~Gj z3X6!&_OQWjyawm;Wg$Pc&HOwcKXoXGSeu)h%j30WV@?D_MB%Ni0p-+g?*P>4!=s2&_Yx{@lQjKRZ8<_WQx%w*?MD4hbe0;0qj`QtqeqvC3%u zo7jO|`VDRE?d|)bEG*a%*PUeQ;%F=^ER|2cH+ncgWii^CYCdW%(>mcrX-4w#^CzUH zK4*Ja^d=8%jWg|cbWI_KCNzdt7%8qmECS==;+}M${!Ve=ahj8ZL`MomFf2cxg)ZRC zDOJp)&z4qAO$~A2ApsgfXJ==XvZJl(I64V$6w3VD+fZ-|A|NK7N0S~wDQV*NRK&y@ zwuUbf6FJqmf7QZzNaGM(LymU|wx+C?XLwLJ_3P-kxGsqKOwGbxe?2`th7f5@ z%@7dzag}+eyee^Zj$0CyQO5P4r7yj%HsviF89bH|_ zf`Sy*)eS$(pGQZtyI`RSJzH=z7c`=1{?s5Lx7IkHvo16RE zw6WNe^b|Y_hk&5t>}0RpqMr`lp_d4`Sdgs7Q~4gI-8 zKVM%X9%^DLDvKQ=O8ZlpxR@Bu!>;3B)i#~KYPE7|YlU4!)5c7atN>9e)ng@A;=w!Z$3@s;qH6OdC4OxJRBQ*CXC>U=G>Jz zcsZ%?W(Bu6h9afBy!>p8@Kj(*3hn3TS1=~do{`ABIsb?iXc%x#ffbz9QFC^7#^ZbJ zh|n~sZFjV_wUezAzL;vTz0zPM&$EJJiIirgNd*AB<#yvj4>E7@0Y(8(JLy&zpRMd9 zb#eSOvWHy1FHI_-Wo$np0w-0{j|TW`vqg;GpZ$-a_*65nzu(_ds7~u$u2w)^W0I7d z+W%$5V+6Y>cv6{nE9A9%E0P}p_0B^1=zN{{#dLY1p5Jkg;}S=z8|V9MzuWHXZ^rgp z|6VleZD?10Z=n)%T}DlaGrKmnUi^9gxPMC0@6Sv}BpEVZ=k)0$x)Fq3rUvWgpDEj+ zJVIAd{qiGo6_w{JlxQ}(AB=*=)+QT0=D)sT&kIn|mQ#h5-f?#3BftvooPS(vKgn17 zB>l(-P6$x}vV4v)PDc%nZBN0YNtWlYcN8V%Tk{RhyrlnraNyQi;~@o z4YokxvZ$r-cBi>TIWr-V(rSa#y3zLc-nc#Uw+Mfy_J965axk zIiNs3H@UNKe^Wi(wqbM?I7>L>BTA0PfdKyJD*GjaQ&Myz*Ch7`WU2W~aR3N}9UprF zX2hn6!3rm$4@*oWGw?q#8!pkM%DEf&8PFwuyvS7LJV5D*R~DnCQn zeL7ZQwmgu9aZ}|@Amql6mI6$`c2k7x{;_sgeDdof*cH^QZ9uml$HuNeUB_TzX8soT z?AC_A`WqfJATsUDapKR2B#%+RV;(oUbNV08Vn4qo_QO>@H#!<0pjNr{2%GE1FA7L1 zc}Fr&_BSVK;Y-iW`laoU*!0qcS|*zl^%1eLTo1&EbRY%~)<(NPdf0(NDxIZ~3EV=& zYxjD~@fWmm%pIXF`0SKcbNIBPU+%N{j?C9aq<+Ifs?lI+sEgOEh6DCD!M&W~enfD_m zy9-~mrPKh5w-wya*#^$aC@M;`)pE*(j)B2zKOurDh<}^z_4^9P;}582pQF$3%UYrU zU&!QYGTyw21pue(X`DnDOS)&aiXEjy`8;r{ATUUk4kxH4_Pipwxw(kLQ43fSLzH7v zQBfgj71$amI)=$d`IaK@o#sDh1^m4L+k6I|6%iO1Xj1$A;OqNu#YVU+){b@lea0mU^jcXIlGv+~Z_%O)l!9iSlH z0-p?tj*j*`o(=B=mLvyw?MeUVdxZ1{{q2IwP%Yn=wjrSv;zI{`LlB0ku-MmL7LsB2%Lx8(xH#Rua{SKdyT)SrX zLmPm$JRmntdlqJ9*|V*HzyGGT%ZC-2dMtJBB*jzH+pv~j3ip#ryQc^FDbyh;>*O7^uTCC?r^=L?0Ss6fu zY_Nw(f4T&+DU~-oAB(?rbjTqd8UaU)50i^aNXS>3e?v$GJ0Bn4W_<=k5E-XV6*1KM zLDhEL_9VDXXV~5Ir(m(7Qq}+DND==tofKq@i9XWmF z_U+qqp;QLMaKNOX$jRgnMFQ@Pf+8K=+uQ3y*8`@FoS8AIw94@RQwUCmu%wW%u&5`M z=1(TJUPwNb!Epj&&I^(n2{kpV7Tc@sogEUugn|d%H@j|-dARRgXUfJa_c^k!vKhUM zPs!1ic_;WCSJ&$AzO-l(W(5Y&VAfY;(Ad4j3qNXvJ}V`931A z6zDe|`stHiXR5df0&zATBAo$AG=`E2bPNkh?%?}J+`hYCSUST57@52WkiigH*^!zW z*vLOU*>t{CzcK9AgS;6a)GzETK-ulYdb=@Pm}sRZYy*lD6@m@HbME8}O5aRGvSsIM zF`q+@DbIOA0h=EL0Bg7R_vN6jZ6g$0R|rCUzANr7xaI8T=H+CSuzHuJ*N@vF0jRW7 zdinS~1-Yk_PR!B{ghT~Ez)09@6+VNk%goH2qqX+=^Jf!y1R^sOL?fUcJg{@k654Cm zVjyLp3tA5cR#x&uz8ZLUkIWY^X6I+l>rAI@D8>Kw0!d0T9`*S3#u@lL1Ta0@yVp>S zO@Jd5XqV9ZsW<8XUyQ@1`cwdgflRO}8R9Oz90}<;2V#({VIicxB zeNS0g77`M|gMAOjEFM=|Q@j(K9_uYBET*Y*A9Q;LgknOXnqr$Z@HuSEKEw*51@u4$2_P6a>Lg6@YW#=uoa?>kq%Zc=ik(#7ze8 z{bgezzmLx@p$8(cK!5Zv7zPvNG}DGwxgz1cPYg;5(~TR8EvqyFwjI=`Tge-vQ_KthEIR0+} z_GHy&>@~50YP`T0~SM^N|L`}>K2IHQaX z-#u^KIXtX6)>{OpWMXIUS-&!pYqtl92%@7co>4YaYl?<73*r?x?Pcxa$M=ieQJJs< z&*iM}C{^KV z1a!LpAFImK@lrS+N=_Z4&L|3`4t(%G_l8aqnZ3O|=ydfg9HB?Q-S5T4C%ytEgH>V~^?Ia?m>?y@zj*QNhVpA8z*C;*2czGfZBOp6 zjS>O!{q#Lod1pvn>JCm2bSJLzoA)9f@Bu{1ro&%0$549*bCr`!l7;|iM?qnyC1X+R zfGh~rJIw$5k1>FuV-VeU0KPtj00QYnHbc_y>$!?GQ~1q;TZ-9Viv)8Y=;8f=9F zE_@m7CEb-kGXkr>;XLZ)@5hNzV9w6Y?#(+|9Z^QYc6eBeanq^30>EiDIGuSCTPSfh z_z_6qZLVW3U^S$Q1BrN5CuP=*X}ePXjl_NO}gr{k3t>g8U5f+>OVYPsPsA_xZX#$1}m6mN>8Q5$M@Y02VGvma>Y z=z$SH8h=0wLP8Fjdz%eukf#ATbCv4Vn+W-J$1|b_0z`K$T;*(dNgxf~!kx{=t=HDg z*+*TVo;nEm0c?Zm*DL#b^SGZ>$f1Z^&vv8#Q@}v~yLt1ozy?$v^gtXO9G=E^P0ou- zAP_<^);b`$?*!ydOD!0iNXSP5mc{x?3AziD0ww>cO|fInfO2Jlv4JdYD&z-61KjBo zDCL_ClhA8p=HvTbbq*PBNFDSK5?b15usI6#qs$QLhcXKYR85@f(m_wAZF90w)eWsJ z^|lL=fdl}5O>C4Iw$edEi|NnNRvZA-dOf=*4OPCiE3W}8WkHh%@eE@D8Z^|cTepz3 z4sA7^_1<6S_AdL&gW$!~;+{Ne>Ee+K3#Pu%?RZ>aimMUUGmXe%a&nkL_7f4cQ{MO> zql0BVF$fRH1Y0xi&309r$9*+(|{YH2eI3tF~+AfA=@4vx$L|$55!N|oWVC->KUSLcp%+$Zu&LS(+bcVj!CY?Xs%hHA@}kB(1Cv7wCm+W2i?K%@9^IXbjNp)*SeazxC^ zQ2so$8c?W84L4!v+gVOE-G;Igg!I**5Gq>a*luG_u;L*8k`ZRvVr7+v4X?zBDv1Qo0}KE8^QXyB znSLYI#QKb*u>9V%|EV2Nh{tERL`2y3Q@!+LWG)##mJ(oHPe748!1SpJuzHjEv2{u) zF|aRlJZgl^cYq=g3suPk$Y5Teqf}I%9G#SZ)6XV=H%TWdW`Jf9<#0&iH89^hko<@# zDb02A031@*KGDz!?C$Q?w5x=m~qXwfuH~Y0#&}Yc_}j^)plH72EO2QU-$Spt(baM5d7uL#bhF>`=b?JP0(88(eRp zW`c<%+rZ%wHKS>-Pt5Y?2S!b(SH|sFNPz$@F{NMoR24vyG$2ES{&sYBK505jdGjU$ zWK;CoGzwi%zkPjuXXfXF!JW{BGpKh#ZEByMriWIETKS#g_D`PxHd%Y??}x+#Dn=I$ z9~fLaKm}f$pQgM{k@OR7@Ysq)uqiaDWMyQ~p+y%0I{C!t;%Wl(U8KE-aAj!w|0}&G zc%kUX&Os=92BgPmrY%UsWAo~i_Zp|`*3>m1{U5BxU}@Q)sUwZpor}}0lsrhwJyEnz_axinM(@GV%2l7j<0@L^6}lQz$T=tA+W! zVM!-oEJV350?*2umc5588`3e-h*4BmN1%e^`cGb!bnz?Dx%ddK^VOFlvRmohW~hwT z6N&?0anJ2cL?eeA5}!Idsw>USHD-%~jzfan38#yfZJm}3Y~jkWkS77DMXN!2=37L>m5uW^{R|FJpwx*1SW ziX7|{ND89gn1E%>yNZf|Ua+J7YbN!63dKkG3$jp1cyq5F8ITCuPkivSwGSY|VeEJs zCvg)U9bIKBXtq5(x+jU7YWy>lps0gD*h}^DkCGImsi%~yiLhS?!JTiy)8uQ$2Clsh zQZ@2J(0PxxW`$I=4();z$8l2cLd8Tr+acRDTEd@Hk zjeSWyi@9_GaS_XR=5H7=vDK=9I=yD=*a%!$uf_Ky=!e$ereNO;v>KxhR&Ov>P(b~b zTRenICg8ZV(3{*E;HY6`Vwx-6^D<;58RJVw`|svb)1A;7Zx!De3d$j?JiK&9~|6JONkGPKXV%>1z3K!h}>c)Gnz?`R^5vx;e4ct2u{yARG ziR0jEgc}%Dwqv9qY@(r|Aq_jERkrsRTB`!KKZ!-tE<-5+@1cc8kLuo1Z*njcV_;6u zVujG(4t{cadbD*n@un(VA3`bw6y4+W1CW9)L5m?2H1^cAwEM08e$b^Y9Tp4^2{8ga z!Q3t^Jp3t$19_u-$plj8`($)J>%1TXJ^fW>g$e`=kOMa{fZ-uxFMtM>wS~pS*^=5R z8Az!x;9${1b`a#|(@$mP^}ZFvhtBV3k7>Vf zNRcyeD*<^U!jYgTGs2A`ME?fSmIrXSUV|%cS<9bQiM0TTl7ytBaG;ggz;i|1R>}9h z{R*wQqCxRNpxMVqhJKeqWrCorW*fHpBYiDE`vDBx+(eK<1v#aVdfMW91ran}u|50% z*JQ*&d=T+J69G{{KhKVgWY7+i^@O+qqBZ-9Q2jU`R((W+S}vH6`MOB(wr=6ns-4**Qpr;E3mPG@2I2*ss2y#gjW1bNw`sB zk|rHOYy$cv5E@DuxWozQffpL#NOle(o`V%5Y6^0b%Tj;_>DwcB#opT40Q+YW7uPF* zE4Q<=jDU|A;AHIIwnAGN(VdYiaGsuZkKx{wgjf)A0qvh44-Q06PtR-GO`P!ZrB=~f zxG2KOsY*c2BVE_ffLx^jB~dRrO&XD*Y{x;w?shW?4b5J3_;4tvGy{M2Ph)0m2EO&_O4j{d z0wxj(5vaYUmCn0_B3_(?cXNguIc`#PnS6J=b(`$)up~FWhj@K4#QTD)z_620^}QE^ zc=t6?L0LwUhXf$ES6snexqZAPLwab~5Sue-B|;m3aY@KuyDYnaoG;{3UG|d?EN{a- zGrc}w`|4L~CdtdWKZ9G{*Ik%d=zX{ix&oFGx2I38rz&^HH(XEA9+3^N5o{jFiY59r zx*OJ*sI&SaqTq!I>UuWzYR8CxttdrYK>v+7PnEar>9g$I^#qnz7h=`idF!&H7WSeb5w+;C8Z%1lhO zpW!;WwgnH~dh?s-ge-F(c1*95+Ak>SzmVN=8k|W8L-Q19!h5T|7vFG|sp1Y|EI}$# z{_Uk8%VH7NS6TfEm|m*`wf8CZ?es2Xp_OVT$;t^Kd;EHXzZPW^tKXi1ZQ{7C6g9j! zpdW%&XX5zY+B5qeL#m+fWmEz)s2AC%&f8zzIDXN`xOF{Ecx3?-v0*eTM0S08KQs2@ zqd2?bLMGgGFBrxnP$-t5i=KAZ|1|hUpssRpP6IOj|E7Xus^|Gj$WoG z#>t;%Z=Y`V)V+Sq>~>oVO+0OcdP)eh{a099SNjm>vu*3zU)yf8xyIRFV*&RC<(e+B(T8_~ zG8|t#Q^67+DQ25mBg3NNr02YAYJ)t~D`i2(Yc<9zS(#)j1Ch_4Zv9+Huo*TGVGkdJ zFlDh{SeVbL&My~X(plAv=Mjd`O)r{_3+j^uJ8zCkoMUE@}{O`9uv(9*lK}X zweP{PwX_J0wp(HYIa7ESN>M8kmvMVfifX4bkH1@ZJ4dBP{Z`U!E?4!obJ8!3ZZkOK zg%2S8Mh1>8QyL^L3X3i5rWrD)xQ;rjb58TNC-2xd4G{`}*v+ z+m-?e6o5I#BI>HH5}e!7_kFfd)W=Ksh70?6wxr8Ep#N`;L9j+FJr$7R$4;FD1$DvV zw%XtY_zKlB5w(@D)ra1&3{o+=#IRYHL+0E3>c}JMWzks3BX&|$;I>7>aB$aMS=lbh zT5R1_un$7sMw8xW-Ag-0`Y&gO7JP>c`=WbrSxa2Zhu(gH=ZxgltM}TG^~}22R)R#x zATJj*siYSo)bv!_2c{4C&qyZo_fydcPTc63xD1mT$g`Cq(c+iU#IB{pT3Bq&=S)U? zy~W=jnBcZkb4ceq=J;jCXdvazUQHuM4 zdWyYmnNLoCjwf}0eZjxSvoPv+RUxu~05(Av7_xtrAg!7H-j#aIBpK7B(%i+FF~g%B zeg!Qh7@dLx5-#&^h3$3B`bT2)#AgfT=B3O@z{0nM0PRKv?velt4R$6 zOyMk;JjP${UnW;IMa#IPVk!??Sw7w1>d0GE)K|)V-C%?E{X!Q$U9`C#o0;^RN>|9M z-J@Hi0gX;SJ=`X`Yx9@AcL&>qNX6x_eYtM8Qpck4%XHVm@8oG=p!n46@2>VuGw!-% zIt*jbrQLn|gHtj3?%9hYVjkO@3p6b6H`pJF2R!1`ZXUkuU#bJgT5&}QK5JD$g_YB$ zj8DXS_9XIaBh6X*#qtkKuN{2KCl*Hx!iNOp-u*r`NlwmUn(lp}9$SyHa0%ou4&Eyo z2$P{^#tyuwE51AWwbyR1O3*2J1YAE8qLH7K>@7Ix+HopTM3u;4|^Z$(cVz-;o)2RQNCEmZSq}*XOUU z(3Z~is)w?(SAXCt2}>;(35Pzg#9ru3W4GlNyv!FvmMSYIO{RhU%Q_}LgZvVzTf7>B zFO*cxZCrbxPg7ouCNV7TNBRq}ehPS)>7@Yr<}gDKefUA6X1p^Y?=+EouX;bD(}?Rr z{^#W1xW;nd-*V6XDxx2j{FrO4PDULzQHS5%?2d(s&!7ok$H&fW^a@j7xq_3B5#4l* z&tp0*ZLt2Nz)!}gyCrBifU2$X6rZ9he?RlAWeM-cHH&;=rfpK5`zL9UjX{w;BER1V zTA{CgT1yzs+$9KMvbiWDZVNc}7vxCOU}1rFd+w8L_g8*J{V4sx5nKPYP@>F2 zO`=BuS3-N|b+Zb85U*fAVmA6Y3bZ)ao}Xov`uibAkVRbifL3AjvzIn?EoPLOX;dGZ zC#6w=57KHJi-vyKrk!=LZ?9jVm!9*{O!-ZRd>X?j-!ljnDnKLe+x#)v7OXjkrx?4{>#@2Qc+B%=SL2xNIT@ZS zj!Dw4U~6Zs{+#BhN%*tnyS(NRq&%OFLRG8dJU^+gYnc_RtM;SeOFp^Ao6SH!DtwMp zCRvulaD(!bWnhhtEGqCTKXHAz#f;Ybhw__3591*l?99G>@aE7{7O@L_lyK1Rm;X() zy+gf(27+(~yxoM1tAwf=ej>ul1a^u~D^G9(T8NhZ=w~|oELjlRbqNydqoxd#yf0!j zagBxSfd_Y3jRL>rnGGZN1-em_+v`Wv_$cNKLEYqU)3l*K1e*r(?^7T%VIngr_H}or zD0@vC%HJCkqHWOO%yK*k;$GCuk@= zJ9jBAwjB)xZ%LplC$*lY(RhTM$m4exV)P93d{jDhW{yO8z zR=;t#QuwDY6mQuMW~3JIStos!rxm=J9LLS{Yis&Z@r(!4Cp@OtWlLRxOSP3fU8zlK z(uvVWh5fPPxcX&Fxd^bFUtt+Ecg_F#P0vVhf;h)Zt|{$_r!QozwI!#X_@lR8wlRpx zjap>p~4g!37ZKshtV8@I`ZMBZ>D=qLXjNl>K4JqyjSW{YyXnZ;}Kk$SLb% z4PqcK;zbHO@9Z=v7WOb?dZ1YMQTgKnH4LXT+b)fntx<>kR4{&E*O%_yqNQQrkV$A=eGWpI3JH=2-j5xyU%hAJQaDnU2UEW8vsqK7g)MEded=IOAQNnv=) z;~t_;2IgAnf0KXZmnxKGmTrx9H5p zh=EK;3v{$J`rJIVr#ALGD%2JM10Q-8O7q; z&f^7IkwbivSBCB_Xzye75@8%ZWVMwqB#t7wqkdiqVPl3>uma6Jo-kypD1x-+Bsm)f zD}M!?>-I|u@zc9<6h<56Kx-J-$dG5*;{c#09F$1(ouUez;j`1>P6DD7RAl_%%n|E= z(+ED{M}=D~0JuBs{}&G~aOrEtkR+_V6J$=0Dywh}&Z{ zynY>gynhvODPWjmoKt`A%4yEQaAq)E?eRVl(~Ix31zL#7k=IMe9u4Jk1w~w?hHv;_ z0%e7qw&XfmB;+oyACCx-Q$L5VO_67FmA@o+_Xz{oB)R=z-4}!Dgy??7eHb=Lt!sCe zo8(>`TD&a<^5BC}h&e@X2pm{rHxn`}(r&7m@kQ@Py|9Bs(dZflYJ@EczAZt%O?>?- z?s#7hNdYphN2iQ!`0g4im*geTnPlu2`fkWPq_Wc7WEVvVAPOd^}@x zFuqt)Vg<|<(Y=7ag>jv>1EuKBvMLJEIu>hFI0hqVK^YxOdtZpWPi*eH3p`u^pWUwz zBbM$O9ys=UUra%J8&6DVS7Z3!F?I~c;EpNZE{yo^nOV>XE9Ak9HITE`@mftI zyD6QnN>>OXOWq|=fD>h63;Qc_Ll+8(`;835yaR+VG3~$ar`x*PND?-_n6MC6@FH*V z#DWJ%THkj6Kvn>&V$!{iS*8|mhb&ODO}S0ZH266@`1B=^EK}9>ODaDQ&COmgb--$f z6ySnbmc}2{GApEno5*;k@Yt&tDp&$|uChlwQu_s4aiacQA~jZwT4JNh`ZQy>svA0R z5T?lTqjU=68!(Hm598g|8Qo_i@H6(`b{Tp5`^s~y>s!-=0r%LiH!>}Gkd09y=BK&g zV3Yfz-tyJ5-YC^%``JKYDUn_kTXfGx#1vYY3ocQUWW`fwf8m6GYX{?c6wT$y*TN!j z_U^u?N!Pfwc~19)yq?%0H4@!noW&;L7VO>@D#jQ^Oq5{-=J1}!ow$^vJwY5-_MrwU zO>Swudc1_U+QtV7^9f?`-w~iETtOBhjvSY@*~sR5IT zAF;Wfo3HYC3XNo+aJco(-9!eD?nMgzUpd6+%6%L`t#^p@A`9c~;^*gX7*zV>DyktD6QTdWj}w&S&OLLZ_eJp>tfJpXt?^>Ghsb z;25y?jg01w(!)eqlIFAjt%=;s9M~h}`R_apywlN&IVRGymYrQRe#g4`&AhAmGMeMYn3Jpn4uk=Xph)j;ptTyZ+=QRDtt}!pRy#L$F@Ia@&7F;>nNtRaHbM z>PobSxLg&%PDllLFyHh89RlL|Ql5SN3nHH1x(228+-(xwbH(x&ly{`1Z!KuZ8~jEM zn7S#^JN&QNJEM~V?bL#$AGs18+=Zb+9y(R49$PATz&vQDb>Ukf@ZYAIFgYY%$%JW-G~;b8;qQSYPO(|YPZP-gcM{L9@V=Su zbUvL%PEO|&8?MriF-@O(T1pZnz8bP8Tv7tp`WKSm)0Qut7bro2?95sgRB|m|3#K#n zU)CC>vKM`LLi?=;v(Mocf!~r4`q-_bY3-gR<-t+uMP9?_U9{ zMBKvzeWI!^HT8zu75D!Bhr#w)p+|ewB`bv0g6W@LB%o5CJfi-?wSkG}{B=6-GohvU zz+7=e9Zsrxv)h-^#dSfb9NPH=GhURdgl5b`BcV410j zV#}4nnjR6MK7F-tXvapg?s@uwQ@nX#|8MnPGlR)|NuwPTitR57DLF{&t3@P{xhv_1 zq{a6H{{EPrm)^)YrA^)Y!xGbk32$pLS`YhrMx{dGjrdodC&FC(m&bEzQw%)R;Px>} z@kjpdQ6f}m6Qr_Y`Z#r*?+z3#cozImd`TF3u9OT^ib`SE)y@CT?4=Ft#ojNT)X_&P zdrN7-dAkx5%b2Ixp4cYzlroY-W0!zoi~)=<#yF*>nWVAeDf)h}+F&-b_uA^Q^n1;h zt%JpDZDTRQ*k)5$3l=&#!xdJyKhG_Q%hJ8h(6twW%Qm+~lZhuo8{RJNutdH?icYu% zN|~jj=ZmY9VWklf>w25X@- zyDpFDjGPt}1*&bJa@Q9eN!+d9UTZLt(y%{7v)8y(TeZ7K1Z|n49up>w0mG4(uooG3B ziL8+2%d4v+j1P9zImhT)*uQX%?0Go-L@gIR%-;KUdLlY<5Nhx=G|p?2aAqPeC790v z%Xz5yzICUS0BWFKH`VQQfLs1q*<<6TJ52Zj)z(N(m4|&Mtv+&Ue?3H0kY7kxFqbDd z**{to#-fGCPVhC=f8$4HZ_?jO1YSQ_4?eQa*0dnuVsO-Zj@u6Bu#d^~i&D@8d z+WO)BXKugCOoqe^jxfM0DS{zCY9sg!&vEEu&y$#iUM1JD@8~Sm=-1ZBFMplLP5+np z9R#@X>pqn5?59nlOmFDsXpPV4P!x=I%@vnCs$pVmJhnqSD1BmlOv{A7(ATE{Jx?gE zlrZij-ut;I=rO_ni<9iNCb&$e{WCJhPSs%zjFhbP^XXBq=*%bg%r-T#ZUK6|Ufe+L+9ncIPj?C-HgqaG~i4_jymU4R! zAIXM`N;+!l&N3&Zc|*OaZaXQFo+7k)sZ;;Z4o$1vx5n(GezBYPG2L?gs@cjEt?4wx zp=?&|r)0luJU|ofC2oXe*mS61akphU9Z#!T`3UTnKd4{c7X0%=gY%I)hR1WWrEMkZ z<1yCfkDbjUJH7C_GbLSe`C?raUj>%ls~f&SJc;1qYUq+|cTKTVw4`ALmFB5k%|g?r z3FbNcSu#N7(JN~Ai`l}EVcjXZ(p_$=ZRGiT%BAWrg?I_Z*zIM*wDZ z(I#$k@rQsA!9sGrs-n$Mx`Xop&S4^G!7e%sYoPQ_%D~5-V82s%lB0DxYAcdiB`#@l zFHH)Ssb4__E>J|R_ALc6&7eNww0qxeG`dDFSkVLeW*UUvOr z@fX#$Vau`gHwQ0kYv4X0>rIgG*9{tVrjGs8SGF*U=ktXjMHCd#n(`qj!jm#W?*a86 zlgp^*bUy~2pLc$_;&tV*pRrry`%6@HvK<}TM#c->``73Y0_=l0+-OUU@UYVDT|5rM z-3Q%fmfGJiBvwzeeBRJQh3jd(pF@1C?v};g!u8*`s32~LQ$2Uwou^2C?p9|1N&xyv}i)=kYyoV5xo~rtH1laWP9B z^*<_2(*nLaR$>wI$x??;Z8Q|mKH3O_#mr+st;u_&E9Sk0R} z=)mVc_3)@k+>@_c$WeQBVO53%ec|5wN(pzN=-Iz>$Cc{t1?jCFeYLXNk?>7PV1PJq z+JpT4bm+*sJ8F5+Z?8ytiVhc{5&)6?u+amr;90}VQDQGy4E$q%S5y?F{MS^3n1@&X= zTUs6czd`Jwm#*52KQqJ1gKEBe1Vx1{9LZmHMcJ3h4#@@}E5$qTZ_nsS!yCOghp3-5 zy{RXsRJfr&MRHgZS~ePihp7`+g(|0kikSGc)z>edRJ)LqBqojkM zKFZ_eD2T(lo>ncv_1|o$Dk+~jjrb%2Ws=4yaISj=rX30QwsG0q?^-QKjgXH&B%sL8 zbo9n+aJu(?Zz)+$hmGj(NLY#v@kn?s(Y2RM$>VLf{D|&`r;`lm#6m(mng0}#Agoyl z4JxRlg68SBOV-EBbjA9_${Dm>fBp=Q`{dzw;@07nn5M31-HBEtF|aT-V#{poH_%r0 zAjfk&sE}})TZpMi)vN2Q>$=D{C3jn&g$3vOlRF$p6hpr@d_SQMJKz4g3YL4Pr9l=w z+;{H+A1{sa1&K;$(z`LMFir8agrJRk!B7rnq{KQ+UsL`MJB=N)mdwjJweK1O(RWaz zBFGDjvOCWep0m`ab=WP> zDI^x;By)R}C^zFx?-8e@G(Dq$3!j(B#^+<>(rX+or+GPSdS$Fv3@qSMkHT*f<@$s+ zPY^oeABvYqIE~cWbciIL)pmJ(-gXPJR_37|PxDnr-fcM6D;~K@5sH7g{RXcp69h3H zA*HCG)T8n{cYWT+RO{*}1&?vY$}cSO!YIA~3)I;*=sS7NVV;NQKvIV;# z{4LYilwJcb+Ts-Be@yS4TtgZ(g!anFVaDP-kXih+Fl&TB-sMSpEIN#^u8NxeDA0fD_7=vze2=Jtn9^zTR5Kmjq%ySa&9{}!L$3x z@0^${kJ5f)G~9)&tjAm0#%1gmgu~W6(G%bC2L>4a2q&v>HmTof8H^^$WFR5X&%+ef zZTXBpHxBDuikiU)9nB~nv zW!*%|PiNijO-5Wm|NE{DoJmq@Q3cX~3jQug5# zCzvOR=Nuz|UsfjAJHbp^Aw?I~GNksLj+!~9xnL;xPgnYlo9ryd@V{@ep+b15&pLm# zMr^rZba?s(+Oob??YT=18h*CAQFQGj3v9mA8VUb(*5G^|>UN8mTN+$kp8d4mb?+Eh zV~70xnXjHmRzD^-pKFKaZcPpIAUPQ)RHYwkNnK7R^7@*=y>N@lsP02*^59U0{9hJ9 zBYIII5j$>tlaa+@eE2Olg>dbS?pm3Oe=~m>LaIL;)P+LTyyckAj+b?zEE=NRZnM1I^UH@TG%UIkfiSpvr3)`qIDtSS)$wbSOu^pK%ESt`dX6Ya`f{Mx^%hIW2pSLJq2z zrt2+6sm7{a@Z1f_@8at=^$EOEM*ISQrrsfq`9hp|l^0JaqY5X?MyfljFNN%8zs-h`bW{WF-h7^TS>ESl-B$b)%<2`Pj>1M)_2F?slxRn*OY;FK;tl1)A0 zWi&aG4~`;9iIDg@mN$<&yn{ncC4xJ8o=Aw5-a-)lxVSZQKm6de&$9L5sT=dN;$JG> zO)b6cJiCQi-#QFN(6w0%NxCs;PdA!v(v~-x47=pz+aoQ8i9KiZ;gnIFv`MwKH-221 zIyW?dBQ_=q*zZ<7bBk)d$fuyMs?E)$P*$d<%)7aqOh^t`mOD?56{bN1e3P2?m>)LBIMW#wD9{AC&v)GNHI{Ao%`H6z;V?tQR^ z$A#YhX~TD0?Mr=NxZOcrZB6>v<0PL0JDXWE3;wgErHBXti*MjKO&94;ukaf6nk`)r zkoK2)rg88Wc0If!V7+)I>WkM~r(xcPGgFxOF)@d!sDMZ4Scv(JJH0I{kK}Gc^-Wqu zhCIRiJOyap24xQ=C#WaH?NNhr)*^G_e*j?N(&2LP$4v$nz_Y; zY)VD#rA){5<75d$O`n^udQmGG!l|u&)r||HjPR$|6bfuZ+U`jah5lGa%*<$NVfqVv zmIm>CEwZClDdiYFr+_WygFJYWM?QQ zdnidaT7t?hI7bst-~$QkX-bsp8V_Z95~t+7>4->~Z<)k0USk11ibmF)y~@wD>ZrXZ zm+z@Q7dV*zs21GnNqE?}A&IUirg|a$dgjLkoW%EhEpbBON#tujo$N_J1dp{@PWFVA zuG05qyhwOuXw$ z+uUFP(PxLLu57IVE(00r<>XYB;yu^tcUT{SdW0JTAM5c4n~^vbwrT}bMBWjeJ@_{NGz64=c9r-T4fS z!u{QMO#TCUICfrEg8g~cZ;xwe1d2OvIb*^2d>z}o$dmFTERf0|;QFt1_1LlO)+1bU zqaD3G)64ZzHQ8JdCpyOn;#sZqyinsW>hgV}G!- z)5U*0F32D#$xo(+hhsMH9_Co_*62E2jOSvg9WlG$6@IdK|I<5jWR45&$oNV=H}{I` z!r9UqzFfj7lLrdpd**X(Q~1>l9h<8cpZ475kWTQ&IxNOzD@3O;n50?a++PoZh!RBq zV-EuSExY(F=&_Ghb{6|CY%x`|0Sjx*jt z6q6=n0*#*s@^VMyQgJKp{?GN>kZ`e;-LLLrXQ@MVP3}Yvo^HQ&$2r^DsD~$@B1h6 zZkwisjUSp_^CVhkT%9?OmV5KB^>az|Mf#fk?_!rSXc%9tHSV~N>uuJVy`c+7W_Qc3<#5!^=x3O7U{%jwZD#k{I>9GApX5P%9XuUXC0&y0#;ngj zU+)Z$WfrlfyI*4!Y)7kQk5g%{Cr(GZ?T&?tC@XUn=E7H$NMxJ{Jr2h5pAs2y2_us z|3IwcP52l7okv$^Y1%$ct6=?;K6?0ikg)u9e4MlBw3_&nJI|vOUwjGv!oouLt31S0 zI+s#S`S1YGPJ4a2~&+;U_iMwy~$qJWF|T((hkx zQ*Wyu4$W4QpT_0rp8`S1pW52xnOSUsEUGRq&B%^!o+?uJJMVn=rjJLF^DM}bD#_I8 zD*54ux<)gvl=fbt9agK6ycggwpFvVr$|4ew#%-U~+NAKw7#2^s6S$MwB<+0Pfoe0% z#=*hW=vuGx=F^NEdD`)YKUpYjmC0QNl(p$~Y&(ClWYg<#YWOvrN%-Es^H6?+!;6}1 zsf`p5NeCyV5`zb~GbT{KiI6j+3N zY&g7c@p+1QYWut;ANd$_r&a5R8v6SXIchpv8wQOSA8u}m*B@dUlT8SQR#-3=@z=Kl z=1A=w2aqF-KT0kVNEV-#2Yb2PHV>bJZ_h~BMH;)9G+CB=Cqx40?Y~~!ve0F5Y%u>S zD(B-NT8GEfqss9z{ed#m_bgX=*6(!+(QxI=XWoa{h~Y@s*objKh2s8?)0Lc= z$>wI5|BoQaD&hGU-I6=(a3$QiVidiwPieE1$UgMy-ru_ykO(I9M>cgB*Td%Hm&iw; zr{F;4j*=`(K>xI^SI|ep#TbppCs_`Oz{{^`>=V2@&aMUcQyg{;F>S^!lfiihWvK?j z3)S&;M8~sKs4!Vax5548jmXaE@}IU0Z9B2j)LeRb6o-3va{U94Q^<=DwWE&f3<+#T znLf$mEoJRexn%L6`o2}BmsAic_`FTDpi%Q?wjg zLYe}pC@V~~Yu|W8Mn;wVw5?DeTo~asbckAy*!)&KJz8Il+z20>?~;aSizp+%7j=T= z@WbHA?W}6pwCQM<5tTVemJ$Du2lbjj}RvNIeh;qy7vYspFNH_&&!LUQ^# zHR+`o?U1pHh+46sQxuQf&}8F`^wxFw-j(^l1tsQsw&;0aRa&g7^W^Z{4Nj+lT{oF( zsuA1~!!iB6Tp75JgcQBC!QAZ?E;vn!9N*qSPTI{f63J{`M4bt7mnSAh1X3y(KVDAa z_}4*KP^Fp>pY3d}fBN?x*@41;2fUwL9Hm|E=v1?royQeL!wfd)^I23bqYnIvP#H_Q z_}4{)EC!nIMk}>9sze_s>sG*&fP;Xbz`6SvTi{%Z$E)Za!P)7PXL1?G z5I)p5wGa!*Swy*K^(PD$LkQ4%!Om*n$iQ&o4H7oQU7OIloe)uHc=y82FIJseXdem6 zUHtyKx7GZ=2Cp*1>e<7M)OmiYWOcF5<^m30sKMCfF*~B5$w_#m`gzFp7#y;t@0@2A zx9(Ta8O-uIJvl=K+Y)vgy2L+9DR$5c`<2#%QMJZ}w|4MpE=7JP4!&*D70&W=c6{BV zwDsgmdOi07;%^z16;56q;SZ=T4p(ff*^xElaDv{i&a$x?)yk4oM>IwuOQ(HLmeYvR z?%W!?S7rN5PIcz&*Pq;fdqc0BAk|C3S{yAd-FNyL+IM;Id(r7x@4SMzSB2j?n@j0S zhbbGsuHJi;z(^1m*tWXydSlCHj~X4zj7+kSt=;E874v|ZCBIPlx{hk4|F6Zc;^@;W zc8M))g;P480$#)pj9q5@q|b4GG=d~Zi5jB6xecPe(<3(W+D>`AaVmr`zA?C$o{Vo3 zjaYx6TYJfMyGr@*?9+7CrU<|DGvxBBkqsV5&{iwAiqWtlC>&IIx1rHiepS05rOjkb zph#8SSv~yG;GCI%c!kDqy@)V2>mO9h(y$hfj4TYr>Lr_BTtqknq?`osZKKsLv5;Pg zY60B>QiBmYNfa`CfjuZPt!#y)%&yVlMn7@Lh(tlP3`l8g*#60j%&WS{0ceCw>S#!Z z2k-$G0FAHUxw{Y5>FVkVLT)lbX65|(2;d1MkG^y`gP(;s4!~f6!ea%{4j3zfU7NsG zw8yf#3@##K3t$Q<17hGOL*)r3(58?Sa4ZyLNwOj(O@Kv4$Sp|VysgGf!U<%Q265+T087?nW6vIo`rgM_%DdKYR~wi>YdXx8A*M;SFlJ975v@^BGB0{nrDodA z%%afoTkd0?jyYtXth3;xGo#mvs!JY?2%mtdA>p}90rqV;2pF>fh-BML`tRKR^;QT6 z(lJ4|YXj8m1(0mhwiIhnW&-|21f)A#0Tw$9>Yjz~%9ZjBe@IP7pd2z**=R_zMoi1d z=xDyuVnjdz52zJB<%Zy?;E7NzFQ<3+{!o{V6t5UyebH#~R=yfKG)zkY?3#8> z&24kiIK@|lUtE6w>C-DV%I1sK7zzixMIGAoi ziho3Xy)=l7#N#qJ!=SH$Xw+Kq3zCs9Lwbt({msx{nD z$|)fUmyZc$b~YrnF_N*!86s0gplH9*AhDX~-N`_V%tCac}h9 zYX$NO=~f<%l;OgIZv#jw5)A+G%BGAJ_gbbWsp3H7(*dU`EJnFJKt%{sE60L8y_LGe~5jUQC3<#E1m)OX}ST z5EftyfH(NkVFC(m{P71R30mrSc_R3mR^ZIgEQN=M0|dgx!;?SUgolfp;Aq*YRE+x9 zUD0fZU(N8)&Amy8RilT$sHDrggY0QXcV5YU-Yoa&sSc#4Pan54!e~MD097~-9EXti zx^ctNV#;ud6%HUS;ZPQW#l*w}ks9uF1_0qRT<67$B-%q~`gLrKF;>pvkggmgT!e5% zR2jGV4oZ;V$&l3z*Z^k5qey`mga<(2OmH(0kxB0wGazU%KtKhHXK*w3fnGo#EhHhy z?jUJG76+vD!+UxFFcfraNDT>~1burpngBvXC`R}T1PoGAQJIBN0+>1~P~kD{j4t;9 zwnYFox0zO4L{ETq<;_6o;@vkk&At3DqSx`|o$P2@V)PKuOn0thS&YDwtopueuYUikY!!$gzL(&KP^EUl*LYG`(){XmDlz4_%3^e7JMqic2cR79o@q zE8~Z42TIHr{aly&v|)xYio=tg9>iQ?zj1@cYqkFiGVma#Rnx(ZN5jEj8?p-vQ$d}K zFHnO6u}%w zfIY&1PWAEpu@?Uk@F`osDzfqOlkqc+K6^wVfOYYvy+Lb8pEU1Ma35)E1>G6yzLj+w z$%$E}bCdX2%PSdBf1)KPjSc;msUSk`jk`<_!dHMq{1tjU;G$x%aPSZX$GFCoeX!U( z3X12L*7j50-`rv-d9!fm z(88}9rQfHe9XQ^wP8qOW?H#4T4gqSK+FF<%)aNJ=?dFhchryK`;1DoTpuSSe)YMc( zH+;4iU`fP_LyT4U4gy~j+LglVEO9wwdzM~adMHnii+~+{G(^MwMt-v=_9TV6e1Kp=VMdUgdf8eH;0pvLLOdW8208=8Lt1WGqK_w?6X%KRZ^fs1 znO8k;!gk$s)luEBwO0V|6Be>h-YUN7x8)0ANA8Y(NAyc3tj*Gg?A80|cQoTpGCdg- z=;Prm;pFw=hslXUaI2V!CsS5Xi2<=npbn8+PpL7SxfBUjs!CsOYB8P2EdD0k$V##Q zw#`KPf%mlOVkOZ;LzE8ANG&gX0qV$w>CKLJZ*}dh!7kSc4q;I4^p=bZt4QUt7xZx- zwJ+`a8x;)D^x%Q4T8@-G5TEi71yJPybi@n!p}84bBy4d-uKU<{=eX;~^uxmR*GfKO z#iqodE+yh`6fJ+WM5SxkQfO0{%#3~f?cvym-Q?1UYyK6F+<&Y(cF94Mp${M>Aa5TY z{G9+r%{H_z$p9uh7JeII(exsC;12%h-~epdDk^vR@&%xS$&pqGk_p<+4+kY9Bh&lY zQVtm#mis>8LlbsP2)L4e4c1ImN>_1An^F2f1jaXrZcAM8QVur5{cjQ8)*m%YTmQLL z!#;J{bY?95w+-v?3)KF5Bh}7_e+}TCOMuPWkCa`3?=d1A>*Y|5GwBDx zlo-kxT!qpXT`WdNfWlb8?1E0x-MaQ5Ha7#(4>;~6r0Jorx=!^3ztL)bjJe!D1&vEL%e=hq0(>%a+FwlG7hs!4k(&vWoR9sQP1SwrLt-TE9i_2IurFKze zn@ItGp@QKp!|+P>_|eAPGBp?SMuXheFE$Wglv(!?BVdFkoSS3#wDCTax`~-5 zGtZpS;$eGB<z;huqnwpj zt;ZDCYu>q0YpUnqyAuwtndyeReAW43Za#DNZO%0aT2sDJ5>Oky!2piu3X3p=gf?T1 z$>Ei~E*dJngVo@B!S%D@EJyNDvN0T;I+NMq>dt&$I$7m1=hQn_Prnj=tY-L$kT`rP z{g!LMJY|O$RBdGEAcT;>NGPnPrv!o<<*)|PS6v!qTSSP}8xP?S@!`&|v|&%5i|!fF4Y*~VLMs$#@lXi(iMFTYD!_9&=!)YV$Jh~^&vtb;BMYB2S$z@Nfd}!6k@7!5IMUfTTQ=wyDx383ol8ZgDvp{w z-tFt(UM@2qZjJ_Z@OLyVNfC9F95RY2*=8F!m8!ZovUEQlQ~7tDJdloKyoFgWHtTp5j}-oYk*gg#WnwvaU71YmZSb1 z3A&)(UA;>LTy3Ja{>X8#7+)6%owdnN^%i_ceyGL)M!_^1Bw>!MNmns$6V?MiSfh zb|!xpkF}#%znG)EUi}T^*exRsp81^0e=Ac4$`K)mc47-t5q+oHExzt`C5wXuZ{Ga5 z!r!Bm5X_0sd}?#>iPO;iU*Pn}L_urPJ~~!3Z>-~9cW@kfDkbr@XZ%VAKEN%J>o3?j zad6$-I%1<#Z<+CJ&&|fM(ndY4LDT8#S^eq=W*5O}kG>PR?suTl#F!j^@sjUNNaK06 z_Ti(eTlnuDT1a2W#XkAiaAcX#EH~fH^fEm15kA~%=*s`-#DoxbRU_`bARSyxu#m{b zXVD~)<0(lAHf8sSC(fGHugrJ*UNhT$wYDeYp{kUSsJn_C30UlKDGq3#Dj>2!CCw}- zGGI-Fd&${ZyQVfIG?yZdGfu-Cg%D9UjiEhzBP(<$`4JA4!JxVoQd^|_2ry+;P(Wv9 zXR*P;f{GDP^MDW)3}ode7@wh3E;%{K&q%xl1@0?ShN%{T7(BiST>k$BDFjJoHR7Z_ycW+%z+Jy&7LDmSp^GiZ3+lrz|7fWkp!sq zEs(Zx#6uUrAA1H7r$-ZY)Uf%8!+q08+7-X`Q8MRD*(Zf%2fzO2OKv8 zYvAEW6GkXx12Jsla$8cWixOH!F+*Mf>cgI=I~S-R{&WfM}Esb2)m!4 zJ)r>;?<=||jHp*U%Ku-Ip>S9K vOJ(Q(|2IRUg8vZZ;Qv6e`@ee6i|2ky`2mcS+1XGS9HpkLsZ^|R|LOk&PQ~kq literal 0 HcmV?d00001 diff --git a/docs/variants/protectli_v1000-series/releases.md b/docs/variants/protectli_v1000-series/releases.md index 9e27090e77..e578788213 100644 --- a/docs/variants/protectli_v1000-series/releases.md +++ b/docs/variants/protectli_v1000-series/releases.md @@ -11,64 +11,66 @@ For details about our release process please read [newsletter]{.md-button .md-button--primary .center} -Test results for this platform can be found -[here](https://docs.google.com/spreadsheets/d/1wI0qBSLdaluayYsm_lIa9iJ9LnPnCOZ9eNOyrKSc-j4/edit#gid=1316498194). +## v0.9.3 - 2024-09-16 -[newsletter]: https://newsletter.3mdeb.com/subscription/n2EpSxtqL - - -[![empty-pixel](../../images/empty_pixel.png)](../../unified/protectli/overview.md) - -## Protectli V1210 Dasharo Release Notes - -Following Release Notes describe status of open-source firmware development for -Protectli V1210 - -For details about our release process please read -[Dasharo Standard Release Process](../../dev-proc/standard-release-process.md). - -
- -[Subscribe to Protectli V1210 Dasharo Release Newsletter] -[newsletter]{ .md-button .md-button--primary .center } - -
+Test results for this release can be found here: -### v0.9.3 - 2024-09-09 +- [V1210](https://github.com/Dasharo/osfv-results/blob/main/boards/Protectli/JSL_v1000/JSL_V1210/v0.9.3_results.csv) +- [V1410](https://github.com/Dasharo/osfv-results/blob/main/boards/Protectli/JSL_v1000/JSL_V1410/v0.9.3_results.csv) -Test results for this release can be found -[here](https://docs.google.com/spreadsheets/d/1wSE6xA3K3nXewwLn5lV39_2wZL1kg5AkGb4mvmG3bwE/edit?gid=1207991922#gid=1207991922). - -#### Added +### Added +- PC speaker beep on successful boot +- [Serial Console Redirection option](https://docs.dasharo.com/dasharo-menu-docs/dasharo-system-features/#serial-port-configuration) +- Memory speed is displayed in the firmware setup main page +- [Added support for taking screenshots in the firmware](https://docs.dasharo.com/dev-proc/screenshots/#taking-screenshots) +- Microsoft and Windows 2023 UEFI Secure Boot certificates +- [Option to customize the SMBIOS Serial Number and UUID](https://docs.dasharo.com/unified-test-documentation/dasharo-compatibility/362-dcu/) +- UEFI 2.8 errata C compliance in EDKII fork +- Support for V1211 variant (same as V1210 but with 8GB RAM) +- SMBIOS fields and strings to reduce differences in SMBIOS between + proprietary FW and Dasharo - Intel-specific HDA verbs, for proper audio functionality -#### Changed +### Changed -- Disabled DSP +- Disabled audio DSP - Disabled SATA due to lack of HW support -- Disabled SSID programming to prevent Windows default drives from not probing - successfully -- Removed differences in SMBIOS fields compared to proprietary FW -- Disabled WiFi L0 to prevent errors from showing up in dmesg - -#### Known Issues - -- There is no PC speaker populated on the platform, so it does not give sound - signals on errors and boot -- The chassis is getting very hot +- Rebased on official coreboot 4.21 +- Updated coreboot-sdk version to 2024-02-18_732134932b +- Removed the i225/i226 EFI driver from the builds in favor of native iPXE + driver +- Switched iPXE repository to Dasharo fork for the native iPXE driver for + i225/i226 +- [Updated ME to v13.50.27.1987; refer to SBOM section below](https://github.com/Dasharo/dasharo-blobs/tree/main/protectli/vault_jsl) +- Enroll default UEFI Secure Boot keys on the first boot +- [Improved UEFI Secure Boot menu user experience](https://docs.dasharo.com/dasharo-menu-docs/device-manager/#secure-boot-configuration) +- Scope of reset to default hotkey to global in firmware setup +- Disabled Intel HWP feature causing a decreased network bandwidth due to too + aggressive CPU power savings, thus not reaching the required performance. + +### Fixed + +- Auto-boot timeout default value in setup not restored to proper value by F9 key +- Not all Secure Boot settings required a reset +- Errors related to WiFi L0 showing up in dmesg +- Not all Dasharo variables were measured at boot +- Windows default drivers not probing successfully due to SSID programming #### Binaries [protectli_v1210_v0.9.3.rom][protectli_v1210_v0.9.3.rom_file]{.md-button} [sha256][protectli_v1210_v0.9.3.rom_hash]{.md-button} [sha256.sig][protectli_v1210_v0.9.3.rom_sig]{.md-button} +[protectli_v1410_v0.9.3.rom][protectli_v1410_v0.9.3.rom_file]{.md-button} +[sha256][protectli_v1410_v0.9.3.rom_hash]{.md-button} +[sha256.sig][protectli_v1410_v0.9.3.rom_sig]{.md-button} To verify binary integrity with hash and signature please follow the instructions in [Dasharo release signature verification](/guides/signature-verification) -using [this key](https://raw.githubusercontent.com/3mdeb/3mdeb-secpack/master/dasharo/dasharo-open-source-firmware-engineering-release-signing-key.asc) +using [this key](https://github.com/3mdeb/3mdeb-secpack/raw/master/customer-keys/protectli/release-keys/dasharo-release-0.9.x-for-protectli-signing-key.asc) -#### SBOM (Software Bill of Materials) +### SBOM (Software Bill of Materials) - [coreboot based on 4.21 revision ee437086](https://github.com/Dasharo/coreboot/tree/ee437086) + [License](https://github.com/Dasharo/coreboot/blob/ee437086/COPYING) @@ -78,10 +80,10 @@ using [this key](https://raw.githubusercontent.com/3mdeb/3mdeb-secpack/master/da + [License](https://github.com/Dasharo/ipxe/blob/838611b3/COPYING.GPLv2) - [Intel Management Engine based on v13.50.27.1987 revision 9712e97a](https://github.com/Dasharo/dasharo-blobs/blob/9712e97a/protectli/vault_jsl/) + [License](https://github.com/Dasharo/dasharo-blobs/blob/main/licenses/pv%20intel%20obl%20software%20license%20agreement%2011.2.2017.pdf) -- [Intel Flash Descriptor based on v1.0 revision 9712e97a](https://github.com/Dasharo/dasharo-blobs/blob/9712e97a/protectli/vault_jsl/) +- [Intel Flash Descriptor based on v1.0 revision 9712e97a](https://github.com/Dasharo/dasharo-blobs/blob/9712e97a/protectli/vault_jsl) + [License](https://github.com/Dasharo/dasharo-blobs/blob/main/licenses/pv%20intel%20obl%20software%20license%20agreement%2011.2.2017.pdf) - [Intel Firmware Support Package based on JSL 2021/08/23 v2115 revision 9712e97a](https://github.com/Dasharo/dasharo-blobs/blob/9712e97a/protectli/vault_jsl/JasperLakeFspBinPkg) - + [License](https://github.com/intel/FSP/blob/9712e97a/FSP_License.pdf) + + [License](https://github.com/Dasharo/dasharo-blobs/blob/main/licenses/pv%20intel%20obl%20software%20license%20agreement%2011.2.2017.pdf) - [Intel microcode based on JSL A0 0x24000026 revision microcode-20240312](https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/tree/microcode-20240312/intel-ucode/06-9c-00) + [License](https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/blob/microcode-20240312/license) @@ -89,3 +91,6 @@ using [this key](https://raw.githubusercontent.com/3mdeb/3mdeb-secpack/master/da [protectli_v1210_v0.9.3.rom_file]: https://dl.3mdeb.com/open-source-firmware/Dasharo/protectli_vault_jsl/v0.9.3/protectli_v1210_v0.9.3.rom [protectli_v1210_v0.9.3.rom_hash]: https://dl.3mdeb.com/open-source-firmware/Dasharo/protectli_vault_jsl/v0.9.3/protectli_v1210_v0.9.3.rom.sha256 [protectli_v1210_v0.9.3.rom_sig]: https://dl.3mdeb.com/open-source-firmware/Dasharo/protectli_vault_jsl/v0.9.3/protectli_v1210_v0.9.3.rom.sha256.sig +[protectli_v1410_v0.9.3.rom_file]: https://dl.3mdeb.com/open-source-firmware/Dasharo/protectli_vault_jsl/v0.9.3/protectli_v1410_v0.9.3.rom +[protectli_v1410_v0.9.3.rom_hash]: https://dl.3mdeb.com/open-source-firmware/Dasharo/protectli_vault_jsl/v0.9.3/protectli_v1410_v0.9.3.rom.sha256 +[protectli_v1410_v0.9.3.rom_sig]: https://dl.3mdeb.com/open-source-firmware/Dasharo/protectli_vault_jsl/v0.9.3/protectli_v1410_v0.9.3.rom.sha256.sig diff --git a/mkdocs.yml b/mkdocs.yml index 082df3d0bf..db3615f59c 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -279,7 +279,7 @@ nav: - 'Protectli V1000 series': - 'Releases': variants/protectli_v1000-series/releases.md - 'Hardware Configuration Matrix': variants/protectli_v1000-series/hardware-matrix.md - # - 'Openness score': variants/protectli_v1000-series/openness_score.md + - 'Openness score': variants/protectli_v1000-series/openness-score.md - 'Protectli VP2410': - 'Releases': variants/protectli_vp2410/releases.md - 'Hardware Configuration Matrix': variants/protectli_vp2410/hardware-matrix.md