From 93730f40d94051323c892b7b78bc737f1c33483b Mon Sep 17 00:00:00 2001 From: Yu Chen Date: Tue, 21 Jun 2022 23:54:20 +0800 Subject: [PATCH 01/15] update rustsbi commit-id 74c103bc0f0c1931074c6edcd65a83fdff3cec33 in git@github.com:YdrMaster/rustsbi-qemu.git --- bootloader/rustsbi-qemu.bin | Bin 173064 -> 43568 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/bootloader/rustsbi-qemu.bin b/bootloader/rustsbi-qemu.bin index d74249e8b8b87724628eb1f6a5336c6766999064..9822f54e58daad6d5fa47ac4b9b51061dbad1a4a 100755 GIT binary patch literal 43568 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∓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

l^v^HvATSBm8xMOQ)Grr*yM; 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 From 16264df5036e40aad656eab55fb8829f8272fff3 Mon Sep 17 00:00:00 2001 From: Yu Chen Date: Tue, 21 Jun 2022 23:57:33 +0800 Subject: [PATCH 02/15] sbi spec uses a6, a7 as sbicall id, so we need to set a6 to 0 --- os/src/sbi.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/os/src/sbi.rs b/os/src/sbi.rs index 8e0c8567..50fcd975 100644 --- a/os/src/sbi.rs +++ b/os/src/sbi.rs @@ -17,6 +17,7 @@ fn sbi_call(which: usize, arg0: usize, arg1: usize, arg2: usize) -> usize { let mut ret; unsafe { core::arch::asm!( + "li x16, 0", "ecall", inlateout("x10") arg0 => ret, in("x11") arg1, From ae56d0685477a0283f64f619574b8d83e19e5645 Mon Sep 17 00:00:00 2001 From: Yu Chen Date: Thu, 23 Jun 2022 22:40:22 +0800 Subject: [PATCH 03/15] update README --- README.md | 40 +++++++++++++++++----------------------- 1 file changed, 17 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index c65d14cb..767cb147 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # rCore-Tutorial-v3 -rCore-Tutorial version 3.5. See the [Documentation in Chinese](https://rcore-os.github.io/rCore-Tutorial-Book-v3/). +rCore-Tutorial version 3.6. See the [Documentation in Chinese](https://rcore-os.github.io/rCore-Tutorial-Book-v3/). rCore-Tutorial API Docs. See the [API Docs of Ten OSes ](#OS-API-DOCS) @@ -8,7 +8,7 @@ If you don't know Rust Language and try to learn it, please visit [Rust Learnin Official QQ group number: 735045051 ## news -- 25/01/2022: Version 3.6.0 is on the way! Now we directly update the code on chX branches, please periodically check if there are any updates. +- 23/06/2022: Version 3.6.0 is on the way! Now we directly update the code on chX branches, please periodically check if there are any updates. ## Overview @@ -44,7 +44,7 @@ $ rustup component add rust-src ### Install Qemu -Here we manually compile and install Qemu 5.0.0. For example, on Ubuntu 18.04: +Here we manually compile and install Qemu 7.0.0. For example, on Ubuntu 18.04: ```sh # install dependency packages @@ -52,10 +52,10 @@ $ sudo apt install autoconf automake autotools-dev curl libmpc-dev libmpfr-dev l gawk build-essential bison flex texinfo gperf libtool patchutils bc \ zlib1g-dev libexpat-dev pkg-config libglib2.0-dev libpixman-1-dev git tmux python3 python3-pip # download Qemu source code -$ wget https://download.qemu.org/qemu-5.0.0.tar.xz -# extract to qemu-5.0.0/ -$ tar xvJf qemu-5.0.0.tar.xz -$ cd qemu-5.0.0 +$ wget https://download.qemu.org/qemu-7.0.0.tar.xz +# extract to qemu-7.0.0/ +$ tar xvJf qemu-7.0.0.tar.xz +$ cd qemu-7.0.0 # build $ ./configure --target-list=riscv64-softmmu,riscv64-linux-user $ make -j$(nproc) @@ -64,9 +64,9 @@ $ make -j$(nproc) Then, add following contents to `~/.bashrc`(please adjust these paths according to your environment): ``` -export PATH=$PATH:/home/shinbokuow/Downloads/built/qemu-5.0.0 -export PATH=$PATH:/home/shinbokuow/Downloads/built/qemu-5.0.0/riscv64-softmmu -export PATH=$PATH:/home/shinbokuow/Downloads/built/qemu-5.0.0/riscv64-linux-user +export PATH=$PATH:/home/shinbokuow/Downloads/built/qemu-7.0.0 +export PATH=$PATH:/home/shinbokuow/Downloads/built/qemu-7.0.0/riscv64-softmmu +export PATH=$PATH:/home/shinbokuow/Downloads/built/qemu-7.0.0/riscv64-linux-user ``` Finally, update the current shell: @@ -79,7 +79,7 @@ Now we can check the version of Qemu: ```sh $ qemu-system-riscv64 --version -QEMU emulator version 5.0.0 +QEMU emulator version 7.0.0 Copyright (c) 2003-2020 Fabrice Bellard and the QEMU Project developers ``` @@ -251,13 +251,9 @@ The API Docs for Ten OS ## Working in progress -Our first release 3.5.0 (chapter 1-7) has been published. +Our first release 3.6.0 (chapter 1-9) has been published, and we are still working on it. -There will be 9 chapters in our next release 3.6.0, where 2 new chapters will be added: -* chapter 8: synchronization on a uniprocessor -* chapter 9: I/O devices - -Current version is 3.6.0-alpha.1 and we are still working on it. +* chapter 9: need more descripts about different I/O devices Here are the updates since 3.5.0: @@ -279,18 +275,16 @@ Here are the updates since 3.5.0: * [x] switch the code of chapter 6 and chapter 7 * [x] support signal mechanism in chapter 7/8(only works for apps with a single thread) * [x] Add boards/ directory and support rustdoc, for example you can use `cargo doc --no-deps --open` to view the documentation of a crate - +* [x] code of chapter 9: device drivers based on interrupts, including UART, block, keyboard, mouse, gpu devices +* [x] add CI autotest and doc in github ### Todo(High priority) -* [ ] review documentation, current progress: 5/9 -* [ ] support user-level sync primitives in chapter 8 -* [ ] code of chapter 9: device drivers based on interrupts, including UART and block devices +* [ ] review documentation, current progress: 8/9 * [ ] use old fs image optionally, do not always rebuild the image -* [ ] add new system calls: getdents64/fstat * [ ] shell functionality improvement(to be continued...) * [ ] give every non-zero process exit code an unique and clear error type * [ ] effective error handling of mm module - +* [ ] add more os functions for understanding os conecpts and principles ### Todo(Low priority) * [ ] rewrite practice doc and remove some inproper questions From f6e7354163801ac39b35b0d90135572ffb2bcb52 Mon Sep 17 00:00:00 2001 From: chyyuu Date: Thu, 30 Jun 2022 19:57:52 +0800 Subject: [PATCH 04/15] Update README.md --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 767cb147..3bed2bd1 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,7 @@ # rCore-Tutorial-v3 + +Welcome to JOIN [**Open-Source-OS-Training-Camp-2022 !**](https://learningos.github.io/rust-based-os-comp2022/) + rCore-Tutorial version 3.6. See the [Documentation in Chinese](https://rcore-os.github.io/rCore-Tutorial-Book-v3/). rCore-Tutorial API Docs. See the [API Docs of Ten OSes ](#OS-API-DOCS) From 902c4a253e159fe225418de2aff61a2958e7ab62 Mon Sep 17 00:00:00 2001 From: chyyuu Date: Thu, 30 Jun 2022 19:58:21 +0800 Subject: [PATCH 05/15] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3bed2bd1..9bb4ae9f 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # rCore-Tutorial-v3 -Welcome to JOIN [**Open-Source-OS-Training-Camp-2022 !**](https://learningos.github.io/rust-based-os-comp2022/) +**Welcome to JOIN** [**Open-Source-OS-Training-Camp-2022 !**](https://learningos.github.io/rust-based-os-comp2022/) rCore-Tutorial version 3.6. See the [Documentation in Chinese](https://rcore-os.github.io/rCore-Tutorial-Book-v3/). From cfc06e5554bff6f0de6326c383115227915c79a3 Mon Sep 17 00:00:00 2001 From: Yifan Wu Date: Fri, 1 Jul 2022 23:32:04 +0100 Subject: [PATCH 06/15] Update README.md --- README.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 9bb4ae9f..9e3b4fa6 100644 --- a/README.md +++ b/README.md @@ -53,7 +53,7 @@ Here we manually compile and install Qemu 7.0.0. For example, on Ubuntu 18.04: # install dependency packages $ sudo apt install autoconf automake autotools-dev curl libmpc-dev libmpfr-dev libgmp-dev \ gawk build-essential bison flex texinfo gperf libtool patchutils bc \ - zlib1g-dev libexpat-dev pkg-config libglib2.0-dev libpixman-1-dev git tmux python3 python3-pip + zlib1g-dev libexpat-dev pkg-config libglib2.0-dev libpixman-1-dev git tmux python3 python3-pip ninja-build # download Qemu source code $ wget https://download.qemu.org/qemu-7.0.0.tar.xz # extract to qemu-7.0.0/ @@ -67,9 +67,7 @@ $ make -j$(nproc) Then, add following contents to `~/.bashrc`(please adjust these paths according to your environment): ``` -export PATH=$PATH:/home/shinbokuow/Downloads/built/qemu-7.0.0 -export PATH=$PATH:/home/shinbokuow/Downloads/built/qemu-7.0.0/riscv64-softmmu -export PATH=$PATH:/home/shinbokuow/Downloads/built/qemu-7.0.0/riscv64-linux-user +export PATH=$PATH:/path/to/qemu-7.0.0/build ``` Finally, update the current shell: From 6a506a52e304d58b6650e717da43f37a60f19382 Mon Sep 17 00:00:00 2001 From: Yifan Wu Date: Wed, 6 Jul 2022 15:17:14 +0100 Subject: [PATCH 07/15] Upload logo. --- README.md | 2 ++ figures/logo.png | Bin 0 -> 55109 bytes 2 files changed, 2 insertions(+) create mode 100644 figures/logo.png diff --git a/README.md b/README.md index 9e3b4fa6..e74826f4 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # rCore-Tutorial-v3 +![](figures/logo.png) + **Welcome to JOIN** [**Open-Source-OS-Training-Camp-2022 !**](https://learningos.github.io/rust-based-os-comp2022/) rCore-Tutorial version 3.6. See the [Documentation in Chinese](https://rcore-os.github.io/rCore-Tutorial-Book-v3/). diff --git a/figures/logo.png b/figures/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..84af0817e37ccde6de168456f63364450e025d2e GIT binary patch literal 55109 zcmeFZhdb8q`#;W|LM7ZcviC|Mqq6tjLJCo~WQFX#WzX!DgpgH{6*9{RiHh6G&fcT% z`Fy=UpZELy{rw5QY1oE$5ib#wEf!qdw9IPZ}O?Je=E~Ddp@dvZwFmB zf84jWcS^VCo4vLsif)Jh2%_QOB*Y!*s`J$=t1DyZ-h!H-&>CAtBdMGA$L6DY@;or}Qd^6bX_TQi0;s_5J z%JTcne?KOt$ib!m{&Y$W*a63O?|(ld@{K&lcx7cDfa!-QV^Tp zm>~g_olHMgh9GPq!~65=1IJbU@}x$uy`Ey7qG8@+Iyp-@x!^-`GBVbwsi{Xz5g3k? zU_wmKGu|f7wWg!;!z=|9EA|>hZQr;zBk(Ffgv(7qcB`D14{N`M`S;T+QUet(;;8NJtfshLyW zkiKr*no%59s1z>~Nx{v<;JcsKaJW?Jd9j-hK21#xl0kb$TX8&O0e?vXDcy3zcN%wI z-(|8LEl+O#duk{nD@&B2Qf1z4{xR_E*Iel{ZP_0K;DwJh;a~psYN3krw;_;|m+#K; zJH4V9OP_4k8PmP`x*v}ZjP`V(85bFK(^cFbCig|`z(i}O#kDZL+Z)VUTMM5OlR!X zJdfR#dl4})zSFuoFV(K3@mnOM->~i3>X+m#R7p8MMd}rRDEzbXR<*u;z{u@Rby29ws zrt5E+3y{n6Koc&{?oa*lo(?=%fraMg<8PW5>d5o#Heo%tivI8(zilUmx7myB{3yZ+va^a?|OHPGrVK z4?w-p5tWURLP@arzgIohQb@p$=_#}R^z3r#Te}}BrFY6$6=P`c7zMKZ_Wu2uYOKnl zw{6DRy&;~{(z0MdaO;nwJ!@_jT+yeYv;lY*IsDCI^-Aw3r}ErS!XLU6y0Z6f($~;K z@(c>K@`km!0yht%)N!xII-XYeiQEbQhk+=f==`Cz3K9+}R45c7K{8%^4%}5d61TmL zPKMF~ZGlgdHYQ_1q)Vd}ymX>Zb;awhNQf6jK04DSqDYQP5|wG*de24deu_8wYh!2B zq?95}5N?~VymhdrnYyYdn z;5Ksy?3{Eu$NU^l1e)#k6i)a-Aq36$M0hdrz2wp=+<=|sQPrWB>gw7(9r{A?J27|r zC43H*c2~xHcJB6y;X9>~ST-MTK3k#)eskf&_x1=(q4Rv->zzlbL~|laSUx}s2L^He z-2^RWXV>&HZrUB+dGTXXNz3uHAXXy5@=N-G7niS}#FAA$5!<6jeHphj=?XIjwUn9k z%Z)a-hcs0~FH*4z3ElND9h~Fjk&P%LWl`wDXYiK#Xwwlrm#HMB2vikDGCYT06S z=G_VMBMehBI3vjRlbW6{RzH7S zddP3yMMA!2qc1D^RXLHpJL!tfuv0x1w_b^EATch1&#OCS>76<*$qq7KNdObJc))gN zy_+|x>?Y81tbfNuBDU82w+Wr|l-~tk#;}LM?^wI`+Kqw$@t8iZ?S(uQqd^2zwa~yG zPH4@Dv*u!O2{hVki0H-c7Ll$>e)d{xEHdyn`1NK_r${3?o<*^z&Us#~jy7C9T#al) zkwyo$1&7d@Noue-gno?;mk5t!dG}yG=W0Kl>Ca<3cx3YMi>!fU+y=V*mY+GV=)6pl z2{~VUw*kp}e{OP$#o&=ro=*%52`N^yFfmx0Xq@ZiZQh<^arL6uXA-vl{G2bcn2Kmk zx-FDQZ;^|Y@So?EB8KPn)S9Ja#WLY0$p>O-1+C*u&T_P~^0z@!yGBGUsC7R;OnF7f zWAnwzc&+LsTA^H#>0^i!mGHxSXLK+J|H=LCEA;jOCOr6;-HH76r|_G_B+J8?`}j?o zyuZG+Gh7_V3!43$HssOlP!RQ#GkU%@Ll<&2oX}!l1l=LNaVjqUw3~3QBWMy5>1iA$rbZnshU7DSmnWq z+n=BDXD?82l3t=9D7u~~{W$+8X+kx2@#R1DZV>K3H2dcbWk!ksq-%p+1&w(!WbaadO?E>7b)#=LXZwXP0@)O~aRmiwn>l)(A7e z+QQj3vG>gjC*V{yNgk~T%tbqsckQx;!!x~#+7k2F+~2JH>+uax#|yZWk9a(-R%G3o z^NJsQ43xOXGA^Q#aZ_E7VLf$Tq$xz^alS1{WSwYXfsVJ@zAI$Nzp&}s3|i6sit%pIyADuy2GvpBtev-fQ9N~mZ>j>{ER1fy1k$+ z+cC<|*+aXt`a?fiTqTt!D<#jJ7m2t9qY#%9FXCEBz)? zQvN2{43o0j5(GQau?&**lZEs?C%@b#^|Eyv#Xl%f1csY5xK}D}@oi2+zV0opXevPm ztxqYe-JlV6i&6hC@b;|}k6knS^%BEjfssZ4>Z~~+jFRfOv{fkiUn|WNlXuFB)YJIo zC){U<#KUw$*0n7cmPSh9B^DnLV%U=&jg%-ae=D0SOf|l(xUet!Pr7)X2Gu3aEzG%E z5Z8TepkkZ>#b)^Samk2jH1&;ZA4#0DPY!o$#F2blbu*BP@L@- zP6#4texyqf(EP1)J^_kV1}xXOms+}o!F9hm6|ye0j~<}`eIvNyThvG!rDDbfB{y$wBamN%5kLXXV%=ah0J8Vw|4 z2DJ~vE7L=#e`6tXB!DN3M%_VU@A7HH+)qL zSH@>BUq0RIi!4E3rtr|4%T%?x8xI2`q(hm0x4=5S$U2Jq-Zdu#xhxtGA9K5_Kk9id zWvja{^IP>jzFJ{v6sI*><9l+rd9>EN+={+8VVz8QS2lEqbfC_IPi!1&r`)k*|!O=3*C0B`Y1Y9 zeqS^qJbWMu_gAE&*q^d@7%x7nKH4u^;kGzst=|W_og5+l(F0NtI%mWtR8Tyq`1ttS z`ErE9PiDh;w6q3JG8~$m8nAe3+g58sMX^ydw=@I{-AVRVe-!QZ(0Khl+0!dxVIg8m zI7dYN;_&6rj18;JKjHGfIcqGTS`=TRwA3p=xSF z-ATNc#PPZ;6`yIa{>7)``08+h zIq4(+{I=Lzp(hH$MOf?u2m8H!`WiubW~zke>j)MCewGaD=()vg-8_p+z*LhBn7rWk z0U4*3R0_|1uJ!godQI&1;?V6EN~DArE(`^~(k@VltbMn;`fd{8dNZr5#=pXD7A_r97I(oRjJki<>WLhS+4{^aLGtDk$0Yh2?I zA3?vSaa8~rO6BD;9cEp&@t9Cuh-F4mPhbY{@R_dvcU zmAArzQt{V?!HCy?)H80{80-N{9wx25)24j{1oMPTtTGgmnet3W^w|lwV=B8FHc0(^ zzz+4(a-68|6F(lXTsE)WmGmD1O-Fw|q|acu&!`tg&7wagFL~|Ryy(YeJ`tzbh2A&d@6xQ};Qfj$?TBwLg zNi}#4`8{w`l!Q=lj}WT_h;ndqP?5poe)Z5R%5f?IOC>0gb3i-)@OHIaCEXj#lf~B? zkhov(vh7RVl`acBvKl-Z<)GRbjbbWn7A>VD6gal1+9@f?AAX(hytG0 zU}3{p5iOmxpmxu8?Jt&Hg z-LQTf94z&Ew9HVyM6Zqfz@KlZ26HaMyXg*=@5*ju2Iod@4 z@*}F&!99dt1ftd^+(k&|!yn-)z2zI{F?!DkFaLx32ytu|onw9VFNBmFH**pFy z^3!Q&NiR*%Cc*pkVE!d0=PtbjL0*Me4AyB|1M~()TyfZzCFMl3v22_eCDQ)l!o6GP z6AG>ie-TAJh&@aP!DH_c&al3Geyrr`;m$Hw{KaVjR@U|$9YC7e-hSAY0Iq}Z=^>XN zZG`du7O60%>*ymC5lR?&qLw96%kgg00LiiY#E@y4$XKzsxU6ra zuIE2axCH_cA9+9FpxjnW%UHD)n`XAy#II}2lfFk~k-aw(^U$r+pPuP`=BWDB=+hi! zpaaT8vRjjJqi58C;CcQ|He7r-GnW>2=ZHfRDb$6kYyeBkJN`%atc^UuM?lALCVx={?bY=6U+`5w%rHa7mU+M|>3zH50X84Supgh3C0qJnxQjTbt0kH?+R(ZVRB6%)DZ#fhD(g z-e;o0!(ys6S<@XIO`!cUU;O#smX#N$}e#N~A$=wc zdK9lB$z1VUPYzD=hJGldpUyFexOCZ4cus`#n?hRD>HHIZ@&ZW(Ei-W6HyasoZxOb9 z2=*Nbuife(`5T%&x$WX9t2sQ#KYrs;v2BF!o`K^M`+XmP`{kfL+(sl&y5jL(m>gJmLdZN=WM z)4gx!$+=ibvN*l%IfC#h71yk*g`xIHkFxmP13+4+5KYZ*H!k?YY4@^@L@M42BCBb9 z=&q$y!A>-K1=`=7U`I1;m;#1I3aRY8P3OnK!>ZebDphW4#ucffAKV-eBw@F#CgVN5 zK*yF!@~+-v%d+C0O(UQ4@6TLGc-&_H)CDZ?k#4sDyq~POH{uB@?UjOy0dZw$&RX!G zdQ*8*Ly2fSiSP({*ZJEnSh>kQ^ay5dIf~fVb7|QO+Y^A4&2QFm@#$pM(S^>Pcz=9A zW8(gwRI}7^_*{U?j}G6W`xTyk({AZ;9DTWjn3xe^DpX=m_xZoPVc+q*+%vMw*GWw3 zp2!nw){OtGvUsMM8v8BH-5$`r&!Le-6ky{_1RK}!W+oF7N*!OM6Va6b@>gLMb{8T>P0t z|4&G!^FAZ&Gl>@R+I>CSo!Ge?2JBRiO<(L}d&oF;Dv5@eUW^k|q!aTH-TLCuwD@{-sM)A|< z2eBFSF(af$k-jqq7cEk-S(gY12Kb}Q{(L(6RiH?mCgD^6&{pAtns=_$QzT)u+=GM3 zs+}|{Q$T(E_z{t-)cG8hW*5GdWpt!{KYALTeTh!Q+ISWiQXzo6^iHR*IPRUKZc&~! zqviJn%ohRA6z1A<{eRY4Z;@`#t&V;dS}w9cFY6^104N7)y!tEvhIA69BwS;SjwhaB zq--TxYJQ;qOc0TD-rvXW0_kveaN+31Rc`r-T$x76%&cw#IR%B1uc8GC(VL!@pt{{D z6I}fkGib|LX)gwSj>wte^npN`KqTW^2b9d!RwdI%1^s?m+s5zx~;()pj zic#Q`=-u^O$A09Z(BZWmDM=n@*|sf0jw1+;LtrB@UGkw(W6G>Dzdt*E_Ml$6M*0(>Q-Q{JBu!ZP2T! z)n>TVP=+P(QV6H9AP8>qY9CZ;`HXC3gJ@>P6+)mCrGaw>Jv}WnVfNQ~n~$rmj4qTa zFLDbZI{Vgqf2vv<|G^`|81G9WwjT{E^xRv2#6BMcDM2)W<+3_Tg9YkK4c)w_E0e!m zE@XLI>I-~!>y&vq&oD%D?&mI2=Jv*m>@(dYS>?H^`wAqA zrZn<%f)8iEus)yy2$wR(r7^6A$79^^N(3|Y>X%{L#u^~%7oK&ZUyx4HddlM1iRJ$K z6c2r@7fgpS|Jv?HpM&??|MddA4P=;jDru>B%+RBr zN0XSs`r7Y|B7+y}3$de>>h!&7bHnRN--YorUs866KcEk>?A1Vz-CMf$OT zgx~ggyY2xa zoZ2~Qh=;%zfjd!Ft)E%kO_2K>+EZg^%lK-k+cCb5ZUA5I6#8OG6=>v>u7e<&dPnVV z9YeMy?Z~nn0q#CFh}e9-FH4h_IzrWYG$L?!q(rZJq{*Wd)BONKd22RBvAl3$o0`sn z6}J}@xtgCTPOX;A{+<~NsBIf-&z zS=ry12^@d5?>|+h{SWAm_uoMd-JxH|3_~jQlYzhg@9B}leJj0JT1r^T)3>#o5J156QcL#fwbPa^G8;0L8;YHK+=Dh-gX&3 zQJ*?g!v2MgKe!p^uYg)mBqC0o2z~w$q;sXC-PIlX@wkl^oLc@ti!M%q+m5Dvlni6T z1{Vu!koM-;^JI|8i`PP|{6IS6IwuT;c*tl_x&)wCdI$Ckq>FEikS?Nqrmv~1;e0BC zR!x~I#nDVkgqdNxLb_i2@n$dYCh&(Icz2>-Yz1enl$62|`TlanjUJ(owvjQSPX!1x zhUHej7Ct+#IAHn;&v9w^ifqF-gWsRLpoI|yy#Skw`Y}t_Q6N>^VtqCqLOQkzz=@)U zUQo5SD5a^aJV{1#R0BT^p6xG)Wf3YZB1$r7HTBdwYL=B{PP-uL{b$ zeTILed4KxC{gRuE-50$Pjkph9VKK_*Hy07Rzv(=0<8}g*MS!U$UADk+O9eEtKVJ1b zUVrtj&U%n}g!iOh^6z#xEkF}4D4j_Fo2d^Q;I*%muQx2(5F|=Tdk;VSl6*BaTlUE1 zT1}&zx<>oZl6J;T+i$O*Ku1>ZC<*CiUxe(@_uZ=eD?T1}LpJ^i+2@<%#$Ky8^zu6| zuL>{;#$SnPe<>Sw$s@~rhA8p$@Agp8;AO*2_}MGi7-*yZQQ`_dxs zJ7!xxtcZswlV2>%#nQMA1KPaKt#L$-c$pzB2q5aE^uL==b~997N*`zQhPNfVGysAxV;IoqRZ1Yx$z{EXlI`$sH5-MW46v|4>&$h>c&Z?a!22d{CTJ z!R@JbKi<~)C0^3c$9He?K6nBBrOo55{;RlWh^ghSB*bFNf^+>B{1um>J}r%cn<3ea z*hKc1wjZ@A*VL38MV;iu#;L*6uQ}&<9Uy2%nx-!Al1~pCw&CNiaPKnANSn*(dVY24 z{$VBgrwQPVa*l-0Hf@3#RQ0>TP}SvcMh?|b1Wfwp*FCXteXTZ>gL8h3#r({g)nmgZ@4DPd zDd0QXew>P||JA`ay@gts`UP#NWP%6Y*~(XkH?5nO=sKTTud-Kqum&WlTHnM=0npVKl;UL&uw8 z+R(7}5gYWqr&AW?upyU?weF{zrYZ)yVX`gE->|$SqdFltp%k#ZD4s3iG=H7-!A-a# zmOn`QI-lZ^+!_Pqm_w%h?tB9j@M3c&+IP&BgO5Yk!=e25R+@EwzImhf%RGp5x)!OY zStN5Jri#Km-uusQ*dl~Vp^P{X5tLI5uX3oNSV?Xn+?=0oo(G3^2oz>G=ZYe0fIDGsvm5l6bf<&w69pDPQsK8A zUhQHm4aWyN_%=t6uZZG-#GW1dQ5yM`8{8j)fupAakIV-(bK|4>t)#KseA?S!uh7lXYs%7E3enI&IJ` z4U2>(?|BuTDcN@5Ro9+z0m(#FMi5hSn&DNvjX&oUv9EDGn1g&rjI;v)%XQl7wht@(3DRCO#%cS1@G{ za`vVP6d{h2RdER;Msw7}V{fd#K4uLimU&w9Jwo2SlgW2#HF$I@S>IS&aUHo-wg^1_ z=Iiv9g3Uh|<1XwZ7xUygXDAVGA2`2s)m}`TW5VRr>AV+h;@fvUA$ZWQ)x7gLO#n?n z@v@y$WT&OT2bhFjH9FL%Ei44E>6J=KI=ZrQ*)i@UmqBBu{7x_{Tc zkK-3>`}q-r&vrc5rPxb%?lQECNYqFNGt+y1fAi2XOJp8eqwACq#opXXE%O1DlYA~yD%tQ`}vw)NfJ7n z;8reFh381?xNa}3x*8X^{Rv%QWhx9zJVa-)qAm*$f<~MOS+O)ISX-Md=>g}B z(9fRjZqscvm}lPA_}=FUtwBpIPG(%=2oNG*wA=!RiN0|k$i$_6TuNA}$J7bJ$g}>z zNNo;;ld|Zd$hmGH4lqJZ)`guvzYLp>H&yrWXOiLXNC1ytbe{FjO(bBP!WFOAwjv=U z>C!k|sqQy#@yFF@ZK+N0x5ooFQF*;9lLj@R2QawQ+Va1&FOwQ;)WjiLsJjNv4fUyCa;BvGKjyz=aFkQOrzG0QQW8T{ zqvwcfbg&yNP(_GKTRP)TcNRO?gT8N5@3P2@VOM+8eZKA@dYu^e*emc&JE>^Quv5(` z(z>{7JXd1y^F9ESKdcLl&J*tE;Gmz8Oh%~frf?hf0P3Di z)Rc&4k_~<3=Rjar48ZI!M-LVBObO&UOi<{7c%;3MoVo?N=293|-^8a-EE5>g9Z3Qt zI1Vx2>s?FH*#Q9o{Exq1mloF)H1o%if6WohAxg2>pT&~kUj!IfoULP7neh^ehq#x< zp&?H!3xU-W6z;-PtH?Q1%HphAY^+@h-83(6&xhueGC(_BHbUft{6KF!OqI;BXF(zG z-?$ID4P9`PkQVaN^G49&dVVM)JCNdkwUQGAqY_opN7Kxe3m{29?s;&{Ge!et4{6Ee z0*044V4u)?rX%f(X)8X;{1=3Q!D`b*RKLM=6aG7f#oVcCSHIl zM*ozT-i{*N3&T4ODfkMCi#eAO(dS;4<${&I(l{@boOE0dQa&5XBI|r?3 z)wc^csj_kYVMtTrWiUs~$bDsR>$JKDA5lAdoV1$ovg_h-+>-+H7&|2#V-54t52m-E ze{=O-mAQ5+=6(bc#!YPg)O84SCJyNWAM*=zCjKQ_ts)YFusqoD{S>&g4jx-JH(9ZV zQ+HmfQNbz44nqg=PK7Zybgr|b=*7oFul`O@YN5tMR4^4zi_g!sW9UTL!!FU?j*#D5 zn@k0Z-o`^3b=%jW)vUP7fd6Vv>7ShSW%oy|gA0~~wh|EW{zIlEFtwJRE+awzmsING zKG^akqAHL=_b5K%TN*TxlE4Uj;PAwopHL_Y9<1$VX75NUPC_X4E&FSr6KHiVFVsr7 zF6nweLsIXU64~TtJSZtIV@9+q5J95kh8?I+BUkYFe=>;)n0H|(l{Xhzu_O>xm&UAl zhA2@ashn;6rtJi567f=Gq@+x6jdTkWk)1l_@IR0KTRs}WZ`lljnJm-N-+NEau|DvF zf4nyQiZqV zj%4;MtrmBYhvkjak5>=_TlP_p9+esv@I(ooDu9yYRLs~?_Cad#!?Tm#jD4zl)bDQ7EHKX7%5ZI;CVQGJ=&)LtMt4%PMfUy zvr7_@6O=;s_fTLi{3eILnrpjL{tv<)mb&rfO0|S9x3YVy$pdnH50%H?IaGWL-n0Zd zal3U3c*!Q>$pF4+SGx0rkM+ShSj6)C*}jkbcmv&d#(kjU^a8qOgO>b>o{1(BB>*W<7p@)YZGGEdYLon{B@XG++bsu8O+?3>N@Qn*+q~?$5N4Gx|Cq zqg(;7tUAqJ5jp%x* zwYwR=ca*Me2B$~t4#g*`M1MjAT|B@Do!vr9?Q%snbAY<#A$)<1GxwCiPhso@ShJqH zZDvwInH$B66B`E2#Pu%_BxabASPEi~`n%iM(L+OrjEhb2;-oU%3P7?)|GAj4roX3N zBRs^C?nWUmx?>?7HsJx)QzDZS=hFw#P(0b(fqvTV~SSbj_scr-#&g(|?=M z9yy?Zmg*Q2>94RSgmUS=VuZ4$Ymtz^rfTVcV?+mU^RvN2=abu?iAF=jkpXdB9JwZ! zKM38h3R4LLH~c{=axA9e2_>%itG3>QQ4>G$s7aYd3G=Ed%7!-Mb3CIPcB!EzjBl9nxSc@LG09;3)yL0r)1a zgf+o45`PX@_X-T|e1PFczz83M@GZ7}f7!NPk7mNf$5;=&jQ*T{L-muZjQdTSuX12O zD?vy39xig=Cr*7;X7q)XHUy^0FR}Qu>=4o1?1EO)3;haXE*)}7Ev-b%&H-|yeQf^k zHQL>n`!GyGoMgnfo?yVG0z;Jd_Ml>4NLzBElo-ISgUC3kYpDN$-aSK_l4T82i1%r|@z#6=e*$pQ0 z!V%=5V*&Bc(nzEJlH7e~pVa`}&4inF26JL_&%HnDci^wHuE({& zM1%!6ZB(pJcYipPWPXMAM)GAcsy|50`)59L{Vu9pgJu0r6jWuzc!&;Xl+k9t0)jZJ zBH~+*C2^mLzGaSd7=F_b$_rVVfTQX#E|RzumI(NZ$t_BBI71lz>JKx3KAme?T!d^| zMn0*CxJ@PQDJTrP6W8L0z&)ib5m$3)zHWZRXCRQ{44#KFqNmLEws#J^CUE-rh~*3n zR&Tw*dl~qIlQWHsmiBc+X86#P2rXtvg^U56q#&H}iJ=(H?2PoquIt1y6t&Z1nm187@vmukkNSZdZ zzj}F&Cjh(=-Tt^|bU%*(%pJBvh7&$#iyMObPjnHw^&ez6MBtFoT6iS+LFmWpj``H* zf;l9<=bv+g?4ulkM+Slic18IN+ z{Bz+7E48qo!ZBe3$B=|90RAMfC|=T2lJGk{=4!$;1NMo4fXRBlY*fwcZ;*+M29og@ z-6apw1UJ-D#xYC<^oB9`a)Q^M@e1->>ya(cAE56DlC@^8w1zhNHQF_D^$GLKa2KAA zDVMjIfgLt~m{5*A@Gn5q(uPa`S~|vkVBPMU;qy3yZ2NnHTv^hk+$;I?5lu)Jm{w6(|sm)z~C%I<^iGmIATu;g=s{P0~av zew;r&o|X{3;)>9HY1_|$2UHQ&Xp(6WMn5z_ieF61`YpnMz6h384F$Wbj_aL=S{F0E(TLxQiFhW6c0|D|ajfu< z?h^z6N-O=!27a(RJKGPgCAOyq!x<@|Aab>p<-jFdq9vxG2amPNzab569u1_C7JUCV zH9SbOZ==X~;8cdh`Ic%mvLfttQpG$+Z*X!VjbtQJUzJ-6qTh(Z$9`D5 zKDtK`@N{*&8}QBSh`vcO)U8()m9PRDS%Gxn*N1mNdknBD^_1hzTR;{z%d2zKrWnU$o?_4%u+Ql__?5jC;Utfxaa{e0=|oK`74AhP819Dz!1HhT;X_zx3?mVfK zStKNsVwR_5&m=v!U%fVNG(Z}FX}27*xBMMH#UOhbZugrR{~{$LL{lP~P30Aj+#B+% zca)%c&2f$z{l8v-V2gx(UpU(RAe^ev`%amXe~+s{@>E1DqTr=U&65o~G*j_rC!|z? zyQbAZ`|~1Rxk+<*Lnc@qb#af&-@0%c)M(M4HBWlF{O!v{ojF=~Q(A?Vg$flaY?jzDB$ESEUvn2cQ5$zT(|3bciCjfXw5Oda2ZsgGX|z1B_6b>XzAm3?ZW^8J*<7S#y~8ToQ2?l{}cm*!-%m1$^*q`=4dV@U$c;?K~fb z@3>^OB2HFBy3qL?pU8;I4a?LH%rw4azYaA4N_k;Ai>VM$jZzi%kG&qy=)MOnI;aVg z!?xI2SS?fj0i>x-82UZ68bm0`$W3e32NrOn?@WmIiEI2L&A&FNRRMPq8#qetjMhhf zMB(TY# z_gd=j!uwU{%+bp__GGk<6a9u5SKnG|h5UxyxGu;n<~j0D*kTa(&3kUQjzAN?6W6(4 z!RvC8X5RzPUeJ9PsSw2St-YYdlgZ)zuG&M zZ=l2P2Vsyj(pIb8ZXoc$g;d&2fV9(Is-EIqH|}Jz{Ib|w@-HEb{8@j22N@;HFXca@&Ci)<3ihVl}M1_9Cj4N0xb#?N4 z3a2)+UfvA!Kx?KGgsj34xc)u#heuu4UB%y?5S13QUGa~K!-HhRbbgl>3!q3RA# zoFdfl01O?4VDo(ey1f)Cg<~B_;A=LOL~K(j*Y24f)H>nrA_;Wu#P#!%79KsD98&Mo zgq-pXZnd+^SwW8~IaL7IWz5vakbkDFT2y%(Sz*S($2=aS!FWh1V_s86S%mE-+1H!t8K-AvA21Mcn>8?wos~eiQLI1gX0m zqK&wD2dAF^#W){Us&?DOrDpR9^Y4g%@Xu3b5=u%=*i;{LWn_jFZnj>DeuaHe;S=tg zNMk!O+GUB~^j(8drD@1;slH~OW3sZ0_I`IFhbTGmC``1$_960FQqVIyPCERli1YM< z=<68RJb~47^V58|`n{^{_T?}e{EOj(+E*}!6@oVPKgx_!3l|TWXGfKgW8->y0$N0D z+&(0l7vOhzA&Yv6>|3NAmQ{?6Ko*m z%3gu!I+y^UN2(xj(%(Z%1kbbyMdKYK0$k4a!Q%=7MjHY?70_7Y5rrD^(XbE#6A|Wd zj+p)$V%yg@+hYGGj?M(oi+d8t#G2A*`memH{$_kezNmJuKfc;+N9Qk)01IePMSg_J zQ3%n`l|pE&;V$|w>$5ous&Ep(A_+PFAqLv&nfD+~pCSdDc***qce){4PR1^9d#wEw`xOP74#^LMz7J0^11utsWJu%jsA3cQng zf#O=+-lU&N)8W$95LWP94Ft?A3>I*iW#vpCyoAIT*K!7h^p*3JDxj6jmRs=&tw9J?c*e(UI*uQwqi}6cDHyKqgk`rc$`e z{Iiij{WuV^3R4Cq^uDCYlGwA{#tlO8@&1}n1P<}4o#|0|!Zu%7$(^atXy!Bls}vwS zDljW6D7`RRk@HWV0A}9PkXB2j5nncjLnGUtl;fN3F& zJ(ie}M&o%)!|Ps7qT9Y0{spEVj;%f!#5k23)#Zz2?9+`cmw#tXLP;yfq0XLv#jkwj z_6tW68=hnU41##3`K%)Ra``e9%I51H5f_gQnS)MKx>^L#be{L~+Z>(|X!zxitf4Vm zSU1VB0h`N(n#+%GH}^XUKizF=_#sxh?IZpn$Fi+6Jxgj=;m9R}S-!}gvrJ$B^w+aD zc-mT9b&HwYS$3{RW$@gu@4S@ED29}RoPeiZbE&>x)%!teC46T^Ema)%{9t;46hA7e8TpYi))pLB|XF8O?uSVF6gbBT>yND? zn%gT65rHDIMzZ_Sx7SyeM=SQMJ;JA;Lh)ry`s`&PRrQlY{+z|*3_i0^#2{Z#>A{B_ z1f{wZVgI@zn#x6kIjB#?9BUI%?R+7LfCD0F#`wQXsP#~pN>D%jjGa0C64J7|Hv5;W6`S{iYLsivWp0~?| zh?8VVTd^JYJ&btoB}4Z~a^3rIzRRaGPpbItwdl3y>&hv}Z?P#}T5kr=mH>hOip8bI;Rm>sFb?nw5BAJqj_uFIUfX}rq61z& z%b#L1H`-do5Tm#*tg1@5LYQ%KSKQU5{gZ(CAxY+8hX?x)bdb*L+}r0~w?UNG*+>yO z7u(x#g)%BZp7Z`}dEHSI=wsdRs|~J!=9UOefcB#(fc(ASfD{ZNeE;E`@juFnCrNlj zjFwaGx_juP2;;+ByGrKRD-jX(71MGjt}Er8<3ge05NYFP3_kVe+aCkT|5j#&%)5i6 zzxJ&*y!INn{tQPung}Kak>m7W`2Ea-B^0yD{j2i(4Y6N!*`r7{@;4zoc0Q)3^VPJd zgSU$B!d9c5_TI})h#p`U=!`X!51pfV!=&*Z~wZLCDE8wwMlh-ucTs$L&Yix`{)- z@V|hH5hwgtXo&x*Hxu5*7hZn;+ao84?w~g{3&pF`?ZUrqiU{ex-$CKR`Ue&N(8-@1 zQ@8w5*MEc!Ym1qQyUKid_!F7Rr(m}=4mPKy)h{@G(aY$G^^h|vxb+RjyDRvIU`8%q z1tVTAPp!ftebLL%3$v`0$R2IfJ4yYO}O9I%xPN&Bdijm1d8~P--Mr*_34BO`gFbPB&z4BB201MMInGo@S$YPwTci+foRZk!0J`Y2B`Vm3~7ZtbGTVxuHKRi`O zoW&&1JjX!ACmwz$`w z3N~ltw;rL_!~IKksHjR*uF9XwNenmiJH>2y{H(YkA#Q-j`<4}wm#V$taU#s*29sU8 zdwt@F#c%L`vxffuT!Eq+3uJa*&pk zkW!?(yStGPq`x)S{k-1~fPvX-pK;XEPF%8|2F3%Q)(+fyKt-j4U)>#pD*HU2kQxIH zfikQLA@+JDU<3YXt>H2C4|zK~9vP+A{VzAM+Qs{N0k6Op3Pl>;&#OQ7wt3Br`UilD zqs382MM1#iRu*)xn<2xCIT&3K@b&W{7zoL;O_$wg;7NUg&jFLiQDZK_bt`5q5oMZ`Ea!(w&+6{?uK8Y zw?`aaN-^^OQ7?~Iw8>!HdFu&ZELVOp54O8)beqj&Pyi|We&F%hVP3s8nC_k~ixe4w z*-r2*t9B#&wF2PpYN0>Q4WLQz?Gw4iS{{M zKM7qEjlZ|J9g3mt% zE#mA*?)ty=>Rrmuu+XzSe7BwA@TEoeymTQ@Gwr>2+*7EzZ@IzQB5xzIYx-!E#P0z_ zICv7{+spLB@qn*NjpXCq%?dYNqBCy@O7Hb&{yaBK{F@zo!)E3ak6){*Uce=Txs4)V zeRl|T5ncA-0EeMW6nkt?V->*6rT0ZeUH}o;8!L$1Uk|su0ZYRG(D-BKFf|VdinCdfBZ$bw0fPq(xSd~YR9*eq$=`e z{nw09QEP6^v_FqTSQLuTFQ=en8FtW*>qh{GCxGBZ57b>K2_ay6ZpLD{LH?;^i(mg{ z%{v$YezT{o17ori`vzbD1!(8HtbvaoKPCbT1gk64yj!<5&>SQJ=*^H4a|bTsv_KqN zyJFz|R~~LQSB}xAwA9YVlO)5G%~NCpcb_xO#(_i9#V%zAFMjbB67 z8%fQK%K5l{-!Q9ZybWEN5R72{8xeU$o;?cZDYTiVC=UR#9ZMlH4psAg25%)kN~<}^ zs(`473v_=RC(|EDQA9k3J8dJAf6e^d@B}nXLUt(KmTT+ZPjGiNj^#Cto;G1nS2Ph- zob{&|U@2n*0={Ghm1LhHb5^wBC-B{!|Fnz;Rk37YDDYajLE*WRCSU^U;q|sID-Q}_|5rr<)MykLn2b7HC{wEr z#PnDhC(lz!gpss+z(dD@|1GN;89?L$N_7`9-{}frosa0tnTZK?*T;&u|L8c&Q z%5D)!m=}I@I%S?L5BDa<;6vQMgs;ppj^Tx<#sU}gBqbS+@@eBTzUM|#LYLG9(7+3%DP^+Ssv@MmCiLpK9%SwUrh5~;r+ zc+^+}TxvR4cKpOcKvJ7BNb3`C8;KVRkBC5bfc_7@a6iu{MMQ z<8%h{&m;xFK>WWxPzb-12GF#9=;wdl7(k)>3H*n?{OAy_9|4~kMW2AIxPn)a#PHxf zSsF!Oae5c(MKv2dh!7qP=Cathb{S~UgzHvu4DqPx_Y>9v zr}Y3|TI=%90_xU7;dgv5&w(%(h1iq2;}84%9?_a{Ghjf6(8y)2}OAIgh6;pGaDMCUSk^g~xH}!2-Bz0l))y=0J6YNCD#D-0upW3d@A`S zp7tiY0Qp~T3hw&L(`N!)a{fv$+#Qx) zFMEEn)ssN|%B}FvM=Eij7t04jUI;hS8}~6IRrO#4=m!>c>Iw&Pn`BV@YDrOxC^^v5vM%=GEs_NfC_zPGA!No73(g z>Zp9-XJxSNw@PMtxwyjajKs&JXaTCk;f*GGYl}>W%i*VD+=B*=`k{w^_OzhWg-UsB z#}WeUS^Ety7bY57VvFy2sijRFi@ZkP><8+*e_x2AGv%;=UFZ#ErlrOy`cSaP>&AC^ z{EpLu^y?o_<)yrQPFIs+IR7k>qM1$8DMUAV?9tEsyp4^$0b~w5FjTy4g<1%(Iyym* z_uhZay6b_*3vM@LhnsG}W5(?CH~GY*K?YY6ycH)y?^IgdLdog&jyh_iGKMgzW+^92 zLzpyKqLRgNp(Q$ux)yvxQu%x|G-)tQWmbR*rh*(3wP-?>v?pCT0BzukN@38UdMRdP z^+yD~Jy2OzFJK36>)z@}Q|!3T-!UI(BqoBth5jQ0Q_(B$-?tyQ|Y@8Uxoy@rYj5QZGiGqB_!Ssbe0B{Wt@<%@*d9kr}X%oop>_ zw^o3rSjxE5o?!PkyZU8?)Y_W-t{h03`I~)4zwv8B1PEe$!KTfzc7H+G4U|%aAlWK= zx%+?;WKB=pYA9LYtxMP14$uJUdfHC31ScreiHl8qD)aoTjP~Q5`?Jdv+Ds?5R)f%9 zlLU;mVtL!qlF#^*L7B^%mfD#?deNHP4R!!=(*g7?_le+&GhEOfaI;q=$=L*Gs*_?v zxmK*#`^8MF1BZ^C8E}1IE9NnS%HDT_f}SS7zomujY$QXG8;?1l+}AfCbe!j*@;j^c zW$;vN_J4jEHA1K0u2NsVm$ox8{+ysflptbhmit$ct(rVQO0a9+%!#U)g5y$wD{IS_9s=| zA-h`3&9P0!7bd+I1M|jG-sXb0)*>fPa?N6egzKujmSk09Qo8o z)8;V62A2oi0WbP8S6}5-9@Z@Qu{%*z$wjyY`0o-sLk8U`i(7JMGKakd_~cB`S(F^6 zIJlbJZIVId+`W~ij(<++rA8w@Mn$lmvMmnAK(b4U(*&vei) z75w!AhZjK4q4&#!oy0-^c&@f*@;k9wIu|F95_^-|f^}vS5G}YqE<;Yeh&f=iuo*Ywx|ESj)W`wOi&OfMit<1A25Fj>ZAPm80@wG~NWHXO)wz#ieA1fJpBU}Vxs&iw4T50>u zgj7HIWtwV4p|(t_VSoAld!xbz|H=C@{Gh9Fqot!`kI=T*>Y`2_{wXke>{gL8E6@6Z)3N?v--p9GsFUf8_AkOZa z)0ZD!L?oX5(!7Cj^W+-e&$A2wX0$9cTD4MOouj;*#p-D(ZUV)_p#*3_u-Vsf+vwiI zpy_6QDnLuHQ>N5?O~Kd0oQZfChxq0HX#sGVPvI8Ahd|cV)4^m$D8GMUvfejCd(-NfY9kJ9I~1%Da}CxJy1#&1zHx zy|w0L=olG+(jor>d?GTBQA=f^g*yhZ>3s!}Rjn^T0_A8=mJP7n66?46d7@)roDEoj zU7!Ge#P0v!XFWJ6s1XoY3*Y5sjaLP|W;Nn(a46h!jZ|LjVH?Az#AC>tsaIV+RRLh2 zhDE+%?L>x9r+9%5#99Spt$`YJdCwBQ5A8JFKZ7y`Bvf5{lPwJzZFISm~#AItu0-g*W ze6paSMSDF4;2!OEZ3^=Co~b<)(sdT?V@Eko5SPcT3Jfj*_jZyasK|*GI0;2k4t`7^ zJp$J@+WS!DIT=~$x2C|``Wwpj#P{Kf=*3ym9?!uqK0g$?skiM-G%D5OqVs&i#^{?p z3?QY9+ZC(Mr44*{^Fpw5(BpY0d`4xmwLn8qiWvr|LSGVnB+znB;5I5^VI;*^8rFUf zKBwmbhPDRiX9fn-38plk z9Pu@K9XYVB!Q&F)ewfQH4`ekkRq(F}7HVYb)L3h9R~Q+j^%G&L{eYCHXBvi^9VXH4 zFm4V8$oQ*&X+;+{fGjt8C{gAZ7s_L`m;q;O-PJK*9#MUw_I=`M*8GdV3(s z;eVhKp7-yvsDjIzzp83+4qY&-C|d^4eL_WX)$48%12Os~2{as};yzVGU;9PK=yh6r+@_#?habjGZJeJudU+XSQ7aUQ zct2CxZ}PBCjV8iSU6^q!HOk%=w@APPxg6lPE06Ap;1jsL($n9u z?O$1??^<4SZr<^ti(JLXqhx>D{Uc@rW!eEP8~o*s01cJ~$Y~y4o?8Qbb|nzlc1ygc zH;(@aNa;f95X7(9LbnZ>e*Tag3WcI$Wlzc%-rv-98Z=o;4D%9GSsr5T#fT!z7MSwV zXVhl@n&K0=zkY>6F({5q!6{l$P@u8UWqUYVJq~===Pj&RQTAwAQo;YFjefbl^QSY2 zN)hCgj?swCpI9XS0L!-p^X1Lo{(g21w&J!!8*v+)b`N=g8-2PZHehjO9?FLQ+Ui1J z7vs@bahzfAhSB;zSWbB87q5Xb1M+ky)Gq<~+z&>GL4L;JuD76Qp&(5Qi_e>XRZTM? zo93pkFxF3pAe4Y`0~ndo)Z=CEY7BnRPNG8;soT!S2b|T9Uujl-#-fI~0aD4=W%Cvv zC@fOoODO;On*5;JTL4n&RGLZXYP=8@79Q?6`}&20xd0QqXQnU6MA5`Ei|6KGZoaH~ zG?7-rPHo+EEKou`A63MJKsd@Tl!}UaMUBuCqe<~J-}?p#gzp$1~m_$;mk#Y`Zlhb^HyF~SH7%;v0$mRl5CoibKa7VV)aMoOkv1cpX zrThuRmG6pvEeewf-C`rt0L+0kU{U>Nbj(JDr=)a@ef0;l$v4kZ+`TSO&;vbu>@|oIx{9 zn<{&CdsB^*gSysgJ@C9;A_wP^8hm+=)mNK+Dk%&G(5N3?CF}xaQp~`gp?$I#>Dr~v+OC|qo1|Z z+*)$QrB?4W&?@x$SdisGY| z@5l2v4vW}w=abezSMN5DOT(Jw%WTpQ%1hw}tkQ%; zL=gp!%eEPKt1!Mn0$k}U#R4iJ6DfogChWIm*_%cTMSq0%#|-Lm>-$|-on~i_H9P6^ zaaUpIS$hl}Kex>2_OG!I-db2%Rs$u{1u$FIh}RiaY<^SlYo+pPHm%_~i{FfR!VEq8 zlJKo&?BIKbpfzrH!a-ybJ$QX=rZcE)37odnNcR|8HEVh|@m{078}}U!kOW`-;yrUs zw(INI50iM3H@ozsq}tV%AU1%7l{M+&Hv!Sw*gjXnuKfEH&8620k>B}}-zdiTLo-nBXg5Kr7B=~x(Cj}iJAq~aBlta%!V!S92&x&5EMPp0BJOT>E2VvA3dMiPYnIJ`C&{OBfGua!he?J$cbp_I?g-&K zEkYmtBR)iIXQkL@Tm|Wis3#ko+ah6Up^g99gf@D41+q(CnwW5~y_lPuW8vl|{*L32 zRk|IudG^r^S$I!xcyS`~jp&Ssg%4iPP0CzvpXMih9=r-CQSvLk@j1UcdR+9aym!cY z4#m$@UhE7-aJ4b3e@;OrPh3~A)z>E)pO|=x6fV?>*NBU_xhUtZX0aFeW66aC3q@tv zI~iJTxUs60cn1!H?t=%!<%3n2h}~P-<96@oKfFieV-+Nu{ng8A3$g0?*vH&ADSb@W zSY!33WBbL7<5-dA|Cv>7j#$EUEeSQvv`=BRRaLkE%ul((Iyw!l#9&;sbehPxTJwP*{0_hcAtJHEx065yZk{)ZW zOcFnAEtVHwk_f_3qoZr?S~cztT3mdxhN`k($8WcChnCLyvJfDoO=HE;l77u1ePOK; z)}4xdBSkCc1xtC@)k%^wHKpwD@Bh=soKq$B6J(L$xi7YG#!D-sCH`fV$YH2vfYg2e zPAeclbm1x-x|#p+WAX+uo)i9XLR1uE~ghARHHc<^~`c7PZ~V#(fS{fZco%jh<{~BYNpEchC;^ow@!i|{h40MJtfDE zluP|}rYM3aODAm=OHr+SuCtq)cIWu5NpaUE%q5}sF9^GJ8{lksU%&0kLXMy*nkE$d z`m+iP=>$1J_f=2E*!UjWZA9t}(!pmUyTxk?WsdCI%G-!9v0OSKrBi?V!rtzAS>K9i z>V9Ckj(|dv+0}s5PUe_JTo_SRjz&s~8bEWzjLv8BMN@iBPy3WP4XdPG>`wy_rQfFv zKlz#5S6EVVO2S)=t6PNCv8ggHQgkgAAUZKub>N%G$<)wsK`h{FQZ!DI8^az-TYny%6d8Sd}s?wCsb_u;i6VV!7e$j?5tQepn$0WVeL6N;TBgz0lAQQQdQQ^HrhZ z91~rG>GIntI12OdptSm1TW-giH~MV97`s8QH&0e~Sp4hXcqH&X^27io#!~oL_h7?( zxE-teLT4A>FGf+=-pQO9TGtP>)ywZz2X8mg&_4WJd3^9*^qesb{XR1`3ZhYB;Q{A= zyyTqW3cytLLCHyz>wBsHs+0uL>8TCjbE~(PUB7vD#$VQuKbdF*wUe9){%FsO5 z^iH-ePIF;zdvR`*`PqA;9JJ!e{5YCJm`86S?LS~6Q6Q&r&7h|tLL3?zDqmIXr4e~i z%A0O14j5~iB^|2%|2}5O*r^=dw}~}_&!3R1-6{4EOQO;=N#>NG*orOE0}6 ztp7te!-G47^~%C7wnQ6~BVm#h5qucLEUwhT`*4=_gmit*4f#%5y4TsOXrix9ddutU zc{jOhCkXA|LM6MyZ=(CDQer>y>~7=G`iJ6;>+bD%e;lnpf=frQvmHYkXU3o3!1K19js<&Dswm8_!S|FCG*dR+fBK&o9P0D1C*m7OKVTh+^AYQMt=XcWowJ zs34gulOuuf-(8F5F`MR1mHv1LKBAWRDRR(x=87^l%1I(U4FlpY11MM{w=$%H+Y(E{ zC#S)63@?q?+WD+#pRx73Zo_naairaKIBqWcx?=a_c<%FQYslYMSTK@#w?1izb9!M~ zGr(O+pkptMud;nNV9wfzK_(Zv36AQ&fnq=X3kmkSDw74hGgE~VFglGBR zzG3(E^&u?LZ+8hTK?okMM}nj0p1O)*fq#$`WmN8vSArAacjVunn<_{=<^k=v#sm*u z2cNg#1zSAc@8A#H;Z378PK%GO?OInKHDw7VKYsbhd%HBt){ByY5p@ z3ZIjiN@@VOq1+^1g1ekBjlz|7gllVR5c_l9lw-jsrEYO(rgg&||6rpXnqu631j7BE zc(!`SK}gS3x3cX-wv?N>&u4Ya!aSXW+_LGBgSAztf z_eEn?ywy@27pT{=)ga90(j&MW6X2TERWyS4W8cclv4p*YD*j*Qj34I@`GQ$@mW_aLE2*?ONOLcj6pvyUM`iG0^7ci_ey@Yew7rkE~ zq7>K$Jmkf?cuO9Dq;DVY{{H=Y^;A}OcQ+SxT2ZziM*GcFC8A%}!^z_V4tL8RS?R0r z4U3MLkE+693?J;QZ-Lh=9ZKU@)d-vg1i)zW=k^i?W0;(o@%EJ0L0;M<1JY#{m_k?H`*?J{zj z+hy33MMOkQ%`_LXskGik7Np6FPK=LR)zYbvq#O)!2c2TJfVBMw%{-1u%uV%8;x_>y zfE@M`!FEWHR8P`Pl9HjG?`@WtrDx^vY>0!q2HxCj*Xb*hxd>Yevu@JSa7 zhjL^e;oYs#ZW0*Ug)?!&N@t7{f__G#4G3`{V3X42aX;R9PvL-cID6$dS(AxYnVBG5}z^=;YhrD zbh5H#?CXd9I;ih>*-l;`t#2oGir(@~aO*vJ$mistLRE4k-C;^%P+oiTI`xiS53-V=Mc^}5?kSlt1 zex-0HQ#ic23vz>RHYNcPPNqduZ+jDuStu7!`HFB9EG%LZhawk0^~_-{d`^pn%$H4v z)-U*mBOws!8Sz0*Tg`_*qX&*Zv9rYdour%|_#py<&jSlZr~4v%$0P0?o|ib>(juNE z?pvew6R<9*qK^Ao@5c9VR3F~R*%C(m3+L^5xO#q*29lFI01?;h^szhNpe)c!G5=Kl zM_829-5SneZ29Qv!J9`isrx;xCW)`3KUGJmn4$RZIkbsU!m#;lv8+S?$f0^ic3BV> zTbqBOH65-`$>}g?LK*%6T}0F+F+_4zC=3A$k>w3Z=S3sBgQe;$@@liHna;RMS{=;z zAGqgj1ME5>Vf#IldARtc7FW#NbYI&r5?J&#Mej4Jo^bn~^)bs>DWSXVK)rADp8nb4 z;E79v2#0ZE_<`^lH((ErK_Rt|0PA=`gN9CHD zqA0chAs}H7UB3v7$a0qK%>m=!D&Uu4HJF%7DH1ske2Y@$o)$)v=)80<6I&) zBhnMLV*I6?t4?5gd;ws!T>N{`6yv2HP7`F7$a^*9g;#*jCXq!F%%Wh5Y}qNI7o*Fl zg9eR2`FPx9gENNw+PxHEeiw z>~_@sUygcNN@N{c@!zP?ZlYgV{yc+CwXh@c-em?_C_|;JQMgVwdu7Xddct48rH@>o zB0bX-MN&}DII#adVo{BJh|Q>e^3Wi=!yl+$NDy@gd@uK|gg;jvE`=6B_Fd4@Mgn2V zn`cjb#sEarIqZ6#$c>l<>GyVF;cL~5nKdMU51ByngzZ+%L=xvW$9UuCjaq|1Fl4@@d&mqax$_PAWbsyYx$&%$e4fFt7^5lfVcN<o(vojujCy2!&T|29Vfpr zDdLZ-pyM_*ZziirW3%cg$;cpd$5Y0nrV@G$180dRZAHtCvC5!IQ5B!Y2sSj0A41!ua;m43?6~QY#C+9}n^AjTzc84Ds@+ zUoqS6xI7GYv|956?c_QT=`($zW#V|)G7gMIn)=YEmm0nkiYQ%3<~#p=xIde#_p8iz zVqhNV5xNzdY%%j`rK+Ryr>^Lc3hy!aeZ9^$Z-#p&T zw1*?GV^wta^n}%4__Cn>_s6{2tX-}!COd!KemsAwtfiJ{oo`l2Zq|S_gt{VqFy@U= zN&d&ZgyED~?Ww6O4^|1id4D#FY1Wxn8Ur(wpOslN>nA{fWc-3uKi=I1+-(cBqx&dC zrwp&!rq@TRtfZx)-F>Hg*48k30wcnhzr?xZpogB^^=SolNT#x~7K;V}J5&%Qv-Wr+ zoy05f?FjvL_>RF;Kviq=?Ds#n`xjNgLUXUpymA$T4vy>joC;GoUM!$9Gea#T_1V53 zmmiE;Ww_hOkjtGZpWSJX6JeXvLQ}OpJq47FB1)6C$gEDT<{c|T#OvV(jjMo^PhZ_y~?6!2{*Xj*^zHA_v)_wESpvfqnRnbtB zP4R`Nn}T{m%CJYNo>5oUhPXFxhoY!h^2fM11vRypa;iiyP+0)JnTQDgV`z_5?DMfP?G~=X^{b)3+f;3~@z(Pj5pZ89?_0Grxlx_aVE0%XVk0aH0RCJ95T#hQ&pP_(%v!YAaU+sd%TKvE z_$!`pU4Y}FqQXNm%1u4-725`;JH7U|W25@F+3B+{mk&=}jGwJCwtG^o)8vM#T86Va z@?!067$PJkqcfW`V2-OqX|MGv5St>8|4gNeA*dYqe_8-uUfv8JL1**m?-svRiU|2g zvn7GE<0D9^k}Vih{_?~=EqR#ZwcU860P6IIXMn%M}mCf`4x~A+}J76qWBT_9~fL_J=kth?9WQ zXsP~`h>%spN=_7A-l*?%W}Ta4ROMqc42BF38e*8L2j`kk?W{dA7NxjGa+ zqVX+)|7cV?ey0AB9HEL%49({2*1TwIFrEFFWSzY{-^aW8b_Vb`^M zGng$EtXiivzUKWl#5!*YL)2q45Qb?{4VF%Mo_6JPCPoRyYLa~-+Jl4er{E$jOv#{m z!N<9gpbzj3J1QzFv>`YTMPx4(%b`z{ZlNDs5ujW1aJTodchxdMqPtGA1ktQKcl`(O zfk#h?yS|czBTBf3nm_VY|Hj73+qj9?K)7K=%(9g;cq56PJ`~UFBrfrs(pG*>L7tc; z)HQR~peXfj>XB_%Xc}ediNkno*>$K&_>=*{QZm&eL0vAMTd36Zt1f;kgjz{9$DW6CqhC z`sf!MK+xr8pZhZ?%&P1FPo|9E`^{}SgK$UV#1zeH8@(T1kGjRnd+YMMECCuH;vm!0(-t7Pk_pwf%G8*aiuRp&nz9@m zu#|v76<6)jT(%YX<=0b7-uIvmh-`*Jlo_JMN8=O=XpU5tKI*}0EluRbxtlieOCtMj zF%dumlzTEVVjT5OC(SQsUEF|!A8hv!?m=nw*q75TayvK)!|us5qSxgORFB227E2pv z1W$uLx1#~n)Gn5_3i5~-yJwjv$RJl3-(sl_dNLb69V&6z)cy%rf|u5QM~;Cj&1L2> zV0d6klu@Ia8IL45BY1W8S;2kA!Nuhh;b>?m;@4{O_^Zz_q`1UkfRDS(Gj!f7X6i_G6>-)H}gLrG=6%btd#b(WqvV^#KM{tkx{*uP1WV zSR~bi)7&oT675sM;kcZM$B@83FoYuYX;e85^!F#Gr!yP+KL~ei??yuqugAL`sj#+f+Ba~>KFGz+Iwjk`!XPeN;Wdf)e^iUCnG2hR zrACK0i%N`{FgZ^C(d5p%NvDunw|0hB#aGM@(uEVJUS; z@a8H^5nm;tw6(R>J2;ry0v2?}NRuk;sCO)EHWr!rHFqG8Ud>tb#p=H~Hd1OL@_!fb!G34R`(l-HCeD~g` zC-1=BY8l|}hSj6!IU1rNm6y3Yj#w8V=SosHNtFZtMt;NJ*SrwTvM=)dLpDfa1)sAB z2RJzT%!`BD#jR`@XlZ}p8!?-=Wxh5Oq_l5n5r25&LlGC?XgVtLlE=Ly?g+(lT8~8M zgIvz6)+p8HY=#{y1%oF!Ia%IQ`ILCHw3H3@RrSPv06Zf;hLeNdBPDF=>^p@h0}_>2 z{EK)51YtjZh?*@?9Y^iLz?T=6lNyhhHyA5lpFdZm#RWLW#PpQVe?FM%OcDhC%pweo zsMn!W}D;|->>y5yvhb+Gm+D&?3mv-8QAU=Bro zO%1-iy?t^~hf2|AV$AefMZ+>%v_csPIu04XGOv`^o9oB}yO_$B{QI3O$jue9-J}Ca ztZ1iU?8g{B9vzh~>AJM+Y$_bO?76ub*=?4k>;dM5oK=Ws-R6#YmP&SZpj- z@E_a@GELE^5qyVnV*!#^iyr19zh5B&iXW*jypL8nA>B*drx!CsTZLKQPK|Sjks|bn z=-19o)`X#GcW0Z8)GHa+Q92%4l+T}|)E8TggG4bf$Hxl%nZW+5j?aq!dn$nNa{kDU zJ#!=`Qal4psl;Mrd`h7ZO8?z zq(;uG`csrUq$SddDr`^X+4@M83#O#YUIt%r>t|-Ff4DsV{G9$=(e=$7KfUDe;6tHD z=5x&Z#m=^`4v=}-SJ9b?D>$MAq29l}Y)I!d1JP|aBz>F&f>wsPFK`e{O|*7Zs8~JD zUi&fx>Xp0K;P{(aMAAJ?Y6ZAnjDy>r*1idEA9d(@mW%B;M zL*K1LgWUY<*=BEUkeL4ai&CQ~GoA8uo3pd?;nb<8ni}SCaMIWP>qn)Tg(I)TMT+}{ zQ_(B`bawubqcp}+ zUikIi&A&Y!q93ZH{!Z%pfCxcrkpyD8FnKI71FVtzFAtSvCt~!UE`oLLz7^~w#&a<+ zGuH->1p10oB|4zCiqaPu*HbB~J7M$IC_d%a(xXU8C5(AV@4x=TvAb4Zn(^s^;mNFO z&tv_h7{B0D9ipmVCYgZov%=sh$OG3I{|_;!;F(^7ez^tJLHzuY?TA}+Jy#)2Nh#4p z|A(QSsn*4b9_G6!| z1>A5n?nxr8wI=E)1eC>aDZS5H1hMq7DV+^Wq@#W;!vSkbtg!p6oIm=oD$Zwar?^5_i1Gd zURJMA1=d$sr}Az^;CV^HXB{gvFC5+%E$s2v3bpaj=QO)>Hd!-UrbPB zK+FClPEyPCJ3|y7EF$hI8sp*&^iawIKad>mHlZP;@&jM)m=|Ws;tATe!20;55;Y81 z5}BNff-aZ@_84?F53us6?a$R1WLH6mS=T`231+DfsC=Os+d{sdDUxf=sZ*33*o}X- zO#7lmy^kis-b+EH|GL}b^gX41u7C%us>r-hwS2985Ky0p40wx23O<{`L|CPV7-06@ zdl`=s>-kDVjiYHChXKHSGey+e4#U6?W;PuK7kn>Na@iN2FA`Vycm=q=Ad%*F58MBD zvv~6N2D2HG)r{eHjKLD95&m!S5%XeKrulo`rwU<|Gj3CM18pu!Vb4qM`<14$zUMJp z%_poyZ_8#x_6Qvnf6s8?X(r1%u-}qg?t7}^X6I}WdP&-0E+tB4_t7V*C(kFMrLpm* z;RMhUKL;n9(D^&ir;)-6SZ(h1w1PX3aKveBh@thM+H5AOEw6!jTH0*KB2uvc0gt^& z-pq`OAQvaHwcO-|wmVf8gw6L7d2s0EGsOp-CxzPrzaC2O_rp9Yl&W-4-~o7nkB=`O z_7ROhe{cNL1)$X4f%x6Ao8+3c5F}LI1g~m2E?A1eY|vHn${NTx)J-*spFJ6IKxd!)8p>7&9~K{uy!^FSMiHBb`b-+aG3F9A$#C@>xXoG&i>m`?urZfHz=ZcMa0E(! zP`-HkiBipoBQZK+EZ;wFtxA+V~0^A5Mhgap1{>F72EgzIYkjf zkiObOKO#0)|AUoadoc!(xj#(FRA>d$VaqPHB2|w+Stq9jEc+SO*p93fM1cj+ZS0{~ zB`?$apEk?iL#Tvbe^;UIqxPyicABIEy3>1HS|bP_>s7Z*0b?g~2E6RgNCB zV&&eK?WmXg8iT&QmSy2Rb96m=L|G|hMrvHfYy64gIu?($ZDswl2HwIZ#oz2ZJG2DX zNAuk8wh|gJ1c__tpdiJD_FK!D>Ms;;7eM`ZJu91BI3Vud1_jq9*+>;rlrAxwYk3-7 zUpsPxRMMNO*sm=&SK40p_xTYr7_-L)D_lc(6Ubw^oBPzv`{cC=HC?P{z{&d{1s5h*SK>5 zLT)aNLzx??!rL8z^(F&cu=D3xj`K_K#C2%LJd@Yg@|?iK*1NoWn%P>rhfDE&0gjG{ zjm!moNO@I?8e>~@Rl+_4YSn;!lk8T)t(#F$YILQ zVICkC1h_N5*i9XT8wl5f^%mP-3GR%^6Xo}ja-Glh$=V|Zojq02qfm{d; zB}?j=8=N(Qz5!fkM}1k}4=q;O=}RFM-e(}jSMWum(>S=3G=oJP#~Ln*;oafFFjd3L={w$6UGU()ba^Zc3!AgLk90;?}8;+nL@oL1)R2)&t%a z8(+g#1c-TH=W#;IKb;$vo?~bRtz>3ou=slNGed*4w2Fuy?oWbyB(4?-jOg)~IiK$Z zfaHlky9EiV!uTtuW84!U3f2;Ewr$+ouX?e;(XbX`%x92SkYl*hG~Tyz+jEfUdnMc@ zZB%G;llh?zAI?n@ujsx!Q&v}M?)u=o5Wo8S`T*1#Qaybk#pio>L#{z#%-KG&v3nn7FLs=yi6?Bl*$qcCtt-G2wc3lHhIw6d6`6C35 z8c|NK?ez^ngqEf;X4z(by=*3p7j-93zI1)-)6ErFSy!QHyw_b`0(6QIs*a(mf#wTl zdwebL5*QM!8pNtxA6WxxZMY@P>hLr)oN1uL@!EH)J6b_!1b2TcgVPATjXu-joy^V} z_T6m3_#nj~x87I$VpJ|qh(QJuXwSQV*BSXJDxMU~8GI-2nox$u!f+&6W-ffppm5BF zLF&2LSIAoN0=EB_=&Yk4FQsN>4+`$@Ra#+0GBxZ$5x$Xr`e)jy;`q*GGc!UP_mAIx z&3oRy+q8SC%)7U!&A*q$V~GO4&g2*KQVzZFvB+u0SYhn4{N_ysN+Q^-YNZ!1}HM{1PIn=!w)hWu( z#&2e2e*`(FR-Smm# zLf=RRL-K+VSL7ibKPpJU$`7Rl8%IVBw+`VNtew3sqRr(#sNAp#GgFXS_WJX%DFRW$ zxXSZXkWtV9a4dr9$b^;x9BN69*VteYMG|mcdN}rOC-};fWSm#qpCECWLDQ<;C9408 zopm>C2{1(5B&P=BvuUZ0Rj`zJR?;|8Eb@6IppwRmc)F*onta@woc!Vw@2h0_v)NMf zg8hqm*EI*pfN3>o&KjX3l`@7(MNC-J!qy9$Slujf9pg+&0RaueyX)rxr&|U#-YQ_N zj#yXTfvYv|&eGcn9gpu_(u2$mUcIX2bJsxzyhN^g56`aQ2mDa^MJc!z`g-_nm}JO! zWF5#2Ls^hFJh@$u;eG)E=&H7Vik*;!yj5ZTUTRRLZI~FMLU3!@`6qjKff+}%6@~2k zm)~4Ghz!S?#yj6W@z&S$u}x-TcWgL3ZFyuzP7GwmO3!0+D5Dp_9pdFeM9FtZfrf{PaPx`0#L& zdc=M?QRLan;tKrX`J*cR3fr4ZGu!jIP+CplE+{%t?B2%PV=q#$FU&S+7UF6eSZ%*E zKd7hwH`C0XA+Dq0?2-Ns6pW4uNEgv7wEFu!_Bg4>>k*&xA)!E1rkI?8F8_Pkw^lYb zp?5=RgmwGAfYILgWb7i-9(2!@;Rp25AP?(z=>7Dns!rOd3-*4Eg!ml(c;R(Lsl zC&Qu~r~LoA`wFkBg1%irkdW?1T2fkClIv9k=!T8)wh>dI|WCeSLj{ z!@~i6Utn;NCQElg5keTk5x+Ut`BV=fYKsfXR5e0Ma(3MWW7@nNX!bcGE@J@5~L z<9Nq}WrEcnspu&v4+Wy?GlJ^BB9XYP^%zwcJdcaO!l@FOkEF7i$of&V!v!Z|VmUMD z;H&be>aPWS%eL-HtG@@kniBFsDwo;xO-VB+Cl2#pQ4I4QqU5lm0)V4o$PWK(aSCWz z11buFxZdmZ)<4}C#xGT z?nTA@26t(abpn7?o|u}nPh=Gl5wIE)>qbFN<{-nOnZ5wYtw%{)o^I#?$QE^|uj7AR zGc(E#c0OGT)%atDB3~JG5hEXMMc|7$C+N_FDO@;5sAEI{?REHV7S)PeQQ0HOUK*EI zD&j*}0+&yWo&#g%UUVc{4RGZk_r3k4KhMieHt8>13`tOoSNW*rJfbz154i=~AY?Er z3W@VT3w#t(beS8F+6+-{iRk^Xu&sL|0C5k)h4oW(x~ zkSJ4PN#DBtNaC15F+l1XOx4z!`3el^Q<&nXRN*Pj@IDcT#X@SS5}H0^v)9J6nryyk z0G*T?N)X}r#2OM@jN#UZEf-UP40sAnTG5T2X)!gF6fy0u^xntG>Aj_fTlBBXt=|^L zUqdL&NCjO5m>WhT#CzTL{Sa|++v;oCXhhA zvAP@Al1`}+Qt~k%wZ6|!^8k_c6TJBKP1rA#)}r7E5N84=2g8CeQi5wy*(A*d-1{T{ zMuDzkLme+KH#V;yo)19z^_7*50)5?~=ctCmTh8od=F&0}*v2-MNDeO4XUKg%kNz&N z#!#%PwOe94+)QxyQ)nWk7MH`5GNUf9*?WNPVefH<$G(^(DG3#3k30@i`w|}30-%iU zfET$$a4szTnOn{J zGFguuHt-cLB{LV9arV&GSGcy*mc{jknXZMea4gq+!yW(TE!SOvkQ&KDhops-B4;Ws zm&>ddpr0OPjB;dQkl5=#f?-$0i#u_H{)2d34W0;pFy;8hy&LoZ-EbK&p$t8j-5Wnq zzJWWiwy^kU&D6Mz?Wosc8Ih60vyg~vV{wm};5-$Qbi>2p#6*cYZYa{y`-SaCKz=b= zL+L@l+yZh;St>4KoD0p8v>hKT-S0(#v9LlNGOVQUxUUKSi{9UTZZ_W4AQR=0B0DIn z>g-#*y03Q9Ahd2+AA^-ZJpdFG0_4}PA7NAUsqNr`-ej^QM`(!4@QiN5^+|OE`N_;D zr9cvbKWZOtD|4Evz5@j>IAarPN?Ka?Ax@-R%nHV-sY{;pj@ohvgR|C(vo_?(j3~RX%A^>WJ@cnz_GwJUm{+f@Zv7sO#;Sr$3!gDzO zGO14|8OFmmQ3bP~3b?zJ?QtVDRdQ;#KNhHsF$mg}y>I+{Hk22Y(rF-gNUUX0|EjTK zl}!e;4%kOI79I?V+(PF`V3a<>MM2|9LgsU0C;%i|SXce6aab@Vl61Hj2Ul7sB#M3j zO=G90IX91i8`a(QA5-Tz8m}}^Z^VDGP`VW1Kgc{dv)HjY^kic-H)s5`FR&f%*Pj8e z`_+y%##oZ@RsC!^fd_R@-GeMCw+&yY+S;G);3$L*=a%_lv$vSI5GPP|PXVs3Z+XtV zOoIFrAs0Y^J^1Ta!sH+&Kkj+(-d-t{U339uCh1^7VSm2FKNKByD;}zxg9D`S3iE$0 z750sp{=c-ksiPL9%m%pm;>OT=7Wy?flP+hKN*0idge)+?v6>n^n44Cgjq1(H=&U-i z>j|&FShlUP+7X???FrxXj4)M}bG)0AvU2x~s&vIRD{c>9x#r#!upY z>X7}E2)!!wX69ADuNbju&QsxZ9(6Hf3$F`|?hQ7Bp2Am5>3SAi4`1_GHufwuo&1?? z39%__w5x4={?$0KbJ2F6fP^Vu&qfF+_!z&pBor-V6)h4kyv7flxAtq0%XJ&cpC8Rp zEv?cw9Gf2rTgI&@vz(_qegFfYTetxI91^%7>P+Ki$)!I6kdHZabvVH5?|UJ~Y6LZ+ zq#U1xqG#rJUOZIt#g`m~=q3%RLqo#}!c-+x61{r!jGg}VU#0HxT9#Ob+Ro%fKM5BE z_opC>c+y8&P{(k-@=I$=7CTg&Hx0Ar=BnTLRn=%Xy68P$bMbj_k7s<8HBV}fDn=jx zqM0tOcQAEWR>I6YvYz6=7QCONl5$*g!J%@A_L1b?u4oWF=9 zn#A@FcS_QjlrKvqLjdLDoU8c|`}!;cGrn6*xt$IZF!_11+qvj|`CyJR6iy^7BEmQ< zuex>Y_TA|Bu1K}kG0cL_9g+3Vc)+@I`vQz*qzaEx|1TGyqkr7DQW)Ab)JVC%4^n)Y z&@C`>Y_5UR^cz7z-83|hcX^Z;@>7JwMxQ)A1+gU zxWBNW!|zq9#np?6!d5W!|6X42>H$$=HIawK#VVN|UQnlt<+c+F!ew+b+}aI{{OT#- zJR-t#L;2k~ZPfI0h5AP9CiBoM=rWIL3G!*6fmqi4_^4qMyjGQQM1&lq@>5d$-z}5E zn{lJw9Y+|7c)j7^K;p|(r*BRDLy^Pm5>rb!tCHQVeukPc8j`Yv@!?lV#=lT$qZbv9 zX^v(<5k}V1L|N>@7Eb6lx@#OSssC;vdR%BNAUxcYHksO4l=^@Kz+S*Ok%m*fO)&M% z8_ok~9uii9#5z98gfK+5D3Ic702Vrmh8{cg_plq(nWRQ^Wg`Ir&dc^Ia42Ltp*QXk zJ&?pj4S}JKDWzI?=7HzeZbt{#0hDCn!oo(f{{8XjGTk#HyUGQ#unhH-jz!drWkl89 z_iRkM4KEorPE4mHyIas)xb{P-GOOCJiT*Ziq4mjfDsbAv1pzKTO!KbwY8&sV@eL^j zMVH`$NPq&~`(OUf@kUBt0(STZ^5WV0Sc$H}6O_Nqejgn$5UfRsUbF!f)`UKi3+fiI zNhpy1wH+tBppvUVgraNh|K$zUmxV>kfz?O4vxCji`TABA6BD((9daee1%S=pzJ2TW z`v3=(b=Cd`6C=>sadhl-#0t>X_PvSm@$s|Z+^Z<4-XKg#1-{vo!u?~M;4!LJFes@Y zYF+NQtj|Xq5K5PMQkSV2-Jp{F($=drn-5)+QrL`JEtopxMEG|DcqXpn}H9B>~jL+Z=elOW`NRy&-Ok%^A48Z*mP40 zr#x@deL%W)_0dnkjC~Cl>0FLX4Ex`MH+sWaeRM#AoKA7Ijq9R`TlbM=aJwlZRaW%f z3YhNDE|@OaQ{3A2F0ydpJ8c4}N` zL?LQ_kb`$zRu*EdCNHA`>DHTDYRZg;a})dN6Tg8;lvp}`^o2J$vvkz~6i%xo`&joP zRzu(AY@et<<(&-tDm|SHsGo1!VU=W|S524Ee-y_#$arr@_D=ScYYX$#iA{>G89Pn} z6a4_g{o!oj3`BuS&rzI6DZ*`w^I7yI=tLC9w;Rja$&##*FDwjCNkfpnFlIqZ8cabz zg_9A5km@dge)}dz;SYlMup|(u+0tb&M176Fph~b=BkL=jX{~Wx5hCH&qc0}g`_>Zk zb_&S;^ngLf9D4CB4ah^3osw!Q*KS0kp`noumQ-rSo>Y*LQBfTeSa_y*^Bw^GgdRWs zF%5qq%6fUXN5w&fWLeLyW60OPUJ!oW?=9P!KoYTBL6=&G6?012HRfO`$GS5Tz-9!C z9jI}XxD{$r%dZ4ZTL7xtym;5J>FmMmL=jI(8Sac_0Hg+FPW%)xW@K?;e)Hhm;02t* z9mWO!g?cv7u$v7$D=A@40%`^{kNeqfQ)3tnra4|7mVu%>fIa~M=vIf=Rl;zO>oyN8 zdBbP7E&v=gR=U(o?&ZGr%2EW2^Skv=9G%xd0aZNB*EdL|RL^Hqrc!^0uW#F{q3_Fh zu+|LTQPP-A;P+GQa-?p()PM@Ys=EOPVPcjRH39u(iQ?QVIlvh!{9XGc)?a`<4I-!p zU;;f#UQ-hRz$gsm4FM1S%R91R3E?qFg6QV&-@^XOp7g1NXv9{yzTwjdNj3T5r%==zpBOm@KMPMondnP`B zpaydB6(?+EZf>rYGVaF@b`T;Og!>Na{iodJVU`O7lm`%5sa7Wt1QG9pg+iKp+Asma zNn|tmlG@MD&*up>9pB{Dx(ZOD!|*1^e@btd_PQSFhaf#_s(Cq_knDbj6j!)b5tB9I z0vx_N>j`-*_|abbSF>8-PdmE!Ps+r<4P?m?WEy{gDl_A-OXzkSa5ViHEQe6DzI8R? z5}FYTi7ckb>=33=E>&k75bT!0q4y-28{MtN_4D{dX=`SOMR(_I%xE?czXs635>bv;T1_4r|q9?Gcx1ZB>yA9MH zoWtlYV3r{Br-;qUiU#Bjk)q%5uK6!C5;SfA?JF4g=&`TavoZC+Nn(4pXI1RVn8bJK zehW(B+G)szo06LOLrtc@m}w;b?~9p0ZEZa6-sf$XrOy;`$0Nw|rL*0djW4Nb$3=j; zuf^SbtED%?jebdePRp_HM74{|(lT99T|FuW-{$8oa|l3qv~Cjt1xWzGp>Zh+NI~lA z>OzIk#q%+NmfEl-7D$UfQC0)j0T7Dx>QW$rw9aMBMXpa=bM=_f-`Vv|N+LlZnIOBv zRZ;-~YYy?gS0CxU0on0@LDdSf)xxJHErp(=hT(e(C1=-T#?-|oO2FmlUOr|wXZBE} z|EZCQCm{*vGro#FUw!uCJIh*_NXT$6H&upn7J|2-Aq6x~b|`4Voy*Vf18^5q|MdO$&9N6k}F_Q3O@S)i;aaOPBI z+zLciE1R3;u2CDK`Q>T=iW&BNf`)>D<5GLP3U7y+W9#ClyW5Kj#0A*zsk|3`AGXNj z(W9NYlR@NzM`xRe$D16^DXHSgzsfOx2?;n_pmY7eIC!8PB;wTRbi;;^#fN7lyl#3nog) zhDA+~L}%0(PK91OkIMpb3yE6fRlfYMNqMm?@B2Q1N$ z&-3V}q~K+s8J7Q12Rb+m-$L+EUOBdfs3HqJKRB6+3M(tz-rf>`?IBgTX)P}#5vY9^ z9;B5@R@L&1Eu_X-O4v_BS>O`o`BaoQQzY)&c=IPZ_1{AZ`{~Q`R(>JUs?{u6HReXC z)n)t5(RU!rK!gq$q6in~ZL4u~;Jv2|%$XtV`C$Li->;s*Qq_C^{P>EPn?%@K#Om{Q z9G{mE&jDP@^`@Qgy|!kX@6^N>(nh}jgQ9P%SkQN!b5Hl zV=wVC-IhVb9XvnP5R080}?vY5~?srU$%{5pU4bX)Q<)A zla#<>y3A)#{d1U6(}2H|4flD3NF}fu4`MKB)gdCFli}2TpyX0hQ(Z-Dt?)UYk$+x|u@sSR6;S@$#|nw^2UM~oEzf`a z&p#eF)VA5{oc=k05>G_?poSnxrHJkhIkcE0mbkA&T{@PmsCVOMZm(Ij`I-3F)<*&~av`c; zm-*myuPLde6xpAna8ideF5(Wi-xRDfriuK4Z;e^G8;2Bg1Cta{6wJ#>a#%6s>`k#1 z?(!L|en>-%%==%90PLncLj-z)jalLEq|b&XWJWeg2ou;)d`7MUC-2g?a}=fO9~^!V zX*ZDc11J|-*DcdaHWCFKn>BOa2-j^MkKA3+kZ2FYh!=*^@Y<8I`$NY5;mhu#2(WRY zeEg=7kOa@GVbf@_N1&~zqEgaa`ooEFZf?hmCUM*db~N!ewO)T*CeIXKaZ1ndo=a{S z0JTVxG(vHrQpMPIT)AtxRy(oP?BCwItNY1m5+SfdpO65m*b7%`C7jWpR`=J(1U&XR zRc1lY0x#eiY*)fTW+uG7#I~+9BwgLJS;%^O)W(b|TojyZKLUlB}AaV7?XLT zs>4cOfDI-Oy>_zb7SeFyfPJJg&Izq^D0lCYUL=>RfKi%k$P!ec8VKzkwyer^+Cz}K zurZUYM41l+K={k=_mR6z2ZiaUo<=1Di5htH4-xB1xlr|86VODKWI#H-N#9TM^dBUz(T7)7K+*HnPaBJouEN!qp%Z{ z9ESk_YCx_*HG7nAT9k*$dOLTjYLPp&Z!p|~*gq0BL3eGm^hX-0RNAakgwgd&cMs}_ zMtknZCvw`nH0O?gt6n1|5*8o7Yyvt7&u>Rg0+h9aPMalef#-*dH-v9}0~r2=m7imv z!Nlj5R#aS-eRMo)1_A1tY{V9x@lDSljN&Z&`2hiVN?(_u^6FiJ;;|8MUw4#^+M|Yr zjg#jyGLn;&i5kdQpkg!pUB*tu$gtoe?ada zK~l6Z!l8))#Uxm*9i5IZ_}Ko93nV`hBo6<~$*CsD!v=jV8$#Lz(N1d{BF2$pUQ-d5 zc>EoIZ#uS~B}FcPY!GW>?&e$i*Ud1xlt5*Ty&Yhj90R<_?(5H`22g@7y^?WIQeDKk zA=|9m3b7nG&Hr>HCB1<_iGbggDMP;K!zhyHDC+y=7gO*w8y=oOU3=HQjWoG;7Va&J z2K==o4a4>2U4vWJk)P;ka8)gt>m0;b3zNHI^^m5klwxtERYWY>$#=7N`a7gls^x5dawuNb0`3P+Ga4?Gw-gN=*phEru?1|kj*#jRI8 z5$&Fw=;gCY)qWzI4RG`WChQ4!?ur?ojK$6AM$Sx?@E0go2lx*rH|l`2E8uK^4r}pU z-wOurfu8d2v==?KHn!8@?$Tm=cURhxHA4uJn4El{PShDq)rAp?HzgGIiyT2@7?EIVpeKb5lc55WA&FhR zBFsJ>Q6O{cVK=>fzUlT25%CiB?fskSDt&4F5=q^mQ5}x! zq2z@e9@4h`%U1i`Zu;)9Q16`)M^r_|CpB zNTuFBD*Ui4$*=iz=UhD)H7eoM8WFI+d@v&A9n!RzFwg$sM6y zVq);-Y62-aHUf>>4+?eLknJN6BwAk|g>6dEqFN(7Y%C_(UZ?&`3hS~=k_cJx_D$MU zPX3{iLC?e24WoZ+)O(KNI^30<*HZ-Ib5}G3jRY=-0_Qd53xdEI$Eg-|t$ZZ{ibfg@ zFes@kK@u-JlYugjLVhVhK`0C=c%*2Ux;n0FzXKeHS1Td!u+D%MaHC<#_H~Q54^>Kd zHvsHfg8~@ZukO~LSg-!B5N}(sxH5gNegP;sxUIyiK5!HmQILcZ=h9-}Tw74!%~o0W zE*##=~u+22ZRu+Bf>Kz{Ta1UZ{h@{LAxKjzk-m;8!mlO61Q=Zpt zmNcEVY*;cwskj&BZrtSl1L_q`hB`ckT+U~LhJys?MvLbASa-sGV-5@=>uVeK8}nz< zP)dpQsw08dzf9H3Wgv9iyo}SMwUG)Z%*DB9(rY6~)^U_dKER~M^+NfwNfpxIjp;Sa zh9jryyNC~qfK_g18{L+KMp3 z$Hoa3RSQ3LBHGB3&$$HDw2EDTFG+HjvO8*Bp=|Nhux4DLM@g}HSA$(l^=9sm9}IPx zq~T9$Kc&nNe@mEMN}7s?^8k0!AGNhF|1!|ihlP3GBkKuozRs=m{fkZy4I}^026Pz{ z=_f)fGr74LwYtKdN}z5WYTXB)_H)co*C~sMqu4Z}frf>5+3$%;=+A~L%p28uwL0Jc z9NueFrqm|Ek16kct_Z40!)ZOpA(8}o^dHreWxoIIDz$Sp`t`kcWOs`BoHBWS9&{CK zkMB({`Dujy17#52Lub+@_e+-#i)|hpPT$YyqRBr*18J-;%g$Uz$crKBIGy;aoO}W~ zIe+q}?~CK!|5ck*ZJcI1!4bet%JUt(q*JT^2i%3vw(bmno>E>i4F|}F5oM9Rhf*y7 zSPy7~8@9YY4b_8XO+}di1RPyp-5Co25@Eo%3Xhktw6qmbGoix!+6H4acOoJtCTL!! zd(aK~k3-Uo0vxW%KE3u|k%s(Ep7)Z7P*uy0i`#fV)C?4TAODI9z)GxxxP*S7SKph9 ziV?bd>vO-fcIU#ZTW2(YhC;+ScyjcuDfVF<>X1N@wrL{@18p>a;k@xwpiYEshXs3~ z9BI%z0d}3%4o;bKWN$C00ON$?J~IGvdSt$d>76BU1o@Pij{vu_>yU!`nEBMPYp0Ci zFe(Yg`G&jA@kRr1Ru5+;;Ujkd3N80nfYYd`%e>-mbtfwKb3&tlw|O1_SswoP#MDC~ za3R(h9&o`g;y(3^tpVu!$)6k`;6m@#>aFm#OA2AB=>yemKmrkSf*2k=dIzrOO@UzDM8gZI$3RNOM% zbXfgTJcbN4f3moI8-DP+dTb|PK0*x`%+1X)a>Q=me`GwkjJ#M!ya9eWW8{>ge?>Jl zr2xM4-gJy0Jn~XBHX?2+pkZMsKhv7MV&~VoEkA0EN}+bUB{Q~PQ67cU6Nx$Vt#zLY z{YPZ>B89mx_t8ey-!AqikvX~R>1n(>FSa4S?TR~mDJtaKp>NgdiVyM7IuFV4er2dAg8;gV$W&03;1Bm2Xxl^xv zD2e)=z$7*BM$^%cBwoUA_u6}V9R|uG0qu^Y*o z!1cY&lxS_ef|Ls^su59f?#cqXZ*MF+Y>PX1*`ghV0h9?ik13t@g0oTcwMliEjYa%Ntsllxh^d2HvsP8@c-z3`7XIX~3{d7EgZ8Duf|CUm9MR&InsnsrEPwjYR`DXLHC*d8>XYb?pcFo7Bcc35uD zYs%Qmyd+uQ{KCRlB_$R6f`ZJB))Tu-lnOAUoHldo4>@3Dl3Bi04O$VDxx@K-g9m-8|FK z;RYs_J8zrv+M_+{8k3k4<0M*<3(HGbO%+U9GKfTed=Xs_v**iX0S9Daa-TXpa03hB zX4DA4V=zT`ahPUwToS!@VMJZ{KuuB64`jZwep;;3@AQ-OG~=06f-k+J^&SGccy>oA zy*<(W1F@yiI5OvG6^7Ok$$|KoabLj8zl_4Qa4#&PtDcdcIwcV*53O)z7|kcuL)WP& zG5{2L?JGXo5>Ntwv2*w71U^;$i7+Yv&oPw`08ITwOAYB*fvF8Dvuf);d8Q|8j&gMg z(IzyPZ(#ajcjp7n>fsx$zQy{Ym^fGsMZ`Ii4YRa1-C-DLuw?lG!vT{ne zA|`~wgkZ$ODL0DQufI5h%2My0{jMyj>tDWTD4`NyNR$m)j}LC((L6nNU|caw`2nVP zaIyDkKNUF)Up^t~04Jp{Z4%cfpg>NqYU1Ij9cZ&&B@h=VsSf?ak%UKP_Ii1iW29zK zuRY9rMP8r}4H#EpGZL_yMuzbEvP=^t5ykb+=)D)H zt z7`jP*oZUH{cmaGc49N7po{25{K0mS#1{LKP!xb}h*43#FiL5s>Vt@f3m|pj%oci)O zA%u`4_(%A4BU)GxvP@vn71k$*nl6;4(hX`6vD znb%S7w$jwZb^Rj{J>Iz-e9Rx+bKopdCpvXI4h!r@I`|)~)8S@81h&+Ns@-G*Y z4$}zevUF~xb!?HwX-=lyDO~VGM(nE2-&H6km%sGIQJJO8>;MB4F_|*lx*0N?ZmA*^ z(}$L$%HGcBM>|5}9u-A)*m0qICNj@`3L13(J-~qho^{?+uh8~iIWiORK@eK-O<7SD zXevF~W3Ee4tJQp7YFsFR<@8Ni76WSCcar^t;GRT5_~7Zd+`y;j<4gzNAbgg3_u8YEVhSByHXX{8te%eec4ogcJ8azsGLu7x`W5E1I zhW=ZF^^|f5tOPT^&Lm`=-#%T>$>L6uVG^Q{+ik%OEU&~Bl)ms9bf8ssA3 zpX&K?EmtthJt^D(&2nO9CW z6pL2K6H4BQc(v3qC-wyKI=M3IvHI4u4-y|RwRF1+d*;T+BF@6vhT21!)GVfkDA=29AdW0-c_0@xasX?I4dGo^R1a zzNo3h3KD1Xb5)CJqw_Q$;*d!D3JO6hmJb`@DY8^RNQi^H9}T&gS1aN3%^unIc9vg; zd)lao3j6d&1oPFXJQXL%HF^`Ml>i3Ng5|*Wwy`AS9wcrH8fb^hm%Y`^^S>GTQghjg zhY7(Vp)Q(JmRL=bY6arqUM-HNOgK)^jU}Y=QdsXWkDW~E%GUEnJQCg%<%r+QC5MY) zP1;sItHI;BOmDB1Os?ACGmUq-yNAes>Jsq{Q22}tndK9Zb&X<6jACS&S>G;+7#tP! zPbgxTSe@iuw|i2obgAAg+$Uk0dO70sc<1u7ukUK z#UGOsn1h3ZUBFGkMym@1_|~`{Yb7QnT`gtR&)Iw$5+{O2!r&EWXUBN1(U&A<-CU4} zN_-S8=na^`mbJbdfWk;%nHe;Ey1gOgR28y_p7#l=xu-wGdmCb1$~5T6)0s0OtGomLBP8^1U^ zb1*l+d;`p>or~Y`qmse!Mn#8*JDPtAb6%@4LI?;9JexO);pKeAALoY$GDPZgZq^Cn zFuOxzVt$72SV({Ek3tNos`5s_xGNv&P-4z(R87j89VWpwn4WP)6MQ*i{*Ser(Vp`w zrCHAh7UGV{+85|Z#q8oUxnq^Ks%l*8$uEoIvh@q)`7JuZBO(db7Xd1(y!`x-jj`al z@9v~RZ4U>Pt-1Tt;}==9*mx|meF5b-#>TRuqVBO9t8U1oNKEYSzvs2zy;)>=eu0^{ ze{dw&iePXaYn1|mBQR@*%0f0(>huh815 zuJ#3L$mxd&ad4dV^-Dar%?n6c@iziU zjZb>&8fWI_%0kcL;A& z@n{mB+rLc?TlOI4v~lxodeZg-aKa=s{0f#=dw$7eQqucCMKr( zp2ySeo*JbGn9D|2y-oz7o>{YLnveG&vgOTD!XaN&RO8x(xdj%4!>|V~NsId3yYYkE z9l5glseE=RV5|Xw900qAR~aglvjv4MaL~-Xeehrq<^s=K@vyPO=@YO|KPW(`crBn(R}D< z*E`|sQ|42Z_a^1S48DG)xU;+apg)}zOiT?~P zgPdK|Do^t(h-k%#sWB_7g$uOVW;+rMB1b<3_uiV-Ja-YgYz|#Y&SpwXT4crMaQLROx~M6O*dH?kIZYL{!)_Qz429M#&b3AyyGEQtn% zpE5BpIGTU;I?VrkFMJOp^=*23I-J}M@5^&HM{$#C;P>yY?M0+`TPn_IuisyH0!kMe zu-DM@YvVz{N!3vFu#Y+vEL()WGj621H_Y0v}~OA;*w`E)+K*Z8vH{mW;P zB=`s=EAqdSg8fQV?ZDq=fa=MX5;>t~GHd*ogxU~8z8PX$m9*mHr6n8*?4 z&;lVj`L_>(d@{O?1O36>0|TGurbT2Xt`}$|i)(9Tb~X}Kz_JV;QNu;Tcbv@YvoBUJ ztmZ2F0N2C>`*m1or}II)T!2P=#Xp}Di{EfBfZ93)7@-YVI`P_&a9JjfcFO=012#Qi zeqFZp0|u#y0}PPds}8tInQwW03o5ZmsR4C$qCp|>A6LDn>S*4mg;eU64Rq+sm#ydS zes`4|rcOHs!{5fN@4Fjf2Cq|p;S1^^D|(IH2GPm2Z;S=+X?`rJM}&tf7Zo=wg2W|2 zs|zSBq%G5hzC<3q(BSZW5E;5R;Y%9NPEW~Bpi)F_Fr%U=DIF>D`Sbe3JL{ARVat-| z3@_M_m<%zcGmoU0goC(0PV8bu-fi=D@;I&ADT&x4PqMJ4q9}`0JSI#YfedOs)?8Ap zoIVfk+UaGkK)4Ea5aiV{%+0*VX^Bx%1}Rt|4IOnrx-UO~6*V14#6{o}AFeGlHg-ZvOU!(xp${DH3Ed8Z9q(B*V>1a<);6p4h}2 z>p3dQr)|5h@{}BMcwU;PjPCmI$|%M{Y>^S|1;hqH`7sDVHmnlB=t$-i1u@II@m{l?4a&2+VVXHIiMpV7X|?(g52~ zowA~Fss6Ueut7c6RDUtFCaI@Z`|?wg2HRf}nwm6~>a%S2gD}zUt%}ZkNUcskbH<<{k@^hlGd0(u22-{_1j6&PKL~Xf z3q>#)A`wrL5rUTVWeFV~pw{9tWyc;_sO=u4_zIIHR61zK0x(jC9bW%zb=ur9K}g6? zAeGs4estT@=);usgZm2|bH{du)5VfWy&Oh=;YMU-lu!8UJCYo2V6UsjrhW&uEYgzj zs0N656b$m~3^Tgivt2I)=BZG{k_5wnD=f!>5n<(}Ygs3wd;RUTa?RHT6qiLpl0PSl z5oDV)T-*)oI=5Wb3u!U>z7@hQa#XewHNP{UM^C1Y*K{yoFubP)|F|1VP8h8t4EvlY zNNB+kAInNBuEw+(w)fbP@IK=_W_u&CF@xU?cXK#NYjB88ju=cui}u@ZsfA&w*S~{j z8ntm9i{TqdfEnFcl~ENCL7iPh9aHouFU)}A;^MN^%ItANzsJL(Ut;1(9rXbNM4tOQ z@_;YLvZn)=>OXA|t-HU!f8(@DO~bc0CM9nE_M4gA$q<*PhX=0fUxrUUA5(|N=_wNn zNx@5V{MnKEKflWl{auIVX>;_~=%S04q5}7_4K1d7_wvR6((oeSixe~r+{PS8J~)u= zz0-LgZG>8<94`NoH$sL6dgB@(Q}Mu(?7&x$j7(8#lP1smx;!L~%PwA;?Bp-zv9e2X z%Uxl(>a)+0AuxCW+S(PKXs!uqdOp-`CYB^<=j%WtQp-Gk-g#2zd5c;T;F&0NgEI*j z&|-?Q*;moM)!#DgxjE}{s&7cpNSHqU%}R)E%;fY2p~8o~N%`?FkYfF`p{bEs={v?M z0int&{cote+W^Hkg}|&W%Dj3rI$B;;b=qL-`7y6@#>&$6$6@R%oqOVdJQay1k~C-= zg84y@Yt<8 literal 0 HcmV?d00001 From 6b0d8e3fceb93016cdd29023f893698ff10c07f6 Mon Sep 17 00:00:00 2001 From: Yu Chen Date: Thu, 14 Jul 2022 09:37:06 +0800 Subject: [PATCH 08/15] support rust-analyzer for board_qemu features --- .vscode/settings.json | 7 +++++-- easy-fs-fuse/Cargo.toml | 6 +++++- easy-fs/Cargo.toml | 4 ++++ user/Cargo.toml | 4 ++++ 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 11de1111..bf81ab53 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -6,5 +6,8 @@ "rust.all_targets": false, // For Rust Analyzer plugin users: "rust-analyzer.cargo.target": "riscv64gc-unknown-none-elf", - "rust-analyzer.checkOnSave.allTargets": false -} + "rust-analyzer.checkOnSave.allTargets": false, + "rust-analyzer.cargo.features": [ + "board_qemu" + ] +} \ No newline at end of file diff --git a/easy-fs-fuse/Cargo.toml b/easy-fs-fuse/Cargo.toml index ee0ef971..0527e9b8 100644 --- a/easy-fs-fuse/Cargo.toml +++ b/easy-fs-fuse/Cargo.toml @@ -9,4 +9,8 @@ edition = "2018" [dependencies] clap = "2.33.3" easy-fs = { path = "../easy-fs" } -rand = "0.8.0" \ No newline at end of file +rand = "0.8.0" + +[features] +board_qemu = [] +board_k210 = [] \ No newline at end of file diff --git a/easy-fs/Cargo.toml b/easy-fs/Cargo.toml index c9690776..7a2f38ed 100644 --- a/easy-fs/Cargo.toml +++ b/easy-fs/Cargo.toml @@ -12,3 +12,7 @@ lazy_static = { version = "1.4.0", features = ["spin_no_std"] } [profile.release] debug = true + +[features] +board_qemu = [] +board_k210 = [] \ No newline at end of file diff --git a/user/Cargo.toml b/user/Cargo.toml index 542a624a..18634c3c 100644 --- a/user/Cargo.toml +++ b/user/Cargo.toml @@ -13,3 +13,7 @@ riscv = { git = "https://github.com/rcore-os/riscv", features = ["inline-asm"] } [profile.release] debug = true + +[features] +board_qemu = [] +board_k210 = [] \ No newline at end of file From da13d0932cdf05b1e8520b9413cbd75c917a8cdd Mon Sep 17 00:00:00 2001 From: Yu Chen Date: Mon, 18 Jul 2022 11:23:20 +0800 Subject: [PATCH 09/15] update Dockerfile: ubuntu 18.04-->20.04, QEMU-5.0-->7.0 --- Dockerfile | 117 ++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 81 insertions(+), 36 deletions(-) diff --git a/Dockerfile b/Dockerfile index ac784bc2..284db4cf 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,40 +1,85 @@ -FROM ubuntu:18.04 -LABEL maintainer="dinghao188" \ - version="1.1" \ - description="ubuntu 18.04 with tools for tsinghua's rCore-Tutorial-V3" +# syntax=docker/dockerfile:1 +# This Dockerfile is adapted from https://github.com/LearningOS/rCore-Tutorial-v3/blob/main/Dockerfile +# with the following major updates: +# - ubuntu 18.04 -> 20.04 +# - qemu 5.0.0 -> 7.0.0 +# - Extensive comments linking to relevant documentation +FROM ubuntu:20.04 -#install some deps -RUN set -x \ - && apt-get update \ - && apt-get install -y curl wget autoconf automake autotools-dev curl libmpc-dev libmpfr-dev libgmp-dev \ - gawk build-essential bison flex texinfo gperf libtool patchutils bc xz-utils \ - zlib1g-dev libexpat-dev pkg-config libglib2.0-dev libpixman-1-dev git tmux python3 +ARG QEMU_VERSION=7.0.0 +ARG HOME=/root -#install rust and qemu -RUN set -x; \ - RUSTUP='/root/rustup.sh' \ - && cd $HOME \ - #install rust - && curl https://sh.rustup.rs -sSf > $RUSTUP && chmod +x $RUSTUP \ - && $RUSTUP -y --default-toolchain nightly --profile minimal \ +# 0. Install general tools +ARG DEBIAN_FRONTEND=noninteractive +RUN apt-get update && \ + apt-get install -y \ + curl \ + git \ + python3 \ + wget - #compile qemu - && wget https://ftp.osuosl.org/pub/blfs/conglomeration/qemu/qemu-5.0.0.tar.xz \ - && tar xvJf qemu-5.0.0.tar.xz \ - && cd qemu-5.0.0 \ - && ./configure --target-list=riscv64-softmmu,riscv64-linux-user \ - && make -j$(nproc) install \ - && cd $HOME && rm -rf qemu-5.0.0 qemu-5.0.0.tar.xz +# 1. Set up QEMU RISC-V +# - https://learningos.github.io/rust-based-os-comp2022/0setup-devel-env.html#qemu +# - https://www.qemu.org/download/ +# - https://wiki.qemu.org/Documentation/Platforms/RISCV +# - https://risc-v-getting-started-guide.readthedocs.io/en/latest/linux-qemu.html -#for chinese network -RUN set -x; \ - APT_CONF='/etc/apt/sources.list'; \ - CARGO_CONF='/root/.cargo/config'; \ - BASHRC='/root/.bashrc' \ - && echo 'export RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-static' >> $BASHRC \ - && echo 'export RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup' >> $BASHRC \ - && touch $CARGO_CONF \ - && echo '[source.crates-io]' > $CARGO_CONF \ - && echo "replace-with = 'ustc'" >> $CARGO_CONF \ - && echo '[source.ustc]' >> $CARGO_CONF \ - && echo 'registry = "git://mirrors.ustc.edu.cn/crates.io-index"' >> $CARGO_CONF \ No newline at end of file +# 1.1. Download source +WORKDIR ${HOME} +RUN wget https://download.qemu.org/qemu-${QEMU_VERSION}.tar.xz && \ + tar xvJf qemu-${QEMU_VERSION}.tar.xz + +# 1.2. Install dependencies +# - https://risc-v-getting-started-guide.readthedocs.io/en/latest/linux-qemu.html#prerequisites +RUN apt-get install -y \ + autoconf automake autotools-dev curl libmpc-dev libmpfr-dev libgmp-dev \ + gawk build-essential bison flex texinfo gperf libtool patchutils bc \ + zlib1g-dev libexpat-dev git \ + ninja-build pkg-config libglib2.0-dev libpixman-1-dev libsdl2-dev + +# 1.3. Build and install from source +WORKDIR ${HOME}/qemu-${QEMU_VERSION} +RUN ./configure --target-list=riscv64-softmmu,riscv64-linux-user && \ + make -j$(nproc) && \ + make install + +# 1.4. Clean up +WORKDIR ${HOME} +RUN rm -rf qemu-${QEMU_VERSION} qemu-${QEMU_VERSION}.tar.xz + +# 1.5. Sanity checking +RUN qemu-system-riscv64 --version && \ + qemu-riscv64 --version + +# 2. Set up Rust +# - https://learningos.github.io/rust-based-os-comp2022/0setup-devel-env.html#qemu +# - https://www.rust-lang.org/tools/install +# - https://github.com/rust-lang/docker-rust/blob/master/Dockerfile-debian.template + +# 2.1. Install +ENV RUSTUP_HOME=/usr/local/rustup \ + CARGO_HOME=/usr/local/cargo \ + PATH=/usr/local/cargo/bin:$PATH \ + RUST_VERSION=nightly +RUN set -eux; \ + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs -o rustup-init; \ + chmod +x rustup-init; \ + ./rustup-init -y --no-modify-path --profile minimal --default-toolchain $RUST_VERSION; \ + rm rustup-init; \ + chmod -R a+w $RUSTUP_HOME $CARGO_HOME; + +# 2.2. Sanity checking +RUN rustup --version && \ + cargo --version && \ + rustc --version + +# 3. Build env for labs +# See os1/Makefile `env:` for example. +# This avoids having to wait for these steps each time using a new container. +RUN rustup target add riscv64gc-unknown-none-elf && \ + cargo install cargo-binutils --vers ~0.2 && \ + rustup component add rust-src && \ + rustup component add llvm-tools-preview + +# Ready to go +WORKDIR ${HOME} From a2f3dc34f71456cc8690bda9be011ac646ea406a Mon Sep 17 00:00:00 2001 From: Yu Chen Date: Mon, 25 Jul 2022 11:47:07 +0800 Subject: [PATCH 10/15] udpate rust-toolchain: nightly-2022-07-20, cargo-utils 0.36 --- .github/workflows/doc-and-test.yml | 4 ++-- os/Makefile | 2 +- rust-toolchain | 1 - rust-toolchain.toml | 4 ++++ 4 files changed, 7 insertions(+), 4 deletions(-) delete mode 100644 rust-toolchain create mode 100644 rust-toolchain.toml diff --git a/.github/workflows/doc-and-test.yml b/.github/workflows/doc-and-test.yml index 98fdc666..1e6f0b1c 100644 --- a/.github/workflows/doc-and-test.yml +++ b/.github/workflows/doc-and-test.yml @@ -13,7 +13,7 @@ jobs: - uses: actions-rs/toolchain@v1 with: profile: minimal - toolchain: nightly-2022-04-11 + toolchain: nightly-2022-07-20 components: rust-src, llvm-tools-preview target: riscv64gc-unknown-none-elf - name: Build doc @@ -32,7 +32,7 @@ jobs: - uses: actions-rs/toolchain@v1 with: profile: minimal - toolchain: nightly-2022-04-11 + toolchain: nightly-2022-07-20 components: rust-src, llvm-tools-preview target: riscv64gc-unknown-none-elf - uses: actions-rs/install@v0.1 diff --git a/os/Makefile b/os/Makefile index b38c23a6..0658a5e0 100644 --- a/os/Makefile +++ b/os/Makefile @@ -51,7 +51,7 @@ endif env: (rustup target list | grep "riscv64gc-unknown-none-elf (installed)") || rustup target add $(TARGET) - cargo install cargo-binutils --vers =0.3.3 + cargo install cargo-binutils rustup component add rust-src rustup component add llvm-tools-preview diff --git a/rust-toolchain b/rust-toolchain deleted file mode 100644 index abcacd9b..00000000 --- a/rust-toolchain +++ /dev/null @@ -1 +0,0 @@ -nightly-2022-04-11 diff --git a/rust-toolchain.toml b/rust-toolchain.toml new file mode 100644 index 00000000..c56a59e0 --- /dev/null +++ b/rust-toolchain.toml @@ -0,0 +1,4 @@ +[toolchain] +profile = "minimal" +channel = "nightly-2022-07-20" +components = ["rust-src", "llvm-tools-preview", "rustfmt", "clippy"] From 53289a6d75486574699c283ab2207c1a1094f45b Mon Sep 17 00:00:00 2001 From: Yifan Wu Date: Fri, 2 Sep 2022 02:58:26 -0700 Subject: [PATCH 11/15] Merged PR #87 --- os/src/drivers/block/virtio_blk.rs | 51 ++--------------------------- os/src/drivers/bus/mod.rs | 1 + os/src/drivers/bus/virtio.rs | 52 ++++++++++++++++++++++++++++++ os/src/drivers/gpu/mod.rs | 5 +-- os/src/drivers/input/mod.rs | 5 +-- os/src/drivers/mod.rs | 4 +++ 6 files changed, 66 insertions(+), 52 deletions(-) create mode 100644 os/src/drivers/bus/mod.rs create mode 100644 os/src/drivers/bus/virtio.rs diff --git a/os/src/drivers/block/virtio_blk.rs b/os/src/drivers/block/virtio_blk.rs index ff460d75..2d853e0c 100644 --- a/os/src/drivers/block/virtio_blk.rs +++ b/os/src/drivers/block/virtio_blk.rs @@ -1,29 +1,19 @@ use super::BlockDevice; -use crate::mm::{ - frame_alloc, frame_dealloc, kernel_token, FrameTracker, PageTable, PhysAddr, PhysPageNum, - StepByOne, VirtAddr, -}; use crate::sync::{Condvar, UPIntrFreeCell}; use crate::task::schedule; use crate::DEV_NON_BLOCKING_ACCESS; use alloc::collections::BTreeMap; -use alloc::vec::Vec; -use lazy_static::*; use virtio_drivers::{BlkResp, RespStatus, VirtIOBlk, VirtIOHeader}; +use crate::drivers::bus::virtio::VirtioHal; #[allow(unused)] const VIRTIO0: usize = 0x10008000; pub struct VirtIOBlock { - virtio_blk: UPIntrFreeCell>, + virtio_blk: UPIntrFreeCell>, condvars: BTreeMap, } -lazy_static! { - static ref QUEUE_FRAMES: UPIntrFreeCell> = - unsafe { UPIntrFreeCell::new(Vec::new()) }; -} - impl BlockDevice for VirtIOBlock { fn read_block(&self, block_id: usize, buf: &mut [u8]) { let nb = *DEV_NON_BLOCKING_ACCESS.exclusive_access(); @@ -79,7 +69,7 @@ impl BlockDevice for VirtIOBlock { impl VirtIOBlock { pub fn new() -> Self { let virtio_blk = unsafe { - UPIntrFreeCell::new(VirtIOBlk::new(&mut *(VIRTIO0 as *mut VirtIOHeader)).unwrap()) + UPIntrFreeCell::new(VirtIOBlk::::new(&mut *(VIRTIO0 as *mut VirtIOHeader)).unwrap()) }; let mut condvars = BTreeMap::new(); let channels = virtio_blk.exclusive_access().virt_queue_size(); @@ -94,38 +84,3 @@ impl VirtIOBlock { } } -#[no_mangle] -pub extern "C" fn virtio_dma_alloc(pages: usize) -> PhysAddr { - let mut ppn_base = PhysPageNum(0); - for i in 0..pages { - let frame = frame_alloc().unwrap(); - if i == 0 { - ppn_base = frame.ppn; - } - assert_eq!(frame.ppn.0, ppn_base.0 + i); - QUEUE_FRAMES.exclusive_access().push(frame); - } - ppn_base.into() -} - -#[no_mangle] -pub extern "C" fn virtio_dma_dealloc(pa: PhysAddr, pages: usize) -> i32 { - let mut ppn_base: PhysPageNum = pa.into(); - for _ in 0..pages { - frame_dealloc(ppn_base); - ppn_base.step(); - } - 0 -} - -#[no_mangle] -pub extern "C" fn virtio_phys_to_virt(paddr: PhysAddr) -> VirtAddr { - VirtAddr(paddr.0) -} - -#[no_mangle] -pub extern "C" fn virtio_virt_to_phys(vaddr: VirtAddr) -> PhysAddr { - PageTable::from_token(kernel_token()) - .translate_va(vaddr) - .unwrap() -} diff --git a/os/src/drivers/bus/mod.rs b/os/src/drivers/bus/mod.rs new file mode 100644 index 00000000..ab8f38fd --- /dev/null +++ b/os/src/drivers/bus/mod.rs @@ -0,0 +1 @@ +pub mod virtio; \ No newline at end of file diff --git a/os/src/drivers/bus/virtio.rs b/os/src/drivers/bus/virtio.rs new file mode 100644 index 00000000..fe7bc127 --- /dev/null +++ b/os/src/drivers/bus/virtio.rs @@ -0,0 +1,52 @@ +use alloc::vec::Vec; +use crate::mm::{ + frame_alloc, frame_dealloc, kernel_token, FrameTracker, PageTable, PhysAddr, PhysPageNum, + StepByOne, VirtAddr, +}; +use crate::sync::UPIntrFreeCell; +use lazy_static::*; +use virtio_drivers::Hal; + +lazy_static! { + static ref QUEUE_FRAMES: UPIntrFreeCell> = + unsafe { UPIntrFreeCell::new(Vec::new()) }; +} + +pub struct VirtioHal; + +impl Hal for VirtioHal { + fn dma_alloc(pages: usize) -> usize { + let mut ppn_base = PhysPageNum(0); + for i in 0..pages { + let frame = frame_alloc().unwrap(); + if i == 0 { + ppn_base = frame.ppn; + } + assert_eq!(frame.ppn.0, ppn_base.0 + i); + QUEUE_FRAMES.exclusive_access().push(frame); + } + let pa: PhysAddr = ppn_base.into(); + pa.0 + } + + fn dma_dealloc(pa: usize, pages: usize) -> i32 { + let pa = PhysAddr::from(pa); + let mut ppn_base: PhysPageNum = pa.into(); + for _ in 0..pages { + frame_dealloc(ppn_base); + ppn_base.step(); + } + 0 + } + + fn phys_to_virt(addr: usize) -> usize { + addr + } + + fn virt_to_phys(vaddr: usize) -> usize { + PageTable::from_token(kernel_token()) + .translate_va(VirtAddr::from(vaddr)) + .unwrap() + .0 + } +} \ No newline at end of file diff --git a/os/src/drivers/gpu/mod.rs b/os/src/drivers/gpu/mod.rs index 2dc80d48..29028213 100644 --- a/os/src/drivers/gpu/mod.rs +++ b/os/src/drivers/gpu/mod.rs @@ -4,6 +4,7 @@ use core::any::Any; use embedded_graphics::pixelcolor::Rgb888; use tinybmp::Bmp; use virtio_drivers::{VirtIOGpu, VirtIOHeader}; +use crate::drivers::bus::virtio::VirtioHal; const VIRTIO7: usize = 0x10007000; pub trait GPUDevice: Send + Sync + Any { fn update_cursor(&self); @@ -16,14 +17,14 @@ lazy_static::lazy_static!( ); pub struct VirtIOGPU { - gpu: UPIntrFreeCell>, + gpu: UPIntrFreeCell>, fb: &'static [u8], } static BMP_DATA: &[u8] = include_bytes!("../../assert/mouse.bmp"); impl VirtIOGPU { pub fn new() -> Self { unsafe { - let mut virtio = VirtIOGpu::new(&mut *(VIRTIO7 as *mut VirtIOHeader)).unwrap(); + let mut virtio = VirtIOGpu::::new(&mut *(VIRTIO7 as *mut VirtIOHeader)).unwrap(); let fbuffer = virtio.setup_framebuffer().unwrap(); let len = fbuffer.len(); diff --git a/os/src/drivers/input/mod.rs b/os/src/drivers/input/mod.rs index 0acb0345..1da66a6d 100644 --- a/os/src/drivers/input/mod.rs +++ b/os/src/drivers/input/mod.rs @@ -11,6 +11,7 @@ use embedded_graphics::{ }; use k210_hal::cache::Uncache; use virtio_drivers::{VirtIOHeader, VirtIOInput}; +use crate::drivers::bus::virtio::VirtioHal; use virtio_input_decoder::{Decoder, Key, KeyType}; use super::GPU_DEVICE; @@ -18,7 +19,7 @@ use super::GPU_DEVICE; const VIRTIO5: usize = 0x10005000; const VIRTIO6: usize = 0x10006000; -struct VirtIOINPUT(UPIntrFreeCell>); +struct VirtIOINPUT(UPIntrFreeCell>); pub trait INPUTDevice: Send + Sync + Any { fn handle_irq(&self); @@ -32,7 +33,7 @@ lazy_static::lazy_static!( impl VirtIOINPUT { pub fn new(addr: usize) -> Self { Self(unsafe { - UPIntrFreeCell::new(VirtIOInput::new(&mut *(addr as *mut VirtIOHeader)).unwrap()) + UPIntrFreeCell::new(VirtIOInput::::new(&mut *(addr as *mut VirtIOHeader)).unwrap()) }) } } diff --git a/os/src/drivers/mod.rs b/os/src/drivers/mod.rs index 4ecf8a9d..cdd37574 100644 --- a/os/src/drivers/mod.rs +++ b/os/src/drivers/mod.rs @@ -4,6 +4,8 @@ pub mod chardev; pub mod gpu; #[cfg(feature = "board_qemu")] pub mod input; +#[cfg(feature = "board_qemu")] +pub mod bus; pub mod plic; pub use block::BLOCK_DEVICE; #[cfg(feature = "board_qemu")] @@ -12,3 +14,5 @@ pub use chardev::UART; pub use gpu::*; #[cfg(feature = "board_qemu")] pub use input::*; +#[cfg(feature = "board_qemu")] +pub use bus::*; From c6b262fc868ddf6e46ef426e2a4db671325e9da5 Mon Sep 17 00:00:00 2001 From: Yifan Wu Date: Mon, 5 Sep 2022 02:33:59 -0700 Subject: [PATCH 12/15] Lock virtio-drivers version at 4ee80e5 --- os/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/os/Cargo.toml b/os/Cargo.toml index 4ebae8a4..915e5f92 100644 --- a/os/Cargo.toml +++ b/os/Cargo.toml @@ -13,7 +13,7 @@ buddy_system_allocator = "0.6" bitflags = "1.2.1" xmas-elf = "0.7.0" volatile = "0.3" -virtio-drivers = { git = "https://github.com/rcore-os/virtio-drivers" } +virtio-drivers = { git = "https://github.com/rcore-os/virtio-drivers", rev = "4ee80e5" } k210-pac = { git = "https://github.com/wyfcyx/k210-pac" } k210-hal = { git = "https://github.com/wyfcyx/k210-hal" } k210-soc = { git = "https://github.com/wyfcyx/k210-soc" } From ae75d3e6cf320b78002786d186883504a8b6fd9d Mon Sep 17 00:00:00 2001 From: Yifan Wu Date: Sat, 1 Oct 2022 22:21:18 +0800 Subject: [PATCH 13/15] Update Docker --- Makefile | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index a657cd92..bd267f46 100644 --- a/Makefile +++ b/Makefile @@ -1,10 +1,12 @@ -DOCKER_NAME ?= dinghao188/rcore-tutorial +DOCKER_NAME ?= rcore-tutorial-v3 .PHONY: docker build_docker - + docker: - docker run --rm -it --mount type=bind,source=$(shell pwd),destination=/mnt ${DOCKER_NAME} + docker run --rm -it -v ${PWD}:/mnt -w /mnt ${DOCKER_NAME} bash build_docker: docker build -t ${DOCKER_NAME} . + fmt: - cd easy-fs; cargo fmt; cd ../easy-fs-fuse cargo fmt; cd ../os ; cargo fmt; cd ../user; cargo fmt; cd .. \ No newline at end of file + cd easy-fs; cargo fmt; cd ../easy-fs-fuse cargo fmt; cd ../os ; cargo fmt; cd ../user; cargo fmt; cd .. + From d0daf8f4a468e6875df6442ca669f3db18df0cfa Mon Sep 17 00:00:00 2001 From: Yifan Wu Date: Sun, 9 Oct 2022 05:41:44 +0800 Subject: [PATCH 14/15] Bump rustsbi-qemu to 701e891 --- bootloader/rustsbi-qemu.bin | Bin 43568 -> 38920 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/bootloader/rustsbi-qemu.bin b/bootloader/rustsbi-qemu.bin index 9822f54e58daad6d5fa47ac4b9b51061dbad1a4a..022c7f27b18efadbfa80301fb467421c52f7cd5e 100755 GIT binary patch literal 38920 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 literal 43568 zcmdS?e_Rwt(g2M2%rLVH0xk~Af@p%0McqdcT>+KE2aU5tqF&+!yxeoif#YH@q9QED z5^zKt z3w7xPx?bsvtI+k;Ds_WWPQk7ls#V#0HNXW+yZ77s)SP`#`l8G2 zLjjzwZI2M?)^$|^E#Pxak?NGH@-f`Puw8_EGD1ZE`x0e3voZ(rSS(qZoj^@d_**M| ziuB}88AK>6fLO$|`*%<24eFaZc;8S}YfZbo^JMqw-uk|G2HzW6(PnTbcCGDMcQd*F zmv^2XzS`E|zTS1C=bM`Y{omdh8NM|WEy@ZUT}C;xlx zZ*TlIAT>W1A^dMwCet^wH=;YSb8Wl5n4$#~S!^vRMw3w#Ss5?(=v3C!KiSVoujIW2 zWiiJyb-q%|je{C!Im>hm*Kv|;TK@sx{U44VDqjTn-pO%6^++(Bsi;T!L3uCDpG5~c zcAiIhUpo>mqnrEQ-uL>f{@|Y5aY+rxVLFdO3uq+OiP(@%D%u-`pE?1Ys3>nPyx;^X zuEm_tD_!>q10got2bAD7fm7RLobK`xMy59cpJW{=^Vu))nReSsr;rk-@y!V3ty(Ko zZ6~v@Zd{RGmCk`o=43J>Grx@(Nc?8)jdj%{5AT2p^6(y$hmYU`^?22(cin4O`x->9yV~`6+@|Wi`|#2u2@ahT)>65@s^Y z?`3-gmO%k)h05*tJLLo1KjB5is2^R zB9xSAaaXlP3@6@M+b@nhN*sCAxTJ00OpvrM@Tc%d+WCn@)6n9Pbo^UCl=S~*2Pjx(yNnBSgy(uARtN!n8RYfgZEwh9 zckc;uZ0t@KzPVRVw7NV!@%^z|eL-qz&7a4mmwQ4QyC+lpH(t+9+-2XD4$}6^wA`q= zUej^$>e`WY-|F_j*!2gAdinT|OEmY(F^T#LQ$V8LbwN@uRiBaSiD>jlH0;>_e)qRC2XJt#nPiFwPXYHc*&X)QcaZA^xN-5 zl5Z6gRt(ezyc#0ak?TJf_pkptc|^xo$i0T_{$srsDs)n(_ozF6Axe$m)IMEVXdY6I9Sd@)VW?OBBJO!(p?X72D47_SUpY*eo9c>?2o!WXM2 ztsc(Cc;E2F&3;>YvN7I2e6e%#mf`TIX4P^cKNq(=U2`PCx=e#yXrM1EGXCa_1YXkt zW9avz?6M#ff@ml9pdVnjPC4v16JP=SbcYu z5)r#bs0JlzKCL8{c2W&R#M1Wgx0K?_8=lLcbLCW_pu$=t9C`}ILC)>T{G{7tSpr`^ zpb`>79^v;R&nOpTl3p1P1uGK4ia`D!S50N;5VqsxFT&@o3C5d zWrP_3X)5cW6Rd`4kfLNY#8uX#GeK{`I%&Pkkn?MmfsUMy5dXUlk*1edJ7$!d=#v~ zHp1Sip<({f!UcP`mA*-w?6vpF?J3jsdUHBx-(Ka(R=eCX<4ez_6%hrwfg99L2C%RL5qV)BM&!@Tv^neA){^2~*LN7^jtFesB?d-!? zZgnt+MY$n+t0XtN-rf#!Lnk{y21YDN?!R@NAh&L^cQ1+@)D2aNBf?z(a)b7P+{Vgs zr|s=h8DX2J3|RPsH0LQr=PH$w+|K?d*w*qcBWo6lnrF7|j78p$nAY=y3iZ(h{+s?l zy`m20QlW|+JO^`YAv$z_EMh5`Tld`}goopPe~a)=I1_xEU^V_E`)dWsRw_xDYqLQn zw?8NNL)Qq$`A+1xeHnfaqSt2)PVK*?hZJHKAACc_Rwg06(v4XEB4mB;(kQ!gnK*mn zSQpGhdEUMPv~F!e{9y_?KDdS)w|Mxy6TN=yxnS2z)QJA}CPd7daXyq?209-&V>clo z;Y{Twl&@j`uJFuZg+DTmz7DkXw?PMdtv|mB>38l#5AB=(N@uX~HpUXO(np0y!WRb< z;SYXXDn!pX{Tn}&F&ke-F@MOXLv z5vq_BZA#aq%R@xMQdpJ2w%}ZQUm216Wu+z!`joM(w$i!s9w8+RMndx-fmg%y^_k7P z*GuK(G2PkhkH<6~o$P>fw4@l%bSunsyfg4iIHPVr`Rcr~`Lh_%P?tpw)qwiN{lUQ0 zp4$%7WfW?m(Qp!X6;nLQ@qP6^)^gCCWF6RD`N(Q=j#_h~(V@y1#43Sq&>#{XIa4_Z zGR(8ie}xXz=Uhg_b-m#>GLzuAJdx*jrC>? z-nF!dTy+3fpf_K^yB3qEH}kmgx3Ijx21YcB6s0A}huJvCCP5t=$LCD03g)_jf3_Y) zmYZooMQ~WJTKoGa=jY~erlkB_Qzqk{*;X@jaqv>#r@bxRUv%O%=STwIc5SAv684uW z_PO(;elLovgcr2+Ks!>ejMKD>tHk^VV6^Q#AadJ|-20A#mLCKe>H&91p+LLW^JR)@ zdD>V7%H@mQs$J{(gY;CnpT2IMmNomasF-rA7xdJ(AC9v9i%_TEXOciaNB9Klvs(}!(uedb>yc^ig1z$}*fZ7G=P-ffw0vO0R89Zr zC`)TYvQ$Y?v@z66$ju5|8Fe%<%jOfszVOkgw7*FCAnTM*RF-Nb{QIw{P}oPtLA_^i zedP?vUZ%;{wLUO6ouIE^E}f@gANd-z@!P5H+ZoU!L;|1J&HeHyAwv&&S(^R0M=zZx+;qh{YYG35h4SL z{jWcu2z2!Kp}a1Kvj7d3RF}N2Z3yn^7jfDnA0GnwojLFpI-`cwOwE2q%QMZMhAj%UzPEy)#TCz~~~v|8x#^!k@~snMQbS*;9Nrc4QlN)$C%P z@7Qd3b`{pp(!Bi7quf%@de;T(ortZOKRyQIJ3Uy#vhlpF9ax*!{6KEnCp~gAF1nZ8 z=tX1t7%1fDE)QVZLj@Y!)JpOk|63;tC*MG{LE24L*A}IQw9T)hy;9wGY@y9{i0)#W zjfgdZ)kVTO(%(-3tULy=w_L_p?J4tkS9)z|Gfm8B3vG7dGXA(sC@yarFXy2VP8~&l zG7arf4~-dJ2Z4r`fYOtt(m-iK>50@Z1rN1j00+p_xWgW5-p;+o1G`qE{0f4rO2HQ5 zl1yeunY!O}AXC@6a4@E?C}V&60ps3OUGKu~n9j)dN^!JlXZr|I9&g7JSGUiA{=<^1 ztbskZ#ZXbS0ZWPTBAf@(4m>|j9p}m82!lLZNO^sYkb2oLZ(Jvbokytn!m!%gz<=vR zM_`|1+PS1Qq)C8XAI#7stk=r{o0K%e_A&g9)+6oBzX*TAD6VK7ph7jH)2WRwn}v!g1RKjum#ZxXM!&OsQ)B$A2BQ7 z&y>Oo?fQr4B?8DeIHD8P%0AcdeEVjb@X$9}LC&LC>f;dm15Sss?PZP3Yl+s?JsjWOwFwR*GZK7<{rfzYkktl^oW5?%9z;QVJIw*{W+NJAH#Adv$#h zPMF~%Ym>9Jcmz!J7@jQF6;~d>9;pXb(ksVy$db2A^q-`(h&yELlTr(?PGX-F_#Fc4 zVyHTAggsiukEu6{(M-^3(tbSU?;tOsK$US2uZ)D7=EB2HAc2GZtVHo|IQ_uH^qJrr z98do%PCq^|{ecsxWIX+2oc`v-^oSFvY&`wXIQ_$k>9bFu^6~TwIQ_GU>ADl>;CT9Z zoZdb$eeMZ#WIWx;v-GsT+0Av{#O@^CTpdK!6(a|8DqbJ^2_EH?Ben%SwJ+eGj^t(} z?15QhDNyzN4of4iLokGgU4c2^U>YF*Wu%X3K~I(j+|WZ_dQZSb$^w!R^Aa7jA$;Zq z(4r2e9`d&Q3);sg(th9y*kk{iHb`xpcEknHhd)mH!-=$KUqR|0p$!rpr>(nyLVkjF z`$XDvub?9ahfp8ysILc^)T5-*dDr!@H=&DX^imd5UQjmz%<21e_6y{q~G1LJeN_Q!7m z21evK4-X9k2FBnxCt8ewQ8&)dJWLtJ**I78?!49@&woME=4pkZH%gpE@t_Hmsaar6 z`!fs61JV|j`?h`G_SCiFvld<7Y?ZEEJ~fHeb@~XpZfTcS{g$qGb}*c%h`LI9OE=`r z;obgRbh6vtE9nmB+sfdm;ILq6zn1HM+&!~hvk`Qe*YR&=4$-SFV($QaTMLf=Pfd5e zT*_EK8$|_Mz4Iuk9J;!oYpuL1)b{CyaH;X!f&=Gf$8v}LV|rU+J5XO)^}T%b8#tdt zvGsraoHF0dl8&vpEa})+T%wK*mVJZ2LP*wcWBzm5<1R`ux9FbQEvSwxN|Dx7&x)#j zRqBJ9dT~V+OQSVlhb4*o<7YL=cu!@>81JF5M-lq|c|>wYWV^hb9dU)sJc!R+>I>iAC!e-Vb$^FXTQJvr2pu6&&}u4yl2tId z`Pk?9Z3MU}myqu~4hoxNDXIR`EY5)KteWwn!73rz@#fh!JPeLW)C zFBE)Ed?>S6YPI2?``z_k;5}STR^HuU20r==4@h8T|rMe080YtT%q?s{{|Q zn39q#)u{anxDYX6X}V&0r2*RkYemU^IJ<4UFOrC{m1b&Pq%;z)+^y(A>wi-PUh zdr}Cg(@8wIKa(iAJEhTq4v(*S6FCXnG)`y2ny0Rl95Lu=b2-L-_SOUmOur|Xe; z)A~l<)b-bT+q0@|NdYH9w7> zD)oCoqeu2$lAQp)gKN31KOdJFH{N@pbyMW=^&adp#8KG##}!7Np;a5w^LI%U+y5qb zY!BK?I_(f?+SZQKEFZT$0_yx9*}ghED*`QLbC}*N6|*!;h2rpcW6mMVz+_XYkaozz zoJuOiY2JBRDs^0z7A=ish|%3KnI*A|5 zZP70|j@a@CP;$BB#Y6Gor(Q+jZ~lh(Y7f6>QVjL3FQT-5$m+cY#nDFMP?A7|f)%`` z#QNg5qx`RrBVNJLCDs_5w<~23cSHVpPh3yh*k7Nt$GZCCK`O7V$R@ zMOuA62K^s`=v6cN&Ds)_CR0Oqbe5AAKaS6@4w}dDg*8)`aIS+jHzjXe{21d>V>k`qD240(x=xDAk>C&v zTLAt9(+9W$<1zgXimL$_%4#rN5Aa#W6@cL;2@b7mr#P@`xoCye83BR>*2Y8vRx7BEunq8uX{A(eyLlvAR)CgD8$eq$C zIoskHW9Bn^(N}w16_dU?YL{dRG772tT#_lYlf`fZv~4?Xe+y~ky=hfk|8de4M7Q9v z7r@!iwzPY=s_C3*wEty=(SE7UG1f-`b)QM}K+d6cpGx%hWBCId1GH^e{+~#F1a*dB zI2rJw`~gk_I11N)N$MlWqrtER@S^+y#(e~EXx(3MAAL{$f0-cvHeD~x-FzGT4S{tG z9^YW0!rT}?wf1@b`sT!E?a%sb>G+Ldcg=2miY@7*{tnr0_!8?GSvSr_j@gF-ld)A3*_Rr_hkSZdfG_)t1XsRBz+)Ng0cktW`Yp0>hN zWn!6PBG1m}+x!MT}e6K1y zydfr`W;>JJvC)uTlg@0u`aC|9trR^^hIgzqQZ9rQQL^LCp7hM4W_dpo@y2v{9@YI( znn#v5)HaFBa=U~{JMEckrV|pz;1K7vWTpKEp^!|=P^EzPAl0ipp4A1ir73)6Z--OU z&irnvABDf4?8_f~6@kwxTI|>1ldV#U`?JV)T_@Q+H#o9SHz?t%TW8CosTJzkYuszf zF9%DQAifM=6fiS9DsN`^gJogii)YLTU$kIGc+~P4Eu&w2_tovIw>tiL{p%ao?&RQ; z#Y4pdzZKF#_b|DRoLIuqVIZ>hGg0`Ym5DlC5D8jA8O$bPKlcKW1IQVA}qc`~-&Sw(KMUSHwt(x~} z<+C8g7ysieVP)}Z)(x)gw0!Z-EwZ|qs22fJ7t~)kq z-Ooem=xAMQY?5IeKp^|rq*YHq>SwxMqSn*?$5fdIbt6iT)wDeeM}q#0CLs>=hJ6DI zXK!08f;WU1$_->8E~7U^6M7>@fPEdc&NMI2uh`_|rp6)z4tEp6=Sz2z)E^L> z`UHP}`Om*EeXvQRxJ6mE)rw&Cl%bi**nz+oit;XY!G2$A9ppLX8bYAYi?5qvlVKJ!EsNeLxloeVm1ru#F{p^2 zT8^4)?ZOh9kI`D*M?eIye;$`8M7HVNJ4^wzZp8b&L$ojWgJ-7kPu7!U8vnC;uh?Xm z|4fA!U*cqR#VgWWWzKIku;xMB`j@_`2isncroDu&cWuiJyx=4~HS_s6_l7jr@0Z6Y#bl1_fU{4^%e8p&-nkP{E8$>F$hCDre-NwY zyf4%J*n|JL-`ybLoS%4bSML1neKV|<)FNW0c~RaBY6&sJyd*D-T1teCJpc3y@4ax} zZ$`E}o$+1;-`@oYkJ2Jt-nk7^_|tsWeiGIP3f2mCQB}(S{x$%wS0Vb5s*B+~U<>rI z@3dkWQv|+9F-={hYp-kvE2N+xrZN$1ianbhnkA6eJAJoxQl6jYDS-V-{`=sn8HqIX zF2NmLop0oe=m+UyT`S?dH4iNfvE7;%wv>2ufsLMI{jvnP{2v`=n;(LRpJ>Fde3R^H z)(cx8^0R;RAp^gqerYL9=HQhfU$~{kK0Q@jTP@B3r{HBy@?DO@{g;96M+CLr5 z9Nr-C1@yF;#tT)L`!b*v7WX#LiHbW4|HsD_!~c(oyrjfUht%zHH2j|%HxKapyKHyY-3~&^NfA3_z zg#7Use%Z-%0sb)zzvN`@06qo7hn-#*0N#$_3a8gokS7}1%c{!uG4Fv=PRMop!aIWQV6X}SX&q&qta zx?tYAJ_rq$s!JU?9mqR>S7}Uzl#7|;$#rcu&SgN$Domw%rh`mI|j^)vd z;X}?r*b8`hGy0$p;avA@e1FLvIuh<5L0=85kxzW0lNS!zh2kbjTX0E{H`xK)b9TX7 z#%Z63l>4vPDa|_d&+TnhZe@TS?hh$L?432;MTEV#22SYggDpeKU|n0H8&2f95_`Vt zy52J#d*_p2hSBby+50cuDMI$)wO6GRe-4Shc}e%qo!<3Tk36q8*um44FP{(?qwNqU zAeGP#*Lv@lcT#AM%ZF}~N@(?!$yk;((VF#8m*SNNWzVokI~O7b>bD1F4{S_MuTKx! z{LS<0UO4^2l;3=_WnISU3=`}#vp{ANCHhy=oMfK*SY8#-A*_+6XIi@L7G)}{P$~Hx zZm&p-Rj{CwaDxi&dJRb@Awn<2o{DX){Iq z_B0~&RHmi9sx@Lrj;se=2>$kBZ!xl7$`!V7x--M(IYY`VnwS>9*!#jR8;+=#^0sbV z-X_cEDGxs~fB%J}hv!1PgOoEqcS+Y#FV9zQz7(r3rJ?_@gKc}HYkI9GJuGixdTSI; zKiCxl-peWvy{9m)tdZtwQkacbvs0nPIATMUN^Jrk-ugn+n0Ba$>2=(Okn-e0;>%Ji zTsDYRjzWy9g4m#VYM*(bfb_=85FJdE@jX>O<}|!7vOu&cl(=jmp4w-vw1~N{GGCTn zDa{XJFEb?Hb5&_hV@Sw>9D`C$N9Q1#nAgz}MBsa1j>4<)eCuW9uh!|69cW>>RVkp* zmO`|AQ>a4GyQ?(xav||#DO(AA!Cj7BB>)jmmONe(nxsW0wE^~-E4pKPrGBh=Y&I%3 z&ZL-3ETga^V1dA>h4a=&V}$o)EINviD%CpBKY2z1 zU)({mie3fm-pD|cxrss60fsETj(3ye-#uT1Be>a?i?O~Yd{@!hPm?`Yj&c}3p6`d{ ztPCQn;-!?zYa z6JvOpS`6$LQ6JHuJ3e9fpw0)WkJLC0n&DL#2AYa^hM(HGl==uxxD}5vd?1FQ4#io9 zzpry~@t;}C?NNPU6QU9ni1$@2_H~zYf=!|srQoM^#z-{d6+j8tNu|~b0mUjtAzJ?`-CXjwlGTmg2_8Oxb12_AdrXp{oe@&2KVf(^ zhHGjLojcmyh1Q602~JVW4K(xPY>2mA5{a~iscJ%9bzAO zM4^AC6NMzWC}lgG#)y3fZPEm*CBF7!`2(z#%7q5A5??Sn)EMRfp9}H}4v_nfg#HEC z2zZbyi($+c@Hjnqvc#7P(+3#y1-t}c81og6+vkV*632iV!%l$VwXPp)tv^_@&@%t&mjx_C7c|EwA^O~U*M08|3l>h(Oj~o)M&sx=MZiG`hd zXv+7|-!KqtHqx-l31A7r|9EwTyt~DGS4#BP znvpdp7J=XK2onhBbflxsjT|xOQBUa!jyE%bW}|>$exk-rhYA(F5)FOl0IY%nYG6iz zs>H3M18RYrUgaGBvO?vk>p)hg8aW!8P|v=DT>oEzZ<77oLr4D{tfRn<{u%iFGEjnf z@3=h(F+Z4leJ9Y`xfp2Obe*9);voW_huZ~(aF=MaV$y;HxGj;^>BCksaIeJycU8=< zC_!@|e78kOz48cp@*1nbcV4{BJ_MWUYVb z2U`E*Qs0cEQn-JS4Axh7Gowt`7c|E=at^O%#BYC-%;VG_>V-EEmge*e0_~dm<_N^7 z3*J4^u+y#)X3Ac*lo7%`rhJdh-W_BcEIze#!`^|4E2=nBS))fp!ty+dz&Y zvr&Np;QALHt$2j8WAb(kBqM2!#dnl$YV^DVb$yqYz$2wsqcOCQ?#0%#*-fD`imgzP z(s&=&9@wtFN`G0>T!PDI-sjjuZ8}Nb+=sG#`WHAk z6MI1Wfo#YAMLeYzdjMU)`y;j`8m0bjVR{REpcK=DI%(rkDDO=YYD z15{Eeztu=l+#)ofeywaO13rEV_chO$Xsg#siAIn1j@D-NdH^D6j1XBR(sgOUV`=q* zxc_pe2iK*&?NUVF<~MVMv_nccv1B;JX7%lzD$DIpY2|PyVX8wYU*3^ofLAe?^sBp8 zJYV%Z`NGv_S8S=;f_H$sGBs(~^Pl$Ltb!o~!?cGFx?Z1k**CNh#=te-j`>kFKH?ri zl)Uhnt~I8el=sBizv+6(zDiLSxj*+2q$sSg288f!h00BEhFN&+xtIA6*Zc;BSID1F zTOuuXp=i^z%%wtprF26ikK2_bL1G!Bcil}f z%ljhGP7B<%P{^;iXMTyFZTH}3_r3V>NTzAqzats21zg2(r0!{*oY5k zo1FgPg!D~g>42T9luEVMdq!36M^$j20PCWOHc`i^F`FnF+eGfiXBadr=Fjy@Ni&(w zFOe}HJSkzSonT*xd5--;!t{Rt7LbTBub1^%BUniyhEJ9-^jWZ6M9jlU5=Q%;2NV8; zTvo=@`Bw^oYo&~625N-P<^ zMxy2XV648?5{5npR+*T`l_+D*jBl|%ESE6Rr@-Em+8-}tPI^im`%ei&*LY-PUgjBF zx∓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 Date: Wed, 19 Oct 2022 17:25:09 +0800 Subject: [PATCH 15/15] fix(os): fix kstack leak issues The kstack_id is not recycled when KernelStack is dropped, which leads to kstack leak issue. Ch8 branch, and branches after that, are also affected by this issue. Signed-off-by: Xuewei Niu --- os/src/task/id.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/os/src/task/id.rs b/os/src/task/id.rs index c1771813..23ddf7b5 100644 --- a/os/src/task/id.rs +++ b/os/src/task/id.rs @@ -87,6 +87,7 @@ impl Drop for KernelStack { KERNEL_SPACE .exclusive_access() .remove_area_with_start_vpn(kernel_stack_bottom_va.into()); + KSTACK_ALLOCATOR.exclusive_access().dealloc(self.0); } }