From 349246cbd7b03216867a2180df2e6e2b617711d2 Mon Sep 17 00:00:00 2001 From: RangarajanSF4077 Date: Thu, 6 Nov 2025 12:56:19 +0530 Subject: [PATCH 1/3] Blog-977327 - Adding sample for Role based annotation. --- .../AuthenticationService.csproj | 14 +++++ .../AuthenticationService.csproj.user | 11 ++++ .../AuthenticationService.sln | 25 +++++++++ .../Controllers/AuthenticationController.cs | 56 +++++++++++++++++++ .../AuthenticationService/Models/User.cs | 25 +++++++++ .../AuthenticationService/Program.cs | 36 ++++++++++++ .../Properties/launchSettings.json | 41 ++++++++++++++ .../appsettings.Development.json | 8 +++ .../AuthenticationService/appsettings.json | 9 +++ .../AuthenticationService/users.json | 17 ++++++ .../Role based annotation/RoleBasedAnnotation | 1 + 11 files changed, 243 insertions(+) create mode 100644 Annotations/Role based annotation/AuthenticationService/AuthenticationService.csproj create mode 100644 Annotations/Role based annotation/AuthenticationService/AuthenticationService.csproj.user create mode 100644 Annotations/Role based annotation/AuthenticationService/AuthenticationService.sln create mode 100644 Annotations/Role based annotation/AuthenticationService/Controllers/AuthenticationController.cs create mode 100644 Annotations/Role based annotation/AuthenticationService/Models/User.cs create mode 100644 Annotations/Role based annotation/AuthenticationService/Program.cs create mode 100644 Annotations/Role based annotation/AuthenticationService/Properties/launchSettings.json create mode 100644 Annotations/Role based annotation/AuthenticationService/appsettings.Development.json create mode 100644 Annotations/Role based annotation/AuthenticationService/appsettings.json create mode 100644 Annotations/Role based annotation/AuthenticationService/users.json create mode 160000 Annotations/Role based annotation/RoleBasedAnnotation diff --git a/Annotations/Role based annotation/AuthenticationService/AuthenticationService.csproj b/Annotations/Role based annotation/AuthenticationService/AuthenticationService.csproj new file mode 100644 index 0000000..f5697ef --- /dev/null +++ b/Annotations/Role based annotation/AuthenticationService/AuthenticationService.csproj @@ -0,0 +1,14 @@ + + + + net8.0 + enable + enable + + + + + + + + diff --git a/Annotations/Role based annotation/AuthenticationService/AuthenticationService.csproj.user b/Annotations/Role based annotation/AuthenticationService/AuthenticationService.csproj.user new file mode 100644 index 0000000..4cb34cc --- /dev/null +++ b/Annotations/Role based annotation/AuthenticationService/AuthenticationService.csproj.user @@ -0,0 +1,11 @@ + + + + IIS Express + MvcControllerEmptyScaffolder + root/Common/MVC/Controller + + + ProjectDebugger + + \ No newline at end of file diff --git a/Annotations/Role based annotation/AuthenticationService/AuthenticationService.sln b/Annotations/Role based annotation/AuthenticationService/AuthenticationService.sln new file mode 100644 index 0000000..951468f --- /dev/null +++ b/Annotations/Role based annotation/AuthenticationService/AuthenticationService.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.9.34723.18 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AuthenticationService", "AuthenticationService.csproj", "{7FC0F7C8-6F5B-4FDC-B22E-55CD333E0FA0}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {7FC0F7C8-6F5B-4FDC-B22E-55CD333E0FA0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7FC0F7C8-6F5B-4FDC-B22E-55CD333E0FA0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7FC0F7C8-6F5B-4FDC-B22E-55CD333E0FA0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7FC0F7C8-6F5B-4FDC-B22E-55CD333E0FA0}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {7D63024A-BC8C-4438-AC15-FBD2D739D9FC} + EndGlobalSection +EndGlobal diff --git a/Annotations/Role based annotation/AuthenticationService/Controllers/AuthenticationController.cs b/Annotations/Role based annotation/AuthenticationService/Controllers/AuthenticationController.cs new file mode 100644 index 0000000..a7b522a --- /dev/null +++ b/Annotations/Role based annotation/AuthenticationService/Controllers/AuthenticationController.cs @@ -0,0 +1,56 @@ +using AuthenticationService.Models; +using Microsoft.AspNetCore.Mvc; +using System.Text.Json; + +namespace Authentication.Controllers; + +[ApiController] +[Route("api/[controller]")] +public class AuthenticationController : ControllerBase +{ + private static readonly string _userFilePath = "users.json"; + + // Register the new user with the credentials like Username, Email ID and Password + [HttpPost("register")] + public IActionResult Register([FromBody] User newUser) + { + var Users = LoadUsers(); + if (Users.Any(u => u.Username == newUser.Username)) + { + return BadRequest(new { message = "Username already exists" }); + } + if (Users.Any(u => u.Email == newUser.Email)) + { + return BadRequest(new { message = "Email already registered" }); + } + newUser.Password = BCrypt.Net.BCrypt.HashPassword(newUser.Password); + Users.Add(newUser); + var json = JsonSerializer.Serialize(Users, new JsonSerializerOptions { WriteIndented = true }); + System.IO.File.WriteAllText(_userFilePath, json); + return Ok(new { message = "User registered successfully" }); + } + + // Existing user can login using the credentials such as Email ID and password + [HttpPost("login")] + public IActionResult Login([FromBody] User login) + { + var Users = LoadUsers(); + var user = Users.FirstOrDefault(u => u.Email == login.Email); + if (user == null || !BCrypt.Net.BCrypt.Verify(login.Password, user.Password)) + { + return Unauthorized(new { message = "Invalid credentials" }); + } + + return Ok(new { username = user.Username, email = user.Email }); + } + + // 🔸 Load the user details from the local storage file + private static List LoadUsers() + { + if (!System.IO.File.Exists(_userFilePath)) + return new List(); + + var json = System.IO.File.ReadAllText(_userFilePath); + return JsonSerializer.Deserialize>(json) ?? new List(); + } +} \ No newline at end of file diff --git a/Annotations/Role based annotation/AuthenticationService/Models/User.cs b/Annotations/Role based annotation/AuthenticationService/Models/User.cs new file mode 100644 index 0000000..472f9a4 --- /dev/null +++ b/Annotations/Role based annotation/AuthenticationService/Models/User.cs @@ -0,0 +1,25 @@ +namespace AuthenticationService.Models +{ + + /// + /// Represents a user with basic authentication details. + /// + + public class User + { + /// + /// Gets or sets the username of the user. + /// + public string? Username { get; set; } + + /// + /// Gets or sets the email address of the user. + /// + public string Email { get; set; } + + /// + /// Gets or sets the password of the user. + /// + public string Password { get; set; } + } +} diff --git a/Annotations/Role based annotation/AuthenticationService/Program.cs b/Annotations/Role based annotation/AuthenticationService/Program.cs new file mode 100644 index 0000000..48e3876 --- /dev/null +++ b/Annotations/Role based annotation/AuthenticationService/Program.cs @@ -0,0 +1,36 @@ +var builder = WebApplication.CreateBuilder(args); + +// Add services to the container. +builder.Services.AddControllers(); +builder.Services.AddEndpointsApiExplorer(); +builder.Services.AddSwaggerGen(); + +// ✅ Add CORS configuration BEFORE building the app +builder.Services.AddCors(options => +{ + options.AddDefaultPolicy(policy => + { + policy.AllowAnyOrigin() + .AllowAnyHeader() + .AllowAnyMethod(); + }); +}); + +var app = builder.Build(); + +// Configure the HTTP request pipeline. +if (app.Environment.IsDevelopment()) +{ + app.UseSwagger(); + app.UseSwaggerUI(); +} + +// ✅ Use CORS middleware BEFORE authorization +app.UseCors(); + +app.UseHttpsRedirection(); +app.UseAuthorization(); + +app.MapControllers(); + +app.Run(); diff --git a/Annotations/Role based annotation/AuthenticationService/Properties/launchSettings.json b/Annotations/Role based annotation/AuthenticationService/Properties/launchSettings.json new file mode 100644 index 0000000..177484d --- /dev/null +++ b/Annotations/Role based annotation/AuthenticationService/Properties/launchSettings.json @@ -0,0 +1,41 @@ +{ + "$schema": "http://json.schemastore.org/launchsettings.json", + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:19872", + "sslPort": 44310 + } + }, + "profiles": { + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "launchUrl": "swagger", + "applicationUrl": "http://localhost:5063", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "https": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "launchUrl": "swagger", + "applicationUrl": "https://localhost:7132;http://localhost:5063", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "launchUrl": "swagger", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/Annotations/Role based annotation/AuthenticationService/appsettings.Development.json b/Annotations/Role based annotation/AuthenticationService/appsettings.Development.json new file mode 100644 index 0000000..0c208ae --- /dev/null +++ b/Annotations/Role based annotation/AuthenticationService/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/Annotations/Role based annotation/AuthenticationService/appsettings.json b/Annotations/Role based annotation/AuthenticationService/appsettings.json new file mode 100644 index 0000000..10f68b8 --- /dev/null +++ b/Annotations/Role based annotation/AuthenticationService/appsettings.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*" +} diff --git a/Annotations/Role based annotation/AuthenticationService/users.json b/Annotations/Role based annotation/AuthenticationService/users.json new file mode 100644 index 0000000..972f541 --- /dev/null +++ b/Annotations/Role based annotation/AuthenticationService/users.json @@ -0,0 +1,17 @@ +[ + { + "Username": "John", + "Email": "john@gmail.com", + "Password": "$2a$11$1zW3U/d6DC56zxifl8nATuGMQ8zhM8gmyx1t3fFtXAQg8a.xD5cBG" + }, + { + "Username": "Andrew", + "Email": "andrew@gmail.com", + "Password": "$2a$11$lu2VT2RXFNqI5Up8DYSkUuo1nampE5REmWJXQEcsvD69.icuTXUta" + }, + { + "Username": "Janet", + "Email": "janet@gmail.com", + "Password": "$2a$11$42zEoWxWxtReaL3Sgs9haer9Uxb3OnrWa1FM0T9icweSJphEimy/q" + } +] \ No newline at end of file diff --git a/Annotations/Role based annotation/RoleBasedAnnotation b/Annotations/Role based annotation/RoleBasedAnnotation new file mode 160000 index 0000000..68c52a0 --- /dev/null +++ b/Annotations/Role based annotation/RoleBasedAnnotation @@ -0,0 +1 @@ +Subproject commit 68c52a005c28efe22e73f567fafc3b262841cf18 From b0ba4d1dd97e547d262bddeb14c456a045ba4025 Mon Sep 17 00:00:00 2001 From: RangarajanSF4077 Date: Thu, 6 Nov 2025 15:08:39 +0530 Subject: [PATCH 2/3] Blog-977327 - Removed unwanted folders --- Annotations/Role based annotation/RoleBasedAnnotation | 1 - 1 file changed, 1 deletion(-) delete mode 160000 Annotations/Role based annotation/RoleBasedAnnotation diff --git a/Annotations/Role based annotation/RoleBasedAnnotation b/Annotations/Role based annotation/RoleBasedAnnotation deleted file mode 160000 index 68c52a0..0000000 --- a/Annotations/Role based annotation/RoleBasedAnnotation +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 68c52a005c28efe22e73f567fafc3b262841cf18 From 75719daeef9643e25db530c175e3ae0406c40340 Mon Sep 17 00:00:00 2001 From: RangarajanSF4077 Date: Thu, 6 Nov 2025 15:10:18 +0530 Subject: [PATCH 3/3] Blog-977327 - added the client sample --- .../RoleBasedAnnotation/.gitignore | 23 ++ .../RoleBasedAnnotation/README.md | 70 ++++ .../RoleBasedAnnotation/package.json | 45 ++ .../public/Annotations.pdf | Bin 0 -> 107797 bytes .../RoleBasedAnnotation/public/User.png | Bin 0 -> 24852 bytes .../RoleBasedAnnotation/public/index.html | 43 ++ .../RoleBasedAnnotation/public/manifest.json | 25 ++ .../src/Authentication.jsx | 135 ++++++ .../RoleBasedAnnotation/src/PdfViewer.css | 91 +++++ .../RoleBasedAnnotation/src/PdfViewer.jsx | 383 ++++++++++++++++++ .../RoleBasedAnnotation/src/index.css | 10 + .../RoleBasedAnnotation/src/index.jsx | 13 + 12 files changed, 838 insertions(+) create mode 100644 Annotations/Role based annotation/RoleBasedAnnotation/.gitignore create mode 100644 Annotations/Role based annotation/RoleBasedAnnotation/README.md create mode 100644 Annotations/Role based annotation/RoleBasedAnnotation/package.json create mode 100644 Annotations/Role based annotation/RoleBasedAnnotation/public/Annotations.pdf create mode 100644 Annotations/Role based annotation/RoleBasedAnnotation/public/User.png create mode 100644 Annotations/Role based annotation/RoleBasedAnnotation/public/index.html create mode 100644 Annotations/Role based annotation/RoleBasedAnnotation/public/manifest.json create mode 100644 Annotations/Role based annotation/RoleBasedAnnotation/src/Authentication.jsx create mode 100644 Annotations/Role based annotation/RoleBasedAnnotation/src/PdfViewer.css create mode 100644 Annotations/Role based annotation/RoleBasedAnnotation/src/PdfViewer.jsx create mode 100644 Annotations/Role based annotation/RoleBasedAnnotation/src/index.css create mode 100644 Annotations/Role based annotation/RoleBasedAnnotation/src/index.jsx diff --git a/Annotations/Role based annotation/RoleBasedAnnotation/.gitignore b/Annotations/Role based annotation/RoleBasedAnnotation/.gitignore new file mode 100644 index 0000000..4d29575 --- /dev/null +++ b/Annotations/Role based annotation/RoleBasedAnnotation/.gitignore @@ -0,0 +1,23 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# production +/build + +# misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/Annotations/Role based annotation/RoleBasedAnnotation/README.md b/Annotations/Role based annotation/RoleBasedAnnotation/README.md new file mode 100644 index 0000000..58beeac --- /dev/null +++ b/Annotations/Role based annotation/RoleBasedAnnotation/README.md @@ -0,0 +1,70 @@ +# Getting Started with Create React App + +This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). + +## Available Scripts + +In the project directory, you can run: + +### `npm start` + +Runs the app in the development mode.\ +Open [http://localhost:3000](http://localhost:3000) to view it in your browser. + +The page will reload when you make changes.\ +You may also see any lint errors in the console. + +### `npm test` + +Launches the test runner in the interactive watch mode.\ +See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. + +### `npm run build` + +Builds the app for production to the `build` folder.\ +It correctly bundles React in production mode and optimizes the build for the best performance. + +The build is minified and the filenames include the hashes.\ +Your app is ready to be deployed! + +See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. + +### `npm run eject` + +**Note: this is a one-way operation. Once you `eject`, you can't go back!** + +If you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project. + +Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own. + +You don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it. + +## Learn More + +You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). + +To learn React, check out the [React documentation](https://reactjs.org/). + +### Code Splitting + +This section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting) + +### Analyzing the Bundle Size + +This section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size) + +### Making a Progressive Web App + +This section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app) + +### Advanced Configuration + +This section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration) + +### Deployment + +This section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment) + +### `npm run build` fails to minify + +This section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify) diff --git a/Annotations/Role based annotation/RoleBasedAnnotation/package.json b/Annotations/Role based annotation/RoleBasedAnnotation/package.json new file mode 100644 index 0000000..16c79ce --- /dev/null +++ b/Annotations/Role based annotation/RoleBasedAnnotation/package.json @@ -0,0 +1,45 @@ +{ + "name": "syncfusion-pdf-viewer", + "version": "0.1.0", + "private": true, + "dependencies": { + "@syncfusion/ej2-base": "^31.2.2", + "@syncfusion/ej2-react-dropdowns": "^31.2.3", + "@syncfusion/ej2-react-pdfviewer": "^31.2.3", + "@testing-library/dom": "^10.4.1", + "@testing-library/jest-dom": "^6.8.0", + "@testing-library/react": "^16.3.0", + "@testing-library/user-event": "^13.5.0", + "bootstrap": "^5.3.8", + "react": "^19.1.1", + "react-dom": "^19.1.1", + "web-vitals": "^2.1.4" + }, + "scripts": { + "start": "react-scripts start", + "build": "react-scripts build", + "test": "react-scripts test", + "eject": "react-scripts eject" + }, + "eslintConfig": { + "extends": [ + "react-app", + "react-app/jest" + ] + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + }, + "devDependencies": { + "react-scripts": "^5.0.1" + } +} diff --git a/Annotations/Role based annotation/RoleBasedAnnotation/public/Annotations.pdf b/Annotations/Role based annotation/RoleBasedAnnotation/public/Annotations.pdf new file mode 100644 index 0000000000000000000000000000000000000000..786d19caac355161241cc5f8c57711993bc09092 GIT binary patch literal 107797 zcmc$`1yo#Hwl)d`3+^rj!L29?DI~aCf;$QBF2OZ8!9BPI2<~nnxO;F5!6mpqNKW5A zeedah_wT>oc#M&%wRh(J)|&RsIja~@zZMl|2C;CWQm?I#OrRohasgNYHu~nMe0)Gz zGixI~dowp9LjVXU3jncladC42UjaC|fnoqoHZCwLP#(YrRDSv&b`UpE5}*a(;ARJ~ zae#FA`B9Cm4WEDj|Lq4A3B=0w_f15N3~UUIUhCOgIXrGDVq@uKW$gf92fns9GBh)A zw6O<(*!cN@;%1hPM)p8)OFc)U-;V&LM78)t#o0y0g}~wvF;=jcFuSNQr??o1lZ#!9 zlM^Bafe7*czf0%< z8yiOeC*+re(xY_%Aa)Q?+11tvsIF*a3{=ws0oVXf7I1L1H`230MKWE|*Ehs?`&R#L zEgTjKvLF*JprZheQeUu(8RHnYTb~D+ved7hR@NG+5oR*T7Qt>q14q zx_^uC9VW!o6QGClwY{tN2s8J+uU!G=L-NuRG$JdMjuQ3`D$=8||Jd#ivpYEI**m(} z8yTY_v7#bTQ;WS4M@9N?uK54p^3l8Otbh0JU%3sy24el2X+a!M0R`e>11bTyKtNRh z2m<*B!@YeQW$^axbys^=JL@s#Gl6F?N8obSa%fPGucr|T3h&!aqzS5c-V_oDk58r$ zOt4U;AYi0@_8L=?5vGDjohr&V;|kLONdmS9HX5Ef$TOT-_E7y(xe;ropDU^<3`*h! zXKiic=%58+<#^iTaqnLt{}khYT>lF2$Ln8b z0DwSGUVW4U{o3I1{SSH2AM&6-Iat7K00=vXg_}(WC}D5oWc$QQNVM*&)UIO&)&$|!1Z_H{}Oy;DY-|^()%Z1j}-T)=ieNpXyjnyWN%>fM0#Q_juJ|a zkHq%4mQZ4Sw9T&*KC#}Tah~>Pd-He~{7W^UvhvgVcT6cOgC5tv6nVV=$U5L(R(O2! zwY`mjl98hp@R8qv%0@1ZKq;%oh!N2Ns=v}VH!^sFm9lz7V*Q26|M>GrY)^*(umY9! z^c|k`eB!jHIQx49aXm@@5kbOFih?-6EUW-7R@TQ?HZVI2EB7Ofg1J~Y*f@0linO0n z;tBVuqWr{I^h5v$&Ce!3A7T z5%>?50Ti>=K4hY&xA-3aNre9DS$5Q;<5DUbkEdFHiO(Ggg(7V!emz%XjPr z%6s9#vDNp%Otv0)-##%#d+sd@;Pb6QlRxsTSryyyU)lCg{ll*)1cNyq`y;(@KIXS2 zk`mHiY4()Ye~ubXFbkODk()W5qJ$It_zrobCUyV^Cp!xm^vF^FGe9_4|EY$5Lu38} z?*CfL|I+YDUCu}H{C!r=UuR{1q)`qo@Z(`QSlHRQ0rp1!MCm79{Ha({Efo=3+De?(SL9!I|u}LB)BJcK9-%Q)jxCR6OsQ}Gd3_M3+H3W za6Hd&`5J?P_iPX2F#@ zWn14#v%F>@6doQ}O2VU|$@iE^Uj1_$=<#!>=)c!)6d;nh0V5V8qd2!=3VP#a^;}6+mJ*BCyj+3IqU5_&vv5cVbe=L^M1o6OM6ry5lFbg_0f48k0J5sOfVPtvBa~oaI*h({rj6ULG1s-nSX<0{sZqXooUF% zX~fC_;dm^HhV0DjtcIM-dTfwKk8gzla z20XnaMQ0=qV#b*ZJ=bfChNv~RACWv@r%(=Gv9e$pu6~d!I#{urcrq#$=cMu)Nxu+# z7Hy8kutzS)-wXw<_W4|1x1Ft}F+V)9PkGAe;Z*jBB8d{;1*N2m+mX9->z+Yr7 zJ@ztyrN62}vmdjP)!XjDW&&K>5dFu4f4p5qfNKIDfY(|MdjW zK=0}9QzQ1j?PoS(q~yBy>^3Us^@p+F;m3kGM(yt zQ0bpgZsVzzr5Ry53%>37~|AAt8muLNE={ zr`xz!r+46t!Lp``6Bg5QIZ|%ccA!PuP|{|g|E{^o31%-g6TPTp9CtF^f+rZ0n?Y^W zEm{pm=lhJ#d*UBDNo72^2T)oo3E3e$(Vgt`X0GO~8IFE8CR}lbzbPfrZ_SK6^%jR- z8hs+iVpQyf7J0=_u&CBl>}TSkaTBJMz96l}Pdle!N)DWJLHq{IU&z-{+h9u=l_`>!QlTN{b(6AB>%*lZ;W&SUrHbDVB@3Q1W6QtI0}N>S+*-@P1dr) zFh4s^zO656yveLPbM;$U?Baqsuk|KaUf%||bSxey*j`sERpb=}$1%Y5fY}^;cxdDx z2A3aR1Pa%cDWzg)w~q#0Z5^)iXIkMpA#CU*hcEtf_nYIiYn z0;{Hkgc`F-&%91fZ@q8(3Q^&0o^|Ty$db~F0@-~8HqWF}$ad$N$pliPg`ce2o~t2! zEE#PY0p8<{fi)G#D<}S11vNfrvQ+hiOM~T=HLq?JA807UUbFbW^4in5@@KDcay}J% z?x&f81N4-Eob3NB1^;K`1NnP_e0=h60q|>*_=U^-3-}*t_1_vK_y#IaeOOUM$Ci{9 zV59fDBEZluHT)r@jiTTY+!B+|Tpo)j_LBf3UHL(mrLJv&V)hm%V!rM|XkjZ4?Cbl-4o z)^vULki#UmUarl6p?hCe%^_oN_v+zCp$ndF7j4%2TyJSZw(ce>WEqvv>*mh&6Laj( ztV7#BH&~?fLYtV-RMrm2Rs#}i6xd{~Mf2=P#OcFQSUwGzN%I%v(b*@YDp4xxC3kS+ z;*TcK8ubphpf8brw$`>W719V5yvUti9>Wc&k`+5LJ?H|zOr(UUt~U#Nm+l-_FBxXV zMI-7?t5c-t=_-WW1f9WCw!X0mEf1$S7nt{^%(kiBR3v{`ysMbX=*e&%qVu|%F+8E9 zaK(|9Hc-XW(^k)^6E8+~lj|Hde(P>nz}C25y)Azo!3>O%g&nahLqbM!WhFZcQ%}qa zk4J_@q240P%by@A3pjjx`X@mHTF?dR@GZSC7Tu zoiAs(h7ctSWXDa19x-y=vx(>c9l9VR?7eo(Rr8I*6NzM{R$A8S6QE&Vj{5Z6n#ob3o}y6!zCmmJ6Lj z>|=h`pjIBO%Wf=I0m8Yvg>Z?^GgkIjn#v{)W)jBF^&>jPoGMM!KBz#93>B+FVpyxL zE``E@I!bD^r91W2XZ;)!nP}<6AA{mX1z9FP4MYs^Aw>tLk?}|5ixfK`iBCDvV!?T! ztg&Sha4Hb^bBX(lA))bcduSo1Cq_jy7)nwc@(_)>xf+d!(Xv*Fx&5UBiCsq^e+f;Oq z2oO9EGH^e?THt-74 z$q1R0u)d8BGzTw6P--1a$!jyhi&!5mz0}2@LCz>yO+P8*uQqJwG!X;R6!R<#CLqCnesT+Y7CWzeR_ZXKJLYWiZOo-XTj@k~8Myf4*q@I33{oU9G#i9>n$j@=jU7f=)ai{We z2*j5&q)0!N;#Mz5{~cY7W9xYQ+hzcww$n;1i2R2FlrK@_tfx7@ymL#6^7?xkf_N?I z&e;?UZbQZXq|)WFn#vh7`3sxvPf1H-jZ}F*Fz@0HxW$(~U~k{n*;B~K-*~lO&mTj& zXAkP{wcerK_7_rPeRmuUl|@MJOwJMenC zR+py)POI%CAX1UkXW)WkSq-u;nVcoQrMlqmi+(VdGt8wBG?F zkK##?<%Wl@oQ~MQ1_(VUp_N7MGUPV^n$qW{qheX}Z1M;2^SQP_!El=wZ@pxgnj(t% zc}IQxw+3rfC(ii1^C~x@S5o=GVqBC|OfIo1U#Cjd7XQ}K zHc&PhMk%c?t00s4oi63(PsA73TY0us_WY0@$KA6b@zX8Gm=R2ZHpsQEtlAKs?7(JP zmErJ`k3tgh&h1*CK#u%c;}uhS1lk~9R1>T9(t}z>N~v?a%yM&->wKWO`a!aXfzppD zfBupw!;bV<#=~7^&`u+##xr9aGN;AsUtg?4*{E~X9n#;2C-}{Yr|Xa&&4pE+?oHeX zEyH@`yRQcvcp|=`&e~tNAAl5}%&?|swP2HagOj5NgrO_ETQSXfeR+)tEzWO!LtF7lia@syBv3XG_7MHml-|u*FF3yY} z`bG}gvdaerh{%wh)wXWF-bq96KeTvI_F=)Y zXaP%Xyl<-<9A?sEFKpPPDYC}bfM-^iV4k_h<7u4an2+N%oY^l8CL<7K+k1Q0D(7!1M}W_IY}-hQj$FI(bE z&AS{sN<4pnwnldE`>T25PvhM`Zyf*I0E756z(99ErTzuruW$GMPbZ>(3Ha|!ME?@- z-`VaQQ%Md*MN9SKS}E@+Qt~)`mZ*v^nl3`Z^R`rH(rWp3AR@Y5JGF>g ztz)icbm3ZC`}Oul?$qqtRl2|r-X9)6nwpoX0Zhogt4tKSXrXoIj&mjNyZAPZt z#6}rDE*p(*Xzz`Zn#SgFrPlS)4M zfCFD{z!`$fJX!;?hiFhb(T2aEu~+RmGJUag{6u$R!6fmaxwp(5BXEhppPufETZ$=5 zH&bLd{P$t10QI>sA=X9^d-FA zarhQ=MZ};0Ji$#4*u2>DB^@b8M~1CleZj8>>DrOgG{N*}mVVlV5W{nwlHr8sZdvf!4O+l42VnFZFO2e?JzU)J=ER zgV;*{g&gwjN1xDPFdMV7%&20u$xtMwFGW)S(!pk;_a|O`!U=m<&Ag8Wn8WqWID*9F zD-7REG34^ivfJpe=Z&cSX4f$CVQ@f8W##7sI5HBV1*XxwQ~XXdKa(Cp35N+oIzGFg z9=;}!D4Gy*CIA;MGXzls9tke0uG7HXFn{84##MGeiYcQDSZp)hbLL zoevxhj4z>Q_acVzByfp8Y*gVCJFq;l%?fxI^1twlpYy?`~jrIGR)h znFUm{Mr4K~yeiA{&5VKBNK<@wduCG5y&$9{^^?UZ$KA(!k#}%OOxZ!@VN0@T3iRoi zT3wuDosPPDJ1RSyxkA7CIQV(1o4Xo>)DqRT)RY{`z3ilIhhP^iOvp=&nrWEQ z+dG)AUzEupZqG3_QR=*mKKfjITd8q~KPV)9pC27ZN2K|1grs~0fm9K;#caiB}&D~(;mCxyO_H@LM)}j7q$d#Uql2NDb=Ju@r9#ODu{(S ztdY!|SmN}ebi^|dnU=Ujq==H2^s`BaXG@tXfx^$sjvFsk!(#~9eJd510{KRbLteYP zN+}+$Ch&Arq!|pUB)rz7vDOl{3kHan520_o#bq2>arh>!TJy|Xp#w*%uFIM`;PXnZ z^t8QR;=HY(>Zk*RDOK=jG1E!AC)N}=5VAig$6Wc^itP zOu-3=F0v!Fu~R#pk!F6zw7B&uTk=X&&D`&`JEReFGAI|%cPb9J%Ut)Bnn^qisoUs^ z_`Fq&B#N*|Zh#W_uH8Z1AIX6_!L(rq23L5T{q(y~6WkP=&^K3|VI?EHk?I!;x9gYDci{Wfyfc^A6b%FlR9_+ctI^ z$|lBj`eyP|Z?~yK+LcM^fft`%ojzK6S0c%GE=#>;z5vk&sxj020sDwL+~iH`Dtx#v z7A)mx^o)wwvvx%VpIJbG>iQWSC?)Bb~MznK^ED z^}jI&zC*k4>K{xILuO>`ACQ*88w9fa#2Y>t>>Ekrw=y5zkTOsdr+uI_o9xB>5`=o^ zs^1ya;Sb;4^A&At`OpO9c>{5qKhupAn63(9=3%IGuL~~K;d!@1K!!(zwLsBpJ{E`b z9`fnMVjeMwMdT}_J2Db|kJOsqR={zE&5>W)Te*8wXJ7w1Cx)Jh`|yEEiA*y8mQE_| zl#1$W&$fJ!HTx&-(;W5};KZvlvk1P$`l(@)>XVOiSFD@+&R&_kIn8E`LM)4BxdQuV z+&X5(r64NERP@gCh)59wTf{1gLBi;WpW>mi`Oe~^JQAEpumKfHfkV-o?AfGd(C8@N zX0};a^9?t7CfsKCU61YH^M;)UK`R6nj^S4LLgr0`Ut-MF=ZCh$d`*wCmk8eV*BzMB z4%&SU#DgF$RN13$4hPV;-ri(IEFh`GJpJ(=3+CQfcZ zU!HsBeezQsp$*q_LZ{V{vn4_(HL9eFLm@WN;x+2W$!F29*=`saJ*z0G^`TBV{szTg zb{U=R%q{t!X~^saS=PoGY~s$QHUep9^ti+?Y&RMv+&IPC6Kgi=#^~KnbGVM}KBVyo zK-Gep*U@E7XTOC1=xK5;)!}QG>%Asl|B5#+>f8dZ?TL7q9)41uHmeZ{u84KPBKZlh zLp)|TgP~x84c6gZDJ7-V$YhGDojWiWNGa0iB4wx%h;Q8QQN1frzV09xH-eG;pn5Y= zrgN5~sGufnrK+itnaz;t>9gQ)FiR6XSG1n&KC+wce$enE)m`U=$sex|jDgXp9M>Kb zj$%R7VeIf0D-owBQp9i}>Xv_WlBhnP4qNIjbjaaZ zza!r>iWP9zOn=!B6`f!0@wKk%#GN%(Kyh6K&|=4C@Vp#17*(AP-|wfT96>ZnnbwOV zd-j4vl%{9dF^U9cn)oLYgPgl4K@THB;#Z)E?8PuWT=1EK5zxyPy|sr=x5}r(wtjdR zXqw`HjxIcuYMVbU)D?RrtDZ6`g~SGiDN|S?>Hrdts@Q&`LK3`9&P8gJV14adb@bNp z{9INfYogjrBW3!hW(QpvbAJq-#m7B_J%qXVLJtnx@SkZG(4N;l8b?#y#?^Ha;t~1G z@xjzE69v9lBEGAA78-Z&W8%-m#Lxzkjnrk#;*M6YZm9&BlIi*eulr*9i!*e4Ekloh zhMxQmu|~6fx1zO^(9MJSqQTOIOp4LL!S4~1joLZ5G!Wv^EsKsuLhVc91dp>jFr*!n z%~0rxilwlJLb4qxaZBUHzL?uj7FFY#qQ%x4OTSaeC2hxyb_i+@5uuy#koFlgQT|cR zQ$(iR^Nk9bOlVv#a{>CBKS~3~FjcbPbI0^-Lw^lMQsrkKl_v^AH;5!DtxCk74JcS9 zQYMXPyX<^LQbbPHT8BNIz@wr$>X1ej-y5dTOky2w%QAFP{rD0UGg$VAWP3vx^QvH4 z^qJZQS7$xXOXfC0`0Qet*Cj#)qG$+JDKs6g;LC6(2&=^KCa_`UG(4>;7>E&tWt#t)ZV=p6`EtJoD!pibHhOaAiXPlKaP>??zmg2Vmz<$&1@WY)Dyk<`)b9`+=3k77Gpb9-n>b>PvJ>hf%7)AOvlc||Xgk95x|Gq`>k-;G zGrCl0ah8$1WjRALN0#kdWeP6G+>x;*p_-%Q6hl4y(9jH%eq@T85;qE1b$I=`cub!M z-AN8B&n(2+i2{lMq6c5WM8^iVOG$^gzD+#!MoF66eFH9_H4#^7R;XrN<~_d}Zp8$? zkBXRy=Zp5Pui#I3TMbae0mD^d#_cT(qAE}lB6ve;5vUHgC}^n4T!SR=ah7LLJ}yA9 zq_c*__@m+_R`(rQD3W=ZFp`RnNcG?}S`eB)|1h9>UVe#^a_6b{Y8Kl!(3kQ?w$k#YlGO$yrAA#Q zY)sDgkz%1;$gKcjZS}5NeE6KwkJ7N3dM$&+19hfV{!u;>f)7Jo_6OQ~em5RW%byyS z5AFjl5=+{gxZV+dAK}zyVVQdFGv_yIqgnc{W!b)N_e(-#!! zx(o;VTZ{DyQnr5dNo>Rb4~n*NY+_k;?3du_7cb2uR5k2U)pUO>uRip8uigtEqo5;& ztAxKpxxW4)cdyn6d{?#DQ6GilMcGUn2RHBDiMpEMCswa@A5$M3reO04uC+B??z#9C zIdQh6FKLYwPD5OK)8eT8+1aT0qP4#Q*SKHC59muzO$oZHLacenYwE^l4)Jm0sAu;R)PF6q(yi zu~}np#qCIRs`y-lI9k4EnH4tPoSk;|?vAEM?Y?@~#6)}H{rjmc4ymMD7jB+Qo0~Lc zuOc)dP3cTJyryltDMZ0npwQxo0LjnwWw&lpd2j(OVf-S6yVVQ$8jX3n13 z-%8#OhKMYG;qxN?2{CLE5gqU59Od&0t2jO*t)-Zc8%jXgrr^XeM@NID^-~iTK()*H zV6ap%ZLnle!YwhJRyg9?_RX!sZp^dvKITGkS9J?`>$!ZF(8j@k`qJ{sect~y_ax=F zwX@@VeyvK~8q&`hRVA|rbuTNt=zr>0z5T9UZ)NM;{fz`i+p9NlWT@O9q6RoQ`N}33Wt!B5!iABUr3gtszW&D^qAn~59cYxPCCW_OKL*Ebf;t;?v}I` zXQ4`+wZ&_C15#$aqz6mGXA~vRgg6S==g@NDJ~%Uq1{*WI=xaSp1KQ zI=pK=%yFdM&wp8+;kNc#m?e|%B@f#m8Z+$0o+6)a+?bq-2LP2~F>Va?-NMjng?=3o z#7HyzB#-A_jfnXpZw};nDNAlEc%m3)*s>UXg`CJ65an_?5oMK|(g}pxB8i`T3tRAV zk}U3JD^{@mKELk^L0bcRn%4`63#!V{9jHzd1NFhuMGO`$i=v#n6OzEY&NBNngw~3- zFJ!HEO|cgBr{m-{vlr9Xs5i|$LHypX9Rr7+CYRGk2yK~V>6+J_R|0SN+{w&u5~7K3 zO`^E;7wmKQsX!9fX*$D3dD*uyq1Ku8zB};sVm%lk&qx^8COVjrR9wg)@m7?svj%Tg6WL4KLg?$`s!+gtn~7z}WG8ug`!YpUOMe9Sj@^0)ZG;m)2>+wi zD(8vQfz!Q-@8ZruQX3scysE>ipPyTH?<}6__`bXsS<~B&TDG~YyM7ox?&vq_SL(+L zP@~I*b{A&ukgDmZc8;;O|8R;OO&2QLy=mGpX(9!e#F&%BsFBB`-t|+?=y~yc{d{ll z(Ad0WO=`H3G+mxEYu|M6oNIbv+8d6!74>?OKmrp^|2;;O5(1H3A;z_S-nDGfzJVr6 z;=)$IX#FUituO{TK=KmG*T_iwt#i}L2syc)rqneG9v&P)L~>&dczKQF1rD)x{hTXp z$f2cxV1K53O%3{e)C?Nbxy9s_SqQUGJhmSS=1&~3{>w@d{hjz^H{#f%c^(hw=1I|A zEM`&|KUAe8pHUwB?_dOJn-+JY%jL8TzK3Cnngx58Y{Py_fZ9fg*f+0!qnNnafJ(pA}Z4_eevo~liyJv2@de$M;l5Z?ucDy{$ zp)VbsFJ8K&KKy>vGq$_Bd(C{3F}6DxEY6o6o+bX{>u6yoPAL!T*ZPdl=!5H7;PuOyb|V)vJ^*@nCgWGGdy#kOWt;1PwtpWqT|)@^9rII{#)VO;-&N!Vw(GuEC=58{$ZB&#IP*<1(cHSF{>r8>elqyK2X{LieLp z4breHH3}KnxBOnANH&oHZ`o-;aso|ID&-3)GT;TI4GQmDy#cgGfjXFb5j)dYourji zR#tNT2PPBmI=gkME%MqIjT~!s@`4VJbk(p0z7kbr=d+FKfv_+QT_tBW#yEU{A?Q6x zp#}<>zb`D}hgUTveVY^sdOtqhaoz9D1O0FaZ;{VKm@ij7J;|jr?r5VtDNlkki zw87o@is?f_{>F2+BJ=!(Om7wI@v6=jKN(zKU-Mz5D#jPNX72c=1erVMH!2B>h<(ZJ zR*qdz2APb)oxfzDPhpQs!C*%r(Nv!$bzh3_ZIL!#Ycj-HfLl zg7o}g_vcsi_;H{6gV#bBKlH;CkZHe-Z+`a45Es4}OXO|5bZWf*YB%D+Ek^3RttapIO=&u#)$*U zF{_e1vEVt(6Rl|WW0ASHOCEnC7{5G};w(3vfwA8hcp5C}E@ocNZZ?Y;1&MCiMT~TD z+;~$Ps6|~_D-^!!$;z|RPPK!G?a{VdO_BZnE5EKlcoY3F*J!YDBgLY@De;14&iocg z93`@2n?m9mpYCjTF@rZar+9ufeXGimaPKDE$aXZ*igm_sWY0Yz?~<#YCWi<(ojU*)S&FGicX-!jxMliKBwiio#M@ zMGYp;5#woO&<3!gUCQj^%7$v(;dW}tXFVplTY~gNs~JA5u7#P-+b{1f9vw6Dz>xi7yufecr0ZS+ND6 ztXo6qgInM#dOkR4$UE~2ave4JLUnA31R?F5SIlZ*xGxZp?erb89K!Q+VF2io3d89C zkl!cNsDQq3^{rRh!*lP_JuaFBB8i5FS$t(V{%||WVJ8~5w)U{a@-Ry?431cKzqlTL z_k;Z1yC>QN_UK{1-?Qu7%F0{ygF zXwn@{&gYUShIv!jQp%b#V&^^iP7~svL4ofTvlxU^8oS&xE6zHT?Vg4m zue`mas>%jQ^B|doQH8PdeoN zEz%WEh9#X|Q9w)}*BQyVHi%ol@KEKmipNFwhmkLkldCr+dn@4F0qO>mc4p6>q|BVt zv?1!1(IOEp$o;YbniY@ZWY(&i`^g{6mo-;#`%b1AA~&QwTc&=YA_yd!PFtBT&Qmc7 zY)z-KT52>Jtq%Gc0Uc+FYd(AXlIvQR371kEZ|r6=v@g~zyGUP!HWK1>?qt48@W;q+7iJK2%iL617NR8-enQ~7ZLpCe_WWAD5aYCiGI zB4zYmPcD|pDOqnm_MB3RH#7E(g`9zU!ZbxlB6$L3zU!22SCYMBpU4!8ag>@MV6!4< zvqE)b{b8I^&qqd>J;^M9wK@$X&hRqi{1uZ%Oa1o=w+cxWyVP8QmEN6(j{7W?I*E&z z>Vs{H8jj3CIzG16d!)hoKB=dQ}waLszWwN}}8Yp`xm5NZ zFQV69GzTEV!Bn<5cLu4A+C4{89TXV`BHe-m>H;%(znym82=H=6GYM4w2%3`PB`4Ji z0n@_Q?a!W`Ukx~DoPT;TubK|weHTNz-1bmG-o}3sJp@}PrDL(hX*81=w(h?NjFQrHIS8uXTGOU7zJp6_Q`kU zZYx6V1mScSj1iDp47~*5&TOvU5tO_jvX%Es$v`@xbrl7B8NaS$Y4Pu#G(Tm08~5!E z+VfnYl*Sm%y0lXn1)0BBK6mVpheC-K({JR~cMSso?+n;Fz3)^>8yg5@Z zb8CDNd&^SSB%(p6Ug)%Q*FV>;S@H(h)W7DIhgD#@d$w4*xF&D(?rmMI(gP<_So1(r zy!*mgef1Q$6SX0b3T8T*08cq4DoYGouD6z8>RdD@PMAJc9!OL35y}B6O&2yTqFVZH zuZ1DaN@%nL57v?a*Ks9)^ek_j)C#r@RxB7f)i%CZYNkOOD`A;R>iJCXhrS5TY|q+0 zkJ>tqg!xdjJ0hgT%qrDqpGWkvs z)`1*S9VdnYCi@t+l(K~pHHNS|vF?;5!cN2-T;tQv-{r*Y{4M{j7uN_g4=(%u7g7PI(+9TrA)n`LUr>+r3Nuy)2#LPIUtBcq zkvAdbSsyhElIM0D&%#D)>B?G1)^jR_perFndST%R0XpV1T3AHhQPQBxBUDNADiA_+_n}oeAANuw_b?V|T<@@!O;bqoP*s z(9hw);Z2j+k$kjI5i$bDBo_SN?6dcaPZ>u>s!Tr8vdyq*R-vLk*P^nDu7qoWUx+Rj z8^@#9Vwau1S3qHRwy`srAbT#cp3It{MVuYG*P!2N3O&L>*wW2o@X>CmUhl{&r_ZIk z-fV?t9Rc2=S%!(wnBbfwYr9Y%kwxt_W(87;IFmn47p4AnNYu3Nmh5*WUJP?)u5k8p z)QWPSRS?~{{IvBvt9ui{`|-{S)du>|Z2BC6NnWI*V;JT9EG-E-R1yDi*0m$47ibx5 zIG3t{;@E-B^R(k~;MtP!w>=%AQj*_$?^wPzesZ8gkojU|AEjVx!?421EofP}SJZxvhlW4v=Z7H;Y80cW=2@TSEGI7Xp@p@BBV*Gob1cDmb!FCd zxs89^v+5>L9ge{lyo~T_^&Kp zdM2&J$uqFLV=~1c4F36WIDBKG!V*ORSmFW0g`(}f9;NCldgDY+8l9|!@FLi_%+BNI zHVcMb#vP)ic^jhyl)%Kx7@Al~x0eS&RM;FQVj&|2v1W=ynKv7_7K#@ah1)$6M zJ`beWY+&$38?VOP*-{oUc~+3Yt9??^8+z1ZKvW zAM&a%+3ygyQJBRSd3JAV+puDuvZuXY3!_2*mbHk+3}HVU#iGwJ%ol+j$qR;9MtvJ! zkH_dS4Nba`X~tVOY>Rn|)k|FdQMw(i+sE)5jRI2c%L1DEo3Ho#on))!w#w}&W=fv| zkUQg8nU8Y)J*Dl$q1wjDAR0HtNa`=tv4wPel;FZVi{aJd%osOzJx9$?JLmUUb8>L; z+qP3h`cy}j6pfiG6|9HO1tTe93#DB&tZdZopMSb#V{&MK#~RV)#yTBNd9zF z$)J+Am+6t9B4ZlWrDOWcmFft~$uUt#!#h94;s=uAfc1JCzm@ZnS6nlKB)Q&^KFP+K z&q3PNa7*qyL@kZ<9Ybyo(>2_X6!(rkkO%%)@%CrvK-n(xZ3j z7pc!so>L%7MF+vcM8C%Xp!#q8#1N(fltE#JqQeIS&nm)^#5?^`*>={s}^)N=KNpp#`cph|XwwL@eDHScuzN|Ddg%j)+`Mur2a_IbRLqy)T zD)6`|KGES`wEqg*5m7x>$}G{V-E?>?FT5b5y#ASmVVx z!F$VlS4EqKmsRjt*blQj#Gc%|?=Tuq$~@;=d!60g#R&G|-xjOo$8T4qCLefMwYIiv ztgw7hv?{!Bt{T+YQL&i1HaC#V?bg_B^>w?zwZSK9uCryWoZ*cySkhp3SF`JA^0ipH zTZot;Ol!70Jx6Mh3U({S-5)iJ`r7F+s;jlX_}$BJ_bAuL1{imo$(D90>`0nRp{t;| zSUFd#r`yk)A+n4?YcIb6D65C4T+wQ7iILC_obfc4B8bdr6ug^cC+Zxbo3V4$sd|xa zAz1Zu&fLnKXUuf6#L?*@D!~ zw@qzlHH_Si(XNuso57uF?jJj=)1QWxm>DzF`S!V6HoG;h_yu7h7-rYQ3+G?>-?5SQ zmaPhBcu~G8Yj!!iK1iTdT#+@NF!Cl85)G`A?<&C2UiQ2Tz{!)k&71z_D-8@ai1dPA z=1K&l5#Vo!=BW}In@`dGxVz78-wG{gKo&4uPP2^6yep?m z*{teNk8prHJ=!%++t2?TMR@iBah(EhnB7BcIRrTrvkH$=sqhBx9bjJmsYmBGatjwd8X0ns(S1R>N(SI3LPP={*rI`>J(6U zrb9Q*yT%pgy6_M_+ZsZ{NADhS7;=ulxfq)CVI8}JW0~?`BJ5Ts&f3qauRyvJk^>bV zhbu}0(h%?!+q}pedsC*7_!hC3_juw>Fv6f~Qg5v|?mG3%v4R`B55QgI94VcAm_fc~1s+paY>dFy#Bu zkK{6YR3rNAW^%mDJBK~Qv4Z0Lng&#>d*X>Bg=IElw2U?-Q81D|9Voqbb8e+EaE+1s z#e(uJfUB71I;xg_xcj_ZBh7@#xE9`_kLTr{P66Vm$Yz`i=J0qz%jyD_QfKmO1}`5-FO zYDUj7&G*Kr3@JXHq^^o(k6#4z{t&=SXiIBV$7@qExi0DO zoa1ViF>tGXeyH#nD$LKLR_^=9ks~Fi$OQTuZFjB&EiRXXLEru*W+9aEjOwONkN5n` z!DkB+_&F)Zk}pA89@)b%TTB;z3nAU`*BS@en#zRa<+@Q7aFQw)Vj$zu^L6PSUX|Rf zVnWmMvbUMsX$|Len|&I6{9R<+?mslD9mbPsQ=)C|{XEB4E0*!T`_t7j>h{he33_0< zl3?09Q{MD?XiX*2@xb2C=6hsySK(ozg#jU-(jw@K((C;)G$ug)plS}qkP;^Cj{4aS z?xl@-#fpG+wn@(xXmoI^dD2JoB!|q)HwVkCL=726gS+n)q{un4t5l@ORSQ}oISsgL zHP?D(LzX%*-JhM5Phu07PY-tZJHwe5ey&NPZ8+fBQDyUTAZW6Hv}#4wb=1tf1{#Fr zB}5Ymtx;o%rRWsyK+zHB%CBB`OU#(Qa&$c$$gdl+c zf#B}$?hssp6Wrb1tsxNHHMj?NcXyZI(81kZd-`|Ix%Zwk>&}_)yR&Ak`D41*UhnEI zS+#4|Tl=Yc>)p>32qS^MYcrc&`2x)}SI=KXCl@Ju7g@ljvin`#N9ZV@K|9)~bf7`G zUznVP_c#ZrkMjD{g6!&7(Z-sPXVBD&^3C}+$;@%lQl(@IPvo}sMLiFeY-GpI2GM5f zwdVr9`Rh;q!-30e#|^*=Od_6XWW{eE$YVO<=Ms*)=k51qAD+q_KPWZ^OVw%;P3b0G zeYLFO2bnP0My=wkc;G$H3!3UhCkXCQe$3CFMAc+j=GCkcC#w+`iclJS&tG+V5i>nv z9IqI^#0h83gx0cWfKRS=@#r_&6t-T&Y2DQG;IA>z5~F;UaQ-ep5KUA}xhb`n%8#g1 zHmKa0&zH3PD|lG$6uR9S{xl6J7Q2@1N7#EC{1fFt^8JocNw;2fblm>*%z@}@2Y$+Y zBP)&q-1L|~xC*i?2X*WFeJ9Ef^Zqy$SUbnn-SU1}*TjKqt-;nEG0UEoMfmalbHNaI z5c_F8Fu3+BUzF;$rcXGP?~ z3>i(_(f*%u(W@r9KV|I}sc1N_z;hWON@lkWvb0clFv!}HSUn8AS8#~8;HRqz+i^mO z5==dFicgZ{ONOTf?k>)ehj-K6E7!3pq0Tqgp-cUZb+p7_ibHbLj|9pEQQysesgF{QRS=QXf&uJvO?^ehfT zC|Uo`-8J9+T1pCDeCU;#;C07-yYm^(y-nA7z#0EN`MJyuRNOBz{wXS;g4jfsabul!m=cAzY;HZdUkmHiZK-CivS)D=>A+>KAb9)? z@18G-K3mRG5(N(;cH8}Y+~{~l_(h*;9ZLXhsQ$sm)_u?obxz*xNz8bME3^b7x#R=y zXbjI3tBmyE*5|^qrPnB9PdFA{K6&7(3;w?Gl^-pJ3^V;&9=We2AJMdUD_ypC-eJKx z_ohp4O8+7G>6=1j$I?`ylyq=^C!f-d-KOB&(d)J#`MslA*D|}Yiy>zQG_>tUUwC9^ zvl|#ARS%RyZKtmI@HMJ}?=H}vu=;Xi7r@ib&S&V-zNnlDdQz<+&#g4xEfnj&z2qyk zZ}$g@Sk3nE+hw1b0yljQV1R)wmpaD;@r^=KsIIqJ$MOg<&21!`P;K)>Bd!Iw?FO zX<6hEm$=Acb1LhC;mKzrXQx%_WS^AemtXFpHb#1-2G^DH+plH*m~X4Ol!e7_ z@ayh-U%ByY+17q5)0YWp1%oFp&B0G8M5A_Gl_}cd^aB0&bB%WmboQc=`mmOred1kG zjYY_xXLp2&G*0mxjlkoxU()y){h=RJthA8`wv_gu|U_K#me(p`N%aw!Q?44f5pk2%-z}~ zHQ;jgQ5GX8ede)5-O@UAC;hT5OK_berDg6yl$0Ve-_JdcFV;slI|b?*rHfM6taH5- zr_6AEEJbM#?^1P=81-$;by6KT(7asRQ>Tpa(YPav^xKAt@}5p0@R844muSz9{W^^) zBBR5p)jMn4!AnMKqy)izA79MzNapDC73j-3r7lx~vi%79;4$Y<=&^@0%04;|7=tby z>(r70T<6Xq@Oh8e^BR{IrG2OkYyY`LqN}DN;~Jt|iMM5&@@&bzg)xI~EGBrw)t}E`>gJK=Y*8^&xFxnMdMv$M& z&BmMb@Ht2t%qTDNHb6BU6Ft~M|KZUz^TyZ)?P`efx#zK8pwX1ieQs!`$+jJgO%Pc7 zq@}l)`Yf(tK4-t`1pNNZfyf6r33IaDf!6eB2HeYw4U!pStdIGrzb4=O&JVspNn5LF z_p#VE(6(;3q}cEJ^TDLpQ`?2%e3qs5)CPkEuo>j1A86}tJb#~zQL(H2BnGlLvbCXb z`LjRIBwnU%=}AfI^Wl~51d-=%_ ze8ej2o~*sgK}?;Y*U6k~LZeJK>t1$c`wn&~vIZH0%#(6aKd_wl7Tmp89#RMsX&i*| zy6#6f&uox3cH>2Tg|Nk*7`L7Rof6#Z=!Y}uR$rzLjtNW1^pc)bOhcO#B?jHKft5R+ zMO%pFdzJAxJ*hifGD7#FhY9L2Ro*ItEM`K{tI-|Fcv4W0yyn`cPk~jVhLMMCuLB`1 zc07I`r%bkPnQ#*752rMuvd@gSc$>mJveDWkN4kko&N(!2ufk0#z%ZcAZI!V?;4e8J z|2b;t?{vHPReG=<9OFtnot{G5KB+DdNp-&3%%bn?m6w9ty{9uxUyPXC1JQBLg-=E; zUZN#5ch@Q1t0`eAeC1B^S+jcCoOM1o#XScmXExAsSX>k9rJ*!GE_zG6%oO0v zhTp6bqz?VelwooIa61mtW=@^p9@q<*^z=Y@u-sa%LrFOuoNHQ0?{EV(`_? zok6euv&%Zoo5+H&wiU*{UCWlogBTjc&pFKFYrcLk^eu4{yR?T!?o?L5DYjKInzY#sf6DK^98WP`b(v)jultcRI51P$Xt||dVa;Gy=)%Z z#*RS*-I0I<=;rpDeV;e%`C>qBdh!eI?hE%eO9^nqYWh5OU8zKUoA3hJ)T^soY?V`e zupR@oB8F9o)%G#mY?=zOx<%`}%?WKKMsuxL7)0h+=;F`*e6v)jtd}0!pT{E?^c^JF z<@FN2Hfk7Uz{=LWlFLb`gPa$&D)rybhW3j)avZQUF|cKyqgS~>doA!@PNvx7)aJlZiu@_%oYP04SI&!NDz$$x1An_Cx>mBJQUxq z9vSaT*88CEHr>$)dS@~{MpM$Lf&L&T7;WoU#(Pn_Azumk1=w3S{2H5LH{;&ls<hsBH?1LGstsXcjw+h?`DlnrKn)CXUWGRJZ8^zD|^zyt+?uB<{S;ymQjJD z83N8*PrG|4jJ>-RN9IB}S6&$K7>z~&AC`+qYIO#A-ZZII$}l9?W$>0rb%cRv$ickL z!TY4_M3lW&%}SFjk8G6U24hW}pQ()QRCZz4bXD4Kdb5`(x>6O;l`>v!?J6GjhdJ(v7 zvbQO(7J#ItuH(ze{fZnZ6q=FePsM;MTo|`{Nlo{u4lA*%X(K1K)$LXwy7t_Npor#|Ho_eJa+jV z->D&S;@M|b5JQUWI@?9y_EOIWoc%Xht@RJAYh@JCuEPZJcRU}!>~37^yj$+#jXAQo z?WxL%b^4UfA!u`*x%G|ECIyrIWIewqL>ehp19?XHPA)2NvhXSrP20D*;eC|48=jas z)j@>2$6q6D6O7DizvCYv%8xDHGZTPf$9`IF;$;O3*eb3fwB$IABOh~2SkDx8fh>Q^ zNOQZX#il&Tc2@}_U00ICv}mCo-l@~h9%Y7u-Pc?6D;*f&b`!^@Dx9-TNhVvh&slJ) z94Mz1l$gj)fAexSAKSQ|^Wyxf4z88}U(W;O_1v*qa-$hW^qSm;4Sv)#8SXDE&ykB; zftHU1su^PIn-b-~O|MiwyTguKqlEV9z@R6_3+gx5gkDrok*)jiB4Pct$EtgLpxRh$ zcgQy0XXWo;T1Ud(yFafzKFXo?rHY`?Y@rGk(n#RM_;bsZavRf|zAugrONRb+0WCol zKT(%@Mdwt<*Q5ExQUwkcXvR`c+&8nVC(Ps6$Od^hL29Rd;d!j(j!OcJ0}aCh8f`Ms zY-JLj1&zB}QvdZiArl{Ezdv<0hMoKK*{DEh;5VCll$VrSuRnq1T{Bc+b`CP59*9iu znOm0CKBo&Jz7$;kc(7!!K11765V%F!VxlzLmL+Lg%Oc5E7`16<#;+5=ceVq2rJlJM zQXRMOMUB9j2Jxv}DSM_2YX|`E84{{gXDab`WV5PR6t)XmsLqO!s*Sg+shhkjjb zbL}F7!ENI%g8p;M&O_xNHs=*hwQ1VYzfNO@a zO|2b%6-ZGPylFnjXj|XTScDo0lZ*4yGw)VEdESYZs+*^qwoUpD?vgi5zv;Uj?BU2k zUxTL=4Vy}`+TQ=1;Vxpf3Ud*tbwbX#J1FAE~$B0fIx%Mks(^pp9e z^(&Z1_JAwxSo6&~cL&gs@XH0(|oP#)(O>;B0p`=I}j^hk+%CiK? zNaX#%qk86f8nK;3P?Y>w9A8gO0b?q&SApp5a0VX%m8dW4g35trf#}r0qoPF3o6H5? z1ut(D+{Bstlwg%haV3q9Pvgek$Asy+@t`bQw8u@JY&fs8L*{3_i(P?&Zk&V6pKb8A z-G1>64du@Zf<*6mOOdegO0eiW!Am>n`S;oqAk2Mjr}UX9*EQ}=|F(Vl`l;Iz9%yeZ zyFp8#m2rYnJFiKF5%~PRFUHy&t(A?(o?h#-bF0$X#^sJAzI&qvb&Zp+!a3PEd_+Wp zIvYs!DCBA#BSHf|zNF6xt*OhncL0B9@~jgEoH>kOZXBT7b2}$ZgUv5w8sc~zgtsZRWbQ- zs%83Is;UeOP^owv=2VF`OPBObd@8abj<%J5sv75*Poen(c%t#?yFawr)Ax*6 zBgxq@xmi#(To{fHx3QV+Fd(#9egksbxBx{@27e|@sI?HRRjeFcEz}&vN^zhpqG9(B z8vQCz=XhDwX20;f9GMed7 zk{(J|5pR7ZIsq5cXGj=ly}4pv>sRPhB(-*~yfNxkmxRT#=wqK@GuAc(!YjK(ykd-H zJt@B`&$unth-0|;!_ba%t?;BhH{91a99j?jmWz)%x&tP{TV^;GW@09eeJfg^_WbE2 zYJ$4(S#j#7 zdzPA@VaAOt(non*^2+XDnRk9AR}l%r$FbR@*)WTNBRHlFw|Bx%fjys?$@-0Pu;oBP zBuvnS(tZjpeT)?L#}j@E%79V zIYPbHJeE!)enxY0j*_FYwdA#y$oB`OOR_V_7etf(b(P%GxiY@-Af^B*-EP24`!aWX z&F%3APLq~a2mT;GQ%vjX%l+E7c81I{@w5({8}IbHEeD2|LOz_zIjNQ}dwd|1$xh{C z#$-AHC&4PBr{qz2?!)iH^x&*vD_|gpBCJI8BVR^DLGLQ9>}Jx$q=d(fnh9C6cPH^&_|Zi43<6dP)ze}(iB!rDBJCabD)_Dn9CRJ9Kj1lY zh4&|KD;!-2$PF`RUq77x?snW#KJbLfupXfiO8l@vf2aAEcYY!i1!rxZb8s1VMa3bP zNKT5#%k8<23km$ot@i-j(veEQgV+20cX zSX9$wZ=P9|3ow6MYmSA;v*&E@0CiBr@&Q8f#r0G9b zm#KRVou|c5uT!U|jDcRz+G|DP1JRA;DHzu^8S||cjC|heMY)X9l}LFT|7M#qMriAt zMTVuyZ|Br&b=NfBmg@e9b{yopmg~f}uUK|(z?34mVW8QU$zhC`o!eApyXR+T3W_M` zr?CF5vAgiudeCU7E%rLrkbpqufXGl^Jd(jk@Ask5Ns70P$|AuK@Lp%=L$v{w3YrE1 zC;^?3%+QlN=YqBd`uN?u!id_=`Z%6DBo>w$Q$Dd}_GXL1qlIu)8(O*q%>G}}S*TvuPl9W#`xn@b$h?Qnr-rWFF2`dU@p&uWhQdJjzZg+O;o#=dprwHB0hADDAS zL7^6oYTrL?)zCRG9@j6gG_173nBOgo;Z&zwWOp%F5Dm-?< zKJdwep1Xl;JpwHbFFCH+J^IlP?MJE;&*&!^GN(?`-yxkLGn^F8!HRUWWJ7U4Yk`G6 zD%8xMHeA%kZ8D8bCP)#DhF?(+ixb=b%v7}M>=nh4ZKbq#e0Sd?8D+a54NkTcBO$lm zGk3AZG(1dLf>PqiyYLjAtUT{p76|dkDQQV^zt{FrF=CFxk=F9DB~AKT(3`4ZR2>kq z<+y>dI-4zh%}8fk*r+`NtEaVMc>Al|a3i%IwoN=eYBR21F?i^+wh=0!G`Xa59un3% zSA&B}@d8CV9lpZdb@YV+IVz6uS+E$G_#8X@*MJlxFeQ5oXk9^{bYRuE<5GhhfBy%n z5>>z#PhOV9a1BM@)J=!cEzv+Fx&byL!sE8bL5+Ugui9lEE49rH6^r2#71S~N&Ytr! zlFBs&KXdTOtW0}rJX$w5U1RLwE6Pv`jW!=%ZD@k946~$vuoe}jYJicZz zD4jom$N1iuEAod>^FO(~>e{z!tTSA&G75C+SAf~UXH28u9q%id`?G0$-!KmihHnYE zi^s0q#Yi2Kj_P=tuh-jq{M+Lnd|7m1zv`dNtK&)DihDKGjl!GV!VQhly~~=$a*57w zP?AAT1%&jFJ1E6K-etscqN?sOWd1M-;F5RgqTeNk8tgVz%2PiU48hx&CiN9unH-8c zohh?`-SI~jDr2_7aQ#lmj4nh%;J_9mNXd6Te&!kYc*q?`D0?q?>gf*3)xs@)V0^PaB*0Ns3f2= zGFGp=iALM?cuMPwO2>Bx2R*M=?=zIpwl) zhArX5M&%&6{AHLmoA}?nO8NMi_(g|kB61-cDNjW%)j{92qjFj>@nR7TD}CTG`>~1G zG^c$w#mRp#-=F-T2zs1%t`1`EszFTtWah(1PcnX>rXliE;jSC4_v9oPCeBpI%e99z zzrk5}n*;?FPVrJE84f};CW0GL>x}TS95I#37uBtX$IBc|705W{>8mu=TiW3QkC8i;d+T@v` z*Jd+ux~Y{ME~{O>a<6MRw0~}1LeJ9T=P0MtIKA~e?jU$7R=9p>kOxjqX_eHXfo&im zOGaz84*Q1+fv?SpWb31di6ai?p8uj0w3!FjfSw+N!VXF-)uwb5m5b zex<}!i5(Q~7&Co=!w2PC>^Y8846@i(T5uSyUA)eCfKp7EtDd9rfPXYo_OQ+4u4jWT zqtE#U@uHT|b~2djaOYVV%Ls27xb(7;zq#icbQzy~vg&@SQM! z%xCsM7$Uifc=NkEy*YGye1iWukvPM1}#@6y4z_5#anhpZ}^i! zb3qs)!$ZTW<@-VTrBc-+YBu{TU{`8NYNP<05T=P@KK!VDA>359Hgv1L_QHl$=Uv2| zqV`;JgLp*&gN3JUw5ewBMD?*vI1A?p<=D?@rmOKlpLeEqu z{dp{#%LVHvA|juMY6IsQ%Huwgd4WrF6_l6HPpNO)yi_;uknR=cXPSWRFh=3eXtL~W4CvsjKsN=!HmimwQmD%pl5>5Di|D0T3`rk4uZAcYA-KVS&6(I+kY;KVKwZ9<-; z$NJ-Esvr@|+9C0#yB#?ba)oB`G``og6CG`>(5yJp5DX$^3=5%}rYmuu_y^WqL^+3U<`Li1@4 zX}BIEH2pZ^9js+e{!w$(&>AVeqip|xO2!F7F!C-hC^A@XypCAQnrbf}<2 zavzaBF8`9=I)6XJKic7^EW4MNveZn${y|cORi0aO&tuT5R+}f&?2r9qG0N|6&02}` z&j#wt29wQ0#-*oohsowsBZNbvTS<%!< z)ZW$sLLLa=rQ`mKd(+-Y#lg_n^q<)7{t>oQOjPwBteaA%mgW{N5SA@g2vsJ8lGDNd zFG@~g7bjQKe*`%sW@Y7JVfjx=w!iVt{R<}>le(n|gjSQ2ndQIC3SI*L0eq5?kd^>I zK|uiwAYTA@6(9;g`Tz-C4v&P0h=_uW^a-5=104+wotl6Un}nH`m4%6xk%660R+ybz zl81p&L{mgkUQzX%Dw~k5v5vBltct4AUzI>1qoAOpqElgDP$@z9mz4guKj3ZvDm+y6 zJ56XPQouV@C}>nDa6fIh&Ew_YVk|SlBqY6qHod zG_>p-oLt;IyrN>_5|UEVGAgRy)YLUJwTw+n&CD$B@s?69u$+&6R^;NwI3 z+Y`~IY#N(;4h; zygU5sOq$xeBi`YF`CSbYT&oLBkQJx0_e)oX^x@vh7vZcV%h_}`X^$AOY;E=t@IW`Haa<-p! zv*&qI4DIoa_xhLj@q)VL3UB<)L_e@NQ$S0XD}|w~^k0=m?M!|9{dw>dM6;}mCUEk) z4e>s_JV#^`KknU8NuJli;}L?q*<<^>@snpFq_KM_`q(g`wB1f~h1Q&%4C%rPL^qt!j08s|Qqa8_G! zx$H>j$Uz(WIK$sX!#75QW?scjHE)(1BbD;Zkt&`&*O+bgOQ;OP*j$~#$wd?Tydlj`S$~J2Q5N}Rw))INlq2|TvT2-*x4A9;A zPM_ZSUfYg0#%oGeHncFy+Lz`NJF4Vv=PY(GUo%_=^bwmd!N(K_adMV+fA;=Tl=Dv? z-b4zKKM2y?PI{aFZK1m94j~DDN<;MJyscZz_F$IoDZ2u3Zhs_KC%#FXU`|07RPRjemj zv^3^UJ3NB6Q*NahGmTKAvme2cYMabJCI3!N{yK<2Om=;0t^wdYG^BjALE138IXBTR zXr^1p;|J@740o(+W(`XOuYJh6q(>h)+mBEqG&t_0@w~8Mtzn}~l(u`KteJ!h|La=K z^JQ7yVP>~m=N@M@U=^n_g?)IIJHf`HxP=OVnN?m+*MBg4YB;#ZjzLe>(avWcLFci6 z5fQoI5A&3jHZ~(!8q+DYX==Yxs5ZekJ^S+$-IH)PFNEP!vgElwzo0j zQ@9#5>B{J4PRc2ojwDaif-yQdCi#WC`TpIIkt6|4FJHNq3`3VE9)?B`J(=m6pySlp zB+q^mMpqh}xPNc(pk-wq7IT{z%%rF}4(q#?7v68M*E=3>tDjkglLsv`1F@xe44bO> z&7T%E)4t1UTbg~Aw#SoVxyE>ZIUB9WVD{I%V7Y|Ys{Ygh1{{~XiBx?$wF*Z@GhJ>=if?+73lKd?^cK0yH#KSq48TQ)msp4?j?z=*|&9xqX<{Lvf4o` zighI&ogusMSu|+gobEGu7(+bEw-I;jMqpzd&vgjie4{YZ+ZimMGDkrLoj^mKsGX^Q zXf;-nO`Y*!OeL*^z4qFWGip4kOt9&WajcY3aS4|?{gZFsiRN~~u%N?AD0UfpP;k%T zkmyR4_Nr~iPu*4ilL4QW4A@>9z;|!wHnL8Oc_fW0(w`zTb}mV>bU*kU&%9Ni%aXqj z9`PY+*#2RbB`BY%0Wgvi1Dphgw6r5|Ov45m^7}rM%Uo_-x*>lM@}Cm8mdJ6%D_+-3 zb3w8d*n)p){+gSw)IB(pfl_I8cT|S3!<(VtY;++>*FTG)M2gS48$wzr-)gZe|b z?*xO(7wL*U6#HCOfW4*`FoMCnV<RuU{N_xI`$P6Va#Gt# z@(1=1{x)~TD?MR@mE|kRO_{1y;ZHuOMju?lhn~w$frBG^QYo6PWz;RtkBeGUc8Ew( z{Ol$~SurthS2&8vd`5q^-R9Ql|H#7K5=sM2?|`s<*mhlfPG1F+p?0Z7He6HoxcbGO z&26t|c=b5TIqiT;sWn=$CPFZsPSoWXnLPg7+u+?4rX)1K@zO$83ZSumsnbAt_xmuq z?Z^S(4??ypUddGegA5=*`7*LY_)=IQPCsJa`!tUnj805;^zIS^TGlDPH2-W3(K*KCl}PVmjcx-v0;_rhuP=qn$ucqrr?H$d0?Y{+xcRr zP;R(I5^WyQ3Y~aoKRyfH4}$>+$KP^{Pj?XTbdvFaSjMLj5)bnFO-yzyP0^i~Ln#9`gU|3cM}g$U`B$RP--p zo(cEg{H9*7gnDCa0XuQ}Daq7BZMlnh4?A$pngIS^tC2@c7-`^Fb6>W zZrrh4DMzZs^YmF9Y^`OFAttOK0d2L8=%|CCp49o>1XS?AxCr`}I-XbJo0I`f}#x8Hzx zZ;wQq+Ac~{jGNA%|LY$$hI*IiFXXfA<-F!ayIL-aJ0QhosDJ=*bk)#*H+=sk?N@sk z_E>B2EfxAygEkm21%c2t@;y#kv`qi`Q*xyOf~ec|@0aq%)y3*n^{pUSJL?h%GK%@n zJmNof(PorN7OhC+^HWnw>aYS6sPtoiOoT$4t^cSIeGrv2e+rjeP<+#rxU+( z{^)C0(F(2VAJLW6bT-V}ChtwUWMLj0IMG^?N~@OrHCNO5Zb~+^Siip8EoY3OFB^CA zX1&Qlt_|O{Y1dh(t4Im0=hG3PB{t`iuXed7&tSkBOji=sih_lS zQ0!ZMYCij;690+d43mWr7rN&)a0&y`6=1;AJjAirBAc&4QapsH(7P-J{>1u8KFvbF zxe5MM^QJ4xC5ys+VtA6Kt~(tpTr&r(6&o7n8tlT`)rF-~?se@h#y68>!J={fk*=p( zQvzL4nqdwGjRx|8auoFAc+2VmQ-eHR<&%>Dp|+#_rEjm!>P<83%S?={j#mZN_XWl? zk{u=<`clnoW0h7*wi3rp774Wo;#ln*xkLFHw)CbgiRWo*&yzzX9ChO80LX0k|5#Mj zRXjhj1tfGsuVo-4mmC2vPqJ@+Ltv;p?TLaB3+~w(h%c*r-Ev9)%cBaLqQ0J_sX4>A ze`2IbfcDaO!;c%HBy32Mn#oG(Dk896_`p12OgEeRK;B6(iS3B9_?##;jhxeOF>oFVY0_*m`J9am*UoS^L5soaq#d=#L4hfo-k;cJGVbF*5Qd=Tl1P4pxpIcYI7Xt&zQ5$Q7DmE9V{dbIoxi~L z=s$yPI(^H#rVDm1=7P|^_skPcQ+d{e1kPL`XZ))=yXEHOMG&4dt&`#$WV6M=WY*Qm zrcbigKm<%qr;GD|m-iRH^I?nZOL|P5ZJu*7KStaV#LQ*)t4T)susB!#OkS}t6o+#= z5ask0H9`IMLbLh24&ccAy_ALd@zTFd2EWpALe-tLsMl39p9A?m=KTBE>+bPGxR+GS zy$0^=AQn*?n{*nR@EK$qg3@9F%F$WEl1;(_G2*Ykt)+@t$KmE@44PjSIBT}3+40(3 zlfKA?VPGeBf0@+2!YJC~yNC#Q-6NW9sX~9ye3A6F{M5`Mj*#penM@8@R+ez&Y`yOA zNeAm=SVL>Ki!?IhYYJ~{3yBiJE%r?@I<^0E_ z@%L-=JQVs|xdt}KFkePj`tmY-4yM#@Blm%qb3Yof;fFSc1 z>SyuAm#c`kXQ55G37jGm=*}5eFn~V~a-U8;DBVR=J?=uLD`0Or1klGK|5s+o6~?ap zME(0^h&Q*hn7|a~JH^t!9%Xul`05`-|5ZOtOTNP-+f*T@Fu%?uj|Y0p9TC+nh7k># z>RJfdErtqvoKT9Fzf0mL$>sxKCZ&HDWZH)RSEc?Hh0ta}&QcOW--yBx zv{^fkqPM+;kHVw-jcu}Bo^iQUD4WCKUq%Wv=7{Z#114NG2KP*~zFz$BX#d%(6BfU& z@o2%BM2zp4kudjS30hvPwQ^jWa;U(!WrW?n*Z2gxW?&qn^SiD@Gju`JnQ+0@|LkZZ zTg#!d(efpL7stzXN`Nh9G=-L6d~c>GZ4}SbG>X4XvT?1&X5S7En`r$|E5JN!R;p6W zv93gaoyCBaB_ozL-x~A#iE!;;-~K2Q_n|r7GlFS$B4JJ$D>4ytg+(>&u$QWK5z8pEa5hCZz@^ni(SBxXbic?t;(g zTw>WqBabBI;jy2tpHxzm8$XGX&xxZZi9)rb2A&_D%M3FPWA@%QSlAV1YH=6DCE5wO z1^|q)v0t3ER!g&2PX%Z0fc27lXRCGYJcEvETq;uPXq#PbE!>1gzypzn{+jJqqc_)p z;?)6flZ86QgF;gY!kp^Tu8XR6ftZJDqWd{ul&N}d0dmhIi~fUp zCm{qius~cR*TW2C|M9K;!@h(Wpi3_zf*6n3-8{#g(JX^WbU}T_@&huCb5smfK+G*$t zNv@@5v2>dj!_MYZr`MExCgXlNHWs;L9 zJH+0S&rveYHafH(FaF~Ea?syb5bg&V^ovE1tum<8?6=hHaivz^8KkFti7v`j7nzvS zBxhYf^{ZqU*E>HYYEgSudxq~z_7=zkTxK}Z2Pk$nWF^MgaC-KmJ7{#=%(5WcSHFy} z*^MB5&VcTV1qM`UfL7I;u-sV=pA4FV7xZZ*Ex)rd4~hgHW<6AlPg9n&jZ&S<>|YLD z6>7{Nf0OX_esejQNi$%yfZ(8*Z7@J*=$bt>Z}m+m{jDWt&&sq$(eH{$NgN|={$Dl= zqweJxNS=TBv)ZCOu>!MhIjuS%Fke#PdZTc{MrqVSAjd zjuc?s@;EtRcv~j^JVI@$K|@!co#+^u)xMuwfSZ-ej+gvLLV3Z`{XN_`^@GZk5iF39 z&M_w-DJeIyEOQ(olI52DH53@&WqY_fcPQ>Zq$}^Cr`pnNgbQz?CN=miGyIgGbsOh! z?YD*9853hUu579?%Z41L#CSFQ(j*kl>3|Co`d4_1>F=Des!jql{69J0Ul}hUi=1M^ zMnDCnH5T1TpF8~cMnOqQcU7Ck3@6Ysb*NT9Xn%TKy(qF1;nC>>kYw~6!YHm0t7VVC zg|lz(kx-bQ!B-MvLAMAj8qHBMpq${4x3B1|cqw6%#+i8S`rVa;VwhI1ByJ-0?=Z_Z z0{u7sp;s4$SNLy7MP(AR8jUmY1)Oj-6RLjXG&bX>ztgKie0kJ3KEC;gz2km9URuI@hKf6RIk?CBDux}En_)p57?6lmtf?t!YWJibi-k97sEbY8S7IME!7_ z#fNyRzi-AKz{%`mu}-1OjxeH3LuViA5?Sq4wMxw2L7+)B`#<9o1R9*APj%Jbpve>b z>5{rGt=Huj1o0Z5UH+U}2fpPA4L!un`ZIWx^;d1qM=MmPhyEm(+AB49GPsgczBms{ z@2}c65VXAs{3ZBGFi1^>IEJ zTZ5Q|)?Oq8(9eBpDOW&UvsSx1TOoI3f72h= zkB0>YxlAoI*2!8=9GkyEXiy=Oh07bc=VB0JyY$|MtQEakr;*^?T^~~#?>1QuftR|% z9S9#dRS8*Q#+8*uZ%`MQiy=(R2P_nnBiF?}+eZuSFG_#`!}GpPLqyld`M@2kV+cx= zJniI$_#0h3Fn~7*lF9w>2a7*|z5CDU`vcX0e`pT83NA8ae#JIgL?HMhRg@%U(%kmDj=|R)|$OXWTgH z>hDx(9svhB8E-`I^!}FA_dm#}QRgvs0<*j?)kJd448jpVevYm$hZP^pceQr1^|?(H zN(vi|SwA-_;@)nQTu45Q~9{!HydjO>mYJc134zn$f+7L#E49*HR7qeIun zHer=pbUbb4(BKucnyWyA-d6$YYMd*55W_&f5OwNwx?xXLP2_dP+4~!QC)$d^;!UJ+ zQ8saFo^^Ty-rCwoe8`x45Ny?9@f#(0i~64Vaz^6shs3*nYpX(c5mSuJucet0k1M%dZyO6kwA zK-skAjYKlgHR0+7a#}!1om!mswI;X~aPJ>Cp3V1VQxLE#AnJ$()(V9jYx7bC*S``V zN)n~=IbBP+^JO~=V~-VB3sO2Vwy-qTPO1&Ub_<<1U8<`X7Ofm!&~r`~SmXn!2eb~w z0c5Os$wnB$BUCw+0FMm@(ZTAa)#B$55@Du7S2I&Qglh)sp8PCpU&vXDE!JhK1>iaM zp6ntliys0NQ&q--S9U16QU*ax_6jy>5C|jd)RsAE&85@U($E-q5`!zt(JS66wua7f z92xoMny=Y<+AuLu4?D{quVII#8~ywR!OI-Bm2e2nE3U^IXjw93T-?r9elUSPJ*bid zNTN$v?X;3|9X8GAwYA%h&F8l!*Z!L0x;mwofv<{aUc3P++}#?mGKgA$-v%-V8-DNq zCrjfw=jCfU;J!X?LdAt!q>q-%SO#5x)HI53ha+KsI zWPu&Sd3*Rrtqso-2H7^Z9&9qsw-eG!QuNG8rO!3z)<)^Pp(b_m6XI;Hmc(CSQ#a3) zDJN^SM(dXa6TUdm(V|Kc=B~lT#<%x4MDQr9@~{s#>-ISw$S1tawXmE_Q0?Ge`sso& z5iYXKK2nXW!9Fx|!xXj7j2Z2D+?y%Svzm@{&EdE zdtAL50S%naJqmky{lv7FDZgt)H^YZmEru zL@jAlR|(nS1p@qkCT604?B!)%vcZnDgB%4(b`(vrK4qDWKF9SF#CNtR!j^2R5Ue?l z^<aC#V^~lqgGuF%Vz?VwXH;P_k4joRb@)vimvt&T}%_=T!UFCgS@}5&kOHH_R8e1 zG_(nbS&^!6v9iN#fs)ByMI$)~k0^J_ctxeKUQ&FZXE9#Y?RoTxNsXeIYRv!TVkU|? zPobV;>JXq1D}JNR+F5Cv)-Pt^BfjYxR0W_B$Ky%A) z75cgoTSXOy0H($H>dgQU+vEK`baW82dq@dZS4r_FVN_f23+_vH^Slx?-T+Jm34Mv7 z!o0))c@{}NSoMX~;6t_`>?auZ=>xAp^%pyWy24kb#uMxrZ@3b)6AouI2Iks-!a*Ng zGEs1#^d3bEyt1MKOhq)~Hlb;~s#Lxf?ZzR64}n#<-Of@c*tE2 zJ7MLLW~xM>`UB6^S8$4)JZ*sl5R#1xhi*h~PJEncc91}_*0DzEItC?mHW~zY zPB~Bj_®*S^yebPOM4K2hB*vbSGi0HR6>zkgj|{>OH)xheMG2^q$t zt4dQrF{rl~h@U?`!Hfj}Q4VD#@$Yn4;j#`kOQWWYD&nu!xVY>2v?@K+bl8oI57Zm- zzMt~HkOe4ozHn2E_3?7$yJU}c$>IOWQ!d!j=-K_y19x1wiO%CMZI{1P*$~4{>>#t< zMb=-Fb>6v?g^<;ESyYWzgk54vKRkrOgHYe|Sg{wjQ!bnw`ye*hfAM1;A+Fi_35LmP zRNHi>igFUXsr7Tn()2tRE%jM{J&kzQ;{9ZXY(x63PG4odHF;ETGZ%6x>m*p>v9KCW z#tHG+!1*AiLe3%j1Q-J*;?ZeO(W_~8SmMVdMiS`&V~YgGG^(XRypuDhxdAyOR6}L$o{( z-H}eb>bLfbN0X6pV2qc&fHRCUrs~9l^(J$wmX@Ao8f*hrL=1A~%h2OZ-da_f^_1%2 zr{SDryXa_)26+JaDkBi$O$m=p0BXH-p+y2c$YTnJgu;8E^|=!geovNy5Zpu+UGF#_ zyM9iVSLcxi;OivSjK9Nf*jFr9(rnNO}Hs65j$ep0giUo#o@A z7UO_#7_Q*AYr+tPaX-HavRrQ<`KHNs;&J^wAf{*Foz)s-efYxrL#tTffvN>4XGN1~ zH02HDHjS2z{gmSTOILH+T}PmfyFn{R_sZVaum6$zrrUf5$Ik};qO4`8Y)sP|B`a&l=SqN$S2*-yc%Ya9MJ5R^KUkA5bG>K5)%Pi_w((>DGi23A zkW+oLdM>Rm*-upM$DB-OX?>JDA+EE{{eFoP)#oV60|QLsL>#!}!ZdIkJrvP@6Q};V zO;;+`Nq_HpcCe^ycnk*dlM%H};}YTm%!oh%dwEk4ZOCSG;j)5tjuSRY^ghSg=lR;2 z!6s@Am7qd8T7xdR+R39C0y9N61s_aP!IJ)(f|EF`aVIg|+h9Oyhq zr4clR4AXI{cCWHsUrg*h?%Edw`ML(u+&@6*zz&@3bf#MM+PEOtUji1?m4EtHe=U7} zEQmnXev9wDcQ^Q;Npg*1eVZ9N7-4rCvVZV>3bd|sh9J|lM|8<(y#vX*pm%coBd_%m zk@OtR&i$*stGK3>>as>nNq+aH^b-u-VvP@o=ZJ|zz|6m=U+)emK6K=gkIat1MSS%3=7^C3;f*zxJHEy_GG$sBzIRS7jjUV$iG`z zuW4CnD&D#3VaSysku|)-WrFwjPd5X4+x*?=UAxpe*taVQ(PROR~rd_-qQI3g3QXgep2x*y+R5 z0;gRVh1?~|O0pxr8i$Z3bC^_#R3Z@bE&yOR9iS|Fsb1EpPIBx7OI`u)Ks6okPYan9 zpWzGhN=ORb=>-7$H_-c>Q2_6!gj{Lq&c}l;y3L?N09hlQR_*|$!h>?D`|q(7{`x>! z`Qf18-FgkkL<5)x(C+<-qy>F7TA2meIvigtU+)skWS^X+UKhMv#Wmw`-7@^bkV_&Q05O9r zs0-Gsi+G2tET8E`BlRyK&tH!v@E2XT_pHk7be}nLMO|B*>mF`&*CH=aG#N7vU1f?% zpr^zFI~0_=tjW|D|6X@U)ztR{|D?0dTOV?WtOqLgY@6`m-2Ib~GcCXsY57=#;?UULO{P)TSbeu zXuGktHRkMR%$L0OPMD+A%ifJ{exUE+m_?(oNOz zJ38#H**d*gLz;4!3JWb2!t58auR*L3`$}tx6W=?7CiyZ~;c2ZkhiIuDU#Hq2` z%OjuN(%$HWJ0H>e#3&g?Rb7V*$LLkN8B^1DmcT zr@DZCnD~*8B(&z3LCiqh&WWh|Xf<(Ma%VB<8*I(7GAg>5$JE%W^mZ?1f}nB0R>M#+ zmc7bpNeuH??7p2=67lz-FSw+yF0(f_ne(RQuDe@aj?xx=?iv2G7bX~)qPZw(c)A<{B#q}aQ<|b>ZRkM<1<-*h%0fwx()sKV zTBZMW7S5mZoA&!8X!6Hf^8|jy5yYdZhtx`N(HspnB@AlvRttQ-2Q5S6*5Exnb zO&ks#4!Y%b9xeLTPZFx=)>A&7|C=sf7IYHLHI2o4w$LJyh^W5TEj5NX@@GNiINYE5nIP~WiTR+|p0YFqbedpij(#zNfy zJMB6C{5B8u@YS2ltz*5G=fbPR~ zs9ZIgv|D=)yG$+OI127oJD%V>wTfA~D*~0q+Se^c(Kp=iP6#WZ(iIxXNddL5wEj^ z;OwAcCDtW8Gvf2B74}H?{>q%Hic2S%<u|?_`vh@FT69lbZZD^$qo1XDqa*z6yZSlEMB)LJT)`K|C} ze>WQ#F1OL|{la;1eZE^hq;3)FL9ZrM*q{)3AiJz-PsW|ZxoFk4Q#F3QXmfX1i@wjP z(C42N>-9%R6017E_72JeIW)p=|2sXcxnHX+69f`xZl`ICKtBc3oJ!NwH&Bwy)R92Tflq+($E4Fm3>Ia0tQu?z%b>;f0u#B0^GmaFe(mjKIVy@{tF^B#E z{}@53>9C>b;(#z1=BddYVf$_@^t)E_$6WkRZ>MXs8JwD*#*!_dgHB z<7v!K`#hKBx>r*C#2_t-g&9*dKrV_ZK^YslC(~@rqDe!-Vsp1c@|)%o`FAUU2dlrZ z(6hg7Cl&Mu%Z2Zs&EKOpg1)_C*|pn$g*s@+qs=%*4EkV^eeoW+=Rh(EAlA@;i)`LO zQ|!#ndV_PQZ$|AdbJCsg^y9@w%%< zCUHJqME)k^{Nw)J#ezn;o?uR@p_p#}Y&v8%vSVTVv+F-wJSZ_o#D3v9W6GZ$O0t`% zP;C({uSW}NWn|c{aZ|)IbIdL=Ym{I)B8A1qcd5-XG1zVs^xZs)D9*Y`>niInq|5Q% z^#}pVI$>D}@UNo8-JR?|xA|IB&Up=f3Srg@DHHgk-wS0 z^=5ekA=lHqiMn&Mx)+y!(2YTcI-pU2j{Big!K8$Se7O&YQJ~E^I?gWf|9~kp(P>FXUCI-k+WM7C_~X5!iNaM2*|C+5H=Ps_80byAmo4bne!=xt~hg zz%!S|%1Y=A*9rj%b$<;73&jPq&h1}W4ET!ubaMu9(E%H&$kUB=ft!?x1k7oD1Km=o zhK0pt*?UJgaa%0;Js+^e@D%NZchb%5^zBHe7=BC_CTYUL)BVtJS-`|Xh>diw&fABR z_fvyqB`m{Z{;|b%jIr@4L8j*WfDXY;mW$8kGc{a(_b_y?Vl6E*E3BE9T^U-1JWE8IF$G4e4IQcE>qf2!2ljTcrO9}F&j~!7(H07Ti4^Rq zDjI7bGR6XYgHB@ypr~jDn0^tUa0k2F9rcPcxQ=&e-9v90jqAQs#q(V&Hf|hfV7t>- zLPj5v+Ahfzw~Obbw-+c<@Hnw~wF);+&3;^<<%VOPpwPsl`bw@jZsKn>J}(_l?wUL~ zzA!{F**c~V=;|jghJR>;p}CkzV*K_~*IWUWr3Enpo|C|L>A_Z(i~OvhkN`lgg9RGj zH36d+w-%bb2j@Pn9W}c=YZp>@4DLl%Fd{o`-Hc zx!cOz&auvK7;Q9Tv+8b@^o}!dxt=o8T)0fT<^W$kORdqv*ie9F0I8qA-PQ|IWd35s zY*>GE9Txq&jV2W)`1Gvbt|sQIA5LUSL9M7=(XxMWJlx?a85E|-iO;k& zNdnl_ByS+%=a`MT!2d~Ca0>KR1;Gss+q@>@>|XF732IO}ts%=O4sj41QUz9^)?ii* zKZ}%M)#GJ`&nvvfLL4+Phh5yfz8jevD>V)(rj_;SApVx0QQ(R3zCLw#LShSa1F2s1 zD9N@yC9CUyf1mB2K%ROny7uAIy(kg^yz^G(d?g%&m8G0p|)Uv-9_Q+ei&smpglb=M99R z7~faY&CfB`xxjUeZA8EpHh$Jez4tP)Wj{Z<7xhDcy2E!^TCy#X@{?sJWZaTD=z_0Q z&3?nna2VY@l-IT2TuBC6eOvn85h(;ofdbjvj?(z<`nPno>JuE0_Dgvo7@G57k)O`7 zyUEF}v9e(m3U%jLK(R;VJwz17=~9_P%~n^V+r^4B22Yu#;+V$#zpS?T%^0AGF9&Yj zpQUR@3NwNmy#f&c@I;Iy4;YJTY5;Q*1z^1abj;$COv50QNr74h#>`{7`yuC> zY^0AKQjG&rcs=9kYJ_&_S5h0wO&3I);aQP~-sYwD&m@<4H~jr~MYZvb3p0k_jt-5y ztXx2OMiA*aDHi*sHm;@T1taCQy=~G6!j^Pgz}T;nwgnxuIx=ZrYu%w8if8D|lNp+H zPNpr*>H$rqK=mKV&>#!}E^P$Hh8zdSjyLS!CrZ927~CF=U7GZ`{9!{HqP}m1D%TRj z+v&Xs0loaJGZAXGO`JfrPd32(`k|ohn2RL@+W8GL*Ta8_Y!IZ`nXej;)Oho|%5xk& zZdgMjN7K-=2D~JLF+938R%EX>8hh zikpoP`@QRd-41j`lT^>%lM2#|sR_uRC;Ice4otL?S#uHr$P!upC00@49V6Qai|lmC z#<}@c1Gh==_Eh$8u#;yuMFR6y0G2m-k@M$Qir&u_Ue$U^iXxN?GOGnrk zrsMG{B^HnW>h^pH#Ju66>GD5*!Dl08H2_Kbk0trXpMw@15*fKA;j+YVlL%`nxI`-~ zHL3s}bL8|B43MQ|R^1PuEdESwf^tq=K-6ucvVdAp2{7$Nc7R$MekJHVrrQ~46bRja z1lV2RMeTDA8`V9$z4+|*m4?%*gETevRzmQF1KO9jTrd%cCw)cqM|4)35g+YZIUk4aC>oy!U-2P>o%EOdA6zLEw1;h~ zW{jP~yS5_6wBma4VAAt51j^ZKIJPa6B^d}_6@HJtktX`dhznQ2_CBM4azLF=k4b&u zQ}K(3IpRCEHvQ`J91(}N%r6ZcIENB(*C0s5mkvJ}IM8f{8)}2gh6LQLhf38_qf}h) zBJqwourS?w7uM^&^51h(6Ntrl4o11!sznwYsOHwy#AUN+^M32oD`OBQ-F$PBY%n)h z>Zkg>pVZ0ggh5t~SA5I}>IjT2g8oAjD_!eDG@pHwRjdOEV<9;l-qEn;Bs;Z@Njf)a z1oO)ec<)vSY)5azXliGYOz!RK{FKGiHzfuIgjTqR@kJ{uzlca<+E&O{QfM#l5_m*R?;3n`TSMOO1qpeDn_U)q#slW8pifL>2DKEIhRa9{{7s(<`s8OTX;XGLO4GULOe_`y#S20eFL z$vqc(Ol?G*2_vXT-Q@2%Ci=**%5>E}%<3d}rQpQ@=XS=U3d!FsV2z*B=6>~`CmwLnKT2PB0h#$~?=Md<-3tHG{!M=cG6k<8 z|NEH&CCXsafE>FxeSf)ZAEtMcaTb8S0V@LgxPo|Hq6b$J2fkyr zO7dn{`LfC`t!4-hX$n@C0e5h^ z_&-0;b!IvC1)rC_w!x!+vAUD)llr1jPmQL)6RHLw-St%WNike#Wn zMXdkyau`17c4GuXp!aUp36ciP1wPdZZ=#4|%?+{b^Aav|r-F;9nRUWIAE^@{8=A>I z3YAxw9FySnvM7)E7|$NVsV0V}suU$E?(*gNCK~ElNe=4EE^e^!p_4A+(Bv1X*<=mw zn7-61_ry`4LUAS}E9U^4XF9W?Dv^nhhnSdkx2v+`64rl1hW`pU$6LVNM}Pk>QR zK_r;(n~wuafr|X$j=UxD6{nuw#AnE#7e|gTi~AJr$lG)~n`EX_>v{G{etLdQOthKr zxNGG=7`GkSph2FVSo%tVlAxxG0jy8J2g}Ya^eig$`OY zY8{Rp%Rfu=Cq?&B`uY+H)epBTeo4!$U!YCX1zpTQ+RcTJshj<0)KcD*fS#yMgJI9) zi1PKQKrN5XK-1T{%I{wXofYyBS?pfdkHtO)ds8|*sj#0{H|^qLUsxo( zWthEkCTWHy17X-m%e0Z-K4!$m@XyL_(pNsf2Ij!!m6-u07_T<~53r6Uty3}7O7;BMD zs3)0U_%5hFjZ^yR4Z1ue-b^yaTgqXW2>6W$Qk_rRPuLHJF0wC-xJDSQ!4Ckt}mH-{#WLuJQQg#7z)H zBYZ#hVj3&%SGe?pTGxz=Da7#oJVH(c!4+1?-+DuM$&EkjR!>Ma&B6QCWkz0U4+x|g zh3q0u#`Gii$fxg@l~2HV5guBuNeTt_&2y&KnCa;SSRDIC|-IqTYfONs2#%Uc)GBYAyT7C)^tyzC&ENp_D_&_rDY@>hn#|8Gsd?2ya}g49Zr zSEgI?b{P&bw870dyQL>&B*)(QIr`?+xd_k16$e_*U$8!Q>ykEx-l$eAw~vkDH!*df zvY^?W@7))C-TYD$HJhwO*l*PP4#5HM=n|aJ7xa)(l*@4%?dKC&2B=BdLt&@OjHj=( zP)r3rMqU@H1R@_l?28+q(>8&P*>uPzHMDAj758mb>@rf|-q+|$m_)h;C&VzV6|HS# z$%>In%>)EPz_ha2fOb&;iMu%&NDr{&UXQ4d*0CYqD zMr^MDzztA`_`4%kvnXL9f355`&Nch&BLuXO1L#Qnfee>FI)VbM$Hi$dtdtr9AmL5` z=~ef37nqrXmEg9WgC`gwKyIK$VZeV;`B?v7A>!}=Kh09aocE7p(j?Ry@V46gBL9A$ zw{Tf58iDmaPF+wQ@PWCa4pdn9mmVQ`sgwGk_gh%5l9B}ChG9FGY^iMc(cXU*c@t3H z*WIh?0E2xDf^RlK7%zm7*g^w2_;D zW(}um{QGT^c?SFgm-#szuj*kOc)Kmre9-cSP5F*!3rk0yo2d+o&S`ZsSmbf3UN@t$ z_gA+y0EiG~IiyxkZmCwrZ1=HrJ21lyl8|vYN3qzlF7hd@S0_n%RSh4L{%jZbSybZ~M5I?+&-*ns!0GL87u=FVjv z06TDh*i6b{2RNll6=2Ot!A%l`hwL&H9agCD7^sP6+JS#qwL=tB@wc$b|FM+7e=r7Y zhPz#%D3F~`xhvyz!r8$&1I=Lh+|oWD-7WJSFn7vP1hd=0$-<($8(iR3^I%LTfmf4X%+Ftm3pN zSqmylH+6p7#^G?WwQ7_wuek*Sbe2`tLU>){slL-N3h^qZ6wRqoEX#~om;HmJusrq6 z!3_XBbTFWPU)Xctuh;>O%{IsH2l*ef^<6b6yBoR&RjL1DvOaGH<%s@%*^1SeCL548 zWnFlq&{SWUHo!CP62cWf^{Kq!wQ_?}gn+`q!9rCyICth$JlKEOI+8rbK1K{fw`lPW ze;0Kw$#7xEmeQ6G)jipJKV2(g`+291q@MIV>!7`H)QMsbYrC-T*hZTriKcFquB43% zmH2~3U9f=(U*O_};n?-CjdkI|I(yn%lb;bNG#iDuqZgR=2+UgIUq8gMBp`0S41Dvt zsFzD=*zEZC^%Z>tzO>kWBtSc>(4Lq8yc;5f2fs2E8AhmZ1*m~$*-qNox(@i#QGZ~h zzj4z4<{#8niS>Ju`|Z_XbF^uOQad-;Cm8*peH!roVQx9RKIh46VCnh|UFHQhEN(YE zV6GZ1UWXT$94D35Oc_O&9g)YcbLXWP{ctagd0SEU;sv_hZ2DCJO=;zK%Oig0N`wo- zX;6ixr7?5mQpX^U!5tC$;m%c&o#Ce<2M;F;zUxkB+i*C#uor7Y*KvG?^#@uWB@}xc z`5FYC-S0XaSt^&>{mOvKH^a)3ahjjLn3Zr3$LdhiWK4Aqb>PkcguUWY+L+_KZ`;?4 z5CDV7Ob&7qm^*H(CpiL8#fXfv!sHwE$*E<)UHG>9d-lBQQ3$GauuZFk=U3Vi3~;PX z@yNTIz|)T%beJ8Rsmag0BD4F^;|);I+vYjjE|vjmhG3NqXa`7HuCk9GWg7RBztN~m z|25ZzXSpClf^eH+jj(GTkz;0+KY_K_4o5Rr_qrR$We$M?X_Z4qjexE$whH!)zf~KGYAwg^(rMxYf)o+aPL$NQm1kv zYoG|IWsEcl9;U3`9k<;Kll*m6+l zw6|wB5;TqhiBZ!37Bl)ELLSnt(DMYYYPcweul z?{HsRi9o&7pit0N;R6R?sRV$OEJ*NvdVE~%C|?dhD7;btQ=6dz7{m;Sxxg@hQ2w`I(+xI zS`#$SkVs(=*6Mjn&uFWw-j|kMx%S36;hoeVGyFbwlPA=N(HFA>I`M_-FhmMZ{GEP_@U=c@3KYY4fnpcqsX1B(& zH|i+=fV6wqNn@snqc(2zEKOBm4EEmajgP%CmOrdK7@Qi3rLvOw9X0<7JMYt6t4Pr^ zUJLtR9IuS0EjErhrXw#WD{v@i@4Bo%aAT&4ES6!yJkjLdaYsl&0`qr@lWO5+ue*EXJ zVH3!1(ADH*?8fBs{rI)#)!_A}eZBX+8B5vK-o;hDnTM^N-Sy)AVt-FabS2i@z~R0L ziC&b_V>NUn52^Wcf8 zvs9YV3b}jolr=l4Y}kppvw*b7IhI@b=QmfWT#INKM<7>BtEG0nI{o@2Z_kk*^SIqZ z<8|LoGfZFNXcZSp8CpvZD8{b(Nl;IPz43nh2iTHrCL7Rw zVacB<%=FQJZY;C-@aSQD?Kmykbz{tm_9y0%n1{X!O!G?GF{9wq;p6(@)*?=GLPl8x zqnb?wBjczGC1rEM4Hepyo6}qF)58nh)8PaRhKPDfuB!`3+vnrew8I~db~pP+{nzWd zx~XZYI-Yle>3qz$E|CNen+EkBKOVfE%slMvubm@XEw$Xz_8QJ%^WWeQ+>p!xn>lzv zr`sUVZKJD$-%x+eZ zH;;EC$cx+9O#IQIad%YQjFEY-+(%i_PYjMfU_ul`L9&atFMX5?;{0(pwz@=OI0TB; zB*J8o?P){p=n{mys5A9!Uj?*zUmrXtg^|~tI%r<8fr1lgm2;Un4iH{GqO=P{baxN= z7(~2lcSvGdi#+m7*y4o9ZQwfGj^K7=F+XG!up}&`5VXVT=@P*|T-%juz_6&{{-71p`I;7-b0HoL z%dtJf-P6!xi67bK3Ht(lZs5M7y!>M!VQSS;%JNystcSBs?DhN+ifIR`Y+X5n{`|K( z5G+h^>p|3v(fw?}k20qRe?hrvC!^OWSYVsApzn+KE}E|OT67F;BsPQe z?%rIbg73@=rlob!*wjBnb%KoN1yj>nJe-`})$Pk0(5z-a^E!G7&IxZ!WMCh$EvsUj z9I_G7Md}c<#G&Q&%C3LFuK7h#Lue1k2d?#Qli8*Q}Ut$a?p zjN-B}XOl5RHw1s!^Xk)-kf2x@9Xd{@{cR+E?GhooF~0FdU;i-20%c^nO&D=2cZi|o z+?+Uwd}*(zkIU}Wdrsda=;NL=j9m)|A-K}R$+NM|_2$k$!Bh~% zX>?T1c{7BzdWygO)6o6+WbbG@zqvmo(@QS{eIdxD(t_ky)46YczNc+Xz8By84{m{u z!|$^d@XOLC9@huOXB+*IJ0)V2%l9fg33dTe{Ua(crg?aQUe4AgX;jDO9b>Us}jk09&8Tr3xZJlmWJ5iq=k1IBhF>z0}7M@eC z2=o%HMz-Re;PPsG6^Z5B1*kyb5`tJMm-Z`a->sfQ25W zulZXu%avQd^ml_7zfk57Tn*RlUh-RA1omaDlgDGTh0tGy|4NjGXY;e~lK9N@`Ksfq zWOcXg7H)#LHzaY#d*d6pt(>^~z1~&_=L}vuM?9D+Tl_RkjpJ6Nf;E|>=geiqfk0|W zD9^&iEfU*k6MeS{i3?8(yrdAi5e}VQ9XtuTp@x+<0|o4V)P#NHncDV6W|#i3^`WY( zv9HqK9{ygeGF65xtP`EZ>Ma_BbS<;#uCq!~5&5j8FN?4*W#<(- zLnp2}PA|7*whb{;bPHqb+J({L^1Ht3fufs}7-S=2DH0TAA?NfC#htV6?CO0)kt}g~ zE`?WiZ~aS_94dWsup|+^=s@h^`q#W^;;4=3EDy_bKy@UEPWMZcqb0 zVatV4L3^`N!y&u;Iq_|Se$R(M9~niShBS>+QRFSNBLJa?Gok78t{ve)se(T2Ne2(KZL;w+Y58L zWx@1h`ANQ|l8t&F1QBy1e+>Mj0Fu{cXqA(Eqe(4oev!L_U$B`~G(+)fexK&$2wU6` z+h**5-feRu1jY5cERj5BY2C~DOb+Zr)k?H1AG0@uam0@O#SKkR-e6KHyp8;Z9ujte zTN$L!9F*oF{uzNz3bNvo5$6Uqr60$faw?m{bGwGfXFxh?x;L`35?1=VP%{ zna)?&=okyackR!>&B;8&tNLDX`}jSj_b6o;Y|oDcX5WJKrBC3HPCgyLWtV|L2e-3r zPIfDU`+eOZ*HumKg*R-l+9fyM3M6N|SMHij$})F#F=~84A8kyr>gk))p$;L=N9}n#y2dr;kA4M{O);+h{94rjwZ}LF^NLbxM2ftKC(ZUb_SAqn zh84M|76D;xRT*N$04AO01K%^uLoPvKDJlg?ud$j>sF>$$V@{b!@UU3y2lrG{1bM#m z(?lmSvqz~^anE}iHYa|DUNrJ)HcWzxyASj|Lfg;i4~85*XNaM^GqI&78IFZ#$`V4U zRGEkY*E-dUVNk{hcd$M$!!XuKr@K_c{07C80`_VoOMCSm&+3D;{|FT_tLTF3<;KSN z6e%W`iR8ZG`6f6S@k#ebPzB)$@6|F!3&z70^u~$5_T&U%RqfM{gOhHafh4Be=7FJf;BM6OvsZ@p`#q z+*6FW-I3uRPkR3(cgBb(fxvBGVlA7(t3m2vZ9lOYo zbls@@;3iKB@FSKzqH-1JGz<029gn}G$_dX=pIj`3WRl$mw{fac;upQPqmL#eotP)( z;uFr%oLW#;5hD;r$*&(bmW0kMJQL4ysi?KXBm~(^=1^nQH8L6Q$U3rU*zwoC3O1n2 z3FnX9v+5@<^nK3vAtx{qorc2OHteT1!pF(0*GIg?-3Ur?;>vAx>eL`a)xsI9RU4Pmn>KS-E5EjqA!XrMdc zB8X%R7}0-o8S5(|o1ajiAhvSt9dKkVDywl@lwwTP;D1c{RxLRpB3aa9tOk~iBGV%c_6L^RTZN4CZNh?=+Z(k`T1T%OB;NTd1U$VO;`E~=Ye zjwo#j`KbJ7RLyz3SY4-w)fPTkFYhw1N}h=yXAxrVe`Jt~V2i18l_!5eL2bQd!iW%b8)*>i#IL<_bV=m*@igFtzO!)$N!ghpFtG3KYNShZQhA5!{;T}S0Y$}sp z*nJ93S6(TN-(a%t;S~J?xf~f(-7(bxMiuewW1FICK^txo<##Qjj=Gm1M)gAQ7ak6u*q!ZDE4#4^4?V&Ww&X@dcUEe_J1zUbrpw zmz8e8k56%k3dRgzkrELsR!OIh?GNh4t*x5_Sm!HY66l zZd*G^XWlT$X=t$nx>x5cIr!H3wy;wrwWykUuwaBDa1}dI%pHKtw;Nv}P?W6lC~ka^ zCrnz61I|OdEw(tt!n^7$Zstu{yYvoWb&LBIEcrkb`N$P)gP5S9KaHJfknSLzJQd^? z-%U6=Gc)j&4QFeag!DWNq+58B;c8G~TU@R@l6Epw4l@yADzGi`hs1uF0A&si{)rz5PnfycSJ4`@QQc zwxF4eIka=WYze%;9iYvIRfnqZfWDR-n^=) zMnY3g2Jvv9n$0Ee904$5HNt>EX=TEFUB@~$tl((H#M9Y)xlmEL#{Rejjv@8*e4FQQ zg(i9j0Y`a6244khMZJH;yJ(^A-^}$E1dPWG;Ut(5EqJ5cV+4S~VX>7$;WW05vcoWs z4SGVlPhzw>hLN^(i{0})c|Wg_o7e4f12T=04aoe)EHG2ViPt5dR)An=y)bQ661j_S zSK!{gEXpsRaVfp-U;v+thC7ILZG|I<)4KTqJ4L*2`2v&Hku7zyEZTaW zhG>^9gBHFT*I58VW3pClGR(4UL&2VIO!LYE$|!vO!>SF%$2GBe<08rTaLwMqV*xJm zzLU*242NXNyDnUvd2s;@riHa6`iI))DE{g7gxEr-U0OKQp(i%}IlbqV+Oz4M6fGk1 zZ#~SI_7T+KC>jEHD~~kH@**_^<|JieW-Y6?)*(3Wpq<>wQCrh+fD#7y*?X?)YwZ* zpP>1nptlj8SmW0WPpOPgFpY=$80JX=HisL4EYHs68;AO5wIVl;ry`x?&4bx8$y5zs zkqk6MwE(5QBUr`>63x`{H%;qBn5nX3DLLL309d6#Qf;8Bt3{(FYrYZkTT7h(fKBw% zEY8o1{hby`X?#56OYut(uMIbwcA&+IJi8{eq9`2{tN1POh)7C+B%Hpan*96tIBL3) zpt)+xg~BmUJqq_@y0_Bs0-|@3BLNV3*}(LF{QsoN0hc?MZhVbjZb2)pdQIEjGqDbk$?5mwZymF8qt*#hSR& zRYvBtaK0Y##}ODM6lKotTS=865rhs_b;hG`Q9&sb-E$PByYmxJH$&5+ z{P^Raon&PMwXY)Auu>DxMTn*7FtlD{u9&8NlYs;+yQzE@?js}f*8>G^o^s@#3tK}I zg7bnRZ-%aNYdi#HLmH{V^$(e`zr0AG)RJ|ay zJ}}d9U*8w`>sBz~r_?VgrHhfa~hwBMB*)X*DGd`taN zRAAGcrd*x1h(UBAde;FCh-T^vm{K`7C)bfh9@rTn*q}6Gni`y! z*9Jok~ZlEyd-Y>)u)GOGh+#tM6z1RAliI1QY-Xo!Dt|^fX3=Z|8>fN+yljXlgd#CKj?7-E<)~A>Qkb~HY zOsh5ftO0)Z6{$q>GtNaY8<-MCA+@-{_XC@YI0G1|y<$;UCL^E4-)Az@P z%G6fJX7ztt5MF+Ey|+@$#LlwUzttjlHPUaI(4&F{CZQph>$Vdr24o;jO1+e10z^1q zm8C7xb0rIl&*&8(Xf6|hx)0UBnV>Bey+fuL%3Qgr)%wML-#L2HWo8lzgy&4Wb(>1= zt%1$ha$alij$%?W2fejiEJAHp7MflnFk|#-Od2 zf1r%=kY2|L9a`k%%naq**E-zZK%>eqZ`H5>v%+gSg_Nh{kd&-ET`SpvFRkl1*#+iQ zY6m9n_>4NpH!l=bfjS30T)IN48wh`zlm&4PQ3;vwc~NwjJE6;)q5zvHXUZ` zgkmmkB#+({(GjAZYmH0%gEm)>bprq@hq|6!gQI`_NdM6M1e! z0MF3CZ#mW)Hn6tXJslxQ()E{8N}kFo5QY|R5kIJJCZl_5#k47P@L;s9&)I&CT=sZ; ztRzC^IGysQjT71k39Dp{ai+n5p%VK56IDnbluXO zdJ9M%OwN`o0vS4Vihf-;_qncaGOgo~Z{eJhuk9x+$%~+e2nI08oC9M1_hBxP~CBiWXf=fp`oKtlZ*!1r|F)*Ii^$uWZLgb3z_4`2@lrrG_7kEm?2f+L1`~=76o|um z1yuzMI>ro`@68_4od$~SWZ5Xv!zZmasOs$r8;JYaiV<3L1XD-J$W?|TA_Nm!j}vMs zRsK$r6M(-bG#{CRbf)|-??9Ud}dcVSu&?q{r;J;;oPe?yX%9QYe1W}>q+K8PA zpE1}Z&6LSyl<%J+-c0Zv&w>!)VFpC^(xGgigXvB%Vj-PVD9BNTDobCt+Yk^yKh^i{=9dpWl}Ift-YM%FDX7D@#MIvo)SEA&E>XuFx>@ zl@3Qn6v?Ty5`%HPlP_VBl%y9`3xHsctSps!QFQxMz{GSv^+UsMvAn_*rQ*J^g#(MN zGhE3LmgW}Qo+?~N8+@*)Jy~6_K>LV3>uwIgA3|~s0M=|%`>wqo#Zk0n*iK>|!;~~R zdw1q#wL1E>x~+xh?VG*>)NAZIPP;KGi{FR8ZpSzVsQZwW%8zuFf_LkeWNUF)i-8*l zS)~~gOC-tKB$X|GR3;^VrD94eM(yFHNw9azwCT>HQOZ?6Z=iOwDBMX4R9899lVlde zN&dy=+FIauP(SpRQ(35fN0S%S)Lw}VKi1Z?w9x)ZCKY4iHK-??Z{v>GC*@fUP7D$F z)fQ!!x;fmjS$jCBCMdr2a69=5&JhUubgMnE6$aJ14=}T(WSjJeZ$7FL`7S1T3 z8S!BZA?VpQTy@%Z@O*L9q!%AoX)LP9&FveGBw8tY%V{EmhD|Z50MA^@ z00NW@TsRkxXvQgTMgd=3!37^Fk8j(fVK+l(gf#^o6prZUWJVyrDx&+6g>Ebv9Tahf z_9;$cZ#5@ks30i}9uiM+t>HK#nVOs&llX&-Ib7!2epmglI|TjAA*z67 zC&RV0AU-e}<$hN13=?M)Vz;3?Ha!FJ@_IZjzaK8jy(u6T3Y<8*cP(iQKLhybGIsy1 zyI`(9X6R&o<>BvO1QemO6h+_$WWkei+nx7d1gw;yA-=0V@O+Xj;hnDQ$@kX;C&eLJvIrw+r!})N>IC{r?%KAL_I*nUe7+z%$kC)xU?bH3@%jx*$ z>4)p*WrWSr^wvkGk4v`(@9;onPR{%BDLuz8e(!6%chS7oOf9 zCapKodUJT20Q2^%axPoQhG}s#yE#^?CSKMzlOq7^t9#ZzwtRKf2VPdaACG8#j{%qn z+SquubF?Zy*8m-7b)h|Mv$9hzeI%f+(-$wC&^eaaEjmIrOyXZtduF#yQQm)Mr{cq0 zZZ*UmGRSW^$T;a3bH$Lq*pkF}-??;gfvw)eDa^SO8Tpr^a_C5SChCjb1^?BZAN zj2{!x(s3LheSfH)3ch#i`0?S&>UHo^b`SXCP3!eG9b!U8n<5m?8~=mOjV%5xPRM@6 zOs|NR(Jr+of(dS)h3cE*wYK|7z4F*J+01}m@_8eES*PnOfoF#jx3N-c^mpv8s;DE; z)@q-oiFWK$TvpqLtj+Dv++8exjz>8NtnHZGE4`iKjo{oyv+h{t-1FQPd{e=p$D144 z$_`X9H-lXT_UCwlSf3bsi*uYOWY-7#P9M^O?y<3tb=7<7AFI>nHbUc`->83y<{6op zKI;Gjn9%)J`&aR9{}t`VZ*6Vk=%B&G^wlMg&&2$vVfoXr{%P3$H0*yj%yfU6zar-3 zwP*!xtR0Q4zX%L}cQgL|{Rj4k^#}Eb^au2ZL;r_E|2GGp{?BmwKjZ2D0OH(- z|1jwPK%E-`6 z@Baal{cC_DKFi-i(8?P**f`l67&(05gI$k(y_YxfK~ zU!8wXlU7lY4xgU!@A-Uf(|>LMJ&ms)%i7x*C>S|v(8>yl&?*|aI%<7&%G>va5AFr%xs0=eQ25C9MX zK-|3p{7d)$ zQQ$wVB7a}i{!t14M@quP#>Dd9)woJSE9RUf-s?&yuVo~{Lby=K>jDm~HDOe9<0lwn zpOr4Izi@8zs+E=DXxzo+{l`m{ew?uU(&T|20*KxEp2}jGLW%f94ZL`>S`m_(iPb!* zaMCD)A8(+f@%wd*kHir8tEBLBV#f5_^9{jtc>51+-0t^#5*h8}5F0$aJE2f2+Jxcb z5U=dR{J7D50=c5z)iDN(o0fe+it^3U-y6N(Q7-zrfu`2!XD^mc8pmCWE(#;L#)7Rsk?!DJp4URo&|2vfw|*WSM> z_F`(NSlvD)L%0@~>V9MLXHg!xdCi%_bM{azq&_2FT)rIHpAohRi&rBs=dA8<-uESP9r9^rPfM-agTTVjHSmmkHq?QL&E1Z#(ly*lX9eV!VFLs16E+go?GS+!jFIVXq z^Nss`z2xdb8xB%c8p5MJXYSn^URy;f9=A9vRtkh|ZSc0k&wo+7?6WK$W) zc|FS0Qf>Fb2zG?>;$``ICdU~Shd_*XpU_Ex2VSt<^fP*glZSsy*k zve5yimi!FuMQEdhdy^Zsw%SFARID<3J9QJG2=QTk71M5%(vs$~OhAdTf<=Ld`@{eq zeTiASttQkc_=17+qa$5UW(r7l#&&A@cV9-HkO4o!>;2ezb*UJY5H+>$r}~XJ&d)p7 z2V`u^AF~p{Ku)K@Ew;>Bvxbd;mqRo9RY$L&`Hk|lAPuzWYAhu@0t?(2wz6I5KoC{; z=lbk~^k6iMqEH~zny;_#B7Mkn0qp(yo*BK##5W%FTYkyhCUqqQWsp*8=(VJPfU3X8e97%j7Rh&1Jh!n zJqSE4m=46wx?rP+PV{62PHwuxE(3z=)c*vt(q)ZvmKtmtgHYe+SPOdFJfeZ!V{|T( zo$vJ9#uG@}^@dD$ABRcLRfj1S;+#X^*L~*217AGf{ORvPJ4)sY)L=kRSPXmwI+71| z5>c=US$OHhH2EiPn2icaRMQ3Pry@KZB$#`o)o;bOr+vC2 z`Jic~1-ag{`;*kG0@+f$ULW!JXefhx?v0XZR9E9lIe^yqpjZcsCL0o36g``(KVd$TuCGL2uzP4Fo~SO4!FVWNYYIPa85dQK>%MxUhKF?OP|jk zC_UrD;sYTc#Dn@S1uqj%tdEEf#By2iRiJ>zCtq--U(V#~vQxb6O>oovBS-nX@+Bi4 z;1nnuKEK!Z!gI2jDqv4p^If9-$e}61{-q#bi82Mq`@u?yFTYrUf+D{mR>Lfy=j@Br zdC=K@#7N3{ZI!ptPM_u0g2^(BgJf)D08BKqM*Yn0OtYV}Y=DpNHqu3FQ8aUzO~fD7 zh)6J@ok#U?Ps80kgh{3z75l3to~NsZdcRH$KSD91nBCcVl@Ft?|5Wux34{@%?<-GK zuP8npbS&ccKx1IWa)6_ly1cf;x$oI{cG) zJ9~I>#sU<8_y_NyoVoGQte4H834icXjq52tVsr*@i939-@1giOSgcMc0dg!+Buu_? z9K(YGpsj$K@|f~ry5|Q()@8zhbqVAjbbShXh4sO}gbmIJl&Gc_s8mV5a;UgpkDcrC z9Q#Su{jg{Lb6i>0R4J8rF{62c-}I#oZr{U*^82~4j(^~%2LC8`_&Hz#w|&D-0}ilK z*;hQ`j($7|O?kDIb~&T}3d%D<&kfFT>UmQptah;c z43_T$B_cHn7$_fMw(a0|$<|v<83gRW@~rYqzr|6KoeDbD8J+S~BQ9qLgrf<;n$5hr z=GLMx*(`>>gJzvxhNcMg${<@XJKhm^eS?aJweCb#FuoSBv8^sn2%m?gd}rq=Rd2vi zQb}YM0~RYSE69a4c>c^yWHj6>$g#cwg5THoc68MUPMUKT;h)a=+C$%wi zIgk)a*kvh0n^QVk@hOxD-Hdh=X@pS0Oc%Mt*5e&vN(ftE*S&pHA=rK^l6=2kViMb^ zJ%ze@;X339S-hVF0%wg{qAx5qc znmUBr>}pGh>)T`73xz0aoAUe5?&@On#%7#&v=)#p)DYs5Tk^H8~ zEwo`}K;K&|v>Lhnp2~TYh;*7|ha1h{K6$Nr8~t5zffSN$jU`ZZ=kc=9f$asOc!jej z&9~*Lzzn8sUbaO}H{5vVPmBl`u6r2?6VVUa z9}HyQU?qFw>StSp=k0dZo^aWNFFt|@z8X&fDxsEqhbuN+y%2K?f0ZyQC5V->5B`eWjXb% z3(HY^KV{waqJ-gjBmofYx8YHpJ9VFv+xZ=h&=q}8T1UT~3b&~>QBv^&r#JExjfKu% zZ-7Q2?y=CH*WNMY#`t5j+e^xZwD{TbCBgXk+b7N$3TJYrUuR;Smyosn&u&CD=pVzH z!GL~k7w4GJV!LYw8d|)cot?A~bydW~_Hm1v*q~sHQey{9u)`#$D>cMLu`8|o3L4Y=^`O+w!F{P&`U1E{Xv`=J?;E!si8!3n`^y0sc~bp9iZ|RaS;~dfOZycLOnKb~9ea|xlNAaUCriR6zb6Ps1{^o$oRe^AIj*88>RnGs5)lW@_?qK7*EK=2+E zZZQgqGWfKVPm>AuA8SC$m=bmk|Gds7V5GT3(SWwpsOoIM@B+YRL`u&!)p#O-b7)ZMVHYoToeZP3f|)1SAWIBjZdvN(yioZL z6Zn`k7#ReKG=n?mdbvPrx61m4HP+3jo_j4K1jaI26zBDjx6M%HM&Iod=N} z!&Q~W97uRyE8Xx;Ef;xmWkl?qc9|&(QEVVi9dZ=N-b% zmNG-yyv#T`JW~$mE5AnKVY6Dk)YEHb-kwd9B^EskY_qC7WNb^p<(z?d z;0Z)>K`7PAip*~x52u`;lwz`mv~*J#2O;gFikC3+F(JFo3weZO>wL}k+${r+di(10 zL2jExyL|F97EBc%`N-E{)XlmCWrnK7r-<>3S%cvdMr|)AG!mezA+{mf(Dxuo8oe3i zN*Oyu7ntIA5j*g((Yue%-mi1!#k1&1fbU@LDekqhuhSShc5xxKO!cS`-)Q49ZB|D1 ziXltG}FGeD_FPW$Kw@-8a?{OxBs(5NuOq=kEg?AH7y0yG!-61u&>$(UlrH zz6Ah&QtNHy$f~FNbI0gg%-I0L$|?oTwop=rFJZ*H-wU;haZ0hT!zsJw&%kRtplE=~ zJMTzNi=^+#3rEU`c;*eQJWgz4{VigWZ~DS(SW$5gu9Tyr3i@jTx;d7F@W08^1I5xePX^SspZP)Cd+5QMJ678nI@WeQPPV<0Xd)3bv9`0f zP36XeC#bIuFPNpsQYyWj5g#nD@mtwx`l*Gs74@lkCEygud|sW$Vjj@%n~o+C5=%Se_Mv!O|x9wyX{++PbaZQhTlb< znVz14bNmL(#or~gAJ)&$Ld>y0V0Is=Fso(SnYeqK;0-$${tL*D!Wdvx(!uKvuF)GJ zSB;Y)r-=;T-%(R*ru*`FLjtRvk~Yu(_KNStLKeB%kWtd{#r9kNfg{^V#4=E(<|8N@ zyGvUYghM4Xp>2nBzoC$QZt-VJpPzvmauGa<*}Bgzj`CGa9AEGav7Q3Lgiq(Qcm6pw zKgIZAdyCMz_RHsd*ftQX>{ED&CNKO`f=jDD;Ir$kTHoy&f%gDBQ%MT+iK4i!tn&`6 z48Yi(mF}XtJg=~Td1=MW$^udC9db{gRL(|vJB6j zuz{!V3dm^Na!FW+D%~rDq&eD==MBbS20+oa{YoVv?5lroH|<6A#)d;sj=Em@A=6nC zwlxPxhZ5J_coa0W%x|f zxe$l0O5D(J{LiR5X_s$NkMwkPG`v33tj;o>v7_QM-@W9TkN_Ml-N7^844- zG>f|(-%ke8IB;F=We^v4KCc%li742l53arB_N7uO7;t0(66*#y@g^wtV)$z!Y5{)k zSnzHp1He{~W(rE3M>-B+=B2W^)6L$NPqp&eWp~Qk6B|_fu5-)EK6R{E=X=x%ek1XV zvh6lu_Z2^)4|o2=DK(UE;D0T!C)3^ zKYj5V++lnCHy6i{9vrbe?HIA|-rEl-!`~JWu@OOcTgnwbE{@a`I|7(SV z_{;JQ*awjLuYmuFDfr(4{}WsAzXkp$#^8So{7%LRBP_ia0I-uYhYSD&0{~hL zDEnV%G{gT$Ul{1=nb`k#CJ=gjW>ywD_W!;gO(jTG#bwlw>90R={0wX;7}9RLL=iyr zQo8~+pa9ZvDC^vOMkt0-OBzU#eERUzFpW2esG(F<1EH#yT+=>tgQeme{>U}rwIymX zX0fQocdU%kJ9n@GbSxqYdkz6QWPbBvoM|;Vq?yuCr|wz$xT<({Uxm35y6dW6o<`$1Eemm`h)fc z1$}TLl-Z3t!b&-rnu2_N)%G2GX9E=95ui|0G$W7T$9geIT?+l9@iXL67!7|qL>)Qe z(}K}Gt4yvwn8mMN-~`5bN4C5Sm&S$ZE;gUJpzk!z+^*!6$61?v9IK@w>bihnf8c;2*0h%g<&ZU_@8#( z0oA85ZPnzNHXs7mCT#1GsjE6;DesWCDWKFxuxhV1-D63AGxd@AL+#QvT6@0YvxmbgJT4me>%)K zv``JSVvvbbGyNFBUAbX;&5aF1;~>~m^#H7vLs1%ITB;vsns`(z2fy9<$%0eV$E3dU zm883P)&J76z`w~_7&w}ad6$hwwsgt3+pL)Y>&Df8-)!(Z2f@3G%CjhgK32g3`oL2m zO3yH!Z92|B`em(s8R zkjbw&ygOg-K)7O~=%HdgS@bPs($+gpwKIJA8ZOAL zkb}DT_*CIVpfGH8PsvVcskG}Xa&bUzT7aHKm)BYj9ZOt|DWFqPZ1En+stAokYWXKQ zy&4q)YmrLw_&!CFS-g6svV}zxI`#59`^V#Z&XY}A*pa%S9Z#kHmCg`cbR}jL+q5I3 zidX>xl*!zvw1O%7Jk%OrPd>+*M3m(rlU7m9Y0kY(J9V!iB7HxNJ3ad#;Z0*H;<_;9 zyxEP*O+aK~mtiIjRf179l~GOkp>grRZFqf|vJt~nn0nPiyK>2|<*mgvs=TG+0EGLS zEG?JU&90LWpRAsx?HwDYnq2IjyePSoFvEwf0j8Yoj%3D5geiG)1Cs*pM1g&bv{j~@ zu`>TSO~G|jmyRp&Q;dRp%uU0b0ihV@oY#mxLM2JvbP_0`wiT-8P?4LmCpmSa&7?=@m^mq&STasgolvGqn@X-1E$i z@=W{ArXc*S3VB+-;G{}PRU{OV3D=4ux$Z-@lcpP;$dELuNGz2WY;)c?O!n1PT={A@ zm}96eOMenISyr9ET3uk44`E>C2;4q5Jb}!PUz@OEEsVE9H@pyAKPGcT%~rF>l)ZNR z7aRHbsTvL%4gQn!jQiC7O=HY!zoB^H=MQB0$YUxj!k%7pDukSUu;m+$xA4BDU3n$v^G>09vq zUiq8UMzPMXQCae$%iqT3f<@cxY3A6d1slyVjs35~?)2kJy`H=HxT>1|unobl5LS>!*wc!J zX|Wz`hebWdU?e4|b#`?fxa$pGpK+ty*TWQaX^A+6m*7yd-})5excd4?$dhqnjzZqF zkLO`ipTc#86`LH=^$={vRbaEOJx@4$J8KdW-Ts; zfRwP$LHQ%^$>HJjTS7R96c$uw6DpKuA;wkj{s!XLyGYb?DC~$d6?N|g7JRUCyNwD{ zW3Rr)=-_50*vf5ei)IJIDH9oPbw(^~%Alt*3vSws)J6#fqdoh5L*{v&!J!w;NyD@q zca@fA@I%JBSLB$jIm23r=gw&1Gr6);LS6cIKneZaaX7^sutZLcI_uWRnA`ON?$hL? z(Kk<(`%&9hhLwAFFuM!ltg5i`4V-}Tl|tN5VuZ!6Cn%ii-e`|*Ye(Bcj?V69Yj3QK zX}$*rkATS|OBULJqdBhx2OMVu!$_j#gslP|pzaH!o-pULS@;~{!DW{-PxzIW>u6s3 zJUw^@(8uYuHs>1vR+iVVmtC$$Za~NeeK2X8S6HI=FXOo64{jV60t$sFxXy&m?Bc(l z>xI=*X%~q%Qw=9u#gP~_5D1IaX$?285lY3zl#|Do9s^Cv_!YnZn27;$;`MA?Os$7i zgt(or0eL5vEdY#E2K4V2i4tJBt?iq-h^q%_6pnG}xLaFYT}@jpB0x8+C9djC53W9@^{3sSs{!kJdc4C^1Z$8(-!X**d>}X@W&q-l`aMB zfx<2~cXZMVT_Mwz=^LUChJSGEQQt#33?~)@za(ndS@$$12D^k0u?wh4W~v7Wt#fCv z+G9|I*uYnpoW#(CW6w~MHb7#pP@0;$&IF3QF zn;)APeQx9`JErK)N?Q*|d)xh{4a#svHkS;b;@9dMWJf?geF;Gnj|O7_qMZ%;TYvP@ zx6}}YLIzX*GIZ5AbNBj_y;RXVut4?EQ}w5$fzW0I-bTO`z03@?E*(xaqr+YM<;FmO zEF)QFwIjlfAz-v1b9o+z)FVdBt#5ta=CufXo{$KfiOn1 zcy_r&slvXddfEDPoGJ<{(DZ@As`R;UsAk}{#0MLswtEOeOgV)34rY_=g;A#9P4qN< zexk9Cz~n9b5BMak!>0aV;kkDxL@6icH@Rply6MtN#47wqW)+-FwKzYWzxzK=1d-*` z;Irp+vy1TYTJY=R;8iy24qoEu2SM(?X_%|;+^5YW_>DNifoFECFu*aD>US1)q75x# zen0$8hkz;=Yz`|RY|oZD>xAhIVm*z6uB5wZix>;e}jXnOCC{?!Cy(h z+0Z4I^{ayp8_3;>qu?6P1o#}*9Zcha;VuF^RDTM-q>;VMTRA7h6$YD{&F&{0-%s6O zGXM$iKB~M6TZ-N+T}%hDAwqB?d3N=K=!(jc%HA`S~Wd4`T%(-QdqDL zAJqJgz-xTHF{e{q)B@BANu5nsH(GaV@T`9LOY%4`<22u<+C*4vbfBT1k?lnB!_4Qg z>qMzLM3&cjZ}zqqI4sK0ZghxK8K?e0fdzcA^U%fMH@QnUM~Wi@bocf~r2Fyhq9h9- zP$W<&yY`WbYV0X-4zhwLVz$nFES59llVzoHIFd0ssxlm?U;__w~f{5Mdu9V`JDx)4fw{F;Q}CB{e;lU*wliY#&TjT znF8sp>AY(aC4r2SYL@l0<(`gmauo2V~$b7HW9`mGh zI(pJDyFd4E5-}|z2BdrXo$1wMAiI_f2sViDRk7KUXVLP&f>47s4%+bZ^=O#E-2oRChyq20v^SS@4r%JVoOV8r7#8pkY&$;yl zc@nRVOWTtnCxAM#K#y7b(hdK7R&-1{&*hWCe#y6J8~0P_qTA*pL=YY|m5?f_UguiH z?wTw<@&oAS#mj2HR^}~kEAF{0d&32zVYlB(yH>j~{VA8UO4BpGKdR&_t$LTyt*?6) z+}aY(VTJ|+pBQhr>!{YYkZU47QK6KX}%|qeX6DqgIQX@#t)JS z_x%b^uBi%QIde`aZO%q|_Xp^`Qpm?>d=lSi%J{HOfhJE+y>;Qt+86tr#`fpuTvdZk zvvhd?rLLapOeEWm9g~>|6AO>MMHj*s0QDB%7=(4#{NCTOsTnWSZ&h>)Y>Wbw4qaxY z%&+@|#+C@UKG6X1rsR;fYBizTn^V1iZ$)w$N!n~dOd)(|YIEe$kZahc5e%jhX^#UTNvC zL~;AP99#J98S8{o65JsSlpjeIjOrgJ-OIRM??-uhFJ_{$XRh?l#4bmJd3d_GJ)mwl z^_!$fX1iyqxIO$<0#+GTGc0BeBmyF#&_U_}?|nBrNi&=T-i6)^oNJyF9+m9pBkl7| zYF8~8v}`o((~H`-+U8p@@4~Ie9n1GEFW}waQa(0qcoZS&h8mSDOEVS{3+BxRO%2UP z>s`siOEtv&<|tKM;4QFQ(pgdbvxgy;PyH~QBLKXCy3E*bhdya)`Ax-dRynPu2XmV2 z%jM%(b9AzrR3=*9U@2oVOZ3(Nu7mb{L1KPl0KHzxAV2!v08d^Q29*3~48V55zsvBJ zRS1#SF%&DqBTxwA*tc%WN7+VT-l;2$A?>zGiErm!ebv9#;;EI=biwhty3C?=L4Uox zxYN?-wEIW{cz7})<3nej!YE@&2O)1=Y-~Iwr=+wbfkCjylL%5i5m!+zQzEk>Qc@XW zVd=m24YoEk4{C%1Ng8XMb)x%jTB$@Jz@+at`1+phH5$|`xA(erclVs~_}Y1O^$2zX zVPt1Y&{6s$2A%Y&7}SnaBWOLszP-#3zL38#!@gZ_Xp+mCl4o%!)(mt=g8EHaUCnE{ zKb+XLDdk0q`Wx8J#Bea+$IU4=P*{i#@>fcq@18)uQwoa^fqrYemJp^B=%7j4I|-mb zAT6Zmz(1>ct*p2aHZrwksRLo zdG|l-bO_M?3!BEUzOK9|J~AA5FS)n&C-qK~&!x8v$79jM35bDq zY9OPD#}Kd|>Gt6tb5qh96kTMw{7FOYA zM615<4GLRqe|$Vs$8@zc93Qrc4q3oiufDwak+pQaOiVv+xLe_&`n2XtK}0q|_sw6u zJud{!+Y}5?1BX-uOOwD1u4b~4N$czBHLXxPQC2iH?YW=Y8C5Bx4PlL?UQw3!_5d*J;Wnu#MwtyEluo*WP38NjOcN0C|>eX*W8GUroD5nhc6C!bA zirisy$~3kCwt@c&~dmw#v`>Lps z*)`109})0y#ns(6+hG<9FUM|Jxh*xNJ)eE)-23Q(s9#HD+WHf9lD+283@5WYb1L&` zdGIqbT`=JML}HpstpyMAZEg_iMi9R?eFDwc4#ASvQp*8z zlZEl`!WVgTteOSws-7iNj%Hdce`m4G#vj+L%yM#eQ+dG&PVSjJAw~6Ag}guCCwD)NBwsQH-Y4sx zJ$y}Pw{4T*uOdEryz;JyrtZ>wcHu$(jTpY72U*e$>A36nQS(`?zw^H%6A zKyyT#SGlLqoYB;}j{+YbIKoxp^6UQQh!l^}6XJN}%JRt8PLs5%7G9TdmZo1{m%E^X zt+}&1-=~V{uRGn>J8;3Mq5fe>dwLmVtRzrMjf4~~);ZT7p0e!6(F~}(i4He;pcovk zWl(nk^xjL#cgohRZ~=@BD4ll_Dy^{A=t_%uyRyd$Zw8%gxmDLe$kzhb$$OjSlH+q1 z_HMC#^*JBHyV_&$>bK2P_hlfCLk$Cs@wD3Qb!a>cP$A#E6W{(dY@NONfNl5CAxI|E z<8($1k#yldu#Z|gh4v0@{{mLmC(th~GDw7e)rnjwrbz+!f{6#knS@y~LB&cfmoF3} zR$o+hI8R~J7E*5CVs4D>a0p3~VLgR{!ci!jks`(!0q~vixgzMA+;xJUUJ1&kI}u_k zV0M;J5{fsa?|o9Av7~f`VfR&(K0~}DD*D7Qoe}sUl-jcK^%r1=E~7@RW+)Xp%J|{9 zxU4@OBYr2MDvCUC#u1Vp9otYBw(wHllQ^{=rid_x$l&&V6gJ|Mp3KfKeUm3#UGuZX z|Hau^#nu6HTRKU@*fh)yH_Xh;%*@;*4Kp({Gcz-%4dV$l%yh!caL(;NGty|JJJM(* zOMbEau)Sqj%iiCDYD+DU*1f58HsjTpC?;yh%xNFNWcW4l+ze?XtO)IUq;kfzSdvO% z!}`h&DONUdqM|@q{o{0O#OoC$S$>NORj<>vDWv7HQOD6)-`B)N3shB9H=vik)9n9x z&oEbS5YY6FBSaJ+?di6X^89H%_JZ)MZVLjsS3;Z&iFVdBA&P&r4nlx zBAZ)b-a@hzn-tu=F~dI#TMquzv}U^hF(Z^(6-RA<{y&4Q zaE?!41KGhHCJ@m4@*$g;BN^$xxDlh0#9stu%OecR&lK$r|y6!U1*9 zRn3y5NX#6%J$j7PL6Jv1ZH&}&9bSomW+)e(%j!E~@3-WM!z4vc0k2Gf8^nAeLw!y^ z$@=)OZJpP0KK@pQ_=I*$UEPkb4&@yi8(}Z3Bw{o z#g_)})Dh##70XxEDZV|HNothdu|uA*e+ISEutSDJkR5(*nL-;EH?zZeTcctM%c?8q zhuQr4rZMWa(SP3VdaCJx*+(hBVM~@$Z$8^#zK}Nl4v3+xHCLTrwa|{*^fQjCJPqPd zV76>5mr3s)ZmdJ_NeX4ii>d}ArhTJfA1PEhrWjgggRw+GN6DN$gFt?pFrL zUDk`MxNXHhg*t12`HO*AE=K%U9MW+WTb<9&mw^)7f?g_WolJx@sr~5NMB_K=r6lK{ z(v7kD`Qov`TM>Jx_~v`22+TijplAfs0$grhF&=loCmB{_7)ND2{;W+V?`9F*uMf8% zh7HbMm#c-J;h!UO=~o9R zqHM*jY*D}eG}h}y%t;T~-1xwdGC_qR!MI*<0t`#o8#|1zK195Jk*2c9q0#9|kWtC* z+Jg^okDO3d!AiqP?`%_@$;@cJWr<45XO1M^8z{6|_v8JqrUEEgLybr?uHo)B&2)Ea zxj`uST8mKBCaVL_b_d&67z7b5&|F2X4M<=kXq+-Cw<-BUFi9gBD{phOWVlw47%j7yo!9+hZtX_xBKUVUVZ$F;(s z$pVzS0ur~n?qFB+ui}35>bfvoGxQjiB#a$Oy9GDKv|-8)c(p&cWsLL7qP7JntOaol z1!3)`Os9~e2jn@%P^o|UG1WOR)ddl0V|sshvEhelB+;YPjU^~MS?-Rx2P4A%K( ze_ku=ZvmNn^Q+!jNUMr|7zZIY%*GTZoNoH2`7XS;b+%1${dk?~wz4^?NZd_CMW#C! zR~1uG)Qn20NPRpgYA6p{N%Tp4|Mw|Wcc|)zCbF48{Q|WTt=4UJU28W66%$@yYXW2!3(nSM`Mz% z)^nEIE~NFsn~h7wSC*Dc$Cun1CrW@(NsOy;7pi$0(z=W&_4gyr@z4V^R>xD}oOsdC z;m{=`JP2=UQXtj7?ADO2+3RQFbt&XxvolQ?sk3(De(b621fiw3GN+-dvoM7~eBIWf z>OzIP=Hn3}`*V*e6F|(<=PG4#pCU)%_pnDT=H~mhbTfI?!AggyCuIqS<~PjjnKJke zXbfv8ndM<+0=kpSS^Ilcr@SLsk?_D$9-YWO%y`{JE z>qMgsKg%^pN2EBy25h{*&C*E}dzV^h92Afd-2 ze_NN02^u;LC@#osa9oiItv4CJxhJ*8tWR_eV1IEl$l1(Fl{zkIa?RArwk=7ySTo(U zhR$6gfH8|}8sWC`HHG&t*?x(4n%X^&BO$206%10z{Qf~dfvXiwiW{$j-h`__nl6Id z1TQKgZ6}6VB-n;hRPKDK%%G=-f$g;li}EwY#p9yVy#g1S{*FUI)(=x6MUthm<7n^P z%a}{7qh6RP9QGHd>5T$8><%mQ2d!8My@KFn+DQ@Kg{5RGjax4TRf~Cl42OZ5PHI@0 zNjCir|Fi;9CKVFoH_OR>JCZj~8iFz(oz#hT`x&E&mavcC{5fOrMHD4^it+7A)4Z@x z2)cu)MV-hwu^MZtbR)_BvWxz2VjnEH*Klhnza>8eSHpJ1Mx+{hOLgzY99iJ`DW-7c z0x{ojTJY|bLf zrbedsyF=-gGBuqb;8>`K`&d$v@WnB@uv6p=BLB%na+&h{dykzY$qGw}N#>+uIr0Ma zFfag<;^*Zs{IQ=`b46mYLruk#@Fr)k1mmp9$f9ksyapS?82`S< zv3_pnJ&@$*wiWcuRRt92@wgyaYPGz-xmHSb*XO&Ls5nW=wvvKP7fPN}dvzo}GrAQO z^K&@rw|ZzhYRiktUN6l3dAVh@{V>`QAhk-%^9+;Y);B9Y=fbWqie1VzqS8auc2Wr= z#gOtOQ@TMhsGp1phcf&M zpjmY;>GQmpQHFKJ_#m3T_|K*$5vnybvswpAkyZ;1D%QB|J!9I~K!&d99 z!o-0qH=Sl$_Rx9T`ATn(Nl*riwVH|3Y_U#npI|!Qh$A{?wB;~rLsiXrL?v3`t7Us2 zIEQ-FT{%g1%c<9U{!M5{fzlysovUF#LkVEj01z3L?K`RcEqZOwX^c>yjwwmtRvRVT zS-jQ#l{JNDh&7^gn#6*_ z_^r0Yjx6&n+aZe;p=}e}J!#J?f6ZL>7$GTONi9cRMq-jJC7C*!tN@fH^S)Nu3mOHD zs*nqv+Z}$5D9K%~x)`w)S+#7dZGC;e=E{gOpAQ^_^FObuWyTb-HVc7Yd>vbQFbrvJ zYrCjLl(0bE?)%G=Ci>xQeA(kS0z)p>kVojLinjvZuXc;+r?wyPgREVOTskl=t1;w* zv9!RQV0rEl9Qj$`VDoL=efL6C7$v;QCk5n}eR^)OKSnAgA#Y>6s>N87q$Z2LK z-7SKGm3x*pxFPr#Xn#((+@cp27lT8~&1ci1biy3-ape)$hc9Ep3DV!hEZ84JQ0RO+ zzSo7?gpNz-;A^q^{V>7DpJ1+K47O+zemsb^m^9|~^H#e1$v@^1lO1sVZZ!9*UqSRJ zmQ80Es;0Q0sO9Q0`psXWLu;01?EXHT9H|){0f_;%UD7_zp!O18rU`RwKNiE=7%sz2 zNon6#X;a7lr2#?0l&2*P8SXhQ(#rBsl*gPGg?JFZ#A^ z)zvHf_|zq~d%X1p*{c2hmv2yyq>)LjbHO6#DFBzct^S4OIoy4NK8l-C{TmSpT~va{ zlnb?5ThIKeW$UC+`*UR9!uB}RMTx8YdGx0uPlKPip-TNQc+YUfA*+NOAF%o~fB+^~ zTnIuB*cz-m)NAV8Pc}P|Y$9fg?-~(jF^EU(;r1qT+pan0vc}vtA)^*oKRmY99LBRs z{(~d72)Vgsm<+A)$Meqq!^g4C>a1opz3pg!A0KXd6*H$N&pI6)H zNDjBxg&uq_ui-0Bj`{j4y<;JIEP24)mAs0tUa$JBtGaru5il~Z?ZA%Dmh0KO#Oges zyA(@JE^|_EI!wfe{a68%wBKNM%`?a$NEkCUKiZZTAGteuvsP1w&3X3Jbgrjd*3qM% z;3Z{vn(m6%2L5!Sh;T^?rA@Cn-}^A<9uSZknaRze`~1b~IQuv{ngkDb3s7uyI^1E) zXF~t@?TYRxF$U%YOt?pSAT>7gq*82B80l&z)V@I9D!FGw5-tfifN z;s)CzN9G(~nDhll@W`i>)j!;1p|j0MnR9ul;v{IxP|E0|0hr1e?)d~frt6B{AzlLG zbMbMvzCsHq-P;d3d6roJ?BtvMbQJ0*{@5V3f;K`oJGyPIB=GF9GpbYVx;_L@Z3SHX zb5+@Rr}7Ov->>kSy)L7E*8|Uy*Y)~|touI97I5d2E=0NKWvx8sy(|$(_KSSj^|1Ss zP2Dp+8T7bS251DwzK&azB(ILb?oN6qOt2tCd6=^x6_GW9F0QuN)5 z3fLg^GF(6SBS)G^tS9=r{TUxk0%c*5FVveCWur&$2i;qBGwCD3PaENamLPjvGvdQ9 z!bGml-vnmK4k(Hv*`(1e8AnvZ9=$5JARNT1!`xY#J-|3YgWq`gtNCCb7Ja67^myYC?whi z`Wp8yi7EZqAq#r+R_K#w{nC5j_J-SOq$7ex#>5N=v!(tFy&ohbAyECCJbwuH&7&%D zNLhyB(=_fIK;A5MKE?Nwp(|(DU2%N?Lp2ik8Q#7&24kCiu#U?fH3N$52ho_92Zr4C z+eAPx7w1s1ZV`Yl>rBv=#zxtJZTuv$MzeOa?~G?~wuKvTc^1g22{(`%St*<08zl|< zff4p0$?JtJ80X&Ts*vHggrYC}NP*ou#RdGrUq&G;1}zFvw7jh?NPvJ>R;`W);$o}ne1Nh#FB`fHW$yN}79V)xw=atybYUSl$bm(SM|7sV^hCW`U z)2{hq1+7YjPw>mn?#EEu`1sff!$X(852oM|N_G{$7~7H7smhT{HltD@Ya5hBBV708 zf`+cKs~Y8#Gvi$YN>UwipH{7Aj|mX6){5!!Pqtv$gRF#XgYw@mRRPr$vz2hAz|RMq zL*>XTS0Xt{_bsq42rSIoKpY6*Pkd9qR46kBB)rIEwT?bhXH zHSPDOSUq5W-XND?vP?PLmxy)^2$xG6xbzDI!YyPPRM>^}REJYMzTFxGtqqXumIT>D z8fjU*c!m3;zRHdRNcjx}LJOXh4N=oTTTo!)e6`p|XKSH%sVAok@-;wH0m5U%WbG4Q z>E|xX`yR0_e(rfOL<`H<0E`uhKkoadGHsba;(Cc&`O~C>ZNn2*sSxziQa<>XQT=ZX z4J`=6=UhLMJr)@Xr|*GtEQsTB`+=%7QRrWw#lNN~7lx-xlknR%@xD|R79uc>MJtP! z4Jx;a(4iJ4vWB&j6=UgE1Zu83315EC6a29{pXl>e=Le8sqz;8x7wTi%scm`MdcSa6 z-u9_$yB*0L&E@?q_x9SVl_;lnxxhJIGH+*IP6Alo@N^N)Z}n>3T+cxFkvWz;*YPkd zZ1acA6GB0C^w!d`jDrG$@Rh&{ZYcVdU&nH?4;yc&u$EJg0f#|S%v*6H$!SmpT`#g$n{F|4j-@a3fH3ORxl6v$S-%7sSXMDlQt0w z@ss%-_4;ok(NwJvITqwl3W*w?>yuwIi|OTaL^yDvO?W7DVRnAu?pa${`3P!x%i_PZ zlr8g8%jeuMk2)(4d2r>r{nV>uX!9G0{p$`SdPrlPM>g?|n`TXO&Uk0_xlULZl{c%y z!|{vtO9s4P^sZ1lt5bC!<9ZO9mrH%L)QS9u5$1SZejWi~+O&bIY zOqkj^*YQ?8vEMH|&V2AH{H7OKp@oRT=~P*HW_4%@OycgTyXO0JuHyKw|Lz?oeQubF3*eatfjVf@+Bf>Ieuiz@z;6(~SqCldNM7&fwEbHfVIKaM> zA(GPS9D|qOi>@~ijFFqiWrEfV8px+3yU-X9UNt#O6g?aNvP7L?-Y@;7>CiP`RhY0F z#VeAt*`pb!708p*?nqvMRV6fX|8pI!^oDRzXZgj=f_mNXc8u!dIZi3AAwcZ#KIKN$ z*4K~0Hvt#``PvHtj2n?_Er2mb8H7Ppj{#zoZvy||q13`qWmJ|A0pSkqLSR14jzc*2foom(QwfRe&z1Ntj z*eT(;D>S*kdXWpXODayt;-U((znQEiy00*QBBfVS z6nG^%-xIdBuKo_k847SZ@Va;NbyedX4$AjOHGl(CS-QeFr#?f!g+wi?CVHwM&e;X_ zo?wZlfg%Vob!hi}&o~N&V)HGw+x@6t)Z5w%hTb*LUGzxy*$CiBwBE~v^wBZ~ri#;YULX=Tfs|kMy1>(%J&9g;~@HGA0cTeIUyDu5%9OoQ4ypvpHb%Z4;;)Be22B~5>m+dHd&g7dcU`L?UZx2HS?M!)GDgW z$e7mGM*f{de8$UC+F-jKJIvB{tXlSf_R?@My^&|Zit=dV383=MXNn1NL|uVi?w?@I z?(Jpt+cwrO4%PP#zP55`YinB%CmevUenAcSVCOG*8?Sow&q%%_5*piC%)FnnV0Fi? zR;qKPp5lHMx$?_ibOWJ`hdB3mVfvCp*drYOVM1Z}D=K3D#|0*K&aFMM$IWQ1FSVH7 zd%Au_+MvbSXZBZl{XmDor&*R*fD~_50ECb9rTVH-Ug00F1W*l6NeegKg-AX9JGtwmfkIJ2``G-=2XQ2Jy+fd)h>(hpxji1JFr#zm`KvMSPCH0>GglF%%hMSxn zE>LyqaLj6heHlf!&fV6v+Q0?bvYW}Jtj>yj)-`d`)U+Gx-moS`o^pYGX8G7&?Y5nlKc-2gP7uJ`qkiS@t-;Zq!<*n1^XV+o}YFrr8R zOz0kqAoiZwNHk1+)iklvmD3;Sy8?I~ODsvc=s&dMcNw@Te|_umA1D}<^+Z$@Z9-!K z)RZc5+&MNvj&dYz#$1p+;Y=Segwz!Bb7aITfLJ*?Mhe)vcsTm^Bn}BkKUH72ISTUh z%p8gCoVAYvjN*i@%Tq5WEEGOd3{-cl$LwwYxa?_;dWgk4l67%}J?kAZ?J{57UM>Kq zd;?Cn2CA=Zqmk~qbR?!T$wcdCqgKjGyNo0^GJC+W`fe3*5mHB91lRngJ6~xc+bU4K zG^5)b=5UGohMtTF>&Une9ueAt>u>}UE7utEib-V3vM7f(wJKvGFdVan=rd&A9O5=~ zT{@ADEOBdiVmqt4eqpk7bkAVx4VceUk9}bI6eQjKx79wmo**=@=9@d;PqGh}VY_M{qtx0vG{n>}%S?zo!*ZZ>2b{CBIwHGICf zA6Jl9O%A8xroguLoFFga)exuL<&dEX4bKsslx9HpN>7TJUD6zug~x0q%af;-7W2aV zMw>@7^3BF(3SvalH+7Y!m{kojNHYrxb<*tF$miOHyGy3i{bAO(e(=q&RXL?4Q*&P)Sz(!@ zKOT`itmKLNDgoUWjeZQU`yPjKiqdxFX=nqSH>O6jg6l3x;c&UTvqn0rzj>_fh@cgK z?8&n1l&e~QgmgFTANz_!~`mn)%uSjfxyeh~wz4C;5 ze@0`*%D5H0N509QLgr7%Y4>CzS@sIA4)M4fI|k#5<<$?_H}u+{wFq_EdTN#2CFcC$ z)i_nDtK(Z2Ua7gqkh4j7u<}U1W}cOHD2(tESX-+P&pXX1y5All^24@wgsN{SNntqS z6fL1&(6kY2&xzd{w2EspY({Z)<7(&o#9wH7%YW58KYOF_DQFt$?^m?=^11a})@D*C z$WY0`?nkw2Mboz0O~hPbKL?;iZ22-(D6DQBIH&aJWkwn9n0>05t^jTpk zTimAT{tYZfGK7Pf%gFiHt$h&mrLe9F>m6YTk5EyP9kLbjfU$UJWRn&pIe>=S;~eVQ zD;8-X+`2aezYN^)WjT;ve4&-l!XQ3u1%@`{R*=2+CMo%LWy?q^z~IK7`eutQgy;Pr z$6x4N(0|$QwYUG>+XXFz&x`P7*`hm_>q*K`Af@tZ`<%I z+Ae?4uN+0-F3n+iEX}=vx&9A6CZnA%htd@s>}55Nx5RTmz(nC z0C$2I5=3m<@UOYK+O~pCRG%JQ;D$BM#WM4_JrZ7h$wBF+`2*+qDol0__2a$W{heP! zXXJIKI7}_UMNgIRX@<@c1mZAWZ-n6>7d^)FqIEppzNR(Z3EDE!8ROTZ_3J@f)+R;` zQ@Im=v~o&!!gFYCj4HqN1l+;L=bER!SR=wgvnZaM14or4H`vD;)XQ`yl37&mRJSBy z$vyeOuFS}8jHB~ng!au}|FZkOu1IJ38$Ow(a@8aLgCcRh5cKgufZ$KgOsM5xsY-Ey zfl!w_gtIRuB_CYc5of|xk4+|J;X6{3m9y(IZgazKCrT@JTK4RWev#_g4oEn;}C2OOS~ch&0;-g!H>-mxF)f+42+GOH$Y=p`0g0=M3YQ<14TBm+!ATgK=Ygvv{*NPiI!Xy_Terlzh9WZUEHlb zUvazK9_v88Fz)s^Y~>Rx>O+g%9@`oN;^?2h^+h{VXqdVau11Je@mDyOZDAUdI-{jR z*%Z*t^_HsN#kc=i8L08D5XdR*6ORQxN$A@7q1!LMUhRRQvCOzs93RY23D0OX}^0ajDiBFmW@wOrf{Bl_MGoHfyi3LB2+z3PlmLNIA39t?Mx8(HIC zYvZAl_R~Ov_JTsaOTED#A0&UfVn69QTvzp;b-GiUu0;jP(_y24opsyi>J}bQk5;w* zxFuRRM`KAV0>PV!8`$NHdVG~kC9`_qSqtAq0r{J)s>v*Fy+I+z-&t2z?-t^-#I&U-nN zt6YBoM#s1&`$k{h`i8sJ4~M`lOd*==pDy|8vzI!+p=*uCYnOgmr>C|HHI3;&>?3{@ zPtvoNcgh#S$`xvC7Q6fzG&UlBDP}i$5T>Bb30tvRKzrfL!y5(wLnpN+ zZ}U0EIr0E32?wR?)E6p**(b;n$@fq_dDUKyc|9}{W;n|>LfnMSi|n+D_q_R`jB-+& zL=~ff31VO`?h4=xKaUX2Addn1p}#*P5Qr~Me(Bb#!Vk~Do;#_~yF)bj5B26dn;X&^ z<-*zS`Gk0ucHUWJIxcvF?@8nfu?;O1RsVtE!<)52IUeD!xCvwg{#dpXl2{y73EC)s zjMkP%B12K1GIkI$yZKmwWKf4#A^1Wrf=~%*78eF6Lp%avXkSAsVDZesX>e1s;Dq=)D?ZPC;^X6O8cV38mAV;{BLh7v>7m^w%t@-!Guv?V`01`8BkFR;%9cZNG3>8#9 zOxt;(d1wn?$HI$z)3eDcs$?h{l`6^I4_+aA!CXHPwgGHU4E#B8;2W4FpB&9KHkz3{ zr~Njj^^J6P><>GNJ-&mZO1WJzQu=p!pEfvGZZM=wGyz$+sx%UB- zcpM4L{0WEsL%HntGWZF5ZSX_qrr?Zl(+|lTpI^8x-5BiLX1w)UxcPR2Ve$8xb|*u2 zS;!4_O6fX4#$7kGl7647Hb3}5{G0sBK4vT7-oU0;p#ZKGo*Lk|m2h5?Zu7_ISQcT$ zv7hKn#{>v*M$=`8TM@Y*!Y83^mv;yGZ3%d4^Edu{FK=BepP=F19l!GUmvCO4EOExp zy>~Z|W@9UgSBhCuX(>z5@9*m7v#Nm5Uw3R@+&5?HJwJ5QzfSyS-e(@RpyQt4u6xk^ z=6pp;6%dtSEtHRUmME|vQ3V_^m*y+EZ!9#jd1>3=EN)~QEOheaxX}p02-b)d5FU)k z3?IvE(eAe-0BXJQ1Gnm{3zAN+t2YWs7qh=+ZK*jRWvm4R-Y(OxDx3{uRFgcZTokAV zaX-oJ1W+dY?vD+E9Y_4o&9r>ewEq0NzCrSx_%kBkY7^Ny+r8QYB=M-p^5M<$#!#Lk zLYj#h9zr1EI3#>uznZ!@7)XFmlkWCq3}P+)F}%69ps4!4Uc4OVg4yB}7*{vRKS z>#jT()(5eDy9?cEuVc=m|4C5=8_f(&RQO;UgX(WDug!v%4LpYRF40}4*j?tGgIv0>I%C=^7w^Zf0by}GX9nIoY*@rdu{srmD z*JW0xRg^iSdne7JD!j6R_c>w~WUCewe+$yqCCuS8j@0@)v01nT(II{@qlje?$@|e4 zy}ue`w>y2n?G2&YIqY?)g?{p-yOnxB3r#65>r>e(=EBouNSDLMzKy54hU>n*XGFRw zPH3HsnWFg6+cAWcTP;kRj^9hAp^XajUt>+EY>}C9q8vmy*+zKkcU-Rg%2L124^vVB z`+TpiJwTtcU>AR&!IBY^FLm8-o_~cCOV5QjF~)R1|IYnZdFG>L&B^^x=}00uuLX5; zoo|%dz3;(YkL4#hv8xz`d#w6r3)0umrz{F&#V5$VYQ3S3!xT7`xkxZo01G{AHf}U= zLyh=<_$9I26pbOqR?Y4}n@)p?MtNzm8a-Gdh930#ah?qT;~u$9Xh3LO!~{>RINypb z=LEu$ZH&@q85|Dy#&B7EuH7tEc;95Qz7+=%YZxvUl9512Y)K*Fy3;U~x8 zPvxwq>mm}*%H&VBC4bCL%42RjAxC3oh?@+J05<&$8xOi*C|2*+NWT_b+jCOuC-;Iv8`?vfe0yHsX4x54Ib58LlL+tvlQexG9yhyu#;uT2FXAdr~BU7qCQ2 zgt}k>bssX8-q`iiGdl#JDc_}}cwxy(3c1rbi#xQj) zekNLo`<>VI8TKV86OA@2h4bYO5I8*m#U5_4x}J?zIu;J)^T?p?kvYus%N~>2>IpRh zon^99WljrPJP!ruh>K_5AnLxEgJQ3+wH=K=2ma|jl`BP?mfdWAj)U7axoUrp^=6$) zrq=TMa(=jA%%;5mdiojqui%W~|qn?bj}m{xbXiT(ur3TT-mW-}LMHnr&e_kvvsw#tlC-+^eS9VO_+ z_)ny>+$;HM?RK#vT}DcN7dfr!#>}yOyH33afgrM<0{?Ds!JOuVzq9?I?SS9yTj8HY zA*>E;*3zRI+Y+}VLda&g!#fI%D||5+#lf7~m#Y~S$_W``^d;`GL#ixjKQZE3%I7** zto*c*z`{L5NmRfJj88*3N-D#;{d!id-TJCOyn={$!4H3|#Srf7PP8B=u?Op|Qxg9q zFeG|ln(X|W-I593G0F8YdG}{M?CD58&c@k&kMUYpGy=3%&ScBg-IUd=VZZE-+=!u? z*7b>@kpi5Zn2H5LbP`mOnx?u^SqMD#8-7VrP4M|Buu9X}M`Cpi)3j`RfQiXPAx*5J$s>;W@c_!0Mf8RiAU`z%)lWR&!B^Cds? zv^V}7`|anEk3pHSIRkd+rx6=>5bIyVxL)Ksx-qT;9pUO<#k3NPulHY^uEGTo_`htS zRSVZoQ5%uJ0o9DZxDt5Lk|uO}Z2v`l^5HGWDkl8cG7@JY{KD1s*es_>I$v4GSaKfe zd`&qSu#bN*ih*T7l?@LtRXxKW8H=Rq!1(t<(7Y09X`uN76ERG*NcsPxi&jF3`*98P zsZm{|mMX$~w7~BjJxgnMhJ`W;}T2oBQk{2fm}>qidd|UReIDb+5+Rzj63V9fcj9-mq;t=)A(Y zAL=4$>L_(#yc6O2@+{H8n2)OZqtjA9APs!KM50X*9!Xb~!Gm(M(N}`*Xk;f7QEbSc zZGFX9tx!R6@NJ~aS!dkelQv$ zbOeYRi}Y*Z5cI=I8712gXXu>4OGiicqLmm;WNmQv@~Dq8v0~a!Jh&P zRKu z(>qQPa=Mi$vMi9k9vQ|gcy+}pkx9lH`C7v^Jc^Z8%tbTHQn4Vmu~ux9xH3UCE11HB zn#UE-7&Loaf@jWn20yXV{`QtF9>m}#_zvEBY0amS}DT3uhNIh{v$=0r7pguznP!aAPWcEMd3X*@m%QV!1;68mRd42pCIvUao}vP6t2rh#Xx!606&Tg?i? z(6XiQn^mEoc0un$k$ryawc*5UaQUFLACQk9*dxT>TPl4=uZP1CF$1X;h_#E~2pPJ{ z`;^caFfK@e{scJz!DCF=2~`V05co$hFs}J|Bqpu(4*)W@4~@X$dardmB(9O*#-WiQ z^WVGmMNz-RX=YaX&?1ACmDW_0+tcd>$#&hAwhHV&zqcjl!W`s8IH)bdw;pYOr|WTy zO)C<>IaL75Kti9GK14%oqlz$Gco4!a-goG0-rnE~fj@}1wB%6zCfkj{f&nNg=9N!$N)_l+-fdO|2=At-JXRVnnFsAge@4F;@*_;FZsnSr-+ZL1MKW)t zQmrIjB#+(AyRu}l_Nb-w`4f&Jjba8kq5$V_4WU#3FIQYFQ~OGhk3iSB5*W_k{C%M( zXWx+$+5_->oIUnTa^-{H0ieaN-)F5&P6+(YI7gd4Ps^(#0f)Xy$c(BF!x;$sHMpAq zqacM7>OYam+LFBIZDvrj@j{L z=8DA0e>a!5U>I>Wp|%ZGTp}5@2E0n}ApnOi$Z{|e9G-k*fW3O2u8T(AqpW~{lz!oF zBDMV9k+|$Ag3`8kFA($Uzu%)q4PlA08*#511lJY8xot44;lrk^6V%K z4niGt|7qLzihps`Fbp-#?D&Ftw^f!K)!E3HQENffYgzRa;hi?A6^HME> z0``|Gj5Jsl(q77^YEM68!svQZ87(64)k@CX9}V4ds;fykDp}Ji`94OwE%wioFW@C$ z!h-+6mXTQeiN035Jt?6b>PdQ!6V6JLLTtS-%%eC`>wbTgo~+m)#&fxr!Kx&nOS!ZD zEnuDQSLQT5lWn1e=U=N@@lYIBIpx2v#;SX3BNjUA(bZIvCLwAw_6qEV4gh|*v@7iA zSvlY8|13P1dye*C!COEl0yMxF!6j*0U#E4N-YD<#Mg&7UfqG`c#-=0ykC6p?plTc0sp&xz#p@;?Uh1skAr+bJ#AdTawh- zr#`Wais=)#=K2bgq3NJmC~G>S(UhB}O?xG!OPUvfZECvji*mTDLrQ z<->fExGb{yuH>uiXOkktT^h>%PBrk_69Ml|;qC1hJ8`#1dRoL1GV1i}m%UFcsiFv} zB77$hWpfCVh14eyX>;h^!ev_cB33`b^NXOng~yXg<+>x_NSZ`0~*d-WnrRReuUpYBpOZGom zt+{U~w+*s`%AHJ9Mo|M~&1 zG)hPca79#NX9}P#)84Rt^}YWqW%R)|6oDH(SVamls{|(w3Hkco0~-Y2l$4CNxAO%3 zUhn>HE%pE#3_%IRg8i>=nD*rjMxP&30Qwjb@KHtupx^)T<7g|VB#fGei$ORnF#E8E#<`T_ADo)8VUnT8RCQsK#Rw?+c{e^;}?tH@tbT=UQmH`w3 zJ%)j<1&^P%8iaPX^{XBFU3P`~U*o;?{!ka_U+Q;X~!T^E6MyF@HlX0SRr^m zow90h1b_aXE$eW1SWR&3=WeZB{0m+WA#8QGS0;Fr!7J48N?zc9WX=!GU#6OSJe?vj z+T3>h(*b^(T3qQ^hm6?w)0-nQ>F0TDdfLAiyAi;1YM*nf6)n(Wx^{3YC-DP49G(6< zQahOPK}UbjD?B`}ugg`#e9q#%x%D_YQJ|@>RVETHbcXYKz}0 zgtlyF3;Y)f6F6&N;g&h61SeP!%$#wkP7PKZO(Oj5-fj!dlaSmgY${J(NNbA86n`eLSaoEaNy6Dib~aD z(DenPif&sX+(is>hK0cjW*Hr$;l#zbK>VKN2>@E`Cm3^tWN7uu1i8X+9V2th29u>l zq5gXF4CYh{{C520_V&^d@(~c^njmteWsbFw!b<6-i*qOMfgTtc^6k=`RKpfIgTy;Dgl?E{|jMu3waR{^khv zd%hjysCB)TwBNS;Tj27gV!4__ra#=cB(Lrh zkP;B2C6q=`KqNeVgL=-<^LWmAzW06qeD3R-;bza?Ywh*hYp)$^-S>V&dGrE*)m)?5 zM_x9C)q-Zf_Fk(a@=JBtF3>cME$k%#bbu( zp~iA-(9r{AE}|s7jp@l{LjM}%S{wgl^+cQvXU$!O=M$+lPET)!-s`J0qf*I1j7<&} zM9xpuMdfe>;53=MGoZKKPp#|o<#yI!wfvVL+<6&?epsl1&D4_M3GzK{k4i)Sv+01KY53%1_TVD4|nviT|&WUAOm8q-g zMdZ%~*KNBTJf5?veI4f3UKs0JwjI-uNEOLCqGViEltD#)hwwD*FsSf^(R}{ZO+lf9 zq2`u@&+}QIE8VMcbL4BQ8z~5mBf|$cM;V{+9tSx=23&_kE<~{QG|X>Y&MAH)6o0LA zo!o=1H7FUbA!FP}8nF73q-3o)wewNuG;~9AAxAzBOmnca`{>&AcsejYVYr3zgFLNJ zketQfV1e+JX`Pw)AIvR6MurY zRa1H`65X3DxBLdu0!|_rpIu?>dTR6bs^})SCB1EIqt=mWNNSzG!jk9HOK$&`Zmvxi9Zej(ribTd`FIL`DkGQO-*@U%v^NpJUa# zl8`ebzr#x?3StRMlOsP4%0%Iwit(@1?nD z&S&G3MAg2gjK_9;KD=mp6$#%__~3mR??#xz$#wmq(z@|m%AASbv^Tl6v9_9`3(dO) zspcw3Xu^~#q9~>17lO6~Vyjs_VH?5c5^URdwWG)AxZZ!mC60Pg7xL(f0 zv%e@FYRMuJgBR_hbXhNm+N@Xsaz$>1=opIx{-U;s310-cF?vAv5v$v4^Su!}s=xPB z`GPMN(^zb={zm8WC$p>jQ5p>|t`uIC+bPZ{<+#UYs$j3Y7r?MczSYR)_$sP~*Ph%T zKlC6Wj@6z=q?ie-pnB*LsM=+l-pjF0cw7)b>Ut-MEh;I{p$J`-Gq9jTAwr|I&KvT=Rq^(9f$2PWREw`*WTr-anx+KoaMS5HY!KHb3Y|vnxW;z)n zLmE>s!<3fPa-Ibd)|sxINhtX9kBhbeCOn{v%E zSGc*VV0Hf;WRiup?*UND(pa|ZWjx1cecTsU^7YI%NXBT9N$^YEHuGO>K3*0uXMI3k zRwhk#5aGhN2|Z3^%)IdBMoV4Q?9Smv;}x&hJFi~flAO?e^;^L1=hipAr!B@kzWaNJ z&BNp;YNWF1d|A=**UlH2^9%YuVe6QYYnb7zTKd#PUQ1?6H_Xd_v>v>u%%Z_w&E_9;9>-y}GS!^dtIP@vuF4jSJt;bG zc&)0*J`_Et_n@S)WD)e7ty(XSIE##$Ff5;Oq#zj(8O}9L&SDsU#+avn1~2~U^nz7k z_qalKZEGT#1t%ni#C!6>IOFG0oA{@6!pN}&JlQ-yv5U5)H37UY_3G2?s?lsc_!jEo zHw5+VrX4q4slSY=%2a5wqZ670vox2O3ueUga4Wsnf+t6j!$#hS;^c2Pp`R%pr?=c) z$s%NX9D%#1G*KzDqU~YwcErPE72-jEzq4xE@-&b6ljyCx_j7FIuUhg@l4!XI&|Ic{ zp%vXUSlaD~U31ZZo>%o#Rvo26o9LQDjLx*<<8Ut05wmo6mtwoye)YMvx8>v<4C%#9 zj2w98b+K{9qjY5*4mk?~z+scY+SZ}sdfE?NN;xPl< zQLh<#{B?t!>5V0Z;IyN=TBWt5M%6XXBkm}iBZv*seWGP8R#)iUX`5@pzo6i7%@@0c zt;`A-J+#K}#Vz7sFV!EdK`&L;v`(=sU^z#3&2nC10yMHaaxf{8dgsz(7rzQ_l9__L z_Lo&qKFAoT*UW3f$@z!9aO}-RR0d$({1C<@II9|tT6FS1AMV)UFTz=X5S<0*d3cib znqE$r2HfO}x&Kz{>Blk0;!Ij;Ly4EwmzA0wZ`9eqEQuNg#f*E~{S+c%(QgkQUF$c( z9ErKDF%Hi5*Ca^?+`*rCNJ--z>Z+HHZ%PqowGm+x7(5LDCNGVgZe!U22AP@JCu{Yy zo>lbVH%v7Li>gG|*KbwUMn>bGxQMHgr3)-~JoTg=E1F8eH$OOhhKrMJgsOe0lzQ-9 z!s+e7$?cBgMCwaqs_zaz?*f((sf;czj?a2n=;zC#E3Xf^I4dCVz3|=$d;q|SqJy~w zlK|Um*L_BNKlXulQUH5k75P}^JZQq;CMOy;)=rrWI;PS3Sz>jAY<21FBy3r^1vlt<@Qt5jTw$yyOS1-mofN7ALcnftKQ&b zrX}R=Ii2(#dsP91kH;xTUvqkM{@!w7XPu66)aYU7#xCbVmacU9Q;pJXYP;gvWs=TI zc>%lAk*`&l@zP}YJbJa&(zj+C_;^DjB$;G0>ZMp1ag_{l8`7$MjKk>+fYj4n@(T{` zj2UfQ*pbT@0r0Wws80Ao;H5`dC$ns;D2;Pj)?`9Yv@-SM&BP7)EuAu>Z`;}Ol{I(+ zU&}Yf_?GHd-Ec5GG>dg4^K_pbA8Gfr)h});b(yiqeu#Ne7^1&$#XM)T(vd5CxU@g4 zGhp1z%+tO027OWklXOO)q>uYd0$Cb~gY2jPD}&N;Sb>w0NJ5O6xCj3L*8p+fY(hF0 z(otz8%*wdeRhl_qeVlwL7QVHCt6Z~y8Yr7?&%`neHwRlTKI;(*9>8ZAcf5#C1nrXz zOpcI_Ag!3}0_C%&08YE-OyAGpFqz(WCpDTe$p#gwJwSHF>PcN|im5FUq!Cya0h4cpyxz3DaBa-{!)V4+r{&oyEHd3cAY*?2v) zZv@F5(gJ*%{t<^gq+PaK=`o+d_V}6{qZsu4g3vybU-6(<^$~ogqPBnL{LTLOh2)18 zE4|c`?EyEsdl@0#id#qJZuV)}$v0Qqkx8}8$@$1o&5fp8lBwx0gK?%wt8^J9XD+=nfRT6n;bLA>unm8EAORkBo<@L`p`?((P6T z%r0P4Zh{W5v^+yRl|nva$302{jm(JJ`g>Q7G)CRXj#|akz--WZj`zK`C6<>#c#I^K zII)FcRVmXCgTz1Pg-R0!8{d|mQy&7`q{R9WG@)>KbvxcXaiW_Kw{HWi>r>SV6{DiT zcZu#!Tg#1UUCwMf&%=U4z{^flr_A^8y64MF9uJAjIB$mIy^bZ`t=dTiJ*^&gsB{aI z-AJSg0XBBAI5;auyzI!#f4nK~l^O=9Atzt;Ysfd6?GsIHyA!nIqghk<#Digs`=F@^ zs4Ex0(l39y4)J>`ZgSq>!&{GA1Gq8k-tO2P2O+!~C}_44Qbyg~Vsd_-irIaWB)D^N zDocA$*qws%O%v&h?P~v>xep_z4>A5`sVf4@iMjVN8wi5Qq{A0^KvBeMg{#j2h#%W_ms&ob=>sYi3sfL`Q5)^1J@Hf5k( zsFvZ|Ho#YrmmCSZl4-vZptNQ>siOUj^%{A37N=6Ixkk$g6! zFckGbMr@K`3#xN|yE0zLSYcBOzf;KJPLts-KZ%j{>mmX@H^mA=lwFELk13& z2QC*E9G(&VS}DQdeVk1mj;pe~ZvKol$}}-27>ob3!}L1os_LhS@Fl<4da?0xi}Vi! zD=cjJSECYj1-Y+rWpUMH5!-eYZA$Eo_HcI%m@gZu7sTz}DI~Be&f_&nOG#w*jTkB4zTHQfk!g`sHh5w0IufPm z4SG2cpVk){U#scdBH^-1!OjSWhsNkxj3#5tEKbKKt%P@r|IP3)jSnK~qEqvjnx zPF9gclDc(3X_34}_mGBRxT;N2^vJFL%Z9T`p&oN`kG#^$u1$Bys?bKmlHU@=AxEd2%ZtvWKJ-!@Df2G&hiz}KbnYuzzz+Nxkv>klhW(tfIjGfzW#Ae7a@`)Q4pXID# zU7j|upj$pSfx=AsTB%2ih|OJ#4~)Wth(_3VLc9(Ss)|F=nPlnf zvp<}yu&W%zt5z!gi1}W^oR3Q08P)MQhLcZ~nT1}$WS&!aVxEuZ^~BXjfOovFr#?@F zaH5giIDjz+Rc6-L zdJT%4&WS`8y}>I697xGG5Ba(WZmf*5TfUIMg>ij$s=8s9s+&ZpVs|65*+GiN$3YQn!=5+_reTXGj z#%5(3SMtPD$H6&O*eJB65zdfX=dIFvATh3Sd)_75cQ1P1MnW2bTIz%sKXqNZgr6CF zHyiM`<=X$sfjh|{d3lhv{}jo&PF2ZPv%|{O-b6lW0NT!R ztx`Lz6Op>HdroA)hd|k0_hQ!h#8fr-qk??xrRQT4IBR%5M2D2r?`;qxi21FhHMl{)}DY_(7RAralcbU2fJr=KCgPfC77998&{D2Qzy5 zBdH`UA)s{HdMnO6{4&j_Z^+%`i0*FB4V>IHlvv;Gzu*>&Jm8Jt-U>B#dQElLDJtQ8 zpjG=jsrxd*<(V&hD+PepPA`)I*nuUj@5Trg4f_Z{27}l%iD}bvmK+&!p6n9NcQTB=kH3w_18Q^Ikwy1#>AUTqFI-nk@EU zx6$IqbghmmG?-T&$=P_JBJV1gv0rYoH+n&gJ%A6tFsm*&Nn`Q!Fo2;?b1J0Ex%|Oq z$Y%YO*BY~s4LV=@t&Pc`K_{>p_DS~pJgdFjs($s;D2DD9Mh|+zOy+rEDw^^05r?Xg z65L^r=E@M5XV3@edd7H-rjHxw>kNFakCeAChYd@lEH=EohQCL)h~HLX@i8@ztE=xp}vmR0bex7@C{2jM4`*oy*W zz+TKlo4h0bc9>@uMR(rVQ!eRW(i69wQoj>!O;8p%Pc9x-az5DNJSmqcY0|*PY_QU@ zceZ2QW7Q8;`5&IYAnO;c%uLU|v{w``*O_v)oXxR1kzB)Em5oPid4&e$kmikR$nVC_ zQx8O+GPDS3xTNn_-{7u|o9jkvMbz^9vTA<3QpI#}NWGa+ovw$5@mBlRRhSqqi}+Gs zYOT(Tln6O%u`fl^LuIvXsog`@nLeJQpH5=R zk?A!Xep8-RanJqon?Mxw)t)`lknomu9^Ivfb^3F}^+@c&+mAMV)14U;a&nb5d#>D* z5u~>G$a(74Lm3m*@I(}KgN}MHhyXhDloS(xyC3wKv$5gbMmI>XldyU- z$dKMyCE{=@3-@6JV{UUvP_3sb5qIYk!d&vLu^?-!tjepCIU6a4J(#V6bP;#h7XW1U zB2`J6Me<~=L+Rr=e)NF;q6AijGZ;5#jA>}Ow8Y3m&QzV%2A5(T^=xZV*ctb(N?UP| zuO@EM7DrR4*WnYK_TU+@Sw_w_Dx^eCQ1JbQ1>k41P>;Mf>A&qwG|r}lul8H-u_fEe z+~doXucKf063NsKzr)k5mO;ojH?2mX)WI7V_-Rm2P4l37XG_NVy-WMCgUh(B;Rsoo z*K{)p=8ft`9hg^iwA@B81w19OO4|^t#k)U0fXLn}VxnLHkKus}wm%v_;Zo~*w^k|i z&N&tf=2A|CzeAlSlAE^j&i|8Hsc5L%x6&eyyAf9I84SNIRO(k#~%d7f;UjKq#6;VvuQ(oQHVo}TMHzRwJdrR^0v?RT6WN58*9 zu?pv|eu)S*Y;S4;rIGR7L?CqeNj(pIg9zrcN|!SL_UG9pKaKZZL-%)oh%H8PEbzp7 z+zBO$0MeevORJkFtz>w%Ni5Li>y~+r*#1hNN)~c@*yq->5DtJKuCjv+ZbN#Tkfib( zhCDSPYMtTz2Se{&ZF-i0+$H31)FnxnXF^+nL!qiIH1sYcp^~#r10Id7?=q0O@%jmU zYHH{6+XuNXvMB6M!T|Mh(N{x2Hhrl*oxEXzV8a+n$`$R0+_P}3f~SqqQ+Egh5Y zD?Kr@YP5Wt77AgA%AjyV)|dCUGp=B#l|GGRv$&DxtQl3Z{iz^gpVCkw0*h{HxrGBs zE62&|rbTf|gZnBpG#9`T`|jMulE9rg2d_gyq~{UPIf9~5P&rsj+hF1*Q?G8s`3!ZZ z^~*{NHQ5&yv^ZwM3*yOBLo`mI?gT6L15^tkl*G{r8K1{yZ^I0mUTsxV%5c{=sgw+H z5qi=Ah$f9_J?WxudQ9N?@staIAJx=MXNpJR`sh`K&TPS7Cwf#Vn6kM^ zjNA1na8Tj;t5@_Y)xgn)0^?o{Ze&S&=m~M5P})Sd(#{CJg6gdNg88STWX+Jrc3)Ob z!zE|^4mXGE1n)NceBSzaFnCz}sgM1O^*Q!WTq(bbFo66SVIU*pAG8@F{Hop_!iV)go$cEBG7+EH7G^O#WoU$ND<+>87=~HPusdH@d+;SJ`MReH5S=5 zVpHHvrI*J2{QQB7Bsi9Pbw@gCNUwzh_ubTGgNP;4(EP!e4(z%9=ek5nZmStYWT1JD zmx;)+Y=k^h&ZbE-ibQh!%YlOE940iTxR}NMR~Y_q^6ys+VPFh){6athA%0#yAwD3V z03Rw){1u4b8=g-P!wSO? z2IJ*}@||hXe*ggeTL8Wj`B`jvFSMdA8l!_4ozVefzND3Pfhf4W8xka=4pMiwN838v zdwy)Im2C%jtFmz3~ES6YqSke`0qN|FCqJ>YyBYjH=)n$z<)3F z*D`-2=|3L|{VisR|924}5ZGD3(%;1^L2I?ZT2<8}o+{iL?)}4DBc7zrF(2F~Jh-2$ z4UBjy^Jr)cswxj~Vf9gRrDtO4KW0k76;j@OH#&$=Ks$e7h z90B&{gwq#IYI*ncFz?!|qDrWe=p_>s4a9_CnW$g=rGfnCBdPx)4pi`;rP2E)%@Ami zOB-DE82bYF94iNo$*=m-Kc8IvjV~1TJB|W;XE^?C+?QXbAwXZCtK_6(UF^FbCXO*w^-#N=7XJTKa8qMdh~4NVJkd6#>S~Da|!1hl6=pkvDb&8Qy}$x;e8+a5UE;!j`D?Rj*I;!pCSYjGSR#)siS_xy&U4t)xvr*_5+y*67i#f0 zD2}Nf3_qNnOrfz0hpxTUxK!I`OFX_f=GtJ3jc$l%BzYrq^L~%H3;i|!J7F+7+GZLx z)aIC^%gR12DG8*3Fy=M;ETn|5JkrE$D_6p9kk|?iFl}9U*fRB)K<4QP63fe zc6dm%z~}n&v~$k5#a88`l#`wtTxRX8sjM>ANX7dkV8k(1U#{^t9178fjl#lN~FdHR2rzIR`izPbb0MFgN(G> z>r{`D7LyiT&!@4}A_r6XXChIecF$k5W2enj`}KU7lWP$rR49#RTMHI$ivxKMujP(> z#+i#BfZ^XY-W=sj-W-iH=*EUdU+yM|Hl^yJNbd<;-|?o!hNuyZ;S?o~mXDN=T#9An zPw9T)Cfx7Z?<$%&^Vp&wMPj3^O*Vo^0dE;6hQ(#cqE}YPY}V;ixxw#5AnO)p*c?>Z zQU8^O|8R)n8emUFtZu>9;)=v|MKa4!aUMlMT$B3YTvFvbrkgPOjtP}Xl zumD29&r;7U{(n2;c&VvsCkr8JdTzQv2Mg z+x#qIqXWdVn*nmIQ>~-|P1m2%-0C_}Y^65$2oGHDC~Aw!FDNBb(SdH%YCbdyVUBLQ zn#fwNw-mTd{<1AaC2mjfValrt2Y0QJm6?J{bm;QaeqYI@s262RAx>La`kdvFS*whW zudwl=j;*`DkPjJLwVYVtNJ@bo-Ah57f6Sk|WjkmK9E7@~wE3P$k#O2qirMPE$#)h@ z6Q&P0g^7s`>iaDj24bCi^UmGtS8en|)bCGigqaEa7j1-zO#NYU_uqmWqphkUCr#9( zVrC&Tno}UkPKHChq=Q<%bh>N0*1ee}IQE$W4^DNYr+ws3nBEW)9r*qr=^fiP&vj}) zS(mh3@olPj#ctScr26yqu4~*ty=F@8E9^dd_-qvop>{~ZiW%WGIYN?q6v7^4H!mva zJG^4w-))`>^y3s?9eq$AKPv6jIj<~I-6vt&imZh0icmA8Thr%aQ#CCS9Ny9})ZwMn zxfV6?dL~%U2gSw6yPu?aRS!_Nxj*$RS$VJQZR(Bd+mc7|m@#D&3(oQjRQY}g>;10I zFhPESKPJ0I>T2IqR2_+iTfx!rKPS6ll3vbm#7!g`Xo1ap6u z3}Oa;&4Ruu&MbZQ1JFoa3n=U4iUbPsf_V^NFc>H(jF~R-3nGM(+?d`8g@C|5$y(o@IpYpDu;pRkAjYFykEiLML0Qtyx`85Lf~H(a{fW8 zp9*1qz!ZZ0vJi%oy81u!a&Q3s0RTomF)M@!>dbzjCE(7^_O=N484@526EV=AKm7^D zS$>2o5{`Cq{n{3PK=idybdfGUr=D>*L)G3^LJNsm+W~cL;GSZj?@51>J+qlK&MIN`XS@B(@+&`Sd-Tt#e^%s7Yeekfj@IJLUOZMv6dW_3XO>WQM7ug!xg);n z0on;@jdZehg*)5WB7nAz-vBz(5I1i(G}6J1_n$=gnfF%_eqGr!G0?VXd*shm{XY{x z5wk|obw?m<9T8}I@Bg3m`)e)4Fp4B1d)CZIIm|}_3Wf;tfQ5OW0(uaB5q?1tJ|QvC zU-JCfn17aba@BKkvX@Y|MYuY-Iib+)l|Vx$S1U{xhk${4uC{RdAIN;q{1-avPFA)k z@9(w1^kp!F2h4X?3y6RS6v_qW7lDDl5&0qKUuk?db^jHWAM^e|2h$@&RFU4EnCiPp z{Ihn50{1rcS z^&iXr2VG@HH#FQ4f&85=SlCJ!1+fz1furCs9zH<9-yUfF(~l%@wx0_9yWQcKgnmFfm`r}B*s3IgbwZ-hO4pP?-mhGRx{z3> zDt5BLdAYc(&XJN6Ti8umXrR+G^kNIUsbXif+E&GOD2t%`I5MEKEXRn*nwRu2I&o&n zN~Gcl%0oAXOkO1oLorM3f7l}T zi)&NqkRl7afpnaccNV;Pse%W$8YmA4rND98L}iw8sj^^1hF;o(mnqI)a9>be9lm6Iv&>=qEe=4_+;BzXwUGxJQgX z3p%=X1LbW%<92_qE5}^Py}*c=rum?tfgv?nRbgq|`l0->K^>1F_C%A{6D53FeC zAZ1(d5kM^$f3xCT;y`>WXIfxahZO4<5IBoi%@|vD;g+}D8dpvrK$-Vb=?|Geb?s=Z`JUz6rIxD~{!3#l<00w>fA_TF4 zAK4&oPVliD@_iG0um_rAY`MXo2=40-z;_;hv{N7$-?#S{W_m0)1pMQnpfip^mu_K$ z@b0&7KzKY}73b$2=;7{vL-p2e&)k285)dQqf=EYMKdwplO zANA{(e>*iV+i5El+vr-kbmXx`=WbXhlH5D%X&l}`<(5siqz_Y$e2P$ks4(j2l=oYf zBxB{IYo+#lbTjvPslOf6=RxCB!lqu*XW+vBNn^+`CX~t9`a4=xpn=aZA-g5gs^md= zSVp$M2QsCZ(6-nYyWQ1B^C@+p2!~zOf@FhIg}K@c81O&=nxEpIuCX7wQ*?pbpFlGVv{JNml$aCKMEfv;U480ZDtuyZjr%Dj^A3>C-=!K&nXW58RrudZzkS`+ zcQ=4fHueM9zo|6wH>}qK`+7{+v0vNP>qj8PlIp|lha^9al)Gn>E2u z?uRIAEEB;ha~S8CY>sHYYj#oM{nr^1x6RzJLYu8TMPx9$MhTGjosHymCu>Orn zjtEq0{I1yPZ$cvroYVFnLMa@tQ`Bwkw4kDk@+zlJY)Zp*;O1LLd5!!e{8ju_Umgk> z)VJmqc*H4lz?wc3laDD})_sOw>lC_?D|qE>&LO=q>h46IVyrBXQ+&E~-;iLxkgv_6Kt39u;0N+BBr{QvgM+B1JsHYL6NXaVBNCC zlATDx4q-BHBG%@=xR{BUv}^VdDS*OXiG3Ck~c%^A`p z(`aj{nL(Eg@#!CE8YPEfP8whf{ayMNLlGhrW)GABOL+{)E zxg{gIgQEJB-Xf_B1J~%CmJ^e>)HhyHR66O*2*j=u@G0GhZ_qMf+i}bx<`X9Q_Pq~{ z=fdO~4!r$NZADG-$jRW&Fw8c*k>k^Me>QMR@kk+(1$tezAZ+16h z+g%}VWb~!=z5oXThMxt)Q}Fg%%G2MPT*m5I+6>K$-uxP6DSoFu7_u; z)revTSkE1TD_)Vkpc7VfBI#;l?Lz0cmxRB*znHq}KZpBPUuJFwLnlv#H72fF{`z~H zfyAzofK1oI5VFfow_*R42Lb;yB0F4=#F z@7TwaG>B2AgCA>?TA~g7k5;|Oo)c{`j{QvC#bLu?N@*@~cNzqA)ck8ng=h)jUF9|4 zHiU+Y>r(Vo(j5=d7U68xKqIi(WBDYz7$&io^?l(O(>o@)P2}Y6Q<(ozU?x}GFid5H zzs9^Jvc3m}=C+f=sW8GxB0Mv{F$@oEa4|l`MXU~z!Wam@y}v2SQi>6v`P3iVm91{2 z{?j7Qp{@C@Oy`%-GTAFqgMi7ph#?_Cc^bzyXa5MwB6ox*;v2PML2$q62zroh{diSo zV0thLvHmK%aU4PFI}Pu?u@S{OLkSyo8vKK!pZI-gTz^;CK#?goe~5v0q)Ou7NyO`FQOP%6fEK+ z%0e;^zMY)i_!mJ+0{ew9k6;Hc?({V63e4WZMy~>ac_oqN2(EDEa;K)LE=*dR?Adtt zyX7#O7ZRhyrh92_{1!(FiAGuskPp2a}9X6Ik8t!W%Y7D zs)O4Qn)SfyhH&x7R>zSNG2W^6i=CQmT`*})@@25-87fr$kVHcd-LbD(w^o=#HDM31 zg#RiuKkt)oY%MWp!~OV3$=GPrsXhfp#*l7v-q4;iIyp zq??6qS1|@Te??i-lnbPLQ5Uw&xbLyc=Ib|%47846A&GRgSCt`CUi8z9 zG;Huae2TDX4LZztp37|?Q`vGeH9PVL>a^%*eiQg&b@Y#T)*NMUZ>jPxOoVsZs72{7 zr41t#znlcY{a1^EUGA#!zJ6fslL+}(o2wf}*G1^z=Q1L6#W)4k{9ydD#xA%2!zUeW z;FWU2Hm?AYy*P*ohqb{1!E5+9MV-|hl|3gaK#^HIYFu(L--*aW>BI)d?QO~k<1DEs zEj}al>_ShBkq7xnjNP-hckD*5E#hsbrj`!6F{LRsYf7+4;3dx68=zPN3CAyNltpTGCp<32}H{#@LXVG!ScY1ohVq+X=VAmy}U# zaL(RCZxO4x{592c@tK?rY!Tgi(d)%{FGv$J19xCs3iZTM_$XG`;F|x9O{-S$hgCfR zW6!gVdSdIsxQ?IFf(Rth7|ED>jbtr`20fh>IeN-eU!ErPDyunDUi-~X^KWU!*r~8f zv#b?5#QKMEGgKd?y8LZrRoDm+?P030%+*dhVG4~ZPFfQjFQ1a!vpZdQ2ap$KEM|^6 zdmO|nTk?spOj*$l(JZHV2lmn4Nj>Y-+?eeZx812??5g==ax5D*o0uZDK3{CatC^v zQcdg7IdRnw!ca_Qfww&U?NpZ)!SQFFU{gn~zK~u6J9UL~?mX7$Nq+;X-Vjb^^c(};GMFORe!&l_IC(SE>PS@_3yh=9H_J6VD`=; z|93H}^1Am0*4e-kI9`)1`}X-`| zkaELHVJX!oZ~+&;7QT0Z2Wyl0K=6^8TCHBCG~Khy*%?s!8%uvh8F<}sV+90Y{yOS$ z_)OUbZXX})S{T=KW&sXbjQ@N2*p~i}8t4%ww2KIRiYnERWUwV z(Ua-YU2%sri2Qz>v*Ep4N)951YMdM%>gf%i#*X_7Id*3Xow`N&*tAhTo-gXYhVX# z&13PXVj+8z;Hz0FMfo-OSy=P~+M7}{dOK-t>S8Y8CHMfrZqPYjNkYRPrXc;pF@>G7IN^_L;y zNvlEsr>84n(hsM$I}~wny6k!HP){DY+lp1q*(0+Ed43h9$h>0vh_aUh64iz}jry^t zM7%h1VQ3?npCRD(xc_IR4^a#j#XW1e5tkL)D(T8!?w-M8RY?gR0B3bFMm=LU|+2_Yd%y-TOph?owxkMo)cYEDpdtZGNl# zU7&1YSBdzP;A0D1!=+;vunW5Mm*8sPQ^2WWnqi&t@zMDzYyxQky3;N!mr*CveNh(9k~V)myo{8LTlJHc zv)pigTsoTMm!qeg?N%;BV^68$EIdQx!gfbm;emG<$9CPHHxe!{)$HRXj+q&s3bR(B zy(dZ7I%VX818Gb@7^CZKhVb`Os0G0Mu?jd{`f*o#PY~rldskgK00^6F2~42JHTo2$hR@J`fyL4j39$5hm3=vKQ2UtP1!P~;QcMs&Nabr z3FovSVkY~)=M6OHrd!ytWx;*ecBP#z_{m@S3bupKNV=;brcY#uOGixBQmXZ4vfvZ>2f7cbSm!HX%TVYV{5*2D6GdN<`6&rU`c zEO4m1Hdk(JZEqk*bJm^_86n;Fy2C;d6zc9ALSCLIcGT#wUa$VS=t5nxNQ0Ty)BQld z>(X2Zd?B9G6LxMM$a;`HK+Bgy+Zndie>(~Fgc(d_;sOPZT|KSHl~H}5YX8eaj)(f$ z9q*3n=`RGhc>`GdzZn9<5Oq5LS@OY{4BD*m=&AdcGB_EAZk|l3omoWq_G7t9p?9f^ z1tNYWTZA%jCwiaD4s9>|Tnp8*)w2I>DC+bejf|ZLEUfz{KX=C9-#huK+yT{5+549w z;3-{kho|z33q@$NU|0CH@7ghwsASdYHCe{zD?Ra-uEU{-j5qfC z$IM%jBVUPN;!-M7OS1*@_+H_#(i#96z(bMb%d}ZJN)D;eQdIZ*=FO&~W`~;2gmtO5 zoH(!VU%Dj==Xdl$h!ed6bCMC-9p|Cxf?V=?Q!e9><^47qtH>wDvn7G@x&2R zd*KHf|JFO8odw^f-PWlHOZ>imaAi|1fRn-AetZ|=I=i4|=5jii_s5A{5khj-z*&p% zg~wm0htb>T`nV#H}X89uDK*ySTi@0!0erI+Z;t*7K#_Q5HNc@o&0bnc{tL&7yb z7&=EJgm63f_Lgqd{cIy9LY_d9hR20Xd3D=ScCk96C^Q1?yl-6_SMuQmfcs6eh$95j zJ@jR4a}Ua5RlJJ02k6+_b6|S0x8qqsZpp`XZ=@`{Gb~2+CDaeCS7-Zzn=_K?(~#{e z5RtQtR2_M|s4bZ{xi)Wf%rjt`PI7jLJ%WW6dy9mKR?!sLeY z|59a41lXMSoP-y4$|6i`-#jFpaZLseMrQgLL!Bu#An$f>f9WlNhc}c= zN2i%W>8{(XgZ(n`(NmL!3!LeAt&r$PQ1q8R|M@i)dU!a`Z@C|a_^1 zDeBlp{Re=%2|d;1D^f!Zwv{uWKYA)Gm6V*O!=F0_;*lgx@~1{K_LORgm%Zs#=s<&) zz1yFVr+Ln-m87S_>3-4RDwM$~wP(MP{E|-!lzqC6`f9vYgK2(r5s_Ir$xv>td;G?N zaqQw;;G_XC3NHF{RfP~jP?xIJMqsA(>U%E7QB;SFDp#-$`GhjM%m}l@HU%FF0a1w= z<>tcZxLR}FHr(+m%A&S7`yB$$T>Xk-CT@FFE^KMI6^6u!O_Zfy-ey5Q2Z3#D;9n!A z@t2-X9uHFLcS#$YSd(p>ddz4mm|_pHYLsSIp3;kQZOa`H*ps(&=IxT*WR76u-aYv7 z)gtq{E}i+}bljvjO0R>t(iT4TB~$K)=|R;xNM42CkWIOJ<-^$DF-qzGa$peVAbcon zN}SS1o8=mn{Wvd=FdsZsrS&+=X;#PvxFy)y#a7N!YHS@j1A!xl`@K0Ck3j4wJJ&DP z(hM#sQp31$eo*+a_~Hw1dra>0*@Ax`SH18W|QA!ciA{bvtY}( zgL-m$PZL84TgQv#nBK-nrJd|0bqG^flJ|1-(5}EMAFSH{lthT4*btba!zD2^=L97m zBA6X7Ubkj%0?|anG(veXnlEtW4QWB;ahee^wtNk=xKB=sSNCps?&+Rr z9#5?{#d=e;^Sxy+D;~)ps((XvhUOV@a}#=H%uYk#vPQ=8mxVoSb^&=N4MT>mdZXVP z!TpcjIKT==qaNJTl(KMYVHq+^n8HQAg7Q0778;V1C(FAZS;_xkzqLf4bRtyHAhh#= zkaSH6LOE^r1XCC$@5_IMnO~e-M)38peh~Iml5)k==`8Q9{mIggWtqL}4ooSM6X6D^ z^o)qV%0)u1&lARtRpX;CG)*I(By*urfoB#fv$s(rsmmzUGnl?8>kjP?zGs_G{#N+W zUh$`$pFnCs7w%3?ue+IrBOF_(yVH4cz#cgKmO4`#*&1{^|9epvAwyN6Tp4wGvqF89 ze(7&m4haumgZZJBZm6YUVFh!`CL=kpb1#n2+HDy_mzbC@FatIu`U`_BLnO@NjOXq>&#*zY5^v(p2EBplk?xMwUpSaMK--HX zFzK%sH|3G_EvVDS%$mfk7CT|H1+H>M(7WI(v-x)gd+ABTAjXFIUm9u-2;|>$e?fbj zxC}X<+OoJ`_0!XZrp8b@ic_hY0({Y_@?| z0#=s=p$L`u=s#+%BCboFrw&!7rc6pKo@Gh}y?9<52~f5peZ2Xb?@lW%Tkw@1cFh3G z9SN#L)rWc_k~I7{bgKLcVh|_fteeO9Uopi!_E*J%lxddivMkPy;TKVOCCA*EU#}>C ztXhP1SFp8i9iAuJ(yWJKT;7HyfxH-JT4kbKo(J`8Sb41JFX!8tfeGJ&-1uf{J0WyV zVf8}tl;n<<+YMy+7Y(yNXX(!gKkSTtlJp5vx-aE@(mqurSqOaHOszKbH*S*l zQ%u$2yg8IqJ68bf=VDohmY6T7JtEb?M#D9vCJm!r2r|7VcQ&*|cvHRGUv_HzE~X{N z*Ve=4M=wPh_>%(f&)XM%tP5;NBpwKtG&%2Kw6lRwm8HF}GexewT zeRhHEGW4Qe)EcK$$f|vV(!bXCQY}m0$@NxnQo=WzW5bc|ZUwilO$=^)IsZpxV{jqD z6;zqdPoTBiE?vI)?*WKS%OIw&S!U|GQ{Jq7LBulCv5k8)c`o+vR^vp!$CCH41M+=2 zh5BtFw<;Rt=t+klrZuYzRsvKGzO>E0B+cM$TQD=af_b0W@LAa;+e-GwVQV=s^d`Vj z_gNDsnsvy>I}d#Xn{DWP&=T!VTGS4@?-2`17U|xdmH8gCsowq_<_7R8L{&d`a~ryW zbGtoYTfJHZ(UvsL>Q*i2BTjiAY)A$kU)Ju-<0|9w#4q-M$G}kli(UzMm7DLx$}*6kj1M!! zY*~x=e4il&rWW3jFy=R-2U1K0&0KF`a}5$CZ(7msP>u?k8Q;S4p%Nq|WN;dc0Jq>0 z?w%Nh%T7XlH(_Hq_UJl?aZ z3YsNAv0@yxUco6k?}w=c{!+$TtuwUtrO@GS$%YC*h~Rzf-7}fAul9@fdv_YJDJTKA z$gJ*h0NA%JRpb`#{_I*e>fLN+N+vc`Vf?l!&{@TblSBCWJ~v zgtdKIADLPS^S#G8DKQ!9_qq3-y)G&H5TSfNf7f^@V7B}1MqX>=cd83s0=4`gBGKrt zRzsh+l2#kpKC$TGr{WwObh0}lvo@6D?H90>w;TDbi9mx@T>6}~pdbGGUSdOWZ|!w^ zAfF!7l;C&$pqQE@EitunbS0tZZP8lDRc{yC9WT=gyT^LwUSQyN5O~1Ehi>NR=(T~T zOI32Z5&z#nP+mh6)WKSR=NP>*_k;|McbfUH%<4t$6+Mgo0eZ@(cUiXe4O+HjNngm2 z$#T7py#$U+dkAMYWu)x>|>)J|m4WKvtRRx3!?ykX_GZiCd zH?MQLdANdvJAio5q(3djVs5NZa+NNKahWm~-uE`RTrRp(AbqW`T|2_&6Akhaco7+zv-lv}=#N&g*9f20MC-EGAF)br z+Dwh8bGmoGoYkjC?w!m-6)^GOeW$oumZPbrLX@#t50X)HogTlzLXr7YjA(y;@y9_us=s7HtwkwKIE!L z4+hxQ)q8-P!_nHSe80SpRK!W(u{0R8GE z7`wXQJPSA|f3zySsWaN5gYtc~LwWaI_4`(x__g3w22orPcrix96Iy=5Y~1<3?<9sc zJ~s^y{h_Bp>1={)1J53jd8&nt685$Sccsf)cbW75t<*toZJZobc?nZzn1j=V?|i}y zKT}Yd1Ag~igm36oSC`6{-7dPsoB46~B?xx)!q;Wia-0l*Ulb}Rw6DD_h5DX5RRhX) z+9}?{jaHwUpVdCrf(sY!dVi!Auov8sh_V0@-wC~Xx$AeI?F+6-XWeBGh}Xd$1*vqt zx)xvN(s1%MD3|>?Q0c97a;NW+L-}R-zIEM|Lg4sL->IAEFWPBPU3?}l@OJJ7cX@l? z_ls7a+Tx1C7GB*Ue_sbFgAnR77enKk&%T6izk)tnD)jx4XSvcFSe6^srM~T6=lu5f z{dF*)AugAIdCR@)we**0`obymoHa9b$}PU9f9PD!5N_56x#2w6i(5ZV>bv;jU}cW3 zKS)*at%k9yOAvB2$kXdPE>j%ALEtXzN+Nl;e;NT-;op{-#(*DJW@4N?q0H8WBX|kj zpv;gL+EP)E@RUidYjS|>`1HmKP{P?4M!b&W;RR8y@PwNN)Lk2&k z|KAiu7o+s#wF)AxV_6^Yacyq}gw5NRB;J3c7TlIH4nkLix?E;U&R>YzkA=oJSYfEK zfY~*)b4S3ojXMZih9xHrfg70${m}&Tgc>9W(FTcX}a-2u(I*@Z+NN zT>1`>Nb;2JZy$;S@RL85L5^=i0Z1M!rjqS_QWGh!0yi8NJ*p%f533!*nnWE zMk@Z+LbF_av~@_lE!;?10NDp6+~Hlw$_`Z(<{OzXdbXjDd1Tv>%{o z4BOUe%K9mc@yJKUnofFus>d|6QOB2?M}OMEJ#og2fN9(b~cLTEId@7|X_Qy!$*RO??>0TS%{45b-1AI7Pbmo9EzADJ zvwFq#hht23r@~^M-TyuQ0i!}ulJJ(J8?Z*T8B?SBn|gpR1t6s7uQA`_Ydf$gEVeQ{ zj{6_DB>p(H!PUazzL>*2(I+NFu6dxBpU`-Wng(azri z6U%aUWar*;y>d$spwsElQ0Qa#9aQp+BnUR_$a;=-SCHa)1zl0b0d`W6{sul+V;b*B z1ZNHgs&UL{0Q&s5uY1g$65U|7Og`zKNK)9NYk`E6HfiiCrhvWaCpcbPnONt)cbqa3 z1ocM^GV^?+`kYld{&z`upaNzc&Bc=FW->iO)^$R5dD4#WYTusFM?X?K6)Z|$fU}(b8`@6#BGo=l8iFwa9|W5bt=MPNDb^fm z2@?dxnD`%Q0w&6A{BTWj8{t;?l=$Ze(!H2MP<0}1*T2nLu0Q?_Pxbi^|G-AM?+oEJ zSn!W$dX27$D>*Hge>;Oj)OkF8ocKFsS&1$f?IL~sexT6&C2({vFf_J_cSQ0@GyFkI zjOwQHDvAQKoe9fSmL$k&eG6L@GuaE~LT?e6Aj{WkKp9h*18gRTUxh1U7~?HsWY-=M zY+w9TFT@=JpV#AxJU@G1^u8R1A{~>wM>PnbJYGB=S43N!%Ph26E!jP!%69T5_BTQv zFv`6yBL3Cl3Ir&#Se+m4!!{bB4t19a8GEb(RmKuFn2b*`NUet9O1@|}khR)8q{ubFcr1U2H*+vY6 zyzM!_OXqK+sunqizf|MTgNBt~E^~Odd@(M|#TeJ$%b(Di7{Ugp0qrS~d9-1g$Bb()Uj zOX3BJVobRFRbeC>661W9&OsWRR>T;Wop>kRFK53UC${oSg%Fz8Dj@2KRfD6TE2kC`kZ)%dy609M+QHyai zQa*cS<}wBo7|Qim3lliWDtAZ=UffE-Ki`)nIE%#!g>ms@hrX=5(TvTr?;LaWpPFfQmue*xd|vl z!sfuxXqJ?L^l&YoGJC4)7Q9Dc=Pu|rSi$NH$fc7)V=Mv1rH>S*w4S@bi7PH7gYu1Y zfG^b03w^!>6_rzc@<{oZEq3b9{1P*BnD2^9}0ZDHBlt?92z>i zAcO#XaPB!QwvSC(#xgRlJK=GRFKzZ5@P4adZ(tA35Q>2FGk3ehCjd}$GD(tm$}UV32}(J`wt<%oKTRr=c|Gevm3pzD9H8M;1pMEXO{V3 z2re8MK8ia3=QyCXcMD)w<>=3~twFiDC4{rTm6{YU7kL+6$7w=pBe?|gs^2;}s2y8D zTn?sJ!~o6-Pelb6;J_$?_c1DmJG@-QwZ{Cs!Q~3i8 zu*Qqmxz4(1&)Xq$H9f}sDuPw8ho{g^dt@=v7;fZ{Opy3h9``0DW$6_4>@}9v$dXEDp|A(t5TUU!efBf!J#a>lM zngkmnjPX;*>SWmZ<4fF?tOZ#aoC-z}mJB!M%nV36U~r3vUi?Jp+A^RO zBY-GEDb+7YWX!?seUza*xqENQg|-DlZ0V2XX;XP11l6Rz`Y@sc+xCQH0J73a)2btN zoqNysR%~5Qy;a}-MdmYt2O-*G(|uI$L~QWl6}WB(KV^avR3ZajWNk`y0;!PA8d8J; ztaTH-=SjP*qttb?F;1Do9Q+wFxN1^lOk4~T_S!}%D3@T(wq{{qbx~PWfVNl~382D$ z3BnD9uK>4b5Ko#8zFE^XQKs^aV&SV?yT_-|7`_lL-pRCI8|=db0ZJ^u32s(y7$Cee z=s^>D4douCeKgeckEb7Fh9XC7lB(ys@2;FUrqaQK+_m}04}CTusB>dFEDVGIZ|ytE zn){QZ`1(HFYsM}m0V)0Xc{qux@^hq`;R3354d7#<&b&U0k+BrhFLZp%(U+hVMJiY=T>xShV zo=JW1mP43ecw-EPXl)b#uDX9_+tF7Ak!G_MKR(IR z)TXa9tUtH!+PHSGMP~*TkzRK?{ijxWj|w2-MG3+hI%fGPH)? zYycdxNI)OT#P1}^QZ}3^&qLQd2Ba1|b!WC%R70u!ho5nt!y@?!ZcOULn092kNNDyw0YI}J^ zE`NMQ9rybBSoAJmmJb$T^y3nJmV|XXMK_ug-HcGN9vo4Qsw;m7fO*krLU}O z!9-|2-<;m?cSBd;KBFx*$n!8Ub+WD$0EtJZjY!rzfMj)iIN``xGsT$Q@EW#K4=ZW! zC%mb{*|D|}IJ>UjaF77(85BlMw=g;IkbPO7+}E442gD*-Ehb%#V~?!i>bf8ZEc?`7 zWG0`;)^ysSx^3dA+K4TKNx8Ez!wE>Ex)*1tvv(LV+uD4Xr4+v{A8wyhVTDewayL%6 zonowQP#-l?LFbc6QF(6*Gjd)fc|+(s6jA~2&+>w9%1LKzhDR_%Gq9TeNF?7b?OAl` zt%Jz$LvQ7x5nM7j(Tm6`j+e5I!^d54!JNJ6)sOc2WX^l#Ui-)TM5%*xI4b7spGK*w zllxa|I2Yxt+MuNn&wy2Bf1{WEu0q3y>fUiG;%;Dlxijafmk17+I`$~goRN@6GKRT$ zp7sGZ2#x4T0C7DdG~)23kU{GBl{wxtEnR;Dz~>S>n+%(RJaY%e8b8@)16CJ}(o2bp zd3OcAp$}ibQgDVxG(EX7TCDKQDyQ;wtXe1WWi%X;nRao@Q017p1?qoaaI@-c#LOde zzw2u8VqD4aDPsJt%BcHaG(Cc1MfpduZ@43!_P$;k5S9Lcz&Ph|?!Z?5{pK#J{Txe; zD;ze`|5M%U;Z}>NJPtwMOmsQ1YYl5Yg1EG;irl((fYqr%#$Z>$^<+FRNFS%8@;&bK zv{TB7t3XAZ-#nb?hxab;2l)u;i(WCLeDsWY*iVg0&lna*EqkUW`7U)fOw#LwN>D=f zP8$_;i+RJ#*v@{NN+(O?a_QO8trtafiVO^mhXoybxav8oj=&9DdlV*U%7R>_+?Y7n z+3~uX8@l5D8i3ZB0bq%~wYW)B+k2jAu@7y8dl4dc08}lZQfI{1y4f*8KkB?FRxiK$z_4o2sQ8L_gx5 z`72FX#jd`^r>N^;9>J|q0xYSjKPKdKxRvZAYyP=aiG=AZ_^~X|F{t$N)&fh&UvJ(D zIb<9ky^=LBgVpJz*2?=D2Fc=%miYC`m-B&^6SO$d)3P2{bvfN^#4P>}=ptJT9IQ(b zYx+SmMqAS8*kIcX{4YLa_5clA3$K#!m$0de6dx7bR;g^^xpBe|CIbLaj?DB9DZA)K zBe^;?_1`nU8(8n`0UQYTQMO(n%IKr6%8$eu3BKqNObCQeVKxDITK&nm81zxb8)DER z>s{R#bN``yPfWW#F=#YVvZU`))aKtEHgG=y=#Av8ai--))9gV4oWPMcQQgBs+08$B zNK?z4euV@lU<1W>1>8P-&`FU9;*??Ct4C$r6eq)G^b--ADO%3-*CgxncaHBKgvxRT z0F^NuG?98>0TGF<>HgS}^58A0=?fp;H@KAfMMlIMQ%20@4(ksGl0Z^?bV@InLGz7N zV-s8iT^DswZq7jG>!IseAE+*xmuqyd6~VNA88zh9KZk@dmBfLU4Zb$M4?u!fiAx5*vg!N${10?L`A%^&f`5?f&--Lr+z6Ks}>CcZiAaB5+z?S zAtZO>D~1wJ`mtiys8V(K|3}fw;$0FtK68E~*xLqyQ_eLvM?;PVIjZg+gy)8X{s|EZ z7Y+1ltXhMOy8s#>a?5Z!m{L9(>Rc_MA=0h=F1T@$dsJ1THdvPq4MQP^b@tW43|@69 zvP#8RJ?NP;hMr}nLh9rpOdZEbzVkszJ@Ixi77DZ(1c@u8x8kc-)r07MP8nu=u%#qh z%?UqvkWG}_+XMYnlm%Y_ELe+dM4ROR&(_Tv2tuM#gDx|4ZJ7x%D;R4o>Q4mex1o2R zcH*qp;Ga->LE$U=jy91vosJgP{?d1qtWXjyq7?+qjbEupa|Wgeb1z1Zd{BuAyheV~ z`9<4XyNz4m$E-PUE_Wc|I@q9Uqox zHOH+kRycu4AiLaf^>1t{=}^&I0npq6GA=faW{*{6M`l=eLC3(RCRq_(Sei_7w&tA` z+@_;W3xxK*;z{%i82!T!t#`7$lEsC#EzJBDr>nZ#Y48A;bRZ!GRfKi)J$iZ@7D! z(u7?t1)I*vxK$G=qW9nLlRlw?iaB$ssX<&-nLYEjphw!9wzi)R-q^h#?W=7k`AT7W zBx%AShol`terdi?C>Sw7T?J+S(i6t2>j*l|-|pR=I}N1Le_Z3Lea9-th35OPhadXY zDj8LNWi^dl({SUHS2<%aP|2Gc-C$zy_7`XikgdL(ebp@N9AyhvYECsbFb}~oWke^h z7Uz_Hqv=2s=u7-A4a{;|tEgVqHMirSNg)Js9HXl4_2!_m2au$en6VYmq|ibL2uSd^ zF!cT|Ns<_;dM-iO9$wL=ZRhJ;K1=4cO7$M`cfZuGi7NnkyN_%b+#OsF*uh}&N@S46>h>k-z*O19KyOv-H0k&DHKxq7w4j4k?|bHZ2z9vwWZL$#=bq3a)Tgtx zHt4nD_{=~HGXog|I(7mJk_2F~v7K6>=-aXr3%U>z*g799Io{9oCORx|y{#P>7b-W- z4fA^xU3s;MVHovVo@V`?Xh*pBVDx*2lII;2C1f3gU-4C{$H)Q z4g#DqnBl{*-(o$4Nsz(nS#Kc*3EnVPSx|GcK!$$?iuY`fh;?B^pn=T)bH7_SvW)J; zg;2yP&#On(wUoduat3;6yDgc#A&0*#{VMxLiAkC`h@nTNU)`4G(0Md2{qYsm=Lqi8 z6C$(b7GDGnbvj1yGyZPPjPvnb^*7e@qt@_Q72M$|{+5(#PLLFnG7EWNyDh!<;vZ6d zc&Ae;#`Mn~YOhl$pF%u6@Q!nCPO5m)*^tP|h=?e>aaDL-x^3Z6s_vFPS5^-o@EzWR z(ro}b+GrxfKT%J@r9ktAFgaC>qcyJbSM+>jyoba~F@P>PWu!a)HhK)5BL2!NVpoKe zLO|a@BZ(v0Zh+5-9gkhrW}rZZ@wMSRk|{iTdrtq0e(Mdn&|8SQDa20x%;$-ZdqFFg-#`de7T8a5t38$c%q zspt@e<$_*j+qu`(*QPBWX4t!_GL_-$sH((lqbZ=TrR`^V3wdV$=HGx=9QMo~14fv~ zko4_@dF3hq%zalR6TCQOgdzsfO=l$|st)SDOwm%DZi;@`!U|?Yf)+3F?Cmcjhtore zjHeW4*n*Bvg}!u9QotZO-ne>7KZ-d7DGbLg__J5N!9ReVmqAPo&1ZiH|MSA6?nXZ0 zGI-B!lH0l;7W{=@u7*ei%ptz15OkX#1|jE1_eB@?T5^uMW7Q0>ezi9t~cA2^SXNCIcWX?|D|1DMl+sG{UreD1TfgE$(chjZZ zK>c9bdla|h80s^0@)p(sfPqp}7ned5fkUL`4j{ZjMH?RVgC zBcAgL=lX-d`$@!QRmK*0um089pss8_J zy7qXczyJTl~t1nXqlp!qJyY!1_SG2XXK5vUf`X#VGN&RY_EjA5T zY%Zd4=5ACpXqLj`-UG0)LAL7R?cRR#EA=@o+7YN9u5)_v%BB67+D%Tnh(&Jf_c=}W zCw}OCfn?}S*o()m!PAQ&j{~_W;M@-Ekvy-}8iX3qVH*Vib!7IC-vToIw0F9FDJ8H< zZ3F)08XWL5#k3!S@QR}Q(gl*|F_@0Ny-!o|indsnCVKAr|5Y>C+{gzW?NszM?^8IT zEt!-`&1u;jgxKNspV_go=n5JuEAEFG1THRyKF)fGXnAY}HV>~J*EnFy3nD}*M_dJf zYtzD(4pOSAc16MQ0sf?<$_*Iw{~)?wpv?ByBik0VL1nc3B~bPkvbDLIW;qGe$b7;OVc$UKaNoF#VQ)m3ofF%O@{cSOv^0EC zAVh(WI$NInV13{3X8=H$%6dVY=eFp-Lur4kUCtcd!2Lnl#zn@-mjB@sgV>YT*loSa zdGu2d3czhuwOrN;=dYo!43M9ws;wu})^KxMGIsG~zYBS+6^&dApSYtyR$hAN8ZX$P z2U7-za*sBc?FTC-pr{Q-X~j!jdSzkvC)!DC_OM}z!N*eoqc`jMGex2gFsUf3WzWEW zP|RGX6K{t4_FmPR5#t`7*n3ywzv5FH;Rc;RDJ3T8ByntR%TsEL`OHw)^wp^Bk$)aO zW$m~aOwLp-D^4mKc)3T>*dXXNtJ29QjmUJ|+*p;q$#DA>S=#8PydfygA!qT}o(yxi zU{W%|W@j3XcnJwje6LpB^o7r}ej1B7YGRPBlSA*y?)&@a4}9j(twi8(x2GRGNhaZ% zvq`e-%admokuStw#WO?t+^eD2?*!p-S|Qni=&csVC*&LkKd`3Qq=%v|k;R z7g7>ZJSXxl%@{A*5_)?}wTv_c+Ip*dL?ZhcRVzqJJjbw(yanl`E^^u^$OfrC#K-mN zcu42duP*XCpUyExe7&qa7LRn_?pU;3ycs!uDrkEDdo18o7v=m|e2MB&YD>vkozGf{ zuMe%luGTH3y|L|FICeE71j;mF%vRd!J=J<9mq5zPhlG zZR|}oN{3tTEw~tm!i?o!kQQ_^kL_AVw-Oa+D7?Uw;!)SZ?GM}w-baK=b*qU4Lw9wx zdy2y)F&4&HJ2`=(iu%gU4xF@#jh#zh*JNNHMkdVGJm~N!uy3j zxm}WAs;vD~bEUPuU3*1!lb2-@UXZRl1)gb_4n@rQA&k<*dErD&H6t zVQS=^6+1AqGfnfRD{e%l8mwo3S-lO2bhPu4Sst;&AjkdYuxo#{ za(ALcor7%kzy^gnu3QkaedJX1Rn}DBuxVLv#ILnhY_yD`^4buMM$ZNia8RaX=ANvU zfnI_ACPT)4X4Nyd!zg(^UrsujS?LI=Uo;OrFC9$%^DefoA+_(D_-Mv$U zCE3@Er4+Y*9@}1}?fA3IJ7^{1}{lAK@?)LMo`u8Z_)`rNX4kQXPg@8=tGzlbi`R| z&-drY{mzpTt;|zWrS(2sF0olXsqfga5^Aq%82;c-z^gl^y?TCWAa8$e$s)1JfAk#T zqMxU##4bClk><+GcCo_Rr8MK*4nZmT^mLf?1D6OZ!GzsjV1vxi*KtA_5Oibo74wtz zG1CFd<5u<~MwhN2xmm^d0*$?N|q}gpV)TpRMRGN7K5t&3PA#(9P^KDh+p#g0&O}u=c z?mDbQ&TDmhgb;TYB6Pw2NQmEgc7oq|%0kkQAb{-V@Jk|w1Dp@SecREGSs_~N$-pG| zSv~dA-0JpU>I75OB~Od2K~Yl2iWL=xu3=u3cUY~IR{7H_Io&!W_kMLDc5)2JFr3R5 zC5tAV{a2{ueIH^fGWOVY!I=X;l#eb6Lu499s6@F`BUa_z1V=FP)u2SpiY6i!vhbFl z{Fc(oiTCzHO6gGJ!eWG%j{2qR@Fxlap0K_nm}j5$U*Z|Q;<#OtaK8#fGEKW@(mH!W zeYWUk`_4N6upT3mC^e&JAa(rR4rAv%FIZ9Mhu(Hl=cNUs^dh-NX>oE#mylRi-{8vt z)_1yT9EbN&&`!R68Iy|N%aM4vrKIBX>uuAK%K<)X7gtVSYK;DP;2%+F;-tcylbFpOUOQ19zzo-%#r zt#8Ll@!DEZNb=!!$$lWc?9bhW=`d*`b@j zq9z=>j?1fsK@p3C^hfotC)F_)jrON>W2PH?Iq|^}fI4>`V!2tD&$djJoF|-uBtp91 z22(fRf1d9U6b2(2G8#ZO->Z^w4&yY2T#SBs95a?m4A&1H62*UbT1DxRql#>lK=nO# zpAa(T_dk8LTqkfOFZdMHCr-elA{KX6B@w;r0fko)*B_#WhyOBA=8MI%>ZQJp+RE`X6 zeoPND!%L9iVb@> zDzCBK!vOUsQ~0iOO>6MVQe|F@3i;L^#vEd&16Z|(Z}lD+@{_O!nIh8uW~43y-aE7h zhR|jZq^bTS&JRHt?B+jFTM3cgB#4A+q65QZ!lv&b33IcOR;(zH72b@ zJi@ryp8K=#3;TH5uDYCd2s@>vzSEb5Gu$nB&i zY*9ut0-}#_gyo;Ctw=Fm1v7%5gpxNg-R~E? z@d(`@O_{J*TAw>Pr4o^fuQINHneTj?{l5M)20B3-)u(GEeS1M^Z53)xmDa)qn4peo zVV#Rt2RK<-5`$r_sxaP^C-*ULOX$2A@H{#mojcbHdCH;l>UD%SCp8oS;SuKYH)Kn1 ziK}KwsG~D}+Y!m8H;~FD=N)EED#7X1MD}gDAyay*JGj*_In~pFqewo+q+CqkHQj!0 z3_<*L^9apDH99JQJDN77eU_pWjmV6^bO)1-vGd&DJZ1eiwPydO<~fu)K(76*74C|l z&*i-pZNE#zOxe02gNjtoo*`=$S#_nG=WRY2pHcK9&9@Z@Y<>1L*WV;9O4_Atp%RQ3 z0p$IId;fm)=E{c$ZV#Cfh8{j@_`I1(=jp8-s)>z2dsup@Qc8qM2Hs3ciiZJ~uDNgz z`2`aTtk`RbQrA3(k$$@(0vll&!@Lb4Keb6heYW<9i6U$Z74H=S5#Xq)$iym>&JCAV zL+*z&su;g>0N1a1wj%vZe~iZUh3_+gXdO66S;#YJQ*D+5Y75n2Obcsm@DQe)*S}zs z6adr9pv_9IiXGjHb(YM4_XYobq$j15No$Z8x4vk4tXNWcl239#>1;EBIEIX;PD8fd z>3wWl$z1O{MO#(u?7sH0+TdZRwk+_YD5Z)Mf1H?o7i2!drp#Vl^9-P-sgQ9uMo(|( zS|{tfHajfZOJ_ZevdwF?qXy}xGrrbE!Bj^6eu8D1V>-}t!}@6URzh12Ek4cI=z%x! z=1Fsnve&ni9&Bn>CPYaXqOpz!99thwa13#aRGlgKKvwr-4v0eG)%z=6gWF#n)PP=7 zKUkjv*1$Oyo@mT?RFwprByBW-saALLr=b42V7?BkB+tYw#7-pIKNH`TMZ}#o%77%n=J|Dx5ZoWa`tq2kXCF zAmMOWJFi+8@7B0Xq9xW*?VyH>Oq@10H8n4nHY+xc3{fq;CD~c8E0_R8Ir%EQ`7{s- zKPaM!<`qOpN|k=b>eIBeKHfcvJJ{W|Xbc~4Bt-2p%n3Gi$H84MF5U-((=4Dhz{Z8+ ztgy~%dOKVeI`&}kGT;&@%*swKp`LNZFW@lVg&AH6ZYqWuOYvMq*$2!dCDZK_jQhK? z>Mt$$C@yD^jDt#N>J@~>{Rvg9kVia2w1+arx1Z$zBf0lZ;>ubcHeFA|1qzjKnn&7v zA`e$Geh$yb7RW+LYN;f_47%do}n$Q^rv1rEI+AlzqG_Y6s|& zh1>Sdt-I?Yxcr&u+bj#RKG=K6k}1botK+Go*=EaezfZ8|xn8C+=GN0yBWz*ow9jU| z#{U$lW#^An+KE7du6>FW_2%o2#S_B&Y!=c4ntn%Q1S3Pj*2OnQ>zN>8-|WdLqZ}Sz zqku==4T(1CDke)h0yvs4W!v~#FHijxs-2pUoP)IVTmgF!vC}(XlDpz$S??rbPP&PX3p@f zc46_HI+!+o;>b#rUnx&de_n%YLrUC@O~oIkjaqZh)Zb4JClRQo`YRWS**gv)4yj|t zGFwdM$Y8EfSxY+4jI;I`@XF;hVGgky?z+iaB6Dch5E;Q)`^i&xsQ{%$%W{j;%$=2t zmVx8kVD`!JCP0ZgT@Yd|8U4^IckTbQPgwb1(Q9YwV8VWc+tkLAth7G%nI>2v;zQJ8 z^x$c`uTNOssP$ye)wklAL%}%B(1U**h}qTdh%GNzeQ*cpVsU_A>rCfV2LEJtMvmQq z$1Lw1;=fJ_hbSx849h~(_f}d5_ZJ-yw>AVZCy;nWV3}_sI+5d({Is)Gsh%mc21wcM z@0xx!EEk%OgtfzC?E`{xUo!3aRvTm)rHy`Mno&Zl7%eY_*xsEF zKByfOh2>kX+rKL$T9jwDZF*ibiipP2Q;DYuE3{Dr^XOOKRYz#0eyK3Y0XhJ1TSx$d za|j5k>Y#{@uXO@;53)jzaJTx+@$^ECQRbtZ@C*sGb1h7JJ7%naDAVjkEHGW!Yxsnd zsH9>?4D5^3#bmXi^$YGCCKg;aH&nfcyk~n@_}2A#&rSrHL3TsP7S|d| z!g}tn93I?%ZuAZ0d4<*>w2Jx>&WyeMNqXiOXu%Q7x58l4U(DYa{maDVHZI}hm22>6 zWM_(ixVUNX^tolQDxEefF>b?f)q}zz9J2ABMI4ZpnOCeR%@ea~qW{V&*97*%dpcGg z4eqB;gZbIC2K)DM)6clt?mKeAB*zOOc6jBAiBgGLzUCo)j39-mHx21CJ2RytAZf`~QL)zTqS)s@VBBi(9*VzI7!95m0{mHGiM8sshA+8$n=9jS)JUrw()l z4F$(Op-`DeTJpjz>tMBefo8-N{tYvDFJh2AqNj!!|HMzb{0pyiV>A{oIj6Ee=7yWb zIcGD4rOFPsbP4oq6|x-03h`$rS;)a}3-#!9yrrz*&x;?_%#h%Ht+_m}{cbmXc{z!4 zg3@YhoBzR=+0FFlTj8+jErp6?LUI5CYlA=0@q32p@#+c(8)GL#0~~{%rTC z_@JLSu6lI4v1jW+_1TkAsH;8lqSrdXa*7}R+#y&N`LyCPYQ)K7nk}Fr8eP^2J?w4!GIw}UFL>*(Vm!B6u zmAf`I;FA-7y*O^dxX}{BvyZ`<7Arz9CMybZfMOj3>h4GD1qoM2{f!ebY~U9weeR7! z{^&z@+1Kw6Ty%b~ne2=8;Jz@1{A(CuD zF`2*JR7Q$Bp7Mq7ddz`A4u?Jrwph&^5GU*9(;6hj5S>?4rKRg~Mw!D*VN#ibio+`> zFm@yiG-b;W`By>N(XJp&BFMH`*K5f?8q_gnfnb8}z}0&roSOGinXBmWu}n(Ep?<$O z`F9cRk({}t{DB8^y68P$a-!BBKH&&d!Js`Dq|riO-9Q-{An2lJe`AAiS-PCHd@u+!i0(hXI(Hb)Kq8-4OV#C1_)K&XG5uVqdHP}c6p|Jc2sN$`_4^f|J!)kU0~ zcO4`#f`u|srec{IY>_5-dv@cWosPhQl_RYWykvR9CD0~_vi%rgx{oZtQ=OOK zh~fXWX9{sm*=H;bP}5Q~d%zQpMPn+r)2S3Uxb9VCPW4gY)dJ!zoOkh0ycbyQ^TJnJ z%^?{1$G(@`GGfEs?J+30);5uk1-ETIOZWy~fmRS@4ocgcKI}uKqxb-_#&7C=4q_(o z=vd$w>ZCxIgxh|-1J)kik$Bq`68sZqZRVXhdiEC5T2af*V7ydI{Bb5Z`D%`~#OgKB zHaXVhgjWwsYR}xJF*Q9NmkICV@gvV_T+2%Vll(zBW7|0=TSNJGNRFwt66&U((;YBn7W?>` zUOt!rP(l~+?ILacO|$bo;^;_|7h>E!+@GsI_i)`wWimwv=x5$QsV%9rP*zTLd1Pey zF;qMzg(SP&L+%-0yEWj6HmLx3>Wq2)D=_+)Fam#ms~GS1at%fmmHhnU9VAJba0!0y)3K9eiaq{!yIK^9Zu^XG@lQ{xwQ1l1-WgDl3o z=J{yB!)ng8XYL4f4;Y~h>s&;+^=Jg<4fE#z_L;yTSaZK)ZleVI(zLoCjTLtEpYQ44 dZ|5^DfaS-UT9N$En}dxZCwo`BMjOA&{{!KeLht|p literal 0 HcmV?d00001 diff --git a/Annotations/Role based annotation/RoleBasedAnnotation/public/index.html b/Annotations/Role based annotation/RoleBasedAnnotation/public/index.html new file mode 100644 index 0000000..aa069f2 --- /dev/null +++ b/Annotations/Role based annotation/RoleBasedAnnotation/public/index.html @@ -0,0 +1,43 @@ + + + + + + + + + + + + + React App + + + +
+ + + diff --git a/Annotations/Role based annotation/RoleBasedAnnotation/public/manifest.json b/Annotations/Role based annotation/RoleBasedAnnotation/public/manifest.json new file mode 100644 index 0000000..080d6c7 --- /dev/null +++ b/Annotations/Role based annotation/RoleBasedAnnotation/public/manifest.json @@ -0,0 +1,25 @@ +{ + "short_name": "React App", + "name": "Create React App Sample", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }, + { + "src": "logo192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "logo512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} diff --git a/Annotations/Role based annotation/RoleBasedAnnotation/src/Authentication.jsx b/Annotations/Role based annotation/RoleBasedAnnotation/src/Authentication.jsx new file mode 100644 index 0000000..c04f3c0 --- /dev/null +++ b/Annotations/Role based annotation/RoleBasedAnnotation/src/Authentication.jsx @@ -0,0 +1,135 @@ +import { useState } from "react"; +import "./index.css"; // Make sure this CSS file exists and is correctly styled + +const hostURL = "https://localhost:44310/api/Authentication"; + +function Authentication({ onLogin }) { + const [isRegistering, setIsRegistering] = useState(false); + const [message, setMessage] = useState(""); + const [username, setUsername] = useState(""); + + const validateEmail = (email) => /\S+@\S+\.\S+/.test(email); + + const handleLogin = async (event) => { + event.preventDefault(); + setMessage(""); + + const form = event.currentTarget; + const email = form.elements.email.value.trim(); + const password = form.elements.password.value.trim(); + + if (!validateEmail(email)) { + setMessage("❌ Please enter a valid email."); + return; + } + + try { + const response = await fetch(`${hostURL}/login`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ email, password }), + }); + + if (response.ok) { + const userData = await response.json(); + localStorage.setItem("user", JSON.stringify(userData)); + onLogin(userData); + } else { + setMessage("❌ Invalid email or password."); + } + } catch { + setMessage("⚠️ Server error during login."); + } + }; + + const handleRegister = async (e) => { + e.preventDefault(); + setMessage(""); + + const form = e.currentTarget; + const email = form.elements.email.value; + const password = form.elements.password.value; + + if (!validateEmail(email)) { + setMessage("❌ Please enter a valid email."); + return; + } + + try { + const register = await fetch(`${hostURL}/register`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ username, email, password }), + }); + + const data = await register.json(); + if (register.ok) { + setMessage("✅ Registration successful. You can now log in."); + setIsRegistering(false); + setUsername(""); + } else { + setMessage(`❌ ${data.message || "Registration failed"}`); + } + } catch { + setMessage("⚠️ Server error during registration."); + } + }; + + return ( +
+

{isRegistering ? "Register" : "Login"}

+
+ {isRegistering && ( + <> + + setUsername(e.target.value)} + required + className="auth-input" + placeholder="Your username" + /> + + )} + + + + + +
+ + {message &&

{message}

} +
+ ); +} + +export default Authentication; diff --git a/Annotations/Role based annotation/RoleBasedAnnotation/src/PdfViewer.css b/Annotations/Role based annotation/RoleBasedAnnotation/src/PdfViewer.css new file mode 100644 index 0000000..fec4af4 --- /dev/null +++ b/Annotations/Role based annotation/RoleBasedAnnotation/src/PdfViewer.css @@ -0,0 +1,91 @@ +/* Base */ +body { + margin: 0; + font-family: Arial, sans-serif; +} + +/* Authentication */ +.auth-container { + width: 400px; + padding: 40px; + border: 1px solid #ddd; + border-radius: 10px; + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); + background-color: #fff; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} +.auth-title { text-align: center; margin-bottom: 30px; } +.auth-label { display: block; margin-bottom: 8px; font-weight: bold; } +.auth-input { + width: 100%; + padding: 10px; + margin-bottom: 20px; + border-radius: 5px; + border: 1px solid #ccc; + box-sizing: border-box; +} +.auth-button { + width: 100%; + padding: 12px; + border-radius: 5px; + font-weight: bold; + cursor: pointer; + margin-top: 10px; + transition: background-color 0.3s ease, color 0.3s ease; +} +.auth-button.primary { background-color: #3f51b5; color: white; border: none; } +.auth-button.primary:hover { background-color: #213292; } +.auth-button.secondary { background-color: #f0f0f0; border: 1px solid #ccc; color: #333; } +.auth-button.secondary:hover { background-color: #e0e0e0; border-color: #bbb; } +.auth-message { color: red; margin-top: 15px; text-align: center; } + +/* Header + Logout */ +.app-header { + display: flex; + align-items: center; + justify-content: space-between; + gap: 16px; + padding: 12px 16px; + background: #ffffff; + border-bottom: 1px solid #e5e7eb; +} +.logout-btn { + border: 1px solid #e5e7eb; + background: #ffffff; + color: #111827; + font-size: 12px; + padding: 6px 12px; + border-radius: 8px; + cursor: pointer; +} +.logout-btn:hover { background: #f9fafb; } + +/* Rectangle border for the DropDownList (non-overlapping outline) */ +.author-ddl.e-control-wrapper.e-input-group { + border: 1px solid transparent !important; + outline: 1.5px solid #9e9e9e; + outline-offset: 2px; + border-radius: 6px; + padding: 6px 8px; + background: #fff; + box-shadow: none !important; + box-sizing: border-box; +} +.author-ddl.e-control-wrapper.e-input-group.e-input-focus, +.author-ddl.e-control-wrapper.e-input-group:focus-within { + outline-color: #666 !important; +} +.author-ddl-popup.e-popup { + margin-top: 8px !important; /* gap so popup won't overlap the outline */ +} +.author-ddl.e-control-wrapper.e-input-group .e-input, +.author-ddl.e-control-wrapper.e-input-group input.e-input { + box-shadow: none !important; +} + +/* Viewer wrapper */ +.control-section { padding: 0 16px; } + diff --git a/Annotations/Role based annotation/RoleBasedAnnotation/src/PdfViewer.jsx b/Annotations/Role based annotation/RoleBasedAnnotation/src/PdfViewer.jsx new file mode 100644 index 0000000..eb31ed4 --- /dev/null +++ b/Annotations/Role based annotation/RoleBasedAnnotation/src/PdfViewer.jsx @@ -0,0 +1,383 @@ +import React, { useState, useEffect, useRef, useMemo } from 'react'; +import { + PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, BookmarkView, + ThumbnailView, Print, TextSelection, Annotation, TextSearch, FormFields, FormDesigner, Inject +} from '@syncfusion/ej2-react-pdfviewer'; +import { DropDownListComponent } from '@syncfusion/ej2-react-dropdowns'; +import Authentication from './Authentication'; +import './PdfViewer.css'; + +const PdfViewer = () => { + const [loggedInUser, setUser] = useState(null); + const pdfViewerRef = useRef(null); + const displayName = useMemo(() => { + if (!loggedInUser) return ''; + return ( + loggedInUser.userName || + loggedInUser.username || + loggedInUser.name || + loggedInUser.email || + '' + ); + }, [loggedInUser]); + + const [authorsList, setAuthorsList] = useState([{ name: 'All Authors' }]); + const [selectedAuthor, setSelectedAuthor] = useState('All Authors'); + const [globalAnnotationsData, setGlobalAnnotationsData] = useState(null); + + useEffect(() => { + try { + const saved = localStorage.getItem("user"); + if (saved) setUser(JSON.parse(saved)); + } catch {/* ignore */} + }, []); + + useEffect(() => { + if (!displayName) { + setAuthorsList([{ name: 'All Authors' }]); + setSelectedAuthor('All Authors'); + return; + } + setAuthorsList([{ name: 'All Authors' }, { name: displayName }]); + setSelectedAuthor(displayName); + }, [displayName]); + + const handleDocumentLoad = async () => { + const viewer = pdfViewerRef.current; + if (!viewer) return; + const currentName = displayName || 'All Authors'; + setAuthorsList([{ name: 'All Authors' }, ...(displayName ? [{ name: displayName }] : [])]); + setSelectedAuthor(currentName); + try { + const exportedData = await viewer.exportAnnotationsAsObject(); + setGlobalAnnotationsData(exportedData); + const authorNames = new Set(displayName ? [displayName] : []); + viewer.annotationCollection?.forEach(annotation => { + const name = (annotation.author || '').trim(); + if (name) authorNames.add(name); + }); + const newAuthorsList = [{ name: 'All Authors' }, ...Array.from(authorNames).map(name => ({ name }))]; + setAuthorsList(newAuthorsList); + if (displayName) { + filterAndLoadAnnotations(displayName, exportedData); + } + } catch (error) { + console.error('Error during document load process:', error); + setGlobalAnnotationsData(null); + } + }; + + const filterAndLoadAnnotations = (userName, allAnnotations) => { + if (!pdfViewerRef.current) return; + setTimeout(() => { + try { pdfViewerRef.current.deleteAnnotations(); } catch {} + if (!allAnnotations) return; + try { + if (userName === 'All Authors') { + let parsedData = + typeof allAnnotations === 'string' && allAnnotations.trim() !== '' + ? JSON.parse(allAnnotations) + : allAnnotations; + if (!parsedData) return; + const dataToImport = parsedData.pdfAnnotation ? parsedData : { pdfAnnotation: parsedData }; + pdfViewerRef.current.importAnnotation(dataToImport); + return; + } + let parsedData = + typeof allAnnotations === 'string' ? JSON.parse(allAnnotations) : allAnnotations; + if (!parsedData?.pdfAnnotation) parsedData = { pdfAnnotation: parsedData }; + const filteredData = { pdfAnnotation: {} }; + Object.keys(parsedData.pdfAnnotation).forEach(pageNumber => { + const pageData = parsedData.pdfAnnotation[pageNumber]; + const list = pageData?.shapeAnnotation || []; + const userAnnotations = list.filter(a => a.title === userName); + if (userAnnotations.length > 0) { + filteredData.pdfAnnotation[pageNumber] = { shapeAnnotation: userAnnotations }; + } + }); + if (Object.keys(filteredData.pdfAnnotation).length > 0) { + pdfViewerRef.current.importAnnotation(filteredData); + } + } catch (error) { + console.error('Error filtering or loading annotations:', error); + } + }, 0); + }; + + const onAuthorChange = async (args) => { + const newAuthor = args?.itemData?.name; + if (!newAuthor) return; + + const viewer = pdfViewerRef.current; + let mergedGlobal = globalAnnotationsData; + + try { + const live = await viewer.exportAnnotationsAsObject(); + mergedGlobal = exportEditedAnnotsIntoGlobal(live, globalAnnotationsData); + setGlobalAnnotationsData(mergedGlobal); + try { localStorage.setItem('annot', mergedGlobal); } catch {} + } catch (e) { + console.warn('Failed to persist edits before switching author:', e); + } + + try { + if (newAuthor === "All Authors" || newAuthor === displayName) { + viewer.toolbar.enableToolbarItem(['AnnotationEditTool'], true); + } else { + viewer.toolbar.enableToolbarItem(['AnnotationEditTool'], false); + viewer.toolbarModule.showAnnotationToolbar(false); + } + } catch {} + + setSelectedAuthor(newAuthor); + filterAndLoadAnnotations(newAuthor, mergedGlobal); + }; + + const exportEditedAnnotsIntoGlobal = (liveJson, globalJson) => { + const parseJsonOrObject = (value) => + typeof value === 'string' ? JSON.parse(value || '{}') : value || {}; + + const liveData = parseJsonOrObject(liveJson); + const globalData = parseJsonOrObject(globalJson); + + globalData.pdfAnnotation = globalData.pdfAnnotation || {}; + const livePagesByKey = liveData.pdfAnnotation || {}; + + const normalizeToArray = (value) => + Array.isArray(value) ? value : value ? Object.values(value) : []; + + for (const pageKey of Object.keys(livePagesByKey)) { + const liveShapeAnnotations = livePagesByKey[pageKey]?.shapeAnnotation; + const liveAnnotationsList = normalizeToArray(liveShapeAnnotations); + if (!liveAnnotationsList.length) continue; + + if (!globalData.pdfAnnotation[pageKey]) { + globalData.pdfAnnotation[pageKey] = { shapeAnnotation: [] }; + } + + const globalPageEntry = globalData.pdfAnnotation[pageKey]; + const globalShapeAnnotations = globalPageEntry.shapeAnnotation; + + if (Array.isArray(globalShapeAnnotations)) { + for (const annotation of liveAnnotationsList) { + if (!annotation?.name) continue; + const existingIndex = globalShapeAnnotations.findIndex( + (a) => a?.name === annotation.name + ); + if (existingIndex >= 0) { + globalShapeAnnotations[existingIndex] = { ...annotation }; + } else { + globalShapeAnnotations.push({ ...annotation }); + } + } + } else { + for (const annotation of liveAnnotationsList) { + if (!annotation?.name) continue; + + let matchedKey = null; + for (const key of Object.keys(globalShapeAnnotations)) { + if (globalShapeAnnotations[key]?.name === annotation.name) { + matchedKey = key; + break; + } + } + if (matchedKey) { + globalShapeAnnotations[matchedKey] = { ...annotation }; + } else { + const nextKey = String(Object.keys(globalShapeAnnotations).length); + globalShapeAnnotations[nextKey] = { ...annotation }; + } + } + } + } + return JSON.stringify(globalData); + }; + + function lockAnnnotations() { + var annotations = pdfViewerRef.current.annotationCollection; + for (let i = 0; i < annotations.length; i++) { + const annot = annotations[i]; + if(annot.author === loggedInUser.username && selectedAuthor === loggedInUser.username) + { + annot.annotationSettings.isLock = false; + } + else if(annot.author === "Guest" && selectedAuthor === "All Authors") + { + annot.annotationSettings.isLock = false; + } + else{ + annot.annotationSettings.isLock = true; + } + pdfViewerRef.current.annotation.editAnnotation(annotations[i]); + } + } + + const onAnnotationAdd = async (args) => { + const viewer = pdfViewerRef.current; + const coll = viewer.annotationCollection || []; + const addedAnnotation = coll[coll.length - 1]; + if (!addedAnnotation) return; + addedAnnotation.author = displayName; + viewer.annotation.editAnnotation(addedAnnotation); + const exportedData = await viewer.exportAnnotationsAsObject(); + const allAnnnots = JSON.parse(exportedData).pdfAnnotation; + const exportData = []; + if (allAnnnots) { + const keys = Object.keys(allAnnnots); + for (let x = 0; x < keys.length; x++) { + const pageAnnots = allAnnnots[keys[x]].shapeAnnotation || []; + for (let y = 0; y < pageAnnots.length; y++) { + const pageAnnot = pageAnnots[y]; + if (pageAnnot.name === args.annotationId || pageAnnot.inreplyto === args.annotationId) { + exportData.push(pageAnnot); + } + } + } + } + combineAnnotations(exportData); + }; + + function combineAnnotations(exportData) { + const existingData = JSON.parse(globalAnnotationsData); + const key = exportData[0].page; + if (existingData.pdfAnnotation[key]) { + if (Array.isArray(existingData.pdfAnnotation[key].shapeAnnotation)) { + for (let x = 0; x < exportData.length; x++) { + existingData.pdfAnnotation[key].shapeAnnotation.push(exportData[x]); + } + } else { + const keysLength = Object.keys(existingData.pdfAnnotation[key].shapeAnnotation).length; + for (let x = 0; x < exportData.length; x++) { + existingData.pdfAnnotation[key].shapeAnnotation[(keysLength + x).toString()] = exportData[x]; + } + } + } else { + existingData.pdfAnnotation[key] = { shapeAnnotation: {} }; + for (let x = 0; x < exportData.length; x++) { + existingData.pdfAnnotation[key].shapeAnnotation[x.toString()] = exportData[x]; + } + } + localStorage.setItem('annot', JSON.stringify(existingData)); + const combinedAnnotations = JSON.stringify(existingData); + setGlobalAnnotationsData(combinedAnnotations); + } + + const onAnnotationRemove = async () => { + try { + const updatedAnnotations = await pdfViewerRef.current.exportAnnotationsAsObject(); + setGlobalAnnotationsData(updatedAnnotations); + } catch (error) { + console.error('Error updating annotations after remove:', error); + } + }; + + const logout = () => { + localStorage.removeItem("user"); + setUser(null); + }; + + // Template for the currently selected item in the dropdown + const dropdownValueTemplate = (data) => { + const name = data?.name ?? selectedAuthor; + const selectedName = data.name ?? selectedAuthor; + const roleText = + selectedName === 'All Authors' + ? 'Aggregated View' + : selectedName === displayName + ? 'LoggedIn User' + : 'Read-Only user'; + return ( +
+ User Avatar +
+
{name}
+
{roleText}
+
+
+ ); + }; + + + // Template for each item in the dropdown list + const dropdownItemTemplate = (data) => { + const name = data?.name || ''; + return (
+ User Avatar +
+
{data.name}
+
+
); + }; + + if (!loggedInUser) { + return ; + } + + return ( +
+
+ + +
+ +
+ + + +
+
+ ); +}; +export default PdfViewer; \ No newline at end of file diff --git a/Annotations/Role based annotation/RoleBasedAnnotation/src/index.css b/Annotations/Role based annotation/RoleBasedAnnotation/src/index.css new file mode 100644 index 0000000..717bb1d --- /dev/null +++ b/Annotations/Role based annotation/RoleBasedAnnotation/src/index.css @@ -0,0 +1,10 @@ + @import '../node_modules/@syncfusion/ej2-base/styles/material.css'; + @import '../node_modules/@syncfusion/ej2-buttons/styles/material.css'; + @import '../node_modules/@syncfusion/ej2-dropdowns/styles/material.css'; + @import '../node_modules/@syncfusion/ej2-inputs/styles/material.css'; + @import '../node_modules/@syncfusion/ej2-navigations/styles/material.css'; + @import '../node_modules/@syncfusion/ej2-popups/styles/material.css'; + @import '../node_modules/@syncfusion/ej2-splitbuttons/styles/material.css'; + @import "../node_modules/@syncfusion/ej2-pdfviewer/styles/material.css"; + + \ No newline at end of file diff --git a/Annotations/Role based annotation/RoleBasedAnnotation/src/index.jsx b/Annotations/Role based annotation/RoleBasedAnnotation/src/index.jsx new file mode 100644 index 0000000..8411c75 --- /dev/null +++ b/Annotations/Role based annotation/RoleBasedAnnotation/src/index.jsx @@ -0,0 +1,13 @@ +import React from 'react'; +import ReactDOM from 'react-dom/client'; +import './index.css'; +import { registerLicense } from '@syncfusion/ej2-base'; +import PdfViewer from './PdfViewer'; + +registerLicense('Ix0oFS8QJAw9HSQvXkVhQlBad1RDX3xKf0x/TGpQb19xflBPallYVBYiSV9jS3tSdkVrWHxccXZVQGlfVk91Xg=='); +const root = ReactDOM.createRoot(document.getElementById('root')); +root.render( + + + +); \ No newline at end of file