From 6b919e0b7b413c37921c6667b73bde018c1ab325 Mon Sep 17 00:00:00 2001 From: limited_dev Date: Wed, 25 Jan 2023 13:52:51 +0100 Subject: [PATCH 01/20] feat: improved rules, edited css --- ImageBoardServerApp/Pages/Rules.razor | 12 ++++++------ ImageBoardServerApp/Pages/Rules.razor.css | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/ImageBoardServerApp/Pages/Rules.razor b/ImageBoardServerApp/Pages/Rules.razor index f85929f..723a969 100644 --- a/ImageBoardServerApp/Pages/Rules.razor +++ b/ImageBoardServerApp/Pages/Rules.razor @@ -3,12 +3,12 @@

Rules

diff --git a/ImageBoardServerApp/Pages/Rules.razor.css b/ImageBoardServerApp/Pages/Rules.razor.css index 2f34911..c37ac42 100644 --- a/ImageBoardServerApp/Pages/Rules.razor.css +++ b/ImageBoardServerApp/Pages/Rules.razor.css @@ -4,7 +4,7 @@ /*the text have to be in a biger Pixel number I do not know how to do it */ } .rules_list{ - text-align:right; + text-align:left; display:block; font-size: 14px; font-weight: 60 ; From 585440d10f718221195d858c33a1d7c6b3290acf Mon Sep 17 00:00:00 2001 From: limited_dev Date: Wed, 25 Jan 2023 17:26:21 +0100 Subject: [PATCH 02/20] feat: started working on thread view --- ImageBoardServerApp/Data/PostData.cs | 2 +- ImageBoardServerApp/Data/Repository/PostsRepository.cs | 1 + ImageBoardServerApp/Pages/Thread.razor | 8 ++++++++ ImageBoardServerApp/Shared/Components/Post.razor | 5 +---- ImageBoardServerApp/Shared/Components/PostForm.razor | 2 +- 5 files changed, 12 insertions(+), 6 deletions(-) create mode 100644 ImageBoardServerApp/Pages/Thread.razor diff --git a/ImageBoardServerApp/Data/PostData.cs b/ImageBoardServerApp/Data/PostData.cs index 30c6f87..35ec225 100644 --- a/ImageBoardServerApp/Data/PostData.cs +++ b/ImageBoardServerApp/Data/PostData.cs @@ -31,7 +31,7 @@ public class PostData [Required] public string Content { get; set; } - public string Interactions { get; set; } + public int Interactions { get; set; } [Required] public long CreatedAt { get; set; } diff --git a/ImageBoardServerApp/Data/Repository/PostsRepository.cs b/ImageBoardServerApp/Data/Repository/PostsRepository.cs index 72eacd8..d841e89 100644 --- a/ImageBoardServerApp/Data/Repository/PostsRepository.cs +++ b/ImageBoardServerApp/Data/Repository/PostsRepository.cs @@ -16,6 +16,7 @@ public static class PostsRepository return await db.Posts .Where(post => post.Board.Equals(board)) .Include(post => post.Image) + .Include(post => post.Comments) .ToListAsync(); } diff --git a/ImageBoardServerApp/Pages/Thread.razor b/ImageBoardServerApp/Pages/Thread.razor new file mode 100644 index 0000000..fdfbaba --- /dev/null +++ b/ImageBoardServerApp/Pages/Thread.razor @@ -0,0 +1,8 @@ +@page "/{board}/thread/{threadId}" +

Thread #xx on /x/

