From f95010ea7b500133e946861adccb3974d998bf19 Mon Sep 17 00:00:00 2001 From: Ezequiel Bruni Date: Tue, 8 Mar 2022 21:02:29 -0600 Subject: [PATCH 1/2] Wrote Nginx multisite guide --- docs/guides/web/nginx-multisite.md | 351 ++++++++++++++++++ docs/guides/web/nginx/images/Thumbs.db | Bin 0 -> 7680 bytes .../web/nginx/images/multisite-nginx.png | Bin 0 -> 38131 bytes 3 files changed, 351 insertions(+) create mode 100644 docs/guides/web/nginx-multisite.md create mode 100644 docs/guides/web/nginx/images/Thumbs.db create mode 100644 docs/guides/web/nginx/images/multisite-nginx.png diff --git a/docs/guides/web/nginx-multisite.md b/docs/guides/web/nginx-multisite.md new file mode 100644 index 0000000000..237dd2d848 --- /dev/null +++ b/docs/guides/web/nginx-multisite.md @@ -0,0 +1,351 @@ +--- +title: Nginx Multisite +author: Ezequiel Bruni +contributors: Steven Spencer +tested with: 8.5 +--- + +# How to Set up Nginx for Multiple Websites on Rocky Linux + +## Introduction + +Here it is, my promised guide to Nginx multisite setups on Rocky Linux. I'm going to start off with a note for beginners; the rest of you know what you're here for, so scroll on down. + +Hi Newbies! One of the things that Nginx does *very* well is direct traffic from one central point to multiple websites and apps on one server, or on several other servers. This feature is called a "reverse proxy", and the relative ease with which Nginx does this is one of the reasons I started using it. + +Here I'll be showing you how to manage multiple websites on a single Nginx installation, and how to do it in a simple and organized way that will let you make changes quickly and easily. + +I'll be explaining a *lot* of details... but in the end, the whole process bascially involves setting up some folders, and making some small text files. We won't be using overly-complicated website configurations for this guide, so relax with a coffee and have some fun. Once you know how to do it, it'll only take minutes to do every time. This one's easy.\* + +\* For given values of "easy". + +## Prerequisites and Assumptions + +This is everything you'll need: + +* A Rocky Linux server connected to the internet, with Nginx already running on it. If you haven't gotten that far, you can follow [our guide to installing Nginx](nginx-mainline.md) first. +* Some comfort with doing things on the command line, and a terminal-based text editor like `nano` installed. + * In a pinch, you could use something like Filezilla or WinSCP — and a regular GUI-based text editor — to replicate these steps, but we'll be doing things the nerdy way in this tutorial. +* At least one domain pointed at your server for one of the test websites. You can use either a second domain or a subdomain for the other. + * If you're doing all of this on a local server, adjust your hosts file as necessary to create simulated domain names. Instructions below. +* We are assuming that you're running Nginx on a bare metal server or regular VPS, and that SELinux is running. All instructions will be compatible with SELinux by default. +* *All commands must be run as root,* either by logging in as the root user, or using `sudo`. + +## Setting up Your Folders and Test Sites + +### The website folders +First, you're going to need a couple of folders for your website files. When you first install Nginx, all of the "demo" website files will be in `/usr/share/nginx/html`. That's fine if you're hosting just the one site, but we're going to get fancy. Ignore the `html` directory for now, and just navigate its parent folder: + +```bash +cd /usr/share/nginx +``` + +The test domains for the sake of this tutorial will be `site1.server.test` and `site2.server.test`, and we're going to name those website folders accordingly. You should change those domains to whatever you're using, of course. However (and here's a trick I picked up from Smarter PeopleTM), we're going to write the domain names "backwards". + +eg. "yourwebsite.com" would go in a folder called `com.yourwebsite`. Mind you, you can *literally* name these folders whatever you want, but there's a good reason for this method, which I've outlined below. + +For now, just make your folders: + +```bash +mkdir -p test.server.site1/html +mkdir -p test.server.site2/html +``` + +So that command will make, for example, the `test.server.site1` folder, and put another folder called `html` inside of it. That is where you're going to put the actual files you want to server via the webserver. (You could also call it "webroot" or something like that.) + +This is so you can put website-related files that you *don't* want to make public in the parent directory, while still keeping everything in one place. + +!!! Note + + The `-p` flag tells the `mkdir` command to create any missing folders in the path you just defined, so you don't have to make each folder one at a time. + +For this test, we're keeping the "websites" themselves very simple. Just make an HTML file in the first folder with your favorite text editor: + +```bash +nano test.server.site1/html/index.html +``` + +Then paste in the following bit of HTML: + +```html + + + + + + + Site 1 + + +

This is Site 1

+ + +``` + +Save and close your file, then repeat the steps with the `test.server.site2` folder, changing "Site 1" to "Site 2" in the HTML code above. This is just so we can be sure everything is working as intended later on. + +Your test websites are done, let's move on. + +### The configuration folders + +Now let's go to the Nginx settings and configuration folder, which is where we'll be working for the rest of this guide: + +```bash +cd /etc/nginx/ +``` + +If you run the `ls` command to see what files and folders are in here, you'll see a bunch of different things, most of which are irrelevant today. The ones to note are these: + +* `nginx.conf` is the file that contains, you guessed it, the default Nginx configuration. We'll be editing that later. +* `conf.d` is a directory where you can put custom configuration files. You *could* use this for websites, but itls better to use it for feature-specific settings that you want on all of your websites. +* `default.d` is a directory where your website config *might* go if you were only running one site on the server, or if your server has a "primary" website. Leave it alone for now. + +We want to create two new folders called `sites-available` and `sites-enabled`: + +```bash +mkdir sites-available +mkdir sites-enabled +``` + +What we're going to do is put all of our website configuration files in the `sites-available` folder. There, you can work on the configuration files as long as you need to, until you're ready to activate the files with a symbolic link to the `sites-enabled` folder. + +I'll show you how that works below. For now, we're done with making folders. + +!!! Note "Why you (might) want to write your domains backwards:" + + Simply put, it's an organizational thing that's especially useful when using the command line with tab completion, but still pretty useful in GUI-based apps. It's designed for people who are running a *lot* of websites or apps on a server. + + Basically, all of your website folders (and configuration files) will get organized alphabetically; by the top level domain first (eg. .com, .org, etc), then the primary domain, and then by any subdomains. When you're searching through a long list of domains, it can be easier to narrow down what you're looking for this way. + + It also makes it easier to sort out your folders and config files via command line tools. To list all folders associated with a particular domain, you might run: + + ```bash + ls /usr/share/nginx/ | grep com.yoursite* + ``` + + Which would output something like: + + ``` + com.yoursite.site1 + com.yoursite.site2 + com.yoursite.site3 + ``` + +## Setting up Your Configuration Files + +### Editing nginx.conf + +By default, Rocky Linux's implementation of Nginx is open to all HTTP traffic, and directs it all to the demo page you might have seen in our guide to installing Nginx. We don't want that. We want traffic from the domains we specificy to go to the websites we specify. + +So from the `/etc/nginx/` directory, open up `nginx.conf` in your favorite text editor: + +```bash +nano nginx.conf +``` + +First, find the line that looks like this: + +``` +include /etc/nginx/conf.d/*.conf; +``` + +And **add** this bit just below it: + +``` +include /etc/nginx/sites-enabled/*.conf; +``` + +That will load in our website configuration files when they're ready to go live. + +Now head down to the section that looks like this, and either **comment it out** it with the hash sign #, or delete it if you feel so inclined: + +``` +server { + listen 80; + listen [::]:80; + server_name _; + root /usr/share/nginx/www/html; + + # Load configuration files for the default server block. + include /etc/nginx/default.d/*.conf; + + error_page 404 /404.html; + location = /404.html { + } + + error_page 500 502 503 504 /50x.html; + location = /50x.html { + } +} +``` + +What that would look like "commented out": + +``` +#server { +# listen 80; +# listen [::]:80; +# server_name _; +# root /usr/share/nginx/www/html; +# +# # Load configuration files for the default server block. +# include /etc/nginx/default.d/*.conf; +# +# error_page 404 /404.html; +# location = /404.html { +# } +# +# error_page 500 502 503 504 /50x.html; +# location = /50x.html { +# } +#} +``` + +Personally, if you're a beginner, you might want to keep the commented code around for reference, and that goes for the example HTTPS code that's already commented out further down in the file. + +Save and close the file, then restart the server with: + +```bash +systemctl restart nginx +``` + +Now no one will see the demo page, at least. + +### Adding the website configuration files + +Now let's make your test websites available on the server. As previously mentioned, we're going to to this with symbolic links so we have an easy way of turning the websites on and off at will. + +!!! Note + + For absolute newbies, symbolic links are basically a way of letting files pretend to be in two folders at once. Change the original file (or "target"), and it's changed everywhere that you've linked to it. If you use a program to edit the file via a link, the original gets changed. + + However, if you delete a link to the target, nothing at all happens to the original file. This trick is what allows us to put the website configuration files in a working directory (`sites-available`), and then "activate" them by linking to those files from `sites-enabled`. + + +I'll show you what I mean. Make a configuration file for the first website like so: + +```bash +nano sites-available/test.server.site1.conf +``` + +Now paste in this code. This is about the simplest working Nginx configuration you can have, and should work fine for most static HTML websites: + +``` +server { + listen 80; + listen [::]:80; + + # virtual server name i.e. domain name # + server_name site1.server.test; + + # document root # + root /usr/share/nginx/test.server.site1/html; + + # log files + access_log /var/log/nginx/www_access.log; + error_log /var/log/nginx/www_error.log; + + # Directives to send expires headers and turn off 404 error logging. # + location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ { + access_log off; log_not_found off; expires max; + } +} +``` + +And heck, everything from the document root on down is technically optional. Useful and recommended, but not strictly required for the website to function. + +Anyway, save and close the file, then go into `sites-enabled` directory: + +```bash +cd sites-enabled +``` + +Now, create a symbolic link to the configuration file you just made in the `sites-available` folder.: + +```bash +ln -s ../sites-available/test.server.site1.conf +``` + +Test your configuration with the `nginx -t` command, and if you get a message saying everything is okay, reload the server: + +```bash +systemctl restart nginx +``` + +Then point your browser at the domain you're using for this first site (in my case: site1.server.test), and look for that "This is Site 1" message we put in the HTML file. If you have `curl` installed on your system, you could run `curl site1.server.test` and see if the HTML code loads in your terminal. + +!!! Note + + Some browsers will very well-intentionedly force you to use HTTPS when you type your server domain into the address bar. If you don;t have HTTPS configured, that'll just throw errors at you. + + Make sure to manually specify "http://" in your browser address bar to avoid this issue. If that doesn't work, clear the cache, or use a less picky browser for this part of the testing. I recommend [Min](https://minbrowser.org). + +If *all* of that goes right, *repeat the steps above, changing the names of the files and the content of the configuration files* as you go. "site1" to "site2" and all of that. Once you have configuration files and symbolic links for both Site 1 and Site 2, and have restarted Nginx, it should look like this: + +![A screenshot of the two test websites side by side](nginx/images/multisite-nginx.png) + +!!! Note + + You can also create links from outside of the sites-enabled directory with the long form of the `ln -s` command. It would look like `ln -s [source-file] [link]`. + + In this context, that's: + + ```bash + ln -s /etc/nginx/sites-available/test.server.site1.conf /etc/nginx/sites-enabled/test.server.site1.conf + ``` + +### Disabling a website + +If you need to stop one of your websites to work on it before taking it live again, just delete the symbolic link in sites-enabled, eg.: + +```bash +rm /etc/nginx/sites-enabled/test.server.site1.conf +``` + +Then restart Nginx as usual. To take the site back online, you'll need to re-create the symbolic link, and restart Nginx again. + +## Optional: Editing Your Hosts File + +This part's definitely for beginners. Everyone else can probably skip. + +So this section *only* applies if you're trying out this guide in a local development environment. That is, if you're running your test server on your workstation, or on another machine in your local home or business network. + +Since pointing external domains at your local machines is a hassle (and potentially dangerous if you don't know what you're doing), you can set up some "fake" domains that will work just fine on your local network, and nowhere else. + +The easiest way to do this is with the hosts file on your computer. The hosts file is literally just a text file that can override DNS settings. As in, you can manually specify a domain name to go with any IP address you want. It'll *only* work on that one computer, though. + +So on Mac and Linux, the hosts files is in the `/etc/` directory, and can be edited via the command line (you'll need root access) super easily. Assuming you're working on a Rocky Linux workstation, just run: + +```bash +nano /etc/hosts +``` + +On Windows, the hosts file is located at `C:\Windows\system32\drivers\etc\hosts`, and you can just use whatever GUI text editor you want as long as you have Admin access. + +So if you're working on a Rocky Linux computer, and are running your Nginx server on the same machine, you'd just open up the file, and define the domains/IP addresses you want. If you're running your workstation and test server on the same machine, that'd be: + +``` +127.0.0.1 site1.server.test +127.0.0.1 site2.server.test +``` + +If you're running your Nginx server on another machine on the network, just use the address of that machine, eg.: + +``` +192.168.0.45 site1.server.test +192.168.0.45 site2.server.test +``` + +Then you'll be able to point your browser those domains and it should work as intended. + +## Setting Up SSL Certificates for Your Sites + +Go check out [our guide to getting SSL certificates with Let's Encrypt and certbot](../security/generating_ssl_keys_lets_encrypt.md). The instructions there will work just fine. + +## Conclusion + +Remember, most of the folder/file organization and naming conventions here are technically optional. Your website configuration files mostly just have to go anywhere inside `/etc/nginx/` and `nginx.conf` needs to know where those files are. + +The actual website files should be somewhere in `/usr/share/nginx/`, and the rest is gravy. + +Try it out, do some ScienceTM, and don't forget to run `nginx -t` before you restart Nginx to make sure you didn't miss a semi-colon or anything. It'll save you a lot of time. \ No newline at end of file diff --git a/docs/guides/web/nginx/images/Thumbs.db b/docs/guides/web/nginx/images/Thumbs.db new file mode 100644 index 0000000000000000000000000000000000000000..961c2a09f3a49c6c986eaee48aa15854f9e464ba GIT binary patch literal 7680 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 literal 0 HcmV?d00001 diff --git a/docs/guides/web/nginx/images/multisite-nginx.png b/docs/guides/web/nginx/images/multisite-nginx.png new file mode 100644 index 0000000000000000000000000000000000000000..f524c1506d9e7f4125144e3d7b44af3f423e6313 GIT binary patch literal 38131 zcmYhi2UJs8_XmnHh#eiOR7Yk&q#5ZYfTMtjfP(ar5u{0pp|=pR(vpmVfK;Wblo(oo zP%I>o-U*O|AfZC%<)B{wtzXXqbJ!JDwN4LC(JQ$|~ni=CfB+ zaM)r&cxb$O7nGW?U9c7|3A!_|ZM@RpHu_*ExqW(R)lI6Q@UJ_o8wmVAqcWgpaj|*6 z986i9Pr}TNaTid!PH5142*4`=EL&@k6*|(~!xWw1%ZI$~ zZL5LZ9sQmjjC! zV+p6T3*$edb5}=N7}7eM%+Ef$7;tD_=m?7e4g!Hd=yr9W9UN6A-IqkLA&D4+M?SOl zZcBrz>s!#I&ol|l{JUJjtoAp{(<&*7P?0KvIT@aUSJG|0xZFNe^6`3f-rq`ADQX&U1o7>lpQL3u#;7 z2M1kST!QvbvTD#q{;q4IOI宮V>vB&#Wn5FyaCtk{h-3S*bbJS!ew1E zX)xF56}Q0Uj#~#qpCj0V$=H%zj%p?X?o^qf8pEqiCL< zZK5gIPdwmNU!Lf4im@80;kVZrehSw*+*KBoU+D%H^x22mQaj#nfK)O z{b-*Lqq3jYhZpPiMtH1p=rB(XN7Ez-KWG=uGJ*v*GjF`g6-2%a&2k6MxWG-Vc^Z-f z*3uW9G_jg}gyAKP=t4&qdb{4~%+vN!EFQOl7tISeG4uSIQhUdWciP5YT`^h zI>vau`IR>*OpPM3$fxt@AX)QV6DS-SUNwQCH{30GgK*I93CUQX=dI5+(qGFH{u$O) zEi8!zn*8LRY~}SO+6U{sE!uE?H)(^4=N$>8anZBxJ{=LJBNLAzpCxfDu;-pE^RSst z)d_I)=n7&i6JhXBtzm@jfNh4h*yNIQ*n-s$JbhaCnF-7ER~GTOMV)0BH52)PY_fjG zcws?wa?mtannTzGXDv!ythU=kGotH_EyAgO*jTbSsq6E4MiTp^Ecn4j$K5*8M8piB z$AaFJOBBTIxW*;g>xB%r+OYIg2-yYA%`JloYl7o?yu=*^47xOAIOG~+BP{sSNGaVL z8rU5ESD#PWdN*@E>`0YeP%dw=EXpu6&NFx2+r~imVbMa%s8?KTQto0fLXX{boFqXw z_lfg4k={1cPwL*g;pP-wV_~$Ds@}am%;fS2JshWr_KwMz^bZuWpZF1zZ0n+;=e{L9 zr6D7=jOLr`TO2Q`hc!tAxx4Z4_vH$P#tn>X?Mm6 zBNNnZ#th^Om#1j#VsA1Ql_wqT5e>e@CYA&q{qNJ~!6Vg5cw2U`0%^0&p&njvCL|=} zWyQ&*js0+14QyHhw%^xqc<{frRj(~Kiq66~>kSa*PW1H<`r~4)3uf0F`}4=ry4UZq%&+?pYKTZ@JyZWeK$$ zx$VUP4a;92jgw^%rp8-w)lN}Kmr74A(P?_(j~1+|+u9T@kn*72|JvBLc_CYa1;sy% zvAQLUo6F3!`L92>e6PiCfj~eMw?Io%W2d3jn@9!t4|Bl4-ZrokyUHe_(~A;u59ew9W;+C zT%#*cP`VR18A+tf;xtW4(F2F(rGL#xK=;pvxa)-v!m4bw1mi-=K1UkttdS;jpV z*n7_X)i7pScIGwJczT+MdTlPz{8A4+qv+t%+82kSFj-^Ai-cbUK(3R+H7~kXMw20g z%xVHPu%h7HVgVDLW4O~8c0bmkeC>CFJR70ETuSSC*$~bU_S&Dgx`b)pX_~+JkQ}$F zZtl1Ju{*3ZcQEi=4zPf=SOg25d{SX@HK6d4yz0@m0TXtoS3IzK4cPeX#3I2nnsS!t z8SQCsn7@6js9pdet2%MHZVCxgON#I;JMf|vea_kg&v*lmNbZC=}-CVTIk zH8HI`D(D<4ai`9EyH7dO{j2Cm?vb|{cS`VLY}tsxx}LNAEf}x3Q(}=_?K|w>@C6_H zAP?YUkq^OtFmDV$Zm8#Y?vZV+T3Tx`YWQ>dqI%=R$0nOMeI0BHICb}9x*Yb-q#IXi z^}%=*>4>LAq>j{C7o=J3>Pfu1Q*WAC_6sA}%=ODEv0Vtvc)R;5EBvwqNEJ z{(Pcxrr>6H)qB^EKAx*LQ2kv+d)E($UCNrCUNA^z`OI4{?4ew zY+Vtsp$WJ%I?(w=SV2m}_@NzR*H$ul;g~w7G{I4$X{OcN_4U{~|NMMVj#EqC$}|MC`Pr zvsbM7!Hh6f-IA?Cgi8U6Wta7SCjOk$%FG?C$d9{qz^I@i?4TsS*lGwjql>5(uXr~AY z?S5|tt&VGm^gg%MdF$}gVC<3YUxvecJ{WYA0eJ5{Dl?sE*co^497v4%BJF>@V-NQN zpCoLe+Hbtgn6-IG$C;+cMNObxqQ_l%ZQ23_hsTtQS`&W8UmP}3`Q92ZRLnomD&G&L zneBD@%t#`q&c)scUTq~17qY2#1rntEAH^jU2Lnhk|Ad*NR@E;3;mj-fE8CxTaw2A2_Hl^wGgA)}~Zo+cVlm6_JaA3AG?kdt$;%Bf`a6qZlLyC<0swycpQ=U5x;+RTo(CTv*&3d zn}iG^7Xj1e2d{~!Vx)8P!0iAfo2k-^ZRld{tSrA~1YeLSwR3mE)6CcldEm(yNV`kv zP{m&%4h<2#3-poZVFO{K&3~9kRj{R5yZV8wfWSZ3vJMZ%ukX~?GAHc+(O(yIbOQ)b z?na(B#I3 zxm&i8`LOLg5Uzt832NOgAn5Ei8%%RHnE0}6Zp#gxU72wqm*Fq5Q&9P8!!nnQ-d8=s zq{2Xa=@~RT^Q6f0zM~#t1nN%bmIa3v%I02O5=*eP27|%qlP7PPj#Gz{>>IZTylr>% z&UglYIPSqY(^L?53v6z)c+KlzsEONxOZtIMVxnWAzsgb1U8j4FSC=yB#+PZjHWp2nDh=^d(k8}2c@Daa z+P~mB**ZIXZqP1dh=_feTQpvbeR8B&SlTqvBV9(%#EZw$lK{V^Ax#0gQvt!j?Xj?R z%BA3z<#Kbs@NJux0TVk_C98a3yc5khPb9awFT?Kml?q?;KDuKys2~W{rs@?x`oaA2 ze(V4#XwZydmZ20f8pA`R`XFNOoo(X&wDcmzz>tVOj8wwofxDFkLYX55!_CjVx8~^l z5wvLgfp#SH_tHXuk5}-J{=h$PNXE^j$BqhX*i=gM_0x&l)z*P<8{Ib^jWNZ6O6ex! zTi0K046G=fzm>FO_RJyMfR{V)4pm(K82h~8LlYuElhwWTC$ zEm1@D53+=*8?Hmn9*}EiFDI&{Nkpm_^j=o4>^9@;7I|PUaroG2;`Q)XUl(2>UjFK& z>QcB2pJYpVe(7<2#`~pvL?6GudGneu4fiM3=Y}dzm?>k(Vd4CVeYz)So$Yrf?ic4? zB_}13Gm{Qn{00gg$n7&inwLV|f4sDmPf>A*^7KtX*7dVCi+>~BKD=NI(dmI`XZtOL z*A*QeHs9I(1IzQ!`D=JlbI)yZ`LF8WQT-IZbWfLfY7u(!ewf77N@ zr`c;~c=7$HwDXYgj)l%7L7RMi-KeR+v@%lF1MHX5&pRO)3Mi8mut7SRqsRUb@jbdD z+#JpM%=Y*G``4;&)?hbUF66X6{BaO=KOnT}M-i_5=lu+C_eod*)Qe*Taxu8kP|R1y zu0)YSm{MAP!7n-aSzokQO{sCKed@=|267|aJ)$|A-P1F>lWcRoBGEEHJ{lBMSzVr4 z?PxSV>N7i=#?v(UnKVXZa%Uwwq+Td+7xpGBi(-VUrYJeyMSxkQ!O)( zx4R|y6RRH2uUK5EP=l=X|!W|1=r2@BKg)OCM3cY*r z_nBP6$nD323Wh(%=vXS}qM_kb_scIkJ7cp#n)+8vV0gRkvo0_v$){eVa|NQNU-&1* zrQ@{0+@~Dl*zH=(gOPHeSO;ev)gxbpEkVM3?<*JaSO4{o`+o~w)5|>1NMx@|*}?F( zfH+2S*!_oT66z@(T;B%=G==Ca#ZTNSjibN^qe~Nk6>@2B3SQ)%El8xOaXLK(_$I_Z zoSSd@oe+@jYdGOVI{><%X?|ystqwAl@s{#Dg zKO($(JQ$l>aE4zN5crtod-nhL5cYN(Z!`Hn!|%cT*(>kwRT)+E#ksl;*N!b=OqSw*?QX;U6?AZ&Pyc(UxAl^I@}FJvR%olW z8a?ML^56SQcPq#2ZI-rIoVhcNVMle1Pe`gK3oEq$vg{-y=L7kT-rpGClLp2G2csvW z01xJt!XnmBQ7?Lbbt(V^-vZHQTp4N~%)ub_xVX6Dpf8VIw6V%8iS*=F-Ey+v44p|P zu9qum%QT8TDvTrS0AOD{4*lAJORr7*%Lnq7!~IzY&5ee7D~Oc%UL-s^Po`~s#HXLJ zPal-4o8{(hz}eu~%YM@x=eMT5O94W!cQ#r2+#^K}<@KpCkHjR5t?KB!oBULEGT@6p zzgssI=*F!gQzE{T!ty2wPWg;JHC_O=T$XS3bvsxsC(TZ~bLB@AnzR;fVU-t5Vw`)M z7B^h9eXgblK%%_^&x7YE!J zov)5z%t`pPVkczGT>CQpb2Sr}&fY}0j%*-m_L0{?1FZp->Z$!Mvd}bt!mKOuI&p0o z;MZ9y1&sQefrz;*fjn@(KJFkd{tw66G`Xj)YVC_Cd9I7r;}m)SsvzHlFsb4XG<`=8 z_h~52yX(LJ;EzvlT6|9OVF@zLnP1NV)K(F2LVB_l%>q|0itilH151-an`46;=@x+U zHhJ0$IHC^^micC6sA#xov1y_A+EU1cXTN8_?j*Lm^1d;_>k6*IDrPaWRw#Jjh#zjb zg7Zl>r23i&1=ZBXT5e4R*Y|xFp4t+T3*0xJ$;+AYAud_ehI~yX04zP75$KV=rHHoy&rW`|DfXdfZk@cA z-3=ipvY+^FqHPlC*piS@{2gS~QLH~4tde15{%(O96|0udB6wqW%CPZQ4>$^voqKdr zXAQQsO4f6_8pFA;(A%!LOWMp?TJvBY`_uWaN}^BpWccj45x>qXWckV6_6z!YK{5Vh zlh~3bzpc_7U_uNJFYaC+;75+wwv)ls^}L)PbH0O$p8HNmFUq4HkZsj0$NMOn)9v)a z{tK(iY3qqFuz@sW-~}L?T^eXCp|O-oJy=jUJS1*) zmD;vDT|_=9AG*!>0{orcN zh>dOvFq&FP7uocpFO?uW72$tTrXOy@;iN#wh>c!W{K>u`gz=>)k}q-silO+h7?!jJ z_fW*LmI7RX6T>+W;9sgUA6BRcsHH47)%kVXJaoU3Czs9L(DMazWNw~m(JMNew`Kyw z!xdy2+&aHLOY`afR!3`xk3r$lYe|8;197oO8A7=f$dvFME0dYcN0U>WiXKj zZq*P^Px_SmCR}|%Bh*;*iEsk@0wYT`%~-}wa>6p8USs14mP34SrbB}Tt))2Y*7pB}Rqk|XV?C*Rw_gW3;Cn8%YT zx`q;d>+?4v@#*KzhQOJf$-8kUH*;n3Y&(F@LD4ph-QDb;fnWt0PqyqC&`5_h6|pQ=QvN*UU$Q zD88z*i;}#==EzkNUyPSv+LRk7WA8^qMRgtsS$i*()cGuM!o8=VT0WIF%J?MqhCC^> z-JI_eP{Jb$#1t*y2t@x&K-gO6g`Pycm3_>s<64GLyAVZ8W=hzK>wryI-5DP0-LgktlwRP+~PUaWFfb!0|u zuCSj0DkX9<`r_%e0(lfD0d)3^{4G0L!~V{vKAK)Z-fP8G4WYM191Iv=9H>>S*U~*S z7KHo(2;1u1qiIb`Y%iJ`93C1ldC=Wrb89b#Z|sXD+axXWP1B?$v3#4PWhZMS=G@be zn_q?(>|bA#Mk=evZ?+}ejv2vkw|_(AWw$*jCD!s?aVX#8ta753IsrDbYCfn37ulU~ zzlRfuIKEc#HoQf_>bQl%c9x|0y3@_1d7jB?@7@Me!y|Xy7(7jmnfW3-%fA_ti#!f! z`ire#v2!EHGJc;|7c%MOliC%xmQ+!#ty1hcm7q!rc_zGsfw z+d}yKa0!o8Q21tOlomoVG?eN2^u4FIce=gi{aBnd$!}=VL`}(N;-barffB_^^ESP- zjp^O@(f!CclNf{NmvjUNRRrT)ENPH=INGh70oVWe8kMY>@Q&`v?%_%BIAyfiUd?v( z_J<4ZY4hm=3Jz<|&+a}isSFC8bf07_JJ9fXiNh12KaL;Tj@-KpOco0^UCD~~zCQ5E zLQ`C2S%lkYCoL1tU8$d7)qw-k%l(yv-j1kxrukDi0c%$(S;P-cmEwn%`tk7rGsAo< zOyr5sOG&t#gtdi6&*j8_2CN_h;TS8s?_qA|9u<0kWKr%3o0kL!tt@E`vA9>lvya-B z=fAgDgE7<3Jg=QLQw}86+g0#qh=&hq3s3!CXg{^7m*c#M!5olSaAHD9(r=5Jxe8R#xP^zfu-j7^=?)p`4>E%LSnkW`}PN%1!^a+ zJ(j~E@PPxL%5|sem5Z}*k7KR9xn$f>!~4qQIfU%^xe|+$NVo+u#dyk_``DcRv)*#H zAG?_>youFY=r5EH_XkRgP+`u-KT#x~>9se2xaM zE7TxqUfaZ|JZItiy`4Sew>a8}7n_N~`VI zus^kQ_p#!#$dw9|+uGg^40$ilCS9Go{u;n_Wb2LZqO69Q-$G%Z-dA{*i3NL&4HJp( zp$&kXPkU5D=wdJKI;L`2@ZWY z67i93oOwkiFt0vj%Ku_0YX=V4|BL77`met4Rj^6m9WsMp-Tg9I0lMx0S43R!0Q2pUOt(#TGTD@aVb-!`?I$xCxb?T5Ac$|dH7 z*c7VrEgnj`EGW%94eK*a7D7Lqe!S$?bTJN_-C4e_=tBee_gqb_ZAz7 zxFRlt!1vqMAcQwNl;vY*+MBp2Sb9%lxD`2W#I$4@`{(mh3i2{GIcMBM+HBT%>HdVX zny_oFdxMMF{z34}{7I4|y+x4a-CwL`!uqzmH?=uMOLBEBl_rK~pG;$y6MaHybiOqx zO(LeH_lu=le;NE3JluA%acMQB5np?!g!*P40AMSp-1q-){pzs3L7}QN?l(eR92vTKqEVhi4e0U4XC5;TU;DP5 zMtUYn1ie}YO)2Au78~_b^Q($c=`{gq@CReB)2&PsQg(fRY}&mx)wZ%{S7&oHY`tpr z5p7$kQW%`>eC~6+$&UDnlPS9FZ>^xE6p2TnamI&-R#h*PMn9TGT-twG^)V|lu20z3 ze&W)#V|?D2JUo=4JN;*9d&oSm6Jh#;N@HkN9YimQID6i?<)JSIjfP&*C_-DdZhAh+ z?v0^TWW65S^Kva$^u1cNGgW?hULK=gqzs~hgX`9# z=!~`^31O2EUd)eed921x%Z+<|?QWg6dE+z@%mTo7JMN%EatE&rqKM{+JAmdP6pkDq zs6T)2N0~ETQOl1|h4(4w2!NbTtiB1R74`Qz>b*5ApZ?sKnBl^)2ZxG4}1$QvdgsIK?8& zpDd;Hi#Nm5b2DycYkPeId`l&ji!(i)2Ug;>O&Wied&k-kJ7$w>gq^Uh54r>at#m}( zr)pCl>~ZTXh6O3d(LaH@pGU>3e8Uq)i+C3hd%Ml^0oUDWn~_r(@y6*m`-9zK2U=~9 zoqM1aEs!(yoj3<&Tt8)|SG{S*V4XD6E8~k4CA$rt)yOF#)stNFe&4Oa>Zr5FN9|F8 zh>_1`3>w|7DuohF0*1Cl&Z{kn^Zj!+MJ7PqH`sp%Td0IiA2yv@80uiW*7o&l3# z(}|xyvfBW*8ZgD+X$(&mqah`ix7NC4nqN5ubEK(!+e0lT8YC8sdv0@@7`gLxRU=TY z`x~6GF7F{P3RhcIbwirxSOVk5N=mFA@l&hV=CYF4FUZt^66SV&3G!?ER!+u*X0SP7@^u^a>Y73(!5)I84A$rp%*`}HDX!x!*h_fMq0l2uf)N$%qV65xELxKAlW zI)1a(UG@{P9X+5Ck1LE{6U_^$bqvPRydX1mB5+9{^Ha>!$m#U6K6nc|JLlfbTu~rJ z%O|+;vPIMY0&>SwCF!b;iD|i=8nf@aH%~4ILVDtw5A$_TmmS}`)u3NpNw67tjsv5b zRa&wboqsudi7xWiYMbc&>`SMjLML6ywKuGfZ?2P@3S1IvJjwdFVhf{Z1`ZbijuX>W zL)4Gx(x{g@6qk>~uH*5x_W#CaL@P*t!{o|F=Rb5Bm0;r6(rQxPbZ~-#6W4l5e8N(P zHRDg?BN{$kw*Y||+|8~#?2&;Bd0N2QSgqpSMbLGsfdaBhZ%hJA&NvQ2mh;W*$xCJ7 zqpN_GcS7dT{R<@}Z55ie8}0AmZrs-{fz-%Z7IBi^K}BC)R`6kTBasR>;`8c1=|@}WYqNCW7?PLduXoIi|y4K%X>0A8@~!* z=Atw_i@Kc-*fkh}fAq#c4A+%gd)4}OJ)sc*VYETkg|m4t5^o9UOOIU`x81e#lPm&_Kv(LNO&+A4Ko#GNtW8cf8+J5xV$J^%z__E^# z9zx}A+#KLTS%SaY3$PRwOau9M&`O2XdgWzUfBuqdtGvA3U~h5%(LW`JdbXy5HSLTjqXiAkQ{G}zp<(kxY;wJejYuP z+%BcnYNVT|e*ur|kuD1KGjE*xvK3tY(z`A2!q?4%X7wm?y+lQ8qu%t+f^uu{Bu>fW;x zll0H0I3yH2j`OAI=Z+u}8y2;Dn}Kfw_=vyhuDo&u22Eg@lW=@TmSsX^32ZHhNRjc; zJ$F0k!yh5phZ{s|_HkiJ>!qu^Z_p2W@o3JY+S}I*HpqtvEla5%&<}_G%ooC^n66k~ z2u+*{w=v;t#l&$G=rj?gaJz%)S`)IV>3IotO4y0 zJt%L&Ksqq)TWv7`7C>Ff!48h^=r?vO9f*)YU41;@;|e(A=__EkTxevp(sn|zl6l=S z9*9p5MIMt8Nn3I`Q`h2$KfrB!56$9+NF$=LZ4#a*7V+uJ$WB3Ci(WbKp>r>k!Cfje z#iA4MFvhYw-whFC(#iB!(03QigDm?5pAl-2rK?zU0WvuB| zA6so=8<%NQS#YE~R@;`+o9l)37JQPY(|TYw@vppR8%jb>6pvpLj1FeRmq<_mKL-8H zFO^gBlP~*{$~U!)Dto)+&krb4{fGfZ`v=JY6(&|YF1Q{#d+D0O#R=Ts(;0a z6v>_b#-*hX=A>TpI|@T*PvB1>t5CeI_hpjR^~3F}{~)Ig0KiR=Ig?k&j%krZTPU#gtfL2=WP z4I#_joN;oZLOl1-qTl&A9Cylv7CkDebEd6baIouh*qPO9$IYm*i`RTnhJ0X_GX$#? zS>)ii#fqUg>}UV!8>pw%fQ;=)OCve4XI=gA{-#j3N%sb#LSzK(!dz#qUXv;}#@v`W zv-rA=(8$)n;uvp`S#9sE8uABBjcn{=%x(oU*wUOA72va$usGK!Mh$QC(F7MkqP-eB zIAZ;A;DBqVq59?JmDkD$n~uwoR>s=Uxv5X2!AS9Rvzy3iEfZ0DAGMZ(ui-|8>5npS!U zdQMeXGdqNwsbrGSXTB3d0rq4!-EfK~C#BjeOlHRHqFrG#`$N88X8o+-5$Uk$z4n-e zC7l!XBAH;`RvB{YFM{?3p*e(ezRF`qcF~0&7(Fn8o3EnfvPwopsjSEHuC#fR7poL9&i zxBqy#V9R6VoWmJIM`zn;Me%bk`M%~xLhnadNkuio72k(?;8l4f<%;uQ7<@6J@thq9@RX^a+%DFXLwQ6X z4obu|e~V7{PGRy%2pkFVjKA`I!H|rxHtHOj)ZA|68{XzXygp>ZED0x%9@O+cy^!ESz0$2 zrwqD%-%?NcfITB0O{lQl(9A8Qdf{eU+4oys^cX7k z6Kw0NIAP@e6CAWTD6P0ALYh>dU$$MaUD)H@A3oi>)+D%c8}%W!VE}gzs~|Q& z-u52?bXxu9pi6hOwvJ(FVwFFY|2dJEgFQR|=DA1u52;|rOM))QyzSbMZKLe}eB zXf+pw26++Iz}{-H^0|Ol+Nsef3HX1HA0T9VX%{kul+| zEJs4;3DD2niO@<;F)BXT*swxXLUS2mu)RR2Y7Y0_B~Q{H(h?)oU1Vh%;K{o9#k3gHTpq&eQ9%^t@JAbxs z;1MHx7c)X7cHpUt8@$$u_=@$}#~?3x3J~~uyoqAGnT&pEo`tbI9-5>>Wi98o^u&?}d< z_CKsK`OceNG8Fat@DPmvmK8Q#odoz+sL-kY1+Iu1w~zFMUA=bc%|t?c)`{y1u&*72 zWsr;0%|EJ*_I--f8lh?`F>GA)j_?a%78fQbj)F0j)8cwKB!=BycGg17t1CICtmpNi z^TU#Taf5yHqNb}nOIR7Ljc%G+wIWW)6BR9I56iOmx)hR2OotQ%>}Y*HN!L zdI*F~#dYTUl%eLKte1YGsT(J zV=A0BWk_=-odjMqxT_)xT^`nVCdt?(Cr}qHp|q|$MVAd~p@lLbV3QAY>qs!42j7p}3Y zS(`qM>aiF75RB{BgGLUf|Ip;lC=5lJT>=h)3>9r=qq}-5)YW5OW{ELuM9+p^iHndu z_)*Ev37XF;f|eTFcW58F7fun!b;7`x9sp4*O_i^1hLN*EWJtChfq~UanUkFH5uSXW z$i-F2st!or{vY-bl4r~<+{xa$vAC`&a|PN=$dI?zdOIx}Z@w;R-GexpQ1c5wJCo%O z_L6=Sy29ty<~1OM0%2c+5UP>*ddmd@&a^|RJz<Kd{CA5WxZ(?tde0I|*0lNV9H1`xdhc=#F5TdSPyd0?&=^UM zAAVSeutRzh%R0mty!PQa(0y0H>XxQt&l>)UGR14WiSv!uc@Tt36(V}drJ*_ub$k3R zs-2JpjZNWShp`Gd|cavKZi~;Oo=`IMo$kg%j@o3KcBI-r4%o zw}7eHHbf!G?9e)X-w|zhs!v0QL8o+I-+4a_)bwzQyKs*8^YO$+G_&)2?1zAxv~W%p z&U_NSUUT4_o=Ymqe^b>25>K3Lj#Udt*a8)}(IWSK{9ikM6^>?p?QdHA7h_J4Fv?O? zwO-vYn5%|3`;e52;_fTMcF3&PrulBCs|xrr>z#9NjTwU+dE&{Xid+V(?AGGgYiz*$ zYMzo@@R4@mn_uX9vXmlqUvX)({lW_AFC=z4 z6JNAlXe8gy$brxr&|OdOpxIi5^8Wcz5b{G$m{tF~sn|vJ*v0NGG+(R!`T|Ep)!an4Y0wTY8FR1brbR60})8Qs~)jqmLq2xcj*%%j!n`#!0`t zKZMyML1BE1qK;SgS;)+xO*KnmALYgR84|Ar7Fzp`uYdEMX)piq^z~f2AES+!#GJ>E zJNGkgs)R5XO1$IJ9$XdiyYBD4);!lQ1(`>cpr%2JSalikw8EX@CSQgI`e7H1xk+q^ z>A&Of@z~$WeP$8IkJO;fGx*R=*%K0K2Mo#_Fi{)sP8ev z-HfBD&5o_R4e^Bbcm({O%BLKraFN63?RPKy2>vF}JI%g2 zE0h!7T_DZmMmQz~;R$j=Xn^U}9mzs<8)=XMeI-Lf%j}Zsm&73S*ntqb@2feWywWJE z9)s(>_bt`xsARXG+oF17c)46bPZ0+O`t8eg%1=ei)O^01&*XzIrr zvD=|Xax=a>?hAyD9a>VZwXrn66+1KV;rUH6dOnH%v-pA5FcHH&&zM{sLmhkxnLiWk z^4l+fpbO}^^i$jN={VQk0`@HB?NC!sc%WlgzD{r*2cbjN64JT^&+jE4U40hBL`c5Y1 z_hl5}H$JqZx}m(tG@86T!-tDzWF9>iORF501Vr<(f5RhkK7@2cwQ|Vs*kDY^T5I1p zdiyli-0oJgIj~_V0Q9?D8?)1fNR@K-h>iA$Up;7IPmlXC4_7%|!Z_&Od!il3nD{S` ztGbRq25HL3he#2Dcjc{}rBKesX5orA3UfM2RSk`v>)@4f@=l?j1o46s!2r^bn3qsd?SclCE! z<`j%s@9`!#sry((tIHR3T=t7pPig#7;!S>PM|E?f5Shr9h!EJ0o? zu4E!K&(nMKdxK^QAYrd5=kh(G6fkbpg`9!AHnNB#n>Q@gM0d(D`%;DFy?$@oY3F05 z(kAX__+PKzlxvW3*f{lbZ_1CEqNMbT4gzm=3b&^`Gikrd0&mS%cC-QSF8)fW6A)1U z*OxP|-_PwucK=Gv;=?%c@h05d?lXLt3UF5&7-j4m>T70**ej%WLVPNN*!+v4U z`Rr&>jgp9MtC8hn?D&6UJzKX7PXAZT((~=sfXt>Sq>R`a)dip$;(%Mm&WQi^^HFk& zs4^Z+Xm3NeDr&UvRY0a=sTZdL)vDcn-rV}%mfTd?j$P>#Cy*9=ewmB zJp5|eQ$23h{nY9A|I#2IeQ*G)KOW%YW8R+A@)Pq>k%D&p)q{$^r6Ssb{%<0ml8iWv z0f|G4j)6x?h@;Y(v>XX)V&A9lwZR41{RiLoemvn=LVp@ro@(jK>tH_Q9SK_Mx3*2r zUdthTD)5p};OtZ81A^3Bch~gekbNZ~b(Gl<(7u1f>;I>+|BP!Y`~E;-9DnLKDyX2S zG?fvMDk2?%4Vh5{ktQ_?0xBiaYlx0IC{>gyO+|W%f)HAWjevwIB|soZF9BkJ5J(}< zft-{1Kc9Qw+`J+Q*?a9(zN_rL*BLWC6W8c#{v?F>v5Kh+e;SCp9icU*a-Ff|0sV6Y zwXkZX#1Yw6Ld)(N7FF@oL(g!YXOb?&>Yq@qziU#xP2kf@l5OHx-{hK9G}VE1UvZ(p z2lp~&S6E9#jk_t_7#Vx{aC*Mf#%FP(!zwYB~y zEwdnofKeEoGGA^^l)Rr-3wB6X$u-==d(*7V~as!JyCF+f+78JON^qsHOBi8p64lNC> zV!pyeaN)Ntr!o%WR-58!WT_H|Ts?tL!sn8Dh-ZG+KS`z+2;tR?l84ka^fKvGsVL2g z=>g?5t>Eh77b`(`J#@T>RDM~@rk&9a=nwj-Ez{WcvN3U9HdYbh z%619-`txPD`TZCfnU+g+3WBK4r)8Lc#b@nt*4T1&(Z)5CM!bzE>XabqSX7$?{D>@j zu2{=8!p9}*_SY;aZt#o^jX9(l6}DJP>n#u8C##1T%FMR9@p39xlJV_{6mod4^3x&> zJxBITR-;XfP^gsNh#Czy43o{YK9{r?xRQ2%zV zAm3c27_?fqO1Vm54TuZ8)^Qhk+?G{|Fg{6gN7(DlYnv*NdPuZHw{Pf$;)WNx;rsIH z!&p8aD=q<7Ay*f!3K*57;DhEd%ikV*cvt4>fORkET7WL{5S4S9dOQC zQmPcWV`>0%1hw9e9-WQ~m&`(P>OYvR{psp*7-&Ior)d3QPOc#qyQGz$p&Emb%B-fbLJ~ADud1uu9N^MWrDo=Pe)u_gtD$Kne##-(ncg=ez|Nl4$VF}nM8Rt z>wPs$-W}L~^0o=~iP!e-3N(3YEmej5Q16`Q)}U*^d6}Xk>okHeeTrg{ugP+F0Fv02 zoTMq_6Fu;eFcyu$$^{H5dY0SF(VH1~B09y2%^cQ_$k>lk!iW`yP(M~JFJl^atqc}x zO(lhDWTurXM;V1kFR<|nNw9@CFipBP2Cqq8S=Ji&CBPqN1)Z(;W3|EqZ|Pl+)oiU< zvi9z+jg8(K2%O^ixwKQ@(<|?J-KxCt3hFP*spoFOno*uR5^}_9saKq`4kp`f5xA41 zF5mb8))PW~mW8GM>>GVTeTL>R7o3V&ZE$=tIq;hJTB?DewdxO*sI8;8*oSW9R>w;?@5zXrknyDm5z-f(NI{19?_%6WPTX&kG`z4JE^WT2Fj zb55l^LBZ5BEBbehj^X;x!2GWkGFI-}doy>9)tfF5gSJ%02|3n`Mm*^$QmK-GAv==1 zoBlS4n>VSc$(IV`PGrSBlGImUS!i;~3tX=o^tsc1)w2yfy2@F38kmW));=xbJ4$t{ zKOR7u$?^Wu@O5l;xF?e3O=%2#8pWkF^@Uy`dvxnZ0F}+KOTx}}Q*p}5TswGY_^PZ_Byb8P>k2C8v>5Vi*c{3vPTzgv({tk} zO6eST8$Oe1I{KB$4YS8B6S@C3p5xLJwdPajU2y6L*VkHt;5NEw=}`Z=l{JELWO?6- z75$IpcT~bwTeK$9Fe07;0#>bn|MW;9)}!j#b`74AEd1XFY-2q)i_UEVK`#pPe8h{| zGK2Iy%P9ddgl5Z7zt1(C8WP(8r5@WCz|vwa;Z*K@&q*b~nQcPf-Z^;|8AoLST~Yd2 z+oU3;1_yzZy^{KYCWUZd5q~ZK&OVRI{Ic4_@H(mdtGrJ(R(HmeqhRM`V!u*i+UW0s z2&zPQn7jV7EG8+9S7dc8W0t}XYbF46Zl4+myrc2heRv=m-tYuI(|!}Ro`>5nD}JVL z{0X3YGX3|$lNV0jA?D#ctKquF{)_d2U!snPa*XiF=**!iIT)-hjN>{naPPL=yl^`T zzlaM68lHeZCC-0vuN!|PitpYwHkywJSIo324fS~GoHeD0^QV3!jQSc;$*6}06$%>R zbj{Jn9J{5jPeKL{62q~z8?6?I4q}W_t!&^{zY;*=Pzl$4xO8<&)8rX9)iEj~ZVji! zFvzMHkTLOGhY zJKRq4YuGh*mqt+=7Gc5WhkJweztoS_mxis?wGzmuXMW?-Yv&G9Vcet%8FayQ&U)zR z0DdB#Xh#LvW+E5=@$tL}N7}a7^llTlsqZ~syU@$1K*)1wpqFr|(qJ037tjT0?B^TxRO{@MV^@ep;*ky|`lqH$Um zw%*ZW5KOpv1;Jr>w+K$)0R+)3MHUg8-G`a~5XKDPYqXU0X0_2BaHO+G*T8k6fB?np zU~tWif%nl-c{r{SEl#XnZTbmqLJEaQ_eIj%|E?b@8r_w=t`;6T&@A=a503#U9ge7b z!m}3@nlOtnS|F``7 z#iGgFXYJ`r?PV{cqX5;B^~~3B$=%idTy@Hg^u=QR}Vl`CVP7Kz(1D5BVC^#y~Qw;JG@#_K-wB{5V7?}~A8yFmC)XZAxP(gK8B@`Prjwj<~>sK=Sicmp+xpG!SXvvb${Q;@Qs`)3eKs%W5DHb#i*#Y)wlW<1xaKv!Ju1Vi80&13Z;4R8KRN|4D}b*ME;ig}vsP-iN>{&ru(4UMp@ z)pjaJkzBzoi=t)T#YGF@ZetD+JF`ku1KNce^dqu_W#@)*?XL<|s$|1yG3Zi1;J)Bj zsYbfmJFBe%al*v>+xM#0ia%FFb zZ5T`a>v77VeWCR(zp}{OHQ+>NrF7YJOI)-R?1o_J&(Box1KBGfrtFX>QQz(w1clCN zHj1j2>I43-`#lyHg3aA7<3UT#HaX`?!=z{6tBZ!nH&EqK2t&r#&1PTG{gneh7v z{exuGt-9iHv%2}2G*Qu*cD)(X4~)EUaZNHaDrlH|0egQA#TFLg7~5ONp2=ZlN-_?k zW^nCxD0bnEK{efQ+8c*4G(6nKgQ(?3T1{@iB#ZCk`mTNT?oW2CykxVd|DEut$`Xav zG$9o|&!zQfc@XPpTKLAI`f4pl?!<7Tgmw4{K_wxrL`Affrv^!7B%`x z3COJ2EF0@aIF62=Sa7Z%x-wd1t-sgWA?R}5d~mH&>+SxqIMHvqN7^Tb5o{!z7}Y!X z)zGIW4=;lL8|KOinwTn8HcAd2-$9K+%EZW31}`xrm5sIt*tS-n-G^sOkrW4FgPS9F za+RD-z_k^UkQUF#>#6Cu;tlv!!Bx^bWH|}CczDa3MPgR&2aJt`Sc%kc=afYFCW%%TyytxkyEiLG0+xg_#l>ab-?qnCEyQ+o7K&*KFdXQ)wQ=9lB~Kzw&MRV1*4~Z! zTNo#y@-1*$##Eikz5%yK(nw?L5xIC7VVT72qQJQih`0@&^ozX$$~h809zQ{7kNm!I z<2;kOQ6=uXR(y4DO(HpDw8+@__YJDgQpRmkQZ}!lKj?i9R=o)0`)v9*3ycqDyD9Xh z17LyCa-+AG2Cqza{-m(2Dz8Fidz^6GR9$;xIDywbK)ndaJb~BQiOs^afWVz+idW9v zF$Ax%KeQ0E1&d-O@e}cG*TK*CLD$=3-ijMx=Qc(VIGYGC$KnvLPnYenc2dh#9@Xwm zpne!$zsf6fX#@$&nnVNrt^P_6UD&3el$R0U`oXI?!J)Y%LdIPYRJ6WN5g3%|a?Efp^${^31tD95Xa?YZ9U6+WQ=KOmdo7iN#7OA$IJ zT2oZBZv>Kqr$k6X>e4!dvL>+f_+XD!^FQ_DFS3%bF4qso9>}@5+#t&JYwGW?iRZEP z({^`&9Ov0?I|A7`P22a9M;+~5879PESa_3P9(_L^KR)?2IR8iG-K;mw=6{0AJ_mB^ z(PjTPJBs#TWqh9T3XH|mRb#O>HN_?CuR3gi!YuH*`KUZsJ(GAb$ptJ&dNjGVrAvw- z^p=kRS4w%Y` zHhsoFiAlmHt9O7VVV}L3GkK+ECu9Ev)V!@Ii@UZ_I{yEx=5bk=%==Yfb<_G7~&ltepuF)8sBlB` zy_IW>pBM$p!e_bP9)r@khFv$FF58?!!1D6n9sN`F>#a;~X1Lj)_mttpDIlk)nEN=k zuVMcEi16s^ukFv!SwF0nw*as(nIT1q0_yOggWQhpzT02k`7D3P0AR@p&@lpe7SK~^ z6P=k=K&lAck>5ev((t>m=d3JXD2jG*N(4Z(_>G1-z?}n+Mv1_d=Sk}EJ?`8*fEYW;t@q_L?!VZk^(3lQVBT|XuW8f3?Qjyg}ZUT=daPYuCJ21j1p z6xmq?NIgymUyj(^jCj!O@&*Dov+l>>lFlmJj!^-Jx^p-c)Prb9g^xF6T?NsYz#s7+ z@V_pW{HN5?!aQI~YB~}HIx(e}$OX!9F_$_c+8`0=Xd$=-SS7(kSJG@yPz-iVP=}qq z$~@_5xN*|#9(nCUeHC*Q)5sCJ8go^~Sl-AQ0jSGppY!m(4W%%$@&x?m#vZ~`zR$}PuiGSEV5$f`3)}!^nO9Y!siI&pT&MQl^?a97Iqc+W@^1={oajc%*7cnxIv!KOvMMLqNQO&fX8+eD$; zg2BYSlbf9~1fNXI01n(Euuue{2LiR=REcc#^jbybG zxEpu=@;_~ajn0DriYp62c<>wG1(HF|Du_&I8H3`u(rv!Ch6cuP=OE!p6OOk-QP!^8 z1u}m9yooO7_;f(l9SxareDk@fU>QN4)aXB=9|yxr&^X>^-~j?@u@Vy93(z%P>83!s zV+pulh07OsjBAKAzM~5IDJXI%Ng$fL@IK48m2Zr9fjAXYSI28J)XbO6yJtHIGQ5S$ zpWyR$e{g2n|07C#_vammGpG4(w9qPHtmz^c(>abJMmZpdMBDbnV{^c{=2) zL0tcMSu*t$FD~yP9DxUS9~j>x;`PSv?xyTs8$t>mQv-4BIwEW$75x6rlaPbKLr}Y; zvzH&XU4W4Ixl8=6jix#qj+`Dc9trN$?g#FF8G@esKsRJY{LNWeaBug@ZL=t#iw3M!)6+ktQx@|M=BE0!S`NY}#$NIf-` zW1I6Uy&(Pxnf%&Up{ojMn;&1x2^pWCmvG^cUTAJ?+*c&YUx(4SK33mFbn`z8&C$ed zpjd%Opz&8_8?YO<@#<-&1UrIRfo(86Gx6%?$N5&|9+EZq`DJ?3Qe`C=>GU*{psnx| zWlf~hko8N)!9XXO@0jEgKLy6L5B}J25nwEE=SiIvlpCrq*4vhVxkln_JY#t!L4r5+ zHT~n%c?cLoY?6%XFM_%N9E;c&Y>ELDs3hL)qzKP$4;1y>i)XCR6QL6Z053_Tfo3q2 zQ?QN!@hsnnob(-37T|!w2D)wPCoffkK%+1v=icbT$NC_?-twCC^oC z1}&j)0CbUpIR!!DyKQrkjJ^Fg`1amJMLmS0fAoBX^!!rqjm7%R`gO_8gGJO@V`3+ z{_560afF~ZCYe+5?Wy#?API`7zrm25!uW5`O^--mA$v+>1P~#ll?C$1Jbk@v{tPFu ze25Oqj?qx&uWO+$n7=L~EE;5G#bRcuA@n(5sM1ofy8i}?9m$5y+{m_Sdd8EV2SJ%aixc=l#XQ;E(4Wi+cW}?)YM5T?wDKkP>KK|5^H9P>8I)m>e#Ek+21Npq1(9(HZ4mrq;eXQ(Daq^&|zX^HgBkllpxGMy7bFC@L zs7l~ZGD1ou*Pg~pL)at>7`?kXlvbQoI!>iP*ryH{6&6&ICqKSDmH@CGs2%~Y!o)y9 zielR4-`6q}UCt}uH+ACdm3K$|4hDm4|D&ht+hg@=$iFl{ZZkInqwO0TjoeF0{!@$C z*jUJznnPJ3kjg2vm#;vde+NAKe?q)BAt8|gYOQ>NA>UOd2L|{hfKJ2&D+!?T3WUnn z^%v{OWJqCw;nwoavLQamT{V^y;w2YWO+Zt_j9lZB5X%$^$KmgT%=lnxqt6Epy`n^= zO*Z6T1C|uF`g9-PM2Q!`aJSIf*!V^}37Sa(=zOaJ@(vK-!a^yO#1|T6y2|oOXI4#O zd>){QU|`#EB=|Ppb?bMJZchB#W$`)a@T0~rL)vBI{N26676pnc!6n|!zW@>hHuLlw z76gNNqrIqisg4ueV*7h^=#k&YT?tOuk%EC3KT?Ky?UEkn4VX1JJD$AfBH&amx`+huqD1 zpcN$t3JtKdM9l=y(^_SwCi8;zgMZQ7ATCFGc%x7w&@2FFToVEv+}kj8zDL2zfP&oB4dfkQ?pB!KVlz%Zqkn9ZWgpK< zrt)V)8Oj6h7SD%J_PmI(>&9#;n9vHkE6DC9Ql%Q&ZFND>bzc zzUL_sq^S!td@Z!a9t>XYfxeY>R}6-G{>`^4!|{y&1Bn<+1s}on|Ep==s{n$&{(c+K zYuW~5JvJo?l&39XFPwu?gN@jW$yY0LN|7O%RQ?WhoBoT-J-xk-;1D`=yfv9fwC0ak z3nfZN2>`pHZHL!7SAfe-WD>~^`du*g!^a6vKJ(pD`R7L?VN;!|#s7Ik<7pr|=1*Q( z*+k*Bo(0OEuK}1FdAkkr1TQfY0LCsSLG}o9UC!qtHjrB)!g!%?Vb8sarflFbKRnBS z6LOKlwUe~fbS#3n$#wp`>Va@T;ErTxEXTef|% zsWuc!cR~zh{NPv&w3f1jof(N>pl^XyS&Xg2LiLHVV#(mpTF|(9CX9@N zuQEFeMF<(d(+&)QaEwp571|IMmhy_{3oOuiwVI3M%uI;Zf*$F`wg2We2{j5G$6~>H z&oykNUR<3c8ludkgqCQe&$ku8OSYc|5!gZnN(QV7i00aYJz)3YhbwhTi)DK@bs({j z-XqPgix(z0pMwrgUjZJo2GyAM+hiI!Qi>oSZenVR7zg(s1ZvOFS$6!~Y|&8mPpR59EJ{ak@pq=9dEU z8XkS`fw%1IN)ld?@R(E-C=aPVRnzD$o9p0=3lzFG2C} zk*^U#5W@G~p-uxiB;O+~E6&8~5kL=|?`UUdH*N#gy02l|+S)9HYxvkWKR*wZw$zy+ ztmFSDW5~#ukDr3R+!kUk;|CSYf2*+lgBLlS-33f`5X{ik4=OE0@~by*@-Rl=exYqP z`397ToY2wH1%`qcs5Ap0_caJ{qiPQtNmf`S@)%fXiOze~!Pkahva1uA*f`ThOMzkr zUwA|kRIcy6g8&?PUNg^NuYD*jZGZ$B6AL^M=M98xG9G&8p!%xw%fDY97yXA9fE~Cl z==UE2aB1e z`TkjR)j9ucce$s3Y)LMeefdPS>8O$Gy|X71bKm^lM3*)^d+X9oSX+PS5FIWxHRtQP zebRY;U-~e$1?G;Wh71RmU{{Fg+~9UpXV%P2f!y|n*Gj)_nEzSSrLS-Ncwvw+zNMv1 z4k$To;zCFH=bL*CEAB+`-eu|hKL6$M=HJHW@mW#P;Qq<*?9t`FOn8M!nb)m66%*iq zYIxHLRF{;LmhBFYDZG;5sV!ee>_yDq@|bD->E>Ru1Z^o^jVwgtNX%)82oS)Q5o5Vm z&2|&a?0E6`x?)=DGpD1nJcAN`@3FSH`#b^EYi?zW*RxTUn8ruLO**IB=jQB1T$-S- zy>OgLxg=9+*TK!O^R)rSvq~+pV5Xq*_s#$3*i`!%ihRAU!wUvv-bBB3;Mt?&kUtSG z=j!S@aD4MWm#0dvroBx`OLK>~!z$@hi5yAlhlZ;5puWT%hmg%G=B2a&vR})&6l0fp@8X})MElsw1?%O1nsivmZoZ8_Fy){pIB-cEW4{1PiS+tYZ3oxu(KVZ18 zVY%A^nhMy&%rI+dYpaCl?(Vh_$%a&B86n^0y?Y82^7L@`vY&{#xgqr9+cL3l#bY2U z-2%M+ZY$bp2sb44^Z6z3nxy1z4a#NW&Y^}oauU26CWkQXYjzhn%?!LcvX$&6 z-^vlnAkzQ!&6YdAo9B3THo5OV__fmmoE(;DwtM@d%FW*iaQf?luZU!uIc9BUDFRGO z5p%QM5nmy3*>E{jqkUz(qVlONkIwBgG(+-azka|h!K`vKG!~d{$H$1Z@?h!a=}0G? z$U_w;HfNaboV@x~?o#$GXz9_-O-Db1x!yAR(C+i+K^t-MIuq%1CIKwcttYyqs=dh> z+Z^OI3V1Zr>Bur(Dtk67*LC|3kfg)rhWnm)fOh(&kh2nVTo~Lf7A<0Npy}TGwzwM76g6lQL4-VQpro4yX zGA|uOLg7&)!+GIf2&9c;5}?`12BZ2fJan}zsx1InmvZzeFDHiBoUhFut=(~Ed-c1wdCLK z<<%Q*p5AU2eJL95y9(oGXU@ zZaVt*(BHc@1J+OfGd5L;0t8wEN#RnqnTX4OOuU~`tu+qX=x>*@e>~w8AW{;}iAeKR zzrVk~?$n4eq~a|tig8X}S{{&~mFzU8jHlm1Gi-l!8Vs>go+_nbE~>r&&3EUG4^D<6 zk3RFg>GlQ-5tsfXo;e$3`=p$^W5zRlrlxMKA;c-?ei-3x%B%l0D}Ad&v@t~Vzjn=X zk$3r0N>chNmmA3^rk;h}W0n8`!zNbQB=HsD;3K)*31}eK2p196=W!sAC8{1URGk2w z_%d2<<=OH7Tu7dxn(T4{$nRyeeWl{~=;kVJ9=DRL(uq7b0{sv%oLKbs=|eCO=A>mh zN;aGYO?#(YQQB=NnplRwz!-o34B$&Q@%(|~0oD7r&TkGalYL0U>|$yGPgh^V{dHo? z>R~*+SXNlNUj-t=OVy^j4jE8IwglUJ;g6N*auW0?<6sbZYM)Cq6mvX3{q|5|DR?Y{ z+dNxz=s%0GOvpB?1zL3iFV0~L_GHh>jMcW(af)Xpb| zcnbY;6bg+l+8{S?ybB1N+Sl;M21ytKSl5kOdd{~2rq|4arccM+d&Lh-rTYdTYk?=OdASE(jql=#qAye;aBz&$-|pV4 zrw1HC8oz-J@duu7Su)?7f+o0-11wxe8kWC(|-8FD*4Io#7svOwY{8w zHR~!JQELP^aHUcoxH6F?5#RqhiWl!Zz;-;7%@nt`r_J2JEPT=7;CC1V-L1`ue>h!C zsdNaPPo9P8zHQqH#hamMf^w}Ntml$!mk)3-aE-1+)a{p9GIZ+*G3q`yT_#?^i%nKE zhK#3jK2Q2n)@w`}I&-G~>X)IQu`2}6R{eM$Z*QV8A@tAl1OF5QOSWzd#D!k56SfSd z1OyuKWby!OpF4VI@jTbpPMF>@Jr>KV4mr3S6bp32XZtx|vPESSBhz>NLe%_YasT*?ZOXqzN!zNxy;ytnXr>~>Osim`Uzs?4_ zPgt&RVCR>*zitKI`cjuN5-UHz3nfC|)SbE|Y5}9x5qk;AICc;Hw97B;3By0SYWzie zkpULRct;H02NL=_QtwHdBm7Qk_7(>RAqf@|HpvgC>|^uh`}QgG^!}5TBQ4UJh{;H$ z*IAf}m?c0ySw`h@RlxiVU8xH(SJ-(6ip=h((C| z-M3qMkLhlBw{1f>ndH-YB=;N=>zY>OFwRN*Y+#kT# z!0W7mB+K1E8k&;!d`wEbAwL}o!?Vvhru=GfOC~ymU$EOmJrBY@Bk_H4$T?No`-qZf zJw;SFaVUfmIHmxv)_^Ug7L5Xr$S9^f*k+Xe>t_n{L!Uy6BGRkcKuQS)pJ*MfQ(86JMQ37%+A_O_w37ic?!zmwS#MZun_yG? zvGBd#2bsQ;sW@S=UUb|Q6(nlI@dkW&D>pj+()1Y+MMMHms8t!TJ?eHIq4_& z{3wUYB2`WSyz@ z22{ZHmU;??vRG;xJf}@#R>VC;I`5s3AS&uiCa~5r3{X~jK8EINoOUd5Z&^io*o$+0 zS0j0PKuIcnA3B^Q?A$X&##-XM=61j_^h&>PJ0pxbOA#(c!-t5a`pEU9hXWtWaXnXt z#JIsz*nrNIz(C3hrby}tX=yPTrxUANx_0#rd2xNNEyB>vnn`W02BOgithc*&Pqhz= zI{0~W)cj1g+a1}}R0ABrBHbpcZ?GSD|5Ge3~V^1|1~wW@|HYh%OlSH`SSbxL#RQnxbq#Rc8AXFggzC@>FOk)Oga-?0Dj`OCW1r~W)^^FK_p;tCn$s!k#Zl`Dg2+Y6Xu_?obyU`= zr$YLSWuU)0`7m5(dM9m1Uaa8*h5pHet!OV6`H&EDcAzG_;jU@)S2WH8^ION^IppWN zaZl4=%)t;gs*aN%v~nf0*UMAUU{cnZkl4DShesPMe`FqtT8&=~u>(4Xt)J|bLSC<1 z_4dp=ar#%?N0dCZN+D8;^*zW#I4&!hG5^%Z*>1pgh3vIA#Ckj{d#;pbpz>X_k$rYX zQHk*Z7bXlFi=HA%IaaqIJ*bb4ZS6uf?eI480@U$6X4+LI(BS3N-0%kOJ4z+{55eW# z0Osl%psB{MqLc+cV5>f3Ek#*PH&=cLFyAc@=0xlF4ck{77j)cTT!a1|wbwCt!hooj zMqtZRsDZWOvHyBc9N^kBCdl)#3hgnXXrxIUGkX`2KsZZn7e7o}6Vg;mFK@LR4!bE% zpF781c9z`#wHsj0$>n_`D_~W~(4v{489a1xJ2$ z_`rOgr*S}m*vRnGmCp+r_#$wKib3$dNVcxvIkPGL+zim)q;(-emxx4_H(wB zT^Al`;2T)}1e56FY>l#_GKVtiq*8rD?7Sl#V)jJuc%7V?SGv9j5i}om6J_n96ARa8 zeWo>NI_@X#KE8tNMmO$~VzyTON@~^V+oM)~Ugk z-{9haHx zdT)lh*hVhcH}FGX`BsF)K@__Y9XHJ77!(s5hpgRX@^&+o_pm1wsk_6dUT1^s@%lA> zl7~GO# z2O~s^>2N2|19K^PyZ2qowi+D!#$nT7yzrPWwe~1%y`oIeaoAiyhkoEeTYs9N>eICP zr3}~Hr2sGBA#KRK*_TM)41HNCMi?8_L0*e!FF<*J44B_FHs7F4E1&48m3UyHt+uA* zhCJ<>$zEZK+Qnh%LrYs|p4yWqWE-Tt?D_&H%iF>c{U!n-1-q@JxcTSox&2Q*Ee`4$ z943mdPOn)=YU{Em0ejbNg9H!|mz5y}q)(*8;b!!T?}WL4!adil(F!sw zw)MZ5?pQ&nbXy;NqpJ1mHF@zeweXxiF?cHZxmtV{YW5+mfa`Cj@2Y8HL0~B z%+#lsCN{kCezko{+?nX3|3O|dd|(lgSwe(%SQwA`j|r7 zR|IQ)_C0KSr7naZ1~@Feb6*#63#9-I`XrR4{4>2gv-T)0Xf{qUZbyD#W92`s8O4-E zuc^xPAYw%8@Oo_(+n3d-itG4hidVVOH%Q)}wc3_EmM!YI7qP}VZ4%z!Py1n>c>~k> zQGD0@tJHQ(w_SjJu5;7J-N-{R&04F^FUv>=Khvqx4Z8TdtM>s%p&qbu0?B*OwNyt=3~`*zqkO)fd|7+K!`jZs%9ERYI zKkr+kz9u7n)V>f4Vc!VcOijX5JgII!jX%eiztQv>JR}OQQ?3U>){k~aYMJFrL-e%U zCexk`BBx>T^eZuq$^n`h&&O^H=sY5i-8HVM>!>|KnO1DwnK5DBw*IVY?L}N;%QMrc zucbIWW#+d^U*JhCxMj`2Z>qTUZ115Hhu?W=R&ILnCKdR#sTbsznQJXwP8{YQ+A|b8 zB7M|;M{3~hwRc$t$E+mYqv{w~YN>n`#_knKd+8{5@}V`c{HZUA(kpq0yF6&!`+3}p zQ#RAEmYUpb^99W=zc9LZuf;u9S9X2;I|gqvA2h^lYxX;W(7Uxa8B=g(c5$q?@rlZs zy*MjZhOui?KLB`_b_ezN^cJ*X);L?b4J$B?XKjE43&=8neuN-AUopx zzR@BKRf|{3JtoR3?=j}uc8@Hy2I!rt^BQ^*^;_E&!q9pp{SwkNU`jI*$<{b+pjRXG ze7*z-$Ul*t?7SZ)oSQOOePoT#Vt<$NJn(>=QT1tMB``3+4V6KwYsr|8A-dVdipxG~ zdHMTU1i^l-pla0Dh25BS%l@WhsbeAT_ zft?jM1k0+CM!08nr!TqVe0;@e3AxnF<>$q%3`s9 z@ANTktd~}1HK}_yYQjR}s!Nkg(w~`Ci0h4D+T@8ST2j?gZUZX!eV*GN)O)d$3AhGQ zFG803H^a47jp1v}NDP=rHyM2dn7F`#=Zc^GO;aj$2Tin}@n`$FT!jOHef7H)vqEOe zom@j?$SjPmMv=CgX?q*+xH9rmsm{?oq2&i6$SMmMSIga!jDLW~WDtRXqO`VTsJm%+ zA;TNLD}cFYaljpCf!n8oeKjB3*L7}0-_xyqW+D9wFlQCIzsvifel*s^5qpgVg*YfQj?QT;2KgF{ef1Xot{x#+f zzh0UtfiEEr0uKNqb$e}Yko~w{rJYGH?i!1aV}IAl`L0e3Q}wEzm<-8XeiH#Z8mluK z?>*=p7sq9y+Z$`i{@%t{l@Os{$nIHNlN!&t3r5@JHXqVsM-MA8(vCF1#55W)==uWB z-!?eq=W}U!B*H)|R(o=1lxv4uO+xyI@E*&oNHlVu;(GSNk&Ajiryn_wHK*P%&?Wxw z4Z%lQ&_?4xb{aK$&oDdOgPnPJv*dHCw0`xbwrF;zeT8_h|D(?qA`N~OEotH%@7WJr zKFk_fU-}S|wYrkqKkIMy?dL7-Qt@f0L*_kEw{Zot2VFc?ng90Hh5LH+zdtdlp{XLb zL7Kpgdm(EUiX?R#0dyRvN*zJKCS4~){B3s<|X z=B3NFLjGXWx;=MzrY)r4DX%Jr$_h(}zN9aQY`mBnSJTF*%$Q+fC9AEVQHk=7PWlmR zFQku4W7erZS*TjnDywOEx7sR^kI5UfGU#aNzQJ-$pX?)jm}T{nr#+Yb+~%1gw*T1wo-27&pCyH{WV@TCEd;wlnM!_^{Ux`)^Hzv%B*i1 ze7$6Z`JXL|DysRt{L#8%#PU_=K*zzlz4Vue_X3f{D8KyoDL{Alt@f7tFD^!upm* zT)>Qc&#m#is?1w_Nj^dBVS26`9gf ztbQ0yeJn03&&$ps+1ZlS!W7q3kFyESRr=UI@sDdu1M4qsSB9f@JytawUNg3UZ(bZ_ zv~&*+FRb?*{I|&B$t=7});cYQUS;VJ-a}bK+fH(93lG=MWD)9mkof2U4SMBlk)$SW z;6v02WSPSfj2N9pq7X0G#m+9hRU58k4m7_gWPT_d2y8rs!!m`=V$eB_nX|9%`O=#d zYj8s$sg34bg14PzaM9GdMq?YyE{nLvs_=t5v#8C%uvy;$PeN;TQAkB$yKl1PRZNH- z^3Q6062>!)XkLyr4=li`lPE|lI7x3faWHAJ9bwsW!9ED?sMshrG3AT7`~AJPiFFU1 z8vDi(U0-Nz%L%tfNm@=Utj;c(Y1-CM?_mcz>H>UoJk!Qv=bh`*(G!I>$UiL|R@&p2 z)E$Kq?0ixJM6V9JVh^M58B{7M)xn7s&h%>BtW_eVeRcK_#TsczLyPOc zp_Ch~^|ML-4s=vOh2`RkXW{i)4<_JPwMiOO|M_s=60eUPGQ{%I;PxAb zq>~-8y3cr$6>1kpHF{tJL?eywcA3fI7exg_l!B$Ws5THw9#?q1npdqRJ`O z<=%;wFFC;Dvh|a9(W^71&y*=o+!|lq=@ z)C)a%{Z>*pD#+nv3oh4vy!sBq0fm0mqj0rg!NwCk>_&O@B%q+Uv6MLAa&PukIQ`xU z3^7}sPH#uHs*W%Crs!2J=$*k6lkee=Bs(-32+g`!N*d%9kjNRy_8R`xbL((h&4Lzm zbdUPLLdBdxeb$;Psc>Nl>)xe!aKMe^iVHSbOexpEDUt7Lb1x0XSYo$U#xdA1(YyHR zLd<&gJ27;yeT{d`*ww4G+lDH|i~8Lh(h)@Q3+7FX@4F{&XD?{^x-Sj1%|=&$^dyDT zxunAIp`fTtQ5#}uZ{Z@_tvd{f`LVl0+?lbeNKUGmy2U`f6VD4*JUE|kCgFgctL&Ko zVhlvM|HPmk_i*M!cdtJqN4K3+) zpvRJP?^Nxq&Co0Z?=dWB03)x$YU|f3{8|&?L!TVj8qP2eC}C0 z-x}g;zt7iq?T81y3Avln{_m3yH31G;%qqO&OS<<2u`gw)(jw-X3Z>>=#X8rj-qkm& z6|*)4$7YUMz#Uj^tE)pRhV5g;?#V;m0b{-Np0b5uNn30_EMj4>?8IcDbB(W;h_9uk jq@8La>e#8Lz=Hxj@4Q&fnA+Tg_}kFrV(Iyt|NQ>|DQPV` literal 0 HcmV?d00001 From 5a26ce23dc06f0f81b1acfc9627701416ffd2aeb Mon Sep 17 00:00:00 2001 From: Ezequiel Bruni Date: Tue, 8 Mar 2022 21:09:08 -0600 Subject: [PATCH 2/2] Updated my nginx guide with a link --- docs/guides/web/nginx-mainline.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/guides/web/nginx-mainline.md b/docs/guides/web/nginx-mainline.md index a2fe16303d..fabcbe51f0 100644 --- a/docs/guides/web/nginx-mainline.md +++ b/docs/guides/web/nginx-mainline.md @@ -280,7 +280,7 @@ The time is coming when browsers maight even just stop letting people see sites ## Additional Configuration Options and Guides * If you want to see how to make *Nginx* work with PHP, and PHP-FPM specifically, check out our [guide to PHP on Rocky Linux](../web/php.md). -* Instructions on multi-site configuration are coming in another guide. +* If you want to learn how to set up *Nginx* for multiple websites, we now have [a guide on just that subject](nginx-multisite.md). ## Installing the Stable Branch From Rocky's Own Repos