+ +@RouteData.Values["title"] + +@code { + +} \ No newline at end of file diff --git a/ImageBoardServerApp/Shared/Components/Post.razor b/ImageBoardServerApp/Shared/Components/Post.razor index edfe5ca..a2a4d50 100644 --- a/ImageBoardServerApp/Shared/Components/Post.razor +++ b/ImageBoardServerApp/Shared/Components/Post.razor @@ -37,7 +37,7 @@ Report ] [ - (@post.Interactions) Open Thread + (@post.Comments.Count) Open Thread ] } @@ -45,9 +45,6 @@ @code { - - - private static DateTime getTimeFromUnix(double javaTimeStamp) { var dateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); diff --git a/ImageBoardServerApp/Shared/Components/PostForm.razor b/ImageBoardServerApp/Shared/Components/PostForm.razor index bd52605..da4f66e 100644 --- a/ImageBoardServerApp/Shared/Components/PostForm.razor +++ b/ImageBoardServerApp/Shared/Components/PostForm.razor @@ -118,7 +118,7 @@ Username = postUsername, Title = postTitle, Content = postContent, - Interactions = "", + Interactions = 0, CreatedAt = DateTimeOffset.Now.ToUnixTimeMilliseconds(), Board = board.Tag }; From 4b1f234f2a8d28e227c9ff4ed071942df0c0d2f0 Mon Sep 17 00:00:00 2001 From: limited_dev Date: Wed, 25 Jan 2023 23:45:36 +0100 Subject: [PATCH 03/20] continued to work on ThreadPage.razor --- ImageBoardServerApp/Data/CommentData.cs | 3 + .../Data/Repository/PostsRepository.cs | 7 +- ImageBoardServerApp/Pages/Thread.razor | 8 -- ImageBoardServerApp/Pages/ThreadPage.razor | 42 +++++++ .../Shared/Components/Board.razor | 2 +- .../Shared/Components/Comment.razor | 62 ++++++++++ .../Shared/Components/Comment.razor.css | 57 +++++++++ .../Shared/Components/CommentForm.razor | 110 ++++++++++++++++++ .../Shared/Components/CommentForm.razor.css | 23 ++++ .../Shared/Components/Post.razor | 30 +++-- 10 files changed, 327 insertions(+), 17 deletions(-) delete mode 100644 ImageBoardServerApp/Pages/Thread.razor create mode 100644 ImageBoardServerApp/Pages/ThreadPage.razor create mode 100644 ImageBoardServerApp/Shared/Components/Comment.razor create mode 100644 ImageBoardServerApp/Shared/Components/Comment.razor.css create mode 100644 ImageBoardServerApp/Shared/Components/CommentForm.razor create mode 100644 ImageBoardServerApp/Shared/Components/CommentForm.razor.css diff --git a/ImageBoardServerApp/Data/CommentData.cs b/ImageBoardServerApp/Data/CommentData.cs index 84dd57c..bfc5e5d 100644 --- a/ImageBoardServerApp/Data/CommentData.cs +++ b/ImageBoardServerApp/Data/CommentData.cs @@ -37,4 +37,7 @@ public class CommentData [Required] public string Board { get; set; } + [Required] + public long CreatedAt { get; set; } + } \ No newline at end of file diff --git a/ImageBoardServerApp/Data/Repository/PostsRepository.cs b/ImageBoardServerApp/Data/Repository/PostsRepository.cs index d841e89..61138f4 100644 --- a/ImageBoardServerApp/Data/Repository/PostsRepository.cs +++ b/ImageBoardServerApp/Data/Repository/PostsRepository.cs @@ -23,7 +23,12 @@ public static class PostsRepository public static async Task getPostByIdAsync(int postId) { await using var db = new AppDBContext(); - return await db.Posts.FirstOrDefaultAsync(post => post.PostID == postId); + return await db.Posts + .Where(post => post.PostID == postId) + .Include(post => post.Image) + .Include(post => post.Comments) + .FirstOrDefaultAsync(); + //return await db.Posts.FirstOrDefaultAsync(post => post.PostID == postId); } public static async Task createPostAsync(PostData postToCreate) diff --git a/ImageBoardServerApp/Pages/Thread.razor b/ImageBoardServerApp/Pages/Thread.razor deleted file mode 100644 index fdfbaba..0000000 --- a/ImageBoardServerApp/Pages/Thread.razor +++ /dev/null @@ -1,8 +0,0 @@ -@page "/{board}/thread/{threadId}" -

Thread #xx on /x/

- -@RouteData.Values["title"] - -@code { - -} \ No newline at end of file diff --git a/ImageBoardServerApp/Pages/ThreadPage.razor b/ImageBoardServerApp/Pages/ThreadPage.razor new file mode 100644 index 0000000..a2349e7 --- /dev/null +++ b/ImageBoardServerApp/Pages/ThreadPage.razor @@ -0,0 +1,42 @@ +@page "/{boardName}/thread/{threadId}" +@using System.ComponentModel.DataAnnotations +@using ImageBoardServerApp.Data.Repository +@inject NavigationManager NavigationManager + +

Thread #@threadId on /@boardName/

+ +
+ +@foreach (var comment in post.Comments) +{ + +
+} + + +@code { + [Parameter] + [Required] + public string boardName { get; set; } + + [Parameter] + [Required] + public string threadId { get; set; } + + private PostData post; + + protected override async Task OnInitializedAsync() + { + try + { + post = await PostsRepository.getPostByIdAsync(int.Parse(threadId)); + } + catch (FormatException fe) + { + NavigationManager.NavigateTo("/notfound"); + return; + } + if(post == null) + NavigationManager.NavigateTo("/notfound"); + } +} \ No newline at end of file diff --git a/ImageBoardServerApp/Shared/Components/Board.razor b/ImageBoardServerApp/Shared/Components/Board.razor index 3a66240..4ad8acc 100644 --- a/ImageBoardServerApp/Shared/Components/Board.razor +++ b/ImageBoardServerApp/Shared/Components/Board.razor @@ -23,7 +23,7 @@ { @foreach(var post in posts) { - +
} } diff --git a/ImageBoardServerApp/Shared/Components/Comment.razor b/ImageBoardServerApp/Shared/Components/Comment.razor new file mode 100644 index 0000000..2bf523c --- /dev/null +++ b/ImageBoardServerApp/Shared/Components/Comment.razor @@ -0,0 +1,62 @@ +@using System.ComponentModel.DataAnnotations +@using ImageBoardServerApp.Data + +
+ [ + @toggleText + ] + @comment.Username + @getTimeFromUnix(comment.CreatedAt) + No.@comment.CommentID +
+@if (opened) +{ +
+
+ @if (@comment.Image != null) + { + No Image found + } + else + { + [No Image] + } +
+
+ @foreach (string s in @comment.Content.Split("\n")) + { + @s + } +
+
+
+ [ + Report + ] +
+} + + + +@code { + private static DateTime getTimeFromUnix(double javaTimeStamp) + { + var dateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); + dateTime = dateTime.AddMilliseconds( javaTimeStamp ).ToLocalTime(); + return dateTime; + } + + private bool opened = true; + + private string toggleText = "-"; + + private void ToggleOpened() + { + opened = !opened; + toggleText = opened ? "-" : "+"; + } + + [Parameter] + [Required] + public CommentData comment { get; set; } +} \ No newline at end of file diff --git a/ImageBoardServerApp/Shared/Components/Comment.razor.css b/ImageBoardServerApp/Shared/Components/Comment.razor.css new file mode 100644 index 0000000..da7824a --- /dev/null +++ b/ImageBoardServerApp/Shared/Components/Comment.razor.css @@ -0,0 +1,57 @@ +.toggleOpened{ + color: #0a58ca; + text-decoration: none; +} + +.toggleOpened:hover{ + color: #0a58ca; !important; + cursor: pointer; +} + +.title{ + color: #1e5aaf; +} + +.name{ + color: #339305; +} + +.threadHeader{ + text-align: left; +} + +.threadFooter{ + text-align: right; !important; + align-self: end; !important; +} + +.threadContent{ + text-align: left; + display: flex; +} + +.threadImage{ + margin: 6px; + max-width: 500px; + max-height: 500px; + padding: 5px; +} + +.threadImage img{ + max-width:150px; + width: 100%; +} + +.threadImage img:hover{ + transform: scale(3); + /*max-width:500px; + width: 100%; */ +} + +.threadText{ + display: grid; +} + +.threadTextContainer{ + margin: 0; +} \ No newline at end of file diff --git a/ImageBoardServerApp/Shared/Components/CommentForm.razor b/ImageBoardServerApp/Shared/Components/CommentForm.razor new file mode 100644 index 0000000..c654871 --- /dev/null +++ b/ImageBoardServerApp/Shared/Components/CommentForm.razor @@ -0,0 +1,110 @@ +@using System.ComponentModel.DataAnnotations +@using ImageBoardServerApp.Data.Repository + +@inject NavigationManager NavigationManager + +
+ [ + @toggleText + ] +
+@if (opened) +{ +
+ Comment on @post.Title by @post.Username in @post.Board + +
+ OnChange(args, "username")) Class="w-100"/> +
+ +
+ OnChange(args, "Content")) Class="w-100"/> +
+ +
+ +
+ +
+} + + +@code { + + private bool opened = false; + + private string toggleText = "Open Comment Formula"; + + private void ToggleOpened() + { + opened = !opened; + toggleText = opened ? "Close Comment Formula" : "Open Comment Formula"; + } + + [Parameter] + [Required] + public PostData post { get; set; } + + string postUsername = "Anonymous"; + string postContent = ""; + + void OnChange(string value, string name) + { + switch (name) + { + case "username": + postUsername = value; + if (value == "") + { + postUsername = "Anonymous"; + } + break; + case "content": + postContent = value; + break; + default: + Console.WriteLine("not found."); + break; + } + Console.WriteLine($"Smth changed!: {value}"); + } + + private async Task onPostClick() + { + var userToCreate = new UserData + { + Ipv4Address = "192.168.178.101", + Banned = false, + lastActionTimeStamp = DateTime.Now.Millisecond + }; + int userID = await UsersRepository.createUserAsync(userToCreate); + + var commentToCreate = new CommentData() + { + PostID = post.PostID, + UserID = userID, + Content = postContent, + Username = postUsername, + Board = post.Board, + CreatedAt = DateTimeOffset.Now.ToUnixTimeMilliseconds() + /* + * UserID = userID, + Post = post, + Username = postUsername, + Content = postContent, + CreatedAt = DateTimeOffset.Now.ToUnixTimeMilliseconds(), + Board = post.Board + */ + }; + int commentId = await CommentsRepository.createCommentAsync(commentToCreate); + if (commentId == -1) + { + //Open comment unsucessfull + NavigationManager.NavigateTo("/UnSuccessfulPost"); + Console.WriteLine("Shit sucks and did not work."); + return; + } + //comment successfull + Console.WriteLine("Post created"); + } +} \ No newline at end of file diff --git a/ImageBoardServerApp/Shared/Components/CommentForm.razor.css b/ImageBoardServerApp/Shared/Components/CommentForm.razor.css new file mode 100644 index 0000000..fc59e5e --- /dev/null +++ b/ImageBoardServerApp/Shared/Components/CommentForm.razor.css @@ -0,0 +1,23 @@ +.toggleOpened{ + color: #0a58ca; + text-decoration: none; +} + +.toggleOpened:hover{ + color: #0a58ca; !important; + cursor: pointer; +} + +.centered { + text-align: center; + justify-content: center; + align-items: center; +} + +.pd { + padding: 5px; +} + +.marg{ + margin: 2px +} \ No newline at end of file diff --git a/ImageBoardServerApp/Shared/Components/Post.razor b/ImageBoardServerApp/Shared/Components/Post.razor index a2a4d50..2c08a0a 100644 --- a/ImageBoardServerApp/Shared/Components/Post.razor +++ b/ImageBoardServerApp/Shared/Components/Post.razor @@ -2,9 +2,12 @@ @using ImageBoardServerApp.Data
- [ - @toggleText - ] + @if (showOpenThread) + { + [ + @toggleText + ] + } @post.Title @post.Username @getTimeFromUnix(post.CreatedAt) @@ -14,7 +17,6 @@ {
- @if (@post.Image != null) { No Image found @@ -36,9 +38,18 @@ [ Report ] - [ - (@post.Comments.Count) Open Thread - ] + @if (showOpenThread) + { + [ + (@post.Comments.Count) Open Thread + ] + } + else + { + [ + @post.Comments.Count Comments + ] + }
} @@ -65,4 +76,9 @@ [Parameter] [Required] public PostData post { get; set; } + + + [Parameter] + [Required] + public bool showOpenThread { get; set; } } \ No newline at end of file From f09722757aa126a3609b457f4a447aeaf19e9bdb Mon Sep 17 00:00:00 2001 From: limited_dev Date: Thu, 26 Jan 2023 09:07:25 +0100 Subject: [PATCH 04/20] continued to work in comments --- ImageBoardServerApp/Data/CommentData.cs | 2 +- ImageBoardServerApp/Pages/ThreadPage.razor | 2 + .../Shared/Components/CommentForm.razor | 60 +++++++++++++++---- .../Shared/Components/PostForm.razor | 1 - 4 files changed, 52 insertions(+), 13 deletions(-) diff --git a/ImageBoardServerApp/Data/CommentData.cs b/ImageBoardServerApp/Data/CommentData.cs index bfc5e5d..782450c 100644 --- a/ImageBoardServerApp/Data/CommentData.cs +++ b/ImageBoardServerApp/Data/CommentData.cs @@ -21,7 +21,7 @@ public class CommentData public int UserID { get; set; } //[ForeignKey("UserID")] - public UserData User { get; set; } + public virtual UserData User { get; set; } //[ForeignKey("ImageID")] public virtual ImageData Image { get; set; } diff --git a/ImageBoardServerApp/Pages/ThreadPage.razor b/ImageBoardServerApp/Pages/ThreadPage.razor index a2349e7..d6c3dfc 100644 --- a/ImageBoardServerApp/Pages/ThreadPage.razor +++ b/ImageBoardServerApp/Pages/ThreadPage.razor @@ -36,6 +36,8 @@ NavigationManager.NavigateTo("/notfound"); return; } + if(post.Board != boardName) + NavigationManager.NavigateTo("/notfound"); if(post == null) NavigationManager.NavigateTo("/notfound"); } diff --git a/ImageBoardServerApp/Shared/Components/CommentForm.razor b/ImageBoardServerApp/Shared/Components/CommentForm.razor index c654871..bd7fb8e 100644 --- a/ImageBoardServerApp/Shared/Components/CommentForm.razor +++ b/ImageBoardServerApp/Shared/Components/CommentForm.razor @@ -11,7 +11,7 @@ @if (opened) {
- Comment on @post.Title by @post.Username in @post.Board + Comment on @post.Title in /@post.Board/
OnChange(args, "username")) Class="w-100"/> @@ -22,6 +22,7 @@
+
@@ -68,6 +69,18 @@ } Console.WriteLine($"Smth changed!: {value}"); } + + private async Task SingleUpload(InputFileChangeEventArgs e) + { + MemoryStream ms = new MemoryStream(); + await e.File.OpenReadStream().CopyToAsync(ms); + var bytes = ms.ToArray(); + image = bytes; + Console.WriteLine("File has been selected!"); + ms.Close(); + } + + private Byte[] image; private async Task onPostClick() { @@ -78,24 +91,49 @@ lastActionTimeStamp = DateTime.Now.Millisecond }; int userID = await UsersRepository.createUserAsync(userToCreate); - - var commentToCreate = new CommentData() + + bool hasImage = false; + CommentData commentToCreate; + if (hasImage) { - PostID = post.PostID, + var imageToUpload = new ImageData + { + Board = post.Board, + Image = image + }; + int imageID = await ImagesRepository.createImageAsync(imageToUpload); + commentToCreate = new CommentData() + { + PostID = post.PostID, + UserID = userID, + ImageID = imageID, + Content = postContent, + Username = postUsername, + Board = post.Board, + CreatedAt = DateTimeOffset.Now.ToUnixTimeMilliseconds() + /* UserID = userID, - Content = postContent, - Username = postUsername, - Board = post.Board, - CreatedAt = DateTimeOffset.Now.ToUnixTimeMilliseconds() - /* - * UserID = userID, Post = post, Username = postUsername, Content = postContent, CreatedAt = DateTimeOffset.Now.ToUnixTimeMilliseconds(), Board = post.Board */ - }; + }; + } + else + { + commentToCreate = new CommentData() + { + PostID = post.PostID, + UserID = userID, + Content = postContent, + Username = postUsername, + Board = post.Board, + CreatedAt = DateTimeOffset.Now.ToUnixTimeMilliseconds() + }; + } + int commentId = await CommentsRepository.createCommentAsync(commentToCreate); if (commentId == -1) { diff --git a/ImageBoardServerApp/Shared/Components/PostForm.razor b/ImageBoardServerApp/Shared/Components/PostForm.razor index da4f66e..166423b 100644 --- a/ImageBoardServerApp/Shared/Components/PostForm.razor +++ b/ImageBoardServerApp/Shared/Components/PostForm.razor @@ -103,7 +103,6 @@ int userID = await UsersRepository.createUserAsync(userToCreate); //TODO Add check if data is image - var imageToUpload = new ImageData { From 3e7218c6aea94a543c71dff04d0de5cd25c5b493 Mon Sep 17 00:00:00 2001 From: limited_dev Date: Thu, 26 Jan 2023 13:04:55 +0100 Subject: [PATCH 05/20] finished implementing thread view, finished adding comments --- ImageBoardServerApp/Data/CommentData.cs | 7 ++-- .../ImageBoardServerApp.csproj | 5 +++ ImageBoardServerApp/Pages/Index.razor | 26 ++++++++++--- .../Shared/Components/Comment.razor | 39 +++++++++++++++---- .../Shared/Components/Comment.razor.css | 4 ++ .../Components/{ => Forms}/CommentForm.razor | 20 ++++------ .../{ => Forms}/CommentForm.razor.css | 0 .../Components/{ => Forms}/PostForm.razor | 2 +- .../Components/{ => Forms}/PostForm.razor.css | 0 .../Shared/Components/Post.razor | 11 +++++- .../Shared/Components/Post.razor.css | 4 ++ ImageBoardServerApp/_Imports.razor | 3 +- 12 files changed, 87 insertions(+), 34 deletions(-) rename ImageBoardServerApp/Shared/Components/{ => Forms}/CommentForm.razor (90%) rename ImageBoardServerApp/Shared/Components/{ => Forms}/CommentForm.razor.css (100%) rename ImageBoardServerApp/Shared/Components/{ => Forms}/PostForm.razor (97%) rename ImageBoardServerApp/Shared/Components/{ => Forms}/PostForm.razor.css (100%) diff --git a/ImageBoardServerApp/Data/CommentData.cs b/ImageBoardServerApp/Data/CommentData.cs index 782450c..bcaf8a1 100644 --- a/ImageBoardServerApp/Data/CommentData.cs +++ b/ImageBoardServerApp/Data/CommentData.cs @@ -1,5 +1,6 @@ using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; +using System.Diagnostics.CodeAnalysis; using ImageBoardServerApp.Shared.Components; namespace ImageBoardServerApp.Data; @@ -24,9 +25,9 @@ public class CommentData public virtual UserData User { get; set; } //[ForeignKey("ImageID")] - public virtual ImageData Image { get; set; } - - public int ImageID { get; set; } + public virtual ImageData? Image { get; set; } + + public int? ImageID { get; set; } [Required] public string Content { get; set; } diff --git a/ImageBoardServerApp/ImageBoardServerApp.csproj b/ImageBoardServerApp/ImageBoardServerApp.csproj index ef2c7bc..4dda036 100644 --- a/ImageBoardServerApp/ImageBoardServerApp.csproj +++ b/ImageBoardServerApp/ImageBoardServerApp.csproj @@ -22,4 +22,9 @@ + + + + + diff --git a/ImageBoardServerApp/Pages/Index.razor b/ImageBoardServerApp/Pages/Index.razor index 292616f..e3fd3ad 100644 --- a/ImageBoardServerApp/Pages/Index.razor +++ b/ImageBoardServerApp/Pages/Index.razor @@ -1,9 +1,23 @@ @page "/" +@using ImageBoardServerApp.Data.Repository

BulletBoard

-
- This is a simple Imageboard made in Razor. -
-
- -
\ No newline at end of file +This is a simple Imageboard made in Razor. +
+We're currently hosting @amountOfPosts Threads with @amountOfComments Comments from @amountOfUsers Users. + +@code{ + private int amountOfPosts = -1; + private int amountOfComments = -1; + private int amountOfUsers = -1; + protected override async Task OnInitializedAsync() + { + var posts = await PostsRepository.getPostsAsync(); + amountOfPosts = posts.Count; + var comments = await CommentsRepository.getCommentsAsync(); + amountOfComments = comments.Count; + var users = await UsersRepository.getUsersAsync(); + amountOfUsers = users.Count; + } + +} \ No newline at end of file diff --git a/ImageBoardServerApp/Shared/Components/Comment.razor b/ImageBoardServerApp/Shared/Components/Comment.razor index 2bf523c..8b54619 100644 --- a/ImageBoardServerApp/Shared/Components/Comment.razor +++ b/ImageBoardServerApp/Shared/Components/Comment.razor @@ -1,5 +1,6 @@ @using System.ComponentModel.DataAnnotations @using ImageBoardServerApp.Data +@using ImageBoardServerApp.Data.Repository
[ @@ -13,25 +14,28 @@ {
- @if (@comment.Image != null) + @if (image != null) { - No Image found - } - else - { - [No Image] + No Image found }
@foreach (string s in @comment.Content.Split("\n")) { - @s + @if (s.StartsWith(">")) + { + @s + } + else + { + @s + } }
[ - Report + Report ]
} @@ -45,6 +49,25 @@ dateTime = dateTime.AddMilliseconds( javaTimeStamp ).ToLocalTime(); return dateTime; } + + private ImageData image; + + protected override async Task OnInitializedAsync() + { + int i; + try + { + i = (int)comment.ImageID; + } + catch (InvalidOperationException ioe) + { + i = -1; + } + if (i != null) + { + image = await ImagesRepository.getImageByIdAsync(i); + } + } private bool opened = true; diff --git a/ImageBoardServerApp/Shared/Components/Comment.razor.css b/ImageBoardServerApp/Shared/Components/Comment.razor.css index da7824a..b78f7fa 100644 --- a/ImageBoardServerApp/Shared/Components/Comment.razor.css +++ b/ImageBoardServerApp/Shared/Components/Comment.razor.css @@ -30,6 +30,10 @@ display: flex; } +.greenText{ + color: #3caf03; +} + .threadImage{ margin: 6px; max-width: 500px; diff --git a/ImageBoardServerApp/Shared/Components/CommentForm.razor b/ImageBoardServerApp/Shared/Components/Forms/CommentForm.razor similarity index 90% rename from ImageBoardServerApp/Shared/Components/CommentForm.razor rename to ImageBoardServerApp/Shared/Components/Forms/CommentForm.razor index bd7fb8e..1cf580a 100644 --- a/ImageBoardServerApp/Shared/Components/CommentForm.razor +++ b/ImageBoardServerApp/Shared/Components/Forms/CommentForm.razor @@ -1,7 +1,7 @@ @using System.ComponentModel.DataAnnotations @using ImageBoardServerApp.Data.Repository -@inject NavigationManager NavigationManager +@inject NavigationManager navigationManager
[ @@ -80,7 +80,7 @@ ms.Close(); } - private Byte[] image; + private Byte[] image = null; private async Task onPostClick() { @@ -92,7 +92,7 @@ }; int userID = await UsersRepository.createUserAsync(userToCreate); - bool hasImage = false; + bool hasImage = image != null; CommentData commentToCreate; if (hasImage) { @@ -111,14 +111,6 @@ Username = postUsername, Board = post.Board, CreatedAt = DateTimeOffset.Now.ToUnixTimeMilliseconds() - /* - UserID = userID, - Post = post, - Username = postUsername, - Content = postContent, - CreatedAt = DateTimeOffset.Now.ToUnixTimeMilliseconds(), - Board = post.Board - */ }; } else @@ -133,16 +125,18 @@ CreatedAt = DateTimeOffset.Now.ToUnixTimeMilliseconds() }; } - + int commentId = await CommentsRepository.createCommentAsync(commentToCreate); if (commentId == -1) { //Open comment unsucessfull - NavigationManager.NavigateTo("/UnSuccessfulPost"); + navigationManager.NavigateTo("/UnSuccessfulPost"); Console.WriteLine("Shit sucks and did not work."); return; } //comment successfull Console.WriteLine("Post created"); + navigationManager.NavigateTo($"/{post.Board}/thread/{post.PostID}", true, true); + opened = false; } } \ No newline at end of file diff --git a/ImageBoardServerApp/Shared/Components/CommentForm.razor.css b/ImageBoardServerApp/Shared/Components/Forms/CommentForm.razor.css similarity index 100% rename from ImageBoardServerApp/Shared/Components/CommentForm.razor.css rename to ImageBoardServerApp/Shared/Components/Forms/CommentForm.razor.css diff --git a/ImageBoardServerApp/Shared/Components/PostForm.razor b/ImageBoardServerApp/Shared/Components/Forms/PostForm.razor similarity index 97% rename from ImageBoardServerApp/Shared/Components/PostForm.razor rename to ImageBoardServerApp/Shared/Components/Forms/PostForm.razor index 166423b..ff8af17 100644 --- a/ImageBoardServerApp/Shared/Components/PostForm.razor +++ b/ImageBoardServerApp/Shared/Components/Forms/PostForm.razor @@ -125,7 +125,7 @@ if (postId != -1) { //Open post successfull - NavigationManager.NavigateTo("/SuccessfulPost"); + NavigationManager.NavigateTo($"/{board.Tag}/thread/{postId}", true, true); Console.WriteLine("Post created"); } else diff --git a/ImageBoardServerApp/Shared/Components/PostForm.razor.css b/ImageBoardServerApp/Shared/Components/Forms/PostForm.razor.css similarity index 100% rename from ImageBoardServerApp/Shared/Components/PostForm.razor.css rename to ImageBoardServerApp/Shared/Components/Forms/PostForm.razor.css diff --git a/ImageBoardServerApp/Shared/Components/Post.razor b/ImageBoardServerApp/Shared/Components/Post.razor index 2c08a0a..767c087 100644 --- a/ImageBoardServerApp/Shared/Components/Post.razor +++ b/ImageBoardServerApp/Shared/Components/Post.razor @@ -29,7 +29,14 @@
@foreach (string s in @post.Content.Split("\n")) { - @s + @if (s.StartsWith(">")) + { + @s + } + else + { + @s + } }
@@ -41,7 +48,7 @@ @if (showOpenThread) { [ - (@post.Comments.Count) Open Thread + (@post.Comments.Count) Open Thread ] } else diff --git a/ImageBoardServerApp/Shared/Components/Post.razor.css b/ImageBoardServerApp/Shared/Components/Post.razor.css index da7824a..b78f7fa 100644 --- a/ImageBoardServerApp/Shared/Components/Post.razor.css +++ b/ImageBoardServerApp/Shared/Components/Post.razor.css @@ -30,6 +30,10 @@ display: flex; } +.greenText{ + color: #3caf03; +} + .threadImage{ margin: 6px; max-width: 500px; diff --git a/ImageBoardServerApp/_Imports.razor b/ImageBoardServerApp/_Imports.razor index a2e21d4..5b43e85 100644 --- a/ImageBoardServerApp/_Imports.razor +++ b/ImageBoardServerApp/_Imports.razor @@ -13,4 +13,5 @@ @using ImageBoardServerApp @using ImageBoardServerApp.Shared @using ImageBoardServerApp.Shared.Components -@using ImageBoardServerApp.Data \ No newline at end of file +@using ImageBoardServerApp.Shared.Components.Forms +@using ImageBoardServerApp.Data From f57338ab51c27abd1a47b25947988efcb28db2d0 Mon Sep 17 00:00:00 2001 From: limited_dev Date: Thu, 26 Jan 2023 13:12:37 +0100 Subject: [PATCH 06/20] update Rules.razor --- ImageBoardServerApp/Pages/Rules.razor | 1 + 1 file changed, 1 insertion(+) diff --git a/ImageBoardServerApp/Pages/Rules.razor b/ImageBoardServerApp/Pages/Rules.razor index 723a969..78dcb22 100644 --- a/ImageBoardServerApp/Pages/Rules.razor +++ b/ImageBoardServerApp/Pages/Rules.razor @@ -3,6 +3,7 @@

Rules

    +
  • You may not post stuff that would get us into trouble with the feds.
  • You may not post NSFW / NSFL on this platform.
  • You may not post political content on this platform.
  • You may not plan or participate in "raids" on this platform.
  • From bdb2d0a0b5c1277c3fadc1fbcecb06640b630043 Mon Sep 17 00:00:00 2001 From: limited_dev Date: Fri, 27 Jan 2023 21:15:50 +0100 Subject: [PATCH 07/20] added temp db files to gitignore, added link to login page to index, changed around the comment form, comments and posts --- .gitignore | 2 ++ ImageBoardServerApp/Pages/Index.razor | 7 ++++++ ImageBoardServerApp/Pages/Index.razor.css | 14 +++++++++++ .../Shared/Components/Comment.razor.css | 6 ++--- .../Shared/Components/Forms/CommentForm.razor | 25 ++++++++++++++----- .../Components/Forms/CommentForm.razor.css | 17 +++++++++++++ .../Shared/Components/Post.razor.css | 6 ++--- 7 files changed, 65 insertions(+), 12 deletions(-) create mode 100644 ImageBoardServerApp/Pages/Index.razor.css diff --git a/.gitignore b/.gitignore index fe4fcde..3d88ff4 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,8 @@ ImageBoardServerApp/bin/ ImageBoardServerApp/obj/ *.db +*.db-shm +*.db-wal Migrations/ ## Ignore Visual Studio temporary files, build results, and diff --git a/ImageBoardServerApp/Pages/Index.razor b/ImageBoardServerApp/Pages/Index.razor index e3fd3ad..d3d948d 100644 --- a/ImageBoardServerApp/Pages/Index.razor +++ b/ImageBoardServerApp/Pages/Index.razor @@ -5,6 +5,13 @@ This is a simple Imageboard made in Razor.
    We're currently hosting @amountOfPosts Threads with @amountOfComments Comments from @amountOfUsers Users. +
    +
    + If you are a member of the server team please log in + + [here] + . +
    @code{ private int amountOfPosts = -1; diff --git a/ImageBoardServerApp/Pages/Index.razor.css b/ImageBoardServerApp/Pages/Index.razor.css new file mode 100644 index 0000000..37a27d3 --- /dev/null +++ b/ImageBoardServerApp/Pages/Index.razor.css @@ -0,0 +1,14 @@ +.loginlink{ + display: block; + font-size: 10px; + color: #c6cfd0; +} + +.imblue{ + color: #0a53be; + cursor: pointer; +} + +.loginwrapper{ + display: flex; +} \ No newline at end of file diff --git a/ImageBoardServerApp/Shared/Components/Comment.razor.css b/ImageBoardServerApp/Shared/Components/Comment.razor.css index b78f7fa..b69acda 100644 --- a/ImageBoardServerApp/Shared/Components/Comment.razor.css +++ b/ImageBoardServerApp/Shared/Components/Comment.razor.css @@ -47,9 +47,9 @@ } .threadImage img:hover{ - transform: scale(3); - /*max-width:500px; - width: 100%; */ + /*transform: scale(3);*/ + max-width:500px; + width: 100%; } .threadText{ diff --git a/ImageBoardServerApp/Shared/Components/Forms/CommentForm.razor b/ImageBoardServerApp/Shared/Components/Forms/CommentForm.razor index 1cf580a..f729ea6 100644 --- a/ImageBoardServerApp/Shared/Components/Forms/CommentForm.razor +++ b/ImageBoardServerApp/Shared/Components/Forms/CommentForm.razor @@ -13,16 +13,29 @@
    Comment on @post.Title in /@post.Board/ -
    - OnChange(args, "username")) Class="w-100"/> -
    +
    +
    +
    + @if (image != null) + { + No Image + } +
    + +
    + +
    +
    + OnChange(args, "username")) Class="w-100"/> +
    -
    - OnChange(args, "Content")) Class="w-100"/> +
    + OnChange(args, "Content")) Class="w-100"/> +
    +
    -
    diff --git a/ImageBoardServerApp/Shared/Components/Forms/CommentForm.razor.css b/ImageBoardServerApp/Shared/Components/Forms/CommentForm.razor.css index fc59e5e..15998e9 100644 --- a/ImageBoardServerApp/Shared/Components/Forms/CommentForm.razor.css +++ b/ImageBoardServerApp/Shared/Components/Forms/CommentForm.razor.css @@ -20,4 +20,21 @@ .marg{ margin: 2px +} + +.formImage{ + margin: 6px; + max-width: 200px; + max-height: 200px; + padding: 5px; +} + +.formImage img{ + max-width:150px; + width: 100%; +} + +.formContent{ + text-align: left; + display: flex; } \ No newline at end of file diff --git a/ImageBoardServerApp/Shared/Components/Post.razor.css b/ImageBoardServerApp/Shared/Components/Post.razor.css index b78f7fa..b69acda 100644 --- a/ImageBoardServerApp/Shared/Components/Post.razor.css +++ b/ImageBoardServerApp/Shared/Components/Post.razor.css @@ -47,9 +47,9 @@ } .threadImage img:hover{ - transform: scale(3); - /*max-width:500px; - width: 100%; */ + /*transform: scale(3);*/ + max-width:500px; + width: 100%; } .threadText{ From c04b9ac6f2e34aa608daa731959d1c64e58240b6 Mon Sep 17 00:00:00 2001 From: limited_dev Date: Fri, 27 Jan 2023 22:09:16 +0100 Subject: [PATCH 08/20] Added little note to post / comment form, added some other stuff, which I forgot --- .../Data/Repository/UsersRepository.cs | 6 +++ .../ImageBoardServerApp.csproj | 2 + ImageBoardServerApp/Pages/Rules.razor.css | 1 + .../Shared/Components/Forms/CommentForm.razor | 35 +++++++++---- .../Shared/Components/Forms/FormInfo.razor | 5 ++ .../Components/Forms/FormInfo.razor.css | 8 +++ .../Shared/Components/Forms/PostForm.razor | 51 +++++++++++++++---- .../Components/Forms/PostForm.razor.css | 17 +++++++ 8 files changed, 105 insertions(+), 20 deletions(-) create mode 100644 ImageBoardServerApp/Shared/Components/Forms/FormInfo.razor create mode 100644 ImageBoardServerApp/Shared/Components/Forms/FormInfo.razor.css diff --git a/ImageBoardServerApp/Data/Repository/UsersRepository.cs b/ImageBoardServerApp/Data/Repository/UsersRepository.cs index 30e8267..bcd695d 100644 --- a/ImageBoardServerApp/Data/Repository/UsersRepository.cs +++ b/ImageBoardServerApp/Data/Repository/UsersRepository.cs @@ -15,6 +15,12 @@ public static class UsersRepository await using var db = new AppDBContext(); return await db.Users.FirstOrDefaultAsync(user => user.UserID == userId); } + + public static async Task getUserByIPAsync(string userIp) + { + await using var db = new AppDBContext(); + return await db.Users.FirstOrDefaultAsync(user => user.Ipv4Address == userIp); + } public static async Task createUserAsync(UserData userToCreate) { diff --git a/ImageBoardServerApp/ImageBoardServerApp.csproj b/ImageBoardServerApp/ImageBoardServerApp.csproj index 4dda036..8d9c9c3 100644 --- a/ImageBoardServerApp/ImageBoardServerApp.csproj +++ b/ImageBoardServerApp/ImageBoardServerApp.csproj @@ -19,6 +19,8 @@ + + diff --git a/ImageBoardServerApp/Pages/Rules.razor.css b/ImageBoardServerApp/Pages/Rules.razor.css index c37ac42..49f002f 100644 --- a/ImageBoardServerApp/Pages/Rules.razor.css +++ b/ImageBoardServerApp/Pages/Rules.razor.css @@ -3,6 +3,7 @@ font-weight: 1000; /*the text have to be in a biger Pixel number I do not know how to do it */ } + .rules_list{ text-align:left; display:block; diff --git a/ImageBoardServerApp/Shared/Components/Forms/CommentForm.razor b/ImageBoardServerApp/Shared/Components/Forms/CommentForm.razor index f729ea6..e912a95 100644 --- a/ImageBoardServerApp/Shared/Components/Forms/CommentForm.razor +++ b/ImageBoardServerApp/Shared/Components/Forms/CommentForm.razor @@ -12,17 +12,19 @@ {
    Comment on @post.Title in /@post.Board/ + +
    -
    - @if (image != null) - { - No Image - } -
    - -
    +
    + @if (image != null) + { + No Image + } +
    + +
    @@ -36,6 +38,7 @@
    +
    @@ -103,7 +106,21 @@ Banned = false, lastActionTimeStamp = DateTime.Now.Millisecond }; - int userID = await UsersRepository.createUserAsync(userToCreate); + + int userID; + UserData foundusr = await UsersRepository.getUserByIPAsync(userToCreate.Ipv4Address); + if (foundusr == null) + { + userID = await UsersRepository.createUserAsync(userToCreate); + } + else + { + userID = foundusr.UserID; + if(foundusr.Banned) + return; + foundusr.lastActionTimeStamp = DateTime.Now.Millisecond; + await UsersRepository.updateUserAsync(foundusr); + } bool hasImage = image != null; CommentData commentToCreate; diff --git a/ImageBoardServerApp/Shared/Components/Forms/FormInfo.razor b/ImageBoardServerApp/Shared/Components/Forms/FormInfo.razor new file mode 100644 index 0000000..4696826 --- /dev/null +++ b/ImageBoardServerApp/Shared/Components/Forms/FormInfo.razor @@ -0,0 +1,5 @@ +
      +
    • The max. image size is 1MB.
    • +
    • Supported file types are: jpeg, png & gif
    • +
    • Read the rules before posting
    • +
    \ No newline at end of file diff --git a/ImageBoardServerApp/Shared/Components/Forms/FormInfo.razor.css b/ImageBoardServerApp/Shared/Components/Forms/FormInfo.razor.css new file mode 100644 index 0000000..f8b1df7 --- /dev/null +++ b/ImageBoardServerApp/Shared/Components/Forms/FormInfo.razor.css @@ -0,0 +1,8 @@ +.notesInfo{ + font-weight: 60; + display: block; + text-align: center; + font-size: 10px; + color: #c6cfd0; + /*the text sice can stay like it is, if you do not want to change it.*/ +} \ No newline at end of file diff --git a/ImageBoardServerApp/Shared/Components/Forms/PostForm.razor b/ImageBoardServerApp/Shared/Components/Forms/PostForm.razor index ff8af17..261a567 100644 --- a/ImageBoardServerApp/Shared/Components/Forms/PostForm.razor +++ b/ImageBoardServerApp/Shared/Components/Forms/PostForm.razor @@ -19,20 +19,35 @@
    Post to /@board.Tag/ - @board.Topic -
    - OnChange(args, "username")) Class="w-100"/> -
    +
    +
    +
    + @if (image != null) + { + No Image + } +
    + +
    -
    - OnChange(args, "title")) Class="w-100"/> -
    - -
    - OnChange(args, "Content")) Class="w-100"/> +
    +
    + OnChange(args, "username")) Class="w-100"/> +
    + +
    + OnChange(args, "title")) Class="w-100"/> +
    + +
    + OnChange(args, "Content")) Class="w-100"/> +
    +
    +
    - +
    @@ -100,7 +115,21 @@ Banned = false, lastActionTimeStamp = DateTime.Now.Millisecond }; - int userID = await UsersRepository.createUserAsync(userToCreate); + + int userID; + UserData foundusr = await UsersRepository.getUserByIPAsync(userToCreate.Ipv4Address); + if (foundusr == null) + { + userID = await UsersRepository.createUserAsync(userToCreate); + } + else + { + userID = foundusr.UserID; + if(foundusr.Banned) + return; + foundusr.lastActionTimeStamp = DateTime.Now.Millisecond; + await UsersRepository.updateUserAsync(foundusr); + } //TODO Add check if data is image diff --git a/ImageBoardServerApp/Shared/Components/Forms/PostForm.razor.css b/ImageBoardServerApp/Shared/Components/Forms/PostForm.razor.css index fc59e5e..15998e9 100644 --- a/ImageBoardServerApp/Shared/Components/Forms/PostForm.razor.css +++ b/ImageBoardServerApp/Shared/Components/Forms/PostForm.razor.css @@ -20,4 +20,21 @@ .marg{ margin: 2px +} + +.formImage{ + margin: 6px; + max-width: 200px; + max-height: 200px; + padding: 5px; +} + +.formImage img{ + max-width:150px; + width: 100%; +} + +.formContent{ + text-align: left; + display: flex; } \ No newline at end of file From 01fe86113dd23165fb7c14cfa51c24aff10f68d8 Mon Sep 17 00:00:00 2001 From: limited_dev Date: Fri, 27 Jan 2023 23:50:12 +0100 Subject: [PATCH 09/20] progress commit --- .../Shared/Components/Forms/PostForm.razor | 29 +++++++++++++++---- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/ImageBoardServerApp/Shared/Components/Forms/PostForm.razor b/ImageBoardServerApp/Shared/Components/Forms/PostForm.razor index 261a567..39cfc03 100644 --- a/ImageBoardServerApp/Shared/Components/Forms/PostForm.razor +++ b/ImageBoardServerApp/Shared/Components/Forms/PostForm.razor @@ -8,6 +8,7 @@ @using ImageBoardServerApp.Data.Repository @inject NavigationManager NavigationManager +@inject IWebHostEnvironment env
    [ @@ -23,9 +24,9 @@
    @if (image != null) - { - No Image - } + { + No Image + }
    @@ -95,14 +96,20 @@ Console.WriteLine($"Smth changed!: {value}"); } + private IBrowserFile selectedFile; + + private async Task SingleUpload(InputFileChangeEventArgs e) { + /* MemoryStream ms = new MemoryStream(); await e.File.OpenReadStream().CopyToAsync(ms); var bytes = ms.ToArray(); image = bytes; Console.WriteLine("File has been selected!"); - ms.Close(); + ms.Close(); */ + selectedFile = e.GetMultipleFiles()[0]; + this.StateHasChanged(); } private Byte[] image; @@ -132,7 +139,19 @@ } //TODO Add check if data is image - + + if (selectedFile == null) + { + return; + } + + Stream stream = selectedFile.OpenReadStream(maxAllowedSize: 512000 * 4); // max 2MB + var path = $"{env.WebRootPath}\\dynamic\\op\\{selectedFile.Name}"; + FileStream fs = File.Create(path); + await stream.CopyToAsync(fs); + stream.Close(); + fs.Close(); + var imageToUpload = new ImageData { Board = board.Tag, From 9c6d6731d8b676b465369f28900c8cc7b8f72e19 Mon Sep 17 00:00:00 2001 From: limited_dev Date: Wed, 1 Feb 2023 14:18:36 +0100 Subject: [PATCH 10/20] feat: finished converting image uploads to on disk --- .gitignore | 1 + ImageBoardServerApp/App.razor | 2 +- ImageBoardServerApp/Data/ImageData.cs | 2 +- .../ImageBoardServerApp.csproj | 15 +++--- .../Shared/Components/Comment.razor | 2 +- .../Shared/Components/Forms/CommentForm.razor | 43 ++++++++---------- .../Shared/Components/Forms/FormInfo.razor | 2 +- .../Shared/Components/Forms/PostForm.razor | 25 ++-------- .../Shared/Components/Post.razor | 2 +- .../wwwroot/{static => img/static/err}/1.jpeg | Bin 10 files changed, 38 insertions(+), 56 deletions(-) rename ImageBoardServerApp/wwwroot/{static => img/static/err}/1.jpeg (100%) diff --git a/.gitignore b/.gitignore index 3d88ff4..e6a2ded 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ .idea/ ImageBoardServerApp/bin/ ImageBoardServerApp/obj/ +ImageBoardServerApp/wwwroot/img/dynamic *.db *.db-shm *.db-wal diff --git a/ImageBoardServerApp/App.razor b/ImageBoardServerApp/App.razor index 6e090be..a72e02f 100644 --- a/ImageBoardServerApp/App.razor +++ b/ImageBoardServerApp/App.razor @@ -8,7 +8,7 @@

    404

    - noimageFound + noimageFound

    Sorry, nothing found. Please go back to the main page. Or watch the tree and find the hidden Cat..

    diff --git a/ImageBoardServerApp/Data/ImageData.cs b/ImageBoardServerApp/Data/ImageData.cs index 590ae88..bdd3eba 100644 --- a/ImageBoardServerApp/Data/ImageData.cs +++ b/ImageBoardServerApp/Data/ImageData.cs @@ -15,7 +15,7 @@ public class ImageData public string Board { get; set; } [Required] - public Byte[] Image { get; set; } + public string ImageLocation { get; set; } public PostData Post { get; set; } diff --git a/ImageBoardServerApp/ImageBoardServerApp.csproj b/ImageBoardServerApp/ImageBoardServerApp.csproj index 8d9c9c3..7866871 100644 --- a/ImageBoardServerApp/ImageBoardServerApp.csproj +++ b/ImageBoardServerApp/ImageBoardServerApp.csproj @@ -18,15 +18,18 @@ - - - - - - + + + + + + + + + diff --git a/ImageBoardServerApp/Shared/Components/Comment.razor b/ImageBoardServerApp/Shared/Components/Comment.razor index 8b54619..ec71b35 100644 --- a/ImageBoardServerApp/Shared/Components/Comment.razor +++ b/ImageBoardServerApp/Shared/Components/Comment.razor @@ -16,7 +16,7 @@
    @if (image != null) { - No Image found + No Image found }
    diff --git a/ImageBoardServerApp/Shared/Components/Forms/CommentForm.razor b/ImageBoardServerApp/Shared/Components/Forms/CommentForm.razor index e912a95..1733a25 100644 --- a/ImageBoardServerApp/Shared/Components/Forms/CommentForm.razor +++ b/ImageBoardServerApp/Shared/Components/Forms/CommentForm.razor @@ -2,6 +2,7 @@ @using ImageBoardServerApp.Data.Repository @inject NavigationManager navigationManager +@inject IWebHostEnvironment env
    [ @@ -13,19 +14,7 @@
    Comment on @post.Title in /@post.Board/ - -
    -
    -
    - @if (image != null) - { - No Image - } -
    - -
    -
    OnChange(args, "username")) Class="w-100"/> @@ -39,9 +28,9 @@
    - + +
    -
    } @@ -86,18 +75,14 @@ Console.WriteLine($"Smth changed!: {value}"); } + private IBrowserFile selectedFile; + private async Task SingleUpload(InputFileChangeEventArgs e) { - MemoryStream ms = new MemoryStream(); - await e.File.OpenReadStream().CopyToAsync(ms); - var bytes = ms.ToArray(); - image = bytes; - Console.WriteLine("File has been selected!"); - ms.Close(); + selectedFile = e.GetMultipleFiles()[0]; + this.StateHasChanged(); } - private Byte[] image = null; - private async Task onPostClick() { var userToCreate = new UserData @@ -122,14 +107,24 @@ await UsersRepository.updateUserAsync(foundusr); } - bool hasImage = image != null; + bool hasImage = selectedFile != null; + CommentData commentToCreate; if (hasImage) { + Stream stream = selectedFile.OpenReadStream(maxAllowedSize: 512000 * 4); // max 2MB + var file = Path.GetRandomFileName() + "." + selectedFile.Name.Split(".")[selectedFile.Name.Split(".").Length - 1]; + var path = $"{env.WebRootPath}\\img\\dynamic\\comment\\{@post.Board}\\{file}"; + FileStream fs = File.Create(path); + await stream.CopyToAsync(fs); + stream.Close(); + fs.Close(); + + var imageToUpload = new ImageData { Board = post.Board, - Image = image + ImageLocation = $"\\img\\dynamic\\comment\\{post.Board}\\{file}" }; int imageID = await ImagesRepository.createImageAsync(imageToUpload); commentToCreate = new CommentData() diff --git a/ImageBoardServerApp/Shared/Components/Forms/FormInfo.razor b/ImageBoardServerApp/Shared/Components/Forms/FormInfo.razor index 4696826..0db3688 100644 --- a/ImageBoardServerApp/Shared/Components/Forms/FormInfo.razor +++ b/ImageBoardServerApp/Shared/Components/Forms/FormInfo.razor @@ -1,5 +1,5 @@ 
      -
    • The max. image size is 1MB.
    • +
    • The max. image size is 2MiB.
    • Supported file types are: jpeg, png & gif
    • Read the rules before posting
    \ No newline at end of file diff --git a/ImageBoardServerApp/Shared/Components/Forms/PostForm.razor b/ImageBoardServerApp/Shared/Components/Forms/PostForm.razor index 39cfc03..3e42dd2 100644 --- a/ImageBoardServerApp/Shared/Components/Forms/PostForm.razor +++ b/ImageBoardServerApp/Shared/Components/Forms/PostForm.razor @@ -21,16 +21,6 @@ Post to /@board.Tag/ - @board.Topic
    -
    -
    - @if (image != null) - { - No Image - } -
    - -
    -
    OnChange(args, "username")) Class="w-100"/> @@ -49,6 +39,7 @@
    +
    @@ -101,19 +92,10 @@ private async Task SingleUpload(InputFileChangeEventArgs e) { - /* - MemoryStream ms = new MemoryStream(); - await e.File.OpenReadStream().CopyToAsync(ms); - var bytes = ms.ToArray(); - image = bytes; - Console.WriteLine("File has been selected!"); - ms.Close(); */ selectedFile = e.GetMultipleFiles()[0]; this.StateHasChanged(); } - private Byte[] image; - private async Task onPostClick() { var userToCreate = new UserData @@ -146,7 +128,8 @@ } Stream stream = selectedFile.OpenReadStream(maxAllowedSize: 512000 * 4); // max 2MB - var path = $"{env.WebRootPath}\\dynamic\\op\\{selectedFile.Name}"; + var file = Path.GetRandomFileName() + "." + selectedFile.Name.Split(".")[selectedFile.Name.Split(".").Length - 1]; + var path = $"{env.WebRootPath}\\img\\dynamic\\op\\{board.Tag}\\{file}"; FileStream fs = File.Create(path); await stream.CopyToAsync(fs); stream.Close(); @@ -155,7 +138,7 @@ var imageToUpload = new ImageData { Board = board.Tag, - Image = image + ImageLocation = $"\\img\\dynamic\\op\\{board.Tag}\\{file}" }; int imageID = await ImagesRepository.createImageAsync(imageToUpload); var postToPost = new PostData diff --git a/ImageBoardServerApp/Shared/Components/Post.razor b/ImageBoardServerApp/Shared/Components/Post.razor index 767c087..c7dbf57 100644 --- a/ImageBoardServerApp/Shared/Components/Post.razor +++ b/ImageBoardServerApp/Shared/Components/Post.razor @@ -19,7 +19,7 @@
    @if (@post.Image != null) { - No Image found + No Image found } else { diff --git a/ImageBoardServerApp/wwwroot/static/1.jpeg b/ImageBoardServerApp/wwwroot/img/static/err/1.jpeg similarity index 100% rename from ImageBoardServerApp/wwwroot/static/1.jpeg rename to ImageBoardServerApp/wwwroot/img/static/err/1.jpeg From 7c0cef6f6539c18a1f5aae2d3242a891c400b62f Mon Sep 17 00:00:00 2001 From: limited_dev Date: Wed, 1 Feb 2023 21:49:02 +0100 Subject: [PATCH 11/20] feat: added docker stuff, started working on login system --- .dockerignore | 25 ++++++++ ImageBoardServerApp/App.razor | 34 ++++++----- .../Auth/CustomAuthenticationStateProvider.cs | 60 +++++++++++++++++++ ImageBoardServerApp/Auth/UserSession.cs | 7 +++ ImageBoardServerApp/Data/AccountData.cs | 21 ------- ImageBoardServerApp/Data/AppDBContext.cs | 1 - .../Data/Repository/AccountsRepository.cs | 53 ---------------- .../Data/Repository/UsersRepository.cs | 4 +- ImageBoardServerApp/Data/UserData.cs | 19 ++++-- ImageBoardServerApp/Dockerfile | 20 +++++++ ImageBoardServerApp/Pages/Login.razor | 55 +++++++++-------- ImageBoardServerApp/Program.cs | 11 ++-- .../Shared/Components/Forms/CommentForm.razor | 12 ++-- .../Shared/Components/Forms/PostForm.razor | 14 +++-- ImageBoardServerApp/Shared/MainLayout.razor | 23 ++++++- 15 files changed, 216 insertions(+), 143 deletions(-) create mode 100644 .dockerignore create mode 100644 ImageBoardServerApp/Auth/CustomAuthenticationStateProvider.cs create mode 100644 ImageBoardServerApp/Auth/UserSession.cs delete mode 100644 ImageBoardServerApp/Data/AccountData.cs delete mode 100644 ImageBoardServerApp/Data/Repository/AccountsRepository.cs create mode 100644 ImageBoardServerApp/Dockerfile diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..af50df1 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,25 @@ +**/.dockerignore +**/.env +**/.git +**/.gitignore +**/.project +**/.settings +**/.toolstarget +**/.vs +**/.vscode +**/.idea +**/*.*proj.user +**/*.dbmdl +**/*.jfm +**/azds.yaml +**/bin +**/charts +**/docker-compose* +**/Dockerfile* +**/node_modules +**/npm-debug.log +**/obj +**/secrets.dev.yaml +**/values.dev.yaml +LICENSE +README.md \ No newline at end of file diff --git a/ImageBoardServerApp/App.razor b/ImageBoardServerApp/App.razor index a72e02f..f3b63cd 100644 --- a/ImageBoardServerApp/App.razor +++ b/ImageBoardServerApp/App.razor @@ -1,16 +1,18 @@ - - - - - - - Not found - -

    404

    -
    - noimageFound -

    Sorry, nothing found. Please go back to the main page. Or watch the tree and find the hidden Cat..

    -
    -
    -
    -
    \ No newline at end of file + + + + + + + + Not found + +

    404

    +
    + noimageFound +

    Sorry, nothing found. Please go back to the main page. Or watch the tree and find the hidden Cat..

    +
    +
    +
    +
    +
    \ No newline at end of file diff --git a/ImageBoardServerApp/Auth/CustomAuthenticationStateProvider.cs b/ImageBoardServerApp/Auth/CustomAuthenticationStateProvider.cs new file mode 100644 index 0000000..d1bb214 --- /dev/null +++ b/ImageBoardServerApp/Auth/CustomAuthenticationStateProvider.cs @@ -0,0 +1,60 @@ +using System.Security.Claims; +using ImageBoardServerApp.Data; +using Microsoft.AspNetCore.Components.Authorization; +using Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage; + +namespace ImageBoardServerApp.Auth; + +public class CustomAuthenticationStateProvider : AuthenticationStateProvider +{ + private readonly ProtectedSessionStorage _sessionStorage; + private ClaimsPrincipal _anonymous = new ClaimsPrincipal(new ClaimsIdentity()); + + public CustomAuthenticationStateProvider(ProtectedSessionStorage sessionStorage) + { + _sessionStorage = sessionStorage; + } + + public override async Task GetAuthenticationStateAsync() + { + try + { + var userSessionStorageResult = await _sessionStorage.GetAsync("UserSession"); + var userSession = userSessionStorageResult.Success ? userSessionStorageResult.Value : null; + if (userSession == null) + return await Task.FromResult(new AuthenticationState(_anonymous)); + var claimsPrincipal = new ClaimsPrincipal(new ClaimsIdentity(new List + { + new Claim(ClaimTypes.Email, userSession.Email), + new Claim(ClaimTypes.Role, userSession.Role) + }, "CustomAuth")); + return await Task.FromResult(new AuthenticationState(claimsPrincipal)); + } + catch + { + return await Task.FromResult(new AuthenticationState(_anonymous)); + } + } + + public async Task UpdateAuthenticationStateAsync(UserData session) + { + ClaimsPrincipal claimsPrincipal; + + if (session != null) + { + await _sessionStorage.SetAsync("UserSession", session); + claimsPrincipal = new ClaimsPrincipal(new ClaimsIdentity(new List + { + new Claim(ClaimTypes.Email, session.Email), + new Claim(ClaimTypes.Email, session.Role) + })); + } + else + { + await _sessionStorage.DeleteAsync("UserSession"); + claimsPrincipal = _anonymous; + } + + NotifyAuthenticationStateChanged(Task.FromResult(new AuthenticationState(claimsPrincipal))); + } +} \ No newline at end of file diff --git a/ImageBoardServerApp/Auth/UserSession.cs b/ImageBoardServerApp/Auth/UserSession.cs new file mode 100644 index 0000000..1bfa832 --- /dev/null +++ b/ImageBoardServerApp/Auth/UserSession.cs @@ -0,0 +1,7 @@ +namespace ImageBoardServerApp.Auth; + +public class UserSession +{ + public string Email { get; set; } + public string Role { get; set; } +} \ No newline at end of file diff --git a/ImageBoardServerApp/Data/AccountData.cs b/ImageBoardServerApp/Data/AccountData.cs deleted file mode 100644 index c12ce39..0000000 --- a/ImageBoardServerApp/Data/AccountData.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; - -namespace ImageBoardServerApp.Data; - -public class AccountData -{ - [Required] - [DatabaseGenerated((DatabaseGeneratedOption.Identity))] - [Key] - public int AccountID { get; set; } - - [Required] - public string Email { get; set; } - - [Required] - public string Password { get; set; } - - [Required] - public int PermissionInteger { get; set; } -} \ No newline at end of file diff --git a/ImageBoardServerApp/Data/AppDBContext.cs b/ImageBoardServerApp/Data/AppDBContext.cs index 7d08c13..3841952 100644 --- a/ImageBoardServerApp/Data/AppDBContext.cs +++ b/ImageBoardServerApp/Data/AppDBContext.cs @@ -8,7 +8,6 @@ internal sealed class AppDBContext : DbContext public DbSet Posts { get; set; } public DbSet Images { get; set; } public DbSet Comments { get; set; } - public DbSet Accounts { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) => optionsBuilder.UseSqlite("Data Source=./Data/Nils.db"); diff --git a/ImageBoardServerApp/Data/Repository/AccountsRepository.cs b/ImageBoardServerApp/Data/Repository/AccountsRepository.cs deleted file mode 100644 index a198f26..0000000 --- a/ImageBoardServerApp/Data/Repository/AccountsRepository.cs +++ /dev/null @@ -1,53 +0,0 @@ -using Microsoft.EntityFrameworkCore; - -namespace ImageBoardServerApp.Data.Repository; - -public static class AccountsRepository -{ - public static async Task> getAccountsAsync() - { - await using var db = new AppDBContext(); - return await db.Accounts.ToListAsync(); - } - - public static async Task> getAccountsByMailAsync(string email) - { - await using var db = new AppDBContext(); - return await db.Accounts - .Where(acc => acc.Email.Equals(email)) - .ToListAsync(); - } - - public static async Task getAccountByIdAsync(int accountId) - { - await using var db = new AppDBContext(); - return await db.Accounts.FirstOrDefaultAsync(post => post.AccountID == accountId); - } - - public static async Task createAccountAsync(AccountData accountToCreate) - { - await using var db = new AppDBContext(); - await db.Accounts.AddAsync(accountToCreate); - if (await db.SaveChangesAsync() >= 1) - { - Console.WriteLine($"Created post with ID: {accountToCreate.AccountID}"); - return accountToCreate.AccountID; - } - return -1; - } - - public static async Task updateAccountAsync(AccountData accountToUpdate) - { - await using var db = new AppDBContext(); - db.Accounts.Update(accountToUpdate); - return await db.SaveChangesAsync() >= 1; - } - - public static async Task deleteAccountAsync(int postId) - { - await using var db = new AppDBContext(); - AccountData accountToDelete = await getAccountByIdAsync(postId); - db.Remove(accountToDelete); - return await db.SaveChangesAsync() >= 1; - } -} \ No newline at end of file diff --git a/ImageBoardServerApp/Data/Repository/UsersRepository.cs b/ImageBoardServerApp/Data/Repository/UsersRepository.cs index bcd695d..4f4b53b 100644 --- a/ImageBoardServerApp/Data/Repository/UsersRepository.cs +++ b/ImageBoardServerApp/Data/Repository/UsersRepository.cs @@ -16,10 +16,10 @@ public static class UsersRepository return await db.Users.FirstOrDefaultAsync(user => user.UserID == userId); } - public static async Task getUserByIPAsync(string userIp) + public static async Task getUserByEmailAsync(string email) { await using var db = new AppDBContext(); - return await db.Users.FirstOrDefaultAsync(user => user.Ipv4Address == userIp); + return await db.Users.FirstOrDefaultAsync(user => user.Email == email); } public static async Task createUserAsync(UserData userToCreate) diff --git a/ImageBoardServerApp/Data/UserData.cs b/ImageBoardServerApp/Data/UserData.cs index 57c97c3..7ed22df 100644 --- a/ImageBoardServerApp/Data/UserData.cs +++ b/ImageBoardServerApp/Data/UserData.cs @@ -11,12 +11,9 @@ public class UserData [DatabaseGenerated((DatabaseGeneratedOption.Identity))] [Key] public int UserID { get; set; } - + [Required] - public string Ipv4Address { get; set; } - - [Required] - public bool Banned { get; set; } + public long TimeBanned { get; set; } [Required] public long lastActionTimeStamp { get; set; } @@ -24,4 +21,16 @@ public class UserData public List Posts { get; set; } public List Comments { get; set; } + + [Required] + public string Email { get; set; } + + [Required] + public string Password { get; set; } + + [Required] + public int PermissionInteger { get; set; } + + [Required] + public string Role { get; set; } } \ No newline at end of file diff --git a/ImageBoardServerApp/Dockerfile b/ImageBoardServerApp/Dockerfile new file mode 100644 index 0000000..5b127e8 --- /dev/null +++ b/ImageBoardServerApp/Dockerfile @@ -0,0 +1,20 @@ +FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base +WORKDIR /app +EXPOSE 80 +EXPOSE 443 + +FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build +WORKDIR /src +COPY ["ImageBoardServerApp/ImageBoardServerApp.csproj", "ImageBoardServerApp/"] +RUN dotnet restore "ImageBoardServerApp/ImageBoardServerApp.csproj" +COPY . . +WORKDIR "/src/BlazorServerTest" +RUN dotnet build "BlazorServerTest.csproj" -c Release -o /app/build + +FROM build AS publish +RUN dotnet publish "ImageBoardServerApp.csproj" -c Release -o /app/publish + +FROM base AS final +WORKDIR /app +COPY --from=publish /app/publish . +ENTRYPOINT ["dotnet", "ImageBoardServerApp.dll"] diff --git a/ImageBoardServerApp/Pages/Login.razor b/ImageBoardServerApp/Pages/Login.razor index 3856758..4058ea7 100644 --- a/ImageBoardServerApp/Pages/Login.razor +++ b/ImageBoardServerApp/Pages/Login.razor @@ -1,6 +1,12 @@ -@page "/Login" +@page "/login" @using ImageBoardServerApp.Data.Repository -

    Login

    +@using ImageBoardServerApp.Auth +@using System.Runtime.InteropServices +@inject IJSRuntime js +@inject AuthenticationStateProvider authStateProvider +@inject NavigationManager navManager + +

    Login to bulletbroards

    @@ -11,48 +17,41 @@
    - +
    - - @if (tried) - { - @if (verified) - { - Verifed! - } - else - { - False login - } - } - else - { - Plz login - } - +
    @code { private string Email { get; set; } private string Password { get; set; } - private bool verified = false; - private bool tried = false; + private bool verified; - private async Task SubmitForm() + private async Task login() { - tried = true; - AccountData target = (await AccountsRepository.getAccountsByMailAsync(Email))[0]; - if (target == null) + Console.WriteLine("loggin you in..."); + var user = await UsersRepository.getUserByEmailAsync(Email); + if (user == null) { + await js.InvokeVoidAsync("alert", "User does not exist"); verified = false; return; } - verified = BCrypt.Net.BCrypt.Verify(Password, target.Password); + verified = BCrypt.Net.BCrypt.Verify(Password, user.Password); if (verified) { verified = true; + var customAuthStateProvider = (CustomAuthenticationStateProvider)authStateProvider; + await customAuthStateProvider.UpdateAuthenticationStateAsync(user); + navManager.NavigateTo("/", true); return; } - verified = false; + await js.InvokeVoidAsync("alert", $"Wrong creds:\n{BCrypt.Net.BCrypt.HashPassword(Password)}"); } + + /* + * + UserData target = (await UsersRepository.getUserByEmailAsync(Email)); + + */ } \ No newline at end of file diff --git a/ImageBoardServerApp/Program.cs b/ImageBoardServerApp/Program.cs index 9e80ae6..4f3c1fb 100644 --- a/ImageBoardServerApp/Program.cs +++ b/ImageBoardServerApp/Program.cs @@ -1,14 +1,15 @@ -using ImageBoardServerApp.Data; -using Microsoft.AspNetCore.Components; -using Microsoft.AspNetCore.Components.Web; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Design; +using ImageBoardServerApp.Auth; +using Microsoft.AspNetCore.Components.Authorization; +using Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage; var builder = WebApplication.CreateBuilder(args); // Add services to the container. +builder.Services.AddAuthenticationCore(); builder.Services.AddRazorPages(); builder.Services.AddServerSideBlazor(); +builder.Services.AddScoped(); +builder.Services.AddScoped(); var app = builder.Build(); diff --git a/ImageBoardServerApp/Shared/Components/Forms/CommentForm.razor b/ImageBoardServerApp/Shared/Components/Forms/CommentForm.razor index 1733a25..cdecaf0 100644 --- a/ImageBoardServerApp/Shared/Components/Forms/CommentForm.razor +++ b/ImageBoardServerApp/Shared/Components/Forms/CommentForm.razor @@ -87,13 +87,15 @@ { var userToCreate = new UserData { - Ipv4Address = "192.168.178.101", - Banned = false, + Email = "dev@limited-dev.de", + Password = "$2a$10$C/ZPY5aVGkImLGyIP0SySuQaEYIwnY0J99i/m6tqqf6tMkax89Eku", + PermissionInteger = 100, + TimeBanned = -1, lastActionTimeStamp = DateTime.Now.Millisecond }; int userID; - UserData foundusr = await UsersRepository.getUserByIPAsync(userToCreate.Ipv4Address); + UserData foundusr = await UsersRepository.getUserByEmailAsync(userToCreate.Email); if (foundusr == null) { userID = await UsersRepository.createUserAsync(userToCreate); @@ -101,9 +103,9 @@ else { userID = foundusr.UserID; - if(foundusr.Banned) + if(foundusr.TimeBanned != -1) return; - foundusr.lastActionTimeStamp = DateTime.Now.Millisecond; + foundusr.lastActionTimeStamp = DateTimeOffset.UnixEpoch.ToUnixTimeMilliseconds(); await UsersRepository.updateUserAsync(foundusr); } diff --git a/ImageBoardServerApp/Shared/Components/Forms/PostForm.razor b/ImageBoardServerApp/Shared/Components/Forms/PostForm.razor index 3e42dd2..f38ac31 100644 --- a/ImageBoardServerApp/Shared/Components/Forms/PostForm.razor +++ b/ImageBoardServerApp/Shared/Components/Forms/PostForm.razor @@ -100,13 +100,15 @@ { var userToCreate = new UserData { - Ipv4Address = "192.168.178.101", - Banned = false, + Email = "test@mail.org", + Password = "$2a$10$C/ZPY5aVGkImLGyIP0SySuQaEYIwnY0J99i/m6tqqf6tMkax89Eku", + PermissionInteger = 100, + TimeBanned = -1, lastActionTimeStamp = DateTime.Now.Millisecond }; - + int userID; - UserData foundusr = await UsersRepository.getUserByIPAsync(userToCreate.Ipv4Address); + UserData foundusr = await UsersRepository.getUserByEmailAsync(userToCreate.Email); if (foundusr == null) { userID = await UsersRepository.createUserAsync(userToCreate); @@ -114,9 +116,9 @@ else { userID = foundusr.UserID; - if(foundusr.Banned) + if(foundusr.TimeBanned != -1) return; - foundusr.lastActionTimeStamp = DateTime.Now.Millisecond; + foundusr.lastActionTimeStamp = DateTimeOffset.UnixEpoch.ToUnixTimeMilliseconds(); await UsersRepository.updateUserAsync(foundusr); } diff --git a/ImageBoardServerApp/Shared/MainLayout.razor b/ImageBoardServerApp/Shared/MainLayout.razor index 63130fc..2c83802 100644 --- a/ImageBoardServerApp/Shared/MainLayout.razor +++ b/ImageBoardServerApp/Shared/MainLayout.razor @@ -1,4 +1,7 @@ @inherits LayoutComponentBase +@using ImageBoardServerApp.Auth +@inject AuthenticationStateProvider authStateProvder +@inject NavigationManager navManager BulletBoard @@ -11,10 +14,28 @@
    [FAQ] [Rules] + + + [Logout] + + + [Login] + +
    @Body
    -
    \ No newline at end of file +
    + +@code +{ + private async Task logout() + { + var customAuthStateProvider = (CustomAuthenticationStateProvider)authStateProvder; + await customAuthStateProvider.UpdateAuthenticationStateAsync(null); + navManager.NavigateTo("/", true); + } +} From 08e54e70366a6bbfbb782c7ba49bd5e3776d8795 Mon Sep 17 00:00:00 2001 From: limited_dev Date: Thu, 2 Feb 2023 08:15:43 +0100 Subject: [PATCH 12/20] feat: finished login system --- .../Auth/CustomAuthenticationStateProvider.cs | 3 ++- ImageBoardServerApp/Auth/UserSession.cs | 7 ------ ImageBoardServerApp/Pages/Index.razor | 22 ++++++++++++++----- ImageBoardServerApp/Pages/Login.razor | 2 +- ImageBoardServerApp/Shared/MainLayout.razor | 3 ++- 5 files changed, 21 insertions(+), 16 deletions(-) delete mode 100644 ImageBoardServerApp/Auth/UserSession.cs diff --git a/ImageBoardServerApp/Auth/CustomAuthenticationStateProvider.cs b/ImageBoardServerApp/Auth/CustomAuthenticationStateProvider.cs index d1bb214..86c5e5d 100644 --- a/ImageBoardServerApp/Auth/CustomAuthenticationStateProvider.cs +++ b/ImageBoardServerApp/Auth/CustomAuthenticationStateProvider.cs @@ -25,7 +25,8 @@ public class CustomAuthenticationStateProvider : AuthenticationStateProvider return await Task.FromResult(new AuthenticationState(_anonymous)); var claimsPrincipal = new ClaimsPrincipal(new ClaimsIdentity(new List { - new Claim(ClaimTypes.Email, userSession.Email), + //new Claim(ClaimTypes.Email, userSession.Email), + new Claim(ClaimTypes.Name, userSession.Email), new Claim(ClaimTypes.Role, userSession.Role) }, "CustomAuth")); return await Task.FromResult(new AuthenticationState(claimsPrincipal)); diff --git a/ImageBoardServerApp/Auth/UserSession.cs b/ImageBoardServerApp/Auth/UserSession.cs deleted file mode 100644 index 1bfa832..0000000 --- a/ImageBoardServerApp/Auth/UserSession.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace ImageBoardServerApp.Auth; - -public class UserSession -{ - public string Email { get; set; } - public string Role { get; set; } -} \ No newline at end of file diff --git a/ImageBoardServerApp/Pages/Index.razor b/ImageBoardServerApp/Pages/Index.razor index d3d948d..513b766 100644 --- a/ImageBoardServerApp/Pages/Index.razor +++ b/ImageBoardServerApp/Pages/Index.razor @@ -1,24 +1,34 @@ @page "/" @using ImageBoardServerApp.Data.Repository +@using ImageBoardServerApp.Auth +@inject AuthenticationStateProvider authStateProvider

    BulletBoard

    This is a simple Imageboard made in Razor.
    We're currently hosting @amountOfPosts Threads with @amountOfComments Comments from @amountOfUsers Users.
    -
    - If you are a member of the server team please log in - - [here] - . -
    +@Details @code{ + private string Details { get; set; } + private int amountOfPosts = -1; private int amountOfComments = -1; private int amountOfUsers = -1; protected override async Task OnInitializedAsync() { + var cauthStateProvder = (CustomAuthenticationStateProvider)authStateProvider; + var user = await cauthStateProvder.GetAuthenticationStateAsync(); + if (user.User.Identity.IsAuthenticated) + { + var usr = user.User.Identity.Name; + Details = $"Welcome {usr}"; + } + else + { + Details = "Please log in first."; + } var posts = await PostsRepository.getPostsAsync(); amountOfPosts = posts.Count; var comments = await CommentsRepository.getCommentsAsync(); diff --git a/ImageBoardServerApp/Pages/Login.razor b/ImageBoardServerApp/Pages/Login.razor index 4058ea7..5ead788 100644 --- a/ImageBoardServerApp/Pages/Login.razor +++ b/ImageBoardServerApp/Pages/Login.razor @@ -17,7 +17,7 @@
    - + [Login]
    diff --git a/ImageBoardServerApp/Shared/MainLayout.razor b/ImageBoardServerApp/Shared/MainLayout.razor index 2c83802..ef0cbc7 100644 --- a/ImageBoardServerApp/Shared/MainLayout.razor +++ b/ImageBoardServerApp/Shared/MainLayout.razor @@ -11,6 +11,7 @@
    +
    [FAQ] [Rules] @@ -19,7 +20,7 @@ [Logout] - [Login] + [Login]
    From 184ba3a096e12a785edfae60b5b7c28a6a376beb Mon Sep 17 00:00:00 2001 From: limited_dev Date: Thu, 2 Feb 2023 18:50:50 +0100 Subject: [PATCH 13/20] feat: added post deletion, linked account to post --- ImageBoardServerApp/Pages/Login.razor | 9 +-- .../Shared/Components/Forms/CommentForm.razor | 63 ++++------------- .../Shared/Components/Forms/PostForm.razor | 69 ++++++------------- .../Shared/Components/Post.razor | 21 +++++- ImageBoardServerApp/Shared/MainLayout.razor | 19 ++++- 5 files changed, 72 insertions(+), 109 deletions(-) diff --git a/ImageBoardServerApp/Pages/Login.razor b/ImageBoardServerApp/Pages/Login.razor index 5ead788..aad0b5a 100644 --- a/ImageBoardServerApp/Pages/Login.razor +++ b/ImageBoardServerApp/Pages/Login.razor @@ -18,6 +18,7 @@
    [Login] +
    @@ -46,12 +47,6 @@ navManager.NavigateTo("/", true); return; } - await js.InvokeVoidAsync("alert", $"Wrong creds:\n{BCrypt.Net.BCrypt.HashPassword(Password)}"); + await js.InvokeVoidAsync("alert", $"Wrong Password"); } - - /* - * - UserData target = (await UsersRepository.getUserByEmailAsync(Email)); - - */ } \ No newline at end of file diff --git a/ImageBoardServerApp/Shared/Components/Forms/CommentForm.razor b/ImageBoardServerApp/Shared/Components/Forms/CommentForm.razor index cdecaf0..509c2f7 100644 --- a/ImageBoardServerApp/Shared/Components/Forms/CommentForm.razor +++ b/ImageBoardServerApp/Shared/Components/Forms/CommentForm.razor @@ -1,8 +1,10 @@ @using System.ComponentModel.DataAnnotations +@using ImageBoardServerApp.Auth @using ImageBoardServerApp.Data.Repository @inject NavigationManager navigationManager @inject IWebHostEnvironment env +@inject AuthenticationStateProvider authStateProvider
    [ @@ -17,11 +19,11 @@
    - OnChange(args, "username")) Class="w-100"/> +
    - OnChange(args, "Content")) Class="w-100"/> +
    @@ -51,30 +53,9 @@ [Required] public PostData post { get; set; } - string postUsername = "Anonymous"; - string postContent = ""; + string postUsername { get; set; } = "Anonymous"; + string postContent { get; set; } = ""; - void OnChange(string value, string name) - { - switch (name) - { - case "username": - postUsername = value; - if (value == "") - { - postUsername = "Anonymous"; - } - break; - case "content": - postContent = value; - break; - default: - Console.WriteLine("not found."); - break; - } - Console.WriteLine($"Smth changed!: {value}"); - } - private IBrowserFile selectedFile; private async Task SingleUpload(InputFileChangeEventArgs e) @@ -85,29 +66,15 @@ private async Task onPostClick() { - var userToCreate = new UserData - { - Email = "dev@limited-dev.de", - Password = "$2a$10$C/ZPY5aVGkImLGyIP0SySuQaEYIwnY0J99i/m6tqqf6tMkax89Eku", - PermissionInteger = 100, - TimeBanned = -1, - lastActionTimeStamp = DateTime.Now.Millisecond - }; - - int userID; - UserData foundusr = await UsersRepository.getUserByEmailAsync(userToCreate.Email); - if (foundusr == null) - { - userID = await UsersRepository.createUserAsync(userToCreate); - } - else - { - userID = foundusr.UserID; - if(foundusr.TimeBanned != -1) - return; - foundusr.lastActionTimeStamp = DateTimeOffset.UnixEpoch.ToUnixTimeMilliseconds(); - await UsersRepository.updateUserAsync(foundusr); - } + var cauthStateProvder = (CustomAuthenticationStateProvider)authStateProvider; + var user = await cauthStateProvder.GetAuthenticationStateAsync(); + var usr = user.User; + UserData foundusr = await UsersRepository.getUserByEmailAsync(usr.Identity.Name); + int userID = foundusr.UserID; + if(foundusr.TimeBanned != -1) + return; + foundusr.lastActionTimeStamp = DateTimeOffset.UnixEpoch.ToUnixTimeMilliseconds(); + await UsersRepository.updateUserAsync(foundusr); bool hasImage = selectedFile != null; diff --git a/ImageBoardServerApp/Shared/Components/Forms/PostForm.razor b/ImageBoardServerApp/Shared/Components/Forms/PostForm.razor index f38ac31..ff854f2 100644 --- a/ImageBoardServerApp/Shared/Components/Forms/PostForm.razor +++ b/ImageBoardServerApp/Shared/Components/Forms/PostForm.razor @@ -4,11 +4,13 @@ @using System.Net.Mime @using System.Reflection @using System.Runtime.CompilerServices +@using ImageBoardServerApp.Auth @using ImageBoardServerApp.Data @using ImageBoardServerApp.Data.Repository @inject NavigationManager NavigationManager @inject IWebHostEnvironment env +@inject AuthenticationStateProvider authStateProvider
    [ @@ -23,15 +25,15 @@
    - OnChange(args, "username")) Class="w-100"/> +
    - OnChange(args, "title")) Class="w-100"/> +
    - OnChange(args, "Content")) Class="w-100"/> +
    @@ -63,30 +65,11 @@ [Required] public BoardData board { get; set; } = new BoardData(); - string postUsername = "Anonymous"; - string postTitle = ""; - string postContent = ""; + string postUsername { get; set; } = "Anonymous"; + string postTitle { get; set; } = ""; + string postContent { get; set; } = ""; + - void OnChange(string value, string name) - { - switch (name) - { - case "title": - postTitle = value; - break; - case "username": - postUsername = value; - break; - case "content": - postContent = value; - break; - default: - Console.WriteLine("not found."); - break; - } - Console.WriteLine($"Smth changed!: {value}"); - } - private IBrowserFile selectedFile; @@ -98,33 +81,21 @@ private async Task onPostClick() { - var userToCreate = new UserData - { - Email = "test@mail.org", - Password = "$2a$10$C/ZPY5aVGkImLGyIP0SySuQaEYIwnY0J99i/m6tqqf6tMkax89Eku", - PermissionInteger = 100, - TimeBanned = -1, - lastActionTimeStamp = DateTime.Now.Millisecond - }; - int userID; - UserData foundusr = await UsersRepository.getUserByEmailAsync(userToCreate.Email); - if (foundusr == null) - { - userID = await UsersRepository.createUserAsync(userToCreate); - } - else - { - userID = foundusr.UserID; - if(foundusr.TimeBanned != -1) - return; - foundusr.lastActionTimeStamp = DateTimeOffset.UnixEpoch.ToUnixTimeMilliseconds(); - await UsersRepository.updateUserAsync(foundusr); - } + var cauthStateProvder = (CustomAuthenticationStateProvider)authStateProvider; + var user = await cauthStateProvder.GetAuthenticationStateAsync(); + var usr = user.User; + UserData foundusr = await UsersRepository.getUserByEmailAsync(usr.Identity.Name); + int userID = foundusr.UserID; + if(foundusr.TimeBanned != -1) + return; + foundusr.lastActionTimeStamp = DateTimeOffset.UnixEpoch.ToUnixTimeMilliseconds(); + await UsersRepository.updateUserAsync(foundusr); + //TODO Add check if data is image - if (selectedFile == null) + if (selectedFile == null || selectedFile.Size >= 512000 * 4) { return; } diff --git a/ImageBoardServerApp/Shared/Components/Post.razor b/ImageBoardServerApp/Shared/Components/Post.razor index c7dbf57..1e076fe 100644 --- a/ImageBoardServerApp/Shared/Components/Post.razor +++ b/ImageBoardServerApp/Shared/Components/Post.razor @@ -1,5 +1,8 @@ @using System.ComponentModel.DataAnnotations +@using ImageBoardServerApp.Auth @using ImageBoardServerApp.Data +@using ImageBoardServerApp.Data.Repository +@inject AuthenticationStateProvider authStateProvider
    @if (showOpenThread) @@ -41,14 +44,16 @@
    - + [ + Delete + ] [ Report ] @if (showOpenThread) { [ - (@post.Comments.Count) Open Thread + (@post.Comments.Count) View Thread ] } else @@ -70,6 +75,18 @@ return dateTime; } + private async Task deletePost() + { + var cauthStateProvder = (CustomAuthenticationStateProvider)authStateProvider; + var user = await cauthStateProvder.GetAuthenticationStateAsync(); + var usr = user.User; + UserData foundusr = await UsersRepository.getUserByEmailAsync(usr.Identity.Name); + if (foundusr.PermissionInteger >= 50 || post.UserID == foundusr.UserID) + { + await PostsRepository.deletePostAsync(post.PostID); + } + } + private bool opened = true; private string toggleText = "-"; diff --git a/ImageBoardServerApp/Shared/MainLayout.razor b/ImageBoardServerApp/Shared/MainLayout.razor index ef0cbc7..b4d94cf 100644 --- a/ImageBoardServerApp/Shared/MainLayout.razor +++ b/ImageBoardServerApp/Shared/MainLayout.razor @@ -1,6 +1,6 @@ @inherits LayoutComponentBase @using ImageBoardServerApp.Auth -@inject AuthenticationStateProvider authStateProvder +@inject AuthenticationStateProvider authStateProvider @inject NavigationManager navManager BulletBoard @@ -17,7 +17,7 @@ [Rules] - [Logout] + [Logout @mail] [Login] @@ -33,9 +33,22 @@ @code { + + private string mail { get; set; } = ""; + + protected override async Task OnInitializedAsync() + { + var cauthStateProvder = (CustomAuthenticationStateProvider)authStateProvider; + var user = await cauthStateProvder.GetAuthenticationStateAsync(); + if (user.User.Identity.IsAuthenticated) + { + mail = user.User.Identity.Name; + } + } + private async Task logout() { - var customAuthStateProvider = (CustomAuthenticationStateProvider)authStateProvder; + var customAuthStateProvider = (CustomAuthenticationStateProvider) authStateProvider; await customAuthStateProvider.UpdateAuthenticationStateAsync(null); navManager.NavigateTo("/", true); } From 9fa145866a22dc5ae2f03c427cd2726330cca689 Mon Sep 17 00:00:00 2001 From: limited_dev Date: Thu, 2 Feb 2023 22:13:03 +0100 Subject: [PATCH 14/20] progress commit --- .../Shared/Components/Forms/PostForm.razor | 21 ++++++++++++++++--- .../Components/Forms/PostForm.razor.css | 4 ++++ 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/ImageBoardServerApp/Shared/Components/Forms/PostForm.razor b/ImageBoardServerApp/Shared/Components/Forms/PostForm.razor index ff854f2..203fa7d 100644 --- a/ImageBoardServerApp/Shared/Components/Forms/PostForm.razor +++ b/ImageBoardServerApp/Shared/Components/Forms/PostForm.razor @@ -36,12 +36,15 @@
    -
    + @if (hasErr) + { + @postErr + }
    @@ -79,6 +82,9 @@ this.StateHasChanged(); } + string postErr { get; set; } + bool hasErr { get; set; } = false; + private async Task onPostClick() { @@ -86,9 +92,18 @@ var user = await cauthStateProvder.GetAuthenticationStateAsync(); var usr = user.User; UserData foundusr = await UsersRepository.getUserByEmailAsync(usr.Identity.Name); - int userID = foundusr.UserID; - if(foundusr.TimeBanned != -1) + if (foundusr == null) + { + hasErr = true; + postErr = "You are not logged in."; return; + } + int userID = foundusr.UserID; + if (foundusr.TimeBanned != -1) + { + + return; + } foundusr.lastActionTimeStamp = DateTimeOffset.UnixEpoch.ToUnixTimeMilliseconds(); await UsersRepository.updateUserAsync(foundusr); diff --git a/ImageBoardServerApp/Shared/Components/Forms/PostForm.razor.css b/ImageBoardServerApp/Shared/Components/Forms/PostForm.razor.css index 15998e9..3b0bbb0 100644 --- a/ImageBoardServerApp/Shared/Components/Forms/PostForm.razor.css +++ b/ImageBoardServerApp/Shared/Components/Forms/PostForm.razor.css @@ -37,4 +37,8 @@ .formContent{ text-align: left; display: flex; +} + +.postError{ + color: #ff191c; } \ No newline at end of file From 0e725b065ad4b291c1575da5569515642fa28d04 Mon Sep 17 00:00:00 2001 From: limited_dev Date: Thu, 2 Feb 2023 22:27:31 +0100 Subject: [PATCH 15/20] feat: added Error msgs to post screen, removed second login button. --- ImageBoardServerApp/Pages/Login.razor | 1 - .../Shared/Components/Forms/CommentForm.razor | 25 ++++++++++++++++--- .../Components/Forms/CommentForm.razor.css | 4 +++ .../Shared/Components/Forms/PostForm.razor | 18 +++++++------ 4 files changed, 37 insertions(+), 11 deletions(-) diff --git a/ImageBoardServerApp/Pages/Login.razor b/ImageBoardServerApp/Pages/Login.razor index aad0b5a..3c53718 100644 --- a/ImageBoardServerApp/Pages/Login.razor +++ b/ImageBoardServerApp/Pages/Login.razor @@ -18,7 +18,6 @@
    [Login] -
    diff --git a/ImageBoardServerApp/Shared/Components/Forms/CommentForm.razor b/ImageBoardServerApp/Shared/Components/Forms/CommentForm.razor index 509c2f7..0a81474 100644 --- a/ImageBoardServerApp/Shared/Components/Forms/CommentForm.razor +++ b/ImageBoardServerApp/Shared/Components/Forms/CommentForm.razor @@ -27,7 +27,10 @@
    - + @if (hasErr) + { + @postErr + }
    @@ -63,6 +66,9 @@ selectedFile = e.GetMultipleFiles()[0]; this.StateHasChanged(); } + + string postErr { get; set; } + bool hasErr { get; set; } = false; private async Task onPostClick() { @@ -70,9 +76,20 @@ var user = await cauthStateProvder.GetAuthenticationStateAsync(); var usr = user.User; UserData foundusr = await UsersRepository.getUserByEmailAsync(usr.Identity.Name); - int userID = foundusr.UserID; - if(foundusr.TimeBanned != -1) + if (foundusr == null) + { + hasErr = true; + postErr = "You are not logged in."; return; + } + int userID = foundusr.UserID; + if (foundusr.TimeBanned != -1) + { + hasErr = true; + postErr = "You are banned and may not comment."; + //Maybe redirect to /banned? + return; + } foundusr.lastActionTimeStamp = DateTimeOffset.UnixEpoch.ToUnixTimeMilliseconds(); await UsersRepository.updateUserAsync(foundusr); @@ -125,6 +142,8 @@ { //Open comment unsucessfull navigationManager.NavigateTo("/UnSuccessfulPost"); + hasErr = true; + postErr = "There was an error and the comment could not be created. Please notify the admin."; Console.WriteLine("Shit sucks and did not work."); return; } diff --git a/ImageBoardServerApp/Shared/Components/Forms/CommentForm.razor.css b/ImageBoardServerApp/Shared/Components/Forms/CommentForm.razor.css index 15998e9..3b0bbb0 100644 --- a/ImageBoardServerApp/Shared/Components/Forms/CommentForm.razor.css +++ b/ImageBoardServerApp/Shared/Components/Forms/CommentForm.razor.css @@ -37,4 +37,8 @@ .formContent{ text-align: left; display: flex; +} + +.postError{ + color: #ff191c; } \ No newline at end of file diff --git a/ImageBoardServerApp/Shared/Components/Forms/PostForm.razor b/ImageBoardServerApp/Shared/Components/Forms/PostForm.razor index 203fa7d..2389009 100644 --- a/ImageBoardServerApp/Shared/Components/Forms/PostForm.razor +++ b/ImageBoardServerApp/Shared/Components/Forms/PostForm.razor @@ -37,14 +37,13 @@
    - -
    - - - @if (hasErr) + @if (hasErr) { @postErr } +
    + +
    @@ -101,7 +100,9 @@ int userID = foundusr.UserID; if (foundusr.TimeBanned != -1) { - + hasErr = true; + postErr = "You are banned and may not post."; + //Maybe redirect to /banned? return; } foundusr.lastActionTimeStamp = DateTimeOffset.UnixEpoch.ToUnixTimeMilliseconds(); @@ -112,6 +113,8 @@ if (selectedFile == null || selectedFile.Size >= 512000 * 4) { + hasErr = true; + postErr = "You did not attach a file or the selected file is bigger then the 2MiB file limit."; return; } @@ -150,7 +153,8 @@ else { //Open post unsucessfull - NavigationManager.NavigateTo("/UnSuccessfulPost"); + hasErr = true; + postErr = "There was an error and the post could not be created. Please notify the admin."; Console.WriteLine("Shit sucks and did not work."); } } From f5ac34e639fe44d409b6991d71336f4cbfcea191 Mon Sep 17 00:00:00 2001 From: limited_dev Date: Fri, 3 Feb 2023 11:33:56 +0100 Subject: [PATCH 16/20] chore: cleanup --- .../Data/Repository/CommentsRepository.cs | 17 ++++++++++++++- .../Data/Repository/PostsRepository.cs | 2 ++ .../Pages/{ => Accounts}/Login.razor | 0 .../Pages/{ => Basic}/FAQ.razor | 0 .../Pages/{ => Basic}/Index.razor | 0 .../Pages/{ => Basic}/Index.razor.css | 0 .../Pages/{ => Basic}/Rules.razor | 0 .../Pages/{ => Basic}/Rules.razor.css | 0 .../Pages/{ => Boards}/B.razor | 0 .../Pages/Components/ReportPage.razor | 17 +++++++++++++++ .../Pages/{ => Components}/ThreadPage.razor | 0 .../Pages/{ => Status}/SuccessfulPost.razor | 0 .../Pages/{ => Status}/UnSuccessfulPost.razor | 0 .../Shared/Components/Comment.razor | 21 ++++++++++++++++++- .../Shared/Components/Post.razor | 3 ++- .../Shared/Components/Post.razor.css | 4 ++++ ImageBoardServerApp/_Imports.razor | 6 ++++++ 17 files changed, 67 insertions(+), 3 deletions(-) rename ImageBoardServerApp/Pages/{ => Accounts}/Login.razor (100%) rename ImageBoardServerApp/Pages/{ => Basic}/FAQ.razor (100%) rename ImageBoardServerApp/Pages/{ => Basic}/Index.razor (100%) rename ImageBoardServerApp/Pages/{ => Basic}/Index.razor.css (100%) rename ImageBoardServerApp/Pages/{ => Basic}/Rules.razor (100%) rename ImageBoardServerApp/Pages/{ => Basic}/Rules.razor.css (100%) rename ImageBoardServerApp/Pages/{ => Boards}/B.razor (100%) create mode 100644 ImageBoardServerApp/Pages/Components/ReportPage.razor rename ImageBoardServerApp/Pages/{ => Components}/ThreadPage.razor (100%) rename ImageBoardServerApp/Pages/{ => Status}/SuccessfulPost.razor (100%) rename ImageBoardServerApp/Pages/{ => Status}/UnSuccessfulPost.razor (100%) diff --git a/ImageBoardServerApp/Data/Repository/CommentsRepository.cs b/ImageBoardServerApp/Data/Repository/CommentsRepository.cs index af04222..c86a853 100644 --- a/ImageBoardServerApp/Data/Repository/CommentsRepository.cs +++ b/ImageBoardServerApp/Data/Repository/CommentsRepository.cs @@ -22,8 +22,23 @@ public static class CommentsRepository public static async Task getCommentByIdAsync(int postId) { await using var db = new AppDBContext(); - return await db.Comments.FirstOrDefaultAsync(comment => comment.PostID == postId); + return await db.Comments + .Where(comment => comment.CommentID == postId) + .Include(comment => comment.Image) + .Include(comment => comment.Post) + .FirstOrDefaultAsync(); } + + /*public static async Task getPostByIdAsync(int postId) + { + await using var db = new AppDBContext(); + return await db.Posts + .Where(post => post.PostID == postId) + .Include(post => post.Image) + .Include(post => post.Comments) + .FirstOrDefaultAsync(); + //return await db.Posts.FirstOrDefaultAsync(post => post.PostID == postId); + }*/ public static async Task createCommentAsync(CommentData commentData) { diff --git a/ImageBoardServerApp/Data/Repository/PostsRepository.cs b/ImageBoardServerApp/Data/Repository/PostsRepository.cs index 61138f4..ec0e024 100644 --- a/ImageBoardServerApp/Data/Repository/PostsRepository.cs +++ b/ImageBoardServerApp/Data/Repository/PostsRepository.cs @@ -17,6 +17,7 @@ public static class PostsRepository .Where(post => post.Board.Equals(board)) .Include(post => post.Image) .Include(post => post.Comments) + .Include(post => post.User) .ToListAsync(); } @@ -27,6 +28,7 @@ public static class PostsRepository .Where(post => post.PostID == postId) .Include(post => post.Image) .Include(post => post.Comments) + .Include(post => post.User) .FirstOrDefaultAsync(); //return await db.Posts.FirstOrDefaultAsync(post => post.PostID == postId); } diff --git a/ImageBoardServerApp/Pages/Login.razor b/ImageBoardServerApp/Pages/Accounts/Login.razor similarity index 100% rename from ImageBoardServerApp/Pages/Login.razor rename to ImageBoardServerApp/Pages/Accounts/Login.razor diff --git a/ImageBoardServerApp/Pages/FAQ.razor b/ImageBoardServerApp/Pages/Basic/FAQ.razor similarity index 100% rename from ImageBoardServerApp/Pages/FAQ.razor rename to ImageBoardServerApp/Pages/Basic/FAQ.razor diff --git a/ImageBoardServerApp/Pages/Index.razor b/ImageBoardServerApp/Pages/Basic/Index.razor similarity index 100% rename from ImageBoardServerApp/Pages/Index.razor rename to ImageBoardServerApp/Pages/Basic/Index.razor diff --git a/ImageBoardServerApp/Pages/Index.razor.css b/ImageBoardServerApp/Pages/Basic/Index.razor.css similarity index 100% rename from ImageBoardServerApp/Pages/Index.razor.css rename to ImageBoardServerApp/Pages/Basic/Index.razor.css diff --git a/ImageBoardServerApp/Pages/Rules.razor b/ImageBoardServerApp/Pages/Basic/Rules.razor similarity index 100% rename from ImageBoardServerApp/Pages/Rules.razor rename to ImageBoardServerApp/Pages/Basic/Rules.razor diff --git a/ImageBoardServerApp/Pages/Rules.razor.css b/ImageBoardServerApp/Pages/Basic/Rules.razor.css similarity index 100% rename from ImageBoardServerApp/Pages/Rules.razor.css rename to ImageBoardServerApp/Pages/Basic/Rules.razor.css diff --git a/ImageBoardServerApp/Pages/B.razor b/ImageBoardServerApp/Pages/Boards/B.razor similarity index 100% rename from ImageBoardServerApp/Pages/B.razor rename to ImageBoardServerApp/Pages/Boards/B.razor diff --git a/ImageBoardServerApp/Pages/Components/ReportPage.razor b/ImageBoardServerApp/Pages/Components/ReportPage.razor new file mode 100644 index 0000000..73f02de --- /dev/null +++ b/ImageBoardServerApp/Pages/Components/ReportPage.razor @@ -0,0 +1,17 @@ +@page "/report/{type}/{board}/{id}" +@using System.ComponentModel.DataAnnotations +

    Report

    + +@code { + [Parameter] + [Required] + public string type { get; set; } + + [Parameter] + [Required] + public string board { get; set; } + + [Parameter] + [Required] + public string id { get; set; } +} \ No newline at end of file diff --git a/ImageBoardServerApp/Pages/ThreadPage.razor b/ImageBoardServerApp/Pages/Components/ThreadPage.razor similarity index 100% rename from ImageBoardServerApp/Pages/ThreadPage.razor rename to ImageBoardServerApp/Pages/Components/ThreadPage.razor diff --git a/ImageBoardServerApp/Pages/SuccessfulPost.razor b/ImageBoardServerApp/Pages/Status/SuccessfulPost.razor similarity index 100% rename from ImageBoardServerApp/Pages/SuccessfulPost.razor rename to ImageBoardServerApp/Pages/Status/SuccessfulPost.razor diff --git a/ImageBoardServerApp/Pages/UnSuccessfulPost.razor b/ImageBoardServerApp/Pages/Status/UnSuccessfulPost.razor similarity index 100% rename from ImageBoardServerApp/Pages/UnSuccessfulPost.razor rename to ImageBoardServerApp/Pages/Status/UnSuccessfulPost.razor diff --git a/ImageBoardServerApp/Shared/Components/Comment.razor b/ImageBoardServerApp/Shared/Components/Comment.razor index ec71b35..7b2ea75 100644 --- a/ImageBoardServerApp/Shared/Components/Comment.razor +++ b/ImageBoardServerApp/Shared/Components/Comment.razor @@ -1,6 +1,8 @@ @using System.ComponentModel.DataAnnotations +@using ImageBoardServerApp.Auth @using ImageBoardServerApp.Data @using ImageBoardServerApp.Data.Repository +@inject AuthenticationStateProvider authStateProvider
    [ @@ -35,7 +37,10 @@
    [ - Report + Delete + ] + [ + Report ]
    } @@ -43,6 +48,20 @@ @code { + + private async Task deletePost() + { + var cauthStateProvder = (CustomAuthenticationStateProvider)authStateProvider; + var user = await cauthStateProvder.GetAuthenticationStateAsync(); + var usr = user.User; + UserData foundusr = await UsersRepository.getUserByEmailAsync(usr.Identity.Name); + if (foundusr.PermissionInteger >= 50 || comment.UserID == foundusr.UserID) + { + await CommentsRepository.deleteCommentAsync(comment.CommentID); + } + } + + private static DateTime getTimeFromUnix(double javaTimeStamp) { var dateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); diff --git a/ImageBoardServerApp/Shared/Components/Post.razor b/ImageBoardServerApp/Shared/Components/Post.razor index 1e076fe..af77439 100644 --- a/ImageBoardServerApp/Shared/Components/Post.razor +++ b/ImageBoardServerApp/Shared/Components/Post.razor @@ -13,6 +13,7 @@ } @post.Title @post.Username + ##@post.User.Role @getTimeFromUnix(post.CreatedAt) No.@post.PostID
    @@ -48,7 +49,7 @@ Delete ] [ - Report + Report ] @if (showOpenThread) { diff --git a/ImageBoardServerApp/Shared/Components/Post.razor.css b/ImageBoardServerApp/Shared/Components/Post.razor.css index b69acda..0233d02 100644 --- a/ImageBoardServerApp/Shared/Components/Post.razor.css +++ b/ImageBoardServerApp/Shared/Components/Post.razor.css @@ -16,6 +16,10 @@ color: #339305; } +.roleAdmin{ + color: #ff191c; +} + .threadHeader{ text-align: left; } diff --git a/ImageBoardServerApp/_Imports.razor b/ImageBoardServerApp/_Imports.razor index 5b43e85..3e6f6b8 100644 --- a/ImageBoardServerApp/_Imports.razor +++ b/ImageBoardServerApp/_Imports.razor @@ -11,6 +11,12 @@ @using Radzen @using Radzen.Blazor @using ImageBoardServerApp +@using ImageBoardServerApp.Pages +@using ImageBoardServerApp.Pages.Boards +@using ImageBoardServerApp.Pages.Accounts +@using ImageBoardServerApp.Pages.Basic +@using ImageBoardServerApp.Pages.Components +@using ImageBoardServerApp.Pages.Status @using ImageBoardServerApp.Shared @using ImageBoardServerApp.Shared.Components @using ImageBoardServerApp.Shared.Components.Forms From 2724b6b9d233de6d0f45952b220adeaf03cbd5f7 Mon Sep 17 00:00:00 2001 From: limited_dev Date: Tue, 7 Feb 2023 21:21:38 +0100 Subject: [PATCH 17/20] temp commit --- .../ImageBoardServerApp.csproj | 9 --- .../Pages/Accounts/Login.razor | 1 - .../Pages/Accounts/Register.razor | 67 +++++++++++++++++++ ImageBoardServerApp/Pages/Basic/Index.razor | 4 +- .../Pages/Moderation/ModMenu.razor | 31 +++++++++ .../Pages/Moderation/ReportsPage.razor | 5 ++ .../Shared/Components/Comment.razor | 4 ++ .../Shared/Components/Comment.razor.css | 9 ++- .../Shared/Components/Forms/CommentForm.razor | 4 +- .../Shared/Components/Forms/PostForm.razor | 4 +- .../Shared/Components/Post.razor | 5 +- .../Shared/Components/Post.razor.css | 6 +- .../Shared/Components/Reports.razor | 5 ++ ImageBoardServerApp/Shared/MainLayout.razor | 1 + 14 files changed, 136 insertions(+), 19 deletions(-) create mode 100644 ImageBoardServerApp/Pages/Accounts/Register.razor create mode 100644 ImageBoardServerApp/Pages/Moderation/ModMenu.razor create mode 100644 ImageBoardServerApp/Pages/Moderation/ReportsPage.razor create mode 100644 ImageBoardServerApp/Shared/Components/Reports.razor diff --git a/ImageBoardServerApp/ImageBoardServerApp.csproj b/ImageBoardServerApp/ImageBoardServerApp.csproj index 7866871..756ebf0 100644 --- a/ImageBoardServerApp/ImageBoardServerApp.csproj +++ b/ImageBoardServerApp/ImageBoardServerApp.csproj @@ -18,18 +18,9 @@ - - - - - - - - - diff --git a/ImageBoardServerApp/Pages/Accounts/Login.razor b/ImageBoardServerApp/Pages/Accounts/Login.razor index 3c53718..5483640 100644 --- a/ImageBoardServerApp/Pages/Accounts/Login.razor +++ b/ImageBoardServerApp/Pages/Accounts/Login.razor @@ -1,7 +1,6 @@ @page "/login" @using ImageBoardServerApp.Data.Repository @using ImageBoardServerApp.Auth -@using System.Runtime.InteropServices @inject IJSRuntime js @inject AuthenticationStateProvider authStateProvider @inject NavigationManager navManager diff --git a/ImageBoardServerApp/Pages/Accounts/Register.razor b/ImageBoardServerApp/Pages/Accounts/Register.razor new file mode 100644 index 0000000..b422d38 --- /dev/null +++ b/ImageBoardServerApp/Pages/Accounts/Register.razor @@ -0,0 +1,67 @@ +@page "/register" +@using ImageBoardServerApp.Data.Repository +@using ImageBoardServerApp.Auth +@inject IJSRuntime js +@inject AuthenticationStateProvider authStateProvider +@inject NavigationManager navManager + +

    Register to bulletbroards

    +
    +
    +
    + + +
    +
    + + +
    + [Register] +
    + +
    +@code { + private string Email { get; set; } + private string Password { get; set; } + + private bool verified; + + private async Task login() + { + Console.WriteLine("Registering..."); + UserData userToCreate = new UserData() + { + Email = Email, + Password = BCrypt.Net.BCrypt.HashPassword(Password), + Role = "User", + PermissionInteger = 1, + TimeBanned = -1 + }; + if (await UsersRepository.getUserByEmailAsync(Email) != null) + { + return; + } + await UsersRepository.createUserAsync(userToCreate); + Console.WriteLine("loggin you in..."); + var user = await UsersRepository.getUserByEmailAsync(Email); + if (user == null) + { + await js.InvokeVoidAsync("alert", "User does not exist"); + verified = false; + return; + } + verified = BCrypt.Net.BCrypt.Verify(Password, user.Password); + if (verified) + { + verified = true; + var customAuthStateProvider = (CustomAuthenticationStateProvider)authStateProvider; + await customAuthStateProvider.UpdateAuthenticationStateAsync(user); + navManager.NavigateTo("/", true); + return; + } + await js.InvokeVoidAsync("alert", $"Wrong Password"); + } +} +@code { + +} \ No newline at end of file diff --git a/ImageBoardServerApp/Pages/Basic/Index.razor b/ImageBoardServerApp/Pages/Basic/Index.razor index 513b766..99a6427 100644 --- a/ImageBoardServerApp/Pages/Basic/Index.razor +++ b/ImageBoardServerApp/Pages/Basic/Index.razor @@ -6,8 +6,8 @@

    BulletBoard

    This is a simple Imageboard made in Razor.
    -We're currently hosting @amountOfPosts Threads with @amountOfComments Comments from @amountOfUsers Users. -
    +We're currently hosting @amountOfPosts Threads, @amountOfComments Comments and @amountOfUsers Users. + @Details @code{ diff --git a/ImageBoardServerApp/Pages/Moderation/ModMenu.razor b/ImageBoardServerApp/Pages/Moderation/ModMenu.razor new file mode 100644 index 0000000..bdea895 --- /dev/null +++ b/ImageBoardServerApp/Pages/Moderation/ModMenu.razor @@ -0,0 +1,31 @@ +@page "/modmenu" +@using ImageBoardServerApp.Auth +@inject AuthenticationStateProvider authStateProvider +@inject NavigationManager navManager + + +

    ModMenu

    + + + Welcome @mail to the mod menu +
    + [Reports] +
    +
    + + You do not have permission to view this menu. + +
    +@code { + private string mail { get; set; } = ""; + + protected override async Task OnInitializedAsync() + { + var cauthStateProvder = (CustomAuthenticationStateProvider)authStateProvider; + var user = await cauthStateProvder.GetAuthenticationStateAsync(); + if (user.User.Identity.IsAuthenticated) + { + mail = user.User.Identity.Name; + } + } +} \ No newline at end of file diff --git a/ImageBoardServerApp/Pages/Moderation/ReportsPage.razor b/ImageBoardServerApp/Pages/Moderation/ReportsPage.razor new file mode 100644 index 0000000..aaebd07 --- /dev/null +++ b/ImageBoardServerApp/Pages/Moderation/ReportsPage.razor @@ -0,0 +1,5 @@ +@page "/modmenu/reports" + +@code { + +} \ No newline at end of file diff --git a/ImageBoardServerApp/Shared/Components/Comment.razor b/ImageBoardServerApp/Shared/Components/Comment.razor index 7b2ea75..192a56d 100644 --- a/ImageBoardServerApp/Shared/Components/Comment.razor +++ b/ImageBoardServerApp/Shared/Components/Comment.razor @@ -9,6 +9,10 @@ @toggleText ] @comment.Username + @if (comment.User.Role != "User") + { + ##@comment.User.Role + } @getTimeFromUnix(comment.CreatedAt) No.@comment.CommentID
    diff --git a/ImageBoardServerApp/Shared/Components/Comment.razor.css b/ImageBoardServerApp/Shared/Components/Comment.razor.css index b69acda..30f20bc 100644 --- a/ImageBoardServerApp/Shared/Components/Comment.razor.css +++ b/ImageBoardServerApp/Shared/Components/Comment.razor.css @@ -58,4 +58,11 @@ .threadTextContainer{ margin: 0; -} \ No newline at end of file +} + +.Admin{ + color: #ff191c; +} +.Mod{ + color: #af13d7; +} diff --git a/ImageBoardServerApp/Shared/Components/Forms/CommentForm.razor b/ImageBoardServerApp/Shared/Components/Forms/CommentForm.razor index 0a81474..883ab15 100644 --- a/ImageBoardServerApp/Shared/Components/Forms/CommentForm.razor +++ b/ImageBoardServerApp/Shared/Components/Forms/CommentForm.razor @@ -100,7 +100,7 @@ { Stream stream = selectedFile.OpenReadStream(maxAllowedSize: 512000 * 4); // max 2MB var file = Path.GetRandomFileName() + "." + selectedFile.Name.Split(".")[selectedFile.Name.Split(".").Length - 1]; - var path = $"{env.WebRootPath}\\img\\dynamic\\comment\\{@post.Board}\\{file}"; + var path = $"{env.WebRootPath}/img/dynamic/comment/{@post.Board}/{file}"; FileStream fs = File.Create(path); await stream.CopyToAsync(fs); stream.Close(); @@ -110,7 +110,7 @@ var imageToUpload = new ImageData { Board = post.Board, - ImageLocation = $"\\img\\dynamic\\comment\\{post.Board}\\{file}" + ImageLocation = $"/img/dynamic/comment/{post.Board}/{file}" }; int imageID = await ImagesRepository.createImageAsync(imageToUpload); commentToCreate = new CommentData() diff --git a/ImageBoardServerApp/Shared/Components/Forms/PostForm.razor b/ImageBoardServerApp/Shared/Components/Forms/PostForm.razor index 2389009..01338f2 100644 --- a/ImageBoardServerApp/Shared/Components/Forms/PostForm.razor +++ b/ImageBoardServerApp/Shared/Components/Forms/PostForm.razor @@ -120,7 +120,7 @@ Stream stream = selectedFile.OpenReadStream(maxAllowedSize: 512000 * 4); // max 2MB var file = Path.GetRandomFileName() + "." + selectedFile.Name.Split(".")[selectedFile.Name.Split(".").Length - 1]; - var path = $"{env.WebRootPath}\\img\\dynamic\\op\\{board.Tag}\\{file}"; + var path = $"{env.WebRootPath}/img/dynamic/op/{board.Tag}/{file}"; FileStream fs = File.Create(path); await stream.CopyToAsync(fs); stream.Close(); @@ -129,7 +129,7 @@ var imageToUpload = new ImageData { Board = board.Tag, - ImageLocation = $"\\img\\dynamic\\op\\{board.Tag}\\{file}" + ImageLocation = $"/img/dynamic/op/{board.Tag}/{file}" }; int imageID = await ImagesRepository.createImageAsync(imageToUpload); var postToPost = new PostData diff --git a/ImageBoardServerApp/Shared/Components/Post.razor b/ImageBoardServerApp/Shared/Components/Post.razor index af77439..b3d8f72 100644 --- a/ImageBoardServerApp/Shared/Components/Post.razor +++ b/ImageBoardServerApp/Shared/Components/Post.razor @@ -13,7 +13,10 @@ } @post.Title @post.Username - ##@post.User.Role + @if (post.User.Role != "User") + { + ##@post.User.Role. + } @getTimeFromUnix(post.CreatedAt) No.@post.PostID
    diff --git a/ImageBoardServerApp/Shared/Components/Post.razor.css b/ImageBoardServerApp/Shared/Components/Post.razor.css index 0233d02..2285ed7 100644 --- a/ImageBoardServerApp/Shared/Components/Post.razor.css +++ b/ImageBoardServerApp/Shared/Components/Post.razor.css @@ -16,9 +16,13 @@ color: #339305; } -.roleAdmin{ +.Admin{ color: #ff191c; } +.Mod{ + color: #af13d7; +} + .threadHeader{ text-align: left; diff --git a/ImageBoardServerApp/Shared/Components/Reports.razor b/ImageBoardServerApp/Shared/Components/Reports.razor new file mode 100644 index 0000000..0fe0732 --- /dev/null +++ b/ImageBoardServerApp/Shared/Components/Reports.razor @@ -0,0 +1,5 @@ +

    Reports

    + +@code { + +} \ No newline at end of file diff --git a/ImageBoardServerApp/Shared/MainLayout.razor b/ImageBoardServerApp/Shared/MainLayout.razor index b4d94cf..141e9c6 100644 --- a/ImageBoardServerApp/Shared/MainLayout.razor +++ b/ImageBoardServerApp/Shared/MainLayout.razor @@ -20,6 +20,7 @@ [Logout @mail] + [Register] [Login] From c1fd893ff02a47423ed0fbbc9ea18ee3b72d0e64 Mon Sep 17 00:00:00 2001 From: limited_dev Date: Tue, 7 Feb 2023 21:47:28 +0100 Subject: [PATCH 18/20] fixed the bork --- ImageBoardServerApp/Data/CommentData.cs | 2 -- ImageBoardServerApp/Pages/Moderation/ModMenu.razor | 1 + ImageBoardServerApp/Pages/Moderation/UsersPage.razor | 6 ++++++ ImageBoardServerApp/Shared/Components/Comment.razor | 2 +- ImageBoardServerApp/Shared/Components/Comment.razor.css | 4 +++- .../Shared/Components/Forms/CommentForm.razor | 4 ++-- .../Shared/Components/Forms/PostForm.razor | 4 ++-- ImageBoardServerApp/Shared/Components/Post.razor | 8 ++++---- ImageBoardServerApp/Shared/Components/Post.razor.css | 2 +- ImageBoardServerApp/_Imports.razor | 2 -- 10 files changed, 20 insertions(+), 15 deletions(-) create mode 100644 ImageBoardServerApp/Pages/Moderation/UsersPage.razor diff --git a/ImageBoardServerApp/Data/CommentData.cs b/ImageBoardServerApp/Data/CommentData.cs index bcaf8a1..14a5c5d 100644 --- a/ImageBoardServerApp/Data/CommentData.cs +++ b/ImageBoardServerApp/Data/CommentData.cs @@ -1,7 +1,5 @@ using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; -using System.Diagnostics.CodeAnalysis; -using ImageBoardServerApp.Shared.Components; namespace ImageBoardServerApp.Data; diff --git a/ImageBoardServerApp/Pages/Moderation/ModMenu.razor b/ImageBoardServerApp/Pages/Moderation/ModMenu.razor index bdea895..ed7579a 100644 --- a/ImageBoardServerApp/Pages/Moderation/ModMenu.razor +++ b/ImageBoardServerApp/Pages/Moderation/ModMenu.razor @@ -10,6 +10,7 @@ Welcome @mail to the mod menu diff --git a/ImageBoardServerApp/Pages/Moderation/UsersPage.razor b/ImageBoardServerApp/Pages/Moderation/UsersPage.razor new file mode 100644 index 0000000..871b4c0 --- /dev/null +++ b/ImageBoardServerApp/Pages/Moderation/UsersPage.razor @@ -0,0 +1,6 @@ +@page "/modmenu/users" +

    UsersPage

    + +@code { + +} \ No newline at end of file diff --git a/ImageBoardServerApp/Shared/Components/Comment.razor b/ImageBoardServerApp/Shared/Components/Comment.razor index 192a56d..1225ce6 100644 --- a/ImageBoardServerApp/Shared/Components/Comment.razor +++ b/ImageBoardServerApp/Shared/Components/Comment.razor @@ -9,7 +9,7 @@ @toggleText ] @comment.Username - @if (comment.User.Role != "User") + @if (@comment.User.Role != "User") { ##@comment.User.Role } diff --git a/ImageBoardServerApp/Shared/Components/Comment.razor.css b/ImageBoardServerApp/Shared/Components/Comment.razor.css index 30f20bc..4de11ba 100644 --- a/ImageBoardServerApp/Shared/Components/Comment.razor.css +++ b/ImageBoardServerApp/Shared/Components/Comment.razor.css @@ -60,9 +60,11 @@ margin: 0; } + .Admin{ color: #ff191c; } + .Mod{ color: #af13d7; -} +} \ No newline at end of file diff --git a/ImageBoardServerApp/Shared/Components/Forms/CommentForm.razor b/ImageBoardServerApp/Shared/Components/Forms/CommentForm.razor index 883ab15..90bf2c6 100644 --- a/ImageBoardServerApp/Shared/Components/Forms/CommentForm.razor +++ b/ImageBoardServerApp/Shared/Components/Forms/CommentForm.razor @@ -100,7 +100,7 @@ { Stream stream = selectedFile.OpenReadStream(maxAllowedSize: 512000 * 4); // max 2MB var file = Path.GetRandomFileName() + "." + selectedFile.Name.Split(".")[selectedFile.Name.Split(".").Length - 1]; - var path = $"{env.WebRootPath}/img/dynamic/comment/{@post.Board}/{file}"; + var path = $"{env.WebRootPath}/img/dynamic/comment/{@post.Board}/{@file}"; FileStream fs = File.Create(path); await stream.CopyToAsync(fs); stream.Close(); @@ -110,7 +110,7 @@ var imageToUpload = new ImageData { Board = post.Board, - ImageLocation = $"/img/dynamic/comment/{post.Board}/{file}" + ImageLocation = $"/img/dynamic/comment/{@post.Board}/{@file}" }; int imageID = await ImagesRepository.createImageAsync(imageToUpload); commentToCreate = new CommentData() diff --git a/ImageBoardServerApp/Shared/Components/Forms/PostForm.razor b/ImageBoardServerApp/Shared/Components/Forms/PostForm.razor index 01338f2..cf54db9 100644 --- a/ImageBoardServerApp/Shared/Components/Forms/PostForm.razor +++ b/ImageBoardServerApp/Shared/Components/Forms/PostForm.razor @@ -120,7 +120,7 @@ Stream stream = selectedFile.OpenReadStream(maxAllowedSize: 512000 * 4); // max 2MB var file = Path.GetRandomFileName() + "." + selectedFile.Name.Split(".")[selectedFile.Name.Split(".").Length - 1]; - var path = $"{env.WebRootPath}/img/dynamic/op/{board.Tag}/{file}"; + var path = $"{env.WebRootPath}/img/dynamic/op/{@board.Tag}/{@file}"; FileStream fs = File.Create(path); await stream.CopyToAsync(fs); stream.Close(); @@ -129,7 +129,7 @@ var imageToUpload = new ImageData { Board = board.Tag, - ImageLocation = $"/img/dynamic/op/{board.Tag}/{file}" + ImageLocation = $"/img/dynamic/op/{@board.Tag}/{@file}" }; int imageID = await ImagesRepository.createImageAsync(imageToUpload); var postToPost = new PostData diff --git a/ImageBoardServerApp/Shared/Components/Post.razor b/ImageBoardServerApp/Shared/Components/Post.razor index b3d8f72..2e493a2 100644 --- a/ImageBoardServerApp/Shared/Components/Post.razor +++ b/ImageBoardServerApp/Shared/Components/Post.razor @@ -14,9 +14,9 @@ @post.Title @post.Username @if (post.User.Role != "User") - { - ##@post.User.Role. - } + { + ##@post.User.Role + } @getTimeFromUnix(post.CreatedAt) No.@post.PostID
@@ -36,7 +36,7 @@
@foreach (string s in @post.Content.Split("\n")) { - @if (s.StartsWith(">")) + @if (@s.StartsWith(">")) { @s } diff --git a/ImageBoardServerApp/Shared/Components/Post.razor.css b/ImageBoardServerApp/Shared/Components/Post.razor.css index 2285ed7..2cee082 100644 --- a/ImageBoardServerApp/Shared/Components/Post.razor.css +++ b/ImageBoardServerApp/Shared/Components/Post.razor.css @@ -19,11 +19,11 @@ .Admin{ color: #ff191c; } + .Mod{ color: #af13d7; } - .threadHeader{ text-align: left; } diff --git a/ImageBoardServerApp/_Imports.razor b/ImageBoardServerApp/_Imports.razor index 3e6f6b8..3613cc4 100644 --- a/ImageBoardServerApp/_Imports.razor +++ b/ImageBoardServerApp/_Imports.razor @@ -6,8 +6,6 @@ @using Microsoft.AspNetCore.Components.Web @using Microsoft.AspNetCore.Components.Web.Virtualization @using Microsoft.JSInterop -@using ImageBoardServerApp -@using ImageBoardServerApp.Shared @using Radzen @using Radzen.Blazor @using ImageBoardServerApp From e21ac0d3d71aa9e671c188b64530d90185b3a6aa Mon Sep 17 00:00:00 2001 From: limited_dev Date: Wed, 8 Feb 2023 14:43:25 +0100 Subject: [PATCH 19/20] feat: moved /b/ to /m/, added ReportData, etc --- ImageBoardServerApp/Data/ReportData.cs | 42 ++++++++++++++++++ .../ImageBoardServerApp.csproj | 4 +- ImageBoardServerApp/Pages/Boards/B.razor | 16 ------- ImageBoardServerApp/Pages/Boards/M.razor | 17 +++++++ ImageBoardServerApp/Pages/Boards/M.razor.css | 3 ++ ImageBoardServerApp/Pages/_Host.cshtml | 2 +- ImageBoardServerApp/Shared/NavMenu.razor | 4 +- .../wwwroot/img/static/banner/mban.png | Bin 0 -> 171715 bytes .../wwwroot/img/static/logo.png | Bin 0 -> 163183 bytes 9 files changed, 67 insertions(+), 21 deletions(-) create mode 100644 ImageBoardServerApp/Data/ReportData.cs delete mode 100644 ImageBoardServerApp/Pages/Boards/B.razor create mode 100644 ImageBoardServerApp/Pages/Boards/M.razor create mode 100644 ImageBoardServerApp/Pages/Boards/M.razor.css create mode 100644 ImageBoardServerApp/wwwroot/img/static/banner/mban.png create mode 100644 ImageBoardServerApp/wwwroot/img/static/logo.png diff --git a/ImageBoardServerApp/Data/ReportData.cs b/ImageBoardServerApp/Data/ReportData.cs new file mode 100644 index 0000000..7f18ab2 --- /dev/null +++ b/ImageBoardServerApp/Data/ReportData.cs @@ -0,0 +1,42 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace ImageBoardServerApp.Data; + +public class ReportData +{ + [Required] + [DatabaseGenerated((DatabaseGeneratedOption.Identity))] + [Key] + public int ReportID { get; set; } + + [Required] + public int UserReportedID { get; set; } + + [Required] + public UserData UserReported { get; set; } + + [Required] + public int UserReporterID { get; set; } + + [Required] + public UserData UserReporter { get; set; } + + public int? ReportedCommentID { get; set; } + + public CommentData? ReportedComment { get; set; } + + public int? ReportedPostID { get; set; } + + public PostData? ReportedPost { get; set; } + + [Required] + public string Type { get; set; } + + [Required] + public string ReportReason { get; set; } + + public string ReportExlaination { get; set; } + + +} \ No newline at end of file diff --git a/ImageBoardServerApp/ImageBoardServerApp.csproj b/ImageBoardServerApp/ImageBoardServerApp.csproj index 756ebf0..4f3a75d 100644 --- a/ImageBoardServerApp/ImageBoardServerApp.csproj +++ b/ImageBoardServerApp/ImageBoardServerApp.csproj @@ -19,8 +19,8 @@ - - + + diff --git a/ImageBoardServerApp/Pages/Boards/B.razor b/ImageBoardServerApp/Pages/Boards/B.razor deleted file mode 100644 index 7c7010f..0000000 --- a/ImageBoardServerApp/Pages/Boards/B.razor +++ /dev/null @@ -1,16 +0,0 @@ -@page "/b/" -@using System.ComponentModel.DataAnnotations -@using ImageBoardServerApp.Data - - - -@code { - - private BoardData b { get; set; } = new() - { - BoardID = 0, - maxThreads = 10, - Tag = "b", - Topic = "Random" - }; -} \ No newline at end of file diff --git a/ImageBoardServerApp/Pages/Boards/M.razor b/ImageBoardServerApp/Pages/Boards/M.razor new file mode 100644 index 0000000..84dc481 --- /dev/null +++ b/ImageBoardServerApp/Pages/Boards/M.razor @@ -0,0 +1,17 @@ +@page "/m/" +@using System.ComponentModel.DataAnnotations +@using ImageBoardServerApp.Data + + + + +@code { + + private BoardData m { get; set; } = new() + { + BoardID = 0, + maxThreads = 10, + Tag = "m", + Topic = "Main" + }; +} \ No newline at end of file diff --git a/ImageBoardServerApp/Pages/Boards/M.razor.css b/ImageBoardServerApp/Pages/Boards/M.razor.css new file mode 100644 index 0000000..09af9e7 --- /dev/null +++ b/ImageBoardServerApp/Pages/Boards/M.razor.css @@ -0,0 +1,3 @@ +.banner{ + justify-content: center; +} \ No newline at end of file diff --git a/ImageBoardServerApp/Pages/_Host.cshtml b/ImageBoardServerApp/Pages/_Host.cshtml index 0775ade..6886334 100644 --- a/ImageBoardServerApp/Pages/_Host.cshtml +++ b/ImageBoardServerApp/Pages/_Host.cshtml @@ -15,7 +15,7 @@ - + diff --git a/ImageBoardServerApp/Shared/NavMenu.razor b/ImageBoardServerApp/Shared/NavMenu.razor index a716788..56c5d1b 100644 --- a/ImageBoardServerApp/Shared/NavMenu.razor +++ b/ImageBoardServerApp/Shared/NavMenu.razor @@ -15,8 +15,8 @@
diff --git a/ImageBoardServerApp/wwwroot/img/static/banner/mban.png b/ImageBoardServerApp/wwwroot/img/static/banner/mban.png new file mode 100644 index 0000000000000000000000000000000000000000..ed0449f573261509c1ecd61b6c7d101feb282b01 GIT binary patch literal 171715 zcmV)ZK&!urP)0#dVA@rsPeFS|By-H@{ zkV6hR6gd<};0h2s0o=8>+g*EAW>)F{J02&}!!sf>GOPMtQ1b4q@a1fN+{5F<@g;h{ z_dosKb@+nA%j0L^fBoJ6C4BJWqi}US3a67vxX^EQbrr6!_0vE8Unx$oG*=|IBF``K z0J>o?(#E?Rp+T<~M*R?a{Oc*A&{JL-u1#QMR1J!_zzruD?se#iaTP12kj9ZP*4If5 z2K_J|kHXgWR@mR$3;X-~VP|JITuF~-XJ_H~_}H$4!659Z{O-X)*c9w!It@ohN8#k; zI9y&{hT(7+wzs##_SRO|*w_%4UYH7IXJ;oodGc0x@4a`!qsNcJ-km)whaPpMU9PV5 zlR&+G-{|y(dwDSlFQ2^(ryrk%t>fKrzxN<)4z@xcJ+)L8U3wiY;(uCj9Hi8*XZSU$ z%~SQ)1{lkBW!Gb_l-o*bL578lf|n~Jmef9oG7yw4)(|4?RR&=qbHkT z=S~P4n?cW)aoD){wXpm8e_Rx~OODsy^^p!5Wu6Gt-4JbUu!J|LbtL1xTZim|QkDv~ z2&<=^!K4@wYB8q(of9cQ>NqT5rx|Ssb!Bsog=mpjO0ojdSRkl|vWDzA*|Y(c0!OsL zzxgl!&Hp^7@MdF8{cCGuJG^`E%i+h*z7sBHy2FBQoU54`Iu(gjDFzMdMjKFHt8+rQ zW4$Y6>k>vse>%0b2#ouKFenUDgz6VR3^kKk>B@kI>`6<*uU~LW^Xp{uJY>5rWsH)# z@yiuM8RL;3+%WK`lWDlPxGsK;x zPYk!;?}=ul-B0%i;zypWR1JpLGEgtV;o)KUC2~Kb~y_>!(AElqpD84 zV(FC%=AkC50z%y@87m~ZH24bS08P5*ikRKO;eqO#LR(oA&Pw@ByzBDo@=|6+`J0fr zs;6awq(TvIf+wGjla*&lC^Uu6b!`DOcFxnUO$^igjb%2Oc;)O zVK^3z-Ym?5jMTw(7z_s*s|#m>Dlb%x{W5ANGHEZb!^Qb^I64%a^D7&-hr_-c5Z7UI zljjF8vv78*XGC}rM&VHyUA>bEygXj1QZ~?L$=1PaIj0JQkH7QwE|}#!ODq?(5uk)@ zf`}BHP6@scG5iLwhU^6zYh@J5SjwXgpe|2BG-OxB^G4_dEKBfB7^vPMs*<&(dg0FI zo^Gs*@Z;w{lp&=XXQmrVcMx$K{8gbI#tIcvC4KPldIDyKT>%2tO+z#kO@KyHz-$ag zVI+giZYpGx0f!M6uZ8heN5R~s(7(okT2#$zREH4r{H@v~E1Zxfs}vt~A3d}fiFiYY zqoEm*FhH*uqg?TdUZZ2Z49xT@J(*6-gPN9KTwI#hmA7@gu$Pw?R!t0420M5R2BNPt z#yCbPhH*5^`^M)~c!#eK!_#Mx1_rt6L7zq$Wqo z;k%^Uo4N~y3d~JJsSsKvK^>ZOLy^jCjJV~xnutw&oATT0Rp6McZE$U6HGHe|Y5*$q z^71^L0=q&pm@JuMr17d;X^G+~jTXQZtb&t~E0d1k*Rr5K(g@Zf(*mU?B2D=X6<=Zy$Z9n zJhyBx&sgy~8f=8${Q3VXeDK*%!(adSuVuK5!bCUP3iG|LlL_ zWkc?eVg$bjfU)}@B%%6X=fa;La zWn$aZ|Fzx_Fl6}=Fl6z__Vu$jaN0<6@5>G=um&T={KD%YH^|a;a%%wF1#Zr_Ua)4>*TYA8j@1S;=lmvOt8oUp z2ptetZ9XU6`C2POJ=e}{?44(c5YWp(eY{?R`neZh_pU-AioTFPGaei$}JzZ)L*|J&|55Z@TeNVfqsZyYDH&FOCw1P>4Oc53I7*uX(YSoBdAb5Gp z)#}J=vuJW5ZGEjEflg*xXLNpku0iQYKTWk?ZJUuAjnxe^I4M7qXY^8DQoO8qe8FQW z0G?I!UV2(Z6CP)0*WuaoXJV}ZOrF?F{iak-xJ)5!XprR1+w_8bst0Rer}EN9Ltk&| z)AR6y=if7fc-R|-_wKzPwzbS7YGSeC;5C&kLa&j7kY9AjW$4}=Omf=B`WSdQtu(zN z-CI)&GNiogx;wotg1Qi^z&g(VkFII^FRk`Uz)Ptu11RsGWq^74 zGBMM8FUMUY-MiM3t?7Q~AInG`X&j!N%DB9i^I;H%n#l@R@}Tm(6yI|hv)pqm<-%FQ zw0~dI_Bb_w=~J!V}ByZ>j{ z8~=LP2rEwYd%aOtI zPrvD_^K-d8{f7B=n&PiC${Q32Bjn+oC*kit_)p>W=?guOhIXUPuC=yihIda>(HKt> zh<{B19l9QyU{=l-LFdRD=U6wa1?9W(WLMx+Zf_HX5N1RpGXyM;NPLsU*fnD=Qd|1h zmJTF0@pbXq5{=XOhZS)X zjhKEtUFg=6jYuWHEkzRD-x9?ZGG&Kpf%!*Pl($Ml*EQZjt~l;3Ay|>2lBghdVOK#Q(M+xc zb-JsJ$8~fYSv3}vA{3DVkZx2H`d6EBc53_$AFK3K&zioTjl*zwG}Tfn8J8E#dTA`j zJ{75+EYkkqDy~bFfqE??^J!o z4>S`t)1CrbIv@k~`g*F3Q~j_LzELA(Q&v%_hPqX5-lhjZ6Y1g!U5DmvTRy~VXta$T zbu<^+KCe@yz1!Q=Xr=fS+$e0BmBM*F%0karer@aLDT@l}N+RRYR#t$PAZ3GOG_qu) z2er0AGUQuNN-IOH=luHnzaD<{?0ZZs*c3WOQ}pbmYHQ{WRH=w&u$4=oX%a}DE8Vd8 zQf-P|$}YhO`lev8y_kV;8vHO|^&9Gx0hSZsaXmdd3E%$YTUH-5_=|7-QuG3JQA(=2LLby+X_%{Q z4qBHtFa3gJv8`iA@%R@k(oNW>?Y0J;c|TtRxdx>hy;VDi!*ji*(2*V*3^YbVo4 zc8L;gyy?<)%f8XEvMyNDwKL;60Z`sZ=t|dhVESrM8eY`P$68lnKg)hTWeuB`~gyc|D{Vd@!NR7j$CjGhY%ORmnRpvAi9eb+D z%X&Gz6rMb+!eBOzzVvSNnYGmaMRnwY8>sBMkp z$e+jcpMB|{hyUZ7|67>IK+>%hy?8fn!JA3W%^LfFZc@Fm+EGf%;Vm^VRf18NG&*;T z^*cj~2A|#VrerHIgRfmG;9`$+<1oS-QHzrA4Gd{SAdk0P^6`G+=`?v%9@mf}fAmDh zx8cYGcz)ost`>VbuDxXti!@mVz`#Zs2JG?4QF!sD_<8axG@RG_5b6guJQR_@tjsoYL|DMp0cQdmQ^?H@%X&TRMFukdK0YjCaQUYK>HhW_V{uL^%9D%g;$WaQ9AT9vEXD-Cd~WG~|l&r&$A`yvCz zV*)nEuu~%}(zyMcMBWYU?8cLNt(}Qe-5{(x?e-9_iq+80RiG78Ln*AU=@H&A31-j{ zQIdhcqKdmtX$~4BPQwd8Mxib3aezoBA};(DuF>=uY2yZxrE9HC4nJs-J%PsiuhZ zW-VL>K8#V$Qbi7110{yGp-jBSWBoLxbTu1`_ADHpABMmD>HibPgK_vTzWO`iz5DNr z1~L})a(#)q%<6eQ0%p1(t2GFIRg?<7M3zc^mQb~e_R9)ZN>cx-w6KTvt%Q{PZPC0H z!Il$g(?dl+X&p1N)iy%U%aqVUETe77W#sB`ZYysUQCERoLB2{mbisR5`l>c`yCg33 zZRo^r-MV^tS*0uPc`0aL%tc6V?DQ6KWbw> z6JwhC!$`Gf1qd4BF=8j$DAm&@sf~@HJhIHF^)-&`Z0(&mn>js~xAqE$hsJO@9j;jGxlOB>X7a`4?L)OF+Tr17f zB}%T7MnGYxtbD*m0;$1Pl3X*wvJMM~R8*8cPziauQn(}mc_-Idk@YmGcg2HR5B53a zX6?l>Mepcb)WZ+|UUgM%Q5coZ;Fd|YBKR_LW|-QJeaYkEz{3pHBEv38!&tdN3x|CD zV*3Nx6ryoTUjo*Q#)xDCO6;(rSCpkxytBCo7=;+dOy6H>7bf{L3{)Ze4};Q7zbKy3 zWu2`?J0q=$BSkf>B(J9#sA>os=$IywkZiVkDKDz=5(WnEcpRtu@tk6y65z*x$7up% zO%vG$ERBk6w0eE^D*X8m{}dN*_!qzMJ31HleVych!CMVzEt>sQzFM|4Rlr9Y8MG@b z%l=tRx~Mc!ZK$naE#y4Yb=gF74tYB<_^raL1|B^$>7cDFtpNDIc7;!I7vfHAp`baV zN&Z@lb=tL-(CV4qR9!__sa~s#^Z8(Ot?Vk&(2tje4lt}k9bVtnn0rSa&0~$#GkH`u z^647ME#rs;*-#31A53d2%HKw67_C8FuSGZ0{&BWrf-sPRc`E$NPz9}KJlui!jWhKpAF&%Gar$bwJM9D>2NPqDL z>Rjiga7^+3^4s4CfB(_9bu-8?lEI2eh+)z-bcgIpQ8%za?EwA)g+{QK9j=zgjnB=V zaaTEadYWrl1)cl?x~(NL1mQtnnPmq`5axLRN2Ak=9S5UOeozfg8nEoRsOXi&FpbkZ z(d(JZJ+SpjGExy%al5M0B;%QKEEC}CB{F=221%7+$Zl?Kg*%$^=SVC2sunnM9rH8& znRk>W2xb-+;`YJ|eNpV2KmNbXFvWxW_QAW2)BU9~5vEHpU3LL%hsm4Pq3H{6I>004 zpT=*Ef9ytYx+;;r^Xl3*4u8wi&Gp)a0Syh@64=k7KQyXgiD0BIY*UDo+Iq@;Ky-;%8@f69_D|owE|;# zREJ}pz<5>R7oP)~-_$ci6m&N0+1~GmozMQe#rnA((~>k#_@#o<{35$vFLS_oEM-u1 z$A-d%=0r6Ou%@#r=`~UraZfgO802xFMRr~`fBqLR(96&qwxrU))8TTOo)3OoSxH|J zM5jOAG<>lJYNkl94AZ+0_a28`t#O%Mo!ObFoTcfXI(4|u`x*^o{$g;6yZ&&swH#`Z z*q`FMPnV4bjkhxWCK}ncv5J%tamd)H))|V9X}F@FwzGE@uCY9p7AQr>m}58`Mk?kY zMykdv1z_-OVw@5$>Qb}`v@KtR=_HJ8KtV5ps4jX9ztXWL3|6#Fzjqp5y?Uhs`JaY^ zd-v=!t3KUt9#?1-bv9!e@2L!C&f5c@HLah#`ZWCc5B^MW{qWnr@H^qHyYG}ZVqb=$ z70UGI6+wL0b;`3YFD-A4n_^obmKLtfzm7KzO#bH)8peRGtf_Z)8yTv%laN z^37cnT2NQX8`1m%>d+)FqI3)^t0AZD9it<^63iKQz0rz(ZM~_8m$YgkC5R!^ z04!uNUh5fftJSUJMnEVfq2E`XAl>3^n}>> zj`wwF8(`%evbC*x4(Q8NRKL&i06k9_+ihG|x-Spz<^CUsjk9lr;rUk~7z1qELf$?O zTPh@GRFg?6i8`uZDXJr1*MxO>#e>etmB~7qB~TtQArc{zXbu|Fk-9(UOPD6665Lp* ze=e}9tyD>|G2%AE0)S*#kZS>Go&kHmZDMXyCFVGJ?29!}b7_h+M$Fp>?}x8G`K9nz zKlw|Yk-4F>GcR>OFbDT9ZQ%y0x0B7eaID=i&HJ?^9gS0$(T%avKxF{XEfc#`tVb+U zj*?zAN}M!CVx&WkhluMPiGhN+^K~e$k!CbzBOJL5G{{OdqRi1qB~5wkh;Z?I>-|Dt znkaGy24gp_Q5|TYGokRTb=uWgaf5J%u zMsE^6c=^*X`_3P0P3lJYt)KrFdRciSuRvUG5QVe9-T%12-7#(t(s_IHk@k2eE&w}` zP6!cbO|+7Ovs_8m5_`4CDzet-k3R1GYBk1lXz=HBYM9JHiul6BHgs4iwF+i1$NF&SQ>NtBMsvEFbjqv zV>46loEL81Qk`FFUo+&nBd|DD`}2pfc>ZhwpD##p>WeMof;=8n{llYral!H~owv$a zs`7R8v<8;rtMGe32ZPm?ksbU&7=D}>sB?jr$4~^nBxFgIEaoKO^Jt;W1?Yv0IZ7p# z!DYz`Xk!8-Z`2hC)IG-=d8h!=j^j3mr`zz_${gS6wZXQP&BxR>sOGXS&OmKxFpRc4 zTl?Wl4}LEE{l|Z!2GBIJKJkWeXwwh6^6!fXY|^pynUaZr9%x8!)HJUGBY0t}7%DN4 z;{kl=K!2VaJD@o^3x4sfH-(6U1i1c#mdm541)FXcWnc)DV?f4qd?U63!GPoVeGBOL^<^U!`S{|lnT!+~2*Y!BA66Q9%0(e);*^B)<|(5h?{)f(p2z zvZ7l_rgEflv0Wu}5;LXWg*Y-a;gG+gj9pk(V48SWfZ7u@9lA+Fo=(e_$GcQKW9UR1 zvddzXuie$4-9=wr#CL)GxU zb!p0aa(YJeFEncEEb7^XzRaidtS{un)GqxQo1sJ*CjgsOaU`(+fpbhRb#e-6yrUSE zEaT$FVYBO{@NMcIUFwIy%TfTG1FT)e^E#3jH9jxmbBeeg3&O+Gs`FQOz7-~W|1pdX zf6I*GdfAIy@hAg|$dr*Ky8x8rY9l#8rO7JA@JI%iCLN@fev#?$2J4A7gtCmbSph+y zd4F38zvTO7BUH(6msL4^aR%xVN%=F6Nf}vFmFhZwt`5@pDd#8{1MPn9dkYNyEpuxaoaA7cj zK4l(a2jJ~i1BDW1Or`(=Ogk@e;5;wVBhM*{IK7|$WI_vm@Yg@q$Z|+OX@D3EF;0i_ zl%5C>&9*6C%9h0B6s+=akLH}i2!B0OMP>r=Qk+pjjK9nc*kN^JP%g`N% zU;FZ}hX;2uPpZLx{(oE@>v5)j9?+}D%Se%dVtz&fqPaL}{5Hjdey)Nh`VBJBMd$rD zL+(J|+qIEKMsl5`%eWGcm4Gv;I@G&@(V*K3j3-u*D;;Yb{f%C|zt%B9ZW_WvT|JUw z2eWHV*JwFJ6Oxx#uM5x%8CCd&l*vt9H11O$tCI}U;^m()n&*H`$?I4s)}>-(k`F2` z|2P`(vdUd*9#B0I>?Y!QFwq!1(PvGk!m+PN=_FJ=i6ll;LVS)f&CgOVKAo!4p*{d} zPhQlcZwP90LF6(cl88y_y|nHbK$a}&5=m)$fy4V%`AIZFEo9WdIK76elc*D+0j13L zXK|TP7jXuZt;1v;9G3&$YvQXrDJ1qqZdp5z^eSFojDeaeITa|0WAfeKeH7l87ZoEF zgJxUbmB$d`M!eJwv8+LD?C8KNVcRJhbuDEBT`;L*gE8qX$^dOYu-toS)@{UOV1N|x zT!HQD4VNA9cF?_!5y41hnuapMR8u<>8HE!Wei-kr4~$d-aO4%>mgj$*hNppZc{Oe! z1_X*ogfgxYH*N%@Zqdx7^WjOQoHJKX^~ES;m}=_&! zf#ZivR}7ZCy6bW=xd=ag{-f}x-~A)4Lmq~2eCapBJ$(+BzEKGf%CaiuH3`6te@)q& z%}P0^5~TS^&{noY!kp9+a4TMh<2rUYuD2P|>fV4ZeX*{;cO_ZHsrEjqZE9Ck)^47?3d=6AZ;Eag-mNfs{RQkX3fMV+=_1bc#EN^ed(D97j$Zr^&Hte|6A7Upw+;AmBB{i^_H>S*qHQuTdCJsIlaE z!e#}Yw{jogCbi92@tIOSD~c~FLW{=^pSup5&%#tj>gd_OZWG?h(1Se&Gsvobs;LaL zTQVV$M2ouClStu!Xlt4rmUJ6@&XHTZH7qM{MZU$tHaYSNr?5qt*OM94r9mKHjDfmT zvIsELl+-zYrXLC$+3)Qed1Kp`kNavQdI{I@n?$vTyj$uzs4m*1(U4k zwC1=~2IlYO>^yw`)9={ZIdA;G@pHcwcE>terI62%|3C33>Y=_W=rxv5ZGN7vhkrx4 z$Us98TwG7b+|TcCDoe%{-P~UHXknD{MGvJ;+8gM`@};~I89tY$$Q9clOCnYo<(|#Q zld`ZbQqay>)`5}-oZS~IC?Xw4y!o2wm-$VACTLNZ%aGtC(URn{NR?bnU1>`FN}f-d zhIRxX=S#Cjbf9q*9s_Njl21d=62|j*f{QsXI5A2%lS?hE5{+xEEuG2PF}-A&6^5;l zM1Uu3UmK*LIg|$$t~f{-^KFBcc`{@QiwVyi%2|e`$5)u%|HCkl7qx%>Hq5F)fUbjB zlWK7_<&a5kO;%Z&5_CAf3Mh$|D0PvpaNtIdbio+JRE9d@S>6{imS-~DN^%vYb!7PY z8>o3DmbA{3{r9w!`@QhtXFpYy^sP1pj6XB*WXUi!oCd}SnXfYbWT;hbH3PF-S12}E zrig3A8ElQaUq!>tI`tl^LLkzCIrVPhEM(oK)xqTMX)qXvJG;AK|L(qicfzX(-Pq{YT&w~4*Hcee@=)2KcS88<-|A}N|gA`s@ z`&x;NTD!_S?#8Z-_4X%(v&*ya!>8XD*Pb@a?dp@LzZ~|oMmfF&6q3d2rDDc-tjJ=1 zo@4sSGjAc?mA_b}A{13$5TJxM?(gd8dTHRINYsn6P>i!w6eH{zGk zx{ai_&8k(&;hQ>Rjf~6mo{ohz=nGjZu#UJZv_U@p<<(vghK#)br$8d$_veBbMMjBU zM&ej&WPr&Ki+A>vOBwH7ZrM!YK+lYz^{9-!I59>8jiWk1f5vB@aBJe_G}_Ve01V#L znG8|}a@nyqGs&}PHXG=$ex~(haEkd*#_i@-G&*^pGCof)Cg#ZK+}52d_B7G`!6JviVzYaa8mHvQ9A3?oHL;z`uVWvcGNqJ$xm(u>bm z)Eucc(XJ4HMoJ_v{254ly_!VH@1Z8RGQX&AWt?bHRyPCnwzRlLV{GW0w}1I7|61!% z|2n)rJv75~sGDwPhLDUuvqK|cj3f_CRm87t#Et}n{q(0rACBI7wKpc{NiUIe1gCSx ze=(hw0a`8SpF9c=A3h9s5AKFtc~M7Nhsl)w zg$zE7P~KQiG?hNm)c;V2;jr#WK*5z!+w56u-FJ9y-X#fW=gi8cARbZqyt7F=b@>(-rxs+mz4nF=oPw zKVoNHPtlXh)9{^-zZJGd+Hj@8^H<*cRT-;V+sfeU0r9{ss+4AXymB?-m7Fg$fht`j zzmnG&yq-*t`KAh9NxmhFmK3kVsw?oS?X)VqcNF@1K3s7Ys;2gB{M6L{Rqs+JrN(BARLj(* zFk)v@J%i*a)ktl_C9>fIooE2&Xw;d;?hzkm(FrU;-cvJP8Nc;h8ILw>Llh1WpV5mO zcNybnK_9X z`Sa9inKp~U>hqJa-LVSjvV%MJ3fHENnhTneY%9w|E796;1Vo+kdX~6pq=`N-URJ|v zZlLDMONrkg?!1?gsFAHixxe!$JlJ~>j%1*6#M4lJn2I3GuuzfR{zq;Yg7LPKA!Sf; zIlxqK@t;~vFL(( z1Vfa(m^M`wK;RPmY6<HR?gZZ8V4K=WYmqQC6$Iha2)bXCdMjjr?_Hp za(17c-)H;)fp=_0UOO;oC;G(RceG*7yacM-FTVA)u)DbnCqWd!tL5nxuXFuGL=&Ti z2KhN`4Ol}~tXo52CA*PFN+PdwqK*o&u8EX(SDe`7U7FFdR(1hR)-*Z$ZQPQ2pyQej$6xI)*^fumLl z-d1W(eKgU@CiNSxS!@=}spA=ox_H0mlNgdV=wArM0Y# z^BgO9vG+$|3j=j7wu3FKJr$YuuoR#ky$-ELoZ<;sPb1BBdQE-UX*ZRpwAPNh5D9^$ zLq!cvg1&Z?dM>@6YN#)a&n}-UP&j-Nq6T&StVU{$1(8=%F|zKC_rou~`}OdnPkx{` zIPO2)0Q$N`JXcc?)WK@&a?hy|gND%Tvu_UZCa!b;ZIyc7c>dPuUe2)$(4C!KGe{pj zek;87_B-LNCr`reon13bS+{v{d10H6IAioeYdEPBc=o+}#i7ZRKbxk`&Q5KBz)0mS z7huYr?_4@*2SWT5yerV*(oTo`@h8wCj(64!O0~=#7{BIOx&YOOZ@2`y&JvAiO?(6~6u9-)S0a95(c6zkl-R=fn1R zCxKJ6sLwoe{g~@yeF}v<^DenQDeuh7DBK3GWjyN2o$oE`zm82MZ;4K5Kl)P)4(x(@ ze%sZNSHWqcw|<#Rl2TYnDhQ+qbp%u5#OKP(ORDLdcC~aN#W)gQKNpIWQ6tzg`ZXwZ zlvmDM#)<^zi14yu2%%&K zxw2;|&X7moZ|p!AHG;9fT<4)yG4tY;V!FR|gI4J~0h6&vAQOWE!J#qo*bKG5w-+8g zd=#EMc`H18{5b4sYJaGDv+Mon_*m2TpM~cyo`=`3UYqxnUGWE6qk2bpJ6f}9M{sF+ z|6J#e5~v@vVKmSiF>$=EY+|C!v?N0^>WR1EsJn<8^T~5PQx7{gPlFK#CO-^d=u*bC zy`N*sf%{M+-&#dwd~y$-mPh3Uz-fIfzTeUYFkQmsK&KICe#w_mxRO|h<Y zeDf!NVe+sh;FsV26~*PzZJ0wU*ip5mf%+z@SPFmJ089D1BB<0V67I;z!F#7K+McmqAM zo4|54H^HT(fk~f{Y1w*lN#PwfyU*97Hz&6){*CZliMeubLR2(YHc(xTmH4iOH0MCa zIJk2^JbLgjeEjLBy6qsyU=R%;yIIVN@!KjIf%B(i%mtkg2pFiu zZM~)j1g7{g_I9++^x*D6xPQPWLbbM1c?=H6rzhc=HbQ;y!H40ak3R~pU%xh)@9y8# zz|z+)|7{t#JK9)vC+zR(;$fHg4b2PRcWXESK*W5z3F%{POQp?d)!Bk1qC+glMZ{E{j5gl zn>0}kxlUPaJmWpuiA)@eD*9G~k7pEJF()ZR#(WvM*IMGW!Sf8yD+G(* z=BA!wlk@O;`ftPii~kfZghbiPMdl0Cd z)$6IOhg46Ntqk5O3A{lX@G2v!6Hczs<-yfvq`F}U8gYy|-Z0&`vwT&AHAEX5GW>M2 zv)G)kFny+P+kf)()9}$pADMxAEN^ODliD*6D(g4dn6$OEB^_;983wNnQZ^uIfYBfl z?}BKc@+ys??!gSeL~-Rn?Et!BpSs-cJ>^QC2R23Z>}}o5U-6AzRrGB27GRH&uFwHq z;LVLq)i>@2HE;3eakxCch~8e8QKDk#A|kprBVUQh^+ouH&%PJ_=A*xm2X-hU^*!@C zTZf@~X$Np2xkBhohMYWd@T=r6WRwzFcdo#eMT?QHa4BYrlk14GG_P4qquAQ_b6Tkk zw;AuihbFJy>PsqC)NWB3nc%6evZA_V=eDg1TSsc1w~7qhuIQ^va2YznJ9sDhh0ONC zZ1>{|l>oG(OpDcAM6Qf?WhD~KMUTRFhr{T4l?`P}JvETeM+qf_N_dhn@J z(^cVd1s_9|a*ziyW{sZWakg%1M_ldfZG=~o{}8q&|14}@{nA`vMJ!e+t5^z!*i9iv zQ##K|QJ1w*r7xt2w-onBPhB@F1bYx3AG;s12DhAs~ zSA(d$xF4VWBs@HR6!y2ZCW) z-BfPZL7I1?_$?9S#@HF|hj;IPCEVNpb~rizFt!IqsWcl@kGc&8Zv0vHo6Xt{5r|RvNgZXx2SJ8TC?M-qa}{^x{Vd4z$kp@uNrKu8dT? zslc4;q=Jd+5Z}%b1zqVU!<6+;d@+ShV|LanyGbO=;0%D8>j z-X%LxUJ1Ap#VXLMReq!Ju{9Vo7?(PSh&J!1OAzB&H3wRS)f}ri=Hl33C*q!Ns*#oJ zPiHw&Lc+r^B@C`K12s7a8`pRBEI8CSDu;!vn3{4E*;`A2#N|nZ2x@ylp7=V){9v3*9YCnLC z-!3az&E$Cl-C-l zR05Mk4Qr$XT8LrJxRuQFiT;3w^391+hOj2j^xAW7pP#USG> z4Sy>%_ur%D$lx4j8lvHhWwq#L8$Km|794t&OH@>J1aPKZ{!Z)X{k|elN~cnAONkZeFUs0bF%zwU@RB}tOSM`~W)(S7*tRN*YYMtt zh?)oA68e#5GZ*ej#+BNT<|lmOIJAh7kG&O$CZr0``iWH3^{EImB}A7j0)4rEy(uSz zHk!)q$$?R9m>t+20roNIP<<>@J!tqURMbWEaGD{i*)04W6B(Db0zh<`aof_`(Xmck z;d#QB4f|IzI<+R1BN2yMKEP4}yW>qR1d=52A{EUcn+VCF;H#{A1Jw+fyWyv`IEkVs`TXKR8!oi zVOP8IeTo}-nK@w!yeBW?uBO8uK6n(~dh6|QU&h^r*5;a=q5}>_Dh4W73{*25RTkF- zMH!4YUP*qUjjSwvz>|z^Ng5f!hc8AhKcC*G%y#N)U^7^{VTogeqD&AMZN<%8Kbs&td9XJooKLR zFr_}Y3i#*kyU;#2$q@O4plaSmKy-9h7s#jliwHjGm_CugW#qc9Oevi&qEf9qyH(7f zToU;Nz8OZbPEU;g)|YR?Rk!h7PQ}u zszDXK4~lwMmBhwDG5wqO%t+AYXjHEMcv6{~KRG_pRQ_uX3>t7GBF9hd=@_Zw<0JDz zVnyE9PX8y59^2G7YdA6ZSd)pzlubq$rsa)jv@t}ho>R)>uh2vkqrA&mn}k<3u4U4+ zj;8oAPT|Eshj0-erN=3C-o{x=Mm_s_nIK&0js05Z)dIsfiTsgH?7B=nvA~{9VH-M{ zWTU?&x?10KCd2bo8>cSRJ+&-B-|W*E>m5sEWT<+exiCwY1^^oZx^5}1$66pqMh7_z zW{#ZmCcQKOGbgbWyb+*<4lP7K<{!cI@3Q$dk-_0(%QkY1ayxzt*qbjx_*@XuNu_Q< zh)(TU!zY!jQKD7EO$jasu#or$7pb|#7?DNn%bKn%bR&ew*fsm_SP7-VXHV>@ne!UMr_sOxKaS1m3S z$;bLpejM7bM}~eHpl6zj7vA3fINZCxtrrfi^hgyp|7-5(yOJ0*6YgXkr zK!__&0KieCWIVY=d^NVS(W)hxG?-Qx01On2K8qPyYi@O^9Hda zgH))FOrimm-AkQu=l4r3oocmfQ>nbam(Z?qP5qzB}+#%`M_)3iT(9EjsOiOa&Gfr?R!<6(R2DjYo62#+3Zg$MV> z+H-($%Ip3&rGip zAo8DcniogjR$_vNa4y60#mg7wt#pqk#_0Wf_id*-=blnCj*}uEgO!8vPju|m^Jg!@ zhaY|zo<4mVPPIf}rmuzA;H>c_9>}bv1bVxLu21!2Y%B)!h8I+Cz4Dl{{?xptMP268 z`q3~&`PibYy~UQqV+suBr}K(+k%0!&%u9%U~<+dU;=`jI~fR(>VrPBO@W|~zOw_92aT!uQBw!C)PgxOJ!IvxwCbyZzg z@H&R%@it1ORtRx?Esz$3ZYLDQ_wlzKwy88_*($mU?HxP^%G1uMF5hW5OmR(R$cpAk zm}}gfT`M z7Y_7^?QMBaH?;JM^`|=SPbUCe%Q0kLQyG}C^XU$^88cl`HjW3aPi3^gNJSx&OKqCc z)c@s$_9DpPa;1%}S{7@vY-oM!8~sA6fWWI zw@Q*FAyeRaylE_Qh-!HQ5eN2bS;-W>%yg*oTIHea6s?3>AyTvn7_JM$Rv)O4CQ&1n z%TvJ>DEZ{6=Nh@&`*R!gM5Bp}CW*sWAOA|&(&sIYWuWRl(c7aQqe9@Vjlh%!$}l4> zW>`Ld;=pGS{i!knYgymN001BWNklDFI~~AS6c2SHBn}J!Wk8z0Dg`6w zH`NV&bQq5b;Z2t}RNiX$^tsbL8KihqG4|M~#MD3aIF;x0*|X>2BN?ZhlltPtOIv@+ z6uZ@3dH^T>IBF!mL8n#27NjGX(P#!KQ!?^)x`5IVMyH4~_9{?66iuzmDEyH0mCU@~_U%gYW>X_TUDol8N7 zy1ESA$P@w_unX4>vkhuB8QLhVP=@$T`t-66I zUx$g@mODH8_=$|xsg8MKthRYN;_?VEHghiOM274{V>QS2$*iQ_0vAZzeJ!fs`%cH4kp&O*s*)~a#6fl5@`zUq#f6?lG<~>nTbV# z#pewLm@5pb7{M&^<}=2t1|H^-vTkjQXt)pq*qWiIE4+|(q9Z+yHPCRwbF35VI%m@d zwkDMgMHqS*gJ*b-Wi%cg9?3v`7M|+If&OPYKNMRMJOVHni2N)rTzFX!NQ9z(;wO)3 zJWh&p>m;M#Y)z3OJ<&0l8H_~RWET;O6|&n)f!czBk$mLfM_u&Cw7{BEY0_wn1{-02 z^dQ{3dMj*Q+*LbrSpS*<9%aQ^Xu#ep-2&EJ1c9dDT4{rs<1UDtqSeWGW7+4ttwYxF zATO08LCK@^YHxolE2>|~%aQW*ZPp3el7Vi3Zqu-!>$K3~O@d^E7Vy5Hj3#kg#90HS zg_?>`4MbN7hSN=_c^j_6#$laCm!Y9cT^7V|tN-#&=VC5iS86PM0cvm>K6>#YoM|7z zNS;iYoia|j6M10CNR)AUEe|G*Hq#h=pO%pAvk2Fvy)n>$a78L1gjr$nX%--QABAcE2cv2@il?BJ`XsDA0wCU=Kb*x$z z(A)nsOiunZj9&ipMIEF$C|<$t?HDcpnscN~%_9ZMJY&^ZTiX`2OeHy7k@oCDJ+0i! z{#hcmf@g(}RLzd{_cB*t6{h(Hc07l_u{NDhWZ6Q_b>X`GnKV#y^~`G*W80(c@YN?@ z3r}A^4IFQu8loj^LL^4#TJe})xv`>0C_S)Bua@1M@$`Q+MayQ`@|SM&<^*ltxdC(nJSrZjFi@_vZ?CD^Ov@E_3ZS_1_J?^ z;f_dnV&}#?k~3&As1)@u-qE1t3m_aP!kW|AIo!DA4Oy5tL3OqDqf8NzP(WtaKZ6y! zO5-*1u{at)sT$B&Hn6GoySM!)Jl=Xg?DZb$ND@u)w*^;vWVrxo`d!FfGsAh6=rCQ# zEKBE+E--WG)|it@>zj(<`DtD&!KBb};Nf(VV#{;>1`=N`QV@?vy%$6rhh$3E^Bw66 zy3$>J@LNfQv@QuE*=tp8Z9y{TNivVFCtHD4+}AnHx^#nT>Ofb@OGV&?*vFSfBHj>O zYlL!oYqftP(}b7vZ-Z?s)7V;ere(C!#?>=rwsjPqo_rWS_~-*oqff$y48RfNtbVu( zt}s-EgQ?1wq|PaI5~$|JoGQ$gpKP_ z!9|;xLL+?*>vjwkGi*~WH@H%U6?62JXyL55)J7^j#qd!GSnE+`s7@dLc^DpjO{cZ& zQ?eLp+7qC*KGA@(Nc)C4d4I~&QO>9_;ygoZL)zvG!Y^dZNkos=JY5ruq|FtlQm2(N z%#a+UlAXe*0LrI`4whD4X`T&vC}-XBf||6GyIliyQKlN!?O9z&0Q2?t|MT!4fAA;T zeu#;Ro)XL?3O7_rmcQ*`WLXY(PKn1&S12}Z10V!u$3gi>r@Ss9$|PjbleuRoGVPQ! zX^fw-GI><4Y`mT4GD$~CC+BvKDxa(CX;C|a z3B=;trKWcHXR>o;8a+#+`EVdhy%8Mp4BPNC^Ml35$O|L3vuz-#k zx5~8=rODHO<42sMs`wo1qx~o0%Xfb%yfyxc4w%;2rA7&^NigC`nrKv;WfJ{a4W=?{ z*meog4X_rP>gyyZcbF8%%h$O!(Q!TqQR%^|A%qg|R-T>{j_18gJwe8KxNcO}C$%=@>#??Ng>Y z%XC}b)7?8mEejZ#QHuw3sAqxC;6Mll3_YbpF|HfrV66XFoi&ZQlaOntz0a;Sfj)AIy>}Fw9fQUM(T#9O91C<9TN=@c225bZ1WS-D!lSq ztE(1*!#Jfb(Ogs+JXJvb4a{okcZc#6&}+G-NGOQS4FqMVX%@%UnKJN2;}eZVesOaZ zp4GVi)r{Rp*5qONz_z@=PY&J+KmX{L!k71cA?ytH4d0k|{ev)sf_6--@K^Y#plFhg zh%j@;-B42c@M{X4WvOFN-s++);y9gD$b>F!On<&{$n^lpI^Io;a(v)itd4X#>AQ|k zjZBG(%2L|Bt-TE}6(Wt7R9Ye(Ws7`T=+qVYi+f#JP2Q@aTgR(YT0wiM-fCp9_Fth7 zIFI!HtRvew&y>&r?ab2Rg0YL77S+bn_V(er06gox3Ll>QeR%rvCpx=S4gmfEBjW5g zU_8IpX($sN)u&SoWtd_lYFE9+@~v@CU-0XPdk6Z2xICyEIt~iAXHA6XRy~(96v9$b~r^|wyMAjr)G;1^Gq&@~~eE5?TB+*D{ zA)}x#yq2Q8tODxwt7H~rJ|Y{`MMV=6ShsfZkGT#7V-{PR zzitpzOYCxN-9>N{@aty+Wr>E<@$uA>sMvoC!09MUg8J^l*^W7 zmo%F4OMng$XgHq^;DC7h&@R>>&2RYWIVFplf-i_D^41bB zoqad_=-GE|v+P*Qvp9?NQu`Rtl^K;1mVFZw8L8(Ohgx&0C8~A=)xp6i9PAIZ3Ab;? zDn|zDzjo{ETy5eqWM?=+uC;bmYfy(eq@UR@Gb-_p@>~ExyoPp!pp4+N3&HF8pltuJ ziy5<$gLSY|S*fST=Q;*!6z=ScmX;&1tc-*IXLr6gH&Ca6v zrmoN=PaLnDsb3qRGoB9LkljQkMpShS9_j@xi!S>I0R)lc^qL=w4f$3S)A z5&_<1l;NDO2yKq_iMLWA%Q-U80dJq(l(tO|g)$(+eZYfuK4Rt-Bb{ikh9&q65GiIE zH+0H00AM&OR#L-zp>n3^*)hqzPa!DCJJqy|VJdDngjyU5F+@YqWpjR2^N&Fu`jkdI z(sAG?k2OR3M4pZkiAE;UA!z}vwWX8;Nj`t^1fx@SZu*(2K*#zErYOgI%Ga^pe)vxK z@`GOpkG9?kL%nI=I3R|rU=?DBCOp$)jt4#HE`-K{1<1CHlqWI}N?C4)MI^fHZym2D zeb&L&(5GL_O|1l=iEaXNqo~VQ@QMAroucc04h0c~6=ikS5jp5bWrvKs6%T1^e)^{&C6hKum& zZy_ zWP8fx%7x#+WZ;D7QdPi<;=A6{vx+EYDBrrFb59I8Sp;alD*7 z?xQrF;w16-tVl8%qPJirG*DhK+w0U7ZKQ7xqb1hL^t2Yo1{#R85Q;GP1m!K{Cd-wa zW|+ZKLwAq|A1SpSmG4LoO#WZ;=1VA#{SD45za3CaP_^0Nn zuG8xzRVU7COcl!_@yc2 zk0%FEE<;;y-hH*tmcESj;QoW~?!&Ky$2;$a&7KB38N5paYA8fVVJlfAfLk?Gh^&gd z9NyY=2@h*dkplL{!Fk=3R+BzOm$%;7yPBn?ykevx4>WH>z9!iaC*`w}4r+kg_`vHn z0&jP&lLmSf$tsBqfwCpEGK?k3TPG-f)e5xr`L*whDvKp`%!(a1)1$q>BYh#Trw!X~ z@{G=^$&_CQwO{m(!e`+};e+#UhLfw0Whm-6sB0Y=H9glfItTVgM+?R&M&uR7r#i>J z)~AkTpdQ>A+ZUq78!|Mt;TD6FYD~2`>PqWOIqnbxb)ZeN<1Kkjb>8-v@0;>`P~9*# zZ8NQKCOS1>sHFlujsGk$WBeZpZziLZrD*I)V8(K!%}{t=hdS_|9a3zR<$1%BGd61R zEV~})8D4jii+6?=y?WEtfh?eR&~Y6dt9%Wk1^Pm+fO#Tq=e2Iu3W56j-FYPya9btA zP9PLjp`q5`*NF-(r&}eIrJN~a-I`%F1JxPk%$o9ZIMVCOT2jLZI=axYN*AZr$$dw8 z1ZWUOd|`d9H7{J<=p*iCD4or)ZQ$`oaX}A!Gaw_E{I8pJb=>3N<{n30Y%vzuloX9S zlcAJL!->481k3>sc1XSqglL>v4ZH}!02Va)l3Nu4)1j!Bc}@k#zgP-{_$bfTrqYS9 z8Fl4IsW=cv{&DT9WL7zAXU+HoTp0{Dct~x~5hMFri9D@Wcw04^ZR$9wot@qA@ct96 zKYcgsUTfW{K3#fi!5fXr)&z6+xX*X&sK{2*B zXI-U2K|vXJ8wPHZhpCS zJ>;Fj^L2GSd2=O2WwaLE5lg5gkyYXA$W>@m5)rztv%BzAFh|MLDNk1jF#6$i>KvSI z!PAqS@tXjf2-V4!<<%RgO$6%%SOpgR8hFdf1gm4^d35m8^OJCNdZ@Rxc)lAn+8&zR z4rYJJpd#+@+-%r`hU+qzK>DLjVu$SmUF0!Xd87MVg!7G8ClaOQrj7%gxC++{Q`T#8 zq?2xFJM>tCibfWbi??2;Yy_ygHm)bKgYwBW3lUIpD(NaMQ0{Z%UvzAnhEX2Uh-8cy zjQ&_hrvNcdzQH&hmnkAepqt3I$Z}3o zywE%PuMaf^WaTo}fTi?u`kroW^9Gu*ZYWAw*2go%ENM98S@m4VdP-StiIwHAnq=Hd za0;@mdP=}MMN|5n5F(I`=V`kuyOc{puSs?V3EDxgdNLftB)pn^5I(y6+wkGx--W}| zXEIKYWq>jjFN1U<`%vplFV1yFHfN5i0zExDHZ<^$WMB>l`c(F49PaFDgA>N=<+*u2 zN1B4ic*R@Fn$ekH`N|W|HN2oa7&%pjuMbY;Egg^a8EQQ*@Otv)L!MQ99m< z(^OivVG}@2zT;S%=MA5yh41hwsR|g0O5akVl2$o4MxK`vY%5FQhy$C#SA@xd=V=Ek zQOn32CXG3Knzzo4g8nMwLWN*VL<4n+Ks9)`pOwo{tA)rGW%bIylB%U1xD2 zA%$@_lo7@h1fEM<2rfDkj4E&0l87)$D^$oyC&~>&W6T|`|6B;g#p2wU1ouL+b{6B5 zFG3A8C@=)FvJ*oXBh$=hp>X~jQ|i2$#?3|=Xc!zMqy6K`Pk1p$phccy7UpswLzKhx zWu$b_L8f0O_f4OTvhN*&`bmSLnC??N7EjP$v@;Y@GP zR;Nfo+0`%?IO2P$=(GkHcp$n2+(FB06t+x8UFAd)9tq^nR5Y(URaho=j+0iX2|vN1 zj})z)Vp^Ph$}J=~C14Z%5@5|p!EzD1u^@u#R>u}QY zEWRRmhFzCjCSV;-nit0q&na)^{PuDHUF-D6_!3{56Tmc@R=kCFic*codY1C3FqI?C zH@vj4N~lu`dUYgR+uS?n{m;Tl(1%zqz8^k1`k$8r7FjRR?WIef~eDwBlB z<;c@1@)sC?qhh5>tE(f-tBR{Y-TtReE993a8kLh5B$dEJcQ!p$`^V3@u|trMqd0d4 zw~>snjqzBEvbXFlaH==N3!No;rBjP-Ee=MmAruCm`0;qPpn~!-T=Y!WI|B*-N%MRo z4ORtLg|-$)9@C8tc0v|jMCEf+vojt7HUJA5c{!Q`k0oFJ=;^JuhapZr)MdBYQB5lM5Gu5E)r2DXjnix=!lxui6V1SWU%HPRryH9ym?OrZUqHp3~t*@rEKG;I^fM_ ziXS-Mnvs{cZ>EPd4rvhM%{WT1@K^awMGLS?GN6OF-9yfq!8XU9XQ*181F(y_;t96oTU*eP`e*01ePS0$(Qh1La9>hdXH^YSAh!nJmH|oRa5t- zwr>>E3!Ltp)9uEbPYcynkk-N$qD@6sU;DFK|8JtVO8y#kv9UMdQQOW*<{B(Y>T@SS znN^AKC8)Fhi}1sXKMfyWd|PLizSQqCEsesXsn3sUXFY59udlT^N*>emQ^s9QwQJoc zr>P9_irQyQCn`I>HoYhSkyQ~^OUN&Pz z-v>OAge3wpR7HQhJq?#TFT>UAlhD7sQ_;tpPB1=udm{J3_)8(#Rv6>ezva`un!PNQ z^rvN@E0-5CH{zvr$?CVVSj%`d3Q-gw3p8rz)KBp*Bk1L6B|Yy=T@zk-A=w=`l|eM+ ztTuJ>vTg~Si^5SCd@A(L9^bWB=NHVSjML%yxs;-tO+9a>H&F&D%v7kA4_a=df;g8* zJ{mA-hcyuWVdo?H5l$IqV2Zztz9(#&OKE*h99)A&FF(sl-mc`((y}?*vGm=$B@;m5E>&G0BmFG%-|HK`G>C95S zVe4(#KCvo(EViHMFlY?>D-9^77PH71VEB|BYoFqxd*l=Ks0T4X*1k4;4QATV=7p34 z$Dd`vWbFbtCzP<6XV%4xtVvrbZDVOFOvMp8@J*qORuj(J`HNMFq}mkHgyTZA;W|ul z&5hOA=TMLUmhs7GSu)jgU3p7hY!jHS5L`yTu7Fw#TIjBoTvH+WD})unSEStB5S9Mz zLRh_v%GYsfsB?NBai68>Ix>xU4fIoZ8v~W$V`o~H#)}~{&9c7C*yZD`4Q5q{wNo#q zKMdbK`~C3A>38KsIo0P#^$BY|pLiP+d3XS54Xm6TV?8s5!?6rzEe+6t*~1NH3B^axF_F|`isxc< zUhr(gKxL}mo<1^!k#1vG9^t{6sJ0lWmCh!lEY!AD29qaSyNdVc94TScsgKfZY3PKM zBHU7ZL5@f_sSeFuhFr`hb(9F}M&MaP{ALE~y22EAi5@yr0te%i2j8V`LN_XP3t0W? zXmWF5Y~8zeS4QF;-7s1nAkQgpe85j-Kuz%cDc=pcC{RI7Hr?{?XWdDLEe&KG z33af)ucJbCbTo-{B>B$uR(x`Dqz?zksJ=QEjYywepe&cLgQ26T8{0(sWaE_H$BnQ2 zu*yehad+7fSG>?utm_+KQ6&klsE!IlbQ#~}{ z)X{IKMpO2pzEj3cSS|T3YezB;o>O#mzjkU`2hNE#q`QIx*NOiEpB7AK4&jtIaW7k- zw>%?nPYlXs#$<(Ri^#w=(aQN&Xf`F9>Y3`Jg(qZnifMRp{iE=AC;v8lbcAtw6t1+k zlXI}yVbAl5lU`ddZ91Gh!`WlozQ;NrOr0Mdz`+DAu_w>x*2&##u`}O6g zO}0&`&P=Ciuvf!R3`Uttg151%S`BG?RoXNuNTLQ(r0t@N3L4ZCcw^?wtDF~8X@$DtKqVI- z=bv#(*lx&YVZIgwffFRZz`oC(eK4OAyq!{;VhUC3fsO|_mT9xxvbQ`3cz zsT&VQ)aHEJyg+BkJ$m$5hU!Dzq?_U8OHJLJ=nYxxZ+J1ru-(wtmL9+L zBz)!l_XCG7KYRLAa>cJo@pc>6pcYm0i+GvQDjHGR`Cs(m12I=hTsC%MQeBKwQz309ZFAP$xJA$6A<&}|b(^jIx)W0+d)51F% zj}z%@RI?=k=*NUYF#T7YPyhfR07*naR7M+)^K8QP@~&6szlwqq`DoiW8WLXU%KK6mo++xqDuDFR!E%*~+PX z&r1j~GQXaE625!*C*h;l-_kgLVFslh9y;!cWocuLvB9SFFV4@*Q^`Jsy*mT@8r1$C z)@F1T3gAUf2hT)T75x^8x^}9Ab27E?HEq2p$egM- zBRP&*njK^U;02_+hFmxox&`0aq%tk#E#RD03k!qoAW9pFZe>Yj)-zC@KsR=cQ0tNz z={OBKG!5VireT=6;O&n5)O%waq;#`wXtyB0xN}}Ng^bh5WUQNLBV5Qki8m9v(eTa0 zhLL)o@v(TpgBG*@aHLf1xi_tHcu(V|EYk4}QWF?=cJ+3v6b$aMwOfiotmrEl7A9V0k zGph1J&VUPF@_BbhH+|NiMhSE+0{BsF^Q)KL;x%PcPj;>)FPG@9Ue8+X3R4eW$GSX+ z$*+qdDfwZs-0+OBt)ux~<*U8W7Vy6nVw!u(0g;4wchlc-S2#ERGXZ3^c?G*>Z?$fVR!r5z6iCksY9h? zAYRR6O3EM{>+4Vb-MDsC{usfJZ6g$8IQNoWCDfLlfAEue8wPq#q63bX;);>V=BRjh zKL_%&-c-*tJ#aW7AU<0$js>r&eW(nO8;=VQLZvyd|3b?Y20BfkujP3dv^?^7CfJ%+ zycF`>jz+5A-cdN;c@@I(f#7a0SksDJrD@W>o5ocOiB=zKiYllnR$YM$Qh}=jECA}@ zQ(VPUY>VqpllUoWMHgv7LmZk-IJIJS0Cw3;-bw;yT4vH9%Nxsf8T`5qqp5Zx+FD3n z$I^fSnGwclVrqo-oUE~A2YuYd&r*S@8C|TOVLAgZ>O?mR6aCc?(|sx23@!b2Z)7~^ zST~yJZfVgtg9>lTtgqqNCF7~LVBQ!nwQ%TEQ{@=KrhLI;oZ=a!fd@K*0`IpOe@%fLos+MB8dBU>}1vN+YQt3*ZG=qrtbfb|n8#`1)0$4hB| zLN<;Uv2#ivJ__%>_g?tY`|pJ(Paesex{0l68=N*Y(6P1_Sx>bF>FDUSP5DoyEA+r7 zDwYQ@rLTAKIQUqPW1W&bs)FGkYgDbGD3|g=&B#~V!GXKQ06P=wwrD1GSW2>}YXvUN zyH&x8il+1{jFsr94B9RBxP(BCyG#!`d_t-Y2BdXQQU!H}RBmwzi%x8qsapl?=;xs6T60 zwJKG{FJt(4gOg=go614^mzr7BbL>KO0 zcHIoN22!BhSa=QN_kv}xvQ|CXMmr~U^JCmy$k04HJ(qE(bLeE8GUd+z63%#moN3_M)DnP)`aRMOJ_v`$ zN8y>40lYdo)Ow@~qk+uGKGs_=Fsw^GIn@-5&ZRT&s^sGzp)@Q^CkzPj9K=%NA*pqEZIs zr8-y?DM4BiU52}$jDmL}i}#@gL$wZfi8yN&*Ya6bu?9{~E2&=tWNd>3&iZxQE{%x) zcnVyLHXgXxp6O|>UhhO73kpi%YvNOR{xD=Xfu*mj_bcbUihdW2)Ea)PWMLq|zhd}y zATT#-1>A95%Eyyu7e5T&J^Byf>FM{v`Bb0#l=B6BbJ7d1_h zj`3+zc|~-Dqh`pMt%IiWIWKjpXXBZc2wa?L^OcO*>#1N>Z=Rc5+MuOo6}-$~J(qA; z^i(#}+S3a?E4H);V@r+>fG)(2lL2NjsO=n9k>NPYNwu#2woC88K@Q9N+O};(F$kJEUtyZmyyV@DoJ}#>dv$2 zWodvLOn0&wr%Wg?@RbId_{mmMr`Ow|ZWsX@9)=TB@6kYwHxxHjJX%Q}Ki!~S4P>Qp zFtt$n{N~`s;O$SeWo+)s*nIr>k-U#@Yf57yeER9L@ROhXIJ|iAQpTrlbp0^+&e@SE zqI>%qaPIEgy3eCyJ~+VQ@lD&Hgwe=B$S<`y>V*u{W9|0miyZJ{ttbX1)A1}3c=hU4 zc&c@(9Or~bxL&u)RV7fr=?9%rC$&C2@87={-g^56LooRZ1 zCT}o!eD-cno2Tv`-3v#DhvE46SbIX_I#i5fqb?rkM1ED1mq8A%c29=9Ry7&l+CPYd zqWxM6)Q~BKsx=x4lk8aSDvJd)7h;Zw-n>7|bBov__yWkv8HJpN2mPDySccnC-)>M; z>XPCv<5NLgG2!|U588qDxRFx2%GwpKraE<~sk#%T0GHHmj!9B(WABO!Wmt>r=2&%^Vh55wu@VYs*VDC`X%huy(}&PLu;gW@>wHZ2(} zjZpVh4az2>PAB%OmU}%RV6c+gag(CfXsj!H=`X^k7vBxvdi{Ih`Nj<}{mipc7yYv~hN8TT9h8&UI|!k(@4PGEDW1lZSMwv(cB~o0qcic4cUNm__xAS0L&U|0 zy5TjA&LNfssK)wiYuGvty*+t_H&lMf-u`)@E`+Es31`tg#K zhT1xj>6J=>6|WemO$;-f#bhnlMX;qBuR*EHn&>SPFDeEnuT)Gd>yC-qS0$LvAdto3 z!`t#qj&)9(z0t{#V~U?QO$<~Pit~v!mI2s#pBS&g8|Vf!J5KaihbePQIxGkq?RbN8 zn&2o9&0%FP{tf_oBG$yN*rU40f%F+ULAgB2Ij7I@5h_C zr%g#Gwu$OU-qUk^`GebuuYs_^>Z@Phhz*?Z zq?efSD50eor7SRo#5b1r#Pi|(`!cQ{hl7Iy>0}_|_$<7BCFA(Ti*O?T41#Q+;;cL5 zW|u!-hr*C%ZIY>_P>l_8(p}`Mfei1o20x5{M6=#o$Pjz7C#*WLxD;|;W-%iW^O9)H zm^V#^q@>eJN=i|ztOg)~T^fb=4M{ZexDC3lnsSj;iF-TnaC3p_D_O+DL zBWo~BQCAd%K9>vuD`K~Rr@9BMOSQZnEo5)EC^9^}dS+x_&z`ZEM`MGga;L+vJ=n1| z=DVYVaCY@dW9A?n&7Ov57e5J~y#8_c;MtEfB^`oZgXR6ZAGZ1j;qLfx*u2(S_nvm(=k!I+cH$Q0xgqZ*Ux?CF zl{6@0)TY+;^(P$##Xo#R*Zis;%Z}L>?u`hkt@-#)J+FXTke9cjS11;^+^Kq=D z0$Wmi05%g@hJmoncdXfbi7^8d$U_;*5fqo;MnF=OHH_l{a+Lx$g z1hX7%Q!|FRde}%se_(eo;;^1I8Z)yn+L?w^J*TA(3w3Sbx?gOoc=PxpuON|K?CG>P zX4mwKGArpnNi?HdlUx+gbOU6Rv<8Q)7A98IQr+2Oo?t5ms?y}yl)K(sxd~st)|Wrzd3^HZ zt?<6qa{|xrM?dQ7Jl_tf7O-&d?xSdC!c<*X&DVrg$I}$mmhp>il(?z(VL9`TvQ*7 zOEyN`yL+Hrpa-^NpGEZ-GKQZ&e;z*iP@mTO@FQ)GI@BWiarl3kd$T3Ul_WjWV)NLy zjNI3=)TyrJbXN~KB!x1(;~gJhMud+wb3gMUyrT$(LLrCj>FTaJRdx2O=NliFjG@gGXRPoYHDhCsrwdyTE4c~A^(}#ITV|Is5-x^-0V|d8nvYw z+UR5Inw?yvU$e?VfKfI(KdwM8G0p4WOr*Y>Y_j2UR~^zQ*jh(}=AZ0zfXvs*WA|9L zZENxzLL2vzJTgt$?K!Qjj-Mh8IYZQLoqy&EM`7Q*@9LYUt!T5GqYpo%U%KsY6mF}u zL2}(`dG8;m-E?rdg>U3RdVT(NdcXZD?VfCzFfCxv88fZ}b)41zKPy(aXFM;=RbBFGwVDf-K+?ql8K7a^HW(>~=Di%29*EC5Frk zz^XA-j}GS3?&cvp1<#I7GLJ)s{MQF{4AiL`hq`!@ax>?=TPNp&zrL{6p<9}+cO8ru z)_)Nbx^!9VKug(~J$|ebxkm-pY`xdQR7v~E>K{2fSB6|6b+acLGCMAt1?3z*Ag zdE-9n5;YI5;hLG{V%LyovYs2ask0<%^6eJb@0)8_*gtR6R`4)@qLVEJ_S$c?Hr<-mF&wqR#lcbCzy1BW5 z<#d5BO5?>)c%BFbl26<&+Wrg%DQgaFJ;-L1kLshqqS_yWoojF^HF8IuD*hK z{s^m*Ml3i)4j+-W+pegx{m_EVEvH?_u%&31m3f2uHLku{)_Z}eKUOPPq4}zF*JNcEY4kk=K(&6tBk}vy@%`1$sGEm13&_Z=>~MX zOEUmB^D|iU&Iz0Mo?|BcoFB!A&x~P+u%7Mge3Slk%IM4tKJc@T((Tz#(&F^3v@&}; zx?zgRHIBrD?!E3qcTm6CHM#Gu>87^(K^^CP_o16J+z-dL(lMRg)5KuTx+8i-L1)!ZNETV>TVm7>^ePbZU3*HYGfK+c5Cn71I z?>UFh9eSU_Xy7ot7Rnfw2e@9~RuQ9x08>|>vQK=ERc>>DQeJxc3p0pc^WvQH`iU+t zVV&V7kC?KKF=jVp>{_iK_d7;9I{{NB1r% zJIgzIhWF<9!~$h`mmaUDRsOYagRa4d>DQ3;JyJD&v)Hg(sYz=)M!R)}ac$|1QOTQ? z=kvJHTlnUrQTf;OHzd!s4BWRMh8Eh~n3k+Rds42uzH35p9&fYs8x~X^PPLaGa9ZxX z11|K50Vu_AG@!~5QhpJt*nD_nxiy47cLur-6vGZKmFhz+kmPv@h3Hf3H>R8A{HdTa zxC=$8k_frHEY5B`Nv~eN;z72)31;IzN>3g?0jyO@;{{epEv&EKzUBe#1o+#+&vYMO zPQjl(odQ#3diCm6xCUf!`Wt}hmtTGvU~-E|O0QnNO8@x#-zA6mwX`~6$u?ASB6ocK zDz6Z`+9J?Fz4Rnv7FQ_y8d3mACbbRS7rG?H4c`X)HM5%fi2Ff*PGs|vvS6%Arr2K37xE^KV zh{pwgOAM}~!LODnQav8hght7aJI!_F`bs&j+d%JHiS3g zc|QZdx|Fn&aU9m2=Og(28+6@1Ve=?E%h2^KzKz%r&=CytUb0%=>0#PqqR{5vSLxfW zMZT|@wT>&m+|)7w-)C_RV8m$}ANU#E1ZHldQ&s~=S9+yxMEG~*`y%gY=_vi(?U43^ z(3@pe^Bx$czbLnP`YQc#=f9?Zc=_Mc%Xcq$2OVG?)r!cHq)dLAn(^I*sN6K2SpeqD zDFBs`KtO7zv(IE-hVR2otBO17%li@?>-z={_X<_jxuMl)K3&dbha3Ye?sYAcg zB{8Rfw5f3{)vWmB{aK9~3NVe6$~mrY_N(tnH?6GG3#7sPjF_mG%+qj1s2O}>J6O!+ zt;N=UHdd%}tGqRux6KucHm*503pI=;(>C^H z^SD16h?+$T3J7xX@LY#Iig(SGc*n?8kX0gM~4DT`~^zE@E%j?{=ElGKzfk20hLaM+QJRs<;xc_S?UBp`1zB3Q*(e3B#ucGO0I5}PQWpv{UJzaw zj^i?M7?BcCKu+XZm|IM<4CD1}(7A<3)#32J(nH+6F2kv#y}cxLh22DJF1DI~PO-0g z>S`0TWZ7Vs`TW`Tr94@Vo5)a>FNG}oVGvD8pO4FOrrkuA%p;e}?J3h6$6lKlDd<*2 zg*TD6!7r+&e9tv+q4|)c5ABMc_OvmnI-y^rQTw6M&lY3gI32JS{9#(hSjN(pMol4_ z2bcz*N1lAtijz1a1QGQ+#4G68**n0meu3HO=X`YQJI`nqAHbJb>~_(Au6m>!(K#bW zr^I-k!+N?f$4Csr#Z%}l9H!9em+257v%CKu%j|jDIQkxt?1wG7ZCA@5Zd)^JxCShy zwYjHhY5ER8^$xOi(hP1y>QVKPp$K(3axZXO#NYLtq4NpWhOhLyEp6-2tFG*O{;#sy zj|LPtBd+Nt*66?A`cLWi&wrnOzyP4D*BpME<12jlGeqy}N+8)0tkc{MhRUgFVuLb- z?p%RMCJ>DSP$y}>_q?M_W9Vmx^2aa`RIXLduW;l_kVxD4Kp4k$fD6dAV4@P>brxd- zv(u2DYr`s2PNa&Lg8WFkBt(>}ES~YvQN;}By^2zI!4_kl@(Lgw%WHsGTm$H1G3*(W zrzUtEPg3vXEMOMnkfUsuSYBtiKaA{hyt5CX<)?U`&_FgP6bo<-@2K%9t_nQf9lcJE z(&tck?dvV>)y55*^O}3w)7|RJT%bWmSE2|iZPff%VNq5#A zd{ZX5q7Nx&ndWuP{05{e=i%6TI-YpX?Cvcrm*-e60XwIBs50uKj@{lNRwcvx2e|)O zfnkQmdH&}Bn?^|4@aJAUowXN0dqCv*T|v-7SvguX=H zF~TM-647L7*~yv!D?qBte4enpXH4V)EME}!^8meiwEt~-d(0?Vx)nV7=ufHUOvp?|1(({rz{pMZcfo zmbD+c_I&y>t)6K)bSNJ1hk7M0KY$HT2gr-ieS%RsowoDpjf#>RXT?8)B z^_RRK$9ac2v~R3b^G>}kC$ye?SC_)R8X!2&hu|dM0~dyn(l<5a)AFh-n8pmO#7xFA z{^|vm)auOvhUI$AGTeW*$2$l>ezi4k+Ljw!k|r7F+@96OaX!4_JN&3*XV_ zr6400{|gZovN;@oct+?W9y@(r;vXHWHPA0afsw!1NOS1p^wbB%2co*!1z-LIsy+;Y z#uMnOP)U{)f;&T035vrX_1kaL0YGz!2~p0* z-`{7l07^yh=|k_9hvhwX@|1ZM!1U`9D=eT;pHzXVp!Tb;zDj@i!ykAFYz4ShCc&*1 z2-i1ut47=za^YCz<_#MFo7TkbN8mgh8|@tjNE8JFfV)>b|E&IVIgt*wu=Zi)nvT{ zXe?-bFI~4?odnnoqy>nAuZxp_uh5aYVga~fC>sLlCGL3*5~E*8@yLG;mhyp;sUymQiCI_+$y zt&8u{58HoAFLu61Muxz7b4^YtKmEjYa0Nr09dLKxy#ipJ#UFKQ+DTEodyv-=KrN-B zcdeagB=wEfamd~-6p^rg_nf~g0jVBJR3uJv? zUO*qKJW)1Qk@At^L*XK>H)Xi4W5hi@<-;T|L=y%V+!LmGH#)~-ioWt5^1Z4+zE2fL zeXKiOhmQpTu6e#|v{)FQ-2E7B@PlBCcNhlLw7&g@Pl^FIYWJRP8~0CiWdPOJ#ymVABejbLCxOa+$_H=rW%{^%P~G@3y0jJlAWH zT(`%hm!~H6Y?d2J0QCSG$6tDQ{m*nBm=$5 zlFAT=!yRmbQv>~<1wbW`Fq%(Gqx}7OmEwkmN4N&C538(Sx%gA95{LB8oqGV)DkO(W z!~p!;+f{7P%54BgZ+tipQ3m5LbPi`S0TYmnA`q?wA&J+mx)ZEdIo(Y2r*&7WsTNa# zssL4>s?VvkQ}`DNVjVVfroADv4DF$X)1%43t!f!l z*MJ`91>%Y&GwIH)+k`n;B}9o1`K%-bh~5KeYdx`@0#q6V&q^uAg#awrU;6(p20&dQ zzZj|sDL(Q~)f5_YQ$7~Rg$I;1`^J0+@cK(74{KI#?kH_4`FvvKLXB)-)T(F@hS8=y{@mkn;*~T#2dBj<;6xioC1iWJ3}?mMqLrK zq^d(t2(1)hn$&FoI04orqju+jQzrx+kNpS~{X^QgV07q$$vjw?CjqK1NZ<{7GPa#g z4_LO7hy_Q-`vCE3=zNM*lBTgX9v;qMg$B;DNXy|KKzxaQ#Mjh!m;+T~1m2&*!aV79 z<-K*u$l)n~(f*4@(;vFDkrBGqNlya9m^@YAX#(>pWY-^fgCmR{$`Dp+tY9 z@AWbD9pkNZap8n1dII@W?`K%DPbhv=u;lL_NCOP3iLB2LX{G)@B~0&RJy?38qmYL_IY}PJfaW=B=qb z%DhZ7U~iRWaf_Dc7Ax76eKL&hs=7kXt3-}UPG&SJwpb}#DTL&1+_zWTpn9$-Jj%7Y zzqUlPfii59-0qkQ3_3?PIypvk9N`_@!0Y( zbOv;SNr#~we)s3Oo8U86o#Ok}C;$#moCr>N2zhklOZ|+8J-$FmQ{h#R*Bh`>8UkVd zhca-vIfL6Tv#OFqNM25@iCRf_0DDLH7wzpaTb~*B4woNcHFcR!`DPHRTmgnHU0=oK zUJ&@=#fz9YCE#{%8n}==paLylT-{3i@jNM<}WQ*-0;59wg+PmG#4G>%^&la^c;er{erL%|>uT>x7bg!k(JDwmkpGlL$wb9*_4 zsI`hsGe!-b1egKDm_Rd*Z|KRPANpEYu|l34#BB6g0Lv^^*$!ZL3QOJ$mNe}>tACpHK`QkP~s$lLM8b^k6$fHR>a}|i5{O-Ns z3!J4w(N&b7oEa)HfGPYY@xi<}VX`Z!>dYfQ`qASHL?{rbJ8E<>PG8VJmlwK2AR{4_ zkRo*8#5n$+=vQs3b4wFxWo?`o*%%o%@a%oZhXDSx`+H0v;$5-3jlC7a?gEpLqCAzN zojErA6gFiV=K#S4Mh>mV=QP||_7PJQ3%9f4frSBHeNDu$Ji1xqL=2}xb9$)1D(@d? zW7$!Ft8}(sMXL*%eyi0xPz$H;OaVQT@E$ojFi<~wo%Kq`@Z;@ZE%&G2tdpV~ve&@j zduD=bc?1ZZ!C>O>y{-!J0l~F#fq)~-*;;Y!Zvn6%S!=7o`jtOcW27HXFSyTe!LW7l zGUy(d;6_5ERcF`!_5K)fYhzo!BZjdm>8!4uc91O1np^0aB)P&|5q){JwUocg>>l;7 zq)0v=R=T9gB6JzH9#{g7!Y9sNVcuy($B{RZWVwULLn0&tbQ%HsV*^|3`Ab;oAlTGeB$*J>3f{ZSu3c@pjg zT5@ORXJh!?6|ClPJ2=6){SEbLLET(`udr~eE3i#e7;X@CJpy%U^?P;oD2MY6!tZKQ zGrVYKu%IpyVoKnul~oI|R$N^UoZuzE6?EG*@~wu8bo7T8F;?#^-%I!B90n6S|AjW2 zYp3RiHMjp`tG5AlSKf$~W&UD~uO%Br)=}ija+kED@K%hnOfA;O?DDhHy{vuA8WlE9 z`^Y~uA^N25n4bG=G=_fYskcVia`$&>n|(i^Gjej)Em6LYS(j@Z>|Q>{8u<6PN>o6a)zP!X@<4IOIS07glqssb+iAp zq*ks}KH7W~V}S%8#xTCtRVeAzYPCCc+!+M~sIIV7xq(%qJ24>$+5mjWsE$xWUI@|x z6vBt&X#ibVQvt$WFGNY5IT&7Q8FsyTK{2&PNBiy(m;vU__X9W!t_4~lBQ&nm6cPe@ z@7usI~w)^YnywoK{f4v%1+C^hcDRn8c_8u!n0H7{=ru_eW)DfMEb( zeSdw0085d9ivvpbBSD#B!W$nk3yZ!dhyxygSaT1I0HMB%CTCA@?IHqw=M&vsnNuhOg11?NYW&U+C zHS^1|nQz-Z*VUFcB+YBwrf1vIhOikqYfyay8RYg45UAT--Gg3Eqkz-_MSHJXFWWfF zB8~c-oHF5P`|@Sl9REAqr+&n8$Vd9gGS4)VkO(4gyy!c(S)vl);Ir-sjW3M_P|(rg zB_E;F>G8cK;*|;vQEvdacj!EzC{auBQwQV-gboN#b+}Imsty)Kbj%!pk7#wQJj8Im zRyclPJq0Ymg&)8Upr~cjNjPEYqftgn;eVWC1mwV*MO}`r<9H%KBt0xZ#X_sTRi}?L z{9nB-*pwj^X)l+VjSm9k_EKB`j&&u- z?rgq){2XvOQ{%XLm3{A?^ZuG)(w39j#*Nh)ezCZAOyE++$B0HCX@k90bYTD9RRm?D6ZiqGUTM1l$TeoXRrS z*U-XN8T&h?g^+u!HMLAEr76>Ia2zZK@hQ`SQ@AELw`(yWuKWF68N%gyUHikC;pRWBPJ(~HP zS+DcZprC2P)#h1r?p2aUwmUbtH)l|CgX$+ZEd?#bR9t^${;1WJ<(lQq`*Uq&y=5J_ zT{%C?^yieNtiSE}C#gF(tgV8(8lEB*@pSd|qfsdD>dO zE~}#$-JHkb`S8I5VCFeiPIMK_7Ur?0t}yeRv_pn` z7a6s2V$adR7WxqDn7|2FfJs0_$Iwo!&pt-{%S#lW{-WpTqbYz#2R(tuJ8DB9$B?+z zK`f_!4+~OkgSwK`8vLM}m7AZFKGm;ehn|j(pxtOWbQ~Ycri)zpFQ^^IYOCx{fKso@ z+kIG3$x(ml3Lp^HVBy=i*8Ty~1)u^heItGSP!t}P3PvGRfI>2j!L8nn;cP)1|6J13 zbM?PgNA{@e=h$Fi|9Mp9@toE@s@9$wOIngNKM?ct5zfg=W>;kwsiOeOq4e1qq zMqgE~Uk=aLvRN;6*g-DCJ&DgKo*7K^Qeq7?T0rT4`rJ`Nt(#+fBp8K3Yz+z53tk*f zb3yFSGddrMaX83z*l!ixF_WeQtKpYQ|7mGeX099`I=pYW{t*`(xm~E?LeQ!Y2z5B8 z;SvBI?{#FlBuW7}=@^%g{XP7i?QrXfzxAJ+fY%_E_$$g2Efwcz5BK6A!!!hlhn@?=HdP845y06P8HI`mhQV zoe`>Uki($R1PW~6JkfbKBA}^%JQ{{g4iR-vc5Fad#_+6~~oj5Bc;qm~*8y>}P7Ie-8aDVjX$B{7HJU@UyhQ`r7tdY&N?`h^ikNiAAeJ zyr`z9SPw;UB2i{(vYpoG$AUTztNyN2o8_CtCGTe5$DC)rBQ^2^D$0CwJ(-2)=9TTv zX_;o&KJ%5P$$MD25%UILzFhG&m1eR=edR4-9Ur`v{Z=z6d0*EjK9>P<3IPU)Tu@Yp zAvVOVE3WlX_a``!==hRV<2tX>+2ZTO2z^>vx}Ub*9x;4>!D!H80H1r~_ZTJ@I8-01 zi}L`Uhs){S?Zp^9Qb(%8_V;o30r-IQ0FuV(M4w{m6Nu=uIMZR|3#*)#ypB4Y28?N4 z)PItTV84NB_zAeUok%cEU9AO89ipYvA$7rSSURIwf!vYFT`z2vY46$fIT(Zd-l#O?X|fz~X&DNT;d|(P@k(M(l2AyiN|uYpihC z-F!bBDw*kX{d(h?at)lAru!)M`rg~$CrSW5ssVZh#QbImN2dG1Dfi77?g$fv;yTxV z_J|3|dxS9~)Yge$9JA{b0F_F^;w@^$fsRqqJ*?}5cOd#s&t|udvc)xo&_*2nEH|$136+dP_|7Pw;^&g5UV-pW;>e)ID$L4i zsp1fXR-m;4sMRe|u@nI(Mos^{y>m`;( zhxHu}_siArA%Z@AJhk3xaa5jMmx`sjdsNU>1KsDJRl9j^yLa~pHTC?5h+r_Ozbkba zLPRI~*aJ}Y0}9KgO5D$2JCOfTQ(XrPNkakgi+b%J0H-TlUEqgsc(e~toe!mV3J{mS zZO|1!5Nw)5Jz*I@dFov6va(bBX0e{GE!;_ump)5NQ@7!-mAI-u8q@j*g8URoTyMo; zPWr&Tt-s>iWKwrWGx?`KuP*UmQHpN(=_`k0TQ{`TnY${>JBlzRZ7x4bxsRf0YtYRY z=11aYr3O%!eIQBmyrmdVyBeX&X`vsrE2V2G-cn*6%udLPJmiZbh_rHs{Lody;T`V~E{ioalP$yFvig1kb zT1fpk(VBd5gdZpdmJ>%6cNy41ek=?|xWx1~o2vN39s72fvrto1M1F3rnr*JiJRje}r@G0*u zm(N`R%!hTg=HYJS?E@a}{LXPdYVlmAE0=Ay(eSw1q8F}C za$1qpQ^u1Jpe7hfSCoV!$nF!xd7RuTZdoFhPUd}U(K^DX?l0*Ui#VEm+8sk7ingKFW`EMF7&vn zIwxQ4qYrH7)uyEvLKBWjr2b zyD9w;p4VT#rr>quLu9y~=MaIKS=1Byp_zVzbDzx$@>GSImthdAXnFj(*(E{~rqkK2 z^zfI2kXxH%CjKJNG0!v~r^_oYC?ZpIl0NL}I6gX=e-D6QK05m6kdN+j{0mQw=Zs(J z)&{Nt#Fus$*J0W3zI(}s^t*J(q@4+L^aVib80*>2?g17#hHtUx?cuwsPvwMb%9A!t zPJ)z|e%~k1XB+SF*%BxM15BoJ}8H9ki;+aCv<|{I2ObLsua>8e(TfX9QYXBNXJ5l zZq|IP9Et|H(F^A1F4E(NxQIQ$BE9dTEli$zcak1F=%h=ojdB@G--Qsg1p96=&B%jmDCyg zI1*1W=}Gqp%pCDvF~pSbPXVtZl=L|L#$R|$aKGqqAs`+{POY_033EizeA}8AyaDHO z&zv*z#|IC?_?HNOMqe4b)pyDm;lK`$C(;XC<_=G0(>SgsH0kD>oqWTMF6eGi+=OfR zbjx%Px-9C0emSaY>dJ~byCsVv-rfCMTcMJwtql3OSk8{~W@14nOKBy^WTur{=2fN* zI)*m0xk<6%0ChlR1Fy#b`j1L3TH{x@zD=_PSN1{l;SV)~mWi)I9v}ggipqOSh2ewc z7oZQJLm~0NvWJAnh=(v9ZX|@>sw$-eYyZU!T7gWJn~F`)H;po$X6C+=iI!JbE1F3` zMh}QdQp|k!;Wbw1t5>hENV?ieeQ}T>uD2b?|EfMRt(&^?&pNK?s)u)ukWcsT-N)MT zkhYJ4P2T6y`32JGrK5b{yJ zvM`i;o#IiNp)eT+a!7|4(XHj%>66<(PtR7qNOO}5b*)v~qA?uCX2bGkKe$Cl)cZ*I zh(DRv4On=YLzE9F8`b1CS^m0hlse=$3a{(x8kC=TXSt;tB-c+VORm@Y%DVG;nQz*4 zThP~qN`BYK?6r#?w)^OdIXUCnFT*(=sfg9sCYw7l=Z_ zL}|ed$`E%YR%PO&(|chOA5=k%-h{4H2q|iai9+vc~K9$tRk~4taDXS@g`xqw2|5QK;@SY{a*4&&Ez?{T{ zr7}jIU<4=&R|YG`-*<6AkUF2iE%+ZZWsD?8hfp7M%q!#&XJpBv*Fvb>NWu zgrNWs*O~u*B*cO+@(MqYrkp%`~q z?(`J*jxqh3Y1cSFJzN;V!VUfDbVQ37*IH}4l;VB->ML{dah2UHKT4rynar`+2b+>tvrNt-Js%du<1iO7KOZ+}1|$bn zW;=`~E9j8{YQ9ztIsUw-jTWd}1dh%yG)s`lBf){dv;wE5RKQDx^L0PUmg#d{`Mg;+ z=Qq=DdS3DwAY*;$8=MQ`;;@HkknBA~Bb;ObylyR0;|$Bg}5hGoyO?zxPnv-u6i;9O4fR3^G*p*k8qa_F0?FXrL?B@;&hUYksE+Gd47CZ5eRY`u1ShGnXkQfCSM4Sy$aX-Ewt3Dtxj zEKHV&fBNj{G?7=9SiX7(V9F|l>jdS0;$$g7T7??DKVmSXiFIAVFMKq6s+AZ&)e_<44PbucKwQ zH~N(&X)9|djj+G5nmU>pR(M{y&g`Fo|1s|(H-Y&KZTFp`@gv;hD5}*pA|U{Jqu1eY zSgehA0QI*g>G2qgyYR1P%lCOt;@}gnQ+I2yiZ=46q{)wdPofMmkp%UzcS~$JkCUo= zv!aU3ztzXl)p_4hw`k@KMI4q5=_^$ybPEq6Abk*@LFq$SP!s3yDX?8 zt2`X)@=M*#b|{NKYqq)FO*uIcMCv=G()8zpKTjB_d-sSf%FoSsg>T-xCMZ8)rBDb0 z(;vS3K7I4`*J&GB^hp(4=X#=*{Ha=G-&OyRFchBhMQT_Is1>EJG(LFd+4g)M4u2fC+yh=Lj2AYys#v6ES(+q0=g~J7Vyk!6Nz31|?|QO}4EbHdsH=Ml zS%Y0%j2_0xJd6WdXPniFe7Y^X)B${sE_B_z{jXvb3Ncq2CS;nM4Y}bqLypMZ7ppywsY9nq&YB6CyzK z7=5`1zgbq6T39})Lfm1=ot&(E=>Fp zK=Ks2DXep7wQ9ItT}Iu=;R;LYG$&u>=dhxw+`VG2*oOlm}Pro1WxNvbE?Eql! z?3|_NKN2eH6>|ah)b#*;;=1l^Fe&H|H>ghlZ1aSKVmLj9veoJE6fEjaVGPh^CPh7X zI88K`vGo4U1ruG5)B4-lw0eua1i%{M0QHZ<m`ngy;;3SFdjuPH?WkG$V`7&9Gg9 z$ymx13oOQBtd$yUbju>76Yoj>a|&Nw(_&dwvb1Xt9 z0Q^f0Ki-GX#f*Kfu|xf_QX}a(?zm9`I_EP1nvK(Xiq#zhceF#WA1-j-WZVM+<74JI zYyeJo*AH1`Y=w;W&8pqH&wvLxF>*Ndyh~6g=3Rr<QB`$fa(AoB53Vre z=~A~Gbc=QmDxzGlk=(;U05o)KG&r9|v3xR=!Bu8kRkFzGHM=ZQPQGGL9~E@1GLTR87 zLOD@SHKD6&OIDBq4jKD(?FBa7IviTshu51oZ(^xaCq+4VL6?GickiXUSaYS@XIB3- zz}(sV%4NW8WmOs3SHT;;c8DsH)JWq`fYAW z*Rtl-+9&X;diDAW<<-WcEMMm5^fGOr=wLws_lsZSDsVldht2#=Fiem_5*&=p9#9>+QwZy$ehn+RqT2GnQEo-9n4%u>B zCzxr!a{5`?eD#m%(PJh;0aElGJY}NfIUwRPxjZL6grW%miwb1z_H9B>%>z!~r#&XR ztZ%+an^@fr@F_fDICcWRMZ+~2Ldn&nstGrKlrv!zP^#t#BZ42j)Tae>|A@ZDSO0<~ zEuHM6C31t9pmTF4fYnZfP6{1}7_MyO@cAja@c0BD$Ac4q4->ZlwezfKwJ=M)SoaoJ zSpb0LNR6X;&bz?SR+EInQePRyXoBB3!`l<&+mUMcaEan(i0E&~lf8Lr%vtvu>PV_zRolSgn)0xY~j;DK%a7)9gs=q$i zF7zwR*wZP1>uF}}uQGf8?)^C|)L2iksl0i83}{_smOrC&&`mQW?nqh;%_Fx~%>V&j zcM#|aVZU~Fw`kuq7TiTgL=G8>|Zfo&wMw zM#~Adx`dr_U+v)*a)GsdamfW{V0OaFTDUd5da;wHj@NKM(M_y(i|b=z9CUXTT}_;I zM_=L0sxF&P-RI|`Ov}ej@-F{Okn620?3KAH-B%`;&HE_STe5pIW|}NWgKU5{s7uv_ za@owweIK6@GRrbeo}QQaCA({mGpn}ZeE{{^&b+3wGCNnC)7k{cdELDN3?TGX5f1X) zBmebLiR7IB?MsBjoamFKWJnsp96rwLwTMan!&{@t?DftMh^WzL*U=R$`wj=)3&Fdl?((;znwv=_aWlU@X8=7drF-cD zx1b-sd6P~*T}bnQxXuFp^njEzO@S;k=^*k2!@myU&a-K%X!)n^z{jX_# zdoNARVI9O$IgWdP3!Qk+xa6rm@ml)CLk4U=LHBBj(+J>gQ;Djj6|l#si$63l)e7*? z>r9rJa^^aK=)?(G_(E!6a6HVARYw3+gZp>TzbEVuc(zaW31@}7z!A=}M;uSjV7>Im zWE=flT}o4{ULODB%=`>w1ytY>pO{wV;V?yiJ5&1`f1uN*!8CNI(vT^zDb=tJu{Zp?sQm) zWd+Nrs{o!7d-^Q>>5uz>KSCF}XbRyBwPNx*;FSaq_HhTm$Km{WXm&7^Y;5`gahUGj zyTvslBx6`vt1ySYGo3r&EfNM0I5?q7U}-q9X%_snIwzfb6gClk0T@E(QtDP_<6xUmlYYE3=E2l)UO5Esf3;A(Y^cO*U% zx?G&%BYVP!#|~v*zurwt6VI@4YjN-0DxOzq(SA<7rLNujXsU$1$Ear3N8YF)m#evS zbE|V(ev_?@dVmBuIg0QnpEs);)+ue(b;}RQ98^~>Yre&67DG7Y5k=UFyyi3f5iP3*Y5o<2@~9rBfjLiF(yTva}))iAy*IE8f- zN@-kmX$gh9j04a-!}T-FR269MQ7qavQFAdSylhf7qH`a#L}h#{%BuV2No zpO=7PSD^|^C!Ht=Rr%;9|Y(RbMIYCJXSOxJ>N2QiLvlsa1 z*Kl<#2p0^iq{E>AO@=7EG`Rn1Z>XAhA}NP*wEjiD(x2Y>G<|XB*XjQJ6BIKRiHfv) zgElUm-4L7U);!wQLY*1sy%o1GROJ5qTG|%kEKHYYPGB!kA5tXe+0XXlpv{+e)&IQ| zrj=l@H}~pnPu@-gmav0T&18GxX#v0FIDSx9&jqvqylHZTuGjj`&6% zVGTWDhW-({P%EddPEL|K1MrLk@*D+nx#tKGg)l-oLnj4b3V_6LJn0TmGn*-ZOAMp4 zG^(@W&jB(9nYVmpq!3J2Yq{&kYC4dLf7(Rxj|I>QV0H28V10BsPNR+pNSAK|Y#D|Z z>}_ow1VB9@U0^w5L;*+Vu;^+H7ML5`^^#-XA!pDz`QZdh<1rxErJ9^HdkHwZIK}TW zkfXrUp?Q}G)mrTPhxZd-)#_XqBhYA~YE@$IBSG}y3cjm%<^bP^$UT*Q_fIIPG<|hw1l#)33hzilH2W zY~x1Y7qxAF^BN@vh}Cjz9M(NzrW$lP`hfbv+DN}xr(dw4nCx)sslaR1`vQBX12~z$ zbhmm}$wyK9ah}Bpp4@qs{_5^ur^kz*^{km3g=k{y^CPnly5YPjC_4-&miJ91dWh2V z$8_nGq1&(?imMYyMh0L--A#aT#jrXW#PhmxnUCeA9kgXWxt{Cj2k~j9=Q=arGT-|w z-!EnQ#~%0IE_U+Zb`Pp6U+NFK?b?|3T2_c>h#T9{N@3BUp#$~?z3VYv4F5?vPu+uwi*6E0!_@%FQ@sXsr2mG9VP|c zBZlX@^lpRUd1v%vD`4b10BV3!f##6_3Z03rJEnX9B0h4B7QmeCYPBIQ&M|(Blcf8x zTrDZ;z%rA205z8kuY>it#{|AuS!v&tGsc;abfN#EAUJ>@_o2WGHUb}xpaBE{jL!kk zdjQV^RyKP3ijglywoU=PdwVDFboM<2Gg;ilwW!F+>=RV3kp`Df~=*XHXWP>H8vnC|mn%flkuBZE=bA&<~;O zsU?7Xye289^_4uNpbSjdj}azI_lzlAC8qokpzkiY4=y=AVrc$s-;WO_{qByZSFg{~ z*FPMm?R_lR0PP)wy_neKdUVn!j}`&>8auFxQac>6*64M@C6((T^RBw_%#-W2z<|jX;6J95eRIpL;qUa z;8*6;Cr<&XzlgM1q6O$i;6$i>Kq`7Qdg}aqKLD(P7!%dum}s{TK>SCk2`*7+`qt*o z4RGq66rE3>@e(<&Cj&?uHyMARKrX)N0oi`hKU#YPIQ?~cy2NTxQ^jggio;g3>(*1H ze(YblDoOquhwXntfGR7RSDd#OXi2r-=s$WT{$+{`)bjaE+Yq z0jr>oi&;`#bF2t(>IeVJX(r5i88Yw*t%)4UJm(?gb@U&);+dYVGJ^_6At(`wbPrXX-f4`B= zwzkst(=#UTpetsVu;nqa2ECw8i1?W3AnlYhO#HD=P8pWh$8et+_FBR!_a#S($U{#a zF_LqtApsBx#!7RH`!4`)rY^9mVWl;+)5R$q(NQP(Q))%k@+Y`+7QVyu9W01q&vUGl zM}X7`K%roF7KVJt`K5>SeijYr$+AaJ&4-Np&h&B&x zXOTg8fR;nup(lB7yu)JnhGAz73>{qr@X4LyU1A8sJ;F)}#-`EzQ}~!3(;1Gi&CWBz z#O(OBJJXCb&7@gEdd)E5%K-jL5w;W+v}fFN-gcLUrsDN*_jV`ktuvgikL$?<9}W0( z;^Hugzrp$GLVEag7Rx9Alj2+st^BY zQb`m@+OLMNa{2FZ`gsDEgA3Z`?EWJ{f}JAAK7Oa0+vDj+!2O#ICV?F@lBQoQqmM7& zU#2^6j?%pq=0)HW3nx)O!Hrs)`J)503aHBxZ?>-39lb*MnpU?aDnYLMvyd~yOgJrNN$;)FigJtF$ z)b*bxVVReYbGd@HILuT7_n9`c=@RCIOwi4^*#T^VlWa1}n{nt;%c32iex!`u8U`Jd z{L4lZH_Jd0crMSZr7s`+b8hsL^v4&!WmtZT*`3u=ZNf#_IIPmaXGU;3=djfBo%Gqg zFVg4tevuxoJjG358O4GFI_lSsHc(+$R2MJC;{q)nYpgJsOn5zROOc`=YWx2MtmToiQz_Rb&VSRY_ z2LGzVa0j^0+SeVF^XBFT0h`}4vvr%W8*lLu`!qd%@|a;9e6>_EH1PXxzm17gAw1`K z6)D{r1QC86OBes>57Pvso>#|SoJyg_P_EYjdV#TYF%(6+;+S(owk$6!r>D1{rC;9v z+w`-QFVo_rp+M}BtF63lu&=iA8rMl?b#+FamUoEIzJ+#bVTKfymS`ykub$i}Za-A% zEhVm!pv@pP7qI{GWX=`QqS~Pid%QrJ_aGqr|WR4`Hw^Yfi z+ZNm0-Yva_J*!0PrVqLws`OfroAB>)zB(9G#}&oZkyYhw)FuVJk3?BGGZ|r@i&cG_ z&qgTNLLw*`RgQ%*{7=&|7Efk`|G1mJfB!a(FJU>H-APNgCYh`=k6~aQ&;fAbBlzM{ zOWhiJ2{1IXlg3|f0p+0DDJ-#X6yFX8_?tEO%%4n9eR@#RFLDez3?YS#tohX@=TysSOaP z&*^Op4AV2KL32nngG)d-m4#kdUiAG!9|QQ*S;t2JGkjBxfx61%rX|8=O;2HbU|ik! z-QdQMmC^VBg<3MJxe*#tu&w}Nmswrv?ivisVY%M)} zv=Ca?ds0iNJ*Q#f5Lb)~J_d|%qhZ8}QckLxup@jQ7;cLj!ub`|R=o>+cR4cXD4`*! zF0rKAUt@+}KrXO6A;cJ|V|M*Iv2OQqpD>>7Ieqzlm-YgzxAw;Ix5cH57o(90V)et# z?X*m&Ek7i5nbTd&VE*1ePI_~JgD|Y}j(!X1-P@f?zghf6`|y4ixt2V3178%md6m|S zqCK?bb7gLMZrNsKZTXF~e42~q^IDYH<-9)r=C&0m3wzv)&W3{;~TZQaEld=9;GL1pQcC4&(c!oRt!n&$JF()LpFh`mV)U?0`M=d zrj_Y6!YAEEX)UDh-hY=icHYP87-xpz$p5e^_|T~UmJFo-5XmWf=cAzxfRofjMFn{*eCjf8HU! z;CA}MKmMLCaOA?0a0j=9-~8=wP%sR`qujpw>JKPbtPu2R1thgXsIXK#K=lA80!}-< zviv%V7BK)-s#;7nbFc-VMX~6>ZZPOr2U@=-6q}ak`zw#qGy3q;wJ*|xg-_D_gfsSi z172-ympF3G$k$q7x)=1StVaWq8$_IDUcEU3&w{UIvVe8@Qmlc6hh$s}`pPQm@QfgE zbh?K%6XOCCeP-~>oL(HqatVebj?~x$!^fZW`Ilb5g>V;tFI!r3u?sR#I_UNFo*zl#59$H}tzWD<&N;#fln{;KeuLMA7^ z#%LL`p@wl0!16qH!f-o25%kXz9|K2}*+aI|0M(NT&$IO6TiSrz*}aEYX{lojYw9$U zq-N>Y%ab$SfyAN(0Cuo$tJ^US^Ik)z^ZsxY%=Z$zN++|* znelo7TwbPaTp>0#0l|C##5)h)THkwP)U$QW61PNP*u{-vfrtc?Sd3kQc7ALwj3g>{ z{d6^c_})EYroTh~5igf_`93jlU%uWTUh19nVEz*%Xl&IbtP(xuey&DH8*~Fs^X*@< z$!TSgt_~{``yQTJfF7FSM8-|#WyM)f7Df6C^kfz%O~ysm#~ik?HLa^eMr2MqdzzYy z!K>-b;47)SwHB&!|11DC>MjN7N>U#T5vbZ?&dUG*AOJ~3K~zcFbFt-Fm+g!Z2zlmd zn!UXU@ccAwowC045%E9?adGMwE>7JG<9vP38ugSLyDZ+v(T8{xU47`-JLv{^EHkSYKuOhuXBtvMWfn zsqvSix~ZPlTh|SOS5p8|{J@OY*FoV4OlPp>E)kFJ0pRrKcYc)~Eq;pS1AtG6miC7^ zb8gue*RGpeq?Nd!o8NZ8b*R4ko0&H3>S7M%mow>`LWCy6>KwLRD{4ChJgR!jKJhrx zd&R0aT!|Uy0U$Xl%bU^V5mfzu2K7XfGWa4#mec%E%XWFSwWFIkZ5o*(Yl0QHnQ7Ld=l z7xDu5s848k4(RQ4&H$U_oH7v>KU?+k82m2jgY%QgwEmh4iz`|O*ECc#G90FfCCn?j zJ77^h$6oL&<6rl@)z<-*d`Z+AjC-nI? zt6RAYwiA5Sg|oaDPT@H@(;-Y5qkfYB*ONVdE}2c3F#2YWFi{iZ3$&$*q3Zi9LRUpl zR$UZ0r++RlI>gvLN$=mCreDr~$tr{de$89+xykAD+(=t_-*ephmYRJTI@;{nS1ekZTqFMGGQOh^)5#Jmk|frO=F4${0Kv0k3w*iFSD`|> zJx%Ez?OjP$iscL4S?SC0{$#0okX^Fvn6;?)3BaF&P5b4mBs!$~08XLQ&hd}h=PUXZ zv;2R+68f6`5nr_{SWoreymf1p2m@tE=I^G5OV608|2ULK6}&$f-~3O@ zHEmTI*KwwOaS2=K2J*`{O({c79093Ycy*JgFF@*`N^8Ol00R(`=04KA9%a2<#@&K( zAW+R^Gf6(rymNZq4+Tw`sNQFJ@;>v-bu`GU)7)>KUDpotn_F4lypl&v-vv_5vTf&W zb+plaWSR?k9P01Lh)hg!6aercx`a<=&-NkmG|S|BqnTb;l&@D$y*E9Pcdp07;<#kh zb1k5;?y#y}%%#iYJNzz~ShSH2$JWz}+2?>$oudG)7mV{>vXUN(Y#AW9NZ|SL6#(uz zAME2;K=E|-L!)|*P@H_&YcUM{$4sh|ar8D*vIK?W%$j$2`4X^o&TzhdmcXGj378o> zWhy&X&V-A>#ngT}o?sUK3{gv_@X7DIV+fh`>2V#HbJPhJE@!-J+2or)-UHzWO5-o# zdvQ*5f|(1VpvPfCX2;XxQG zoCDI@A$@SM8o+c0Kh;S9;N^u2xd1}}x~C`8G4w3}bb^;@XMnnKXZRBn^o)B=A5Hyk zPXK`9fW;2)INoNI#bi==rIIR4X-y$j^HV!^R~2P=V7N zatgps-&d|&y#6)Vcut!vXslSQJA5br9tk0K%+S8B6;oJ>f#SF?%%>Hu&n{NzeJsb@ ztTNUaKS>K~#4#oG*Tr%TyoswjkA=DF1ASkWhh8`II#M%jv(qwXfImwZYxse zw{xgc+sY21zhYYzjC20PSs$+}>YmD)$<6xA_q(W054QOv(-w901JovQE;MXEN|~b4 zR#s}vVSF0pgOooGOgSHPk{h1a2M-w9L?bB=XZOY1#@G6Kv~j;ws>P+rTj^8QtUkZz zgN3qV%tMFt6BLUNx?kI;SX2*izS`VaXW|pbIJN)y;zfGLu)eeDD+haH#mzG_pQr)& z27QZFb)EdZon3&h;amurMY%aZsf#KL&d!G?Y6@OF)lF!CiH7YFttgskfFq<2YGlj*}mr-+b`B1mXOTZ@E z)Wv+7yI|Q>!4cdh0J@eph<~+*-r47r%WaB+M0IjI#|nEo$x_dqjdVWAta1R8oQ?sp zQvg3K78ovA(sPpG@u>rV=OF<5HOBzYC3HDf)>$l;V+8$NWU|yE7D-M52v752VysZF zkU{UKoZKU5MLw;Y)68>-Foq0S8;jJB{z*XJ7?#zTj0A05TjxWJ&Bo}SD>7a3&Nw{~ zm>!TW4|oCWnJz(n43{$rc6(b3FXD@kxo{U)Gu6Wa-FL4~@y)$t=06}j*K4R>bRC^+XFB+Zmo5U`GG*B04F<5(B2a!OWnRbmYxz$ zYaJic^H&#Xkq9-f-ZR1M-4>&O?}&#@+aImbZmv1+r!hVXrU3l&%he>h3nK#<@c`?o z5gB}MYAuHLi1R1({pZ44bL#XZhxaGSCHL;1NmD`YKqheAL zw;bp4O};_emY56Fyc(x{@=4aDsf)JmZbIA2z{L9P0Iz64TQhRmQR|ZqJ_A`5eEI=u zu56Tj!DuM?KuPLS@)^c!NO_A@*}h)+r}8W5d-(R8P-j)TByYBZ@4oQ2{9@@>C}05M z1z*8u{|!+3iZ65hQF-|I65e9wtB&TA_~snoL$%2SCxK^H4g${mcWF1VNK93SPTstJji2hfSoY7^`ZHPp0G@sopD^h_%k6jHd>s~tS6Eahv3kCK^@<@S zW9Au~)Q4Z3sxO!OD$0Q8`Z|pxm&!wRIfqr*2nLVWo}^Fje4g$tKTIo3Je$En6cfHs zuv1zeRIZ^7s$R)JCihVj(AbZS9?qo2zM}ANSJ4c+07c2_5aMnnl|(lxE|UR*hRXv& z4dh3Lxy^p)6R}Q^u7`d=y?y1Qb8KeS&@538uf9T~CuF%Sk$Ia|ruT5G<>{t1+cB`i zx+SWEnvd7rZM2un0OqAk<#EOOqyB0=eY5>0{XhTl|L*efS@?ea2Y^X+O}iO`4oaDt z{bd>R-N@@}p&er<<&FxnA@^OT4~G4JdiuFVmZF;8!Y#BCc+Z4*E>-HUpqn}eWOzPo zE9j*a^t$P{m^ZfqUl5?mC+O*iX(AUaF&XR=M$``RlRY|nmtMZz#LWOYA~2i-IOmzkzsLl$RRAgT zg0Vmw$$<7bqn~o34!&%%kjnsmFao8a0Jsp*Gi*!pJpg?ZY6CUY(-YgNSV>7G!X>xHB|4`2Hi`7Cp&XD&6dR{;(2o{Fg z&rUiD|4!~9hNf0hfd)gwuNV zfI<4Z7;xyr3F6+;biX*@=id6M)(;TohK%Ezx=*~*H&{**#^;diLA0w#_JV=_oa7BRr&c;x`DK0wAMkH>zbSM<(-dnoj2SM5}}{X@QS*8 zGFh~HVB`DQ*C|n=hetc<=m0e{Yv*&7I*P1KUTt^Lb$n_bl6mN_TcpYVO1kzV>u=oI znP;~E39|sX$IM_)Pk3nYtD2nrFMw2r{|F=Ha(u3yqHF%(n;kB0Xw{zxm!i_GFT zER!o|uwoTM`iBP$H)SQK)dq{`I#$%jj~_?aDTna2qUu&42-ep~AS{Rt@QW4@ibmjO zIY%=pg+p>EDjoF~3F3e6*4^}&5K+%oK1&bhpE7yuK12De*<62dOW(TL5kJKiecaE; zulYvTUlEN^w`FB5seK#UpmIG#nYghp?uE>z%Qusfa1)T4i*@%h%*?xqje`NQ)+)b2 zT%Fzo)cLv`w6*57$upS6Al7k_iY|r@iweGXhKW02vdRf#n!YgoJ;1X6A)EXMZM}65 zq9TSSvyLC%deQ}`QtlFF=-oB|brFDi)3)bpo@Kj9`JzGg%dmT(Y*A6HOsJ<52|A0VI^0P?mmWg0mvG1h3p6Sq4ai4nTYP%5Yq` zDvaGrPbcPLw9Z(q8Y`%^vf^4F^(!OhW7?&a6~Kv{*hT=ow3%}Ourut95F>zPK3J@t zHG#`R%u~RUdmsPMV?gQ|lfqUOSmtz#_A;UN^JlB+$wO8(oWo}pkiEoYxmm)A#k&w* z0$#&k9qqDY?V-FoX_o~KUcWg=4?16_`*Tl`mrYrRUDP74jnuTBjrN&jzYX0oK}p=? z)ykkQP?qnZE0{==Pm6Z+kaLn*^`w)Si{|uJIx9;{MYeUb$DOJ zsKv%OcJJQ4NiSc%h*hDCJGwwzRb#1E!}t!z@CC}|!~*?@Ca7yXW@%CrGOC6u<*075 zUcRiEP5Jcx)AYstU!^bBhyjZ-aJkqCe5C}rLlr{Q#vdEf(;+#df8R%1K8%@%L~PwG z)9bXzh|KQM$Om0EeL{@DBFh$abJDyQ;MpUh=iG4dq8WjGA4z6b*4rfNHmI4w`LMhe z@{dYV)?spv$o!1qz*wNdiAMlY0qFrVn_p}`Pd{!vPtVyu-~2JX+Ip3qu02ct=fD5I zYR&^HkL0=|bAOhyG>f&-l=Q`MhjHDm zzj9F*CTJnk1QV?GnTUJNWVJ*j8{avde*`o$scD*7^Mqn zjl0Oolm$6_49&glKtA~9Ltx|4dd5VhiMg$noE=6 zph9(eS$CIo0FS`{b&%Ap+`HAZ9}MCpb@Rq7`421CtSOhHjKvz)q)FX=-f}U68PugH zI>N8b-A#Y{L;%SQRlT2{76JnmiW8c0KM7LvWT!D5qELKQ)BUT`qm1Ab zAJV18rS!>z&(fEV|0aEY>lf*Ehfpu$vr%VsK*-tN6{DuAXj``tczcZ`i|ZAC;N<>> zTjpc2%qGNY@){s&RA*jEuV6CH8>eP#VCXiPY(c8qNPwX%8>RTutT(6UeOnpx%5s$m zQ9?NeUX#r8ru#uM4B=zc3xlm62M`5}vfnz~iU~(AwqC?uK>Bj)Wh<9Iy#6Y!@4ZiJ zOy0Y8E7~8lS>Cdb%*g52GSq@PogS?|?xEa0+D&hF2^m+`C(rA)CQW$`uktjrIv}ji z``veG`*1rwz4ep{jmtSJ_Fm&r?z!?7?qTo~os`es$SkA(%1#_sl6FQ1mA#~%qurwqonvQ&);q_q^LPQ!McA!(pE4ZJlBo-r zx)J(!0u$sUGyU~L4PgyHUCZmW3m;ir#WZMmKM5qYX1b33_Qp|q_2XvR+0@;OnBVtS z8KGlt14fK-3>VuNI<|-mv$IPWE+QLz^UYpbU`GGqDqxX(XBv!SNfr2JXlj!pf`P;T z(FYh(_~$F6nzU5i*5RYdJ1gX(lXMT$F5>%XeC&+55iBHd+ej}&xgfFtUTB1wI%L8d zK$)f*ch>h$SYgqPvE;3*QsIZX&#F{=0Mu8+%H3L@Nq@WWuhJbB#Tm5qT;6=aa-wZ; ztM@s%O6>hB$*}yO?h-(4U73HERbN6kr|+PCCzR>UXSI!6SA?=)<9HOBMvy^#jxvqETheGIr_v61q9nLB8ocQz+@LD5tF<6e~tK)Nj#vh13A` z<;z#;@BYXC;EQu1g7&X7N$S)!_Sgc@BC9^8Uw{24hVgf}kC-*Nz7B|Wct=I#5Dh%3 z*JbJa3XbQXZe#QTR#p9v3>CG!$f{3wSrp*$-=?3h{wl5F<1^)#svTVk7j=K^pKQ^{ zNz)+(cFpAhjr(L19w~6(rSR=I_4T za(bCo9!I5RLVcXe)$PtopoQ||liFmUey_h#ECPrYfK*>iEu+~g>V9K?<3@6P^X}`> z0BYu%`yrpZ&wbsNSJE|(UA67WtzLlYO#WSh*Y|9he^25yC;7TT<}D@&eMf)UX98gN z>wD`2K6g3e)AVnC{%_L1{nfu^hIwy@D*?u}_uMd13OR<6eRN*g_dclQHbjPAHIfM% z^w*B^|DRo{nCxr_FoM)6$dY zY2ntpw0Oy41kP&b8pYx$;#4CMXeC8)Yfsf;dI3l^8mddCx|qNYewp9?@m2cc@18RX zhcST=R4`lz41 zKsBuLF~aA&1c2%)Up7W?44Cy_q$8b15&dgV^(g>wPO9_>&86hVIlYXsL~g*kIt5*a zchWS!N!sY@UB^rm9@Bb!F@=j7D~mDV>Jb0aO#t|7A`sl2`0I3k_NleEZgnrW=0)Nl zf}EcBHHXF}@8v741T??9<+Q4Yy2-rZk*O98BC*j98@kX=V#@+xVwyk%NVTPc^a;0VWAt`>f6 zrDqAj^x3VyN}J4X)ME5CFY7bDY^&MyDmErf@se4`f_ikw3LQMOl`rWId;IORo&r8q zf;)thax%si{;8JR=S%qjHvj>^1rL2FN*^MWSpV6st=xnBnP9g5(mdew&eQaZ z2VbTyR)5LTt#?s{`BLYG<&LXa4BO=*B~2quppro<2gukUD9hHzZ6v0(KR4IQ+gGhc zt{0o1kw_Y)9W_nJ0>Aq8Gl*kv`gQd~twlzE(No6j z+-D2v%dm)6!}Ap&ea>=-1X};d?d!K+r+@M3zZ{KAvwu7<`?x$FfujKR>FrO_C;WaS z%#_dQ@+=c2?|g>8EX#265%?jSR?z^W8IZEyWFnTpHvll8R9{zJAM$4W)qnl7f87UA z&G#CQeD7t3Kk>frxoh&jVc)muh3Y{r8L4mj)r@Iw*Yc3AdCx@2{<0;{c-CQ_)1ruz zvUcwf<8wKkynd249{fHnK6sTLe0Ih%vG`@;%bL-Tz*NIROj@FTB8>7}O#wa`WqY@s ze*gF1rPo+b1(g^t0f#7jz@DL_c6oms0`^WYSS-vhF_CtOXYn#7%|8FesZ}t<3j6pO z@wV>*Nf%l0fW-&mz2U3lNxwgIlO$CZ+`E-`QCS@bI$GWTRT?l6|rOQv(L?k)g77dM#PFW z#jy8YCx#WM>&<&TH`_VwKD_*Kc*lWr+Drgy9P*u6;1C%)NT?8ccwMCUq}McYWndYY z@@H8HmOz0eVo~aGB*LF)&=ev|3gyuv4($Qzlz|u7f{UrMCrb3I=Mf7fbp%lzB4C13 z$DA~Vp;|2kx-zaKZUb+_0}n$Hk{Yz(Z*f|XvoHI$yEcmF9r~a7KE(V$%;NToC$PWs z{`OsWfAb#RC)iuZJD$OaHRa2uiq>#rwr-f067YPy2E4%pc(f1u^P}xa) zoH@lm8mEE_PW+V%^HgR~NhQB{p(B@7xbb~%W)7z+PrGLhW6$aG^KN;3%^0UbQT&m9 zN-A!Oqa<-#psJC|xHf=KQ!(WQs=dzu03ZNKL_t)ryxQ!_vsn?+k)GJZY@>HYS1Tf~ zOiUvBCWeAl*J3MNV_Wt()8NmKVB4VkY1OFZUFNb+)Xa)*Vg^wSP{uk#O58t>aN*WF zE!av$3q0xYW|Hc-s>eSxf5`ohpZaMy?BB+0>Ph$Hp(l!cdi5kh4{r6ji33%3R+Q-n zm@VbZD2>o!MizdM(Z)@I1~M-Ts0;sJFj8aPY)9BJXyJxJo;StI;b@tmDV}b;Ct#kV zxPQNrM~=7U8K=X$M8uamC_KWZ)d|;8-Mux}*`9{)>UB8Uzv8-Q@3{H3dpJqks=ayp#a;C)^I+cQ>!!gOR)CjvmKpdE65_i;G$KF5TRM5s0fySMCjAq63#A z;5yn#@Gdl@N*`U75L7}gbZ9F4#O+PorjOy{hJe5+W(NaI+TWp8Znb$=V~xX1xcL3)4WG! z?}s8yD3EboAg(P}+6cdB#{!fh_`HG*FM>=q;@F(=RLVek=ZGo-6p#>UTXTTdhJ2Z- z5s?unw#@wMURf$XBvTQv*rJ`-!H=#x^%%B3^BXz?`Qa4^JM) za{mY1`h#2U?tRRb!WiWScK${#j7w}Z#{#E-fSYgrwoHopfYreQ2~||RG9_>7i~lOKS<0it{BM_{?3N8c zy{SLL9k`L9QS{!O_vFyhmAhBO7`^`Bx|BceKSvghxV70e_suKifh5Yfu>LmwHdVk^ zunFaTC_9GLi0^solYv7d#*I2NvHEzi@-?4UPNm7*FekEDbw>xxiT zG_OanczIO<^P$}tw|9Ng-P(dHz=sp=@N+|M`PhA&_{X)Rpry`ub<4=^!pHT4+uQES z#j7~!zUyB6&=Yu%!=Qxl5g3Sa2@F=z#^Kj=2Zkc|a&lV$&nDcxeIGtXLBBrb?%mpP zH?LtP{_aC}<8sd}uMN3{6<&P`zpwNxfd9H^Cr)s%&YTtPVP$U!-UV1s&Z=(1tIRfL zJcr>_b(}^e=y<6MZ$f;ux$U;_k2AepIPKpBjEv}VYhsiKtnl4}u{sJvSgufofxAzi zuXO2!RmMGhr*7Ze!qWaz?l=zW0=2H`rCp@C&G-(D`#uxe<>4_>Jw%{ku80a^dFb~T znQzWA#APMi;3$d*MXXDLhLrO1j5rGxD&)y(+b*HaNwKsk-yD7&jH008KrFOv$P?+u zW1xbOta(wEHdt&Wrcljn< zPr*m2oa&c-Acf(=JwW``DsDbtoO0$=UKxUeG|Fjk^2*XM=2a;u&)L`FMiB5LFT6cy zq|)cz7&gZrUODQXJN_cBjC;{7jUGbh;^ojXs2D+yGM)ipN!!=4R#cYTv0jItg+mr; z8~aT4q+TYFM&*hwE%i1miln8hQHDMG|Cf+8pcCcaxbcSj?3e#f_mzuZNlG41_U!6e zcMda==T^_Tb675CdVX>q2QIeUU-{oZ9SOONll_ly@Ax!5m@|Z?4v7+;jDeyc{@XZ~ zV$|9kjZL0*7M-95XFtDs@vH7XzxumjMpO;bS|$f5U|XDCJA;`x?0sa=0bbo{;n2~L zJ9Kmvci3a+>GXu`0p<6h*PDWz1u*}Jr zyZ#Wfr?~1Br~T7{EQ!@M;MmIMuI{_F7K0FYz10pw3$C1J$9^38kj zH+#r^Z1v-AlC!&L;I!qUW{x`%j1CY|0boJ40UQa;@F$|hVLA|NkpV==mY>BjaKq1v zF&H&TgRMzzuk@8RtOqpnG5y~{VMi^dNbQ(?5??%}a{cWU9BJH7HYeAnHOy{3D3k?^UYQCjpK zJ|QqbWxk3q%&5{x6+;yWG7G|)(x4wxTnfTQb^M~`-Nqzi5cNP$C;Y2RtM1(4C*8S) zXWioP8alRp*Rsk%o~^$~Y5&KPMm&{85TbzoahooP-V0s^+laIbq6^wI!jqB~f5^{N zEEoX&NV5&lkLZ1tC%UHG{HP1yTwV5X|2OZTe_Vma++X{ypK>2N_i_AqdjjJ(KQ5=n zG5e2G^V~XM!-bm{aL`X2J9)6_jB?aklE;_E0OEer*Dk&0F0NmcgG@9?zx&DWai8SO zsvm2gfBkdrYZt$EV7Z*BH?8|-qLx*ZHna{U0eR7E<++djmqo?vSxM^t59Ks*gel)Qo(^D9w3fzp))6%GU_S}62@ z{MRC2H6$XvqKqf1h-_fiqDa|!Q5A_SuK=rjZU2SR7IXo(A;Fi);i=>9`6Dm8OE=%c zgSrQ|8e4F+0Rt5JiIFPw{DsM%moPRdn=b_@&*gFM8)Q}Zcyg@D?Hfqbk7{9@a<3_k zRBjo-%L>l=mls#WofP-Mu8kkVyeUuXw+NW66-gARf$669s40&~!V_&7tAGLG8d;4T zj3R75RYmGFC_lqXj5$Ae2<}_6z6g!A=wDdJKdob;tQw^f5*8Dh$-n7j+e{ z)2@X3?kfR4#U*;4p1*|yOq?xx@#IV5W{Sl$3V-vo%MGj12ybJo$6nI_O145 zrLsA4KSpvzLLb_`!Yu~K%M2ikFH8YYSgjDyu}tw|&aJ-N(eoZLYG5pKa!MJU6J2aJ zHd0l2w#6hws9z2X5#7rfkt$Ik)I$W^n?ax5VPW(eM~9 zU;&FE*~$gOPp}9;^PrMkN#iW$@R%UUOyvj+($T41H?ssLUEDl{=WZBRk#g2`e}B(m z;ud)Dw~B8Ox1@2~_%4?7cQH#Dw(=P~~ zMN*nJLX=Kvkk@2|uj0nBOuiAMbXrXDDJ&0CiUFqCl%!He1!N>E4P#dBAfXRiVR=B- zt!Ud03NnKpGdM8y?AnX&D%_3i!4Y}4d(}OH`w;$O<$ETKFYqNu3+>M3ODhK7gg%YI^z8I#b70_y)q<@U#HkMTZva-?aU zG^X%191NP7n3XaejaI2+i^q$ld0C==LJZT@SzJ@-!@vLPzjN>5&idP%xCX}u9;SK; zzIf^UUfWZOv|o^6lXCh0bKm)#l1a=N)QCn)N!zv`l?L%c>;ql*#weZcbKfXW*6V?# zJ$$);?g##^d+ykC_-2oa3n(tx)9sUnhd3-ogOytp7!Kj;)7eQ}-knaQ?{O@7n0-qRc`|80!gcXT{P?*5Lc<#bboteOXRD5r`Fc62agwMUDuwvl? z3f>}^hL|3V-f_(4@55m2U|Ya8W_f$)gPHwVY&jTr<1kR^L11fl6WhvqZUSc>dfY+) zoG$7(Iw{kvINdwu9&S#$*S>Mdefyj1?&QSF?hLL8mx|#p18dbUw805HI99?y4p7eg z6k^#I%Fw0_YE!ac4+i96>6w-g5RT zO3A?&)RmLIu1uMj^5!WGC19+I1(-@Q+(KEB&_+$beX}*JgDN4>#HorD)JckD5aw6~ z0#it21pc*b`0I3Te8GL-_y@6n?mk`$9e4fCP4@`DR=HnPUO1%1i$xwN5M$vaJV-3! zOsg2CST5mg=_qDNN3gV0z6kea=5&5;&K+Gl>dqW`%AJ@#2mg0;=1sndQpkpo)*%_I%NZqSjc~dK$0onl!4Nw@Lb;Tmg49`Th*?gXzDtM_(-LsuI!mqy$C;-Q65#* zbJ#H~N7GLMm8YC)DxWhz>0g(p*E!So0C&%8`0)?@75C{6{kU6$fn|djLIyxu8f(@- z<*X=OQo-*{G;XvZ`6w`O1~m=zg<9!7Z4-@a+T-pfu8D*(N<)+}jnTXC#j1Nm*ch8Eb6E?!SG*nkv0KP6G$=cYtGSgNL9 z8krfIoPI^U@*IdSdr@hWFhmVofXcs_LV`rTQKBShOv%1ZRanV2_M#>qp2h?uZc^I8 z!J>IAi?3pKbNfDKAmL^TH&As!KO_byM9KF76#o06Zbs7u!S3*c#et0%JTxg*~p5xJ3#dC#Z_OwODoOVC%uoE^fE#O}p3Mx#hn2 z%De7x_oMFnkNhP!tuCdgwzdnBO<@4kJR8a(6NXeK;M!dULZ82i{Jxb+}?F-L0THOHt_n=U7Q$}km`lJ_TAaloPl}) zk~!`fiocRHe^^dO_hN`5R%iEgfKOv|1OJM6qt*V}%P>ZHdYb$0t+)}{6*;8Ht%YCXebo&KuQ{u5t z*+v>{nZhKlQz$}e$aoQbpT`^vk&QoUOlMzWX9_13PcEEw>xXV&dGHo) z*4UAkM2AZ-pyM7QOtvC$0P)2D9qMzFJ&61)6>)9r1{X&5qDz# zj9VGSEX_V{9kGLo?Kp6S>S_m;ksOv%4K%W zigI?em=%RvCu5NE7N&y)&Q@+?pD6?PgjTOS-4K~9XO*}uqH2_LNghTn{)?VV;MY{2 z>_X64Y`eAK67+iM)CWrgRiC}|!3F6obpfaoWwrn4t@ZRxXoEkT5RA@)CQLA zXWRmI%g{kTJ_#~%==DXK1%`7ujwqAw5XO|NvI|}4I*K!+Eat0*t9sJ^+(JMACrM;4 zDz*UNAk#2!h5{EFyxbOmy=88CaRyg-6TUAV2YP_h6TlRHwM~pq!fVU~E(yS1(=Pap z;Lz0&4ruL6x(n}YxHrH3$Sv(W=bl{tF1R{8M$SP)$qevEYZyqhssZ2=88|^Hy`t&w zpp;FN*N4S3VI*xDA*C5eP{C=D%?mRR2ufK5umQZqqg@bLeo||K3&sQS5pEH)f`7}u zZS@riE!wHsK-Grpqg*YTc5okhDb_ZrF!O*4Jj1k2>ty(}A1aTI1dGe4uv-~9P z9)8c=-MCY@2ca7&Y%=HA+2^JpzCgf9cAEl*t*8jxV}$1(FN$!m3QF=6|Mc_}_MI-c zBP&O6@Z>4%?|A|j;uU)agF*%SkkzIQ08N+zCPCI1WS}=<#D&GLHzP!gDJTQhVu?}S zj1n_pA4bDXD^tTHJhUuV+(?1?j2dTr>GMAZg{4%4-(lb5bi6Ec1K}j@R_DT;$gR;Y zOYYvIyD&&;ls=G|0^&Z7 za9ND;!a(H=YURpP7{NE;@0bQK_w3DM#&{7ko^%1V4X6GLtUC=|?k5emPNAJlQ#Gne zqjwg3BLfwCdwH3Mvp*gNd3l8yw+7L^e;Y8WMLH%;Nz}InUf%%9#I%qmwMZTq%PdI; zJU>h|uY3~pIIGBjwrT^*w4g1wV8xs(IiSyXPq?v-Y4;A6*Ecucm0JWyIctfPv3Wcq z!!& z+;Qi>zUhu`f6|>?`beeP0YJTrCJUfei389?E1c$8AuFnpRYgA}EMx$(CYjCBu)u~U zU6olzj%C4g_)bYCEzRWv^QbWJ(Te-h01wzo9{|mXfX<1wkZGo|rK(R2Y5BFVL`*j| zaEhDDYvbq2a3-;f2EeMl$g6ZsDthhAC%HX^@T}Lnp~RBt?UPFC)6}n82^rx!F0ly1a_R z7iZn6$*0`({ygYqDpn*1wM>(!eg+gjaoQMtVxiZzVI~NxCsZRfX|ke?BZcaDlqDjx z%(4NaR|m4HpTVk4DtXGbmY^so3_^Z4IIB^HoT12N=KuKW|K(o4eqK(f)A;+vAO8Dd zq>8SpL&>IHO6v&)I7Y&UOPG2Vij(7L6;H}(WX?{+v!K`RUlV8Xa@j;Ny;D$S_~;BQ z>#l*z{LdbFHW;WJ4-7IcMsSxA=(zoQ( zy6!ndcD(1`q*Ev>m6u@};N)R5$~1+0S<1$u`Jz&xgcj`eBdzb;K$0Y2in`hT!|rJJ zyWsI<$X$ByEjK&=z%8xLU=o7wetZ)!LD9pQSI;hNhhpiLKS&GNg*@i?&nrvg)&IlS z1Um7@aIqatE_T6y5KMHCOn^ukze9Yd!FXk!9O+5`!7g9S&RV;k(wsUfLdF zH#Fn!KOA!x-@WT@d^LQB!3#X#IH0w z-JTxQO7S(%JM7h^6OBi8)flp1m8*SFkTZ@%M}Rxm3+KJJ#6aiX3w#xR4)J*83+8k$s!fr4o= z7D>ijg%d**G0!^C4WYQIlG#+=K*g(8Vfb<;1dAKqOa%@rPkg}f{h@8k*E|7N* zBr%f;gBi>E-5yT!Su;4)~?b3ob^L@twkr-H+ zB=B2FF#nNbB_zxaKDD^p-V zCh0j>s+&kO6egJ<_0KA8KXDmOW7zkzJaO2q%&)j9xZxOw17;qUqDv35U|z1P@EW z^=}I$jN@8870u{tl3E(YB`>49VrU)uF(JMsSNuvvm2n)aF{os5X|c?E_1=}ppXL1I zf*5}huId{B2g`&Hp;gB6weS|Kb(udkPXi~zWa48mMcteVVPft3TKTg z`%tmO&wZ%jIkc562XNp~Ca|wnwo1%L^?ZO?-F0r2!0d0`g$F^w76~1{El?vAqq@L3 zLHGEAwrG{({t&l}zzh>>$(Nhi_t4H&(*BS-vE@(&j|3^n=7iAr3(sZ_0ZK28A92sj ze9HY9oc4e5%a`5M%o#U|Q}Ng^;wIq6X#_5vcvTaPOD^*>3?atu&_X5dCqJCXg^oR?5D)eFIs2 zA|256nAsBQL4)2my5Nwd*4Gk=?j&Ghz@R);UHuVM%SIb0K~O#=I7Te_mlz=xqlP{R zSE&zO+lq4*bp^g6=V#~LgNJa?Jc^GN z3{;M4Z12G;O0m>Joh?fwXS2G@f5VlolQ@Id#uuk9 z@mt2_>>r0VR|{-undS^9Z^n}+BQKL3L-l&4@g(!b~lw+I83 z2b#v=TQnG?aP5?a+?e5PitJ%s|1W*`e=O|1}a6>8mVK;F zL1mzUF9&sjAhV`^JknU@1u|WJS4fQS(>@*cV;}2Ym(KWy-NvIacmK|ad+*IXcl+%z zx4icex4e5!_*VXi0{El-1B7JgS4ae4@IzmqfU~GJ$WS0G8IS?3m9UZ{(IZxYQHhhL zRD=u>`BP#<{7jwLJ&~M}B$JAjPOZ*x-I8^iU$(I8~#b~6=f#fRZBqom}6dIPmitMsT zQtEu(f(s+lFIn4yB(1Zr7R=>w&H#3?pN;!ErO7jTl7?5J@-`|P=nwT6e2Ox>aO`;; z!Z?B7cwKLd;_h;LOO@xV!!#WyT$+Cy+XlFGfPCM${sv|y*R42r)9!Aqmq z2F|w9gMe0H6cHqwKb{l-L=*aD?fEuc?2RJ;$K7UzspEn`op1(V^Mj)Ah#1A`)w ztAoOnuf_>!Q?|)SRl1{-Pv9!s8TZW_|Bw6JA6#;`?`*plp2tNjCnxZu4dZa4>qf`$ z{9r;;mftyn3TsD96d={Fb})ddJN@e8C;>yo7TWa8YH)ZLV!ROrl)5D$*~ua)=9F z%1(YokVs*MsnWKUWk`_(L-GW3@+o+DfiYrZuGr7q zh*I#!ILd{zT3HQ(eldrXHZCo516VmFQItw0QOm5RmZ~p8hDR#M@~cU=5TlejU^E}a ziRi-UiZCh}HBMPTHy=ymhukt|QD>*FyX{A~VG2t(9gHm9b6W5$6c(q*IPE+JA9a)1 zk2HhX)1|pZcWmyoTOHw5rjz}fxS~-3NUBl*DV7B_?WGS<14==gWnPGA{Wqgap;jqf z^(lEOQ3;XyFk6zD!b~#5BJd~_$PmS#bT*0x>ASZt2Bc~1XFR%aO!8t3C|_+i=5u-k z4lNVPSJ)w={0(`kt0|J?+HB1-y*JuYe98N^rZL9brRb`Pv!5C`D@o&%Go%dqa!sE- zp5(6@s2AL)p8Axsl7mYjV-rbTFXGBjF-EaXfLjHaeqau7SyG#(F}}6?2s&bw1E-*6 z1q9m*Xk;^RdjV(2X?W|N*fqbkffod5;K8OBPJBQN)bM;69n-oi9s7)YtJ?-?=>q~|HAV$9Rn!PJ6%ZXtyR46lq*&{v zaZ=nS+i0XheNh<78 zsyhkSQ4?aAUb)c57+EmX3_QQQY1@ zt&t&0s-{{KD=bPYVg&4ysS(_VYS1^U)hv=2W%>#g1Z$iUz}Lw9=(1a$UXx|sJ43hS z!`H)$VF;BjWG0ofZjJ!-Fby4}Iq=%*ZxM z!Y-R7{sG!6;#DiNEC{MbgbkU4)Wx!EL9bP}ANf}bC`m>;h z&Z4S;%2{U`l-59{?^0Rjx6Q@6`*sS_oNS99TxV2+Ahp^glvvd2H*~jw#1a5PJfjT-4Qx(hm z;vS0oNAXRej2`yw(%lq}H;E=}dwzEcLzXe{Xqa|!Bn$gX_hIzz?M}-+(|dPE-JRRR z?&4eUSn(d*sr6oRM>;3m?C>&-(_%nZn&N%7PtsiZY(=O?V}t4-vy=_rK8t44!pZ_n znq|3Qt8UXdTnnq?XK~6wP0k3agJd-$-C2}3{`EYXa55-iYeJ?h$10#@`h^;Y@|4&V zaOd^=3uW6h@M(oq(g*am$_0X$2f>y_2CXD0aTQHSHDeJ|zNSoHKn5hqNjUCbo`ma| zX)XiO?;Mw2_!8miO3t$4Fcg;h=_hg&rzQDJadwsaPv@rR-OAKqw={-R`*NhJcn;eQ z>{1ik6oiJVX(Cj(#LPYKCC5yvp=~nQF-Y`KW#S^6OY1E<_9wF}BwbOp0x%@nBvy`p z@X(7DejRMzcn1d4UHIzMK!cBt=xc-Jos(Bf*s{RXk2=#Bi3}2z>Dd)a^|-clqg>YK z%pwi#aX9CWo-L~a_!P$4th-)rpLBYX-=a#|=*4`_Kz&=TJf(s~Bhl>@-9yQ&D9YZ0 zkI?rUWH!kRF3x_^I4@597yeMsUo8#P2k?i=?E)_xe?dg&_Mu(@4<5Fv1l!lP5LMJ} zAU_(ZJPSm#s%4W{E+IYe^GixU{iEYrUlf*?ANoN~VPG& zVN_cH%$hRFOJo*oG1`TsD2#LAvof%8!Ys*_n1NZ+Sqf)t2Wm+AK zuR+g&l{8n@1f$Uzj8w|?j7D+g9DSl5o;&K^n|R0Fb9d=tPJZ!v1P*kY+~ZRQwGbWRuT(^fenKP3rG5)!sno-iQ_s8q1Fzb&5@X<-^TM+D-t4-FXF z)0d{=i?I(Lwd*Po+vbd_lGHsVDnH(ypy;%Kc5CyN+xCZS2;?dABRG97cd-YonuO|* z7E`CXvJ|&2Px_>8k&!CJ1%eo;@P}%h#h3d~aUe)_QGS{Sk3(FZPJF3exz}*W%IHO3 zsHsj|N~f{Uc4TO4&6b@wBz$;X_4^^w3I~+!yIs`s}3}y4{p|#j`~}LP%(_2hCZ=HZCRJ{ z8+cPFJA?mJ0h=zFM5!DKbriVnjvz%wS;33A#Tk-FeM2HH54pfd6GDaJj8GCOT3}F@ zsG%piEmCngHXcu#H;0n4i*aIQ;~X%p9wY?9V27mYl-EHJYg0(5z?uLV4V%z&WkE+I z1~phn3l+HH{(b_DR1NA9Wd!?B=f;-Yq1oeZ0jIccjo)y+U7U;L34Z>QBbw|JY*xoF zRnC--;}r7Z+!9<%9de7~Yk>IQ6P`U=%ZMsO)-++IDM}Sp)g<pD>V^H z-nc|Vgzk(scQ<4oJ?u;U*Z=ij#RjTBkVKaB4nU6qHtX7oYylq;=+N#-do8~tGQxR^95{gRzO3(ycAGjhFoT*uJ}m z6}rhud@Uw$7?)p-30w|?1BIjGoKZzuoS=^5`-2}lomscNjvt#iwcC4C>tm-Q6+orBqIYm+}a#Y~42@@PG zv;@kLu`dt!w#=q$=oPGDEJ>PHTo2dgv}g&6E%NmtC{{M)YKYs74tir7&7mJHC26&|fgvxxFB_SWGz_U)|A9&s!9cwd=#7Y_S(i*X1_qR_DI;uPfw zW=?s6e|BaThohF<(!?RT&U6^RcuCOoflvCs(1}fK+qSNb3A`}AL}1CMNI?%#SaW4e zSw5)9%F8;DQ=p5I?u{F7xZip0KZ*HVqk`=yxvDO<-r*fjXZhR2{*wGp&F zl``LMhw0lhnFZzTNW1iBn&==a2LyUCJY~K-vn+l@xAqE`QItn|8hSLma=|yDJBL}+ z)Ieok4OG3kiA(Gnc)jBSw$LnN8wF=YIZL_(9n=uztS*f`!fs(~@q|4M%=1^jjoH)7 zFs4dgHS*2Ktqei#lDLlnzp8I~kefit&7k={>a>edz7r*9y z{fnQKvVZ%t|5m&lC_m+&B~)M-dw!rQeBjtK3j9h2t@TN0m5!WP7n?7+voOk~k5gP& zlcT{pGgNFDl1UK?<2BkHyo2zF?qcs)aSIidM4%s8UTZppRRMZ|!QNFKjFQqspMt>r zWjPQdv?yb6eX>nodd-A_?1W`w!uzczWAlYMFW%- zs~tdX^i7$2Wwp^XZeo>Tq3E`o8qoSS5N)42`gR6tQ$?at*o3In(pXjUG<`_>6qg;U z>_e=SDlZgd6U1(ZnI&%o(rN$v#4_AP9d)zQv$%z06E88Y9YCtYFhH5bhm3nqiL*4f z;ugl2(sZa(hLhr$B7T$^>f~Fv;;P&)zWv9MG4tV5 zA3@jJbs{6EE=iqIofVeUk-9wGdMNkab7qex%y~GAvym^JcquH6r=mn}<*9|9cX4tZ zd#14@-su&tlX&Q9{o%ShzF4?UDoIjB%UM)4P>Czc=Gc=tk?vtl$aDKp-?{aUigUcH zKH7_k67CiK*x8S}PdxDnF+@3w%kje>Iy6Qvu3vPoyz`2jyl4CHkWna^p796>{`>`Rd83>&rC-1Jb@xmE{+A-`HkqIK zS3l$a!H@m}_kGWPpUkFOnUP*rrcJjI(u5-d-ycJH2SJ8u{m|r59aN7ju%OqOL`7{I zi)`}M21L5}@EfgQoJzoc(<1i9X_0IED|H;Ond)eaMzKs5s0>?|7%R$IlBmFBq`848 zMm*pm!pqU-3g~SZ5}EYCeH;^7Rgr}F;N@txHjeNNy-AABzTUNbY=Nbb*_5}tW06|kUW`>p>pz3 z$_US~mI|nHJ_alpsW}=Cqx&EFqf{sDbZpO=N4hI&3gt`2=$Pw!9Sa6c_$u5AAyy-FQAg`$VWuR+6c&lzTmk)A+MtMv!GRGM_v8T)Cgt*2(ZG4q45K zPAc;<_MviCSKBto@(9|ObVrp2nNjt9q6fGv&i3B6+|tEiPd8PZ9p(O6?iDQz(TCzy zfQG#7FUuoM^UBi?c5x^S2If3wWY2Qz0Sr_gUgAvf$IgAsEzXn|FFX$)tu(I5e;kg} zN!L1{ZfrgVU(F(;fBo~UI0}|n8%}}RCw<-lb;T*Wk}Vh)*A@wg?zTSjh0nO(_|k7E z%E0lj{_d|j{yV*T+Wqp6{jxi=dIokDo;u$M^4oo2t{?zCX_Zes3vH|_25IZsNU(ip zR5(-shIfNP#qEKnhb^uuB1##4HmNukX41BpDoTJjBT=D`A!Z*M=2{o4L@LFWF|9Ne zyb@5?)KWkEAsaPLm5Sqw�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 T{i~y(00000NkvXXu0mjf#=!x7 literal 0 HcmV?d00001 diff --git a/ImageBoardServerApp/wwwroot/img/static/logo.png b/ImageBoardServerApp/wwwroot/img/static/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..a0bc58a4dfd8ac56acbf75435817606980784c99 GIT binary patch literal 163183 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Μ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�y4$B;7m%w9j8 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 Date: Sat, 11 Feb 2023 15:47:39 +0100 Subject: [PATCH 20/20] feat: added Reports to DB --- ImageBoardServerApp/Data/AppDBContext.cs | 14 ++++++ ImageBoardServerApp/Data/CommentData.cs | 2 + ImageBoardServerApp/Data/PostData.cs | 2 + .../Data/Repository/ReportsRepository.cs | 45 +++++++++++++++++++ ImageBoardServerApp/Data/UserData.cs | 4 ++ 5 files changed, 67 insertions(+) create mode 100644 ImageBoardServerApp/Data/Repository/ReportsRepository.cs diff --git a/ImageBoardServerApp/Data/AppDBContext.cs b/ImageBoardServerApp/Data/AppDBContext.cs index 3841952..9538872 100644 --- a/ImageBoardServerApp/Data/AppDBContext.cs +++ b/ImageBoardServerApp/Data/AppDBContext.cs @@ -8,6 +8,7 @@ internal sealed class AppDBContext : DbContext public DbSet Posts { get; set; } public DbSet Images { get; set; } public DbSet Comments { get; set; } + public DbSet Reports { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) => optionsBuilder.UseSqlite("Data Source=./Data/Nils.db"); @@ -31,5 +32,18 @@ internal sealed class AppDBContext : DbContext mb.Entity() .HasMany(user => user.Comments) .WithOne(comment => comment.User); + + mb.Entity() + .HasOne(report => report.UserReported) + .WithMany(user => user.RecivedReports); + mb.Entity() + .HasOne(report => report.UserReporter) + .WithMany(user => user.SubmittedReports); + mb.Entity() + .HasOne(report => report.ReportedPost) + .WithOne(post => post.Report); + mb.Entity() + .HasOne(report => report.ReportedComment) + .WithOne(comment => comment.Report); } } \ No newline at end of file diff --git a/ImageBoardServerApp/Data/CommentData.cs b/ImageBoardServerApp/Data/CommentData.cs index 14a5c5d..ee51257 100644 --- a/ImageBoardServerApp/Data/CommentData.cs +++ b/ImageBoardServerApp/Data/CommentData.cs @@ -39,4 +39,6 @@ public class CommentData [Required] public long CreatedAt { get; set; } + public ReportData? Report { get; set; } + } \ No newline at end of file diff --git a/ImageBoardServerApp/Data/PostData.cs b/ImageBoardServerApp/Data/PostData.cs index 35ec225..6f54e37 100644 --- a/ImageBoardServerApp/Data/PostData.cs +++ b/ImageBoardServerApp/Data/PostData.cs @@ -40,4 +40,6 @@ public class PostData public string Board { get; set; } public List Comments { get; set; } + + public ReportData? Report { get; set; } } \ No newline at end of file diff --git a/ImageBoardServerApp/Data/Repository/ReportsRepository.cs b/ImageBoardServerApp/Data/Repository/ReportsRepository.cs new file mode 100644 index 0000000..5fc1a36 --- /dev/null +++ b/ImageBoardServerApp/Data/Repository/ReportsRepository.cs @@ -0,0 +1,45 @@ +using Microsoft.EntityFrameworkCore; + +namespace ImageBoardServerApp.Data.Repository; + +public static class ReportsRepository +{ + public static async Task> getReportsAsync() + { + await using var db = new AppDBContext(); + return await db.Reports.ToListAsync(); + } + + public static async Task getReportByIdAsync(int reportId) + { + await using var db = new AppDBContext(); + return await db.Reports.FirstOrDefaultAsync(report => report.ReportID == reportId); + } + + public static async Task createReportAsync(ReportData reportData) + { + await using var db = new AppDBContext(); + await db.Reports.AddAsync(reportData); + if (await db.SaveChangesAsync() >= 1) + { + return reportData.ReportID; + } + + return -1; + } + + public static async Task updateReportAsync(ReportData reportData) + { + await using var db = new AppDBContext(); + db.Reports.Update(reportData); + return await db.SaveChangesAsync() >= 1; + } + + public static async Task deleteReportAsync(int reportId) + { + await using var db = new AppDBContext(); + ReportData reportData = await getReportByIdAsync(reportId); + db.Remove(reportData); + return await db.SaveChangesAsync() >= 1; + } +} \ No newline at end of file diff --git a/ImageBoardServerApp/Data/UserData.cs b/ImageBoardServerApp/Data/UserData.cs index 7ed22df..b397f65 100644 --- a/ImageBoardServerApp/Data/UserData.cs +++ b/ImageBoardServerApp/Data/UserData.cs @@ -33,4 +33,8 @@ public class UserData [Required] public string Role { get; set; } + + public List SubmittedReports { get; set; } + + public List RecivedReports { get; set; } } \ No newline at end of file